@mlw-packages/react-components 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,3350 @@
1
+ import './index.css';
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/index.ts
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
+ AlertDialogActionBase: () => AlertDialogActionBase,
35
+ AlertDialogBase: () => AlertDialogBase,
36
+ AlertDialogCancelBase: () => AlertDialogCancelBase,
37
+ AlertDialogContentBase: () => AlertDialogContentBase,
38
+ AlertDialogDescriptionBase: () => AlertDialogDescriptionBase,
39
+ AlertDialogFooterBase: () => AlertDialogFooterBase,
40
+ AlertDialogHeaderBase: () => AlertDialogHeaderBase,
41
+ AlertDialogOverlayBase: () => AlertDialogOverlayBase,
42
+ AlertDialogPortalBase: () => AlertDialogPortalBase,
43
+ AlertDialogTitleBase: () => AlertDialogTitleBase,
44
+ AlertDialogTriggerBase: () => AlertDialogTriggerBase,
45
+ AvatarBase: () => AvatarBase,
46
+ AvatarFallbackBase: () => AvatarFallbackBase,
47
+ AvatarImageBase: () => AvatarImageBase,
48
+ ButtonBase: () => ButtonBase,
49
+ CalendarBase: () => CalendarBase2,
50
+ CardBase: () => CardBase,
51
+ CardContentBase: () => CardContentBase,
52
+ CardDescriptionBase: () => CardDescriptionBase,
53
+ CardFooterBase: () => CardFooterBase,
54
+ CardHeaderBase: () => CardHeaderBase,
55
+ CardTitleBase: () => CardTitleBase,
56
+ CheckboxBase: () => CheckboxBase,
57
+ Combobox: () => Combobox,
58
+ CommandBase: () => CommandBase,
59
+ CommandDialogBase: () => CommandDialogBase,
60
+ CommandEmptyBase: () => CommandEmptyBase,
61
+ CommandGroupBase: () => CommandGroupBase,
62
+ CommandInputBase: () => CommandInputBase,
63
+ CommandItemBase: () => CommandItemBase,
64
+ CommandListBase: () => CommandListBase,
65
+ CommandSeparatorBase: () => CommandSeparatorBase,
66
+ CommandShortcutBase: () => CommandShortcutBase,
67
+ DateTimePicker: () => DateTimePicker,
68
+ DialogBase: () => DialogBase,
69
+ DialogCloseBase: () => DialogCloseBase,
70
+ DialogContentBase: () => DialogContentBase,
71
+ DialogDescriptionBase: () => DialogDescriptionBase,
72
+ DialogFooterBase: () => DialogFooterBase,
73
+ DialogHeaderBase: () => DialogHeaderBase,
74
+ DialogOverlayBase: () => DialogOverlayBase,
75
+ DialogPortalBase: () => DialogPortalBase,
76
+ DialogTitleBase: () => DialogTitleBase,
77
+ DialogTriggerBase: () => DialogTriggerBase,
78
+ DropDownMenuBase: () => DropDownMenuBase,
79
+ DropDownMenuCheckboxItemBase: () => DropDownMenuCheckboxItemBase,
80
+ DropDownMenuContentBase: () => DropDownMenuContentBase,
81
+ DropDownMenuGroupBase: () => DropDownMenuGroupBase,
82
+ DropDownMenuItemBase: () => DropDownMenuItemBase,
83
+ DropDownMenuLabelBase: () => DropDownMenuLabelBase,
84
+ DropDownMenuPortalBase: () => DropDownMenuPortalBase,
85
+ DropDownMenuRadioGroupBase: () => DropDownMenuRadioGroupBase,
86
+ DropDownMenuRadioItemBase: () => DropDownMenuRadioItemBase,
87
+ DropDownMenuSeparatorBase: () => DropDownMenuSeparatorBase,
88
+ DropDownMenuShortcutBase: () => DropDownMenuShortcutBase,
89
+ DropDownMenuSubBase: () => DropDownMenuSubBase,
90
+ DropDownMenuSubContentBase: () => DropDownMenuSubContentBase,
91
+ DropDownMenuSubTriggerBase: () => DropDownMenuSubTriggerBase,
92
+ DropDownMenuTriggerBase: () => DropDownMenuTriggerBase,
93
+ FormBase: () => FormBase,
94
+ FormControlBase: () => FormControlBase,
95
+ FormDescriptionBase: () => FormDescriptionBase,
96
+ FormFieldBase: () => FormFieldBase,
97
+ FormItemBase: () => FormItemBase,
98
+ FormLabelBase: () => FormLabelBase,
99
+ FormMessageBase: () => FormMessageBase,
100
+ InputBase: () => InputBase,
101
+ LabelBase: () => LabelBase_default,
102
+ ModeToggleBase: () => ModeToggleBase,
103
+ MultiCombobox: () => MultiCombobox,
104
+ PopoverAnchorBase: () => PopoverAnchorBase,
105
+ PopoverBase: () => PopoverBase,
106
+ PopoverContentBase: () => PopoverContentBase,
107
+ PopoverTriggerBase: () => PopoverTriggerBase,
108
+ ProgressBase: () => ProgressBase,
109
+ ScrollAreaBase: () => ScrollAreaBase,
110
+ ScrollBarBase: () => ScrollBarBase,
111
+ Select: () => Select,
112
+ SelectBase: () => SelectBase,
113
+ SelectContentBase: () => SelectContentBase,
114
+ SelectGroupBase: () => SelectGroupBase,
115
+ SelectItemBase: () => SelectItemBase,
116
+ SelectLabelBase: () => SelectLabelBase,
117
+ SelectScrollDownButtonBase: () => SelectScrollDownButtonBase,
118
+ SelectScrollUpButtonBase: () => SelectScrollUpButtonBase,
119
+ SelectSeparatorBase: () => SelectSeparatorBase,
120
+ SelectTriggerBase: () => SelectTriggerBase,
121
+ SelectValueBase: () => SelectValueBase,
122
+ SeparatorBase: () => SeparatorBase,
123
+ SheetBase: () => SheetBase,
124
+ SheetCloseBase: () => SheetCloseBase,
125
+ SheetContentBase: () => SheetContentBase,
126
+ SheetDescriptionBase: () => SheetDescriptionBase,
127
+ SheetFooterBase: () => SheetFooterBase,
128
+ SheetHeaderBase: () => SheetHeaderBase,
129
+ SheetOverlayBase: () => SheetOverlayBase,
130
+ SheetPortalBase: () => SheetPortalBase,
131
+ SheetTitleBase: () => SheetTitleBase,
132
+ SheetTriggerBase: () => SheetTriggerBase,
133
+ SidebarBase: () => SidebarBase,
134
+ SidebarContentBase: () => SidebarContentBase,
135
+ SidebarFooterBase: () => SidebarFooterBase,
136
+ SidebarGroupActionBase: () => SidebarGroupActionBase,
137
+ SidebarGroupBase: () => SidebarGroupBase,
138
+ SidebarGroupContentBase: () => SidebarGroupContentBase,
139
+ SidebarGroupLabelBase: () => SidebarGroupLabelBase,
140
+ SidebarHeaderBase: () => SidebarHeaderBase,
141
+ SidebarInputBase: () => SidebarInputBase,
142
+ SidebarInsetBase: () => SidebarInsetBase,
143
+ SidebarMenuActionBase: () => SidebarMenuActionBase,
144
+ SidebarMenuBadgeBase: () => SidebarMenuBadgeBase,
145
+ SidebarMenuBase: () => SidebarMenuBase,
146
+ SidebarMenuButtonBase: () => SidebarMenuButtonBase,
147
+ SidebarMenuItemBase: () => SidebarMenuItemBase,
148
+ SidebarMenuSkeletonBase: () => SidebarMenuSkeletonBase,
149
+ SidebarMenuSubBase: () => SidebarMenuSubBase,
150
+ SidebarMenuSubButtonBase: () => SidebarMenuSubButtonBase,
151
+ SidebarMenuSubItemBase: () => SidebarMenuSubItemBase,
152
+ SidebarProviderBase: () => SidebarProviderBase,
153
+ SidebarRailBase: () => SidebarRailBase,
154
+ SidebarSeparatorBase: () => SidebarSeparatorBase,
155
+ SidebarTriggerBase: () => SidebarTriggerBase,
156
+ SkeletonBase: () => SkeletonBase,
157
+ SlideBase: () => SlideBase,
158
+ SwitchBase: () => SwitchBase,
159
+ TableBase: () => TableBase,
160
+ TableBodyBase: () => TableBodyBase,
161
+ TableCaptionBase: () => TableCaptionBase,
162
+ TableCellBase: () => TableCellBase,
163
+ TableFooterBase: () => TableFooterBase,
164
+ TableHeadBase: () => TableHeadBase,
165
+ TableHeaderBase: () => TableHeaderBase,
166
+ TableRowBase: () => TableRowBase,
167
+ TabsBase: () => TabsBase,
168
+ TabsContentBase: () => TabsContentBase,
169
+ TabsListBase: () => TabsListBase,
170
+ TabsTriggerBase: () => TabsTriggerBase,
171
+ TextAreaBase: () => TextAreaBase,
172
+ ThemeProviderBase: () => ThemeProviderBase,
173
+ TimePicker: () => TimePicker,
174
+ TimePickerInput: () => TimePickerInput,
175
+ Toaster: () => Toaster,
176
+ TooltipBase: () => TooltipBase,
177
+ TooltipContentBase: () => TooltipContentBase,
178
+ TooltipProviderBase: () => TooltipProviderBase,
179
+ TooltipTriggerBase: () => TooltipTriggerBase,
180
+ UseSideBarBase: () => UseSideBarBase,
181
+ applyfilter: () => applyfilter,
182
+ buildFilterSummary: () => buildFilterSummary,
183
+ buttonVariantsBase: () => buttonVariantsBase,
184
+ defaultStringConditions: () => defaultStringConditions,
185
+ useFormFieldBase: () => useFormFieldBase,
186
+ useIsMobile: () => useIsMobile,
187
+ useTheme: () => useTheme
188
+ });
189
+ module.exports = __toCommonJS(index_exports);
190
+
191
+ // src/components/ui/AlertDialogBase.tsx
192
+ var React2 = __toESM(require("react"));
193
+ var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"));
194
+
195
+ // src/lib/utils.ts
196
+ var import_clsx = require("clsx");
197
+ var import_tailwind_merge = require("tailwind-merge");
198
+ function cn(...inputs) {
199
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
200
+ }
201
+
202
+ // src/components/ui/ButtonBase.tsx
203
+ var React = __toESM(require("react"));
204
+ var import_react_slot = require("@radix-ui/react-slot");
205
+ var import_class_variance_authority = require("class-variance-authority");
206
+ var import_jsx_runtime = require("react/jsx-runtime");
207
+ var buttonVariantsBase = (0, import_class_variance_authority.cva)(
208
+ `
209
+ inline-flex items-center justify-center gap-2
210
+ whitespace-nowrap rounded-md text-sm font-medium
211
+ transition-all duration-200
212
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2
213
+ disabled:pointer-events-none disabled:opacity-50
214
+ active:scale-[0.97]
215
+ [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0
216
+ `,
217
+ {
218
+ variants: {
219
+ variant: {
220
+ default: `
221
+ bg-primary text-primary-foreground shadow
222
+ hover:opacity-90
223
+ hover:shadow-md
224
+ `,
225
+ destructive: `
226
+ bg-destructive text-destructive-foreground shadow-sm
227
+ hover:bg-destructive/90 hover:shadow-md
228
+ `,
229
+ outline: `
230
+ border border-input bg-background shadow-sm
231
+ hover:bg-accent hover:text-accent-foreground hover:shadow-md
232
+ `,
233
+ secondary: `
234
+ bg-secondary text-secondary-foreground shadow-sm
235
+ hover:opacity-80 hover:shadow-md
236
+ `,
237
+ ghost: `
238
+ hover:bg-accent hover:text-accent-foreground
239
+ `,
240
+ link: `
241
+ text-primary underline-offset-4
242
+ hover:underline
243
+ `
244
+ },
245
+ size: {
246
+ default: "h-9 px-4 py-1.5",
247
+ sm: "h-8 rounded-md px-3 text-xs",
248
+ lg: "h-10 rounded-md px-8",
249
+ icon: "h-9 w-9"
250
+ }
251
+ },
252
+ defaultVariants: {
253
+ variant: "default",
254
+ size: "default"
255
+ }
256
+ }
257
+ );
258
+ var ButtonBase = React.forwardRef(
259
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
260
+ const Comp = asChild ? import_react_slot.Slot : "button";
261
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
262
+ Comp,
263
+ {
264
+ className: cn(buttonVariantsBase({ variant, size, className })),
265
+ ref,
266
+ ...props
267
+ }
268
+ );
269
+ }
270
+ );
271
+ ButtonBase.displayName = "Button";
272
+
273
+ // src/components/ui/AlertDialogBase.tsx
274
+ var import_jsx_runtime2 = require("react/jsx-runtime");
275
+ var AlertDialogBase = AlertDialogPrimitive.Root;
276
+ var AlertDialogTriggerBase = AlertDialogPrimitive.Trigger;
277
+ var AlertDialogPortalBase = AlertDialogPrimitive.Portal;
278
+ var AlertDialogOverlayBase = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
279
+ AlertDialogPrimitive.Overlay,
280
+ {
281
+ className: cn(
282
+ "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",
283
+ className
284
+ ),
285
+ ...props,
286
+ ref
287
+ }
288
+ ));
289
+ AlertDialogOverlayBase.displayName = AlertDialogPrimitive.Overlay.displayName;
290
+ var AlertDialogContentBase = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(AlertDialogPortalBase, { children: [
291
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AlertDialogOverlayBase, {}),
292
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
293
+ AlertDialogPrimitive.Content,
294
+ {
295
+ ref,
296
+ className: cn(
297
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] 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 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
298
+ className
299
+ ),
300
+ ...props
301
+ }
302
+ )
303
+ ] }));
304
+ AlertDialogContentBase.displayName = AlertDialogPrimitive.Content.displayName;
305
+ var AlertDialogHeaderBase = ({
306
+ className,
307
+ ...props
308
+ }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
309
+ "div",
310
+ {
311
+ className: cn(
312
+ "flex flex-col space-y-2 text-center sm:text-left",
313
+ className
314
+ ),
315
+ ...props
316
+ }
317
+ );
318
+ AlertDialogHeaderBase.displayName = "AlertDialogHeaderBase";
319
+ var AlertDialogFooterBase = ({
320
+ className,
321
+ ...props
322
+ }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
323
+ "div",
324
+ {
325
+ className: cn(
326
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
327
+ className
328
+ ),
329
+ ...props
330
+ }
331
+ );
332
+ AlertDialogFooterBase.displayName = "AlertDialogFooterBase";
333
+ var AlertDialogTitleBase = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
334
+ AlertDialogPrimitive.Title,
335
+ {
336
+ ref,
337
+ className: cn("text-lg font-semibold", className),
338
+ ...props
339
+ }
340
+ ));
341
+ AlertDialogTitleBase.displayName = AlertDialogPrimitive.Title.displayName;
342
+ var AlertDialogDescriptionBase = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
343
+ AlertDialogPrimitive.Description,
344
+ {
345
+ ref,
346
+ className: cn("text-sm text-muted-foreground", className),
347
+ ...props
348
+ }
349
+ ));
350
+ AlertDialogDescriptionBase.displayName = AlertDialogPrimitive.Description.displayName;
351
+ var AlertDialogActionBase = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
352
+ AlertDialogPrimitive.Action,
353
+ {
354
+ ref,
355
+ className: cn(buttonVariantsBase(), className),
356
+ ...props
357
+ }
358
+ ));
359
+ AlertDialogActionBase.displayName = AlertDialogPrimitive.Action.displayName;
360
+ var AlertDialogCancelBase = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
361
+ AlertDialogPrimitive.Cancel,
362
+ {
363
+ ref,
364
+ className: cn(
365
+ buttonVariantsBase({ variant: "outline" }),
366
+ "mt-2 sm:mt-0",
367
+ className
368
+ ),
369
+ ...props
370
+ }
371
+ ));
372
+ AlertDialogCancelBase.displayName = AlertDialogPrimitive.Cancel.displayName;
373
+
374
+ // src/components/ui/AvatarBase.tsx
375
+ var React3 = __toESM(require("react"));
376
+ var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"));
377
+ var import_jsx_runtime3 = require("react/jsx-runtime");
378
+ var AvatarBase = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
379
+ AvatarPrimitive.Root,
380
+ {
381
+ ref,
382
+ className: cn(
383
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
384
+ className
385
+ ),
386
+ ...props
387
+ }
388
+ ));
389
+ AvatarBase.displayName = AvatarPrimitive.Root.displayName;
390
+ var AvatarImageBase = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
391
+ AvatarPrimitive.Image,
392
+ {
393
+ ref,
394
+ className: cn("aspect-square h-full w-full", className),
395
+ ...props
396
+ }
397
+ ));
398
+ AvatarImageBase.displayName = AvatarPrimitive.Image.displayName;
399
+ var AvatarFallbackBase = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
400
+ AvatarPrimitive.Fallback,
401
+ {
402
+ ref,
403
+ className: cn(
404
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
405
+ className
406
+ ),
407
+ ...props
408
+ }
409
+ ));
410
+ AvatarFallbackBase.displayName = AvatarPrimitive.Fallback.displayName;
411
+
412
+ // src/components/date-time-picker/DateTimePicker.tsx
413
+ var import_date_fns = require("date-fns");
414
+
415
+ // src/components/date-time-picker/calendar.tsx
416
+ var import_phosphor_react = require("phosphor-react");
417
+ var import_react_day_picker = require("react-day-picker");
418
+ var import_jsx_runtime4 = require("react/jsx-runtime");
419
+ function CalendarBase({
420
+ className,
421
+ classNames,
422
+ showOutsideDays = true,
423
+ ...props
424
+ }) {
425
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
426
+ import_react_day_picker.DayPicker,
427
+ {
428
+ showOutsideDays,
429
+ className: cn("bg-background p-3", className),
430
+ classNames: {
431
+ months: "flex items-center flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
432
+ month: "space-y-4",
433
+ caption: "flex justify-center pt-1 relative items-center",
434
+ caption_label: "text-sm font-medium",
435
+ nav: "space-x-1 flex items-center",
436
+ nav_button: cn(
437
+ buttonVariantsBase({ variant: "outline" }),
438
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
439
+ ),
440
+ nav_button_previous: "absolute left-1",
441
+ nav_button_next: "absolute right-1",
442
+ table: "w-full border-collapse space-y-1",
443
+ head_row: "flex",
444
+ head_cell: "text-slate-500 rounded-md w-9 font-normal text-[0.8rem] dark:text-slate-400",
445
+ row: "flex w-full mt-2",
446
+ cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-slate-100/50 [&:has([aria-selected])]:bg-slate-100 first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20 dark:[&:has([aria-selected].day-outside)]:bg-slate-800/50 dark:[&:has([aria-selected])]:bg-slate-800",
447
+ day: cn(
448
+ buttonVariantsBase({ variant: "ghost" }),
449
+ "h-9 w-9 p-0 font-normal aria-selected:opacity-100"
450
+ ),
451
+ day_range_end: "day-range-end",
452
+ day_selected: "bg-purple text-slate-50 hover:bg-primary hover:text-slate-50 focus:bg-purple-500 focus:text-slate-50 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50 dark:hover:text-slate-900 dark:focus:bg-slate-50 dark:focus:text-slate-900",
453
+ day_today: "bg-slate-100 text-slate-900 dark:bg-primary dark:text-slate-50",
454
+ day_outside: "day-outside text-slate-500 opacity-50 aria-selected:bg-slate-100/50 aria-selected:text-slate-500 aria-selected:opacity-30 dark:text-slate-400 dark:aria-selected:bg-slate-800/50 dark:aria-selected:text-slate-400",
455
+ day_disabled: "text-slate-500 opacity-50 dark:text-slate-400",
456
+ day_range_middle: "aria-selected:bg-slate-100 aria-selected:text-slate-900 dark:aria-selected:bg-primary dark:aria-selected:text-primary",
457
+ day_hidden: "invisible",
458
+ ...classNames
459
+ },
460
+ components: {
461
+ IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_phosphor_react.CaretLeft, { className: "h-4 w-4" }),
462
+ IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_phosphor_react.CaretRight, { className: "h-4 w-4" })
463
+ },
464
+ ...props
465
+ }
466
+ );
467
+ }
468
+ CalendarBase.displayName = "Calendar";
469
+
470
+ // src/components/date-time-picker/DateTimePicker.tsx
471
+ var import_phosphor_react4 = require("phosphor-react");
472
+ var import_locale = require("date-fns/locale");
473
+ var import_react2 = require("react");
474
+
475
+ // src/components/ui/DialogBase.tsx
476
+ var React4 = __toESM(require("react"));
477
+ var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"));
478
+ var import_phosphor_react2 = require("phosphor-react");
479
+ var import_jsx_runtime5 = require("react/jsx-runtime");
480
+ var DialogBase = DialogPrimitive.Root;
481
+ var DialogTriggerBase = DialogPrimitive.Trigger;
482
+ var DialogPortalBase = DialogPrimitive.Portal;
483
+ var DialogCloseBase = DialogPrimitive.Close;
484
+ var DialogOverlayBase = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
485
+ DialogPrimitive.Overlay,
486
+ {
487
+ ref,
488
+ className: cn(
489
+ "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",
490
+ className
491
+ ),
492
+ ...props
493
+ }
494
+ ));
495
+ DialogOverlayBase.displayName = DialogPrimitive.Overlay.displayName;
496
+ var DialogContentBase = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(DialogPortalBase, { children: [
497
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DialogOverlayBase, {}),
498
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
499
+ DialogPrimitive.Content,
500
+ {
501
+ ref,
502
+ className: cn(
503
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] 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 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
504
+ className
505
+ ),
506
+ ...props,
507
+ children: [
508
+ children,
509
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background 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-accent data-[state=open]:text-muted-foreground", children: [
510
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_phosphor_react2.X, { className: "h-4 w-4" }),
511
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "sr-only", children: "Close" })
512
+ ] })
513
+ ]
514
+ }
515
+ )
516
+ ] }));
517
+ DialogContentBase.displayName = DialogPrimitive.Content.displayName;
518
+ var DialogHeaderBase = ({
519
+ className,
520
+ ...props
521
+ }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
522
+ "div",
523
+ {
524
+ className: cn(
525
+ "flex flex-col space-y-1.5 text-center sm:text-left",
526
+ className
527
+ ),
528
+ ...props
529
+ }
530
+ );
531
+ DialogHeaderBase.displayName = "DialogHeader";
532
+ var DialogFooterBase = ({
533
+ className,
534
+ ...props
535
+ }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
536
+ "div",
537
+ {
538
+ className: cn(
539
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
540
+ className
541
+ ),
542
+ ...props
543
+ }
544
+ );
545
+ DialogFooterBase.displayName = "DialogFooter";
546
+ var DialogTitleBase = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
547
+ DialogPrimitive.Title,
548
+ {
549
+ ref,
550
+ className: cn(
551
+ "text-lg font-semibold leading-none tracking-tight",
552
+ className
553
+ ),
554
+ ...props
555
+ }
556
+ ));
557
+ DialogTitleBase.displayName = DialogPrimitive.Title.displayName;
558
+ var DialogDescriptionBase = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
559
+ DialogPrimitive.Description,
560
+ {
561
+ ref,
562
+ className: cn("text-sm text-muted-foreground", className),
563
+ ...props
564
+ }
565
+ ));
566
+ DialogDescriptionBase.displayName = DialogPrimitive.Description.displayName;
567
+
568
+ // src/components/ui/LabelBase.tsx
569
+ var React5 = __toESM(require("react"));
570
+ var import_react_label = require("@radix-ui/react-label");
571
+ var import_react_slot2 = require("@radix-ui/react-slot");
572
+ var import_jsx_runtime6 = require("react/jsx-runtime");
573
+ var LabelBase = React5.forwardRef(
574
+ ({ className, asChild = false, ...props }, ref) => {
575
+ const Comp = asChild ? import_react_slot2.Slot : "label";
576
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_label.Label, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
577
+ Comp,
578
+ {
579
+ ref,
580
+ className: cn(
581
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
582
+ className
583
+ ),
584
+ ...props
585
+ }
586
+ ) });
587
+ }
588
+ );
589
+ LabelBase.displayName = "LabelBase";
590
+ var LabelBase_default = LabelBase;
591
+
592
+ // src/components/date-time-picker/TimePicker.tsx
593
+ var import_phosphor_react3 = require("phosphor-react");
594
+ var React8 = __toESM(require("react"));
595
+
596
+ // src/components/ui/InputBase.tsx
597
+ var React6 = __toESM(require("react"));
598
+ var import_jsx_runtime7 = require("react/jsx-runtime");
599
+ var InputBase = React6.forwardRef(
600
+ ({ className, type = "text", label, leftIcon, rightIcon, ...props }, ref) => {
601
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
602
+ label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LabelBase_default, { children: label }),
603
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center rounded-md border border-input transition focus-within:ring-1 focus-within:ring-ring focus-within:border-ring", children: [
604
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center px-2", children: leftIcon }),
605
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
606
+ "input",
607
+ {
608
+ type,
609
+ className: cn(
610
+ " w-full flex-1 bg-transparent px-3 py-1 text-base placeholder:text-muted-foreground focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
611
+ className
612
+ ),
613
+ ref,
614
+ ...props
615
+ }
616
+ ),
617
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center px-2", children: rightIcon })
618
+ ] })
619
+ ] });
620
+ }
621
+ );
622
+ InputBase.displayName = "Input";
623
+
624
+ // src/components/date-time-picker/TimePickerInput.tsx
625
+ var import_react = __toESM(require("react"));
626
+
627
+ // src/components/date-time-picker/time-picker-utils.ts
628
+ function isValidHour(value) {
629
+ return /^(0[0-9]|1[0-9]|2[0-3])$/.test(value);
630
+ }
631
+ function isValid12Hour(value) {
632
+ return /^(0[1-9]|1[0-2])$/.test(value);
633
+ }
634
+ function isValidMinuteOrSecond(value) {
635
+ return /^[0-5][0-9]$/.test(value);
636
+ }
637
+ function getValidNumber(value, { max, min = 0, loop = false }) {
638
+ let numericValue = parseInt(value, 10);
639
+ if (!isNaN(numericValue)) {
640
+ if (!loop) {
641
+ if (numericValue > max) numericValue = max;
642
+ if (numericValue < min) numericValue = min;
643
+ } else {
644
+ if (numericValue > max) numericValue = min;
645
+ if (numericValue < min) numericValue = max;
646
+ }
647
+ return numericValue.toString().padStart(2, "0");
648
+ }
649
+ return "00";
650
+ }
651
+ function getValidHour(value) {
652
+ if (isValidHour(value)) return value;
653
+ return getValidNumber(value, { max: 23 });
654
+ }
655
+ function getValid12Hour(value) {
656
+ if (isValid12Hour(value)) return value;
657
+ return getValidNumber(value, { min: 1, max: 12 });
658
+ }
659
+ function getValidMinuteOrSecond(value) {
660
+ if (isValidMinuteOrSecond(value)) return value;
661
+ return getValidNumber(value, { max: 59 });
662
+ }
663
+ function getValidArrowNumber(value, { min, max, step }) {
664
+ let numericValue = parseInt(value, 10);
665
+ if (!isNaN(numericValue)) {
666
+ numericValue += step;
667
+ return getValidNumber(String(numericValue), { min, max, loop: true });
668
+ }
669
+ return "00";
670
+ }
671
+ function getValidArrowHour(value, step) {
672
+ return getValidArrowNumber(value, { min: 0, max: 23, step });
673
+ }
674
+ function getValidArrow12Hour(value, step) {
675
+ return getValidArrowNumber(value, { min: 1, max: 12, step });
676
+ }
677
+ function getValidArrowMinuteOrSecond(value, step) {
678
+ return getValidArrowNumber(value, { min: 0, max: 59, step });
679
+ }
680
+ function setMinutes(date, value) {
681
+ const minutes = getValidMinuteOrSecond(value);
682
+ date.setMinutes(parseInt(minutes, 10));
683
+ return date;
684
+ }
685
+ function setSeconds(date, value) {
686
+ const seconds = getValidMinuteOrSecond(value);
687
+ date.setSeconds(parseInt(seconds, 10));
688
+ return date;
689
+ }
690
+ function setHours(date, value) {
691
+ const hours = getValidHour(value);
692
+ date.setHours(parseInt(hours, 10));
693
+ return date;
694
+ }
695
+ function set12Hours(date, value, period) {
696
+ const hours = parseInt(getValid12Hour(value), 10);
697
+ const convertedHours = convert12HourTo24Hour(hours, period);
698
+ date.setHours(convertedHours);
699
+ return date;
700
+ }
701
+ function setDateByType(date, value, type, period) {
702
+ switch (type) {
703
+ case "minutes":
704
+ return setMinutes(date, value);
705
+ case "seconds":
706
+ return setSeconds(date, value);
707
+ case "hours":
708
+ return setHours(date, value);
709
+ case "12hours": {
710
+ if (!period) return date;
711
+ return set12Hours(date, value, period);
712
+ }
713
+ default:
714
+ return date;
715
+ }
716
+ }
717
+ function getDateByType(date, type) {
718
+ switch (type) {
719
+ case "minutes":
720
+ return getValidMinuteOrSecond(String(date.getMinutes()));
721
+ case "seconds":
722
+ return getValidMinuteOrSecond(String(date.getSeconds()));
723
+ case "hours":
724
+ return getValidHour(String(date.getHours()));
725
+ case "12hours":
726
+ const hours = display12HourValue(date.getHours());
727
+ return getValid12Hour(String(hours));
728
+ default:
729
+ return "00";
730
+ }
731
+ }
732
+ function getArrowByType(value, step, type) {
733
+ switch (type) {
734
+ case "minutes":
735
+ return getValidArrowMinuteOrSecond(value, step);
736
+ case "seconds":
737
+ return getValidArrowMinuteOrSecond(value, step);
738
+ case "hours":
739
+ return getValidArrowHour(value, step);
740
+ case "12hours":
741
+ return getValidArrow12Hour(value, step);
742
+ default:
743
+ return "00";
744
+ }
745
+ }
746
+ function convert12HourTo24Hour(hour, period) {
747
+ if (period === "PM") {
748
+ if (hour <= 11) {
749
+ return hour + 12;
750
+ } else {
751
+ return hour;
752
+ }
753
+ } else if (period === "AM") {
754
+ if (hour === 12) return 0;
755
+ return hour;
756
+ }
757
+ return hour;
758
+ }
759
+ function display12HourValue(hours) {
760
+ if (hours === 0 || hours === 12) return "12";
761
+ if (hours >= 22) return `${hours - 12}`;
762
+ if (hours % 12 > 9) return `${hours}`;
763
+ return `0${hours % 12}`;
764
+ }
765
+
766
+ // src/components/date-time-picker/TimePickerInput.tsx
767
+ var import_jsx_runtime8 = require("react/jsx-runtime");
768
+ var TimePickerInput = import_react.default.forwardRef(
769
+ ({
770
+ className,
771
+ type = "tel",
772
+ value,
773
+ id,
774
+ name,
775
+ date = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0)),
776
+ setDate,
777
+ onChange,
778
+ onKeyDown,
779
+ picker,
780
+ period,
781
+ onLeftFocus,
782
+ onRightFocus,
783
+ ...props
784
+ }, ref) => {
785
+ const [flag, setFlag] = import_react.default.useState(false);
786
+ const [prevIntKey, setPrevIntKey] = import_react.default.useState("0");
787
+ import_react.default.useEffect(() => {
788
+ if (flag) {
789
+ const timer = setTimeout(() => {
790
+ setFlag(false);
791
+ }, 2e3);
792
+ return () => clearTimeout(timer);
793
+ }
794
+ }, [flag]);
795
+ const calculatedValue = import_react.default.useMemo(() => {
796
+ return getDateByType(date, picker);
797
+ }, [date, picker]);
798
+ const calculateNewValue = (key) => {
799
+ if (picker === "12hours") {
800
+ if (flag && calculatedValue.slice(1, 2) === "1" && prevIntKey === "0")
801
+ return "0" + key;
802
+ }
803
+ return !flag ? "0" + key : calculatedValue.slice(1, 2) + key;
804
+ };
805
+ const handleKeyDown = (e) => {
806
+ if (e.key === "Tab") return;
807
+ e.preventDefault();
808
+ if (e.key === "ArrowRight") onRightFocus?.();
809
+ if (e.key === "ArrowLeft") onLeftFocus?.();
810
+ if (["ArrowUp", "ArrowDown"].includes(e.key)) {
811
+ const step = e.key === "ArrowUp" ? 1 : -1;
812
+ const newValue = getArrowByType(calculatedValue, step, picker);
813
+ if (flag) setFlag(false);
814
+ const tempDate = new Date(date);
815
+ setDate(setDateByType(tempDate, newValue, picker, period));
816
+ }
817
+ if (e.key >= "0" && e.key <= "9") {
818
+ if (picker === "12hours") setPrevIntKey(e.key);
819
+ const newValue = calculateNewValue(e.key);
820
+ if (flag) onRightFocus?.();
821
+ setFlag((prev) => !prev);
822
+ const tempDate = new Date(date);
823
+ setDate(setDateByType(tempDate, newValue, picker, period));
824
+ }
825
+ };
826
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
827
+ InputBase,
828
+ {
829
+ ref,
830
+ id: id || picker,
831
+ name: name || picker,
832
+ className: cn(
833
+ "focus:bg-accent focus:text-accent-foreground w-[48px] text-center font-mono text-base tabular-nums caret-transparent [&::-webkit-inner-spin-button]:appearance-none",
834
+ className
835
+ ),
836
+ value: value || calculatedValue,
837
+ onChange: (e) => {
838
+ e.preventDefault();
839
+ onChange?.(e);
840
+ },
841
+ type,
842
+ inputMode: "decimal",
843
+ onKeyDown: (e) => {
844
+ onKeyDown?.(e);
845
+ handleKeyDown(e);
846
+ },
847
+ ...props
848
+ }
849
+ );
850
+ }
851
+ );
852
+ TimePickerInput.displayName = "TimePickerInput";
853
+
854
+ // src/components/date-time-picker/TimePicker.tsx
855
+ var import_jsx_runtime9 = require("react/jsx-runtime");
856
+ function TimePicker({ date, setDate, hideSeconds }) {
857
+ const minuteRef = React8.useRef(null);
858
+ const hourRef = React8.useRef(null);
859
+ const secondRef = React8.useRef(null);
860
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-end gap-2", children: [
861
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "grid gap-1 text-center", children: [
862
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LabelBase_default, { htmlFor: "hours", className: "text-xs", children: "Horas" }),
863
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
864
+ TimePickerInput,
865
+ {
866
+ picker: "hours",
867
+ date,
868
+ setDate,
869
+ ref: hourRef,
870
+ onRightFocus: () => minuteRef.current?.focus()
871
+ }
872
+ )
873
+ ] }),
874
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "grid gap-1 text-center", children: [
875
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LabelBase_default, { htmlFor: "minutes", className: "text-xs", children: "Minutos" }),
876
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
877
+ TimePickerInput,
878
+ {
879
+ picker: "minutes",
880
+ date,
881
+ setDate,
882
+ ref: minuteRef,
883
+ onLeftFocus: () => hourRef.current?.focus(),
884
+ onRightFocus: () => secondRef.current?.focus()
885
+ }
886
+ )
887
+ ] }),
888
+ !hideSeconds && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "grid gap-1 text-center", children: [
889
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LabelBase_default, { htmlFor: "seconds", className: "text-xs", children: "Segundos" }),
890
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
891
+ TimePickerInput,
892
+ {
893
+ picker: "seconds",
894
+ date,
895
+ setDate,
896
+ ref: secondRef,
897
+ onLeftFocus: () => minuteRef.current?.focus()
898
+ }
899
+ )
900
+ ] }),
901
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex h-10 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_phosphor_react3.Clock, { className: "ml-2 h-4 w-4" }) })
902
+ ] });
903
+ }
904
+
905
+ // src/components/date-time-picker/DateTimePicker.tsx
906
+ var import_jsx_runtime10 = require("react/jsx-runtime");
907
+ function DateTimePicker({
908
+ label,
909
+ date,
910
+ onChange,
911
+ hideSeconds,
912
+ fromDate,
913
+ toDate,
914
+ disabled,
915
+ dialogTitle
916
+ }) {
917
+ const [internalDate, setInternalDate] = (0, import_react2.useState)(date);
918
+ const handleSelect = (newDay) => {
919
+ if (!newDay) return;
920
+ if (!internalDate) {
921
+ setInternalDate(newDay);
922
+ return;
923
+ }
924
+ const diff = newDay.getTime() - internalDate.getTime();
925
+ const diffInDays = diff / (1e3 * 60 * 60 * 24);
926
+ const newDateFull = (0, import_date_fns.add)(internalDate, { days: Math.ceil(diffInDays) });
927
+ setInternalDate(newDateFull);
928
+ };
929
+ const [open, setOpen] = (0, import_react2.useState)(false);
930
+ (0, import_react2.useEffect)(() => {
931
+ if (date) {
932
+ setInternalDate(date);
933
+ }
934
+ }, [date, open]);
935
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
936
+ label && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(LabelBase_default, { className: "mb-[-1rem] pl-2", children: label }),
937
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DialogBase, { open, onOpenChange: setOpen, children: [
938
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogTriggerBase, { disabled, asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
939
+ ButtonBase,
940
+ {
941
+ variant: "default",
942
+ size: "lg",
943
+ className: cn(
944
+ "w-full justify-start text-left font-normal text-zinc-950",
945
+ !date && "text-muted-foreground"
946
+ ),
947
+ children: [
948
+ date ? (0, import_date_fns.format)(date, "PPP - HH:mm", { locale: import_locale.ptBR }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-zinc-400", children: "Pick a date" }),
949
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_phosphor_react4.Calendar, { className: "ml-auto text-gray-500", size: 24 })
950
+ ]
951
+ }
952
+ ) }),
953
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DialogContentBase, { children: [
954
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogHeaderBase, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogTitleBase, { className: "text-xl font-semibold", children: dialogTitle ?? "Selecione a data" }) }),
955
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
956
+ CalendarBase,
957
+ {
958
+ mode: "single",
959
+ locale: import_locale.ptBR,
960
+ selected: internalDate,
961
+ onSelect: (d) => handleSelect(d),
962
+ initialFocus: true,
963
+ fromDate,
964
+ toDate
965
+ }
966
+ ),
967
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "border-border flex justify-center border-t p-3", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
968
+ TimePicker,
969
+ {
970
+ setDate: setInternalDate,
971
+ date: internalDate,
972
+ hideSeconds
973
+ }
974
+ ) }),
975
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
976
+ ButtonBase,
977
+ {
978
+ onClick: () => {
979
+ onChange(internalDate);
980
+ setOpen(false);
981
+ },
982
+ children: "Salvar"
983
+ }
984
+ )
985
+ ] })
986
+ ] })
987
+ ] });
988
+ }
989
+
990
+ // src/hooks/use-mobile.tsx
991
+ var React9 = __toESM(require("react"));
992
+ var MOBILE_BREAKPOINT = 768;
993
+ function useIsMobile() {
994
+ const [isMobile, setIsMobile] = React9.useState(void 0);
995
+ React9.useEffect(() => {
996
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
997
+ const onChange = () => {
998
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
999
+ };
1000
+ mql.addEventListener("change", onChange);
1001
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
1002
+ return () => mql.removeEventListener("change", onChange);
1003
+ }, []);
1004
+ return !!isMobile;
1005
+ }
1006
+
1007
+ // src/components/mode-toggle.tsx
1008
+ var import_phosphor_react6 = require("phosphor-react");
1009
+
1010
+ // src/components/ui/DropDownMenuBase.tsx
1011
+ var React10 = __toESM(require("react"));
1012
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
1013
+ var import_phosphor_react5 = require("phosphor-react");
1014
+ var import_framer_motion = require("framer-motion");
1015
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1016
+ var DropDownMenuBase = DropdownMenuPrimitive.Root;
1017
+ var DropDownMenuTriggerBase = DropdownMenuPrimitive.Trigger;
1018
+ var DropDownMenuGroupBase = DropdownMenuPrimitive.Group;
1019
+ var DropDownMenuPortalBase = DropdownMenuPrimitive.Portal;
1020
+ var DropDownMenuSubBase = DropdownMenuPrimitive.Sub;
1021
+ var DropDownMenuRadioGroupBase = DropdownMenuPrimitive.RadioGroup;
1022
+ var DropDownMenuSubTriggerBase = React10.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1023
+ DropdownMenuPrimitive.SubTrigger,
1024
+ {
1025
+ ref,
1026
+ className: cn(
1027
+ "flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1028
+ inset && "pl-8",
1029
+ className
1030
+ ),
1031
+ ...props,
1032
+ children: [
1033
+ children,
1034
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_phosphor_react5.CaretRight, { className: "ml-auto" })
1035
+ ]
1036
+ }
1037
+ ));
1038
+ DropDownMenuSubTriggerBase.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1039
+ var DropDownMenuSubContentBase = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1040
+ DropdownMenuPrimitive.SubContent,
1041
+ {
1042
+ ref,
1043
+ className: cn(
1044
+ "z-50 min-w-[8rem] 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",
1045
+ className
1046
+ ),
1047
+ ...props
1048
+ }
1049
+ ));
1050
+ DropDownMenuSubContentBase.displayName = DropdownMenuPrimitive.SubContent.displayName;
1051
+ var DropDownMenuContentBase = React10.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_framer_motion.AnimatePresence, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1052
+ DropdownMenuPrimitive.Content,
1053
+ {
1054
+ asChild: true,
1055
+ sideOffset,
1056
+ forceMount: true,
1057
+ ref,
1058
+ ...props,
1059
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1060
+ import_framer_motion.motion.div,
1061
+ {
1062
+ initial: { opacity: 0, scale: 0.95, y: 5 },
1063
+ animate: { opacity: 1, scale: 1, y: 0 },
1064
+ exit: { opacity: 0, scale: 0.95, y: 5 },
1065
+ transition: { duration: 0.2, ease: "easeOut" },
1066
+ className: cn(
1067
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
1068
+ className
1069
+ ),
1070
+ children: props.children
1071
+ }
1072
+ )
1073
+ }
1074
+ ) }) }));
1075
+ DropDownMenuContentBase.displayName = DropdownMenuPrimitive.Content.displayName;
1076
+ var DropDownMenuItemBase = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1077
+ DropdownMenuPrimitive.Item,
1078
+ {
1079
+ ref,
1080
+ className: cn(
1081
+ "relative flex cursor-default 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",
1082
+ inset && "pl-8",
1083
+ className
1084
+ ),
1085
+ ...props
1086
+ }
1087
+ ));
1088
+ DropDownMenuItemBase.displayName = DropdownMenuPrimitive.Item.displayName;
1089
+ var DropDownMenuCheckboxItemBase = React10.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1090
+ DropdownMenuPrimitive.CheckboxItem,
1091
+ {
1092
+ ref,
1093
+ className: cn(
1094
+ "relative flex cursor-default 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",
1095
+ className
1096
+ ),
1097
+ checked,
1098
+ ...props,
1099
+ children: [
1100
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_phosphor_react5.Check, { className: "h-4 w-4" }) }) }),
1101
+ children
1102
+ ]
1103
+ }
1104
+ ));
1105
+ DropDownMenuCheckboxItemBase.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1106
+ var DropDownMenuRadioItemBase = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1107
+ DropdownMenuPrimitive.RadioItem,
1108
+ {
1109
+ ref,
1110
+ className: cn(
1111
+ "relative flex cursor-default 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",
1112
+ className
1113
+ ),
1114
+ ...props,
1115
+ children: [
1116
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_phosphor_react5.Circle, { className: "h-2 w-2 fill-current" }) }) }),
1117
+ children
1118
+ ]
1119
+ }
1120
+ ));
1121
+ DropDownMenuRadioItemBase.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1122
+ var DropDownMenuLabelBase = React10.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1123
+ DropdownMenuPrimitive.Label,
1124
+ {
1125
+ ref,
1126
+ className: cn(
1127
+ "px-2 py-1.5 text-sm font-semibold",
1128
+ inset && "pl-8",
1129
+ className
1130
+ ),
1131
+ ...props
1132
+ }
1133
+ ));
1134
+ DropDownMenuLabelBase.displayName = DropdownMenuPrimitive.Label.displayName;
1135
+ var DropDownMenuSeparatorBase = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1136
+ DropdownMenuPrimitive.Separator,
1137
+ {
1138
+ ref,
1139
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1140
+ ...props
1141
+ }
1142
+ ));
1143
+ DropDownMenuSeparatorBase.displayName = DropdownMenuPrimitive.Separator.displayName;
1144
+ var DropDownMenuShortcutBase = ({
1145
+ className,
1146
+ ...props
1147
+ }) => {
1148
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1149
+ "span",
1150
+ {
1151
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1152
+ ...props
1153
+ }
1154
+ );
1155
+ };
1156
+ DropDownMenuShortcutBase.displayName = "DropDownMenuShortcutBase";
1157
+
1158
+ // src/components/theme-provider.tsx
1159
+ var import_react3 = require("react");
1160
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1161
+ var initialState = {
1162
+ theme: "system",
1163
+ setTheme: () => null
1164
+ };
1165
+ var ThemeProviderContext = (0, import_react3.createContext)(initialState);
1166
+ function ThemeProviderBase({
1167
+ children,
1168
+ defaultTheme = "system",
1169
+ storageKey = "vite-ui-theme",
1170
+ ...props
1171
+ }) {
1172
+ const [theme, setTheme] = (0, import_react3.useState)(() => defaultTheme || defaultTheme);
1173
+ (0, import_react3.useEffect)(() => {
1174
+ const root = window.document.documentElement;
1175
+ root.classList.remove(
1176
+ "light",
1177
+ "light-purple",
1178
+ "light-green",
1179
+ "light-blue",
1180
+ "dark",
1181
+ "dark-purple",
1182
+ "dark-green",
1183
+ "dark-blue",
1184
+ "system"
1185
+ );
1186
+ if (theme === "system") {
1187
+ const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
1188
+ root.classList.add(systemTheme);
1189
+ return;
1190
+ }
1191
+ root.classList.add(theme);
1192
+ }, [theme]);
1193
+ const value = {
1194
+ theme,
1195
+ setTheme: (theme2) => {
1196
+ localStorage.setItem(storageKey, theme2);
1197
+ setTheme(theme2);
1198
+ }
1199
+ };
1200
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ThemeProviderContext.Provider, { ...props, value, children });
1201
+ }
1202
+ var useTheme = () => {
1203
+ const context = (0, import_react3.useContext)(ThemeProviderContext);
1204
+ if (context === void 0)
1205
+ throw new Error("useTheme must be used within a ThemeProvider");
1206
+ return context;
1207
+ };
1208
+
1209
+ // src/components/mode-toggle.tsx
1210
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1211
+ var themeLabels = {
1212
+ light: "Light",
1213
+ dark: "Dark",
1214
+ system: "System",
1215
+ "light-purple": "Light Purple",
1216
+ "dark-purple": "Dark Purple",
1217
+ "light-blue": "Light Blue",
1218
+ "dark-blue": "Dark Blue",
1219
+ "light-green": "Light Green",
1220
+ "dark-green": "Dark Green"
1221
+ };
1222
+ function ModeToggleBase({
1223
+ themes = ["light", "dark", "system"]
1224
+ }) {
1225
+ const { setTheme, theme: currentTheme } = useTheme();
1226
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DropDownMenuBase, { children: [
1227
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropDownMenuTriggerBase, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1228
+ ButtonBase,
1229
+ {
1230
+ variant: "ghost",
1231
+ size: "icon",
1232
+ className: "relative overflow-hidden border-transparent",
1233
+ children: [
1234
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
1235
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_phosphor_react6.Sun, { className: "h-[1.2rem] w-[1.2rem] transition-transform duration-300 rotate-0 scale-100" }),
1236
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_phosphor_react6.Moon, { className: "absolute top-0 left-0 h-[1.2rem] w-[1.2rem] transition-transform duration-300 rotate-90 scale-0" })
1237
+ ] }),
1238
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "sr-only", children: "Toggle theme" })
1239
+ ]
1240
+ }
1241
+ ) }),
1242
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DropDownMenuContentBase, { align: "end", className: "dark:border-transparent", children: themes.map((theme) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1243
+ DropDownMenuItemBase,
1244
+ {
1245
+ onClick: () => setTheme(theme),
1246
+ className: "flex items-center justify-between",
1247
+ children: [
1248
+ themeLabels[theme],
1249
+ currentTheme === theme && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_phosphor_react6.Check, { className: "h-4 w-4 opacity-100" })
1250
+ ]
1251
+ },
1252
+ theme
1253
+ )) })
1254
+ ] });
1255
+ }
1256
+
1257
+ // src/components/selects/Combobox.tsx
1258
+ var import_react5 = require("react");
1259
+
1260
+ // src/components/ui/CommandBase.tsx
1261
+ var React11 = __toESM(require("react"));
1262
+ var import_cmdk = require("cmdk");
1263
+ var import_phosphor_react7 = require("phosphor-react");
1264
+ var import_framer_motion2 = require("framer-motion");
1265
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1266
+ var CommandBase = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1267
+ import_cmdk.Command,
1268
+ {
1269
+ ref,
1270
+ className: cn(
1271
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-background text-popover-foreground",
1272
+ className
1273
+ ),
1274
+ ...props
1275
+ }
1276
+ ));
1277
+ CommandBase.displayName = import_cmdk.Command.displayName;
1278
+ var dialogVariants = {
1279
+ hidden: { opacity: 0, scale: 0.95, y: -20 },
1280
+ visible: { opacity: 1, scale: 1, y: 0 },
1281
+ exit: { opacity: 0, scale: 0.95, y: -20 }
1282
+ };
1283
+ var CommandDialogBase = ({ children, open, ...props }) => {
1284
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DialogBase, { open, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_framer_motion2.AnimatePresence, { children: open && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DialogContentBase, { asChild: true, forceMount: true, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1285
+ import_framer_motion2.motion.div,
1286
+ {
1287
+ initial: "hidden",
1288
+ animate: "visible",
1289
+ exit: "exit",
1290
+ variants: dialogVariants,
1291
+ transition: { duration: 0.2, ease: "easeOut" },
1292
+ className: "overflow-hidden p-0",
1293
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CommandBase, { 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-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children })
1294
+ },
1295
+ "command-dialog"
1296
+ ) }) }) });
1297
+ };
1298
+ var CommandInputBase = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
1299
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_phosphor_react7.MagnifyingGlass, { className: "mr-2 h-4 w-4 shrink-0 text-primary" }),
1300
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1301
+ import_cmdk.Command.Input,
1302
+ {
1303
+ ref,
1304
+ className: cn(
1305
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none text-primary placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1306
+ className
1307
+ ),
1308
+ ...props
1309
+ }
1310
+ )
1311
+ ] }));
1312
+ CommandInputBase.displayName = import_cmdk.Command.Input.displayName;
1313
+ var CommandListBase = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1314
+ import_cmdk.Command.List,
1315
+ {
1316
+ ref,
1317
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
1318
+ ...props
1319
+ }
1320
+ ));
1321
+ CommandListBase.displayName = import_cmdk.Command.List.displayName;
1322
+ var CommandEmptyBase = React11.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
1323
+ CommandEmptyBase.displayName = import_cmdk.Command.Empty.displayName;
1324
+ var CommandGroupBase = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1325
+ import_cmdk.Command.Group,
1326
+ {
1327
+ ref,
1328
+ className: cn(
1329
+ "overflow-hidden p-1 text-foreground [&_[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",
1330
+ className
1331
+ ),
1332
+ ...props
1333
+ }
1334
+ ));
1335
+ CommandGroupBase.displayName = import_cmdk.Command.Group.displayName;
1336
+ var CommandSeparatorBase = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_cmdk.Command.Separator, { ref, className: cn("-mx-1 h-px bg-border", className), ...props }));
1337
+ CommandSeparatorBase.displayName = import_cmdk.Command.Separator.displayName;
1338
+ var CommandItemBase = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1339
+ import_cmdk.Command.Item,
1340
+ {
1341
+ ref,
1342
+ className: cn(
1343
+ "relative flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-all data-[disabled=true]:pointer-events-none data-[selected=true]:bg-primary data-[selected=true]:text-background data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:scale-[1.02] active:scale-[0.98]",
1344
+ className
1345
+ ),
1346
+ ...props
1347
+ }
1348
+ ));
1349
+ CommandItemBase.displayName = import_cmdk.Command.Item.displayName;
1350
+ var CommandShortcutBase = ({ className, ...props }) => {
1351
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
1352
+ };
1353
+ CommandShortcutBase.displayName = "CommandShortcut";
1354
+
1355
+ // src/components/ui/PopoverBase.tsx
1356
+ var React12 = __toESM(require("react"));
1357
+ var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"));
1358
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1359
+ var PopoverBase = PopoverPrimitive.Root;
1360
+ var PopoverTriggerBase = PopoverPrimitive.Trigger;
1361
+ var PopoverAnchorBase = PopoverPrimitive.Anchor;
1362
+ var PopoverContentBase = React12.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1363
+ PopoverPrimitive.Content,
1364
+ {
1365
+ ref,
1366
+ align,
1367
+ sideOffset,
1368
+ className: cn(
1369
+ "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",
1370
+ className
1371
+ ),
1372
+ ...props
1373
+ }
1374
+ ) }));
1375
+ PopoverContentBase.displayName = PopoverPrimitive.Content.displayName;
1376
+
1377
+ // src/components/selects/ComboboxBase.tsx
1378
+ var import_phosphor_react8 = require("phosphor-react");
1379
+ var import_react4 = require("react");
1380
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1381
+ function ComboboxBase({
1382
+ items,
1383
+ renderSelected,
1384
+ handleSelection,
1385
+ checkIsSelected,
1386
+ searchPlaceholder,
1387
+ errorMessage
1388
+ }) {
1389
+ const [open, setOpen] = (0, import_react4.useState)(false);
1390
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "col-span-1 w-full ", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(PopoverBase, { open, onOpenChange: setOpen, modal: true, children: [
1391
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverTriggerBase, { asChild: true, className: "flex w-full justify-between dark:bg-[hsl(231,15%,19%)]", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1392
+ ButtonBase,
1393
+ {
1394
+ variant: "outline",
1395
+ role: "combobox",
1396
+ "aria-expanded": open,
1397
+ children: [
1398
+ renderSelected,
1399
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_phosphor_react8.CaretDown, { size: 16 }) }),
1400
+ errorMessage && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-red-500", children: errorMessage })
1401
+ ]
1402
+ }
1403
+ ) }),
1404
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverContentBase, { className: "max-h-[--radix-popover-content-available-height] w-[--radix-popover-trigger-width] p-0", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CommandBase, { className: "dark:text-white", children: [
1405
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1406
+ CommandInputBase,
1407
+ {
1408
+ tabIndex: -1,
1409
+ placeholder: searchPlaceholder ?? "Busque uma op\xE7\xE3o..."
1410
+ }
1411
+ ),
1412
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CommandListBase, { children: [
1413
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CommandEmptyBase, { children: "Nenhum dado encontrado" }),
1414
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CommandGroupBase, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1415
+ CommandItemBase,
1416
+ {
1417
+ keywords: [item.label],
1418
+ value: item.value,
1419
+ onSelect: (value) => {
1420
+ handleSelection(value);
1421
+ setOpen(false);
1422
+ },
1423
+ children: [
1424
+ item.label,
1425
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1426
+ import_phosphor_react8.Check,
1427
+ {
1428
+ className: cn(
1429
+ "ml-auto",
1430
+ checkIsSelected(item.value) ? "opacity-100" : "opacity-0"
1431
+ )
1432
+ }
1433
+ )
1434
+ ]
1435
+ },
1436
+ item.value
1437
+ )) })
1438
+ ] })
1439
+ ] }) })
1440
+ ] }) });
1441
+ }
1442
+
1443
+ // src/components/selects/Combobox.tsx
1444
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1445
+ function Combobox({
1446
+ items,
1447
+ selected,
1448
+ onChange,
1449
+ placeholder,
1450
+ searchPlaceholder,
1451
+ label
1452
+ }) {
1453
+ const selectedItem = items.find((item) => item.value === selected);
1454
+ const renderSelected = (0, import_react5.useMemo)(
1455
+ () => selectedItem?.label ?? placeholder ?? "Selecione uma op\xE7\xE3o...",
1456
+ [placeholder, selectedItem]
1457
+ );
1458
+ const checkIsSelected = (0, import_react5.useCallback)(
1459
+ (value) => selected == null ? false : selected == value,
1460
+ [selected]
1461
+ );
1462
+ const handleSelection = (0, import_react5.useCallback)(
1463
+ (value) => {
1464
+ onChange(value === selected ? null : value);
1465
+ },
1466
+ [selected, onChange]
1467
+ );
1468
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
1469
+ label && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LabelBase_default, { children: label }),
1470
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1471
+ ComboboxBase,
1472
+ {
1473
+ items,
1474
+ renderSelected,
1475
+ handleSelection,
1476
+ checkIsSelected,
1477
+ searchPlaceholder
1478
+ }
1479
+ )
1480
+ ] });
1481
+ }
1482
+
1483
+ // src/components/selects/MultiCombobox.tsx
1484
+ var import_react6 = require("react");
1485
+ var import_phosphor_react9 = require("phosphor-react");
1486
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1487
+ function MultiCombobox({
1488
+ items,
1489
+ selected,
1490
+ onChange,
1491
+ placeholder,
1492
+ searchPlaceholder,
1493
+ label
1494
+ }) {
1495
+ const selectedItems = items.filter((item) => selected.includes(item.value));
1496
+ const checkIsSelected = (0, import_react6.useCallback)(
1497
+ (value) => selected.includes(value),
1498
+ [selected]
1499
+ );
1500
+ const handleSelection = (0, import_react6.useCallback)(
1501
+ (value) => {
1502
+ const isSelected = selected.includes(value);
1503
+ if (isSelected) {
1504
+ onChange(selected.filter((item) => item !== value));
1505
+ } else {
1506
+ onChange([...selected, value]);
1507
+ }
1508
+ },
1509
+ [selected, onChange]
1510
+ );
1511
+ const renderSelected = (0, import_react6.useMemo)(() => {
1512
+ if (selectedItems.length === 0)
1513
+ return placeholder ?? "Selecione uma op\xE7\xE3o...";
1514
+ const items2 = selectedItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1515
+ "div",
1516
+ {
1517
+ className: "flex items-center gap-1 rounded-md border p-1",
1518
+ children: [
1519
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "truncate whitespace-break-spaces text-xs", children: item.label }),
1520
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1521
+ import_phosphor_react9.X,
1522
+ {
1523
+ size: 14,
1524
+ onClick: (e) => {
1525
+ e.stopPropagation();
1526
+ handleSelection(item.value);
1527
+ },
1528
+ className: "cursor-pointer"
1529
+ }
1530
+ )
1531
+ ]
1532
+ },
1533
+ item.value
1534
+ ));
1535
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex flex-wrap gap-2", children: items2 });
1536
+ }, [handleSelection, placeholder, selectedItems]);
1537
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
1538
+ label && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(LabelBase_default, { children: label }),
1539
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1540
+ ComboboxBase,
1541
+ {
1542
+ items,
1543
+ renderSelected,
1544
+ handleSelection,
1545
+ checkIsSelected,
1546
+ searchPlaceholder
1547
+ }
1548
+ )
1549
+ ] });
1550
+ }
1551
+
1552
+ // src/components/ui/SelectBase.tsx
1553
+ var React13 = __toESM(require("react"));
1554
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"));
1555
+ var import_phosphor_react10 = require("phosphor-react");
1556
+ var import_framer_motion3 = require("framer-motion");
1557
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1558
+ var SelectBase = SelectPrimitive.Root;
1559
+ var SelectGroupBase = SelectPrimitive.Group;
1560
+ var SelectValueBase = SelectPrimitive.Value;
1561
+ var SelectTriggerBase = React13.forwardRef(({ className, children, open, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1562
+ SelectPrimitive.Trigger,
1563
+ {
1564
+ ref,
1565
+ className: cn(
1566
+ "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 placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
1567
+ className
1568
+ ),
1569
+ ...props,
1570
+ children: [
1571
+ children,
1572
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1573
+ import_framer_motion3.motion.span,
1574
+ {
1575
+ animate: { rotate: open ? 180 : 0 },
1576
+ transition: { duration: 0.3 },
1577
+ className: "flex items-center",
1578
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_phosphor_react10.CaretDown, { className: "h-4 w-4 opacity-50" })
1579
+ }
1580
+ )
1581
+ ]
1582
+ }
1583
+ ));
1584
+ SelectTriggerBase.displayName = SelectPrimitive.Trigger.displayName;
1585
+ var SelectScrollUpButtonBase = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1586
+ SelectPrimitive.ScrollUpButton,
1587
+ {
1588
+ ref,
1589
+ className: cn(
1590
+ "flex cursor-default items-center justify-center py-1",
1591
+ className
1592
+ ),
1593
+ ...props,
1594
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_phosphor_react10.CaretUp, { className: "h-4 w-4" })
1595
+ }
1596
+ ));
1597
+ SelectScrollUpButtonBase.displayName = SelectPrimitive.ScrollUpButton.displayName;
1598
+ var SelectScrollDownButtonBase = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1599
+ SelectPrimitive.ScrollDownButton,
1600
+ {
1601
+ ref,
1602
+ className: cn(
1603
+ "flex cursor-default items-center justify-center py-1",
1604
+ className
1605
+ ),
1606
+ ...props,
1607
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_phosphor_react10.CaretDown, { className: "h-4 w-4" })
1608
+ }
1609
+ ));
1610
+ SelectScrollDownButtonBase.displayName = SelectPrimitive.ScrollDownButton.displayName;
1611
+ var SelectContentBase = React13.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_framer_motion3.AnimatePresence, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1612
+ SelectPrimitive.Content,
1613
+ {
1614
+ ref,
1615
+ className: cn(
1616
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",
1617
+ className
1618
+ ),
1619
+ position,
1620
+ ...props,
1621
+ asChild: true,
1622
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1623
+ import_framer_motion3.motion.div,
1624
+ {
1625
+ initial: { opacity: 0, scale: 0.95 },
1626
+ animate: { opacity: 1, scale: 1 },
1627
+ exit: { opacity: 0, scale: 0.95 },
1628
+ transition: { duration: 0.2 },
1629
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1630
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectScrollUpButtonBase, {}),
1631
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1632
+ SelectPrimitive.Viewport,
1633
+ {
1634
+ className: cn(
1635
+ "p-1",
1636
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1637
+ ),
1638
+ children
1639
+ }
1640
+ ),
1641
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectScrollDownButtonBase, {})
1642
+ ] })
1643
+ }
1644
+ )
1645
+ }
1646
+ ) }) }));
1647
+ SelectContentBase.displayName = SelectPrimitive.Content.displayName;
1648
+ var SelectLabelBase = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1649
+ SelectPrimitive.Label,
1650
+ {
1651
+ ref,
1652
+ className: cn("px-2 py-1.5 text-sm font-semibold", className),
1653
+ ...props
1654
+ }
1655
+ ));
1656
+ SelectLabelBase.displayName = SelectPrimitive.Label.displayName;
1657
+ var SelectItemBase = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1658
+ SelectPrimitive.Item,
1659
+ {
1660
+ ref,
1661
+ className: cn(
1662
+ "relative flex w-full cursor-default 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",
1663
+ className
1664
+ ),
1665
+ ...props,
1666
+ children: [
1667
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_phosphor_react10.Check, { className: "h-4 w-4" }) }) }),
1668
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.ItemText, { children })
1669
+ ]
1670
+ }
1671
+ ));
1672
+ SelectItemBase.displayName = SelectPrimitive.Item.displayName;
1673
+ var SelectSeparatorBase = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1674
+ SelectPrimitive.Separator,
1675
+ {
1676
+ ref,
1677
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1678
+ ...props
1679
+ }
1680
+ ));
1681
+ SelectSeparatorBase.displayName = SelectPrimitive.Separator.displayName;
1682
+
1683
+ // src/components/ui/ScrollareaBase.tsx
1684
+ var React14 = __toESM(require("react"));
1685
+ var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"));
1686
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1687
+ var ScrollAreaBase = React14.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1688
+ ScrollAreaPrimitive.Root,
1689
+ {
1690
+ ref,
1691
+ className: cn("relative overflow-hidden", className),
1692
+ ...props,
1693
+ children: [
1694
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
1695
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollBarBase, {}),
1696
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollAreaPrimitive.Corner, {})
1697
+ ]
1698
+ }
1699
+ ));
1700
+ ScrollAreaBase.displayName = ScrollAreaPrimitive.Root.displayName;
1701
+ var ScrollBarBase = React14.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1702
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
1703
+ {
1704
+ ref,
1705
+ orientation,
1706
+ className: cn(
1707
+ "flex touch-none select-none transition-colors",
1708
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
1709
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
1710
+ className
1711
+ ),
1712
+ ...props,
1713
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1714
+ }
1715
+ ));
1716
+ ScrollBarBase.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
1717
+
1718
+ // src/components/selects/Select.tsx
1719
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1720
+ function Select({
1721
+ items,
1722
+ groupItems,
1723
+ placeholder,
1724
+ onChange,
1725
+ errorMessage
1726
+ }) {
1727
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
1728
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(SelectBase, { onValueChange: onChange, children: [
1729
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1730
+ SelectTriggerBase,
1731
+ {
1732
+ className: cn(
1733
+ "flex h-12 w-full content-start text-lg shadow-md",
1734
+ errorMessage && "border-red-500"
1735
+ ),
1736
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectValueBase, { placeholder })
1737
+ }
1738
+ ),
1739
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ScrollAreaBase, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectContentBase, { children: groupItems ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children: Object.keys(groupItems).map((key) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(SelectGroupBase, { children: [
1740
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectLabelBase, { children: key }),
1741
+ groupItems[key].map((item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectItemBase, { value: item.value, children: item.label }, item.value))
1742
+ ] }, key)) }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectGroupBase, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectItemBase, { value: item.value, children: item.label }, item.value)) }) }) })
1743
+ ] }),
1744
+ errorMessage && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "text-sm text-red-500", children: errorMessage })
1745
+ ] });
1746
+ }
1747
+
1748
+ // src/components/ui/CalendarBase.tsx
1749
+ var import_phosphor_react11 = require("phosphor-react");
1750
+ var import_react_day_picker2 = require("react-day-picker");
1751
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1752
+ function CalendarBase2({
1753
+ className,
1754
+ classNames,
1755
+ showOutsideDays = true,
1756
+ ...props
1757
+ }) {
1758
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1759
+ import_react_day_picker2.DayPicker,
1760
+ {
1761
+ showOutsideDays,
1762
+ className: cn("bg-black-50 p-3", className),
1763
+ classNames: {
1764
+ months: "flex items-center flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
1765
+ month: "space-y-4",
1766
+ caption: "flex justify-center pt-1 relative items-center",
1767
+ caption_label: "text-sm font-medium",
1768
+ nav: "space-x-1 flex items-center",
1769
+ nav_button: cn(
1770
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ButtonBase, { variant: "outline" }),
1771
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
1772
+ ),
1773
+ nav_button_previous: "absolute left-1",
1774
+ nav_button_next: "absolute right-1",
1775
+ table: "w-full border-collapse space-y-1",
1776
+ head_row: "flex",
1777
+ head_cell: "text-slate-500 rounded-md w-9 font-normal text-[0.8rem] dark:text-slate-400",
1778
+ row: "flex w-full mt-2",
1779
+ cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-slate-100/50 [&:has([aria-selected])]:bg-slate-100 first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20 dark:[&:has([aria-selected].day-outside)]:bg-slate-800/50 dark:[&:has([aria-selected])]:bg-slate-800",
1780
+ day: cn(
1781
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ButtonBase, { variant: "ghost" }),
1782
+ "h-9 w-9 p-0 font-normal aria-selected:opacity-100"
1783
+ ),
1784
+ day_range_end: "day-range-end",
1785
+ day_selected: "bg-purple text-slate-50 hover:bg-slate-900 hover:text-slate-50 focus:bg-purple-500 focus:text-slate-50 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50 dark:hover:text-slate-900 dark:focus:bg-slate-50 dark:focus:text-slate-900",
1786
+ day_today: "bg-slate-100 text-slate-900 dark:bg-slate-800 dark:text-slate-50",
1787
+ day_outside: "day-outside text-slate-500 opacity-50 aria-selected:bg-slate-100/50 aria-selected:text-slate-500 aria-selected:opacity-30 dark:text-slate-400 dark:aria-selected:bg-slate-800/50 dark:aria-selected:text-slate-400",
1788
+ day_disabled: "text-slate-500 opacity-50 dark:text-slate-400",
1789
+ day_range_middle: "aria-selected:bg-slate-100 aria-selected:text-slate-900 dark:aria-selected:bg-slate-800 dark:aria-selected:text-slate-50",
1790
+ day_hidden: "invisible",
1791
+ ...classNames
1792
+ },
1793
+ components: {
1794
+ IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_phosphor_react11.CaretLeft, { className: "h-4 w-4" }),
1795
+ IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_phosphor_react11.CaretRight, { className: "h-4 w-4" })
1796
+ },
1797
+ ...props
1798
+ }
1799
+ );
1800
+ }
1801
+ CalendarBase2.displayName = "CalendarBase";
1802
+
1803
+ // src/components/ui/CardBase.tsx
1804
+ var React15 = __toESM(require("react"));
1805
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1806
+ var CardBase = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1807
+ "div",
1808
+ {
1809
+ ref,
1810
+ className: cn(
1811
+ "rounded-xl border bg-card text-card-foreground shadow",
1812
+ className
1813
+ ),
1814
+ ...props
1815
+ }
1816
+ ));
1817
+ CardBase.displayName = "Card";
1818
+ var CardHeaderBase = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1819
+ "div",
1820
+ {
1821
+ ref,
1822
+ className: cn("flex flex-col space-y-1.5 p-6", className),
1823
+ ...props
1824
+ }
1825
+ ));
1826
+ CardHeaderBase.displayName = "CardHeader";
1827
+ var CardTitleBase = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1828
+ "div",
1829
+ {
1830
+ ref,
1831
+ className: cn("font-semibold leading-none tracking-tight", className),
1832
+ ...props
1833
+ }
1834
+ ));
1835
+ CardTitleBase.displayName = "CardTitle";
1836
+ var CardDescriptionBase = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1837
+ "div",
1838
+ {
1839
+ ref,
1840
+ className: cn("text-sm text-muted-foreground", className),
1841
+ ...props
1842
+ }
1843
+ ));
1844
+ CardDescriptionBase.displayName = "CardDescription";
1845
+ var CardContentBase = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { ref, className: cn("p-6 pt-0", className), ...props }));
1846
+ CardContentBase.displayName = "CardContent";
1847
+ var CardFooterBase = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1848
+ "div",
1849
+ {
1850
+ ref,
1851
+ className: cn("flex items-center p-6 pt-0", className),
1852
+ ...props
1853
+ }
1854
+ ));
1855
+ CardFooterBase.displayName = "CardFooter";
1856
+
1857
+ // src/components/ui/CheckBoxBase.tsx
1858
+ var React16 = __toESM(require("react"));
1859
+ var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
1860
+ var import_phosphor_react12 = require("phosphor-react");
1861
+ var import_framer_motion4 = require("framer-motion");
1862
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1863
+ var CheckboxBase = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1864
+ CheckboxPrimitive.Root,
1865
+ {
1866
+ ref,
1867
+ className: cn(
1868
+ "peer h-4 w-4 shrink-0 rounded-md border border-primary shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground transition-colors",
1869
+ className
1870
+ ),
1871
+ ...props,
1872
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CheckboxPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1873
+ import_framer_motion4.motion.div,
1874
+ {
1875
+ initial: { scale: 0, opacity: 0, rotate: -90 },
1876
+ animate: { scale: 1, opacity: 1, rotate: 0 },
1877
+ exit: { scale: 0, opacity: 0, rotate: 90 },
1878
+ transition: { type: "spring", stiffness: 500, damping: 30 },
1879
+ className: "flex items-center justify-center text-current",
1880
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_phosphor_react12.Check, { className: "h-4 w-4", weight: "bold" })
1881
+ }
1882
+ ) })
1883
+ }
1884
+ ));
1885
+ CheckboxBase.displayName = CheckboxPrimitive.Root.displayName;
1886
+
1887
+ // src/components/ui/FormBase.tsx
1888
+ var React17 = __toESM(require("react"));
1889
+ var import_react_slot3 = require("@radix-ui/react-slot");
1890
+ var import_react_hook_form = require("react-hook-form");
1891
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1892
+ var FormBase = import_react_hook_form.FormProvider;
1893
+ var FormFieldBaseContext = React17.createContext(
1894
+ {}
1895
+ );
1896
+ var FormFieldBase = ({
1897
+ ...props
1898
+ }) => {
1899
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FormFieldBaseContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_hook_form.Controller, { ...props }) });
1900
+ };
1901
+ var useFormFieldBase = () => {
1902
+ const fieldContext = React17.useContext(FormFieldBaseContext);
1903
+ const itemContext = React17.useContext(FormItemBaseContext);
1904
+ const { getFieldState, formState } = (0, import_react_hook_form.useFormContext)();
1905
+ const fieldState = getFieldState(fieldContext.name, formState);
1906
+ if (!fieldContext) {
1907
+ throw new Error("useFormFieldBase should be used within <FormFieldBase>");
1908
+ }
1909
+ const { id } = itemContext;
1910
+ return {
1911
+ id,
1912
+ name: fieldContext.name,
1913
+ FormItemId: `${id}-form-item`,
1914
+ FormDescriptionId: `${id}-form-item-description`,
1915
+ FormMessageId: `${id}-form-item-message`,
1916
+ ...fieldState
1917
+ };
1918
+ };
1919
+ var FormItemBaseContext = React17.createContext(
1920
+ {}
1921
+ );
1922
+ var FormItemBase = React17.forwardRef(({ className, ...props }, ref) => {
1923
+ const id = React17.useId();
1924
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FormItemBaseContext.Provider, { value: { id }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { ref, className: cn("space-y-2", className), ...props }) });
1925
+ });
1926
+ FormItemBase.displayName = "FormItemBase";
1927
+ var FormLabelBase = React17.forwardRef(
1928
+ ({ className, ...props }, ref) => {
1929
+ const { error, FormItemId } = useFormFieldBase();
1930
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1931
+ LabelBase_default,
1932
+ {
1933
+ ref,
1934
+ className: cn(error && "text-destructive", className),
1935
+ htmlFor: FormItemId,
1936
+ ...props
1937
+ }
1938
+ );
1939
+ }
1940
+ );
1941
+ FormLabelBase.displayName = "FormLabelBase";
1942
+ var FormControlBase = React17.forwardRef(({ ...props }, ref) => {
1943
+ const { error, FormItemId, FormDescriptionId, FormMessageId } = useFormFieldBase();
1944
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1945
+ import_react_slot3.Slot,
1946
+ {
1947
+ ref,
1948
+ id: FormItemId,
1949
+ "aria-describedby": !error ? `${FormDescriptionId}` : `${FormDescriptionId} ${FormMessageId}`,
1950
+ "aria-invalid": !!error,
1951
+ ...props
1952
+ }
1953
+ );
1954
+ });
1955
+ FormControlBase.displayName = "FormControlBase";
1956
+ var FormDescriptionBase = React17.forwardRef(({ className, ...props }, ref) => {
1957
+ const { FormDescriptionId } = useFormFieldBase();
1958
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1959
+ "p",
1960
+ {
1961
+ ref,
1962
+ id: FormDescriptionId,
1963
+ className: cn("text-[0.8rem] text-muted-foreground", className),
1964
+ ...props
1965
+ }
1966
+ );
1967
+ });
1968
+ FormDescriptionBase.displayName = "FormDescriptionBase";
1969
+ var FormMessageBase = React17.forwardRef(({ className, children, ...props }, ref) => {
1970
+ const { error, FormMessageId } = useFormFieldBase();
1971
+ const body = error ? String(error?.message) : children;
1972
+ if (!body) {
1973
+ return null;
1974
+ }
1975
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1976
+ "p",
1977
+ {
1978
+ ref,
1979
+ id: FormMessageId,
1980
+ className: cn("text-[0.8rem] font-medium text-destructive", className),
1981
+ ...props,
1982
+ children: body
1983
+ }
1984
+ );
1985
+ });
1986
+ FormMessageBase.displayName = "FormMessageBase";
1987
+
1988
+ // src/components/ui/ProgressBase.tsx
1989
+ var React18 = __toESM(require("react"));
1990
+ var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
1991
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1992
+ var ProgressBase = React18.forwardRef(
1993
+ ({
1994
+ className,
1995
+ value,
1996
+ label,
1997
+ leftIcon,
1998
+ rightIcon,
1999
+ showValue = false,
2000
+ ...props
2001
+ }, ref) => {
2002
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
2003
+ label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LabelBase_default, { className: "py-2", children: label }),
2004
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-2", children: [
2005
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center", children: leftIcon }),
2006
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "relative w-full", children: [
2007
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2008
+ ProgressPrimitive.Root,
2009
+ {
2010
+ ref,
2011
+ className: cn(
2012
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
2013
+ className
2014
+ ),
2015
+ value,
2016
+ ...props,
2017
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2018
+ ProgressPrimitive.Indicator,
2019
+ {
2020
+ className: "h-full w-full flex-1 bg-primary transition-all ",
2021
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
2022
+ }
2023
+ )
2024
+ }
2025
+ ),
2026
+ showValue && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "absolute right-2 top-1/2 -translate-y-1/2 text-xs text-muted-foreground", children: [
2027
+ Math.round(value ?? 0),
2028
+ "%"
2029
+ ] })
2030
+ ] }),
2031
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex items-center", children: rightIcon })
2032
+ ] })
2033
+ ] });
2034
+ }
2035
+ );
2036
+ ProgressBase.displayName = "ProgressBase";
2037
+
2038
+ // src/components/ui/SeparatorBase.tsx
2039
+ var React19 = __toESM(require("react"));
2040
+ var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"));
2041
+ var import_framer_motion5 = require("framer-motion");
2042
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2043
+ var SeparatorBase = React19.forwardRef(
2044
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => {
2045
+ const isHorizontal = orientation === "horizontal";
2046
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2047
+ SeparatorPrimitive.Root,
2048
+ {
2049
+ ref,
2050
+ decorative,
2051
+ orientation,
2052
+ asChild: true,
2053
+ ...props,
2054
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2055
+ import_framer_motion5.motion.div,
2056
+ {
2057
+ className: cn(
2058
+ "shrink-0 bg-border",
2059
+ isHorizontal ? "h-[1px] w-full" : "h-full w-[1px]",
2060
+ className
2061
+ ),
2062
+ initial: { scaleX: isHorizontal ? 0 : 1, scaleY: isHorizontal ? 1 : 0 },
2063
+ animate: { scaleX: 1, scaleY: 1 },
2064
+ transition: { duration: 0.2, ease: "easeInOut" }
2065
+ }
2066
+ )
2067
+ }
2068
+ );
2069
+ }
2070
+ );
2071
+ SeparatorBase.displayName = SeparatorPrimitive.Root.displayName;
2072
+
2073
+ // src/components/ui/SheetBase.tsx
2074
+ var React20 = __toESM(require("react"));
2075
+ var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"));
2076
+ var import_class_variance_authority2 = require("class-variance-authority");
2077
+ var import_phosphor_react13 = require("phosphor-react");
2078
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2079
+ var SheetBase = SheetPrimitive.Root;
2080
+ var SheetTriggerBase = SheetPrimitive.Trigger;
2081
+ var SheetCloseBase = SheetPrimitive.Close;
2082
+ var SheetPortalBase = SheetPrimitive.Portal;
2083
+ var SheetOverlayBase = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2084
+ SheetPrimitive.Overlay,
2085
+ {
2086
+ className: cn(
2087
+ "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",
2088
+ className
2089
+ ),
2090
+ ...props,
2091
+ ref
2092
+ }
2093
+ ));
2094
+ SheetOverlayBase.displayName = SheetPrimitive.Overlay.displayName;
2095
+ var sheetVariants = (0, import_class_variance_authority2.cva)(
2096
+ "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",
2097
+ {
2098
+ variants: {
2099
+ side: {
2100
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2101
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2102
+ 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",
2103
+ 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"
2104
+ }
2105
+ },
2106
+ defaultVariants: {
2107
+ side: "right"
2108
+ }
2109
+ }
2110
+ );
2111
+ var SheetContentBase = React20.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(SheetPortalBase, { children: [
2112
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SheetOverlayBase, {}),
2113
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2114
+ SheetPrimitive.Content,
2115
+ {
2116
+ ref,
2117
+ className: cn(sheetVariants({ side }), className),
2118
+ ...props,
2119
+ children: [
2120
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background 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: [
2121
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_phosphor_react13.X, { className: "h-4 w-4" }),
2122
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "sr-only", children: "Close" })
2123
+ ] }),
2124
+ children
2125
+ ]
2126
+ }
2127
+ )
2128
+ ] }));
2129
+ SheetContentBase.displayName = SheetPrimitive.Content.displayName;
2130
+ var SheetHeaderBase = ({
2131
+ className,
2132
+ ...props
2133
+ }) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2134
+ "div",
2135
+ {
2136
+ className: cn(
2137
+ "flex flex-col space-y-2 text-center sm:text-left",
2138
+ className
2139
+ ),
2140
+ ...props
2141
+ }
2142
+ );
2143
+ SheetHeaderBase.displayName = "SheetHeaderBase";
2144
+ var SheetFooterBase = ({
2145
+ className,
2146
+ ...props
2147
+ }) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2148
+ "div",
2149
+ {
2150
+ className: cn(
2151
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2152
+ className
2153
+ ),
2154
+ ...props
2155
+ }
2156
+ );
2157
+ SheetFooterBase.displayName = "SheetFooterBase";
2158
+ var SheetTitleBase = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2159
+ SheetPrimitive.Title,
2160
+ {
2161
+ ref,
2162
+ className: cn("text-lg font-semibold text-foreground", className),
2163
+ ...props
2164
+ }
2165
+ ));
2166
+ SheetTitleBase.displayName = SheetPrimitive.Title.displayName;
2167
+ var SheetDescriptionBase = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2168
+ SheetPrimitive.Description,
2169
+ {
2170
+ ref,
2171
+ className: cn("text-sm text-muted-foreground", className),
2172
+ ...props
2173
+ }
2174
+ ));
2175
+ SheetDescriptionBase.displayName = SheetPrimitive.Description.displayName;
2176
+
2177
+ // src/components/ui/SidebarBase.tsx
2178
+ var React22 = __toESM(require("react"));
2179
+ var import_react_slot4 = require("@radix-ui/react-slot");
2180
+ var import_class_variance_authority3 = require("class-variance-authority");
2181
+
2182
+ // src/components/ui/SkeletonBase.tsx
2183
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2184
+ function SkeletonBase({
2185
+ className,
2186
+ ...props
2187
+ }) {
2188
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2189
+ "div",
2190
+ {
2191
+ className: cn("animate-pulse bg-primary/10", className),
2192
+ ...props
2193
+ }
2194
+ );
2195
+ }
2196
+
2197
+ // src/components/ui/SidebarBase.tsx
2198
+ var import_phosphor_react14 = require("phosphor-react");
2199
+
2200
+ // src/components/ui/TooltipBase.tsx
2201
+ var React21 = __toESM(require("react"));
2202
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
2203
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2204
+ var TooltipProviderBase = TooltipPrimitive.Provider;
2205
+ var TooltipBase = TooltipPrimitive.Root;
2206
+ var TooltipTriggerBase = TooltipPrimitive.Trigger;
2207
+ var TooltipContentBase = React21.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2208
+ TooltipPrimitive.Content,
2209
+ {
2210
+ ref,
2211
+ sideOffset,
2212
+ className: cn(
2213
+ "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",
2214
+ className
2215
+ ),
2216
+ ...props
2217
+ }
2218
+ ) }));
2219
+ TooltipContentBase.displayName = TooltipPrimitive.Content.displayName;
2220
+
2221
+ // src/components/ui/SidebarBase.tsx
2222
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2223
+ var SIDEBAR_COOKIE_NAME = "sidebar:state";
2224
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
2225
+ var SIDEBAR_WIDTH = "16rem";
2226
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
2227
+ var SIDEBAR_WIDTH_ICON = "3rem";
2228
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
2229
+ var SidebarContext = React22.createContext(null);
2230
+ function UseSideBarBase() {
2231
+ const context = React22.useContext(SidebarContext);
2232
+ if (!context) {
2233
+ throw new Error(
2234
+ "UseSideBarBase must be used within a SidebarProviderBase."
2235
+ );
2236
+ }
2237
+ return context;
2238
+ }
2239
+ var SidebarProviderBase = React22.forwardRef(
2240
+ ({
2241
+ defaultOpen = true,
2242
+ open: openProp,
2243
+ onOpenChange: setOpenProp,
2244
+ className,
2245
+ style,
2246
+ children,
2247
+ ...props
2248
+ }, ref) => {
2249
+ const isMobile = useIsMobile();
2250
+ const [openMobile, setOpenMobile] = React22.useState(false);
2251
+ const [_open, _setOpen] = React22.useState(defaultOpen);
2252
+ const open = openProp ?? _open;
2253
+ const setOpen = React22.useCallback(
2254
+ (value) => {
2255
+ const openState = typeof value === "function" ? value(open) : value;
2256
+ if (setOpenProp) {
2257
+ setOpenProp(openState);
2258
+ } else {
2259
+ _setOpen(openState);
2260
+ }
2261
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
2262
+ },
2263
+ [setOpenProp, open]
2264
+ );
2265
+ const toggleSidebar = React22.useCallback(() => {
2266
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
2267
+ }, [isMobile, setOpen, setOpenMobile]);
2268
+ React22.useEffect(() => {
2269
+ const handleKeyDown = (event) => {
2270
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
2271
+ event.preventDefault();
2272
+ toggleSidebar();
2273
+ }
2274
+ };
2275
+ window.addEventListener("keydown", handleKeyDown);
2276
+ return () => window.removeEventListener("keydown", handleKeyDown);
2277
+ }, [toggleSidebar]);
2278
+ const state = open ? "expanded" : "collapsed";
2279
+ const contextValue = React22.useMemo(
2280
+ () => ({
2281
+ state,
2282
+ open,
2283
+ setOpen,
2284
+ isMobile,
2285
+ openMobile,
2286
+ setOpenMobile,
2287
+ toggleSidebar
2288
+ }),
2289
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
2290
+ );
2291
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipProviderBase, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2292
+ "div",
2293
+ {
2294
+ style: {
2295
+ "--sidebar-width": SIDEBAR_WIDTH,
2296
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
2297
+ ...style
2298
+ },
2299
+ className: cn(
2300
+ "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
2301
+ className
2302
+ ),
2303
+ ref,
2304
+ ...props,
2305
+ children
2306
+ }
2307
+ ) }) });
2308
+ }
2309
+ );
2310
+ SidebarProviderBase.displayName = "SidebarProviderBase";
2311
+ var SidebarBase = React22.forwardRef(
2312
+ ({
2313
+ side = "left",
2314
+ variant = "sidebar",
2315
+ collapsible = "offcanvas",
2316
+ className,
2317
+ children,
2318
+ ...props
2319
+ }, ref) => {
2320
+ const { isMobile, state, openMobile, setOpenMobile } = UseSideBarBase();
2321
+ if (collapsible === "none") {
2322
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2323
+ "div",
2324
+ {
2325
+ className: cn(
2326
+ "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
2327
+ className
2328
+ ),
2329
+ ref,
2330
+ ...props,
2331
+ children
2332
+ }
2333
+ );
2334
+ }
2335
+ if (isMobile) {
2336
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SheetBase, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2337
+ SheetContentBase,
2338
+ {
2339
+ "data-sidebar": "sidebar",
2340
+ "data-mobile": "true",
2341
+ className: "w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
2342
+ style: {
2343
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
2344
+ },
2345
+ side,
2346
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "flex h-full w-full flex-col", children })
2347
+ }
2348
+ ) });
2349
+ }
2350
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2351
+ "div",
2352
+ {
2353
+ ref,
2354
+ className: "group peer hidden text-sidebar-foreground md:block",
2355
+ "data-state": state,
2356
+ "data-collapsible": state === "collapsed" ? collapsible : "",
2357
+ "data-variant": variant,
2358
+ "data-side": side,
2359
+ children: [
2360
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2361
+ "div",
2362
+ {
2363
+ className: cn(
2364
+ "relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear",
2365
+ "group-data-[collapsible=offcanvas]:w-0",
2366
+ "group-data-[side=right]:rotate-180",
2367
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]"
2368
+ )
2369
+ }
2370
+ ),
2371
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2372
+ "div",
2373
+ {
2374
+ className: cn(
2375
+ "fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex",
2376
+ side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
2377
+ // Adjust the padding for floating and inset variants.
2378
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",
2379
+ className
2380
+ ),
2381
+ ...props,
2382
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2383
+ "div",
2384
+ {
2385
+ "data-sidebar": "sidebar",
2386
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
2387
+ children
2388
+ }
2389
+ )
2390
+ }
2391
+ )
2392
+ ]
2393
+ }
2394
+ );
2395
+ }
2396
+ );
2397
+ SidebarBase.displayName = "SidebarBase";
2398
+ var SidebarTriggerBase = React22.forwardRef(({ className, onClick, ...props }, ref) => {
2399
+ const { toggleSidebar } = UseSideBarBase();
2400
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2401
+ ButtonBase,
2402
+ {
2403
+ ref,
2404
+ "data-sidebar": "trigger",
2405
+ variant: "ghost",
2406
+ size: "icon",
2407
+ className: cn("h-7 w-7", className),
2408
+ onClick: (event) => {
2409
+ onClick?.(event);
2410
+ toggleSidebar();
2411
+ },
2412
+ ...props,
2413
+ children: [
2414
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "sr-only", children: "Toggle SidebarBase" }),
2415
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_phosphor_react14.SidebarSimple, {})
2416
+ ]
2417
+ }
2418
+ ) });
2419
+ });
2420
+ SidebarTriggerBase.displayName = "SidebarTriggerBase";
2421
+ var SidebarRailBase = React22.forwardRef(({ className, ...props }, ref) => {
2422
+ const { toggleSidebar } = UseSideBarBase();
2423
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2424
+ "button",
2425
+ {
2426
+ ref,
2427
+ "data-sidebar": "rail",
2428
+ "aria-label": "Toggle SidebarBase",
2429
+ tabIndex: -1,
2430
+ onClick: toggleSidebar,
2431
+ title: "Toggle SidebarBase",
2432
+ className: cn(
2433
+ "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",
2434
+ "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
2435
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
2436
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
2437
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
2438
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
2439
+ className
2440
+ ),
2441
+ ...props
2442
+ }
2443
+ );
2444
+ });
2445
+ SidebarRailBase.displayName = "SidebarRailBase";
2446
+ var SidebarInsetBase = React22.forwardRef(({ className, ...props }, ref) => {
2447
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2448
+ "main",
2449
+ {
2450
+ ref,
2451
+ className: cn(
2452
+ "relative flex min-h-svh flex-1 flex-col bg-background",
2453
+ "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] 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",
2454
+ className
2455
+ ),
2456
+ ...props
2457
+ }
2458
+ );
2459
+ });
2460
+ SidebarInsetBase.displayName = "SidebarInsetBase";
2461
+ var SidebarInputBase = React22.forwardRef(({ className, ...props }, ref) => {
2462
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2463
+ InputBase,
2464
+ {
2465
+ ref,
2466
+ "data-sidebar": "input",
2467
+ className: cn(
2468
+ "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
2469
+ className
2470
+ ),
2471
+ ...props
2472
+ }
2473
+ );
2474
+ });
2475
+ SidebarInputBase.displayName = "SidebarInputBase";
2476
+ var SidebarHeaderBase = React22.forwardRef(({ className, ...props }, ref) => {
2477
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2478
+ "div",
2479
+ {
2480
+ ref,
2481
+ "data-sidebar": "header",
2482
+ className: cn("flex flex-col gap-2 p-2", className),
2483
+ ...props
2484
+ }
2485
+ );
2486
+ });
2487
+ SidebarHeaderBase.displayName = "SidebarHeaderBase";
2488
+ var SidebarFooterBase = React22.forwardRef(({ className, ...props }, ref) => {
2489
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2490
+ "div",
2491
+ {
2492
+ ref,
2493
+ "data-sidebar": "footer",
2494
+ className: cn("flex flex-col gap-2 p-2", className),
2495
+ ...props
2496
+ }
2497
+ );
2498
+ });
2499
+ SidebarFooterBase.displayName = "SidebarFooterBase";
2500
+ var SidebarSeparatorBase = React22.forwardRef(({ className, ...props }, ref) => {
2501
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2502
+ SeparatorBase,
2503
+ {
2504
+ ref,
2505
+ "data-sidebar": "separator",
2506
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
2507
+ ...props
2508
+ }
2509
+ );
2510
+ });
2511
+ SidebarSeparatorBase.displayName = "SidebarSeparatorBase";
2512
+ var SidebarContentBase = React22.forwardRef(({ className, ...props }, ref) => {
2513
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2514
+ "div",
2515
+ {
2516
+ ref,
2517
+ "data-sidebar": "content",
2518
+ className: cn(
2519
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
2520
+ className
2521
+ ),
2522
+ ...props
2523
+ }
2524
+ );
2525
+ });
2526
+ SidebarContentBase.displayName = "SidebarContentBase";
2527
+ var SidebarGroupBase = React22.forwardRef(({ className, ...props }, ref) => {
2528
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2529
+ "div",
2530
+ {
2531
+ ref,
2532
+ "data-sidebar": "group",
2533
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
2534
+ ...props
2535
+ }
2536
+ );
2537
+ });
2538
+ SidebarGroupBase.displayName = "SidebarGroupBase";
2539
+ var SidebarGroupLabelBase = React22.forwardRef(({ className, asChild = false, ...props }, ref) => {
2540
+ const Comp = asChild ? import_react_slot4.Slot : "div";
2541
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2542
+ Comp,
2543
+ {
2544
+ ref,
2545
+ "data-sidebar": "group-label",
2546
+ className: cn(
2547
+ "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,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2548
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
2549
+ className
2550
+ ),
2551
+ ...props
2552
+ }
2553
+ );
2554
+ });
2555
+ SidebarGroupLabelBase.displayName = "SidebarGroupLabelBase";
2556
+ var SidebarGroupActionBase = React22.forwardRef(({ className, asChild = false, ...props }, ref) => {
2557
+ const Comp = asChild ? import_react_slot4.Slot : "button";
2558
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2559
+ Comp,
2560
+ {
2561
+ ref,
2562
+ "data-sidebar": "group-action",
2563
+ className: cn(
2564
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2565
+ // Increases the hit area of the button on mobile.
2566
+ "after:absolute after:-inset-2 after:md:hidden",
2567
+ "group-data-[collapsible=icon]:hidden",
2568
+ className
2569
+ ),
2570
+ ...props
2571
+ }
2572
+ );
2573
+ });
2574
+ SidebarGroupActionBase.displayName = "SidebarGroupActionBase";
2575
+ var SidebarGroupContentBase = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2576
+ "div",
2577
+ {
2578
+ ref,
2579
+ "data-sidebar": "group-content",
2580
+ className: cn("w-full text-sm", className),
2581
+ ...props
2582
+ }
2583
+ ));
2584
+ SidebarGroupContentBase.displayName = "SidebarGroupContentBase";
2585
+ var SidebarMenuBase = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2586
+ "ul",
2587
+ {
2588
+ ref,
2589
+ "data-sidebar": "menu",
2590
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
2591
+ ...props
2592
+ }
2593
+ ));
2594
+ SidebarMenuBase.displayName = "SidebarMenuBase";
2595
+ var SidebarMenuItemBase = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2596
+ "li",
2597
+ {
2598
+ ref,
2599
+ "data-sidebar": "menu-item",
2600
+ className: cn("group/menu-item relative", className),
2601
+ ...props
2602
+ }
2603
+ ));
2604
+ SidebarMenuItemBase.displayName = "SidebarMenuItemBase";
2605
+ var sidebarMenuButtonVariants = (0, import_class_variance_authority3.cva)(
2606
+ "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 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 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",
2607
+ {
2608
+ variants: {
2609
+ variant: {
2610
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
2611
+ outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
2612
+ },
2613
+ size: {
2614
+ default: "h-8 text-sm",
2615
+ sm: "h-7 text-xs",
2616
+ lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
2617
+ }
2618
+ },
2619
+ defaultVariants: {
2620
+ variant: "default",
2621
+ size: "default"
2622
+ }
2623
+ }
2624
+ );
2625
+ var SidebarMenuButtonBase = React22.forwardRef(
2626
+ ({
2627
+ asChild = false,
2628
+ isActive = false,
2629
+ variant = "default",
2630
+ size = "default",
2631
+ tooltip,
2632
+ className,
2633
+ ...props
2634
+ }, ref) => {
2635
+ const Comp = asChild ? import_react_slot4.Slot : "button";
2636
+ const { isMobile, state } = UseSideBarBase();
2637
+ const button = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2638
+ Comp,
2639
+ {
2640
+ ref,
2641
+ "data-sidebar": "menu-button",
2642
+ "data-size": size,
2643
+ "data-active": isActive,
2644
+ className: cn(sidebarMenuButtonVariants({ variant, size }), className),
2645
+ ...props
2646
+ }
2647
+ );
2648
+ if (!tooltip) {
2649
+ return button;
2650
+ }
2651
+ if (typeof tooltip === "string") {
2652
+ tooltip = {
2653
+ children: tooltip
2654
+ };
2655
+ }
2656
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(TooltipBase, { children: [
2657
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipTriggerBase, { asChild: true, children: button }),
2658
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2659
+ TooltipContentBase,
2660
+ {
2661
+ side: "right",
2662
+ align: "center",
2663
+ hidden: state !== "collapsed" || isMobile,
2664
+ ...tooltip
2665
+ }
2666
+ )
2667
+ ] });
2668
+ }
2669
+ );
2670
+ SidebarMenuButtonBase.displayName = "SidebarMenuButtonBase";
2671
+ var SidebarMenuActionBase = React22.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
2672
+ const Comp = asChild ? import_react_slot4.Slot : "button";
2673
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2674
+ Comp,
2675
+ {
2676
+ ref,
2677
+ "data-sidebar": "menu-action",
2678
+ className: cn(
2679
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
2680
+ // Increases the hit area of the button on mobile.
2681
+ "after:absolute after:-inset-2 after:md:hidden",
2682
+ "peer-data-[size=sm]/menu-button:top-1",
2683
+ "peer-data-[size=default]/menu-button:top-1.5",
2684
+ "peer-data-[size=lg]/menu-button:top-2.5",
2685
+ "group-data-[collapsible=icon]:hidden",
2686
+ 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",
2687
+ className
2688
+ ),
2689
+ ...props
2690
+ }
2691
+ );
2692
+ });
2693
+ SidebarMenuActionBase.displayName = "SidebarMenuActionBase";
2694
+ var SidebarMenuBadgeBase = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2695
+ "div",
2696
+ {
2697
+ ref,
2698
+ "data-sidebar": "menu-badge",
2699
+ className: cn(
2700
+ "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground",
2701
+ "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
2702
+ "peer-data-[size=sm]/menu-button:top-1",
2703
+ "peer-data-[size=default]/menu-button:top-1.5",
2704
+ "peer-data-[size=lg]/menu-button:top-2.5",
2705
+ "group-data-[collapsible=icon]:hidden",
2706
+ className
2707
+ ),
2708
+ ...props
2709
+ }
2710
+ ));
2711
+ SidebarMenuBadgeBase.displayName = "SidebarMenuBadgeBase";
2712
+ var SidebarMenuSkeletonBase = React22.forwardRef(({ className, showIcon = false, ...props }, ref) => {
2713
+ const width = React22.useMemo(() => {
2714
+ return `${Math.floor(Math.random() * 40) + 50}%`;
2715
+ }, []);
2716
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2717
+ "div",
2718
+ {
2719
+ ref,
2720
+ "data-sidebar": "menu-skeleton",
2721
+ className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
2722
+ ...props,
2723
+ children: [
2724
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2725
+ SkeletonBase,
2726
+ {
2727
+ className: "size-4 rounded-md",
2728
+ "data-sidebar": "menu-skeleton-icon"
2729
+ }
2730
+ ),
2731
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2732
+ SkeletonBase,
2733
+ {
2734
+ className: "h-4 max-w-[--skeleton-width] flex-1",
2735
+ "data-sidebar": "menu-skeleton-text",
2736
+ style: {
2737
+ "--skeleton-width": width
2738
+ }
2739
+ }
2740
+ )
2741
+ ]
2742
+ }
2743
+ );
2744
+ });
2745
+ SidebarMenuSkeletonBase.displayName = "SidebarMenuSkeletonBase";
2746
+ var SidebarMenuSubBase = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2747
+ "ul",
2748
+ {
2749
+ ref,
2750
+ "data-sidebar": "menu-sub",
2751
+ className: cn(
2752
+ "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",
2753
+ "group-data-[collapsible=icon]:hidden",
2754
+ className
2755
+ ),
2756
+ ...props
2757
+ }
2758
+ ));
2759
+ SidebarMenuSubBase.displayName = "SidebarMenuSubBase";
2760
+ var SidebarMenuSubItemBase = React22.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("li", { ref, ...props }));
2761
+ SidebarMenuSubItemBase.displayName = "SidebarMenuSubItemBase";
2762
+ var SidebarMenuSubButtonBase = React22.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
2763
+ const Comp = asChild ? import_react_slot4.Slot : "a";
2764
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2765
+ Comp,
2766
+ {
2767
+ ref,
2768
+ "data-sidebar": "menu-sub-button",
2769
+ "data-size": size,
2770
+ "data-active": isActive,
2771
+ className: cn(
2772
+ "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 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 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
2773
+ "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
2774
+ size === "sm" && "text-xs",
2775
+ size === "md" && "text-sm",
2776
+ "group-data-[collapsible=icon]:hidden",
2777
+ className
2778
+ ),
2779
+ ...props
2780
+ }
2781
+ );
2782
+ });
2783
+ SidebarMenuSubButtonBase.displayName = "SidebarMenuSubButtonBase";
2784
+
2785
+ // src/components/ui/SliderBase.tsx
2786
+ var React23 = __toESM(require("react"));
2787
+ var SliderPrimitive = __toESM(require("@radix-ui/react-slider"));
2788
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2789
+ var SlideBase = React23.forwardRef(
2790
+ ({
2791
+ className,
2792
+ orientation = "horizontal",
2793
+ label,
2794
+ leftIcon,
2795
+ rightIcon,
2796
+ ...props
2797
+ }, ref) => {
2798
+ const isVertical = orientation === "vertical";
2799
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2800
+ "div",
2801
+ {
2802
+ className: cn(
2803
+ "flex flex-col gap-1",
2804
+ isVertical ? "h-full " : "w-full"
2805
+ ),
2806
+ children: [
2807
+ label && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(LabelBase_default, { className: "py-2", children: label }),
2808
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2809
+ "div",
2810
+ {
2811
+ className: cn(
2812
+ "flex gap-2",
2813
+ isVertical ? "flex-col h-full" : "flex-row items-center w-full"
2814
+ ),
2815
+ children: [
2816
+ leftIcon && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex items-center justify-center", children: leftIcon }),
2817
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2818
+ SliderPrimitive.Root,
2819
+ {
2820
+ ref,
2821
+ orientation,
2822
+ className: cn(
2823
+ "relative flex touch-none select-none items-center",
2824
+ isVertical ? "flex-col h-full" : "flex-row w-full",
2825
+ className
2826
+ ),
2827
+ ...props,
2828
+ children: [
2829
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2830
+ SliderPrimitive.Track,
2831
+ {
2832
+ className: cn(
2833
+ "relative overflow-hidden bg-primary/20 rounded-full",
2834
+ isVertical ? "w-1.5 h-full" : "h-1.5 w-full"
2835
+ ),
2836
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2837
+ SliderPrimitive.Range,
2838
+ {
2839
+ className: cn(
2840
+ "absolute bg-primary",
2841
+ isVertical ? "w-full" : "h-full"
2842
+ )
2843
+ }
2844
+ )
2845
+ }
2846
+ ),
2847
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2848
+ SliderPrimitive.Thumb,
2849
+ {
2850
+ className: cn(
2851
+ "block h-4 w-4 rounded-full border border-primary/70 bg-background shadow-md transition-transform",
2852
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
2853
+ "hover:scale-125 active:scale-125"
2854
+ )
2855
+ }
2856
+ )
2857
+ ]
2858
+ }
2859
+ ),
2860
+ rightIcon && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex items-center justify-center", children: rightIcon })
2861
+ ]
2862
+ }
2863
+ )
2864
+ ]
2865
+ }
2866
+ );
2867
+ }
2868
+ );
2869
+ SlideBase.displayName = "SlideBase";
2870
+
2871
+ // src/components/ui/SonnerBase.tsx
2872
+ var import_next_themes = require("next-themes");
2873
+ var import_sonner = require("sonner");
2874
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2875
+ var Toaster = ({ ...props }) => {
2876
+ const { theme = "system" } = (0, import_next_themes.useTheme)();
2877
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2878
+ import_sonner.Toaster,
2879
+ {
2880
+ theme,
2881
+ className: "toaster group",
2882
+ toastOptions: {
2883
+ classNames: {
2884
+ toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
2885
+ description: "group-[.toast]:text-muted-foreground",
2886
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
2887
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
2888
+ }
2889
+ },
2890
+ ...props
2891
+ }
2892
+ );
2893
+ };
2894
+
2895
+ // src/components/ui/SwitchBase.tsx
2896
+ var React24 = __toESM(require("react"));
2897
+ var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"));
2898
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2899
+ var SwitchBase = React24.forwardRef(({ className, ...props }, ref) => {
2900
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2901
+ SwitchPrimitives.Root,
2902
+ {
2903
+ ...props,
2904
+ ref,
2905
+ className: cn(
2906
+ "peer relative inline-flex h-[16px] w-12 cursor-pointer items-center rounded-full border-2 border-transparent shadow-md transition-colors duration-300 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input data-[state=checked]:shadow-[0_0_15px_4px_var(--tw-shadow-color)] data-[state=checked]:shadow-primary/30",
2907
+ className
2908
+ ),
2909
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2910
+ SwitchPrimitives.Thumb,
2911
+ {
2912
+ className: cn(
2913
+ "pointer-events-none block h-4 w-4 rounded-full bg-background shadow-xl ring-0 transition-transform duration-350 ease-out peer-focus:shadow-lg peer-focus:ring-2 peer-focus:ring-primary/70 data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-7 data-[state=checked]:animate-bounce-thumb"
2914
+ ),
2915
+ style: {
2916
+ transformOrigin: "center",
2917
+ transition: "transform 350ms cubic-bezier(0.68, -0.55, 0.265, 1.55)"
2918
+ }
2919
+ }
2920
+ )
2921
+ }
2922
+ );
2923
+ });
2924
+ SwitchBase.displayName = SwitchPrimitives.Root.displayName;
2925
+
2926
+ // src/components/ui/TableBase.tsx
2927
+ var React25 = __toESM(require("react"));
2928
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2929
+ var TableBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2930
+ "table",
2931
+ {
2932
+ ref,
2933
+ className: cn("w-full caption-bottom text-sm", className),
2934
+ ...props
2935
+ }
2936
+ ) }));
2937
+ TableBase.displayName = "TableBase";
2938
+ var TableHeaderBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
2939
+ TableHeaderBase.displayName = "TableHeaderBase";
2940
+ var TableBodyBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2941
+ "tbody",
2942
+ {
2943
+ ref,
2944
+ className: cn("[&_tr:last-child]:border-0", className),
2945
+ ...props
2946
+ }
2947
+ ));
2948
+ TableBodyBase.displayName = "TableBodyBase";
2949
+ var TableFooterBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2950
+ "tfoot",
2951
+ {
2952
+ ref,
2953
+ className: cn(
2954
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
2955
+ className
2956
+ ),
2957
+ ...props
2958
+ }
2959
+ ));
2960
+ TableFooterBase.displayName = "TableFooterBase";
2961
+ var TableRowBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2962
+ "tr",
2963
+ {
2964
+ ref,
2965
+ className: cn(
2966
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
2967
+ className
2968
+ ),
2969
+ ...props
2970
+ }
2971
+ ));
2972
+ TableRowBase.displayName = "TableRowBase";
2973
+ var TableHeadBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2974
+ "th",
2975
+ {
2976
+ ref,
2977
+ className: cn(
2978
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
2979
+ className
2980
+ ),
2981
+ ...props
2982
+ }
2983
+ ));
2984
+ TableHeadBase.displayName = "TableHeadBase";
2985
+ var TableCellBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2986
+ "td",
2987
+ {
2988
+ ref,
2989
+ className: cn(
2990
+ "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
2991
+ className
2992
+ ),
2993
+ ...props
2994
+ }
2995
+ ));
2996
+ TableCellBase.displayName = "TableCellBase";
2997
+ var TableCaptionBase = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2998
+ "caption",
2999
+ {
3000
+ ref,
3001
+ className: cn("mt-4 text-sm text-muted-foreground", className),
3002
+ ...props
3003
+ }
3004
+ ));
3005
+ TableCaptionBase.displayName = "TableCaptionBase";
3006
+
3007
+ // src/components/ui/TabsBase.tsx
3008
+ var React26 = __toESM(require("react"));
3009
+ var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"));
3010
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3011
+ var TabsBase = TabsPrimitive.Root;
3012
+ var TabsListBase = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3013
+ TabsPrimitive.List,
3014
+ {
3015
+ ref,
3016
+ className: cn(
3017
+ "relative flex w-full items-center justify-start gap-4 border-b-2 border-border",
3018
+ className
3019
+ ),
3020
+ ...props
3021
+ }
3022
+ ));
3023
+ TabsListBase.displayName = TabsPrimitive.List.displayName;
3024
+ var TabsTriggerBase = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3025
+ TabsPrimitive.Trigger,
3026
+ {
3027
+ ref,
3028
+ className: cn(
3029
+ "relative inline-flex items-center justify-center whitespace-nowrap px-3 py-2 text-sm font-medium transition-colors",
3030
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3",
3031
+ "disabled:pointer-events-none disabled:opacity-50",
3032
+ "data-[state=active]:text-primary",
3033
+ "after:absolute after:bottom-0 after:left-0 after:h-[1.5px] after:w-full",
3034
+ "after:scale-x-0 after:bg-primary after:origin-left",
3035
+ "after:transition-transform after:duration-300 after:ease-[cubic-bezier(0.65,0,0.35,1)]",
3036
+ "data-[state=active]:after:scale-x-100",
3037
+ className
3038
+ ),
3039
+ ...props
3040
+ }
3041
+ ));
3042
+ var TabsContentBase = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3043
+ TabsPrimitive.Content,
3044
+ {
3045
+ ref,
3046
+ className: cn(
3047
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
3048
+ "animate-fade-in",
3049
+ className
3050
+ ),
3051
+ ...props
3052
+ }
3053
+ ));
3054
+ TabsContentBase.displayName = TabsPrimitive.Content.displayName;
3055
+
3056
+ // src/components/ui/TextAreaBase.tsx
3057
+ var React27 = __toESM(require("react"));
3058
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3059
+ var TextAreaBase = React27.forwardRef(({ className, ...props }, ref) => {
3060
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3061
+ "textarea",
3062
+ {
3063
+ className: cn(
3064
+ "flex min-h-[60px] 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-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
3065
+ className
3066
+ ),
3067
+ ref,
3068
+ ...props
3069
+ }
3070
+ );
3071
+ });
3072
+ TextAreaBase.displayName = "TextAreaBase";
3073
+
3074
+ // src/utils/stringHelpers.ts
3075
+ var cleanString = (str) => str.toString().trim().replace(/[^a-zA-Z0-9\s]/g, "").toLowerCase();
3076
+ function includes(input, query) {
3077
+ return cleanString(input).includes(cleanString(query));
3078
+ }
3079
+
3080
+ // src/components/filter/services/apply-filter.ts
3081
+ function applyfilter({
3082
+ condition,
3083
+ filterValue,
3084
+ valueType,
3085
+ value
3086
+ }) {
3087
+ if (!valueType || value === void 0) return true;
3088
+ if (valueType === "string") {
3089
+ if (!filterValue) return true;
3090
+ switch (condition) {
3091
+ case "$eq":
3092
+ return value === filterValue;
3093
+ case "$startsWith":
3094
+ return cleanString(value).startsWith(cleanString(filterValue));
3095
+ case "$endsWith":
3096
+ return cleanString(value).endsWith(cleanString(filterValue));
3097
+ case "$contains":
3098
+ return includes(value, String(filterValue));
3099
+ default:
3100
+ return false;
3101
+ }
3102
+ }
3103
+ if (valueType === "boolean") {
3104
+ switch (condition) {
3105
+ case "$exists":
3106
+ return Boolean(value) === true;
3107
+ case "$notExists":
3108
+ return Boolean(value) === false;
3109
+ default:
3110
+ return false;
3111
+ }
3112
+ }
3113
+ if (valueType === "select") {
3114
+ if (!filterValue) return true;
3115
+ switch (condition) {
3116
+ case "$eq":
3117
+ return cleanString(value) === cleanString(filterValue);
3118
+ case "$ne":
3119
+ return cleanString(value) !== cleanString(filterValue);
3120
+ default:
3121
+ return false;
3122
+ }
3123
+ }
3124
+ if (valueType === "multi-select") {
3125
+ if (!filterValue || !Array.isArray(filterValue)) return true;
3126
+ const filterValues = filterValue.map((value2) => cleanString(value2));
3127
+ switch (condition) {
3128
+ case "$eq":
3129
+ return filterValues.includes(cleanString(value));
3130
+ case "$ne":
3131
+ return !filterValues.includes(cleanString(value));
3132
+ default:
3133
+ return false;
3134
+ }
3135
+ }
3136
+ }
3137
+
3138
+ // src/components/filter/services/default-conditions.ts
3139
+ var defaultStringConditions = [
3140
+ {
3141
+ conditionId: "$contains",
3142
+ conditionName: "cont\xE9m",
3143
+ valueType: "string"
3144
+ },
3145
+ {
3146
+ conditionId: "$startsWith",
3147
+ conditionName: "come\xE7a com",
3148
+ valueType: "string"
3149
+ },
3150
+ {
3151
+ conditionId: "$endsWith",
3152
+ conditionName: "termina com",
3153
+ valueType: "string"
3154
+ },
3155
+ {
3156
+ conditionId: "$eq",
3157
+ conditionName: "\xE9 igual a",
3158
+ valueType: "string"
3159
+ },
3160
+ {
3161
+ conditionId: "$ne",
3162
+ conditionName: "n\xE3o \xE9 igual a",
3163
+ valueType: "string"
3164
+ }
3165
+ ];
3166
+
3167
+ // src/components/filter/utils/build-summary.ts
3168
+ function buildFilterSummary(filter, availableFilters) {
3169
+ if (!filter) return null;
3170
+ const foundFilter = availableFilters.find((f) => f.filterId == filter.id);
3171
+ if (!foundFilter) return null;
3172
+ const foundCondition = foundFilter.conditions.find(
3173
+ (c) => c.conditionId == filter.conditionId
3174
+ );
3175
+ if (!foundCondition) return null;
3176
+ if (filter.conditionId === "$exists" || filter.conditionId === "$notExists") {
3177
+ return `${foundFilter.filterName} ${foundCondition.conditionName}`;
3178
+ }
3179
+ if (!filter.value) return null;
3180
+ let value = filter.value.toString();
3181
+ switch (foundCondition.valueType) {
3182
+ case "select": {
3183
+ const selected = foundCondition.selectValues?.find(
3184
+ (s) => s.value == filter.value
3185
+ );
3186
+ if (selected) {
3187
+ value = selected.label;
3188
+ }
3189
+ break;
3190
+ }
3191
+ }
3192
+ return `${foundFilter.filterName} ${foundCondition.conditionName} '${value}'`;
3193
+ }
3194
+ // Annotate the CommonJS export names for ESM import in node:
3195
+ 0 && (module.exports = {
3196
+ AlertDialogActionBase,
3197
+ AlertDialogBase,
3198
+ AlertDialogCancelBase,
3199
+ AlertDialogContentBase,
3200
+ AlertDialogDescriptionBase,
3201
+ AlertDialogFooterBase,
3202
+ AlertDialogHeaderBase,
3203
+ AlertDialogOverlayBase,
3204
+ AlertDialogPortalBase,
3205
+ AlertDialogTitleBase,
3206
+ AlertDialogTriggerBase,
3207
+ AvatarBase,
3208
+ AvatarFallbackBase,
3209
+ AvatarImageBase,
3210
+ ButtonBase,
3211
+ CalendarBase,
3212
+ CardBase,
3213
+ CardContentBase,
3214
+ CardDescriptionBase,
3215
+ CardFooterBase,
3216
+ CardHeaderBase,
3217
+ CardTitleBase,
3218
+ CheckboxBase,
3219
+ Combobox,
3220
+ CommandBase,
3221
+ CommandDialogBase,
3222
+ CommandEmptyBase,
3223
+ CommandGroupBase,
3224
+ CommandInputBase,
3225
+ CommandItemBase,
3226
+ CommandListBase,
3227
+ CommandSeparatorBase,
3228
+ CommandShortcutBase,
3229
+ DateTimePicker,
3230
+ DialogBase,
3231
+ DialogCloseBase,
3232
+ DialogContentBase,
3233
+ DialogDescriptionBase,
3234
+ DialogFooterBase,
3235
+ DialogHeaderBase,
3236
+ DialogOverlayBase,
3237
+ DialogPortalBase,
3238
+ DialogTitleBase,
3239
+ DialogTriggerBase,
3240
+ DropDownMenuBase,
3241
+ DropDownMenuCheckboxItemBase,
3242
+ DropDownMenuContentBase,
3243
+ DropDownMenuGroupBase,
3244
+ DropDownMenuItemBase,
3245
+ DropDownMenuLabelBase,
3246
+ DropDownMenuPortalBase,
3247
+ DropDownMenuRadioGroupBase,
3248
+ DropDownMenuRadioItemBase,
3249
+ DropDownMenuSeparatorBase,
3250
+ DropDownMenuShortcutBase,
3251
+ DropDownMenuSubBase,
3252
+ DropDownMenuSubContentBase,
3253
+ DropDownMenuSubTriggerBase,
3254
+ DropDownMenuTriggerBase,
3255
+ FormBase,
3256
+ FormControlBase,
3257
+ FormDescriptionBase,
3258
+ FormFieldBase,
3259
+ FormItemBase,
3260
+ FormLabelBase,
3261
+ FormMessageBase,
3262
+ InputBase,
3263
+ LabelBase,
3264
+ ModeToggleBase,
3265
+ MultiCombobox,
3266
+ PopoverAnchorBase,
3267
+ PopoverBase,
3268
+ PopoverContentBase,
3269
+ PopoverTriggerBase,
3270
+ ProgressBase,
3271
+ ScrollAreaBase,
3272
+ ScrollBarBase,
3273
+ Select,
3274
+ SelectBase,
3275
+ SelectContentBase,
3276
+ SelectGroupBase,
3277
+ SelectItemBase,
3278
+ SelectLabelBase,
3279
+ SelectScrollDownButtonBase,
3280
+ SelectScrollUpButtonBase,
3281
+ SelectSeparatorBase,
3282
+ SelectTriggerBase,
3283
+ SelectValueBase,
3284
+ SeparatorBase,
3285
+ SheetBase,
3286
+ SheetCloseBase,
3287
+ SheetContentBase,
3288
+ SheetDescriptionBase,
3289
+ SheetFooterBase,
3290
+ SheetHeaderBase,
3291
+ SheetOverlayBase,
3292
+ SheetPortalBase,
3293
+ SheetTitleBase,
3294
+ SheetTriggerBase,
3295
+ SidebarBase,
3296
+ SidebarContentBase,
3297
+ SidebarFooterBase,
3298
+ SidebarGroupActionBase,
3299
+ SidebarGroupBase,
3300
+ SidebarGroupContentBase,
3301
+ SidebarGroupLabelBase,
3302
+ SidebarHeaderBase,
3303
+ SidebarInputBase,
3304
+ SidebarInsetBase,
3305
+ SidebarMenuActionBase,
3306
+ SidebarMenuBadgeBase,
3307
+ SidebarMenuBase,
3308
+ SidebarMenuButtonBase,
3309
+ SidebarMenuItemBase,
3310
+ SidebarMenuSkeletonBase,
3311
+ SidebarMenuSubBase,
3312
+ SidebarMenuSubButtonBase,
3313
+ SidebarMenuSubItemBase,
3314
+ SidebarProviderBase,
3315
+ SidebarRailBase,
3316
+ SidebarSeparatorBase,
3317
+ SidebarTriggerBase,
3318
+ SkeletonBase,
3319
+ SlideBase,
3320
+ SwitchBase,
3321
+ TableBase,
3322
+ TableBodyBase,
3323
+ TableCaptionBase,
3324
+ TableCellBase,
3325
+ TableFooterBase,
3326
+ TableHeadBase,
3327
+ TableHeaderBase,
3328
+ TableRowBase,
3329
+ TabsBase,
3330
+ TabsContentBase,
3331
+ TabsListBase,
3332
+ TabsTriggerBase,
3333
+ TextAreaBase,
3334
+ ThemeProviderBase,
3335
+ TimePicker,
3336
+ TimePickerInput,
3337
+ Toaster,
3338
+ TooltipBase,
3339
+ TooltipContentBase,
3340
+ TooltipProviderBase,
3341
+ TooltipTriggerBase,
3342
+ UseSideBarBase,
3343
+ applyfilter,
3344
+ buildFilterSummary,
3345
+ buttonVariantsBase,
3346
+ defaultStringConditions,
3347
+ useFormFieldBase,
3348
+ useIsMobile,
3349
+ useTheme
3350
+ });