[READ-ONLY] One Calendar is a privacy-first calendar web app built with Next.js. It has modern security features, including e2ee, password-protected sharing, and self-destructing share links ๐Ÿ“… calendar.xyehr.cn
nextjs
0

Configure Feed

Select the types of activity you want to include in your feed.

feat: new style ui

+2536 -490
+87 -4
app/globals.css
··· 1 1 @import 'tailwindcss'; 2 2 @import 'tw-animate-css'; 3 + @import "tw-animate-css"; 4 + @import "shadcn/tailwind.css"; 3 5 4 6 @custom-variant dark (&:is(.dark *)); 5 7 @custom-variant green (&:is(.green *)); ··· 48 50 49 51 --animate-accordion-down: accordion-down 0.2s ease-out; 50 52 --animate-accordion-up: accordion-up 0.2s ease-out; 53 + --font-sans: var(--font-sans); 54 + --font-heading: var(--font-heading); 55 + --color-sidebar: var(--sidebar); 56 + --radius-xl: calc(var(--radius) * 1.4); 57 + --radius-2xl: calc(var(--radius) * 1.8); 58 + --radius-3xl: calc(var(--radius) * 2.2); 59 + --radius-4xl: calc(var(--radius) * 2.6); 51 60 } 52 61 53 62 @keyframes accordion-down { ··· 70 79 71 80 html { 72 81 scroll-behavior: smooth; 73 - } 74 - 75 - body { 76 - font-family: Arial, Helvetica, sans-serif; 77 82 } 78 83 79 84 @layer utilities { ··· 341 346 background: hsl(var(--border)); 342 347 opacity: 0.6; 343 348 } 349 + * { 350 + @apply border-border outline-ring/50; 351 + } 352 + body { 353 + @apply bg-background text-foreground; 354 + } 355 + html { 356 + @apply font-sans; 357 + } 344 358 } 345 359 346 360 @layer base { ··· 489 503 --chart-5: oklch(0.645 0.246 16.439); 490 504 } 491 505 } 506 + 507 + :root { 508 + --background: oklch(1 0 0); 509 + --foreground: oklch(0.145 0 0); 510 + --card: oklch(1 0 0); 511 + --card-foreground: oklch(0.145 0 0); 512 + --popover: oklch(1 0 0); 513 + --popover-foreground: oklch(0.145 0 0); 514 + --primary: oklch(0.205 0 0); 515 + --primary-foreground: oklch(0.985 0 0); 516 + --secondary: oklch(0.97 0 0); 517 + --secondary-foreground: oklch(0.205 0 0); 518 + --muted: oklch(0.97 0 0); 519 + --muted-foreground: oklch(0.556 0 0); 520 + --accent: oklch(0.97 0 0); 521 + --accent-foreground: oklch(0.205 0 0); 522 + --destructive: oklch(0.577 0.245 27.325); 523 + --border: oklch(0.922 0 0); 524 + --input: oklch(0.922 0 0); 525 + --ring: oklch(0.708 0 0); 526 + --chart-1: oklch(0.87 0 0); 527 + --chart-2: oklch(0.556 0 0); 528 + --chart-3: oklch(0.439 0 0); 529 + --chart-4: oklch(0.371 0 0); 530 + --chart-5: oklch(0.269 0 0); 531 + --radius: 0.625rem; 532 + --sidebar: oklch(0.985 0 0); 533 + --sidebar-foreground: oklch(0.145 0 0); 534 + --sidebar-primary: oklch(0.205 0 0); 535 + --sidebar-primary-foreground: oklch(0.985 0 0); 536 + --sidebar-accent: oklch(0.97 0 0); 537 + --sidebar-accent-foreground: oklch(0.205 0 0); 538 + --sidebar-border: oklch(0.922 0 0); 539 + --sidebar-ring: oklch(0.708 0 0); 540 + } 541 + 542 + .dark { 543 + --background: oklch(0.145 0 0); 544 + --foreground: oklch(0.985 0 0); 545 + --card: oklch(0.205 0 0); 546 + --card-foreground: oklch(0.985 0 0); 547 + --popover: oklch(0.205 0 0); 548 + --popover-foreground: oklch(0.985 0 0); 549 + --primary: oklch(0.922 0 0); 550 + --primary-foreground: oklch(0.205 0 0); 551 + --secondary: oklch(0.269 0 0); 552 + --secondary-foreground: oklch(0.985 0 0); 553 + --muted: oklch(0.269 0 0); 554 + --muted-foreground: oklch(0.708 0 0); 555 + --accent: oklch(0.269 0 0); 556 + --accent-foreground: oklch(0.985 0 0); 557 + --destructive: oklch(0.704 0.191 22.216); 558 + --border: oklch(1 0 0 / 10%); 559 + --input: oklch(1 0 0 / 15%); 560 + --ring: oklch(0.556 0 0); 561 + --chart-1: oklch(0.87 0 0); 562 + --chart-2: oklch(0.556 0 0); 563 + --chart-3: oklch(0.439 0 0); 564 + --chart-4: oklch(0.371 0 0); 565 + --chart-5: oklch(0.269 0 0); 566 + --sidebar: oklch(0.205 0 0); 567 + --sidebar-foreground: oklch(0.985 0 0); 568 + --sidebar-primary: oklch(0.488 0.243 264.376); 569 + --sidebar-primary-foreground: oklch(0.985 0 0); 570 + --sidebar-accent: oklch(0.269 0 0); 571 + --sidebar-accent-foreground: oklch(0.985 0 0); 572 + --sidebar-border: oklch(1 0 0 / 10%); 573 + --sidebar-ring: oklch(0.556 0 0); 574 + }
+7 -3
app/layout.tsx
··· 3 3 import { 4 4 Instrument_Sans, 5 5 Instrument_Serif, 6 - JetBrains_Mono, 7 - } from 'next/font/google' 6 + JetBrains_Mono, Inter, Geist } from 'next/font/google' 8 7 import './globals.css' 9 8 import { Toaster } from '@/components/ui/sonner' 10 9 import { CalendarProvider } from '@/components/providers/calendar-context' 11 10 import { GeistSans } from 'geist/font/sans' 12 11 import { ThemeProvider } from '@/components/providers/theme-provider' 13 12 import { PwaProvider } from '@/components/providers/pwa-provider' 13 + import { cn } from "@/lib/utils"; 14 + 15 + const geistHeading = Geist({subsets:['latin'],variable:'--font-heading'}); 16 + 17 + const inter = Inter({subsets:['latin'],variable:'--font-sans'}); 14 18 15 19 const instrumentSans = Instrument_Sans({ 16 20 subsets: ['latin'], ··· 58 62 children: React.ReactNode 59 63 }) { 60 64 return ( 61 - <html lang="en" suppressHydrationWarning> 65 + <html lang="en" suppressHydrationWarning className={cn("font-sans", inter.variable, geistHeading.variable)}> 62 66 <body 63 67 className={`${GeistSans.className} ${instrumentSans.variable} ${instrumentSerif.variable} ${jetbrainsMono.variable} antialiased`} 64 68 >
+6 -2
components.json
··· 1 1 { 2 2 "$schema": "https://ui.shadcn.com/schema.json", 3 - "style": "new-york", 3 + "style": "radix-nova", 4 4 "rsc": true, 5 5 "tsx": true, 6 6 "tailwind": { ··· 10 10 "cssVariables": true, 11 11 "prefix": "" 12 12 }, 13 + "iconLibrary": "lucide", 14 + "rtl": false, 13 15 "aliases": { 14 16 "components": "@/components", 15 17 "utils": "@/lib/utils", ··· 17 19 "lib": "@/lib", 18 20 "hooks": "@/hooks" 19 21 }, 20 - "iconLibrary": "lucide" 22 + "menuColor": "default", 23 + "menuAccent": "subtle", 24 + "registries": {} 21 25 }
+32 -32
components/ui/alert-dialog.tsx
··· 1 - "use client"; 1 + "use client" 2 2 3 - import { AlertDialog as AlertDialogPrimitive } from "radix-ui"; 4 - import * as React from "react"; 3 + import * as React from "react" 4 + import { AlertDialog as AlertDialogPrimitive } from "radix-ui" 5 5 6 - import { cn } from "@/lib/utils"; 7 - import { Button } from "@/components/ui/button"; 6 + import { cn } from "@/lib/utils" 7 + import { Button } from "@/components/ui/button" 8 8 9 9 function AlertDialog({ 10 10 ...props 11 11 }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) { 12 - return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />; 12 + return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} /> 13 13 } 14 14 15 15 function AlertDialogTrigger({ ··· 17 17 }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) { 18 18 return ( 19 19 <AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} /> 20 - ); 20 + ) 21 21 } 22 22 23 23 function AlertDialogPortal({ ··· 25 25 }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) { 26 26 return ( 27 27 <AlertDialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} /> 28 - ); 28 + ) 29 29 } 30 30 31 31 function AlertDialogOverlay({ ··· 36 36 <AlertDialogPrimitive.Overlay 37 37 data-slot="alert-dialog-overlay" 38 38 className={cn( 39 - "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", 40 - className, 39 + "fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", 40 + className 41 41 )} 42 42 {...props} 43 43 /> 44 - ); 44 + ) 45 45 } 46 46 47 47 function AlertDialogContent({ ··· 49 49 size = "default", 50 50 ...props 51 51 }: React.ComponentProps<typeof AlertDialogPrimitive.Content> & { 52 - size?: "default" | "sm"; 52 + size?: "default" | "sm" 53 53 }) { 54 54 return ( 55 55 <AlertDialogPortal> ··· 58 58 data-slot="alert-dialog-content" 59 59 data-size={size} 60 60 className={cn( 61 - "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-4 rounded-xl p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none", 62 - className, 61 + "group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", 62 + className 63 63 )} 64 64 {...props} 65 65 /> 66 66 </AlertDialogPortal> 67 - ); 67 + ) 68 68 } 69 69 70 70 function AlertDialogHeader({ ··· 76 76 data-slot="alert-dialog-header" 77 77 className={cn( 78 78 "grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", 79 - className, 79 + className 80 80 )} 81 81 {...props} 82 82 /> 83 - ); 83 + ) 84 84 } 85 85 86 86 function AlertDialogFooter({ ··· 91 91 <div 92 92 data-slot="alert-dialog-footer" 93 93 className={cn( 94 - "bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", 95 - className, 94 + "-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", 95 + className 96 96 )} 97 97 {...props} 98 98 /> 99 - ); 99 + ) 100 100 } 101 101 102 102 function AlertDialogMedia({ ··· 107 107 <div 108 108 data-slot="alert-dialog-media" 109 109 className={cn( 110 - "bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", 111 - className, 110 + "mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", 111 + className 112 112 )} 113 113 {...props} 114 114 /> 115 - ); 115 + ) 116 116 } 117 117 118 118 function AlertDialogTitle({ ··· 123 123 <AlertDialogPrimitive.Title 124 124 data-slot="alert-dialog-title" 125 125 className={cn( 126 - "text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", 127 - className, 126 + "font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", 127 + className 128 128 )} 129 129 {...props} 130 130 /> 131 - ); 131 + ) 132 132 } 133 133 134 134 function AlertDialogDescription({ ··· 139 139 <AlertDialogPrimitive.Description 140 140 data-slot="alert-dialog-description" 141 141 className={cn( 142 - "text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", 143 - className, 142 + "text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", 143 + className 144 144 )} 145 145 {...props} 146 146 /> 147 - ); 147 + ) 148 148 } 149 149 150 150 function AlertDialogAction({ ··· 162 162 {...props} 163 163 /> 164 164 </Button> 165 - ); 165 + ) 166 166 } 167 167 168 168 function AlertDialogCancel({ ··· 180 180 {...props} 181 181 /> 182 182 </Button> 183 - ); 183 + ) 184 184 } 185 185 186 186 export { ··· 196 196 AlertDialogPortal, 197 197 AlertDialogTitle, 198 198 AlertDialogTrigger, 199 - }; 199 + }
+25 -15
components/ui/alert.tsx
··· 1 - import { cva, type VariantProps } from "class-variance-authority"; 2 - import * as React from "react"; 1 + import * as React from "react" 2 + import { cva, type VariantProps } from "class-variance-authority" 3 3 4 - import { cn } from "@/lib/utils"; 4 + import { cn } from "@/lib/utils" 5 5 6 6 const alertVariants = cva( 7 - "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", 7 + "group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", 8 8 { 9 9 variants: { 10 10 variant: { 11 11 default: "bg-card text-card-foreground", 12 12 destructive: 13 - "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", 13 + "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current", 14 14 }, 15 15 }, 16 16 defaultVariants: { 17 17 variant: "default", 18 18 }, 19 - }, 20 - ); 19 + } 20 + ) 21 21 22 22 function Alert({ 23 23 className, ··· 31 31 className={cn(alertVariants({ variant }), className)} 32 32 {...props} 33 33 /> 34 - ); 34 + ) 35 35 } 36 36 37 37 function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { ··· 39 39 <div 40 40 data-slot="alert-title" 41 41 className={cn( 42 - "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", 43 - className, 42 + "font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", 43 + className 44 44 )} 45 45 {...props} 46 46 /> 47 - ); 47 + ) 48 48 } 49 49 50 50 function AlertDescription({ ··· 55 55 <div 56 56 data-slot="alert-description" 57 57 className={cn( 58 - "text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", 59 - className, 58 + "text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", 59 + className 60 60 )} 61 61 {...props} 62 62 /> 63 - ); 63 + ) 64 64 } 65 65 66 - export { Alert, AlertTitle, AlertDescription }; 66 + function AlertAction({ className, ...props }: React.ComponentProps<"div">) { 67 + return ( 68 + <div 69 + data-slot="alert-action" 70 + className={cn("absolute top-2 right-2", className)} 71 + {...props} 72 + /> 73 + ) 74 + } 75 + 76 + export { Alert, AlertTitle, AlertDescription, AlertAction }
+7 -4
components/ui/avatar.tsx
··· 17 17 data-slot="avatar" 18 18 data-size={size} 19 19 className={cn( 20 - "group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6", 20 + "group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", 21 21 className 22 22 )} 23 23 {...props} ··· 32 32 return ( 33 33 <AvatarPrimitive.Image 34 34 data-slot="avatar-image" 35 - className={cn("aspect-square size-full", className)} 35 + className={cn( 36 + "aspect-square size-full rounded-full object-cover", 37 + className 38 + )} 36 39 {...props} 37 40 /> 38 41 ) ··· 59 62 <span 60 63 data-slot="avatar-badge" 61 64 className={cn( 62 - "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none", 65 + "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", 63 66 "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", 64 67 "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", 65 68 "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", ··· 103 106 Avatar, 104 107 AvatarImage, 105 108 AvatarFallback, 106 - AvatarBadge, 107 109 AvatarGroup, 108 110 AvatarGroupCount, 111 + AvatarBadge, 109 112 }
+8 -7
components/ui/badge.tsx
··· 5 5 import { cn } from "@/lib/utils" 6 6 7 7 const badgeVariants = cva( 8 - "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3", 8 + "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", 9 9 { 10 10 variants: { 11 11 variant: { 12 - default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90", 12 + default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", 13 13 secondary: 14 - "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", 14 + "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80", 15 15 destructive: 16 - "bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90", 16 + "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20", 17 17 outline: 18 - "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", 19 - ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground", 20 - link: "text-primary underline-offset-4 [a&]:hover:underline", 18 + "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground", 19 + ghost: 20 + "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50", 21 + link: "text-primary underline-offset-4 hover:underline", 21 22 }, 22 23 }, 23 24 defaultVariants: {
+2 -2
components/ui/button.tsx
··· 9 9 { 10 10 variants: { 11 11 variant: { 12 - default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", 12 + default: "bg-primary text-primary-foreground hover:bg-primary/80", 13 13 outline: 14 14 "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50", 15 15 secondary: 16 - "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground", 16 + "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground", 17 17 ghost: 18 18 "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50", 19 19 destructive:
+48 -70
components/ui/calendar.tsx
··· 1 - "use client"; 1 + "use client" 2 2 3 - import * as React from "react"; 3 + import * as React from "react" 4 4 import { 5 5 DayPicker, 6 6 getDefaultClassNames, 7 7 type DayButton, 8 8 type Locale, 9 - } from "react-day-picker"; 9 + } from "react-day-picker" 10 10 11 - import { cn } from "@/lib/utils"; 12 - import { Button, buttonVariants } from "@/components/ui/button"; 13 - import { 14 - ChevronLeftIcon, 15 - ChevronRightIcon, 16 - ChevronDownIcon, 17 - } from "lucide-react"; 11 + import { cn } from "@/lib/utils" 12 + import { Button, buttonVariants } from "@/components/ui/button" 13 + import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from "lucide-react" 18 14 19 15 function Calendar({ 20 16 className, ··· 27 23 components, 28 24 ...props 29 25 }: React.ComponentProps<typeof DayPicker> & { 30 - buttonVariant?: React.ComponentProps<typeof Button>["variant"]; 26 + buttonVariant?: React.ComponentProps<typeof Button>["variant"] 31 27 }) { 32 - const defaultClassNames = getDefaultClassNames(); 28 + const defaultClassNames = getDefaultClassNames() 33 29 34 30 return ( 35 31 <DayPicker 36 32 showOutsideDays={showOutsideDays} 37 33 className={cn( 38 - "p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] group/calendar bg-background in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent", 34 + "group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent", 39 35 String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, 40 36 String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, 41 - className, 37 + className 42 38 )} 43 39 captionLayout={captionLayout} 44 40 locale={locale} 45 41 formatters={{ 46 - formatMonthDropdown: (date: Date) => 42 + formatMonthDropdown: (date) => 47 43 date.toLocaleString(locale?.code, { month: "short" }), 48 44 ...formatters, 49 45 }} ··· 51 47 root: cn("w-fit", defaultClassNames.root), 52 48 months: cn( 53 49 "relative flex flex-col gap-4 md:flex-row", 54 - defaultClassNames.months, 50 + defaultClassNames.months 55 51 ), 56 52 month: cn("flex w-full flex-col gap-4", defaultClassNames.month), 57 53 nav: cn( 58 54 "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", 59 - defaultClassNames.nav, 55 + defaultClassNames.nav 60 56 ), 61 57 button_previous: cn( 62 58 buttonVariants({ variant: buttonVariant }), 63 59 "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", 64 - defaultClassNames.button_previous, 60 + defaultClassNames.button_previous 65 61 ), 66 62 button_next: cn( 67 63 buttonVariants({ variant: buttonVariant }), 68 64 "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", 69 - defaultClassNames.button_next, 65 + defaultClassNames.button_next 70 66 ), 71 67 month_caption: cn( 72 68 "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", 73 - defaultClassNames.month_caption, 69 + defaultClassNames.month_caption 74 70 ), 75 71 dropdowns: cn( 76 72 "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", 77 - defaultClassNames.dropdowns, 73 + defaultClassNames.dropdowns 78 74 ), 79 75 dropdown_root: cn( 80 - "cn-calendar-dropdown-root relative rounded-(--cell-radius)", 81 - defaultClassNames.dropdown_root, 76 + "relative rounded-(--cell-radius)", 77 + defaultClassNames.dropdown_root 82 78 ), 83 79 dropdown: cn( 84 80 "absolute inset-0 bg-popover opacity-0", 85 - defaultClassNames.dropdown, 81 + defaultClassNames.dropdown 86 82 ), 87 83 caption_label: cn( 88 84 "font-medium select-none", 89 85 captionLayout === "label" 90 86 ? "text-sm" 91 - : "cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", 92 - defaultClassNames.caption_label, 87 + : "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", 88 + defaultClassNames.caption_label 93 89 ), 94 90 table: "w-full border-collapse", 95 91 weekdays: cn("flex", defaultClassNames.weekdays), 96 92 weekday: cn( 97 93 "flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none", 98 - defaultClassNames.weekday, 94 + defaultClassNames.weekday 99 95 ), 100 96 week: cn("mt-2 flex w-full", defaultClassNames.week), 101 97 week_number_header: cn( 102 98 "w-(--cell-size) select-none", 103 - defaultClassNames.week_number_header, 99 + defaultClassNames.week_number_header 104 100 ), 105 101 week_number: cn( 106 102 "text-[0.8rem] text-muted-foreground select-none", 107 - defaultClassNames.week_number, 103 + defaultClassNames.week_number 108 104 ), 109 105 day: cn( 110 106 "group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)", 111 107 props.showWeekNumber 112 108 ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" 113 109 : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)", 114 - defaultClassNames.day, 110 + defaultClassNames.day 115 111 ), 116 112 range_start: cn( 117 113 "relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted", 118 - defaultClassNames.range_start, 114 + defaultClassNames.range_start 119 115 ), 120 116 range_middle: cn("rounded-none", defaultClassNames.range_middle), 121 117 range_end: cn( 122 118 "relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted", 123 - defaultClassNames.range_end, 119 + defaultClassNames.range_end 124 120 ), 125 121 today: cn( 126 122 "rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none", 127 - defaultClassNames.today, 123 + defaultClassNames.today 128 124 ), 129 125 outside: cn( 130 126 "text-muted-foreground aria-selected:text-muted-foreground", 131 - defaultClassNames.outside, 127 + defaultClassNames.outside 132 128 ), 133 129 disabled: cn( 134 130 "text-muted-foreground opacity-50", 135 - defaultClassNames.disabled, 131 + defaultClassNames.disabled 136 132 ), 137 133 hidden: cn("invisible", defaultClassNames.hidden), 138 134 ...classNames, 139 135 }} 140 136 components={{ 141 - Root: ({ 142 - className, 143 - rootRef, 144 - ...props 145 - }: { 146 - className?: string 147 - rootRef?: React.Ref<HTMLDivElement> 148 - } & React.HTMLAttributes<HTMLDivElement>) => { 137 + Root: ({ className, rootRef, ...props }) => { 149 138 return ( 150 139 <div 151 140 data-slot="calendar" ··· 155 144 /> 156 145 ) 157 146 }, 158 - Chevron: ({ 159 - className, 160 - orientation, 161 - ...props 162 - }: { 163 - className?: string 164 - orientation?: 'left' | 'right' | 'up' | 'down' 165 - } & React.SVGProps<SVGSVGElement>) => { 166 - if (orientation === 'left') { 147 + Chevron: ({ className, orientation, ...props }) => { 148 + if (orientation === "left") { 167 149 return ( 168 - <ChevronLeftIcon 169 - className={cn('cn-rtl-flip size-4', className)} 170 - {...props} 171 - /> 150 + <ChevronLeftIcon className={cn("size-4", className)} {...props} /> 172 151 ) 173 152 } 174 153 175 - if (orientation === 'right') { 154 + if (orientation === "right") { 176 155 return ( 177 - <ChevronRightIcon 178 - className={cn('cn-rtl-flip size-4', className)} 179 - {...props} 180 - /> 156 + <ChevronRightIcon className={cn("size-4", className)} {...props} /> 181 157 ) 182 158 } 183 159 184 - return <ChevronDownIcon className={cn('size-4', className)} {...props} /> 160 + return ( 161 + <ChevronDownIcon className={cn("size-4", className)} {...props} /> 162 + ) 185 163 }, 186 164 DayButton: ({ ...props }) => ( 187 165 <CalendarDayButton locale={locale} {...props} /> ··· 199 177 }} 200 178 {...props} 201 179 /> 202 - ); 180 + ) 203 181 } 204 182 205 183 function CalendarDayButton({ ··· 209 187 locale, 210 188 ...props 211 189 }: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) { 212 - const defaultClassNames = getDefaultClassNames(); 190 + const defaultClassNames = getDefaultClassNames() 213 191 214 - const ref = React.useRef<HTMLButtonElement>(null); 192 + const ref = React.useRef<HTMLButtonElement>(null) 215 193 React.useEffect(() => { 216 - if (modifiers.focused) ref.current?.focus(); 217 - }, [modifiers.focused]); 194 + if (modifiers.focused) ref.current?.focus() 195 + }, [modifiers.focused]) 218 196 219 197 return ( 220 198 <Button ··· 234 212 className={cn( 235 213 "relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70", 236 214 defaultClassNames.day, 237 - className, 215 + className 238 216 )} 239 217 {...props} 240 218 /> 241 - ); 219 + ) 242 220 } 243 221 244 - export { Calendar, CalendarDayButton }; 222 + export { Calendar, CalendarDayButton }
+20 -20
components/ui/card.tsx
··· 1 - import * as React from "react"; 1 + import * as React from "react" 2 2 3 - import { cn } from "@/lib/utils"; 3 + import { cn } from "@/lib/utils" 4 4 5 5 function Card({ 6 6 className, ··· 12 12 data-slot="card" 13 13 data-size={size} 14 14 className={cn( 15 - "ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", 16 - className, 15 + "group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", 16 + className 17 17 )} 18 18 {...props} 19 19 /> 20 - ); 20 + ) 21 21 } 22 22 23 23 function CardHeader({ className, ...props }: React.ComponentProps<"div">) { ··· 25 25 <div 26 26 data-slot="card-header" 27 27 className={cn( 28 - "gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]", 29 - className, 28 + "group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3", 29 + className 30 30 )} 31 31 {...props} 32 32 /> 33 - ); 33 + ) 34 34 } 35 35 36 36 function CardTitle({ className, ...props }: React.ComponentProps<"div">) { ··· 38 38 <div 39 39 data-slot="card-title" 40 40 className={cn( 41 - "text-base leading-snug font-medium group-data-[size=sm]/card:text-sm", 42 - className, 41 + "font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm", 42 + className 43 43 )} 44 44 {...props} 45 45 /> 46 - ); 46 + ) 47 47 } 48 48 49 49 function CardDescription({ className, ...props }: React.ComponentProps<"div">) { 50 50 return ( 51 51 <div 52 52 data-slot="card-description" 53 - className={cn("text-muted-foreground text-sm", className)} 53 + className={cn("text-sm text-muted-foreground", className)} 54 54 {...props} 55 55 /> 56 - ); 56 + ) 57 57 } 58 58 59 59 function CardAction({ className, ...props }: React.ComponentProps<"div">) { ··· 62 62 data-slot="card-action" 63 63 className={cn( 64 64 "col-start-2 row-span-2 row-start-1 self-start justify-self-end", 65 - className, 65 + className 66 66 )} 67 67 {...props} 68 68 /> 69 - ); 69 + ) 70 70 } 71 71 72 72 function CardContent({ className, ...props }: React.ComponentProps<"div">) { ··· 76 76 className={cn("px-4 group-data-[size=sm]/card:px-3", className)} 77 77 {...props} 78 78 /> 79 - ); 79 + ) 80 80 } 81 81 82 82 function CardFooter({ className, ...props }: React.ComponentProps<"div">) { ··· 84 84 <div 85 85 data-slot="card-footer" 86 86 className={cn( 87 - "bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center", 88 - className, 87 + "flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3", 88 + className 89 89 )} 90 90 {...props} 91 91 /> 92 - ); 92 + ) 93 93 } 94 94 95 95 export { ··· 100 100 CardAction, 101 101 CardDescription, 102 102 CardContent, 103 - }; 103 + }
+3 -4
components/ui/chart.tsx
··· 6 6 7 7 import { cn } from "@/lib/utils" 8 8 9 + // Format: { THEME_NAME: CSS_SELECTOR } 9 10 const THEMES = { light: "", dark: ".dark" } as const 10 11 11 12 const INITIAL_DIMENSION = { width: 320, height: 200 } as const ··· 80 81 ) 81 82 } 82 83 83 - const toCssVarKey = (key: string): string => key.replace(/[^a-zA-Z0-9_-]/g, "-") 84 - 85 84 const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { 86 85 const colorConfig = Object.entries(config).filter( 87 86 ([, config]) => config.theme ?? config.color ··· 103 102 const color = 104 103 itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? 105 104 itemConfig.color 106 - return color ? ` --color-${toCssVarKey(key)}: ${color};` : null 105 + return color ? ` --color-${key}: ${color};` : null 107 106 }) 108 107 .join("\n")} 109 108 } ··· 253 252 {itemConfig?.label ?? item.name} 254 253 </span> 255 254 </div> 256 - {item.value !== null && item.value !== undefined && ( 255 + {item.value != null && ( 257 256 <span className="font-mono font-medium text-foreground tabular-nums"> 258 257 {typeof item.value === "number" 259 258 ? item.value.toLocaleString()
+3 -2
components/ui/checkbox.tsx
··· 1 1 "use client" 2 2 3 3 import * as React from "react" 4 - import { CheckIcon } from "lucide-react" 5 4 import { Checkbox as CheckboxPrimitive } from "radix-ui" 6 5 7 6 import { cn } from "@/lib/utils" 7 + import { CheckIcon } from "lucide-react" 8 8 9 9 function Checkbox({ 10 10 className, ··· 23 23 data-slot="checkbox-indicator" 24 24 className="grid place-content-center text-current transition-none [&>svg]:size-3.5" 25 25 > 26 - <CheckIcon /> 26 + <CheckIcon 27 + /> 27 28 </CheckboxPrimitive.Indicator> 28 29 </CheckboxPrimitive.Root> 29 30 )
+34 -30
components/ui/dialog.tsx
··· 1 - "use client"; 1 + "use client" 2 2 3 - import { Dialog as DialogPrimitive } from "radix-ui"; 4 - import * as React from "react"; 3 + import * as React from "react" 4 + import { Dialog as DialogPrimitive } from "radix-ui" 5 5 6 - import { cn } from "@/lib/utils"; 7 - import { Button } from "@/components/ui/button"; 8 - import { XIcon } from "lucide-react"; 6 + import { cn } from "@/lib/utils" 7 + import { Button } from "@/components/ui/button" 8 + import { XIcon } from "lucide-react" 9 9 10 10 function Dialog({ 11 11 ...props 12 12 }: React.ComponentProps<typeof DialogPrimitive.Root>) { 13 - return <DialogPrimitive.Root data-slot="dialog" {...props} />; 13 + return <DialogPrimitive.Root data-slot="dialog" {...props} /> 14 14 } 15 15 16 16 function DialogTrigger({ 17 17 ...props 18 18 }: React.ComponentProps<typeof DialogPrimitive.Trigger>) { 19 - return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />; 19 + return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} /> 20 20 } 21 21 22 22 function DialogPortal({ 23 23 ...props 24 24 }: React.ComponentProps<typeof DialogPrimitive.Portal>) { 25 - return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />; 25 + return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} /> 26 26 } 27 27 28 28 function DialogClose({ 29 29 ...props 30 30 }: React.ComponentProps<typeof DialogPrimitive.Close>) { 31 - return <DialogPrimitive.Close data-slot="dialog-close" {...props} />; 31 + return <DialogPrimitive.Close data-slot="dialog-close" {...props} /> 32 32 } 33 33 34 34 function DialogOverlay({ ··· 39 39 <DialogPrimitive.Overlay 40 40 data-slot="dialog-overlay" 41 41 className={cn( 42 - "data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50", 43 - className, 42 + "fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", 43 + className 44 44 )} 45 45 {...props} 46 46 /> 47 - ); 47 + ) 48 48 } 49 49 50 50 function DialogContent({ ··· 53 53 showCloseButton = true, 54 54 ...props 55 55 }: React.ComponentProps<typeof DialogPrimitive.Content> & { 56 - showCloseButton?: boolean; 56 + showCloseButton?: boolean 57 57 }) { 58 58 return ( 59 59 <DialogPortal> ··· 61 61 <DialogPrimitive.Content 62 62 data-slot="dialog-content" 63 63 className={cn( 64 - "bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-4 rounded-xl p-4 text-sm ring-1 duration-100 sm:max-w-sm fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none", 65 - className, 64 + "fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", 65 + className 66 66 )} 67 67 {...props} 68 68 > ··· 74 74 className="absolute top-2 right-2" 75 75 size="icon-sm" 76 76 > 77 - <XIcon /> 77 + <XIcon 78 + /> 78 79 <span className="sr-only">Close</span> 79 80 </Button> 80 81 </DialogPrimitive.Close> 81 82 )} 82 83 </DialogPrimitive.Content> 83 84 </DialogPortal> 84 - ); 85 + ) 85 86 } 86 87 87 88 function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { 88 89 return ( 89 90 <div 90 91 data-slot="dialog-header" 91 - className={cn("gap-2 flex flex-col", className)} 92 + className={cn("flex flex-col gap-2", className)} 92 93 {...props} 93 94 /> 94 - ); 95 + ) 95 96 } 96 97 97 98 function DialogFooter({ ··· 100 101 children, 101 102 ...props 102 103 }: React.ComponentProps<"div"> & { 103 - showCloseButton?: boolean; 104 + showCloseButton?: boolean 104 105 }) { 105 106 return ( 106 107 <div 107 108 data-slot="dialog-footer" 108 109 className={cn( 109 - "bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", 110 - className, 110 + "-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end", 111 + className 111 112 )} 112 113 {...props} 113 114 > ··· 118 119 </DialogPrimitive.Close> 119 120 )} 120 121 </div> 121 - ); 122 + ) 122 123 } 123 124 124 125 function DialogTitle({ ··· 128 129 return ( 129 130 <DialogPrimitive.Title 130 131 data-slot="dialog-title" 131 - className={cn("text-base leading-none font-medium", className)} 132 + className={cn( 133 + "font-heading text-base leading-none font-medium", 134 + className 135 + )} 132 136 {...props} 133 137 /> 134 - ); 138 + ) 135 139 } 136 140 137 141 function DialogDescription({ ··· 142 146 <DialogPrimitive.Description 143 147 data-slot="dialog-description" 144 148 className={cn( 145 - "text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3", 146 - className, 149 + "text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", 150 + className 147 151 )} 148 152 {...props} 149 153 /> 150 - ); 154 + ) 151 155 } 152 156 153 157 export { ··· 161 165 DialogPortal, 162 166 DialogTitle, 163 167 DialogTrigger, 164 - }; 168 + }
+6 -4
components/ui/dropdown-menu.tsx
··· 1 1 "use client" 2 2 3 3 import * as React from "react" 4 - import { CheckIcon, ChevronRightIcon } from "lucide-react" 5 4 import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui" 6 5 7 6 import { cn } from "@/lib/utils" 7 + import { CheckIcon, ChevronRightIcon } from "lucide-react" 8 8 9 9 function DropdownMenu({ 10 10 ...props ··· 106 106 data-slot="dropdown-menu-checkbox-item-indicator" 107 107 > 108 108 <DropdownMenuPrimitive.ItemIndicator> 109 - <CheckIcon /> 109 + <CheckIcon 110 + /> 110 111 </DropdownMenuPrimitive.ItemIndicator> 111 112 </span> 112 113 {children} ··· 148 149 data-slot="dropdown-menu-radio-item-indicator" 149 150 > 150 151 <DropdownMenuPrimitive.ItemIndicator> 151 - <CheckIcon /> 152 + <CheckIcon 153 + /> 152 154 </DropdownMenuPrimitive.ItemIndicator> 153 155 </span> 154 156 {children} ··· 230 232 {...props} 231 233 > 232 234 {children} 233 - <ChevronRightIcon className="cn-rtl-flip ml-auto" /> 235 + <ChevronRightIcon className="ml-auto" /> 234 236 </DropdownMenuPrimitive.SubTrigger> 235 237 ) 236 238 }
+1 -1
components/ui/empty.tsx
··· 60 60 <div 61 61 data-slot="empty-title" 62 62 className={cn( 63 - "cn-font-heading text-sm font-medium tracking-tight", 63 + "font-heading text-sm font-medium tracking-tight", 64 64 className 65 65 )} 66 66 {...props}
+52 -48
components/ui/input-group.tsx
··· 1 - 'use client' 1 + "use client" 2 2 3 - import * as React from 'react' 4 - import { cva, type VariantProps } from 'class-variance-authority' 3 + import * as React from "react" 4 + import { cva, type VariantProps } from "class-variance-authority" 5 5 6 - import { cn } from '@/lib/utils' 7 - import { Button } from '@/components/ui/button' 8 - import { Input } from '@/components/ui/input' 9 - import { Textarea } from '@/components/ui/textarea' 6 + import { cn } from "@/lib/utils" 7 + import { Button } from "@/components/ui/button" 8 + import { Input } from "@/components/ui/input" 9 + import { Textarea } from "@/components/ui/textarea" 10 10 11 - function InputGroup({ className, ...props }: React.ComponentProps<'div'>) { 11 + function InputGroup({ className, ...props }: React.ComponentProps<"div">) { 12 12 return ( 13 13 <div 14 14 data-slot="input-group" 15 15 role="group" 16 16 className={cn( 17 - 'group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5', 18 - className, 17 + "group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5", 18 + className 19 19 )} 20 20 {...props} 21 21 /> ··· 27 27 { 28 28 variants: { 29 29 align: { 30 - 'inline-start': 31 - 'order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]', 32 - 'inline-end': 33 - 'order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]', 34 - 'block-start': 35 - 'order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2', 36 - 'block-end': 37 - 'order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2', 30 + "inline-start": 31 + "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]", 32 + "inline-end": 33 + "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]", 34 + "block-start": 35 + "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2", 36 + "block-end": 37 + "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2", 38 38 }, 39 39 }, 40 40 defaultVariants: { 41 - align: 'inline-start', 41 + align: "inline-start", 42 42 }, 43 - }, 43 + } 44 44 ) 45 45 46 46 function InputGroupAddon({ 47 47 className, 48 - align = 'inline-start', 48 + align = "inline-start", 49 49 ...props 50 - }: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) { 50 + }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>) { 51 51 return ( 52 52 <div 53 53 role="group" ··· 55 55 data-align={align} 56 56 className={cn(inputGroupAddonVariants({ align }), className)} 57 57 onClick={(e) => { 58 - if ((e.target as HTMLElement).closest('button')) { 58 + if ((e.target as HTMLElement).closest("button")) { 59 59 return 60 60 } 61 - e.currentTarget.parentElement?.querySelector('input')?.focus() 61 + e.currentTarget.parentElement?.querySelector("input")?.focus() 62 62 }} 63 63 {...props} 64 64 /> 65 65 ) 66 66 } 67 67 68 - const inputGroupButtonVariants = cva('flex items-center gap-2 text-sm shadow-none', { 69 - variants: { 70 - size: { 71 - xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5", 72 - sm: '', 73 - 'icon-xs': 'size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0', 74 - 'icon-sm': 'size-8 p-0 has-[>svg]:p-0', 68 + const inputGroupButtonVariants = cva( 69 + "flex items-center gap-2 text-sm shadow-none", 70 + { 71 + variants: { 72 + size: { 73 + xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5", 74 + sm: "", 75 + "icon-xs": 76 + "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0", 77 + "icon-sm": "size-8 p-0 has-[>svg]:p-0", 78 + }, 79 + }, 80 + defaultVariants: { 81 + size: "xs", 75 82 }, 76 - }, 77 - defaultVariants: { 78 - size: 'xs', 79 - }, 80 - }) 83 + } 84 + ) 81 85 82 86 function InputGroupButton({ 83 87 className, 84 - type = 'button', 85 - variant = 'ghost', 86 - size = 'xs', 88 + type = "button", 89 + variant = "ghost", 90 + size = "xs", 87 91 ...props 88 - }: Omit<React.ComponentProps<typeof Button>, 'size'> & 92 + }: Omit<React.ComponentProps<typeof Button>, "size"> & 89 93 VariantProps<typeof inputGroupButtonVariants>) { 90 94 return ( 91 95 <Button ··· 98 102 ) 99 103 } 100 104 101 - function InputGroupText({ className, ...props }: React.ComponentProps<'span'>) { 105 + function InputGroupText({ className, ...props }: React.ComponentProps<"span">) { 102 106 return ( 103 107 <span 104 108 className={cn( 105 109 "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", 106 - className, 110 + className 107 111 )} 108 112 {...props} 109 113 /> ··· 113 117 function InputGroupInput({ 114 118 className, 115 119 ...props 116 - }: React.ComponentProps<'input'>) { 120 + }: React.ComponentProps<"input">) { 117 121 return ( 118 122 <Input 119 123 data-slot="input-group-control" 120 124 className={cn( 121 - 'flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent', 122 - className, 125 + "flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", 126 + className 123 127 )} 124 128 {...props} 125 129 /> ··· 129 133 function InputGroupTextarea({ 130 134 className, 131 135 ...props 132 - }: React.ComponentProps<'textarea'>) { 136 + }: React.ComponentProps<"textarea">) { 133 137 return ( 134 138 <Textarea 135 139 data-slot="input-group-control" 136 140 className={cn( 137 - 'flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent', 138 - className, 141 + "flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", 142 + className 139 143 )} 140 144 {...props} 141 145 />
+70 -65
components/ui/input-otp.tsx
··· 1 - 'use client' 1 + "use client" 2 2 3 - import { cn } from '@/lib/utils' 4 - import { Input } from '@/components/ui/input' 3 + import * as React from "react" 4 + import { OTPInput, OTPInputContext } from "input-otp" 5 5 6 - interface InputOTPProps { 7 - value: string 8 - onChange: (value: string) => void 9 - maxLength?: number 10 - className?: string 11 - } 6 + import { cn } from "@/lib/utils" 7 + import { MinusIcon } from "lucide-react" 12 8 13 - interface InputOTPSlotProps { 14 - index: number 15 - value: string 16 - onSlotChange: (index: number, value: string) => void 17 - onSlotBackspace: (index: number) => void 18 - className?: string 9 + function InputOTP({ 10 + className, 11 + containerClassName, 12 + ...props 13 + }: React.ComponentProps<typeof OTPInput> & { 14 + containerClassName?: string 15 + }) { 16 + return ( 17 + <OTPInput 18 + data-slot="input-otp" 19 + containerClassName={cn( 20 + "cn-input-otp flex items-center has-disabled:opacity-50", 21 + containerClassName 22 + )} 23 + spellCheck={false} 24 + className={cn("disabled:cursor-not-allowed", className)} 25 + {...props} 26 + /> 27 + ) 19 28 } 20 29 21 - export function InputOTPSlot({ index, value, onSlotChange, onSlotBackspace, className }: InputOTPSlotProps) { 30 + function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) { 22 31 return ( 23 - <Input 24 - value={value} 25 - inputMode="numeric" 26 - autoComplete="one-time-code" 27 - maxLength={1} 28 - className={cn('h-12 w-11 text-center text-xl', className)} 29 - data-slot="input-otp-slot" 30 - data-otp-index={index} 31 - onChange={(e) => onSlotChange(index, e.target.value)} 32 - onKeyDown={(e) => { 33 - if (e.key === 'Backspace' && !value) onSlotBackspace(index) 34 - }} 32 + <div 33 + data-slot="input-otp-group" 34 + className={cn( 35 + "flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40", 36 + className 37 + )} 38 + {...props} 35 39 /> 36 40 ) 37 41 } 38 42 39 - export function InputOTPGroup({ className, children }: React.PropsWithChildren<{ className?: string }>) { 40 - return <div className={cn('flex items-center gap-2', className)}>{children}</div> 41 - } 43 + function InputOTPSlot({ 44 + index, 45 + className, 46 + ...props 47 + }: React.ComponentProps<"div"> & { 48 + index: number 49 + }) { 50 + const inputOTPContext = React.useContext(OTPInputContext) 51 + const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {} 42 52 43 - export function InputOTPSeparator({ className }: { className?: string }) { 44 - return <span className={cn('mx-2 text-muted-foreground', className)}>-</span> 53 + return ( 54 + <div 55 + data-slot="input-otp-slot" 56 + data-active={isActive} 57 + className={cn( 58 + "relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40", 59 + className 60 + )} 61 + {...props} 62 + > 63 + {char} 64 + {hasFakeCaret && ( 65 + <div className="pointer-events-none absolute inset-0 flex items-center justify-center"> 66 + <div className="h-4 w-px animate-caret-blink bg-foreground duration-1000" /> 67 + </div> 68 + )} 69 + </div> 70 + ) 45 71 } 46 72 47 - export function InputOTP({ value, onChange, maxLength = 6, className }: InputOTPProps) { 48 - const chars = Array.from({ length: maxLength }, (_, i) => value[i] ?? '') 49 - 50 - const onSlotChange = (index: number, nextRaw: string) => { 51 - const nextChar = nextRaw.replace(/\D/g, '') 52 - const next = chars.slice() 53 - next[index] = nextChar 54 - onChange(next.join('').slice(0, maxLength)) 55 - if (nextChar) { 56 - const el = document.querySelector<HTMLInputElement>(`input[data-otp-index='${index + 1}']`) 57 - el?.focus() 58 - } 59 - } 60 - 61 - const onSlotBackspace = (index: number) => { 62 - if (index <= 0) return 63 - const el = document.querySelector<HTMLInputElement>(`input[data-otp-index='${index - 1}']`) 64 - el?.focus() 65 - } 66 - 73 + function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) { 67 74 return ( 68 - <div className={cn('flex w-full items-center justify-between', className)}> 69 - <InputOTPGroup> 70 - <InputOTPSlot index={0} value={chars[0]} onSlotChange={onSlotChange} onSlotBackspace={onSlotBackspace} /> 71 - <InputOTPSlot index={1} value={chars[1]} onSlotChange={onSlotChange} onSlotBackspace={onSlotBackspace} /> 72 - <InputOTPSlot index={2} value={chars[2]} onSlotChange={onSlotChange} onSlotBackspace={onSlotBackspace} /> 73 - </InputOTPGroup> 74 - <InputOTPSeparator /> 75 - <InputOTPGroup> 76 - <InputOTPSlot index={3} value={chars[3]} onSlotChange={onSlotChange} onSlotBackspace={onSlotBackspace} /> 77 - <InputOTPSlot index={4} value={chars[4]} onSlotChange={onSlotChange} onSlotBackspace={onSlotBackspace} /> 78 - <InputOTPSlot index={5} value={chars[5]} onSlotChange={onSlotChange} onSlotBackspace={onSlotBackspace} /> 79 - </InputOTPGroup> 75 + <div 76 + data-slot="input-otp-separator" 77 + className="flex items-center [&_svg:not([class*='size-'])]:size-4" 78 + role="separator" 79 + {...props} 80 + > 81 + <MinusIcon 82 + /> 80 83 </div> 81 84 ) 82 85 } 86 + 87 + export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
+6 -8
components/ui/kbd.tsx
··· 1 - import { cn } from "@/lib/utils"; 1 + import { cn } from "@/lib/utils" 2 2 3 3 function Kbd({ className, ...props }: React.ComponentProps<"kbd">) { 4 4 return ( 5 5 <kbd 6 6 data-slot="kbd" 7 7 className={cn( 8 - "bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none", 9 - "[&_svg:not([class*='size-'])]:size-3", 10 - "[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10", 11 - className, 8 + "pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3", 9 + className 12 10 )} 13 11 {...props} 14 12 /> 15 - ); 13 + ) 16 14 } 17 15 18 16 function KbdGroup({ className, ...props }: React.ComponentProps<"div">) { ··· 22 20 className={cn("inline-flex items-center gap-1", className)} 23 21 {...props} 24 22 /> 25 - ); 23 + ) 26 24 } 27 25 28 - export { Kbd, KbdGroup }; 26 + export { Kbd, KbdGroup }
+14 -14
components/ui/popover.tsx
··· 1 - "use client"; 1 + "use client" 2 2 3 - import { Popover as PopoverPrimitive } from "radix-ui"; 4 - import * as React from "react"; 3 + import * as React from "react" 4 + import { Popover as PopoverPrimitive } from "radix-ui" 5 5 6 - import { cn } from "@/lib/utils"; 6 + import { cn } from "@/lib/utils" 7 7 8 8 function Popover({ 9 9 ...props 10 10 }: React.ComponentProps<typeof PopoverPrimitive.Root>) { 11 - return <PopoverPrimitive.Root data-slot="popover" {...props} />; 11 + return <PopoverPrimitive.Root data-slot="popover" {...props} /> 12 12 } 13 13 14 14 function PopoverTrigger({ 15 15 ...props 16 16 }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) { 17 - return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />; 17 + return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} /> 18 18 } 19 19 20 20 function PopoverContent({ ··· 30 30 align={align} 31 31 sideOffset={sideOffset} 32 32 className={cn( 33 - "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-2.5 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100 z-50 w-72 origin-(--radix-popover-content-transform-origin) outline-hidden", 34 - className, 33 + "z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", 34 + className 35 35 )} 36 36 {...props} 37 37 /> 38 38 </PopoverPrimitive.Portal> 39 - ); 39 + ) 40 40 } 41 41 42 42 function PopoverAnchor({ 43 43 ...props 44 44 }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) { 45 - return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} />; 45 + return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} /> 46 46 } 47 47 48 48 function PopoverHeader({ className, ...props }: React.ComponentProps<"div">) { ··· 52 52 className={cn("flex flex-col gap-0.5 text-sm", className)} 53 53 {...props} 54 54 /> 55 - ); 55 + ) 56 56 } 57 57 58 58 function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">) { ··· 62 62 className={cn("font-medium", className)} 63 63 {...props} 64 64 /> 65 - ); 65 + ) 66 66 } 67 67 68 68 function PopoverDescription({ ··· 75 75 className={cn("text-muted-foreground", className)} 76 76 {...props} 77 77 /> 78 - ); 78 + ) 79 79 } 80 80 81 81 export { ··· 86 86 PopoverHeader, 87 87 PopoverTitle, 88 88 PopoverTrigger, 89 - }; 89 + }
+35 -38
components/ui/select.tsx
··· 1 - "use client"; 1 + "use client" 2 2 3 - import { Select as SelectPrimitive } from "radix-ui"; 4 - import * as React from "react"; 3 + import * as React from "react" 4 + import { Select as SelectPrimitive } from "radix-ui" 5 5 6 - import { cn } from "@/lib/utils"; 7 - import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"; 6 + import { cn } from "@/lib/utils" 7 + import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react" 8 8 9 9 function Select({ 10 10 ...props 11 11 }: React.ComponentProps<typeof SelectPrimitive.Root>) { 12 - return <SelectPrimitive.Root data-slot="select" {...props} />; 12 + return <SelectPrimitive.Root data-slot="select" {...props} /> 13 13 } 14 14 15 15 function SelectGroup({ ··· 22 22 className={cn("scroll-my-1 p-1", className)} 23 23 {...props} 24 24 /> 25 - ); 25 + ) 26 26 } 27 27 28 28 function SelectValue({ 29 29 ...props 30 30 }: React.ComponentProps<typeof SelectPrimitive.Value>) { 31 - return <SelectPrimitive.Value data-slot="select-value" {...props} />; 31 + return <SelectPrimitive.Value data-slot="select-value" {...props} /> 32 32 } 33 33 34 34 function SelectTrigger({ ··· 37 37 children, 38 38 ...props 39 39 }: React.ComponentProps<typeof SelectPrimitive.Trigger> & { 40 - size?: "sm" | "default"; 40 + size?: "sm" | "default" 41 41 }) { 42 42 return ( 43 43 <SelectPrimitive.Trigger 44 44 data-slot="select-trigger" 45 45 data-size={size} 46 46 className={cn( 47 - "border-input data-[placeholder]:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0", 48 - className, 47 + "flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", 48 + className 49 49 )} 50 50 {...props} 51 51 > 52 52 {children} 53 53 <SelectPrimitive.Icon asChild> 54 - <ChevronDownIcon className="text-muted-foreground size-4 pointer-events-none" /> 54 + <ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" /> 55 55 </SelectPrimitive.Icon> 56 56 </SelectPrimitive.Trigger> 57 - ); 57 + ) 58 58 } 59 59 60 60 function SelectContent({ ··· 69 69 <SelectPrimitive.Content 70 70 data-slot="select-content" 71 71 data-align-trigger={position === "item-aligned"} 72 - className={cn( 73 - "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none", 74 - position === "popper" && 75 - "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", 76 - className, 77 - )} 72 + className={cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position ==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className )} 78 73 position={position} 79 74 align={align} 80 75 {...props} ··· 83 78 <SelectPrimitive.Viewport 84 79 data-position={position} 85 80 className={cn( 86 - "data-[position=popper]:h-[var(--radix-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--radix-select-trigger-width)]", 87 - position === "popper" && "", 81 + "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)", 82 + position === "popper" && "" 88 83 )} 89 84 > 90 85 {children} ··· 92 87 <SelectScrollDownButton /> 93 88 </SelectPrimitive.Content> 94 89 </SelectPrimitive.Portal> 95 - ); 90 + ) 96 91 } 97 92 98 93 function SelectLabel({ ··· 102 97 return ( 103 98 <SelectPrimitive.Label 104 99 data-slot="select-label" 105 - className={cn("text-muted-foreground px-1.5 py-1 text-xs", className)} 100 + className={cn("px-1.5 py-1 text-xs text-muted-foreground", className)} 106 101 {...props} 107 102 /> 108 - ); 103 + ) 109 104 } 110 105 111 106 function SelectItem({ ··· 117 112 <SelectPrimitive.Item 118 113 data-slot="select-item" 119 114 className={cn( 120 - "focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", 121 - className, 115 + "relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", 116 + className 122 117 )} 123 118 {...props} 124 119 > ··· 129 124 </span> 130 125 <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText> 131 126 </SelectPrimitive.Item> 132 - ); 127 + ) 133 128 } 134 129 135 130 function SelectSeparator({ ··· 139 134 return ( 140 135 <SelectPrimitive.Separator 141 136 data-slot="select-separator" 142 - className={cn("bg-border -mx-1 my-1 h-px pointer-events-none", className)} 137 + className={cn("pointer-events-none -mx-1 my-1 h-px bg-border", className)} 143 138 {...props} 144 139 /> 145 - ); 140 + ) 146 141 } 147 142 148 143 function SelectScrollUpButton({ ··· 153 148 <SelectPrimitive.ScrollUpButton 154 149 data-slot="select-scroll-up-button" 155 150 className={cn( 156 - "bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", 157 - className, 151 + "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", 152 + className 158 153 )} 159 154 {...props} 160 155 > 161 - <ChevronUpIcon /> 156 + <ChevronUpIcon 157 + /> 162 158 </SelectPrimitive.ScrollUpButton> 163 - ); 159 + ) 164 160 } 165 161 166 162 function SelectScrollDownButton({ ··· 171 167 <SelectPrimitive.ScrollDownButton 172 168 data-slot="select-scroll-down-button" 173 169 className={cn( 174 - "bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4", 175 - className, 170 + "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", 171 + className 176 172 )} 177 173 {...props} 178 174 > 179 - <ChevronDownIcon /> 175 + <ChevronDownIcon 176 + /> 180 177 </SelectPrimitive.ScrollDownButton> 181 - ); 178 + ) 182 179 } 183 180 184 181 export { ··· 192 189 SelectSeparator, 193 190 SelectTrigger, 194 191 SelectValue, 195 - }; 192 + }
+6 -5
components/ui/sheet.tsx
··· 1 1 "use client" 2 2 3 3 import * as React from "react" 4 - import { XIcon } from "lucide-react" 5 4 import { Dialog as SheetPrimitive } from "radix-ui" 6 5 7 6 import { cn } from "@/lib/utils" 8 7 import { Button } from "@/components/ui/button" 8 + import { XIcon } from "lucide-react" 9 9 10 10 function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) { 11 11 return <SheetPrimitive.Root data-slot="sheet" {...props} /> ··· 37 37 <SheetPrimitive.Overlay 38 38 data-slot="sheet-overlay" 39 39 className={cn( 40 - "fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0", 40 + "fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", 41 41 className 42 42 )} 43 43 {...props} ··· 62 62 data-slot="sheet-content" 63 63 data-side={side} 64 64 className={cn( 65 - "fixed z-50 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[side=bottom]:data-[state=open]:slide-in-from-bottom-10 data-[side=left]:data-[state=open]:slide-in-from-left-10 data-[side=right]:data-[state=open]:slide-in-from-right-10 data-[side=top]:data-[state=open]:slide-in-from-top-10 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[side=bottom]:data-[state=closed]:slide-out-to-bottom-10 data-[side=left]:data-[state=closed]:slide-out-to-left-10 data-[side=right]:data-[state=closed]:slide-out-to-right-10 data-[side=top]:data-[state=closed]:slide-out-to-top-10", 65 + "fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10", 66 66 className 67 67 )} 68 68 {...props} ··· 75 75 className="absolute top-3 right-3" 76 76 size="icon-sm" 77 77 > 78 - <XIcon /> 78 + <XIcon 79 + /> 79 80 <span className="sr-only">Close</span> 80 81 </Button> 81 82 </SheetPrimitive.Close> ··· 113 114 <SheetPrimitive.Title 114 115 data-slot="sheet-title" 115 116 className={cn( 116 - "cn-font-heading text-base font-medium text-foreground", 117 + "font-heading text-base font-medium text-foreground", 117 118 className 118 119 )} 119 120 {...props}
+26 -27
components/ui/sonner.tsx
··· 1 - "use client"; 1 + "use client" 2 2 3 - import { 4 - CircleCheckIcon, 5 - InfoIcon, 6 - TriangleAlertIcon, 7 - OctagonXIcon, 8 - Loader2Icon, 9 - } from "lucide-react"; 10 - import { Toaster as Sonner, type ToasterProps } from "sonner"; 11 - import { useTheme } from "next-themes"; 12 - import { useLocalStorage } from "@/hooks/useLocalStorage"; 3 + import { useTheme } from "next-themes" 4 + import { Toaster as Sonner, type ToasterProps } from "sonner" 5 + import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, Loader2Icon } from "lucide-react" 13 6 14 7 const Toaster = ({ ...props }: ToasterProps) => { 15 - const { theme = "system" } = useTheme(); 16 - const [toastPosition] = useLocalStorage< 17 - "bottom-left" | "bottom-center" | "bottom-right" 18 - >("toast-position", "bottom-right"); 8 + const { theme = "system" } = useTheme() 19 9 20 10 return ( 21 11 <Sonner 22 12 theme={theme as ToasterProps["theme"]} 23 13 className="toaster group" 24 14 icons={{ 25 - success: <CircleCheckIcon className="size-4" />, 26 - info: <InfoIcon className="size-4" />, 27 - warning: <TriangleAlertIcon className="size-4" />, 28 - error: <OctagonXIcon className="size-4" />, 29 - loading: <Loader2Icon className="size-4 animate-spin" />, 15 + success: ( 16 + <CircleCheckIcon className="size-4" /> 17 + ), 18 + info: ( 19 + <InfoIcon className="size-4" /> 20 + ), 21 + warning: ( 22 + <TriangleAlertIcon className="size-4" /> 23 + ), 24 + error: ( 25 + <OctagonXIcon className="size-4" /> 26 + ), 27 + loading: ( 28 + <Loader2Icon className="size-4 animate-spin" /> 29 + ), 30 30 }} 31 31 style={ 32 32 { 33 - "--normal-bg": "hsl(var(--popover))", 34 - "--normal-text": "hsl(var(--popover-foreground))", 35 - "--normal-border": "hsl(var(--border))", 33 + "--normal-bg": "var(--popover)", 34 + "--normal-text": "var(--popover-foreground)", 35 + "--normal-border": "var(--border)", 36 36 "--border-radius": "var(--radius)", 37 37 } as React.CSSProperties 38 38 } 39 - position={toastPosition} 40 39 toastOptions={{ 41 40 classNames: { 42 41 toast: "cn-toast", ··· 44 43 }} 45 44 {...props} 46 45 /> 47 - ); 48 - }; 46 + ) 47 + } 49 48 50 - export { Toaster }; 49 + export { Toaster }
+5 -11
components/ui/spinner.tsx
··· 1 - import { LoaderIcon } from "lucide-react"; 2 - 3 - import { cn } from "@/lib/utils"; 1 + import { cn } from "@/lib/utils" 2 + import { Loader2Icon } from "lucide-react" 4 3 5 4 function Spinner({ className, ...props }: React.ComponentProps<"svg">) { 6 5 return ( 7 - <LoaderIcon 8 - role="status" 9 - aria-label="Loading" 10 - className={cn("size-4 animate-spin", className)} 11 - {...props} 12 - /> 13 - ); 6 + <Loader2Icon role="status" aria-label="Loading" className={cn("size-4 animate-spin", className)} {...props} /> 7 + ) 14 8 } 15 9 16 - export { Spinner }; 10 + export { Spinner }
+2 -2
components/ui/switch.tsx
··· 17 17 data-slot="switch" 18 18 data-size={size} 19 19 className={cn( 20 - "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", 20 + "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", 21 21 className 22 22 )} 23 23 {...props} 24 24 > 25 25 <SwitchPrimitive.Thumb 26 26 data-slot="switch-thumb" 27 - className="pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground" 27 + className="pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground" 28 28 /> 29 29 </SwitchPrimitive.Root> 30 30 )
+4 -4
components/ui/tabs.tsx
··· 63 63 <TabsPrimitive.Trigger 64 64 data-slot="tabs-trigger" 65 65 className={cn( 66 - "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", 67 - "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent", 68 - "data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground", 69 - "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100", 66 + "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", 67 + "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", 68 + "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", 69 + "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", 70 70 className 71 71 )} 72 72 {...props}
+2 -2
lib/utils.ts
··· 1 - import { clsx, type ClassValue } from 'clsx' 2 - import { twMerge } from 'tailwind-merge' 1 + import { clsx, type ClassValue } from "clsx" 2 + import { twMerge } from "tailwind-merge" 3 3 4 4 export function cn(...inputs: ClassValue[]) { 5 5 return twMerge(clsx(inputs))
+4 -8
package.json
··· 30 30 "evlog": "^2.18.1", 31 31 "framer-motion": "^12.40.0", 32 32 "geist": "latest", 33 + "input-otp": "^1.4.2", 33 34 "lucide-react": "1.17.0", 34 35 "next": "16.2.6", 35 36 "next-themes": "latest", ··· 37 38 "qr-code-styling": "latest", 38 39 "radix-ui": "latest", 39 40 "react": "^18", 40 - "react-day-picker": "9.14.0", 41 + "react-day-picker": "10.0.1", 41 42 "react-dom": "^18", 42 43 "react-email": "6.5.0", 43 44 "react-icons": "5.6.0", 44 - "recharts": "3.8.1", 45 + "recharts": "3.8.0", 45 46 "resend": "6.12.4", 47 + "shadcn": "^4.8.2", 46 48 "sonner": "2.0.7", 47 49 "tailwind-merge": "3.6.0", 48 50 "tw-animate-css": "^1.4.0", ··· 56 58 ], 57 59 "*.{json,md,css}": [ 58 60 "prettier --write" 59 - ] 60 - }, 61 - "pnpm": { 62 - "onlyBuiltDependencies": [ 63 - "sharp", 64 - "esbuild" 65 61 ] 66 62 }, 67 63 "devDependencies": {
+2017 -58
pnpm-lock.yaml
··· 13 13 version: 1.6.11(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9)) 14 14 '@better-auth/infra': 15 15 specifier: 0.2.8 16 - version: 0.2.8(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/sso@1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3)))(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(zod@4.4.3) 16 + version: 0.2.8(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/sso@1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3)))(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(zod@4.4.3) 17 17 '@marsidev/react-turnstile': 18 18 specifier: 1.5.2 19 19 version: 1.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ··· 34 34 version: 3.0.3 35 35 better-auth: 36 36 specifier: 1.6.11 37 - version: 1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 37 + version: 1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 38 38 class-variance-authority: 39 39 specifier: ^0.7.1 40 40 version: 0.7.1 ··· 49 49 version: 0.45.2(kysely@0.28.17)(postgres@3.4.9) 50 50 evlog: 51 51 specifier: ^2.18.1 52 - version: 2.18.1(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) 52 + version: 2.18.1(express@5.2.1)(hono@4.12.23)(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) 53 53 framer-motion: 54 54 specifier: ^12.40.0 55 55 version: 12.40.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 56 56 geist: 57 57 specifier: latest 58 - version: 1.7.1(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) 58 + version: 1.7.1(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) 59 + input-otp: 60 + specifier: ^1.4.2 61 + version: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 59 62 lucide-react: 60 63 specifier: 1.17.0 61 64 version: 1.17.0(react@18.3.1) 62 65 next: 63 66 specifier: 16.2.6 64 - version: 16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 67 + version: 16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 65 68 next-themes: 66 69 specifier: latest 67 70 version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ··· 78 81 specifier: ^18 79 82 version: 18.3.1 80 83 react-day-picker: 81 - specifier: 9.14.0 82 - version: 9.14.0(react@18.3.1) 84 + specifier: 10.0.1 85 + version: 10.0.1(@types/react@19.2.14)(react@18.3.1) 83 86 react-dom: 84 87 specifier: ^18 85 88 version: 18.3.1(react@18.3.1) ··· 90 93 specifier: 5.6.0 91 94 version: 5.6.0(react@18.3.1) 92 95 recharts: 93 - specifier: 3.8.1 94 - version: 3.8.1(@types/react@19.2.14)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(redux@5.0.1) 96 + specifier: 3.8.0 97 + version: 3.8.0(@types/react@19.2.14)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(redux@5.0.1) 95 98 resend: 96 99 specifier: 6.12.4 97 100 version: 6.12.4(@react-email/render@2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) 101 + shadcn: 102 + specifier: ^4.8.2 103 + version: 4.8.2(@types/node@25.6.0)(typescript@6.0.3) 98 104 sonner: 99 105 specifier: 2.0.7 100 106 version: 2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ··· 186 192 resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} 187 193 engines: {node: '>=6.9.0'} 188 194 195 + '@babel/code-frame@7.29.7': 196 + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} 197 + engines: {node: '>=6.9.0'} 198 + 199 + '@babel/compat-data@7.29.7': 200 + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} 201 + engines: {node: '>=6.9.0'} 202 + 203 + '@babel/core@7.29.7': 204 + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} 205 + engines: {node: '>=6.9.0'} 206 + 189 207 '@babel/generator@7.29.1': 190 208 resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} 191 209 engines: {node: '>=6.9.0'} 192 210 211 + '@babel/generator@7.29.7': 212 + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} 213 + engines: {node: '>=6.9.0'} 214 + 215 + '@babel/helper-annotate-as-pure@7.29.7': 216 + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} 217 + engines: {node: '>=6.9.0'} 218 + 219 + '@babel/helper-compilation-targets@7.29.7': 220 + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} 221 + engines: {node: '>=6.9.0'} 222 + 223 + '@babel/helper-create-class-features-plugin@7.29.7': 224 + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} 225 + engines: {node: '>=6.9.0'} 226 + peerDependencies: 227 + '@babel/core': ^7.0.0 228 + 229 + '@babel/helper-globals@7.29.7': 230 + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} 231 + engines: {node: '>=6.9.0'} 232 + 233 + '@babel/helper-member-expression-to-functions@7.29.7': 234 + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} 235 + engines: {node: '>=6.9.0'} 236 + 237 + '@babel/helper-module-imports@7.29.7': 238 + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} 239 + engines: {node: '>=6.9.0'} 240 + 241 + '@babel/helper-module-transforms@7.29.7': 242 + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} 243 + engines: {node: '>=6.9.0'} 244 + peerDependencies: 245 + '@babel/core': ^7.0.0 246 + 247 + '@babel/helper-optimise-call-expression@7.29.7': 248 + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} 249 + engines: {node: '>=6.9.0'} 250 + 251 + '@babel/helper-plugin-utils@7.29.7': 252 + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} 253 + engines: {node: '>=6.9.0'} 254 + 255 + '@babel/helper-replace-supers@7.29.7': 256 + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} 257 + engines: {node: '>=6.9.0'} 258 + peerDependencies: 259 + '@babel/core': ^7.0.0 260 + 261 + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': 262 + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} 263 + engines: {node: '>=6.9.0'} 264 + 193 265 '@babel/helper-string-parser@7.29.7': 194 266 resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} 195 267 engines: {node: '>=6.9.0'} ··· 200 272 201 273 '@babel/helper-validator-identifier@7.29.7': 202 274 resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} 275 + engines: {node: '>=6.9.0'} 276 + 277 + '@babel/helper-validator-option@7.29.7': 278 + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} 279 + engines: {node: '>=6.9.0'} 280 + 281 + '@babel/helpers@7.29.7': 282 + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} 203 283 engines: {node: '>=6.9.0'} 204 284 205 285 '@babel/parser@7.27.0': ··· 212 292 engines: {node: '>=6.0.0'} 213 293 hasBin: true 214 294 295 + '@babel/parser@7.29.7': 296 + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} 297 + engines: {node: '>=6.0.0'} 298 + hasBin: true 299 + 300 + '@babel/plugin-syntax-jsx@7.29.7': 301 + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} 302 + engines: {node: '>=6.9.0'} 303 + peerDependencies: 304 + '@babel/core': ^7.0.0-0 305 + 306 + '@babel/plugin-syntax-typescript@7.29.7': 307 + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} 308 + engines: {node: '>=6.9.0'} 309 + peerDependencies: 310 + '@babel/core': ^7.0.0-0 311 + 312 + '@babel/plugin-transform-modules-commonjs@7.29.7': 313 + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} 314 + engines: {node: '>=6.9.0'} 315 + peerDependencies: 316 + '@babel/core': ^7.0.0-0 317 + 318 + '@babel/plugin-transform-typescript@7.29.7': 319 + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} 320 + engines: {node: '>=6.9.0'} 321 + peerDependencies: 322 + '@babel/core': ^7.0.0-0 323 + 324 + '@babel/preset-typescript@7.29.7': 325 + resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} 326 + engines: {node: '>=6.9.0'} 327 + peerDependencies: 328 + '@babel/core': ^7.0.0-0 329 + 215 330 '@babel/template@7.28.6': 216 331 resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} 217 332 engines: {node: '>=6.9.0'} 218 333 334 + '@babel/template@7.29.7': 335 + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} 336 + engines: {node: '>=6.9.0'} 337 + 219 338 '@babel/traverse@7.27.0': 220 339 resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} 221 340 engines: {node: '>=6.9.0'} 222 341 342 + '@babel/traverse@7.29.7': 343 + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} 344 + engines: {node: '>=6.9.0'} 345 + 223 346 '@babel/types@7.29.0': 224 347 resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} 348 + engines: {node: '>=6.9.0'} 349 + 350 + '@babel/types@7.29.7': 351 + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} 225 352 engines: {node: '>=6.9.0'} 226 353 227 354 '@better-auth/core@1.6.11': ··· 417 544 conventional-commits-parser: 418 545 optional: true 419 546 420 - '@date-fns/tz@1.4.1': 421 - resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} 547 + '@date-fns/tz@1.5.0': 548 + resolution: {integrity: sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==} 549 + 550 + '@dotenvx/dotenvx@1.69.1': 551 + resolution: {integrity: sha512-kwQB5KcAegxw/+NGUgXAo5ovyOSjlMhoXSSnSEpDhoHJwzMcMO0HE1U0VCYZ7jbAeCMGamed9XdWzOA5ixtTNg==} 552 + hasBin: true 422 553 423 554 '@drizzle-team/brocli@0.10.2': 424 555 resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 556 + 557 + '@ecies/ciphers@0.2.6': 558 + resolution: {integrity: sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==} 559 + engines: {bun: '>=1', deno: '>=2.7.10', node: '>=16'} 560 + peerDependencies: 561 + '@noble/ciphers': ^1.0.0 425 562 426 563 '@emnapi/runtime@1.10.0': 427 564 resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} ··· 1088 1225 '@floating-ui/utils@0.2.11': 1089 1226 resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} 1090 1227 1228 + '@hono/node-server@1.19.14': 1229 + resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} 1230 + engines: {node: '>=18.14.1'} 1231 + peerDependencies: 1232 + hono: ^4 1233 + 1091 1234 '@humanfs/core@0.19.2': 1092 1235 resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} 1093 1236 engines: {node: '>=18.18.0'} ··· 1261 1404 cpu: [x64] 1262 1405 os: [win32] 1263 1406 1407 + '@inquirer/ansi@2.0.6': 1408 + resolution: {integrity: sha512-I/INw4sHGlVZ/afZOckpLiDP9SmbMl1g/GCqeHjLw1Afw/0PlRs2tRFgTGWmdI0hoNuWZn3y2iHNmG1vyECyQQ==} 1409 + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} 1410 + 1411 + '@inquirer/confirm@6.1.0': 1412 + resolution: {integrity: sha512-USpeB76eqK7yGricDlGAupxWlp4a59qpeZOoNWaxO/nJln7agpJveyNkQ1d5u8YXG6TOqxZtQpKPORQQDrdVsA==} 1413 + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} 1414 + peerDependencies: 1415 + '@types/node': '>=18' 1416 + peerDependenciesMeta: 1417 + '@types/node': 1418 + optional: true 1419 + 1420 + '@inquirer/core@11.2.0': 1421 + resolution: {integrity: sha512-joR1YS2sI0us+9d0I8ViqFbrRLONO8CFTuyvBX4ZVBSch+VsZiugUABdrhBXXJR1VyEzvpz5SQCix3keETQ58g==} 1422 + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} 1423 + peerDependencies: 1424 + '@types/node': '>=18' 1425 + peerDependenciesMeta: 1426 + '@types/node': 1427 + optional: true 1428 + 1429 + '@inquirer/figures@2.0.6': 1430 + resolution: {integrity: sha512-dsZgQtH2t5Q6ah3aPbZbeEZAxsD9qQu0DXf01AltuEfRTm+NoLN6+rLVbr+4edeEbNCp/wBNM6mALRWtsQpfkw==} 1431 + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} 1432 + 1433 + '@inquirer/type@4.0.6': 1434 + resolution: {integrity: sha512-J+9tdxOskuYuGjsvGaq00AamhDgjR7anhEW2dP4QdQpFCMPngCeC/bCYWQ5NsMWZRdsy53is7kAHb/+7cwDk2g==} 1435 + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} 1436 + peerDependencies: 1437 + '@types/node': '>=18' 1438 + peerDependenciesMeta: 1439 + '@types/node': 1440 + optional: true 1441 + 1264 1442 '@jridgewell/gen-mapping@0.3.13': 1265 1443 resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 1266 1444 ··· 1282 1460 peerDependencies: 1283 1461 react: ^17.0.2 || ^18.0.0 || ^19.0 1284 1462 react-dom: ^17.0.2 || ^18.0.0 || ^19.0 1463 + 1464 + '@modelcontextprotocol/sdk@1.29.0': 1465 + resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} 1466 + engines: {node: '>=18'} 1467 + peerDependencies: 1468 + '@cfworker/json-schema': ^4.1.1 1469 + zod: ^3.25 || ^4.0 1470 + peerDependenciesMeta: 1471 + '@cfworker/json-schema': 1472 + optional: true 1473 + 1474 + '@mswjs/interceptors@0.41.9': 1475 + resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} 1476 + engines: {node: '>=18'} 1285 1477 1286 1478 '@next/env@16.2.6': 1287 1479 resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==} ··· 1341 1533 cpu: [x64] 1342 1534 os: [win32] 1343 1535 1536 + '@noble/ciphers@1.3.0': 1537 + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} 1538 + engines: {node: ^14.21.3 || >=16} 1539 + 1344 1540 '@noble/ciphers@2.2.0': 1345 1541 resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==} 1346 1542 engines: {node: '>= 20.19.0'} 1543 + 1544 + '@noble/curves@1.9.7': 1545 + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} 1546 + engines: {node: ^14.21.3 || >=16} 1547 + 1548 + '@noble/hashes@1.8.0': 1549 + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} 1550 + engines: {node: ^14.21.3 || >=16} 1347 1551 1348 1552 '@noble/hashes@2.2.0': 1349 1553 resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} ··· 1363 1567 '@nodelib/fs.walk@1.2.8': 1364 1568 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 1365 1569 engines: {node: '>= 8'} 1570 + 1571 + '@open-draft/deferred-promise@2.2.0': 1572 + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} 1573 + 1574 + '@open-draft/deferred-promise@3.0.0': 1575 + resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==} 1576 + 1577 + '@open-draft/logger@0.3.0': 1578 + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} 1579 + 1580 + '@open-draft/until@2.1.0': 1581 + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} 1366 1582 1367 1583 '@opentelemetry/semantic-conventions@1.40.0': 1368 1584 resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} ··· 2207 2423 react-redux: 2208 2424 optional: true 2209 2425 2426 + '@sec-ant/readable-stream@0.4.1': 2427 + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} 2428 + 2210 2429 '@selderee/plugin-htmlparser2@0.11.0': 2211 2430 resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} 2212 2431 ··· 2216 2435 2217 2436 '@simple-libs/stream-utils@1.2.0': 2218 2437 resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} 2438 + engines: {node: '>=18'} 2439 + 2440 + '@sindresorhus/merge-streams@4.0.0': 2441 + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 2219 2442 engines: {node: '>=18'} 2220 2443 2221 2444 '@socket.io/component-emitter@3.1.2': ··· 2232 2455 2233 2456 '@swc/helpers@0.5.15': 2234 2457 resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} 2235 - 2236 - '@tabby_ai/hijri-converter@1.0.5': 2237 - resolution: {integrity: sha512-r5bClKrcIusDoo049dSL8CawnHR6mRdDwhlQuIgZRNty68q0x8k3Lf1BtPAMxRf/GgnHBnIO4ujd3+GQdLWzxQ==} 2238 - engines: {node: '>=16.0.0'} 2239 2458 2240 2459 '@tailwindcss/node@4.3.0': 2241 2460 resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} ··· 2329 2548 '@tailwindcss/postcss@4.3.0': 2330 2549 resolution: {integrity: sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w==} 2331 2550 2551 + '@ts-morph/common@0.27.0': 2552 + resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} 2553 + 2332 2554 '@types/cors@2.8.19': 2333 2555 resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} 2334 2556 ··· 2379 2601 '@types/react@19.2.14': 2380 2602 resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} 2381 2603 2604 + '@types/set-cookie-parser@2.4.10': 2605 + resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} 2606 + 2607 + '@types/statuses@2.0.6': 2608 + resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} 2609 + 2382 2610 '@types/use-sync-external-store@0.0.6': 2383 2611 resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} 2384 2612 2613 + '@types/validate-npm-package-name@4.0.2': 2614 + resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} 2615 + 2385 2616 '@types/ws@8.18.1': 2386 2617 resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} 2387 2618 ··· 2456 2687 resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 2457 2688 engines: {node: '>= 0.6'} 2458 2689 2690 + accepts@2.0.0: 2691 + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 2692 + engines: {node: '>= 0.6'} 2693 + 2459 2694 acorn-jsx@5.3.2: 2460 2695 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 2461 2696 peerDependencies: ··· 2465 2700 resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} 2466 2701 engines: {node: '>=0.4.0'} 2467 2702 hasBin: true 2703 + 2704 + agent-base@7.1.2: 2705 + resolution: {integrity: sha512-JVzqkCNRT+VfqzzgPWDPnwvDheSAUdiMUn3NoLXpDJF5lRqeJqyC9iGsAxIOAW+mzIdq+uP1TvcX6bMtrH0agg==} 2706 + engines: {node: '>= 14'} 2468 2707 2469 2708 ajv-formats@3.0.1: 2470 2709 resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} ··· 2480 2719 ajv@8.20.0: 2481 2720 resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} 2482 2721 2722 + ansi-colors@4.1.3: 2723 + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 2724 + engines: {node: '>=6'} 2725 + 2483 2726 ansi-escapes@7.3.0: 2484 2727 resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} 2485 2728 engines: {node: '>=18'} ··· 2512 2755 2513 2756 asn1@0.2.6: 2514 2757 resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} 2758 + 2759 + ast-types@0.16.1: 2760 + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} 2761 + engines: {node: '>=4'} 2515 2762 2516 2763 atomically@2.1.1: 2517 2764 resolution: {integrity: sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ==} ··· 2603 2850 zod: 2604 2851 optional: true 2605 2852 2853 + body-parser@2.2.2: 2854 + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} 2855 + engines: {node: '>=18'} 2856 + 2606 2857 brace-expansion@5.0.6: 2607 2858 resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} 2608 2859 engines: {node: 18 || 20 || >=22} ··· 2611 2862 resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 2612 2863 engines: {node: '>=8'} 2613 2864 2865 + browserslist@4.28.2: 2866 + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} 2867 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 2868 + hasBin: true 2869 + 2614 2870 buffer-from@1.1.2: 2615 2871 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 2616 2872 2873 + bundle-name@4.1.0: 2874 + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} 2875 + engines: {node: '>=18'} 2876 + 2877 + bytes@3.1.2: 2878 + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 2879 + engines: {node: '>= 0.8'} 2880 + 2881 + call-bind-apply-helpers@1.0.2: 2882 + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 2883 + engines: {node: '>= 0.4'} 2884 + 2885 + call-bound@1.0.4: 2886 + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 2887 + engines: {node: '>= 0.4'} 2888 + 2617 2889 callsites@3.1.0: 2618 2890 resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 2619 2891 engines: {node: '>=6'} ··· 2625 2897 caniuse-lite@1.0.30001792: 2626 2898 resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} 2627 2899 2900 + chalk@5.6.2: 2901 + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 2902 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 2903 + 2628 2904 chokidar@4.0.3: 2629 2905 resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 2630 2906 engines: {node: '>= 14.16.0'} ··· 2639 2915 resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} 2640 2916 engines: {node: '>=18'} 2641 2917 2918 + cli-spinners@2.9.2: 2919 + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} 2920 + engines: {node: '>=6'} 2921 + 2642 2922 cli-truncate@5.2.0: 2643 2923 resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} 2644 2924 engines: {node: '>=20'} 2925 + 2926 + cli-width@4.1.0: 2927 + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} 2928 + engines: {node: '>= 12'} 2645 2929 2646 2930 client-only@0.0.1: 2647 2931 resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} ··· 2653 2937 clsx@2.1.1: 2654 2938 resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 2655 2939 engines: {node: '>=6'} 2940 + 2941 + code-block-writer@13.0.3: 2942 + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} 2656 2943 2657 2944 color-convert@2.0.1: 2658 2945 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} ··· 2661 2948 color-name@1.1.4: 2662 2949 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 2663 2950 2951 + commander@11.1.0: 2952 + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} 2953 + engines: {node: '>=16'} 2954 + 2664 2955 commander@13.1.0: 2665 2956 resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} 2666 2957 engines: {node: '>=18'} 2958 + 2959 + commander@14.0.3: 2960 + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} 2961 + engines: {node: '>=20'} 2667 2962 2668 2963 compare-func@2.0.0: 2669 2964 resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} ··· 2672 2967 resolution: {integrity: sha512-Uy5YN9KEu0WWDaZAVJ5FAmZoaJt9rdK6kH+utItPyGsCqCgaTKkrmZx3zoE0/3q6S3bcp3Ihkk+ZqPxWxFK5og==} 2673 2968 engines: {node: '>=20'} 2674 2969 2970 + content-disposition@1.1.0: 2971 + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} 2972 + engines: {node: '>=18'} 2973 + 2974 + content-type@1.0.5: 2975 + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 2976 + engines: {node: '>= 0.6'} 2977 + 2978 + content-type@2.0.0: 2979 + resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} 2980 + engines: {node: '>=18'} 2981 + 2675 2982 conventional-changelog-angular@8.3.1: 2676 2983 resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} 2677 2984 engines: {node: '>=18'} ··· 2685 2992 engines: {node: '>=18'} 2686 2993 hasBin: true 2687 2994 2995 + convert-source-map@2.0.0: 2996 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 2997 + 2998 + cookie-signature@1.2.2: 2999 + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 3000 + engines: {node: '>=6.6.0'} 3001 + 2688 3002 cookie@0.7.2: 2689 3003 resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 2690 3004 engines: {node: '>= 0.6'} 3005 + 3006 + cookie@1.1.1: 3007 + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} 3008 + engines: {node: '>=18'} 2691 3009 2692 3010 cors@2.8.6: 2693 3011 resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} ··· 2717 3035 css-tree@3.2.1: 2718 3036 resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} 2719 3037 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 3038 + 3039 + cssesc@3.0.0: 3040 + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 3041 + engines: {node: '>=4'} 3042 + hasBin: true 2720 3043 2721 3044 csstype@3.2.3: 2722 3045 resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} ··· 2765 3088 resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} 2766 3089 engines: {node: '>=12'} 2767 3090 2768 - date-fns-jalali@4.1.0-0: 2769 - resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} 2770 - 2771 - date-fns@4.1.0: 2772 - resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} 3091 + data-uri-to-buffer@4.0.0: 3092 + resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} 3093 + engines: {node: '>= 12'} 2773 3094 2774 3095 date-fns@4.3.0: 2775 3096 resolution: {integrity: sha512-OYcL+3N/jyWbYdFGqoMAhytDgxP9pbYPUUiRCOgn4Fewaadk9l/Wam4Avciiyp2BgkpfQyBV9B+ehnVJych+eQ==} ··· 2794 3115 decimal.js-light@2.5.1: 2795 3116 resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} 2796 3117 3118 + dedent@1.7.2: 3119 + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} 3120 + peerDependencies: 3121 + babel-plugin-macros: ^3.1.0 3122 + peerDependenciesMeta: 3123 + babel-plugin-macros: 3124 + optional: true 3125 + 2797 3126 deep-is@0.1.4: 2798 3127 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 2799 3128 ··· 2801 3130 resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 2802 3131 engines: {node: '>=0.10.0'} 2803 3132 3133 + default-browser-id@5.0.1: 3134 + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} 3135 + engines: {node: '>=18'} 3136 + 3137 + default-browser@5.5.0: 3138 + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} 3139 + engines: {node: '>=18'} 3140 + 3141 + define-lazy-prop@3.0.0: 3142 + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 3143 + engines: {node: '>=12'} 3144 + 2804 3145 defu@6.1.7: 2805 3146 resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} 2806 3147 3148 + depd@2.0.0: 3149 + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 3150 + engines: {node: '>= 0.8'} 3151 + 2807 3152 detect-libc@2.1.2: 2808 3153 resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 2809 3154 engines: {node: '>=8'} 2810 3155 2811 3156 detect-node-es@1.1.0: 2812 3157 resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} 3158 + 3159 + diff@8.0.4: 3160 + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} 3161 + engines: {node: '>=0.3.1'} 2813 3162 2814 3163 dom-serializer@2.0.0: 2815 3164 resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} ··· 2832 3181 resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} 2833 3182 engines: {node: '>=8'} 2834 3183 3184 + dotenv@17.4.2: 3185 + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} 3186 + engines: {node: '>=12'} 3187 + 2835 3188 drizzle-kit@0.31.10: 2836 3189 resolution: {integrity: sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==} 2837 3190 hasBin: true ··· 2928 3281 sqlite3: 2929 3282 optional: true 2930 3283 3284 + dunder-proto@1.0.1: 3285 + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 3286 + engines: {node: '>= 0.4'} 3287 + 3288 + eciesjs@0.4.18: 3289 + resolution: {integrity: sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==} 3290 + engines: {bun: '>=1', deno: '>=2', node: '>=16'} 3291 + 3292 + ee-first@1.1.1: 3293 + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 3294 + 3295 + electron-to-chromium@1.5.363: 3296 + resolution: {integrity: sha512-VjUKPyWzGnT1fujlkEGC/BvN70Hh70KXtAqcmniXviYlJC/ivcT+BWGPyxWVbJZLfvtKR6dqg1L7T7pgAMBtWA==} 3297 + 2931 3298 emoji-regex@10.6.0: 2932 3299 resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} 2933 3300 2934 3301 emoji-regex@8.0.0: 2935 3302 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 2936 3303 3304 + encodeurl@2.0.0: 3305 + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 3306 + engines: {node: '>= 0.8'} 3307 + 2937 3308 engine.io-parser@5.2.3: 2938 3309 resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} 2939 3310 engines: {node: '>=10.0.0'} ··· 2945 3316 enhanced-resolve@5.21.2: 2946 3317 resolution: {integrity: sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ==} 2947 3318 engines: {node: '>=10.13.0'} 3319 + 3320 + enquirer@2.4.1: 3321 + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 3322 + engines: {node: '>=8.6'} 2948 3323 2949 3324 entities@4.5.0: 2950 3325 resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} ··· 2965 3340 error-ex@1.3.4: 2966 3341 resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} 2967 3342 3343 + es-define-property@1.0.1: 3344 + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 3345 + engines: {node: '>= 0.4'} 3346 + 3347 + es-errors@1.3.0: 3348 + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 3349 + engines: {node: '>= 0.4'} 3350 + 3351 + es-object-atoms@1.1.2: 3352 + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} 3353 + engines: {node: '>= 0.4'} 3354 + 2968 3355 es-toolkit@1.46.1: 2969 3356 resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} 2970 3357 ··· 3039 3426 resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} 3040 3427 engines: {node: ^20.19.0 || ^22.13.0 || >=24} 3041 3428 3429 + esprima@4.0.1: 3430 + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 3431 + engines: {node: '>=4'} 3432 + hasBin: true 3433 + 3042 3434 esquery@1.7.0: 3043 3435 resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} 3044 3436 engines: {node: '>=0.10'} ··· 3055 3447 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 3056 3448 engines: {node: '>=0.10.0'} 3057 3449 3450 + etag@1.8.1: 3451 + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 3452 + engines: {node: '>= 0.6'} 3453 + 3058 3454 eventemitter3@5.0.4: 3059 3455 resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} 3060 3456 3457 + eventsource-parser@3.1.0: 3458 + resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} 3459 + engines: {node: '>=18.0.0'} 3460 + 3461 + eventsource@3.0.7: 3462 + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} 3463 + engines: {node: '>=18.0.0'} 3464 + 3061 3465 evlog@2.18.1: 3062 3466 resolution: {integrity: sha512-uP7NNcmgQST0VdJ5c+gm4uBOOQDc/lGDWwH6aRS2H4C6mu4Hm7N8bCi6cSKIz8+If6pD2uA5EgPuhvI7OH+SHA==} 3063 3467 peerDependencies: ··· 3114 3518 vite: 3115 3519 optional: true 3116 3520 3521 + execa@5.1.1: 3522 + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 3523 + engines: {node: '>=10'} 3524 + 3525 + execa@9.6.1: 3526 + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} 3527 + engines: {node: ^18.19.0 || >=20.5.0} 3528 + 3529 + express-rate-limit@8.5.2: 3530 + resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} 3531 + engines: {node: '>= 16'} 3532 + peerDependencies: 3533 + express: '>= 4.11' 3534 + 3535 + express@5.2.1: 3536 + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} 3537 + engines: {node: '>= 18'} 3538 + 3117 3539 fast-deep-equal@3.1.3: 3118 3540 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 3119 3541 ··· 3121 3543 resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 3122 3544 engines: {node: '>=8.6.0'} 3123 3545 3546 + fast-glob@3.3.3: 3547 + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 3548 + engines: {node: '>=8.6.0'} 3549 + 3124 3550 fast-json-stable-stringify@2.1.0: 3125 3551 resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 3126 3552 ··· 3130 3556 fast-sha256@1.3.0: 3131 3557 resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} 3132 3558 3559 + fast-string-truncated-width@3.0.3: 3560 + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} 3561 + 3562 + fast-string-width@3.0.2: 3563 + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} 3564 + 3133 3565 fast-uri@3.1.2: 3134 3566 resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} 3567 + 3568 + fast-wrap-ansi@0.2.2: 3569 + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} 3135 3570 3136 3571 fast-xml-builder@1.2.0: 3137 3572 resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} ··· 3152 3587 picomatch: 3153 3588 optional: true 3154 3589 3590 + fetch-blob@3.2.0: 3591 + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 3592 + engines: {node: ^12.20 || >= 14.13} 3593 + 3594 + figures@6.1.0: 3595 + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} 3596 + engines: {node: '>=18'} 3597 + 3155 3598 file-entry-cache@8.0.0: 3156 3599 resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 3157 3600 engines: {node: '>=16.0.0'} ··· 3159 3602 fill-range@7.1.1: 3160 3603 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 3161 3604 engines: {node: '>=8'} 3605 + 3606 + finalhandler@2.1.1: 3607 + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} 3608 + engines: {node: '>= 18.0.0'} 3162 3609 3163 3610 find-up@5.0.0: 3164 3611 resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} ··· 3171 3618 flatted@3.4.2: 3172 3619 resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} 3173 3620 3621 + formdata-polyfill@4.0.10: 3622 + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 3623 + engines: {node: '>=12.20.0'} 3624 + 3625 + forwarded@0.2.0: 3626 + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 3627 + engines: {node: '>= 0.6'} 3628 + 3174 3629 framer-motion@12.40.0: 3175 3630 resolution: {integrity: sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==} 3176 3631 peerDependencies: ··· 3184 3639 optional: true 3185 3640 react-dom: 3186 3641 optional: true 3642 + 3643 + fresh@2.0.0: 3644 + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 3645 + engines: {node: '>= 0.8'} 3646 + 3647 + fs-extra@11.3.5: 3648 + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} 3649 + engines: {node: '>=14.14'} 3187 3650 3188 3651 fsevents@2.3.3: 3189 3652 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 3190 3653 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 3191 3654 os: [darwin] 3192 3655 3656 + function-bind@1.1.2: 3657 + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 3658 + 3659 + fuzzysort@3.1.0: 3660 + resolution: {integrity: sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==} 3661 + 3193 3662 geist@1.7.1: 3194 3663 resolution: {integrity: sha512-XF8DM30ODhDu0Ng5S2kOS8j4ZkG/6z2fKWAiFJA7wG0Hc92ZXgjYLrwbD9bVU4nGVzwboPtG+QtaPGsfgnXLaA==} 3195 3664 peerDependencies: 3196 3665 next: '>=13.2.0' 3197 3666 3667 + gensync@1.0.0-beta.2: 3668 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 3669 + engines: {node: '>=6.9.0'} 3670 + 3198 3671 get-caller-file@2.0.5: 3199 3672 resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 3200 3673 engines: {node: 6.* || 8.* || >= 10.*} ··· 3203 3676 resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} 3204 3677 engines: {node: '>=18'} 3205 3678 3679 + get-intrinsic@1.3.0: 3680 + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 3681 + engines: {node: '>= 0.4'} 3682 + 3206 3683 get-nonce@1.0.1: 3207 3684 resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} 3208 3685 engines: {node: '>=6'} 3209 3686 3687 + get-own-enumerable-keys@1.0.0: 3688 + resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==} 3689 + engines: {node: '>=14.16'} 3690 + 3691 + get-proto@1.0.1: 3692 + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 3693 + engines: {node: '>= 0.4'} 3694 + 3695 + get-stream@6.0.1: 3696 + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 3697 + engines: {node: '>=10'} 3698 + 3699 + get-stream@9.0.1: 3700 + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} 3701 + engines: {node: '>=18'} 3702 + 3210 3703 get-tsconfig@4.14.0: 3211 3704 resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} 3212 3705 ··· 3235 3728 resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 3236 3729 engines: {node: '>=4'} 3237 3730 3731 + gopd@1.2.0: 3732 + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 3733 + engines: {node: '>= 0.4'} 3734 + 3238 3735 graceful-fs@4.2.11: 3239 3736 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 3240 3737 3738 + graphql@16.14.0: 3739 + resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==} 3740 + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} 3741 + 3742 + has-symbols@1.1.0: 3743 + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 3744 + engines: {node: '>= 0.4'} 3745 + 3746 + hasown@2.0.3: 3747 + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} 3748 + engines: {node: '>= 0.4'} 3749 + 3750 + headers-polyfill@5.0.1: 3751 + resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} 3752 + 3753 + hono@4.12.23: 3754 + resolution: {integrity: sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA==} 3755 + engines: {node: '>=16.9.0'} 3756 + 3241 3757 html-to-text@9.0.5: 3242 3758 resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} 3243 3759 engines: {node: '>=14'} ··· 3245 3761 htmlparser2@8.0.2: 3246 3762 resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} 3247 3763 3764 + http-errors@2.0.1: 3765 + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} 3766 + engines: {node: '>= 0.8'} 3767 + 3768 + https-proxy-agent@7.0.6: 3769 + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 3770 + engines: {node: '>= 14'} 3771 + 3772 + human-signals@2.1.0: 3773 + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 3774 + engines: {node: '>=10.17.0'} 3775 + 3776 + human-signals@8.0.1: 3777 + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} 3778 + engines: {node: '>=18.18.0'} 3779 + 3248 3780 husky@9.1.7: 3249 3781 resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} 3250 3782 engines: {node: '>=18'} 3251 3783 hasBin: true 3784 + 3785 + iconv-lite@0.7.2: 3786 + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} 3787 + engines: {node: '>=0.10.0'} 3252 3788 3253 3789 ignore@5.3.2: 3254 3790 resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} ··· 3275 3811 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 3276 3812 engines: {node: '>=0.8.19'} 3277 3813 3814 + inherits@2.0.4: 3815 + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 3816 + 3278 3817 ini@6.0.0: 3279 3818 resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} 3280 3819 engines: {node: ^20.17.0 || >=22.9.0} 3281 3820 3821 + input-otp@1.4.2: 3822 + resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==} 3823 + peerDependencies: 3824 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc 3825 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc 3826 + 3282 3827 internmap@2.0.3: 3283 3828 resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} 3284 3829 engines: {node: '>=12'} 3830 + 3831 + ip-address@10.2.0: 3832 + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} 3833 + engines: {node: '>= 12'} 3834 + 3835 + ipaddr.js@1.9.1: 3836 + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 3837 + engines: {node: '>= 0.10'} 3285 3838 3286 3839 is-arrayish@0.2.1: 3287 3840 resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 3288 3841 3842 + is-docker@3.0.0: 3843 + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 3844 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 3845 + hasBin: true 3846 + 3289 3847 is-extglob@2.1.1: 3290 3848 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 3291 3849 engines: {node: '>=0.10.0'} ··· 3302 3860 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 3303 3861 engines: {node: '>=0.10.0'} 3304 3862 3863 + is-in-ssh@1.0.0: 3864 + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} 3865 + engines: {node: '>=20'} 3866 + 3867 + is-inside-container@1.0.0: 3868 + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 3869 + engines: {node: '>=14.16'} 3870 + hasBin: true 3871 + 3872 + is-interactive@2.0.0: 3873 + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} 3874 + engines: {node: '>=12'} 3875 + 3876 + is-node-process@1.2.0: 3877 + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} 3878 + 3305 3879 is-number@7.0.0: 3306 3880 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 3307 3881 engines: {node: '>=0.12.0'} ··· 3310 3884 resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} 3311 3885 engines: {node: '>=8'} 3312 3886 3887 + is-obj@3.0.0: 3888 + resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} 3889 + engines: {node: '>=12'} 3890 + 3313 3891 is-plain-obj@4.1.0: 3314 3892 resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 3315 3893 engines: {node: '>=12'} 3316 3894 3895 + is-promise@4.0.0: 3896 + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 3897 + 3898 + is-regexp@3.1.0: 3899 + resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==} 3900 + engines: {node: '>=12'} 3901 + 3902 + is-stream@2.0.1: 3903 + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 3904 + engines: {node: '>=8'} 3905 + 3906 + is-stream@4.0.1: 3907 + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} 3908 + engines: {node: '>=18'} 3909 + 3910 + is-unicode-supported@1.3.0: 3911 + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} 3912 + engines: {node: '>=12'} 3913 + 3317 3914 is-unicode-supported@2.1.0: 3318 3915 resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} 3319 3916 engines: {node: '>=18'} 3320 3917 3918 + is-wsl@3.1.1: 3919 + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} 3920 + engines: {node: '>=16'} 3921 + 3321 3922 isexe@2.0.0: 3322 3923 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 3924 + 3925 + isexe@3.1.5: 3926 + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} 3927 + engines: {node: '>=18'} 3323 3928 3324 3929 jiti@2.4.2: 3325 3930 resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} ··· 3374 3979 jsonc-parser@3.3.1: 3375 3980 resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} 3376 3981 3982 + jsonfile@6.2.1: 3983 + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} 3984 + 3377 3985 keyv@4.5.4: 3378 3986 resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 3379 3987 ··· 3381 3989 resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 3382 3990 engines: {node: '>=6'} 3383 3991 3992 + kleur@4.1.5: 3993 + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 3994 + engines: {node: '>=6'} 3995 + 3384 3996 kysely@0.28.17: 3385 3997 resolution: {integrity: sha512-nbD8lB9EB3wNdMhOCdx5Li8DxnLbvKByylRLcJ1h+4SkrowVeECAyZlyiKMThF7xFdRz0jSQ2MoJr+wXux2y0Q==} 3386 3998 engines: {node: '>=20.0.0'} ··· 3485 4097 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 3486 4098 engines: {node: '>=10'} 3487 4099 4100 + log-symbols@6.0.0: 4101 + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} 4102 + engines: {node: '>=18'} 4103 + 3488 4104 log-symbols@7.0.1: 3489 4105 resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} 3490 4106 engines: {node: '>=18'} ··· 3500 4116 lru-cache@11.3.6: 3501 4117 resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} 3502 4118 engines: {node: 20 || >=22} 4119 + 4120 + lru-cache@5.1.1: 4121 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 3503 4122 3504 4123 lucide-react@1.17.0: 3505 4124 resolution: {integrity: sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w==} ··· 3514 4133 engines: {node: '>= 18'} 3515 4134 hasBin: true 3516 4135 4136 + math-intrinsics@1.1.0: 4137 + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 4138 + engines: {node: '>= 0.4'} 4139 + 3517 4140 mdn-data@2.27.1: 3518 4141 resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} 3519 4142 4143 + media-typer@1.1.0: 4144 + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 4145 + engines: {node: '>= 0.8'} 4146 + 3520 4147 meow@13.2.0: 3521 4148 resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} 3522 4149 engines: {node: '>=18'} 4150 + 4151 + merge-descriptors@2.0.0: 4152 + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 4153 + engines: {node: '>=18'} 4154 + 4155 + merge-stream@2.0.0: 4156 + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 3523 4157 3524 4158 merge2@1.4.1: 3525 4159 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} ··· 3545 4179 resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} 3546 4180 engines: {node: '>=18'} 3547 4181 4182 + mimic-fn@2.1.0: 4183 + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 4184 + engines: {node: '>=6'} 4185 + 3548 4186 mimic-function@5.0.1: 3549 4187 resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 3550 4188 engines: {node: '>=18'} ··· 3569 4207 ms@2.1.3: 3570 4208 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 3571 4209 4210 + msw@2.14.6: 4211 + resolution: {integrity: sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==} 4212 + engines: {node: '>=18'} 4213 + hasBin: true 4214 + peerDependencies: 4215 + typescript: '>= 4.8.x' 4216 + peerDependenciesMeta: 4217 + typescript: 4218 + optional: true 4219 + 4220 + mute-stream@4.0.0: 4221 + resolution: {integrity: sha512-gSrprq0fJ3EiOErzjdIZrjysVVmJ4uu1QWfCDss5LypA5OXvrMje5Ym5z6V6RLyJ2eF87lasX7t6a0AnFvZblg==} 4222 + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} 4223 + 3572 4224 nanoid@3.3.12: 3573 4225 resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} 3574 4226 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} ··· 3583 4235 3584 4236 negotiator@0.6.3: 3585 4237 resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 4238 + engines: {node: '>= 0.6'} 4239 + 4240 + negotiator@1.0.0: 4241 + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 3586 4242 engines: {node: '>= 0.6'} 3587 4243 3588 4244 next-themes@0.4.6: ··· 3612 4268 sass: 3613 4269 optional: true 3614 4270 4271 + node-domexception@1.0.0: 4272 + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 4273 + engines: {node: '>=10.5.0'} 4274 + deprecated: Use your platform's native DOMException instead 4275 + 4276 + node-fetch@3.3.2: 4277 + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 4278 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4279 + 3615 4280 node-forge@1.4.0: 3616 4281 resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} 3617 4282 engines: {node: '>= 6.13.0'} 3618 4283 4284 + node-releases@2.0.46: 4285 + resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==} 4286 + engines: {node: '>=18'} 4287 + 3619 4288 node-rsa@1.1.1: 3620 4289 resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} 3621 4290 ··· 3623 4292 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 3624 4293 engines: {node: '>=0.10.0'} 3625 4294 4295 + npm-run-path@4.0.1: 4296 + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 4297 + engines: {node: '>=8'} 4298 + 4299 + npm-run-path@6.0.0: 4300 + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} 4301 + engines: {node: '>=18'} 4302 + 3626 4303 nypm@0.6.6: 3627 4304 resolution: {integrity: sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q==} 3628 4305 engines: {node: '>=18'} ··· 3632 4309 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 3633 4310 engines: {node: '>=0.10.0'} 3634 4311 4312 + object-inspect@1.13.4: 4313 + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 4314 + engines: {node: '>= 0.4'} 4315 + 4316 + object-treeify@1.1.33: 4317 + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} 4318 + engines: {node: '>= 10'} 4319 + 4320 + on-finished@2.4.1: 4321 + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 4322 + engines: {node: '>= 0.8'} 4323 + 4324 + once@1.4.0: 4325 + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 4326 + 4327 + onetime@5.1.2: 4328 + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 4329 + engines: {node: '>=6'} 4330 + 3635 4331 onetime@7.0.0: 3636 4332 resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 3637 4333 engines: {node: '>=18'} 3638 4334 4335 + open@11.0.0: 4336 + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} 4337 + engines: {node: '>=20'} 4338 + 3639 4339 optionator@0.9.4: 3640 4340 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 3641 4341 engines: {node: '>= 0.8.0'} 4342 + 4343 + ora@8.2.0: 4344 + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} 4345 + engines: {node: '>=18'} 4346 + 4347 + outvariant@1.4.3: 4348 + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} 3642 4349 3643 4350 oxlint@1.63.0: 3644 4351 resolution: {integrity: sha512-9TGXetdjgIHOJ9OiReomP7nnrMkV9HxC1xM2ramJSLQpzxjsAJtQwa4wqkJN2f/uCrqZuJseFuSlWDdvcruveg==} ··· 3669 4376 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 3670 4377 engines: {node: '>=8'} 3671 4378 4379 + parse-ms@4.0.0: 4380 + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 4381 + engines: {node: '>=18'} 4382 + 3672 4383 parseley@0.12.1: 3673 4384 resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} 3674 4385 4386 + parseurl@1.3.3: 4387 + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 4388 + engines: {node: '>= 0.8'} 4389 + 4390 + path-browserify@1.0.1: 4391 + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 4392 + 3675 4393 path-exists@4.0.0: 3676 4394 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 3677 4395 engines: {node: '>=8'} ··· 3684 4402 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3685 4403 engines: {node: '>=8'} 3686 4404 4405 + path-key@4.0.0: 4406 + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 4407 + engines: {node: '>=12'} 4408 + 3687 4409 path-scurry@2.0.2: 3688 4410 resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} 3689 4411 engines: {node: 18 || 20 || >=22} 3690 4412 4413 + path-to-regexp@6.3.0: 4414 + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 4415 + 4416 + path-to-regexp@8.4.2: 4417 + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} 4418 + 3691 4419 pathe@2.0.3: 3692 4420 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 3693 4421 ··· 3709 4437 resolution: {integrity: sha512-lGA1TNsmy2bxvRsTI2cV01kfTwKzZjnZSDmF9llYNyMHMrU4sP87lQ5taiIKm88L3cbswjl008nwyGc3WpNvzg==} 3710 4438 engines: {node: '>=18.0.0'} 3711 4439 4440 + pkce-challenge@5.0.0: 4441 + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} 4442 + engines: {node: '>=16.20.0'} 4443 + 3712 4444 postal-mime@2.7.4: 3713 4445 resolution: {integrity: sha512-0WdnFQYUrPGGTFu1uOqD2s7omwua8xaeYGdO6rb88oD5yJ/4pPHDA4sdWqfD8wQVfCny563n/HQS7zTFft+f/g==} 4446 + 4447 + postcss-selector-parser@7.1.1: 4448 + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} 4449 + engines: {node: '>=4'} 3714 4450 3715 4451 postcss@8.4.31: 3716 4452 resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} ··· 3724 4460 resolution: {integrity: sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw==} 3725 4461 engines: {node: '>=12'} 3726 4462 4463 + powershell-utils@0.1.0: 4464 + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} 4465 + engines: {node: '>=20'} 4466 + 3727 4467 prelude-ls@1.2.1: 3728 4468 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3729 4469 engines: {node: '>= 0.8.0'} ··· 3732 4472 resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} 3733 4473 engines: {node: '>=14'} 3734 4474 hasBin: true 4475 + 4476 + pretty-ms@9.3.0: 4477 + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} 4478 + engines: {node: '>=18'} 3735 4479 3736 4480 prismjs@1.30.0: 3737 4481 resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} ··· 3740 4484 prompts@2.4.2: 3741 4485 resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 3742 4486 engines: {node: '>= 6'} 4487 + 4488 + proxy-addr@2.0.7: 4489 + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 4490 + engines: {node: '>= 0.10'} 3743 4491 3744 4492 punycode@2.3.1: 3745 4493 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} ··· 3752 4500 qrcode-generator@1.5.2: 3753 4501 resolution: {integrity: sha512-pItrW0Z9HnDBnFmgiNrY1uxRdri32Uh9EjNYLPVC2zZ3ZRIIEqBoDgm4DkvDwNNDHTK7FNkmr8zAa77BYc9xNw==} 3754 4502 4503 + qs@6.15.2: 4504 + resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} 4505 + engines: {node: '>=0.6'} 4506 + 3755 4507 queue-microtask@1.2.3: 3756 4508 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3757 4509 ··· 3768 4520 '@types/react-dom': 3769 4521 optional: true 3770 4522 3771 - react-day-picker@9.14.0: 3772 - resolution: {integrity: sha512-tBaoDWjPwe0M5pGrum4H0SR6Lyk+BO9oHnp9JbKpGKW2mlraNPgP9BMfsg5pWpwrssARmeqk7YBl2oXutZTaHA==} 4523 + range-parser@1.2.1: 4524 + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 4525 + engines: {node: '>= 0.6'} 4526 + 4527 + raw-body@3.0.2: 4528 + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} 4529 + engines: {node: '>= 0.10'} 4530 + 4531 + react-day-picker@10.0.1: 4532 + resolution: {integrity: sha512-eNh6BlwcYInWaJtRv18mXQ06Ys/H6rdTZAnTaSdOYJuTpwP1JMCHNd1FDRadA+gbeinq+psdULN5Xnowy9mV8w==} 3773 4533 engines: {node: '>=18'} 3774 4534 peerDependencies: 4535 + '@types/react': '>=16.8.0' 3775 4536 react: '>=16.8.0' 4537 + peerDependenciesMeta: 4538 + '@types/react': 4539 + optional: true 3776 4540 3777 4541 react-dom@18.3.1: 3778 4542 resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} ··· 3795 4559 react-is@16.13.1: 3796 4560 resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 3797 4561 3798 - react-redux@9.2.0: 3799 - resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} 4562 + react-redux@9.3.0: 4563 + resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==} 3800 4564 peerDependencies: 3801 4565 '@types/react': ^18.2.25 || ^19 3802 4566 react: ^18.0 || ^19 ··· 3845 4609 resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 3846 4610 engines: {node: '>= 14.18.0'} 3847 4611 3848 - recharts@3.8.1: 3849 - resolution: {integrity: sha512-mwzmO1s9sFL0TduUpwndxCUNoXsBw3u3E/0+A+cLcrSfQitSG62L32N69GhqUrrT5qKcAE3pCGVINC6pqkBBQg==} 4612 + recast@0.23.11: 4613 + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} 4614 + engines: {node: '>= 4'} 4615 + 4616 + recharts@3.8.0: 4617 + resolution: {integrity: sha512-Z/m38DX3L73ExO4Tpc9/iZWHmHnlzWG4njQbxsF5aSjwqmHNDDIm0rdEBArkwsBvR8U6EirlEHiQNYWCVh9sGQ==} 3850 4618 engines: {node: '>=18'} 3851 4619 peerDependencies: 3852 4620 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 ··· 3872 4640 reselect@5.1.1: 3873 4641 resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} 3874 4642 4643 + reselect@5.2.0: 4644 + resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} 4645 + 3875 4646 resend@6.12.4: 3876 4647 resolution: {integrity: sha512-lRpJ2Hxd+ht+JPDm97juRcUp9HOMuZyxaRFRFmc9Tx8iNWiei94Dx9v6SWufgKk2667C/uCeKKspMotOHSpCSg==} 3877 4648 engines: {node: '>=20'} ··· 3896 4667 resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 3897 4668 engines: {node: '>=18'} 3898 4669 4670 + rettime@0.11.11: 4671 + resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==} 4672 + 3899 4673 reusify@1.1.0: 3900 4674 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 3901 4675 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} ··· 3906 4680 rou3@0.7.12: 3907 4681 resolution: {integrity: sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==} 3908 4682 4683 + router@2.2.0: 4684 + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} 4685 + engines: {node: '>= 18'} 4686 + 4687 + run-applescript@7.1.0: 4688 + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} 4689 + engines: {node: '>=18'} 4690 + 3909 4691 run-parallel@1.2.0: 3910 4692 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3911 4693 ··· 3921 4703 selderee@0.11.0: 3922 4704 resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} 3923 4705 4706 + semver@6.3.1: 4707 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 4708 + hasBin: true 4709 + 3924 4710 semver@7.8.0: 3925 4711 resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} 3926 4712 engines: {node: '>=10'} 3927 4713 hasBin: true 3928 4714 4715 + send@1.2.1: 4716 + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} 4717 + engines: {node: '>= 18'} 4718 + 4719 + serve-static@2.2.1: 4720 + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} 4721 + engines: {node: '>= 18'} 4722 + 3929 4723 set-cookie-parser@3.1.0: 3930 4724 resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} 3931 4725 4726 + setprototypeof@1.2.0: 4727 + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 4728 + 4729 + shadcn@4.8.2: 4730 + resolution: {integrity: sha512-pt3KneOg6LGYKNAdoTVf/lpVcf7t2MlV+Ll2Xc3lIIYN3ph4ajrjU+CcG6OVSgO5ubbLZj+9j5oMA9Lqg7o8KA==} 4731 + hasBin: true 4732 + 3932 4733 sharp@0.34.5: 3933 4734 resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} 3934 4735 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} ··· 3940 4741 shebang-regex@3.0.0: 3941 4742 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3942 4743 engines: {node: '>=8'} 4744 + 4745 + side-channel-list@1.0.1: 4746 + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} 4747 + engines: {node: '>= 0.4'} 4748 + 4749 + side-channel-map@1.0.1: 4750 + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 4751 + engines: {node: '>= 0.4'} 4752 + 4753 + side-channel-weakmap@1.0.2: 4754 + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 4755 + engines: {node: '>= 0.4'} 4756 + 4757 + side-channel@1.1.0: 4758 + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 4759 + engines: {node: '>= 0.4'} 4760 + 4761 + signal-exit@3.0.7: 4762 + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 3943 4763 3944 4764 signal-exit@4.1.0: 3945 4765 resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} ··· 3987 4807 standardwebhooks@1.0.0: 3988 4808 resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} 3989 4809 4810 + statuses@2.0.2: 4811 + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} 4812 + engines: {node: '>= 0.8'} 4813 + 4814 + stdin-discarder@0.2.2: 4815 + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} 4816 + engines: {node: '>=18'} 4817 + 4818 + strict-event-emitter@0.5.1: 4819 + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} 4820 + 3990 4821 string-argv@0.3.2: 3991 4822 resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 3992 4823 engines: {node: '>=0.6.19'} ··· 4003 4834 resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} 4004 4835 engines: {node: '>=20'} 4005 4836 4837 + stringify-object@5.0.0: 4838 + resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==} 4839 + engines: {node: '>=14.16'} 4840 + 4006 4841 strip-ansi@6.0.1: 4007 4842 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 4008 4843 engines: {node: '>=8'} ··· 4015 4850 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 4016 4851 engines: {node: '>=4'} 4017 4852 4853 + strip-final-newline@2.0.0: 4854 + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 4855 + engines: {node: '>=6'} 4856 + 4857 + strip-final-newline@4.0.0: 4858 + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} 4859 + engines: {node: '>=18'} 4860 + 4018 4861 strnum@2.3.0: 4019 4862 resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==} 4020 4863 ··· 4065 4908 tldts-core@6.1.0: 4066 4909 resolution: {integrity: sha512-kWIs6ECYvpsHXmVezsbU2ZmaPZld6bArFUM2HS/Pz1o1pRCu/y8w6n02IfiefUA5NarwJ7sCjwsrKGtpztXYZQ==} 4067 4910 4911 + tldts-core@7.4.1: 4912 + resolution: {integrity: sha512-sc2nGvGbixlJRHwTh/qQdPXTxJU1UDJboGPQm4d/01YUJ9r/u6aeIulQvEaxUlvKDN7hb1qCLjax+jhVAPLa/g==} 4913 + 4068 4914 tldts@6.1.0: 4069 4915 resolution: {integrity: sha512-9eh9oPefds2M+Trcgpa4gLaHtckcmfgHsNwQKE4kfiy6ApJrt4Thko2CXQ9s3K1o0rQtJOLmV0UfFLhC9CAN3w==} 4916 + hasBin: true 4917 + 4918 + tldts@7.4.0: 4919 + resolution: {integrity: sha512-yHBe+zVfzNZ3QfTPW/Z6KK1G2t340gFjMHqI/4KKSt/abzYydzuCnpqdaF5gCCABby+9Yfbj59oR5F2Fd5CBzg==} 4070 4920 hasBin: true 4071 4921 4072 4922 to-regex-range@5.0.1: 4073 4923 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 4074 4924 engines: {node: '>=8.0'} 4075 4925 4926 + toidentifier@1.0.1: 4927 + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 4928 + engines: {node: '>=0.6'} 4929 + 4930 + tough-cookie@6.0.1: 4931 + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} 4932 + engines: {node: '>=16'} 4933 + 4076 4934 ts-api-utils@2.5.0: 4077 4935 resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} 4078 4936 engines: {node: '>=18.12'} 4079 4937 peerDependencies: 4080 4938 typescript: '>=4.8.4' 4939 + 4940 + ts-morph@26.0.0: 4941 + resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} 4081 4942 4082 4943 tsconfig-paths@4.2.0: 4083 4944 resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} ··· 4102 4963 resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} 4103 4964 engines: {node: '>=20'} 4104 4965 4966 + type-is@2.1.0: 4967 + resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} 4968 + engines: {node: '>= 18'} 4969 + 4105 4970 typescript-eslint@8.59.2: 4106 4971 resolution: {integrity: sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==} 4107 4972 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ··· 4121 4986 undici-types@7.19.2: 4122 4987 resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} 4123 4988 4989 + unicorn-magic@0.3.0: 4990 + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} 4991 + engines: {node: '>=18'} 4992 + 4993 + universalify@2.0.1: 4994 + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 4995 + engines: {node: '>= 10.0.0'} 4996 + 4997 + unpipe@1.0.0: 4998 + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 4999 + engines: {node: '>= 0.8'} 5000 + 5001 + until-async@3.0.2: 5002 + resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==} 5003 + 5004 + update-browserslist-db@1.2.3: 5005 + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} 5006 + hasBin: true 5007 + peerDependencies: 5008 + browserslist: '>= 4.21.0' 5009 + 4124 5010 uri-js@4.4.1: 4125 5011 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 4126 5012 ··· 4149 5035 peerDependencies: 4150 5036 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 4151 5037 5038 + util-deprecate@1.0.2: 5039 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 5040 + 4152 5041 uuid@8.3.2: 4153 5042 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 4154 5043 hasBin: true 4155 5044 5045 + validate-npm-package-name@7.0.2: 5046 + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} 5047 + engines: {node: ^20.17.0 || >=22.9.0} 5048 + 4156 5049 vary@1.1.2: 4157 5050 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 4158 5051 engines: {node: '>= 0.8'} ··· 4160 5053 victory-vendor@37.3.6: 4161 5054 resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} 4162 5055 5056 + web-streams-polyfill@3.0.3: 5057 + resolution: {integrity: sha512-d2H/t0eqRNM4w2WvmTdoeIvzAUSpK7JmATB8Nr2lb7nQ9BTIJVjbQ/TRFVEh2gUH1HwclPdoPtfMoFfetXaZnA==} 5058 + engines: {node: '>= 8'} 5059 + 4163 5060 when-exit@2.1.5: 4164 5061 resolution: {integrity: sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==} 4165 5062 ··· 4168 5065 engines: {node: '>= 8'} 4169 5066 hasBin: true 4170 5067 5068 + which@4.0.0: 5069 + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} 5070 + engines: {node: ^16.13.0 || >=18.0.0} 5071 + hasBin: true 5072 + 4171 5073 word-wrap@1.2.5: 4172 5074 resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 4173 5075 engines: {node: '>=0.10.0'} ··· 4184 5086 resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} 4185 5087 engines: {node: '>=18'} 4186 5088 5089 + wrappy@1.0.2: 5090 + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 5091 + 4187 5092 ws@8.18.3: 4188 5093 resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} 4189 5094 engines: {node: '>=10.0.0'} ··· 4196 5101 utf-8-validate: 4197 5102 optional: true 4198 5103 5104 + wsl-utils@0.3.1: 5105 + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} 5106 + engines: {node: '>=20'} 5107 + 4199 5108 xml-crypto@6.1.2: 4200 5109 resolution: {integrity: sha512-leBOVQdVi8FvPJrMYoum7Ici9qyxfE4kVi+AkpUoYCSXaQF4IlBm1cneTK9oAxR61LpYxTx7lNcsnBIeRpGW2w==} 4201 5110 engines: {node: '>=16'} ··· 4222 5131 resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 4223 5132 engines: {node: '>=10'} 4224 5133 5134 + yallist@3.1.1: 5135 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 5136 + 4225 5137 yaml@2.8.4: 4226 5138 resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==} 4227 5139 engines: {node: '>= 14.6'} ··· 4239 5151 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 4240 5152 engines: {node: '>=10'} 4241 5153 5154 + yocto-spinner@1.2.0: 5155 + resolution: {integrity: sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==} 5156 + engines: {node: '>=18.19'} 5157 + 4242 5158 yoctocolors@2.1.2: 4243 5159 resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} 4244 5160 engines: {node: '>=18'} 4245 5161 5162 + zod-to-json-schema@3.25.2: 5163 + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} 5164 + peerDependencies: 5165 + zod: ^3.25.28 || ^4 5166 + 5167 + zod@3.24.1: 5168 + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} 5169 + 4246 5170 zod@4.4.3: 4247 5171 resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} 4248 5172 ··· 4280 5204 js-tokens: 4.0.0 4281 5205 picocolors: 1.1.1 4282 5206 5207 + '@babel/code-frame@7.29.7': 5208 + dependencies: 5209 + '@babel/helper-validator-identifier': 7.29.7 5210 + js-tokens: 4.0.0 5211 + picocolors: 1.1.1 5212 + 5213 + '@babel/compat-data@7.29.7': {} 5214 + 5215 + '@babel/core@7.29.7': 5216 + dependencies: 5217 + '@babel/code-frame': 7.29.7 5218 + '@babel/generator': 7.29.7 5219 + '@babel/helper-compilation-targets': 7.29.7 5220 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) 5221 + '@babel/helpers': 7.29.7 5222 + '@babel/parser': 7.29.7 5223 + '@babel/template': 7.29.7 5224 + '@babel/traverse': 7.29.7 5225 + '@babel/types': 7.29.7 5226 + '@jridgewell/remapping': 2.3.5 5227 + convert-source-map: 2.0.0 5228 + debug: 4.4.3 5229 + gensync: 1.0.0-beta.2 5230 + json5: 2.2.3 5231 + semver: 6.3.1 5232 + transitivePeerDependencies: 5233 + - supports-color 5234 + 4283 5235 '@babel/generator@7.29.1': 4284 5236 dependencies: 4285 5237 '@babel/parser': 7.29.3 ··· 4288 5240 '@jridgewell/trace-mapping': 0.3.31 4289 5241 jsesc: 3.1.0 4290 5242 5243 + '@babel/generator@7.29.7': 5244 + dependencies: 5245 + '@babel/parser': 7.29.7 5246 + '@babel/types': 7.29.7 5247 + '@jridgewell/gen-mapping': 0.3.13 5248 + '@jridgewell/trace-mapping': 0.3.31 5249 + jsesc: 3.1.0 5250 + 5251 + '@babel/helper-annotate-as-pure@7.29.7': 5252 + dependencies: 5253 + '@babel/types': 7.29.7 5254 + 5255 + '@babel/helper-compilation-targets@7.29.7': 5256 + dependencies: 5257 + '@babel/compat-data': 7.29.7 5258 + '@babel/helper-validator-option': 7.29.7 5259 + browserslist: 4.28.2 5260 + lru-cache: 5.1.1 5261 + semver: 6.3.1 5262 + 5263 + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': 5264 + dependencies: 5265 + '@babel/core': 7.29.7 5266 + '@babel/helper-annotate-as-pure': 7.29.7 5267 + '@babel/helper-member-expression-to-functions': 7.29.7 5268 + '@babel/helper-optimise-call-expression': 7.29.7 5269 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) 5270 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 5271 + '@babel/traverse': 7.29.7 5272 + semver: 6.3.1 5273 + transitivePeerDependencies: 5274 + - supports-color 5275 + 5276 + '@babel/helper-globals@7.29.7': {} 5277 + 5278 + '@babel/helper-member-expression-to-functions@7.29.7': 5279 + dependencies: 5280 + '@babel/traverse': 7.29.7 5281 + '@babel/types': 7.29.7 5282 + transitivePeerDependencies: 5283 + - supports-color 5284 + 5285 + '@babel/helper-module-imports@7.29.7': 5286 + dependencies: 5287 + '@babel/traverse': 7.29.7 5288 + '@babel/types': 7.29.7 5289 + transitivePeerDependencies: 5290 + - supports-color 5291 + 5292 + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': 5293 + dependencies: 5294 + '@babel/core': 7.29.7 5295 + '@babel/helper-module-imports': 7.29.7 5296 + '@babel/helper-validator-identifier': 7.29.7 5297 + '@babel/traverse': 7.29.7 5298 + transitivePeerDependencies: 5299 + - supports-color 5300 + 5301 + '@babel/helper-optimise-call-expression@7.29.7': 5302 + dependencies: 5303 + '@babel/types': 7.29.7 5304 + 5305 + '@babel/helper-plugin-utils@7.29.7': {} 5306 + 5307 + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': 5308 + dependencies: 5309 + '@babel/core': 7.29.7 5310 + '@babel/helper-member-expression-to-functions': 7.29.7 5311 + '@babel/helper-optimise-call-expression': 7.29.7 5312 + '@babel/traverse': 7.29.7 5313 + transitivePeerDependencies: 5314 + - supports-color 5315 + 5316 + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': 5317 + dependencies: 5318 + '@babel/traverse': 7.29.7 5319 + '@babel/types': 7.29.7 5320 + transitivePeerDependencies: 5321 + - supports-color 5322 + 4291 5323 '@babel/helper-string-parser@7.29.7': {} 4292 5324 4293 5325 '@babel/helper-validator-identifier@7.28.5': {} 4294 5326 4295 5327 '@babel/helper-validator-identifier@7.29.7': {} 4296 5328 5329 + '@babel/helper-validator-option@7.29.7': {} 5330 + 5331 + '@babel/helpers@7.29.7': 5332 + dependencies: 5333 + '@babel/template': 7.29.7 5334 + '@babel/types': 7.29.7 5335 + 4297 5336 '@babel/parser@7.27.0': 4298 5337 dependencies: 4299 5338 '@babel/types': 7.29.0 ··· 4302 5341 dependencies: 4303 5342 '@babel/types': 7.29.0 4304 5343 5344 + '@babel/parser@7.29.7': 5345 + dependencies: 5346 + '@babel/types': 7.29.7 5347 + 5348 + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': 5349 + dependencies: 5350 + '@babel/core': 7.29.7 5351 + '@babel/helper-plugin-utils': 7.29.7 5352 + 5353 + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': 5354 + dependencies: 5355 + '@babel/core': 7.29.7 5356 + '@babel/helper-plugin-utils': 7.29.7 5357 + 5358 + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': 5359 + dependencies: 5360 + '@babel/core': 7.29.7 5361 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) 5362 + '@babel/helper-plugin-utils': 7.29.7 5363 + transitivePeerDependencies: 5364 + - supports-color 5365 + 5366 + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': 5367 + dependencies: 5368 + '@babel/core': 7.29.7 5369 + '@babel/helper-annotate-as-pure': 7.29.7 5370 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) 5371 + '@babel/helper-plugin-utils': 7.29.7 5372 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 5373 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) 5374 + transitivePeerDependencies: 5375 + - supports-color 5376 + 5377 + '@babel/preset-typescript@7.29.7(@babel/core@7.29.7)': 5378 + dependencies: 5379 + '@babel/core': 7.29.7 5380 + '@babel/helper-plugin-utils': 7.29.7 5381 + '@babel/helper-validator-option': 7.29.7 5382 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) 5383 + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) 5384 + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) 5385 + transitivePeerDependencies: 5386 + - supports-color 5387 + 4305 5388 '@babel/template@7.28.6': 4306 5389 dependencies: 4307 5390 '@babel/code-frame': 7.29.0 4308 5391 '@babel/parser': 7.29.3 4309 5392 '@babel/types': 7.29.0 4310 5393 5394 + '@babel/template@7.29.7': 5395 + dependencies: 5396 + '@babel/code-frame': 7.29.7 5397 + '@babel/parser': 7.29.7 5398 + '@babel/types': 7.29.7 5399 + 4311 5400 '@babel/traverse@7.27.0': 4312 5401 dependencies: 4313 5402 '@babel/code-frame': 7.29.0 ··· 4320 5409 transitivePeerDependencies: 4321 5410 - supports-color 4322 5411 5412 + '@babel/traverse@7.29.7': 5413 + dependencies: 5414 + '@babel/code-frame': 7.29.7 5415 + '@babel/generator': 7.29.7 5416 + '@babel/helper-globals': 7.29.7 5417 + '@babel/parser': 7.29.7 5418 + '@babel/template': 7.29.7 5419 + '@babel/types': 7.29.7 5420 + debug: 4.4.3 5421 + transitivePeerDependencies: 5422 + - supports-color 5423 + 4323 5424 '@babel/types@7.29.0': 5425 + dependencies: 5426 + '@babel/helper-string-parser': 7.29.7 5427 + '@babel/helper-validator-identifier': 7.29.7 5428 + 5429 + '@babel/types@7.29.7': 4324 5430 dependencies: 4325 5431 '@babel/helper-string-parser': 7.29.7 4326 5432 '@babel/helper-validator-identifier': 7.29.7 ··· 4344 5450 optionalDependencies: 4345 5451 drizzle-orm: 0.45.2(kysely@0.28.17)(postgres@3.4.9) 4346 5452 4347 - '@better-auth/infra@0.2.8(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/sso@1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3)))(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(zod@4.4.3)': 5453 + '@better-auth/infra@0.2.8(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/sso@1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3)))(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(zod@4.4.3)': 4348 5454 dependencies: 4349 5455 '@better-auth/core': 1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0) 4350 - '@better-auth/sso': 1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3)) 5456 + '@better-auth/sso': 1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3)) 4351 5457 '@better-fetch/fetch': 1.1.21 4352 - better-auth: 1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 5458 + better-auth: 1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 4353 5459 better-call: 1.3.5(zod@4.4.3) 4354 5460 jose: 6.2.3 4355 5461 libphonenumber-js: 1.13.1 ··· 4377 5483 '@better-auth/core': 1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0) 4378 5484 '@better-auth/utils': 0.4.0 4379 5485 4380 - '@better-auth/sso@1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3))': 5486 + '@better-auth/sso@1.6.9(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(better-call@1.3.5(zod@4.4.3))': 4381 5487 dependencies: 4382 5488 '@better-auth/core': 1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0) 4383 5489 '@better-auth/utils': 0.4.0 4384 5490 '@better-fetch/fetch': 1.1.21 4385 - better-auth: 1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 5491 + better-auth: 1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 4386 5492 better-call: 1.3.5(zod@4.4.3) 4387 5493 fast-xml-parser: 5.8.0 4388 5494 jose: 6.2.3 ··· 4520 5626 optionalDependencies: 4521 5627 conventional-commits-parser: 6.4.0 4522 5628 4523 - '@date-fns/tz@1.4.1': {} 5629 + '@date-fns/tz@1.5.0': {} 5630 + 5631 + '@dotenvx/dotenvx@1.69.1': 5632 + dependencies: 5633 + commander: 11.1.0 5634 + dotenv: 17.4.2 5635 + eciesjs: 0.4.18 5636 + enquirer: 2.4.1 5637 + execa: 5.1.1 5638 + fdir: 6.5.0(picomatch@4.0.4) 5639 + ignore: 5.3.2 5640 + object-treeify: 1.1.33 5641 + picomatch: 4.0.4 5642 + which: 4.0.0 5643 + yocto-spinner: 1.2.0 4524 5644 4525 5645 '@drizzle-team/brocli@0.10.2': {} 5646 + 5647 + '@ecies/ciphers@0.2.6(@noble/ciphers@1.3.0)': 5648 + dependencies: 5649 + '@noble/ciphers': 1.3.0 4526 5650 4527 5651 '@emnapi/runtime@1.10.0': 4528 5652 dependencies: ··· 4890 6014 4891 6015 '@floating-ui/utils@0.2.11': {} 4892 6016 6017 + '@hono/node-server@1.19.14(hono@4.12.23)': 6018 + dependencies: 6019 + hono: 4.12.23 6020 + 4893 6021 '@humanfs/core@0.19.2': 4894 6022 dependencies: 4895 6023 '@humanfs/types': 0.15.0 ··· 5003 6131 '@img/sharp-win32-x64@0.34.5': 5004 6132 optional: true 5005 6133 6134 + '@inquirer/ansi@2.0.6': {} 6135 + 6136 + '@inquirer/confirm@6.1.0(@types/node@25.6.0)': 6137 + dependencies: 6138 + '@inquirer/core': 11.2.0(@types/node@25.6.0) 6139 + '@inquirer/type': 4.0.6(@types/node@25.6.0) 6140 + optionalDependencies: 6141 + '@types/node': 25.6.0 6142 + 6143 + '@inquirer/core@11.2.0(@types/node@25.6.0)': 6144 + dependencies: 6145 + '@inquirer/ansi': 2.0.6 6146 + '@inquirer/figures': 2.0.6 6147 + '@inquirer/type': 4.0.6(@types/node@25.6.0) 6148 + cli-width: 4.1.0 6149 + fast-wrap-ansi: 0.2.2 6150 + mute-stream: 4.0.0 6151 + signal-exit: 4.1.0 6152 + optionalDependencies: 6153 + '@types/node': 25.6.0 6154 + 6155 + '@inquirer/figures@2.0.6': {} 6156 + 6157 + '@inquirer/type@4.0.6(@types/node@25.6.0)': 6158 + optionalDependencies: 6159 + '@types/node': 25.6.0 6160 + 5006 6161 '@jridgewell/gen-mapping@0.3.13': 5007 6162 dependencies: 5008 6163 '@jridgewell/sourcemap-codec': 1.5.5 ··· 5027 6182 react: 18.3.1 5028 6183 react-dom: 18.3.1(react@18.3.1) 5029 6184 6185 + '@modelcontextprotocol/sdk@1.29.0(zod@3.24.1)': 6186 + dependencies: 6187 + '@hono/node-server': 1.19.14(hono@4.12.23) 6188 + ajv: 8.20.0 6189 + ajv-formats: 3.0.1(ajv@8.20.0) 6190 + content-type: 1.0.5 6191 + cors: 2.8.6 6192 + cross-spawn: 7.0.6 6193 + eventsource: 3.0.7 6194 + eventsource-parser: 3.1.0 6195 + express: 5.2.1 6196 + express-rate-limit: 8.5.2(express@5.2.1) 6197 + hono: 4.12.23 6198 + jose: 6.2.3 6199 + json-schema-typed: 8.0.2 6200 + pkce-challenge: 5.0.0 6201 + raw-body: 3.0.2 6202 + zod: 3.24.1 6203 + zod-to-json-schema: 3.25.2(zod@3.24.1) 6204 + transitivePeerDependencies: 6205 + - supports-color 6206 + 6207 + '@mswjs/interceptors@0.41.9': 6208 + dependencies: 6209 + '@open-draft/deferred-promise': 2.2.0 6210 + '@open-draft/logger': 0.3.0 6211 + '@open-draft/until': 2.1.0 6212 + is-node-process: 1.2.0 6213 + outvariant: 1.4.3 6214 + strict-event-emitter: 0.5.1 6215 + 5030 6216 '@next/env@16.2.6': {} 5031 6217 5032 6218 '@next/eslint-plugin-next@16.2.6': ··· 5057 6243 '@next/swc-win32-x64-msvc@16.2.6': 5058 6244 optional: true 5059 6245 6246 + '@noble/ciphers@1.3.0': {} 6247 + 5060 6248 '@noble/ciphers@2.2.0': {} 6249 + 6250 + '@noble/curves@1.9.7': 6251 + dependencies: 6252 + '@noble/hashes': 1.8.0 6253 + 6254 + '@noble/hashes@1.8.0': {} 5061 6255 5062 6256 '@noble/hashes@2.2.0': {} 5063 6257 ··· 5074 6268 dependencies: 5075 6269 '@nodelib/fs.scandir': 2.1.5 5076 6270 fastq: 1.20.1 6271 + 6272 + '@open-draft/deferred-promise@2.2.0': {} 6273 + 6274 + '@open-draft/deferred-promise@3.0.0': {} 6275 + 6276 + '@open-draft/logger@0.3.0': 6277 + dependencies: 6278 + is-node-process: 1.2.0 6279 + outvariant: 1.4.3 6280 + 6281 + '@open-draft/until@2.1.0': {} 5077 6282 5078 6283 '@opentelemetry/semantic-conventions@1.40.0': {} 5079 6284 ··· 5895 7100 react: 18.3.1 5896 7101 react-dom: 18.3.1(react@18.3.1) 5897 7102 5898 - '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1))(react@18.3.1)': 7103 + '@reduxjs/toolkit@2.11.2(react-redux@9.3.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1))(react@18.3.1)': 5899 7104 dependencies: 5900 7105 '@standard-schema/spec': 1.1.0 5901 7106 '@standard-schema/utils': 0.3.0 5902 7107 immer: 11.1.8 5903 7108 redux: 5.0.1 5904 7109 redux-thunk: 3.1.0(redux@5.0.1) 5905 - reselect: 5.1.1 7110 + reselect: 5.2.0 5906 7111 optionalDependencies: 5907 7112 react: 18.3.1 5908 - react-redux: 9.2.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1) 7113 + react-redux: 9.3.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1) 7114 + 7115 + '@sec-ant/readable-stream@0.4.1': {} 5909 7116 5910 7117 '@selderee/plugin-htmlparser2@0.11.0': 5911 7118 dependencies: ··· 5918 7125 5919 7126 '@simple-libs/stream-utils@1.2.0': {} 5920 7127 7128 + '@sindresorhus/merge-streams@4.0.0': {} 7129 + 5921 7130 '@socket.io/component-emitter@3.1.2': {} 5922 7131 5923 7132 '@stablelib/base64@1.0.1': {} ··· 5929 7138 '@swc/helpers@0.5.15': 5930 7139 dependencies: 5931 7140 tslib: 2.8.1 5932 - 5933 - '@tabby_ai/hijri-converter@1.0.5': {} 5934 7141 5935 7142 '@tailwindcss/node@4.3.0': 5936 7143 dependencies: ··· 6001 7208 postcss: 8.5.14 6002 7209 tailwindcss: 4.3.0 6003 7210 7211 + '@ts-morph/common@0.27.0': 7212 + dependencies: 7213 + fast-glob: 3.3.3 7214 + minimatch: 10.2.5 7215 + path-browserify: 1.0.1 7216 + 6004 7217 '@types/cors@2.8.19': 6005 7218 dependencies: 6006 7219 '@types/node': 25.6.0 ··· 6047 7260 dependencies: 6048 7261 csstype: 3.2.3 6049 7262 7263 + '@types/set-cookie-parser@2.4.10': 7264 + dependencies: 7265 + '@types/node': 25.6.0 7266 + 7267 + '@types/statuses@2.0.6': {} 7268 + 6050 7269 '@types/use-sync-external-store@0.0.6': {} 7270 + 7271 + '@types/validate-npm-package-name@4.0.2': {} 6051 7272 6052 7273 '@types/ws@8.18.1': 6053 7274 dependencies: ··· 6153 7374 mime-types: 2.1.35 6154 7375 negotiator: 0.6.3 6155 7376 7377 + accepts@2.0.0: 7378 + dependencies: 7379 + mime-types: 3.0.2 7380 + negotiator: 1.0.0 7381 + 6156 7382 acorn-jsx@5.3.2(acorn@8.16.0): 6157 7383 dependencies: 6158 7384 acorn: 8.16.0 6159 7385 6160 7386 acorn@8.16.0: {} 7387 + 7388 + agent-base@7.1.2: 7389 + dependencies: 7390 + debug: 4.4.3 7391 + transitivePeerDependencies: 7392 + - supports-color 6161 7393 6162 7394 ajv-formats@3.0.1(ajv@8.20.0): 6163 7395 optionalDependencies: ··· 6177 7409 json-schema-traverse: 1.0.0 6178 7410 require-from-string: 2.0.2 6179 7411 7412 + ansi-colors@4.1.3: {} 7413 + 6180 7414 ansi-escapes@7.3.0: 6181 7415 dependencies: 6182 7416 environment: 1.1.0 ··· 6203 7437 dependencies: 6204 7438 safer-buffer: 2.1.2 6205 7439 7440 + ast-types@0.16.1: 7441 + dependencies: 7442 + tslib: 2.8.1 7443 + 6206 7444 atomically@2.1.1: 6207 7445 dependencies: 6208 7446 stubborn-fs: 2.0.0 ··· 6216 7454 6217 7455 bcryptjs@3.0.3: {} 6218 7456 6219 - better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 7457 + better-auth@1.6.11(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9))(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 6220 7458 dependencies: 6221 7459 '@better-auth/core': 1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0) 6222 7460 '@better-auth/drizzle-adapter': 1.6.11(@better-auth/core@1.6.11(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.28.17)(nanostores@1.3.0))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(kysely@0.28.17)(postgres@3.4.9)) ··· 6238 7476 optionalDependencies: 6239 7477 drizzle-kit: 0.31.10 6240 7478 drizzle-orm: 0.45.2(kysely@0.28.17)(postgres@3.4.9) 6241 - next: 16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 7479 + next: 16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 6242 7480 react: 18.3.1 6243 7481 react-dom: 18.3.1(react@18.3.1) 6244 7482 transitivePeerDependencies: ··· 6254 7492 optionalDependencies: 6255 7493 zod: 4.4.3 6256 7494 7495 + body-parser@2.2.2: 7496 + dependencies: 7497 + bytes: 3.1.2 7498 + content-type: 1.0.5 7499 + debug: 4.4.3 7500 + http-errors: 2.0.1 7501 + iconv-lite: 0.7.2 7502 + on-finished: 2.4.1 7503 + qs: 6.15.2 7504 + raw-body: 3.0.2 7505 + type-is: 2.1.0 7506 + transitivePeerDependencies: 7507 + - supports-color 7508 + 6257 7509 brace-expansion@5.0.6: 6258 7510 dependencies: 6259 7511 balanced-match: 4.0.4 ··· 6262 7514 dependencies: 6263 7515 fill-range: 7.1.1 6264 7516 7517 + browserslist@4.28.2: 7518 + dependencies: 7519 + baseline-browser-mapping: 2.10.28 7520 + caniuse-lite: 1.0.30001792 7521 + electron-to-chromium: 1.5.363 7522 + node-releases: 2.0.46 7523 + update-browserslist-db: 1.2.3(browserslist@4.28.2) 7524 + 6265 7525 buffer-from@1.1.2: {} 6266 7526 7527 + bundle-name@4.1.0: 7528 + dependencies: 7529 + run-applescript: 7.1.0 7530 + 7531 + bytes@3.1.2: {} 7532 + 7533 + call-bind-apply-helpers@1.0.2: 7534 + dependencies: 7535 + es-errors: 1.3.0 7536 + function-bind: 1.1.2 7537 + 7538 + call-bound@1.0.4: 7539 + dependencies: 7540 + call-bind-apply-helpers: 1.0.2 7541 + get-intrinsic: 1.3.0 7542 + 6267 7543 callsites@3.1.0: {} 6268 7544 6269 7545 camelcase@6.3.0: {} 6270 7546 6271 7547 caniuse-lite@1.0.30001792: {} 6272 7548 7549 + chalk@5.6.2: {} 7550 + 6273 7551 chokidar@4.0.3: 6274 7552 dependencies: 6275 7553 readdirp: 4.1.2 ··· 6284 7562 dependencies: 6285 7563 restore-cursor: 5.1.0 6286 7564 7565 + cli-spinners@2.9.2: {} 7566 + 6287 7567 cli-truncate@5.2.0: 6288 7568 dependencies: 6289 7569 slice-ansi: 8.0.0 6290 7570 string-width: 8.2.1 6291 7571 7572 + cli-width@4.1.0: {} 7573 + 6292 7574 client-only@0.0.1: {} 6293 7575 6294 7576 cliui@8.0.1: ··· 6299 7581 6300 7582 clsx@2.1.1: {} 6301 7583 7584 + code-block-writer@13.0.3: {} 7585 + 6302 7586 color-convert@2.0.1: 6303 7587 dependencies: 6304 7588 color-name: 1.1.4 6305 7589 6306 7590 color-name@1.1.4: {} 6307 7591 7592 + commander@11.1.0: {} 7593 + 6308 7594 commander@13.1.0: {} 7595 + 7596 + commander@14.0.3: {} 6309 7597 6310 7598 compare-func@2.0.0: 6311 7599 dependencies: ··· 6323 7611 json-schema-typed: 8.0.2 6324 7612 semver: 7.8.0 6325 7613 uint8array-extras: 1.5.0 7614 + 7615 + content-disposition@1.1.0: {} 7616 + 7617 + content-type@1.0.5: {} 7618 + 7619 + content-type@2.0.0: {} 6326 7620 6327 7621 conventional-changelog-angular@8.3.1: 6328 7622 dependencies: ··· 6337 7631 '@simple-libs/stream-utils': 1.2.0 6338 7632 meow: 13.2.0 6339 7633 7634 + convert-source-map@2.0.0: {} 7635 + 7636 + cookie-signature@1.2.2: {} 7637 + 6340 7638 cookie@0.7.2: {} 7639 + 7640 + cookie@1.1.1: {} 6341 7641 6342 7642 cors@2.8.6: 6343 7643 dependencies: ··· 6370 7670 dependencies: 6371 7671 mdn-data: 2.27.1 6372 7672 source-map-js: 1.2.1 7673 + 7674 + cssesc@3.0.0: {} 6373 7675 6374 7676 csstype@3.2.3: {} 6375 7677 ··· 6411 7713 6412 7714 d3-timer@3.0.1: {} 6413 7715 6414 - date-fns-jalali@4.1.0-0: {} 6415 - 6416 - date-fns@4.1.0: {} 7716 + data-uri-to-buffer@4.0.0: {} 6417 7717 6418 7718 date-fns@4.3.0: {} 6419 7719 ··· 6429 7729 6430 7730 decimal.js-light@2.5.1: {} 6431 7731 7732 + dedent@1.7.2: {} 7733 + 6432 7734 deep-is@0.1.4: {} 6433 7735 6434 7736 deepmerge@4.3.1: {} 6435 7737 7738 + default-browser-id@5.0.1: {} 7739 + 7740 + default-browser@5.5.0: 7741 + dependencies: 7742 + bundle-name: 4.1.0 7743 + default-browser-id: 5.0.1 7744 + 7745 + define-lazy-prop@3.0.0: {} 7746 + 6436 7747 defu@6.1.7: {} 6437 7748 7749 + depd@2.0.0: {} 7750 + 6438 7751 detect-libc@2.1.2: {} 6439 7752 6440 7753 detect-node-es@1.1.0: {} 7754 + 7755 + diff@8.0.4: {} 6441 7756 6442 7757 dom-serializer@2.0.0: 6443 7758 dependencies: ··· 6465 7780 dependencies: 6466 7781 is-obj: 2.0.0 6467 7782 7783 + dotenv@17.4.2: {} 7784 + 6468 7785 drizzle-kit@0.31.10: 6469 7786 dependencies: 6470 7787 '@drizzle-team/brocli': 0.10.2 ··· 6477 7794 kysely: 0.28.17 6478 7795 postgres: 3.4.9 6479 7796 7797 + dunder-proto@1.0.1: 7798 + dependencies: 7799 + call-bind-apply-helpers: 1.0.2 7800 + es-errors: 1.3.0 7801 + gopd: 1.2.0 7802 + 7803 + eciesjs@0.4.18: 7804 + dependencies: 7805 + '@ecies/ciphers': 0.2.6(@noble/ciphers@1.3.0) 7806 + '@noble/ciphers': 1.3.0 7807 + '@noble/curves': 1.9.7 7808 + '@noble/hashes': 1.8.0 7809 + 7810 + ee-first@1.1.1: {} 7811 + 7812 + electron-to-chromium@1.5.363: {} 7813 + 6480 7814 emoji-regex@10.6.0: {} 6481 7815 6482 7816 emoji-regex@8.0.0: {} 7817 + 7818 + encodeurl@2.0.0: {} 6483 7819 6484 7820 engine.io-parser@5.2.3: {} 6485 7821 ··· 6505 7841 graceful-fs: 4.2.11 6506 7842 tapable: 2.3.3 6507 7843 7844 + enquirer@2.4.1: 7845 + dependencies: 7846 + ansi-colors: 4.1.3 7847 + strip-ansi: 6.0.1 7848 + 6508 7849 entities@4.5.0: {} 6509 7850 6510 7851 env-paths@2.2.1: {} ··· 6517 7858 dependencies: 6518 7859 is-arrayish: 0.2.1 6519 7860 7861 + es-define-property@1.0.1: {} 7862 + 7863 + es-errors@1.3.0: {} 7864 + 7865 + es-object-atoms@1.1.2: 7866 + dependencies: 7867 + es-errors: 1.3.0 7868 + 6520 7869 es-toolkit@1.46.1: {} 6521 7870 6522 7871 esbuild@0.18.20: ··· 6702 8051 acorn-jsx: 5.3.2(acorn@8.16.0) 6703 8052 eslint-visitor-keys: 5.0.1 6704 8053 8054 + esprima@4.0.1: {} 8055 + 6705 8056 esquery@1.7.0: 6706 8057 dependencies: 6707 8058 estraverse: 5.3.0 ··· 6714 8065 6715 8066 esutils@2.0.3: {} 6716 8067 8068 + etag@1.8.1: {} 8069 + 6717 8070 eventemitter3@5.0.4: {} 6718 8071 6719 - evlog@2.18.1(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): 8072 + eventsource-parser@3.1.0: {} 8073 + 8074 + eventsource@3.0.7: 8075 + dependencies: 8076 + eventsource-parser: 3.1.0 8077 + 8078 + evlog@2.18.1(express@5.2.1)(hono@4.12.23)(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): 6720 8079 optionalDependencies: 6721 - next: 16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 8080 + express: 5.2.1 8081 + hono: 4.12.23 8082 + next: 16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 6722 8083 react: 18.3.1 6723 8084 8085 + execa@5.1.1: 8086 + dependencies: 8087 + cross-spawn: 7.0.6 8088 + get-stream: 6.0.1 8089 + human-signals: 2.1.0 8090 + is-stream: 2.0.1 8091 + merge-stream: 2.0.0 8092 + npm-run-path: 4.0.1 8093 + onetime: 5.1.2 8094 + signal-exit: 3.0.7 8095 + strip-final-newline: 2.0.0 8096 + 8097 + execa@9.6.1: 8098 + dependencies: 8099 + '@sindresorhus/merge-streams': 4.0.0 8100 + cross-spawn: 7.0.6 8101 + figures: 6.1.0 8102 + get-stream: 9.0.1 8103 + human-signals: 8.0.1 8104 + is-plain-obj: 4.1.0 8105 + is-stream: 4.0.1 8106 + npm-run-path: 6.0.0 8107 + pretty-ms: 9.3.0 8108 + signal-exit: 4.1.0 8109 + strip-final-newline: 4.0.0 8110 + yoctocolors: 2.1.2 8111 + 8112 + express-rate-limit@8.5.2(express@5.2.1): 8113 + dependencies: 8114 + express: 5.2.1 8115 + ip-address: 10.2.0 8116 + 8117 + express@5.2.1: 8118 + dependencies: 8119 + accepts: 2.0.0 8120 + body-parser: 2.2.2 8121 + content-disposition: 1.1.0 8122 + content-type: 1.0.5 8123 + cookie: 0.7.2 8124 + cookie-signature: 1.2.2 8125 + debug: 4.4.3 8126 + depd: 2.0.0 8127 + encodeurl: 2.0.0 8128 + escape-html: 1.0.3 8129 + etag: 1.8.1 8130 + finalhandler: 2.1.1 8131 + fresh: 2.0.0 8132 + http-errors: 2.0.1 8133 + merge-descriptors: 2.0.0 8134 + mime-types: 3.0.2 8135 + on-finished: 2.4.1 8136 + once: 1.4.0 8137 + parseurl: 1.3.3 8138 + proxy-addr: 2.0.7 8139 + qs: 6.15.2 8140 + range-parser: 1.2.1 8141 + router: 2.2.0 8142 + send: 1.2.1 8143 + serve-static: 2.2.1 8144 + statuses: 2.0.2 8145 + type-is: 2.1.0 8146 + vary: 1.1.2 8147 + transitivePeerDependencies: 8148 + - supports-color 8149 + 6724 8150 fast-deep-equal@3.1.3: {} 6725 8151 6726 8152 fast-glob@3.3.1: ··· 6731 8157 merge2: 1.4.1 6732 8158 micromatch: 4.0.8 6733 8159 8160 + fast-glob@3.3.3: 8161 + dependencies: 8162 + '@nodelib/fs.stat': 2.0.5 8163 + '@nodelib/fs.walk': 1.2.8 8164 + glob-parent: 5.1.2 8165 + merge2: 1.4.1 8166 + micromatch: 4.0.8 8167 + 6734 8168 fast-json-stable-stringify@2.1.0: {} 6735 8169 6736 8170 fast-levenshtein@2.0.6: {} 6737 8171 6738 8172 fast-sha256@1.3.0: {} 6739 8173 8174 + fast-string-truncated-width@3.0.3: {} 8175 + 8176 + fast-string-width@3.0.2: 8177 + dependencies: 8178 + fast-string-truncated-width: 3.0.3 8179 + 6740 8180 fast-uri@3.1.2: {} 8181 + 8182 + fast-wrap-ansi@0.2.2: 8183 + dependencies: 8184 + fast-string-width: 3.0.2 6741 8185 6742 8186 fast-xml-builder@1.2.0: 6743 8187 dependencies: ··· 6759 8203 fdir@6.5.0(picomatch@4.0.4): 6760 8204 optionalDependencies: 6761 8205 picomatch: 4.0.4 8206 + 8207 + fetch-blob@3.2.0: 8208 + dependencies: 8209 + node-domexception: 1.0.0 8210 + web-streams-polyfill: 3.0.3 8211 + 8212 + figures@6.1.0: 8213 + dependencies: 8214 + is-unicode-supported: 2.1.0 6762 8215 6763 8216 file-entry-cache@8.0.0: 6764 8217 dependencies: ··· 6768 8221 dependencies: 6769 8222 to-regex-range: 5.0.1 6770 8223 8224 + finalhandler@2.1.1: 8225 + dependencies: 8226 + debug: 4.4.3 8227 + encodeurl: 2.0.0 8228 + escape-html: 1.0.3 8229 + on-finished: 2.4.1 8230 + parseurl: 1.3.3 8231 + statuses: 2.0.2 8232 + transitivePeerDependencies: 8233 + - supports-color 8234 + 6771 8235 find-up@5.0.0: 6772 8236 dependencies: 6773 8237 locate-path: 6.0.0 ··· 6780 8244 6781 8245 flatted@3.4.2: {} 6782 8246 8247 + formdata-polyfill@4.0.10: 8248 + dependencies: 8249 + fetch-blob: 3.2.0 8250 + 8251 + forwarded@0.2.0: {} 8252 + 6783 8253 framer-motion@12.40.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 6784 8254 dependencies: 6785 8255 motion-dom: 12.40.0 ··· 6788 8258 optionalDependencies: 6789 8259 react: 18.3.1 6790 8260 react-dom: 18.3.1(react@18.3.1) 8261 + 8262 + fresh@2.0.0: {} 8263 + 8264 + fs-extra@11.3.5: 8265 + dependencies: 8266 + graceful-fs: 4.2.11 8267 + jsonfile: 6.2.1 8268 + universalify: 2.0.1 6791 8269 6792 8270 fsevents@2.3.3: 6793 8271 optional: true 6794 8272 6795 - geist@1.7.1(next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): 8273 + function-bind@1.1.2: {} 8274 + 8275 + fuzzysort@3.1.0: {} 8276 + 8277 + geist@1.7.1(next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): 6796 8278 dependencies: 6797 - next: 16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 8279 + next: 16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 8280 + 8281 + gensync@1.0.0-beta.2: {} 6798 8282 6799 8283 get-caller-file@2.0.5: {} 6800 8284 6801 8285 get-east-asian-width@1.6.0: {} 6802 8286 8287 + get-intrinsic@1.3.0: 8288 + dependencies: 8289 + call-bind-apply-helpers: 1.0.2 8290 + es-define-property: 1.0.1 8291 + es-errors: 1.3.0 8292 + es-object-atoms: 1.1.2 8293 + function-bind: 1.1.2 8294 + get-proto: 1.0.1 8295 + gopd: 1.2.0 8296 + has-symbols: 1.1.0 8297 + hasown: 2.0.3 8298 + math-intrinsics: 1.1.0 8299 + 6803 8300 get-nonce@1.0.1: {} 6804 8301 8302 + get-own-enumerable-keys@1.0.0: {} 8303 + 8304 + get-proto@1.0.1: 8305 + dependencies: 8306 + dunder-proto: 1.0.1 8307 + es-object-atoms: 1.1.2 8308 + 8309 + get-stream@6.0.1: {} 8310 + 8311 + get-stream@9.0.1: 8312 + dependencies: 8313 + '@sec-ant/readable-stream': 0.4.1 8314 + is-stream: 4.0.1 8315 + 6805 8316 get-tsconfig@4.14.0: 6806 8317 dependencies: 6807 8318 resolve-pkg-maps: 1.0.0 ··· 6834 8345 6835 8346 globals@11.12.0: {} 6836 8347 8348 + gopd@1.2.0: {} 8349 + 6837 8350 graceful-fs@4.2.11: {} 6838 8351 8352 + graphql@16.14.0: {} 8353 + 8354 + has-symbols@1.1.0: {} 8355 + 8356 + hasown@2.0.3: 8357 + dependencies: 8358 + function-bind: 1.1.2 8359 + 8360 + headers-polyfill@5.0.1: 8361 + dependencies: 8362 + '@types/set-cookie-parser': 2.4.10 8363 + set-cookie-parser: 3.1.0 8364 + 8365 + hono@4.12.23: {} 8366 + 6839 8367 html-to-text@9.0.5: 6840 8368 dependencies: 6841 8369 '@selderee/plugin-htmlparser2': 0.11.0 ··· 6851 8379 domutils: 3.2.2 6852 8380 entities: 4.5.0 6853 8381 8382 + http-errors@2.0.1: 8383 + dependencies: 8384 + depd: 2.0.0 8385 + inherits: 2.0.4 8386 + setprototypeof: 1.2.0 8387 + statuses: 2.0.2 8388 + toidentifier: 1.0.1 8389 + 8390 + https-proxy-agent@7.0.6: 8391 + dependencies: 8392 + agent-base: 7.1.2 8393 + debug: 4.4.3 8394 + transitivePeerDependencies: 8395 + - supports-color 8396 + 8397 + human-signals@2.1.0: {} 8398 + 8399 + human-signals@8.0.1: {} 8400 + 6854 8401 husky@9.1.7: {} 6855 8402 8403 + iconv-lite@0.7.2: 8404 + dependencies: 8405 + safer-buffer: 2.1.2 8406 + 6856 8407 ignore@5.3.2: {} 6857 8408 6858 8409 ignore@7.0.5: {} ··· 6870 8421 6871 8422 imurmurhash@0.1.4: {} 6872 8423 8424 + inherits@2.0.4: {} 8425 + 6873 8426 ini@6.0.0: {} 6874 8427 8428 + input-otp@1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 8429 + dependencies: 8430 + react: 18.3.1 8431 + react-dom: 18.3.1(react@18.3.1) 8432 + 6875 8433 internmap@2.0.3: {} 6876 8434 8435 + ip-address@10.2.0: {} 8436 + 8437 + ipaddr.js@1.9.1: {} 8438 + 6877 8439 is-arrayish@0.2.1: {} 6878 8440 8441 + is-docker@3.0.0: {} 8442 + 6879 8443 is-extglob@2.1.1: {} 6880 8444 6881 8445 is-fullwidth-code-point@3.0.0: {} ··· 6888 8452 dependencies: 6889 8453 is-extglob: 2.1.1 6890 8454 8455 + is-in-ssh@1.0.0: {} 8456 + 8457 + is-inside-container@1.0.0: 8458 + dependencies: 8459 + is-docker: 3.0.0 8460 + 8461 + is-interactive@2.0.0: {} 8462 + 8463 + is-node-process@1.2.0: {} 8464 + 6891 8465 is-number@7.0.0: {} 6892 8466 6893 8467 is-obj@2.0.0: {} 6894 8468 8469 + is-obj@3.0.0: {} 8470 + 6895 8471 is-plain-obj@4.1.0: {} 6896 8472 8473 + is-promise@4.0.0: {} 8474 + 8475 + is-regexp@3.1.0: {} 8476 + 8477 + is-stream@2.0.1: {} 8478 + 8479 + is-stream@4.0.1: {} 8480 + 8481 + is-unicode-supported@1.3.0: {} 8482 + 6897 8483 is-unicode-supported@2.1.0: {} 6898 8484 8485 + is-wsl@3.1.1: 8486 + dependencies: 8487 + is-inside-container: 1.0.0 8488 + 6899 8489 isexe@2.0.0: {} 8490 + 8491 + isexe@3.1.5: {} 6900 8492 6901 8493 jiti@2.4.2: {} 6902 8494 ··· 6930 8522 6931 8523 jsonc-parser@3.3.1: {} 6932 8524 8525 + jsonfile@6.2.1: 8526 + dependencies: 8527 + universalify: 2.0.1 8528 + optionalDependencies: 8529 + graceful-fs: 4.2.11 8530 + 6933 8531 keyv@4.5.4: 6934 8532 dependencies: 6935 8533 json-buffer: 3.0.1 6936 8534 6937 8535 kleur@3.0.3: {} 8536 + 8537 + kleur@4.1.5: {} 6938 8538 6939 8539 kysely@0.28.17: {} 6940 8540 ··· 7019 8619 dependencies: 7020 8620 p-locate: 5.0.0 7021 8621 8622 + log-symbols@6.0.0: 8623 + dependencies: 8624 + chalk: 5.6.2 8625 + is-unicode-supported: 1.3.0 8626 + 7022 8627 log-symbols@7.0.1: 7023 8628 dependencies: 7024 8629 is-unicode-supported: 2.1.0 ··· 7038 8643 7039 8644 lru-cache@11.3.6: {} 7040 8645 8646 + lru-cache@5.1.1: 8647 + dependencies: 8648 + yallist: 3.1.1 8649 + 7041 8650 lucide-react@1.17.0(react@18.3.1): 7042 8651 dependencies: 7043 8652 react: 18.3.1 ··· 7048 8657 7049 8658 marked@15.0.12: {} 7050 8659 8660 + math-intrinsics@1.1.0: {} 8661 + 7051 8662 mdn-data@2.27.1: {} 7052 8663 8664 + media-typer@1.1.0: {} 8665 + 7053 8666 meow@13.2.0: {} 7054 8667 8668 + merge-descriptors@2.0.0: {} 8669 + 8670 + merge-stream@2.0.0: {} 8671 + 7055 8672 merge2@1.4.1: {} 7056 8673 7057 8674 micromatch@4.0.8: ··· 7071 8688 dependencies: 7072 8689 mime-db: 1.54.0 7073 8690 8691 + mimic-fn@2.1.0: {} 8692 + 7074 8693 mimic-function@5.0.1: {} 7075 8694 7076 8695 minimatch@10.2.5: ··· 7089 8708 7090 8709 ms@2.1.3: {} 7091 8710 8711 + msw@2.14.6(@types/node@25.6.0)(typescript@6.0.3): 8712 + dependencies: 8713 + '@inquirer/confirm': 6.1.0(@types/node@25.6.0) 8714 + '@mswjs/interceptors': 0.41.9 8715 + '@open-draft/deferred-promise': 3.0.0 8716 + '@types/statuses': 2.0.6 8717 + cookie: 1.1.1 8718 + graphql: 16.14.0 8719 + headers-polyfill: 5.0.1 8720 + is-node-process: 1.2.0 8721 + outvariant: 1.4.3 8722 + path-to-regexp: 6.3.0 8723 + picocolors: 1.1.1 8724 + rettime: 0.11.11 8725 + statuses: 2.0.2 8726 + strict-event-emitter: 0.5.1 8727 + tough-cookie: 6.0.1 8728 + type-fest: 5.6.0 8729 + until-async: 3.0.2 8730 + yargs: 17.7.2 8731 + optionalDependencies: 8732 + typescript: 6.0.3 8733 + transitivePeerDependencies: 8734 + - '@types/node' 8735 + 8736 + mute-stream@4.0.0: {} 8737 + 7092 8738 nanoid@3.3.12: {} 7093 8739 7094 8740 nanostores@1.3.0: {} ··· 7096 8742 natural-compare@1.4.0: {} 7097 8743 7098 8744 negotiator@0.6.3: {} 8745 + 8746 + negotiator@1.0.0: {} 7099 8747 7100 8748 next-themes@0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 7101 8749 dependencies: 7102 8750 react: 18.3.1 7103 8751 react-dom: 18.3.1(react@18.3.1) 7104 8752 7105 - next@16.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 8753 + next@16.2.6(@babel/core@7.29.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 7106 8754 dependencies: 7107 8755 '@next/env': 16.2.6 7108 8756 '@swc/helpers': 0.5.15 ··· 7111 8759 postcss: 8.4.31 7112 8760 react: 18.3.1 7113 8761 react-dom: 18.3.1(react@18.3.1) 7114 - styled-jsx: 5.1.6(react@18.3.1) 8762 + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@18.3.1) 7115 8763 optionalDependencies: 7116 8764 '@next/swc-darwin-arm64': 16.2.6 7117 8765 '@next/swc-darwin-x64': 16.2.6 ··· 7125 8773 transitivePeerDependencies: 7126 8774 - '@babel/core' 7127 8775 - babel-plugin-macros 8776 + 8777 + node-domexception@1.0.0: {} 8778 + 8779 + node-fetch@3.3.2: 8780 + dependencies: 8781 + data-uri-to-buffer: 4.0.0 8782 + fetch-blob: 3.2.0 8783 + formdata-polyfill: 4.0.10 7128 8784 7129 8785 node-forge@1.4.0: {} 7130 8786 8787 + node-releases@2.0.46: {} 8788 + 7131 8789 node-rsa@1.1.1: 7132 8790 dependencies: 7133 8791 asn1: 0.2.6 7134 8792 7135 8793 normalize-path@3.0.0: {} 7136 8794 8795 + npm-run-path@4.0.1: 8796 + dependencies: 8797 + path-key: 3.1.1 8798 + 8799 + npm-run-path@6.0.0: 8800 + dependencies: 8801 + path-key: 4.0.0 8802 + unicorn-magic: 0.3.0 8803 + 7137 8804 nypm@0.6.6: 7138 8805 dependencies: 7139 8806 citty: 0.2.2 ··· 7142 8809 7143 8810 object-assign@4.1.1: {} 7144 8811 8812 + object-inspect@1.13.4: {} 8813 + 8814 + object-treeify@1.1.33: {} 8815 + 8816 + on-finished@2.4.1: 8817 + dependencies: 8818 + ee-first: 1.1.1 8819 + 8820 + once@1.4.0: 8821 + dependencies: 8822 + wrappy: 1.0.2 8823 + 8824 + onetime@5.1.2: 8825 + dependencies: 8826 + mimic-fn: 2.1.0 8827 + 7145 8828 onetime@7.0.0: 7146 8829 dependencies: 7147 8830 mimic-function: 5.0.1 7148 8831 8832 + open@11.0.0: 8833 + dependencies: 8834 + default-browser: 5.5.0 8835 + define-lazy-prop: 3.0.0 8836 + is-in-ssh: 1.0.0 8837 + is-inside-container: 1.0.0 8838 + powershell-utils: 0.1.0 8839 + wsl-utils: 0.3.1 8840 + 7149 8841 optionator@0.9.4: 7150 8842 dependencies: 7151 8843 deep-is: 0.1.4 ··· 7155 8847 type-check: 0.4.0 7156 8848 word-wrap: 1.2.5 7157 8849 8850 + ora@8.2.0: 8851 + dependencies: 8852 + chalk: 5.6.2 8853 + cli-cursor: 5.0.0 8854 + cli-spinners: 2.9.2 8855 + is-interactive: 2.0.0 8856 + is-unicode-supported: 2.1.0 8857 + log-symbols: 6.0.0 8858 + stdin-discarder: 0.2.2 8859 + string-width: 7.2.0 8860 + strip-ansi: 7.2.0 8861 + 8862 + outvariant@1.4.3: {} 8863 + 7158 8864 oxlint@1.63.0: 7159 8865 optionalDependencies: 7160 8866 '@oxlint/binding-android-arm-eabi': 1.63.0 ··· 7198 8904 json-parse-even-better-errors: 2.3.1 7199 8905 lines-and-columns: 1.2.4 7200 8906 8907 + parse-ms@4.0.0: {} 8908 + 7201 8909 parseley@0.12.1: 7202 8910 dependencies: 7203 8911 leac: 0.6.0 7204 8912 peberminta: 0.9.0 7205 8913 8914 + parseurl@1.3.3: {} 8915 + 8916 + path-browserify@1.0.1: {} 8917 + 7206 8918 path-exists@4.0.0: {} 7207 8919 7208 8920 path-expression-matcher@1.5.0: {} 7209 8921 7210 8922 path-key@3.1.1: {} 7211 8923 8924 + path-key@4.0.0: {} 8925 + 7212 8926 path-scurry@2.0.2: 7213 8927 dependencies: 7214 8928 lru-cache: 11.3.6 7215 8929 minipass: 7.1.3 8930 + 8931 + path-to-regexp@6.3.0: {} 8932 + 8933 + path-to-regexp@8.4.2: {} 7216 8934 7217 8935 pathe@2.0.3: {} 7218 8936 ··· 7225 8943 picomatch@4.0.4: {} 7226 8944 7227 8945 picospinner@3.0.0: {} 8946 + 8947 + pkce-challenge@5.0.0: {} 7228 8948 7229 8949 postal-mime@2.7.4: {} 7230 8950 8951 + postcss-selector-parser@7.1.1: 8952 + dependencies: 8953 + cssesc: 3.0.0 8954 + util-deprecate: 1.0.2 8955 + 7231 8956 postcss@8.4.31: 7232 8957 dependencies: 7233 8958 nanoid: 3.3.12 ··· 7242 8967 7243 8968 postgres@3.4.9: {} 7244 8969 8970 + powershell-utils@0.1.0: {} 8971 + 7245 8972 prelude-ls@1.2.1: {} 7246 8973 7247 8974 prettier@3.8.3: {} 7248 8975 8976 + pretty-ms@9.3.0: 8977 + dependencies: 8978 + parse-ms: 4.0.0 8979 + 7249 8980 prismjs@1.30.0: {} 7250 8981 7251 8982 prompts@2.4.2: ··· 7253 8984 kleur: 3.0.3 7254 8985 sisteransi: 1.0.5 7255 8986 8987 + proxy-addr@2.0.7: 8988 + dependencies: 8989 + forwarded: 0.2.0 8990 + ipaddr.js: 1.9.1 8991 + 7256 8992 punycode@2.3.1: {} 7257 8993 7258 8994 qr-code-styling@1.9.2: ··· 7260 8996 qrcode-generator: 1.5.2 7261 8997 7262 8998 qrcode-generator@1.5.2: {} 8999 + 9000 + qs@6.15.2: 9001 + dependencies: 9002 + side-channel: 1.1.0 7263 9003 7264 9004 queue-microtask@1.2.3: {} 7265 9005 ··· 7326 9066 '@types/react': 19.2.14 7327 9067 '@types/react-dom': 19.2.3(@types/react@19.2.14) 7328 9068 7329 - react-day-picker@9.14.0(react@18.3.1): 9069 + range-parser@1.2.1: {} 9070 + 9071 + raw-body@3.0.2: 9072 + dependencies: 9073 + bytes: 3.1.2 9074 + http-errors: 2.0.1 9075 + iconv-lite: 0.7.2 9076 + unpipe: 1.0.0 9077 + 9078 + react-day-picker@10.0.1(@types/react@19.2.14)(react@18.3.1): 7330 9079 dependencies: 7331 - '@date-fns/tz': 1.4.1 7332 - '@tabby_ai/hijri-converter': 1.0.5 7333 - date-fns: 4.1.0 7334 - date-fns-jalali: 4.1.0-0 9080 + '@date-fns/tz': 1.5.0 9081 + date-fns: 4.3.0 7335 9082 react: 18.3.1 9083 + optionalDependencies: 9084 + '@types/react': 19.2.14 7336 9085 7337 9086 react-dom@18.3.1(react@18.3.1): 7338 9087 dependencies: ··· 7377 9126 7378 9127 react-is@16.13.1: {} 7379 9128 7380 - react-redux@9.2.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1): 9129 + react-redux@9.3.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1): 7381 9130 dependencies: 7382 9131 '@types/use-sync-external-store': 0.0.6 7383 9132 react: 18.3.1 ··· 7419 9168 7420 9169 readdirp@4.1.2: {} 7421 9170 7422 - recharts@3.8.1(@types/react@19.2.14)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(redux@5.0.1): 9171 + recast@0.23.11: 7423 9172 dependencies: 7424 - '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1))(react@18.3.1) 9173 + ast-types: 0.16.1 9174 + esprima: 4.0.1 9175 + source-map: 0.6.1 9176 + tiny-invariant: 1.3.3 9177 + tslib: 2.8.1 9178 + 9179 + recharts@3.8.0(@types/react@19.2.14)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(redux@5.0.1): 9180 + dependencies: 9181 + '@reduxjs/toolkit': 2.11.2(react-redux@9.3.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1))(react@18.3.1) 7425 9182 clsx: 2.1.1 7426 9183 decimal.js-light: 2.5.1 7427 9184 es-toolkit: 1.46.1 ··· 7430 9187 react: 18.3.1 7431 9188 react-dom: 18.3.1(react@18.3.1) 7432 9189 react-is: 16.13.1 7433 - react-redux: 9.2.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1) 9190 + react-redux: 9.3.0(@types/react@19.2.14)(react@18.3.1)(redux@5.0.1) 7434 9191 reselect: 5.1.1 7435 9192 tiny-invariant: 1.3.3 7436 9193 use-sync-external-store: 1.6.0(react@18.3.1) ··· 7450 9207 require-from-string@2.0.2: {} 7451 9208 7452 9209 reselect@5.1.1: {} 9210 + 9211 + reselect@5.2.0: {} 7453 9212 7454 9213 resend@6.12.4(@react-email/render@2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): 7455 9214 dependencies: ··· 7469 9228 onetime: 7.0.0 7470 9229 signal-exit: 4.1.0 7471 9230 9231 + rettime@0.11.11: {} 9232 + 7472 9233 reusify@1.1.0: {} 7473 9234 7474 9235 rfdc@1.4.1: {} 7475 9236 7476 9237 rou3@0.7.12: {} 7477 9238 9239 + router@2.2.0: 9240 + dependencies: 9241 + debug: 4.4.3 9242 + depd: 2.0.0 9243 + is-promise: 4.0.0 9244 + parseurl: 1.3.3 9245 + path-to-regexp: 8.4.2 9246 + transitivePeerDependencies: 9247 + - supports-color 9248 + 9249 + run-applescript@7.1.0: {} 9250 + 7478 9251 run-parallel@1.2.0: 7479 9252 dependencies: 7480 9253 queue-microtask: 1.2.3 ··· 7503 9276 dependencies: 7504 9277 parseley: 0.12.1 7505 9278 9279 + semver@6.3.1: {} 9280 + 7506 9281 semver@7.8.0: {} 9282 + 9283 + send@1.2.1: 9284 + dependencies: 9285 + debug: 4.4.3 9286 + encodeurl: 2.0.0 9287 + escape-html: 1.0.3 9288 + etag: 1.8.1 9289 + fresh: 2.0.0 9290 + http-errors: 2.0.1 9291 + mime-types: 3.0.2 9292 + ms: 2.1.3 9293 + on-finished: 2.4.1 9294 + range-parser: 1.2.1 9295 + statuses: 2.0.2 9296 + transitivePeerDependencies: 9297 + - supports-color 9298 + 9299 + serve-static@2.2.1: 9300 + dependencies: 9301 + encodeurl: 2.0.0 9302 + escape-html: 1.0.3 9303 + parseurl: 1.3.3 9304 + send: 1.2.1 9305 + transitivePeerDependencies: 9306 + - supports-color 7507 9307 7508 9308 set-cookie-parser@3.1.0: {} 7509 9309 9310 + setprototypeof@1.2.0: {} 9311 + 9312 + shadcn@4.8.2(@types/node@25.6.0)(typescript@6.0.3): 9313 + dependencies: 9314 + '@babel/core': 7.29.7 9315 + '@babel/parser': 7.29.3 9316 + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) 9317 + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) 9318 + '@dotenvx/dotenvx': 1.69.1 9319 + '@modelcontextprotocol/sdk': 1.29.0(zod@3.24.1) 9320 + '@types/validate-npm-package-name': 4.0.2 9321 + browserslist: 4.28.2 9322 + commander: 14.0.3 9323 + cosmiconfig: 9.0.1(typescript@6.0.3) 9324 + dedent: 1.7.2 9325 + deepmerge: 4.3.1 9326 + diff: 8.0.4 9327 + execa: 9.6.1 9328 + fast-glob: 3.3.3 9329 + fs-extra: 11.3.5 9330 + fuzzysort: 3.1.0 9331 + https-proxy-agent: 7.0.6 9332 + kleur: 4.1.5 9333 + msw: 2.14.6(@types/node@25.6.0)(typescript@6.0.3) 9334 + node-fetch: 3.3.2 9335 + open: 11.0.0 9336 + ora: 8.2.0 9337 + postcss: 8.5.14 9338 + postcss-selector-parser: 7.1.1 9339 + prompts: 2.4.2 9340 + recast: 0.23.11 9341 + stringify-object: 5.0.0 9342 + tailwind-merge: 3.6.0 9343 + ts-morph: 26.0.0 9344 + tsconfig-paths: 4.2.0 9345 + validate-npm-package-name: 7.0.2 9346 + zod: 3.24.1 9347 + zod-to-json-schema: 3.25.2(zod@3.24.1) 9348 + transitivePeerDependencies: 9349 + - '@cfworker/json-schema' 9350 + - '@types/node' 9351 + - babel-plugin-macros 9352 + - supports-color 9353 + - typescript 9354 + 7510 9355 sharp@0.34.5: 7511 9356 dependencies: 7512 9357 '@img/colour': 1.1.0 ··· 7545 9390 7546 9391 shebang-regex@3.0.0: {} 7547 9392 9393 + side-channel-list@1.0.1: 9394 + dependencies: 9395 + es-errors: 1.3.0 9396 + object-inspect: 1.13.4 9397 + 9398 + side-channel-map@1.0.1: 9399 + dependencies: 9400 + call-bound: 1.0.4 9401 + es-errors: 1.3.0 9402 + get-intrinsic: 1.3.0 9403 + object-inspect: 1.13.4 9404 + 9405 + side-channel-weakmap@1.0.2: 9406 + dependencies: 9407 + call-bound: 1.0.4 9408 + es-errors: 1.3.0 9409 + get-intrinsic: 1.3.0 9410 + object-inspect: 1.13.4 9411 + side-channel-map: 1.0.1 9412 + 9413 + side-channel@1.1.0: 9414 + dependencies: 9415 + es-errors: 1.3.0 9416 + object-inspect: 1.13.4 9417 + side-channel-list: 1.0.1 9418 + side-channel-map: 1.0.1 9419 + side-channel-weakmap: 1.0.2 9420 + 9421 + signal-exit@3.0.7: {} 9422 + 7548 9423 signal-exit@4.1.0: {} 7549 9424 7550 9425 sisteransi@1.0.5: {} ··· 7607 9482 dependencies: 7608 9483 '@stablelib/base64': 1.0.1 7609 9484 fast-sha256: 1.3.0 9485 + 9486 + statuses@2.0.2: {} 9487 + 9488 + stdin-discarder@0.2.2: {} 9489 + 9490 + strict-event-emitter@0.5.1: {} 7610 9491 7611 9492 string-argv@0.3.2: {} 7612 9493 ··· 7627 9508 get-east-asian-width: 1.6.0 7628 9509 strip-ansi: 7.2.0 7629 9510 9511 + stringify-object@5.0.0: 9512 + dependencies: 9513 + get-own-enumerable-keys: 1.0.0 9514 + is-obj: 3.0.0 9515 + is-regexp: 3.1.0 9516 + 7630 9517 strip-ansi@6.0.1: 7631 9518 dependencies: 7632 9519 ansi-regex: 5.0.1 ··· 7637 9524 7638 9525 strip-bom@3.0.0: {} 7639 9526 9527 + strip-final-newline@2.0.0: {} 9528 + 9529 + strip-final-newline@4.0.0: {} 9530 + 7640 9531 strnum@2.3.0: {} 7641 9532 7642 9533 stubborn-fs@2.0.0: ··· 7645 9536 7646 9537 stubborn-utils@1.0.2: {} 7647 9538 7648 - styled-jsx@5.1.6(react@18.3.1): 9539 + styled-jsx@5.1.6(@babel/core@7.29.7)(react@18.3.1): 7649 9540 dependencies: 7650 9541 client-only: 0.0.1 7651 9542 react: 18.3.1 9543 + optionalDependencies: 9544 + '@babel/core': 7.29.7 7652 9545 7653 9546 tagged-tag@1.0.0: {} 7654 9547 ··· 7668 9561 picomatch: 4.0.4 7669 9562 7670 9563 tldts-core@6.1.0: {} 9564 + 9565 + tldts-core@7.4.1: {} 7671 9566 7672 9567 tldts@6.1.0: 7673 9568 dependencies: 7674 9569 tldts-core: 6.1.0 7675 9570 9571 + tldts@7.4.0: 9572 + dependencies: 9573 + tldts-core: 7.4.1 9574 + 7676 9575 to-regex-range@5.0.1: 7677 9576 dependencies: 7678 9577 is-number: 7.0.0 7679 9578 9579 + toidentifier@1.0.1: {} 9580 + 9581 + tough-cookie@6.0.1: 9582 + dependencies: 9583 + tldts: 7.4.0 9584 + 7680 9585 ts-api-utils@2.5.0(typescript@6.0.3): 7681 9586 dependencies: 7682 9587 typescript: 6.0.3 9588 + 9589 + ts-morph@26.0.0: 9590 + dependencies: 9591 + '@ts-morph/common': 0.27.0 9592 + code-block-writer: 13.0.3 7683 9593 7684 9594 tsconfig-paths@4.2.0: 7685 9595 dependencies: ··· 7706 9616 dependencies: 7707 9617 tagged-tag: 1.0.0 7708 9618 9619 + type-is@2.1.0: 9620 + dependencies: 9621 + content-type: 2.0.0 9622 + media-typer: 1.1.0 9623 + mime-types: 3.0.2 9624 + 7709 9625 typescript-eslint@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3): 7710 9626 dependencies: 7711 9627 '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) ··· 7723 9639 7724 9640 undici-types@7.19.2: {} 7725 9641 9642 + unicorn-magic@0.3.0: {} 9643 + 9644 + universalify@2.0.1: {} 9645 + 9646 + unpipe@1.0.0: {} 9647 + 9648 + until-async@3.0.2: {} 9649 + 9650 + update-browserslist-db@1.2.3(browserslist@4.28.2): 9651 + dependencies: 9652 + browserslist: 4.28.2 9653 + escalade: 3.2.0 9654 + picocolors: 1.1.1 9655 + 7726 9656 uri-js@4.4.1: 7727 9657 dependencies: 7728 9658 punycode: 2.3.1 ··· 7746 9676 dependencies: 7747 9677 react: 18.3.1 7748 9678 9679 + util-deprecate@1.0.2: {} 9680 + 7749 9681 uuid@8.3.2: {} 9682 + 9683 + validate-npm-package-name@7.0.2: {} 7750 9684 7751 9685 vary@1.1.2: {} 7752 9686 ··· 7767 9701 d3-time: 3.1.0 7768 9702 d3-timer: 3.0.1 7769 9703 9704 + web-streams-polyfill@3.0.3: {} 9705 + 7770 9706 when-exit@2.1.5: {} 7771 9707 7772 9708 which@2.0.2: 7773 9709 dependencies: 7774 9710 isexe: 2.0.0 9711 + 9712 + which@4.0.0: 9713 + dependencies: 9714 + isexe: 3.1.5 7775 9715 7776 9716 word-wrap@1.2.5: {} 7777 9717 ··· 7793 9733 string-width: 7.2.0 7794 9734 strip-ansi: 7.2.0 7795 9735 9736 + wrappy@1.0.2: {} 9737 + 7796 9738 ws@8.18.3: {} 7797 9739 9740 + wsl-utils@0.3.1: 9741 + dependencies: 9742 + is-wsl: 3.1.1 9743 + powershell-utils: 0.1.0 9744 + 7798 9745 xml-crypto@6.1.2: 7799 9746 dependencies: 7800 9747 '@xmldom/is-dom-node': 1.0.1 ··· 7813 9760 7814 9761 y18n@5.0.8: {} 7815 9762 9763 + yallist@3.1.1: {} 9764 + 7816 9765 yaml@2.8.4: 7817 9766 optional: true 7818 9767 ··· 7830 9779 7831 9780 yocto-queue@0.1.0: {} 7832 9781 9782 + yocto-spinner@1.2.0: 9783 + dependencies: 9784 + yoctocolors: 2.1.2 9785 + 7833 9786 yoctocolors@2.1.2: {} 9787 + 9788 + zod-to-json-schema@3.25.2(zod@3.24.1): 9789 + dependencies: 9790 + zod: 3.24.1 9791 + 9792 + zod@3.24.1: {} 7834 9793 7835 9794 zod@4.4.3: {} 7836 9795
+4
pnpm-workspace.yaml
··· 5 5 msw: false 6 6 sharp: false 7 7 unrs-resolver: false 8 + 9 + onlyBuiltDependencies: 10 + - sharp 11 + - esbuild