From 08cb7497559bc23acfcc09f90d07773edc1d63b6 Mon Sep 17 00:00:00 2001 From: icld Date: Thu, 6 Mar 2025 06:05:03 -0800 Subject: [PATCH] fix(ui): tailwind config not resolving --- .vscode/settings.json | 9 +- apps/deploy-fe/.vscode/settings.json | 4 + apps/deploy-fe/biome.jsonc | 3 + apps/deploy-fe/components.json | 4 +- apps/deploy-fe/package.json | 13 +- apps/deploy-fe/postcss.config.mjs | 7 +- .../(dashboard)/_Navigation/TopNavigation.tsx | 217 +++ .../bp => buy-prepaid-service}/page.tsx | 0 .../(dashboard)/layout.tsx | 13 +- .../src/app/(web3-authenticated)/layout.tsx | 7 +- apps/deploy-fe/src/app/layout.tsx | 31 +- apps/deploy-fe/src/app/page.tsx | 9 +- .../components/layouts/dashboard-layout.tsx | 34 + .../deploy-fe/src/components/layouts/index.ts | 1 + .../src/components/navigation/main-nav.tsx | 38 + .../src/components/navigation/mobile-nav.tsx | 82 + .../src/components/navigation/user-nav.tsx | 67 + .../components/page-header/breadcrumbs.tsx | 71 + .../src/components/page-header/header.tsx | 78 + .../components/page-header/page-header.tsx | 30 + .../page-header/search-combobox.tsx | 236 +++ .../src/components/page-header/search.tsx | 52 + apps/deploy-fe/src/components/providers.tsx | 15 +- apps/deploy-fe/src/config/dashboard.ts | 110 ++ apps/deploy-fe/src/lib/.gitkeep | 0 apps/deploy-fe/src/types/dashboard.ts | 65 + apps/deploy-fe/tsconfig.json | 7 +- apps/web/.gitignore | 7 - apps/web/components.json | 20 - apps/web/next-env.d.ts | 5 - apps/web/next.config.mjs | 6 - apps/web/package.json | 76 - apps/web/postcss.config.mjs | 6 - apps/web/src/app/favicon.ico | Bin 25931 -> 0 bytes apps/web/src/app/layout.tsx | 30 - apps/web/src/app/page.tsx | 12 - apps/web/src/components/.gitkeep | 0 apps/web/src/components/providers.tsx | 18 - apps/web/src/hooks/.gitkeep | 0 apps/web/src/lib/.gitkeep | 0 apps/web/tailwind.config.ts | 1 - apps/web/tsconfig.json | 23 - pnpm-lock.yaml | 1734 ++++++++--------- pnpm-workspace.yaml | 2 + services/ui/package.json | 50 +- services/ui/postcss.config.mjs | 9 +- services/ui/src/components/accordion.tsx | 66 + services/ui/src/components/alert-dialog.tsx | 157 ++ services/ui/src/components/alert.tsx | 66 + services/ui/src/components/aspect-ratio.tsx | 11 + services/ui/src/components/avatar.tsx | 53 + services/ui/src/components/badge.tsx | 46 + services/ui/src/components/breadcrumb.tsx | 108 + services/ui/src/components/button.tsx | 76 +- services/ui/src/components/calendar.tsx | 75 + services/ui/src/components/card.tsx | 68 + services/ui/src/components/carousel.tsx | 241 +++ services/ui/src/components/chart.tsx | 353 ++++ services/ui/src/components/checkbox.tsx | 32 + services/ui/src/components/collapsible.tsx | 33 + services/ui/src/components/command.tsx | 177 ++ services/ui/src/components/context-menu.tsx | 252 +++ services/ui/src/components/dialog.tsx | 135 ++ services/ui/src/components/drawer.tsx | 132 ++ services/ui/src/components/dropdown-menu.tsx | 257 +++ services/ui/src/components/form.tsx | 167 ++ services/ui/src/components/hover-card.tsx | 42 + services/ui/src/components/input-otp.tsx | 77 + services/ui/src/components/input.tsx | 21 + services/ui/src/components/label.tsx | 24 + services/ui/src/components/menubar.tsx | 276 +++ .../ui/src/components/navigation-menu.tsx | 170 ++ services/ui/src/components/pagination.tsx | 126 ++ services/ui/src/components/popover.tsx | 48 + services/ui/src/components/progress.tsx | 31 + services/ui/src/components/radio-group.tsx | 45 + services/ui/src/components/resizable.tsx | 56 + services/ui/src/components/scroll-area.tsx | 58 + services/ui/src/components/select.tsx | 181 ++ services/ui/src/components/separator.tsx | 28 + services/ui/src/components/sheet.tsx | 140 ++ services/ui/src/components/sidebar.tsx | 723 +++++++ services/ui/src/components/skeleton.tsx | 13 + services/ui/src/components/slider.tsx | 63 + services/ui/src/components/sonner.tsx | 29 + services/ui/src/components/switch.tsx | 31 + services/ui/src/components/table.tsx | 116 ++ services/ui/src/components/tabs.tsx | 66 + services/ui/src/components/textarea.tsx | 18 + services/ui/src/components/toggle-group.tsx | 73 + services/ui/src/components/toggle.tsx | 47 + services/ui/src/components/tooltip.tsx | 61 + .../ui/src/hooks/use-mobile.ts | 0 services/ui/src/styles/globals.css | 26 +- services/ui/tailwind.config.ts | 45 +- services/ui/tsconfig.json | 2 +- services/ui/tsconfig.lint.json | 2 +- turbo.json | 10 +- 98 files changed, 7089 insertions(+), 1266 deletions(-) create mode 100644 apps/deploy-fe/.vscode/settings.json create mode 100644 apps/deploy-fe/biome.jsonc create mode 100644 apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/_Navigation/TopNavigation.tsx rename apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/{(buy-prepaid-service)/bp => buy-prepaid-service}/page.tsx (100%) create mode 100644 apps/deploy-fe/src/components/layouts/dashboard-layout.tsx create mode 100644 apps/deploy-fe/src/components/layouts/index.ts create mode 100644 apps/deploy-fe/src/components/navigation/main-nav.tsx create mode 100644 apps/deploy-fe/src/components/navigation/mobile-nav.tsx create mode 100644 apps/deploy-fe/src/components/navigation/user-nav.tsx create mode 100644 apps/deploy-fe/src/components/page-header/breadcrumbs.tsx create mode 100644 apps/deploy-fe/src/components/page-header/header.tsx create mode 100644 apps/deploy-fe/src/components/page-header/page-header.tsx create mode 100644 apps/deploy-fe/src/components/page-header/search-combobox.tsx create mode 100644 apps/deploy-fe/src/components/page-header/search.tsx create mode 100644 apps/deploy-fe/src/config/dashboard.ts delete mode 100644 apps/deploy-fe/src/lib/.gitkeep create mode 100644 apps/deploy-fe/src/types/dashboard.ts delete mode 100644 apps/web/.gitignore delete mode 100644 apps/web/components.json delete mode 100644 apps/web/next-env.d.ts delete mode 100644 apps/web/next.config.mjs delete mode 100644 apps/web/package.json delete mode 100644 apps/web/postcss.config.mjs delete mode 100644 apps/web/src/app/favicon.ico delete mode 100644 apps/web/src/app/layout.tsx delete mode 100644 apps/web/src/app/page.tsx delete mode 100644 apps/web/src/components/.gitkeep delete mode 100644 apps/web/src/components/providers.tsx delete mode 100644 apps/web/src/hooks/.gitkeep delete mode 100644 apps/web/src/lib/.gitkeep delete mode 100644 apps/web/tailwind.config.ts delete mode 100644 apps/web/tsconfig.json create mode 100644 services/ui/src/components/accordion.tsx create mode 100644 services/ui/src/components/alert-dialog.tsx create mode 100644 services/ui/src/components/alert.tsx create mode 100644 services/ui/src/components/aspect-ratio.tsx create mode 100644 services/ui/src/components/avatar.tsx create mode 100644 services/ui/src/components/badge.tsx create mode 100644 services/ui/src/components/breadcrumb.tsx create mode 100644 services/ui/src/components/calendar.tsx create mode 100644 services/ui/src/components/card.tsx create mode 100644 services/ui/src/components/carousel.tsx create mode 100644 services/ui/src/components/chart.tsx create mode 100644 services/ui/src/components/checkbox.tsx create mode 100644 services/ui/src/components/collapsible.tsx create mode 100644 services/ui/src/components/command.tsx create mode 100644 services/ui/src/components/context-menu.tsx create mode 100644 services/ui/src/components/dialog.tsx create mode 100644 services/ui/src/components/drawer.tsx create mode 100644 services/ui/src/components/dropdown-menu.tsx create mode 100644 services/ui/src/components/form.tsx create mode 100644 services/ui/src/components/hover-card.tsx create mode 100644 services/ui/src/components/input-otp.tsx create mode 100644 services/ui/src/components/input.tsx create mode 100644 services/ui/src/components/label.tsx create mode 100644 services/ui/src/components/menubar.tsx create mode 100644 services/ui/src/components/navigation-menu.tsx create mode 100644 services/ui/src/components/pagination.tsx create mode 100644 services/ui/src/components/popover.tsx create mode 100644 services/ui/src/components/progress.tsx create mode 100644 services/ui/src/components/radio-group.tsx create mode 100644 services/ui/src/components/resizable.tsx create mode 100644 services/ui/src/components/scroll-area.tsx create mode 100644 services/ui/src/components/select.tsx create mode 100644 services/ui/src/components/separator.tsx create mode 100644 services/ui/src/components/sheet.tsx create mode 100644 services/ui/src/components/sidebar.tsx create mode 100644 services/ui/src/components/skeleton.tsx create mode 100644 services/ui/src/components/slider.tsx create mode 100644 services/ui/src/components/sonner.tsx create mode 100644 services/ui/src/components/switch.tsx create mode 100644 services/ui/src/components/table.tsx create mode 100644 services/ui/src/components/tabs.tsx create mode 100644 services/ui/src/components/textarea.tsx create mode 100644 services/ui/src/components/toggle-group.tsx create mode 100644 services/ui/src/components/toggle.tsx create mode 100644 services/ui/src/components/tooltip.tsx rename apps/web/src/hooks/use-mobile.tsx => services/ui/src/hooks/use-mobile.ts (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6f210cb..a33d122 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,11 +5,13 @@ "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll": "explicit", - "source.organizeImports": "explicit" + "source.addMissingImports.ts": "explicit", + "source.organizeImports.biome": "explicit", + "source.removeUnused.ts": "explicit" }, "editor.defaultFormatter": "biomejs.biome", "[typescript]": { - "editor.defaultFormatter": "vscode.typescript-language-features" + "editor.defaultFormatter": "biomejs.biome" }, "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" @@ -26,5 +28,6 @@ "typescript.validate.enable": true, "javascript.validate.enable": true, "typescript.reportStyleChecksAsWarnings": true, - "typescript.surveys.enabled": false + "typescript.surveys.enabled": false, + "prettier.enable": false } diff --git a/apps/deploy-fe/.vscode/settings.json b/apps/deploy-fe/.vscode/settings.json new file mode 100644 index 0000000..88ca7c2 --- /dev/null +++ b/apps/deploy-fe/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true +} diff --git a/apps/deploy-fe/biome.jsonc b/apps/deploy-fe/biome.jsonc new file mode 100644 index 0000000..52a1d9f --- /dev/null +++ b/apps/deploy-fe/biome.jsonc @@ -0,0 +1,3 @@ +{ + "extends": ["../../biome.json"] +} diff --git a/apps/deploy-fe/components.json b/apps/deploy-fe/components.json index c6e73e6..bdeb87e 100644 --- a/apps/deploy-fe/components.json +++ b/apps/deploy-fe/components.json @@ -4,8 +4,8 @@ "rsc": true, "tsx": true, "tailwind": { - "config": "tailwind.config.ts", - "css": "../../../services/ui/src/styles/globals.css", + "config": "../../services/ui/tailwind.config.ts", + "css": "../../services/ui/src/styles/globals.css", "baseColor": "zinc", "cssVariables": true }, diff --git a/apps/deploy-fe/package.json b/apps/deploy-fe/package.json index 8438641..429ffa2 100644 --- a/apps/deploy-fe/package.json +++ b/apps/deploy-fe/package.json @@ -16,7 +16,6 @@ }, "dependencies": { "@biomejs/biome": "^1.9.4", - "@biomejs/monorepo": "github:biomejs/biome", "@hookform/resolvers": "^4.1.2", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-alert-dialog": "^1.1.6", @@ -38,7 +37,7 @@ "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.2", "@radix-ui/react-slider": "^1.2.3", - "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-switch": "^1.1.3", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toggle": "^1.1.2", @@ -46,12 +45,13 @@ "@radix-ui/react-tooltip": "^1.1.8", "@workspace/ui": "workspace:*", "class-variance-authority": "^0.7.0", - "cmdk": "1.0.0", + "clsx": "^2.1.1", + "cmdk": "1.0.4", "date-fns": "^4.1.0", "embla-carousel-react": "^8.5.2", "input-otp": "^1.4.2", - "lucide-react": "0.456.0", - "next": "^15.1.0", + "lucide-react": "0.477.0", + "next": "^15.2.1", "next-themes": "^0.4.4", "react": "^19.0.0", "react-day-picker": "8.10.1", @@ -60,6 +60,7 @@ "react-resizable-panels": "^2.1.7", "recharts": "^2.15.1", "sonner": "^2.0.1", + "tailwind-merge": "^3.0.2", "vaul": "^1.1.2", "zod": "^3.23.8", "zustand": "^5.0.3" @@ -70,7 +71,7 @@ "@types/react-dom": "18.3.1", "@workspace/typescript-config": "workspace:*", "postcss": "^8", - "tailwindcss": "^4.0.9", + "tailwindcss": "^3.4.17", "typescript": "^5" } } diff --git a/apps/deploy-fe/postcss.config.mjs b/apps/deploy-fe/postcss.config.mjs index d923411..5f90e69 100644 --- a/apps/deploy-fe/postcss.config.mjs +++ b/apps/deploy-fe/postcss.config.mjs @@ -1,6 +1 @@ -export default { - plugins: { - '@tailwindcss/postcss': {}, - autoprefixer: {} - } -} +export { default } from '@workspace/ui/postcss.config' diff --git a/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/_Navigation/TopNavigation.tsx b/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/_Navigation/TopNavigation.tsx new file mode 100644 index 0000000..4c030e5 --- /dev/null +++ b/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/_Navigation/TopNavigation.tsx @@ -0,0 +1,217 @@ +// 'use client'; + +// import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'; +// import { LaconicMark } from '@/laconic-assets/laconic-mark'; +// import { Menu, Plus, Shapes, Wallet } from 'lucide-react'; +// import Link from 'next/link'; +// import { useRouter } from 'next/navigation'; +// import { useState } from 'react'; +// import { ProjectSearchBar } from '../search/ProjectSearchBar'; +// import { ColorModeToggle } from './components/ColorModeToggle'; +// import { GitHubSessionButton } from './components/GitHubSessionButton'; +// import { WalletSessionId } from './components/WalletSessionId'; +// import { Button } from '@workspace/ui/components/button'; + +// /** +// * TopNavigation Component +// * +// * Renders the top navigation bar, adapting its layout for desktop and mobile views. +// * It includes the project search bar, navigation links, user authentication via GitHub, +// * color mode toggle, and wallet session information. On mobile, it utilizes a sheet +// * for a responsive and accessible navigation experience. +// */ +// export function TopNavigation() { +// const router = useRouter(); +// const [showOnboarding, setShowOnboarding] = useState(false); + +// // In a real implementation, these would be from context/hooks +// const isGitHubConnected = true; // Example value +// const defaultOrg = { slug: 'demo-org' }; // Example value +// const isReady = true; // Wallet ready status + +// const handleOnboardingClose = () => { +// setShowOnboarding(false); +// // In a real implementation, would refresh organization data after onboarding +// }; + +// // Navigate to create page with organization slug +// const handleCreateNew = () => { +// if (defaultOrg) { +// router.push(`/${defaultOrg.slug}/ps/cr`); +// } else { +// // If no organization is available, show onboarding +// setShowOnboarding(true); +// } +// }; + +// const handleRunOnboarding = () => { +// // Clear existing onboarding progress data +// if (typeof window !== 'undefined') { +// localStorage.removeItem('onboarding_progress'); +// localStorage.removeItem('onboarding_state'); +// // Force starting from connect step +// localStorage.setItem('onboarding_force_connect', 'true'); +// } + +// setShowOnboarding(true); +// }; + +// return ( +//
+// {/* Top Navigation - Desktop */} +// + +// {/* Top Navigation - Mobile */} +// + +//
+// ); +// } diff --git a/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/(buy-prepaid-service)/bp/page.tsx b/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/buy-prepaid-service/page.tsx similarity index 100% rename from apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/(buy-prepaid-service)/bp/page.tsx rename to apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/buy-prepaid-service/page.tsx diff --git a/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/layout.tsx b/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/layout.tsx index 535feaf..d4d8d2d 100644 --- a/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/layout.tsx +++ b/apps/deploy-fe/src/app/(web3-authenticated)/(dashboard)/layout.tsx @@ -1,3 +1,7 @@ +'use client' + +import { DashboardLayout } from '@/components/layouts' +import { defaultDashboardConfig } from '@/config/dashboard' import type React from 'react' interface LayoutProps { @@ -6,10 +10,13 @@ interface LayoutProps { const Layout: React.FC = ({ children }) => { return ( -
-

Layout for (web3-authenticated)/(dashboard)

+ //
+ //
+ {children} -
+ + //
+ //
) } diff --git a/apps/deploy-fe/src/app/(web3-authenticated)/layout.tsx b/apps/deploy-fe/src/app/(web3-authenticated)/layout.tsx index 50a6419..38c55a1 100644 --- a/apps/deploy-fe/src/app/(web3-authenticated)/layout.tsx +++ b/apps/deploy-fe/src/app/(web3-authenticated)/layout.tsx @@ -5,12 +5,7 @@ interface LayoutProps { } const Layout: React.FC = ({ children }) => { - return ( -
-

Layout for (web3-authenticated)

- {children} -
- ) + return
{children}
} export default Layout diff --git a/apps/deploy-fe/src/app/layout.tsx b/apps/deploy-fe/src/app/layout.tsx index 34c343d..5115821 100644 --- a/apps/deploy-fe/src/app/layout.tsx +++ b/apps/deploy-fe/src/app/layout.tsx @@ -1,17 +1,8 @@ import { Providers } from '@/components/providers' -import '@workspace/ui/globals.css' +// import '@workspace/ui/globals.css' import type { Metadata } from 'next' -import { Geist, Geist_Mono } from 'next/font/google' -const fontSans = Geist({ - subsets: ['latin'], - variable: '--font-sans' -}) - -const fontMono = Geist_Mono({ - subsets: ['latin'], - variable: '--font-mono' -}) +import { Inter } from 'next/font/google' // Add root metadata with template pattern export const metadata: Metadata = { @@ -26,6 +17,8 @@ export const metadata: Metadata = { } } +const inter = Inter({ subsets: ['latin'] }) + export default function RootLayout({ children }: Readonly<{ @@ -33,10 +26,18 @@ export default function RootLayout({ }>) { return ( - - {children} + +
+ + {children} +
) diff --git a/apps/deploy-fe/src/app/page.tsx b/apps/deploy-fe/src/app/page.tsx index 11377c3..45c225d 100644 --- a/apps/deploy-fe/src/app/page.tsx +++ b/apps/deploy-fe/src/app/page.tsx @@ -7,12 +7,5 @@ export const metadata: Metadata = { } export default function Page() { - return ( -
-
-

Hello World

- -
-
- ) + return } diff --git a/apps/deploy-fe/src/components/layouts/dashboard-layout.tsx b/apps/deploy-fe/src/components/layouts/dashboard-layout.tsx new file mode 100644 index 0000000..5f5c2ac --- /dev/null +++ b/apps/deploy-fe/src/components/layouts/dashboard-layout.tsx @@ -0,0 +1,34 @@ +'use client' + +import { Header } from '@/components/page-header/header' +import { PageHeader } from '@/components/page-header/page-header' +import type { DashboardLayoutConfig } from '@/types/dashboard' +import { cn } from '@workspace/ui/lib/utils' +import type React from 'react' + +interface DashboardLayoutProps { + config: DashboardLayoutConfig + children: React.ReactNode + className?: string +} + +export function DashboardLayout({ + config, + children, + className +}: DashboardLayoutProps) { + const { headerConfig, pageHeaderConfig } = config + + return ( +
+ {/* Top Navigation */} +
+ + {/* Page Header with breadcrumbs */} + + + {/* Content Area */} +
{children}
+
+ ) +} diff --git a/apps/deploy-fe/src/components/layouts/index.ts b/apps/deploy-fe/src/components/layouts/index.ts new file mode 100644 index 0000000..a6606ce --- /dev/null +++ b/apps/deploy-fe/src/components/layouts/index.ts @@ -0,0 +1 @@ +export { DashboardLayout } from './dashboard-layout' diff --git a/apps/deploy-fe/src/components/navigation/main-nav.tsx b/apps/deploy-fe/src/components/navigation/main-nav.tsx new file mode 100644 index 0000000..582026b --- /dev/null +++ b/apps/deploy-fe/src/components/navigation/main-nav.tsx @@ -0,0 +1,38 @@ +'use client' + +import type { NavItem } from '@/types/dashboard' +import { cn } from '@workspace/ui/lib/utils' +import Link from 'next/link' +import { usePathname } from 'next/navigation' + +interface MainNavProps { + items: NavItem[] + className?: string +} + +export function MainNav({ items, className }: MainNavProps) { + const pathname = usePathname() + + return ( + + ) +} diff --git a/apps/deploy-fe/src/components/navigation/mobile-nav.tsx b/apps/deploy-fe/src/components/navigation/mobile-nav.tsx new file mode 100644 index 0000000..74fcff9 --- /dev/null +++ b/apps/deploy-fe/src/components/navigation/mobile-nav.tsx @@ -0,0 +1,82 @@ +'use client' + +import { useNavigation } from '@/navigation' +import type { NavItem } from '@/types/dashboard' +import { Button } from '@workspace/ui/components/button' +import { + Sheet, + SheetContent, + SheetHeader, + SheetTitle, + SheetTrigger +} from '@workspace/ui/components/sheet' +import { cn } from '@workspace/ui/lib/utils' +import { Menu, Package2 } from 'lucide-react' +import Link from 'next/link' +import { usePathname } from 'next/navigation' +import type { ReactNode } from 'react' + +interface MobileNavProps { + items: NavItem[] + logo?: ReactNode + title?: string + className?: string +} + +export function MobileNav({ + items, + logo = , + title = 'Navigation', + className +}: MobileNavProps) { + const pathname = usePathname() + const { mobileMenuOpen, toggleMobileMenu } = useNavigation() + + return ( + + + + + + + + {logo} + {title} + + + + + + ) +} diff --git a/apps/deploy-fe/src/components/navigation/user-nav.tsx b/apps/deploy-fe/src/components/navigation/user-nav.tsx new file mode 100644 index 0000000..628ba64 --- /dev/null +++ b/apps/deploy-fe/src/components/navigation/user-nav.tsx @@ -0,0 +1,67 @@ +'use client' + +import type { UserNavConfig } from '@/types/dashboard' +import { Button } from '@workspace/ui/components/button' +import { CircleUser } from 'lucide-react' + +interface UserNavProps extends UserNavConfig { + className?: string +} + +export function UserNav({ + avatarSrc, + username, + email, + showMobile = true, + className +}: UserNavProps) { + return ( +
+ {/* Desktop user button */} + + + {/* Mobile user button */} + {showMobile && ( + + )} +
+ ) +} + +import { cn } from '@workspace/ui/lib/utils' diff --git a/apps/deploy-fe/src/components/page-header/breadcrumbs.tsx b/apps/deploy-fe/src/components/page-header/breadcrumbs.tsx new file mode 100644 index 0000000..3625627 --- /dev/null +++ b/apps/deploy-fe/src/components/page-header/breadcrumbs.tsx @@ -0,0 +1,71 @@ +'use client' + +import type { BreadcrumbsConfig } from '@/types/dashboard' +import { cn } from '@workspace/ui/lib/utils' +import { ChevronRight } from 'lucide-react' +import Link from 'next/link' +import { usePathname } from 'next/navigation' +import React from 'react' + +interface BreadcrumbsProps extends BreadcrumbsConfig { + className?: string +} + +export function Breadcrumbs({ + homeLabel = 'Home', + homeHref = '/', + pathMap = {}, + className +}: BreadcrumbsProps) { + const pathname = usePathname() + + // Generate breadcrumbs from the current path + const breadcrumbs = generateBreadcrumbs(pathname, pathMap) + + return ( +
+ + {homeLabel} + + + {breadcrumbs.map((crumb) => ( + + + + {crumb.label} + + + ))} +
+ ) +} + +// Helper function to generate breadcrumbs from the current path +function generateBreadcrumbs( + pathname: string, + pathMap: Record = {} +): Array<{ href: string; label: string }> { + const paths = pathname.split('/').filter(Boolean) + + return paths.map((path, index) => { + // Build the URL up to this point + const href = `/${paths.slice(0, index + 1).join('/')}` + + // Use the mapping if available, otherwise capitalize the path + const label = pathMap[path] || path.charAt(0).toUpperCase() + path.slice(1) + + return { href, label } + }) +} diff --git a/apps/deploy-fe/src/components/page-header/header.tsx b/apps/deploy-fe/src/components/page-header/header.tsx new file mode 100644 index 0000000..9e59007 --- /dev/null +++ b/apps/deploy-fe/src/components/page-header/header.tsx @@ -0,0 +1,78 @@ +'use client' + +import { MainNav } from '@/components/navigation/main-nav' +import { MobileNav } from '@/components/navigation/mobile-nav' +import { UserNav } from '@/components/navigation/user-nav' +import { SearchCombobox } from '@/components/page-header/search-combobox' +import type { HeaderConfig } from '@/types/dashboard' +import { cn } from '@workspace/ui/lib/utils' +import { Package2 } from 'lucide-react' +import Link from 'next/link' + +interface HeaderProps extends HeaderConfig { + className?: string +} + +export function Header({ + logo = , + logoMobile, + navItems, + searchConfig, + userConfig, + className +}: HeaderProps) { + // Use the mobile logo if provided, otherwise use the desktop logo + const mobileLogoElement = logoMobile || ( +
+ + Application Logo + + +
+ ) + + return ( +
+ {/* Mobile: Left section with menu */} +
+ +
+ + {/* Desktop: Left section with logo and nav */} +
+ {logo} + +
+ + {/* Mobile: Center logo */} +
+ {mobileLogoElement} +
+ + {/* Right section */} +
+ + +
+
+ ) +} diff --git a/apps/deploy-fe/src/components/page-header/page-header.tsx b/apps/deploy-fe/src/components/page-header/page-header.tsx new file mode 100644 index 0000000..c7a674f --- /dev/null +++ b/apps/deploy-fe/src/components/page-header/page-header.tsx @@ -0,0 +1,30 @@ +'use client' + +import type React from 'react' + +import { Breadcrumbs } from '@/components/page-header/breadcrumbs' +import type { PageHeaderConfig } from '@/types/dashboard' +import { cn } from '@workspace/ui/lib/utils' + +interface PageHeaderProps extends PageHeaderConfig { + className?: string + children?: React.ReactNode +} + +export function PageHeader({ + breadcrumbsConfig, + className, + children +}: PageHeaderProps) { + return ( +
+
+ {/* Breadcrumb */} + + + {/* Optional content */} + {children} +
+
+ ) +} diff --git a/apps/deploy-fe/src/components/page-header/search-combobox.tsx b/apps/deploy-fe/src/components/page-header/search-combobox.tsx new file mode 100644 index 0000000..99168e9 --- /dev/null +++ b/apps/deploy-fe/src/components/page-header/search-combobox.tsx @@ -0,0 +1,236 @@ +'use client' + +import type { SearchConfig, SearchResultItem } from '@/types/dashboard' +import { Button } from '@workspace/ui/components/button' +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList +} from '@workspace/ui/components/command' +import { Input } from '@workspace/ui/components/input' +import { + Popover, + PopoverContent, + PopoverTrigger +} from '@workspace/ui/components/popover' +import { cn } from '@workspace/ui/lib/utils' +import { + FileText, + Laptop, + Package, + SearchIcon, + Settings, + Users +} from 'lucide-react' +import * as React from 'react' + +interface SearchComboboxProps extends SearchConfig { + className?: string +} + +// Default icons for different categories +const categoryIcons = { + projects: , + documents: , + settings: , + users: , + default: +} as const satisfies Record + +export function SearchCombobox({ + placeholder = 'Search...', + onSearch, + showMobile = true, + searchResults = [], + onSelectItem, + categories = [], + className +}: SearchComboboxProps) { + const [open, setOpen] = React.useState(false) + const [query, setQuery] = React.useState('') + const [groupedResults, setGroupedResults] = React.useState< + Record + >({}) + + // Filter results based on query + const filteredResults = query + ? searchResults.filter( + (item) => + item.title.toLowerCase().includes(query.toLowerCase()) || + item.description?.toLowerCase().includes(query.toLowerCase()) + ) + : searchResults + + // Group results by category + React.useEffect(() => { + const grouped: Record = {} + + // Initialize with empty arrays for each category + for (const category in categories) { + if (Object.prototype.hasOwnProperty.call(categories, category)) { + const cat = categories[category] as string + grouped[cat] = [] + } + } + + // Add "Other" category if there are items without a category + grouped.Other = [] + + // Group items by category + for (const idx in filteredResults) { + if (Object.prototype.hasOwnProperty.call(filteredResults, idx)) { + const result = filteredResults[idx] as SearchResultItem + const categoryKey = (result.category ?? 'default') as + | keyof typeof categoryIcons + | 'Other' + + if (Object.keys(categoryIcons).includes(categoryKey)) { + if (!grouped[categoryKey]) { + grouped[categoryKey] = [] + } + grouped[categoryKey].push(result) + } else { + grouped.Other.push(result) + } + } + } + + // Remove empty categories + setGroupedResults( + Object.fromEntries( + Object.entries(grouped).filter(([_, items]) => items.length > 0) + ) + ) + }, [filteredResults, categories]) + + const handleSelect = (item: SearchResultItem) => { + setOpen(false) + if (onSelectItem) { + onSelectItem(item) + } + } + + const handleSearch = (e: React.FormEvent) => { + e.preventDefault() + if (onSearch) { + onSearch(query) + } + } + + return ( +
+ {/* Mobile search button */} + {showMobile && ( + + + + + + + + + No results found. + {Object.entries(groupedResults).map(([category, items]) => ( + + {items.map((item) => ( + handleSelect(item)} + className="flex items-center" + > + {item.icon ? ( + + ) : ( + categoryIcons[ + item.category && + Object.keys(categoryIcons).includes(item.category) + ? (item.category as keyof typeof categoryIcons) + : 'default' + ] + )} +
+ {item.title} + {item.description && ( + + {item.description} + + )} +
+
+ ))} +
+ ))} +
+
+
+
+ )} + + {/* Desktop search */} +
+ + +
+ +
+ setQuery(e.target.value)} + onFocus={() => setOpen(true)} + /> +
+
+
+ + + + No results found. + {Object.entries(groupedResults).map(([category, items]) => ( + + {items.map((item) => ( + handleSelect(item)} + className="flex items-center" + > + {item.icon ? ( + + ) : ( + categoryIcons[ + item.category && + Object.keys(categoryIcons).includes(item.category) + ? (item.category as keyof typeof categoryIcons) + : 'default' + ] + )} +
+ {item.title} + {item.description && ( + + {item.description} + + )} +
+
+ ))} +
+ ))} +
+
+
+
+
+
+ ) +} diff --git a/apps/deploy-fe/src/components/page-header/search.tsx b/apps/deploy-fe/src/components/page-header/search.tsx new file mode 100644 index 0000000..ac28150 --- /dev/null +++ b/apps/deploy-fe/src/components/page-header/search.tsx @@ -0,0 +1,52 @@ +'use client' + +import type React from 'react' + +import type { SearchConfig } from '@/types/dashboard' +import { Button } from '@workspace/ui/components/button' +import { Input } from '@workspace/ui/components/input' +import { cn } from '@workspace/ui/lib/utils' +import { SearchIcon } from 'lucide-react' +import { useState } from 'react' + +interface SearchProps extends SearchConfig { + className?: string +} + +export function Search({ + placeholder = 'Search...', + onSearch, + showMobile = true, + className +}: SearchProps) { + const [query, setQuery] = useState('') + + const handleSearch = (e: React.FormEvent) => { + e.preventDefault() + if (onSearch) { + onSearch(query) + } + } + + return ( +
+ {/* Mobile search button */} + {showMobile && ( + + )} + + {/* Desktop search */} +
+ + setQuery(e.target.value)} + /> + +
+ ) +} diff --git a/apps/deploy-fe/src/components/providers.tsx b/apps/deploy-fe/src/components/providers.tsx index a78ecb5..1d1dec0 100644 --- a/apps/deploy-fe/src/components/providers.tsx +++ b/apps/deploy-fe/src/components/providers.tsx @@ -1,8 +1,10 @@ 'use client' +import { Button } from '@workspace/ui/components/button' import { ThemeProvider as NextThemesProvider } from 'next-themes' import type * as React from 'react' - +import '@workspace/ui/globals.css' +import { Toaster, toast } from 'sonner' export function Providers({ children }: { children: React.ReactNode }) { return ( + + {children} ) diff --git a/apps/deploy-fe/src/config/dashboard.ts b/apps/deploy-fe/src/config/dashboard.ts new file mode 100644 index 0000000..a30995a --- /dev/null +++ b/apps/deploy-fe/src/config/dashboard.ts @@ -0,0 +1,110 @@ +import type { + DashboardLayoutConfig, + NavItem, + SearchResultItem +} from '@/types/dashboard' +import { + FileText, + Package2, + Settings, + ShoppingCart, + Users, + Wallet +} from 'lucide-react' + +// Navigation items for the dashboard +export const dashboardNavItems: NavItem[] = [ + { + title: 'Projects', + href: '/projects', + icon: Package2 + }, + { + title: 'Buy Prepaid', + href: '/bp', + icon: ShoppingCart + }, + { + title: 'Wallet', + href: '/wallet', + icon: Wallet + } +] + +// Path mapping for breadcrumbs +export const dashboardPathMap: Record = { + projects: 'Projects', + bp: 'Buy Prepaid', + wallet: 'Wallet' +} + +// Sample search results for the combobox +export const sampleSearchResults: SearchResultItem[] = [ + { + id: '1', + title: 'Project Alpha', + description: 'Main production project', + href: '/projects/alpha', + icon: Package2, + category: 'Projects' + }, + { + id: '2', + title: 'Project Beta', + description: 'Development environment', + href: '/projects/beta', + icon: Package2, + category: 'Projects' + }, + { + id: '3', + title: 'Billing Settings', + description: 'Manage payment methods', + href: '/wallet/settings', + icon: Settings, + category: 'Settings' + }, + { + id: '4', + title: 'Team Members', + description: 'Manage team access', + href: '/team', + icon: Users, + category: 'Users' + }, + { + id: '5', + title: 'API Documentation', + description: 'Developer resources', + href: '/docs/api', + icon: FileText, + category: 'Documents' + } +] + +// Default dashboard layout configuration +export const defaultDashboardConfig: DashboardLayoutConfig = { + headerConfig: { + navItems: dashboardNavItems, + searchConfig: { + placeholder: 'Search projects, docs, settings...', + searchResults: sampleSearchResults, + categories: ['Projects', 'Documents', 'Settings', 'Users'], + onSelectItem: (item) => { + // In a real app, you would use router.push(item.href) + console.log('Selected item:', item) + window.location.href = item.href + } + }, + userConfig: { + showMobile: true + } + }, + pageHeaderConfig: { + breadcrumbsConfig: { + homeLabel: 'Home', + homeHref: '/', + pathMap: dashboardPathMap + } + } +} diff --git a/apps/deploy-fe/src/lib/.gitkeep b/apps/deploy-fe/src/lib/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/apps/deploy-fe/src/types/dashboard.ts b/apps/deploy-fe/src/types/dashboard.ts new file mode 100644 index 0000000..4fc03e7 --- /dev/null +++ b/apps/deploy-fe/src/types/dashboard.ts @@ -0,0 +1,65 @@ +import type { LucideIcon } from 'lucide-react' +import type { ReactNode } from 'react' + +// Base navigation item type +export interface NavItem { + title: string + href: string + icon?: LucideIcon + isExternal?: boolean +} + +// Search result item +export interface SearchResultItem { + id: string + title: string + description?: string + href: string + icon?: LucideIcon + category?: string +} + +// Configuration for breadcrumbs +export interface BreadcrumbsConfig { + homeLabel?: string + homeHref?: string + pathMap?: Record +} + +// Configuration for search component +export interface SearchConfig { + placeholder?: string + onSearch?: (query: string) => void + showMobile?: boolean + searchResults?: SearchResultItem[] + onSelectItem?: (item: SearchResultItem) => void + categories?: string[] +} + +// Configuration for user navigation +export interface UserNavConfig { + avatarSrc?: string + username?: string + email?: string + showMobile?: boolean +} + +// Configuration for the header +export interface HeaderConfig { + logo?: ReactNode + logoMobile?: ReactNode + navItems: NavItem[] + searchConfig?: SearchConfig + userConfig?: UserNavConfig +} + +// Configuration for the page header +export interface PageHeaderConfig { + breadcrumbsConfig?: BreadcrumbsConfig +} + +// Configuration for the dashboard layout +export interface DashboardLayoutConfig { + headerConfig: HeaderConfig + pageHeaderConfig?: PageHeaderConfig +} diff --git a/apps/deploy-fe/tsconfig.json b/apps/deploy-fe/tsconfig.json index c0240cf..a96ae89 100644 --- a/apps/deploy-fe/tsconfig.json +++ b/apps/deploy-fe/tsconfig.json @@ -4,7 +4,7 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "@workspace/ui/*": ["../../packages/ui/src/*"] + "@workspace/ui/*": ["../../services/ui/src/*"] }, "plugins": [ { @@ -15,8 +15,9 @@ "include": [ "next-env.d.ts", "next.config.mjs", - "./src/**/*.ts", - "./src/**/*.tsx", + "src/**/*.ts", + "src/**/*.tsx", + // ".next/types/**/*.ts" ".next/types/**/*.ts" ], "exclude": ["node_modules"] diff --git a/apps/web/.gitignore b/apps/web/.gitignore deleted file mode 100644 index c878ccb..0000000 --- a/apps/web/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -node_modules -.next/ -.turbo/ -.env -.env.local -.env.development.local -.env.test.local diff --git a/apps/web/components.json b/apps/web/components.json deleted file mode 100644 index bdeb87e..0000000 --- a/apps/web/components.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": true, - "tsx": true, - "tailwind": { - "config": "../../services/ui/tailwind.config.ts", - "css": "../../services/ui/src/styles/globals.css", - "baseColor": "zinc", - "cssVariables": true - }, - "iconLibrary": "lucide", - "aliases": { - "components": "@/components", - "hooks": "@/hooks", - "lib": "@/lib", - "utils": "@workspace/ui/lib/utils", - "ui": "@workspace/ui/components" - } -} diff --git a/apps/web/next-env.d.ts b/apps/web/next-env.d.ts deleted file mode 100644 index 1b3be08..0000000 --- a/apps/web/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/web/next.config.mjs b/apps/web/next.config.mjs deleted file mode 100644 index 05584cb..0000000 --- a/apps/web/next.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - transpilePackages: ['@workspace/ui'] -} - -export default nextConfig diff --git a/apps/web/package.json b/apps/web/package.json deleted file mode 100644 index 0bdfc2d..0000000 --- a/apps/web/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "web", - "version": "0.0.1", - "type": "module", - "private": true, - "scripts": { - "dev": "next dev --turbopack", - "build": "next build", - "start": "next start", - "lint": "biome check .", - "lint:fix": "biome check --write .", - "format": "biome format .", - "format:fix": "biome format --write .", - "check-types": "tsc --noEmit", - "fix-types": "tsc --noEmit --pretty --incremental" - }, - "dependencies": { - "@biomejs/biome": "^1.9.4", - "@biomejs/monorepo": "github:biomejs/biome", - "@hookform/resolvers": "^4.1.2", - "@radix-ui/react-accordion": "^1.2.3", - "@radix-ui/react-alert-dialog": "^1.1.6", - "@radix-ui/react-aspect-ratio": "^1.1.2", - "@radix-ui/react-avatar": "^1.1.3", - "@radix-ui/react-checkbox": "^1.1.4", - "@radix-ui/react-collapsible": "^1.1.3", - "@radix-ui/react-context-menu": "^2.2.6", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-dropdown-menu": "^2.1.6", - "@radix-ui/react-hover-card": "^1.1.6", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-menubar": "^1.1.6", - "@radix-ui/react-navigation-menu": "^1.2.5", - "@radix-ui/react-popover": "^1.1.6", - "@radix-ui/react-progress": "^1.1.2", - "@radix-ui/react-radio-group": "^1.2.3", - "@radix-ui/react-scroll-area": "^1.2.3", - "@radix-ui/react-select": "^2.1.6", - "@radix-ui/react-separator": "^1.1.2", - "@radix-ui/react-slider": "^1.2.3", - "@radix-ui/react-slot": "^1.1.1", - "@radix-ui/react-switch": "^1.1.3", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-toggle": "^1.1.2", - "@radix-ui/react-toggle-group": "^1.1.2", - "@radix-ui/react-tooltip": "^1.1.8", - "@tailwindcss/upgrade": "^4.0.6", - "@workspace/ui": "workspace:*", - "class-variance-authority": "^0.7.0", - "cmdk": "1.0.0", - "date-fns": "^4.1.0", - "embla-carousel-react": "^8.5.2", - "input-otp": "^1.4.2", - "lucide-react": "0.456.0", - "next": "^15.1.0", - "next-themes": "^0.4.4", - "react": "^19.0.0", - "react-day-picker": "8.10.1", - "react-dom": "^19.0.0", - "react-hook-form": "^7.54.2", - "react-resizable-panels": "^2.1.7", - "recharts": "^2.15.1", - "sonner": "^2.0.1", - "vaul": "^1.1.2", - "zod": "^3.23.8" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "18.3.0", - "@types/react-dom": "18.3.1", - "@workspace/typescript-config": "workspace:*", - "postcss": "^8", - "tailwindcss": "^4.0.9", - "typescript": "^5" - } -} diff --git a/apps/web/postcss.config.mjs b/apps/web/postcss.config.mjs deleted file mode 100644 index d923411..0000000 --- a/apps/web/postcss.config.mjs +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - '@tailwindcss/postcss': {}, - autoprefixer: {} - } -} diff --git a/apps/web/src/app/favicon.ico b/apps/web/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx deleted file mode 100644 index f30f61b..0000000 --- a/apps/web/src/app/layout.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Providers } from '@/components/providers' -import '@workspace/ui/globals.css' - -import { Geist, Geist_Mono } from 'next/font/google' - -const fontSans = Geist({ - subsets: ['latin'], - variable: '--font-sans' -}) - -const fontMono = Geist_Mono({ - subsets: ['latin'], - variable: '--font-mono' -}) - -export default function RootLayout({ - children -}: Readonly<{ - children: React.ReactNode -}>) { - return ( - - - {children} - - - ) -} diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx deleted file mode 100644 index 078960f..0000000 --- a/apps/web/src/app/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Button } from '@workspace/ui/components/button' - -export default function Page() { - return ( -
-
-

Hello World

- -
-
- ) -} diff --git a/apps/web/src/components/.gitkeep b/apps/web/src/components/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/apps/web/src/components/providers.tsx b/apps/web/src/components/providers.tsx deleted file mode 100644 index a78ecb5..0000000 --- a/apps/web/src/components/providers.tsx +++ /dev/null @@ -1,18 +0,0 @@ -'use client' - -import { ThemeProvider as NextThemesProvider } from 'next-themes' -import type * as React from 'react' - -export function Providers({ children }: { children: React.ReactNode }) { - return ( - - {children} - - ) -} diff --git a/apps/web/src/hooks/.gitkeep b/apps/web/src/hooks/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/apps/web/src/lib/.gitkeep b/apps/web/src/lib/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts deleted file mode 100644 index 7dc697b..0000000 --- a/apps/web/tailwind.config.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '@workspace/ui/tailwind.config' diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json deleted file mode 100644 index 305dcfa..0000000 --- a/apps/web/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "@workspace/typescript-config/nextjs.json", - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"], - "@workspace/ui/*": ["../../packages/ui/src/*"] - }, - "plugins": [ - { - "name": "next" - } - ] - }, - "include": [ - "next-env.d.ts", - "next.config.mjs", - "**/*.ts", - "**/*.tsx", - ".next/types/**/*.ts" - ], - "exclude": ["node_modules"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2cc4226..b2dd608 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,19 +25,16 @@ importers: version: 2.4.4 typescript: specifier: ^5.7.3 - version: 5.7.3 + version: 5.8.2 apps/deploy-fe: dependencies: '@biomejs/biome': specifier: ^1.9.4 version: 1.9.4 - '@biomejs/monorepo': - specifier: github:biomejs/biome - version: https://codeload.github.com/biomejs/biome/tar.gz/21dd358be5dade01d672916a0ab76bc825ef85cb '@hookform/resolvers': specifier: ^4.1.2 - version: 4.1.2(react-hook-form@7.54.2(react@19.0.0)) + version: 4.1.3(react-hook-form@7.54.2(react@19.0.0)) '@radix-ui/react-accordion': specifier: ^1.2.3 version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -99,7 +96,7 @@ importers: specifier: ^1.2.3 version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-slot': - specifier: ^1.1.1 + specifier: ^1.1.2 version: 1.1.2(@types/react@18.3.0)(react@19.0.0) '@radix-ui/react-switch': specifier: ^1.1.3 @@ -122,9 +119,12 @@ importers: class-variance-authority: specifier: ^0.7.0 version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 cmdk: - specifier: 1.0.0 - version: 1.0.0(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 1.0.4 + version: 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -135,11 +135,11 @@ importers: specifier: ^1.4.2 version: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) lucide-react: - specifier: 0.456.0 - version: 0.456.0(react@19.0.0) + specifier: 0.477.0 + version: 0.477.0(react@19.0.0) next: - specifier: ^15.1.0 - version: 15.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^15.2.1 + version: 15.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next-themes: specifier: ^0.4.4 version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -164,6 +164,9 @@ importers: sonner: specifier: ^2.0.1 version: 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + tailwind-merge: + specifier: ^3.0.2 + version: 3.0.2 vaul: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -172,11 +175,11 @@ importers: version: 3.24.2 zustand: specifier: ^5.0.3 - version: 5.0.3(@types/react@18.3.0)(react@19.0.0) + version: 5.0.3(@types/react@18.3.0)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)) devDependencies: '@types/node': specifier: ^20 - version: 20.17.19 + version: 20.17.23 '@types/react': specifier: 18.3.0 version: 18.3.0 @@ -190,180 +193,11 @@ importers: specifier: ^8 version: 8.5.3 tailwindcss: - specifier: ^4.0.9 - version: 4.0.9 + specifier: ^3.4.17 + version: 3.4.17(ts-node@10.9.2(@types/node@20.17.23)(typescript@5.8.2)) typescript: specifier: ^5 - version: 5.7.3 - - apps/web: - dependencies: - '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 - '@biomejs/monorepo': - specifier: github:biomejs/biome - version: https://codeload.github.com/biomejs/biome/tar.gz/21dd358be5dade01d672916a0ab76bc825ef85cb - '@hookform/resolvers': - specifier: ^4.1.2 - version: 4.1.2(react-hook-form@7.54.2(react@19.0.0)) - '@radix-ui/react-accordion': - specifier: ^1.2.3 - version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-alert-dialog': - specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-aspect-ratio': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-avatar': - specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-checkbox': - specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-collapsible': - specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-context-menu': - specifier: ^2.2.6 - version: 2.2.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-dialog': - specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-dropdown-menu': - specifier: ^2.1.6 - version: 2.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-hover-card': - specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-label': - specifier: ^2.1.2 - version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-menubar': - specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-navigation-menu': - specifier: ^1.2.5 - version: 1.2.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-popover': - specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-progress': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-radio-group': - specifier: ^1.2.3 - version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-scroll-area': - specifier: ^1.2.3 - version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-select': - specifier: ^2.1.6 - version: 2.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-separator': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slider': - specifier: ^1.2.3 - version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': - specifier: ^1.1.1 - version: 1.1.2(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-switch': - specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-tabs': - specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-toggle': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-toggle-group': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-tooltip': - specifier: ^1.1.8 - version: 1.1.8(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tailwindcss/upgrade': - specifier: ^4.0.6 - version: 4.0.6 - '@workspace/ui': - specifier: workspace:* - version: link:../../services/ui - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.1 - cmdk: - specifier: 1.0.0 - version: 1.0.0(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - date-fns: - specifier: ^4.1.0 - version: 4.1.0 - embla-carousel-react: - specifier: ^8.5.2 - version: 8.5.2(react@19.0.0) - input-otp: - specifier: ^1.4.2 - version: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - lucide-react: - specifier: 0.456.0 - version: 0.456.0(react@19.0.0) - next: - specifier: ^15.1.0 - version: 15.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - next-themes: - specifier: ^0.4.4 - version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: - specifier: ^19.0.0 - version: 19.0.0 - react-day-picker: - specifier: 8.10.1 - version: 8.10.1(date-fns@4.1.0)(react@19.0.0) - react-dom: - specifier: ^19.0.0 - version: 19.0.0(react@19.0.0) - react-hook-form: - specifier: ^7.54.2 - version: 7.54.2(react@19.0.0) - react-resizable-panels: - specifier: ^2.1.7 - version: 2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - recharts: - specifier: ^2.15.1 - version: 2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - sonner: - specifier: ^2.0.1 - version: 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - vaul: - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - zod: - specifier: ^3.23.8 - version: 3.24.2 - devDependencies: - '@types/node': - specifier: ^20 - version: 20.17.19 - '@types/react': - specifier: 18.3.0 - version: 18.3.0 - '@types/react-dom': - specifier: 18.3.1 - version: 18.3.1 - '@workspace/typescript-config': - specifier: workspace:* - version: link:../../services/typescript-config - postcss: - specifier: ^8 - version: 8.5.3 - tailwindcss: - specifier: ^4.0.9 - version: 4.0.9 - typescript: - specifier: ^5 - version: 5.7.3 + version: 5.8.2 services/typescript-config: {} @@ -374,47 +208,155 @@ importers: version: 1.9.4 '@biomejs/monorepo': specifier: github:biomejs/biome - version: https://codeload.github.com/biomejs/biome/tar.gz/21dd358be5dade01d672916a0ab76bc825ef85cb + version: https://codeload.github.com/biomejs/biome/tar.gz/1c3707dafd1337582538c336113d621558e4c176 + '@hookform/resolvers': + specifier: ^4.1.2 + version: 4.1.3(react-hook-form@7.54.2(react@19.0.0)) + '@radix-ui/react-accordion': + specifier: ^1.2.3 + version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-alert-dialog': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-aspect-ratio': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-avatar': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-checkbox': + specifier: ^1.1.4 + version: 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-collapsible': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-context-menu': + specifier: ^2.2.6 + version: 2.2.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-dialog': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.6 + version: 2.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-hover-card': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-label': + specifier: ^2.1.2 + version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-menubar': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-navigation-menu': + specifier: ^1.2.5 + version: 1.2.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-popover': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-progress': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-radio-group': + specifier: ^1.2.3 + version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-scroll-area': + specifier: ^1.2.3 + version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-select': + specifier: ^2.1.6 + version: 2.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-separator': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slider': + specifier: ^1.2.3 + version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-slot': - specifier: ^1.1.1 + specifier: ^1.1.2 version: 1.1.2(@types/react@18.3.0)(react@19.0.0) + '@radix-ui/react-switch': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-tabs': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-toggle': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-toggle-group': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-tooltip': + specifier: ^1.1.8 + version: 1.1.8(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) class-variance-authority: - specifier: ^0.7.0 + specifier: ^0.7.1 version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 + cmdk: + specifier: 1.0.4 + version: 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + embla-carousel-react: + specifier: ^8.5.2 + version: 8.5.2(react@19.0.0) + input-otp: + specifier: ^1.4.2 + version: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) lucide-react: - specifier: 0.456.0 - version: 0.456.0(react@19.0.0) + specifier: 0.477.0 + version: 0.477.0(react@19.0.0) next-themes: - specifier: ^0.4.3 + specifier: ^0.4.4 version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 + react-day-picker: + specifier: 8.10.1 + version: 8.10.1(date-fns@4.1.0)(react@19.0.0) react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) + react-hook-form: + specifier: ^7.54.2 + version: 7.54.2(react@19.0.0) + react-resizable-panels: + specifier: ^2.1.7 + version: 2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + recharts: + specifier: ^2.15.1 + version: 2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + sonner: + specifier: ^2.0.1 + version: 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: - specifier: ^2.5.4 - version: 2.6.0 + specifier: ^3.0.2 + version: 3.0.2 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@4.0.9) + version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2))) + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zod: - specifier: ^3.23.8 + specifier: ^3.24.2 version: 3.24.2 devDependencies: '@tailwindcss/postcss': specifier: ^4.0.9 - version: 4.0.9 + version: 4.0.11 '@turbo/gen': specifier: ^2.2.3 - version: 2.4.4(@types/node@22.13.5)(typescript@5.7.3) + version: 2.4.4(@types/node@22.13.9)(typescript@5.8.2) '@types/node': specifier: ^22.9.0 - version: 22.13.5 + version: 22.13.9 '@types/react': specifier: 18.3.0 version: 18.3.0 @@ -431,11 +373,11 @@ importers: specifier: ^8.5.3 version: 8.5.3 tailwindcss: - specifier: ^4.0.9 - version: 4.0.9 + specifier: ^3.4.17 + version: 3.4.17(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2)) typescript: specifier: ^5.6.3 - version: 5.7.3 + version: 5.8.2 packages: @@ -504,8 +446,8 @@ packages: cpu: [x64] os: [win32] - '@biomejs/monorepo@https://codeload.github.com/biomejs/biome/tar.gz/21dd358be5dade01d672916a0ab76bc825ef85cb': - resolution: {tarball: https://codeload.github.com/biomejs/biome/tar.gz/21dd358be5dade01d672916a0ab76bc825ef85cb} + '@biomejs/monorepo@https://codeload.github.com/biomejs/biome/tar.gz/1c3707dafd1337582538c336113d621558e4c176': + resolution: {tarball: https://codeload.github.com/biomejs/biome/tar.gz/1c3707dafd1337582538c336113d621558e4c176} version: 0.0.0 '@cspotcode/source-map-support@0.8.1': @@ -530,8 +472,8 @@ packages: '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} - '@hookform/resolvers@4.1.2': - resolution: {integrity: sha512-wl6H9c9wLOZMJAqGLEVKzbCkxJuV+BYuLFZFCQtCwMe0b3qQk4kUBd/ZAj13SwcSqcx86rCgSCyngQfmA6DOWg==} + '@hookform/resolvers@4.1.3': + resolution: {integrity: sha512-Jsv6UOWYTrEFJ/01ZrnwVXs7KDvP8XIo115i++5PWvNkNvkrsTfGiLS6w+eJ57CYtUtDQalUWovCZDHFJ8u1VQ==} peerDependencies: react-hook-form: ^7.0.0 @@ -640,63 +582,78 @@ packages: cpu: [x64] os: [win32] + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@next/env@15.2.0': - resolution: {integrity: sha512-eMgJu1RBXxxqqnuRJQh5RozhskoNUDHBFybvi+Z+yK9qzKeG7dadhv/Vp1YooSZmCnegf7JxWuapV77necLZNA==} + '@next/env@15.2.1': + resolution: {integrity: sha512-JmY0qvnPuS2NCWOz2bbby3Pe0VzdAQ7XpEB6uLIHmtXNfAsAO0KLQLkuAoc42Bxbo3/jMC3dcn9cdf+piCcG2Q==} - '@next/swc-darwin-arm64@15.2.0': - resolution: {integrity: sha512-rlp22GZwNJjFCyL7h5wz9vtpBVuCt3ZYjFWpEPBGzG712/uL1bbSkS675rVAUCRZ4hjoTJ26Q7IKhr5DfJrHDA==} + '@next/swc-darwin-arm64@15.2.1': + resolution: {integrity: sha512-aWXT+5KEREoy3K5AKtiKwioeblmOvFFjd+F3dVleLvvLiQ/mD//jOOuUcx5hzcO9ISSw4lrqtUPntTpK32uXXQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.2.0': - resolution: {integrity: sha512-DiU85EqSHogCz80+sgsx90/ecygfCSGl5P3b4XDRVZpgujBm5lp4ts7YaHru7eVTyZMjHInzKr+w0/7+qDrvMA==} + '@next/swc-darwin-x64@15.2.1': + resolution: {integrity: sha512-E/w8ervu4fcG5SkLhvn1NE/2POuDCDEy5gFbfhmnYXkyONZR68qbUlJlZwuN82o7BrBVAw+tkR8nTIjGiMW1jQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.2.0': - resolution: {integrity: sha512-VnpoMaGukiNWVxeqKHwi8MN47yKGyki5q+7ql/7p/3ifuU2341i/gDwGK1rivk0pVYbdv5D8z63uu9yMw0QhpQ==} + '@next/swc-linux-arm64-gnu@15.2.1': + resolution: {integrity: sha512-gXDX5lIboebbjhiMT6kFgu4svQyjoSed6dHyjx5uZsjlvTwOAnZpn13w9XDaIMFFHw7K8CpBK7HfDKw0VZvUXQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.2.0': - resolution: {integrity: sha512-ka97/ssYE5nPH4Qs+8bd8RlYeNeUVBhcnsNUmFM6VWEob4jfN9FTr0NBhXVi1XEJpj3cMfgSRW+LdE3SUZbPrw==} + '@next/swc-linux-arm64-musl@15.2.1': + resolution: {integrity: sha512-3v0pF/adKZkBWfUffmB/ROa+QcNTrnmYG4/SS+r52HPwAK479XcWoES2I+7F7lcbqc7mTeVXrIvb4h6rR/iDKg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.2.0': - resolution: {integrity: sha512-zY1JduE4B3q0k2ZCE+DAF/1efjTXUsKP+VXRtrt/rJCTgDlUyyryx7aOgYXNc1d8gobys/Lof9P9ze8IyRDn7Q==} + '@next/swc-linux-x64-gnu@15.2.1': + resolution: {integrity: sha512-RbsVq2iB6KFJRZ2cHrU67jLVLKeuOIhnQB05ygu5fCNgg8oTewxweJE8XlLV+Ii6Y6u4EHwETdUiRNXIAfpBww==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.2.0': - resolution: {integrity: sha512-QqvLZpurBD46RhaVaVBepkVQzh8xtlUN00RlG4Iq1sBheNugamUNPuZEH1r9X1YGQo1KqAe1iiShF0acva3jHQ==} + '@next/swc-linux-x64-musl@15.2.1': + resolution: {integrity: sha512-QHsMLAyAIu6/fWjHmkN/F78EFPKmhQlyX5C8pRIS2RwVA7z+t9cTb0IaYWC3EHLOTjsU7MNQW+n2xGXr11QPpg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.2.0': - resolution: {integrity: sha512-ODZ0r9WMyylTHAN6pLtvUtQlGXBL9voljv6ujSlcsjOxhtXPI1Ag6AhZK0SE8hEpR1374WZZ5w33ChpJd5fsjw==} + '@next/swc-win32-arm64-msvc@15.2.1': + resolution: {integrity: sha512-Gk42XZXo1cE89i3hPLa/9KZ8OuupTjkDmhLaMKFohjf9brOeZVEa3BQy1J9s9TWUqPhgAEbwv6B2+ciGfe54Vw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.2.0': - resolution: {integrity: sha512-8+4Z3Z7xa13NdUuUAcpVNA6o76lNPniBd9Xbo02bwXQXnZgFvEopwY2at5+z7yHl47X9qbZpvwatZ2BRo3EdZw==} + '@next/swc-win32-x64-msvc@15.2.1': + resolution: {integrity: sha512-YjqXCl8QGhVlMR8uBftWk0iTmvtntr41PhG1kvzGp0sUP/5ehTM+cwx25hKE54J0CRnHYjSGjSH3gkHEaHIN9g==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -713,12 +670,13 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@radix-ui/number@1.1.0': resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - '@radix-ui/primitive@1.1.1': resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} @@ -826,15 +784,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-compose-refs@1.1.1': resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} peerDependencies: @@ -857,15 +806,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-context@1.1.1': resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} peerDependencies: @@ -875,19 +815,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.0.5': - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-dialog@1.1.6': resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} peerDependencies: @@ -910,19 +837,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-dismissable-layer@1.1.5': resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} peerDependencies: @@ -949,15 +863,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-focus-guards@1.1.1': resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} peerDependencies: @@ -967,19 +872,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-focus-scope@1.1.2': resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} peerDependencies: @@ -1006,15 +898,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-id@1.1.0': resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: @@ -1102,19 +985,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-portal@1.1.4': resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} peerDependencies: @@ -1128,19 +998,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-presence@1.1.2': resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} peerDependencies: @@ -1154,19 +1011,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-primitive@2.0.2': resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} peerDependencies: @@ -1271,15 +1115,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-slot@1.1.2': resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} peerDependencies: @@ -1354,15 +1189,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-callback-ref@1.1.0': resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: @@ -1372,15 +1198,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-controllable-state@1.1.0': resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: @@ -1390,15 +1207,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-escape-keydown@1.1.0': resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: @@ -1408,15 +1216,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-layout-effect@1.1.0': resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: @@ -1469,10 +1268,6 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} @@ -1482,85 +1277,81 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@tailwindcss/node@4.0.9': - resolution: {integrity: sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==} + '@tailwindcss/node@4.0.11': + resolution: {integrity: sha512-y1Ko/QaZh6Fv8sSOOPpRztT8nvNKSetvE4CLxsDdyY5kkBS7hKq04D3y3ldelniWe6YqRIzBHTzfAIc1hZ+0FA==} - '@tailwindcss/oxide-android-arm64@4.0.9': - resolution: {integrity: sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==} + '@tailwindcss/oxide-android-arm64@4.0.11': + resolution: {integrity: sha512-6gGLTOwR3WNh63pUnY6znRY7XiLRVmvyAkQRdyRxPquNIZ7lTeqWlZcxt5Gtlh1VzZXkQ8OWyYte8ZBnulhvwA==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.0.9': - resolution: {integrity: sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==} + '@tailwindcss/oxide-darwin-arm64@4.0.11': + resolution: {integrity: sha512-CM5SF53zzqYqQQGlP6N94zTliUi2FxW4itr223xb2PWgbwf48JTE2P6DNrA5DHOxacIliiCYiBzmKGwKdGMu8w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.0.9': - resolution: {integrity: sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==} + '@tailwindcss/oxide-darwin-x64@4.0.11': + resolution: {integrity: sha512-YB1LJC04O3UugV0egl3jnpXWyJIlcV7oVb0cplcqG0aP6nPYH0SqmD+ysbOrl6Ti1qAVuOHnfJvnAup2hbXMgw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.0.9': - resolution: {integrity: sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==} + '@tailwindcss/oxide-freebsd-x64@4.0.11': + resolution: {integrity: sha512-tK63Mi/kbU5GVZFkUH+zLL/G0yiRGY15MU2xFUa3H2q2px4IuWJTWRmv6iPOcZm3kYpsh+0C+dSoz0lDEknENg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9': - resolution: {integrity: sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.11': + resolution: {integrity: sha512-vMJPxCQtdhqGGw1MOQnPJ6hyh5BR5EQhRXJk9Ji/1oo2P1chgEaPuGYGZGdZMy9bnFaufnjae0liqk6E3SNTFw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.0.9': - resolution: {integrity: sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==} + '@tailwindcss/oxide-linux-arm64-gnu@4.0.11': + resolution: {integrity: sha512-5qac6Wps9vCwkQcgyw+VlJvXkdGoOnJp8eK3TaKpZ3fTQozGgvy/AyimV8I7I4ZjU6mTjuQbZe1CPP/cuG+Ldw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.0.9': - resolution: {integrity: sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==} + '@tailwindcss/oxide-linux-arm64-musl@4.0.11': + resolution: {integrity: sha512-hR/Lw7QgODodKLpf37+ohJJZjYEJLg6c+h3nIXJ6eLYDbCZjJ0Z0+jHP0rHXyGab7JL+QlIksNuNbJjj+2qpsw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.0.9': - resolution: {integrity: sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==} + '@tailwindcss/oxide-linux-x64-gnu@4.0.11': + resolution: {integrity: sha512-4aCBYzU2SyFUw/dSP3SYAaeo3I7+c6to9acqXAl/Y5XnAO3q6SBrjw2sU2RG7f5Yi+jxevFh4BcOS5ofhhoTIA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.0.9': - resolution: {integrity: sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==} + '@tailwindcss/oxide-linux-x64-musl@4.0.11': + resolution: {integrity: sha512-Y5j5Yp3lRcgyzOF+CY+u54aUUtvZ6OwiVPeILE3wqbsDA6X3UiUpVr8tW2eREERld0gELfXG8TyNAtDsBIOHwA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-win32-arm64-msvc@4.0.9': - resolution: {integrity: sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==} + '@tailwindcss/oxide-win32-arm64-msvc@4.0.11': + resolution: {integrity: sha512-ofgW1IugQDJR+fGJUZMniwTzrwHvaw6wpoOE1mIXBFP2wWoDjvNTXUJyMDxF2N6UypXGYCJMDdEohB1CyWf9cg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.0.9': - resolution: {integrity: sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==} + '@tailwindcss/oxide-win32-x64-msvc@4.0.11': + resolution: {integrity: sha512-jUDa1xZNVPuarkEbwxh8aFQ3oagDQRYXcPmfsiDZ2IAxcYnE8YPNbA2HvFxJowppnnu/v/xdWvneN24VBr1Zpw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.0.9': - resolution: {integrity: sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==} + '@tailwindcss/oxide@4.0.11': + resolution: {integrity: sha512-vpR3j69boI64ftpDbbC2NPXhbF7LEkBbQ/Ol1mSU9medtdcmabMiEPlN9FtvE2IkoXZpiDM1utSsdutZSka9Cg==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.0.9': - resolution: {integrity: sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==} - - '@tailwindcss/upgrade@4.0.6': - resolution: {integrity: sha512-vq6wVJ+jdHuiHfIPO7/1EQFZbTW7OhFmTc40OJdnI0mvC0J/7QC1hOtIIV+JCySxp+ozOerYTu6cZxhDdl4xCQ==} - hasBin: true + '@tailwindcss/postcss@4.0.11': + resolution: {integrity: sha512-bhHxHe1NEvh3rKSzJqXYJ8E1MDPAMKc0/5qwRdy+6Ed8PqyicwE1l9zPvt6iZJgIIA1PPX6VF80PDluFe8tyXg==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1621,11 +1412,11 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@20.17.19': - resolution: {integrity: sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==} + '@types/node@20.17.23': + resolution: {integrity: sha512-8PCGZ1ZJbEZuYNTMqywO+Sj4vSKjSjT6Ua+6RFOYlEvIvKQABPtrNkoVSLSKDb4obYcMhspVKmsw8Cm10NFRUg==} - '@types/node@22.13.5': - resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==} + '@types/node@22.13.9': + resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==} '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} @@ -1646,8 +1437,8 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1667,6 +1458,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1675,9 +1470,23 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1710,6 +1519,10 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1738,8 +1551,12 @@ packages: camel-case@3.0.0: resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - caniuse-lite@1.0.30001701: - resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001702: + resolution: {integrity: sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1763,6 +1580,10 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -1793,11 +1614,11 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - cmdk@1.0.0: - resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} + cmdk@1.0.4: + resolution: {integrity: sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1823,14 +1644,18 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} constant-case@2.0.0: resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - core-js-pure@3.40.0: - resolution: {integrity: sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==} + core-js-pure@3.41.0: + resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==} create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -1910,14 +1735,6 @@ packages: decimal.js-light@2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -1933,11 +1750,6 @@ packages: resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} engines: {node: '>=8'} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -1945,6 +1757,9 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -1953,14 +1768,20 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dot-case@2.1.1: resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} - electron-to-chromium@1.5.107: - resolution: {integrity: sha512-dJr1o6yCntRkXElnhsHh1bAV19bo/hKyFf7tCcWgpXbuFIF0Lakjgqv5LRfSDaNzAII8Fnxg2tqgHkgCvxdbxw==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.112: + resolution: {integrity: sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==} embla-carousel-react@8.5.2: resolution: {integrity: sha512-Tmx+uY3MqseIGdwp0ScyUuxpBgx5jX1f7od4Cm5mDwg/dptEiTKf9xp6tw0lZN2VA9JbnVMl/aikmbc53c6QFA==} @@ -1978,6 +1799,9 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -2038,6 +1862,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -2048,6 +1876,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -2067,6 +1900,14 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2075,10 +1916,6 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2129,10 +1966,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.3: - resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} - engines: {node: '>= 4'} - indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -2172,6 +2005,10 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -2225,6 +2062,13 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -2296,70 +2140,77 @@ packages: resolution: {integrity: sha512-/5royc/WbL2KTfFJ54wEdvxUZOBXwc54v/fW2Bz4LMOkAA3LWIxnoUiybSiauu+nhdTG98qERxH1YHwF2wZlAA==} hasBin: true - lightningcss-darwin-arm64@1.29.1: - resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.1: - resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.1: - resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.1: - resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.1: - resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.1: - resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.1: - resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.1: - resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.1: - resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.1: - resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.1: - resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. @@ -2385,14 +2236,17 @@ packages: lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - lucide-react@0.456.0: - resolution: {integrity: sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA==} + lucide-react@0.477.0: + resolution: {integrity: sha512-yCf7aYxerFZAbd8jHJxjwe1j7jEMPptjnaOqdYeirFnEy85cNR3/L+o0I875CYFYya+eEVzZSbNuRk8BZPDpVw==} peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -2422,20 +2276,23 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2454,8 +2311,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.2.0: - resolution: {integrity: sha512-VaiM7sZYX8KIAHBrRGSFytKknkrexNfGb8GlG6e93JqueCspuGte8i4ybn8z4ww1x3f2uzY4YpTaBEW4/hvsoQ==} + next@15.2.1: + resolution: {integrity: sha512-zxbsdQv3OqWXybK5tMkPCBKyhIz63RstJ+NvlfkaLMc/m5MwXgz2e92k+hSKcyBpyADhMk2C31RIiaDjUZae7g==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -2478,14 +2335,6 @@ packages: no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - node-addon-api@8.3.1: - resolution: {integrity: sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==} - engines: {node: ^18 || ^20 || >= 21} - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - node-plop@0.26.3: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} engines: {node: '>=8.9.4'} @@ -2493,6 +2342,10 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} @@ -2505,6 +2358,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2536,6 +2393,9 @@ packages: resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} @@ -2556,14 +2416,14 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -2578,14 +2438,42 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - postcss-import@16.1.0: - resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==} - engines: {node: '>=18.0.0'} + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -2599,11 +2487,6 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - prettier@3.5.0: - resolution: {integrity: sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==} - engines: {node: '>=14'} - hasBin: true - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -2654,16 +2537,6 @@ packages: '@types/react': optional: true - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-remove-scroll@2.6.3: resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} engines: {node: '>=10'} @@ -2713,6 +2586,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + recharts-scale@0.4.5: resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} @@ -2802,6 +2679,10 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -2809,10 +2690,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -2853,6 +2730,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2860,6 +2741,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -2881,6 +2766,11 @@ packages: babel-plugin-macros: optional: true + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -2896,24 +2786,33 @@ packages: swap-case@1.1.2: resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} - tailwind-merge@2.6.0: - resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + tailwind-merge@3.0.2: + resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@4.0.6: - resolution: {integrity: sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw==} + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true - tailwindcss@4.0.9: - resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==} + tailwindcss@4.0.11: + resolution: {integrity: sha512-GZ6+tNwieqvpFLZfx2tkZpfOMAK7iumbOJOLmd6v8AcYuHbjUb+cmDRu6l+rFkIqarh5FfLbCSRJhegcVdoPng==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -2937,24 +2836,8 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tree-sitter-javascript@0.23.1: - resolution: {integrity: sha512-/bnhbrTD9frUYHQTiYnPcxyHORIw157ERBa6dqzaKxvR/x3PC4Yzd+D1pZIMS6zNg2v3a8BZ0oK7jHqsQo9fWA==} - peerDependencies: - tree-sitter: ^0.21.1 - peerDependenciesMeta: - tree-sitter: - optional: true - - tree-sitter-typescript@0.23.2: - resolution: {integrity: sha512-e04JUUKxTT53/x3Uq1zIL45DoYKVfHH4CZqwgZhPg5qYROl5nQjV+85ruFzFGZxu+QeFVbRTPDRnqL9UbU4VeA==} - peerDependencies: - tree-sitter: ^0.21.0 - peerDependenciesMeta: - tree-sitter: - optional: true - - tree-sitter@0.22.4: - resolution: {integrity: sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -3014,8 +2897,8 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true @@ -3030,10 +2913,6 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -3073,6 +2952,11 @@ packages: '@types/react': optional: true + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3107,9 +2991,22 @@ packages: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -3141,7 +3038,7 @@ snapshots: '@babel/runtime-corejs3@7.26.9': dependencies: - core-js-pure: 3.40.0 + core-js-pure: 3.41.0 regenerator-runtime: 0.14.1 '@babel/runtime@7.26.9': @@ -3183,7 +3080,7 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true - '@biomejs/monorepo@https://codeload.github.com/biomejs/biome/tar.gz/21dd358be5dade01d672916a0ab76bc825ef85cb': {} + '@biomejs/monorepo@https://codeload.github.com/biomejs/biome/tar.gz/1c3707dafd1337582538c336113d621558e4c176': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -3211,7 +3108,7 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@hookform/resolvers@4.1.2(react-hook-form@7.54.2(react@19.0.0))': + '@hookform/resolvers@4.1.3(react-hook-form@7.54.2(react@19.0.0))': dependencies: '@standard-schema/utils': 0.3.0 react-hook-form: 7.54.2(react@19.0.0) @@ -3291,39 +3188,61 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@next/env@15.2.0': {} + '@next/env@15.2.1': {} - '@next/swc-darwin-arm64@15.2.0': + '@next/swc-darwin-arm64@15.2.1': optional: true - '@next/swc-darwin-x64@15.2.0': + '@next/swc-darwin-x64@15.2.1': optional: true - '@next/swc-linux-arm64-gnu@15.2.0': + '@next/swc-linux-arm64-gnu@15.2.1': optional: true - '@next/swc-linux-arm64-musl@15.2.0': + '@next/swc-linux-arm64-musl@15.2.1': optional: true - '@next/swc-linux-x64-gnu@15.2.0': + '@next/swc-linux-x64-gnu@15.2.1': optional: true - '@next/swc-linux-x64-musl@15.2.0': + '@next/swc-linux-x64-musl@15.2.1': optional: true - '@next/swc-win32-arm64-msvc@15.2.0': + '@next/swc-win32-arm64-msvc@15.2.1': optional: true - '@next/swc-win32-x64-msvc@15.2.0': + '@next/swc-win32-x64-msvc@15.2.1': optional: true '@nodelib/fs.scandir@2.1.5': @@ -3338,11 +3257,10 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@radix-ui/number@1.1.0': {} + '@pkgjs/parseargs@0.11.0': + optional: true - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.26.9 + '@radix-ui/number@1.1.0': {} '@radix-ui/primitive@1.1.1': {} @@ -3451,13 +3369,6 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.0)(react@19.0.0)': dependencies: react: 19.0.0 @@ -3478,42 +3389,12 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-context@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-context@1.1.1(@types/react@18.3.0)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 18.3.0 - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.0)(react@19.0.0) - aria-hidden: 1.2.4 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-remove-scroll: 2.5.5(@types/react@18.3.0)(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - '@types/react-dom': 18.3.1 - '@radix-ui/react-dialog@1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 @@ -3542,20 +3423,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.0 - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - '@types/react-dom': 18.3.1 - '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 @@ -3584,31 +3451,12 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.0)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 18.3.0 - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - '@types/react-dom': 18.3.1 - '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.0)(react@19.0.0) @@ -3637,14 +3485,6 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-id@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-id@1.1.0(@types/react@18.3.0)(react@19.0.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.0)(react@19.0.0) @@ -3768,16 +3608,6 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - '@types/react-dom': 18.3.1 - '@radix-ui/react-portal@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -3788,17 +3618,6 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - '@types/react-dom': 18.3.1 - '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.0)(react@19.0.0) @@ -3809,16 +3628,6 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - '@types/react-dom': 18.3.1 - '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-slot': 1.1.2(@types/react@18.3.0)(react@19.0.0) @@ -3947,14 +3756,6 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-slot@1.0.2(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-slot@1.1.2(@types/react@18.3.0)(react@19.0.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.0)(react@19.0.0) @@ -4039,27 +3840,12 @@ snapshots: '@types/react': 18.3.0 '@types/react-dom': 18.3.1 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.0)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 18.3.0 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.0)(react@19.0.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.0)(react@19.0.0) @@ -4067,14 +3853,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.0 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.0)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.0)(react@19.0.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.0)(react@19.0.0) @@ -4082,13 +3860,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.0 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.0)(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.9 - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.0 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.0)(react@19.0.0)': dependencies: react: 19.0.0 @@ -4126,8 +3897,6 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@standard-schema/utils@0.3.0': {} '@swc/counter@0.1.3': {} @@ -4136,88 +3905,67 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/node@4.0.9': + '@tailwindcss/node@4.0.11': dependencies: enhanced-resolve: 5.18.1 jiti: 2.4.2 - tailwindcss: 4.0.9 + tailwindcss: 4.0.11 - '@tailwindcss/oxide-android-arm64@4.0.9': + '@tailwindcss/oxide-android-arm64@4.0.11': optional: true - '@tailwindcss/oxide-darwin-arm64@4.0.9': + '@tailwindcss/oxide-darwin-arm64@4.0.11': optional: true - '@tailwindcss/oxide-darwin-x64@4.0.9': + '@tailwindcss/oxide-darwin-x64@4.0.11': optional: true - '@tailwindcss/oxide-freebsd-x64@4.0.9': + '@tailwindcss/oxide-freebsd-x64@4.0.11': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.11': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.0.9': + '@tailwindcss/oxide-linux-arm64-gnu@4.0.11': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.0.9': + '@tailwindcss/oxide-linux-arm64-musl@4.0.11': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.0.9': + '@tailwindcss/oxide-linux-x64-gnu@4.0.11': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.0.9': + '@tailwindcss/oxide-linux-x64-musl@4.0.11': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.0.9': + '@tailwindcss/oxide-win32-arm64-msvc@4.0.11': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.0.9': + '@tailwindcss/oxide-win32-x64-msvc@4.0.11': optional: true - '@tailwindcss/oxide@4.0.9': + '@tailwindcss/oxide@4.0.11': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.0.9 - '@tailwindcss/oxide-darwin-arm64': 4.0.9 - '@tailwindcss/oxide-darwin-x64': 4.0.9 - '@tailwindcss/oxide-freebsd-x64': 4.0.9 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.9 - '@tailwindcss/oxide-linux-arm64-gnu': 4.0.9 - '@tailwindcss/oxide-linux-arm64-musl': 4.0.9 - '@tailwindcss/oxide-linux-x64-gnu': 4.0.9 - '@tailwindcss/oxide-linux-x64-musl': 4.0.9 - '@tailwindcss/oxide-win32-arm64-msvc': 4.0.9 - '@tailwindcss/oxide-win32-x64-msvc': 4.0.9 + '@tailwindcss/oxide-android-arm64': 4.0.11 + '@tailwindcss/oxide-darwin-arm64': 4.0.11 + '@tailwindcss/oxide-darwin-x64': 4.0.11 + '@tailwindcss/oxide-freebsd-x64': 4.0.11 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.11 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.11 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.11 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.11 + '@tailwindcss/oxide-linux-x64-musl': 4.0.11 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.11 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.11 - '@tailwindcss/postcss@4.0.9': + '@tailwindcss/postcss@4.0.11': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.0.9 - '@tailwindcss/oxide': 4.0.9 - lightningcss: 1.29.1 + '@tailwindcss/node': 4.0.11 + '@tailwindcss/oxide': 4.0.11 + lightningcss: 1.29.2 postcss: 8.5.3 - tailwindcss: 4.0.9 - - '@tailwindcss/upgrade@4.0.6': - dependencies: - '@tailwindcss/node': 4.0.9 - '@tailwindcss/oxide': 4.0.9 - braces: 3.0.3 - dedent: 1.5.3 - enhanced-resolve: 5.18.1 - globby: 14.1.0 - jiti: 2.4.2 - mri: 1.2.0 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-import: 16.1.0(postcss@8.5.3) - postcss-selector-parser: 7.1.0 - prettier: 3.5.0 - tailwindcss: 4.0.6 - tree-sitter: 0.22.4 - tree-sitter-typescript: 0.23.2(tree-sitter@0.22.4) - transitivePeerDependencies: - - babel-plugin-macros + tailwindcss: 4.0.11 '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -4229,7 +3977,7 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@turbo/gen@2.4.4(@types/node@22.13.5)(typescript@5.7.3)': + '@turbo/gen@2.4.4(@types/node@22.13.9)(typescript@5.8.2)': dependencies: '@turbo/workspaces': 2.4.4 commander: 10.0.1 @@ -4239,7 +3987,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.13.5)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@22.13.9)(typescript@5.8.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -4290,7 +4038,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.13.5 + '@types/node': 22.13.9 '@types/inquirer@6.5.0': dependencies: @@ -4299,11 +4047,11 @@ snapshots: '@types/minimatch@5.1.2': {} - '@types/node@20.17.19': + '@types/node@20.17.23': dependencies: undici-types: 6.19.8 - '@types/node@22.13.5': + '@types/node@22.13.9': dependencies: undici-types: 6.20.0 @@ -4320,15 +4068,15 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.13.5 + '@types/node': 22.13.9 '@types/tinycolor2@1.4.6': {} acorn-walk@8.3.4: dependencies: - acorn: 8.14.0 + acorn: 8.14.1 - acorn@8.14.0: {} + acorn@8.14.1: {} agent-base@7.1.3: {} @@ -4343,6 +4091,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -4351,8 +4101,19 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + arg@4.1.3: {} + arg@5.0.2: {} + argparse@2.0.1: {} aria-hidden@1.2.4: @@ -4368,7 +4129,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001701 + caniuse-lite: 1.0.30001702 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -4381,6 +4142,8 @@ snapshots: basic-ftp@5.0.5: {} + binary-extensions@2.3.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -4402,8 +4165,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001701 - electron-to-chromium: 1.5.107 + caniuse-lite: 1.0.30001702 + electron-to-chromium: 1.5.112 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -4421,7 +4184,9 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - caniuse-lite@1.0.30001701: {} + camelcase-css@2.0.1: {} + + caniuse-lite@1.0.30001702: {} chalk@2.4.2: dependencies: @@ -4464,6 +4229,18 @@ snapshots: chardet@0.7.0: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -4484,12 +4261,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.0.0(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + cmdk@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.0)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) + use-sync-external-store: 1.4.0(react@19.0.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -4520,6 +4299,8 @@ snapshots: commander@10.0.1: {} + commander@4.1.1: {} + concat-map@0.0.1: {} constant-case@2.0.0: @@ -4527,7 +4308,7 @@ snapshots: snake-case: 2.1.0 upper-case: 1.1.3 - core-js-pure@3.40.0: {} + core-js-pure@3.41.0: {} create-require@1.1.1: {} @@ -4589,8 +4370,6 @@ snapshots: decimal.js-light@2.5.1: {} - dedent@1.5.3: {} - deep-extend@0.6.0: {} defaults@1.0.4: @@ -4614,19 +4393,20 @@ snapshots: rimraf: 3.0.2 slash: 3.0.0 - detect-libc@1.0.3: {} - - detect-libc@2.0.3: - optional: true + detect-libc@2.0.3: {} detect-node-es@1.1.0: {} + didyoumean@1.2.2: {} + diff@4.0.2: {} dir-glob@3.0.1: dependencies: path-type: 4.0.0 + dlv@1.1.3: {} + dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.26.9 @@ -4636,7 +4416,9 @@ snapshots: dependencies: no-case: 2.3.2 - electron-to-chromium@1.5.107: {} + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.112: {} embla-carousel-react@8.5.2(react@19.0.0): dependencies: @@ -4652,6 +4434,8 @@ snapshots: emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -4717,6 +4501,11 @@ snapshots: dependencies: to-regex-range: 5.0.1 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fraction.js@4.3.7: {} fs-extra@10.1.0: @@ -4727,6 +4516,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.3: + optional: true + function-bind@1.1.2: {} get-nonce@1.0.1: {} @@ -4745,6 +4537,19 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -4765,15 +4570,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.3 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - graceful-fs@4.2.11: {} gradient-string@2.0.2: @@ -4827,8 +4623,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.3: {} - indent-string@4.0.0: {} inflight@1.0.6: @@ -4889,6 +4683,10 @@ snapshots: is-arrayish@0.3.2: optional: true + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -4925,6 +4723,14 @@ snapshots: isexe@2.0.0: {} + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.7: {} + jiti@2.4.2: {} js-tokens@4.0.0: {} @@ -4984,50 +4790,54 @@ snapshots: lefthook-windows-arm64: 1.11.2 lefthook-windows-x64: 1.11.2 - lightningcss-darwin-arm64@1.29.1: + lightningcss-darwin-arm64@1.29.2: optional: true - lightningcss-darwin-x64@1.29.1: + lightningcss-darwin-x64@1.29.2: optional: true - lightningcss-freebsd-x64@1.29.1: + lightningcss-freebsd-x64@1.29.2: optional: true - lightningcss-linux-arm-gnueabihf@1.29.1: + lightningcss-linux-arm-gnueabihf@1.29.2: optional: true - lightningcss-linux-arm64-gnu@1.29.1: + lightningcss-linux-arm64-gnu@1.29.2: optional: true - lightningcss-linux-arm64-musl@1.29.1: + lightningcss-linux-arm64-musl@1.29.2: optional: true - lightningcss-linux-x64-gnu@1.29.1: + lightningcss-linux-x64-gnu@1.29.2: optional: true - lightningcss-linux-x64-musl@1.29.1: + lightningcss-linux-x64-musl@1.29.2: optional: true - lightningcss-win32-arm64-msvc@1.29.1: + lightningcss-win32-arm64-msvc@1.29.2: optional: true - lightningcss-win32-x64-msvc@1.29.1: + lightningcss-win32-x64-msvc@1.29.2: optional: true - lightningcss@1.29.1: + lightningcss@1.29.2: dependencies: - detect-libc: 1.0.3 + detect-libc: 2.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.29.1 - lightningcss-darwin-x64: 1.29.1 - lightningcss-freebsd-x64: 1.29.1 - lightningcss-linux-arm-gnueabihf: 1.29.1 - lightningcss-linux-arm64-gnu: 1.29.1 - lightningcss-linux-arm64-musl: 1.29.1 - lightningcss-linux-x64-gnu: 1.29.1 - lightningcss-linux-x64-musl: 1.29.1 - lightningcss-win32-arm64-msvc: 1.29.1 - lightningcss-win32-x64-msvc: 1.29.1 + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} lodash.get@4.4.2: {} @@ -5052,9 +4862,11 @@ snapshots: lower-case@1.1.4: {} + lru-cache@10.4.3: {} + lru-cache@7.18.3: {} - lucide-react@0.456.0(react@19.0.0): + lucide-react@0.477.0(react@19.0.0): dependencies: react: 19.0.0 @@ -5081,16 +4893,22 @@ snapshots: minimist@1.2.8: {} + minipass@7.1.2: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - mri@1.2.0: {} - ms@2.1.3: {} mute-stream@0.0.8: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.8: {} neo-async@2.6.2: {} @@ -5102,26 +4920,26 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - next@15.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + next@15.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@next/env': 15.2.0 + '@next/env': 15.2.1 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001701 + caniuse-lite: 1.0.30001702 postcss: 8.4.31 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) styled-jsx: 5.1.6(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.2.0 - '@next/swc-darwin-x64': 15.2.0 - '@next/swc-linux-arm64-gnu': 15.2.0 - '@next/swc-linux-arm64-musl': 15.2.0 - '@next/swc-linux-x64-gnu': 15.2.0 - '@next/swc-linux-x64-musl': 15.2.0 - '@next/swc-win32-arm64-msvc': 15.2.0 - '@next/swc-win32-x64-msvc': 15.2.0 + '@next/swc-darwin-arm64': 15.2.1 + '@next/swc-darwin-x64': 15.2.1 + '@next/swc-linux-arm64-gnu': 15.2.1 + '@next/swc-linux-arm64-musl': 15.2.1 + '@next/swc-linux-x64-gnu': 15.2.1 + '@next/swc-linux-x64-musl': 15.2.1 + '@next/swc-win32-arm64-msvc': 15.2.1 + '@next/swc-win32-x64-msvc': 15.2.1 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' @@ -5131,10 +4949,6 @@ snapshots: dependencies: lower-case: 1.1.4 - node-addon-api@8.3.1: {} - - node-gyp-build@4.8.4: {} - node-plop@0.26.3: dependencies: '@babel/runtime-corejs3': 7.26.9 @@ -5151,6 +4965,8 @@ snapshots: node-releases@2.0.19: {} + normalize-path@3.0.0: {} + normalize-range@0.1.2: {} npm-run-path@4.0.1: @@ -5159,6 +4975,8 @@ snapshots: object-assign@4.1.1: {} + object-hash@3.0.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -5214,6 +5032,8 @@ snapshots: degenerator: 5.0.1 netmask: 2.0.2 + package-json-from-dist@1.0.1: {} + param-case@2.1.1: dependencies: no-case: 2.3.2 @@ -5233,9 +5053,12 @@ snapshots: path-parse@1.0.7: {} - path-type@4.0.0: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 - path-type@6.0.0: {} + path-type@4.0.0: {} picocolors@1.0.1: {} @@ -5245,14 +5068,42 @@ snapshots: pify@2.3.0: {} - postcss-import@16.1.0(postcss@8.5.3): + pirates@4.0.6: {} + + postcss-import@15.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-selector-parser@7.1.0: + postcss-js@4.0.1(postcss@8.5.3): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.3 + + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.23)(typescript@5.8.2)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.7.0 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@20.17.23)(typescript@5.8.2) + + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.7.0 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@22.13.9)(typescript@5.8.2) + + postcss-nested@6.2.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -5271,8 +5122,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.5.0: {} - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -5329,17 +5178,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.0 - react-remove-scroll@2.5.5(@types/react@18.3.0)(react@19.0.0): - dependencies: - react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.0)(react@19.0.0) - react-style-singleton: 2.2.3(@types/react@18.3.0)(react@19.0.0) - tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.0)(react@19.0.0) - use-sidecar: 1.1.3(@types/react@18.3.0)(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.0 - react-remove-scroll@2.6.3(@types/react@18.3.0)(react@19.0.0): dependencies: react: 19.0.0 @@ -5393,6 +5231,10 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + recharts-scale@0.4.5: dependencies: decimal.js-light: 2.5.1 @@ -5503,6 +5345,8 @@ snapshots: signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -5510,8 +5354,6 @@ snapshots: slash@3.0.0: {} - slash@5.1.0: {} - smart-buffer@4.2.0: {} snake-case@2.1.0: @@ -5550,6 +5392,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -5558,6 +5406,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-final-newline@2.0.0: {} strip-json-comments@2.0.1: {} @@ -5567,6 +5419,16 @@ snapshots: client-only: 0.0.1 react: 19.0.0 + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -5582,18 +5444,78 @@ snapshots: lower-case: 1.1.4 upper-case: 1.1.3 - tailwind-merge@2.6.0: {} + tailwind-merge@3.0.2: {} - tailwindcss-animate@1.0.7(tailwindcss@4.0.9): + tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2))): dependencies: - tailwindcss: 4.0.9 + tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2)) - tailwindcss@4.0.6: {} + tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.17.23)(typescript@5.8.2)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.23)(typescript@5.8.2)) + postcss-nested: 6.2.0(postcss@8.5.3) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node - tailwindcss@4.0.9: {} + tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2)) + postcss-nested: 6.2.0(postcss@8.5.3) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tailwindcss@4.0.11: {} tapable@2.2.1: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + through@2.3.8: {} tiny-invariant@1.3.3: {} @@ -5618,41 +5540,42 @@ snapshots: dependencies: is-number: 7.0.0 - tree-sitter-javascript@0.23.1(tree-sitter@0.22.4): - dependencies: - node-addon-api: 8.3.1 - node-gyp-build: 4.8.4 - optionalDependencies: - tree-sitter: 0.22.4 + ts-interface-checker@0.1.13: {} - tree-sitter-typescript@0.23.2(tree-sitter@0.22.4): - dependencies: - node-addon-api: 8.3.1 - node-gyp-build: 4.8.4 - tree-sitter-javascript: 0.23.1(tree-sitter@0.22.4) - optionalDependencies: - tree-sitter: 0.22.4 - - tree-sitter@0.22.4: - dependencies: - node-addon-api: 8.3.1 - node-gyp-build: 4.8.4 - - ts-node@10.9.2(@types/node@22.13.5)(typescript@5.7.3): + ts-node@10.9.2(@types/node@20.17.23)(typescript@5.8.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.5 - acorn: 8.14.0 + '@types/node': 20.17.23 + acorn: 8.14.1 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.3 + typescript: 5.8.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + + ts-node@10.9.2(@types/node@22.13.9)(typescript@5.8.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.13.9 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -5689,7 +5612,7 @@ snapshots: type-fest@0.21.3: {} - typescript@5.7.3: {} + typescript@5.8.2: {} uglify-js@3.19.3: optional: true @@ -5698,8 +5621,6 @@ snapshots: undici-types@6.20.0: {} - unicorn-magic@0.3.0: {} - universalify@2.0.1: {} update-browserslist-db@1.1.3(browserslist@4.24.4): @@ -5734,6 +5655,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.0 + use-sync-external-store@1.4.0(react@19.0.0): + dependencies: + react: 19.0.0 + util-deprecate@1.0.2: {} v8-compile-cache-lib@3.0.1: {} @@ -5782,13 +5707,28 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} + yaml@2.7.0: {} + yn@3.1.1: {} zod@3.24.2: {} - zustand@5.0.3(@types/react@18.3.0)(react@19.0.0): + zustand@5.0.3(@types/react@18.3.0)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)): optionalDependencies: '@types/react': 18.3.0 react: 19.0.0 + use-sync-external-store: 1.4.0(react@19.0.0) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 50db9dc..b697e5b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,8 +5,10 @@ onlyBuiltDependencies: - '@biomejs/biome' - '@biomejs/cli-darwin-arm64' - chalk + - core-js-pure - lefthook - lefthook-darwin-arm64 + - sharp - tree-sitter - tree-sitter-javascript - tree-sitter-typescript diff --git a/services/ui/package.json b/services/ui/package.json index 4e9235e..ce2de7b 100644 --- a/services/ui/package.json +++ b/services/ui/package.json @@ -9,16 +9,52 @@ "dependencies": { "@biomejs/biome": "^1.9.4", "@biomejs/monorepo": "github:biomejs/biome", - "@radix-ui/react-slot": "^1.1.1", - "class-variance-authority": "^0.7.0", + "@hookform/resolvers": "^4.1.2", + "@radix-ui/react-accordion": "^1.2.3", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@radix-ui/react-aspect-ratio": "^1.1.2", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.3", + "@radix-ui/react-context-menu": "^2.2.6", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-hover-card": "^1.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-menubar": "^1.1.6", + "@radix-ui/react-navigation-menu": "^1.2.5", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-progress": "^1.1.2", + "@radix-ui/react-radio-group": "^1.2.3", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slider": "^1.2.3", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.1.3", + "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toggle": "^1.1.2", + "@radix-ui/react-toggle-group": "^1.1.2", + "@radix-ui/react-tooltip": "^1.1.8", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "lucide-react": "0.456.0", - "next-themes": "^0.4.3", + "cmdk": "1.0.4", + "date-fns": "^4.1.0", + "embla-carousel-react": "^8.5.2", + "input-otp": "^1.4.2", + "lucide-react": "0.477.0", + "next-themes": "^0.4.4", "react": "^19.0.0", + "react-day-picker": "8.10.1", "react-dom": "^19.0.0", - "tailwind-merge": "^2.5.4", + "react-hook-form": "^7.54.2", + "react-resizable-panels": "^2.1.7", + "recharts": "^2.15.1", + "sonner": "^2.0.1", + "tailwind-merge": "^3.0.2", "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8" + "vaul": "^1.1.2", + "zod": "^3.24.2" }, "devDependencies": { "@tailwindcss/postcss": "^4.0.9", @@ -30,7 +66,7 @@ "autoprefixer": "^10.4.20", "postcss": "^8.5.3", "react": "^18.3.1", - "tailwindcss": "^4.0.9", + "tailwindcss": "^3.4.17", "typescript": "^5.6.3" }, "exports": { diff --git a/services/ui/postcss.config.mjs b/services/ui/postcss.config.mjs index 4d8610d..cecdaa0 100644 --- a/services/ui/postcss.config.mjs +++ b/services/ui/postcss.config.mjs @@ -1,5 +1,10 @@ -module.exports = { +/** @type {import('postcss-load-config').Config} */ +const config = { plugins: { - '@tailwindcss/postcss': {} + // '@tailwindcss/postcss': {} + tailwindcss: {}, + autoprefixer: {} } } + +export default config diff --git a/services/ui/src/components/accordion.tsx b/services/ui/src/components/accordion.tsx new file mode 100644 index 0000000..3b51edb --- /dev/null +++ b/services/ui/src/components/accordion.tsx @@ -0,0 +1,66 @@ +"use client" + +import * as React from "react" +import * as AccordionPrimitive from "@radix-ui/react-accordion" +import { ChevronDownIcon } from "lucide-react" + +import { cn } from "@workspace/ui/lib/utils" + +function Accordion({ + ...props +}: React.ComponentProps) { + return +} + +function AccordionItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AccordionTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + svg]:rotate-180", + className + )} + {...props} + > + {children} + + + + ) +} + +function AccordionContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + +
{children}
+
+ ) +} + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/services/ui/src/components/alert-dialog.tsx b/services/ui/src/components/alert-dialog.tsx new file mode 100644 index 0000000..bee2850 --- /dev/null +++ b/services/ui/src/components/alert-dialog.tsx @@ -0,0 +1,157 @@ +"use client" + +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@workspace/ui/lib/utils" +import { buttonVariants } from "@workspace/ui/components/button" + +function AlertDialog({ + ...props +}: React.ComponentProps) { + return +} + +function AlertDialogTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogPortal({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + ) +} + +function AlertDialogHeader({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogFooter({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogAction({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogCancel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/services/ui/src/components/alert.tsx b/services/ui/src/components/alert.tsx new file mode 100644 index 0000000..47ea92a --- /dev/null +++ b/services/ui/src/components/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@workspace/ui/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "text-destructive-foreground [&>svg]:text-current *:data-[slot=alert-description]:text-destructive-foreground/80", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Alert, AlertTitle, AlertDescription } diff --git a/services/ui/src/components/aspect-ratio.tsx b/services/ui/src/components/aspect-ratio.tsx new file mode 100644 index 0000000..3df3fd0 --- /dev/null +++ b/services/ui/src/components/aspect-ratio.tsx @@ -0,0 +1,11 @@ +"use client" + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +function AspectRatio({ + ...props +}: React.ComponentProps) { + return +} + +export { AspectRatio } diff --git a/services/ui/src/components/avatar.tsx b/services/ui/src/components/avatar.tsx new file mode 100644 index 0000000..5f3a8f7 --- /dev/null +++ b/services/ui/src/components/avatar.tsx @@ -0,0 +1,53 @@ +"use client" + +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@workspace/ui/lib/utils" + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/services/ui/src/components/badge.tsx b/services/ui/src/components/badge.tsx new file mode 100644 index 0000000..8befef8 --- /dev/null +++ b/services/ui/src/components/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@workspace/ui/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/services/ui/src/components/breadcrumb.tsx b/services/ui/src/components/breadcrumb.tsx new file mode 100644 index 0000000..84f6075 --- /dev/null +++ b/services/ui/src/components/breadcrumb.tsx @@ -0,0 +1,108 @@ +import { Slot } from '@radix-ui/react-slot' +import { ChevronRight, MoreHorizontal } from 'lucide-react' + +import { cn } from '@workspace/ui/lib/utils' + +function Breadcrumb({ ...props }: React.ComponentProps<'nav'>) { + return