chore: 前端自动排序 imports,合并 icon 导入并替换掉 deprecated (#642)

This commit is contained in:
ᴀᴍᴛᴏᴀᴇʀ
2026-02-07 09:27:20 +08:00
committed by GitHub
parent c49ec81d51
commit 8c04dc6564
39 changed files with 252 additions and 239 deletions
+5 -1
View File
@@ -3,7 +3,11 @@
"singleQuote": true, "singleQuote": true,
"trailingComma": "none", "trailingComma": "none",
"printWidth": 100, "printWidth": 100,
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], "plugins": [
"prettier-plugin-organize-imports",
"prettier-plugin-svelte",
"prettier-plugin-tailwindcss"
],
"overrides": [ "overrides": [
{ {
"files": "*.svelte", "files": "*.svelte",
+3
View File
@@ -30,6 +30,7 @@
"layerchart": "^2.0.0-next.43", "layerchart": "^2.0.0-next.43",
"mode-watcher": "^1.1.0", "mode-watcher": "^1.1.0",
"prettier": "^3.7.4", "prettier": "^3.7.4",
"prettier-plugin-organize-imports": "^4.3.0",
"prettier-plugin-svelte": "^3.4.1", "prettier-plugin-svelte": "^3.4.1",
"prettier-plugin-tailwindcss": "^0.7.2", "prettier-plugin-tailwindcss": "^0.7.2",
"svelte": "^5.46.1", "svelte": "^5.46.1",
@@ -598,6 +599,8 @@
"prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="], "prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="],
"prettier-plugin-organize-imports": ["prettier-plugin-organize-imports@4.3.0", "", { "peerDependencies": { "prettier": ">=2.0", "typescript": ">=2.9", "vue-tsc": "^2.1.0 || 3" }, "optionalPeers": ["vue-tsc"] }, "sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw=="],
"prettier-plugin-svelte": ["prettier-plugin-svelte@3.4.1", "", { "peerDependencies": { "prettier": "^3.0.0", "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, "sha512-xL49LCloMoZRvSwa6IEdN2GV6cq2IqpYGstYtMT+5wmml1/dClEoI0MZR78MiVPpu6BdQFfN0/y73yO6+br5Pg=="], "prettier-plugin-svelte": ["prettier-plugin-svelte@3.4.1", "", { "peerDependencies": { "prettier": "^3.0.0", "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, "sha512-xL49LCloMoZRvSwa6IEdN2GV6cq2IqpYGstYtMT+5wmml1/dClEoI0MZR78MiVPpu6BdQFfN0/y73yO6+br5Pg=="],
"prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.7.2", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA=="], "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.7.2", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA=="],
+6 -3
View File
@@ -1,10 +1,10 @@
import prettier from 'eslint-config-prettier';
import js from '@eslint/js';
import { includeIgnoreFile } from '@eslint/compat'; import { includeIgnoreFile } from '@eslint/compat';
import js from '@eslint/js';
import prettier from 'eslint-config-prettier';
import svelte from 'eslint-plugin-svelte'; import svelte from 'eslint-plugin-svelte';
import { defineConfig } from 'eslint/config';
import globals from 'globals'; import globals from 'globals';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
import { defineConfig } from 'eslint/config';
import ts from 'typescript-eslint'; import ts from 'typescript-eslint';
import svelteConfig from './svelte.config.js'; import svelteConfig from './svelte.config.js';
@@ -39,6 +39,9 @@ export default defineConfig(
parser: ts.parser, parser: ts.parser,
svelteConfig svelteConfig
} }
},
rules: {
'@typescript-eslint/no-deprecated': 'error'
} }
} }
); );
+1
View File
@@ -23,6 +23,7 @@
"layerchart": "^2.0.0-next.43", "layerchart": "^2.0.0-next.43",
"mode-watcher": "^1.1.0", "mode-watcher": "^1.1.0",
"prettier": "^3.7.4", "prettier": "^3.7.4",
"prettier-plugin-organize-imports": "^4.3.0",
"prettier-plugin-svelte": "^3.4.1", "prettier-plugin-svelte": "^3.4.1",
"prettier-plugin-tailwindcss": "^0.7.2", "prettier-plugin-tailwindcss": "^0.7.2",
"svelte": "^5.46.1", "svelte": "^5.46.1",
+13 -11
View File
@@ -1,14 +1,16 @@
<script lang="ts"> <script lang="ts">
import DatabaseIcon from '@lucide/svelte/icons/database'; import {
import FileVideoIcon from '@lucide/svelte/icons/file-video'; DatabaseIcon,
import BotIcon from '@lucide/svelte/icons/bot'; FilePlayIcon,
import ChartPieIcon from '@lucide/svelte/icons/chart-pie'; BotIcon,
import HeartIcon from '@lucide/svelte/icons/heart'; ChartPieIcon,
import FoldersIcon from '@lucide/svelte/icons/folders'; HeartIcon,
import UserIcon from '@lucide/svelte/icons/user'; FoldersIcon,
import Settings2Icon from '@lucide/svelte/icons/settings-2'; UserIcon,
import SquareTerminalIcon from '@lucide/svelte/icons/square-terminal'; Settings2Icon,
import PaletteIcon from '@lucide/svelte/icons/palette'; SquareTerminalIcon,
PaletteIcon
} from '@lucide/svelte/icons';
import * as Sidebar from '$lib/components/ui/sidebar/index.js'; import * as Sidebar from '$lib/components/ui/sidebar/index.js';
import { mode, toggleMode } from 'mode-watcher'; import { mode, toggleMode } from 'mode-watcher';
import type { ComponentProps } from 'svelte'; import type { ComponentProps } from 'svelte';
@@ -45,7 +47,7 @@
items: [ items: [
{ {
title: '视频', title: '视频',
icon: FileVideoIcon, icon: FilePlayIcon,
href: '/videos' href: '/videos'
}, },
{ {
@@ -5,8 +5,7 @@
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import api from '$lib/api'; import api from '$lib/api';
import type { Credential, ApiError } from '$lib/types'; import type { Credential, ApiError } from '$lib/types';
import RefreshCw from '@lucide/svelte/icons/refresh-cw'; import { RefreshCw, LoaderCircle } from '@lucide/svelte/icons';
import LoaderCircle from '@lucide/svelte/icons/loader-circle';
import QRCode from 'qrcode'; import QRCode from 'qrcode';
/** /**
@@ -1,6 +1,5 @@
<script lang="ts"> <script lang="ts">
import EllipsisIcon from '@lucide/svelte/icons/ellipsis'; import { EllipsisIcon, TrashIcon } from '@lucide/svelte/icons';
import TrashIcon from '@lucide/svelte/icons/trash';
import { tick } from 'svelte'; import { tick } from 'svelte';
import * as DropdownMenu from '$lib/components/ui/dropdown-menu/index.js'; import * as DropdownMenu from '$lib/components/ui/dropdown-menu/index.js';
import * as Command from '$lib/components/ui/command/index.js'; import * as Command from '$lib/components/ui/command/index.js';
+6 -4
View File
@@ -1,9 +1,11 @@
<script lang="ts"> <script lang="ts">
import { Button } from '$lib/components/ui/button/index.js'; import { Button } from '$lib/components/ui/button/index.js';
import ChevronLeftIcon from '@lucide/svelte/icons/chevron-left'; import {
import ChevronRightIcon from '@lucide/svelte/icons/chevron-right'; ChevronLeftIcon,
import ChevronsLeftIcon from '@lucide/svelte/icons/chevrons-left'; ChevronRightIcon,
import ChevronsRightIcon from '@lucide/svelte/icons/chevrons-right'; ChevronsLeftIcon,
ChevronsRightIcon
} from '@lucide/svelte/icons';
export let currentPage: number = 0; export let currentPage: number = 0;
export let totalPages: number = 0; export let totalPages: number = 0;
+1 -3
View File
@@ -5,9 +5,7 @@
import { Checkbox } from '$lib/components/ui/checkbox/index.js'; import { Checkbox } from '$lib/components/ui/checkbox/index.js';
import * as Card from '$lib/components/ui/card/index.js'; import * as Card from '$lib/components/ui/card/index.js';
import { Badge } from '$lib/components/ui/badge/index.js'; import { Badge } from '$lib/components/ui/badge/index.js';
import PlusIcon from '@lucide/svelte/icons/plus'; import { PlusIcon, MinusIcon, XIcon } from '@lucide/svelte/icons';
import MinusIcon from '@lucide/svelte/icons/minus';
import XIcon from '@lucide/svelte/icons/x';
import type { Rule, RuleTarget, Condition } from '$lib/types'; import type { Rule, RuleTarget, Condition } from '$lib/types';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
+1 -1
View File
@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import SearchIcon from '@lucide/svelte/icons/search'; import { SearchIcon } from '@lucide/svelte/icons';
import * as Input from '$lib/components/ui/input/index.js'; import * as Input from '$lib/components/ui/input/index.js';
export let placeholder: string = '搜索视频..'; export let placeholder: string = '搜索视频..';
+10 -8
View File
@@ -1,9 +1,11 @@
<script lang="ts"> <script lang="ts">
import CheckCircleIcon from '@lucide/svelte/icons/check-circle'; import {
import XCircleIcon from '@lucide/svelte/icons/x-circle'; CircleCheckBigIcon,
import ClockIcon from '@lucide/svelte/icons/clock'; CircleXIcon,
import ChevronDownIcon from '@lucide/svelte/icons/chevron-down'; ClockIcon,
import TrashIcon from '@lucide/svelte/icons/trash'; ChevronDownIcon,
TrashIcon
} from '@lucide/svelte/icons';
import * as DropdownMenu from '$lib/components/ui/dropdown-menu/index.js'; import * as DropdownMenu from '$lib/components/ui/dropdown-menu/index.js';
import { Button } from '$lib/components/ui/button/index.js'; import { Button } from '$lib/components/ui/button/index.js';
import { type StatusFilterValue } from '$lib/stores/filter'; import { type StatusFilterValue } from '$lib/stores/filter';
@@ -27,12 +29,12 @@
{ {
value: 'failed' as const, value: 'failed' as const,
label: '仅失败', label: '仅失败',
icon: XCircleIcon icon: CircleXIcon
}, },
{ {
value: 'succeeded' as const, value: 'succeeded' as const,
label: '仅成功', label: '仅成功',
icon: CheckCircleIcon icon: CircleCheckBigIcon
}, },
{ {
value: 'waiting' as const, value: 'waiting' as const,
@@ -73,7 +75,7 @@
{option.label} {option.label}
</span> </span>
{#if value === option.value} {#if value === option.value}
<CheckCircleIcon class="ml-auto size-3" /> <CircleCheckBigIcon class="ml-auto size-3" />
{/if} {/if}
</DropdownMenu.Item> </DropdownMenu.Item>
{/each} {/each}
@@ -3,13 +3,15 @@
import { Card, CardContent, CardHeader, CardTitle } from '$lib/components/ui/card/index.js'; import { Card, CardContent, CardHeader, CardTitle } from '$lib/components/ui/card/index.js';
import { Badge } from '$lib/components/ui/badge/index.js'; import { Badge } from '$lib/components/ui/badge/index.js';
import SubscriptionDialog from './subscription-dialog.svelte'; import SubscriptionDialog from './subscription-dialog.svelte';
import UserIcon from '@lucide/svelte/icons/user'; import {
import VideoIcon from '@lucide/svelte/icons/video'; UserIcon,
import FolderIcon from '@lucide/svelte/icons/folder'; VideoIcon,
import HeartIcon from '@lucide/svelte/icons/heart'; FolderIcon,
import CheckIcon from '@lucide/svelte/icons/check'; HeartIcon,
import PlusIcon from '@lucide/svelte/icons/plus'; CheckIcon,
import XIcon from '@lucide/svelte/icons/x'; PlusIcon,
XIcon
} from '@lucide/svelte/icons';
import type { Followed } from '$lib/types'; import type { Followed } from '$lib/types';
export let item: Followed; export let item: Followed;
+19 -19
View File
@@ -1,39 +1,39 @@
import { AlertDialog as AlertDialogPrimitive } from 'bits-ui'; import { AlertDialog as AlertDialogPrimitive } from 'bits-ui';
import Trigger from './alert-dialog-trigger.svelte';
import Title from './alert-dialog-title.svelte';
import Action from './alert-dialog-action.svelte'; import Action from './alert-dialog-action.svelte';
import Cancel from './alert-dialog-cancel.svelte'; import Cancel from './alert-dialog-cancel.svelte';
import Content from './alert-dialog-content.svelte';
import Description from './alert-dialog-description.svelte';
import Footer from './alert-dialog-footer.svelte'; import Footer from './alert-dialog-footer.svelte';
import Header from './alert-dialog-header.svelte'; import Header from './alert-dialog-header.svelte';
import Overlay from './alert-dialog-overlay.svelte'; import Overlay from './alert-dialog-overlay.svelte';
import Content from './alert-dialog-content.svelte'; import Title from './alert-dialog-title.svelte';
import Description from './alert-dialog-description.svelte'; import Trigger from './alert-dialog-trigger.svelte';
const Root = AlertDialogPrimitive.Root; const Root = AlertDialogPrimitive.Root;
const Portal = AlertDialogPrimitive.Portal; const Portal = AlertDialogPrimitive.Portal;
export { export {
Root,
Title,
Action, Action,
Cancel,
Portal,
Footer,
Header,
Trigger,
Overlay,
Content,
Description,
// //
Root as AlertDialog, Root as AlertDialog,
Title as AlertDialogTitle,
Action as AlertDialogAction, Action as AlertDialogAction,
Cancel as AlertDialogCancel, Cancel as AlertDialogCancel,
Portal as AlertDialogPortal, Content as AlertDialogContent,
Description as AlertDialogDescription,
Footer as AlertDialogFooter, Footer as AlertDialogFooter,
Header as AlertDialogHeader, Header as AlertDialogHeader,
Trigger as AlertDialogTrigger,
Overlay as AlertDialogOverlay, Overlay as AlertDialogOverlay,
Content as AlertDialogContent, Portal as AlertDialogPortal,
Description as AlertDialogDescription Title as AlertDialogTitle,
Trigger as AlertDialogTrigger,
Cancel,
Content,
Description,
Footer,
Header,
Overlay,
Portal,
Root,
Title,
Trigger
}; };
+1 -2
View File
@@ -1,2 +1 @@
export { default as Badge } from './badge.svelte'; export { default as Badge, badgeVariants, type BadgeVariant } from './badge.svelte';
export { badgeVariants, type BadgeVariant } from './badge.svelte';
+11 -11
View File
@@ -1,25 +1,25 @@
import Root from './breadcrumb.svelte';
import Ellipsis from './breadcrumb-ellipsis.svelte'; import Ellipsis from './breadcrumb-ellipsis.svelte';
import Item from './breadcrumb-item.svelte'; import Item from './breadcrumb-item.svelte';
import Separator from './breadcrumb-separator.svelte';
import Link from './breadcrumb-link.svelte'; import Link from './breadcrumb-link.svelte';
import List from './breadcrumb-list.svelte'; import List from './breadcrumb-list.svelte';
import Page from './breadcrumb-page.svelte'; import Page from './breadcrumb-page.svelte';
import Separator from './breadcrumb-separator.svelte';
import Root from './breadcrumb.svelte';
export { export {
Root,
Ellipsis,
Item,
Separator,
Link,
List,
Page,
// //
Root as Breadcrumb, Root as Breadcrumb,
Ellipsis as BreadcrumbEllipsis, Ellipsis as BreadcrumbEllipsis,
Item as BreadcrumbItem, Item as BreadcrumbItem,
Separator as BreadcrumbSeparator,
Link as BreadcrumbLink, Link as BreadcrumbLink,
List as BreadcrumbList, List as BreadcrumbList,
Page as BreadcrumbPage Page as BreadcrumbPage,
Separator as BreadcrumbSeparator,
Ellipsis,
Item,
Link,
List,
Page,
Root,
Separator
}; };
+3 -3
View File
@@ -6,12 +6,12 @@ import Root, {
} from './button.svelte'; } from './button.svelte';
export { export {
Root,
type ButtonProps as Props,
// //
Root as Button, Root as Button,
buttonVariants, buttonVariants,
Root,
type ButtonProps, type ButtonProps,
type ButtonSize, type ButtonSize,
type ButtonVariant type ButtonVariant,
type ButtonProps as Props
}; };
+9 -9
View File
@@ -1,25 +1,25 @@
import Root from './card.svelte'; import Action from './card-action.svelte';
import Content from './card-content.svelte'; import Content from './card-content.svelte';
import Description from './card-description.svelte'; import Description from './card-description.svelte';
import Footer from './card-footer.svelte'; import Footer from './card-footer.svelte';
import Header from './card-header.svelte'; import Header from './card-header.svelte';
import Title from './card-title.svelte'; import Title from './card-title.svelte';
import Action from './card-action.svelte'; import Root from './card.svelte';
export { export {
Root,
Content,
Description,
Footer,
Header,
Title,
Action, Action,
// //
Root as Card, Root as Card,
Action as CardAction,
Content as CardContent, Content as CardContent,
Description as CardDescription, Description as CardDescription,
Footer as CardFooter, Footer as CardFooter,
Header as CardHeader, Header as CardHeader,
Title as CardTitle, Title as CardTitle,
Action as CardAction Content,
Description,
Footer,
Header,
Root,
Title
}; };
+2 -2
View File
@@ -1,6 +1,6 @@
import Root from './checkbox.svelte'; import Root from './checkbox.svelte';
export { export {
Root,
// //
Root as Checkbox Root as Checkbox,
Root
}; };
@@ -1,13 +1,13 @@
import Root from './collapsible.svelte';
import Trigger from './collapsible-trigger.svelte';
import Content from './collapsible-content.svelte'; import Content from './collapsible-content.svelte';
import Trigger from './collapsible-trigger.svelte';
import Root from './collapsible.svelte';
export { export {
Root,
Content,
Trigger,
// //
Root as Collapsible, Root as Collapsible,
Content as CollapsibleContent, Content as CollapsibleContent,
Trigger as CollapsibleTrigger Trigger as CollapsibleTrigger,
Content,
Root,
Trigger
}; };
+16 -16
View File
@@ -1,40 +1,40 @@
import { Command as CommandPrimitive } from 'bits-ui'; import { Command as CommandPrimitive } from 'bits-ui';
import Root from './command.svelte';
import Dialog from './command-dialog.svelte'; import Dialog from './command-dialog.svelte';
import Empty from './command-empty.svelte'; import Empty from './command-empty.svelte';
import Group from './command-group.svelte'; import Group from './command-group.svelte';
import Item from './command-item.svelte';
import Input from './command-input.svelte'; import Input from './command-input.svelte';
import Item from './command-item.svelte';
import LinkItem from './command-link-item.svelte';
import List from './command-list.svelte'; import List from './command-list.svelte';
import Separator from './command-separator.svelte'; import Separator from './command-separator.svelte';
import Shortcut from './command-shortcut.svelte'; import Shortcut from './command-shortcut.svelte';
import LinkItem from './command-link-item.svelte'; import Root from './command.svelte';
const Loading = CommandPrimitive.Loading; const Loading = CommandPrimitive.Loading;
export { export {
Root,
Dialog,
Empty,
Group,
Item,
LinkItem,
Input,
List,
Separator,
Shortcut,
Loading,
// //
Root as Command, Root as Command,
Dialog as CommandDialog, Dialog as CommandDialog,
Empty as CommandEmpty, Empty as CommandEmpty,
Group as CommandGroup, Group as CommandGroup,
Input as CommandInput,
Item as CommandItem, Item as CommandItem,
LinkItem as CommandLinkItem, LinkItem as CommandLinkItem,
Input as CommandInput,
List as CommandList, List as CommandList,
Loading as CommandLoading,
Separator as CommandSeparator, Separator as CommandSeparator,
Shortcut as CommandShortcut, Shortcut as CommandShortcut,
Loading as CommandLoading Dialog,
Empty,
Group,
Input,
Item,
LinkItem,
List,
Loading,
Root,
Separator,
Shortcut
}; };
+19 -19
View File
@@ -1,37 +1,37 @@
import { Dialog as DialogPrimitive } from 'bits-ui'; import { Dialog as DialogPrimitive } from 'bits-ui';
import Title from './dialog-title.svelte'; import Close from './dialog-close.svelte';
import Content from './dialog-content.svelte';
import Description from './dialog-description.svelte';
import Footer from './dialog-footer.svelte'; import Footer from './dialog-footer.svelte';
import Header from './dialog-header.svelte'; import Header from './dialog-header.svelte';
import Overlay from './dialog-overlay.svelte'; import Overlay from './dialog-overlay.svelte';
import Content from './dialog-content.svelte'; import Title from './dialog-title.svelte';
import Description from './dialog-description.svelte';
import Trigger from './dialog-trigger.svelte'; import Trigger from './dialog-trigger.svelte';
import Close from './dialog-close.svelte';
const Root = DialogPrimitive.Root; const Root = DialogPrimitive.Root;
const Portal = DialogPrimitive.Portal; const Portal = DialogPrimitive.Portal;
export { export {
Root, Close,
Title,
Portal,
Footer,
Header,
Trigger,
Overlay,
Content, Content,
Description, Description,
Close,
// //
Root as Dialog, Root as Dialog,
Title as DialogTitle, Close as DialogClose,
Portal as DialogPortal,
Footer as DialogFooter,
Header as DialogHeader,
Trigger as DialogTrigger,
Overlay as DialogOverlay,
Content as DialogContent, Content as DialogContent,
Description as DialogDescription, Description as DialogDescription,
Close as DialogClose Footer as DialogFooter,
Header as DialogHeader,
Overlay as DialogOverlay,
Portal as DialogPortal,
Title as DialogTitle,
Trigger as DialogTrigger,
Footer,
Header,
Overlay,
Portal,
Root,
Title,
Trigger
}; };
@@ -1,6 +1,7 @@
import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui'; import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui';
import CheckboxItem from './dropdown-menu-checkbox-item.svelte'; import CheckboxItem from './dropdown-menu-checkbox-item.svelte';
import Content from './dropdown-menu-content.svelte'; import Content from './dropdown-menu-content.svelte';
import GroupHeading from './dropdown-menu-group-heading.svelte';
import Group from './dropdown-menu-group.svelte'; import Group from './dropdown-menu-group.svelte';
import Item from './dropdown-menu-item.svelte'; import Item from './dropdown-menu-item.svelte';
import Label from './dropdown-menu-label.svelte'; import Label from './dropdown-menu-label.svelte';
@@ -8,10 +9,9 @@ import RadioGroup from './dropdown-menu-radio-group.svelte';
import RadioItem from './dropdown-menu-radio-item.svelte'; import RadioItem from './dropdown-menu-radio-item.svelte';
import Separator from './dropdown-menu-separator.svelte'; import Separator from './dropdown-menu-separator.svelte';
import Shortcut from './dropdown-menu-shortcut.svelte'; import Shortcut from './dropdown-menu-shortcut.svelte';
import Trigger from './dropdown-menu-trigger.svelte';
import SubContent from './dropdown-menu-sub-content.svelte'; import SubContent from './dropdown-menu-sub-content.svelte';
import SubTrigger from './dropdown-menu-sub-trigger.svelte'; import SubTrigger from './dropdown-menu-sub-trigger.svelte';
import GroupHeading from './dropdown-menu-group-heading.svelte'; import Trigger from './dropdown-menu-trigger.svelte';
const Sub = DropdownMenuPrimitive.Sub; const Sub = DropdownMenuPrimitive.Sub;
const Root = DropdownMenuPrimitive.Root; const Root = DropdownMenuPrimitive.Root;
@@ -22,6 +22,7 @@ export {
CheckboxItem as DropdownMenuCheckboxItem, CheckboxItem as DropdownMenuCheckboxItem,
Content as DropdownMenuContent, Content as DropdownMenuContent,
Group as DropdownMenuGroup, Group as DropdownMenuGroup,
GroupHeading as DropdownMenuGroupHeading,
Item as DropdownMenuItem, Item as DropdownMenuItem,
Label as DropdownMenuLabel, Label as DropdownMenuLabel,
RadioGroup as DropdownMenuRadioGroup, RadioGroup as DropdownMenuRadioGroup,
@@ -32,7 +33,6 @@ export {
SubContent as DropdownMenuSubContent, SubContent as DropdownMenuSubContent,
SubTrigger as DropdownMenuSubTrigger, SubTrigger as DropdownMenuSubTrigger,
Trigger as DropdownMenuTrigger, Trigger as DropdownMenuTrigger,
GroupHeading as DropdownMenuGroupHeading,
Group, Group,
GroupHeading, GroupHeading,
Item, Item,
+2 -2
View File
@@ -1,7 +1,7 @@
import Root from './input.svelte'; import Root from './input.svelte';
export { export {
Root,
// //
Root as Input Root as Input,
Root
}; };
+2 -2
View File
@@ -1,7 +1,7 @@
import Root from './label.svelte'; import Root from './label.svelte';
export { export {
Root,
// //
Root as Label Root as Label,
Root
}; };
+4 -4
View File
@@ -5,13 +5,13 @@ const Root = PopoverPrimitive.Root;
const Close = PopoverPrimitive.Close; const Close = PopoverPrimitive.Close;
export { export {
Root,
Content,
Trigger,
Close, Close,
Content,
// //
Root as Popover, Root as Popover,
Close as PopoverClose,
Content as PopoverContent, Content as PopoverContent,
Trigger as PopoverTrigger, Trigger as PopoverTrigger,
Close as PopoverClose Root,
Trigger
}; };
+2 -2
View File
@@ -1,7 +1,7 @@
import Root from './progress.svelte'; import Root from './progress.svelte';
export { export {
Root,
// //
Root as Progress Root as Progress,
Root
}; };
+19 -19
View File
@@ -1,37 +1,37 @@
import { Select as SelectPrimitive } from 'bits-ui'; import { Select as SelectPrimitive } from 'bits-ui';
import Group from './select-group.svelte';
import Label from './select-label.svelte';
import Item from './select-item.svelte';
import Content from './select-content.svelte'; import Content from './select-content.svelte';
import Trigger from './select-trigger.svelte'; import GroupHeading from './select-group-heading.svelte';
import Separator from './select-separator.svelte'; import Group from './select-group.svelte';
import Item from './select-item.svelte';
import Label from './select-label.svelte';
import ScrollDownButton from './select-scroll-down-button.svelte'; import ScrollDownButton from './select-scroll-down-button.svelte';
import ScrollUpButton from './select-scroll-up-button.svelte'; import ScrollUpButton from './select-scroll-up-button.svelte';
import GroupHeading from './select-group-heading.svelte'; import Separator from './select-separator.svelte';
import Trigger from './select-trigger.svelte';
const Root = SelectPrimitive.Root; const Root = SelectPrimitive.Root;
export { export {
Root,
Group,
Label,
Item,
Content, Content,
Trigger, Group,
Separator, GroupHeading,
Item,
Label,
Root,
ScrollDownButton, ScrollDownButton,
ScrollUpButton, ScrollUpButton,
GroupHeading,
// //
Root as Select, Root as Select,
Group as SelectGroup,
Label as SelectLabel,
Item as SelectItem,
Content as SelectContent, Content as SelectContent,
Trigger as SelectTrigger, Group as SelectGroup,
Separator as SelectSeparator, GroupHeading as SelectGroupHeading,
Item as SelectItem,
Label as SelectLabel,
ScrollDownButton as SelectScrollDownButton, ScrollDownButton as SelectScrollDownButton,
ScrollUpButton as SelectScrollUpButton, ScrollUpButton as SelectScrollUpButton,
GroupHeading as SelectGroupHeading Separator as SelectSeparator,
Trigger as SelectTrigger,
Separator,
Trigger
}; };
+17 -17
View File
@@ -1,36 +1,36 @@
import { Dialog as SheetPrimitive } from 'bits-ui'; import { Dialog as SheetPrimitive } from 'bits-ui';
import Trigger from './sheet-trigger.svelte';
import Close from './sheet-close.svelte'; import Close from './sheet-close.svelte';
import Overlay from './sheet-overlay.svelte';
import Content from './sheet-content.svelte'; import Content from './sheet-content.svelte';
import Header from './sheet-header.svelte';
import Footer from './sheet-footer.svelte';
import Title from './sheet-title.svelte';
import Description from './sheet-description.svelte'; import Description from './sheet-description.svelte';
import Footer from './sheet-footer.svelte';
import Header from './sheet-header.svelte';
import Overlay from './sheet-overlay.svelte';
import Title from './sheet-title.svelte';
import Trigger from './sheet-trigger.svelte';
const Root = SheetPrimitive.Root; const Root = SheetPrimitive.Root;
const Portal = SheetPrimitive.Portal; const Portal = SheetPrimitive.Portal;
export { export {
Root,
Close, Close,
Trigger,
Portal,
Overlay,
Content, Content,
Header,
Footer,
Title,
Description, Description,
Footer,
Header,
Overlay,
Portal,
Root,
// //
Root as Sheet, Root as Sheet,
Close as SheetClose, Close as SheetClose,
Trigger as SheetTrigger,
Portal as SheetPortal,
Overlay as SheetOverlay,
Content as SheetContent, Content as SheetContent,
Header as SheetHeader, Description as SheetDescription,
Footer as SheetFooter, Footer as SheetFooter,
Header as SheetHeader,
Overlay as SheetOverlay,
Portal as SheetPortal,
Title as SheetTitle, Title as SheetTitle,
Description as SheetDescription Trigger as SheetTrigger,
Title,
Trigger
}; };
+2 -2
View File
@@ -1,4 +1,3 @@
import Root from './table.svelte';
import Body from './table-body.svelte'; import Body from './table-body.svelte';
import Caption from './table-caption.svelte'; import Caption from './table-caption.svelte';
import Cell from './table-cell.svelte'; import Cell from './table-cell.svelte';
@@ -6,15 +5,16 @@ import Footer from './table-footer.svelte';
import Head from './table-head.svelte'; import Head from './table-head.svelte';
import Header from './table-header.svelte'; import Header from './table-header.svelte';
import Row from './table-row.svelte'; import Row from './table-row.svelte';
import Root from './table.svelte';
export { export {
Root,
Body, Body,
Caption, Caption,
Cell, Cell,
Footer, Footer,
Head, Head,
Header, Header,
Root,
Row, Row,
// //
Root as Table, Root as Table,
+4 -4
View File
@@ -1,16 +1,16 @@
import Root from './tabs.svelte';
import Content from './tabs-content.svelte'; import Content from './tabs-content.svelte';
import List from './tabs-list.svelte'; import List from './tabs-list.svelte';
import Trigger from './tabs-trigger.svelte'; import Trigger from './tabs-trigger.svelte';
import Root from './tabs.svelte';
export { export {
Root,
Content, Content,
List, List,
Trigger, Root,
// //
Root as Tabs, Root as Tabs,
Content as TabsContent, Content as TabsContent,
List as TabsList, List as TabsList,
Trigger as TabsTrigger Trigger as TabsTrigger,
Trigger
}; };
+6 -6
View File
@@ -1,21 +1,21 @@
import { Tooltip as TooltipPrimitive } from 'bits-ui'; import { Tooltip as TooltipPrimitive } from 'bits-ui';
import Trigger from './tooltip-trigger.svelte';
import Content from './tooltip-content.svelte'; import Content from './tooltip-content.svelte';
import Trigger from './tooltip-trigger.svelte';
const Root = TooltipPrimitive.Root; const Root = TooltipPrimitive.Root;
const Provider = TooltipPrimitive.Provider; const Provider = TooltipPrimitive.Provider;
const Portal = TooltipPrimitive.Portal; const Portal = TooltipPrimitive.Portal;
export { export {
Root,
Trigger,
Content, Content,
Provider,
Portal, Portal,
Provider,
Root,
// //
Root as Tooltip, Root as Tooltip,
Content as TooltipContent, Content as TooltipContent,
Trigger as TooltipTrigger, Portal as TooltipPortal,
Provider as TooltipProvider, Provider as TooltipProvider,
Portal as TooltipPortal Trigger as TooltipTrigger,
Trigger
}; };
+9 -7
View File
@@ -7,12 +7,14 @@
import { Checkbox } from '$lib/components/ui/checkbox/index.js'; import { Checkbox } from '$lib/components/ui/checkbox/index.js';
import { Label } from '$lib/components/ui/label/index.js'; import { Label } from '$lib/components/ui/label/index.js';
import type { VideoInfo } from '$lib/types'; import type { VideoInfo } from '$lib/types';
import RotateCcwIcon from '@lucide/svelte/icons/rotate-ccw'; import {
import InfoIcon from '@lucide/svelte/icons/info'; RotateCcwIcon,
import BrushCleaningIcon from '@lucide/svelte/icons/brush-cleaning'; InfoIcon,
import UserIcon from '@lucide/svelte/icons/user'; BrushCleaningIcon,
import SquareArrowOutUpRightIcon from '@lucide/svelte/icons/square-arrow-out-up-right'; UserIcon,
import MoreHorizontalIcon from '@lucide/svelte/icons/more-horizontal'; SquareArrowOutUpRightIcon,
EllipsisIcon
} from '@lucide/svelte/icons';
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import * as Tooltip from '$lib/components/ui/tooltip/index.js'; import * as Tooltip from '$lib/components/ui/tooltip/index.js';
@@ -204,7 +206,7 @@
variant="outline" variant="outline"
class="hover:bg-accent hover:text-accent-foreground h-8 shrink-0 cursor-pointer px-2" class="hover:bg-accent hover:text-accent-foreground h-8 shrink-0 cursor-pointer px-2"
> >
<MoreHorizontalIcon class="h-3 w-3" /> <EllipsisIcon class="h-3 w-3" />
</Button> </Button>
{/snippet} {/snippet}
</DropdownMenu.Trigger> </DropdownMenu.Trigger>
+1 -4
View File
@@ -1,7 +1,4 @@
import HeartIcon from '@lucide/svelte/icons/heart'; import { ClockIcon, FolderIcon, HeartIcon, UserIcon } from '@lucide/svelte/icons';
import FolderIcon from '@lucide/svelte/icons/folder';
import UserIcon from '@lucide/svelte/icons/user';
import ClockIcon from '@lucide/svelte/icons/clock';
export const VIDEO_SOURCES = { export const VIDEO_SOURCES = {
FAVORITE: { type: 'favorite', title: '收藏夹', icon: HeartIcon }, FAVORITE: { type: 'favorite', title: '收藏夹', icon: HeartIcon },
+16 -14
View File
@@ -13,19 +13,21 @@
import CloudDownloadIcon from '@lucide/svelte/icons/cloud-download'; import CloudDownloadIcon from '@lucide/svelte/icons/cloud-download';
import api from '$lib/api'; import api from '$lib/api';
import type { DashBoardResponse, SysInfo, ApiError, TaskStatus } from '$lib/types'; import type { DashBoardResponse, SysInfo, ApiError, TaskStatus } from '$lib/types';
import DatabaseIcon from '@lucide/svelte/icons/database'; import {
import HeartIcon from '@lucide/svelte/icons/heart'; DatabaseIcon,
import FolderIcon from '@lucide/svelte/icons/folder'; HeartIcon,
import UserIcon from '@lucide/svelte/icons/user'; FolderIcon,
import ClockIcon from '@lucide/svelte/icons/clock'; UserIcon,
import VideoIcon from '@lucide/svelte/icons/video'; ClockIcon,
import HardDriveIcon from '@lucide/svelte/icons/hard-drive'; VideoIcon,
import CpuIcon from '@lucide/svelte/icons/cpu'; HardDriveIcon,
import MemoryStickIcon from '@lucide/svelte/icons/memory-stick'; CpuIcon,
import PlayIcon from '@lucide/svelte/icons/play'; MemoryStickIcon,
import CheckCircleIcon from '@lucide/svelte/icons/check-circle'; PlayIcon,
import CalendarIcon from '@lucide/svelte/icons/calendar'; CircleCheckBigIcon,
import DownloadIcon from '@lucide/svelte/icons/download'; CalendarIcon,
DownloadIcon
} from '@lucide/svelte/icons';
let dashboardData: DashBoardResponse | null = null; let dashboardData: DashBoardResponse | null = null;
let sysInfo: SysInfo | null = null; let sysInfo: SysInfo | null = null;
@@ -337,7 +339,7 @@
</div> </div>
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<CheckCircleIcon class="text-muted-foreground h-4 w-4" /> <CircleCheckBigIcon class="text-muted-foreground h-4 w-4" />
<span class="text-sm">运行结束</span> <span class="text-sm">运行结束</span>
</div> </div>
<span class="text-muted-foreground text-sm"> <span class="text-muted-foreground text-sm">
+1 -2
View File
@@ -12,8 +12,7 @@
import PasswordInput from '$lib/components/custom/password-input.svelte'; import PasswordInput from '$lib/components/custom/password-input.svelte';
import QrLogin from '$lib/components/custom/qr-login.svelte'; import QrLogin from '$lib/components/custom/qr-login.svelte';
import NotifierDialog from './NotifierDialog.svelte'; import NotifierDialog from './NotifierDialog.svelte';
import InfoIcon from '@lucide/svelte/icons/info'; import { InfoIcon, QrCodeIcon } from '@lucide/svelte/icons';
import QrCodeIcon from '@lucide/svelte/icons/qr-code';
import api from '$lib/api'; import api from '$lib/api';
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import { setBreadcrumb } from '$lib/stores/breadcrumb'; import { setBreadcrumb } from '$lib/stores/breadcrumb';
+16 -14
View File
@@ -8,16 +8,18 @@
import * as Table from '$lib/components/ui/table/index.js'; import * as Table from '$lib/components/ui/table/index.js';
import * as Tabs from '$lib/components/ui/tabs/index.js'; import * as Tabs from '$lib/components/ui/tabs/index.js';
import * as Dialog from '$lib/components/ui/dialog/index.js'; import * as Dialog from '$lib/components/ui/dialog/index.js';
import EditIcon from '@lucide/svelte/icons/edit'; import {
import FolderIcon from '@lucide/svelte/icons/folder'; SquarePenIcon,
import HeartIcon from '@lucide/svelte/icons/heart'; FolderIcon,
import UserIcon from '@lucide/svelte/icons/user'; HeartIcon,
import ClockIcon from '@lucide/svelte/icons/clock'; UserIcon,
import PlusIcon from '@lucide/svelte/icons/plus'; ClockIcon,
import InfoIcon from '@lucide/svelte/icons/info'; PlusIcon,
import TrashIcon2 from '@lucide/svelte/icons/trash-2'; InfoIcon,
import CheckCircleIcon from '@lucide/svelte/icons/check-circle'; Trash2Icon,
import XCircleIcon from '@lucide/svelte/icons/x-circle'; CircleCheckBigIcon,
CircleXIcon
} from '@lucide/svelte/icons';
import * as Tooltip from '$lib/components/ui/tooltip/index.js'; import * as Tooltip from '$lib/components/ui/tooltip/index.js';
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import { setBreadcrumb } from '$lib/stores/breadcrumb'; import { setBreadcrumb } from '$lib/stores/breadcrumb';
@@ -364,14 +366,14 @@
<Badge <Badge
class="flex w-fit items-center gap-1.5 bg-emerald-700 text-emerald-100" class="flex w-fit items-center gap-1.5 bg-emerald-700 text-emerald-100"
> >
<CheckCircleIcon class="h-3 w-3" /> <CircleCheckBigIcon class="h-3 w-3" />
已启用{#if key === 'submissions' && source.useDynamicApi !== null}{source.useDynamicApi 已启用{#if key === 'submissions' && source.useDynamicApi !== null}{source.useDynamicApi
? '(动态 API' ? '(动态 API'
: ''}{/if} : ''}{/if}
</Badge> </Badge>
{:else} {:else}
<Badge class="flex w-fit items-center gap-1.5 bg-rose-700 text-rose-100 "> <Badge class="flex w-fit items-center gap-1.5 bg-rose-700 text-rose-100 ">
<XCircleIcon class="h-3 w-3" /> <CircleXIcon class="h-3 w-3" />
已禁用 已禁用
</Badge> </Badge>
{/if} {/if}
@@ -386,7 +388,7 @@
onclick={() => openEditDialog(key, source, index)} onclick={() => openEditDialog(key, source, index)}
class="h-8 w-8 p-0" class="h-8 w-8 p-0"
> >
<EditIcon class="h-3 w-3" /> <SquarePenIcon class="h-3 w-3" />
</Button> </Button>
</Tooltip.Trigger> </Tooltip.Trigger>
<Tooltip.Content> <Tooltip.Content>
@@ -417,7 +419,7 @@
onclick={() => openRemoveDialog(key, source, index)} onclick={() => openRemoveDialog(key, source, index)}
class="h-8 w-8 p-0" class="h-8 w-8 p-0"
> >
<TrashIcon2 class="h-3 w-3" /> <Trash2Icon class="h-3 w-3" />
</Button> </Button>
</Tooltip.Trigger> </Tooltip.Trigger>
<Tooltip.Content> <Tooltip.Content>
+2 -4
View File
@@ -6,9 +6,7 @@
import api from '$lib/api'; import api from '$lib/api';
import SquareArrowOutUpRightIcon from '@lucide/svelte/icons/square-arrow-out-up-right'; import SquareArrowOutUpRightIcon from '@lucide/svelte/icons/square-arrow-out-up-right';
import type { ApiError, VideoResponse, UpdateVideoStatusRequest } from '$lib/types'; import type { ApiError, VideoResponse, UpdateVideoStatusRequest } from '$lib/types';
import RotateCcwIcon from '@lucide/svelte/icons/rotate-ccw'; import { RotateCcwIcon, SquarePenIcon, BrushCleaningIcon } from '@lucide/svelte/icons';
import EditIcon from '@lucide/svelte/icons/edit';
import BrushCleaningIcon from '@lucide/svelte/icons/brush-cleaning';
import { setBreadcrumb } from '$lib/stores/breadcrumb'; import { setBreadcrumb } from '$lib/stores/breadcrumb';
import { appStateStore, ToQuery } from '$lib/stores/filter'; import { appStateStore, ToQuery } from '$lib/stores/filter';
import VideoCard from '$lib/components/video-card.svelte'; import VideoCard from '$lib/components/video-card.svelte';
@@ -175,7 +173,7 @@
onclick={() => (statusEditorOpen = true)} onclick={() => (statusEditorOpen = true)}
disabled={statusEditorLoading} disabled={statusEditorLoading}
> >
<EditIcon class="mr-2 h-4 w-4" /> <SquarePenIcon class="mr-2 h-4 w-4" />
编辑状态 编辑状态
</Button> </Button>
<Button <Button
+2 -3
View File
@@ -3,8 +3,7 @@
import Pagination from '$lib/components/pagination.svelte'; import Pagination from '$lib/components/pagination.svelte';
import { Button } from '$lib/components/ui/button/index.js'; import { Button } from '$lib/components/ui/button/index.js';
import * as AlertDialog from '$lib/components/ui/alert-dialog/index.js'; import * as AlertDialog from '$lib/components/ui/alert-dialog/index.js';
import EditIcon from '@lucide/svelte/icons/edit'; import { SquarePenIcon, RotateCcwIcon } from '@lucide/svelte/icons';
import RotateCcwIcon from '@lucide/svelte/icons/rotate-ccw';
import api from '$lib/api'; import api from '$lib/api';
import { Checkbox } from '$lib/components/ui/checkbox/index.js'; import { Checkbox } from '$lib/components/ui/checkbox/index.js';
import { Label } from '$lib/components/ui/label/index.js'; import { Label } from '$lib/components/ui/label/index.js';
@@ -368,7 +367,7 @@
onclick={() => (updateAllDialogOpen = true)} onclick={() => (updateAllDialogOpen = true)}
disabled={updatingAll || loading} disabled={updatingAll || loading}
> >
<EditIcon class="mr-1.5 h-3 w-3" /> <SquarePenIcon class="mr-1.5 h-3 w-3" />
{hasFilters ? '编辑筛选' : '编辑全部'} {hasFilters ? '编辑筛选' : '编辑全部'}
</Button> </Button>
<Button <Button
+1 -1
View File
@@ -1,5 +1,5 @@
import tailwindcss from '@tailwindcss/vite';
import { sveltekit } from '@sveltejs/kit/vite'; import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
export default defineConfig({ export default defineConfig({