@greatapps/greatauth-ui 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui.js CHANGED
@@ -2032,7 +2032,1389 @@ function CollapsibleContent({
2032
2032
  }
2033
2033
  );
2034
2034
  }
2035
+
2036
+ // src/components/ui/checkbox.tsx
2037
+ import { Checkbox as CheckboxPrimitive } from "radix-ui";
2038
+ import { Check as Check3 } from "lucide-react";
2039
+ import { jsx as jsx25 } from "react/jsx-runtime";
2040
+ function Checkbox({
2041
+ className,
2042
+ ...props
2043
+ }) {
2044
+ return /* @__PURE__ */ jsx25(
2045
+ CheckboxPrimitive.Root,
2046
+ {
2047
+ "data-slot": "checkbox",
2048
+ className: cn(
2049
+ "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border shadow-xs transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50",
2050
+ className
2051
+ ),
2052
+ ...props,
2053
+ children: /* @__PURE__ */ jsx25(
2054
+ CheckboxPrimitive.Indicator,
2055
+ {
2056
+ "data-slot": "checkbox-indicator",
2057
+ className: "[&>svg]:size-3.5 grid place-content-center text-current transition-none",
2058
+ children: /* @__PURE__ */ jsx25(
2059
+ Check3,
2060
+ {}
2061
+ )
2062
+ }
2063
+ )
2064
+ }
2065
+ );
2066
+ }
2067
+
2068
+ // src/components/ui/popover.tsx
2069
+ import { Popover as PopoverPrimitive } from "radix-ui";
2070
+ import { jsx as jsx26 } from "react/jsx-runtime";
2071
+ function Popover({
2072
+ ...props
2073
+ }) {
2074
+ return /* @__PURE__ */ jsx26(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
2075
+ }
2076
+ function PopoverTrigger({
2077
+ ...props
2078
+ }) {
2079
+ return /* @__PURE__ */ jsx26(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
2080
+ }
2081
+ function PopoverContent({
2082
+ className,
2083
+ align = "center",
2084
+ sideOffset = 4,
2085
+ ...props
2086
+ }) {
2087
+ return /* @__PURE__ */ jsx26(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx26(
2088
+ PopoverPrimitive.Content,
2089
+ {
2090
+ "data-slot": "popover-content",
2091
+ align,
2092
+ sideOffset,
2093
+ className: cn(
2094
+ "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-4 rounded-md p-4 text-sm shadow-md ring-1 duration-100 z-50 w-72 origin-(--radix-popover-content-transform-origin) outline-hidden",
2095
+ className
2096
+ ),
2097
+ ...props
2098
+ }
2099
+ ) });
2100
+ }
2101
+ function PopoverAnchor({
2102
+ ...props
2103
+ }) {
2104
+ return /* @__PURE__ */ jsx26(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
2105
+ }
2106
+ function PopoverHeader({ className, ...props }) {
2107
+ return /* @__PURE__ */ jsx26(
2108
+ "div",
2109
+ {
2110
+ "data-slot": "popover-header",
2111
+ className: cn("flex flex-col gap-1 text-sm", className),
2112
+ ...props
2113
+ }
2114
+ );
2115
+ }
2116
+ function PopoverTitle({ className, ...props }) {
2117
+ return /* @__PURE__ */ jsx26(
2118
+ "div",
2119
+ {
2120
+ "data-slot": "popover-title",
2121
+ className: cn("font-medium", className),
2122
+ ...props
2123
+ }
2124
+ );
2125
+ }
2126
+ function PopoverDescription({
2127
+ className,
2128
+ ...props
2129
+ }) {
2130
+ return /* @__PURE__ */ jsx26(
2131
+ "p",
2132
+ {
2133
+ "data-slot": "popover-description",
2134
+ className: cn("text-muted-foreground", className),
2135
+ ...props
2136
+ }
2137
+ );
2138
+ }
2139
+
2140
+ // src/components/ui/accordion.tsx
2141
+ import { Accordion as AccordionPrimitive } from "radix-ui";
2142
+ import { ChevronDown as ChevronDown2, ChevronUp as ChevronUp2 } from "lucide-react";
2143
+ import { jsx as jsx27, jsxs as jsxs11 } from "react/jsx-runtime";
2144
+ function Accordion({
2145
+ className,
2146
+ ...props
2147
+ }) {
2148
+ return /* @__PURE__ */ jsx27(
2149
+ AccordionPrimitive.Root,
2150
+ {
2151
+ "data-slot": "accordion",
2152
+ className: cn("flex w-full flex-col", className),
2153
+ ...props
2154
+ }
2155
+ );
2156
+ }
2157
+ function AccordionItem({
2158
+ className,
2159
+ ...props
2160
+ }) {
2161
+ return /* @__PURE__ */ jsx27(
2162
+ AccordionPrimitive.Item,
2163
+ {
2164
+ "data-slot": "accordion-item",
2165
+ className: cn("not-last:border-b", className),
2166
+ ...props
2167
+ }
2168
+ );
2169
+ }
2170
+ function AccordionTrigger({
2171
+ className,
2172
+ children,
2173
+ ...props
2174
+ }) {
2175
+ return /* @__PURE__ */ jsx27(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs11(
2176
+ AccordionPrimitive.Trigger,
2177
+ {
2178
+ "data-slot": "accordion-trigger",
2179
+ className: cn(
2180
+ "focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-md py-4 text-left text-sm font-medium hover:underline focus-visible:ring-3 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none disabled:pointer-events-none disabled:opacity-50",
2181
+ className
2182
+ ),
2183
+ ...props,
2184
+ children: [
2185
+ children,
2186
+ /* @__PURE__ */ jsx27(ChevronDown2, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }),
2187
+ /* @__PURE__ */ jsx27(ChevronUp2, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })
2188
+ ]
2189
+ }
2190
+ ) });
2191
+ }
2192
+ function AccordionContent({
2193
+ className,
2194
+ children,
2195
+ ...props
2196
+ }) {
2197
+ return /* @__PURE__ */ jsx27(
2198
+ AccordionPrimitive.Content,
2199
+ {
2200
+ "data-slot": "accordion-content",
2201
+ className: "data-open:animate-accordion-down data-closed:animate-accordion-up text-sm overflow-hidden",
2202
+ ...props,
2203
+ children: /* @__PURE__ */ jsx27(
2204
+ "div",
2205
+ {
2206
+ className: cn(
2207
+ "pt-0 pb-4 [&_a]:hover:text-foreground h-(--radix-accordion-content-height) [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4",
2208
+ className
2209
+ ),
2210
+ children
2211
+ }
2212
+ )
2213
+ }
2214
+ );
2215
+ }
2216
+
2217
+ // src/components/ui/aspect-ratio.tsx
2218
+ import { AspectRatio as AspectRatioPrimitive } from "radix-ui";
2219
+ import { jsx as jsx28 } from "react/jsx-runtime";
2220
+ function AspectRatio({
2221
+ ...props
2222
+ }) {
2223
+ return /* @__PURE__ */ jsx28(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
2224
+ }
2225
+
2226
+ // src/components/ui/context-menu.tsx
2227
+ import { ContextMenu as ContextMenuPrimitive } from "radix-ui";
2228
+ import { ChevronRight as ChevronRight3, Check as Check4 } from "lucide-react";
2229
+ import { jsx as jsx29, jsxs as jsxs12 } from "react/jsx-runtime";
2230
+ function ContextMenu({
2231
+ ...props
2232
+ }) {
2233
+ return /* @__PURE__ */ jsx29(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
2234
+ }
2235
+ function ContextMenuTrigger({
2236
+ className,
2237
+ ...props
2238
+ }) {
2239
+ return /* @__PURE__ */ jsx29(
2240
+ ContextMenuPrimitive.Trigger,
2241
+ {
2242
+ "data-slot": "context-menu-trigger",
2243
+ className: cn("select-none", className),
2244
+ ...props
2245
+ }
2246
+ );
2247
+ }
2248
+ function ContextMenuGroup({
2249
+ ...props
2250
+ }) {
2251
+ return /* @__PURE__ */ jsx29(ContextMenuPrimitive.Group, { "data-slot": "context-menu-group", ...props });
2252
+ }
2253
+ function ContextMenuPortal({
2254
+ ...props
2255
+ }) {
2256
+ return /* @__PURE__ */ jsx29(ContextMenuPrimitive.Portal, { "data-slot": "context-menu-portal", ...props });
2257
+ }
2258
+ function ContextMenuSub({
2259
+ ...props
2260
+ }) {
2261
+ return /* @__PURE__ */ jsx29(ContextMenuPrimitive.Sub, { "data-slot": "context-menu-sub", ...props });
2262
+ }
2263
+ function ContextMenuRadioGroup({
2264
+ ...props
2265
+ }) {
2266
+ return /* @__PURE__ */ jsx29(
2267
+ ContextMenuPrimitive.RadioGroup,
2268
+ {
2269
+ "data-slot": "context-menu-radio-group",
2270
+ ...props
2271
+ }
2272
+ );
2273
+ }
2274
+ function ContextMenuContent({
2275
+ className,
2276
+ ...props
2277
+ }) {
2278
+ return /* @__PURE__ */ jsx29(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx29(
2279
+ ContextMenuPrimitive.Content,
2280
+ {
2281
+ "data-slot": "context-menu-content",
2282
+ className: cn("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 bg-popover text-popover-foreground min-w-36 rounded-md p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto", className),
2283
+ ...props
2284
+ }
2285
+ ) });
2286
+ }
2287
+ function ContextMenuItem({
2288
+ className,
2289
+ inset,
2290
+ variant = "default",
2291
+ ...props
2292
+ }) {
2293
+ return /* @__PURE__ */ jsx29(
2294
+ ContextMenuPrimitive.Item,
2295
+ {
2296
+ "data-slot": "context-menu-item",
2297
+ "data-inset": inset,
2298
+ "data-variant": variant,
2299
+ className: cn(
2300
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 group/context-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2301
+ className
2302
+ ),
2303
+ ...props
2304
+ }
2305
+ );
2306
+ }
2307
+ function ContextMenuSubTrigger({
2308
+ className,
2309
+ inset,
2310
+ children,
2311
+ ...props
2312
+ }) {
2313
+ return /* @__PURE__ */ jsxs12(
2314
+ ContextMenuPrimitive.SubTrigger,
2315
+ {
2316
+ "data-slot": "context-menu-sub-trigger",
2317
+ "data-inset": inset,
2318
+ className: cn(
2319
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2320
+ className
2321
+ ),
2322
+ ...props,
2323
+ children: [
2324
+ children,
2325
+ /* @__PURE__ */ jsx29(ChevronRight3, { className: "ml-auto" })
2326
+ ]
2327
+ }
2328
+ );
2329
+ }
2330
+ function ContextMenuSubContent({
2331
+ className,
2332
+ ...props
2333
+ }) {
2334
+ return /* @__PURE__ */ jsx29(
2335
+ ContextMenuPrimitive.SubContent,
2336
+ {
2337
+ "data-slot": "context-menu-sub-content",
2338
+ className: cn("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 bg-popover text-popover-foreground min-w-32 rounded-md border p-1 shadow-lg duration-100 z-50 origin-(--radix-context-menu-content-transform-origin) overflow-hidden", className),
2339
+ ...props
2340
+ }
2341
+ );
2342
+ }
2343
+ function ContextMenuCheckboxItem({
2344
+ className,
2345
+ children,
2346
+ checked,
2347
+ inset,
2348
+ ...props
2349
+ }) {
2350
+ return /* @__PURE__ */ jsxs12(
2351
+ ContextMenuPrimitive.CheckboxItem,
2352
+ {
2353
+ "data-slot": "context-menu-checkbox-item",
2354
+ "data-inset": inset,
2355
+ className: cn(
2356
+ "focus:bg-accent focus:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2357
+ className
2358
+ ),
2359
+ checked,
2360
+ ...props,
2361
+ children: [
2362
+ /* @__PURE__ */ jsx29("span", { className: "absolute right-2 pointer-events-none", children: /* @__PURE__ */ jsx29(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(Check4, {}) }) }),
2363
+ children
2364
+ ]
2365
+ }
2366
+ );
2367
+ }
2368
+ function ContextMenuRadioItem({
2369
+ className,
2370
+ children,
2371
+ inset,
2372
+ ...props
2373
+ }) {
2374
+ return /* @__PURE__ */ jsxs12(
2375
+ ContextMenuPrimitive.RadioItem,
2376
+ {
2377
+ "data-slot": "context-menu-radio-item",
2378
+ "data-inset": inset,
2379
+ className: cn(
2380
+ "focus:bg-accent focus:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2381
+ className
2382
+ ),
2383
+ ...props,
2384
+ children: [
2385
+ /* @__PURE__ */ jsx29("span", { className: "absolute right-2 pointer-events-none", children: /* @__PURE__ */ jsx29(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(Check4, {}) }) }),
2386
+ children
2387
+ ]
2388
+ }
2389
+ );
2390
+ }
2391
+ function ContextMenuLabel({
2392
+ className,
2393
+ inset,
2394
+ ...props
2395
+ }) {
2396
+ return /* @__PURE__ */ jsx29(
2397
+ ContextMenuPrimitive.Label,
2398
+ {
2399
+ "data-slot": "context-menu-label",
2400
+ "data-inset": inset,
2401
+ className: cn("text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8", className),
2402
+ ...props
2403
+ }
2404
+ );
2405
+ }
2406
+ function ContextMenuSeparator({
2407
+ className,
2408
+ ...props
2409
+ }) {
2410
+ return /* @__PURE__ */ jsx29(
2411
+ ContextMenuPrimitive.Separator,
2412
+ {
2413
+ "data-slot": "context-menu-separator",
2414
+ className: cn("bg-border -mx-1 my-1 h-px", className),
2415
+ ...props
2416
+ }
2417
+ );
2418
+ }
2419
+ function ContextMenuShortcut({
2420
+ className,
2421
+ ...props
2422
+ }) {
2423
+ return /* @__PURE__ */ jsx29(
2424
+ "span",
2425
+ {
2426
+ "data-slot": "context-menu-shortcut",
2427
+ className: cn("text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className),
2428
+ ...props
2429
+ }
2430
+ );
2431
+ }
2432
+
2433
+ // src/components/ui/hover-card.tsx
2434
+ import { HoverCard as HoverCardPrimitive } from "radix-ui";
2435
+ import { jsx as jsx30 } from "react/jsx-runtime";
2436
+ function HoverCard({
2437
+ ...props
2438
+ }) {
2439
+ return /* @__PURE__ */ jsx30(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
2440
+ }
2441
+ function HoverCardTrigger({
2442
+ ...props
2443
+ }) {
2444
+ return /* @__PURE__ */ jsx30(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
2445
+ }
2446
+ function HoverCardContent({
2447
+ className,
2448
+ align = "center",
2449
+ sideOffset = 4,
2450
+ ...props
2451
+ }) {
2452
+ return /* @__PURE__ */ jsx30(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx30(
2453
+ HoverCardPrimitive.Content,
2454
+ {
2455
+ "data-slot": "hover-card-content",
2456
+ align,
2457
+ sideOffset,
2458
+ className: cn(
2459
+ "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 bg-popover text-popover-foreground w-64 rounded-lg p-4 text-sm shadow-md ring-1 duration-100 z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden",
2460
+ className
2461
+ ),
2462
+ ...props
2463
+ }
2464
+ ) });
2465
+ }
2466
+
2467
+ // src/components/ui/menubar.tsx
2468
+ import { Menubar as MenubarPrimitive } from "radix-ui";
2469
+ import { Check as Check5, ChevronRight as ChevronRight4 } from "lucide-react";
2470
+ import { jsx as jsx31, jsxs as jsxs13 } from "react/jsx-runtime";
2471
+ function Menubar({
2472
+ className,
2473
+ ...props
2474
+ }) {
2475
+ return /* @__PURE__ */ jsx31(
2476
+ MenubarPrimitive.Root,
2477
+ {
2478
+ "data-slot": "menubar",
2479
+ className: cn("bg-background h-9 gap-1 rounded-md border p-1 shadow-xs flex items-center", className),
2480
+ ...props
2481
+ }
2482
+ );
2483
+ }
2484
+ function MenubarMenu({
2485
+ ...props
2486
+ }) {
2487
+ return /* @__PURE__ */ jsx31(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
2488
+ }
2489
+ function MenubarGroup({
2490
+ ...props
2491
+ }) {
2492
+ return /* @__PURE__ */ jsx31(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
2493
+ }
2494
+ function MenubarPortal({
2495
+ ...props
2496
+ }) {
2497
+ return /* @__PURE__ */ jsx31(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
2498
+ }
2499
+ function MenubarRadioGroup({
2500
+ ...props
2501
+ }) {
2502
+ return /* @__PURE__ */ jsx31(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
2503
+ }
2504
+ function MenubarTrigger({
2505
+ className,
2506
+ ...props
2507
+ }) {
2508
+ return /* @__PURE__ */ jsx31(
2509
+ MenubarPrimitive.Trigger,
2510
+ {
2511
+ "data-slot": "menubar-trigger",
2512
+ className: cn(
2513
+ "hover:bg-muted aria-expanded:bg-muted rounded-sm px-2 py-1 text-sm font-medium flex items-center outline-hidden select-none",
2514
+ className
2515
+ ),
2516
+ ...props
2517
+ }
2518
+ );
2519
+ }
2520
+ function MenubarContent({
2521
+ className,
2522
+ align = "start",
2523
+ alignOffset = -4,
2524
+ sideOffset = 8,
2525
+ ...props
2526
+ }) {
2527
+ return /* @__PURE__ */ jsx31(MenubarPortal, { children: /* @__PURE__ */ jsx31(
2528
+ MenubarPrimitive.Content,
2529
+ {
2530
+ "data-slot": "menubar-content",
2531
+ align,
2532
+ alignOffset,
2533
+ sideOffset,
2534
+ className: cn("bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 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-md p-1 shadow-md ring-1 duration-100 z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden", className),
2535
+ ...props
2536
+ }
2537
+ ) });
2538
+ }
2539
+ function MenubarItem({
2540
+ className,
2541
+ inset,
2542
+ variant = "default",
2543
+ ...props
2544
+ }) {
2545
+ return /* @__PURE__ */ jsx31(
2546
+ MenubarPrimitive.Item,
2547
+ {
2548
+ "data-slot": "menubar-item",
2549
+ "data-inset": inset,
2550
+ "data-variant": variant,
2551
+ className: cn(
2552
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 group/menubar-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2553
+ className
2554
+ ),
2555
+ ...props
2556
+ }
2557
+ );
2558
+ }
2559
+ function MenubarCheckboxItem({
2560
+ className,
2561
+ children,
2562
+ checked,
2563
+ inset,
2564
+ ...props
2565
+ }) {
2566
+ return /* @__PURE__ */ jsxs13(
2567
+ MenubarPrimitive.CheckboxItem,
2568
+ {
2569
+ "data-slot": "menubar-checkbox-item",
2570
+ "data-inset": inset,
2571
+ className: cn(
2572
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm data-inset:pl-8 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2573
+ className
2574
+ ),
2575
+ checked,
2576
+ ...props,
2577
+ children: [
2578
+ /* @__PURE__ */ jsx31("span", { className: "left-2 size-4 [&_svg:not([class*='size-'])]:size-4 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx31(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(Check5, {}) }) }),
2579
+ children
2580
+ ]
2581
+ }
2582
+ );
2583
+ }
2584
+ function MenubarRadioItem({
2585
+ className,
2586
+ children,
2587
+ inset,
2588
+ ...props
2589
+ }) {
2590
+ return /* @__PURE__ */ jsxs13(
2591
+ MenubarPrimitive.RadioItem,
2592
+ {
2593
+ "data-slot": "menubar-radio-item",
2594
+ "data-inset": inset,
2595
+ className: cn(
2596
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-md py-1.5 pr-2 pl-8 text-sm data-disabled:opacity-50 data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
2597
+ className
2598
+ ),
2599
+ ...props,
2600
+ children: [
2601
+ /* @__PURE__ */ jsx31("span", { className: "left-2 size-4 [&_svg:not([class*='size-'])]:size-4 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx31(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(Check5, {}) }) }),
2602
+ children
2603
+ ]
2604
+ }
2605
+ );
2606
+ }
2607
+ function MenubarLabel({
2608
+ className,
2609
+ inset,
2610
+ ...props
2611
+ }) {
2612
+ return /* @__PURE__ */ jsx31(
2613
+ MenubarPrimitive.Label,
2614
+ {
2615
+ "data-slot": "menubar-label",
2616
+ "data-inset": inset,
2617
+ className: cn("px-2 py-1.5 text-sm font-medium data-inset:pl-8", className),
2618
+ ...props
2619
+ }
2620
+ );
2621
+ }
2622
+ function MenubarSeparator({
2623
+ className,
2624
+ ...props
2625
+ }) {
2626
+ return /* @__PURE__ */ jsx31(
2627
+ MenubarPrimitive.Separator,
2628
+ {
2629
+ "data-slot": "menubar-separator",
2630
+ className: cn("bg-border -mx-1 my-1 h-px", className),
2631
+ ...props
2632
+ }
2633
+ );
2634
+ }
2635
+ function MenubarShortcut({
2636
+ className,
2637
+ ...props
2638
+ }) {
2639
+ return /* @__PURE__ */ jsx31(
2640
+ "span",
2641
+ {
2642
+ "data-slot": "menubar-shortcut",
2643
+ className: cn("text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest ml-auto", className),
2644
+ ...props
2645
+ }
2646
+ );
2647
+ }
2648
+ function MenubarSub({
2649
+ ...props
2650
+ }) {
2651
+ return /* @__PURE__ */ jsx31(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
2652
+ }
2653
+ function MenubarSubTrigger({
2654
+ className,
2655
+ inset,
2656
+ children,
2657
+ ...props
2658
+ }) {
2659
+ return /* @__PURE__ */ jsxs13(
2660
+ MenubarPrimitive.SubTrigger,
2661
+ {
2662
+ "data-slot": "menubar-sub-trigger",
2663
+ "data-inset": inset,
2664
+ className: cn(
2665
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-none select-none",
2666
+ className
2667
+ ),
2668
+ ...props,
2669
+ children: [
2670
+ children,
2671
+ /* @__PURE__ */ jsx31(ChevronRight4, { className: "ml-auto size-4" })
2672
+ ]
2673
+ }
2674
+ );
2675
+ }
2676
+ function MenubarSubContent({
2677
+ className,
2678
+ ...props
2679
+ }) {
2680
+ return /* @__PURE__ */ jsx31(
2681
+ MenubarPrimitive.SubContent,
2682
+ {
2683
+ "data-slot": "menubar-sub-content",
2684
+ className: cn("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-32 rounded-md p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-menubar-content-transform-origin) overflow-hidden", className),
2685
+ ...props
2686
+ }
2687
+ );
2688
+ }
2689
+
2690
+ // src/components/ui/navigation-menu.tsx
2691
+ import { cva as cva6 } from "class-variance-authority";
2692
+ import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
2693
+ import { ChevronDown as ChevronDown3 } from "lucide-react";
2694
+ import { jsx as jsx32, jsxs as jsxs14 } from "react/jsx-runtime";
2695
+ function NavigationMenu({
2696
+ className,
2697
+ children,
2698
+ viewport = true,
2699
+ ...props
2700
+ }) {
2701
+ return /* @__PURE__ */ jsxs14(
2702
+ NavigationMenuPrimitive.Root,
2703
+ {
2704
+ "data-slot": "navigation-menu",
2705
+ "data-viewport": viewport,
2706
+ className: cn(
2707
+ "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
2708
+ className
2709
+ ),
2710
+ ...props,
2711
+ children: [
2712
+ children,
2713
+ viewport && /* @__PURE__ */ jsx32(NavigationMenuViewport, {})
2714
+ ]
2715
+ }
2716
+ );
2717
+ }
2718
+ function NavigationMenuList({
2719
+ className,
2720
+ ...props
2721
+ }) {
2722
+ return /* @__PURE__ */ jsx32(
2723
+ NavigationMenuPrimitive.List,
2724
+ {
2725
+ "data-slot": "navigation-menu-list",
2726
+ className: cn(
2727
+ "gap-0 group flex flex-1 list-none items-center justify-center",
2728
+ className
2729
+ ),
2730
+ ...props
2731
+ }
2732
+ );
2733
+ }
2734
+ function NavigationMenuItem({
2735
+ className,
2736
+ ...props
2737
+ }) {
2738
+ return /* @__PURE__ */ jsx32(
2739
+ NavigationMenuPrimitive.Item,
2740
+ {
2741
+ "data-slot": "navigation-menu-item",
2742
+ className: cn("relative", className),
2743
+ ...props
2744
+ }
2745
+ );
2746
+ }
2747
+ var navigationMenuTriggerStyle = cva6(
2748
+ "bg-background hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-md px-4 py-2 text-sm font-medium transition-all focus-visible:ring-3 focus-visible:outline-1 disabled:opacity-50 group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center disabled:pointer-events-none outline-none"
2749
+ );
2750
+ function NavigationMenuTrigger({
2751
+ className,
2752
+ children,
2753
+ ...props
2754
+ }) {
2755
+ return /* @__PURE__ */ jsxs14(
2756
+ NavigationMenuPrimitive.Trigger,
2757
+ {
2758
+ "data-slot": "navigation-menu-trigger",
2759
+ className: cn(navigationMenuTriggerStyle(), "group", className),
2760
+ ...props,
2761
+ children: [
2762
+ children,
2763
+ " ",
2764
+ /* @__PURE__ */ jsx32(ChevronDown3, { className: "relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180", "aria-hidden": "true" })
2765
+ ]
2766
+ }
2767
+ );
2768
+ }
2769
+ function NavigationMenuContent({
2770
+ className,
2771
+ ...props
2772
+ }) {
2773
+ return /* @__PURE__ */ jsx32(
2774
+ NavigationMenuPrimitive.Content,
2775
+ {
2776
+ "data-slot": "navigation-menu-content",
2777
+ className: cn(
2778
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-2 pr-2.5 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300 top-0 left-0 w-full group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto",
2779
+ className
2780
+ ),
2781
+ ...props
2782
+ }
2783
+ );
2784
+ }
2785
+ function NavigationMenuViewport({
2786
+ className,
2787
+ ...props
2788
+ }) {
2789
+ return /* @__PURE__ */ jsx32(
2790
+ "div",
2791
+ {
2792
+ className: cn(
2793
+ "absolute top-full left-0 isolate z-50 flex justify-center"
2794
+ ),
2795
+ children: /* @__PURE__ */ jsx32(
2796
+ NavigationMenuPrimitive.Viewport,
2797
+ {
2798
+ "data-slot": "navigation-menu-viewport",
2799
+ className: cn(
2800
+ "bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-95 data-open:zoom-in-90 ring-foreground/10 rounded-lg shadow ring-1 duration-100 origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden md:w-(--radix-navigation-menu-viewport-width)",
2801
+ className
2802
+ ),
2803
+ ...props
2804
+ }
2805
+ )
2806
+ }
2807
+ );
2808
+ }
2809
+ function NavigationMenuLink({
2810
+ className,
2811
+ ...props
2812
+ }) {
2813
+ return /* @__PURE__ */ jsx32(
2814
+ NavigationMenuPrimitive.Link,
2815
+ {
2816
+ "data-slot": "navigation-menu-link",
2817
+ className: cn("data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4", className),
2818
+ ...props
2819
+ }
2820
+ );
2821
+ }
2822
+ function NavigationMenuIndicator({
2823
+ className,
2824
+ ...props
2825
+ }) {
2826
+ return /* @__PURE__ */ jsx32(
2827
+ NavigationMenuPrimitive.Indicator,
2828
+ {
2829
+ "data-slot": "navigation-menu-indicator",
2830
+ className: cn(
2831
+ "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden",
2832
+ className
2833
+ ),
2834
+ ...props,
2835
+ children: /* @__PURE__ */ jsx32("div", { className: "bg-border rounded-tl-sm shadow-md relative top-[60%] h-2 w-2 rotate-45" })
2836
+ }
2837
+ );
2838
+ }
2839
+
2840
+ // src/components/ui/pagination.tsx
2841
+ import { ChevronLeft, ChevronRight as ChevronRight5, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
2842
+ import { jsx as jsx33, jsxs as jsxs15 } from "react/jsx-runtime";
2843
+ function Pagination({ className, ...props }) {
2844
+ return /* @__PURE__ */ jsx33(
2845
+ "nav",
2846
+ {
2847
+ role: "navigation",
2848
+ "aria-label": "pagination",
2849
+ "data-slot": "pagination",
2850
+ className: cn(
2851
+ "mx-auto flex w-full justify-center",
2852
+ className
2853
+ ),
2854
+ ...props
2855
+ }
2856
+ );
2857
+ }
2858
+ function PaginationContent({
2859
+ className,
2860
+ ...props
2861
+ }) {
2862
+ return /* @__PURE__ */ jsx33(
2863
+ "ul",
2864
+ {
2865
+ "data-slot": "pagination-content",
2866
+ className: cn("gap-1 flex items-center", className),
2867
+ ...props
2868
+ }
2869
+ );
2870
+ }
2871
+ function PaginationItem({ ...props }) {
2872
+ return /* @__PURE__ */ jsx33("li", { "data-slot": "pagination-item", ...props });
2873
+ }
2874
+ function PaginationLink({
2875
+ className,
2876
+ isActive,
2877
+ size = "icon",
2878
+ ...props
2879
+ }) {
2880
+ return /* @__PURE__ */ jsx33(
2881
+ Button,
2882
+ {
2883
+ asChild: true,
2884
+ variant: isActive ? "outline" : "ghost",
2885
+ size,
2886
+ className: cn(className),
2887
+ children: /* @__PURE__ */ jsx33(
2888
+ "a",
2889
+ {
2890
+ "aria-current": isActive ? "page" : void 0,
2891
+ "data-slot": "pagination-link",
2892
+ "data-active": isActive,
2893
+ ...props
2894
+ }
2895
+ )
2896
+ }
2897
+ );
2898
+ }
2899
+ function PaginationPrevious({
2900
+ className,
2901
+ text = "Previous",
2902
+ ...props
2903
+ }) {
2904
+ return /* @__PURE__ */ jsxs15(
2905
+ PaginationLink,
2906
+ {
2907
+ "aria-label": "Go to previous page",
2908
+ className: cn("pl-2!", className),
2909
+ ...props,
2910
+ size: "default",
2911
+ children: [
2912
+ /* @__PURE__ */ jsx33(ChevronLeft, { "data-icon": "inline-start" }),
2913
+ /* @__PURE__ */ jsx33("span", { className: "hidden sm:block", children: text })
2914
+ ]
2915
+ }
2916
+ );
2917
+ }
2918
+ function PaginationNext({
2919
+ className,
2920
+ text = "Next",
2921
+ ...props
2922
+ }) {
2923
+ return /* @__PURE__ */ jsxs15(
2924
+ PaginationLink,
2925
+ {
2926
+ "aria-label": "Go to next page",
2927
+ className: cn("pr-2!", className),
2928
+ ...props,
2929
+ size: "default",
2930
+ children: [
2931
+ /* @__PURE__ */ jsx33("span", { className: "hidden sm:block", children: text }),
2932
+ /* @__PURE__ */ jsx33(ChevronRight5, { "data-icon": "inline-end" })
2933
+ ]
2934
+ }
2935
+ );
2936
+ }
2937
+ function PaginationEllipsis({
2938
+ className,
2939
+ ...props
2940
+ }) {
2941
+ return /* @__PURE__ */ jsxs15(
2942
+ "span",
2943
+ {
2944
+ "aria-hidden": true,
2945
+ "data-slot": "pagination-ellipsis",
2946
+ className: cn(
2947
+ "size-9 [&_svg:not([class*='size-'])]:size-4 flex items-center justify-center",
2948
+ className
2949
+ ),
2950
+ ...props,
2951
+ children: [
2952
+ /* @__PURE__ */ jsx33(MoreHorizontal2, {}),
2953
+ /* @__PURE__ */ jsx33("span", { className: "sr-only", children: "More pages" })
2954
+ ]
2955
+ }
2956
+ );
2957
+ }
2958
+
2959
+ // src/components/ui/radio-group.tsx
2960
+ import { RadioGroup as RadioGroupPrimitive } from "radix-ui";
2961
+ import { jsx as jsx34 } from "react/jsx-runtime";
2962
+ function RadioGroup({
2963
+ className,
2964
+ ...props
2965
+ }) {
2966
+ return /* @__PURE__ */ jsx34(
2967
+ RadioGroupPrimitive.Root,
2968
+ {
2969
+ "data-slot": "radio-group",
2970
+ className: cn("grid gap-3 w-full", className),
2971
+ ...props
2972
+ }
2973
+ );
2974
+ }
2975
+ function RadioGroupItem({
2976
+ className,
2977
+ ...props
2978
+ }) {
2979
+ return /* @__PURE__ */ jsx34(
2980
+ RadioGroupPrimitive.Item,
2981
+ {
2982
+ "data-slot": "radio-group-item",
2983
+ className: cn(
2984
+ "border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4 rounded-full focus-visible:ring-3 aria-invalid:ring-3 group/radio-group-item peer relative aspect-square shrink-0 border outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50",
2985
+ className
2986
+ ),
2987
+ ...props,
2988
+ children: /* @__PURE__ */ jsx34(
2989
+ RadioGroupPrimitive.Indicator,
2990
+ {
2991
+ "data-slot": "radio-group-indicator",
2992
+ className: "flex size-4 items-center justify-center",
2993
+ children: /* @__PURE__ */ jsx34("span", { className: "bg-primary-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full" })
2994
+ }
2995
+ )
2996
+ }
2997
+ );
2998
+ }
2999
+
3000
+ // src/components/ui/slider.tsx
3001
+ import * as React2 from "react";
3002
+ import { Slider as SliderPrimitive } from "radix-ui";
3003
+ import { jsx as jsx35, jsxs as jsxs16 } from "react/jsx-runtime";
3004
+ function Slider({
3005
+ className,
3006
+ defaultValue,
3007
+ value,
3008
+ min = 0,
3009
+ max = 100,
3010
+ ...props
3011
+ }) {
3012
+ const _values = React2.useMemo(
3013
+ () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
3014
+ [value, defaultValue, min, max]
3015
+ );
3016
+ return /* @__PURE__ */ jsxs16(
3017
+ SliderPrimitive.Root,
3018
+ {
3019
+ "data-slot": "slider",
3020
+ defaultValue,
3021
+ value,
3022
+ min,
3023
+ max,
3024
+ className: cn(
3025
+ "data-vertical:min-h-40 relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:w-auto data-vertical:flex-col",
3026
+ className
3027
+ ),
3028
+ ...props,
3029
+ children: [
3030
+ /* @__PURE__ */ jsx35(
3031
+ SliderPrimitive.Track,
3032
+ {
3033
+ "data-slot": "slider-track",
3034
+ className: "bg-muted rounded-full data-horizontal:h-1.5 data-vertical:w-1.5 relative grow overflow-hidden data-horizontal:w-full data-vertical:h-full",
3035
+ children: /* @__PURE__ */ jsx35(
3036
+ SliderPrimitive.Range,
3037
+ {
3038
+ "data-slot": "slider-range",
3039
+ className: "bg-primary absolute select-none data-horizontal:h-full data-vertical:w-full"
3040
+ }
3041
+ )
3042
+ }
3043
+ ),
3044
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx35(
3045
+ SliderPrimitive.Thumb,
3046
+ {
3047
+ "data-slot": "slider-thumb",
3048
+ className: "border-primary ring-ring/50 size-4 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50"
3049
+ },
3050
+ index
3051
+ ))
3052
+ ]
3053
+ }
3054
+ );
3055
+ }
3056
+
3057
+ // src/components/ui/switch.tsx
3058
+ import { Switch as SwitchPrimitive } from "radix-ui";
3059
+ import { jsx as jsx36 } from "react/jsx-runtime";
3060
+ function Switch({
3061
+ className,
3062
+ size = "default",
3063
+ ...props
3064
+ }) {
3065
+ return /* @__PURE__ */ jsx36(
3066
+ SwitchPrimitive.Root,
3067
+ {
3068
+ "data-slot": "switch",
3069
+ "data-size": size,
3070
+ className: cn(
3071
+ "data-checked:bg-primary data-unchecked:bg-input 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 dark:data-unchecked:bg-input/80 shrink-0 rounded-full border border-transparent shadow-xs focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50",
3072
+ className
3073
+ ),
3074
+ ...props,
3075
+ children: /* @__PURE__ */ jsx36(
3076
+ SwitchPrimitive.Thumb,
3077
+ {
3078
+ "data-slot": "switch-thumb",
3079
+ className: "bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full 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)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 pointer-events-none block ring-0 transition-transform"
3080
+ }
3081
+ )
3082
+ }
3083
+ );
3084
+ }
3085
+
3086
+ // src/components/ui/toggle.tsx
3087
+ import { cva as cva7 } from "class-variance-authority";
3088
+ import { Toggle as TogglePrimitive } from "radix-ui";
3089
+ import { jsx as jsx37 } from "react/jsx-runtime";
3090
+ var toggleVariants = cva7(
3091
+ "hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive gap-1 rounded-md text-sm font-medium transition-[color,box-shadow] [&_svg:not([class*='size-'])]:size-4 group/toggle hover:bg-muted inline-flex items-center justify-center whitespace-nowrap outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
3092
+ {
3093
+ variants: {
3094
+ variant: {
3095
+ default: "bg-transparent",
3096
+ outline: "border-input hover:bg-muted border bg-transparent shadow-xs"
3097
+ },
3098
+ size: {
3099
+ default: "h-9 min-w-9 px-2",
3100
+ sm: "h-8 min-w-8 px-1.5",
3101
+ lg: "h-10 min-w-10 px-2.5"
3102
+ }
3103
+ },
3104
+ defaultVariants: {
3105
+ variant: "default",
3106
+ size: "default"
3107
+ }
3108
+ }
3109
+ );
3110
+ function Toggle({
3111
+ className,
3112
+ variant = "default",
3113
+ size = "default",
3114
+ ...props
3115
+ }) {
3116
+ return /* @__PURE__ */ jsx37(
3117
+ TogglePrimitive.Root,
3118
+ {
3119
+ "data-slot": "toggle",
3120
+ className: cn(toggleVariants({ variant, size, className })),
3121
+ ...props
3122
+ }
3123
+ );
3124
+ }
3125
+
3126
+ // src/components/ui/toggle-group.tsx
3127
+ import * as React3 from "react";
3128
+ import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
3129
+ import { jsx as jsx38 } from "react/jsx-runtime";
3130
+ var ToggleGroupContext = React3.createContext({
3131
+ size: "default",
3132
+ variant: "default",
3133
+ spacing: 0,
3134
+ orientation: "horizontal"
3135
+ });
3136
+ function ToggleGroup({
3137
+ className,
3138
+ variant,
3139
+ size,
3140
+ spacing = 0,
3141
+ orientation = "horizontal",
3142
+ children,
3143
+ ...props
3144
+ }) {
3145
+ return /* @__PURE__ */ jsx38(
3146
+ ToggleGroupPrimitive.Root,
3147
+ {
3148
+ "data-slot": "toggle-group",
3149
+ "data-variant": variant,
3150
+ "data-size": size,
3151
+ "data-spacing": spacing,
3152
+ "data-orientation": orientation,
3153
+ style: { "--gap": spacing },
3154
+ className: cn(
3155
+ "rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-vertical:flex-col data-vertical:items-stretch",
3156
+ className
3157
+ ),
3158
+ ...props,
3159
+ children: /* @__PURE__ */ jsx38(
3160
+ ToggleGroupContext.Provider,
3161
+ {
3162
+ value: { variant, size, spacing, orientation },
3163
+ children
3164
+ }
3165
+ )
3166
+ }
3167
+ );
3168
+ }
3169
+ function ToggleGroupItem({
3170
+ className,
3171
+ children,
3172
+ variant = "default",
3173
+ size = "default",
3174
+ ...props
3175
+ }) {
3176
+ const context = React3.useContext(ToggleGroupContext);
3177
+ return /* @__PURE__ */ jsx38(
3178
+ ToggleGroupPrimitive.Item,
3179
+ {
3180
+ "data-slot": "toggle-group-item",
3181
+ "data-variant": context.variant || variant,
3182
+ "data-size": context.size || size,
3183
+ "data-spacing": context.spacing,
3184
+ className: cn(
3185
+ "data-[state=on]:bg-muted group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t",
3186
+ toggleVariants({
3187
+ variant: context.variant || variant,
3188
+ size: context.size || size
3189
+ }),
3190
+ className
3191
+ ),
3192
+ ...props,
3193
+ children
3194
+ }
3195
+ );
3196
+ }
3197
+
3198
+ // src/components/ui/drawer.tsx
3199
+ import { Drawer as DrawerPrimitive } from "vaul";
3200
+ import { jsx as jsx39, jsxs as jsxs17 } from "react/jsx-runtime";
3201
+ function Drawer({
3202
+ ...props
3203
+ }) {
3204
+ return /* @__PURE__ */ jsx39(DrawerPrimitive.Root, { "data-slot": "drawer", ...props });
3205
+ }
3206
+ function DrawerTrigger({
3207
+ ...props
3208
+ }) {
3209
+ return /* @__PURE__ */ jsx39(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
3210
+ }
3211
+ function DrawerPortal({
3212
+ ...props
3213
+ }) {
3214
+ return /* @__PURE__ */ jsx39(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
3215
+ }
3216
+ function DrawerClose({
3217
+ ...props
3218
+ }) {
3219
+ return /* @__PURE__ */ jsx39(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
3220
+ }
3221
+ function DrawerOverlay({
3222
+ className,
3223
+ ...props
3224
+ }) {
3225
+ return /* @__PURE__ */ jsx39(
3226
+ DrawerPrimitive.Overlay,
3227
+ {
3228
+ "data-slot": "drawer-overlay",
3229
+ className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className),
3230
+ ...props
3231
+ }
3232
+ );
3233
+ }
3234
+ function DrawerContent({
3235
+ className,
3236
+ children,
3237
+ ...props
3238
+ }) {
3239
+ return /* @__PURE__ */ jsxs17(DrawerPortal, { "data-slot": "drawer-portal", children: [
3240
+ /* @__PURE__ */ jsx39(DrawerOverlay, {}),
3241
+ /* @__PURE__ */ jsxs17(
3242
+ DrawerPrimitive.Content,
3243
+ {
3244
+ "data-slot": "drawer-content",
3245
+ className: cn(
3246
+ "bg-background flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm group/drawer-content fixed z-50",
3247
+ className
3248
+ ),
3249
+ ...props,
3250
+ children: [
3251
+ /* @__PURE__ */ jsx39("div", { className: "bg-muted mt-4 h-1.5 w-[100px] rounded-full mx-auto hidden shrink-0 group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
3252
+ children
3253
+ ]
3254
+ }
3255
+ )
3256
+ ] });
3257
+ }
3258
+ function DrawerHeader({ className, ...props }) {
3259
+ return /* @__PURE__ */ jsx39(
3260
+ "div",
3261
+ {
3262
+ "data-slot": "drawer-header",
3263
+ className: cn("gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left flex flex-col", className),
3264
+ ...props
3265
+ }
3266
+ );
3267
+ }
3268
+ function DrawerFooter({ className, ...props }) {
3269
+ return /* @__PURE__ */ jsx39(
3270
+ "div",
3271
+ {
3272
+ "data-slot": "drawer-footer",
3273
+ className: cn("gap-2 p-4 mt-auto flex flex-col", className),
3274
+ ...props
3275
+ }
3276
+ );
3277
+ }
3278
+ function DrawerTitle({
3279
+ className,
3280
+ ...props
3281
+ }) {
3282
+ return /* @__PURE__ */ jsx39(
3283
+ DrawerPrimitive.Title,
3284
+ {
3285
+ "data-slot": "drawer-title",
3286
+ className: cn("text-foreground font-medium", className),
3287
+ ...props
3288
+ }
3289
+ );
3290
+ }
3291
+ function DrawerDescription({
3292
+ className,
3293
+ ...props
3294
+ }) {
3295
+ return /* @__PURE__ */ jsx39(
3296
+ DrawerPrimitive.Description,
3297
+ {
3298
+ "data-slot": "drawer-description",
3299
+ className: cn("text-muted-foreground text-sm", className),
3300
+ ...props
3301
+ }
3302
+ );
3303
+ }
3304
+
3305
+ // src/components/ui/input-otp.tsx
3306
+ import * as React4 from "react";
3307
+ import { OTPInput, OTPInputContext } from "input-otp";
3308
+ import { Minus } from "lucide-react";
3309
+ import { jsx as jsx40, jsxs as jsxs18 } from "react/jsx-runtime";
3310
+ function InputOTP({
3311
+ className,
3312
+ containerClassName,
3313
+ ...props
3314
+ }) {
3315
+ return /* @__PURE__ */ jsx40(
3316
+ OTPInput,
3317
+ {
3318
+ "data-slot": "input-otp",
3319
+ containerClassName: cn(
3320
+ "cn-input-otp flex items-center has-disabled:opacity-50",
3321
+ containerClassName
3322
+ ),
3323
+ spellCheck: false,
3324
+ className: cn(
3325
+ "disabled:cursor-not-allowed",
3326
+ className
3327
+ ),
3328
+ ...props
3329
+ }
3330
+ );
3331
+ }
3332
+ function InputOTPGroup({ className, ...props }) {
3333
+ return /* @__PURE__ */ jsx40(
3334
+ "div",
3335
+ {
3336
+ "data-slot": "input-otp-group",
3337
+ className: cn("has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 has-aria-invalid:border-destructive rounded-md has-aria-invalid:ring-3 flex items-center", className),
3338
+ ...props
3339
+ }
3340
+ );
3341
+ }
3342
+ function InputOTPSlot({
3343
+ index,
3344
+ className,
3345
+ ...props
3346
+ }) {
3347
+ const inputOTPContext = React4.useContext(OTPInputContext);
3348
+ const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
3349
+ return /* @__PURE__ */ jsxs18(
3350
+ "div",
3351
+ {
3352
+ "data-slot": "input-otp-slot",
3353
+ "data-active": isActive,
3354
+ className: cn(
3355
+ "dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-3 relative flex items-center justify-center data-[active=true]:z-10",
3356
+ className
3357
+ ),
3358
+ ...props,
3359
+ children: [
3360
+ char,
3361
+ hasFakeCaret && /* @__PURE__ */ jsx40("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx40("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
3362
+ ]
3363
+ }
3364
+ );
3365
+ }
3366
+ function InputOTPSeparator({ ...props }) {
3367
+ return /* @__PURE__ */ jsx40(
3368
+ "div",
3369
+ {
3370
+ "data-slot": "input-otp-separator",
3371
+ className: "[&_svg:not([class*='size-'])]:size-4 flex items-center",
3372
+ role: "separator",
3373
+ ...props,
3374
+ children: /* @__PURE__ */ jsx40(Minus, {})
3375
+ }
3376
+ );
3377
+ }
3378
+
3379
+ // src/components/ui/sonner.tsx
3380
+ import { useTheme } from "next-themes";
3381
+ import { Toaster as Sonner } from "sonner";
3382
+ import { CircleCheck, Info, AlertTriangle, AlertOctagon, Loader2 } from "lucide-react";
3383
+ import { jsx as jsx41 } from "react/jsx-runtime";
3384
+ var Toaster = ({ ...props }) => {
3385
+ const { theme = "system" } = useTheme();
3386
+ return /* @__PURE__ */ jsx41(
3387
+ Sonner,
3388
+ {
3389
+ theme,
3390
+ className: "toaster group",
3391
+ icons: {
3392
+ success: /* @__PURE__ */ jsx41(CircleCheck, { className: "size-4" }),
3393
+ info: /* @__PURE__ */ jsx41(Info, { className: "size-4" }),
3394
+ warning: /* @__PURE__ */ jsx41(AlertTriangle, { className: "size-4" }),
3395
+ error: /* @__PURE__ */ jsx41(AlertOctagon, { className: "size-4" }),
3396
+ loading: /* @__PURE__ */ jsx41(Loader2, { className: "size-4 animate-spin" })
3397
+ },
3398
+ style: {
3399
+ "--normal-bg": "var(--popover)",
3400
+ "--normal-text": "var(--popover-foreground)",
3401
+ "--normal-border": "var(--border)",
3402
+ "--border-radius": "var(--radius)"
3403
+ },
3404
+ toastOptions: {
3405
+ classNames: {
3406
+ toast: "cn-toast"
3407
+ }
3408
+ },
3409
+ ...props
3410
+ }
3411
+ );
3412
+ };
2035
3413
  export {
3414
+ Accordion,
3415
+ AccordionContent,
3416
+ AccordionItem,
3417
+ AccordionTrigger,
2036
3418
  Alert,
2037
3419
  AlertDescription,
2038
3420
  AlertDialog,
@@ -2047,6 +3429,7 @@ export {
2047
3429
  AlertDialogTitle,
2048
3430
  AlertDialogTrigger,
2049
3431
  AlertTitle,
3432
+ AspectRatio,
2050
3433
  Avatar,
2051
3434
  AvatarFallback,
2052
3435
  AvatarImage,
@@ -2064,6 +3447,7 @@ export {
2064
3447
  CardFooter,
2065
3448
  CardHeader,
2066
3449
  CardTitle,
3450
+ Checkbox,
2067
3451
  Collapsible,
2068
3452
  CollapsibleContent,
2069
3453
  CollapsibleTrigger,
@@ -2075,6 +3459,21 @@ export {
2075
3459
  CommandList,
2076
3460
  CommandSeparator,
2077
3461
  CommandShortcut,
3462
+ ContextMenu,
3463
+ ContextMenuCheckboxItem,
3464
+ ContextMenuContent,
3465
+ ContextMenuGroup,
3466
+ ContextMenuItem,
3467
+ ContextMenuLabel,
3468
+ ContextMenuPortal,
3469
+ ContextMenuRadioGroup,
3470
+ ContextMenuRadioItem,
3471
+ ContextMenuSeparator,
3472
+ ContextMenuShortcut,
3473
+ ContextMenuSub,
3474
+ ContextMenuSubContent,
3475
+ ContextMenuSubTrigger,
3476
+ ContextMenuTrigger,
2078
3477
  Dialog,
2079
3478
  DialogClose,
2080
3479
  DialogContent,
@@ -2085,6 +3484,16 @@ export {
2085
3484
  DialogPortal,
2086
3485
  DialogTitle,
2087
3486
  DialogTrigger,
3487
+ Drawer,
3488
+ DrawerClose,
3489
+ DrawerContent,
3490
+ DrawerDescription,
3491
+ DrawerFooter,
3492
+ DrawerHeader,
3493
+ DrawerOverlay,
3494
+ DrawerPortal,
3495
+ DrawerTitle,
3496
+ DrawerTrigger,
2088
3497
  DropdownMenu,
2089
3498
  DropdownMenuContent,
2090
3499
  DropdownMenuGroup,
@@ -2092,9 +3501,56 @@ export {
2092
3501
  DropdownMenuLabel,
2093
3502
  DropdownMenuSeparator,
2094
3503
  DropdownMenuTrigger,
3504
+ HoverCard,
3505
+ HoverCardContent,
3506
+ HoverCardTrigger,
2095
3507
  Input,
3508
+ InputOTP,
3509
+ InputOTPGroup,
3510
+ InputOTPSeparator,
3511
+ InputOTPSlot,
2096
3512
  Label,
3513
+ Menubar,
3514
+ MenubarCheckboxItem,
3515
+ MenubarContent,
3516
+ MenubarGroup,
3517
+ MenubarItem,
3518
+ MenubarLabel,
3519
+ MenubarMenu,
3520
+ MenubarPortal,
3521
+ MenubarRadioGroup,
3522
+ MenubarRadioItem,
3523
+ MenubarSeparator,
3524
+ MenubarShortcut,
3525
+ MenubarSub,
3526
+ MenubarSubContent,
3527
+ MenubarSubTrigger,
3528
+ MenubarTrigger,
3529
+ NavigationMenu,
3530
+ NavigationMenuContent,
3531
+ NavigationMenuIndicator,
3532
+ NavigationMenuItem,
3533
+ NavigationMenuLink,
3534
+ NavigationMenuList,
3535
+ NavigationMenuTrigger,
3536
+ NavigationMenuViewport,
3537
+ Pagination,
3538
+ PaginationContent,
3539
+ PaginationEllipsis,
3540
+ PaginationItem,
3541
+ PaginationLink,
3542
+ PaginationNext,
3543
+ PaginationPrevious,
3544
+ Popover,
3545
+ PopoverAnchor,
3546
+ PopoverContent,
3547
+ PopoverDescription,
3548
+ PopoverHeader,
3549
+ PopoverTitle,
3550
+ PopoverTrigger,
2097
3551
  Progress,
3552
+ RadioGroup,
3553
+ RadioGroupItem,
2098
3554
  ScrollArea,
2099
3555
  ScrollBar,
2100
3556
  Select,
@@ -2135,6 +3591,8 @@ export {
2135
3591
  SidebarSeparator,
2136
3592
  SidebarTrigger,
2137
3593
  Skeleton,
3594
+ Slider,
3595
+ Switch,
2138
3596
  Table,
2139
3597
  TableBody,
2140
3598
  TableCaption,
@@ -2148,6 +3606,10 @@ export {
2148
3606
  TabsList,
2149
3607
  TabsTrigger,
2150
3608
  Textarea,
3609
+ Toaster,
3610
+ Toggle,
3611
+ ToggleGroup,
3612
+ ToggleGroupItem,
2151
3613
  Tooltip,
2152
3614
  TooltipContent,
2153
3615
  TooltipProvider,
@@ -2155,7 +3617,9 @@ export {
2155
3617
  badgeVariants,
2156
3618
  buttonVariants,
2157
3619
  cn,
3620
+ navigationMenuTriggerStyle,
2158
3621
  tabsListVariants,
3622
+ toggleVariants,
2159
3623
  useSidebar
2160
3624
  };
2161
3625
  //# sourceMappingURL=ui.js.map