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 (
+
+ {items.map((item) => {
+ const isActive = pathname === item.href
+
+ return (
+
+ {item.title}
+
+ )
+ })}
+
+ )
+}
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}
+
+
+
+ {items.map((item) => {
+ const isActive = pathname === item.href
+ const Icon = item.icon
+
+ return (
+
+
+
+ )
+ })}
+
+
+
+ )
+}
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 || (
+
+
+
+ )
+
+ 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 */}
+
+
+
+
+
+
+
+
+
+
+
+ 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 */}
+
+
+ )
+}
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 718d6fe..0000000
Binary files a/apps/web/src/app/favicon.ico and /dev/null differ
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
+}
+
+function BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {
+ return (
+
+ )
+}
+
+function BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {
+ return (
+
+ )
+}
+
+function BreadcrumbLink({
+ asChild,
+ className,
+ ...props
+}: React.ComponentProps<'a'> & {
+ asChild?: boolean
+}) {
+ const Comp = asChild ? Slot : 'a'
+
+ return (
+
+ )
+}
+
+function BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {
+ return (
+
+ )
+}
+
+function BreadcrumbSeparator({
+ children,
+ className,
+ ...props
+}: React.ComponentProps<'li'>) {
+ return (
+ svg]:size-3.5', className)}
+ {...props}
+ >
+ {children ?? }
+
+ )
+}
+
+function BreadcrumbEllipsis({
+ className,
+ ...props
+}: React.ComponentProps<'span'>) {
+ return (
+
+
+ More
+
+ )
+}
+
+export {
+ Breadcrumb,
+ BreadcrumbList,
+ BreadcrumbItem,
+ BreadcrumbLink,
+ BreadcrumbPage,
+ BreadcrumbSeparator,
+ BreadcrumbEllipsis
+}
diff --git a/services/ui/src/components/button.tsx b/services/ui/src/components/button.tsx
index 85b3597..9575a7e 100644
--- a/services/ui/src/components/button.tsx
+++ b/services/ui/src/components/button.tsx
@@ -1,56 +1,58 @@
-import { Slot } from '@radix-ui/react-slot'
-import { type VariantProps, cva } from 'class-variance-authority'
-import * as React from 'react'
+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'
+import { cn } from "@workspace/ui/lib/utils"
const buttonVariants = cva(
- 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-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",
{
variants: {
variant: {
- default: 'bg-primary text-primary-foreground hover:bg-primary/90',
+ default:
+ "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
destructive:
- 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
+ "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
outline:
- 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
+ "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
secondary:
- 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
- ghost: 'hover:bg-accent hover:text-accent-foreground',
- link: 'text-primary underline-offset-4 hover:underline'
+ "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
},
size: {
- default: 'h-10 px-4 py-2',
- sm: 'h-9 rounded-md px-3',
- lg: 'h-11 rounded-md px-8',
- icon: 'h-10 w-10'
- }
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
+ icon: "size-9",
+ },
},
defaultVariants: {
- variant: 'default',
- size: 'default'
- }
+ variant: "default",
+ size: "default",
+ },
}
)
-export interface ButtonProps
- extends React.ButtonHTMLAttributes,
- VariantProps {
- asChild?: boolean
+function Button({
+ className,
+ variant,
+ size,
+ asChild = false,
+ ...props
+}: React.ComponentProps<"button"> &
+ VariantProps & {
+ asChild?: boolean
+ }) {
+ const Comp = asChild ? Slot : "button"
+
+ return (
+
+ )
}
-const Button = React.forwardRef(
- ({ className, variant, size, asChild = false, ...props }, ref) => {
- const Comp = asChild ? Slot : 'button'
- return (
-
- )
- }
-)
-Button.displayName = 'Button'
-
export { Button, buttonVariants }
diff --git a/services/ui/src/components/calendar.tsx b/services/ui/src/components/calendar.tsx
new file mode 100644
index 0000000..d1868d4
--- /dev/null
+++ b/services/ui/src/components/calendar.tsx
@@ -0,0 +1,75 @@
+'use client'
+
+import { ChevronLeft, ChevronRight } from 'lucide-react'
+import type * as React from 'react'
+import { DayPicker } from 'react-day-picker'
+
+import { buttonVariants } from '@workspace/ui/components/button'
+import { cn } from '@workspace/ui/lib/utils'
+
+function Calendar({
+ className,
+ classNames,
+ showOutsideDays = true,
+ ...props
+}: React.ComponentProps) {
+ return (
+ .day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'
+ : '[&:has([aria-selected])]:rounded-md'
+ ),
+ day: cn(
+ buttonVariants({ variant: 'ghost' }),
+ 'size-8 p-0 font-normal aria-selected:opacity-100'
+ ),
+ day_range_start:
+ 'day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground',
+ day_range_end:
+ 'day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground',
+ day_selected:
+ 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',
+ day_today: 'bg-accent text-accent-foreground',
+ day_outside:
+ 'day-outside text-muted-foreground aria-selected:text-muted-foreground',
+ day_disabled: 'text-muted-foreground opacity-50',
+ day_range_middle:
+ 'aria-selected:bg-accent aria-selected:text-accent-foreground',
+ day_hidden: 'invisible',
+ ...classNames
+ }}
+ components={{
+ IconLeft: ({ className, ...props }) => (
+
+ ),
+ IconRight: ({ className, ...props }) => (
+
+ )
+ }}
+ {...props}
+ />
+ )
+}
+
+export { Calendar }
diff --git a/services/ui/src/components/card.tsx b/services/ui/src/components/card.tsx
new file mode 100644
index 0000000..edf9f64
--- /dev/null
+++ b/services/ui/src/components/card.tsx
@@ -0,0 +1,68 @@
+import * as React from "react"
+
+import { cn } from "@workspace/ui/lib/utils"
+
+function Card({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardContent({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
diff --git a/services/ui/src/components/carousel.tsx b/services/ui/src/components/carousel.tsx
new file mode 100644
index 0000000..6329643
--- /dev/null
+++ b/services/ui/src/components/carousel.tsx
@@ -0,0 +1,241 @@
+"use client"
+
+import * as React from "react"
+import useEmblaCarousel, {
+ type UseEmblaCarouselType,
+} from "embla-carousel-react"
+import { ArrowLeft, ArrowRight } from "lucide-react"
+
+import { cn } from "@workspace/ui/lib/utils"
+import { Button } from "@workspace/ui/components/button"
+
+type CarouselApi = UseEmblaCarouselType[1]
+type UseCarouselParameters = Parameters
+type CarouselOptions = UseCarouselParameters[0]
+type CarouselPlugin = UseCarouselParameters[1]
+
+type CarouselProps = {
+ opts?: CarouselOptions
+ plugins?: CarouselPlugin
+ orientation?: "horizontal" | "vertical"
+ setApi?: (api: CarouselApi) => void
+}
+
+type CarouselContextProps = {
+ carouselRef: ReturnType[0]
+ api: ReturnType[1]
+ scrollPrev: () => void
+ scrollNext: () => void
+ canScrollPrev: boolean
+ canScrollNext: boolean
+} & CarouselProps
+
+const CarouselContext = React.createContext(null)
+
+function useCarousel() {
+ const context = React.useContext(CarouselContext)
+
+ if (!context) {
+ throw new Error("useCarousel must be used within a ")
+ }
+
+ return context
+}
+
+function Carousel({
+ orientation = "horizontal",
+ opts,
+ setApi,
+ plugins,
+ className,
+ children,
+ ...props
+}: React.ComponentProps<"div"> & CarouselProps) {
+ const [carouselRef, api] = useEmblaCarousel(
+ {
+ ...opts,
+ axis: orientation === "horizontal" ? "x" : "y",
+ },
+ plugins
+ )
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false)
+ const [canScrollNext, setCanScrollNext] = React.useState(false)
+
+ const onSelect = React.useCallback((api: CarouselApi) => {
+ if (!api) return
+ setCanScrollPrev(api.canScrollPrev())
+ setCanScrollNext(api.canScrollNext())
+ }, [])
+
+ const scrollPrev = React.useCallback(() => {
+ api?.scrollPrev()
+ }, [api])
+
+ const scrollNext = React.useCallback(() => {
+ api?.scrollNext()
+ }, [api])
+
+ const handleKeyDown = React.useCallback(
+ (event: React.KeyboardEvent) => {
+ if (event.key === "ArrowLeft") {
+ event.preventDefault()
+ scrollPrev()
+ } else if (event.key === "ArrowRight") {
+ event.preventDefault()
+ scrollNext()
+ }
+ },
+ [scrollPrev, scrollNext]
+ )
+
+ React.useEffect(() => {
+ if (!api || !setApi) return
+ setApi(api)
+ }, [api, setApi])
+
+ React.useEffect(() => {
+ if (!api) return
+ onSelect(api)
+ api.on("reInit", onSelect)
+ api.on("select", onSelect)
+
+ return () => {
+ api?.off("select", onSelect)
+ }
+ }, [api, onSelect])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+function CarouselContent({ className, ...props }: React.ComponentProps<"div">) {
+ const { carouselRef, orientation } = useCarousel()
+
+ return (
+
+ )
+}
+
+function CarouselItem({ className, ...props }: React.ComponentProps<"div">) {
+ const { orientation } = useCarousel()
+
+ return (
+
+ )
+}
+
+function CarouselPrevious({
+ className,
+ variant = "outline",
+ size = "icon",
+ ...props
+}: React.ComponentProps) {
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel()
+
+ return (
+
+ )
+}
+
+function CarouselNext({
+ className,
+ variant = "outline",
+ size = "icon",
+ ...props
+}: React.ComponentProps) {
+ const { orientation, scrollNext, canScrollNext } = useCarousel()
+
+ return (
+
+ )
+}
+
+export {
+ type CarouselApi,
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselPrevious,
+ CarouselNext,
+}
diff --git a/services/ui/src/components/chart.tsx b/services/ui/src/components/chart.tsx
new file mode 100644
index 0000000..b99516f
--- /dev/null
+++ b/services/ui/src/components/chart.tsx
@@ -0,0 +1,353 @@
+"use client"
+
+import * as React from "react"
+import * as RechartsPrimitive from "recharts"
+
+import { cn } from "@workspace/ui/lib/utils"
+
+// Format: { THEME_NAME: CSS_SELECTOR }
+const THEMES = { light: "", dark: ".dark" } as const
+
+export type ChartConfig = {
+ [k in string]: {
+ label?: React.ReactNode
+ icon?: React.ComponentType
+ } & (
+ | { color?: string; theme?: never }
+ | { color?: never; theme: Record }
+ )
+}
+
+type ChartContextProps = {
+ config: ChartConfig
+}
+
+const ChartContext = React.createContext(null)
+
+function useChart() {
+ const context = React.useContext(ChartContext)
+
+ if (!context) {
+ throw new Error("useChart must be used within a ")
+ }
+
+ return context
+}
+
+function ChartContainer({
+ id,
+ className,
+ children,
+ config,
+ ...props
+}: React.ComponentProps<"div"> & {
+ config: ChartConfig
+ children: React.ComponentProps<
+ typeof RechartsPrimitive.ResponsiveContainer
+ >["children"]
+}) {
+ const uniqueId = React.useId()
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`
+
+ return (
+
+
+
+
+ {children}
+
+
+
+ )
+}
+
+const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {
+ const colorConfig = Object.entries(config).filter(
+ ([, config]) => config.theme || config.color
+ )
+
+ if (!colorConfig.length) {
+ return null
+ }
+
+ return (
+