@yuva-devlab/ui 1.1.0 → 1.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.
Files changed (85) hide show
  1. package/dist/common.css +158 -0
  2. package/dist/components/accordion/accordion.css +49 -0
  3. package/dist/components/alert/alert.css +63 -0
  4. package/dist/components/alert/alert.mdx +26 -0
  5. package/dist/components/alert-dialog/alert-dialog.css +84 -0
  6. package/dist/components/avatar/avatar.css +26 -0
  7. package/dist/components/avatar/avatar.mdx +18 -0
  8. package/dist/components/badge/badge.css +76 -0
  9. package/dist/components/badge/badge.mdx +24 -0
  10. package/dist/components/breadcrumb/breadcrumb.css +63 -0
  11. package/dist/components/button/button.css +106 -0
  12. package/dist/components/button/button.mdx +40 -0
  13. package/dist/components/card/card.css +30 -0
  14. package/dist/components/card/card.mdx +18 -0
  15. package/dist/components/carousel/carousel.css +67 -0
  16. package/dist/components/chart/chart.css +38 -0
  17. package/dist/components/checkbox/checkbox.css +27 -0
  18. package/dist/components/checkbox/checkbox.mdx +22 -0
  19. package/dist/components/command/command.css +125 -0
  20. package/dist/components/context-menu/context-menu.css +19 -0
  21. package/dist/components/date-picker/date-picker.css +30 -0
  22. package/dist/components/dialog/dialog.css +145 -0
  23. package/dist/components/dialog/dialog.mdx +18 -0
  24. package/dist/components/drawer/drawer.css +64 -0
  25. package/dist/components/dropdown-menu/dropdown-menu.css +82 -0
  26. package/dist/components/form/form.css +17 -0
  27. package/dist/components/hover-card/hover-card.css +23 -0
  28. package/dist/components/input/input.css +89 -0
  29. package/dist/components/input/input.mdx +30 -0
  30. package/dist/components/input-otp/input-otp.css +70 -0
  31. package/dist/components/label/label.css +9 -0
  32. package/dist/components/loading-state/loading-state.css +26 -0
  33. package/dist/components/menubar/menubar.css +36 -0
  34. package/dist/components/navigation-menu/navigation-menu.css +137 -0
  35. package/dist/components/pagination/pagination.css +43 -0
  36. package/dist/components/panel/panel.css +24 -0
  37. package/dist/components/popover/popover.css +17 -0
  38. package/dist/components/progress/progress.css +15 -0
  39. package/dist/components/progress/progress.mdx +18 -0
  40. package/dist/components/radio-group/radio-group.css +37 -0
  41. package/dist/components/resizable/resizable.css +67 -0
  42. package/dist/components/scroll-area/scroll-area.css +32 -0
  43. package/dist/components/searchable-select/searchable-select.css +128 -0
  44. package/dist/components/select/select.css +97 -0
  45. package/dist/components/select/select.mdx +18 -0
  46. package/dist/components/separator/separator.css +14 -0
  47. package/dist/components/sheet/sheet.css +83 -0
  48. package/dist/components/sidebar/sidebar.css +18 -0
  49. package/dist/components/skeleton/skeleton.css +5 -0
  50. package/dist/components/skeleton/skeleton.mdx +18 -0
  51. package/dist/components/slider/slider.css +37 -0
  52. package/dist/components/sonner/sonner.css +25 -0
  53. package/dist/components/sonner/sonner.mdx +22 -0
  54. package/dist/components/status-badge/status-badge.css +53 -0
  55. package/dist/components/status-badge/status-badge.mdx +24 -0
  56. package/dist/components/status-chip/status-chip.css +44 -0
  57. package/dist/components/switch/switch.css +45 -0
  58. package/dist/components/switch/switch.mdx +22 -0
  59. package/dist/components/table/table.css +46 -0
  60. package/dist/components/table/table.mdx +18 -0
  61. package/dist/components/tabs/tabs.css +46 -0
  62. package/dist/components/tabs/tabs.mdx +18 -0
  63. package/dist/components/textarea/textarea.css +30 -0
  64. package/dist/components/toggle/toggle.css +91 -0
  65. package/dist/components/tooltip/tooltip.css +17 -0
  66. package/dist/components.css +2618 -0
  67. package/dist/index.cjs +1447 -1836
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.d.cts +1819 -202
  70. package/dist/index.d.ts +1819 -202
  71. package/dist/index.js +1442 -1837
  72. package/dist/index.js.map +1 -1
  73. package/dist/preset.css +6 -157
  74. package/dist/root.css +1 -0
  75. package/dist/styles/common.css +158 -0
  76. package/dist/styles/components.css +2618 -0
  77. package/dist/styles/preset.css +6 -157
  78. package/dist/styles/root.css +1 -0
  79. package/dist/styles/styles.css +17 -5
  80. package/dist/styles/themes/finai.css +1 -114
  81. package/dist/styles/themes/orchestrai.css +1 -75
  82. package/dist/styles.css +17 -5
  83. package/dist/themes/finai.css +1 -114
  84. package/dist/themes/orchestrai.css +1 -75
  85. package/package.json +11 -5
package/dist/index.js CHANGED
@@ -112,7 +112,7 @@ function useIsMobile() {
112
112
  return !!isMobile;
113
113
  }
114
114
 
115
- // src/components/accordion.tsx
115
+ // src/components/accordion/accordion.tsx
116
116
  import * as React3 from "react";
117
117
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
118
118
  import { ChevronDown } from "lucide-react";
@@ -122,23 +122,20 @@ var AccordionItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
122
122
  AccordionPrimitive.Item,
123
123
  {
124
124
  ref,
125
- className: cn("border-b", className),
125
+ className: cn("dl-accordion-item", className),
126
126
  ...props
127
127
  }
128
128
  ));
129
129
  AccordionItem.displayName = "AccordionItem";
130
- var AccordionTrigger = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx2(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
130
+ var AccordionTrigger = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx2(AccordionPrimitive.Header, { className: "dl-accordion-header", children: /* @__PURE__ */ jsxs(
131
131
  AccordionPrimitive.Trigger,
132
132
  {
133
133
  ref,
134
- className: cn(
135
- "flex flex-1 items-center justify-between py-4 text-sm font-medium cursor-pointer transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
136
- className
137
- ),
134
+ className: cn("dl-accordion-trigger", className),
138
135
  ...props,
139
136
  children: [
140
137
  children,
141
- /* @__PURE__ */ jsx2(ChevronDown, { className: "shrink-0 text-muted-foreground transition-transform duration-200 size-4" })
138
+ /* @__PURE__ */ jsx2(ChevronDown, { "aria-hidden": "true" })
142
139
  ]
143
140
  }
144
141
  ) }));
@@ -147,51 +144,79 @@ var AccordionContent = React3.forwardRef(({ className, children, ...props }, ref
147
144
  AccordionPrimitive.Content,
148
145
  {
149
146
  ref,
150
- className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
147
+ className: "dl-accordion-content",
151
148
  ...props,
152
- children: /* @__PURE__ */ jsx2("div", { className: cn("pb-4 pt-0", className), children })
149
+ children: /* @__PURE__ */ jsx2("div", { className: cn("dl-accordion-content__inner", className), children })
153
150
  }
154
151
  ));
155
152
  AccordionContent.displayName = AccordionPrimitive.Content.displayName;
156
153
 
157
- // src/components/alert-dialog.tsx
158
- import * as React5 from "react";
159
- import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
160
-
161
- // src/components/button.tsx
154
+ // src/components/alert/alert.tsx
162
155
  import * as React4 from "react";
163
- import { Slot } from "@radix-ui/react-slot";
164
156
  import { cva } from "class-variance-authority";
165
157
  import { jsx as jsx3 } from "react/jsx-runtime";
166
- var buttonVariants = cva(
167
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
168
- {
169
- variants: {
170
- variant: {
171
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
172
- destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
173
- outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
174
- secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
175
- ghost: "hover:bg-accent hover:text-accent-foreground",
176
- link: "text-primary underline-offset-4 hover:underline"
177
- },
178
- size: {
179
- default: "h-9 px-4 py-2",
180
- sm: "h-8 rounded-md px-3 text-xs",
181
- lg: "h-10 rounded-md px-8",
182
- icon: "size-9"
183
- }
184
- },
185
- defaultVariants: {
186
- variant: "default",
187
- size: "default"
158
+ var alertVariants = cva("dl-alert", {
159
+ variants: {
160
+ variant: {
161
+ default: "dl-alert--default",
162
+ destructive: "dl-alert--destructive"
188
163
  }
164
+ },
165
+ defaultVariants: {
166
+ variant: "default"
189
167
  }
168
+ });
169
+ var Alert = React4.forwardRef(
170
+ ({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx3(
171
+ "div",
172
+ {
173
+ ref,
174
+ role: "alert",
175
+ className: cn(alertVariants({ variant }), className),
176
+ ...props
177
+ }
178
+ )
190
179
  );
191
- var Button = React4.forwardRef(
180
+ Alert.displayName = "Alert";
181
+ var AlertTitle = React4.forwardRef(
182
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx3("h5", { ref, className: cn("dl-alert__title", className), ...props })
183
+ );
184
+ AlertTitle.displayName = "AlertTitle";
185
+ var AlertDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3("div", { ref, className: cn("dl-alert__desc", className), ...props }));
186
+ AlertDescription.displayName = "AlertDescription";
187
+
188
+ // src/components/alert-dialog/alert-dialog.tsx
189
+ import * as React6 from "react";
190
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
191
+
192
+ // src/components/button/button.tsx
193
+ import * as React5 from "react";
194
+ import { Slot } from "@radix-ui/react-slot";
195
+ import { cva as cva2 } from "class-variance-authority";
196
+ import { jsx as jsx4 } from "react/jsx-runtime";
197
+ var buttonVariants = cva2("dl-btn", {
198
+ variants: {
199
+ variant: {
200
+ default: "dl-btn--default",
201
+ destructive: "dl-btn--destructive",
202
+ outline: "dl-btn--outline",
203
+ secondary: "dl-btn--secondary",
204
+ ghost: "dl-btn--ghost",
205
+ link: "dl-btn--link"
206
+ },
207
+ size: {
208
+ default: "dl-btn--md",
209
+ sm: "dl-btn--sm",
210
+ lg: "dl-btn--lg",
211
+ icon: "dl-btn--icon"
212
+ }
213
+ },
214
+ defaultVariants: { variant: "default", size: "default" }
215
+ });
216
+ var Button = React5.forwardRef(
192
217
  ({ className, variant, size, asChild = false, ...props }, ref) => {
193
218
  const Comp = asChild ? Slot : "button";
194
- return /* @__PURE__ */ jsx3(
219
+ return /* @__PURE__ */ jsx4(
195
220
  Comp,
196
221
  {
197
222
  className: cn(buttonVariants({ variant, size, className })),
@@ -203,33 +228,27 @@ var Button = React4.forwardRef(
203
228
  );
204
229
  Button.displayName = "Button";
205
230
 
206
- // src/components/alert-dialog.tsx
207
- import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
231
+ // src/components/alert-dialog/alert-dialog.tsx
232
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
208
233
  var AlertDialog = AlertDialogPrimitive.Root;
209
234
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
210
235
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
211
- var AlertDialogOverlay = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
236
+ var AlertDialogOverlay = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
212
237
  AlertDialogPrimitive.Overlay,
213
238
  {
214
- className: cn(
215
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
216
- className
217
- ),
239
+ className: cn("dl-alert-dialog-overlay", className),
218
240
  ...props,
219
241
  ref
220
242
  }
221
243
  ));
222
244
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
223
- var AlertDialogContent = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
224
- /* @__PURE__ */ jsx4(AlertDialogOverlay, {}),
225
- /* @__PURE__ */ jsx4(
245
+ var AlertDialogContent = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
246
+ /* @__PURE__ */ jsx5(AlertDialogOverlay, {}),
247
+ /* @__PURE__ */ jsx5(
226
248
  AlertDialogPrimitive.Content,
227
249
  {
228
250
  ref,
229
- className: cn(
230
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg translate-[-50%]",
231
- className
232
- ),
251
+ className: cn("dl-alert-dialog-content", className),
233
252
  ...props
234
253
  }
235
254
  )
@@ -238,50 +257,32 @@ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
238
257
  var AlertDialogHeader = ({
239
258
  className,
240
259
  ...props
241
- }) => /* @__PURE__ */ jsx4(
242
- "div",
243
- {
244
- className: cn(
245
- "flex flex-col space-y-2 text-center sm:text-left",
246
- className
247
- ),
248
- ...props
249
- }
250
- );
260
+ }) => /* @__PURE__ */ jsx5("div", { className: cn("dl-alert-dialog-header", className), ...props });
251
261
  AlertDialogHeader.displayName = "AlertDialogHeader";
252
262
  var AlertDialogFooter = ({
253
263
  className,
254
264
  ...props
255
- }) => /* @__PURE__ */ jsx4(
256
- "div",
257
- {
258
- className: cn(
259
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
260
- className
261
- ),
262
- ...props
263
- }
264
- );
265
+ }) => /* @__PURE__ */ jsx5("div", { className: cn("dl-alert-dialog-footer", className), ...props });
265
266
  AlertDialogFooter.displayName = "AlertDialogFooter";
266
- var AlertDialogTitle = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
267
+ var AlertDialogTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
267
268
  AlertDialogPrimitive.Title,
268
269
  {
269
270
  ref,
270
- className: cn("text-lg font-semibold", className),
271
+ className: cn("dl-alert-dialog-title", className),
271
272
  ...props
272
273
  }
273
274
  ));
274
275
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
275
- var AlertDialogDescription = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
276
+ var AlertDialogDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
276
277
  AlertDialogPrimitive.Description,
277
278
  {
278
279
  ref,
279
- className: cn("text-sm text-muted-foreground", className),
280
+ className: cn("dl-alert-dialog-desc", className),
280
281
  ...props
281
282
  }
282
283
  ));
283
284
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
284
- var AlertDialogAction = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
285
+ var AlertDialogAction = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
285
286
  AlertDialogPrimitive.Action,
286
287
  {
287
288
  ref,
@@ -290,72 +291,21 @@ var AlertDialogAction = React5.forwardRef(({ className, ...props }, ref) => /* @
290
291
  }
291
292
  ));
292
293
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
293
- var AlertDialogCancel = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
294
+ var AlertDialogCancel = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
294
295
  AlertDialogPrimitive.Cancel,
295
296
  {
296
297
  ref,
297
- className: cn(
298
- buttonVariants({ variant: "outline" }),
299
- "mt-2 sm:mt-0",
300
- className
301
- ),
298
+ className: cn(buttonVariants({ variant: "outline" }), className),
302
299
  ...props
303
300
  }
304
301
  ));
305
302
  AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
306
303
 
307
- // src/components/alert.tsx
308
- import * as React6 from "react";
309
- import { cva as cva2 } from "class-variance-authority";
310
- import { jsx as jsx5 } from "react/jsx-runtime";
311
- var alertVariants = cva2(
312
- "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
313
- {
314
- variants: {
315
- variant: {
316
- default: "bg-background text-foreground",
317
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
318
- }
319
- },
320
- defaultVariants: {
321
- variant: "default"
322
- }
323
- }
324
- );
325
- var Alert = React6.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx5(
326
- "div",
327
- {
328
- ref,
329
- role: "alert",
330
- className: cn(alertVariants({ variant }), className),
331
- ...props
332
- }
333
- ));
334
- Alert.displayName = "Alert";
335
- var AlertTitle = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
336
- "h5",
337
- {
338
- ref,
339
- className: cn("mb-1 font-medium leading-none tracking-tight", className),
340
- ...props
341
- }
342
- ));
343
- AlertTitle.displayName = "AlertTitle";
344
- var AlertDescription = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
345
- "div",
346
- {
347
- ref,
348
- className: cn("text-sm [&_p]:leading-relaxed", className),
349
- ...props
350
- }
351
- ));
352
- AlertDescription.displayName = "AlertDescription";
353
-
354
- // src/components/aspect-ratio.tsx
304
+ // src/components/aspect-ratio/aspect-ratio.tsx
355
305
  import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
356
306
  var AspectRatio = AspectRatioPrimitive.Root;
357
307
 
358
- // src/components/avatar.tsx
308
+ // src/components/avatar/avatar.tsx
359
309
  import * as React7 from "react";
360
310
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
361
311
  import { jsx as jsx6 } from "react/jsx-runtime";
@@ -363,10 +313,7 @@ var Avatar = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
363
313
  AvatarPrimitive.Root,
364
314
  {
365
315
  ref,
366
- className: cn(
367
- "relative flex shrink-0 overflow-hidden rounded-full size-10",
368
- className
369
- ),
316
+ className: cn("dl-avatar", className),
370
317
  ...props
371
318
  }
372
319
  ));
@@ -375,7 +322,7 @@ var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE
375
322
  AvatarPrimitive.Image,
376
323
  {
377
324
  ref,
378
- className: cn("aspect-square size-full", className),
325
+ className: cn("dl-avatar__img", className),
379
326
  ...props
380
327
  }
381
328
  ));
@@ -384,92 +331,77 @@ var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__P
384
331
  AvatarPrimitive.Fallback,
385
332
  {
386
333
  ref,
387
- className: cn(
388
- "flex items-center justify-center rounded-full bg-muted size-full",
389
- className
390
- ),
334
+ className: cn("dl-avatar__fallback", className),
391
335
  ...props
392
336
  }
393
337
  ));
394
338
  AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
395
339
 
396
- // src/components/badge.tsx
340
+ // src/components/badge/badge.tsx
397
341
  import { cva as cva3 } from "class-variance-authority";
398
342
  import { jsx as jsx7 } from "react/jsx-runtime";
399
- var badgeVariants = cva3(
400
- "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
401
- {
402
- variants: {
403
- variant: {
404
- default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
405
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
406
- destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
407
- outline: "text-foreground"
408
- }
409
- },
410
- defaultVariants: {
411
- variant: "default"
412
- }
413
- }
414
- );
343
+ var badgeVariants = cva3("dl-badge", {
344
+ variants: {
345
+ variant: {
346
+ default: "dl-badge--default",
347
+ secondary: "dl-badge--secondary",
348
+ destructive: "dl-badge--destructive",
349
+ success: "dl-badge--success",
350
+ warning: "dl-badge--warning",
351
+ info: "dl-badge--info",
352
+ outline: "dl-badge--outline"
353
+ }
354
+ },
355
+ defaultVariants: { variant: "default" }
356
+ });
415
357
  function Badge({ className, variant, ...props }) {
416
358
  return /* @__PURE__ */ jsx7("div", { className: cn(badgeVariants({ variant }), className), ...props });
417
359
  }
418
360
 
419
- // src/components/breadcrumb.tsx
361
+ // src/components/breadcrumb/breadcrumb.tsx
420
362
  import * as React8 from "react";
421
363
  import { Slot as Slot2 } from "@radix-ui/react-slot";
422
364
  import { ChevronRight, MoreHorizontal } from "lucide-react";
423
365
  import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
424
- var Breadcrumb = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx8("nav", { ref, "aria-label": "breadcrumb", ...props }));
366
+ var Breadcrumb = React8.forwardRef(
367
+ ({ ...props }, ref) => /* @__PURE__ */ jsx8("nav", { ref, "aria-label": "breadcrumb", ...props })
368
+ );
425
369
  Breadcrumb.displayName = "Breadcrumb";
426
- var BreadcrumbList = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
427
- "ol",
428
- {
429
- ref,
430
- className: cn(
431
- "flex flex-wrap items-center gap-1.5 wrap-break-word text-sm text-muted-foreground sm:gap-2.5",
432
- className
433
- ),
434
- ...props
435
- }
436
- ));
370
+ var BreadcrumbList = React8.forwardRef(
371
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx8("ol", { ref, className: cn("dl-breadcrumb-list", className), ...props })
372
+ );
437
373
  BreadcrumbList.displayName = "BreadcrumbList";
438
- var BreadcrumbItem = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
439
- "li",
440
- {
441
- ref,
442
- className: cn("inline-flex items-center gap-1.5", className),
443
- ...props
444
- }
445
- ));
374
+ var BreadcrumbItem = React8.forwardRef(
375
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx8("li", { ref, className: cn("dl-breadcrumb-item", className), ...props })
376
+ );
446
377
  BreadcrumbItem.displayName = "BreadcrumbItem";
447
- var BreadcrumbLink = React8.forwardRef(({ asChild, className, ...props }, ref) => {
448
- const Comp = asChild ? Slot2 : "a";
449
- return /* @__PURE__ */ jsx8(
450
- Comp,
378
+ var BreadcrumbLink = React8.forwardRef(
379
+ ({ asChild, className, ...props }, ref) => {
380
+ const Comp = asChild ? Slot2 : "a";
381
+ return /* @__PURE__ */ jsx8(
382
+ Comp,
383
+ {
384
+ ref,
385
+ className: cn("dl-breadcrumb-link", className),
386
+ ...props
387
+ }
388
+ );
389
+ }
390
+ );
391
+ BreadcrumbLink.displayName = "BreadcrumbLink";
392
+ var BreadcrumbPage = React8.forwardRef(
393
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
394
+ "span",
451
395
  {
452
396
  ref,
453
- className: cn(
454
- "cursor-pointer transition-colors hover:text-foreground",
455
- className
456
- ),
397
+ role: "link",
398
+ "aria-disabled": "true",
399
+ "aria-current": "page",
400
+ className: cn("dl-breadcrumb-page", className),
457
401
  ...props
458
402
  }
459
- );
460
- });
461
- BreadcrumbLink.displayName = "BreadcrumbLink";
462
- var BreadcrumbPage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
463
- "span",
464
- {
465
- ref,
466
- role: "link",
467
- "aria-disabled": "true",
468
- "aria-current": "page",
469
- className: cn("font-normal text-foreground", className),
470
- ...props
471
- }
472
- ));
403
+ )
404
+ );
473
405
  BreadcrumbPage.displayName = "BreadcrumbPage";
474
406
  var BreadcrumbSeparator = ({
475
407
  children,
@@ -480,7 +412,8 @@ var BreadcrumbSeparator = ({
480
412
  {
481
413
  role: "presentation",
482
414
  "aria-hidden": "true",
483
- className: cn("[&>svg]:size-3.5", className),
415
+ "data-slot": "breadcrumb-separator",
416
+ className: cn("dl-breadcrumb-separator", className),
484
417
  ...props,
485
418
  children: children ?? /* @__PURE__ */ jsx8(ChevronRight, {})
486
419
  }
@@ -494,17 +427,17 @@ var BreadcrumbEllipsis = ({
494
427
  {
495
428
  role: "presentation",
496
429
  "aria-hidden": "true",
497
- className: cn("flex items-center justify-center size-9", className),
430
+ className: cn("dl-breadcrumb-ellipsis", className),
498
431
  ...props,
499
432
  children: [
500
- /* @__PURE__ */ jsx8(MoreHorizontal, { className: "size-4" }),
433
+ /* @__PURE__ */ jsx8(MoreHorizontal, {}),
501
434
  /* @__PURE__ */ jsx8("span", { className: "sr-only", children: "More" })
502
435
  ]
503
436
  }
504
437
  );
505
- BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
438
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
506
439
 
507
- // src/components/calendar.tsx
440
+ // src/components/calendar/calendar.tsx
508
441
  import * as React9 from "react";
509
442
  import {
510
443
  ChevronDownIcon,
@@ -690,61 +623,33 @@ function CalendarDayButton({
690
623
  );
691
624
  }
692
625
 
693
- // src/components/card.tsx
626
+ // src/components/card/card.tsx
694
627
  import * as React10 from "react";
695
628
  import { jsx as jsx10 } from "react/jsx-runtime";
696
- var Card = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
697
- "div",
698
- {
699
- ref,
700
- className: cn(
701
- "rounded-xl border bg-card text-card-foreground shadow",
702
- className
703
- ),
704
- ...props
705
- }
706
- ));
629
+ var Card = React10.forwardRef(
630
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("dl-card", className), ...props })
631
+ );
707
632
  Card.displayName = "Card";
708
- var CardHeader = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
709
- "div",
710
- {
711
- ref,
712
- className: cn("flex flex-col space-y-1.5 p-6", className),
713
- ...props
714
- }
715
- ));
633
+ var CardHeader = React10.forwardRef(
634
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("dl-card__header", className), ...props })
635
+ );
716
636
  CardHeader.displayName = "CardHeader";
717
- var CardTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
718
- "div",
719
- {
720
- ref,
721
- className: cn("font-semibold leading-none tracking-tight", className),
722
- ...props
723
- }
724
- ));
637
+ var CardTitle = React10.forwardRef(
638
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10("h3", { ref, className: cn("dl-card__title", className), ...props })
639
+ );
725
640
  CardTitle.displayName = "CardTitle";
726
- var CardDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
727
- "div",
728
- {
729
- ref,
730
- className: cn("text-sm text-muted-foreground", className),
731
- ...props
732
- }
733
- ));
641
+ var CardDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10("p", { ref, className: cn("dl-card__desc", className), ...props }));
734
642
  CardDescription.displayName = "CardDescription";
735
- var CardContent = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("p-6 pt-0", className), ...props }));
643
+ var CardContent = React10.forwardRef(
644
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("dl-card__content", className), ...props })
645
+ );
736
646
  CardContent.displayName = "CardContent";
737
- var CardFooter = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
738
- "div",
739
- {
740
- ref,
741
- className: cn("flex items-center p-6 pt-0", className),
742
- ...props
743
- }
744
- ));
647
+ var CardFooter = React10.forwardRef(
648
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx10("div", { ref, className: cn("dl-card__footer", className), ...props })
649
+ );
745
650
  CardFooter.displayName = "CardFooter";
746
651
 
747
- // src/components/carousel.tsx
652
+ // src/components/carousel/carousel.tsx
748
653
  import * as React11 from "react";
749
654
  import useEmblaCarousel from "embla-carousel-react";
750
655
  import { ArrowLeft, ArrowRight } from "lucide-react";
@@ -768,27 +673,18 @@ var Carousel = React11.forwardRef(
768
673
  ...props
769
674
  }, ref) => {
770
675
  const [carouselRef, api] = useEmblaCarousel(
771
- {
772
- ...opts,
773
- axis: orientation === "horizontal" ? "x" : "y"
774
- },
676
+ { ...opts, axis: orientation === "horizontal" ? "x" : "y" },
775
677
  plugins
776
678
  );
777
679
  const [canScrollPrev, setCanScrollPrev] = React11.useState(false);
778
680
  const [canScrollNext, setCanScrollNext] = React11.useState(false);
779
- const onSelect = React11.useCallback((api2) => {
780
- if (!api2) {
781
- return;
782
- }
783
- setCanScrollPrev(api2.canScrollPrev());
784
- setCanScrollNext(api2.canScrollNext());
681
+ const onSelect = React11.useCallback((emblaApi) => {
682
+ if (!emblaApi) return;
683
+ setCanScrollPrev(emblaApi.canScrollPrev());
684
+ setCanScrollNext(emblaApi.canScrollNext());
785
685
  }, []);
786
- const scrollPrev = React11.useCallback(() => {
787
- api?.scrollPrev();
788
- }, [api]);
789
- const scrollNext = React11.useCallback(() => {
790
- api?.scrollNext();
791
- }, [api]);
686
+ const scrollPrev = React11.useCallback(() => api?.scrollPrev(), [api]);
687
+ const scrollNext = React11.useCallback(() => api?.scrollNext(), [api]);
792
688
  const handleKeyDown = React11.useCallback(
793
689
  (event) => {
794
690
  if (event.key === "ArrowLeft") {
@@ -802,15 +698,11 @@ var Carousel = React11.forwardRef(
802
698
  [scrollPrev, scrollNext]
803
699
  );
804
700
  React11.useEffect(() => {
805
- if (!api || !setApi) {
806
- return;
807
- }
701
+ if (!api || !setApi) return;
808
702
  setApi(api);
809
703
  }, [api, setApi]);
810
704
  React11.useEffect(() => {
811
- if (!api) {
812
- return;
813
- }
705
+ if (!api) return;
814
706
  onSelect(api);
815
707
  api.on("reInit", onSelect);
816
708
  api.on("select", onSelect);
@@ -836,7 +728,7 @@ var Carousel = React11.forwardRef(
836
728
  {
837
729
  ref,
838
730
  onKeyDownCapture: handleKeyDown,
839
- className: cn("relative", className),
731
+ className: cn("dl-carousel", className),
840
732
  role: "region",
841
733
  "aria-roledescription": "carousel",
842
734
  ...props,
@@ -848,39 +740,43 @@ var Carousel = React11.forwardRef(
848
740
  }
849
741
  );
850
742
  Carousel.displayName = "Carousel";
851
- var CarouselContent = React11.forwardRef(({ className, ...props }, ref) => {
852
- const { carouselRef, orientation } = useCarousel();
853
- return /* @__PURE__ */ jsx11("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx11(
854
- "div",
855
- {
856
- ref,
857
- className: cn(
858
- "flex",
859
- orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
860
- className
861
- ),
862
- ...props
863
- }
864
- ) });
865
- });
743
+ var CarouselContent = React11.forwardRef(
744
+ ({ className, ...props }, ref) => {
745
+ const { carouselRef, orientation } = useCarousel();
746
+ return /* @__PURE__ */ jsx11("div", { ref: carouselRef, className: "dl-carousel-viewport", children: /* @__PURE__ */ jsx11(
747
+ "div",
748
+ {
749
+ ref,
750
+ className: cn(
751
+ "dl-carousel-track",
752
+ orientation === "horizontal" ? "dl-carousel-track--horizontal" : "dl-carousel-track--vertical",
753
+ className
754
+ ),
755
+ ...props
756
+ }
757
+ ) });
758
+ }
759
+ );
866
760
  CarouselContent.displayName = "CarouselContent";
867
- var CarouselItem = React11.forwardRef(({ className, ...props }, ref) => {
868
- const { orientation } = useCarousel();
869
- return /* @__PURE__ */ jsx11(
870
- "div",
871
- {
872
- ref,
873
- role: "group",
874
- "aria-roledescription": "slide",
875
- className: cn(
876
- "min-w-0 shrink-0 grow-0 basis-full",
877
- orientation === "horizontal" ? "pl-4" : "pt-4",
878
- className
879
- ),
880
- ...props
881
- }
882
- );
883
- });
761
+ var CarouselItem = React11.forwardRef(
762
+ ({ className, ...props }, ref) => {
763
+ const { orientation } = useCarousel();
764
+ return /* @__PURE__ */ jsx11(
765
+ "div",
766
+ {
767
+ ref,
768
+ role: "group",
769
+ "aria-roledescription": "slide",
770
+ className: cn(
771
+ "dl-carousel-item",
772
+ orientation === "horizontal" ? "dl-carousel-item--horizontal" : "dl-carousel-item--vertical",
773
+ className
774
+ ),
775
+ ...props
776
+ }
777
+ );
778
+ }
779
+ );
884
780
  CarouselItem.displayName = "CarouselItem";
885
781
  var CarouselPrevious = React11.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
886
782
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
@@ -891,50 +787,52 @@ var CarouselPrevious = React11.forwardRef(({ className, variant = "outline", siz
891
787
  variant,
892
788
  size,
893
789
  className: cn(
894
- "absolute rounded-full size-8",
895
- orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
790
+ "dl-carousel-btn",
791
+ orientation === "horizontal" ? "dl-carousel-btn--prev-horizontal" : "dl-carousel-btn--prev-vertical",
896
792
  className
897
793
  ),
898
794
  disabled: !canScrollPrev,
899
795
  onClick: scrollPrev,
900
796
  ...props,
901
797
  children: [
902
- /* @__PURE__ */ jsx11(ArrowLeft, { className: "size-4" }),
798
+ /* @__PURE__ */ jsx11(ArrowLeft, {}),
903
799
  /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Previous slide" })
904
800
  ]
905
801
  }
906
802
  );
907
803
  });
908
804
  CarouselPrevious.displayName = "CarouselPrevious";
909
- var CarouselNext = React11.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
910
- const { orientation, scrollNext, canScrollNext } = useCarousel();
911
- return /* @__PURE__ */ jsxs4(
912
- Button,
913
- {
914
- ref,
915
- variant,
916
- size,
917
- className: cn(
918
- "absolute rounded-full size-8",
919
- orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
920
- className
921
- ),
922
- disabled: !canScrollNext,
923
- onClick: scrollNext,
924
- ...props,
925
- children: [
926
- /* @__PURE__ */ jsx11(ArrowRight, { className: "size-4" }),
927
- /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Next slide" })
928
- ]
929
- }
930
- );
931
- });
932
- CarouselNext.displayName = "CarouselNext";
933
-
934
- // src/components/chart.tsx
935
- import * as React12 from "react";
936
- import * as RechartsPrimitive from "recharts";
937
- import { Fragment, jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
805
+ var CarouselNext = React11.forwardRef(
806
+ ({ className, variant = "outline", size = "icon", ...props }, ref) => {
807
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
808
+ return /* @__PURE__ */ jsxs4(
809
+ Button,
810
+ {
811
+ ref,
812
+ variant,
813
+ size,
814
+ className: cn(
815
+ "dl-carousel-btn",
816
+ orientation === "horizontal" ? "dl-carousel-btn--next-horizontal" : "dl-carousel-btn--next-vertical",
817
+ className
818
+ ),
819
+ disabled: !canScrollNext,
820
+ onClick: scrollNext,
821
+ ...props,
822
+ children: [
823
+ /* @__PURE__ */ jsx11(ArrowRight, {}),
824
+ /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Next slide" })
825
+ ]
826
+ }
827
+ );
828
+ }
829
+ );
830
+ CarouselNext.displayName = "CarouselNext";
831
+
832
+ // src/components/chart/chart.tsx
833
+ import * as React12 from "react";
834
+ import * as RechartsPrimitive from "recharts";
835
+ import { Fragment, jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
938
836
  var THEMES = { light: "", dark: ".dark" };
939
837
  var ChartContext = React12.createContext(null);
940
838
  function useChart() {
@@ -944,26 +842,25 @@ function useChart() {
944
842
  }
945
843
  return context;
946
844
  }
947
- var ChartContainer = React12.forwardRef(({ id, className, children, config, ...props }, ref) => {
948
- const uniqueId = React12.useId();
949
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
950
- return /* @__PURE__ */ jsx12(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs5(
951
- "div",
952
- {
953
- "data-chart": chartId,
954
- ref,
955
- className: cn(
956
- "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-layer]:outline-none",
957
- className
958
- ),
959
- ...props,
960
- children: [
961
- /* @__PURE__ */ jsx12(ChartStyle, { id: chartId, config }),
962
- /* @__PURE__ */ jsx12(RechartsPrimitive.ResponsiveContainer, { children })
963
- ]
964
- }
965
- ) });
966
- });
845
+ var ChartContainer = React12.forwardRef(
846
+ ({ id, className, children, config, ...props }, ref) => {
847
+ const uniqueId = React12.useId();
848
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
849
+ return /* @__PURE__ */ jsx12(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs5(
850
+ "div",
851
+ {
852
+ "data-chart": chartId,
853
+ ref,
854
+ className: cn("dl-chart-container", className),
855
+ ...props,
856
+ children: [
857
+ /* @__PURE__ */ jsx12(ChartStyle, { id: chartId, config }),
858
+ /* @__PURE__ */ jsx12(RechartsPrimitive.ResponsiveContainer, { children })
859
+ ]
860
+ }
861
+ ) });
862
+ }
863
+ );
967
864
  ChartContainer.displayName = "Chart";
968
865
  var ChartStyle = ({ id, config }) => {
969
866
  const colorConfig = Object.entries(config).filter(
@@ -1036,70 +933,60 @@ var ChartTooltipContent = React12.forwardRef(
1036
933
  return null;
1037
934
  }
1038
935
  const nestLabel = payload.length === 1 && indicator !== "dot";
1039
- return /* @__PURE__ */ jsxs5(
1040
- "div",
1041
- {
1042
- ref,
1043
- className: cn(
1044
- "grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
1045
- className
1046
- ),
1047
- children: [
1048
- !nestLabel ? tooltipLabel : null,
1049
- /* @__PURE__ */ jsx12("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
1050
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
1051
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
1052
- const indicatorColor = color || item.payload.fill || item.color;
1053
- return /* @__PURE__ */ jsx12(
1054
- "div",
1055
- {
1056
- className: cn(
1057
- "flex flex-wrap items-stretch gap-2 [&>svg]:text-muted-foreground [&>svg]:size-2.5",
1058
- indicator === "dot" && "items-center"
1059
- ),
1060
- children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs5(Fragment, { children: [
1061
- itemConfig?.icon ? /* @__PURE__ */ jsx12(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx12(
1062
- "div",
936
+ return /* @__PURE__ */ jsxs5("div", { ref, className: cn("dl-chart-tooltip", className), children: [
937
+ !nestLabel ? tooltipLabel : null,
938
+ /* @__PURE__ */ jsx12("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
939
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
940
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
941
+ const indicatorColor = color || item.payload.fill || item.color;
942
+ return /* @__PURE__ */ jsx12(
943
+ "div",
944
+ {
945
+ className: cn(
946
+ "flex flex-wrap items-stretch gap-2 [&>svg]:text-muted-foreground [&>svg]:size-2.5",
947
+ indicator === "dot" && "items-center"
948
+ ),
949
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs5(Fragment, { children: [
950
+ itemConfig?.icon ? /* @__PURE__ */ jsx12(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx12(
951
+ "div",
952
+ {
953
+ className: cn(
954
+ "shrink-0 rounded-xs border-border bg-(--color-bg)",
1063
955
  {
1064
- className: cn(
1065
- "shrink-0 rounded-xs border-border bg-(--color-bg)",
1066
- {
1067
- "h-2.5 w-2.5": indicator === "dot",
1068
- "w-1": indicator === "line",
1069
- "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
1070
- "my-0.5": nestLabel && indicator === "dashed"
1071
- }
1072
- ),
1073
- style: {
1074
- "--color-bg": indicatorColor,
1075
- "--color-border": indicatorColor
1076
- }
956
+ "h-2.5 w-2.5": indicator === "dot",
957
+ "w-1": indicator === "line",
958
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
959
+ "my-0.5": nestLabel && indicator === "dashed"
1077
960
  }
1078
961
  ),
1079
- /* @__PURE__ */ jsxs5(
1080
- "div",
1081
- {
1082
- className: cn(
1083
- "flex flex-1 justify-between leading-none",
1084
- nestLabel ? "items-end" : "items-center"
1085
- ),
1086
- children: [
1087
- /* @__PURE__ */ jsxs5("div", { className: "grid gap-1.5", children: [
1088
- nestLabel ? tooltipLabel : null,
1089
- /* @__PURE__ */ jsx12("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
1090
- ] }),
1091
- item.value && /* @__PURE__ */ jsx12("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
1092
- ]
1093
- }
1094
- )
1095
- ] })
1096
- },
1097
- item.dataKey
1098
- );
1099
- }) })
1100
- ]
1101
- }
1102
- );
962
+ style: {
963
+ "--color-bg": indicatorColor,
964
+ "--color-border": indicatorColor
965
+ }
966
+ }
967
+ ),
968
+ /* @__PURE__ */ jsxs5(
969
+ "div",
970
+ {
971
+ className: cn(
972
+ "flex flex-1 justify-between leading-none",
973
+ nestLabel ? "items-end" : "items-center"
974
+ ),
975
+ children: [
976
+ /* @__PURE__ */ jsxs5("div", { className: "grid gap-1.5", children: [
977
+ nestLabel ? tooltipLabel : null,
978
+ /* @__PURE__ */ jsx12("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
979
+ ] }),
980
+ item.value && /* @__PURE__ */ jsx12("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
981
+ ]
982
+ }
983
+ )
984
+ ] })
985
+ },
986
+ item.dataKey
987
+ );
988
+ }) })
989
+ ] });
1103
990
  }
1104
991
  );
1105
992
  ChartTooltipContent.displayName = "ChartTooltip";
@@ -1115,7 +1002,7 @@ var ChartLegendContent = React12.forwardRef(
1115
1002
  {
1116
1003
  ref,
1117
1004
  className: cn(
1118
- "flex items-center justify-center gap-4",
1005
+ "dl-chart-legend",
1119
1006
  verticalAlign === "top" ? "pb-3" : "pt-3",
1120
1007
  className
1121
1008
  ),
@@ -1163,7 +1050,7 @@ function getPayloadConfigFromPayload(config, payload, key) {
1163
1050
  return configLabelKey in config ? config[configLabelKey] : config[key];
1164
1051
  }
1165
1052
 
1166
- // src/components/checkbox.tsx
1053
+ // src/components/checkbox/checkbox.tsx
1167
1054
  import * as React13 from "react";
1168
1055
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
1169
1056
  import { Check } from "lucide-react";
@@ -1172,34 +1059,25 @@ var Checkbox = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1172
1059
  CheckboxPrimitive.Root,
1173
1060
  {
1174
1061
  ref,
1175
- className: cn(
1176
- "grid place-content-center peer shrink-0 rounded-sm border border-primary shadow cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground size-4",
1177
- className
1178
- ),
1062
+ className: cn("dl-checkbox", className),
1179
1063
  ...props,
1180
- children: /* @__PURE__ */ jsx13(
1181
- CheckboxPrimitive.Indicator,
1182
- {
1183
- className: cn("grid place-content-center text-current"),
1184
- children: /* @__PURE__ */ jsx13(Check, { className: "size-4" })
1185
- }
1186
- )
1064
+ children: /* @__PURE__ */ jsx13(CheckboxPrimitive.Indicator, { className: "grid place-content-center text-current", children: /* @__PURE__ */ jsx13(Check, { style: { width: "0.75rem", height: "0.75rem" } }) })
1187
1065
  }
1188
1066
  ));
1189
1067
  Checkbox.displayName = CheckboxPrimitive.Root.displayName;
1190
1068
 
1191
- // src/components/collapsible.tsx
1069
+ // src/components/collapsible/collapsible.tsx
1192
1070
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
1193
1071
  var Collapsible = CollapsiblePrimitive.Root;
1194
1072
  var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
1195
1073
  var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
1196
1074
 
1197
- // src/components/command.tsx
1075
+ // src/components/command/command.tsx
1198
1076
  import * as React15 from "react";
1199
1077
  import { Command as CommandPrimitive } from "cmdk";
1200
1078
  import { Search } from "lucide-react";
1201
1079
 
1202
- // src/components/dialog.tsx
1080
+ // src/components/dialog/dialog.tsx
1203
1081
  import * as React14 from "react";
1204
1082
  import * as DialogPrimitive from "@radix-ui/react-dialog";
1205
1083
  import { X } from "lucide-react";
@@ -1212,30 +1090,28 @@ var DialogOverlay = React14.forwardRef(({ className, ...props }, ref) => /* @__P
1212
1090
  DialogPrimitive.Overlay,
1213
1091
  {
1214
1092
  ref,
1215
- className: cn(
1216
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1217
- className
1218
- ),
1093
+ className: cn("dl-dialog-overlay", className),
1219
1094
  ...props
1220
1095
  }
1221
1096
  ));
1222
1097
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1223
- var DialogContent = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs6(DialogPortal, { children: [
1098
+ var DialogContent = React14.forwardRef(({ className, children, size = "md", ...props }, ref) => /* @__PURE__ */ jsxs6(DialogPortal, { children: [
1224
1099
  /* @__PURE__ */ jsx14(DialogOverlay, {}),
1225
1100
  /* @__PURE__ */ jsxs6(
1226
1101
  DialogPrimitive.Content,
1227
1102
  {
1228
1103
  ref,
1229
1104
  className: cn(
1230
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg translate-[-50%]",
1105
+ "dl-dialog-content",
1106
+ size && `dl-dialog--${size}`,
1231
1107
  className
1232
1108
  ),
1233
1109
  ...props,
1234
1110
  children: [
1235
1111
  children,
1236
- /* @__PURE__ */ jsxs6(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background cursor-pointer transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
1237
- /* @__PURE__ */ jsx14(X, { className: "size-4" }),
1238
- /* @__PURE__ */ jsx14("span", { className: "sr-only", children: "Close" })
1112
+ /* @__PURE__ */ jsxs6(DialogPrimitive.Close, { className: "dl-dialog-close", children: [
1113
+ /* @__PURE__ */ jsx14(X, {}),
1114
+ /* @__PURE__ */ jsx14("span", { className: "dl-dialog-sr-only", children: "Close" })
1239
1115
  ] })
1240
1116
  ]
1241
1117
  }
@@ -1245,39 +1121,23 @@ DialogContent.displayName = DialogPrimitive.Content.displayName;
1245
1121
  var DialogHeader = ({
1246
1122
  className,
1247
1123
  ...props
1248
- }) => /* @__PURE__ */ jsx14(
1249
- "div",
1250
- {
1251
- className: cn(
1252
- "flex flex-col space-y-1.5 text-center sm:text-left",
1253
- className
1254
- ),
1255
- ...props
1256
- }
1257
- );
1124
+ }) => /* @__PURE__ */ jsx14("div", { className: cn("dl-dialog__header", className), ...props });
1258
1125
  DialogHeader.displayName = "DialogHeader";
1126
+ var DialogBody = ({
1127
+ className,
1128
+ ...props
1129
+ }) => /* @__PURE__ */ jsx14("div", { className: cn("dl-dialog__body", className), ...props });
1130
+ DialogBody.displayName = "DialogBody";
1259
1131
  var DialogFooter = ({
1260
1132
  className,
1261
1133
  ...props
1262
- }) => /* @__PURE__ */ jsx14(
1263
- "div",
1264
- {
1265
- className: cn(
1266
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1267
- className
1268
- ),
1269
- ...props
1270
- }
1271
- );
1134
+ }) => /* @__PURE__ */ jsx14("div", { className: cn("dl-dialog__footer", className), ...props });
1272
1135
  DialogFooter.displayName = "DialogFooter";
1273
1136
  var DialogTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
1274
1137
  DialogPrimitive.Title,
1275
1138
  {
1276
1139
  ref,
1277
- className: cn(
1278
- "text-lg font-semibold leading-none tracking-tight",
1279
- className
1280
- ),
1140
+ className: cn("dl-dialog__title", className),
1281
1141
  ...props
1282
1142
  }
1283
1143
  ));
@@ -1286,39 +1146,33 @@ var DialogDescription = React14.forwardRef(({ className, ...props }, ref) => /*
1286
1146
  DialogPrimitive.Description,
1287
1147
  {
1288
1148
  ref,
1289
- className: cn("text-sm text-muted-foreground", className),
1149
+ className: cn("dl-dialog__desc", className),
1290
1150
  ...props
1291
1151
  }
1292
1152
  ));
1293
1153
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
1294
1154
 
1295
- // src/components/command.tsx
1155
+ // src/components/command/command.tsx
1296
1156
  import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
1297
1157
  var Command = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1298
1158
  CommandPrimitive,
1299
1159
  {
1300
1160
  ref,
1301
- className: cn(
1302
- "flex flex-col overflow-hidden rounded-md bg-popover text-popover-foreground size-full",
1303
- className
1304
- ),
1161
+ className: cn("dl-command", className),
1305
1162
  ...props
1306
1163
  }
1307
1164
  ));
1308
1165
  Command.displayName = CommandPrimitive.displayName;
1309
1166
  var CommandDialog = ({ children, ...props }) => {
1310
- return /* @__PURE__ */ jsx15(Dialog, { ...props, children: /* @__PURE__ */ jsx15(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsx15(Command, { className: "**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-item]]:py-3 [&_[cmdk-input-wrapper]_svg]:size-5", children }) }) });
1167
+ return /* @__PURE__ */ jsx15(Dialog, { ...props, children: /* @__PURE__ */ jsx15(DialogContent, { className: "dl-command-dialog-content", children: /* @__PURE__ */ jsx15(Command, { children }) }) });
1311
1168
  };
1312
- var CommandInput = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs7("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
1313
- /* @__PURE__ */ jsx15(Search, { className: "mr-2 shrink-0 opacity-50 size-4" }),
1169
+ var CommandInput = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs7("div", { className: "dl-command-input-wrapper", "cmdk-input-wrapper": "", children: [
1170
+ /* @__PURE__ */ jsx15(Search, { className: "dl-command-input-icon" }),
1314
1171
  /* @__PURE__ */ jsx15(
1315
1172
  CommandPrimitive.Input,
1316
1173
  {
1317
1174
  ref,
1318
- className: cn(
1319
- "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1320
- className
1321
- ),
1175
+ className: cn("dl-command-input", className),
1322
1176
  ...props
1323
1177
  }
1324
1178
  )
@@ -1328,28 +1182,18 @@ var CommandList = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
1328
1182
  CommandPrimitive.List,
1329
1183
  {
1330
1184
  ref,
1331
- className: cn("max-h-75 overflow-y-auto overflow-x-hidden", className),
1185
+ className: cn("dl-command-list", className),
1332
1186
  ...props
1333
1187
  }
1334
1188
  ));
1335
1189
  CommandList.displayName = CommandPrimitive.List.displayName;
1336
- var CommandEmpty = React15.forwardRef((props, ref) => /* @__PURE__ */ jsx15(
1337
- CommandPrimitive.Empty,
1338
- {
1339
- ref,
1340
- className: "py-6 text-center text-sm",
1341
- ...props
1342
- }
1343
- ));
1190
+ var CommandEmpty = React15.forwardRef((props, ref) => /* @__PURE__ */ jsx15(CommandPrimitive.Empty, { ref, className: "dl-command-empty", ...props }));
1344
1191
  CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
1345
1192
  var CommandGroup = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx15(
1346
1193
  CommandPrimitive.Group,
1347
1194
  {
1348
1195
  ref,
1349
- className: cn(
1350
- "overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",
1351
- className
1352
- ),
1196
+ className: cn("dl-command-group", className),
1353
1197
  ...props
1354
1198
  }
1355
1199
  ));
@@ -1358,7 +1202,7 @@ var CommandSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @
1358
1202
  CommandPrimitive.Separator,
1359
1203
  {
1360
1204
  ref,
1361
- className: cn("-mx-1 h-px bg-border", className),
1205
+ className: cn("dl-command-separator", className),
1362
1206
  ...props
1363
1207
  }
1364
1208
  ));
@@ -1367,146 +1211,142 @@ var CommandItem = React15.forwardRef(({ className, ...props }, ref) => /* @__PUR
1367
1211
  CommandPrimitive.Item,
1368
1212
  {
1369
1213
  ref,
1370
- className: cn(
1371
- "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",
1372
- className
1373
- ),
1214
+ className: cn("dl-command-item", className),
1374
1215
  ...props
1375
1216
  }
1376
1217
  ));
1377
1218
  CommandItem.displayName = CommandPrimitive.Item.displayName;
1378
- var CommandShortcut = ({
1379
- className,
1380
- ...props
1381
- }) => {
1382
- return /* @__PURE__ */ jsx15(
1383
- "span",
1384
- {
1385
- className: cn(
1386
- "ml-auto text-xs tracking-widest text-muted-foreground",
1387
- className
1388
- ),
1389
- ...props
1390
- }
1391
- );
1219
+ var CommandShortcut = ({ className, ...props }) => {
1220
+ return /* @__PURE__ */ jsx15("span", { className: cn("dl-command-shortcut", className), ...props });
1392
1221
  };
1393
1222
  CommandShortcut.displayName = "CommandShortcut";
1394
1223
 
1395
- // src/components/context-menu.tsx
1224
+ // src/components/confirm-dialog/confirm-dialog.tsx
1225
+ import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
1226
+ function ConfirmDialog({
1227
+ open,
1228
+ onOpenChange,
1229
+ title,
1230
+ description,
1231
+ onConfirm,
1232
+ confirmText = "Confirm",
1233
+ cancelText = "Cancel",
1234
+ destructive = false
1235
+ }) {
1236
+ return /* @__PURE__ */ jsx16(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs8(AlertDialogContent, { children: [
1237
+ /* @__PURE__ */ jsxs8(AlertDialogHeader, { children: [
1238
+ /* @__PURE__ */ jsx16(AlertDialogTitle, { children: title }),
1239
+ /* @__PURE__ */ jsx16(AlertDialogDescription, { children: description })
1240
+ ] }),
1241
+ /* @__PURE__ */ jsxs8(AlertDialogFooter, { children: [
1242
+ /* @__PURE__ */ jsx16(AlertDialogCancel, { children: cancelText }),
1243
+ /* @__PURE__ */ jsx16(
1244
+ AlertDialogAction,
1245
+ {
1246
+ onClick: onConfirm,
1247
+ className: destructive ? "dl-btn--destructive" : "",
1248
+ children: confirmText
1249
+ }
1250
+ )
1251
+ ] })
1252
+ ] }) });
1253
+ }
1254
+
1255
+ // src/components/context-menu/context-menu.tsx
1396
1256
  import * as React16 from "react";
1397
1257
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
1398
1258
  import { Check as Check2, ChevronRight as ChevronRight2, Circle } from "lucide-react";
1399
- import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
1259
+ import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
1400
1260
  var ContextMenu = ContextMenuPrimitive.Root;
1401
1261
  var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1402
1262
  var ContextMenuGroup = ContextMenuPrimitive.Group;
1403
1263
  var ContextMenuPortal = ContextMenuPrimitive.Portal;
1404
1264
  var ContextMenuSub = ContextMenuPrimitive.Sub;
1405
1265
  var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1406
- var ContextMenuSubTrigger = React16.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1266
+ var ContextMenuSubTrigger = React16.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs9(
1407
1267
  ContextMenuPrimitive.SubTrigger,
1408
1268
  {
1409
1269
  ref,
1410
1270
  className: cn(
1411
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground",
1271
+ "dl-menu-item dl-menu-sub-trigger",
1412
1272
  inset && "pl-8",
1413
1273
  className
1414
1274
  ),
1415
1275
  ...props,
1416
1276
  children: [
1417
1277
  children,
1418
- /* @__PURE__ */ jsx16(ChevronRight2, { className: "ml-auto size-4" })
1278
+ /* @__PURE__ */ jsx17(ChevronRight2, { className: "ml-auto size-4" })
1419
1279
  ]
1420
1280
  }
1421
1281
  ));
1422
1282
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1423
- var ContextMenuSubContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1283
+ var ContextMenuSubContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1424
1284
  ContextMenuPrimitive.SubContent,
1425
1285
  {
1426
1286
  ref,
1427
- className: cn(
1428
- "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-context-menu-content-transform-origin)",
1429
- className
1430
- ),
1287
+ className: cn("dl-menu-content", className),
1431
1288
  ...props
1432
1289
  }
1433
1290
  ));
1434
1291
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1435
- var ContextMenuContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx16(
1292
+ var ContextMenuContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx17(
1436
1293
  ContextMenuPrimitive.Content,
1437
1294
  {
1438
1295
  ref,
1439
- className: cn(
1440
- "z-50 max-h-(--radix-context-menu-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-context-menu-content-transform-origin)",
1441
- className
1442
- ),
1296
+ className: cn("dl-context-menu-content", className),
1443
1297
  ...props
1444
1298
  }
1445
1299
  ) }));
1446
1300
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1447
- var ContextMenuItem = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1301
+ var ContextMenuItem = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx17(
1448
1302
  ContextMenuPrimitive.Item,
1449
1303
  {
1450
1304
  ref,
1451
- className: cn(
1452
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1453
- inset && "pl-8",
1454
- className
1455
- ),
1305
+ className: cn("dl-menu-item", inset && "pl-8", className),
1456
1306
  ...props
1457
1307
  }
1458
1308
  ));
1459
1309
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1460
- var ContextMenuCheckboxItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1310
+ var ContextMenuCheckboxItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs9(
1461
1311
  ContextMenuPrimitive.CheckboxItem,
1462
1312
  {
1463
1313
  ref,
1464
- className: cn(
1465
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1466
- className
1467
- ),
1314
+ className: cn("dl-menu-item dl-menu-checkbox-item", className),
1468
1315
  ...props,
1469
1316
  children: [
1470
- /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(Check2, { className: "size-4" }) }) }),
1317
+ /* @__PURE__ */ jsx17("span", { className: "dl-menu-checkbox-item__indicator", children: /* @__PURE__ */ jsx17(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx17(Check2, { className: "size-4" }) }) }),
1471
1318
  children
1472
1319
  ]
1473
1320
  }
1474
1321
  ));
1475
1322
  ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1476
- var ContextMenuRadioItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs8(
1323
+ var ContextMenuRadioItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs9(
1477
1324
  ContextMenuPrimitive.RadioItem,
1478
1325
  {
1479
1326
  ref,
1480
- className: cn(
1481
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1482
- className
1483
- ),
1327
+ className: cn("dl-menu-item dl-menu-radio-item", className),
1484
1328
  ...props,
1485
1329
  children: [
1486
- /* @__PURE__ */ jsx16("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx16(Circle, { className: "fill-current size-4" }) }) }),
1330
+ /* @__PURE__ */ jsx17("span", { className: "dl-menu-radio-item__indicator", children: /* @__PURE__ */ jsx17(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx17(Circle, { className: "fill-current size-2" }) }) }),
1487
1331
  children
1488
1332
  ]
1489
1333
  }
1490
1334
  ));
1491
1335
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1492
- var ContextMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx16(
1336
+ var ContextMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx17(
1493
1337
  ContextMenuPrimitive.Label,
1494
1338
  {
1495
1339
  ref,
1496
- className: cn(
1497
- "px-2 py-1.5 text-sm font-semibold text-foreground",
1498
- inset && "pl-8",
1499
- className
1500
- ),
1340
+ className: cn("dl-menu-label", inset && "pl-8", className),
1501
1341
  ...props
1502
1342
  }
1503
1343
  ));
1504
1344
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1505
- var ContextMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx16(
1345
+ var ContextMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1506
1346
  ContextMenuPrimitive.Separator,
1507
1347
  {
1508
1348
  ref,
1509
- className: cn("-mx-1 my-1 h-px bg-border", className),
1349
+ className: cn("dl-menu-separator", className),
1510
1350
  ...props
1511
1351
  }
1512
1352
  ));
@@ -1515,27 +1355,93 @@ var ContextMenuShortcut = ({
1515
1355
  className,
1516
1356
  ...props
1517
1357
  }) => {
1518
- return /* @__PURE__ */ jsx16(
1519
- "span",
1520
- {
1521
- className: cn(
1522
- "ml-auto text-xs tracking-widest text-muted-foreground",
1523
- className
1524
- ),
1525
- ...props
1526
- }
1527
- );
1358
+ return /* @__PURE__ */ jsx17("span", { className: cn("dl-menu-shortcut", className), ...props });
1528
1359
  };
1529
1360
  ContextMenuShortcut.displayName = "ContextMenuShortcut";
1530
1361
 
1531
- // src/components/drawer.tsx
1362
+ // src/components/date-picker/date-picker.tsx
1363
+ import * as React18 from "react";
1364
+ import { format } from "date-fns";
1365
+ import { Calendar as CalendarIcon } from "lucide-react";
1366
+
1367
+ // src/components/popover/popover.tsx
1532
1368
  import * as React17 from "react";
1369
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
1370
+ import { jsx as jsx18 } from "react/jsx-runtime";
1371
+ var Popover = PopoverPrimitive.Root;
1372
+ var PopoverTrigger = PopoverPrimitive.Trigger;
1373
+ var PopoverAnchor = PopoverPrimitive.Anchor;
1374
+ var PopoverContent = React17.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx18(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx18(
1375
+ PopoverPrimitive.Content,
1376
+ {
1377
+ ref,
1378
+ align,
1379
+ sideOffset,
1380
+ className: cn("dl-popover", className),
1381
+ ...props
1382
+ }
1383
+ ) }));
1384
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1385
+
1386
+ // src/components/date-picker/date-picker.tsx
1387
+ import { jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
1388
+ function DatePicker({
1389
+ value,
1390
+ onChange,
1391
+ placeholder = "Pick a date",
1392
+ className,
1393
+ disabled
1394
+ }) {
1395
+ const date = React18.useMemo(() => {
1396
+ if (!value) return void 0;
1397
+ const parts = value.split("-");
1398
+ if (parts.length !== 3) {
1399
+ const d = new Date(value);
1400
+ return isNaN(d.getTime()) ? void 0 : d;
1401
+ }
1402
+ const year = parseInt(parts[0], 10);
1403
+ const month = parseInt(parts[1], 10) - 1;
1404
+ const day = parseInt(parts[2], 10);
1405
+ return new Date(year, month, day, 12, 0, 0);
1406
+ }, [value]);
1407
+ return /* @__PURE__ */ jsxs10(Popover, { children: [
1408
+ /* @__PURE__ */ jsx19(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs10(
1409
+ Button,
1410
+ {
1411
+ variant: "outline",
1412
+ type: "button",
1413
+ disabled,
1414
+ className: cn(
1415
+ "dl-date-picker-trigger",
1416
+ !value && "dl-date-picker-trigger--placeholder",
1417
+ className
1418
+ ),
1419
+ children: [
1420
+ /* @__PURE__ */ jsx19(CalendarIcon, { className: "dl-date-picker-icon" }),
1421
+ date && !isNaN(date.getTime()) ? format(date, "PPP") : /* @__PURE__ */ jsx19("span", { children: placeholder })
1422
+ ]
1423
+ }
1424
+ ) }),
1425
+ /* @__PURE__ */ jsx19(PopoverContent, { className: "dl-date-picker-content", align: "start", children: /* @__PURE__ */ jsx19(
1426
+ Calendar,
1427
+ {
1428
+ mode: "single",
1429
+ selected: date,
1430
+ onSelect: (selectedDate) => onChange?.(selectedDate ? format(selectedDate, "yyyy-MM-dd") : ""),
1431
+ initialFocus: true
1432
+ }
1433
+ ) })
1434
+ ] });
1435
+ }
1436
+
1437
+ // src/components/drawer/drawer.tsx
1438
+ import * as React19 from "react";
1533
1439
  import { Drawer as DrawerPrimitive } from "vaul";
1534
- import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
1440
+ import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
1535
1441
  var Drawer = ({
1536
1442
  shouldScaleBackground = true,
1537
1443
  ...props
1538
- }) => /* @__PURE__ */ jsx17(
1444
+ }) => /* @__PURE__ */ jsx20(
1539
1445
  DrawerPrimitive.Root,
1540
1446
  {
1541
1447
  shouldScaleBackground,
@@ -1546,28 +1452,25 @@ Drawer.displayName = "Drawer";
1546
1452
  var DrawerTrigger = DrawerPrimitive.Trigger;
1547
1453
  var DrawerPortal = DrawerPrimitive.Portal;
1548
1454
  var DrawerClose = DrawerPrimitive.Close;
1549
- var DrawerOverlay = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1455
+ var DrawerOverlay = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1550
1456
  DrawerPrimitive.Overlay,
1551
1457
  {
1552
1458
  ref,
1553
- className: cn("fixed inset-0 z-50 bg-black/80", className),
1459
+ className: cn("dl-drawer-overlay", className),
1554
1460
  ...props
1555
1461
  }
1556
1462
  ));
1557
1463
  DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
1558
- var DrawerContent = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs9(DrawerPortal, { children: [
1559
- /* @__PURE__ */ jsx17(DrawerOverlay, {}),
1560
- /* @__PURE__ */ jsxs9(
1464
+ var DrawerContent = React19.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs11(DrawerPortal, { children: [
1465
+ /* @__PURE__ */ jsx20(DrawerOverlay, {}),
1466
+ /* @__PURE__ */ jsxs11(
1561
1467
  DrawerPrimitive.Content,
1562
1468
  {
1563
1469
  ref,
1564
- className: cn(
1565
- "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
1566
- className
1567
- ),
1470
+ className: cn("dl-drawer-content", className),
1568
1471
  ...props,
1569
1472
  children: [
1570
- /* @__PURE__ */ jsx17("div", { className: "mx-auto mt-4 h-2 w-25 rounded-full bg-muted" }),
1473
+ /* @__PURE__ */ jsx20("div", { className: "dl-drawer-handle" }),
1571
1474
  children
1572
1475
  ]
1573
1476
  }
@@ -1577,164 +1480,138 @@ DrawerContent.displayName = "DrawerContent";
1577
1480
  var DrawerHeader = ({
1578
1481
  className,
1579
1482
  ...props
1580
- }) => /* @__PURE__ */ jsx17(
1581
- "div",
1582
- {
1583
- className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
1584
- ...props
1585
- }
1586
- );
1483
+ }) => /* @__PURE__ */ jsx20("div", { className: cn("dl-drawer-header", className), ...props });
1587
1484
  DrawerHeader.displayName = "DrawerHeader";
1588
1485
  var DrawerFooter = ({
1589
1486
  className,
1590
1487
  ...props
1591
- }) => /* @__PURE__ */ jsx17(
1592
- "div",
1593
- {
1594
- className: cn("mt-auto flex flex-col gap-2 p-4", className),
1595
- ...props
1596
- }
1597
- );
1488
+ }) => /* @__PURE__ */ jsx20("div", { className: cn("dl-drawer-footer", className), ...props });
1598
1489
  DrawerFooter.displayName = "DrawerFooter";
1599
- var DrawerTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1490
+ var DrawerTitle = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1600
1491
  DrawerPrimitive.Title,
1601
1492
  {
1602
1493
  ref,
1603
- className: cn(
1604
- "text-lg font-semibold leading-none tracking-tight",
1605
- className
1606
- ),
1494
+ className: cn("dl-drawer-title", className),
1607
1495
  ...props
1608
1496
  }
1609
1497
  ));
1610
1498
  DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
1611
- var DrawerDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx17(
1499
+ var DrawerDescription = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
1612
1500
  DrawerPrimitive.Description,
1613
1501
  {
1614
1502
  ref,
1615
- className: cn("text-sm text-muted-foreground", className),
1503
+ className: cn("dl-drawer-desc", className),
1616
1504
  ...props
1617
1505
  }
1618
1506
  ));
1619
1507
  DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
1620
1508
 
1621
- // src/components/dropdown-menu.tsx
1622
- import * as React18 from "react";
1509
+ // src/components/dropdown-menu/dropdown-menu.tsx
1510
+ import * as React20 from "react";
1623
1511
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1624
1512
  import { Check as Check3, ChevronRight as ChevronRight3, Circle as Circle2 } from "lucide-react";
1625
- import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1513
+ import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
1626
1514
  var DropdownMenu = DropdownMenuPrimitive.Root;
1627
1515
  var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1628
1516
  var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1629
1517
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1630
1518
  var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1631
1519
  var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1632
- var DropdownMenuSubTrigger = React18.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1520
+ var DropdownMenuSubTrigger = React20.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1633
1521
  DropdownMenuPrimitive.SubTrigger,
1634
1522
  {
1635
1523
  ref,
1636
1524
  className: cn(
1637
- "flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1525
+ "dl-menu-item dl-menu-sub-trigger",
1638
1526
  inset && "pl-8",
1639
1527
  className
1640
1528
  ),
1641
1529
  ...props,
1642
1530
  children: [
1643
1531
  children,
1644
- /* @__PURE__ */ jsx18(ChevronRight3, { className: "ml-auto" })
1532
+ /* @__PURE__ */ jsx21(
1533
+ ChevronRight3,
1534
+ {
1535
+ style: { marginLeft: "auto", width: "1rem", height: "1rem" }
1536
+ }
1537
+ )
1645
1538
  ]
1646
1539
  }
1647
1540
  ));
1648
1541
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1649
- var DropdownMenuSubContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1542
+ var DropdownMenuSubContent = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1650
1543
  DropdownMenuPrimitive.SubContent,
1651
1544
  {
1652
1545
  ref,
1653
- className: cn(
1654
- "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-dropdown-menu-content-transform-origin)",
1655
- className
1656
- ),
1546
+ className: cn("dl-menu-content", className),
1657
1547
  ...props
1658
1548
  }
1659
1549
  ));
1660
1550
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1661
- var DropdownMenuContent = React18.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx18(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx18(
1551
+ var DropdownMenuContent = React20.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx21(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx21(
1662
1552
  DropdownMenuPrimitive.Content,
1663
1553
  {
1664
1554
  ref,
1665
1555
  sideOffset,
1666
- className: cn(
1667
- "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1668
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-dropdown-menu-content-transform-origin)",
1669
- className
1670
- ),
1556
+ className: cn("dl-menu-content", className),
1671
1557
  ...props
1672
1558
  }
1673
1559
  ) }));
1674
1560
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1675
- var DropdownMenuItem = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx18(
1561
+ var DropdownMenuItem = React20.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx21(
1676
1562
  DropdownMenuPrimitive.Item,
1677
1563
  {
1678
1564
  ref,
1679
- className: cn(
1680
- "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
1681
- inset && "pl-8",
1682
- className
1683
- ),
1565
+ className: cn("dl-menu-item", inset && "pl-8", className),
1684
1566
  ...props
1685
1567
  }
1686
1568
  ));
1687
1569
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1688
- var DropdownMenuCheckboxItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1570
+ var DropdownMenuCheckboxItem = React20.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1689
1571
  DropdownMenuPrimitive.CheckboxItem,
1690
1572
  {
1691
1573
  ref,
1692
- className: cn(
1693
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1694
- className
1695
- ),
1574
+ className: cn("dl-menu-item dl-menu-checkbox-item", className),
1696
1575
  ...props,
1697
1576
  children: [
1698
- /* @__PURE__ */ jsx18("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx18(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx18(Check3, { className: "size-4" }) }) }),
1577
+ /* @__PURE__ */ jsx21("span", { className: "dl-menu-checkbox-item__indicator", children: /* @__PURE__ */ jsx21(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx21(Check3, { style: { width: "1rem", height: "1rem" } }) }) }),
1699
1578
  children
1700
1579
  ]
1701
1580
  }
1702
1581
  ));
1703
1582
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1704
- var DropdownMenuRadioItem = React18.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs10(
1583
+ var DropdownMenuRadioItem = React20.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1705
1584
  DropdownMenuPrimitive.RadioItem,
1706
1585
  {
1707
1586
  ref,
1708
- className: cn(
1709
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1710
- className
1711
- ),
1587
+ className: cn("dl-menu-item dl-menu-radio-item", className),
1712
1588
  ...props,
1713
1589
  children: [
1714
- /* @__PURE__ */ jsx18("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx18(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx18(Circle2, { className: "fill-current size-2" }) }) }),
1590
+ /* @__PURE__ */ jsx21("span", { className: "dl-menu-radio-item__indicator", children: /* @__PURE__ */ jsx21(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx21(
1591
+ Circle2,
1592
+ {
1593
+ style: { width: "0.5rem", height: "0.5rem", fill: "currentColor" }
1594
+ }
1595
+ ) }) }),
1715
1596
  children
1716
1597
  ]
1717
1598
  }
1718
1599
  ));
1719
1600
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1720
- var DropdownMenuLabel = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx18(
1601
+ var DropdownMenuLabel = React20.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx21(
1721
1602
  DropdownMenuPrimitive.Label,
1722
1603
  {
1723
1604
  ref,
1724
- className: cn(
1725
- "px-2 py-1.5 text-sm font-semibold",
1726
- inset && "pl-8",
1727
- className
1728
- ),
1605
+ className: cn("dl-menu-label", inset && "pl-8", className),
1729
1606
  ...props
1730
1607
  }
1731
1608
  ));
1732
1609
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1733
- var DropdownMenuSeparator = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
1610
+ var DropdownMenuSeparator = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1734
1611
  DropdownMenuPrimitive.Separator,
1735
1612
  {
1736
1613
  ref,
1737
- className: cn("-mx-1 my-1 h-px bg-muted", className),
1614
+ className: cn("dl-menu-separator", className),
1738
1615
  ...props
1739
1616
  }
1740
1617
  ));
@@ -1743,18 +1620,12 @@ var DropdownMenuShortcut = ({
1743
1620
  className,
1744
1621
  ...props
1745
1622
  }) => {
1746
- return /* @__PURE__ */ jsx18(
1747
- "span",
1748
- {
1749
- className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1750
- ...props
1751
- }
1752
- );
1623
+ return /* @__PURE__ */ jsx21("span", { className: cn("dl-menu-shortcut", className), ...props });
1753
1624
  };
1754
1625
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1755
1626
 
1756
- // src/components/form.tsx
1757
- import * as React20 from "react";
1627
+ // src/components/form/form.tsx
1628
+ import * as React22 from "react";
1758
1629
  import { Slot as Slot3 } from "@radix-ui/react-slot";
1759
1630
  import {
1760
1631
  Controller,
@@ -1762,15 +1633,13 @@ import {
1762
1633
  useFormContext
1763
1634
  } from "react-hook-form";
1764
1635
 
1765
- // src/components/label.tsx
1766
- import * as React19 from "react";
1636
+ // src/components/label/label.tsx
1637
+ import * as React21 from "react";
1767
1638
  import * as LabelPrimitive from "@radix-ui/react-label";
1768
1639
  import { cva as cva4 } from "class-variance-authority";
1769
- import { jsx as jsx19 } from "react/jsx-runtime";
1770
- var labelVariants = cva4(
1771
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1772
- );
1773
- var Label3 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1640
+ import { jsx as jsx22 } from "react/jsx-runtime";
1641
+ var labelVariants = cva4("dl-label");
1642
+ var Label3 = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
1774
1643
  LabelPrimitive.Root,
1775
1644
  {
1776
1645
  ref,
@@ -1780,20 +1649,20 @@ var Label3 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
1780
1649
  ));
1781
1650
  Label3.displayName = LabelPrimitive.Root.displayName;
1782
1651
 
1783
- // src/components/form.tsx
1784
- import { jsx as jsx20 } from "react/jsx-runtime";
1652
+ // src/components/form/form.tsx
1653
+ import { jsx as jsx23 } from "react/jsx-runtime";
1785
1654
  var Form = FormProvider;
1786
- var FormFieldContext = React20.createContext(
1655
+ var FormFieldContext = React22.createContext(
1787
1656
  null
1788
1657
  );
1789
1658
  var FormField = ({
1790
1659
  ...props
1791
1660
  }) => {
1792
- return /* @__PURE__ */ jsx20(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx20(Controller, { ...props }) });
1661
+ return /* @__PURE__ */ jsx23(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx23(Controller, { ...props }) });
1793
1662
  };
1794
1663
  var useFormField = () => {
1795
- const fieldContext = React20.useContext(FormFieldContext);
1796
- const itemContext = React20.useContext(FormItemContext);
1664
+ const fieldContext = React22.useContext(FormFieldContext);
1665
+ const itemContext = React22.useContext(FormItemContext);
1797
1666
  const { getFieldState, formState } = useFormContext();
1798
1667
  if (!fieldContext) {
1799
1668
  throw new Error("useFormField should be used within <FormField>");
@@ -1812,28 +1681,28 @@ var useFormField = () => {
1812
1681
  ...fieldState
1813
1682
  };
1814
1683
  };
1815
- var FormItemContext = React20.createContext(null);
1816
- var FormItem = React20.forwardRef(({ className, ...props }, ref) => {
1817
- const id = React20.useId();
1818
- return /* @__PURE__ */ jsx20(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx20("div", { ref, className: cn("space-y-2", className), ...props }) });
1684
+ var FormItemContext = React22.createContext(null);
1685
+ var FormItem = React22.forwardRef(({ className, ...props }, ref) => {
1686
+ const id = React22.useId();
1687
+ return /* @__PURE__ */ jsx23(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx23("div", { ref, className: cn("dl-form-item", className), ...props }) });
1819
1688
  });
1820
1689
  FormItem.displayName = "FormItem";
1821
- var FormLabel = React20.forwardRef(({ className, ...props }, ref) => {
1690
+ var FormLabel = React22.forwardRef(({ className, ...props }, ref) => {
1822
1691
  const { error, formItemId } = useFormField();
1823
- return /* @__PURE__ */ jsx20(
1692
+ return /* @__PURE__ */ jsx23(
1824
1693
  Label3,
1825
1694
  {
1826
1695
  ref,
1827
- className: cn(error && "text-destructive", className),
1696
+ className: cn(error && "dl-form-label--error", className),
1828
1697
  htmlFor: formItemId,
1829
1698
  ...props
1830
1699
  }
1831
1700
  );
1832
1701
  });
1833
1702
  FormLabel.displayName = "FormLabel";
1834
- var FormControl = React20.forwardRef(({ ...props }, ref) => {
1703
+ var FormControl = React22.forwardRef(({ ...props }, ref) => {
1835
1704
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1836
- return /* @__PURE__ */ jsx20(
1705
+ return /* @__PURE__ */ jsx23(
1837
1706
  Slot3,
1838
1707
  {
1839
1708
  ref,
@@ -1845,31 +1714,31 @@ var FormControl = React20.forwardRef(({ ...props }, ref) => {
1845
1714
  );
1846
1715
  });
1847
1716
  FormControl.displayName = "FormControl";
1848
- var FormDescription = React20.forwardRef(({ className, ...props }, ref) => {
1717
+ var FormDescription = React22.forwardRef(({ className, ...props }, ref) => {
1849
1718
  const { formDescriptionId } = useFormField();
1850
- return /* @__PURE__ */ jsx20(
1719
+ return /* @__PURE__ */ jsx23(
1851
1720
  "p",
1852
1721
  {
1853
1722
  ref,
1854
1723
  id: formDescriptionId,
1855
- className: cn("text-[0.8rem] text-muted-foreground", className),
1724
+ className: cn("dl-form-desc", className),
1856
1725
  ...props
1857
1726
  }
1858
1727
  );
1859
1728
  });
1860
1729
  FormDescription.displayName = "FormDescription";
1861
- var FormMessage = React20.forwardRef(({ className, children, ...props }, ref) => {
1730
+ var FormMessage = React22.forwardRef(({ className, children, ...props }, ref) => {
1862
1731
  const { error, formMessageId } = useFormField();
1863
1732
  const body = error ? String(error?.message ?? "") : children;
1864
1733
  if (!body) {
1865
1734
  return null;
1866
1735
  }
1867
- return /* @__PURE__ */ jsx20(
1736
+ return /* @__PURE__ */ jsx23(
1868
1737
  "p",
1869
1738
  {
1870
1739
  ref,
1871
1740
  id: formMessageId,
1872
- className: cn("text-[0.8rem] font-medium text-destructive", className),
1741
+ className: cn("dl-form-error", className),
1873
1742
  ...props,
1874
1743
  children: body
1875
1744
  }
@@ -1877,408 +1746,387 @@ var FormMessage = React20.forwardRef(({ className, children, ...props }, ref) =>
1877
1746
  });
1878
1747
  FormMessage.displayName = "FormMessage";
1879
1748
 
1880
- // src/components/hover-card.tsx
1881
- import * as React21 from "react";
1749
+ // src/components/hover-card/hover-card.tsx
1750
+ import * as React23 from "react";
1882
1751
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
1883
- import { jsx as jsx21 } from "react/jsx-runtime";
1752
+ import { jsx as jsx24 } from "react/jsx-runtime";
1884
1753
  var HoverCard = HoverCardPrimitive.Root;
1885
1754
  var HoverCardTrigger = HoverCardPrimitive.Trigger;
1886
- var HoverCardContent = React21.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx21(
1755
+ var HoverCardContent = React23.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx24(
1887
1756
  HoverCardPrimitive.Content,
1888
1757
  {
1889
1758
  ref,
1890
1759
  align,
1891
1760
  sideOffset,
1892
- className: cn(
1893
- "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-hover-card-content-transform-origin)",
1894
- className
1895
- ),
1761
+ className: cn("dl-hover-card", className),
1896
1762
  ...props
1897
1763
  }
1898
1764
  ));
1899
1765
  HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
1900
1766
 
1901
- // src/components/input-otp.tsx
1902
- import * as React22 from "react";
1767
+ // src/components/input/input.tsx
1768
+ import * as React24 from "react";
1769
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
1770
+ var Input = React24.forwardRef(
1771
+ ({ className, type, startIcon, endIcon, ...props }, ref) => {
1772
+ const inputEl = /* @__PURE__ */ jsx25(
1773
+ "input",
1774
+ {
1775
+ type,
1776
+ className: cn(
1777
+ "dl-input",
1778
+ startIcon && "dl-input--has-start-icon",
1779
+ endIcon && "dl-input--has-end-icon",
1780
+ className
1781
+ ),
1782
+ ref,
1783
+ ...props
1784
+ }
1785
+ );
1786
+ if (!startIcon && !endIcon) {
1787
+ return inputEl;
1788
+ }
1789
+ return /* @__PURE__ */ jsxs13("div", { className: "dl-input-wrapper", children: [
1790
+ startIcon && /* @__PURE__ */ jsx25("span", { className: "dl-input-icon dl-input-icon--start", children: startIcon }),
1791
+ inputEl,
1792
+ endIcon && /* @__PURE__ */ jsx25("span", { className: "dl-input-icon dl-input-icon--end", children: endIcon })
1793
+ ] });
1794
+ }
1795
+ );
1796
+ Input.displayName = "Input";
1797
+
1798
+ // src/components/input-otp/input-otp.tsx
1799
+ import * as React25 from "react";
1903
1800
  import { OTPInput, OTPInputContext } from "input-otp";
1904
1801
  import { Minus } from "lucide-react";
1905
- import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
1906
- var InputOTP = React22.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx22(
1802
+ import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
1803
+ var InputOTP = React25.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx26(
1907
1804
  OTPInput,
1908
1805
  {
1909
1806
  ref,
1910
- containerClassName: cn(
1911
- "flex items-center gap-2 has-disabled:opacity-50",
1912
- containerClassName
1913
- ),
1914
- className: cn("disabled:cursor-not-allowed", className),
1807
+ containerClassName: cn("dl-input-otp-container", containerClassName),
1808
+ className: cn("dl-input-otp", className),
1915
1809
  ...props
1916
1810
  }
1917
1811
  ));
1918
1812
  InputOTP.displayName = "InputOTP";
1919
- var InputOTPGroup = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, className: cn("flex items-center", className), ...props }));
1813
+ var InputOTPGroup = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26("div", { ref, className: cn("dl-input-otp-group", className), ...props }));
1920
1814
  InputOTPGroup.displayName = "InputOTPGroup";
1921
- var InputOTPSlot = React22.forwardRef(({ index, className, ...props }, ref) => {
1922
- const inputOTPContext = React22.useContext(OTPInputContext);
1815
+ var InputOTPSlot = React25.forwardRef(({ index, className, ...props }, ref) => {
1816
+ const inputOTPContext = React25.useContext(OTPInputContext);
1923
1817
  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index] ?? {
1924
1818
  char: null,
1925
1819
  hasFakeCaret: false,
1926
1820
  isActive: false
1927
1821
  };
1928
- return /* @__PURE__ */ jsxs11(
1822
+ return /* @__PURE__ */ jsxs14(
1929
1823
  "div",
1930
1824
  {
1931
1825
  ref,
1932
1826
  className: cn(
1933
- "relative flex items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md size-9",
1934
- isActive && "z-10 ring-1 ring-ring",
1827
+ "dl-input-otp-slot",
1828
+ isActive && "dl-input-otp-slot--active",
1935
1829
  className
1936
1830
  ),
1937
1831
  ...props,
1938
1832
  children: [
1939
1833
  char,
1940
- hasFakeCaret && /* @__PURE__ */ jsx22("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx22("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
1834
+ hasFakeCaret && /* @__PURE__ */ jsx26("div", { className: "dl-input-otp-caret", children: /* @__PURE__ */ jsx26("div", { className: "dl-input-otp-caret__line" }) })
1941
1835
  ]
1942
1836
  }
1943
1837
  );
1944
1838
  });
1945
1839
  InputOTPSlot.displayName = "InputOTPSlot";
1946
- var InputOTPSeparator = React22.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx22(Minus, {}) }));
1840
+ var InputOTPSeparator = React25.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx26("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx26(Minus, {}) }));
1947
1841
  InputOTPSeparator.displayName = "InputOTPSeparator";
1948
1842
 
1949
- // src/components/input.tsx
1950
- import * as React23 from "react";
1951
- import { jsx as jsx23 } from "react/jsx-runtime";
1952
- var Input = React23.forwardRef(
1953
- ({ className, type, ...props }, ref) => {
1954
- return /* @__PURE__ */ jsx23(
1955
- "input",
1956
- {
1957
- type,
1958
- className: cn(
1959
- "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1960
- className
1961
- ),
1962
- ref,
1963
- ...props
1964
- }
1965
- );
1843
+ // src/components/skeleton/skeleton.tsx
1844
+ import { jsx as jsx27 } from "react/jsx-runtime";
1845
+ function Skeleton({ className, ...props }) {
1846
+ return /* @__PURE__ */ jsx27("div", { className: cn("dl-skeleton", className), ...props });
1847
+ }
1848
+
1849
+ // src/components/loading-state/loading-state.tsx
1850
+ import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
1851
+ function LoadingState({
1852
+ rows = 3,
1853
+ message,
1854
+ className,
1855
+ ...props
1856
+ }) {
1857
+ if (message) {
1858
+ return /* @__PURE__ */ jsxs15("div", { className: cn("dl-loading", className), ...props, children: [
1859
+ /* @__PURE__ */ jsx28(
1860
+ "svg",
1861
+ {
1862
+ xmlns: "http://www.w3.org/2000/svg",
1863
+ width: "24",
1864
+ height: "24",
1865
+ viewBox: "0 0 24 24",
1866
+ fill: "none",
1867
+ stroke: "currentColor",
1868
+ strokeWidth: "2",
1869
+ strokeLinecap: "round",
1870
+ strokeLinejoin: "round",
1871
+ children: /* @__PURE__ */ jsx28("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
1872
+ }
1873
+ ),
1874
+ /* @__PURE__ */ jsx28("span", { children: message })
1875
+ ] });
1966
1876
  }
1967
- );
1968
- Input.displayName = "Input";
1877
+ return /* @__PURE__ */ jsxs15("div", { className: cn("dl-loading-skeleton", className), ...props, children: [
1878
+ /* @__PURE__ */ jsx28(Skeleton, { style: { height: "2rem", width: "33.333%" } }),
1879
+ /* @__PURE__ */ jsx28("div", { className: "dl-loading-skeleton__list", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx28(
1880
+ Skeleton,
1881
+ {
1882
+ style: {
1883
+ height: "4rem",
1884
+ width: "100%",
1885
+ borderRadius: "var(--radius-lg, 0.75rem)"
1886
+ }
1887
+ },
1888
+ i
1889
+ )) })
1890
+ ] });
1891
+ }
1969
1892
 
1970
- // src/components/menubar.tsx
1971
- import * as React24 from "react";
1893
+ // src/components/menubar/menubar.tsx
1894
+ import * as React26 from "react";
1972
1895
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
1973
1896
  import { Check as Check4, ChevronRight as ChevronRight4, Circle as Circle3 } from "lucide-react";
1974
- import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
1975
- function MenubarMenu({
1976
- ...props
1977
- }) {
1978
- return /* @__PURE__ */ jsx24(MenubarPrimitive.Menu, { ...props });
1897
+ import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
1898
+ function MenubarMenu(props) {
1899
+ return /* @__PURE__ */ jsx29(MenubarPrimitive.Menu, { ...props });
1979
1900
  }
1980
- function MenubarGroup({
1981
- ...props
1982
- }) {
1983
- return /* @__PURE__ */ jsx24(MenubarPrimitive.Group, { ...props });
1901
+ function MenubarGroup(props) {
1902
+ return /* @__PURE__ */ jsx29(MenubarPrimitive.Group, { ...props });
1984
1903
  }
1985
- function MenubarPortal({
1986
- ...props
1987
- }) {
1988
- return /* @__PURE__ */ jsx24(MenubarPrimitive.Portal, { ...props });
1904
+ function MenubarPortal(props) {
1905
+ return /* @__PURE__ */ jsx29(MenubarPrimitive.Portal, { ...props });
1989
1906
  }
1990
- function MenubarRadioGroup({
1991
- ...props
1992
- }) {
1993
- return /* @__PURE__ */ jsx24(MenubarPrimitive.RadioGroup, { ...props });
1907
+ function MenubarRadioGroup(props) {
1908
+ return /* @__PURE__ */ jsx29(MenubarPrimitive.RadioGroup, { ...props });
1994
1909
  }
1995
- function MenubarSub({
1996
- ...props
1997
- }) {
1998
- return /* @__PURE__ */ jsx24(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
1910
+ function MenubarSub(props) {
1911
+ return /* @__PURE__ */ jsx29(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
1999
1912
  }
2000
- var Menubar = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
1913
+ var Menubar = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2001
1914
  MenubarPrimitive.Root,
2002
1915
  {
2003
1916
  ref,
2004
- className: cn(
2005
- "flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
2006
- className
2007
- ),
1917
+ className: cn("dl-menubar", className),
2008
1918
  ...props
2009
1919
  }
2010
1920
  ));
2011
1921
  Menubar.displayName = MenubarPrimitive.Root.displayName;
2012
- var MenubarTrigger = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
1922
+ var MenubarTrigger = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2013
1923
  MenubarPrimitive.Trigger,
2014
1924
  {
2015
1925
  ref,
2016
- className: cn(
2017
- "flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2018
- className
2019
- ),
1926
+ className: cn("dl-menubar-trigger", className),
2020
1927
  ...props
2021
1928
  }
2022
1929
  ));
2023
1930
  MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
2024
- var MenubarSubTrigger = React24.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1931
+ var MenubarSubTrigger = React26.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2025
1932
  MenubarPrimitive.SubTrigger,
2026
1933
  {
2027
1934
  ref,
2028
1935
  className: cn(
2029
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
1936
+ "dl-menu-item dl-menu-sub-trigger",
2030
1937
  inset && "pl-8",
2031
1938
  className
2032
1939
  ),
2033
1940
  ...props,
2034
1941
  children: [
2035
1942
  children,
2036
- /* @__PURE__ */ jsx24(ChevronRight4, { className: "ml-auto size-4" })
1943
+ /* @__PURE__ */ jsx29(ChevronRight4, { className: "ml-auto size-4" })
2037
1944
  ]
2038
1945
  }
2039
1946
  ));
2040
1947
  MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
2041
- var MenubarSubContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
1948
+ var MenubarSubContent = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2042
1949
  MenubarPrimitive.SubContent,
2043
1950
  {
2044
1951
  ref,
2045
- className: cn(
2046
- "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-menubar-content-transform-origin)",
2047
- className
2048
- ),
1952
+ className: cn("dl-menu-content", className),
2049
1953
  ...props
2050
1954
  }
2051
1955
  ));
2052
1956
  MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
2053
- var MenubarContent = React24.forwardRef(
2054
- ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx24(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx24(
1957
+ var MenubarContent = React26.forwardRef(
1958
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx29(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx29(
2055
1959
  MenubarPrimitive.Content,
2056
1960
  {
2057
1961
  ref,
2058
1962
  align,
2059
1963
  alignOffset,
2060
1964
  sideOffset,
2061
- className: cn(
2062
- "z-50 min-w-48 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-menubar-content-transform-origin)",
2063
- className
2064
- ),
1965
+ className: cn("dl-menu-content", className),
2065
1966
  ...props
2066
1967
  }
2067
1968
  ) })
2068
1969
  );
2069
1970
  MenubarContent.displayName = MenubarPrimitive.Content.displayName;
2070
- var MenubarItem = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx24(
1971
+ var MenubarItem = React26.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx29(
2071
1972
  MenubarPrimitive.Item,
2072
1973
  {
2073
1974
  ref,
2074
- className: cn(
2075
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2076
- inset && "pl-8",
2077
- className
2078
- ),
1975
+ className: cn("dl-menu-item", inset && "pl-8", className),
2079
1976
  ...props
2080
1977
  }
2081
1978
  ));
2082
1979
  MenubarItem.displayName = MenubarPrimitive.Item.displayName;
2083
- var MenubarCheckboxItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1980
+ var MenubarCheckboxItem = React26.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs16(
2084
1981
  MenubarPrimitive.CheckboxItem,
2085
1982
  {
2086
1983
  ref,
2087
- className: cn(
2088
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2089
- className
2090
- ),
1984
+ className: cn("dl-menu-item dl-menu-checkbox-item", className),
1985
+ checked,
2091
1986
  ...props,
2092
1987
  children: [
2093
- /* @__PURE__ */ jsx24("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx24(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(Check4, { className: "size-4" }) }) }),
1988
+ /* @__PURE__ */ jsx29("span", { className: "dl-menu-checkbox-item__indicator", children: /* @__PURE__ */ jsx29(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(Check4, { className: "size-4" }) }) }),
2094
1989
  children
2095
1990
  ]
2096
1991
  }
2097
1992
  ));
2098
1993
  MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
2099
- var MenubarRadioItem = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
1994
+ var MenubarRadioItem = React26.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2100
1995
  MenubarPrimitive.RadioItem,
2101
1996
  {
2102
1997
  ref,
2103
- className: cn(
2104
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2105
- className
2106
- ),
1998
+ className: cn("dl-menu-item dl-menu-radio-item", className),
2107
1999
  ...props,
2108
2000
  children: [
2109
- /* @__PURE__ */ jsx24("span", { className: "absolute left-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx24(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx24(Circle3, { className: "fill-current size-4" }) }) }),
2001
+ /* @__PURE__ */ jsx29("span", { className: "dl-menu-radio-item__indicator", children: /* @__PURE__ */ jsx29(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx29(Circle3, { className: "fill-current size-2" }) }) }),
2110
2002
  children
2111
2003
  ]
2112
2004
  }
2113
2005
  ));
2114
2006
  MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
2115
- var MenubarLabel = React24.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx24(
2007
+ var MenubarLabel = React26.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx29(
2116
2008
  MenubarPrimitive.Label,
2117
2009
  {
2118
2010
  ref,
2119
- className: cn(
2120
- "px-2 py-1.5 text-sm font-semibold",
2121
- inset && "pl-8",
2122
- className
2123
- ),
2011
+ className: cn("dl-menu-label", inset && "pl-8", className),
2124
2012
  ...props
2125
2013
  }
2126
2014
  ));
2127
2015
  MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
2128
- var MenubarSeparator = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2016
+ var MenubarSeparator = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2129
2017
  MenubarPrimitive.Separator,
2130
2018
  {
2131
2019
  ref,
2132
- className: cn("-mx-1 my-1 h-px bg-muted", className),
2020
+ className: cn("dl-menu-separator", className),
2133
2021
  ...props
2134
2022
  }
2135
2023
  ));
2136
2024
  MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
2137
- var MenubarShortcut = ({
2138
- className,
2139
- ...props
2140
- }) => {
2141
- return /* @__PURE__ */ jsx24(
2142
- "span",
2143
- {
2144
- className: cn(
2145
- "ml-auto text-xs tracking-widest text-muted-foreground",
2146
- className
2147
- ),
2148
- ...props
2149
- }
2150
- );
2025
+ var MenubarShortcut = ({ className, ...props }) => {
2026
+ return /* @__PURE__ */ jsx29("span", { className: cn("dl-menu-shortcut", className), ...props });
2151
2027
  };
2152
- MenubarShortcut.displayname = "MenubarShortcut";
2028
+ MenubarShortcut.displayName = "MenubarShortcut";
2153
2029
 
2154
- // src/components/navigation-menu.tsx
2155
- import * as React25 from "react";
2030
+ // src/components/navigation-menu/navigation-menu.tsx
2031
+ import * as React27 from "react";
2156
2032
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
2157
2033
  import { cva as cva5 } from "class-variance-authority";
2158
2034
  import { ChevronDown as ChevronDown2 } from "lucide-react";
2159
- import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
2160
- var NavigationMenu = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
2035
+ import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
2036
+ var NavigationMenu = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs17(
2161
2037
  NavigationMenuPrimitive.Root,
2162
2038
  {
2163
2039
  ref,
2164
- className: cn(
2165
- "relative z-10 flex max-w-max flex-1 items-center justify-center",
2166
- className
2167
- ),
2040
+ className: cn("dl-navigation-menu", className),
2168
2041
  ...props,
2169
2042
  children: [
2170
2043
  children,
2171
- /* @__PURE__ */ jsx25(NavigationMenuViewport, {})
2044
+ /* @__PURE__ */ jsx30(NavigationMenuViewport, {})
2172
2045
  ]
2173
2046
  }
2174
2047
  ));
2175
2048
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
2176
- var NavigationMenuList = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2049
+ var NavigationMenuList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2177
2050
  NavigationMenuPrimitive.List,
2178
2051
  {
2179
2052
  ref,
2180
- className: cn(
2181
- "group flex flex-1 list-none items-center justify-center space-x-1",
2182
- className
2183
- ),
2053
+ className: cn("dl-navigation-menu-list", className),
2184
2054
  ...props
2185
2055
  }
2186
2056
  ));
2187
2057
  NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
2188
2058
  var NavigationMenuItem = NavigationMenuPrimitive.Item;
2189
- var navigationMenuTriggerStyle = cva5(
2190
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium cursor-pointer transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"
2191
- );
2192
- var NavigationMenuTrigger = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
2059
+ var navigationMenuTriggerStyle = cva5("dl-navigation-menu-trigger");
2060
+ var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs17(
2193
2061
  NavigationMenuPrimitive.Trigger,
2194
2062
  {
2195
2063
  ref,
2196
- className: cn(navigationMenuTriggerStyle(), "group", className),
2064
+ className: cn(navigationMenuTriggerStyle(), className),
2197
2065
  ...props,
2198
2066
  children: [
2199
2067
  children,
2200
2068
  " ",
2201
- /* @__PURE__ */ jsx25(
2202
- ChevronDown2,
2203
- {
2204
- className: "relative top-px ml-1 transition duration-300 group-data-[state=open]:rotate-180 size-3",
2205
- "aria-hidden": "true"
2206
- }
2207
- )
2069
+ /* @__PURE__ */ jsx30(ChevronDown2, { className: "dl-navigation-menu-chevron", "aria-hidden": "true" })
2208
2070
  ]
2209
2071
  }
2210
2072
  ));
2211
2073
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
2212
- var NavigationMenuContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2074
+ var NavigationMenuContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2213
2075
  NavigationMenuPrimitive.Content,
2214
2076
  {
2215
2077
  ref,
2216
- className: cn(
2217
- "left-0 top-0 w-full 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 md:absolute md:w-auto ",
2218
- className
2219
- ),
2078
+ className: cn("dl-navigation-menu-content", className),
2220
2079
  ...props
2221
2080
  }
2222
2081
  ));
2223
2082
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
2224
2083
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
2225
- var NavigationMenuViewport = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx25(
2084
+ var NavigationMenuViewport = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30("div", { className: "dl-navigation-menu-viewport-wrapper", children: /* @__PURE__ */ jsx30(
2226
2085
  NavigationMenuPrimitive.Viewport,
2227
2086
  {
2228
- className: cn(
2229
- "origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-(--radix-navigation-menu-viewport-width)",
2230
- className
2231
- ),
2087
+ className: cn("dl-navigation-menu-viewport", className),
2232
2088
  ref,
2233
2089
  ...props
2234
2090
  }
2235
2091
  ) }));
2236
2092
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
2237
- var NavigationMenuIndicator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2093
+ var NavigationMenuIndicator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
2238
2094
  NavigationMenuPrimitive.Indicator,
2239
2095
  {
2240
2096
  ref,
2241
- className: cn(
2242
- "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2243
- className
2244
- ),
2097
+ className: cn("dl-navigation-menu-indicator", className),
2245
2098
  ...props,
2246
- children: /* @__PURE__ */ jsx25("div", { className: "relative top-[60%] rotate-45 rounded-tl-sm bg-border shadow-md size-2" })
2099
+ children: /* @__PURE__ */ jsx30("div", { className: "dl-navigation-menu-indicator__arrow" })
2247
2100
  }
2248
2101
  ));
2249
2102
  NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
2250
2103
 
2251
- // src/components/pagination.tsx
2252
- import * as React26 from "react";
2104
+ // src/components/pagination/pagination.tsx
2105
+ import * as React28 from "react";
2253
2106
  import { ChevronLeft, ChevronRight as ChevronRight5, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
2254
- import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
2255
- var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx26(
2107
+ import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
2108
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx31(
2256
2109
  "nav",
2257
2110
  {
2258
2111
  role: "navigation",
2259
2112
  "aria-label": "pagination",
2260
- className: cn("mx-auto flex w-full justify-center", className),
2113
+ className: cn("dl-pagination", className),
2261
2114
  ...props
2262
2115
  }
2263
2116
  );
2264
2117
  Pagination.displayName = "Pagination";
2265
- var PaginationContent = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26(
2266
- "ul",
2267
- {
2268
- ref,
2269
- className: cn("flex flex-row items-center gap-1", className),
2270
- ...props
2271
- }
2272
- ));
2118
+ var PaginationContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31("ul", { ref, className: cn("dl-pagination-content", className), ...props }));
2273
2119
  PaginationContent.displayName = "PaginationContent";
2274
- var PaginationItem = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx26("li", { ref, className: cn("", className), ...props }));
2120
+ var PaginationItem = React28.forwardRef(
2121
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx31("li", { ref, className: cn("dl-pagination-item", className), ...props })
2122
+ );
2275
2123
  PaginationItem.displayName = "PaginationItem";
2276
2124
  var PaginationLink = ({
2277
2125
  className,
2278
2126
  isActive,
2279
2127
  size = "icon",
2280
2128
  ...props
2281
- }) => /* @__PURE__ */ jsx26(
2129
+ }) => /* @__PURE__ */ jsx31(
2282
2130
  "a",
2283
2131
  {
2284
2132
  "aria-current": isActive ? "page" : void 0,
@@ -2296,33 +2144,30 @@ PaginationLink.displayName = "PaginationLink";
2296
2144
  var PaginationPrevious = ({
2297
2145
  className,
2298
2146
  ...props
2299
- }) => /* @__PURE__ */ jsxs14(
2147
+ }) => /* @__PURE__ */ jsxs18(
2300
2148
  PaginationLink,
2301
2149
  {
2302
2150
  "aria-label": "Go to previous page",
2303
2151
  size: "default",
2304
- className: cn("gap-1 pl-2.5", className),
2152
+ className: cn("dl-pagination-prev", className),
2305
2153
  ...props,
2306
2154
  children: [
2307
- /* @__PURE__ */ jsx26(ChevronLeft, { className: "size-4" }),
2308
- /* @__PURE__ */ jsx26("span", { children: "Previous" })
2155
+ /* @__PURE__ */ jsx31(ChevronLeft, { className: "size-4" }),
2156
+ /* @__PURE__ */ jsx31("span", { children: "Previous" })
2309
2157
  ]
2310
2158
  }
2311
2159
  );
2312
2160
  PaginationPrevious.displayName = "PaginationPrevious";
2313
- var PaginationNext = ({
2314
- className,
2315
- ...props
2316
- }) => /* @__PURE__ */ jsxs14(
2161
+ var PaginationNext = ({ className, ...props }) => /* @__PURE__ */ jsxs18(
2317
2162
  PaginationLink,
2318
2163
  {
2319
2164
  "aria-label": "Go to next page",
2320
2165
  size: "default",
2321
- className: cn("gap-1 pr-2.5", className),
2166
+ className: cn("dl-pagination-next", className),
2322
2167
  ...props,
2323
2168
  children: [
2324
- /* @__PURE__ */ jsx26("span", { children: "Next" }),
2325
- /* @__PURE__ */ jsx26(ChevronRight5, { className: "size-4" })
2169
+ /* @__PURE__ */ jsx31("span", { children: "Next" }),
2170
+ /* @__PURE__ */ jsx31(ChevronRight5, { className: "size-4" })
2326
2171
  ]
2327
2172
  }
2328
2173
  );
@@ -2330,59 +2175,50 @@ PaginationNext.displayName = "PaginationNext";
2330
2175
  var PaginationEllipsis = ({
2331
2176
  className,
2332
2177
  ...props
2333
- }) => /* @__PURE__ */ jsxs14(
2178
+ }) => /* @__PURE__ */ jsxs18(
2334
2179
  "span",
2335
2180
  {
2336
2181
  "aria-hidden": true,
2337
- className: cn("flex items-center justify-center size-9", className),
2182
+ className: cn("dl-pagination-ellipsis", className),
2338
2183
  ...props,
2339
2184
  children: [
2340
- /* @__PURE__ */ jsx26(MoreHorizontal2, { className: "size-4" }),
2341
- /* @__PURE__ */ jsx26("span", { className: "sr-only", children: "More pages" })
2185
+ /* @__PURE__ */ jsx31(MoreHorizontal2, {}),
2186
+ /* @__PURE__ */ jsx31("span", { className: "sr-only", children: "More pages" })
2342
2187
  ]
2343
2188
  }
2344
2189
  );
2345
2190
  PaginationEllipsis.displayName = "PaginationEllipsis";
2346
2191
 
2347
- // src/components/popover.tsx
2348
- import * as React27 from "react";
2349
- import * as PopoverPrimitive from "@radix-ui/react-popover";
2350
- import { jsx as jsx27 } from "react/jsx-runtime";
2351
- var Popover = PopoverPrimitive.Root;
2352
- var PopoverTrigger = PopoverPrimitive.Trigger;
2353
- var PopoverAnchor = PopoverPrimitive.Anchor;
2354
- var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx27(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx27(
2355
- PopoverPrimitive.Content,
2356
- {
2357
- ref,
2358
- align,
2359
- sideOffset,
2360
- className: cn(
2361
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-popover-content-transform-origin)",
2362
- className
2363
- ),
2364
- ...props
2192
+ // src/components/panel/panel.tsx
2193
+ import * as React29 from "react";
2194
+ import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2195
+ var Panel = React29.forwardRef(
2196
+ ({ title, meta, children, className, ...props }, ref) => {
2197
+ return /* @__PURE__ */ jsxs19("section", { ref, className: cn("dl-panel", className), ...props, children: [
2198
+ title ? /* @__PURE__ */ jsxs19("div", { className: "dl-panel__header", children: [
2199
+ /* @__PURE__ */ jsx32("h2", { className: "dl-panel__title", children: title }),
2200
+ meta ? /* @__PURE__ */ jsx32("div", { className: "dl-panel__meta", children: meta }) : null
2201
+ ] }) : null,
2202
+ children
2203
+ ] });
2365
2204
  }
2366
- ) }));
2367
- PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2205
+ );
2206
+ Panel.displayName = "Panel";
2368
2207
 
2369
- // src/components/progress.tsx
2370
- import * as React28 from "react";
2208
+ // src/components/progress/progress.tsx
2209
+ import * as React30 from "react";
2371
2210
  import * as ProgressPrimitive from "@radix-ui/react-progress";
2372
- import { jsx as jsx28 } from "react/jsx-runtime";
2373
- var Progress = React28.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx28(
2211
+ import { jsx as jsx33 } from "react/jsx-runtime";
2212
+ var Progress = React30.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx33(
2374
2213
  ProgressPrimitive.Root,
2375
2214
  {
2376
2215
  ref,
2377
- className: cn(
2378
- "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
2379
- className
2380
- ),
2216
+ className: cn("dl-progress", className),
2381
2217
  ...props,
2382
- children: /* @__PURE__ */ jsx28(
2218
+ children: /* @__PURE__ */ jsx33(
2383
2219
  ProgressPrimitive.Indicator,
2384
2220
  {
2385
- className: "flex-1 bg-primary transition-all size-full",
2221
+ className: "dl-progress__indicator",
2386
2222
  style: { transform: `translateX(-${100 - (value || 0)}%)` }
2387
2223
  }
2388
2224
  )
@@ -2390,292 +2226,440 @@ var Progress = React28.forwardRef(({ className, value, ...props }, ref) => /* @_
2390
2226
  ));
2391
2227
  Progress.displayName = ProgressPrimitive.Root.displayName;
2392
2228
 
2393
- // src/components/radio-group.tsx
2394
- import * as React29 from "react";
2229
+ // src/components/radio-group/radio-group.tsx
2230
+ import * as React31 from "react";
2395
2231
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2396
2232
  import { Circle as Circle4 } from "lucide-react";
2397
- import { jsx as jsx29 } from "react/jsx-runtime";
2398
- var RadioGroup4 = React29.forwardRef(({ className, ...props }, ref) => {
2399
- return /* @__PURE__ */ jsx29(
2233
+ import { jsx as jsx34 } from "react/jsx-runtime";
2234
+ var RadioGroup4 = React31.forwardRef(({ className, ...props }, ref) => {
2235
+ return /* @__PURE__ */ jsx34(
2400
2236
  RadioGroupPrimitive.Root,
2401
2237
  {
2402
- className: cn("grid gap-2", className),
2238
+ className: cn("dl-radio-group", className),
2403
2239
  ...props,
2404
2240
  ref
2405
2241
  }
2406
2242
  );
2407
2243
  });
2408
2244
  RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
2409
- var RadioGroupItem = React29.forwardRef(({ className, ...props }, ref) => {
2410
- return /* @__PURE__ */ jsx29(
2245
+ var RadioGroupItem = React31.forwardRef(({ className, ...props }, ref) => {
2246
+ return /* @__PURE__ */ jsx34(
2411
2247
  RadioGroupPrimitive.Item,
2412
2248
  {
2413
2249
  ref,
2414
- className: cn(
2415
- "aspect-square rounded-full border border-primary text-primary shadow cursor-pointer focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 size-4",
2416
- className
2417
- ),
2250
+ className: cn("dl-radio-item", className),
2418
2251
  ...props,
2419
- children: /* @__PURE__ */ jsx29(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx29(Circle4, { className: "fill-primary size-3.5" }) })
2252
+ children: /* @__PURE__ */ jsx34(RadioGroupPrimitive.Indicator, { className: "dl-radio-item__indicator", children: /* @__PURE__ */ jsx34(Circle4, { "aria-hidden": "true" }) })
2420
2253
  }
2421
2254
  );
2422
2255
  });
2423
2256
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2424
2257
 
2425
- // src/components/resizable.tsx
2258
+ // src/components/resizable/resizable.tsx
2426
2259
  import { GripVertical } from "lucide-react";
2427
- import { Group as Group4, Panel, Separator as Separator4 } from "react-resizable-panels";
2428
- import { jsx as jsx30 } from "react/jsx-runtime";
2260
+ import { Group as Group4, Panel as Panel2, Separator as Separator4 } from "react-resizable-panels";
2261
+ import { jsx as jsx35 } from "react/jsx-runtime";
2429
2262
  var ResizablePanelGroup = ({
2430
2263
  className,
2431
2264
  ...props
2432
- }) => /* @__PURE__ */ jsx30(
2433
- Group4,
2434
- {
2435
- className: cn(
2436
- "flex data-[panel-group-direction=vertical]:flex-col size-full",
2437
- className
2438
- ),
2439
- ...props
2440
- }
2441
- );
2442
- var ResizablePanel = Panel;
2265
+ }) => /* @__PURE__ */ jsx35(Group4, { className: cn("dl-resizable-group", className), ...props });
2266
+ var ResizablePanel = Panel2;
2443
2267
  var ResizableHandle = ({
2444
2268
  withHandle,
2445
2269
  className,
2446
2270
  ...props
2447
- }) => /* @__PURE__ */ jsx30(
2448
- Separator4,
2449
- {
2450
- className: cn(
2451
- "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
2452
- className
2453
- ),
2454
- ...props,
2455
- children: withHandle && /* @__PURE__ */ jsx30("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx30(GripVertical, { className: "size-2.5" }) })
2456
- }
2457
- );
2271
+ }) => /* @__PURE__ */ jsx35(Separator4, { className: cn("dl-resizable-handle", className), ...props, children: withHandle && /* @__PURE__ */ jsx35("div", { className: "dl-resizable-grip", children: /* @__PURE__ */ jsx35(GripVertical, {}) }) });
2458
2272
 
2459
- // src/components/scroll-area.tsx
2460
- import * as React30 from "react";
2273
+ // src/components/scroll-area/scroll-area.tsx
2274
+ import * as React32 from "react";
2461
2275
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2462
- import { jsx as jsx31, jsxs as jsxs15 } from "react/jsx-runtime";
2463
- var ScrollArea = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs15(
2276
+ import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
2277
+ var ScrollArea = React32.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs20(
2464
2278
  ScrollAreaPrimitive.Root,
2465
2279
  {
2466
2280
  ref,
2467
- className: cn("relative overflow-hidden", className),
2281
+ className: cn("dl-scroll-area", className),
2468
2282
  ...props,
2469
2283
  children: [
2470
- /* @__PURE__ */ jsx31(ScrollAreaPrimitive.Viewport, { className: "rounded-[inherit] size-full", children }),
2471
- /* @__PURE__ */ jsx31(ScrollBar, {}),
2472
- /* @__PURE__ */ jsx31(ScrollAreaPrimitive.Corner, {})
2284
+ /* @__PURE__ */ jsx36(ScrollAreaPrimitive.Viewport, { className: "dl-scroll-area__viewport", children }),
2285
+ /* @__PURE__ */ jsx36(ScrollBar, {}),
2286
+ /* @__PURE__ */ jsx36(ScrollAreaPrimitive.Corner, {})
2473
2287
  ]
2474
2288
  }
2475
2289
  ));
2476
2290
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2477
- var ScrollBar = React30.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx31(
2291
+ var ScrollBar = React32.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx36(
2478
2292
  ScrollAreaPrimitive.ScrollAreaScrollbar,
2479
2293
  {
2480
2294
  ref,
2481
2295
  orientation,
2482
- className: cn(
2483
- "flex touch-none select-none transition-colors",
2484
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px",
2485
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px",
2486
- className
2487
- ),
2296
+ className: cn("dl-scroll-area__bar", className),
2488
2297
  ...props,
2489
- children: /* @__PURE__ */ jsx31(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
2298
+ children: /* @__PURE__ */ jsx36(ScrollAreaPrimitive.ScrollAreaThumb, { className: "dl-scroll-area__thumb" })
2490
2299
  }
2491
2300
  ));
2492
2301
  ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2493
2302
 
2494
- // src/components/select.tsx
2495
- import * as React31 from "react";
2496
- import * as SelectPrimitive from "@radix-ui/react-select";
2497
- import { Check as Check5, ChevronDown as ChevronDown3, ChevronUp } from "lucide-react";
2498
- import { jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
2499
- var Select = SelectPrimitive.Root;
2500
- var SelectGroup = SelectPrimitive.Group;
2501
- var SelectValue = SelectPrimitive.Value;
2502
- var SelectTrigger = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2503
- SelectPrimitive.Trigger,
2504
- {
2505
- ref,
2506
- className: cn(
2507
- "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background cursor-pointer data-placeholder:text-muted-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 [&>span]:line-clamp-1",
2508
- className
2509
- ),
2510
- ...props,
2511
- children: [
2512
- children,
2513
- /* @__PURE__ */ jsx32(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx32(ChevronDown3, { className: "opacity-50 size-4" }) })
2514
- ]
2515
- }
2516
- ));
2303
+ // src/components/searchable-select/searchable-select.tsx
2304
+ import * as React33 from "react";
2305
+ import { Search as Search2, Plus, Check as Check5, ChevronDown as ChevronDown3 } from "lucide-react";
2306
+ import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
2307
+ function SearchableSelect({
2308
+ options,
2309
+ value,
2310
+ onChange,
2311
+ placeholder = "Select an option...",
2312
+ searchPlaceholder = "Search...",
2313
+ onAddNew,
2314
+ addNewLabel = "Add new",
2315
+ disabled = false,
2316
+ className,
2317
+ id
2318
+ }) {
2319
+ const [open, setOpen] = React33.useState(false);
2320
+ const [search, setSearch] = React33.useState("");
2321
+ const [highlightedIndex, setHighlightedIndex] = React33.useState(0);
2322
+ const listRef = React33.useRef(null);
2323
+ const selectedOption = React33.useMemo(() => {
2324
+ return options.find((opt) => opt.value === value);
2325
+ }, [options, value]);
2326
+ const filteredOptions = React33.useMemo(() => {
2327
+ if (!search.trim()) return options;
2328
+ const q = search.toLowerCase();
2329
+ return options.filter(
2330
+ (opt) => opt.label.toLowerCase().includes(q) || opt.group && opt.group.toLowerCase().includes(q)
2331
+ );
2332
+ }, [options, search]);
2333
+ const handleOpenChange = (newOpen) => {
2334
+ setOpen(newOpen);
2335
+ if (newOpen) {
2336
+ const idx = filteredOptions.findIndex((opt) => opt.value === value);
2337
+ setHighlightedIndex(idx >= 0 ? idx : 0);
2338
+ } else {
2339
+ setSearch("");
2340
+ }
2341
+ };
2342
+ const handleSearchChange = (q) => {
2343
+ setSearch(q);
2344
+ setHighlightedIndex(0);
2345
+ };
2346
+ React33.useEffect(() => {
2347
+ if (open && listRef.current) {
2348
+ const activeEl = listRef.current.querySelector(
2349
+ "[data-highlighted='true']"
2350
+ );
2351
+ if (activeEl) {
2352
+ activeEl.scrollIntoView({ block: "nearest" });
2353
+ }
2354
+ }
2355
+ }, [highlightedIndex, open]);
2356
+ const groupedOptions = React33.useMemo(() => {
2357
+ const hasGroups = filteredOptions.some((opt) => opt.group);
2358
+ if (!hasGroups) return { Default: filteredOptions };
2359
+ return filteredOptions.reduce(
2360
+ (acc, opt) => {
2361
+ const g = opt.group || "Other";
2362
+ if (!acc[g]) acc[g] = [];
2363
+ acc[g].push(opt);
2364
+ return acc;
2365
+ },
2366
+ {}
2367
+ );
2368
+ }, [filteredOptions]);
2369
+ const handleSelect = (val) => {
2370
+ onChange?.(val);
2371
+ setOpen(false);
2372
+ setSearch("");
2373
+ };
2374
+ const handleAddNew = () => {
2375
+ onAddNew?.(search.trim());
2376
+ setOpen(false);
2377
+ setSearch("");
2378
+ };
2379
+ const handleKeyDown = (e) => {
2380
+ if (!open) {
2381
+ if (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") {
2382
+ e.preventDefault();
2383
+ handleOpenChange(true);
2384
+ }
2385
+ return;
2386
+ }
2387
+ switch (e.key) {
2388
+ case "ArrowDown":
2389
+ e.preventDefault();
2390
+ setHighlightedIndex(
2391
+ (p) => p < filteredOptions.length - 1 ? p + 1 : p
2392
+ );
2393
+ break;
2394
+ case "ArrowUp":
2395
+ e.preventDefault();
2396
+ setHighlightedIndex((p) => p > 0 ? p - 1 : 0);
2397
+ break;
2398
+ case "Enter":
2399
+ e.preventDefault();
2400
+ if (filteredOptions.length > 0 && filteredOptions[highlightedIndex]) {
2401
+ handleSelect(filteredOptions[highlightedIndex].value);
2402
+ } else if (onAddNew && search.trim()) {
2403
+ handleAddNew();
2404
+ }
2405
+ break;
2406
+ case "Escape":
2407
+ case "Tab":
2408
+ e.preventDefault();
2409
+ handleOpenChange(false);
2410
+ break;
2411
+ }
2412
+ };
2413
+ let currentIndex = 0;
2414
+ return /* @__PURE__ */ jsxs21(Popover, { open, onOpenChange: handleOpenChange, children: [
2415
+ /* @__PURE__ */ jsx37(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs21(
2416
+ Button,
2417
+ {
2418
+ id,
2419
+ variant: "outline",
2420
+ role: "combobox",
2421
+ "aria-expanded": open,
2422
+ disabled,
2423
+ onKeyDown: handleKeyDown,
2424
+ className: cn(
2425
+ "dl-searchable-select-trigger",
2426
+ !selectedOption && "dl-searchable-select-trigger--placeholder",
2427
+ className
2428
+ ),
2429
+ children: [
2430
+ /* @__PURE__ */ jsx37("span", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder }),
2431
+ /* @__PURE__ */ jsx37(ChevronDown3, { className: "dl-select-icon" })
2432
+ ]
2433
+ }
2434
+ ) }),
2435
+ /* @__PURE__ */ jsxs21(
2436
+ PopoverContent,
2437
+ {
2438
+ align: "start",
2439
+ className: "dl-searchable-select-content",
2440
+ onKeyDown: handleKeyDown,
2441
+ children: [
2442
+ /* @__PURE__ */ jsxs21("div", { className: "dl-searchable-select-search", children: [
2443
+ /* @__PURE__ */ jsx37(Search2, { className: "dl-searchable-select-search-icon" }),
2444
+ /* @__PURE__ */ jsx37(
2445
+ Input,
2446
+ {
2447
+ placeholder: searchPlaceholder,
2448
+ value: search,
2449
+ onChange: (e) => handleSearchChange(e.target.value),
2450
+ className: "dl-searchable-select-search-input",
2451
+ autoFocus: true
2452
+ }
2453
+ )
2454
+ ] }),
2455
+ /* @__PURE__ */ jsx37(
2456
+ "div",
2457
+ {
2458
+ ref: listRef,
2459
+ onWheel: (e) => e.stopPropagation(),
2460
+ className: "dl-searchable-select-list",
2461
+ children: Object.keys(groupedOptions).length === 0 || filteredOptions.length === 0 && !onAddNew ? /* @__PURE__ */ jsx37("div", { className: "dl-searchable-select-empty", children: "No matching options found." }) : Object.entries(groupedOptions).map(([groupName, groupOpts]) => /* @__PURE__ */ jsxs21("div", { className: "py-1", children: [
2462
+ groupName !== "Default" && /* @__PURE__ */ jsx37("div", { className: "dl-searchable-select-group-header", children: groupName }),
2463
+ groupOpts.map((option) => {
2464
+ const isSelected = option.value === value;
2465
+ const itemIndex = currentIndex++;
2466
+ const isHighlighted = itemIndex === highlightedIndex;
2467
+ return /* @__PURE__ */ jsxs21(
2468
+ "div",
2469
+ {
2470
+ "data-highlighted": isHighlighted,
2471
+ onClick: () => handleSelect(option.value),
2472
+ onMouseEnter: () => setHighlightedIndex(itemIndex),
2473
+ className: cn(
2474
+ "dl-searchable-select-item",
2475
+ isHighlighted && "dl-searchable-select-item--highlighted",
2476
+ isSelected && !isHighlighted && "dl-searchable-select-item--selected"
2477
+ ),
2478
+ children: [
2479
+ /* @__PURE__ */ jsx37("span", { className: "flex-1 truncate", children: option.label }),
2480
+ isSelected && /* @__PURE__ */ jsx37(Check5, { className: "dl-select-check" })
2481
+ ]
2482
+ },
2483
+ option.value
2484
+ );
2485
+ })
2486
+ ] }, groupName))
2487
+ }
2488
+ ),
2489
+ onAddNew && /* @__PURE__ */ jsx37("div", { className: "dl-searchable-select-add", children: /* @__PURE__ */ jsxs21(
2490
+ "button",
2491
+ {
2492
+ type: "button",
2493
+ onClick: handleAddNew,
2494
+ className: "dl-searchable-select-add-btn",
2495
+ children: [
2496
+ /* @__PURE__ */ jsx37(Plus, { className: "size-3.5 shrink-0" }),
2497
+ /* @__PURE__ */ jsx37("span", { className: "truncate", children: search.trim() ? `${addNewLabel} "${search.trim()}"` : addNewLabel })
2498
+ ]
2499
+ }
2500
+ ) })
2501
+ ]
2502
+ }
2503
+ )
2504
+ ] });
2505
+ }
2506
+
2507
+ // src/components/select/select.tsx
2508
+ import * as React34 from "react";
2509
+ import * as SelectPrimitive from "@radix-ui/react-select";
2510
+ import { Check as Check6, ChevronDown as ChevronDown4, ChevronUp } from "lucide-react";
2511
+ import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
2512
+ var Select = SelectPrimitive.Root;
2513
+ var SelectGroup = SelectPrimitive.Group;
2514
+ var SelectValue = SelectPrimitive.Value;
2515
+ var SelectTrigger = React34.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs22(
2516
+ SelectPrimitive.Trigger,
2517
+ {
2518
+ ref,
2519
+ className: cn("dl-select-trigger", className),
2520
+ ...props,
2521
+ children: [
2522
+ children,
2523
+ /* @__PURE__ */ jsx38(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx38(
2524
+ ChevronDown4,
2525
+ {
2526
+ style: { opacity: 0.5, width: "0.75rem", height: "0.75rem" }
2527
+ }
2528
+ ) })
2529
+ ]
2530
+ }
2531
+ ));
2517
2532
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2518
- var SelectScrollUpButton = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2533
+ var SelectScrollUpButton = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2519
2534
  SelectPrimitive.ScrollUpButton,
2520
2535
  {
2521
2536
  ref,
2522
- className: cn(
2523
- "flex cursor-default items-center justify-center py-1",
2524
- className
2525
- ),
2537
+ className: cn("dl-select-scroll-btn", className),
2526
2538
  ...props,
2527
- children: /* @__PURE__ */ jsx32(ChevronUp, { className: "size-4" })
2539
+ children: /* @__PURE__ */ jsx38(ChevronUp, { style: { width: "1rem", height: "1rem" } })
2528
2540
  }
2529
2541
  ));
2530
2542
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2531
- var SelectScrollDownButton = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2543
+ var SelectScrollDownButton = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2532
2544
  SelectPrimitive.ScrollDownButton,
2533
2545
  {
2534
2546
  ref,
2535
- className: cn(
2536
- "flex cursor-default items-center justify-center py-1",
2537
- className
2538
- ),
2547
+ className: cn("dl-select-scroll-btn", className),
2539
2548
  ...props,
2540
- children: /* @__PURE__ */ jsx32(ChevronDown3, { className: "size-4" })
2549
+ children: /* @__PURE__ */ jsx38(ChevronDown4, { style: { width: "1rem", height: "1rem" } })
2541
2550
  }
2542
2551
  ));
2543
2552
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2544
- var SelectContent = React31.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx32(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs16(
2553
+ var SelectContent = React34.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx38(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs22(
2545
2554
  SelectPrimitive.Content,
2546
2555
  {
2547
2556
  ref,
2548
- className: cn(
2549
- "relative z-50 max-h-(--radix-select-content-available-height) min-w-32 overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=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 origin-(--radix-select-content-transform-origin)",
2550
- position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1",
2551
- className
2552
- ),
2557
+ className: cn("dl-select-content", className),
2553
2558
  position,
2554
2559
  ...props,
2555
2560
  children: [
2556
- /* @__PURE__ */ jsx32(SelectScrollUpButton, {}),
2557
- /* @__PURE__ */ jsx32(
2558
- SelectPrimitive.Viewport,
2559
- {
2560
- className: cn(
2561
- "p-1",
2562
- position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
2563
- ),
2564
- children
2565
- }
2566
- ),
2567
- /* @__PURE__ */ jsx32(SelectScrollDownButton, {})
2561
+ /* @__PURE__ */ jsx38(SelectScrollUpButton, {}),
2562
+ /* @__PURE__ */ jsx38(SelectPrimitive.Viewport, { className: "dl-select-viewport", children }),
2563
+ /* @__PURE__ */ jsx38(SelectScrollDownButton, {})
2568
2564
  ]
2569
2565
  }
2570
2566
  ) }));
2571
2567
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2572
- var SelectLabel = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2568
+ var SelectLabel = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2573
2569
  SelectPrimitive.Label,
2574
2570
  {
2575
2571
  ref,
2576
- className: cn("px-2 py-1.5 text-sm font-semibold", className),
2572
+ className: cn("dl-select-label", className),
2577
2573
  ...props
2578
2574
  }
2579
2575
  ));
2580
2576
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
2581
- var SelectItem = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs16(
2577
+ var SelectItem = React34.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs22(
2582
2578
  SelectPrimitive.Item,
2583
2579
  {
2584
2580
  ref,
2585
- className: cn(
2586
- "relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2587
- className
2588
- ),
2581
+ className: cn("dl-select-item", className),
2589
2582
  ...props,
2590
2583
  children: [
2591
- /* @__PURE__ */ jsx32("span", { className: "absolute right-2 flex items-center justify-center size-3.5", children: /* @__PURE__ */ jsx32(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx32(Check5, { className: "size-4" }) }) }),
2592
- /* @__PURE__ */ jsx32(SelectPrimitive.ItemText, { children })
2584
+ /* @__PURE__ */ jsx38("span", { className: "dl-select-item__indicator", children: /* @__PURE__ */ jsx38(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx38(Check6, { style: { width: "0.75rem", height: "0.75rem" } }) }) }),
2585
+ /* @__PURE__ */ jsx38(SelectPrimitive.ItemText, { children })
2593
2586
  ]
2594
2587
  }
2595
2588
  ));
2596
2589
  SelectItem.displayName = SelectPrimitive.Item.displayName;
2597
- var SelectSeparator = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
2590
+ var SelectSeparator = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
2598
2591
  SelectPrimitive.Separator,
2599
2592
  {
2600
2593
  ref,
2601
- className: cn("-mx-1 my-1 h-px bg-muted", className),
2594
+ className: cn("dl-select-separator", className),
2602
2595
  ...props
2603
2596
  }
2604
2597
  ));
2605
2598
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2606
2599
 
2607
- // src/components/separator.tsx
2608
- import * as React32 from "react";
2600
+ // src/components/separator/separator.tsx
2601
+ import * as React35 from "react";
2609
2602
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
2610
- import { jsx as jsx33 } from "react/jsx-runtime";
2611
- var Separator6 = React32.forwardRef(
2612
- ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx33(
2603
+ import { jsx as jsx39 } from "react/jsx-runtime";
2604
+ var Separator6 = React35.forwardRef(
2605
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx39(
2613
2606
  SeparatorPrimitive.Root,
2614
2607
  {
2615
2608
  ref,
2616
2609
  decorative,
2617
2610
  orientation,
2618
- className: cn(
2619
- "shrink-0 bg-border",
2620
- orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
2621
- className
2622
- ),
2611
+ className: cn("dl-separator", className),
2623
2612
  ...props
2624
2613
  }
2625
2614
  )
2626
2615
  );
2627
2616
  Separator6.displayName = SeparatorPrimitive.Root.displayName;
2628
2617
 
2629
- // src/components/sheet.tsx
2630
- import * as React33 from "react";
2618
+ // src/components/sheet/sheet.tsx
2619
+ import * as React36 from "react";
2631
2620
  import * as SheetPrimitive from "@radix-ui/react-dialog";
2632
2621
  import { cva as cva6 } from "class-variance-authority";
2633
2622
  import { X as X2 } from "lucide-react";
2634
- import { jsx as jsx34, jsxs as jsxs17 } from "react/jsx-runtime";
2623
+ import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
2635
2624
  var Sheet = SheetPrimitive.Root;
2636
2625
  var SheetTrigger = SheetPrimitive.Trigger;
2637
2626
  var SheetClose = SheetPrimitive.Close;
2638
2627
  var SheetPortal = SheetPrimitive.Portal;
2639
- var SheetOverlay = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2628
+ var SheetOverlay = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2640
2629
  SheetPrimitive.Overlay,
2641
2630
  {
2642
- className: cn(
2643
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2644
- className
2645
- ),
2631
+ className: cn("dl-dialog-overlay", className),
2646
2632
  ...props,
2647
2633
  ref
2648
2634
  }
2649
2635
  ));
2650
2636
  SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
2651
- var sheetVariants = cva6(
2652
- "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2653
- {
2654
- variants: {
2655
- side: {
2656
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2657
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2658
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2659
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
2660
- }
2661
- },
2662
- defaultVariants: {
2663
- side: "right"
2664
- }
2637
+ var sheetVariants = cva6("dl-sheet-content", {
2638
+ variants: {
2639
+ side: {
2640
+ top: "dl-sheet-content--top",
2641
+ bottom: "dl-sheet-content--bottom",
2642
+ left: "dl-sheet-content--left",
2643
+ right: "dl-sheet-content--right"
2644
+ }
2645
+ },
2646
+ defaultVariants: {
2647
+ side: "right"
2665
2648
  }
2666
- );
2667
- var SheetContent = React33.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs17(SheetPortal, { children: [
2668
- /* @__PURE__ */ jsx34(SheetOverlay, {}),
2669
- /* @__PURE__ */ jsxs17(
2649
+ });
2650
+ var SheetContent = React36.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs23(SheetPortal, { children: [
2651
+ /* @__PURE__ */ jsx40(SheetOverlay, {}),
2652
+ /* @__PURE__ */ jsxs23(
2670
2653
  SheetPrimitive.Content,
2671
2654
  {
2672
2655
  ref,
2673
2656
  className: cn(sheetVariants({ side }), className),
2657
+ "data-side": side,
2674
2658
  ...props,
2675
2659
  children: [
2676
- /* @__PURE__ */ jsxs17(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background cursor-pointer transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
2677
- /* @__PURE__ */ jsx34(X2, { className: "size-4" }),
2678
- /* @__PURE__ */ jsx34("span", { className: "sr-only", children: "Close" })
2660
+ /* @__PURE__ */ jsxs23(SheetPrimitive.Close, { className: "dl-sheet-close", children: [
2661
+ /* @__PURE__ */ jsx40(X2, { style: { width: "1rem", height: "1rem" } }),
2662
+ /* @__PURE__ */ jsx40("span", { className: "sr-only", children: "Close" })
2679
2663
  ] }),
2680
2664
  children
2681
2665
  ]
@@ -2686,109 +2670,73 @@ SheetContent.displayName = SheetPrimitive.Content.displayName;
2686
2670
  var SheetHeader = ({
2687
2671
  className,
2688
2672
  ...props
2689
- }) => /* @__PURE__ */ jsx34(
2690
- "div",
2691
- {
2692
- className: cn(
2693
- "flex flex-col space-y-2 text-center sm:text-left",
2694
- className
2695
- ),
2696
- ...props
2697
- }
2698
- );
2673
+ }) => /* @__PURE__ */ jsx40("div", { className: cn("dl-sheet__header", className), ...props });
2699
2674
  SheetHeader.displayName = "SheetHeader";
2700
2675
  var SheetFooter = ({
2701
2676
  className,
2702
2677
  ...props
2703
- }) => /* @__PURE__ */ jsx34(
2704
- "div",
2705
- {
2706
- className: cn(
2707
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2708
- className
2709
- ),
2710
- ...props
2711
- }
2712
- );
2678
+ }) => /* @__PURE__ */ jsx40("div", { className: cn("dl-sheet__footer", className), ...props });
2713
2679
  SheetFooter.displayName = "SheetFooter";
2714
- var SheetTitle = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2680
+ var SheetTitle = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2715
2681
  SheetPrimitive.Title,
2716
2682
  {
2717
2683
  ref,
2718
- className: cn("text-lg font-semibold text-foreground", className),
2684
+ className: cn("dl-sheet__title", className),
2719
2685
  ...props
2720
2686
  }
2721
2687
  ));
2722
2688
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
2723
- var SheetDescription = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx34(
2689
+ var SheetDescription = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
2724
2690
  SheetPrimitive.Description,
2725
2691
  {
2726
2692
  ref,
2727
- className: cn("text-sm text-muted-foreground", className),
2693
+ className: cn("dl-sheet__desc", className),
2728
2694
  ...props
2729
2695
  }
2730
2696
  ));
2731
2697
  SheetDescription.displayName = SheetPrimitive.Description.displayName;
2732
2698
 
2733
- // src/components/sidebar.tsx
2734
- import * as React35 from "react";
2699
+ // src/components/sidebar/sidebar.tsx
2700
+ import * as React38 from "react";
2735
2701
  import { Slot as Slot4 } from "@radix-ui/react-slot";
2736
2702
  import { cva as cva7 } from "class-variance-authority";
2737
2703
  import { PanelLeft } from "lucide-react";
2738
2704
 
2739
- // src/components/skeleton.tsx
2740
- import { jsx as jsx35 } from "react/jsx-runtime";
2741
- function Skeleton({
2742
- className,
2743
- ...props
2744
- }) {
2745
- return /* @__PURE__ */ jsx35(
2746
- "div",
2747
- {
2748
- className: cn("animate-pulse rounded-md bg-primary/10", className),
2749
- ...props
2750
- }
2751
- );
2752
- }
2753
-
2754
- // src/components/tooltip.tsx
2755
- import * as React34 from "react";
2705
+ // src/components/tooltip/tooltip.tsx
2706
+ import * as React37 from "react";
2756
2707
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2757
- import { jsx as jsx36 } from "react/jsx-runtime";
2708
+ import { jsx as jsx41 } from "react/jsx-runtime";
2758
2709
  var TooltipProvider = TooltipPrimitive.Provider;
2759
2710
  var Tooltip2 = TooltipPrimitive.Root;
2760
2711
  var TooltipTrigger = TooltipPrimitive.Trigger;
2761
- var TooltipContent = React34.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx36(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx36(
2712
+ var TooltipContent = React37.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx41(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx41(
2762
2713
  TooltipPrimitive.Content,
2763
2714
  {
2764
2715
  ref,
2765
2716
  sideOffset,
2766
- className: cn(
2767
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 origin-(--radix-tooltip-content-transform-origin)",
2768
- className
2769
- ),
2717
+ className: cn("dl-tooltip", className),
2770
2718
  ...props
2771
2719
  }
2772
2720
  ) }));
2773
2721
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2774
2722
 
2775
- // src/components/sidebar.tsx
2776
- import { jsx as jsx37, jsxs as jsxs18 } from "react/jsx-runtime";
2723
+ // src/components/sidebar/sidebar.tsx
2724
+ import { jsx as jsx42, jsxs as jsxs24 } from "react/jsx-runtime";
2777
2725
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
2778
2726
  var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
2779
2727
  var SIDEBAR_WIDTH = "16rem";
2780
2728
  var SIDEBAR_WIDTH_MOBILE = "18rem";
2781
2729
  var SIDEBAR_WIDTH_ICON = "3rem";
2782
2730
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
2783
- var SidebarContext = React35.createContext(null);
2731
+ var SidebarContext = React38.createContext(null);
2784
2732
  function useSidebar() {
2785
- const context = React35.useContext(SidebarContext);
2733
+ const context = React38.useContext(SidebarContext);
2786
2734
  if (!context) {
2787
2735
  throw new Error("useSidebar must be used within a SidebarProvider.");
2788
2736
  }
2789
2737
  return context;
2790
2738
  }
2791
- var SidebarProvider = React35.forwardRef(
2739
+ var SidebarProvider = React38.forwardRef(
2792
2740
  ({
2793
2741
  defaultOpen = true,
2794
2742
  open: openProp,
@@ -2799,10 +2747,10 @@ var SidebarProvider = React35.forwardRef(
2799
2747
  ...props
2800
2748
  }, ref) => {
2801
2749
  const isMobile = useIsMobile();
2802
- const [openMobile, setOpenMobile] = React35.useState(false);
2803
- const [_open, _setOpen] = React35.useState(defaultOpen);
2750
+ const [openMobile, setOpenMobile] = React38.useState(false);
2751
+ const [_open, _setOpen] = React38.useState(defaultOpen);
2804
2752
  const open = openProp ?? _open;
2805
- const setOpen = React35.useCallback(
2753
+ const setOpen = React38.useCallback(
2806
2754
  (value) => {
2807
2755
  const openState = typeof value === "function" ? value(open) : value;
2808
2756
  if (setOpenProp) {
@@ -2814,10 +2762,10 @@ var SidebarProvider = React35.forwardRef(
2814
2762
  },
2815
2763
  [setOpenProp, open]
2816
2764
  );
2817
- const toggleSidebar = React35.useCallback(() => {
2765
+ const toggleSidebar = React38.useCallback(() => {
2818
2766
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
2819
2767
  }, [isMobile, setOpen, setOpenMobile]);
2820
- React35.useEffect(() => {
2768
+ React38.useEffect(() => {
2821
2769
  const handleKeyDown = (event) => {
2822
2770
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
2823
2771
  event.preventDefault();
@@ -2828,7 +2776,7 @@ var SidebarProvider = React35.forwardRef(
2828
2776
  return () => window.removeEventListener("keydown", handleKeyDown);
2829
2777
  }, [toggleSidebar]);
2830
2778
  const state = open ? "expanded" : "collapsed";
2831
- const contextValue = React35.useMemo(
2779
+ const contextValue = React38.useMemo(
2832
2780
  () => ({
2833
2781
  state,
2834
2782
  open,
@@ -2848,7 +2796,7 @@ var SidebarProvider = React35.forwardRef(
2848
2796
  toggleSidebar
2849
2797
  ]
2850
2798
  );
2851
- return /* @__PURE__ */ jsx37(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx37(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx37(
2799
+ return /* @__PURE__ */ jsx42(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx42(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx42(
2852
2800
  "div",
2853
2801
  {
2854
2802
  style: {
@@ -2868,7 +2816,7 @@ var SidebarProvider = React35.forwardRef(
2868
2816
  }
2869
2817
  );
2870
2818
  SidebarProvider.displayName = "SidebarProvider";
2871
- var Sidebar = React35.forwardRef(
2819
+ var Sidebar = React38.forwardRef(
2872
2820
  ({
2873
2821
  side = "left",
2874
2822
  variant = "sidebar",
@@ -2879,7 +2827,7 @@ var Sidebar = React35.forwardRef(
2879
2827
  }, ref) => {
2880
2828
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
2881
2829
  if (collapsible === "none") {
2882
- return /* @__PURE__ */ jsx37(
2830
+ return /* @__PURE__ */ jsx42(
2883
2831
  "div",
2884
2832
  {
2885
2833
  className: cn(
@@ -2893,7 +2841,7 @@ var Sidebar = React35.forwardRef(
2893
2841
  );
2894
2842
  }
2895
2843
  if (isMobile) {
2896
- return /* @__PURE__ */ jsx37(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs18(
2844
+ return /* @__PURE__ */ jsx42(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs24(
2897
2845
  SheetContent,
2898
2846
  {
2899
2847
  "data-sidebar": "sidebar",
@@ -2904,16 +2852,16 @@ var Sidebar = React35.forwardRef(
2904
2852
  },
2905
2853
  side,
2906
2854
  children: [
2907
- /* @__PURE__ */ jsxs18(SheetHeader, { className: "sr-only", children: [
2908
- /* @__PURE__ */ jsx37(SheetTitle, { children: "Sidebar" }),
2909
- /* @__PURE__ */ jsx37(SheetDescription, { children: "Displays the mobile sidebar." })
2855
+ /* @__PURE__ */ jsxs24(SheetHeader, { className: "sr-only", children: [
2856
+ /* @__PURE__ */ jsx42(SheetTitle, { children: "Sidebar" }),
2857
+ /* @__PURE__ */ jsx42(SheetDescription, { children: "Displays the mobile sidebar." })
2910
2858
  ] }),
2911
- /* @__PURE__ */ jsx37("div", { className: "flex flex-col size-full", children })
2859
+ /* @__PURE__ */ jsx42("div", { className: "flex flex-col size-full", children })
2912
2860
  ]
2913
2861
  }
2914
2862
  ) });
2915
2863
  }
2916
- return /* @__PURE__ */ jsxs18(
2864
+ return /* @__PURE__ */ jsxs24(
2917
2865
  "div",
2918
2866
  {
2919
2867
  ref,
@@ -2923,7 +2871,7 @@ var Sidebar = React35.forwardRef(
2923
2871
  "data-variant": variant,
2924
2872
  "data-side": side,
2925
2873
  children: [
2926
- /* @__PURE__ */ jsx37(
2874
+ /* @__PURE__ */ jsx42(
2927
2875
  "div",
2928
2876
  {
2929
2877
  className: cn(
@@ -2934,7 +2882,7 @@ var Sidebar = React35.forwardRef(
2934
2882
  )
2935
2883
  }
2936
2884
  ),
2937
- /* @__PURE__ */ jsx37(
2885
+ /* @__PURE__ */ jsx42(
2938
2886
  "div",
2939
2887
  {
2940
2888
  className: cn(
@@ -2945,7 +2893,7 @@ var Sidebar = React35.forwardRef(
2945
2893
  className
2946
2894
  ),
2947
2895
  ...props,
2948
- children: /* @__PURE__ */ jsx37(
2896
+ children: /* @__PURE__ */ jsx42(
2949
2897
  "div",
2950
2898
  {
2951
2899
  "data-sidebar": "sidebar",
@@ -2961,9 +2909,9 @@ var Sidebar = React35.forwardRef(
2961
2909
  }
2962
2910
  );
2963
2911
  Sidebar.displayName = "Sidebar";
2964
- var SidebarTrigger = React35.forwardRef(({ className, onClick, ...props }, ref) => {
2912
+ var SidebarTrigger = React38.forwardRef(({ className, onClick, ...props }, ref) => {
2965
2913
  const { toggleSidebar } = useSidebar();
2966
- return /* @__PURE__ */ jsxs18(
2914
+ return /* @__PURE__ */ jsxs24(
2967
2915
  Button,
2968
2916
  {
2969
2917
  ref,
@@ -2977,94 +2925,99 @@ var SidebarTrigger = React35.forwardRef(({ className, onClick, ...props }, ref)
2977
2925
  },
2978
2926
  ...props,
2979
2927
  children: [
2980
- /* @__PURE__ */ jsx37(PanelLeft, {}),
2981
- /* @__PURE__ */ jsx37("span", { className: "sr-only", children: "Toggle Sidebar" })
2928
+ /* @__PURE__ */ jsx42(PanelLeft, {}),
2929
+ /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Toggle Sidebar" })
2982
2930
  ]
2983
2931
  }
2984
2932
  );
2985
2933
  });
2986
2934
  SidebarTrigger.displayName = "SidebarTrigger";
2987
- var SidebarRail = React35.forwardRef(({ className, ...props }, ref) => {
2988
- const { toggleSidebar } = useSidebar();
2989
- return /* @__PURE__ */ jsx37(
2990
- "button",
2991
- {
2992
- ref,
2993
- "data-sidebar": "rail",
2994
- "aria-label": "Toggle Sidebar",
2995
- tabIndex: -1,
2996
- onClick: toggleSidebar,
2997
- title: "Toggle Sidebar",
2998
- className: cn(
2999
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
3000
- "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
3001
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
3002
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
3003
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
3004
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
3005
- className
3006
- ),
3007
- ...props
3008
- }
3009
- );
3010
- });
2935
+ var SidebarRail = React38.forwardRef(
2936
+ ({ className, ...props }, ref) => {
2937
+ const { toggleSidebar } = useSidebar();
2938
+ return /* @__PURE__ */ jsx42(
2939
+ "button",
2940
+ {
2941
+ ref,
2942
+ "data-sidebar": "rail",
2943
+ "aria-label": "Toggle Sidebar",
2944
+ tabIndex: -1,
2945
+ onClick: toggleSidebar,
2946
+ title: "Toggle Sidebar",
2947
+ className: cn(
2948
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
2949
+ "in-data-[side=right]:cursor-e-resize",
2950
+ "[[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
2951
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
2952
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
2953
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
2954
+ className
2955
+ ),
2956
+ ...props
2957
+ }
2958
+ );
2959
+ }
2960
+ );
3011
2961
  SidebarRail.displayName = "SidebarRail";
3012
- var SidebarInset = React35.forwardRef(({ className, ...props }, ref) => {
3013
- return /* @__PURE__ */ jsx37(
3014
- "main",
3015
- {
3016
- ref,
3017
- className: cn(
3018
- "relative flex w-full flex-1 flex-col bg-background",
3019
- "md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
3020
- className
3021
- ),
3022
- ...props
3023
- }
3024
- );
3025
- });
2962
+ var SidebarInset = React38.forwardRef(
2963
+ ({ className, ...props }, ref) => {
2964
+ return /* @__PURE__ */ jsx42(
2965
+ "main",
2966
+ {
2967
+ ref,
2968
+ className: cn(
2969
+ "relative flex w-full flex-1 flex-col bg-background",
2970
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
2971
+ className
2972
+ ),
2973
+ ...props
2974
+ }
2975
+ );
2976
+ }
2977
+ );
3026
2978
  SidebarInset.displayName = "SidebarInset";
3027
- var SidebarInput = React35.forwardRef(({ className, ...props }, ref) => {
3028
- return /* @__PURE__ */ jsx37(
2979
+ var SidebarInput = React38.forwardRef(({ className, ...props }, ref) => {
2980
+ return /* @__PURE__ */ jsx42(
3029
2981
  Input,
3030
2982
  {
3031
2983
  ref,
3032
2984
  "data-sidebar": "input",
3033
- className: cn(
3034
- "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
3035
- className
3036
- ),
2985
+ className: cn("dl-sidebar-input", className),
3037
2986
  ...props
3038
2987
  }
3039
2988
  );
3040
2989
  });
3041
2990
  SidebarInput.displayName = "SidebarInput";
3042
- var SidebarHeader = React35.forwardRef(({ className, ...props }, ref) => {
3043
- return /* @__PURE__ */ jsx37(
3044
- "div",
3045
- {
3046
- ref,
3047
- "data-sidebar": "header",
3048
- className: cn("flex flex-col gap-2 p-2", className),
3049
- ...props
3050
- }
3051
- );
3052
- });
2991
+ var SidebarHeader = React38.forwardRef(
2992
+ ({ className, ...props }, ref) => {
2993
+ return /* @__PURE__ */ jsx42(
2994
+ "div",
2995
+ {
2996
+ ref,
2997
+ "data-sidebar": "header",
2998
+ className: cn("flex flex-col gap-2 p-2", className),
2999
+ ...props
3000
+ }
3001
+ );
3002
+ }
3003
+ );
3053
3004
  SidebarHeader.displayName = "SidebarHeader";
3054
- var SidebarFooter = React35.forwardRef(({ className, ...props }, ref) => {
3055
- return /* @__PURE__ */ jsx37(
3056
- "div",
3057
- {
3058
- ref,
3059
- "data-sidebar": "footer",
3060
- className: cn("flex flex-col gap-2 p-2", className),
3061
- ...props
3062
- }
3063
- );
3064
- });
3005
+ var SidebarFooter = React38.forwardRef(
3006
+ ({ className, ...props }, ref) => {
3007
+ return /* @__PURE__ */ jsx42(
3008
+ "div",
3009
+ {
3010
+ ref,
3011
+ "data-sidebar": "footer",
3012
+ className: cn("flex flex-col gap-2 p-2", className),
3013
+ ...props
3014
+ }
3015
+ );
3016
+ }
3017
+ );
3065
3018
  SidebarFooter.displayName = "SidebarFooter";
3066
- var SidebarSeparator = React35.forwardRef(({ className, ...props }, ref) => {
3067
- return /* @__PURE__ */ jsx37(
3019
+ var SidebarSeparator = React38.forwardRef(({ className, ...props }, ref) => {
3020
+ return /* @__PURE__ */ jsx42(
3068
3021
  Separator6,
3069
3022
  {
3070
3023
  ref,
@@ -3075,42 +3028,46 @@ var SidebarSeparator = React35.forwardRef(({ className, ...props }, ref) => {
3075
3028
  );
3076
3029
  });
3077
3030
  SidebarSeparator.displayName = "SidebarSeparator";
3078
- var SidebarContent = React35.forwardRef(({ className, ...props }, ref) => {
3079
- return /* @__PURE__ */ jsx37(
3080
- "div",
3081
- {
3082
- ref,
3083
- "data-sidebar": "content",
3084
- className: cn(
3085
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
3086
- className
3087
- ),
3088
- ...props
3089
- }
3090
- );
3091
- });
3031
+ var SidebarContent = React38.forwardRef(
3032
+ ({ className, ...props }, ref) => {
3033
+ return /* @__PURE__ */ jsx42(
3034
+ "div",
3035
+ {
3036
+ ref,
3037
+ "data-sidebar": "content",
3038
+ className: cn(
3039
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto",
3040
+ className
3041
+ ),
3042
+ ...props
3043
+ }
3044
+ );
3045
+ }
3046
+ );
3092
3047
  SidebarContent.displayName = "SidebarContent";
3093
- var SidebarGroup = React35.forwardRef(({ className, ...props }, ref) => {
3094
- return /* @__PURE__ */ jsx37(
3095
- "div",
3096
- {
3097
- ref,
3098
- "data-sidebar": "group",
3099
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
3100
- ...props
3101
- }
3102
- );
3103
- });
3048
+ var SidebarGroup = React38.forwardRef(
3049
+ ({ className, ...props }, ref) => {
3050
+ return /* @__PURE__ */ jsx42(
3051
+ "div",
3052
+ {
3053
+ ref,
3054
+ "data-sidebar": "group",
3055
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
3056
+ ...props
3057
+ }
3058
+ );
3059
+ }
3060
+ );
3104
3061
  SidebarGroup.displayName = "SidebarGroup";
3105
- var SidebarGroupLabel = React35.forwardRef(({ className, asChild = false, ...props }, ref) => {
3062
+ var SidebarGroupLabel = React38.forwardRef(({ className, asChild = false, ...props }, ref) => {
3106
3063
  const Comp = asChild ? Slot4 : "div";
3107
- return /* @__PURE__ */ jsx37(
3064
+ return /* @__PURE__ */ jsx42(
3108
3065
  Comp,
3109
3066
  {
3110
3067
  ref,
3111
3068
  "data-sidebar": "group-label",
3112
3069
  className: cn(
3113
- "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3070
+ "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4",
3114
3071
  "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
3115
3072
  className
3116
3073
  ),
@@ -3119,9 +3076,9 @@ var SidebarGroupLabel = React35.forwardRef(({ className, asChild = false, ...pro
3119
3076
  );
3120
3077
  });
3121
3078
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
3122
- var SidebarGroupAction = React35.forwardRef(({ className, asChild = false, ...props }, ref) => {
3079
+ var SidebarGroupAction = React38.forwardRef(({ className, asChild = false, ...props }, ref) => {
3123
3080
  const Comp = asChild ? Slot4 : "button";
3124
- return /* @__PURE__ */ jsx37(
3081
+ return /* @__PURE__ */ jsx42(
3125
3082
  Comp,
3126
3083
  {
3127
3084
  ref,
@@ -3138,7 +3095,7 @@ var SidebarGroupAction = React35.forwardRef(({ className, asChild = false, ...pr
3138
3095
  );
3139
3096
  });
3140
3097
  SidebarGroupAction.displayName = "SidebarGroupAction";
3141
- var SidebarGroupContent = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3098
+ var SidebarGroupContent = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3142
3099
  "div",
3143
3100
  {
3144
3101
  ref,
@@ -3148,25 +3105,29 @@ var SidebarGroupContent = React35.forwardRef(({ className, ...props }, ref) => /
3148
3105
  }
3149
3106
  ));
3150
3107
  SidebarGroupContent.displayName = "SidebarGroupContent";
3151
- var SidebarMenu = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3152
- "ul",
3153
- {
3154
- ref,
3155
- "data-sidebar": "menu",
3156
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
3157
- ...props
3158
- }
3159
- ));
3108
+ var SidebarMenu = React38.forwardRef(
3109
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3110
+ "ul",
3111
+ {
3112
+ ref,
3113
+ "data-sidebar": "menu",
3114
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
3115
+ ...props
3116
+ }
3117
+ )
3118
+ );
3160
3119
  SidebarMenu.displayName = "SidebarMenu";
3161
- var SidebarMenuItem = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3162
- "li",
3163
- {
3164
- ref,
3165
- "data-sidebar": "menu-item",
3166
- className: cn("group/menu-item relative", className),
3167
- ...props
3168
- }
3169
- ));
3120
+ var SidebarMenuItem = React38.forwardRef(
3121
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3122
+ "li",
3123
+ {
3124
+ ref,
3125
+ "data-sidebar": "menu-item",
3126
+ className: cn("group/menu-item relative", className),
3127
+ ...props
3128
+ }
3129
+ )
3130
+ );
3170
3131
  SidebarMenuItem.displayName = "SidebarMenuItem";
3171
3132
  var sidebarMenuButtonVariants = cva7(
3172
3133
  "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring cursor-pointer transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
@@ -3188,7 +3149,7 @@ var sidebarMenuButtonVariants = cva7(
3188
3149
  }
3189
3150
  }
3190
3151
  );
3191
- var SidebarMenuButton = React35.forwardRef(
3152
+ var SidebarMenuButton = React38.forwardRef(
3192
3153
  ({
3193
3154
  asChild = false,
3194
3155
  isActive = false,
@@ -3200,7 +3161,7 @@ var SidebarMenuButton = React35.forwardRef(
3200
3161
  }, ref) => {
3201
3162
  const Comp = asChild ? Slot4 : "button";
3202
3163
  const { isMobile, state } = useSidebar();
3203
- const button = /* @__PURE__ */ jsx37(
3164
+ const button = /* @__PURE__ */ jsx42(
3204
3165
  Comp,
3205
3166
  {
3206
3167
  ref,
@@ -3219,9 +3180,9 @@ var SidebarMenuButton = React35.forwardRef(
3219
3180
  children: tooltip
3220
3181
  };
3221
3182
  }
3222
- return /* @__PURE__ */ jsxs18(Tooltip2, { children: [
3223
- /* @__PURE__ */ jsx37(TooltipTrigger, { asChild: true, children: button }),
3224
- /* @__PURE__ */ jsx37(
3183
+ return /* @__PURE__ */ jsxs24(Tooltip2, { children: [
3184
+ /* @__PURE__ */ jsx42(TooltipTrigger, { asChild: true, children: button }),
3185
+ /* @__PURE__ */ jsx42(
3225
3186
  TooltipContent,
3226
3187
  {
3227
3188
  side: "right",
@@ -3234,9 +3195,9 @@ var SidebarMenuButton = React35.forwardRef(
3234
3195
  }
3235
3196
  );
3236
3197
  SidebarMenuButton.displayName = "SidebarMenuButton";
3237
- var SidebarMenuAction = React35.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
3198
+ var SidebarMenuAction = React38.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
3238
3199
  const Comp = asChild ? Slot4 : "button";
3239
- return /* @__PURE__ */ jsx37(
3200
+ return /* @__PURE__ */ jsx42(
3240
3201
  Comp,
3241
3202
  {
3242
3203
  ref,
@@ -3249,7 +3210,7 @@ var SidebarMenuAction = React35.forwardRef(({ className, asChild = false, showOn
3249
3210
  "peer-data-[size=default]/menu-button:top-1.5",
3250
3211
  "peer-data-[size=lg]/menu-button:top-2.5",
3251
3212
  "group-data-[collapsible=icon]:hidden",
3252
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
3213
+ showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
3253
3214
  className
3254
3215
  ),
3255
3216
  ...props
@@ -3257,7 +3218,7 @@ var SidebarMenuAction = React35.forwardRef(({ className, asChild = false, showOn
3257
3218
  );
3258
3219
  });
3259
3220
  SidebarMenuAction.displayName = "SidebarMenuAction";
3260
- var SidebarMenuBadge = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3221
+ var SidebarMenuBadge = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3261
3222
  "div",
3262
3223
  {
3263
3224
  ref,
@@ -3275,11 +3236,11 @@ var SidebarMenuBadge = React35.forwardRef(({ className, ...props }, ref) => /* @
3275
3236
  }
3276
3237
  ));
3277
3238
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
3278
- var SidebarMenuSkeleton = React35.forwardRef(({ className, showIcon = false, ...props }, ref) => {
3279
- const width = React35.useMemo(() => {
3239
+ var SidebarMenuSkeleton = React38.forwardRef(({ className, showIcon = false, ...props }, ref) => {
3240
+ const width = React38.useMemo(() => {
3280
3241
  return `${Math.floor(Math.random() * 40) + 50}%`;
3281
3242
  }, []);
3282
- return /* @__PURE__ */ jsxs18(
3243
+ return /* @__PURE__ */ jsxs24(
3283
3244
  "div",
3284
3245
  {
3285
3246
  ref,
@@ -3287,14 +3248,14 @@ var SidebarMenuSkeleton = React35.forwardRef(({ className, showIcon = false, ...
3287
3248
  className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
3288
3249
  ...props,
3289
3250
  children: [
3290
- showIcon && /* @__PURE__ */ jsx37(
3251
+ showIcon && /* @__PURE__ */ jsx42(
3291
3252
  Skeleton,
3292
3253
  {
3293
3254
  className: "size-4 rounded-md",
3294
3255
  "data-sidebar": "menu-skeleton-icon"
3295
3256
  }
3296
3257
  ),
3297
- /* @__PURE__ */ jsx37(
3258
+ /* @__PURE__ */ jsx42(
3298
3259
  Skeleton,
3299
3260
  {
3300
3261
  className: "h-4 max-w-(--skeleton-width) flex-1",
@@ -3309,25 +3270,27 @@ var SidebarMenuSkeleton = React35.forwardRef(({ className, showIcon = false, ...
3309
3270
  );
3310
3271
  });
3311
3272
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
3312
- var SidebarMenuSub = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx37(
3313
- "ul",
3314
- {
3315
- ref,
3316
- "data-sidebar": "menu-sub",
3317
- className: cn(
3318
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
3319
- "group-data-[collapsible=icon]:hidden",
3320
- className
3321
- ),
3322
- ...props
3323
- }
3324
- ));
3273
+ var SidebarMenuSub = React38.forwardRef(
3274
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3275
+ "ul",
3276
+ {
3277
+ ref,
3278
+ "data-sidebar": "menu-sub",
3279
+ className: cn(
3280
+ "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
3281
+ "group-data-[collapsible=icon]:hidden",
3282
+ className
3283
+ ),
3284
+ ...props
3285
+ }
3286
+ )
3287
+ );
3325
3288
  SidebarMenuSub.displayName = "SidebarMenuSub";
3326
- var SidebarMenuSubItem = React35.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx37("li", { ref, ...props }));
3289
+ var SidebarMenuSubItem = React38.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx42("li", { ref, ...props }));
3327
3290
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
3328
- var SidebarMenuSubButton = React35.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
3291
+ var SidebarMenuSubButton = React38.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
3329
3292
  const Comp = asChild ? Slot4 : "a";
3330
- return /* @__PURE__ */ jsx37(
3293
+ return /* @__PURE__ */ jsx42(
3331
3294
  Comp,
3332
3295
  {
3333
3296
  ref,
@@ -3335,7 +3298,7 @@ var SidebarMenuSubButton = React35.forwardRef(({ asChild = false, size = "md", i
3335
3298
  "data-size": size,
3336
3299
  "data-active": isActive,
3337
3300
  className: cn(
3338
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
3301
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring cursor-pointer hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
3339
3302
  "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
3340
3303
  size === "sm" && "text-xs",
3341
3304
  size === "md" && "text-sm",
@@ -3348,41 +3311,38 @@ var SidebarMenuSubButton = React35.forwardRef(({ asChild = false, size = "md", i
3348
3311
  });
3349
3312
  SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
3350
3313
 
3351
- // src/components/slider.tsx
3352
- import * as React36 from "react";
3314
+ // src/components/slider/slider.tsx
3315
+ import * as React39 from "react";
3353
3316
  import * as SliderPrimitive from "@radix-ui/react-slider";
3354
- import { jsx as jsx38, jsxs as jsxs19 } from "react/jsx-runtime";
3355
- var Slider = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs19(
3317
+ import { jsx as jsx43, jsxs as jsxs25 } from "react/jsx-runtime";
3318
+ var Slider = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs25(
3356
3319
  SliderPrimitive.Root,
3357
3320
  {
3358
3321
  ref,
3359
- className: cn(
3360
- "relative flex w-full touch-none select-none items-center",
3361
- className
3362
- ),
3322
+ className: cn("dl-slider", className),
3363
3323
  ...props,
3364
3324
  children: [
3365
- /* @__PURE__ */ jsx38(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsx38(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
3366
- /* @__PURE__ */ jsx38(SliderPrimitive.Thumb, { className: "block rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 size-4" })
3325
+ /* @__PURE__ */ jsx43(SliderPrimitive.Track, { className: "dl-slider__track", children: /* @__PURE__ */ jsx43(SliderPrimitive.Range, { className: "dl-slider__range" }) }),
3326
+ /* @__PURE__ */ jsx43(SliderPrimitive.Thumb, { className: "dl-slider__thumb" })
3367
3327
  ]
3368
3328
  }
3369
3329
  ));
3370
3330
  Slider.displayName = SliderPrimitive.Root.displayName;
3371
3331
 
3372
- // src/components/sonner.tsx
3332
+ // src/components/sonner/sonner.tsx
3373
3333
  import { Toaster as Sonner, toast } from "sonner";
3374
- import { jsx as jsx39 } from "react/jsx-runtime";
3334
+ import { jsx as jsx44 } from "react/jsx-runtime";
3375
3335
  var Toaster = ({ ...props }) => {
3376
- return /* @__PURE__ */ jsx39(
3336
+ return /* @__PURE__ */ jsx44(
3377
3337
  Sonner,
3378
3338
  {
3379
- className: "toaster group",
3339
+ className: "dl-toaster",
3380
3340
  toastOptions: {
3381
3341
  classNames: {
3382
- toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
3383
- description: "group-[.toast]:text-muted-foreground",
3384
- actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
3385
- cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
3342
+ toast: "dl-toast",
3343
+ description: "dl-toast__desc",
3344
+ actionButton: "dl-toast__action",
3345
+ cancelButton: "dl-toast__cancel"
3386
3346
  }
3387
3347
  },
3388
3348
  ...props
@@ -3390,202 +3350,211 @@ var Toaster = ({ ...props }) => {
3390
3350
  );
3391
3351
  };
3392
3352
 
3393
- // src/components/switch.tsx
3394
- import * as React37 from "react";
3353
+ // src/components/status-badge/status-badge.tsx
3354
+ import * as React40 from "react";
3355
+ import { jsx as jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
3356
+ var statusCategoryMap = {
3357
+ Completed: "dl-status-badge--success",
3358
+ COMPLETED: "dl-status-badge--success",
3359
+ Operational: "dl-status-badge--success",
3360
+ OPERATIONAL: "dl-status-badge--success",
3361
+ Active: "dl-status-badge--success",
3362
+ ACTIVE: "dl-status-badge--success",
3363
+ ONLINE: "dl-status-badge--success",
3364
+ "In Progress": "dl-status-badge--info",
3365
+ RUNNING: "dl-status-badge--info",
3366
+ "Needs Approval": "dl-status-badge--warning",
3367
+ Degraded: "dl-status-badge--warning",
3368
+ PAUSED: "dl-status-badge--warning",
3369
+ Failed: "dl-status-badge--destructive",
3370
+ FAILED: "dl-status-badge--destructive",
3371
+ Offline: "dl-status-badge--muted",
3372
+ DISABLED: "dl-status-badge--muted",
3373
+ IDLE: "dl-status-badge--muted"
3374
+ };
3375
+ var StatusBadge = React40.forwardRef(
3376
+ ({ status, className, ...props }, ref) => {
3377
+ const normalizedStatus = status?.trim() ?? "";
3378
+ const colorClass = statusCategoryMap[normalizedStatus] ?? "dl-status-badge--muted";
3379
+ return /* @__PURE__ */ jsxs26(
3380
+ "span",
3381
+ {
3382
+ ref,
3383
+ className: cn("dl-status-badge", colorClass, className),
3384
+ ...props,
3385
+ children: [
3386
+ /* @__PURE__ */ jsx45("span", { className: "dl-status-badge__dot" }),
3387
+ normalizedStatus
3388
+ ]
3389
+ }
3390
+ );
3391
+ }
3392
+ );
3393
+ StatusBadge.displayName = "StatusBadge";
3394
+
3395
+ // src/components/status-chip/status-chip.tsx
3396
+ import * as React41 from "react";
3397
+ import { jsx as jsx46, jsxs as jsxs27 } from "react/jsx-runtime";
3398
+ var statusToneMap = {
3399
+ active: "dl-status-chip--primary",
3400
+ running: "dl-status-chip--primary",
3401
+ completed: "dl-status-chip--muted",
3402
+ done: "dl-status-chip--muted",
3403
+ indexed: "dl-status-chip--primary",
3404
+ enabled: "dl-status-chip--primary",
3405
+ available: "dl-status-chip--primary",
3406
+ published: "dl-status-chip--primary",
3407
+ ok: "dl-status-chip--primary",
3408
+ waiting: "dl-status-chip--warning",
3409
+ paused: "dl-status-chip--warning",
3410
+ processing: "dl-status-chip--warning",
3411
+ degraded: "dl-status-chip--warning",
3412
+ warn: "dl-status-chip--warning",
3413
+ "requires-approval": "dl-status-chip--warning",
3414
+ draft: "dl-status-chip--warning",
3415
+ failed: "dl-status-chip--destructive",
3416
+ error: "dl-status-chip--destructive",
3417
+ offline: "dl-status-chip--destructive"
3418
+ };
3419
+ var StatusChip = React41.forwardRef(
3420
+ ({ status, className, ...props }, ref) => {
3421
+ const toneClass = statusToneMap[status] ?? "dl-status-chip--muted";
3422
+ return /* @__PURE__ */ jsxs27(
3423
+ "span",
3424
+ {
3425
+ ref,
3426
+ className: cn("dl-status-chip", toneClass, className),
3427
+ ...props,
3428
+ children: [
3429
+ /* @__PURE__ */ jsx46("span", { className: "dl-status-chip__dot" }),
3430
+ status
3431
+ ]
3432
+ }
3433
+ );
3434
+ }
3435
+ );
3436
+ StatusChip.displayName = "StatusChip";
3437
+
3438
+ // src/components/switch/switch.tsx
3439
+ import * as React42 from "react";
3395
3440
  import * as SwitchPrimitives from "@radix-ui/react-switch";
3396
- import { jsx as jsx40 } from "react/jsx-runtime";
3397
- var Switch = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx40(
3441
+ import { jsx as jsx47 } from "react/jsx-runtime";
3442
+ var Switch = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx47(
3398
3443
  SwitchPrimitives.Root,
3399
3444
  {
3400
- className: cn(
3401
- "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
3402
- className
3403
- ),
3445
+ className: cn("dl-switch", className),
3404
3446
  ...props,
3405
3447
  ref,
3406
- children: /* @__PURE__ */ jsx40(
3407
- SwitchPrimitives.Thumb,
3408
- {
3409
- className: cn(
3410
- "pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0 size-4"
3411
- )
3412
- }
3413
- )
3448
+ children: /* @__PURE__ */ jsx47(SwitchPrimitives.Thumb, { className: "dl-switch__thumb" })
3414
3449
  }
3415
3450
  ));
3416
3451
  Switch.displayName = SwitchPrimitives.Root.displayName;
3417
3452
 
3418
- // src/components/table.tsx
3419
- import * as React38 from "react";
3420
- import { jsx as jsx41 } from "react/jsx-runtime";
3421
- var Table = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx41(
3422
- "table",
3423
- {
3424
- ref,
3425
- className: cn("w-full caption-bottom text-sm", className),
3426
- ...props
3427
- }
3428
- ) }));
3453
+ // src/components/table/table.tsx
3454
+ import * as React43 from "react";
3455
+ import { jsx as jsx48 } from "react/jsx-runtime";
3456
+ var Table = React43.forwardRef(
3457
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("div", { className: "dl-table-wrapper", children: /* @__PURE__ */ jsx48("table", { ref, className: cn("dl-table", className), ...props }) })
3458
+ );
3429
3459
  Table.displayName = "Table";
3430
- var TableHeader = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
3460
+ var TableHeader = React43.forwardRef(
3461
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("thead", { ref, className: cn("dl-table__head", className), ...props })
3462
+ );
3431
3463
  TableHeader.displayName = "TableHeader";
3432
- var TableBody = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3433
- "tbody",
3434
- {
3435
- ref,
3436
- className: cn("[&_tr:last-child]:border-0", className),
3437
- ...props
3438
- }
3439
- ));
3464
+ var TableBody = React43.forwardRef(
3465
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("tbody", { ref, className: cn("dl-table__body", className), ...props })
3466
+ );
3440
3467
  TableBody.displayName = "TableBody";
3441
- var TableFooter = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3442
- "tfoot",
3443
- {
3444
- ref,
3445
- className: cn(
3446
- "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
3447
- className
3448
- ),
3449
- ...props
3450
- }
3451
- ));
3468
+ var TableFooter = React43.forwardRef(
3469
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("tfoot", { ref, className: cn("dl-table__foot", className), ...props })
3470
+ );
3452
3471
  TableFooter.displayName = "TableFooter";
3453
- var TableRow = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3454
- "tr",
3455
- {
3456
- ref,
3457
- className: cn(
3458
- "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
3459
- className
3460
- ),
3461
- ...props
3462
- }
3463
- ));
3472
+ var TableRow = React43.forwardRef(
3473
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("tr", { ref, className: cn("dl-table__row", className), ...props })
3474
+ );
3464
3475
  TableRow.displayName = "TableRow";
3465
- var TableHead = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3466
- "th",
3467
- {
3468
- ref,
3469
- className: cn(
3470
- "h-10 px-2 text-left align-middle font-medium text-muted-foreground has-[[role=checkbox]]:pr-0 *:[[role=checkbox]]:translate-y-[2px]",
3471
- className
3472
- ),
3473
- ...props
3474
- }
3475
- ));
3476
+ var TableHead = React43.forwardRef(
3477
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("th", { ref, className: cn("dl-table__head-cell", className), ...props })
3478
+ );
3476
3479
  TableHead.displayName = "TableHead";
3477
- var TableCell = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3478
- "td",
3479
- {
3480
- ref,
3481
- className: cn(
3482
- "p-2 align-middle has-[[role=checkbox]]:pr-0 *:[[role=checkbox]]:translate-y-[2px]",
3483
- className
3484
- ),
3485
- ...props
3486
- }
3487
- ));
3480
+ var TableCell = React43.forwardRef(
3481
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx48("td", { ref, className: cn("dl-table__cell", className), ...props })
3482
+ );
3488
3483
  TableCell.displayName = "TableCell";
3489
- var TableCaption = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx41(
3484
+ var TableCaption = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx48(
3490
3485
  "caption",
3491
3486
  {
3492
3487
  ref,
3493
- className: cn("mt-4 text-sm text-muted-foreground", className),
3488
+ className: cn("dl-table__caption", className),
3494
3489
  ...props
3495
3490
  }
3496
3491
  ));
3497
3492
  TableCaption.displayName = "TableCaption";
3498
3493
 
3499
- // src/components/tabs.tsx
3500
- import * as React39 from "react";
3494
+ // src/components/tabs/tabs.tsx
3495
+ import * as React44 from "react";
3501
3496
  import * as TabsPrimitive from "@radix-ui/react-tabs";
3502
- import { jsx as jsx42 } from "react/jsx-runtime";
3497
+ import { jsx as jsx49 } from "react/jsx-runtime";
3503
3498
  var Tabs = TabsPrimitive.Root;
3504
- var TabsList = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3499
+ var TabsList = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx49(
3505
3500
  TabsPrimitive.List,
3506
3501
  {
3507
3502
  ref,
3508
- className: cn(
3509
- "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
3510
- className
3511
- ),
3503
+ className: cn("dl-tabs-list", className),
3512
3504
  ...props
3513
3505
  }
3514
3506
  ));
3515
3507
  TabsList.displayName = TabsPrimitive.List.displayName;
3516
- var TabsTrigger = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3508
+ var TabsTrigger = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx49(
3517
3509
  TabsPrimitive.Trigger,
3518
3510
  {
3519
3511
  ref,
3520
- className: cn(
3521
- "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background cursor-pointer transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
3522
- className
3523
- ),
3512
+ className: cn("dl-tabs-trigger", className),
3524
3513
  ...props
3525
3514
  }
3526
3515
  ));
3527
3516
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3528
- var TabsContent = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx42(
3517
+ var TabsContent = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx49(
3529
3518
  TabsPrimitive.Content,
3530
3519
  {
3531
3520
  ref,
3532
- className: cn(
3533
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
3534
- className
3535
- ),
3521
+ className: cn("dl-tabs-content", className),
3536
3522
  ...props
3537
3523
  }
3538
3524
  ));
3539
3525
  TabsContent.displayName = TabsPrimitive.Content.displayName;
3540
3526
 
3541
- // src/components/textarea.tsx
3542
- import * as React40 from "react";
3543
- import { jsx as jsx43 } from "react/jsx-runtime";
3544
- var Textarea = React40.forwardRef(({ className, ...props }, ref) => {
3545
- return /* @__PURE__ */ jsx43(
3546
- "textarea",
3547
- {
3548
- className: cn(
3549
- "flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
3550
- className
3551
- ),
3552
- ref,
3553
- ...props
3554
- }
3555
- );
3556
- });
3527
+ // src/components/textarea/textarea.tsx
3528
+ import * as React45 from "react";
3529
+ import { jsx as jsx50 } from "react/jsx-runtime";
3530
+ var Textarea = React45.forwardRef(
3531
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx50("textarea", { className: cn("dl-textarea", className), ref, ...props })
3532
+ );
3557
3533
  Textarea.displayName = "Textarea";
3558
3534
 
3559
- // src/components/toggle-group.tsx
3560
- import * as React42 from "react";
3561
- import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
3562
-
3563
- // src/components/toggle.tsx
3564
- import * as React41 from "react";
3535
+ // src/components/toggle/toggle.tsx
3536
+ import * as React46 from "react";
3565
3537
  import * as TogglePrimitive from "@radix-ui/react-toggle";
3566
3538
  import { cva as cva8 } from "class-variance-authority";
3567
- import { jsx as jsx44 } from "react/jsx-runtime";
3568
- var toggleVariants = cva8(
3569
- "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium cursor-pointer transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3570
- {
3571
- variants: {
3572
- variant: {
3573
- default: "bg-transparent",
3574
- outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
3575
- },
3576
- size: {
3577
- default: "h-9 px-2 min-w-9",
3578
- sm: "h-8 px-1.5 min-w-8",
3579
- lg: "h-10 px-2.5 min-w-10"
3580
- }
3539
+ import { jsx as jsx51 } from "react/jsx-runtime";
3540
+ var toggleVariants = cva8("dl-toggle", {
3541
+ variants: {
3542
+ variant: {
3543
+ default: "dl-toggle--variant-default",
3544
+ outline: "dl-toggle--variant-outline"
3581
3545
  },
3582
- defaultVariants: {
3583
- variant: "default",
3584
- size: "default"
3546
+ size: {
3547
+ default: "dl-toggle--size-default",
3548
+ sm: "dl-toggle--size-sm",
3549
+ lg: "dl-toggle--size-lg"
3585
3550
  }
3551
+ },
3552
+ defaultVariants: {
3553
+ variant: "default",
3554
+ size: "default"
3586
3555
  }
3587
- );
3588
- var Toggle = React41.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx44(
3556
+ });
3557
+ var Toggle = React46.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx51(
3589
3558
  TogglePrimitive.Root,
3590
3559
  {
3591
3560
  ref,
@@ -3595,25 +3564,27 @@ var Toggle = React41.forwardRef(({ className, variant, size, ...props }, ref) =>
3595
3564
  ));
3596
3565
  Toggle.displayName = TogglePrimitive.Root.displayName;
3597
3566
 
3598
- // src/components/toggle-group.tsx
3599
- import { jsx as jsx45 } from "react/jsx-runtime";
3600
- var ToggleGroupContext = React42.createContext({
3567
+ // src/components/toggle-group/toggle-group.tsx
3568
+ import * as React47 from "react";
3569
+ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
3570
+ import { jsx as jsx52 } from "react/jsx-runtime";
3571
+ var ToggleGroupContext = React47.createContext({
3601
3572
  size: "default",
3602
3573
  variant: "default"
3603
3574
  });
3604
- var ToggleGroup = React42.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx45(
3575
+ var ToggleGroup = React47.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx52(
3605
3576
  ToggleGroupPrimitive.Root,
3606
3577
  {
3607
3578
  ref,
3608
- className: cn("flex items-center justify-center gap-1", className),
3579
+ className: cn("dl-toggle-group", className),
3609
3580
  ...props,
3610
- children: /* @__PURE__ */ jsx45(ToggleGroupContext.Provider, { value: { variant, size }, children })
3581
+ children: /* @__PURE__ */ jsx52(ToggleGroupContext.Provider, { value: { variant, size }, children })
3611
3582
  }
3612
3583
  ));
3613
3584
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
3614
- var ToggleGroupItem = React42.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3615
- const context = React42.useContext(ToggleGroupContext);
3616
- return /* @__PURE__ */ jsx45(
3585
+ var ToggleGroupItem = React47.forwardRef(({ className, children, variant, size, ...props }, ref) => {
3586
+ const context = React47.useContext(ToggleGroupContext);
3587
+ return /* @__PURE__ */ jsx52(
3617
3588
  ToggleGroupPrimitive.Item,
3618
3589
  {
3619
3590
  ref,
@@ -3630,378 +3601,6 @@ var ToggleGroupItem = React42.forwardRef(({ className, children, variant, size,
3630
3601
  );
3631
3602
  });
3632
3603
  ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
3633
-
3634
- // src/components/panel.tsx
3635
- import * as React43 from "react";
3636
- import { jsx as jsx46, jsxs as jsxs20 } from "react/jsx-runtime";
3637
- var Panel2 = React43.forwardRef(
3638
- ({ title, meta, children, className, ...props }, ref) => {
3639
- return /* @__PURE__ */ jsxs20(
3640
- "section",
3641
- {
3642
- ref,
3643
- className: cn("rounded-lg border border-border bg-card p-4", className),
3644
- ...props,
3645
- children: [
3646
- title ? /* @__PURE__ */ jsxs20("div", { className: "mb-3 flex items-center gap-2", children: [
3647
- /* @__PURE__ */ jsx46("h2", { className: "font-display text-sm font-semibold", children: title }),
3648
- meta ? /* @__PURE__ */ jsx46("div", { className: "ml-auto font-mono text-[10px] text-muted-foreground", children: meta }) : null
3649
- ] }) : null,
3650
- children
3651
- ]
3652
- }
3653
- );
3654
- }
3655
- );
3656
- Panel2.displayName = "Panel";
3657
-
3658
- // src/components/status-chip.tsx
3659
- import * as React44 from "react";
3660
- import { jsx as jsx47, jsxs as jsxs21 } from "react/jsx-runtime";
3661
- var statusTone = {
3662
- active: "border-primary/30 bg-primary/10 text-primary",
3663
- running: "border-primary/30 bg-primary/10 text-primary",
3664
- completed: "border-border bg-secondary text-muted-foreground",
3665
- done: "border-border bg-secondary text-muted-foreground",
3666
- indexed: "border-primary/30 bg-primary/10 text-primary",
3667
- enabled: "border-primary/30 bg-primary/10 text-primary",
3668
- available: "border-primary/30 bg-primary/10 text-primary",
3669
- published: "border-primary/30 bg-primary/10 text-primary",
3670
- ok: "border-primary/30 bg-primary/10 text-primary",
3671
- waiting: "border-warning/35 bg-warning/10 text-warning",
3672
- paused: "border-warning/35 bg-warning/10 text-warning",
3673
- processing: "border-warning/35 bg-warning/10 text-warning",
3674
- degraded: "border-warning/35 bg-warning/10 text-warning",
3675
- warn: "border-warning/35 bg-warning/10 text-warning",
3676
- "requires-approval": "border-warning/35 bg-warning/10 text-warning",
3677
- draft: "border-warning/35 bg-warning/10 text-warning",
3678
- failed: "border-destructive/35 bg-destructive/10 text-destructive",
3679
- error: "border-destructive/35 bg-destructive/10 text-destructive",
3680
- offline: "border-destructive/35 bg-destructive/10 text-destructive"
3681
- };
3682
- var StatusChip = React44.forwardRef(
3683
- ({ status, className, ...props }, ref) => {
3684
- return /* @__PURE__ */ jsxs21(
3685
- "span",
3686
- {
3687
- ref,
3688
- className: cn(
3689
- "inline-flex items-center gap-1.5 rounded-md border px-2 py-0.5 font-mono text-[10px]",
3690
- statusTone[status] ?? "border-border bg-secondary text-muted-foreground",
3691
- className
3692
- ),
3693
- ...props,
3694
- children: [
3695
- /* @__PURE__ */ jsx47("span", { className: "size-1.5 rounded-full bg-current" }),
3696
- status
3697
- ]
3698
- }
3699
- );
3700
- }
3701
- );
3702
- StatusChip.displayName = "StatusChip";
3703
-
3704
- // src/components/date-picker.tsx
3705
- import * as React45 from "react";
3706
- import { format } from "date-fns";
3707
- import { Calendar as CalendarIcon } from "lucide-react";
3708
- import { jsx as jsx48, jsxs as jsxs22 } from "react/jsx-runtime";
3709
- function DatePicker({
3710
- value,
3711
- onChange,
3712
- placeholder = "Pick a date",
3713
- className,
3714
- disabled
3715
- }) {
3716
- const date = React45.useMemo(() => {
3717
- if (!value) return void 0;
3718
- const parts = value.split("-");
3719
- if (parts.length !== 3) {
3720
- const d = new Date(value);
3721
- return isNaN(d.getTime()) ? void 0 : d;
3722
- }
3723
- const year = parseInt(parts[0], 10);
3724
- const month = parseInt(parts[1], 10) - 1;
3725
- const day = parseInt(parts[2], 10);
3726
- return new Date(year, month, day, 12, 0, 0);
3727
- }, [value]);
3728
- return /* @__PURE__ */ jsxs22(Popover, { children: [
3729
- /* @__PURE__ */ jsx48(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs22(
3730
- Button,
3731
- {
3732
- variant: "outline",
3733
- type: "button",
3734
- disabled,
3735
- className: cn(
3736
- "border-border/80 bg-secondary/40 hover:bg-secondary/60 hover:text-foreground h-9 w-full justify-start text-left font-normal",
3737
- !value && "text-muted-foreground",
3738
- className
3739
- ),
3740
- children: [
3741
- /* @__PURE__ */ jsx48(CalendarIcon, { className: "mr-2 size-4" }),
3742
- date && !isNaN(date.getTime()) ? format(date, "PPP") : /* @__PURE__ */ jsx48("span", { children: placeholder })
3743
- ]
3744
- }
3745
- ) }),
3746
- /* @__PURE__ */ jsx48(PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ jsx48(
3747
- Calendar,
3748
- {
3749
- mode: "single",
3750
- selected: date,
3751
- onSelect: (selectedDate) => onChange?.(selectedDate ? format(selectedDate, "yyyy-MM-dd") : ""),
3752
- initialFocus: true
3753
- }
3754
- ) })
3755
- ] });
3756
- }
3757
-
3758
- // src/components/searchable-select.tsx
3759
- import * as React46 from "react";
3760
- import { Search as Search2, Plus, Check as Check6, ChevronDown as ChevronDown4 } from "lucide-react";
3761
- import { jsx as jsx49, jsxs as jsxs23 } from "react/jsx-runtime";
3762
- function SearchableSelect({
3763
- options,
3764
- value,
3765
- onChange,
3766
- placeholder = "Select an option...",
3767
- searchPlaceholder = "Search...",
3768
- onAddNew,
3769
- addNewLabel = "Add new",
3770
- disabled = false,
3771
- className,
3772
- id
3773
- }) {
3774
- const [open, setOpen] = React46.useState(false);
3775
- const [search, setSearch] = React46.useState("");
3776
- const [highlightedIndex, setHighlightedIndex] = React46.useState(0);
3777
- const listRef = React46.useRef(null);
3778
- const selectedOption = React46.useMemo(() => {
3779
- return options.find((opt) => opt.value === value);
3780
- }, [options, value]);
3781
- const filteredOptions = React46.useMemo(() => {
3782
- if (!search.trim()) return options;
3783
- const q = search.toLowerCase();
3784
- return options.filter(
3785
- (opt) => opt.label.toLowerCase().includes(q) || opt.group && opt.group.toLowerCase().includes(q)
3786
- );
3787
- }, [options, search]);
3788
- const handleOpenChange = (newOpen) => {
3789
- setOpen(newOpen);
3790
- if (newOpen) {
3791
- const idx = filteredOptions.findIndex((opt) => opt.value === value);
3792
- setHighlightedIndex(idx >= 0 ? idx : 0);
3793
- } else {
3794
- setSearch("");
3795
- }
3796
- };
3797
- const handleSearchChange = (newSearch) => {
3798
- setSearch(newSearch);
3799
- setHighlightedIndex(0);
3800
- };
3801
- React46.useEffect(() => {
3802
- if (open && listRef.current) {
3803
- const activeEl = listRef.current.querySelector(
3804
- "[data-highlighted='true']"
3805
- );
3806
- if (activeEl) {
3807
- activeEl.scrollIntoView({ block: "nearest" });
3808
- }
3809
- }
3810
- }, [highlightedIndex, open]);
3811
- const groupedOptions = React46.useMemo(() => {
3812
- const hasGroups = filteredOptions.some((opt) => opt.group);
3813
- if (!hasGroups) return { Default: filteredOptions };
3814
- return filteredOptions.reduce(
3815
- (acc, opt) => {
3816
- const g = opt.group || "Other";
3817
- if (!acc[g]) acc[g] = [];
3818
- acc[g].push(opt);
3819
- return acc;
3820
- },
3821
- {}
3822
- );
3823
- }, [filteredOptions]);
3824
- const handleSelect = (val) => {
3825
- onChange?.(val);
3826
- setOpen(false);
3827
- setSearch("");
3828
- };
3829
- const handleAddNew = () => {
3830
- onAddNew?.(search.trim());
3831
- setOpen(false);
3832
- setSearch("");
3833
- };
3834
- const handleKeyDown = (e) => {
3835
- if (!open) {
3836
- if (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") {
3837
- e.preventDefault();
3838
- handleOpenChange(true);
3839
- }
3840
- return;
3841
- }
3842
- switch (e.key) {
3843
- case "ArrowDown":
3844
- e.preventDefault();
3845
- setHighlightedIndex(
3846
- (prev) => prev < filteredOptions.length - 1 ? prev + 1 : prev
3847
- );
3848
- break;
3849
- case "ArrowUp":
3850
- e.preventDefault();
3851
- setHighlightedIndex((prev) => prev > 0 ? prev - 1 : 0);
3852
- break;
3853
- case "Enter":
3854
- e.preventDefault();
3855
- if (filteredOptions.length > 0 && filteredOptions[highlightedIndex]) {
3856
- handleSelect(filteredOptions[highlightedIndex].value);
3857
- } else if (onAddNew && search.trim()) {
3858
- handleAddNew();
3859
- }
3860
- break;
3861
- case "Escape":
3862
- case "Tab":
3863
- e.preventDefault();
3864
- handleOpenChange(false);
3865
- break;
3866
- }
3867
- };
3868
- let currentIndex = 0;
3869
- return /* @__PURE__ */ jsxs23(Popover, { open, onOpenChange: handleOpenChange, children: [
3870
- /* @__PURE__ */ jsx49(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs23(
3871
- Button,
3872
- {
3873
- id,
3874
- variant: "outline",
3875
- role: "combobox",
3876
- "aria-expanded": open,
3877
- disabled,
3878
- onKeyDown: handleKeyDown,
3879
- className: cn(
3880
- "bg-background border-input hover:bg-accent/50 h-9 w-full justify-between px-3 text-left font-normal",
3881
- !selectedOption && "text-muted-foreground",
3882
- className
3883
- ),
3884
- children: [
3885
- /* @__PURE__ */ jsx49("span", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder }),
3886
- /* @__PURE__ */ jsx49(ChevronDown4, { className: "ml-2 size-4 shrink-0 opacity-50" })
3887
- ]
3888
- }
3889
- ) }),
3890
- /* @__PURE__ */ jsxs23(
3891
- PopoverContent,
3892
- {
3893
- align: "start",
3894
- className: "border-border bg-popover w-(--radix-popover-trigger-width) min-w-55 border p-0 shadow-lg",
3895
- onKeyDown: handleKeyDown,
3896
- children: [
3897
- /* @__PURE__ */ jsxs23("div", { className: "border-border flex items-center gap-2 border-b p-2", children: [
3898
- /* @__PURE__ */ jsx49(Search2, { className: "text-muted-foreground size-4 shrink-0 opacity-50" }),
3899
- /* @__PURE__ */ jsx49(
3900
- Input,
3901
- {
3902
- placeholder: searchPlaceholder,
3903
- value: search,
3904
- onChange: (e) => handleSearchChange(e.target.value),
3905
- className: "h-8 border-none bg-transparent px-1 text-sm focus-visible:ring-0 focus-visible:ring-offset-0",
3906
- autoFocus: true
3907
- }
3908
- )
3909
- ] }),
3910
- /* @__PURE__ */ jsx49(
3911
- "div",
3912
- {
3913
- ref: listRef,
3914
- onWheel: (e) => e.stopPropagation(),
3915
- className: "max-h-60 overflow-y-auto overscroll-contain p-1 text-sm",
3916
- children: Object.keys(groupedOptions).length === 0 || filteredOptions.length === 0 && !onAddNew ? /* @__PURE__ */ jsx49("div", { className: "text-muted-foreground py-6 text-center text-xs", children: "No matching options found." }) : Object.entries(groupedOptions).map(([groupName, groupOpts]) => /* @__PURE__ */ jsxs23("div", { className: "py-1", children: [
3917
- groupName !== "Default" && /* @__PURE__ */ jsx49("div", { className: "text-muted-foreground/70 px-2 py-1 text-[10px] font-bold tracking-wider uppercase", children: groupName }),
3918
- groupOpts.map((option) => {
3919
- const isSelected = option.value === value;
3920
- const itemIndex = currentIndex++;
3921
- const isHighlighted = itemIndex === highlightedIndex;
3922
- return /* @__PURE__ */ jsxs23(
3923
- "div",
3924
- {
3925
- "data-highlighted": isHighlighted,
3926
- onClick: () => handleSelect(option.value),
3927
- onMouseEnter: () => setHighlightedIndex(itemIndex),
3928
- className: cn(
3929
- "relative flex cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-sm transition-colors outline-none select-none",
3930
- isHighlighted && "bg-accent text-accent-foreground font-medium",
3931
- isSelected && !isHighlighted && "bg-accent/40 text-accent-foreground font-medium"
3932
- ),
3933
- children: [
3934
- /* @__PURE__ */ jsx49("span", { className: "flex-1 truncate", children: option.label }),
3935
- isSelected && /* @__PURE__ */ jsx49(Check6, { className: "text-primary ml-2 size-4 shrink-0" })
3936
- ]
3937
- },
3938
- option.value
3939
- );
3940
- })
3941
- ] }, groupName))
3942
- }
3943
- ),
3944
- onAddNew && /* @__PURE__ */ jsx49("div", { className: "border-border bg-muted/30 border-t p-1", children: /* @__PURE__ */ jsxs23(
3945
- "button",
3946
- {
3947
- type: "button",
3948
- onClick: handleAddNew,
3949
- className: "text-primary hover:bg-primary/10 flex w-full items-center gap-2 rounded-sm px-2.5 py-2 text-xs font-semibold transition-colors",
3950
- children: [
3951
- /* @__PURE__ */ jsx49(Plus, { className: "size-3.5 shrink-0" }),
3952
- /* @__PURE__ */ jsx49("span", { className: "truncate", children: search.trim() ? `${addNewLabel} "${search.trim()}"` : `${addNewLabel}` })
3953
- ]
3954
- }
3955
- ) })
3956
- ]
3957
- }
3958
- )
3959
- ] });
3960
- }
3961
-
3962
- // src/components/confirm-dialog.tsx
3963
- import { jsx as jsx50, jsxs as jsxs24 } from "react/jsx-runtime";
3964
- function ConfirmDialog({
3965
- open,
3966
- onOpenChange,
3967
- title,
3968
- description,
3969
- onConfirm,
3970
- confirmText = "Confirm",
3971
- cancelText = "Cancel",
3972
- destructive = false
3973
- }) {
3974
- return /* @__PURE__ */ jsx50(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs24(AlertDialogContent, { children: [
3975
- /* @__PURE__ */ jsxs24(AlertDialogHeader, { children: [
3976
- /* @__PURE__ */ jsx50(AlertDialogTitle, { children: title }),
3977
- /* @__PURE__ */ jsx50(AlertDialogDescription, { children: description })
3978
- ] }),
3979
- /* @__PURE__ */ jsxs24(AlertDialogFooter, { children: [
3980
- /* @__PURE__ */ jsx50(AlertDialogCancel, { children: cancelText }),
3981
- /* @__PURE__ */ jsx50(
3982
- AlertDialogAction,
3983
- {
3984
- onClick: onConfirm,
3985
- className: destructive ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : "",
3986
- children: confirmText
3987
- }
3988
- )
3989
- ] })
3990
- ] }) });
3991
- }
3992
-
3993
- // src/components/loading-state.tsx
3994
- import { jsx as jsx51, jsxs as jsxs25 } from "react/jsx-runtime";
3995
- function LoadingState({
3996
- rows = 3,
3997
- className,
3998
- ...props
3999
- }) {
4000
- return /* @__PURE__ */ jsxs25("div", { className: cn("w-full space-y-4 p-2", className), ...props, children: [
4001
- /* @__PURE__ */ jsx51(Skeleton, { className: "h-8 w-1/3" }),
4002
- /* @__PURE__ */ jsx51("div", { className: "space-y-2", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsx51(Skeleton, { className: "h-16 w-full rounded-xl" }, i)) })
4003
- ] });
4004
- }
4005
3604
  export {
4006
3605
  Accordion,
4007
3606
  AccordionContent,
@@ -4085,6 +3684,7 @@ export {
4085
3684
  ContextMenuTrigger,
4086
3685
  DatePicker,
4087
3686
  Dialog,
3687
+ DialogBody,
4088
3688
  DialogClose,
4089
3689
  DialogContent,
4090
3690
  DialogDescription,
@@ -4167,7 +3767,7 @@ export {
4167
3767
  PaginationLink,
4168
3768
  PaginationNext,
4169
3769
  PaginationPrevious,
4170
- Panel2 as Panel,
3770
+ Panel,
4171
3771
  Popover,
4172
3772
  PopoverAnchor,
4173
3773
  PopoverContent,
@@ -4227,6 +3827,7 @@ export {
4227
3827
  SidebarTrigger,
4228
3828
  Skeleton,
4229
3829
  Slider,
3830
+ StatusBadge,
4230
3831
  StatusChip,
4231
3832
  Switch,
4232
3833
  Table,
@@ -4251,12 +3852,16 @@ export {
4251
3852
  TooltipContent,
4252
3853
  TooltipProvider,
4253
3854
  TooltipTrigger,
3855
+ alertVariants,
4254
3856
  badgeVariants,
4255
3857
  buttonVariants,
4256
3858
  cn,
3859
+ labelVariants,
4257
3860
  navigationMenuTriggerStyle,
3861
+ sheetVariants,
4258
3862
  toast,
4259
3863
  toggleVariants,
3864
+ useCarousel,
4260
3865
  useConfig,
4261
3866
  useFormField,
4262
3867
  useIsMobile,