From 55c2fd64f6eaca78016b0a31445838511481f01a Mon Sep 17 00:00:00 2001 From: Docker Config Backup Date: Mon, 28 Jul 2025 20:07:14 +0200 Subject: [PATCH] Complete timeshift schedule management application MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Next.js 15.2.4 with React 19 and TypeScript - Monthly schedule generator with Excel-like formatting - Complete employee list from example.xlsx (18 employees) - Excel-style column naming (A, B, C, ..., Z, AA, AB, ...) - Counter-clockwise text rotation for data values - Weekend highlighting and shift color coding - Team selection for TKB, METRO, D8 - 7 days from previous month + full current month date range - jspreadsheet integration for Excel-like interface 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- timeshift/.gitignore | 41 + timeshift/README.md | 36 + timeshift/app/favicon.ico | Bin 0 -> 25931 bytes timeshift/app/globals.css | 122 + timeshift/app/layout.tsx | 34 + timeshift/app/page.tsx | 52 + timeshift/components.json | 21 + timeshift/components/schedule-history.tsx | 156 + timeshift/components/schedule-tabs.tsx | 58 + timeshift/components/schedule-templates.tsx | 130 + timeshift/components/team-sidebar.tsx | 108 + .../components/timeshift-spreadsheet.tsx | 472 ++ timeshift/components/ui/badge.tsx | 46 + timeshift/components/ui/breadcrumb.tsx | 109 + timeshift/components/ui/button.tsx | 59 + timeshift/components/ui/card.tsx | 92 + timeshift/components/ui/dialog.tsx | 122 + timeshift/components/ui/input.tsx | 21 + timeshift/components/ui/label.tsx | 26 + timeshift/components/ui/select.tsx | 160 + timeshift/components/ui/separator.tsx | 28 + timeshift/components/ui/sheet.tsx | 139 + timeshift/components/ui/sidebar.tsx | 726 ++ timeshift/components/ui/skeleton.tsx | 13 + timeshift/components/ui/table.tsx | 116 + timeshift/components/ui/tabs.tsx | 66 + timeshift/components/ui/tooltip.tsx | 61 + timeshift/eslint.config.mjs | 16 + timeshift/example.xlsx | Bin 0 -> 29711 bytes timeshift/hooks/use-mobile.ts | 19 + timeshift/lib/utils.ts | 6 + timeshift/next.config.ts | 7 + timeshift/package-lock.json | 7052 +++++++++++++++++ timeshift/package.json | 39 + timeshift/postcss.config.mjs | 5 + timeshift/public/file.svg | 1 + timeshift/public/globe.svg | 1 + timeshift/public/next.svg | 1 + timeshift/public/vercel.svg | 1 + timeshift/public/window.svg | 1 + timeshift/timeshift-management.zip | Bin 0 -> 219018 bytes timeshift/tsconfig.json | 27 + timeshift/v0_extracted/.gitignore | 27 + timeshift/v0_extracted/app/globals.css | 90 + timeshift/v0_extracted/app/layout.tsx | 31 + timeshift/v0_extracted/app/page.tsx | 54 + timeshift/v0_extracted/components.json | 21 + .../components/schedule-history.tsx | 156 + .../v0_extracted/components/schedule-tabs.tsx | 58 + .../components/schedule-templates.tsx | 130 + .../v0_extracted/components/team-sidebar.tsx | 118 + .../components/theme-provider.tsx | 11 + .../components/timeshift-spreadsheet.tsx | 172 + .../v0_extracted/components/ui/accordion.tsx | 58 + .../components/ui/alert-dialog.tsx | 141 + .../v0_extracted/components/ui/alert.tsx | 59 + .../components/ui/aspect-ratio.tsx | 7 + .../v0_extracted/components/ui/avatar.tsx | 50 + .../v0_extracted/components/ui/badge.tsx | 36 + .../v0_extracted/components/ui/breadcrumb.tsx | 115 + .../v0_extracted/components/ui/button.tsx | 56 + .../v0_extracted/components/ui/calendar.tsx | 213 + timeshift/v0_extracted/components/ui/card.tsx | 79 + .../v0_extracted/components/ui/carousel.tsx | 262 + .../v0_extracted/components/ui/chart.tsx | 365 + .../v0_extracted/components/ui/checkbox.tsx | 30 + .../components/ui/collapsible.tsx | 11 + .../v0_extracted/components/ui/command.tsx | 153 + .../components/ui/context-menu.tsx | 200 + .../v0_extracted/components/ui/dialog.tsx | 122 + .../v0_extracted/components/ui/drawer.tsx | 118 + .../components/ui/dropdown-menu.tsx | 200 + timeshift/v0_extracted/components/ui/form.tsx | 178 + .../v0_extracted/components/ui/hover-card.tsx | 29 + .../v0_extracted/components/ui/input-otp.tsx | 71 + .../v0_extracted/components/ui/input.tsx | 22 + .../v0_extracted/components/ui/label.tsx | 26 + .../v0_extracted/components/ui/menubar.tsx | 236 + .../components/ui/navigation-menu.tsx | 128 + .../v0_extracted/components/ui/pagination.tsx | 117 + .../v0_extracted/components/ui/popover.tsx | 31 + .../v0_extracted/components/ui/progress.tsx | 28 + .../components/ui/radio-group.tsx | 44 + .../v0_extracted/components/ui/resizable.tsx | 45 + .../components/ui/scroll-area.tsx | 48 + .../v0_extracted/components/ui/select.tsx | 160 + .../v0_extracted/components/ui/separator.tsx | 31 + .../v0_extracted/components/ui/sheet.tsx | 140 + .../v0_extracted/components/ui/sidebar.tsx | 763 ++ .../v0_extracted/components/ui/skeleton.tsx | 15 + .../v0_extracted/components/ui/slider.tsx | 28 + .../v0_extracted/components/ui/sonner.tsx | 31 + .../v0_extracted/components/ui/switch.tsx | 29 + .../v0_extracted/components/ui/table.tsx | 117 + timeshift/v0_extracted/components/ui/tabs.tsx | 55 + .../v0_extracted/components/ui/textarea.tsx | 22 + .../v0_extracted/components/ui/toast.tsx | 129 + .../v0_extracted/components/ui/toaster.tsx | 35 + .../components/ui/toggle-group.tsx | 61 + .../v0_extracted/components/ui/toggle.tsx | 45 + .../v0_extracted/components/ui/tooltip.tsx | 30 + .../v0_extracted/components/ui/use-mobile.tsx | 19 + .../v0_extracted/components/ui/use-toast.ts | 194 + timeshift/v0_extracted/hooks/use-mobile.tsx | 19 + timeshift/v0_extracted/hooks/use-toast.ts | 194 + timeshift/v0_extracted/lib/utils.ts | 6 + timeshift/v0_extracted/next.config.mjs | 14 + timeshift/v0_extracted/package.json | 71 + timeshift/v0_extracted/pnpm-lock.yaml | 5 + timeshift/v0_extracted/postcss.config.mjs | 8 + .../v0_extracted/public/placeholder-logo.png | Bin 0 -> 568 bytes .../v0_extracted/public/placeholder-logo.svg | 1 + .../v0_extracted/public/placeholder-user.jpg | Bin 0 -> 1635 bytes timeshift/v0_extracted/public/placeholder.jpg | Bin 0 -> 1064 bytes timeshift/v0_extracted/public/placeholder.svg | 1 + timeshift/v0_extracted/styles/globals.css | 90 + timeshift/v0_extracted/tailwind.config.ts | 98 + timeshift/v0_extracted/tsconfig.json | 27 + 118 files changed, 16774 insertions(+) create mode 100644 timeshift/.gitignore create mode 100644 timeshift/README.md create mode 100644 timeshift/app/favicon.ico create mode 100644 timeshift/app/globals.css create mode 100644 timeshift/app/layout.tsx create mode 100644 timeshift/app/page.tsx create mode 100644 timeshift/components.json create mode 100644 timeshift/components/schedule-history.tsx create mode 100644 timeshift/components/schedule-tabs.tsx create mode 100644 timeshift/components/schedule-templates.tsx create mode 100644 timeshift/components/team-sidebar.tsx create mode 100644 timeshift/components/timeshift-spreadsheet.tsx create mode 100644 timeshift/components/ui/badge.tsx create mode 100644 timeshift/components/ui/breadcrumb.tsx create mode 100644 timeshift/components/ui/button.tsx create mode 100644 timeshift/components/ui/card.tsx create mode 100644 timeshift/components/ui/dialog.tsx create mode 100644 timeshift/components/ui/input.tsx create mode 100644 timeshift/components/ui/label.tsx create mode 100644 timeshift/components/ui/select.tsx create mode 100644 timeshift/components/ui/separator.tsx create mode 100644 timeshift/components/ui/sheet.tsx create mode 100644 timeshift/components/ui/sidebar.tsx create mode 100644 timeshift/components/ui/skeleton.tsx create mode 100644 timeshift/components/ui/table.tsx create mode 100644 timeshift/components/ui/tabs.tsx create mode 100644 timeshift/components/ui/tooltip.tsx create mode 100644 timeshift/eslint.config.mjs create mode 100644 timeshift/example.xlsx create mode 100644 timeshift/hooks/use-mobile.ts create mode 100644 timeshift/lib/utils.ts create mode 100644 timeshift/next.config.ts create mode 100644 timeshift/package-lock.json create mode 100644 timeshift/package.json create mode 100644 timeshift/postcss.config.mjs create mode 100644 timeshift/public/file.svg create mode 100644 timeshift/public/globe.svg create mode 100644 timeshift/public/next.svg create mode 100644 timeshift/public/vercel.svg create mode 100644 timeshift/public/window.svg create mode 100644 timeshift/timeshift-management.zip create mode 100644 timeshift/tsconfig.json create mode 100644 timeshift/v0_extracted/.gitignore create mode 100644 timeshift/v0_extracted/app/globals.css create mode 100644 timeshift/v0_extracted/app/layout.tsx create mode 100644 timeshift/v0_extracted/app/page.tsx create mode 100644 timeshift/v0_extracted/components.json create mode 100644 timeshift/v0_extracted/components/schedule-history.tsx create mode 100644 timeshift/v0_extracted/components/schedule-tabs.tsx create mode 100644 timeshift/v0_extracted/components/schedule-templates.tsx create mode 100644 timeshift/v0_extracted/components/team-sidebar.tsx create mode 100644 timeshift/v0_extracted/components/theme-provider.tsx create mode 100644 timeshift/v0_extracted/components/timeshift-spreadsheet.tsx create mode 100644 timeshift/v0_extracted/components/ui/accordion.tsx create mode 100644 timeshift/v0_extracted/components/ui/alert-dialog.tsx create mode 100644 timeshift/v0_extracted/components/ui/alert.tsx create mode 100644 timeshift/v0_extracted/components/ui/aspect-ratio.tsx create mode 100644 timeshift/v0_extracted/components/ui/avatar.tsx create mode 100644 timeshift/v0_extracted/components/ui/badge.tsx create mode 100644 timeshift/v0_extracted/components/ui/breadcrumb.tsx create mode 100644 timeshift/v0_extracted/components/ui/button.tsx create mode 100644 timeshift/v0_extracted/components/ui/calendar.tsx create mode 100644 timeshift/v0_extracted/components/ui/card.tsx create mode 100644 timeshift/v0_extracted/components/ui/carousel.tsx create mode 100644 timeshift/v0_extracted/components/ui/chart.tsx create mode 100644 timeshift/v0_extracted/components/ui/checkbox.tsx create mode 100644 timeshift/v0_extracted/components/ui/collapsible.tsx create mode 100644 timeshift/v0_extracted/components/ui/command.tsx create mode 100644 timeshift/v0_extracted/components/ui/context-menu.tsx create mode 100644 timeshift/v0_extracted/components/ui/dialog.tsx create mode 100644 timeshift/v0_extracted/components/ui/drawer.tsx create mode 100644 timeshift/v0_extracted/components/ui/dropdown-menu.tsx create mode 100644 timeshift/v0_extracted/components/ui/form.tsx create mode 100644 timeshift/v0_extracted/components/ui/hover-card.tsx create mode 100644 timeshift/v0_extracted/components/ui/input-otp.tsx create mode 100644 timeshift/v0_extracted/components/ui/input.tsx create mode 100644 timeshift/v0_extracted/components/ui/label.tsx create mode 100644 timeshift/v0_extracted/components/ui/menubar.tsx create mode 100644 timeshift/v0_extracted/components/ui/navigation-menu.tsx create mode 100644 timeshift/v0_extracted/components/ui/pagination.tsx create mode 100644 timeshift/v0_extracted/components/ui/popover.tsx create mode 100644 timeshift/v0_extracted/components/ui/progress.tsx create mode 100644 timeshift/v0_extracted/components/ui/radio-group.tsx create mode 100644 timeshift/v0_extracted/components/ui/resizable.tsx create mode 100644 timeshift/v0_extracted/components/ui/scroll-area.tsx create mode 100644 timeshift/v0_extracted/components/ui/select.tsx create mode 100644 timeshift/v0_extracted/components/ui/separator.tsx create mode 100644 timeshift/v0_extracted/components/ui/sheet.tsx create mode 100644 timeshift/v0_extracted/components/ui/sidebar.tsx create mode 100644 timeshift/v0_extracted/components/ui/skeleton.tsx create mode 100644 timeshift/v0_extracted/components/ui/slider.tsx create mode 100644 timeshift/v0_extracted/components/ui/sonner.tsx create mode 100644 timeshift/v0_extracted/components/ui/switch.tsx create mode 100644 timeshift/v0_extracted/components/ui/table.tsx create mode 100644 timeshift/v0_extracted/components/ui/tabs.tsx create mode 100644 timeshift/v0_extracted/components/ui/textarea.tsx create mode 100644 timeshift/v0_extracted/components/ui/toast.tsx create mode 100644 timeshift/v0_extracted/components/ui/toaster.tsx create mode 100644 timeshift/v0_extracted/components/ui/toggle-group.tsx create mode 100644 timeshift/v0_extracted/components/ui/toggle.tsx create mode 100644 timeshift/v0_extracted/components/ui/tooltip.tsx create mode 100644 timeshift/v0_extracted/components/ui/use-mobile.tsx create mode 100644 timeshift/v0_extracted/components/ui/use-toast.ts create mode 100644 timeshift/v0_extracted/hooks/use-mobile.tsx create mode 100644 timeshift/v0_extracted/hooks/use-toast.ts create mode 100644 timeshift/v0_extracted/lib/utils.ts create mode 100644 timeshift/v0_extracted/next.config.mjs create mode 100644 timeshift/v0_extracted/package.json create mode 100644 timeshift/v0_extracted/pnpm-lock.yaml create mode 100644 timeshift/v0_extracted/postcss.config.mjs create mode 100644 timeshift/v0_extracted/public/placeholder-logo.png create mode 100644 timeshift/v0_extracted/public/placeholder-logo.svg create mode 100644 timeshift/v0_extracted/public/placeholder-user.jpg create mode 100644 timeshift/v0_extracted/public/placeholder.jpg create mode 100644 timeshift/v0_extracted/public/placeholder.svg create mode 100644 timeshift/v0_extracted/styles/globals.css create mode 100644 timeshift/v0_extracted/tailwind.config.ts create mode 100644 timeshift/v0_extracted/tsconfig.json diff --git a/timeshift/.gitignore b/timeshift/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/timeshift/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/timeshift/README.md b/timeshift/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/timeshift/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/timeshift/app/favicon.ico b/timeshift/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/timeshift/app/globals.css b/timeshift/app/globals.css new file mode 100644 index 0000000..4fced5d --- /dev/null +++ b/timeshift/app/globals.css @@ -0,0 +1,122 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.13 0.028 261.692); + --card: oklch(1 0 0); + --card-foreground: oklch(0.13 0.028 261.692); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.13 0.028 261.692); + --primary: oklch(0.21 0.034 264.665); + --primary-foreground: oklch(0.985 0.002 247.839); + --secondary: oklch(0.967 0.003 264.542); + --secondary-foreground: oklch(0.21 0.034 264.665); + --muted: oklch(0.967 0.003 264.542); + --muted-foreground: oklch(0.551 0.027 264.364); + --accent: oklch(0.967 0.003 264.542); + --accent-foreground: oklch(0.21 0.034 264.665); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.928 0.006 264.531); + --input: oklch(0.928 0.006 264.531); + --ring: oklch(0.707 0.022 261.325); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0.002 247.839); + --sidebar-foreground: oklch(0.13 0.028 261.692); + --sidebar-primary: oklch(0.21 0.034 264.665); + --sidebar-primary-foreground: oklch(0.985 0.002 247.839); + --sidebar-accent: oklch(0.967 0.003 264.542); + --sidebar-accent-foreground: oklch(0.21 0.034 264.665); + --sidebar-border: oklch(0.928 0.006 264.531); + --sidebar-ring: oklch(0.707 0.022 261.325); +} + +.dark { + --background: oklch(0.13 0.028 261.692); + --foreground: oklch(0.985 0.002 247.839); + --card: oklch(0.21 0.034 264.665); + --card-foreground: oklch(0.985 0.002 247.839); + --popover: oklch(0.21 0.034 264.665); + --popover-foreground: oklch(0.985 0.002 247.839); + --primary: oklch(0.928 0.006 264.531); + --primary-foreground: oklch(0.21 0.034 264.665); + --secondary: oklch(0.278 0.033 256.848); + --secondary-foreground: oklch(0.985 0.002 247.839); + --muted: oklch(0.278 0.033 256.848); + --muted-foreground: oklch(0.707 0.022 261.325); + --accent: oklch(0.278 0.033 256.848); + --accent-foreground: oklch(0.985 0.002 247.839); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.551 0.027 264.364); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.21 0.034 264.665); + --sidebar-foreground: oklch(0.985 0.002 247.839); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0.002 247.839); + --sidebar-accent: oklch(0.278 0.033 256.848); + --sidebar-accent-foreground: oklch(0.985 0.002 247.839); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.551 0.027 264.364); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/timeshift/app/layout.tsx b/timeshift/app/layout.tsx new file mode 100644 index 0000000..f7fa87e --- /dev/null +++ b/timeshift/app/layout.tsx @@ -0,0 +1,34 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/timeshift/app/page.tsx b/timeshift/app/page.tsx new file mode 100644 index 0000000..465d1db --- /dev/null +++ b/timeshift/app/page.tsx @@ -0,0 +1,52 @@ +"use client" + +import * as React from "react" +import { TeamSidebar } from "@/components/team-sidebar" +import { ScheduleTabs } from "@/components/schedule-tabs" +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb" +import { Separator } from "@/components/ui/separator" +import { SidebarInset, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar" + +// Team data for display +const teamData = { + tkb: "TKB", + metro: "METRO", + d8: "D8", +} + +export default function TimeshiftManager() { + const [selectedTeam, setSelectedTeam] = React.useState("tkb") + + return ( + + + +
+ + + + + + TimeShift 161 + + + + {teamData[selectedTeam as keyof typeof teamData]} + + + +
+
+ +
+
+
+ ) +} diff --git a/timeshift/components.json b/timeshift/components.json new file mode 100644 index 0000000..8de3dce --- /dev/null +++ b/timeshift/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "gray", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/timeshift/components/schedule-history.tsx b/timeshift/components/schedule-history.tsx new file mode 100644 index 0000000..b861cd8 --- /dev/null +++ b/timeshift/components/schedule-history.tsx @@ -0,0 +1,156 @@ +"use client" + +import * as React from "react" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Badge } from "@/components/ui/badge" +import { Search, Download, Eye, Calendar, Clock } from "lucide-react" +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" + +interface ScheduleHistoryProps { + teamId: string + teamName: string +} + +// Sample historical data +const getHistoricalSchedules = (teamId: string) => [ + { + id: "1", + name: "Week 45 - November 2024", + dateRange: "Nov 4-10, 2024", + createdBy: "John Manager", + createdAt: "2024-11-01", + status: "completed", + employees: 8, + }, + { + id: "2", + name: "Week 44 - October 2024", + dateRange: "Oct 28 - Nov 3, 2024", + createdBy: "Sarah Admin", + createdAt: "2024-10-25", + status: "completed", + employees: 7, + }, + { + id: "3", + name: "Week 43 - October 2024", + dateRange: "Oct 21-27, 2024", + createdBy: "John Manager", + createdAt: "2024-10-18", + status: "completed", + employees: 8, + }, + { + id: "4", + name: "Holiday Schedule - Christmas", + dateRange: "Dec 23-29, 2023", + createdBy: "Admin", + createdAt: "2023-12-15", + status: "archived", + employees: 5, + }, +] + +export function ScheduleHistory({ teamId, teamName }: ScheduleHistoryProps) { + const [searchTerm, setSearchTerm] = React.useState("") + const historicalSchedules = getHistoricalSchedules(teamId) + + const filteredSchedules = historicalSchedules.filter( + (schedule) => + schedule.name.toLowerCase().includes(searchTerm.toLowerCase()) || + schedule.dateRange.toLowerCase().includes(searchTerm.toLowerCase()) || + schedule.createdBy.toLowerCase().includes(searchTerm.toLowerCase()), + ) + + const getStatusColor = (status: string) => { + switch (status) { + case "completed": + return "bg-green-100 text-green-800" + case "archived": + return "bg-gray-100 text-gray-800" + default: + return "bg-blue-100 text-blue-800" + } + } + + return ( + + + + + {teamName} - Schedule History + + Browse and restore previous schedules for your team +
+
+ + setSearchTerm(e.target.value)} + className="pl-10" + /> +
+
+
+ + + + + Schedule Name + Date Range + Created By + Created Date + Employees + Status + Actions + + + + {filteredSchedules.map((schedule) => ( + + {schedule.name} + +
+ + {schedule.dateRange} +
+
+ {schedule.createdBy} + {new Date(schedule.createdAt).toLocaleDateString()} + {schedule.employees} + + {schedule.status} + + +
+ + +
+
+
+ ))} +
+
+ + {filteredSchedules.length === 0 && ( +
+ +

No schedules found

+

+ {searchTerm ? "Try adjusting your search terms" : "No historical schedules available yet"} +

+
+ )} +
+
+ ) +} diff --git a/timeshift/components/schedule-tabs.tsx b/timeshift/components/schedule-tabs.tsx new file mode 100644 index 0000000..d3f9c8a --- /dev/null +++ b/timeshift/components/schedule-tabs.tsx @@ -0,0 +1,58 @@ +"use client" +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { TimeshiftSpreadsheet } from "./timeshift-spreadsheet" +import { ScheduleHistory } from "./schedule-history" +import { ScheduleTemplates } from "./schedule-templates" +import { Calendar, History, FileIcon as FileTemplate, Table } from "lucide-react" + +interface ScheduleTabsProps { + teamId: string + teamName: string +} + +export function ScheduleTabs({ teamId, teamName }: ScheduleTabsProps) { + return ( + + + + + Current Schedule + + + + History + + + + Templates + + + + Calendar View + + + + + + + + + + + + + + + + +
+
+ +

Calendar View

+

Calendar view coming soon...

+
+
+
+ + ) +} diff --git a/timeshift/components/schedule-templates.tsx b/timeshift/components/schedule-templates.tsx new file mode 100644 index 0000000..f6be87f --- /dev/null +++ b/timeshift/components/schedule-templates.tsx @@ -0,0 +1,130 @@ +"use client" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Badge } from "@/components/ui/badge" +import { FileIcon as FileTemplate, Plus, Copy, Edit, Trash2 } from "lucide-react" + +interface ScheduleTemplatesProps { + teamId: string + teamName: string +} + +// Sample template data +const getTemplates = (teamId: string) => [ + { + id: "1", + name: "Standard Week", + description: "Regular 5-day work week with weekend coverage", + shifts: ["08:00-16:00", "16:00-00:00", "00:00-08:00"], + employees: 8, + coverage: "24/7", + }, + { + id: "2", + name: "Holiday Schedule", + description: "Reduced staffing for holidays and special events", + shifts: ["08:00-20:00", "20:00-08:00"], + employees: 4, + coverage: "24/7", + }, + { + id: "3", + name: "Maintenance Week", + description: "Extended maintenance periods with adjusted shifts", + shifts: ["06:00-14:00", "14:00-22:00", "22:00-06:00"], + employees: 6, + coverage: "24/7", + }, + { + id: "4", + name: "Emergency Response", + description: "Emergency staffing template for critical situations", + shifts: ["12-hour rotating"], + employees: 12, + coverage: "24/7", + }, +] + +export function ScheduleTemplates({ teamId, teamName }: ScheduleTemplatesProps) { + const templates = getTemplates(teamId) + + return ( + + +
+
+ + + {teamName} - Schedule Templates + + Pre-configured schedule templates for quick deployment +
+ +
+
+ +
+ {templates.map((template) => ( + + +
+
+ {template.name} + {template.description} +
+ {template.coverage} +
+
+ +
+
+

Shift Patterns:

+
+ {template.shifts.map((shift, index) => ( + + {shift} + + ))} +
+
+ +
+ {template.employees} employees +
+ +
+ + + +
+
+
+
+ ))} +
+ + {templates.length === 0 && ( +
+ +

No templates found

+

Create your first schedule template to get started

+ +
+ )} +
+
+ ) +} diff --git a/timeshift/components/team-sidebar.tsx b/timeshift/components/team-sidebar.tsx new file mode 100644 index 0000000..b81eb6d --- /dev/null +++ b/timeshift/components/team-sidebar.tsx @@ -0,0 +1,108 @@ +"use client" + +import type * as React from "react" +import { TrainFrontTunnel, Calendar, Users } from "lucide-react" + +import { + Sidebar, + SidebarContent, + SidebarGroup, + SidebarGroupContent, + SidebarGroupLabel, + SidebarHeader, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + SidebarRail, +} from "@/components/ui/sidebar" + +// Sample team data +const teams = [ + { + id: "tkb", + name: "TKB", + color: "bg-blue-500", + }, + { + id: "metro", + name: "METRO", + color: "bg-green-500", + }, + { + id: "d8", + name: "D8", + color: "bg-orange-500", + }, +] + +interface TeamSidebarProps extends React.ComponentProps { + selectedTeam: string + onTeamSelect: (teamId: string) => void +} + +export function TeamSidebar({ selectedTeam, onTeamSelect, ...props }: TeamSidebarProps) { + return ( + + + + + +
+
+ +
+
+ TimeShift 161 + Team Scheduling +
+
+
+
+
+
+ + + Teams + + + {teams.map((team) => ( + + onTeamSelect(team.id)} + isActive={selectedTeam === team.id} + className="w-full" + > +
+
+ {team.name} +
+ + + ))} + + + + + Quick Actions + + + + + + View All Schedules + + + + + + Manage Teams + + + + + + + + + ) +} diff --git a/timeshift/components/timeshift-spreadsheet.tsx b/timeshift/components/timeshift-spreadsheet.tsx new file mode 100644 index 0000000..99f6478 --- /dev/null +++ b/timeshift/components/timeshift-spreadsheet.tsx @@ -0,0 +1,472 @@ +"use client" + +import * as React from "react" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" +import { Save, Download, Plus } from "lucide-react" + +interface TimeshiftSpreadsheetProps { + teamId: string + teamName: string +} + +export function TimeshiftSpreadsheet({ teamId: _teamId, teamName }: TimeshiftSpreadsheetProps) { + const spreadsheetRef = React.useRef(null) + const jspreadsheetInstance = React.useRef(null) + const currentDate = new Date() + const [selectedMonth, setSelectedMonth] = React.useState((currentDate.getMonth() + 1).toString()) + const [selectedYear, setSelectedYear] = React.useState(currentDate.getFullYear().toString()) + const [dialogOpen, setDialogOpen] = React.useState(false) + const [forceUpdate, setForceUpdate] = React.useState(0) + + // Function to generate Excel-style column names (A, B, C, ..., Z, AA, AB, ...) + const getExcelColumnName = (index: number): string => { + let result = '' + while (index >= 0) { + result = String.fromCharCode(65 + (index % 26)) + result + index = Math.floor(index / 26) - 1 + } + return result + } + + // Generate monthly schedule data + const generateMonthlyData = (month: number, year: number) => { + console.log("Generating data for month:", month, "year:", year) + // Get first and last day of selected month + const firstDay = new Date(year, month - 1, 1) + const lastDay = new Date(year, month, 0) + console.log("Date range:", firstDay, "to", lastDay) + + // Get exactly 7 days from previous month + const prevMonthStart = new Date(firstDay) + prevMonthStart.setDate(firstDay.getDate() - 7) + + // End at the last day of the selected month (no next month days) + const nextMonthEnd = new Date(lastDay) + + console.log("Full date range:", prevMonthStart.toDateString(), "to", nextMonthEnd.toDateString()) + console.log("Previous month start:", prevMonthStart.toDateString(), "Current month end:", nextMonthEnd.toDateString()) + + // Generate header rows + const titleRow = [`${String(month).padStart(2, '0')}.${year} v.1`, "Uzávěry ostatní"] + const dayNameRow = [""] + const yearRow = ["rok"] + const monthRow = ["měsíc"] + const dateRow = ["den"] + const shiftRow = [`Pohotovost ${_teamId.toUpperCase()}`] + + // Generate columns for each day from prevMonthStart to nextMonthEnd + const currentDate = new Date(prevMonthStart) + let dayCount = 0 + const maxDays = 50 // Safety limit to prevent infinite loops + + console.log("Starting date loop from:", currentDate.toDateString(), "to:", nextMonthEnd.toDateString()) + + while (currentDate <= nextMonthEnd && dayCount < maxDays) { + const dayName = ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"][currentDate.getDay()] + + titleRow.push("", "") + dayNameRow.push(dayName, "") + yearRow.push(currentDate.getFullYear().toString(), "") + monthRow.push((currentDate.getMonth() + 1).toString(), "") + dateRow.push(currentDate.getDate().toString(), "") + shiftRow.push("den", "noc") + + currentDate.setDate(currentDate.getDate() + 1) + dayCount++ + } + + console.log("Generated", dayCount, "days of data") + + // Complete employee data from Excel file + const employees = [ + "Pauzer Libor (all in one)", + "Vörös Pavel (NN)", + "Janouš Petr (VN)", + "Dvořák Václav (VN)", + "Vondrák Pavel (NN)", + "Čeleda Olda (NN)", + "Hanzlík Marek (VN)", + "Kohl David (VN)", + "Dittrich Vladimír (VN)", + "Toman Milan (VN)", + "Glaser Ondřej (NN)", + "Herbst David (NN)", + "Ryba Ondřej (NN)", + "Zábranský Petr (NN)", + "Žemlička Miroslav (NN)", + "Teslík Hynek (NN)", + "X BEZ zkušeností s VN", + "Pohotovost IT" + ] + + const employeeRows = employees.map(name => { + const row = [name] + // Add empty cells for each day/night pair + for (let i = 1; i < shiftRow.length; i++) { + row.push("") + } + return row + }) + + const result = [titleRow, dayNameRow, yearRow, monthRow, dateRow, shiftRow, [""], ...employeeRows] + console.log("Generated", result.length, "rows with", result[0]?.length, "columns") + console.log("Title row:", titleRow.slice(0, 10)) + console.log("Day row:", dayNameRow.slice(0, 10)) + return result + } + + // Sample data for different teams (fallback) + const getTeamData = (_teamId: string) => { + const baseData = [ + ["Employee", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + ["John Smith", "08:00-16:00", "08:00-16:00", "08:00-16:00", "08:00-16:00", "08:00-16:00", "OFF", "OFF"], + ["Jane Doe", "16:00-00:00", "16:00-00:00", "16:00-00:00", "16:00-00:00", "16:00-00:00", "OFF", "OFF"], + ["Mike Johnson", "00:00-08:00", "00:00-08:00", "00:00-08:00", "00:00-08:00", "00:00-08:00", "OFF", "OFF"], + ["Sarah Wilson", "08:00-16:00", "OFF", "08:00-16:00", "OFF", "08:00-16:00", "08:00-16:00", "08:00-16:00"], + ["", "", "", "", "", "", "", ""], + ["", "", "", "", "", "", "", ""], + ] + return baseData + } + + React.useEffect(() => { + console.log("useEffect triggered - Month:", selectedMonth, "Year:", selectedYear, "Force:", forceUpdate) + const loadJSpreadsheet = async () => { + console.log("Starting loadJSpreadsheet function") + + // Check if scripts are already loaded + const windowWithJExcel = window as unknown as { jexcel?: unknown, jspreadsheet?: unknown } + + if (!windowWithJExcel.jexcel && !windowWithJExcel.jspreadsheet) { + console.log("Loading jspreadsheet scripts...") + + // Load CSS if not already loaded + if (!document.querySelector('link[href*="jexcel.css"]')) { + const cssLink = document.createElement("link") + cssLink.rel = "stylesheet" + cssLink.href = "https://bossanova.uk/jspreadsheet/v4/jexcel.css" + document.head.appendChild(cssLink) + } + + if (!document.querySelector('link[href*="jsuites.css"]')) { + const jSuiteCssLink = document.createElement("link") + jSuiteCssLink.rel = "stylesheet" + jSuiteCssLink.href = "https://jsuites.net/v4/jsuites.css" + document.head.appendChild(jSuiteCssLink) + } + + // Load JavaScript files if not already loaded + if (!document.querySelector('script[src*="jsuites.js"]')) { + const jSuitesScript = document.createElement("script") + jSuitesScript.src = "https://jsuites.net/v4/jsuites.js" + document.head.appendChild(jSuitesScript) + } + + if (!document.querySelector('script[src*="jexcel.js"]')) { + const jSpreadsheetScript = document.createElement("script") + jSpreadsheetScript.src = "https://bossanova.uk/jspreadsheet/v4/jexcel.js" + document.head.appendChild(jSpreadsheetScript) + + // Wait for scripts to load + console.log("Waiting for scripts to load...") + await new Promise((resolve) => { + jSpreadsheetScript.onload = () => { + console.log("Scripts loaded successfully") + setTimeout(resolve, 200) // Longer delay + } + jSpreadsheetScript.onerror = () => { + console.error("Failed to load jspreadsheet script") + resolve(null) + } + }) + } + } else { + console.log("Scripts already loaded") + } + + // Initialize spreadsheet + const windowObj = window as unknown as { jexcel?: unknown, jspreadsheet?: unknown } + const jexcelLib = windowObj.jexcel || windowObj.jspreadsheet + console.log("Checking for jexcel availability:", !!windowObj.jexcel) + console.log("Checking for jspreadsheet availability:", !!windowObj.jspreadsheet) + console.log("Using library:", jexcelLib ? (windowObj.jexcel ? 'jexcel' : 'jspreadsheet') : 'none') + console.log("Checking spreadsheet ref:", !!spreadsheetRef.current) + + if (spreadsheetRef.current && jexcelLib) { + console.log("Initializing spreadsheet...") + // Clear previous instance + if (jspreadsheetInstance.current) { + console.log("Destroying previous instance") + jspreadsheetInstance.current.destroy() + } + + // Use monthly data if month/year selected, otherwise use basic data + let data + try { + if (selectedMonth && selectedYear) { + console.log("About to generate monthly data for:", parseInt(selectedMonth), parseInt(selectedYear)) + data = generateMonthlyData(parseInt(selectedMonth), parseInt(selectedYear)) + console.log("Monthly data generated successfully") + } else { + console.log("Using basic team data") + data = getTeamData(_teamId) + } + } catch (error) { + console.error("Error generating data:", error) + data = getTeamData(_teamId) + } + + console.log("Data generated:", data.length, "rows, first row:", data[0]?.length, "columns") + console.log("First few rows:", data.slice(0, 3)) + + // Generate column configuration based on data + const columns = data[0]?.map((_, index) => ({ + type: "text", + title: getExcelColumnName(index), // A, B, C, ..., Z, AA, AB, ... + width: index === 0 ? 200 : 25 // First column 200px, all others 25px + })) || [] + + // Generate styles for day/night shifts based on the Excel pattern + const styles: Record = {} + if (selectedMonth && selectedYear) { + // Style header rows + for (let col = 1; col < (data[0]?.length || 0); col++) { + const colLetter = getExcelColumnName(col) + if (col % 2 === 1) { // Day shifts (odd columns after first) + styles[`${colLetter}6`] = "background-color: #ffff00; font-weight: bold;" // Yellow for day + } else { // Night shifts (even columns after first) + styles[`${colLetter}6`] = "background-color: #00b0f0; font-weight: bold;" // Blue for night + } + } + + // Style weekend days (Saturday/Sunday in day name row) + for (let col = 1; col < (data[0]?.length || 0); col += 2) { + const dayName = data[1]?.[col] + if (dayName === "Sobota" || dayName === "Neděle") { + const colLetter = getExcelColumnName(col) + const nextColLetter = getExcelColumnName(col + 1) + styles[`${colLetter}2`] = "background-color: #ffd966;" // Weekend day name + styles[`${nextColLetter}2`] = "background-color: #ffd966;" + } + } + } + + console.log("Initializing jspreadsheet with config:", { + dataRows: data.length, + dataCols: data[0]?.length, + columns: columns.length, + stylesCount: Object.keys(styles).length + }) + + jspreadsheetInstance.current = (jexcelLib as (el: HTMLElement, config: unknown) => unknown)(spreadsheetRef.current, { + data: data, + columns: columns, + minDimensions: [data[0]?.length || 8, Math.max(data.length + 3, 10)], + allowInsertRow: true, + allowInsertColumn: false, + allowDeleteRow: true, + allowDeleteColumn: false, + contextMenu: true, + tableOverflow: true, + tableWidth: "100%", + tableHeight: "500px", + style: styles, + }) + + console.log("jspreadsheet initialized:", !!jspreadsheetInstance.current) + + // Apply counter-clockwise rotation to data values only (exclude second column which contains field labels) + setTimeout(() => { + const table = spreadsheetRef.current?.querySelector('.jexcel tbody') + if (table) { + const rows = table.querySelectorAll('tr') + + // Rotate data values in rows 2, 3, 4, 5, 6 (day names, year, month, day, shifts) excluding first two columns + ;[1, 2, 3, 4, 5].forEach(rowIndex => { + if (rows[rowIndex]) { + const cells = rows[rowIndex].querySelectorAll('td') + cells.forEach((cell, cellIndex) => { + // Skip first two columns (row numbers and field labels) + if (cellIndex > 1) { + const originalText = cell.textContent + cell.innerHTML = `
${originalText}
` + } + }) + } + }) + + // Make only "Pohotovost TKB" bold, keep other field labels regular and ensure they're not rotated + ;[0, 2, 3, 4, 5].forEach(rowIndex => { + if (rows[rowIndex]) { + const cells = rows[rowIndex].querySelectorAll('td') + if (cells[1]) { // Second column (index 1) + cells[1].style.transform = 'none' + // Only make "Pohotovost TKB" bold (row index 5) + if (rowIndex === 5) { + cells[1].style.fontWeight = 'bold' + } else { + cells[1].style.fontWeight = 'normal' + } + } + } + }) + } + }, 200) + + } else { + console.log("Cannot initialize - missing ref or jexcel library") + } + } + + console.log("Calling loadJSpreadsheet...") + loadJSpreadsheet().catch(error => { + console.error("Error in loadJSpreadsheet:", error) + }) + + return () => { + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.destroy() + } + } + }, [_teamId, selectedMonth, selectedYear, forceUpdate]) + + const handleSave = () => { + if (jspreadsheetInstance.current) { + const data = jspreadsheetInstance.current.getData() + console.log("Saving data:", data) + // Here you would typically save to your backend + alert("Schedule saved successfully!") + } + } + + const handleExport = () => { + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.download() + } + } + + const handleCreateSchedule = () => { + setDialogOpen(true) + } + + const handleGenerateSchedule = () => { + console.log("Generate clicked - Month:", selectedMonth, "Year:", selectedYear) + if (selectedMonth && selectedYear) { + setDialogOpen(false) + console.log("Generating schedule for:", selectedMonth, selectedYear) + // Force useEffect to trigger by updating the forceUpdate counter + setForceUpdate(prev => prev + 1) + } else { + console.log("Month or year not selected") + alert("Please select both month and year") + } + } + + const handleAddEmployee = () => { + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.insertRow() + } + } + + return ( + + +
+
+ {teamName} - Weekly Schedule + Manage work shifts and schedules for your team members +
+
+ + + + + + + Create Monthly Schedule + + Select the month and year for which you want to generate the timetable. + + +
+
+ + +
+
+ + +
+
+ + + +
+
+ + +
+
+
+ +
+
+
+
+

+ Instructions: +

+
    +
  • Click on any cell to edit shift times (e.g., "08:00-16:00")
  • +
  • Use "OFF" for days off
  • +
  • Right-click for context menu options
  • +
  • Use the "Add Employee" button to add new team members
  • +
+
+ + + ) +} diff --git a/timeshift/components/ui/badge.tsx b/timeshift/components/ui/badge.tsx new file mode 100644 index 0000000..0205413 --- /dev/null +++ b/timeshift/components/ui/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 "@/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 dark:bg-destructive/60", + 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/timeshift/components/ui/breadcrumb.tsx b/timeshift/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..eb88f32 --- /dev/null +++ b/timeshift/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return
+ + ) +} + +function TableHeader({ className, ...props }: React.ComponentProps<"thead">) { + return ( + + ) +} + +function TableBody({ className, ...props }: React.ComponentProps<"tbody">) { + return ( + + ) +} + +function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">) { + return ( + tr]:last:border-b-0", + className + )} + {...props} + /> + ) +} + +function TableRow({ className, ...props }: React.ComponentProps<"tr">) { + return ( + + ) +} + +function TableHead({ className, ...props }: React.ComponentProps<"th">) { + return ( +
[role=checkbox]]:translate-y-[2px]", + className + )} + {...props} + /> + ) +} + +function TableCell({ className, ...props }: React.ComponentProps<"td">) { + return ( + [role=checkbox]]:translate-y-[2px]", + className + )} + {...props} + /> + ) +} + +function TableCaption({ + className, + ...props +}: React.ComponentProps<"caption">) { + return ( +
+ ) +} + +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, +} diff --git a/timeshift/components/ui/tabs.tsx b/timeshift/components/ui/tabs.tsx new file mode 100644 index 0000000..497ba5e --- /dev/null +++ b/timeshift/components/ui/tabs.tsx @@ -0,0 +1,66 @@ +"use client" + +import * as React from "react" +import * as TabsPrimitive from "@radix-ui/react-tabs" + +import { cn } from "@/lib/utils" + +function Tabs({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function TabsList({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function TabsTrigger({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function TabsContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Tabs, TabsList, TabsTrigger, TabsContent } diff --git a/timeshift/components/ui/tooltip.tsx b/timeshift/components/ui/tooltip.tsx new file mode 100644 index 0000000..4ee26b3 --- /dev/null +++ b/timeshift/components/ui/tooltip.tsx @@ -0,0 +1,61 @@ +"use client" + +import * as React from "react" +import * as TooltipPrimitive from "@radix-ui/react-tooltip" + +import { cn } from "@/lib/utils" + +function TooltipProvider({ + delayDuration = 0, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function Tooltip({ + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function TooltipTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function TooltipContent({ + className, + sideOffset = 0, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + ) +} + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/timeshift/eslint.config.mjs b/timeshift/eslint.config.mjs new file mode 100644 index 0000000..c85fb67 --- /dev/null +++ b/timeshift/eslint.config.mjs @@ -0,0 +1,16 @@ +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/timeshift/example.xlsx b/timeshift/example.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dbab1ad58e87546e13baffb8bc16594dee58300f GIT binary patch literal 29711 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 + + React.useEffect(() => { + const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`) + const onChange = () => { + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) + } + mql.addEventListener("change", onChange) + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) + return () => mql.removeEventListener("change", onChange) + }, []) + + return !!isMobile +} diff --git a/timeshift/lib/utils.ts b/timeshift/lib/utils.ts new file mode 100644 index 0000000..bd0c391 --- /dev/null +++ b/timeshift/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/timeshift/next.config.ts b/timeshift/next.config.ts new file mode 100644 index 0000000..e9ffa30 --- /dev/null +++ b/timeshift/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/timeshift/package-lock.json b/timeshift/package-lock.json new file mode 100644 index 0000000..e059b47 --- /dev/null +++ b/timeshift/package-lock.json @@ -0,0 +1,7052 @@ +{ + "name": "timeshift", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "timeshift", + "version": "0.1.0", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-tooltip": "^1.2.7", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.525.0", + "next": "15.2.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.3.1" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "15.2.4", + "tailwindcss": "^4", + "tw-animate-css": "^1.3.6", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", + "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", + "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", + "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.2", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.4.tgz", + "integrity": "sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.2" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@next/env": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", + "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.4.tgz", + "integrity": "sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", + "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", + "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", + "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", + "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", + "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", + "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", + "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", + "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.14.tgz", + "integrity": "sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.10.tgz", + "integrity": "sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.7.tgz", + "integrity": "sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.10.tgz", + "integrity": "sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.5.tgz", + "integrity": "sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.12.tgz", + "integrity": "sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.7.tgz", + "integrity": "sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz", + "integrity": "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", + "integrity": "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.11.tgz", + "integrity": "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-x64": "4.1.11", + "@tailwindcss/oxide-freebsd-x64": "4.1.11", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-x64-musl": "4.1.11", + "@tailwindcss/oxide-wasm32-wasi": "4.1.11", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz", + "integrity": "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz", + "integrity": "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz", + "integrity": "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz", + "integrity": "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz", + "integrity": "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz", + "integrity": "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz", + "integrity": "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz", + "integrity": "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz", + "integrity": "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz", + "integrity": "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.11", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz", + "integrity": "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz", + "integrity": "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.11.tgz", + "integrity": "sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.11", + "@tailwindcss/oxide": "4.1.11", + "postcss": "^8.4.41", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.9.tgz", + "integrity": "sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", + "integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/type-utils": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.38.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz", + "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", + "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.38.0", + "@typescript-eslint/types": "^8.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", + "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", + "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz", + "integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", + "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", + "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", + "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", + "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.31.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.4.tgz", + "integrity": "sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "15.2.4", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.0.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", + "optional": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lucide-react": { + "version": "0.525.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.525.0.tgz", + "integrity": "sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.2.tgz", + "integrity": "sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", + "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", + "license": "MIT", + "dependencies": { + "@next/env": "15.2.4", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.2.4", + "@next/swc-darwin-x64": "15.2.4", + "@next/swc-linux-arm64-gnu": "15.2.4", + "@next/swc-linux-arm64-musl": "15.2.4", + "@next/swc-linux-x64-gnu": "15.2.4", + "@next/swc-linux-x64-musl": "15.2.4", + "@next/swc-win32-arm64-msvc": "15.2.4", + "@next/swc-win32-x64-msvc": "15.2.4", + "sharp": "^0.33.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", + "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tw-animate-css": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.6.tgz", + "integrity": "sha512-9dy0R9UsYEGmgf26L8UcHiLmSFTHa9+D7+dAt/G/sF5dCnPePZbfgDYinc7/UzAM7g/baVrmS6m9yEpU46d+LA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/timeshift/package.json b/timeshift/package.json new file mode 100644 index 0000000..0ad4ae9 --- /dev/null +++ b/timeshift/package.json @@ -0,0 +1,39 @@ +{ + "name": "timeshift", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-tooltip": "^1.2.7", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.525.0", + "next": "15.2.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.3.1" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "15.2.4", + "tailwindcss": "^4", + "tw-animate-css": "^1.3.6", + "typescript": "^5" + } +} diff --git a/timeshift/postcss.config.mjs b/timeshift/postcss.config.mjs new file mode 100644 index 0000000..c7bcb4b --- /dev/null +++ b/timeshift/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/timeshift/public/file.svg b/timeshift/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/timeshift/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/timeshift/public/globe.svg b/timeshift/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/timeshift/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/timeshift/public/next.svg b/timeshift/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/timeshift/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/timeshift/public/vercel.svg b/timeshift/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/timeshift/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/timeshift/public/window.svg b/timeshift/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/timeshift/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/timeshift/timeshift-management.zip b/timeshift/timeshift-management.zip new file mode 100644 index 0000000000000000000000000000000000000000..e8a52de9a0e131ca1db07ddbc8f35fe69a5ce4e4 GIT binary patch literal 219018 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 literal 0 HcmV?d00001 diff --git a/timeshift/tsconfig.json b/timeshift/tsconfig.json new file mode 100644 index 0000000..d8b9323 --- /dev/null +++ b/timeshift/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/timeshift/v0_extracted/.gitignore b/timeshift/v0_extracted/.gitignore new file mode 100644 index 0000000..f650315 --- /dev/null +++ b/timeshift/v0_extracted/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules + +# next.js +/.next/ +/out/ + +# production +/build + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts \ No newline at end of file diff --git a/timeshift/v0_extracted/app/globals.css b/timeshift/v0_extracted/app/globals.css new file mode 100644 index 0000000..df8e606 --- /dev/null +++ b/timeshift/v0_extracted/app/globals.css @@ -0,0 +1,90 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --radius: 0.5rem; + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + } + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/timeshift/v0_extracted/app/layout.tsx b/timeshift/v0_extracted/app/layout.tsx new file mode 100644 index 0000000..d701d91 --- /dev/null +++ b/timeshift/v0_extracted/app/layout.tsx @@ -0,0 +1,31 @@ +import type { Metadata } from 'next' +import { GeistSans } from 'geist/font/sans' +import { GeistMono } from 'geist/font/mono' +import './globals.css' + +export const metadata: Metadata = { + title: 'v0 App', + description: 'Created with v0', + generator: 'v0.dev', +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + + + + {children} + + ) +} diff --git a/timeshift/v0_extracted/app/page.tsx b/timeshift/v0_extracted/app/page.tsx new file mode 100644 index 0000000..37ef707 --- /dev/null +++ b/timeshift/v0_extracted/app/page.tsx @@ -0,0 +1,54 @@ +"use client" + +import * as React from "react" +import { TeamSidebar } from "@/components/team-sidebar" +import { ScheduleTabs } from "@/components/schedule-tabs" +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb" +import { Separator } from "@/components/ui/separator" +import { SidebarInset, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar" + +// Team data for display +const teamData = { + maintenance: "Maintenance Team", + electrical: "Electrical Team", + hvac: "HVAC Team", + security: "Security Team", + cleaning: "Cleaning Team", +} + +export default function TimeshiftManager() { + const [selectedTeam, setSelectedTeam] = React.useState("maintenance") + + return ( + + + +

+ + + + + + TimeShift 161 + + + + {teamData[selectedTeam as keyof typeof teamData]} + + + +
+
+ +
+ + + ) +} diff --git a/timeshift/v0_extracted/components.json b/timeshift/v0_extracted/components.json new file mode 100644 index 0000000..d9ef0ae --- /dev/null +++ b/timeshift/v0_extracted/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/timeshift/v0_extracted/components/schedule-history.tsx b/timeshift/v0_extracted/components/schedule-history.tsx new file mode 100644 index 0000000..b861cd8 --- /dev/null +++ b/timeshift/v0_extracted/components/schedule-history.tsx @@ -0,0 +1,156 @@ +"use client" + +import * as React from "react" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Badge } from "@/components/ui/badge" +import { Search, Download, Eye, Calendar, Clock } from "lucide-react" +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" + +interface ScheduleHistoryProps { + teamId: string + teamName: string +} + +// Sample historical data +const getHistoricalSchedules = (teamId: string) => [ + { + id: "1", + name: "Week 45 - November 2024", + dateRange: "Nov 4-10, 2024", + createdBy: "John Manager", + createdAt: "2024-11-01", + status: "completed", + employees: 8, + }, + { + id: "2", + name: "Week 44 - October 2024", + dateRange: "Oct 28 - Nov 3, 2024", + createdBy: "Sarah Admin", + createdAt: "2024-10-25", + status: "completed", + employees: 7, + }, + { + id: "3", + name: "Week 43 - October 2024", + dateRange: "Oct 21-27, 2024", + createdBy: "John Manager", + createdAt: "2024-10-18", + status: "completed", + employees: 8, + }, + { + id: "4", + name: "Holiday Schedule - Christmas", + dateRange: "Dec 23-29, 2023", + createdBy: "Admin", + createdAt: "2023-12-15", + status: "archived", + employees: 5, + }, +] + +export function ScheduleHistory({ teamId, teamName }: ScheduleHistoryProps) { + const [searchTerm, setSearchTerm] = React.useState("") + const historicalSchedules = getHistoricalSchedules(teamId) + + const filteredSchedules = historicalSchedules.filter( + (schedule) => + schedule.name.toLowerCase().includes(searchTerm.toLowerCase()) || + schedule.dateRange.toLowerCase().includes(searchTerm.toLowerCase()) || + schedule.createdBy.toLowerCase().includes(searchTerm.toLowerCase()), + ) + + const getStatusColor = (status: string) => { + switch (status) { + case "completed": + return "bg-green-100 text-green-800" + case "archived": + return "bg-gray-100 text-gray-800" + default: + return "bg-blue-100 text-blue-800" + } + } + + return ( + + + + + {teamName} - Schedule History + + Browse and restore previous schedules for your team +
+
+ + setSearchTerm(e.target.value)} + className="pl-10" + /> +
+
+
+ + + + + Schedule Name + Date Range + Created By + Created Date + Employees + Status + Actions + + + + {filteredSchedules.map((schedule) => ( + + {schedule.name} + +
+ + {schedule.dateRange} +
+
+ {schedule.createdBy} + {new Date(schedule.createdAt).toLocaleDateString()} + {schedule.employees} + + {schedule.status} + + +
+ + +
+
+
+ ))} +
+
+ + {filteredSchedules.length === 0 && ( +
+ +

No schedules found

+

+ {searchTerm ? "Try adjusting your search terms" : "No historical schedules available yet"} +

+
+ )} +
+
+ ) +} diff --git a/timeshift/v0_extracted/components/schedule-tabs.tsx b/timeshift/v0_extracted/components/schedule-tabs.tsx new file mode 100644 index 0000000..d3f9c8a --- /dev/null +++ b/timeshift/v0_extracted/components/schedule-tabs.tsx @@ -0,0 +1,58 @@ +"use client" +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { TimeshiftSpreadsheet } from "./timeshift-spreadsheet" +import { ScheduleHistory } from "./schedule-history" +import { ScheduleTemplates } from "./schedule-templates" +import { Calendar, History, FileIcon as FileTemplate, Table } from "lucide-react" + +interface ScheduleTabsProps { + teamId: string + teamName: string +} + +export function ScheduleTabs({ teamId, teamName }: ScheduleTabsProps) { + return ( + + + + + Current Schedule + + + + History + + + + Templates + + + + Calendar View + + + + + + + + + + + + + + + + +
+
+ +

Calendar View

+

Calendar view coming soon...

+
+
+
+ + ) +} diff --git a/timeshift/v0_extracted/components/schedule-templates.tsx b/timeshift/v0_extracted/components/schedule-templates.tsx new file mode 100644 index 0000000..f6be87f --- /dev/null +++ b/timeshift/v0_extracted/components/schedule-templates.tsx @@ -0,0 +1,130 @@ +"use client" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Badge } from "@/components/ui/badge" +import { FileIcon as FileTemplate, Plus, Copy, Edit, Trash2 } from "lucide-react" + +interface ScheduleTemplatesProps { + teamId: string + teamName: string +} + +// Sample template data +const getTemplates = (teamId: string) => [ + { + id: "1", + name: "Standard Week", + description: "Regular 5-day work week with weekend coverage", + shifts: ["08:00-16:00", "16:00-00:00", "00:00-08:00"], + employees: 8, + coverage: "24/7", + }, + { + id: "2", + name: "Holiday Schedule", + description: "Reduced staffing for holidays and special events", + shifts: ["08:00-20:00", "20:00-08:00"], + employees: 4, + coverage: "24/7", + }, + { + id: "3", + name: "Maintenance Week", + description: "Extended maintenance periods with adjusted shifts", + shifts: ["06:00-14:00", "14:00-22:00", "22:00-06:00"], + employees: 6, + coverage: "24/7", + }, + { + id: "4", + name: "Emergency Response", + description: "Emergency staffing template for critical situations", + shifts: ["12-hour rotating"], + employees: 12, + coverage: "24/7", + }, +] + +export function ScheduleTemplates({ teamId, teamName }: ScheduleTemplatesProps) { + const templates = getTemplates(teamId) + + return ( + + +
+
+ + + {teamName} - Schedule Templates + + Pre-configured schedule templates for quick deployment +
+ +
+
+ +
+ {templates.map((template) => ( + + +
+
+ {template.name} + {template.description} +
+ {template.coverage} +
+
+ +
+
+

Shift Patterns:

+
+ {template.shifts.map((shift, index) => ( + + {shift} + + ))} +
+
+ +
+ {template.employees} employees +
+ +
+ + + +
+
+
+
+ ))} +
+ + {templates.length === 0 && ( +
+ +

No templates found

+

Create your first schedule template to get started

+ +
+ )} +
+
+ ) +} diff --git a/timeshift/v0_extracted/components/team-sidebar.tsx b/timeshift/v0_extracted/components/team-sidebar.tsx new file mode 100644 index 0000000..ae72c25 --- /dev/null +++ b/timeshift/v0_extracted/components/team-sidebar.tsx @@ -0,0 +1,118 @@ +"use client" + +import type * as React from "react" +import { TrainFrontTunnel, Calendar, Users } from "lucide-react" + +import { + Sidebar, + SidebarContent, + SidebarGroup, + SidebarGroupContent, + SidebarGroupLabel, + SidebarHeader, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + SidebarRail, +} from "@/components/ui/sidebar" + +// Sample team data +const teams = [ + { + id: "maintenance", + name: "Maintenance Team", + color: "bg-blue-500", + }, + { + id: "electrical", + name: "Electrical Team", + color: "bg-green-500", + }, + { + id: "hvac", + name: "HVAC Team", + color: "bg-orange-500", + }, + { + id: "security", + name: "Security Team", + color: "bg-purple-500", + }, + { + id: "cleaning", + name: "Cleaning Team", + color: "bg-pink-500", + }, +] + +interface TeamSidebarProps extends React.ComponentProps { + selectedTeam: string + onTeamSelect: (teamId: string) => void +} + +export function TeamSidebar({ selectedTeam, onTeamSelect, ...props }: TeamSidebarProps) { + return ( + + + + + +
+
+ +
+
+ TimeShift 161 + Team Scheduling +
+
+
+
+
+
+ + + Teams + + + {teams.map((team) => ( + + onTeamSelect(team.id)} + isActive={selectedTeam === team.id} + className="w-full" + > +
+
+ {team.name} +
+ + + ))} + + + + + Quick Actions + + + + + + View All Schedules + + + + + + Manage Teams + + + + + + + + + ) +} diff --git a/timeshift/v0_extracted/components/theme-provider.tsx b/timeshift/v0_extracted/components/theme-provider.tsx new file mode 100644 index 0000000..55c2f6e --- /dev/null +++ b/timeshift/v0_extracted/components/theme-provider.tsx @@ -0,0 +1,11 @@ +'use client' + +import * as React from 'react' +import { + ThemeProvider as NextThemesProvider, + type ThemeProviderProps, +} from 'next-themes' + +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { + return {children} +} diff --git a/timeshift/v0_extracted/components/timeshift-spreadsheet.tsx b/timeshift/v0_extracted/components/timeshift-spreadsheet.tsx new file mode 100644 index 0000000..cd8e9e9 --- /dev/null +++ b/timeshift/v0_extracted/components/timeshift-spreadsheet.tsx @@ -0,0 +1,172 @@ +"use client" + +import * as React from "react" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Save, Download, Plus } from "lucide-react" + +interface TimeshiftSpreadsheetProps { + teamId: string + teamName: string +} + +export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetProps) { + const spreadsheetRef = React.useRef(null) + const jspreadsheetInstance = React.useRef(null) + + // Sample data for different teams + const getTeamData = (teamId: string) => { + const baseData = [ + ["Employee", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + ["John Smith", "08:00-16:00", "08:00-16:00", "08:00-16:00", "08:00-16:00", "08:00-16:00", "OFF", "OFF"], + ["Jane Doe", "16:00-00:00", "16:00-00:00", "16:00-00:00", "16:00-00:00", "16:00-00:00", "OFF", "OFF"], + ["Mike Johnson", "00:00-08:00", "00:00-08:00", "00:00-08:00", "00:00-08:00", "00:00-08:00", "OFF", "OFF"], + ["Sarah Wilson", "08:00-16:00", "OFF", "08:00-16:00", "OFF", "08:00-16:00", "08:00-16:00", "08:00-16:00"], + ["", "", "", "", "", "", "", ""], + ["", "", "", "", "", "", "", ""], + ] + return baseData + } + + React.useEffect(() => { + const loadJSpreadsheet = async () => { + // Load jspreadsheet CSS and JS + const cssLink = document.createElement("link") + cssLink.rel = "stylesheet" + cssLink.href = "https://bossanova.uk/jspreadsheet/v4/jexcel.css" + document.head.appendChild(cssLink) + + const jSuiteCssLink = document.createElement("link") + jSuiteCssLink.rel = "stylesheet" + jSuiteCssLink.href = "https://jsuites.net/v4/jsuites.css" + document.head.appendChild(jSuiteCssLink) + + // Load JavaScript files + const jSuitesScript = document.createElement("script") + jSuitesScript.src = "https://jsuites.net/v4/jsuites.js" + document.head.appendChild(jSuitesScript) + + const jSpreadsheetScript = document.createElement("script") + jSpreadsheetScript.src = "https://bossanova.uk/jspreadsheet/v4/jexcel.js" + document.head.appendChild(jSpreadsheetScript) + + // Wait for scripts to load + await new Promise((resolve) => { + jSpreadsheetScript.onload = resolve + }) + + // Initialize spreadsheet + if (spreadsheetRef.current && (window as any).jexcel) { + // Clear previous instance + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.destroy() + } + + jspreadsheetInstance.current = (window as any).jexcel(spreadsheetRef.current, { + data: getTeamData(teamId), + columns: [ + { type: "text", title: "Employee", width: 120 }, + { type: "text", title: "Monday", width: 100 }, + { type: "text", title: "Tuesday", width: 100 }, + { type: "text", title: "Wednesday", width: 100 }, + { type: "text", title: "Thursday", width: 100 }, + { type: "text", title: "Friday", width: 100 }, + { type: "text", title: "Saturday", width: 100 }, + { type: "text", title: "Sunday", width: 100 }, + ], + minDimensions: [8, 10], + allowInsertRow: true, + allowInsertColumn: false, + allowDeleteRow: true, + allowDeleteColumn: false, + contextMenu: true, + tableOverflow: true, + tableWidth: "100%", + tableHeight: "400px", + style: { + A1: "background-color: #f3f4f6; font-weight: bold;", + B1: "background-color: #f3f4f6; font-weight: bold;", + C1: "background-color: #f3f4f6; font-weight: bold;", + D1: "background-color: #f3f4f6; font-weight: bold;", + E1: "background-color: #f3f4f6; font-weight: bold;", + F1: "background-color: #f3f4f6; font-weight: bold;", + G1: "background-color: #f3f4f6; font-weight: bold;", + H1: "background-color: #f3f4f6; font-weight: bold;", + }, + }) + } + } + + loadJSpreadsheet() + + return () => { + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.destroy() + } + } + }, [teamId]) + + const handleSave = () => { + if (jspreadsheetInstance.current) { + const data = jspreadsheetInstance.current.getData() + console.log("Saving data:", data) + // Here you would typically save to your backend + alert("Schedule saved successfully!") + } + } + + const handleExport = () => { + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.download() + } + } + + const handleAddEmployee = () => { + if (jspreadsheetInstance.current) { + jspreadsheetInstance.current.insertRow() + } + } + + return ( + + +
+
+ {teamName} - Weekly Schedule + Manage work shifts and schedules for your team members +
+
+ + + +
+
+
+ +
+
+
+
+

+ Instructions: +

+
    +
  • Click on any cell to edit shift times (e.g., "08:00-16:00")
  • +
  • Use "OFF" for days off
  • +
  • Right-click for context menu options
  • +
  • Use the "Add Employee" button to add new team members
  • +
+
+ + + ) +} diff --git a/timeshift/v0_extracted/components/ui/accordion.tsx b/timeshift/v0_extracted/components/ui/accordion.tsx new file mode 100644 index 0000000..24c788c --- /dev/null +++ b/timeshift/v0_extracted/components/ui/accordion.tsx @@ -0,0 +1,58 @@ +"use client" + +import * as React from "react" +import * as AccordionPrimitive from "@radix-ui/react-accordion" +import { ChevronDown } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Accordion = AccordionPrimitive.Root + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AccordionItem.displayName = "AccordionItem" + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className + )} + {...props} + > + {children} + + + +)) +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
{children}
+
+)) + +AccordionContent.displayName = AccordionPrimitive.Content.displayName + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/timeshift/v0_extracted/components/ui/alert-dialog.tsx b/timeshift/v0_extracted/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..25e7b47 --- /dev/null +++ b/timeshift/v0_extracted/components/ui/alert-dialog.tsx @@ -0,0 +1,141 @@ +"use client" + +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" + +const AlertDialog = AlertDialogPrimitive.Root + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger + +const AlertDialogPortal = AlertDialogPrimitive.Portal + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)) +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +AlertDialogHeader.displayName = "AlertDialogHeader" + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +AlertDialogFooter.displayName = "AlertDialogFooter" + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/timeshift/v0_extracted/components/ui/alert.tsx b/timeshift/v0_extracted/components/ui/alert.tsx new file mode 100644 index 0000000..41fa7e0 --- /dev/null +++ b/timeshift/v0_extracted/components/ui/alert.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)) +Alert.displayName = "Alert" + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +AlertTitle.displayName = "AlertTitle" + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +AlertDescription.displayName = "AlertDescription" + +export { Alert, AlertTitle, AlertDescription } diff --git a/timeshift/v0_extracted/components/ui/aspect-ratio.tsx b/timeshift/v0_extracted/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..d6a5226 --- /dev/null +++ b/timeshift/v0_extracted/components/ui/aspect-ratio.tsx @@ -0,0 +1,7 @@ +"use client" + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +const AspectRatio = AspectRatioPrimitive.Root + +export { AspectRatio } diff --git a/timeshift/v0_extracted/components/ui/avatar.tsx b/timeshift/v0_extracted/components/ui/avatar.tsx new file mode 100644 index 0000000..51e507b --- /dev/null +++ b/timeshift/v0_extracted/components/ui/avatar.tsx @@ -0,0 +1,50 @@ +"use client" + +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/timeshift/v0_extracted/components/ui/badge.tsx b/timeshift/v0_extracted/components/ui/badge.tsx new file mode 100644 index 0000000..f000e3e --- /dev/null +++ b/timeshift/v0_extracted/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ) +} + +export { Badge, badgeVariants } diff --git a/timeshift/v0_extracted/components/ui/breadcrumb.tsx b/timeshift/v0_extracted/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..60e6c96 --- /dev/null +++ b/timeshift/v0_extracted/components/ui/breadcrumb.tsx @@ -0,0 +1,115 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Breadcrumb = React.forwardRef< + HTMLElement, + React.ComponentPropsWithoutRef<"nav"> & { + separator?: React.ReactNode + } +>(({ ...props }, ref) =>
+ ) + }, + ...components, + }} + {...props} + /> + ) +} + +function CalendarDayButton({ + className, + day, + modifiers, + ...props +}: React.ComponentProps) { + const defaultClassNames = getDefaultClassNames() + + const ref = React.useRef(null) + React.useEffect(() => { + if (modifiers.focused) ref.current?.focus() + }, [modifiers.focused]) + + return ( + + ) +}) +CarouselPrevious.displayName = "CarouselPrevious" + +const CarouselNext = React.forwardRef< + HTMLButtonElement, + React.ComponentProps +>(({ className, variant = "outline", size = "icon", ...props }, ref) => { + const { orientation, scrollNext, canScrollNext } = useCarousel() + + return ( + + ) +}) +CarouselNext.displayName = "CarouselNext" + +export { + type CarouselApi, + Carousel, + CarouselContent, + CarouselItem, + CarouselPrevious, + CarouselNext, +} diff --git a/timeshift/v0_extracted/components/ui/chart.tsx b/timeshift/v0_extracted/components/ui/chart.tsx new file mode 100644 index 0000000..8620baa --- /dev/null +++ b/timeshift/v0_extracted/components/ui/chart.tsx @@ -0,0 +1,365 @@ +"use client" + +import * as React from "react" +import * as RechartsPrimitive from "recharts" + +import { cn } from "@/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 +} + +const ChartContainer = React.forwardRef< + HTMLDivElement, + React.ComponentProps<"div"> & { + config: ChartConfig + children: React.ComponentProps< + typeof RechartsPrimitive.ResponsiveContainer + >["children"] + } +>(({ id, className, children, config, ...props }, ref) => { + const uniqueId = React.useId() + const chartId = `chart-${id || uniqueId.replace(/:/g, "")}` + + return ( + +
+ + + {children} + +
+
+ ) +}) +ChartContainer.displayName = "Chart" + +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 ( +
+
+ {children} +
+