From ea00a7111202693f95b8c99ae465dce04ae54514 Mon Sep 17 00:00:00 2001 From: Maofeng Date: Sun, 20 Sep 2026 15:52:22 +0800 Subject: [PATCH] refactor(icons): migrate workspace to Icones --- .agents/skills/icones/SKILL.md | 8 + apps/web/package.json | 9 +- apps/web/src/components/toaster.tsx | 2 +- apps/web/src/data/navigation.ts | 214 +++----- apps/web/src/data/notifications.ts | 14 +- apps/web/src/i18n/app-language-switcher.tsx | 15 +- apps/web/src/pages/login-page.tsx | 2 +- apps/web/vite.config.ts | 5 +- apps/web/vitest.config.ts | 3 +- bun.lock | 496 ++++++++++++++++-- packages/blocks/package.json | 12 +- .../src/blocks/appearance/preferences.tsx | 2 +- .../blocks/appearance/theme-config-panel.tsx | 2 +- .../blocks/appearance/theme-toggle-button.tsx | 4 +- .../blocks/src/blocks/chats/chat-composer.tsx | 2 +- .../blocks/chats/chat-conversation-list.tsx | 2 +- .../src/blocks/chats/chat-message-list.tsx | 2 +- .../src/blocks/chats/chat-workspace.tsx | 6 +- .../src/blocks/layout/app-breadcrumb.tsx | 22 +- .../blocks/src/blocks/layout/app-layout.tsx | 19 +- .../src/blocks/layout/app-query-indicator.tsx | 3 +- .../blocks/layout/header-action-button.tsx | 6 +- .../blocks/src/blocks/layout/user-menu.tsx | 23 +- .../blocks/src/blocks/layouts/vega/index.tsx | 156 ++++++ .../src/blocks/media/media-context-menu.tsx | 8 +- .../blocks/src/blocks/media/media-detail.tsx | 2 +- .../blocks/src/blocks/media/media-grid.tsx | 2 +- .../blocks/src/blocks/media/media-library.tsx | 14 +- packages/blocks/src/blocks/media/sidebar.tsx | 2 +- .../blocks/navigation/flyout-navigation.tsx | 4 +- .../blocks/src/blocks/navigation/item-icon.ts | 4 +- .../blocks/navigation/mobile-navigation.tsx | 30 +- .../blocks/navigation/navigation-button.tsx | 8 +- .../blocks/src/blocks/navigation/types.ts | 4 +- .../src/blocks/navigation/use-navigation.tsx | 31 +- .../notifications/notification-center.tsx | 2 +- .../notifications/notification-item.tsx | 4 +- .../blocks/src/blocks/notifications/types.ts | 4 +- packages/i18n/package.json | 4 +- .../src/devtool/devtool-action-output.tsx | 2 +- .../i18n/src/devtool/devtool-settings.tsx | 10 +- .../src/devtool/devtool-theme-switcher.tsx | 2 +- .../i18n/src/devtool/i18n-devtool-trigger.tsx | 2 +- packages/i18n/src/devtool/i18n-devtool.tsx | 7 +- .../i18n/src/devtool/message-copy-menu.tsx | 66 ++- .../i18n/src/devtool/message-navigation.tsx | 29 +- packages/i18n/src/devtool/message-panel.tsx | 9 +- packages/icons/README.md | 22 - packages/icons/package.json | 22 - packages/icons/src/index.tsx | 33 -- packages/icons/tsconfig.json | 17 - packages/lexical/package.json | 3 +- packages/lexical/src/action-declarations.tsx | 7 +- packages/lexical/src/actions-view.tsx | 2 +- packages/lexical/src/actions/alignment.ts | 7 +- packages/lexical/src/actions/block.ts | 8 +- .../lexical/src/actions/clear-formatting.ts | 2 +- packages/lexical/src/actions/color-picker.tsx | 2 +- packages/lexical/src/actions/date.tsx | 2 +- packages/lexical/src/actions/font-size.tsx | 2 +- packages/lexical/src/actions/history.ts | 2 +- .../lexical/src/actions/horizontal-rule.ts | 2 +- packages/lexical/src/actions/indent.ts | 2 +- packages/lexical/src/actions/link.tsx | 2 +- packages/lexical/src/actions/list.ts | 2 +- packages/lexical/src/actions/media.ts | 2 +- packages/lexical/src/actions/text-format.ts | 2 +- packages/lexical/src/nodes/media-node.tsx | 7 +- .../src/plugins/date-popover-plugin.tsx | 2 +- .../src/plugins/draggable-block-plugin.tsx | 2 +- .../src/plugins/link-popover-plugin.tsx | 2 +- packages/lexical/src/types.ts | 4 +- packages/ui/package.json | 4 +- packages/ui/src/components/accordion.tsx | 2 +- packages/ui/src/components/breadcrumb.tsx | 5 +- packages/ui/src/components/calendar.tsx | 343 ++++++------ packages/ui/src/components/carousel.tsx | 55 +- packages/ui/src/components/checkbox.tsx | 2 +- packages/ui/src/components/combobox.tsx | 6 +- packages/ui/src/components/command.tsx | 2 +- packages/ui/src/components/context-menu.tsx | 2 +- packages/ui/src/components/dialog.tsx | 2 +- packages/ui/src/components/dropdown-menu.tsx | 2 +- packages/ui/src/components/icon.tsx | 229 ++++++++ packages/ui/src/components/input-otp.tsx | 2 +- packages/ui/src/components/menubar.tsx | 2 +- .../ui/src/components/message-scroller.tsx | 2 +- packages/ui/src/components/native-select.tsx | 2 +- .../ui/src/components/navigation-menu.tsx | 2 +- packages/ui/src/components/pagination.tsx | 2 +- packages/ui/src/components/select.tsx | 6 +- packages/ui/src/components/sheet.tsx | 2 +- packages/ui/src/components/sidebar.tsx | 6 +- packages/ui/src/components/spinner.tsx | 7 +- packages/ui/src/components/toast.tsx | 8 +- 95 files changed, 1409 insertions(+), 725 deletions(-) create mode 100644 .agents/skills/icones/SKILL.md create mode 100644 packages/blocks/src/blocks/layouts/vega/index.tsx delete mode 100644 packages/icons/README.md delete mode 100644 packages/icons/package.json delete mode 100644 packages/icons/src/index.tsx delete mode 100644 packages/icons/tsconfig.json create mode 100644 packages/ui/src/components/icon.tsx diff --git a/.agents/skills/icones/SKILL.md b/.agents/skills/icones/SKILL.md new file mode 100644 index 0000000..c337160 --- /dev/null +++ b/.agents/skills/icones/SKILL.md @@ -0,0 +1,8 @@ +--- +name: "icones" +description: "The same icon vocabulary, with an API that belongs in your React application." +--- + +Up-to-date icones documentation for this project. Read it before working with icones: + +https://icones.go-slim.dev/llms/react/llms-full.txt diff --git a/apps/web/package.json b/apps/web/package.json index 24b4662..6ae2691 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -19,7 +19,7 @@ "@base-ui/react": "^1.6.0", "@base-ui/utils": "^0.3.1", "@floating-ui/utils": "^0.2.12", - "@iconify/react": "^6.0.2", + "@icones/react": "^0.0.1", "@lingui/core": "^6", "@tanstack/react-form": "^1.33.2", "@tanstack/react-hotkeys": "^0.10.0", @@ -27,12 +27,10 @@ "@tanstack/react-router": "^1.170.18", "@tanstack/react-start": "^1.168.32", "@workspace/blocks": "workspace:*", - "@workspace/icons": "workspace:*", "@workspace/i18n": "workspace:*", "@workspace/lexical": "workspace:*", + "@workspace/search": "workspace:*", "@workspace/ui": "workspace:*", - "country-flag-icons": "^1.6.20", - "lucide-react": "^1.27.0", "react": "^19.2.6", "react-day-picker": "^10.0.1", "react-dom": "^19.2.6", @@ -40,6 +38,7 @@ }, "devDependencies": { "@tailwindcss/vite": "^4", + "@icones/vite": "^0.0.1", "@testing-library/react": "^16.3.2", "@types/node": "^24", "@types/react": "^19", @@ -51,4 +50,4 @@ "vite": "^8", "vitest": "^4.1.10" } -} +} \ No newline at end of file diff --git a/apps/web/src/components/toaster.tsx b/apps/web/src/components/toaster.tsx index 920e777..d85f4ed 100644 --- a/apps/web/src/components/toaster.tsx +++ b/apps/web/src/components/toaster.tsx @@ -8,7 +8,7 @@ import { TriangleAlertIcon, OctagonXIcon, Loader2Icon, -} from "lucide-react" +} from "@workspace/ui/components/icon" const Toaster = ({ ...props }: ToasterProps) => { const [themeMode] = useUiState("theme-mode") diff --git a/apps/web/src/data/navigation.ts b/apps/web/src/data/navigation.ts index 80d80dc..e8640ae 100644 --- a/apps/web/src/data/navigation.ts +++ b/apps/web/src/data/navigation.ts @@ -1,63 +1,3 @@ -import { - Alert02Icon, - Analytics01Icon, - AnalyticsUpIcon, - AppWindowIcon, - ArrowDataTransferHorizontalIcon, - BubbleChatIcon, - Calculator01Icon, - CallMissed01Icon, - CancelCircleIcon, - Chart01Icon, - ChartIncreaseIcon, - CheckmarkBadge01Icon, - CheckmarkCircle01Icon, - ClipboardListIcon, - Clock01Icon, - CodeSquareIcon, - Compass01Icon, - CreditCardIcon, - CrownIcon, - Delete02Icon, - DeliveryTruck01Icon, - Discount01Icon, - File01Icon, - GalleryHorizontalIcon, - GiftIcon, - HistoryIcon, - IdentityCardIcon, - InboxDownloadIcon, - InboxUploadIcon, - Invoice03Icon, - Key01Icon, - LinkCircleIcon, - Location01Icon, - LockKeyIcon, - Medal01Icon, - MoneySendSquareIcon, - Note01Icon, - Package02Icon, - PackageIcon, - Refresh01Icon, - RoadLocation01Icon, - SecurityWarningIcon, - Settings01Icon, - Settings03Icon, - Share01Icon, - ShoppingBag01Icon, - ShoppingCart01Icon, - StarCircleIcon, - StarIcon, - Store01Icon, - Structure01Icon, - Task01Icon, - Ticket01Icon, - UserGroupIcon, - UserShield01Icon, - Wallet01Icon, - WalletCardsIcon, -} from "@workspace/icons" - import type { NavigationGroup } from "@workspace/blocks/navigation" import { navigationMessages } from "./navigation-messages" @@ -71,19 +11,19 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "overview-dashboard", to: "/", label: navigationMessages["overview-dashboard"], - icon: Analytics01Icon, + icon: "huge:analytics-01", }, { id: "overview-realtime", to: "/analytics/realtime", label: navigationMessages["overview-realtime"], - icon: AnalyticsUpIcon, + icon: "huge:analytics-up", }, { id: "overview-tasks", to: "/workspace/tasks", label: navigationMessages["overview-tasks"], - icon: Task01Icon, + icon: "huge:task-01", }, ], }, @@ -94,42 +34,42 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ { id: "catalog-products", label: navigationMessages["catalog-products"], - icon: ShoppingBag01Icon, + icon: "huge:shopping-bag-01", items: [ { id: "catalog-products-list", to: "/catalog/products/list", label: navigationMessages["catalog-products-list"], - icon: ShoppingBag01Icon, + icon: "huge:shopping-bag-01", }, { id: "catalog-products-drafts", to: "/catalog/products/drafts", label: navigationMessages["catalog-products-drafts"], - icon: File01Icon, + icon: "huge:file-01", }, { id: "catalog-products-bundles", to: "/catalog/products/bundles", label: navigationMessages["catalog-products-bundles"], - icon: Package02Icon, + icon: "huge:package-02", }, { id: "catalog-products-attributes", label: navigationMessages["catalog-products-attributes"], - icon: Settings03Icon, + icon: "huge:settings-03", items: [ { id: "catalog-product-specifications", to: "/catalog/products/attributes/specifications", label: navigationMessages["catalog-product-specifications"], - icon: ClipboardListIcon, + icon: "huge:clipboard", }, { id: "catalog-product-brands", to: "/catalog/products/attributes/brands", label: navigationMessages["catalog-product-brands"], - icon: StarIcon, + icon: "huge:star", }, ], }, @@ -139,19 +79,19 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "catalog-categories", to: "/catalog/categories", label: navigationMessages["catalog-categories"], - icon: ClipboardListIcon, + icon: "huge:clipboard", items: [ { id: "catalog-category-tree", to: "/catalog/categories/tree", label: navigationMessages["catalog-category-tree"], - icon: Structure01Icon, + icon: "huge:structure-01", }, { id: "catalog-category-navigation", to: "/catalog/categories/navigation", label: navigationMessages["catalog-category-navigation"], - icon: Compass01Icon, + icon: "huge:compass-01", }, ], }, @@ -159,37 +99,37 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "inventory-center", to: "/inventory", label: navigationMessages["inventory-center"], - icon: PackageIcon, + icon: "huge:package", items: [ { id: "inventory-overview", to: "/inventory/overview", label: navigationMessages["inventory-overview"], - icon: Chart01Icon, + icon: "huge:chart-01", }, { id: "inventory-inbound", to: "/inventory/inbound", label: navigationMessages["inventory-inbound"], - icon: InboxDownloadIcon, + icon: "huge:inbox-download", }, { id: "inventory-outbound", to: "/inventory/outbound", label: navigationMessages["inventory-outbound"], - icon: InboxUploadIcon, + icon: "huge:inbox-upload", }, { id: "inventory-transfers", to: "/inventory/transfers", label: navigationMessages["inventory-transfers"], - icon: ArrowDataTransferHorizontalIcon, + icon: "huge:arrow-data-transfer-horizontal", }, { id: "inventory-alerts", to: "/inventory/alerts", label: navigationMessages["inventory-alerts"], - icon: Alert02Icon, + icon: "huge:alert-02", }, ], }, @@ -197,25 +137,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "content-assets", to: "/content", label: navigationMessages["content-assets"], - icon: File01Icon, + icon: "huge:file-01", items: [ { id: "content-articles", to: "/content/articles", label: navigationMessages["content-articles"], - icon: File01Icon, + icon: "huge:file-01", }, { id: "content-media", to: "/content/media", label: navigationMessages["content-media"], - icon: GalleryHorizontalIcon, + icon: "huge:album-01", }, { id: "content-pages", to: "/content/pages", label: navigationMessages["content-pages"], - icon: AppWindowIcon, + icon: "huge:browser", }, ], }, @@ -229,37 +169,37 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "trade-orders", to: "/trade/orders", label: navigationMessages["trade-orders"], - icon: ShoppingCart01Icon, + icon: "huge:shopping-cart-01", items: [ { id: "trade-orders-awaiting-payment", to: "/trade/orders/awaiting-payment", label: navigationMessages["trade-orders-awaiting-payment"], - icon: WalletCardsIcon, + icon: "huge:wallet-cards", }, { id: "trade-orders-awaiting-shipment", to: "/trade/orders/awaiting-shipment", label: navigationMessages["trade-orders-awaiting-shipment"], - icon: PackageIcon, + icon: "huge:package", }, { id: "trade-orders-shipped", to: "/trade/orders/shipped", label: navigationMessages["trade-orders-shipped"], - icon: DeliveryTruck01Icon, + icon: "huge:delivery-truck-01", }, { id: "trade-orders-completed", to: "/trade/orders/completed", label: navigationMessages["trade-orders-completed"], - icon: CheckmarkCircle01Icon, + icon: "huge:checkmark-circle-01", }, { id: "trade-orders-canceled", to: "/trade/orders/canceled", label: navigationMessages["trade-orders-canceled"], - icon: CancelCircleIcon, + icon: "huge:cancel-circle", }, ], }, @@ -267,25 +207,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "fulfillment-center", to: "/fulfillment", label: navigationMessages["fulfillment-center"], - icon: DeliveryTruck01Icon, + icon: "huge:delivery-truck-01", items: [ { id: "fulfillment-deliveries", to: "/fulfillment/deliveries", label: navigationMessages["fulfillment-deliveries"], - icon: Location01Icon, + icon: "huge:location-01", }, { id: "fulfillment-pickups", to: "/fulfillment/pickups", label: navigationMessages["fulfillment-pickups"], - icon: Store01Icon, + icon: "huge:store-01", }, { id: "fulfillment-freight-rules", to: "/fulfillment/freight-rules", label: navigationMessages["fulfillment-freight-rules"], - icon: RoadLocation01Icon, + icon: "huge:road-location-01", }, ], }, @@ -293,25 +233,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "after-sales-center", to: "/after-sales", label: navigationMessages["after-sales-center"], - icon: CallMissed01Icon, + icon: "huge:call-missed-01", items: [ { id: "after-sales-returns", to: "/after-sales/returns", label: navigationMessages["after-sales-returns"], - icon: Refresh01Icon, + icon: "huge:refresh-01", }, { id: "after-sales-refunds", to: "/after-sales/refunds", label: navigationMessages["after-sales-refunds"], - icon: MoneySendSquareIcon, + icon: "huge:money-send-square", }, { id: "after-sales-disputes", to: "/after-sales/disputes", label: navigationMessages["after-sales-disputes"], - icon: SecurityWarningIcon, + icon: "huge:security-warning", }, ], }, @@ -325,31 +265,31 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "customer-center", to: "/customers", label: navigationMessages["customer-center"], - icon: IdentityCardIcon, + icon: "huge:identity-card", items: [ { id: "customer-profiles", to: "/customers/profiles", label: navigationMessages["customer-profiles"], - icon: IdentityCardIcon, + icon: "huge:identity-card", }, { id: "customer-segments", to: "/customers/segments", label: navigationMessages["customer-segments"], - icon: UserGroupIcon, + icon: "huge:user-group", }, { id: "customer-tiers", to: "/customers/tiers", label: navigationMessages["customer-tiers"], - icon: CrownIcon, + icon: "huge:crown", }, { id: "customer-risk-list", to: "/customers/risk-list", label: navigationMessages["customer-risk-list"], - icon: SecurityWarningIcon, + icon: "huge:security-warning", }, ], }, @@ -357,31 +297,31 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "marketing-campaigns", to: "/marketing/campaigns", label: navigationMessages["marketing-campaigns"], - icon: Discount01Icon, + icon: "huge:discount-01", items: [ { id: "marketing-coupons", to: "/marketing/coupons", label: navigationMessages["marketing-coupons"], - icon: Ticket01Icon, + icon: "huge:ticket-01", }, { id: "marketing-flash-sales", to: "/marketing/flash-sales", label: navigationMessages["marketing-flash-sales"], - icon: Clock01Icon, + icon: "huge:clock-01", }, { id: "marketing-gift-promotions", to: "/marketing/gift-promotions", label: navigationMessages["marketing-gift-promotions"], - icon: GiftIcon, + icon: "huge:gift", }, { id: "marketing-referrals", to: "/marketing/referrals", label: navigationMessages["marketing-referrals"], - icon: Share01Icon, + icon: "huge:share-01", }, ], }, @@ -389,25 +329,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "loyalty-center", to: "/loyalty", label: navigationMessages["loyalty-center"], - icon: Medal01Icon, + icon: "huge:medal-01", items: [ { id: "loyalty-points", to: "/loyalty/points", label: navigationMessages["loyalty-points"], - icon: StarCircleIcon, + icon: "huge:star-circle", }, { id: "loyalty-stored-value", to: "/loyalty/stored-value", label: navigationMessages["loyalty-stored-value"], - icon: Wallet01Icon, + icon: "huge:wallet-01", }, { id: "loyalty-benefits", to: "/loyalty/benefits", label: navigationMessages["loyalty-benefits"], - icon: CheckmarkBadge01Icon, + icon: "huge:checkmark-badge-01", }, ], }, @@ -421,31 +361,31 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "report-center", to: "/reports", label: navigationMessages["report-center"], - icon: Chart01Icon, + icon: "huge:chart-01", items: [ { id: "report-sales", to: "/reports/sales", label: navigationMessages["report-sales"], - icon: AnalyticsUpIcon, + icon: "huge:analytics-up", }, { id: "report-products", to: "/reports/products", label: navigationMessages["report-products"], - icon: ShoppingBag01Icon, + icon: "huge:shopping-bag-01", }, { id: "report-customers", to: "/reports/customers", label: navigationMessages["report-customers"], - icon: UserGroupIcon, + icon: "huge:user-group", }, { id: "report-channels", to: "/reports/channels", label: navigationMessages["report-channels"], - icon: ChartIncreaseIcon, + icon: "huge:chart-increase", }, ], }, @@ -453,31 +393,31 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "finance-center", to: "/finance", label: navigationMessages["finance-center"], - icon: WalletCardsIcon, + icon: "huge:wallet-cards", items: [ { id: "finance-settlements", to: "/finance/settlements", label: navigationMessages["finance-settlements"], - icon: Invoice03Icon, + icon: "huge:invoice-03", }, { id: "finance-reconciliation", to: "/finance/reconciliation", label: navigationMessages["finance-reconciliation"], - icon: Calculator01Icon, + icon: "huge:calculator-01", }, { id: "finance-invoices", to: "/finance/invoices", label: navigationMessages["finance-invoices"], - icon: File01Icon, + icon: "huge:file-01", }, { id: "finance-payouts", to: "/finance/payouts", label: navigationMessages["finance-payouts"], - icon: MoneySendSquareIcon, + icon: "huge:money-send-square", }, ], }, @@ -491,25 +431,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "system-members", to: "/system/members", label: navigationMessages["system-members"], - icon: UserShield01Icon, + icon: "huge:user-shield-01", items: [ { id: "system-members-admins", to: "/system/members/admins", label: navigationMessages["system-members-admins"], - icon: UserShield01Icon, + icon: "huge:user-shield-01", }, { id: "system-members-roles", to: "/system/members/roles", label: navigationMessages["system-members-roles"], - icon: UserGroupIcon, + icon: "huge:user-group", }, { id: "system-members-permissions", to: "/system/members/permissions", label: navigationMessages["system-members-permissions"], - icon: LockKeyIcon, + icon: "huge:lock-key", }, ], }, @@ -517,19 +457,19 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "system-notifications", to: "/system/notifications", label: navigationMessages["system-notifications"], - icon: BubbleChatIcon, + icon: "huge:bubble-chat", items: [ { id: "system-notification-templates", to: "/system/notifications/templates", label: navigationMessages["system-notification-templates"], - icon: File01Icon, + icon: "huge:file-01", }, { id: "system-notification-logs", to: "/system/notifications/logs", label: navigationMessages["system-notification-logs"], - icon: HistoryIcon, + icon: "huge:time-schedule", }, ], }, @@ -537,25 +477,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "system-audit", to: "/system/audit", label: navigationMessages["system-audit"], - icon: Note01Icon, + icon: "huge:note-01", }, { id: "system-integrations", to: "/system/integrations", label: navigationMessages["system-integrations"], - icon: CodeSquareIcon, + icon: "huge:code-square", items: [ { id: "system-integration-api-keys", to: "/system/integrations/api-keys", label: navigationMessages["system-integration-api-keys"], - icon: Key01Icon, + icon: "huge:key-01", }, { id: "system-integration-webhooks", to: "/system/integrations/webhooks", label: navigationMessages["system-integration-webhooks"], - icon: LinkCircleIcon, + icon: "huge:link-circle", }, ], }, @@ -563,25 +503,25 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "system-settings", to: "/system-configs", label: navigationMessages["system-settings"], - icon: Settings01Icon, + icon: "huge:settings-01", items: [ { id: "system-settings-store", to: "/system-configs/store", label: navigationMessages["system-settings-store"], - icon: Store01Icon, + icon: "huge:store-01", }, { id: "system-settings-payments", to: "/system-configs/payments", label: navigationMessages["system-settings-payments"], - icon: CreditCardIcon, + icon: "huge:credit-card", }, { id: "system-settings-shipping", to: "/system-configs/shipping", label: navigationMessages["system-settings-shipping"], - icon: DeliveryTruck01Icon, + icon: "huge:delivery-truck-01", }, ], }, @@ -589,7 +529,7 @@ export const primaryNavigationGroups: readonly NavigationGroup[] = [ id: "system-recycle-bin", to: "/system/recycle-bin", label: navigationMessages["system-recycle-bin"], - icon: Delete02Icon, + icon: "huge:delete-02", }, ], }, diff --git a/apps/web/src/data/notifications.ts b/apps/web/src/data/notifications.ts index c50b839..8427a61 100644 --- a/apps/web/src/data/notifications.ts +++ b/apps/web/src/data/notifications.ts @@ -1,9 +1,3 @@ -import { - DeliveryTruck01Icon, - Mail01Icon, - Message01Icon, - PackageIcon, -} from "@workspace/icons" import type { QueryFunctionContext } from "@tanstack/react-query" import type { Notification } from "@workspace/blocks/notifications" @@ -68,7 +62,7 @@ export const fallbackNotifications: readonly Notification[] = [ isRead: true, media: { kind: "icon", - icon: PackageIcon, + icon: "huge:package", tone: "warning", }, }, @@ -81,7 +75,7 @@ export const fallbackNotifications: readonly Notification[] = [ isRead: true, media: { kind: "icon", - icon: DeliveryTruck01Icon, + icon: "huge:delivery-truck-01", tone: "success", }, }, @@ -94,7 +88,7 @@ export const fallbackNotifications: readonly Notification[] = [ isRead: true, media: { kind: "icon", - icon: Message01Icon, + icon: "huge:message-01", tone: "info", }, }, @@ -106,7 +100,7 @@ export const fallbackNotifications: readonly Notification[] = [ isRead: true, media: { kind: "icon", - icon: Mail01Icon, + icon: "huge:mail-01", tone: "destructive", }, }, diff --git a/apps/web/src/i18n/app-language-switcher.tsx b/apps/web/src/i18n/app-language-switcher.tsx index 6b9caa8..4244c6a 100644 --- a/apps/web/src/i18n/app-language-switcher.tsx +++ b/apps/web/src/i18n/app-language-switcher.tsx @@ -1,4 +1,4 @@ -import { CN, US } from "country-flag-icons/react/1x1" +import { Icon } from "@icones/react" import { DropdownMenu, DropdownMenuContent, @@ -13,11 +13,6 @@ import { HeaderActionButton } from "@workspace/blocks/layout" import { appLocales, isAppLocale, type AppLocaleCountry } from "./app-locales" import { useAppLocale } from "./app-i18n-provider" -const localeFlags = { - CN, - US, -} satisfies Record - function LocaleFlag({ country, className, @@ -25,8 +20,6 @@ function LocaleFlag({ className?: string country: AppLocaleCountry }) { - const Flag = localeFlags[country] - return ( ) } diff --git a/apps/web/src/pages/login-page.tsx b/apps/web/src/pages/login-page.tsx index 9e63d6a..a2ee3d7 100644 --- a/apps/web/src/pages/login-page.tsx +++ b/apps/web/src/pages/login-page.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react" import { useMutation } from "@tanstack/react-query" import { Button } from "@workspace/ui/components/button" import { Input } from "@workspace/ui/components/input" -import { EyeIcon, EyeOffIcon } from "lucide-react" +import { EyeIcon, EyeOffIcon } from "@workspace/ui/components/icon" import { cn } from "@workspace/ui/lib/utils" import { ThemeToggleButton } from "@workspace/blocks/blocks/appearance" import { Logo } from "@/components/logo" diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 42fe940..b229a8e 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,5 +1,6 @@ import path from "path" import tailwindcss from "@tailwindcss/vite" +import { icones } from "@icones/vite" import { tanstackStart } from "@tanstack/react-start/plugin/vite" import { i18n } from "@workspace/i18n/vite" import react from "@vitejs/plugin-react" @@ -14,11 +15,9 @@ export default defineConfig({ "@": path.resolve(__dirname, "./src"), }, }, - optimizeDeps: { - include: ["use-sync-external-store/shim/with-selector"], - }, plugins: [ i18n(), + icones({ mode: "symbol", emitData: false }), tailwindcss(), tanstackStart({ router: { diff --git a/apps/web/vitest.config.ts b/apps/web/vitest.config.ts index e388757..14f482c 100644 --- a/apps/web/vitest.config.ts +++ b/apps/web/vitest.config.ts @@ -1,9 +1,10 @@ import path from "node:path" +import { icones } from "@icones/vite" import react from "@vitejs/plugin-react" import { defineConfig } from "vitest/config" export default defineConfig({ - plugins: [react()], + plugins: [icones({ mode: "symbol", emitData: false }), react()], resolve: { alias: { "@": path.resolve(__dirname, "./src"), diff --git a/bun.lock b/bun.lock index 0fef031..5e26030 100644 --- a/bun.lock +++ b/bun.lock @@ -17,7 +17,7 @@ "@base-ui/react": "^1.6.0", "@base-ui/utils": "^0.3.1", "@floating-ui/utils": "^0.2.12", - "@iconify/react": "^6.0.2", + "@icones/react": "^0.0.1", "@lingui/core": "^6", "@tanstack/react-form": "^1.33.2", "@tanstack/react-hotkeys": "^0.10.0", @@ -26,17 +26,16 @@ "@tanstack/react-start": "^1.168.32", "@workspace/blocks": "workspace:*", "@workspace/i18n": "workspace:*", - "@workspace/icons": "workspace:*", "@workspace/lexical": "workspace:*", + "@workspace/search": "workspace:*", "@workspace/ui": "workspace:*", - "country-flag-icons": "^1.6.20", - "lucide-react": "^1.27.0", "react": "^19.2.6", "react-day-picker": "^10.0.1", "react-dom": "^19.2.6", "sonner": "^2.0.7", }, "devDependencies": { + "@icones/vite": "^0.0.1", "@tailwindcss/vite": "^4", "@testing-library/react": "^16.3.2", "@types/node": "^24", @@ -50,6 +49,39 @@ "vitest": "^4.1.10", }, }, + "docs": { + "name": "docs", + "version": "0.0.0", + "dependencies": { + "@icones/react": "^0.0.1", + "@workspace/i18n": "workspace:*", + "@workspace/preferences": "workspace:*", + "@workspace/search": "workspace:*", + "@workspace/ui": "workspace:*", + "clsx": "^2.1.1", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "tailwind-merge": "^3.7.0", + }, + "devDependencies": { + "@babel/core": "^7.29.7", + "@icones/vite": "^0.0.1", + "@rolldown/plugin-babel": "^0.2.3", + "@tailwindcss/vite": "^4.3.3", + "@types/babel__core": "^7.20.5", + "@types/node": "^24.13.3", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.7", + "@vitejs/plugin-react": "^6.1.1", + "babel-plugin-react-compiler": "^1.0.0", + "oxlint": "^1.81.0", + "satteri": "^0.10.5", + "tailwindcss": "^4.3.3", + "typescript": "~6.0.2", + "vite": "^8.3.0", + "vite-plugin-satteri": "^0.3.5", + }, + }, "packages/blocks": { "name": "@workspace/blocks", "version": "0.0.0", @@ -57,16 +89,14 @@ "@base-ui/react": "^1.6.0", "@base-ui/utils": "^0.3.1", "@floating-ui/utils": "^0.2.12", + "@icones/react": "^0.0.1", "@lexical/react": "^0.48.0", "@tanstack/react-hotkeys": "^0.10.0", "@tanstack/react-query": "^5.101.4", "@tanstack/react-router": "^1.170.18", "@workspace/i18n": "workspace:*", - "@workspace/icons": "workspace:*", "@workspace/ui": "workspace:*", - "cmdk": "^1.1.1", "lexical": "^0.48.0", - "lucide-react": "^1.27.0", "react": "^19.2.6", "react-dom": "^19.2.6", }, @@ -91,9 +121,9 @@ "@lingui/core": "^6", "@lingui/react": "^6", "@vitejs/plugin-react": "^6", + "@workspace/ui": "workspace:*", "ansi-to-react": "^6.2.6", "cac": "^7.0.0", - "lucide-react": "^1.27.0", "open": "^11.0.0", "react": "^19.2.6", "react-dom": "^19.2.6", @@ -109,19 +139,6 @@ "vitest": "^4", }, }, - "packages/icons": { - "name": "@workspace/icons", - "version": "0.0.0", - "dependencies": { - "@hugeicons/core-free-icons": "^4.2.3", - "@hugeicons/react": "^1.1.9", - "react": "^19.2.6", - }, - "devDependencies": { - "@types/react": "^19", - "typescript": "~6", - }, - }, "packages/lexical": { "name": "@workspace/lexical", "version": "0.0.0", @@ -137,7 +154,6 @@ "@workspace/i18n": "workspace:*", "@workspace/ui": "workspace:*", "lexical": "^0.48.0", - "lucide-react": "^1.27.0", "react": "^19.2.6", "react-dom": "^19.2.6", }, @@ -150,6 +166,42 @@ "vitest": "^4.1.10", }, }, + "packages/preferences": { + "name": "@workspace/preferences", + "version": "0.0.0", + "dependencies": { + "react": "^19.2.6", + }, + "devDependencies": { + "@testing-library/react": "^16.3.2", + "@types/react": "^19", + "@types/react-dom": "^19", + "jsdom": "^30.0.1", + "react-dom": "^19.2.6", + "typescript": "~6", + "vitest": "^4.1.10", + }, + }, + "packages/search": { + "name": "@workspace/search", + "version": "0.0.0", + "dependencies": { + "@tanstack/react-hotkeys": "^0.10.0", + "@workspace/i18n": "workspace:*", + "@workspace/ui": "workspace:*", + "cmdk": "^1.1.1", + "react": "^19.2.6", + }, + "devDependencies": { + "@testing-library/react": "^16.3.2", + "@types/react": "^19", + "@types/react-dom": "^19", + "jsdom": "^30.0.1", + "react-dom": "^19.2.6", + "typescript": "~6", + "vitest": "^4.1.10", + }, + }, "packages/ui": { "name": "@workspace/ui", "version": "0.0.0", @@ -157,6 +209,7 @@ "@base-ui/react": "^1.6.0", "@base-ui/utils": "^0.3.1", "@fontsource-variable/inter": "^5.3.0", + "@icones/react": "^0.0.1", "@shadcn/react": "^0.2.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -164,7 +217,6 @@ "date-fns": "^4.4.0", "embla-carousel-react": "^8.6.0", "input-otp": "^1.4.2", - "lucide-react": "^1.27.0", "react": "^19.2.6", "react-day-picker": "^10.0.1", "react-dom": "^19.2.6", @@ -186,6 +238,8 @@ }, }, "packages": { + "@antfu/install-pkg": ["@antfu/install-pkg@2.0.1", "", { "dependencies": { "package-manager-detector": "^1.7.0", "tinyexec": "^1.2.4" } }, "sha512-iCKVQcIC0e3oDxEfs3SHQGW+ovhBMZmS1TE+bTk50rVyMCBmCfClv7Qi3HQKlumYwvjb/iIMeWCW2i67q6kFfQ=="], + "@asamuzakjp/css-color": ["@asamuzakjp/css-color@6.0.5", "", { "dependencies": { "@csstools/css-calc": "^3.2.1", "@csstools/css-color-parser": "^4.1.9", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "lru-cache": "^11.5.2" } }, "sha512-mbhpPMmnw/kwW19aRNmSUl1QzLbdGo1SCuE49BT98MNwqF6zaHb3o2owssFc/PEO/4t2UjqtCNwocuDtJornzA=="], "@asamuzakjp/dom-selector": ["@asamuzakjp/dom-selector@8.3.0", "", { "dependencies": { "bidi-js": "^1.0.3", "css-tree": "^3.2.1", "is-potential-custom-element-name": "^1.0.1", "lru-cache": "^11.5.2" } }, "sha512-UJLfKXBhrc8i1vH2eJXuYQMwlsLKWFw3O+CPqXSuVEiikeAim3UgrfWX0k4tA/X8cRFM8iZ7OaqBokFGbYusdg=="], @@ -254,8 +308,42 @@ "@bramus/specificity": ["@bramus/specificity@2.4.2", "", { "dependencies": { "css-tree": "^3.0.0" }, "bin": { "specificity": "bin/cli.js" } }, "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw=="], + "@bruits/satteri-darwin-arm64": ["@bruits/satteri-darwin-arm64@0.10.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA=="], + + "@bruits/satteri-darwin-x64": ["@bruits/satteri-darwin-x64@0.10.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q=="], + + "@bruits/satteri-linux-arm64-gnu": ["@bruits/satteri-linux-arm64-gnu@0.10.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w=="], + + "@bruits/satteri-linux-arm64-musl": ["@bruits/satteri-linux-arm64-musl@0.10.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA=="], + + "@bruits/satteri-linux-x64-gnu": ["@bruits/satteri-linux-x64-gnu@0.10.5", "", { "os": "linux", "cpu": "x64" }, "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw=="], + + "@bruits/satteri-linux-x64-musl": ["@bruits/satteri-linux-x64-musl@0.10.5", "", { "os": "linux", "cpu": "x64" }, "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg=="], + + "@bruits/satteri-wasm32-wasi": ["@bruits/satteri-wasm32-wasi@0.10.5", "", { "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", "@napi-rs/wasm-runtime": "^1.2.3" }, "cpu": "none" }, "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw=="], + + "@bruits/satteri-win32-arm64-msvc": ["@bruits/satteri-win32-arm64-msvc@0.10.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw=="], + + "@bruits/satteri-win32-x64-msvc": ["@bruits/satteri-win32-x64-msvc@0.10.5", "", { "os": "win32", "cpu": "x64" }, "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ=="], + + "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], + + "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="], + + "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260908.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-t3juyCXFn12OklBL0S7UC98py3nLEmuioBOUOazeyeVsLUu8fv+pfJrR+XzwSH2Uh6rCXZNogRh+LtV0YpzMcQ=="], + + "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260908.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-I1nwA4qm/fUNSKhPSO76YA6JAhcA0KU63yFcYHN6AiDowGbDyfjDPH9KCVopT5rI1LY4GfbdAi5b9gODqZsAkQ=="], + + "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260908.1", "", { "os": "linux", "cpu": "x64" }, "sha512-s/h5uSW1UC6dGeVKSqrPLpTu+vo0fKJZCNEokW1Ol1qcCB2oN6WCRHhoyzo4Y69oONAXRgLfLBYaHWe7z51Vnw=="], + + "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260908.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-PP/nUKl0R6colwfocggL8dctO/dFMqMft12unzFUkoAJr0aXQeT+ia0JuNmOUWXe6EfvyCSmAbijEsTKQ5t/ew=="], + + "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260908.1", "", { "os": "win32", "cpu": "x64" }, "sha512-jkaS5EKKTvzAdIlbMfOYrHoTucWVRwYBwIig+xRsjXQv5BXTLA2Llg+iM8djlKtk0CjkztZhXmuxuqoqWKZmFw=="], + "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], + "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], + "@csstools/color-helpers": ["@csstools/color-helpers@6.1.0", "", {}, "sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg=="], "@csstools/css-calc": ["@csstools/css-calc@3.3.0", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ=="], @@ -358,14 +446,74 @@ "@hono/node-server": ["@hono/node-server@1.19.15", "", { "peerDependencies": { "hono": "^4" } }, "sha512-Za2ai6TLdKjUvnur+eenO6nuYYipVAEhyCAdaV8IRvmU9kK8crOZUSYvIXn72E4f8fJqyAbpcJuTsYYmZp9Deg=="], - "@hugeicons/core-free-icons": ["@hugeicons/core-free-icons@4.2.3", "", {}, "sha512-fpiU0qFZkv4ABi23xJ2m4qNr0BBfuIaYjPboN8WDA6aj9D+OzXa7eykxKOpACZRuGbDz1U9S5DsNx1d5KNnsgA=="], + "@icones/core": ["@icones/core@0.0.1", "", { "dependencies": { "@icones/names": "^0.0.1" } }, "sha512-75LHdh7YxW+55sIU56vQx6LO+0PFUk3XU8mf4kchgP7r9HtSlMIZomCBIQ3dytZllKGDOvSbJlcHJ59fIGJpbQ=="], - "@hugeicons/react": ["@hugeicons/react@1.1.9", "", { "peerDependencies": { "react": ">=16.0.0" } }, "sha512-O+lWSWjbijoAvMCxn4K2bQWCGN5+mP1y5j+X99j23mXMj+s0X25fs71T6t9YJLaBodwmZdaewD27dzS/PiboQw=="], + "@icones/icons": ["@icones/icons@0.0.1", "", {}, "sha512-5krQCp13yYEsyUY/kshQNqmcuIiIBUHU9BkSoIc68IG7AOym29ocw5pilHftu+OX1il5BhyusuYVR3qTwyH8Ug=="], - "@iconify/react": ["@iconify/react@6.0.2", "", { "dependencies": { "@iconify/types": "^2.0.0" }, "peerDependencies": { "react": ">=16" } }, "sha512-SMmC2sactfpJD427WJEDN6PMyznTFMhByK9yLW0gOTtnjzzbsi/Ke/XqsumsavFPwNiXs8jSiYeZTmLCLwO+Fg=="], + "@icones/names": ["@icones/names@0.0.1", "", {}, "sha512-Vl/e1pmZv5PPbRTDE8fd39m0ohpx2vJSEGH8stkk425cmQFFbGhmXhhip/Q1MJ3kx4ZWgww5MrV7fzrHtdEvAw=="], + + "@icones/react": ["@icones/react@0.0.1", "", { "dependencies": { "@icones/core": "^0.0.1" }, "peerDependencies": { "react": "^18.2.0 || ^19.0.0" } }, "sha512-80hN0gf6ozcL8oMUfjZIVLfxegatSOzU2jdmJuzAz6Zq2VIwJHOogi4EfKVJnyq7sWHt4MQr1R0XQrYldK/fFg=="], + + "@icones/vite": ["@icones/vite@0.0.1", "", { "dependencies": { "@icones/core": "^0.0.1", "@icones/icons": "^0.0.1", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.7", "parse5": "^8.0.1", "saxes": "^6.0.0" }, "peerDependencies": { "vite": "^8.0.0" } }, "sha512-QLzjlZm79awfLTdt+p/mvQEKY6fB1QB1nyRUfUNoAq5ukolEmKAfbmANq5z3gR/FKk1wWHABMcK7LICzVIUkIA=="], "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + "@iconify/utils": ["@iconify/utils@3.1.7", "", { "dependencies": { "@antfu/install-pkg": "^2.0.1", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w=="], + + "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.3.1" }, "os": "darwin", "cpu": "arm64" }, "sha512-eEieHsMksAW4IiO5NzauESRl2D2qz3J/kwUxUrSfV06A93eEaRfMpHXyUb1mAqrR7i8U9A0GRqE9pjn6u1Jjpg=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.3.1" }, "os": "darwin", "cpu": "x64" }, "sha512-BaktuGPCeHJMARpodR8jK4uKiZrPAy9WrfQW0sdI37clracq8Bp01AYS3SZgi5FS/y5twa9t4+LIuuxQjqRrWw=="], + + "@img/sharp-freebsd-wasm32": ["@img/sharp-freebsd-wasm32@0.35.2", "", { "dependencies": { "@img/sharp-wasm32": "0.35.2" }, "os": "freebsd" }, "sha512-YoAxdnd8hPUkvLHd3bWY+YA8nw3xM/RyRopYucNsWHVSan8NLVM3X2volsfoRDcXdUJPg6tXahSd7HXPK7lRnw=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.3.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4V/M3roRMTYjiwZY9IOVQOE8OyeCxFAkYmyZDrZl51uOKjibm3oeEJ4WAmLxutAfzFbC9jqUiPs2gbnGflH+7g=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.3.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-c0/DxItpJv2+dGhgycJBBgotdqruGYDvA79drdh0MD1dFpy7JzJ/PlXwi1H4rFf0eTy8tgbI91aHDnZIceY3jQ=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.3.1", "", { "os": "linux", "cpu": "arm" }, "sha512-aGGy9aWzXgHBG7HNyQPWorZthlp7+x6fDRoPAQbGO3ThcttuTyKIx3NuSHb6zb4gBNq6/yNn9f1cy9nFKS/Vmg=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-JznefmcK9j1JKPz8AkQDh89kjojubyfOasWBPKfzMIhPwsgDy9evpE/naJTXXXmghS1iFwR8u/kTwh/I2/+GCw=="], + + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.3.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1EkwGNCZk6iWNCMWqrvdJ+r1j0PT1zIz60CNPhYnJlK/zyeWqlsPZIe+ocBVqPF8k/Ssee/NCk+tE9Ryrko6ng=="], + + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.3.1", "", { "os": "linux", "cpu": "none" }, "sha512-Ilays+w2bXdnxzxtQdmXR62u8o8GYa3eL4+Gr+1KiE4xperMZUslRaVPJwwPkzlHEjGfXAfRVAa/7CYCtSqsBw=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.3.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-VfBwVHQTbRoj4XlpA/KLZ7ltgMpz+4WSejFzQ+GnoImjo1PtEJ59QB2qR1xQEeRPYIkNrPIm2L4cICMvz4C2ew=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-+c8ukgwU62DS54nCAjw7keOfHUkmr0B5QHEdcOqRnodF/MNXJbVI8Eopoj4B/0H8Asr65I+A4Amrn7a85/md6A=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-qlKb/pwbkAi1WMsJrYHk7CuDrd12s27U2QnRhFYUoJNrRCmkosMTttuRFat/DDB3IlDm5qE1TJgZ4JDnHX8Ldw=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-yO21HwoUVLN8Qa+/SBjQLMYwBWAVJjeGPNe+hc0OUeMeifEtJqu5a1c4HayE1nNpDih9y3/KkoltfkDodmKAlg=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.3.1" }, "os": "linux", "cpu": "arm" }, "sha512-SE4kzF2mepn6z+6E7L6lsV8FzuLL6IPQdyX8ZiwROAG/G8td+hP/m7FsFPwidtrF19gvajuC9l6TxAVcsA4S7A=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.3.1" }, "os": "linux", "cpu": "arm64" }, "sha512-af12Pnd0ZGu2HfP8NayB0kk6eC/lrfbQE6HlR4jD+34wdJ1Vw9TF6TMn6ZvffT+WgqVsl0hRbmNvz2u/23VmwA=="], + + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.3.1" }, "os": "linux", "cpu": "ppc64" }, "sha512-hYSBm7zcNtDCozCxQHYZJiu63b/bXsgRZuOxCIBZsStMM9Vap47iFHdbX4kCvQsblPB/k+clhELpdQJHQLSHvg=="], + + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.3.1" }, "os": "linux", "cpu": "none" }, "sha512-qQt0Kc13+Hoan/Awq/qMSQw3L+RI1NCRPgD5cUJ/1WSSmIoysLOc72jlRM3E0OHN9Yr313jgeQ2T+zW+F03QFA=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.3.1" }, "os": "linux", "cpu": "s390x" }, "sha512-E4fLLfRPzDLlEeDaTzI98OFLcv++WL5ChLLMwPoVd0CIoZQqupBSNbOisPL5am9XsbQ9T84+iiMpUvbFtkunbA=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.3.1" }, "os": "linux", "cpu": "x64" }, "sha512-gi0zFJJRLswfCZmHtJdikXPOc5u7qamSOS3NHedLqLd4W8Q0NqjdBr6TTRIgsfFjqfTsHFgdfvJ9LwqSgcHiAA=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.3.1" }, "os": "linux", "cpu": "arm64" }, "sha512-siWbOW1u6HFnFLrp0waKyW7VEf7jYvcDWdrXEFa8AkdAQgEvuu5Fz8/Y70w9EeqAdwDtfU012BhEHHaDqvQNzg=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.35.2", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.3.1" }, "os": "linux", "cpu": "x64" }, "sha512-YBqMMcjDi4QGYiSn4vNOYBhmlC4z5AXqkOUUqI2e0AFA4urNv4ESgOgwNl3K+4etQhha0twXlzeF20bbULm9Yg=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.2", "", { "dependencies": { "@emnapi/runtime": "^1.11.1" } }, "sha512-Mrv4JQNYVQ94xH+jzZ9r+gowleN8mv2FTgKT+PI6bx5C0G8TdNYndu161pg2i7uoBwxy2ImPMHrJOM2LZef7Bw=="], + + "@img/sharp-webcontainers-wasm32": ["@img/sharp-webcontainers-wasm32@0.35.2", "", { "dependencies": { "@img/sharp-wasm32": "0.35.2" }, "cpu": "none" }, "sha512-QNV27pxs9wpApEiCfvHM1RDoP1w1+2KrUWWDPEhEwg+latvOrfuhWrHWZKwdSFwU6jh3myjw/yOCRsUIuOft3g=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.35.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-BiVRYc/t6/Vl3e1hBx0hugG4oN9Pydf4fgMSpxTQJmwGUg/YoXTWHiFeRymHfCZzifxu4F4rpk/I67D0LQ20wQ=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.35.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-YYEhx9PImCC7T0tI8JDMi4DB9LwLCXCU5OWNYEXAxh5Q1ShKkyC6byxzoBJ3gEFDnH2lQckWuDe70G7mB2XJog=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.35.2", "", { "os": "win32", "cpu": "x64" }, "sha512-imoOyBcoM/iiUr4J6VPpCNjPnjvP/Gks95898yB8YqoGGYmHYbOyCuNv9FMhFgtaiHFGbHW8bxKqRV6VjtXThQ=="], + "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], "@jest/types": ["@jest/types@29.6.3", "", { "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="], @@ -450,7 +598,7 @@ "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.6", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -544,6 +692,12 @@ "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.76.0", "", { "os": "win32", "cpu": "x64" }, "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA=="], + "@poppinss/colors": ["@poppinss/colors@4.1.6", "", { "dependencies": { "kleur": "^4.1.5" } }, "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg=="], + + "@poppinss/dumper": ["@poppinss/dumper@0.6.5", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@sindresorhus/is": "^7.0.2", "supports-color": "^10.0.0" } }, "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw=="], + + "@poppinss/exception": ["@poppinss/exception@1.2.3", "", {}, "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw=="], + "@preact/signals-core": ["@preact/signals-core@1.14.4", "", {}, "sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA=="], "@radix-ui/primitive": ["@radix-ui/primitive@1.1.7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="], @@ -580,6 +734,8 @@ "@reduxjs/toolkit": ["@reduxjs/toolkit@2.12.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw=="], + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.7", "", { "os": "android", "cpu": "arm" }, "sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.1.5", "", { "os": "android", "cpu": "arm64" }, "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ=="], "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.1.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw=="], @@ -610,6 +766,8 @@ "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.1.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA=="], + "@rolldown/plugin-babel": ["@rolldown/plugin-babel@0.2.4", "", { "dependencies": { "picomatch": "^4.0.7" }, "peerDependencies": { "@babel/core": "^7.29.0 || ^8.0.0-rc.1", "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1", "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1", "rolldown": "^1.0.0-rc.5", "vite": "^8.0.0" }, "optionalPeers": ["@babel/plugin-transform-runtime", "@babel/runtime", "vite"] }, "sha512-ygmm2j/mN+aCvstHo0x3IOu4uc6LqXT9SJ3q4kpfG/+Yhfz0B+E47FITcC0FljZADwUFARP6E2kiE+Lc26D8wg=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], @@ -618,8 +776,12 @@ "@sinclair/typebox": ["@sinclair/typebox@0.27.12", "", {}, "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g=="], + "@sindresorhus/is": ["@sindresorhus/is@7.2.0", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="], + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], + "@speed-highlight/core": ["@speed-highlight/core@1.2.24", "", {}, "sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw=="], + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], @@ -716,6 +878,14 @@ "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], @@ -740,20 +910,28 @@ "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + + "@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + "@types/istanbul-lib-coverage": ["@types/istanbul-lib-coverage@2.0.6", "", {}, "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="], "@types/istanbul-lib-report": ["@types/istanbul-lib-report@3.0.3", "", { "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="], "@types/istanbul-reports": ["@types/istanbul-reports@3.0.4", "", { "dependencies": { "@types/istanbul-lib-report": "*" } }, "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="], + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + "@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="], - "@types/react": ["@types/react@19.2.17", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="], + "@types/react": ["@types/react@19.2.18", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w=="], - "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + "@types/react-dom": ["@types/react-dom@19.3.0", "", { "peerDependencies": { "@types/react": "^19.3.0" } }, "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q=="], "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], "@types/validate-npm-package-name": ["@types/validate-npm-package-name@4.0.2", "", {}, "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw=="], @@ -768,7 +946,7 @@ "@vitejs/devtools-kit": ["@vitejs/devtools-kit@0.4.9", "", { "dependencies": { "@devframes/hub": "^0.7.14", "@devframes/json-render": "^0.7.14", "devframe": "^0.7.14", "local-pkg": "^1.2.1", "mlly": "^1.8.2", "nostics": "^1.2.0", "nypm": "^0.6.8" }, "peerDependencies": { "vite": "*" } }, "sha512-uI1Gk4rfc6qCAK+5m5o3d5HCNVPpnGYi+RlGnLuWn6j9XNcvuP1MiZrgEMyXvpbQHEN3N4mcfUswIPc8XnBvsg=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.4", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], "@vitest/expect": ["@vitest/expect@4.1.10", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA=="], @@ -806,10 +984,12 @@ "@workspace/i18n": ["@workspace/i18n@workspace:packages/i18n"], - "@workspace/icons": ["@workspace/icons@workspace:packages/icons"], - "@workspace/lexical": ["@workspace/lexical@workspace:packages/lexical"], + "@workspace/preferences": ["@workspace/preferences@workspace:packages/preferences"], + + "@workspace/search": ["@workspace/search@workspace:packages/search"], + "@workspace/ui": ["@workspace/ui@workspace:packages/ui"], "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], @@ -846,6 +1026,8 @@ "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.12", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig=="], + "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], + "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], "baseline-browser-mapping": ["baseline-browser-mapping@2.11.4", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ=="], @@ -854,6 +1036,8 @@ "birpc": ["birpc@4.0.0", "", {}, "sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw=="], + "blake3-wasm": ["blake3-wasm@2.1.5", "", {}, "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g=="], + "body-parser": ["body-parser@2.3.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^2.0.0", "debug": "^4.4.3", "http-errors": "^2.0.1", "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", "qs": "^6.15.2", "raw-body": "^3.0.2", "type-is": "^2.1.0" } }, "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw=="], "brace-expansion": ["brace-expansion@5.0.8", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg=="], @@ -928,8 +1112,6 @@ "cosmiconfig": ["cosmiconfig@9.0.2", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg=="], - "country-flag-icons": ["country-flag-icons@1.6.20", "", {}, "sha512-py8JiEKzjhYw6HPJ0L7SxLgCYim36UPRTZX43/kqGueUCZLSvnrqAiwW8HtQibur7mdkFQUkjOgdK+o/9FBtaw=="], - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "crossws": ["crossws@0.4.10", "", { "peerDependencies": { "srvx": ">=0.11.5" }, "optionalPeers": ["srvx"] }, "sha512-pz3oubH/dt12KjqsUB0IuXW4nwRDQ583iDsP4555Cpdqx0NoU7pGlWBcayyFI8f/l/idRpgjMEfwuOxSWJYlIA=="], @@ -1000,6 +1182,8 @@ "diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="], + "docs": ["docs@workspace:docs"], + "dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], "dot-prop": ["dot-prop@6.0.1", "", { "dependencies": { "is-obj": "^2.0.0" } }, "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA=="], @@ -1034,6 +1218,8 @@ "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], + "error-stack-parser-es": ["error-stack-parser-es@1.0.5", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="], + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], @@ -1156,6 +1342,8 @@ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "input-otp": ["input-otp@1.4.2", "", { "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA=="], @@ -1242,29 +1430,29 @@ "lib0": ["lib0@0.2.117", "", { "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { "0serve": "bin/0serve.js", "0gentesthtml": "bin/gentesthtml.js", "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js" } }, "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw=="], - "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="], - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="], "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], @@ -1280,8 +1468,6 @@ "lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="], - "lucide-react": ["lucide-react@1.27.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-rJicGl/3Fly/E0rOH1YmPZ6e49JCnKknh1ox1vpHnkfjujAkKA6sqUZvH3MTAaXXjgexyUwgNwTJzTtYuAFYJw=="], - "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], @@ -1308,6 +1494,8 @@ "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], + "miniflare": ["miniflare@5.20260908.0-alpha", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.35.2", "undici": "7.29.0", "workerd": "1.20260908.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" } }, "sha512-BHIknb0u6vLIvb+R8PsUAzgoWWk3OlW85DrV2SG0EydfSpIba28YT0rH6xZThjnSwDxzNuW3FDRNSWvbiI/DVw=="], + "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], @@ -1320,7 +1508,7 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], @@ -1372,6 +1560,8 @@ "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], + "package-manager-detector": ["package-manager-detector@1.8.0", "", {}, "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A=="], + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], @@ -1388,7 +1578,7 @@ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], + "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -1406,7 +1596,7 @@ "pofile-ts": ["pofile-ts@4.0.3", "", {}, "sha512-sz1pnjgEfPyZ+QvaeX3NtCmbYnEvG01LZRLoN/uXoLtPZtxCIH5IctL7yXXc0fFyk/fqV6K8g3hlNfr6IJwupA=="], - "postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], + "postcss": ["postcss@8.5.28", "", { "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A=="], "postcss-selector-parser": ["postcss-selector-parser@7.1.4", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg=="], @@ -1486,6 +1676,8 @@ "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + "satteri": ["satteri@0.10.5", "", { "dependencies": { "@types/estree-jsx": "^1.0.5", "@types/hast": "^3.0.5", "@types/mdast": "^4.0.4", "@types/unist": "^3.0.3" }, "optionalDependencies": { "@bruits/satteri-darwin-arm64": "0.10.5", "@bruits/satteri-darwin-x64": "0.10.5", "@bruits/satteri-linux-arm64-gnu": "0.10.5", "@bruits/satteri-linux-arm64-musl": "0.10.5", "@bruits/satteri-linux-x64-gnu": "0.10.5", "@bruits/satteri-linux-x64-musl": "0.10.5", "@bruits/satteri-wasm32-wasi": "0.10.5", "@bruits/satteri-win32-arm64-msvc": "0.10.5", "@bruits/satteri-win32-x64-msvc": "0.10.5" } }, "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ=="], + "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], @@ -1504,6 +1696,8 @@ "shadcn": ["shadcn@4.15.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/plugin-transform-typescript": "^7.28.0", "@babel/preset-typescript": "^7.27.1", "@dotenvx/dotenvx": "^1.48.4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/validate-npm-package-name": "^4.0.2", "browserslist": "^4.26.2", "commander": "^14.0.0", "cosmiconfig": "^9.0.0", "dedent": "^1.6.0", "deepmerge": "^4.3.1", "diff": "^8.0.2", "execa": "^9.6.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.1", "fuzzysort": "^3.1.0", "kleur": "^4.1.5", "open": "^11.0.0", "ora": "^8.2.0", "postcss": "^8.5.6", "postcss-selector-parser": "^7.1.0", "prompts": "^2.4.2", "recast": "^0.23.11", "stringify-object": "^5.0.0", "tailwind-merge": "^3.0.1", "ts-morph": "^26.0.0", "tsconfig-paths": "^4.2.0", "undici": "^7.27.2", "validate-npm-package-name": "^7.0.1", "zod": "^3.24.1", "zod-to-json-schema": "^3.24.6" }, "bin": { "shadcn": "dist/index.js" } }, "sha512-fFTpfOuRwqjpXGp/sKpAxJkjdgv1jf8bDrW1xi0cVn2k7WJ5ijV/gjkAlkAidGDjhEkgcUuxVdm4oRB9r8BivA=="], + "sharp": ["sharp@0.35.2", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.4" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.2", "@img/sharp-darwin-x64": "0.35.2", "@img/sharp-freebsd-wasm32": "0.35.2", "@img/sharp-libvips-darwin-arm64": "1.3.1", "@img/sharp-libvips-darwin-x64": "1.3.1", "@img/sharp-libvips-linux-arm": "1.3.1", "@img/sharp-libvips-linux-arm64": "1.3.1", "@img/sharp-libvips-linux-ppc64": "1.3.1", "@img/sharp-libvips-linux-riscv64": "1.3.1", "@img/sharp-libvips-linux-s390x": "1.3.1", "@img/sharp-libvips-linux-x64": "1.3.1", "@img/sharp-libvips-linuxmusl-arm64": "1.3.1", "@img/sharp-libvips-linuxmusl-x64": "1.3.1", "@img/sharp-linux-arm": "0.35.2", "@img/sharp-linux-arm64": "0.35.2", "@img/sharp-linux-ppc64": "0.35.2", "@img/sharp-linux-riscv64": "0.35.2", "@img/sharp-linux-s390x": "0.35.2", "@img/sharp-linux-x64": "0.35.2", "@img/sharp-linuxmusl-arm64": "0.35.2", "@img/sharp-linuxmusl-x64": "0.35.2", "@img/sharp-webcontainers-wasm32": "0.35.2", "@img/sharp-win32-arm64": "0.35.2", "@img/sharp-win32-ia32": "0.35.2", "@img/sharp-win32-x64": "0.35.2" } }, "sha512-FVtFjtBCMiJS6yb5CX7Sop45WFMpeGw6oRKuJnXYgf/f1ms/D7LE/ZUSNxnW7rZ/dbslQWYkoqFHGPaDBtaK4w=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], @@ -1522,6 +1716,8 @@ "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + "smol-toml": ["smol-toml@1.8.0", "", {}, "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ=="], + "sonner": ["sonner@2.0.7", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w=="], "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], @@ -1556,7 +1752,7 @@ "tabbable": ["tabbable@6.5.0", "", {}, "sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA=="], - "tailwind-merge": ["tailwind-merge@3.6.0", "", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], + "tailwind-merge": ["tailwind-merge@3.7.0", "", {}, "sha512-XPPUyAc+cvspz3lHTcR/QgPfW2A0lv/xQNIjX3HGhLR+Nq2lHaLq5MtTesHn8GUr3W3DguT2KT5x3NVgRtYwmA=="], "tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="], @@ -1636,7 +1832,9 @@ "victory-vendor": ["victory-vendor@37.3.6", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ=="], - "vite": ["vite@8.1.5", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.17", "rolldown": "~1.1.5", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw=="], + "vite": ["vite@8.3.0", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", "postcss": "^8.5.28", "rolldown": "~1.2.6", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ=="], + + "vite-plugin-satteri": ["vite-plugin-satteri@0.3.5", "", { "dependencies": { "smol-toml": "^1.6.1", "yaml": "^2.6.0" }, "peerDependencies": { "satteri": ">=0.10.0", "vite": "^5 || ^6 || ^7 || ^8" } }, "sha512-X41QiFHwlkfcnNE+nOIe6tCeE32M6BKyVN00Wd7irp94lsOmIqXyNtF+lLc2oPIxno0qlVjSyNNPMIZJDghtJQ=="], "vitefu": ["vitefu@1.1.3", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["vite"] }, "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg=="], @@ -1660,8 +1858,14 @@ "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + "workerd": ["workerd@1.20260908.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260908.1", "@cloudflare/workerd-darwin-arm64": "1.20260908.1", "@cloudflare/workerd-linux-64": "1.20260908.1", "@cloudflare/workerd-linux-arm64": "1.20260908.1", "@cloudflare/workerd-windows-64": "1.20260908.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-rYhpW6NWHD++p34ej+VXWzi5Pdnmd7ncdbB/ux4s+i3mf7IeOpW3O4roqClQ+Z8ernvyMCknBLCb76z1rA+a7Q=="], + + "wrangler": ["wrangler@4.130.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "5.20260908.0-alpha", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260908.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260908.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-fzNjnTzyZl31PGJOFXbiLeZqEIToQ9KOzkkvGdQz4wlB+BoHnl3BRwCR5xg8AqYyzVunvvMHlMzvlbThQ7rrAA=="], + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + "wsl-utils": ["wsl-utils@0.3.1", "", { "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" } }, "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg=="], "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], @@ -1672,12 +1876,18 @@ "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "yaml": ["yaml@2.9.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw=="], + "yjs": ["yjs@13.6.31", "", { "dependencies": { "lib0": "^0.2.99" } }, "sha512-Eq+5BRfbeGyqGVrTJL3bEcr8gKkxPuyuoHmAwpk52fDb8kOVMrfVSTRPd6yiGgX5Fskb96qCRjzjbRjrL4YEnw=="], "yocto-spinner": ["yocto-spinner@1.2.2", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-DODGl1wJjA/s5pnJFKau9lIYHT81lnhob1i3e1TjxZRxEhWRKl74nTbWE6H5KlkViQQTo/Z29YFdxzTZAMY3ng=="], "yoctocolors": ["yoctocolors@2.2.0", "", {}, "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg=="], + "youch": ["youch@4.1.0-beta.10", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.3" } }, "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ=="], + + "youch-core": ["youch-core@0.3.3", "", { "dependencies": { "@poppinss/exception": "^1.2.2", "error-stack-parser-es": "^1.0.5" } }, "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA=="], + "zigpty": ["zigpty@0.2.1", "", {}, "sha512-MR9JqJx2wf5f4wz8zpx050AlqrmWeIW+1h0SO5iEyhG3HFRjY5luC3szS2ux2EGuPjE5OU9ZAuiCBeMWBTrqZw=="], "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], @@ -1686,6 +1896,8 @@ "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + "@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], + "@dotenvx/dotenvx/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], "@dotenvx/dotenvx/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], @@ -1694,10 +1906,20 @@ "@dotenvx/dotenvx/undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], + "@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], + "@jest/types/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], + "@reduxjs/toolkit/immer": ["immer@11.1.15", "", {}, "sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ=="], + "@rolldown/binding-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.6", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg=="], + + "@rolldown/plugin-babel/picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], + + "@tailwindcss/node/lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], @@ -1714,12 +1936,16 @@ "@tanstack/start-plugin-core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@tanstack/start-plugin-core/lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + "@vue/compiler-core/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "@vue/compiler-sfc/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], + "body-parser/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], "conf/ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], @@ -1732,6 +1958,8 @@ "data-urls/whatwg-url": ["whatwg-url@16.0.1", "", { "dependencies": { "@exodus/bytes": "^1.11.0", "tr46": "^6.0.0", "webidl-conversions": "^8.0.1" } }, "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw=="], + "docs/oxlint": ["oxlint@1.83.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.83.0", "@oxlint/binding-android-arm64": "1.83.0", "@oxlint/binding-darwin-arm64": "1.83.0", "@oxlint/binding-darwin-x64": "1.83.0", "@oxlint/binding-freebsd-x64": "1.83.0", "@oxlint/binding-linux-arm-gnueabihf": "1.83.0", "@oxlint/binding-linux-arm-musleabihf": "1.83.0", "@oxlint/binding-linux-arm64-gnu": "1.83.0", "@oxlint/binding-linux-arm64-musl": "1.83.0", "@oxlint/binding-linux-ppc64-gnu": "1.83.0", "@oxlint/binding-linux-riscv64-gnu": "1.83.0", "@oxlint/binding-linux-riscv64-musl": "1.83.0", "@oxlint/binding-linux-s390x-gnu": "1.83.0", "@oxlint/binding-linux-x64-gnu": "1.83.0", "@oxlint/binding-linux-x64-musl": "1.83.0", "@oxlint/binding-openharmony-arm64": "1.83.0", "@oxlint/binding-win32-arm64-msvc": "1.83.0", "@oxlint/binding-win32-ia32-msvc": "1.83.0", "@oxlint/binding-win32-x64-msvc": "1.83.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", "vite-plus": "*" }, "optionalPeers": ["oxlint-tsgolint", "vite-plus"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-cyDzSzaw3uzP0TeCeq3lLRPPoaUxkbB4ZOXj+kn+5r+BX9V+4bNVGk9lxer+WrgcpebH4JxLlJ3KQjveVztOLQ=="], + "dot-prop/is-obj": ["is-obj@2.0.0", "", {}, "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="], "enquirer/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -1742,6 +1970,8 @@ "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "miniflare/undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], + "mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], @@ -1762,18 +1992,34 @@ "restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], + "router/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], + "shadcn/ora": ["ora@8.2.0", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", "stdin-discarder": "^0.2.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="], + "shadcn/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], + + "shadcn/tailwind-merge": ["tailwind-merge@3.6.0", "", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], + "shadcn/undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], "shadcn/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], + "string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "type-is/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + "vite/picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], + + "vite/rolldown": ["rolldown@1.2.7", "", { "dependencies": { "@oxc-project/types": "=0.148.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.7", "@rolldown/binding-android-arm64": "1.2.7", "@rolldown/binding-darwin-arm64": "1.2.7", "@rolldown/binding-darwin-x64": "1.2.7", "@rolldown/binding-freebsd-x64": "1.2.7", "@rolldown/binding-linux-arm-gnueabihf": "1.2.7", "@rolldown/binding-linux-arm64-gnu": "1.2.7", "@rolldown/binding-linux-arm64-musl": "1.2.7", "@rolldown/binding-linux-ppc64-gnu": "1.2.7", "@rolldown/binding-linux-s390x-gnu": "1.2.7", "@rolldown/binding-linux-x64-gnu": "1.2.7", "@rolldown/binding-linux-x64-musl": "1.2.7", "@rolldown/binding-openharmony-arm64": "1.2.7", "@rolldown/binding-win32-arm64-msvc": "1.2.7", "@rolldown/binding-win32-x64-msvc": "1.2.7" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig=="], + + "vitest/vite": ["vite@8.1.5", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.17", "rolldown": "~1.1.5", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw=="], + + "youch/cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], + "@dotenvx/dotenvx/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "@dotenvx/dotenvx/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], @@ -1794,10 +2040,94 @@ "@jest/types/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@tailwindcss/node/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + "@tanstack/react-router/@tanstack/react-store/@tanstack/store": ["@tanstack/store@0.9.3", "", {}, "sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw=="], + "@tanstack/start-plugin-core/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "@tanstack/start-plugin-core/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + + "@vue/compiler-sfc/postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], + "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "docs/oxlint/@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.83.0", "", { "os": "android", "cpu": "arm" }, "sha512-0yGY24EwsLk5YDe6F+VkmZyRHSwJDALa3nIrPpq7FXmp2lV2d0TzvBCGeZk+wgiULRGr5blhyr4QMp5KCXJUqA=="], + + "docs/oxlint/@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.83.0", "", { "os": "android", "cpu": "arm64" }, "sha512-hHfJ0vc17A4iUjH5p9BsTUPYbYRNxGpvD2lbu1aBRk54bzNIx9o5TtYF39QPZcV95DagZd+4DEAw2RH3G2ZsMg=="], + + "docs/oxlint/@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.83.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hsOjYjszLb/3zym/TkzUMPAoQlTJcuzSyEPOAyA+skXJIX9M0o+4JfOtqopX/Vf4hSLrJ98j0nvFo23gzk8auQ=="], + + "docs/oxlint/@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.83.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-mjh5oH2EA+wl5yRJYT9K9G61O2zFlpuv+yf2JwZOi0+dq2FnTUtm1h8i+5Ik0fXPWIu/k84I1psZR9aQsLAnyA=="], + + "docs/oxlint/@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.83.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fNHr64/YaO8YssuoDVC8+F4Uk5enR86q5uxfHkQrjAPs1dbAILOrD2uaud+J7MO8Fx774g44ERLD0IGIvZE48w=="], + + "docs/oxlint/@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.83.0", "", { "os": "linux", "cpu": "arm" }, "sha512-Qpwy3zzAwMj+8/lyYItHmkSMwbkprFNWTK7jPYDOxSyxEhaSLOWYUTCMkjF334J8/WD0nznCCsoBbIH6hpsuIw=="], + + "docs/oxlint/@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.83.0", "", { "os": "linux", "cpu": "arm" }, "sha512-s+BirYLFq7JL2k9sP0XI3ZXJ9dYvJ8sX3jLCLoag7tt+zrSHpZxP0jqznfL+Gdgwu7ay0dYgGYJXrQvq3iWloA=="], + + "docs/oxlint/@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.83.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-7lihXt3vKr+GIyapNbHrnFHm/biiW30le6Zv/DExbAFPF6YwCQXVFlONPFehxs0CpGO4CBfYPM9rdDT+XMoIlg=="], + + "docs/oxlint/@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.83.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-q63JalLYVkZiZvls1z3PPUnpmQluOMXp0khqQMznCeAPLGydfNY8JhvuA4WlK57JfrvikU8wB5lPVveqpIXvew=="], + + "docs/oxlint/@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.83.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-krQmDF+dRbxvdqVPV88ZuOoPPu8X5BuqDA8Hd+qcS4YMRQCb+nexA57DazgGsc/rGdKBe3QmV0mnv0bdpW/p5g=="], + + "docs/oxlint/@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.83.0", "", { "os": "linux", "cpu": "none" }, "sha512-MmOl8Y6txEAXZU1RG8Rr264jQ6D7VPmqFsU/45x/FeWsGe32hklTqGrLE6UxHzp5Rjt0wP+20tY8YXKgSFB3mw=="], + + "docs/oxlint/@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.83.0", "", { "os": "linux", "cpu": "none" }, "sha512-u1rMymh0W3JZkq370kzQsYPULGWqhE09pZRqnZvUSoYaI9pVO5yVX+iYIslmWuEgwuzH9YAaOsScJiobWCHoOw=="], + + "docs/oxlint/@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.83.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-y0zK3HNwGysu7rqtE+BQG/d0bx5gh/KwlOtghN8oWeK1KcWzeaLqtZrbm8owqdma1lFyrce/hTO5ismuNu+INQ=="], + + "docs/oxlint/@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.83.0", "", { "os": "linux", "cpu": "x64" }, "sha512-rS5gM0NgD7ngmuJmbIehsidtrOwKkLFwCQbKEeb9KuyQrrWNq5Zkn0uV6AYdXOMJ0grrWEiLwBuvMxt8w5vsNw=="], + + "docs/oxlint/@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.83.0", "", { "os": "linux", "cpu": "x64" }, "sha512-W2IH4EtpcPaWcvNGCA95YoDg4vxqE/ZiPCi3arrxEEpsK7+JQN9WYwrlYFx9pcdP6KPXqRqkv3zdQPHcx7b6YQ=="], + + "docs/oxlint/@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.83.0", "", { "os": "none", "cpu": "arm64" }, "sha512-6LyKkUyoajssTPLlZmDbZIbu4IZ5B4bGuRUnBgCGpEvHP3FQMaYITncHA/unPUo7q+Z+pIu2HhdkQ+8d1SG7iA=="], + + "docs/oxlint/@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.83.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Uz/fObEtF0jmNJQJ8CGRBKfefYstS0/wjD3s6IGzP8nUwsJykHQJBiN3npHwKiGRGn/vvBEgNr4B3cCzmmatvg=="], + + "docs/oxlint/@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.83.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-u7XcvPW6Bk58tY5iWs2ESb0vJjoE/kuSpHxopbwp/p3ZtWVQXZ6wor5w3ssVTHOqd/v8b+QdhSFWQ4grEUNWpA=="], + + "docs/oxlint/@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.83.0", "", { "os": "win32", "cpu": "x64" }, "sha512-LZRubd7ph13QmAg4fFecTYVZkiYbROR2Htaxh/ufWRkDhPOm2wrwaEYR89e0YpPFD3dqBrPoxS7myBw5hmYA7Q=="], + "jest-validate/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "jest-validate/pretty-format/react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], @@ -1812,8 +2142,68 @@ "shadcn/ora/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + "shadcn/postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], + + "vite/rolldown/@oxc-project/types": ["@oxc-project/types@0.148.0", "", {}, "sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A=="], + + "vite/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.7", "", { "os": "android", "cpu": "arm64" }, "sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw=="], + + "vite/rolldown/@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw=="], + + "vite/rolldown/@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ=="], + + "vite/rolldown/@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA=="], + + "vite/rolldown/@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.7", "", { "os": "linux", "cpu": "arm" }, "sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ=="], + + "vite/rolldown/@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg=="], + + "vite/rolldown/@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q=="], + + "vite/rolldown/@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg=="], + + "vite/rolldown/@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw=="], + + "vite/rolldown/@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA=="], + + "vite/rolldown/@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw=="], + + "vite/rolldown/@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.7", "", { "os": "none", "cpu": "arm64" }, "sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w=="], + + "vite/rolldown/@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw=="], + + "vite/rolldown/@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.7", "", { "os": "win32", "cpu": "x64" }, "sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw=="], + + "vitest/vite/lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "vitest/vite/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], + "shadcn/ora/log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="], "shadcn/ora/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + + "vitest/vite/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "vitest/vite/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "vitest/vite/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "vitest/vite/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "vitest/vite/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "vitest/vite/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "vitest/vite/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "vitest/vite/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "vitest/vite/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "vitest/vite/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "vitest/vite/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + + "vitest/vite/postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], } } diff --git a/packages/blocks/package.json b/packages/blocks/package.json index fffdbab..43487bd 100644 --- a/packages/blocks/package.json +++ b/packages/blocks/package.json @@ -11,16 +11,14 @@ "@base-ui/react": "^1.6.0", "@base-ui/utils": "^0.3.1", "@floating-ui/utils": "^0.2.12", + "@icones/react": "^0.0.1", "@lexical/react": "^0.48.0", "@tanstack/react-hotkeys": "^0.10.0", "@tanstack/react-query": "^5.101.4", "@tanstack/react-router": "^1.170.18", - "@workspace/icons": "workspace:*", "@workspace/i18n": "workspace:*", "@workspace/ui": "workspace:*", - "cmdk": "^1.1.1", "lexical": "^0.48.0", - "lucide-react": "^1.27.0", "react": "^19.2.6", "react-dom": "^19.2.6" }, @@ -46,6 +44,7 @@ "./layout": "./src/blocks/layout/index.ts", "./layout/locales": "./src/blocks/layout/locales/catalogs.ts", "./layout/locales/*": "./src/blocks/layout/locales/*.ts", + "./layouts/vega": "./src/blocks/layouts/vega/index.tsx", "./media": "./src/blocks/media/index.ts", "./media/locales": "./src/blocks/media/locales/catalogs.ts", "./media/locales/*": "./src/blocks/media/locales/*.ts", @@ -54,9 +53,6 @@ "./navigation/locales/*": "./src/blocks/navigation/locales/*.ts", "./notifications": "./src/blocks/notifications/index.ts", "./notifications/locales": "./src/blocks/notifications/locales/catalogs.ts", - "./notifications/locales/*": "./src/blocks/notifications/locales/*.ts", - "./search": "./src/blocks/search/index.ts", - "./search/locales": "./src/blocks/search/locales/catalogs.ts", - "./search/locales/*": "./src/blocks/search/locales/*.ts" + "./notifications/locales/*": "./src/blocks/notifications/locales/*.ts" } -} +} \ No newline at end of file diff --git a/packages/blocks/src/blocks/appearance/preferences.tsx b/packages/blocks/src/blocks/appearance/preferences.tsx index cbccf63..88e3143 100644 --- a/packages/blocks/src/blocks/appearance/preferences.tsx +++ b/packages/blocks/src/blocks/appearance/preferences.tsx @@ -1,4 +1,4 @@ -import { MonitorIcon, MoonIcon, SunIcon } from "lucide-react" +import { MonitorIcon, MoonIcon, SunIcon } from "@workspace/ui/components/icon" import { LocalizedText, useMessage } from "@workspace/i18n" import { Select, diff --git a/packages/blocks/src/blocks/appearance/theme-config-panel.tsx b/packages/blocks/src/blocks/appearance/theme-config-panel.tsx index d4d09d9..2248509 100644 --- a/packages/blocks/src/blocks/appearance/theme-config-panel.tsx +++ b/packages/blocks/src/blocks/appearance/theme-config-panel.tsx @@ -1,4 +1,4 @@ -import { MoonIcon, SunIcon } from "lucide-react" +import { MoonIcon, SunIcon } from "@workspace/ui/components/icon" import { LocalizedText } from "@workspace/i18n" import { useUiState } from "./ui-state" import { Badge } from "@workspace/ui/components/badge" diff --git a/packages/blocks/src/blocks/appearance/theme-toggle-button.tsx b/packages/blocks/src/blocks/appearance/theme-toggle-button.tsx index 876b196..c4ba4b5 100644 --- a/packages/blocks/src/blocks/appearance/theme-toggle-button.tsx +++ b/packages/blocks/src/blocks/appearance/theme-toggle-button.tsx @@ -2,7 +2,7 @@ import React from "react" import { Button } from "@workspace/ui/components/button" import { useUiState } from "./ui-state" -import { Icon, Moon02Icon, Sun03Icon } from "@workspace/icons" +import { Icon } from "@icones/react" import { cn } from "@workspace/ui/lib/utils" type ThemeToggleButtonProps = Omit< @@ -50,7 +50,7 @@ export function ThemeToggleButton({ > ) diff --git a/packages/blocks/src/blocks/chats/chat-composer.tsx b/packages/blocks/src/blocks/chats/chat-composer.tsx index a36ad7c..0602389 100644 --- a/packages/blocks/src/blocks/chats/chat-composer.tsx +++ b/packages/blocks/src/blocks/chats/chat-composer.tsx @@ -27,7 +27,7 @@ import { SendHorizontalIcon, SmileIcon, XIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { customerServiceEmojiGroups, customerServiceEmojis } from "./emojis" import { chatMessages } from "./messages" diff --git a/packages/blocks/src/blocks/chats/chat-conversation-list.tsx b/packages/blocks/src/blocks/chats/chat-conversation-list.tsx index c7d9a82..837ae6c 100644 --- a/packages/blocks/src/blocks/chats/chat-conversation-list.tsx +++ b/packages/blocks/src/blocks/chats/chat-conversation-list.tsx @@ -6,7 +6,7 @@ import { } from "@workspace/ui/components/avatar" import { Input } from "@workspace/ui/components/input" import { cn } from "@workspace/ui/lib/utils" -import { SearchIcon } from "lucide-react" +import { SearchIcon } from "@workspace/ui/components/icon" import { chatMessages } from "./messages" import type { ChatConversation } from "./types" diff --git a/packages/blocks/src/blocks/chats/chat-message-list.tsx b/packages/blocks/src/blocks/chats/chat-message-list.tsx index 5769283..07c249b 100644 --- a/packages/blocks/src/blocks/chats/chat-message-list.tsx +++ b/packages/blocks/src/blocks/chats/chat-message-list.tsx @@ -34,7 +34,7 @@ import { ImageIcon, LinkIcon, MessageCircleIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { chatMessages } from "./messages" import type { diff --git a/packages/blocks/src/blocks/chats/chat-workspace.tsx b/packages/blocks/src/blocks/chats/chat-workspace.tsx index 29e86eb..0ff8985 100644 --- a/packages/blocks/src/blocks/chats/chat-workspace.tsx +++ b/packages/blocks/src/blocks/chats/chat-workspace.tsx @@ -10,7 +10,11 @@ import { } from "@workspace/ui/components/empty" import { useIsMobile } from "@workspace/ui/hooks/use-breakpoint" import { cn } from "@workspace/ui/lib/utils" -import { ArrowLeftIcon, InfoIcon, MessageCircleIcon } from "lucide-react" +import { + ArrowLeftIcon, + InfoIcon, + MessageCircleIcon, +} from "@workspace/ui/components/icon" import { ChatComposer } from "./chat-composer" import { diff --git a/packages/blocks/src/blocks/layout/app-breadcrumb.tsx b/packages/blocks/src/blocks/layout/app-breadcrumb.tsx index ef15d65..38ce23f 100644 --- a/packages/blocks/src/blocks/layout/app-breadcrumb.tsx +++ b/packages/blocks/src/blocks/layout/app-breadcrumb.tsx @@ -1,6 +1,6 @@ import { Link } from "@tanstack/react-router" import * as React from "react" -import { Icon } from "@workspace/icons" +import { Icon } from "@icones/react" import { useMessage } from "@workspace/i18n" import { Breadcrumb, @@ -102,24 +102,24 @@ function useVisibleEntryCount(entries: readonly BreadcrumbEntry[]) { const breadcrumb = breadcrumbRef.current const list = listRef.current - const measurement = measurementRef.current + const measurementElement = measurementRef.current - if (!breadcrumb || !list || !measurement) { + if (!breadcrumb || !list || !measurementElement) { return } const updateVisibleCount = () => { const entryWidths = Array.from( - measurement.querySelectorAll( + measurementElement.querySelectorAll( "[data-breadcrumb-measure-entry]" ) ).map((element) => element.getBoundingClientRect().width) const menuWidth = - measurement + measurementElement .querySelector("[data-breadcrumb-measure-menu]") ?.getBoundingClientRect().width ?? 0 const separatorWidth = - measurement + measurementElement .querySelector("[data-breadcrumb-measure-separator]") ?.getBoundingClientRect().width ?? 0 const listStyle = window.getComputedStyle(list) @@ -169,7 +169,7 @@ function useVisibleEntryCount(entries: readonly BreadcrumbEntry[]) { const observer = new ResizeObserver(updateVisibleCount) observer.observe(breadcrumb) - observer.observe(measurement) + observer.observe(measurementElement) return () => observer.disconnect() }, [entries, entriesKey, maximumVisibleCount]) @@ -190,7 +190,7 @@ function useVisibleEntryCount(entries: readonly BreadcrumbEntry[]) { function BreadcrumbEntryContent({ entry }: { entry: BreadcrumbEntry }) { return ( <> - {entry.icon && } + {entry.icon && } ) @@ -326,7 +326,7 @@ function BreadcrumbMenu({ entries }: { entries: readonly BreadcrumbEntry[] }) { const content = ( <> {entry.icon && ( - + )} @@ -409,7 +409,7 @@ export function AppBreadcrumb() { {item.entry.icon && ( )} @@ -440,7 +440,7 @@ export function AppBreadcrumb() { className="inline-flex items-center gap-1.5 font-normal" > {entry.icon && ( - + )} diff --git a/packages/blocks/src/blocks/layout/app-layout.tsx b/packages/blocks/src/blocks/layout/app-layout.tsx index e0ddc3c..5197c50 100644 --- a/packages/blocks/src/blocks/layout/app-layout.tsx +++ b/packages/blocks/src/blocks/layout/app-layout.tsx @@ -1,11 +1,10 @@ import * as React from "react" -import { ChevronLeftIcon, ChevronRightIcon, SearchIcon } from "lucide-react" import { - BellIcon, - Icon, - MessageMultiple01Icon, - Search01Icon, -} from "@workspace/icons" + ChevronLeftIcon, + ChevronRightIcon, + SearchIcon, +} from "@workspace/ui/components/icon" +import { Icon } from "@icones/react" import { Button } from "@workspace/ui/components/button" import { Kbd } from "@workspace/ui/components/kbd" import { useIsTablet } from "@workspace/ui/hooks/use-breakpoint" @@ -153,12 +152,14 @@ function AppHeader({ actions }: { actions?: React.ReactNode }) { {actions} } + render={ + + } /> } @@ -201,7 +202,7 @@ function GlobalSearchTrigger() { variant="secondary" > } diff --git a/packages/blocks/src/blocks/layout/header-action-button.tsx b/packages/blocks/src/blocks/layout/header-action-button.tsx index c5e1281..2205401 100644 --- a/packages/blocks/src/blocks/layout/header-action-button.tsx +++ b/packages/blocks/src/blocks/layout/header-action-button.tsx @@ -1,4 +1,4 @@ -import { Icon, type IconData } from "@workspace/icons" +import { Icon, type IconName } from "@icones/react" import { Button, type ButtonProps } from "@workspace/ui/components/button" import { cn } from "@workspace/ui/lib/utils" @@ -6,7 +6,7 @@ export const headerActionIconClassName = "transition-all transform origin-center group-hover/button:scale-105" type HeaderActionButtonProps = ButtonProps & { - icon?: IconData + icon?: IconName<"huge"> showIndicator?: boolean } @@ -20,7 +20,7 @@ export function HeaderActionButton({ return ( @@ -189,7 +182,7 @@ function UserMenuContent({ onItemSelect }: { onItemSelect: VoidFunction }) {
diff --git a/packages/blocks/src/blocks/layouts/vega/index.tsx b/packages/blocks/src/blocks/layouts/vega/index.tsx new file mode 100644 index 0000000..0510509 --- /dev/null +++ b/packages/blocks/src/blocks/layouts/vega/index.tsx @@ -0,0 +1,156 @@ +import { Icon } from "@icones/react"; +import { Button } from "@workspace/ui/components/button"; +import { cn } from "@workspace/ui/lib/utils"; +import React from "react"; + +type Props = { + children: React.ReactNode + className?: string +} + +/* + ++------------------+ +| header | ++-------+-+--------+ +| | | | +| aside | | main | +| | | | ++-------+-+--------+ + ^ + | + gap +*/ +export function Layout({ children, className }: Props) { + return ( +
+
+
+ header +
+
+
+
+ +
+
+ {children} +
+
+
+
+ ) +} + +const links = [ + { key: "inbox", label: "收件箱", icon: }, + { key: "starred", label: "已加星标", icon: }, + { key: "sent", label: "已发送", icon: }, + { key: "drafts", label: "草稿", icon: }, + { key: "deleted", label: "已删除", icon: }, + { key: "sent-mail", label: "已发邮件", icon: }, +] + +const groups = [ + { + key: "group-1", + label: "group 1", + items: [...links], + }, + { + key: "group-2", + label: "group 2", + items: [...links], + }, + ...links.slice(2, 4), +] + +type NavItem = { key: string; label: string; icon: React.ReactNode } +type NavGroup = { key: string; label: string; items: Array } +type NavItems = Array + +function isGroup(item: NavGroup | NavItem): item is NavGroup { + return (item as NavGroup).items !== undefined +} + +function Navigation({ items, className }: { items: NavItems; className?: string }) { + return ( +
    + {items.map((item, index) => { + if (isGroup(item)) { + const previousItem = index > 0 ? items[index - 1] : undefined + + return ( +
  • + {item.label} +
      + {item.items.map(subItem => ( +
    • + +
    • + ))} +
    +
  • + ); + } + + return ( +
  • + +
  • + ); + })} +
+ ) +} + +function NavigationItem({ label, icon, current }: { + label: string + icon: React.ReactNode + current: boolean +}) { + return ( + + ) +} diff --git a/packages/blocks/src/blocks/media/media-context-menu.tsx b/packages/blocks/src/blocks/media/media-context-menu.tsx index e981d74..fcb8981 100644 --- a/packages/blocks/src/blocks/media/media-context-menu.tsx +++ b/packages/blocks/src/blocks/media/media-context-menu.tsx @@ -11,7 +11,7 @@ import { PencilIcon, Trash2Icon, UploadIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { useTranslate } from "@workspace/i18n" import { ContextMenu, @@ -49,6 +49,10 @@ export interface MediaContextMenuProps { onUpload: (target: MediaStorageTarget) => void } +function runAfterClose(action: VoidFunction) { + window.setTimeout(action) +} + export function MediaContextMenu({ asset, children, @@ -73,8 +77,6 @@ export function MediaContextMenu({ const cloudTargets = storageTargets.filter( (target) => target.kind === "cloud" ) - const runAfterClose = (action: VoidFunction) => window.setTimeout(action) - const copy = async (text: string, successMessage: string) => { try { await navigator.clipboard.writeText(text) diff --git a/packages/blocks/src/blocks/media/media-detail.tsx b/packages/blocks/src/blocks/media/media-detail.tsx index a24bf31..906d244 100644 --- a/packages/blocks/src/blocks/media/media-detail.tsx +++ b/packages/blocks/src/blocks/media/media-detail.tsx @@ -5,7 +5,7 @@ import { HeartIcon, ImageIcon, Trash2Icon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { useTranslate } from "@workspace/i18n" import { Button } from "@workspace/ui/components/button" import { diff --git a/packages/blocks/src/blocks/media/media-grid.tsx b/packages/blocks/src/blocks/media/media-grid.tsx index f5d438d..5cab4a6 100644 --- a/packages/blocks/src/blocks/media/media-grid.tsx +++ b/packages/blocks/src/blocks/media/media-grid.tsx @@ -1,4 +1,4 @@ -import { CheckIcon, FilmIcon, HeartIcon } from "lucide-react" +import { CheckIcon, FilmIcon, HeartIcon } from "@workspace/ui/components/icon" import { useTranslate } from "@workspace/i18n" import { cn } from "@workspace/ui/lib/utils" diff --git a/packages/blocks/src/blocks/media/media-library.tsx b/packages/blocks/src/blocks/media/media-library.tsx index 87d53d3..45f7da7 100644 --- a/packages/blocks/src/blocks/media/media-library.tsx +++ b/packages/blocks/src/blocks/media/media-library.tsx @@ -7,7 +7,7 @@ import { LoaderCircleIcon, SearchIcon, UploadIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { useTranslate } from "@workspace/i18n" import { AlertDialog, @@ -57,7 +57,6 @@ import type { MediaStorageTarget, } from "./types" import { - defaultMediaReference, getMediaFolderPath, isMediaFile, mediaKindForFile, @@ -67,7 +66,6 @@ import { const PAGE_SIZE = 40 const EMPTY_ASSETS: readonly MediaAsset[] = [] -const EMPTY_FOLDERS: readonly MediaFolder[] = [] const DEFAULT_STORAGE_TARGET: MediaStorageTarget = { id: "local", kind: "local", @@ -216,15 +214,7 @@ export function MediaLibrary({ } finally { if (assetRequestId.current === requestId) setIsLoadingAssets(false) } - }, [ - adapter, - allowedKinds, - allowedKindsKey, - deferredKeyword, - filter, - folder, - t, - ]) + }, [adapter, allowedKinds, deferredKeyword, filter, folder, t]) React.useEffect(() => { void refreshFolders() diff --git a/packages/blocks/src/blocks/media/sidebar.tsx b/packages/blocks/src/blocks/media/sidebar.tsx index 7805a09..18f823f 100644 --- a/packages/blocks/src/blocks/media/sidebar.tsx +++ b/packages/blocks/src/blocks/media/sidebar.tsx @@ -12,7 +12,7 @@ import { PlusIcon, Trash2Icon, UnlinkIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { useTranslate } from "@workspace/i18n" import { Button } from "@workspace/ui/components/button" import { diff --git a/packages/blocks/src/blocks/navigation/flyout-navigation.tsx b/packages/blocks/src/blocks/navigation/flyout-navigation.tsx index 2c34a4a..7f34b88 100644 --- a/packages/blocks/src/blocks/navigation/flyout-navigation.tsx +++ b/packages/blocks/src/blocks/navigation/flyout-navigation.tsx @@ -1,4 +1,4 @@ -import { Icon } from "@workspace/icons" +import { Icon } from "@icones/react" import { DropdownMenuItem, DropdownMenuSub, @@ -23,7 +23,7 @@ export function SidebarFlyoutMenuItems({ return items.map((item) => { const icon = resolveNavigationItemIcon(item) const iconElement = icon ? ( - + ) : null const routeState = getRouteState(item.to) diff --git a/packages/blocks/src/blocks/navigation/item-icon.ts b/packages/blocks/src/blocks/navigation/item-icon.ts index 4e15bda..5cdd6fe 100644 --- a/packages/blocks/src/blocks/navigation/item-icon.ts +++ b/packages/blocks/src/blocks/navigation/item-icon.ts @@ -1,10 +1,10 @@ -import type { IconData } from "@workspace/icons" +import type { IconName } from "@icones/react" import type { NavigationItem } from "./types" export function resolveNavigationItemIcon( item: NavigationItem, visibleByDefault = false -): IconData | undefined { +): IconName<"huge"> | undefined { return (item.showIcon ?? visibleByDefault) ? item.icon : undefined } diff --git a/packages/blocks/src/blocks/navigation/mobile-navigation.tsx b/packages/blocks/src/blocks/navigation/mobile-navigation.tsx index 0eb6ac8..c47fb70 100644 --- a/packages/blocks/src/blocks/navigation/mobile-navigation.tsx +++ b/packages/blocks/src/blocks/navigation/mobile-navigation.tsx @@ -1,5 +1,6 @@ import { useLocation } from "@tanstack/react-router" -import { Icon, Menu02Icon } from "@workspace/icons" +import { Fragment } from "react" +import { Icon } from "@icones/react" import { useMessage } from "@workspace/i18n" import type { ButtonProps } from "@workspace/ui/components/button" import { Separator } from "@workspace/ui/components/separator" @@ -13,8 +14,8 @@ import { SheetTrigger, } from "@workspace/ui/components/sheet" import { useOnBreakpoint } from "@workspace/ui/hooks/use-breakpoint" -import { cn, separate } from "@workspace/ui/lib/utils" -import { ChevronRightIcon } from "lucide-react" +import { cn } from "@workspace/ui/lib/utils" +import { ChevronRightIcon } from "@workspace/ui/components/icon" import { HeaderActionButton } from "../layout/header-action-button" import { navigationMessages } from "./messages" @@ -50,7 +51,7 @@ export function MobileNavigationSheetTrigger({ } > @@ -136,14 +137,13 @@ function FlatNavigationGroupList({
- {separate({ - items: group.items, - iterator: (item) => { - const routeState = getRouteState(item.to) + {group.items.map((item, index) => { + const routeState = getRouteState(item.to) - return ( + return ( + + {index > 0 && } } /> - ) - }, - separator: (index) => ( - - ), + + ) })}
diff --git a/packages/blocks/src/blocks/navigation/navigation-button.tsx b/packages/blocks/src/blocks/navigation/navigation-button.tsx index b53bd00..8cdeb2e 100644 --- a/packages/blocks/src/blocks/navigation/navigation-button.tsx +++ b/packages/blocks/src/blocks/navigation/navigation-button.tsx @@ -2,11 +2,11 @@ import { mergeProps } from "@base-ui/react/merge-props" import { useRender } from "@base-ui/react/use-render" import { Link } from "@tanstack/react-router" import * as React from "react" -import { Icon, type IconData } from "@workspace/icons" +import { Icon, type IconName } from "@icones/react" import { Badge } from "@workspace/ui/components/badge" import { useRippleRef } from "@workspace/ui/hooks/use-ripple" import { cn } from "@workspace/ui/lib/utils" -import { ChevronRightIcon } from "lucide-react" +import { ChevronRightIcon } from "@workspace/ui/components/icon" import { NavigationLabel, TruncatedNavigationLabel } from "./navigation-label" import type { NavigationLabelValue } from "./types" @@ -15,7 +15,7 @@ export interface NavigationButtonProps extends Omit< useRender.ComponentProps<"button", {}>, "className" | "style" > { - icon?: IconData + icon?: IconName<"huge"> isActive: boolean isCurrent: boolean label: NavigationLabelValue @@ -104,7 +104,7 @@ export function NavigationButton({ : undefined )} > - + )} showIcon?: boolean items?: readonly NavigationItem[] } diff --git a/packages/blocks/src/blocks/navigation/use-navigation.tsx b/packages/blocks/src/blocks/navigation/use-navigation.tsx index 63927b9..6a9d8d3 100644 --- a/packages/blocks/src/blocks/navigation/use-navigation.tsx +++ b/packages/blocks/src/blocks/navigation/use-navigation.tsx @@ -1,6 +1,6 @@ import { useLocation } from "@tanstack/react-router" import * as React from "react" -import type { IconData } from "@workspace/icons" +import type { IconName } from "@icones/react" import { resolveNavigationItemIcon } from "./item-icon" import type { @@ -13,7 +13,7 @@ export type NavigationKey = NavigationItem["id"] export interface NavigationInfo { id: NavigationKey - icon?: IconData + icon?: IconName<"huge"> items?: readonly NavigationInfo[] label: NavigationLabelValue to?: string @@ -40,26 +40,25 @@ function normalizePathname(pathname: string) { return pathname.replace(/\/+$/, "") } +function createInfoItems( + items: readonly NavigationItem[], + showIconByDefault: boolean +): readonly NavigationInfo[] { + return items.map((item) => ({ + id: item.id, + icon: resolveNavigationItemIcon(item, showIconByDefault), + items: item.items?.length ? createInfoItems(item.items, false) : undefined, + label: item.label, + to: item.to, + })) +} + function createNavigationIndex( groups: readonly NavigationGroup[] ): NavigationIndex { const recordsByKey = new Map() const recordsByPathname = new Map() - const createInfoItems = ( - items: readonly NavigationItem[], - showIconByDefault: boolean - ): readonly NavigationInfo[] => - items.map((item) => ({ - id: item.id, - icon: resolveNavigationItemIcon(item, showIconByDefault), - items: item.items?.length - ? createInfoItems(item.items, false) - : undefined, - label: item.label, - to: item.to, - })) - const indexInfoItems = ( items: readonly NavigationInfo[], parentStack: readonly NavigationInfo[] diff --git a/packages/blocks/src/blocks/notifications/notification-center.tsx b/packages/blocks/src/blocks/notifications/notification-center.tsx index e0e72e5..17b423a 100644 --- a/packages/blocks/src/blocks/notifications/notification-center.tsx +++ b/packages/blocks/src/blocks/notifications/notification-center.tsx @@ -1,5 +1,5 @@ import * as React from "react" -import { CheckCheckIcon } from "lucide-react" +import { CheckCheckIcon } from "@workspace/ui/components/icon" import { useMessage } from "@workspace/i18n" import { Button } from "@workspace/ui/components/button" import { diff --git a/packages/blocks/src/blocks/notifications/notification-item.tsx b/packages/blocks/src/blocks/notifications/notification-item.tsx index 03428b8..f7b6082 100644 --- a/packages/blocks/src/blocks/notifications/notification-item.tsx +++ b/packages/blocks/src/blocks/notifications/notification-item.tsx @@ -1,6 +1,6 @@ import * as React from "react" import { Link } from "@tanstack/react-router" -import { Icon } from "@workspace/icons" +import { Icon } from "@icones/react" import { useFormatters, useMessage } from "@workspace/i18n" import { Avatar, @@ -109,7 +109,7 @@ function NotificationItemMedia({ media }: { media: NotificationMedia }) { ICON_TONE_CLASSES[media.tone ?? "neutral"] )} > - + ) } diff --git a/packages/blocks/src/blocks/notifications/types.ts b/packages/blocks/src/blocks/notifications/types.ts index e42d1e5..122121f 100644 --- a/packages/blocks/src/blocks/notifications/types.ts +++ b/packages/blocks/src/blocks/notifications/types.ts @@ -1,4 +1,4 @@ -import type { IconData } from "@workspace/icons" +import type { IconName } from "@icones/react" export type NotificationTone = | "destructive" @@ -15,7 +15,7 @@ export interface NotificationAvatarMedia { } export interface NotificationIconMedia { - icon: IconData + icon: IconName<"huge"> kind: "icon" tone?: NotificationTone } diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 63d46ed..455c37c 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -26,9 +26,9 @@ "@lingui/core": "^6", "@lingui/react": "^6", "@vitejs/plugin-react": "^6", + "@workspace/ui": "workspace:*", "ansi-to-react": "^6.2.6", "cac": "^7.0.0", - "lucide-react": "^1.27.0", "open": "^11.0.0", "react": "^19.2.6", "react-dom": "^19.2.6", @@ -43,4 +43,4 @@ "typescript": "~6", "vitest": "^4" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/devtool/devtool-action-output.tsx b/packages/i18n/src/devtool/devtool-action-output.tsx index d428bce..7cc0f16 100644 --- a/packages/i18n/src/devtool/devtool-action-output.tsx +++ b/packages/i18n/src/devtool/devtool-action-output.tsx @@ -3,7 +3,7 @@ import { ChevronUpIcon, TerminalIcon, XIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { AnsiText } from "./ansi-text" import { useDevtoolLocalization } from "./devtool-localization" diff --git a/packages/i18n/src/devtool/devtool-settings.tsx b/packages/i18n/src/devtool/devtool-settings.tsx index f3711e5..a973e8e 100644 --- a/packages/i18n/src/devtool/devtool-settings.tsx +++ b/packages/i18n/src/devtool/devtool-settings.tsx @@ -4,7 +4,7 @@ import { AlignLeftIcon, AlignRightIcon, SettingsIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import type { I18nDevtoolPanelPlacement, @@ -35,14 +35,8 @@ const panelPlacements = [ ] as const const interfaceLocaleLabels: Record = { - de: "Deutsch", - en: "English", - es: "Español", - fr: "Français", - ja: "日本語", - ko: "한국어", + "en-US": "English", "zh-Hans": "简体中文", - "zh-Hant": "繁體中文", } export function DevtoolSettings({ diff --git a/packages/i18n/src/devtool/devtool-theme-switcher.tsx b/packages/i18n/src/devtool/devtool-theme-switcher.tsx index 7b01039..25b3bb5 100644 --- a/packages/i18n/src/devtool/devtool-theme-switcher.tsx +++ b/packages/i18n/src/devtool/devtool-theme-switcher.tsx @@ -1,4 +1,4 @@ -import { MonitorIcon, MoonIcon, SunIcon } from "lucide-react" +import { MonitorIcon, MoonIcon, SunIcon } from "@workspace/ui/components/icon" import type { I18nDevtoolTheme } from "./devtool-preferences" import { useDevtoolLocalization } from "./devtool-localization" diff --git a/packages/i18n/src/devtool/i18n-devtool-trigger.tsx b/packages/i18n/src/devtool/i18n-devtool-trigger.tsx index de655cc..5341dfe 100644 --- a/packages/i18n/src/devtool/i18n-devtool-trigger.tsx +++ b/packages/i18n/src/devtool/i18n-devtool-trigger.tsx @@ -1,4 +1,4 @@ -import { LanguagesIcon } from "lucide-react" +import { LanguagesIcon } from "@workspace/ui/components/icon" import { useDevtoolLocalization } from "./devtool-localization" import { useFloatingTrigger } from "./use-floating-trigger" diff --git a/packages/i18n/src/devtool/i18n-devtool.tsx b/packages/i18n/src/devtool/i18n-devtool.tsx index 7b8f53a..a378eb4 100644 --- a/packages/i18n/src/devtool/i18n-devtool.tsx +++ b/packages/i18n/src/devtool/i18n-devtool.tsx @@ -1,5 +1,9 @@ import * as React from "react" -import { Maximize2Icon, Minimize2Icon, XIcon } from "lucide-react" +import { + Maximize2Icon, + Minimize2Icon, + XIcon, +} from "@workspace/ui/components/icon" import { createPortal } from "react-dom" import { useLocale, useLocales } from "../runtime" @@ -25,6 +29,7 @@ import { DevtoolSettings } from "./devtool-settings" import { I18nDevtoolTrigger } from "./i18n-devtool-trigger" import { MessagePanel } from "./message-panel" import { MessageRepositoryProvider } from "./message-repository" +// oxlint-disable-next-line import/no-unassigned-import -- Loads the Devtool stylesheet. import "./i18n-devtool.css" export interface I18nDevtoolProps { diff --git a/packages/i18n/src/devtool/message-copy-menu.tsx b/packages/i18n/src/devtool/message-copy-menu.tsx index 83bfaff..f998668 100644 --- a/packages/i18n/src/devtool/message-copy-menu.tsx +++ b/packages/i18n/src/devtool/message-copy-menu.tsx @@ -4,7 +4,7 @@ import { ChevronDownIcon, CopyIcon, TriangleAlertIcon, -} from "lucide-react" +} from "@workspace/ui/components/icon" import { useDevtoolLocalization } from "./devtool-localization" import type { DevtoolMessage, MessageOrigin } from "./types" @@ -53,6 +53,35 @@ async function writeClipboard(value: string) { } } +function handleMenuKeyDown(event: React.KeyboardEvent) { + if (!["ArrowDown", "ArrowUp", "End", "Home"].includes(event.key)) { + return + } + + event.preventDefault() + const items = Array.from( + event.currentTarget.querySelectorAll( + '[role="menuitem"]:not(:disabled)' + ) + ) + + if (items.length === 0) return + + const currentIndex = items.indexOf( + document.activeElement as HTMLButtonElement + ) + const nextIndex = + event.key === "Home" + ? 0 + : event.key === "End" + ? items.length - 1 + : event.key === "ArrowUp" + ? (currentIndex - 1 + items.length) % items.length + : (currentIndex + 1) % items.length + + items[nextIndex]?.focus() +} + export function MessageCopyMenu({ message, translation, @@ -132,37 +161,6 @@ export function MessageCopyMenu({ } } - const handleMenuKeyDown = (event: React.KeyboardEvent) => { - if (!["ArrowDown", "ArrowUp", "End", "Home"].includes(event.key)) { - return - } - - event.preventDefault() - const items = Array.from( - event.currentTarget.querySelectorAll( - '[role="menuitem"]:not(:disabled)' - ) - ) - - if (items.length === 0) { - return - } - - const currentIndex = items.indexOf( - document.activeElement as HTMLButtonElement - ) - const nextIndex = - event.key === "Home" - ? 0 - : event.key === "End" - ? items.length - 1 - : event.key === "ArrowUp" - ? (currentIndex - 1 + items.length) % items.length - : (currentIndex + 1) % items.length - - items[nextIndex]?.focus() - } - return (