feat: move to npm package & small fixes
This commit is contained in:
Generated
+15
-51
@@ -8,9 +8,9 @@
|
|||||||
"name": "mcma-webui",
|
"name": "mcma-webui",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@olly/modern-sk": "0.1.4-3",
|
||||||
"@phosphor-icons/react": "^2.1.10",
|
"@phosphor-icons/react": "^2.1.10",
|
||||||
"@reduxjs/toolkit": "^2.12.0",
|
"@reduxjs/toolkit": "^2.12.0",
|
||||||
"modern-sk": "file:./modern-sk-0.1.2.tgz",
|
|
||||||
"react": "^19.2.6",
|
"react": "^19.2.6",
|
||||||
"react-dom": "^19.2.6",
|
"react-dom": "^19.2.6",
|
||||||
"react-redux": "^9.3.0",
|
"react-redux": "^9.3.0",
|
||||||
@@ -691,6 +691,20 @@
|
|||||||
"@emnapi/runtime": "^1.7.1"
|
"@emnapi/runtime": "^1.7.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@olly/modern-sk": {
|
||||||
|
"version": "0.1.4-3",
|
||||||
|
"resolved": "https://git.ollyhearn.ru/api/packages/olly/npm/%40olly%2Fmodern-sk/-/0.1.4-3/modern-sk-0.1.4-3.tgz",
|
||||||
|
"integrity": "sha512-h+d+Jd3DBr7d51V78p1Eb5rVrpN4PAskwQFnh2X4Dk7Q8oajiMVJuhZU1amx97bKHFDHgcOfhwc4cS8P4tFCmQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@phosphor-icons/react": "^2.1.10",
|
||||||
|
"radix-ui": "^1.4.3"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">=18",
|
||||||
|
"react-dom": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@phosphor-icons/react": {
|
"node_modules/@phosphor-icons/react": {
|
||||||
"version": "2.1.10",
|
"version": "2.1.10",
|
||||||
"resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.10.tgz",
|
"resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.10.tgz",
|
||||||
@@ -2464,9 +2478,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2481,9 +2492,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2498,9 +2506,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2515,9 +2520,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2818,9 +2820,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2838,9 +2837,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2858,9 +2854,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2878,9 +2871,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -3707,9 +3697,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -3731,9 +3718,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -3755,9 +3739,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -3779,9 +3760,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -3877,20 +3855,6 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/modern-sk": {
|
|
||||||
"version": "0.1.2",
|
|
||||||
"resolved": "file:modern-sk-0.1.2.tgz",
|
|
||||||
"integrity": "sha512-tKSxbtUxT0CLkGc8DK+SABlVmKsMqqQr61uvAJ8EDcrutzm+VD230hTRVzk9hp2oSo6nXeeMig7KS8v0Lz5mWw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@phosphor-icons/react": "^2.1.10",
|
|
||||||
"radix-ui": "^1.4.3"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"react": ">=18",
|
|
||||||
"react-dom": ">=18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ms": {
|
"node_modules/ms": {
|
||||||
"version": "2.1.3",
|
"version": "2.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@phosphor-icons/react": "^2.1.10",
|
"@phosphor-icons/react": "^2.1.10",
|
||||||
"@reduxjs/toolkit": "^2.12.0",
|
"@reduxjs/toolkit": "^2.12.0",
|
||||||
"modern-sk": "file:./modern-sk-0.1.2.tgz",
|
"@olly/modern-sk": "0.1.4-3",
|
||||||
"react": "^19.2.6",
|
"react": "^19.2.6",
|
||||||
"react-dom": "^19.2.6",
|
"react-dom": "^19.2.6",
|
||||||
"react-redux": "^9.3.0",
|
"react-redux": "^9.3.0",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Badge, Tooltip } from 'modern-sk';
|
import { Badge, Tooltip } from '@olly/modern-sk';
|
||||||
import { useConnectionStatus } from '../../hooks/useConnectionStatus';
|
import { useConnectionStatus } from '../../hooks/useConnectionStatus';
|
||||||
import { getApiBaseUrl } from '../../config/runtime-config';
|
import { getApiBaseUrl } from '../../config/runtime-config';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Callout, Button } from 'modern-sk';
|
import { Callout, Button } from '@olly/modern-sk';
|
||||||
|
|
||||||
interface ErrorStateProps {
|
interface ErrorStateProps {
|
||||||
message?: string;
|
message?: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Slider } from 'modern-sk';
|
import { Slider } from '@olly/modern-sk';
|
||||||
import { Icon } from '../common/Icon';
|
import { Icon } from '../common/Icon';
|
||||||
import { ArtTile } from '../common/ArtTile';
|
import { ArtTile } from '../common/ArtTile';
|
||||||
import { useAppDispatch, useAppSelector } from '../../hooks/useAppDispatch';
|
import { useAppDispatch, useAppSelector } from '../../hooks/useAppDispatch';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Slider, Badge } from 'modern-sk';
|
import { Slider, Badge } from '@olly/modern-sk';
|
||||||
import { Icon } from '../common/Icon';
|
import { Icon } from '../common/Icon';
|
||||||
import { ArtTile } from '../common/ArtTile';
|
import { ArtTile } from '../common/ArtTile';
|
||||||
import { useAppDispatch, useAppSelector } from '../../hooks/useAppDispatch';
|
import { useAppDispatch, useAppSelector } from '../../hooks/useAppDispatch';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Badge, Tooltip } from 'modern-sk';
|
import { Badge, Tooltip } from '@olly/modern-sk';
|
||||||
import type { TrackAvailability } from '../../api/types';
|
import type { TrackAvailability } from '../../api/types';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
MenuItem,
|
MenuItem,
|
||||||
MenuSeparator,
|
MenuSeparator,
|
||||||
IconButton,
|
IconButton,
|
||||||
} from 'modern-sk';
|
} from '@olly/modern-sk';
|
||||||
import { useAppDispatch } from '../../hooks/useAppDispatch';
|
import { useAppDispatch } from '../../hooks/useAppDispatch';
|
||||||
import { addToQueue, addNextInQueue } from '../../store/slices/queue';
|
import { addToQueue, addNextInQueue } from '../../store/slices/queue';
|
||||||
import { play } from '../../store/slices/player';
|
import { play } from '../../store/slices/player';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Row } from 'modern-sk';
|
import { Row } from '@olly/modern-sk';
|
||||||
import { TrackContextMenu } from './TrackContextMenu';
|
import { TrackContextMenu } from './TrackContextMenu';
|
||||||
import { AvailabilityBadge } from './AvailabilityBadge';
|
import { AvailabilityBadge } from './AvailabilityBadge';
|
||||||
import { formatDuration } from '../../lib/format';
|
import { formatDuration } from '../../lib/format';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Window } from 'modern-sk';
|
import { Window } from '@olly/modern-sk';
|
||||||
export function AdminPage() {
|
export function AdminPage() {
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: '1.5rem' }}>
|
<div style={{ padding: '1.5rem' }}>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useParams, useNavigate } from 'react-router';
|
import { useParams, useNavigate } from 'react-router';
|
||||||
import { ScrollArea, IconButton, Button } from 'modern-sk';
|
import { ScrollArea, IconButton, Button } from '@olly/modern-sk';
|
||||||
import {
|
import {
|
||||||
useGetAlbumQuery,
|
useGetAlbumQuery,
|
||||||
useGetAlbumTracksQuery,
|
useGetAlbumTracksQuery,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useNavigate } from 'react-router';
|
import { useNavigate } from 'react-router';
|
||||||
import { Card, TextField, Button, Callout, Badge } from 'modern-sk';
|
import { Card, TextField, Button, Callout, Badge } from '@olly/modern-sk';
|
||||||
import { Icon } from '../../components/common/Icon';
|
import { Icon } from '../../components/common/Icon';
|
||||||
import { useAppDispatch } from '../../hooks/useAppDispatch';
|
import { useAppDispatch } from '../../hooks/useAppDispatch';
|
||||||
import { setTokens, setUser } from '../../store/slices/auth';
|
import { setTokens, setUser } from '../../store/slices/auth';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Window } from 'modern-sk';
|
import { Window } from '@olly/modern-sk';
|
||||||
export function DownloadsManagerPage() {
|
export function DownloadsManagerPage() {
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: '1.5rem' }}>
|
<div style={{ padding: '1.5rem' }}>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import {
|
|||||||
AlertDialog,
|
AlertDialog,
|
||||||
Window,
|
Window,
|
||||||
useTheme,
|
useTheme,
|
||||||
} from 'modern-sk';
|
} from '@olly/modern-sk';
|
||||||
|
|
||||||
const sectionStyle: React.CSSProperties = {
|
const sectionStyle: React.CSSProperties = {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
SearchField,
|
SearchField,
|
||||||
ScrollArea,
|
ScrollArea,
|
||||||
Card,
|
Card,
|
||||||
} from 'modern-sk';
|
} from '@olly/modern-sk';
|
||||||
import {
|
import {
|
||||||
useGetTracksQuery,
|
useGetTracksQuery,
|
||||||
useGetAlbumsQuery,
|
useGetAlbumsQuery,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useParams, useNavigate } from 'react-router';
|
import { useParams, useNavigate } from 'react-router';
|
||||||
import { ScrollArea, IconButton, Button } from 'modern-sk';
|
import { ScrollArea, IconButton, Button } from '@olly/modern-sk';
|
||||||
import {
|
import {
|
||||||
useGetPlaylistQuery,
|
useGetPlaylistQuery,
|
||||||
useGetPlaylistTracksQuery,
|
useGetPlaylistTracksQuery,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Window } from 'modern-sk';
|
import { Window } from '@olly/modern-sk';
|
||||||
export function SearchDownloadPage() {
|
export function SearchDownloadPage() {
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: '1.5rem' }}>
|
<div style={{ padding: '1.5rem' }}>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Window } from 'modern-sk';
|
import { Window } from '@olly/modern-sk';
|
||||||
export function SettingsPage() {
|
export function SettingsPage() {
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: '1.5rem' }}>
|
<div style={{ padding: '1.5rem' }}>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Window } from 'modern-sk';
|
import { Window } from '@olly/modern-sk';
|
||||||
export function StoragePage() {
|
export function StoragePage() {
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: '1.5rem' }}>
|
<div style={{ padding: '1.5rem' }}>
|
||||||
|
|||||||
+3
-3
@@ -1,12 +1,12 @@
|
|||||||
import 'modern-sk/styles.css';
|
import '@olly/modern-sk/styles.css';
|
||||||
import 'modern-sk/fonts.css';
|
import '@olly/modern-sk/fonts.css';
|
||||||
import './styles/global.css';
|
import './styles/global.css';
|
||||||
import './styles/shell.css';
|
import './styles/shell.css';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom/client';
|
import ReactDOM from 'react-dom/client';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { BrowserRouter } from 'react-router';
|
import { BrowserRouter } from 'react-router';
|
||||||
import { ThemeProvider, TooltipProvider } from 'modern-sk';
|
import { ThemeProvider, TooltipProvider } from '@olly/modern-sk';
|
||||||
import { store } from './store';
|
import { store } from './store';
|
||||||
import { AppRoutes } from './routes';
|
import { AppRoutes } from './routes';
|
||||||
|
|
||||||
|
|||||||
+17
-1
@@ -53,12 +53,14 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
|
overflow-x: hidden;
|
||||||
background: linear-gradient(180deg, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.22));
|
background: linear-gradient(180deg, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.22));
|
||||||
border-right: 1px solid var(--hair);
|
border-right: 1px solid var(--hair);
|
||||||
}
|
}
|
||||||
.sb-scroll {
|
.sb-scroll {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-height: 0; /* allow scroll inside the column flex so .sb-foot stays pinned */
|
min-height: 0; /* allow scroll inside the column flex so .sb-foot stays pinned */
|
||||||
|
overflow-x: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 14px 12px 6px;
|
padding: 14px 12px 6px;
|
||||||
}
|
}
|
||||||
@@ -90,6 +92,8 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 11px;
|
gap: 11px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-width: 0;
|
||||||
padding: 8px 10px;
|
padding: 8px 10px;
|
||||||
border-radius: var(--r-md);
|
border-radius: var(--r-md);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -107,6 +111,14 @@
|
|||||||
.nav-item .ph {
|
.nav-item .ph {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: var(--fg-3);
|
color: var(--fg-3);
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.nav-item > span {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.nav-item:hover {
|
.nav-item:hover {
|
||||||
background: rgba(255, 255, 255, 0.04);
|
background: rgba(255, 255, 255, 0.04);
|
||||||
@@ -150,6 +162,8 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 9px;
|
gap: 9px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-width: 0;
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
border-radius: var(--r-md);
|
border-radius: var(--r-md);
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
@@ -263,9 +277,11 @@
|
|||||||
|
|
||||||
/* connection status pill (used in sidebar foot) */
|
/* connection status pill (used in sidebar foot) */
|
||||||
.conn {
|
.conn {
|
||||||
display: inline-flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 7px;
|
gap: 7px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
padding: 5px 11px 5px 9px;
|
padding: 5px 11px 5px 9px;
|
||||||
border-radius: var(--r-pill);
|
border-radius: var(--r-pill);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
|||||||
Reference in New Issue
Block a user