@greatapps/greatauth-ui 0.2.1 → 0.3.1

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