@otfdashkit/ui 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +99 -0
  3. package/dist/index.js +302 -1926
  4. package/dist/index.mjs +234 -1869
  5. package/package.json +24 -5
  6. package/src/advanced/BulkActions/BulkActions.tsx +2 -2
  7. package/src/advanced/CommandBar/CommandBar.tsx +2 -2
  8. package/src/advanced/Filters/Filters.tsx +6 -6
  9. package/src/advanced/Kanban/Kanban.tsx +1 -1
  10. package/src/advanced/ToggleButton/ToggleButton.tsx +1 -1
  11. package/src/advanced/bulk-actions.tsx +1 -46
  12. package/src/advanced/command-bar.tsx +1 -115
  13. package/src/advanced/filters.tsx +1 -103
  14. package/src/advanced/kanban.tsx +1 -95
  15. package/src/advanced/toggle-button.tsx +1 -78
  16. package/src/blocks/ChatDetail/ChatDetail.tsx +4 -4
  17. package/src/blocks/FeedbackModal/FeedbackModal.tsx +3 -3
  18. package/src/blocks/FileCards/FileCards.tsx +2 -2
  19. package/src/blocks/FilesList/FilesList.tsx +3 -3
  20. package/src/blocks/IntegrationCard/IntegrationCard.tsx +3 -3
  21. package/src/blocks/InviteModal/InviteModal.tsx +7 -7
  22. package/src/blocks/ManageTagsModal/ManageTagsModal.tsx +4 -4
  23. package/src/blocks/MessagesCard/MessagesCard.tsx +3 -3
  24. package/src/blocks/MetricCard/MetricCard.tsx +3 -3
  25. package/src/blocks/NotificationSettings/NotificationSettings.tsx +4 -4
  26. package/src/blocks/OrganizationMenu/OrganizationMenu.tsx +30 -11
  27. package/src/blocks/RolesMenu/RolesMenu.tsx +4 -4
  28. package/src/blocks/SelectUsersModal/SelectUsersModal.tsx +5 -5
  29. package/src/blocks/SidebarLayoutDashboard/SidebarLayoutDashboard.tsx +5 -5
  30. package/src/blocks/SidebarLayoutGroups/SidebarLayoutGroups.tsx +2 -2
  31. package/src/blocks/SidebarLayoutMinimal/SidebarLayoutMinimal.tsx +3 -3
  32. package/src/blocks/SidebarLayoutSearch/SidebarLayoutSearch.tsx +3 -3
  33. package/src/blocks/SidebarLayoutUser/SidebarLayoutUser.tsx +4 -4
  34. package/src/blocks/SortableTaskList/SortableTaskList.tsx +3 -3
  35. package/src/blocks/StackedLayoutBranded/StackedLayoutBranded.tsx +4 -4
  36. package/src/blocks/StackedLayoutTabs/StackedLayoutTabs.tsx +4 -4
  37. package/src/blocks/TaskCard/TaskCard.tsx +4 -4
  38. package/src/blocks/UserMenu/UserMenu.tsx +3 -3
  39. package/src/blocks/WorkspaceMembers/WorkspaceMembers.tsx +5 -5
  40. package/src/blocks/chat-detail.tsx +1 -73
  41. package/src/blocks/feedback-modal.tsx +1 -68
  42. package/src/blocks/file-cards.tsx +1 -56
  43. package/src/blocks/files-list.tsx +1 -72
  44. package/src/blocks/integration-card.tsx +1 -50
  45. package/src/blocks/invite-modal.tsx +1 -69
  46. package/src/blocks/manage-tags-modal.tsx +1 -63
  47. package/src/blocks/messages-card.tsx +1 -59
  48. package/src/blocks/metric-card.tsx +1 -79
  49. package/src/blocks/notification-settings.tsx +1 -61
  50. package/src/blocks/organization-menu.tsx +1 -85
  51. package/src/blocks/roles-menu.tsx +1 -61
  52. package/src/blocks/select-users-modal.tsx +1 -64
  53. package/src/blocks/sidebar-layout-dashboard.tsx +1 -97
  54. package/src/blocks/sidebar-layout-groups.tsx +1 -79
  55. package/src/blocks/sidebar-layout-minimal.tsx +1 -73
  56. package/src/blocks/sidebar-layout-search.tsx +1 -79
  57. package/src/blocks/sidebar-layout-user.tsx +1 -82
  58. package/src/blocks/sortable-task-list.tsx +1 -70
  59. package/src/blocks/stacked-layout-branded.tsx +1 -64
  60. package/src/blocks/stacked-layout-tabs.tsx +1 -80
  61. package/src/blocks/task-card.tsx +1 -88
  62. package/src/blocks/user-menu.tsx +1 -62
  63. package/src/blocks/workspace-members.tsx +1 -61
  64. package/src/charts/sparkline.tsx +1 -1
  65. package/src/components/DataGrid/DataGrid.tsx +1 -1
  66. package/src/components/DataTable/DataTable.tsx +4 -4
  67. package/src/components/EmptyState/EmptyState.tsx +6 -22
  68. package/src/components/Persona/Persona.tsx +1 -1
  69. package/src/components/Stat/Stat.tsx +1 -1
  70. package/src/components/Stepper/Stepper.tsx +13 -2
  71. package/src/components/banner.tsx +1 -203
  72. package/src/components/breadcrumb.tsx +1 -58
  73. package/src/components/command-item.tsx +1 -36
  74. package/src/components/data-grid.tsx +1 -125
  75. package/src/components/data-table.tsx +1 -139
  76. package/src/components/empty-state.tsx +1 -31
  77. package/src/components/hotkeys.tsx +1 -31
  78. package/src/components/icon-badge.tsx +1 -35
  79. package/src/components/loading-overlay.tsx +1 -38
  80. package/src/components/persona.tsx +1 -38
  81. package/src/components/property-list.tsx +1 -29
  82. package/src/components/stat.tsx +1 -51
  83. package/src/components/stepper.tsx +1 -69
  84. package/src/components/structured-list.tsx +1 -51
  85. package/src/components/timeline.tsx +1 -69
  86. package/src/components/toaster.tsx +1 -42
  87. package/src/data/DataList.tsx +1 -1
  88. package/src/engagement/Tour/Tour.tsx +1 -1
  89. package/src/engagement/beacon.tsx +1 -50
  90. package/src/engagement/tour.tsx +1 -106
  91. package/src/forms/ArrayField/ArrayField.tsx +2 -2
  92. package/src/forms/AutoForm/AutoForm.tsx +9 -8
  93. package/src/forms/DatePicker/DatePicker.tsx +3 -3
  94. package/src/forms/FloatingLabelInput/FloatingLabelInput.tsx +104 -0
  95. package/src/forms/FloatingLabelInput/index.ts +1 -0
  96. package/src/forms/PasswordInput/PasswordInput.tsx +2 -2
  97. package/src/forms/SearchInput/SearchInput.tsx +2 -2
  98. package/src/forms/StepForm/StepForm.tsx +2 -2
  99. package/src/forms/array-field.tsx +1 -61
  100. package/src/forms/auto-form.tsx +1 -133
  101. package/src/forms/date-picker.tsx +1 -109
  102. package/src/forms/field.tsx +1 -62
  103. package/src/forms/file-upload.tsx +1 -101
  104. package/src/forms/floating-label-input.tsx +1 -0
  105. package/src/forms/form.tsx +1 -57
  106. package/src/forms/object-field.tsx +1 -53
  107. package/src/forms/password-input.tsx +1 -54
  108. package/src/forms/search-input.tsx +1 -64
  109. package/src/forms/step-form.tsx +1 -113
  110. package/src/index.ts +6 -3
  111. package/src/primitives/Button/Button.tsx +18 -0
  112. package/src/primitives/code-block.tsx +1 -1
  113. package/src/primitives/comparison.tsx +1 -1
  114. package/src/primitives/qr-code.tsx +5 -1
  115. package/src/themes/base.css +18 -0
package/dist/index.mjs CHANGED
@@ -21,10 +21,9 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
21
21
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
22
22
  import { Drawer as Drawer$1 } from 'vaul';
23
23
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
24
- import { useFormContext, useForm } from 'react-hook-form';
25
- import * as LabelPrimitive from '@radix-ui/react-label';
26
24
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
27
25
  import { OTPInput, OTPInputContext } from 'input-otp';
26
+ import * as LabelPrimitive from '@radix-ui/react-label';
28
27
  import * as MenubarPrimitive from '@radix-ui/react-menubar';
29
28
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
30
29
  import * as PopoverPrimitive from '@radix-ui/react-popover';
@@ -42,6 +41,7 @@ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
42
41
  import * as TogglePrimitive from '@radix-ui/react-toggle';
43
42
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
44
43
  import { useReactTable, getCoreRowModel, flexRender, getFilteredRowModel, getSortedRowModel, getPaginationRowModel } from '@tanstack/react-table';
44
+ import { addDays, format, startOfWeek as startOfWeek$1, isSameMonth, isSameDay as isSameDay$1, endOfDay, startOfDay, endOfWeek, endOfMonth, startOfMonth, differenceInCalendarDays, differenceInCalendarWeeks, differenceInCalendarMonths, addMonths, addWeeks, addHours, differenceInMinutes } from 'date-fns';
45
45
  import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, pointerWithin, useDraggable, useDroppable, DragOverlay, closestCenter } from '@dnd-kit/core';
46
46
  import { useSortable, SortableContext, verticalListSortingStrategy, sortableKeyboardCoordinates, arrayMove } from '@dnd-kit/sortable';
47
47
  import { CSS } from '@dnd-kit/utilities';
@@ -55,6 +55,8 @@ import { Table as Table$1 } from '@tiptap/extension-table';
55
55
  import { TableRow as TableRow$1 } from '@tiptap/extension-table-row';
56
56
  import { TableCell as TableCell$1 } from '@tiptap/extension-table-cell';
57
57
  import { TableHeader as TableHeader$1 } from '@tiptap/extension-table-header';
58
+ import { useForm, Controller, useFormContext } from 'react-hook-form';
59
+ export { FormProvider as Form } from 'react-hook-form';
58
60
  import { zodResolver } from '@hookform/resolvers/zod';
59
61
  import * as z from 'zod';
60
62
  import { HexAlphaColorPicker, HexColorPicker, RgbStringColorPicker, HslStringColorPicker } from 'react-colorful';
@@ -362,7 +364,7 @@ function Calendar({
362
364
  showOutsideDays = true,
363
365
  captionLayout = "label",
364
366
  buttonVariant = "ghost",
365
- formatters: formatters2,
367
+ formatters,
366
368
  components,
367
369
  ...props
368
370
  }) {
@@ -380,7 +382,7 @@ function Calendar({
380
382
  captionLayout,
381
383
  formatters: {
382
384
  formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
383
- ...formatters2
385
+ ...formatters
384
386
  },
385
387
  classNames: {
386
388
  root: cn("w-fit", defaultClassNames.root),
@@ -1579,104 +1581,6 @@ var DropdownMenuSubContent = React131__default.forwardRef(({ className, ...props
1579
1581
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1580
1582
  var DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props });
1581
1583
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1582
- var labelVariants = cva(
1583
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1584
- );
1585
- var Label3 = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1586
- LabelPrimitive.Root,
1587
- {
1588
- ref,
1589
- className: cn(labelVariants(), className),
1590
- ...props
1591
- }
1592
- ));
1593
- Label3.displayName = LabelPrimitive.Root.displayName;
1594
- var FormFieldContext = React131.createContext(null);
1595
- var useFormField = () => {
1596
- const fieldContext = React131.useContext(FormFieldContext);
1597
- const itemContext = React131.useContext(FormItemContext);
1598
- const { getFieldState, formState } = useFormContext();
1599
- if (!fieldContext) {
1600
- throw new Error("useFormField should be used within <FormField>");
1601
- }
1602
- if (!itemContext) {
1603
- throw new Error("useFormField should be used within <FormItem>");
1604
- }
1605
- const fieldState = getFieldState(fieldContext.name, formState);
1606
- const { id } = itemContext;
1607
- return {
1608
- id,
1609
- name: fieldContext.name,
1610
- formItemId: `${id}-form-item`,
1611
- formDescriptionId: `${id}-form-item-description`,
1612
- formMessageId: `${id}-form-item-message`,
1613
- ...fieldState
1614
- };
1615
- };
1616
- var FormItemContext = React131.createContext(null);
1617
- var FormItem = React131.forwardRef(({ className, ...props }, ref) => {
1618
- const id = React131.useId();
1619
- return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), ...props }) });
1620
- });
1621
- FormItem.displayName = "FormItem";
1622
- var FormLabel = React131.forwardRef(({ className, ...props }, ref) => {
1623
- const { error, formItemId } = useFormField();
1624
- return /* @__PURE__ */ jsx(
1625
- Label3,
1626
- {
1627
- ref,
1628
- className: cn(error && "text-destructive", className),
1629
- htmlFor: formItemId,
1630
- ...props
1631
- }
1632
- );
1633
- });
1634
- FormLabel.displayName = "FormLabel";
1635
- var FormControl = React131.forwardRef(({ ...props }, ref) => {
1636
- const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
1637
- return /* @__PURE__ */ jsx(
1638
- Slot,
1639
- {
1640
- ref,
1641
- id: formItemId,
1642
- "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
1643
- "aria-invalid": !!error,
1644
- ...props
1645
- }
1646
- );
1647
- });
1648
- FormControl.displayName = "FormControl";
1649
- var FormDescription = React131.forwardRef(({ className, ...props }, ref) => {
1650
- const { formDescriptionId } = useFormField();
1651
- return /* @__PURE__ */ jsx(
1652
- "p",
1653
- {
1654
- ref,
1655
- id: formDescriptionId,
1656
- className: cn("text-[0.8rem] text-muted-foreground", className),
1657
- ...props
1658
- }
1659
- );
1660
- });
1661
- FormDescription.displayName = "FormDescription";
1662
- var FormMessage = React131.forwardRef(({ className, children, ...props }, ref) => {
1663
- const { error, formMessageId } = useFormField();
1664
- const body = error ? String(error?.message ?? "") : children;
1665
- if (!body) {
1666
- return null;
1667
- }
1668
- return /* @__PURE__ */ jsx(
1669
- "p",
1670
- {
1671
- ref,
1672
- id: formMessageId,
1673
- className: cn("text-[0.8rem] font-medium text-destructive", className),
1674
- ...props,
1675
- children: body
1676
- }
1677
- );
1678
- });
1679
- FormMessage.displayName = "FormMessage";
1680
1584
  var HoverCard = HoverCardPrimitive.Root;
1681
1585
  var HoverCardTrigger = HoverCardPrimitive.Trigger;
1682
1586
  var HoverCardContent = React131.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
@@ -1750,6 +1654,18 @@ var Input = React131__default.forwardRef(
1750
1654
  )
1751
1655
  );
1752
1656
  Input.displayName = "Input";
1657
+ var labelVariants = cva(
1658
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1659
+ );
1660
+ var Label3 = React131.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1661
+ LabelPrimitive.Root,
1662
+ {
1663
+ ref,
1664
+ className: cn(labelVariants(), className),
1665
+ ...props
1666
+ }
1667
+ ));
1668
+ Label3.displayName = LabelPrimitive.Root.displayName;
1753
1669
  var LogoCarousel = React131__default.forwardRef(
1754
1670
  ({
1755
1671
  className,
@@ -3161,6 +3077,27 @@ function Breadcrumb({ children, className }) {
3161
3077
  });
3162
3078
  return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", children: /* @__PURE__ */ jsx("ol", { className: cn("flex flex-wrap items-center gap-1", className), children: withSeparators }) });
3163
3079
  }
3080
+ function CommandItem2({ icon, label, description, shortcut, active, onClick, className }) {
3081
+ return /* @__PURE__ */ jsxs(
3082
+ "div",
3083
+ {
3084
+ onClick,
3085
+ className: cn(
3086
+ "flex items-center gap-3 rounded-md px-3 py-2 cursor-pointer transition-colors",
3087
+ active ? "bg-[hsl(var(--accent))] text-[hsl(var(--accent-foreground))]" : "hover:bg-[hsl(var(--accent)/0.6)]",
3088
+ className
3089
+ ),
3090
+ children: [
3091
+ icon && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-[hsl(var(--muted-foreground))] h-4 w-4 flex items-center justify-center", children: icon }),
3092
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
3093
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium truncate", children: label }),
3094
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-[hsl(var(--muted-foreground))] truncate", children: description })
3095
+ ] }),
3096
+ shortcut && /* @__PURE__ */ jsx("kbd", { className: "shrink-0 pointer-events-none inline-flex h-5 items-center gap-1 rounded border border-[hsl(var(--border))] bg-[hsl(var(--muted))] px-1.5 text-[10px] font-medium text-[hsl(var(--muted-foreground))]", children: shortcut })
3097
+ ]
3098
+ }
3099
+ );
3100
+ }
3164
3101
  function EditableCell({ value: initial, onSave }) {
3165
3102
  const [editing, setEditing] = React131__default.useState(false);
3166
3103
  const [val, setVal] = React131__default.useState(String(initial ?? ""));
@@ -3316,14 +3253,53 @@ var EmptyStateIcon = React131__default.forwardRef(
3316
3253
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex h-12 w-12 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-[hsl(var(--muted-foreground))]", className), ...props })
3317
3254
  );
3318
3255
  EmptyStateIcon.displayName = "EmptyStateIcon";
3319
- function EmptyState({ icon, title, description, action, className }) {
3320
- return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center justify-center gap-3 py-12 text-center", className), children: [
3321
- icon && /* @__PURE__ */ jsx(EmptyStateIcon, { children: icon }),
3322
- /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
3323
- /* @__PURE__ */ jsx("h3", { className: "font-semibold text-[hsl(var(--foreground))]", children: title }),
3324
- description && /* @__PURE__ */ jsx("p", { className: "text-sm text-[hsl(var(--muted-foreground))]", children: description })
3256
+ var sizeMap = {
3257
+ sm: "py-8 gap-2",
3258
+ default: "py-12 gap-3",
3259
+ lg: "py-20 gap-4"
3260
+ };
3261
+ var titleSizeMap = {
3262
+ sm: "text-sm font-semibold",
3263
+ default: "text-base font-semibold",
3264
+ lg: "text-lg font-semibold"
3265
+ };
3266
+ var descSizeMap = {
3267
+ sm: "text-xs",
3268
+ default: "text-sm",
3269
+ lg: "text-base"
3270
+ };
3271
+ var iconSizeMap = {
3272
+ sm: "h-10 w-10",
3273
+ default: "h-12 w-12",
3274
+ lg: "h-16 w-16"
3275
+ };
3276
+ function EmptyState({
3277
+ icon,
3278
+ title,
3279
+ description,
3280
+ action,
3281
+ secondaryAction,
3282
+ size = "default",
3283
+ className
3284
+ }) {
3285
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center justify-center text-center", sizeMap[size], className), children: [
3286
+ icon && /* @__PURE__ */ jsx(EmptyStateIcon, { className: iconSizeMap[size], children: icon }),
3287
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 max-w-sm", children: [
3288
+ /* @__PURE__ */ jsx("h3", { className: cn(titleSizeMap[size], "text-[hsl(var(--foreground))]"), children: title }),
3289
+ description && /* @__PURE__ */ jsx("p", { className: cn(descSizeMap[size], "text-[hsl(var(--muted-foreground))]"), children: description })
3325
3290
  ] }),
3326
- action && /* @__PURE__ */ jsx(Button, { onClick: action.onClick, className: "mt-1", children: action.label })
3291
+ (action || secondaryAction) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1", children: [
3292
+ action && /* @__PURE__ */ jsx(Button, { size: size === "sm" ? "sm" : "default", onClick: action.onClick, children: action.label }),
3293
+ secondaryAction && /* @__PURE__ */ jsx(
3294
+ Button,
3295
+ {
3296
+ variant: "outline",
3297
+ size: size === "sm" ? "sm" : "default",
3298
+ onClick: secondaryAction.onClick,
3299
+ children: secondaryAction.label
3300
+ }
3301
+ )
3302
+ ] })
3327
3303
  ] });
3328
3304
  }
3329
3305
  function HotkeyBadge({ children, className }) {
@@ -3343,13 +3319,13 @@ var colorMap = {
3343
3319
  error: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400",
3344
3320
  purple: "bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400"
3345
3321
  };
3346
- var sizeMap = {
3322
+ var sizeMap2 = {
3347
3323
  sm: "h-7 w-7 [&>*]:h-3.5 [&>*]:w-3.5",
3348
3324
  md: "h-10 w-10 [&>*]:h-5 [&>*]:w-5",
3349
3325
  lg: "h-14 w-14 [&>*]:h-7 [&>*]:w-7"
3350
3326
  };
3351
3327
  function IconBadge({ icon, color = "default", size = "md", className }) {
3352
- return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center justify-center rounded-full shrink-0", colorMap[color], sizeMap[size], className), children: icon });
3328
+ return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center justify-center rounded-full shrink-0", colorMap[color], sizeMap2[size], className), children: icon });
3353
3329
  }
3354
3330
  function LoadingOverlay({ loading, text, fullPage, children, className }) {
3355
3331
  if (fullPage) {
@@ -3366,13 +3342,13 @@ function LoadingOverlay({ loading, text, fullPage, children, className }) {
3366
3342
  ] }) })
3367
3343
  ] });
3368
3344
  }
3369
- var sizeMap2 = {
3345
+ var sizeMap3 = {
3370
3346
  sm: { avatar: "h-7 w-7", name: "text-sm", subtitle: "text-xs" },
3371
3347
  md: { avatar: "h-9 w-9", name: "text-sm font-medium", subtitle: "text-xs" },
3372
3348
  lg: { avatar: "h-12 w-12", name: "text-base font-medium", subtitle: "text-sm" }
3373
3349
  };
3374
3350
  function Persona({ name, subtitle, src, size = "md", badge, className }) {
3375
- const s = sizeMap2[size];
3351
+ const s = sizeMap3[size];
3376
3352
  const initials = name.split(" ").map((w) => w[0]).slice(0, 2).join("").toUpperCase();
3377
3353
  return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2.5", className), children: [
3378
3354
  /* @__PURE__ */ jsxs("div", { className: "relative shrink-0", children: [
@@ -3773,7 +3749,7 @@ function InviteModal({ className }) {
3773
3749
  pending.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
3774
3750
  /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-[hsl(var(--muted-foreground))]", children: "Pending invites" }),
3775
3751
  /* @__PURE__ */ jsx("div", { className: "divide-y divide-[hsl(var(--border))] rounded-md border border-[hsl(var(--border))]", children: pending.map((p, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2", children: [
3776
- /* @__PURE__ */ jsx(Avatar, { className: "h-6 w-6", children: /* @__PURE__ */ jsx(AvatarFallback, { className: "text-[10px]", children: p.email[0].toUpperCase() }) }),
3752
+ /* @__PURE__ */ jsx(Avatar, { className: "h-6 w-6", children: /* @__PURE__ */ jsx(AvatarFallback, { className: "text-[10px]", children: p.email.charAt(0).toUpperCase() }) }),
3777
3753
  /* @__PURE__ */ jsx("span", { className: "flex-1 text-sm truncate", children: p.email }),
3778
3754
  /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-[10px] px-1.5 py-0.5 shrink-0", children: p.role }),
3779
3755
  /* @__PURE__ */ jsx("button", { onClick: () => setPending((ps) => ps.filter((_, j) => j !== i)), children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5 text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]" }) })
@@ -4466,7 +4442,7 @@ function NotificationSettings({ className }) {
4466
4442
  NotifRow,
4467
4443
  {
4468
4444
  ...n,
4469
- checked: states[n.id],
4445
+ checked: states[n.id] ?? false,
4470
4446
  onChange: (val) => setStates((s) => ({ ...s, [n.id]: val }))
4471
4447
  },
4472
4448
  n.id
@@ -4668,7 +4644,7 @@ var ROLES = [
4668
4644
  ];
4669
4645
  function RolesMenu({ value = "member", onChange, className }) {
4670
4646
  const [role, setRole] = useState(value);
4671
- const current = ROLES.find((r) => r.value === role) ?? ROLES[2];
4647
+ const current = ROLES.find((r) => r.value === role) ?? ROLES[0];
4672
4648
  const handleChange = (v) => {
4673
4649
  setRole(v);
4674
4650
  onChange?.(v);
@@ -5393,1712 +5369,6 @@ function Filters({ filters, value, onChange, className }) {
5393
5369
  /* @__PURE__ */ jsx(AddFilterPopover, { filters, onAdd: (fv) => onChange([...value, fv]) })
5394
5370
  ] });
5395
5371
  }
5396
- var millisecondsInWeek = 6048e5;
5397
- var millisecondsInDay = 864e5;
5398
- var millisecondsInMinute = 6e4;
5399
- var millisecondsInHour = 36e5;
5400
- var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom");
5401
-
5402
- // node_modules/date-fns/constructFrom.js
5403
- function constructFrom(date, value) {
5404
- if (typeof date === "function") return date(value);
5405
- if (date && typeof date === "object" && constructFromSymbol in date)
5406
- return date[constructFromSymbol](value);
5407
- if (date instanceof Date) return new date.constructor(value);
5408
- return new Date(value);
5409
- }
5410
-
5411
- // node_modules/date-fns/toDate.js
5412
- function toDate(argument, context) {
5413
- return constructFrom(context || argument, argument);
5414
- }
5415
-
5416
- // node_modules/date-fns/addDays.js
5417
- function addDays(date, amount, options) {
5418
- const _date = toDate(date, options?.in);
5419
- if (isNaN(amount)) return constructFrom(date, NaN);
5420
- if (!amount) return _date;
5421
- _date.setDate(_date.getDate() + amount);
5422
- return _date;
5423
- }
5424
-
5425
- // node_modules/date-fns/addMonths.js
5426
- function addMonths(date, amount, options) {
5427
- const _date = toDate(date, options?.in);
5428
- if (isNaN(amount)) return constructFrom(date, NaN);
5429
- if (!amount) {
5430
- return _date;
5431
- }
5432
- const dayOfMonth = _date.getDate();
5433
- const endOfDesiredMonth = constructFrom(date, _date.getTime());
5434
- endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);
5435
- const daysInMonth = endOfDesiredMonth.getDate();
5436
- if (dayOfMonth >= daysInMonth) {
5437
- return endOfDesiredMonth;
5438
- } else {
5439
- _date.setFullYear(
5440
- endOfDesiredMonth.getFullYear(),
5441
- endOfDesiredMonth.getMonth(),
5442
- dayOfMonth
5443
- );
5444
- return _date;
5445
- }
5446
- }
5447
-
5448
- // node_modules/date-fns/addMilliseconds.js
5449
- function addMilliseconds(date, amount, options) {
5450
- return constructFrom(date, +toDate(date) + amount);
5451
- }
5452
-
5453
- // node_modules/date-fns/addHours.js
5454
- function addHours(date, amount, options) {
5455
- return addMilliseconds(date, amount * millisecondsInHour);
5456
- }
5457
-
5458
- // node_modules/date-fns/_lib/defaultOptions.js
5459
- var defaultOptions = {};
5460
- function getDefaultOptions() {
5461
- return defaultOptions;
5462
- }
5463
-
5464
- // node_modules/date-fns/startOfWeek.js
5465
- function startOfWeek2(date, options) {
5466
- const defaultOptions2 = getDefaultOptions();
5467
- const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
5468
- const _date = toDate(date, options?.in);
5469
- const day = _date.getDay();
5470
- const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
5471
- _date.setDate(_date.getDate() - diff);
5472
- _date.setHours(0, 0, 0, 0);
5473
- return _date;
5474
- }
5475
-
5476
- // node_modules/date-fns/startOfISOWeek.js
5477
- function startOfISOWeek(date, options) {
5478
- return startOfWeek2(date, { ...options, weekStartsOn: 1 });
5479
- }
5480
-
5481
- // node_modules/date-fns/getISOWeekYear.js
5482
- function getISOWeekYear(date, options) {
5483
- const _date = toDate(date, options?.in);
5484
- const year = _date.getFullYear();
5485
- const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);
5486
- fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);
5487
- fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);
5488
- const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);
5489
- const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);
5490
- fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);
5491
- fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);
5492
- const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);
5493
- if (_date.getTime() >= startOfNextYear.getTime()) {
5494
- return year + 1;
5495
- } else if (_date.getTime() >= startOfThisYear.getTime()) {
5496
- return year;
5497
- } else {
5498
- return year - 1;
5499
- }
5500
- }
5501
-
5502
- // node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js
5503
- function getTimezoneOffsetInMilliseconds(date) {
5504
- const _date = toDate(date);
5505
- const utcDate = new Date(
5506
- Date.UTC(
5507
- _date.getFullYear(),
5508
- _date.getMonth(),
5509
- _date.getDate(),
5510
- _date.getHours(),
5511
- _date.getMinutes(),
5512
- _date.getSeconds(),
5513
- _date.getMilliseconds()
5514
- )
5515
- );
5516
- utcDate.setUTCFullYear(_date.getFullYear());
5517
- return +date - +utcDate;
5518
- }
5519
-
5520
- // node_modules/date-fns/_lib/normalizeDates.js
5521
- function normalizeDates(context, ...dates) {
5522
- const normalize = constructFrom.bind(
5523
- null,
5524
- context || dates.find((date) => typeof date === "object")
5525
- );
5526
- return dates.map(normalize);
5527
- }
5528
-
5529
- // node_modules/date-fns/startOfDay.js
5530
- function startOfDay(date, options) {
5531
- const _date = toDate(date, options?.in);
5532
- _date.setHours(0, 0, 0, 0);
5533
- return _date;
5534
- }
5535
-
5536
- // node_modules/date-fns/differenceInCalendarDays.js
5537
- function differenceInCalendarDays(laterDate, earlierDate, options) {
5538
- const [laterDate_, earlierDate_] = normalizeDates(
5539
- options?.in,
5540
- laterDate,
5541
- earlierDate
5542
- );
5543
- const laterStartOfDay = startOfDay(laterDate_);
5544
- const earlierStartOfDay = startOfDay(earlierDate_);
5545
- const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);
5546
- const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);
5547
- return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);
5548
- }
5549
-
5550
- // node_modules/date-fns/startOfISOWeekYear.js
5551
- function startOfISOWeekYear(date, options) {
5552
- const year = getISOWeekYear(date, options);
5553
- const fourthOfJanuary = constructFrom(date, 0);
5554
- fourthOfJanuary.setFullYear(year, 0, 4);
5555
- fourthOfJanuary.setHours(0, 0, 0, 0);
5556
- return startOfISOWeek(fourthOfJanuary);
5557
- }
5558
-
5559
- // node_modules/date-fns/addWeeks.js
5560
- function addWeeks(date, amount, options) {
5561
- return addDays(date, amount * 7, options);
5562
- }
5563
-
5564
- // node_modules/date-fns/isSameDay.js
5565
- function isSameDay(laterDate, earlierDate, options) {
5566
- const [dateLeft_, dateRight_] = normalizeDates(
5567
- options?.in,
5568
- laterDate,
5569
- earlierDate
5570
- );
5571
- return +startOfDay(dateLeft_) === +startOfDay(dateRight_);
5572
- }
5573
-
5574
- // node_modules/date-fns/isDate.js
5575
- function isDate(value) {
5576
- return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]";
5577
- }
5578
-
5579
- // node_modules/date-fns/isValid.js
5580
- function isValid(date) {
5581
- return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date)));
5582
- }
5583
-
5584
- // node_modules/date-fns/differenceInCalendarMonths.js
5585
- function differenceInCalendarMonths(laterDate, earlierDate, options) {
5586
- const [laterDate_, earlierDate_] = normalizeDates(
5587
- options?.in,
5588
- laterDate,
5589
- earlierDate
5590
- );
5591
- const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();
5592
- const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();
5593
- return yearsDiff * 12 + monthsDiff;
5594
- }
5595
-
5596
- // node_modules/date-fns/differenceInCalendarWeeks.js
5597
- function differenceInCalendarWeeks(laterDate, earlierDate, options) {
5598
- const [laterDate_, earlierDate_] = normalizeDates(
5599
- options?.in,
5600
- laterDate,
5601
- earlierDate
5602
- );
5603
- const laterStartOfWeek = startOfWeek2(laterDate_, options);
5604
- const earlierStartOfWeek = startOfWeek2(earlierDate_, options);
5605
- const laterTimestamp = +laterStartOfWeek - getTimezoneOffsetInMilliseconds(laterStartOfWeek);
5606
- const earlierTimestamp = +earlierStartOfWeek - getTimezoneOffsetInMilliseconds(earlierStartOfWeek);
5607
- return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInWeek);
5608
- }
5609
-
5610
- // node_modules/date-fns/_lib/getRoundingMethod.js
5611
- function getRoundingMethod(method) {
5612
- return (number) => {
5613
- const round = Math.trunc;
5614
- const result = round(number);
5615
- return result === 0 ? 0 : result;
5616
- };
5617
- }
5618
-
5619
- // node_modules/date-fns/differenceInMilliseconds.js
5620
- function differenceInMilliseconds(laterDate, earlierDate) {
5621
- return +toDate(laterDate) - +toDate(earlierDate);
5622
- }
5623
-
5624
- // node_modules/date-fns/differenceInMinutes.js
5625
- function differenceInMinutes(dateLeft, dateRight, options) {
5626
- const diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;
5627
- return getRoundingMethod()(diff);
5628
- }
5629
-
5630
- // node_modules/date-fns/endOfDay.js
5631
- function endOfDay(date, options) {
5632
- const _date = toDate(date, options?.in);
5633
- _date.setHours(23, 59, 59, 999);
5634
- return _date;
5635
- }
5636
-
5637
- // node_modules/date-fns/endOfMonth.js
5638
- function endOfMonth(date, options) {
5639
- const _date = toDate(date, options?.in);
5640
- const month = _date.getMonth();
5641
- _date.setFullYear(_date.getFullYear(), month + 1, 0);
5642
- _date.setHours(23, 59, 59, 999);
5643
- return _date;
5644
- }
5645
-
5646
- // node_modules/date-fns/startOfMonth.js
5647
- function startOfMonth(date, options) {
5648
- const _date = toDate(date, options?.in);
5649
- _date.setDate(1);
5650
- _date.setHours(0, 0, 0, 0);
5651
- return _date;
5652
- }
5653
-
5654
- // node_modules/date-fns/startOfYear.js
5655
- function startOfYear(date, options) {
5656
- const date_ = toDate(date, options?.in);
5657
- date_.setFullYear(date_.getFullYear(), 0, 1);
5658
- date_.setHours(0, 0, 0, 0);
5659
- return date_;
5660
- }
5661
-
5662
- // node_modules/date-fns/endOfWeek.js
5663
- function endOfWeek(date, options) {
5664
- const weekStartsOn = options?.weekStartsOn;
5665
- const _date = toDate(date, options?.in);
5666
- const day = _date.getDay();
5667
- const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);
5668
- _date.setDate(_date.getDate() + diff);
5669
- _date.setHours(23, 59, 59, 999);
5670
- return _date;
5671
- }
5672
-
5673
- // node_modules/date-fns/locale/en-US/_lib/formatDistance.js
5674
- var formatDistanceLocale = {
5675
- lessThanXSeconds: {
5676
- one: "less than a second",
5677
- other: "less than {{count}} seconds"
5678
- },
5679
- xSeconds: {
5680
- one: "1 second",
5681
- other: "{{count}} seconds"
5682
- },
5683
- halfAMinute: "half a minute",
5684
- lessThanXMinutes: {
5685
- one: "less than a minute",
5686
- other: "less than {{count}} minutes"
5687
- },
5688
- xMinutes: {
5689
- one: "1 minute",
5690
- other: "{{count}} minutes"
5691
- },
5692
- aboutXHours: {
5693
- one: "about 1 hour",
5694
- other: "about {{count}} hours"
5695
- },
5696
- xHours: {
5697
- one: "1 hour",
5698
- other: "{{count}} hours"
5699
- },
5700
- xDays: {
5701
- one: "1 day",
5702
- other: "{{count}} days"
5703
- },
5704
- aboutXWeeks: {
5705
- one: "about 1 week",
5706
- other: "about {{count}} weeks"
5707
- },
5708
- xWeeks: {
5709
- one: "1 week",
5710
- other: "{{count}} weeks"
5711
- },
5712
- aboutXMonths: {
5713
- one: "about 1 month",
5714
- other: "about {{count}} months"
5715
- },
5716
- xMonths: {
5717
- one: "1 month",
5718
- other: "{{count}} months"
5719
- },
5720
- aboutXYears: {
5721
- one: "about 1 year",
5722
- other: "about {{count}} years"
5723
- },
5724
- xYears: {
5725
- one: "1 year",
5726
- other: "{{count}} years"
5727
- },
5728
- overXYears: {
5729
- one: "over 1 year",
5730
- other: "over {{count}} years"
5731
- },
5732
- almostXYears: {
5733
- one: "almost 1 year",
5734
- other: "almost {{count}} years"
5735
- }
5736
- };
5737
- var formatDistance = (token, count, options) => {
5738
- let result;
5739
- const tokenValue = formatDistanceLocale[token];
5740
- if (typeof tokenValue === "string") {
5741
- result = tokenValue;
5742
- } else if (count === 1) {
5743
- result = tokenValue.one;
5744
- } else {
5745
- result = tokenValue.other.replace("{{count}}", count.toString());
5746
- }
5747
- if (options?.addSuffix) {
5748
- if (options.comparison && options.comparison > 0) {
5749
- return "in " + result;
5750
- } else {
5751
- return result + " ago";
5752
- }
5753
- }
5754
- return result;
5755
- };
5756
-
5757
- // node_modules/date-fns/locale/_lib/buildFormatLongFn.js
5758
- function buildFormatLongFn(args) {
5759
- return (options = {}) => {
5760
- const width = options.width ? String(options.width) : args.defaultWidth;
5761
- const format2 = args.formats[width] || args.formats[args.defaultWidth];
5762
- return format2;
5763
- };
5764
- }
5765
-
5766
- // node_modules/date-fns/locale/en-US/_lib/formatLong.js
5767
- var dateFormats = {
5768
- full: "EEEE, MMMM do, y",
5769
- long: "MMMM do, y",
5770
- medium: "MMM d, y",
5771
- short: "MM/dd/yyyy"
5772
- };
5773
- var timeFormats = {
5774
- full: "h:mm:ss a zzzz",
5775
- long: "h:mm:ss a z",
5776
- medium: "h:mm:ss a",
5777
- short: "h:mm a"
5778
- };
5779
- var dateTimeFormats = {
5780
- full: "{{date}} 'at' {{time}}",
5781
- long: "{{date}} 'at' {{time}}",
5782
- medium: "{{date}}, {{time}}",
5783
- short: "{{date}}, {{time}}"
5784
- };
5785
- var formatLong = {
5786
- date: buildFormatLongFn({
5787
- formats: dateFormats,
5788
- defaultWidth: "full"
5789
- }),
5790
- time: buildFormatLongFn({
5791
- formats: timeFormats,
5792
- defaultWidth: "full"
5793
- }),
5794
- dateTime: buildFormatLongFn({
5795
- formats: dateTimeFormats,
5796
- defaultWidth: "full"
5797
- })
5798
- };
5799
-
5800
- // node_modules/date-fns/locale/en-US/_lib/formatRelative.js
5801
- var formatRelativeLocale = {
5802
- lastWeek: "'last' eeee 'at' p",
5803
- yesterday: "'yesterday at' p",
5804
- today: "'today at' p",
5805
- tomorrow: "'tomorrow at' p",
5806
- nextWeek: "eeee 'at' p",
5807
- other: "P"
5808
- };
5809
- var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token];
5810
-
5811
- // node_modules/date-fns/locale/_lib/buildLocalizeFn.js
5812
- function buildLocalizeFn(args) {
5813
- return (value, options) => {
5814
- const context = options?.context ? String(options.context) : "standalone";
5815
- let valuesArray;
5816
- if (context === "formatting" && args.formattingValues) {
5817
- const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;
5818
- const width = options?.width ? String(options.width) : defaultWidth;
5819
- valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];
5820
- } else {
5821
- const defaultWidth = args.defaultWidth;
5822
- const width = options?.width ? String(options.width) : args.defaultWidth;
5823
- valuesArray = args.values[width] || args.values[defaultWidth];
5824
- }
5825
- const index = args.argumentCallback ? args.argumentCallback(value) : value;
5826
- return valuesArray[index];
5827
- };
5828
- }
5829
-
5830
- // node_modules/date-fns/locale/en-US/_lib/localize.js
5831
- var eraValues = {
5832
- narrow: ["B", "A"],
5833
- abbreviated: ["BC", "AD"],
5834
- wide: ["Before Christ", "Anno Domini"]
5835
- };
5836
- var quarterValues = {
5837
- narrow: ["1", "2", "3", "4"],
5838
- abbreviated: ["Q1", "Q2", "Q3", "Q4"],
5839
- wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
5840
- };
5841
- var monthValues = {
5842
- narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
5843
- abbreviated: [
5844
- "Jan",
5845
- "Feb",
5846
- "Mar",
5847
- "Apr",
5848
- "May",
5849
- "Jun",
5850
- "Jul",
5851
- "Aug",
5852
- "Sep",
5853
- "Oct",
5854
- "Nov",
5855
- "Dec"
5856
- ],
5857
- wide: [
5858
- "January",
5859
- "February",
5860
- "March",
5861
- "April",
5862
- "May",
5863
- "June",
5864
- "July",
5865
- "August",
5866
- "September",
5867
- "October",
5868
- "November",
5869
- "December"
5870
- ]
5871
- };
5872
- var dayValues = {
5873
- narrow: ["S", "M", "T", "W", "T", "F", "S"],
5874
- short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
5875
- abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
5876
- wide: [
5877
- "Sunday",
5878
- "Monday",
5879
- "Tuesday",
5880
- "Wednesday",
5881
- "Thursday",
5882
- "Friday",
5883
- "Saturday"
5884
- ]
5885
- };
5886
- var dayPeriodValues = {
5887
- narrow: {
5888
- am: "a",
5889
- pm: "p",
5890
- midnight: "mi",
5891
- noon: "n",
5892
- morning: "morning",
5893
- afternoon: "afternoon",
5894
- evening: "evening",
5895
- night: "night"
5896
- },
5897
- abbreviated: {
5898
- am: "AM",
5899
- pm: "PM",
5900
- midnight: "midnight",
5901
- noon: "noon",
5902
- morning: "morning",
5903
- afternoon: "afternoon",
5904
- evening: "evening",
5905
- night: "night"
5906
- },
5907
- wide: {
5908
- am: "a.m.",
5909
- pm: "p.m.",
5910
- midnight: "midnight",
5911
- noon: "noon",
5912
- morning: "morning",
5913
- afternoon: "afternoon",
5914
- evening: "evening",
5915
- night: "night"
5916
- }
5917
- };
5918
- var formattingDayPeriodValues = {
5919
- narrow: {
5920
- am: "a",
5921
- pm: "p",
5922
- midnight: "mi",
5923
- noon: "n",
5924
- morning: "in the morning",
5925
- afternoon: "in the afternoon",
5926
- evening: "in the evening",
5927
- night: "at night"
5928
- },
5929
- abbreviated: {
5930
- am: "AM",
5931
- pm: "PM",
5932
- midnight: "midnight",
5933
- noon: "noon",
5934
- morning: "in the morning",
5935
- afternoon: "in the afternoon",
5936
- evening: "in the evening",
5937
- night: "at night"
5938
- },
5939
- wide: {
5940
- am: "a.m.",
5941
- pm: "p.m.",
5942
- midnight: "midnight",
5943
- noon: "noon",
5944
- morning: "in the morning",
5945
- afternoon: "in the afternoon",
5946
- evening: "in the evening",
5947
- night: "at night"
5948
- }
5949
- };
5950
- var ordinalNumber = (dirtyNumber, _options) => {
5951
- const number = Number(dirtyNumber);
5952
- const rem100 = number % 100;
5953
- if (rem100 > 20 || rem100 < 10) {
5954
- switch (rem100 % 10) {
5955
- case 1:
5956
- return number + "st";
5957
- case 2:
5958
- return number + "nd";
5959
- case 3:
5960
- return number + "rd";
5961
- }
5962
- }
5963
- return number + "th";
5964
- };
5965
- var localize = {
5966
- ordinalNumber,
5967
- era: buildLocalizeFn({
5968
- values: eraValues,
5969
- defaultWidth: "wide"
5970
- }),
5971
- quarter: buildLocalizeFn({
5972
- values: quarterValues,
5973
- defaultWidth: "wide",
5974
- argumentCallback: (quarter) => quarter - 1
5975
- }),
5976
- month: buildLocalizeFn({
5977
- values: monthValues,
5978
- defaultWidth: "wide"
5979
- }),
5980
- day: buildLocalizeFn({
5981
- values: dayValues,
5982
- defaultWidth: "wide"
5983
- }),
5984
- dayPeriod: buildLocalizeFn({
5985
- values: dayPeriodValues,
5986
- defaultWidth: "wide",
5987
- formattingValues: formattingDayPeriodValues,
5988
- defaultFormattingWidth: "wide"
5989
- })
5990
- };
5991
-
5992
- // node_modules/date-fns/locale/_lib/buildMatchFn.js
5993
- function buildMatchFn(args) {
5994
- return (string, options = {}) => {
5995
- const width = options.width;
5996
- const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
5997
- const matchResult = string.match(matchPattern);
5998
- if (!matchResult) {
5999
- return null;
6000
- }
6001
- const matchedString = matchResult[0];
6002
- const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
6003
- const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : (
6004
- // [TODO] -- I challenge you to fix the type
6005
- findKey(parsePatterns, (pattern) => pattern.test(matchedString))
6006
- );
6007
- let value;
6008
- value = args.valueCallback ? args.valueCallback(key) : key;
6009
- value = options.valueCallback ? (
6010
- // [TODO] -- I challenge you to fix the type
6011
- options.valueCallback(value)
6012
- ) : value;
6013
- const rest = string.slice(matchedString.length);
6014
- return { value, rest };
6015
- };
6016
- }
6017
- function findKey(object, predicate) {
6018
- for (const key in object) {
6019
- if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) {
6020
- return key;
6021
- }
6022
- }
6023
- return void 0;
6024
- }
6025
- function findIndex(array, predicate) {
6026
- for (let key = 0; key < array.length; key++) {
6027
- if (predicate(array[key])) {
6028
- return key;
6029
- }
6030
- }
6031
- return void 0;
6032
- }
6033
-
6034
- // node_modules/date-fns/locale/_lib/buildMatchPatternFn.js
6035
- function buildMatchPatternFn(args) {
6036
- return (string, options = {}) => {
6037
- const matchResult = string.match(args.matchPattern);
6038
- if (!matchResult) return null;
6039
- const matchedString = matchResult[0];
6040
- const parseResult = string.match(args.parsePattern);
6041
- if (!parseResult) return null;
6042
- let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
6043
- value = options.valueCallback ? options.valueCallback(value) : value;
6044
- const rest = string.slice(matchedString.length);
6045
- return { value, rest };
6046
- };
6047
- }
6048
-
6049
- // node_modules/date-fns/locale/en-US/_lib/match.js
6050
- var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
6051
- var parseOrdinalNumberPattern = /\d+/i;
6052
- var matchEraPatterns = {
6053
- narrow: /^(b|a)/i,
6054
- abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
6055
- wide: /^(before christ|before common era|anno domini|common era)/i
6056
- };
6057
- var parseEraPatterns = {
6058
- any: [/^b/i, /^(a|c)/i]
6059
- };
6060
- var matchQuarterPatterns = {
6061
- narrow: /^[1234]/i,
6062
- abbreviated: /^q[1234]/i,
6063
- wide: /^[1234](th|st|nd|rd)? quarter/i
6064
- };
6065
- var parseQuarterPatterns = {
6066
- any: [/1/i, /2/i, /3/i, /4/i]
6067
- };
6068
- var matchMonthPatterns = {
6069
- narrow: /^[jfmasond]/i,
6070
- abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
6071
- wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
6072
- };
6073
- var parseMonthPatterns = {
6074
- narrow: [
6075
- /^j/i,
6076
- /^f/i,
6077
- /^m/i,
6078
- /^a/i,
6079
- /^m/i,
6080
- /^j/i,
6081
- /^j/i,
6082
- /^a/i,
6083
- /^s/i,
6084
- /^o/i,
6085
- /^n/i,
6086
- /^d/i
6087
- ],
6088
- any: [
6089
- /^ja/i,
6090
- /^f/i,
6091
- /^mar/i,
6092
- /^ap/i,
6093
- /^may/i,
6094
- /^jun/i,
6095
- /^jul/i,
6096
- /^au/i,
6097
- /^s/i,
6098
- /^o/i,
6099
- /^n/i,
6100
- /^d/i
6101
- ]
6102
- };
6103
- var matchDayPatterns = {
6104
- narrow: /^[smtwf]/i,
6105
- short: /^(su|mo|tu|we|th|fr|sa)/i,
6106
- abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
6107
- wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
6108
- };
6109
- var parseDayPatterns = {
6110
- narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
6111
- any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
6112
- };
6113
- var matchDayPeriodPatterns = {
6114
- narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
6115
- any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
6116
- };
6117
- var parseDayPeriodPatterns = {
6118
- any: {
6119
- am: /^a/i,
6120
- pm: /^p/i,
6121
- midnight: /^mi/i,
6122
- noon: /^no/i,
6123
- morning: /morning/i,
6124
- afternoon: /afternoon/i,
6125
- evening: /evening/i,
6126
- night: /night/i
6127
- }
6128
- };
6129
- var match = {
6130
- ordinalNumber: buildMatchPatternFn({
6131
- matchPattern: matchOrdinalNumberPattern,
6132
- parsePattern: parseOrdinalNumberPattern,
6133
- valueCallback: (value) => parseInt(value, 10)
6134
- }),
6135
- era: buildMatchFn({
6136
- matchPatterns: matchEraPatterns,
6137
- defaultMatchWidth: "wide",
6138
- parsePatterns: parseEraPatterns,
6139
- defaultParseWidth: "any"
6140
- }),
6141
- quarter: buildMatchFn({
6142
- matchPatterns: matchQuarterPatterns,
6143
- defaultMatchWidth: "wide",
6144
- parsePatterns: parseQuarterPatterns,
6145
- defaultParseWidth: "any",
6146
- valueCallback: (index) => index + 1
6147
- }),
6148
- month: buildMatchFn({
6149
- matchPatterns: matchMonthPatterns,
6150
- defaultMatchWidth: "wide",
6151
- parsePatterns: parseMonthPatterns,
6152
- defaultParseWidth: "any"
6153
- }),
6154
- day: buildMatchFn({
6155
- matchPatterns: matchDayPatterns,
6156
- defaultMatchWidth: "wide",
6157
- parsePatterns: parseDayPatterns,
6158
- defaultParseWidth: "any"
6159
- }),
6160
- dayPeriod: buildMatchFn({
6161
- matchPatterns: matchDayPeriodPatterns,
6162
- defaultMatchWidth: "any",
6163
- parsePatterns: parseDayPeriodPatterns,
6164
- defaultParseWidth: "any"
6165
- })
6166
- };
6167
-
6168
- // node_modules/date-fns/locale/en-US.js
6169
- var enUS = {
6170
- code: "en-US",
6171
- formatDistance,
6172
- formatLong,
6173
- formatRelative,
6174
- localize,
6175
- match,
6176
- options: {
6177
- weekStartsOn: 0,
6178
- firstWeekContainsDate: 1
6179
- }
6180
- };
6181
-
6182
- // node_modules/date-fns/getDayOfYear.js
6183
- function getDayOfYear(date, options) {
6184
- const _date = toDate(date, options?.in);
6185
- const diff = differenceInCalendarDays(_date, startOfYear(_date));
6186
- const dayOfYear = diff + 1;
6187
- return dayOfYear;
6188
- }
6189
-
6190
- // node_modules/date-fns/getISOWeek.js
6191
- function getISOWeek(date, options) {
6192
- const _date = toDate(date, options?.in);
6193
- const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);
6194
- return Math.round(diff / millisecondsInWeek) + 1;
6195
- }
6196
-
6197
- // node_modules/date-fns/getWeekYear.js
6198
- function getWeekYear(date, options) {
6199
- const _date = toDate(date, options?.in);
6200
- const year = _date.getFullYear();
6201
- const defaultOptions2 = getDefaultOptions();
6202
- const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
6203
- const firstWeekOfNextYear = constructFrom(options?.in || date, 0);
6204
- firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);
6205
- firstWeekOfNextYear.setHours(0, 0, 0, 0);
6206
- const startOfNextYear = startOfWeek2(firstWeekOfNextYear, options);
6207
- const firstWeekOfThisYear = constructFrom(options?.in || date, 0);
6208
- firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);
6209
- firstWeekOfThisYear.setHours(0, 0, 0, 0);
6210
- const startOfThisYear = startOfWeek2(firstWeekOfThisYear, options);
6211
- if (+_date >= +startOfNextYear) {
6212
- return year + 1;
6213
- } else if (+_date >= +startOfThisYear) {
6214
- return year;
6215
- } else {
6216
- return year - 1;
6217
- }
6218
- }
6219
-
6220
- // node_modules/date-fns/startOfWeekYear.js
6221
- function startOfWeekYear(date, options) {
6222
- const defaultOptions2 = getDefaultOptions();
6223
- const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
6224
- const year = getWeekYear(date, options);
6225
- const firstWeek = constructFrom(options?.in || date, 0);
6226
- firstWeek.setFullYear(year, 0, firstWeekContainsDate);
6227
- firstWeek.setHours(0, 0, 0, 0);
6228
- const _date = startOfWeek2(firstWeek, options);
6229
- return _date;
6230
- }
6231
-
6232
- // node_modules/date-fns/getWeek.js
6233
- function getWeek(date, options) {
6234
- const _date = toDate(date, options?.in);
6235
- const diff = +startOfWeek2(_date, options) - +startOfWeekYear(_date, options);
6236
- return Math.round(diff / millisecondsInWeek) + 1;
6237
- }
6238
-
6239
- // node_modules/date-fns/_lib/addLeadingZeros.js
6240
- function addLeadingZeros(number, targetLength) {
6241
- const sign = number < 0 ? "-" : "";
6242
- const output = Math.abs(number).toString().padStart(targetLength, "0");
6243
- return sign + output;
6244
- }
6245
-
6246
- // node_modules/date-fns/_lib/format/lightFormatters.js
6247
- var lightFormatters = {
6248
- // Year
6249
- y(date, token) {
6250
- const signedYear = date.getFullYear();
6251
- const year = signedYear > 0 ? signedYear : 1 - signedYear;
6252
- return addLeadingZeros(token === "yy" ? year % 100 : year, token.length);
6253
- },
6254
- // Month
6255
- M(date, token) {
6256
- const month = date.getMonth();
6257
- return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2);
6258
- },
6259
- // Day of the month
6260
- d(date, token) {
6261
- return addLeadingZeros(date.getDate(), token.length);
6262
- },
6263
- // AM or PM
6264
- a(date, token) {
6265
- const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am";
6266
- switch (token) {
6267
- case "a":
6268
- case "aa":
6269
- return dayPeriodEnumValue.toUpperCase();
6270
- case "aaa":
6271
- return dayPeriodEnumValue;
6272
- case "aaaaa":
6273
- return dayPeriodEnumValue[0];
6274
- case "aaaa":
6275
- default:
6276
- return dayPeriodEnumValue === "am" ? "a.m." : "p.m.";
6277
- }
6278
- },
6279
- // Hour [1-12]
6280
- h(date, token) {
6281
- return addLeadingZeros(date.getHours() % 12 || 12, token.length);
6282
- },
6283
- // Hour [0-23]
6284
- H(date, token) {
6285
- return addLeadingZeros(date.getHours(), token.length);
6286
- },
6287
- // Minute
6288
- m(date, token) {
6289
- return addLeadingZeros(date.getMinutes(), token.length);
6290
- },
6291
- // Second
6292
- s(date, token) {
6293
- return addLeadingZeros(date.getSeconds(), token.length);
6294
- },
6295
- // Fraction of second
6296
- S(date, token) {
6297
- const numberOfDigits = token.length;
6298
- const milliseconds = date.getMilliseconds();
6299
- const fractionalSeconds = Math.trunc(
6300
- milliseconds * Math.pow(10, numberOfDigits - 3)
6301
- );
6302
- return addLeadingZeros(fractionalSeconds, token.length);
6303
- }
6304
- };
6305
-
6306
- // node_modules/date-fns/_lib/format/formatters.js
6307
- var dayPeriodEnum = {
6308
- midnight: "midnight",
6309
- noon: "noon",
6310
- morning: "morning",
6311
- afternoon: "afternoon",
6312
- evening: "evening",
6313
- night: "night"
6314
- };
6315
- var formatters = {
6316
- // Era
6317
- G: function(date, token, localize2) {
6318
- const era = date.getFullYear() > 0 ? 1 : 0;
6319
- switch (token) {
6320
- // AD, BC
6321
- case "G":
6322
- case "GG":
6323
- case "GGG":
6324
- return localize2.era(era, { width: "abbreviated" });
6325
- // A, B
6326
- case "GGGGG":
6327
- return localize2.era(era, { width: "narrow" });
6328
- // Anno Domini, Before Christ
6329
- case "GGGG":
6330
- default:
6331
- return localize2.era(era, { width: "wide" });
6332
- }
6333
- },
6334
- // Year
6335
- y: function(date, token, localize2) {
6336
- if (token === "yo") {
6337
- const signedYear = date.getFullYear();
6338
- const year = signedYear > 0 ? signedYear : 1 - signedYear;
6339
- return localize2.ordinalNumber(year, { unit: "year" });
6340
- }
6341
- return lightFormatters.y(date, token);
6342
- },
6343
- // Local week-numbering year
6344
- Y: function(date, token, localize2, options) {
6345
- const signedWeekYear = getWeekYear(date, options);
6346
- const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;
6347
- if (token === "YY") {
6348
- const twoDigitYear = weekYear % 100;
6349
- return addLeadingZeros(twoDigitYear, 2);
6350
- }
6351
- if (token === "Yo") {
6352
- return localize2.ordinalNumber(weekYear, { unit: "year" });
6353
- }
6354
- return addLeadingZeros(weekYear, token.length);
6355
- },
6356
- // ISO week-numbering year
6357
- R: function(date, token) {
6358
- const isoWeekYear = getISOWeekYear(date);
6359
- return addLeadingZeros(isoWeekYear, token.length);
6360
- },
6361
- // Extended year. This is a single number designating the year of this calendar system.
6362
- // The main difference between `y` and `u` localizers are B.C. years:
6363
- // | Year | `y` | `u` |
6364
- // |------|-----|-----|
6365
- // | AC 1 | 1 | 1 |
6366
- // | BC 1 | 1 | 0 |
6367
- // | BC 2 | 2 | -1 |
6368
- // Also `yy` always returns the last two digits of a year,
6369
- // while `uu` pads single digit years to 2 characters and returns other years unchanged.
6370
- u: function(date, token) {
6371
- const year = date.getFullYear();
6372
- return addLeadingZeros(year, token.length);
6373
- },
6374
- // Quarter
6375
- Q: function(date, token, localize2) {
6376
- const quarter = Math.ceil((date.getMonth() + 1) / 3);
6377
- switch (token) {
6378
- // 1, 2, 3, 4
6379
- case "Q":
6380
- return String(quarter);
6381
- // 01, 02, 03, 04
6382
- case "QQ":
6383
- return addLeadingZeros(quarter, 2);
6384
- // 1st, 2nd, 3rd, 4th
6385
- case "Qo":
6386
- return localize2.ordinalNumber(quarter, { unit: "quarter" });
6387
- // Q1, Q2, Q3, Q4
6388
- case "QQQ":
6389
- return localize2.quarter(quarter, {
6390
- width: "abbreviated",
6391
- context: "formatting"
6392
- });
6393
- // 1, 2, 3, 4 (narrow quarter; could be not numerical)
6394
- case "QQQQQ":
6395
- return localize2.quarter(quarter, {
6396
- width: "narrow",
6397
- context: "formatting"
6398
- });
6399
- // 1st quarter, 2nd quarter, ...
6400
- case "QQQQ":
6401
- default:
6402
- return localize2.quarter(quarter, {
6403
- width: "wide",
6404
- context: "formatting"
6405
- });
6406
- }
6407
- },
6408
- // Stand-alone quarter
6409
- q: function(date, token, localize2) {
6410
- const quarter = Math.ceil((date.getMonth() + 1) / 3);
6411
- switch (token) {
6412
- // 1, 2, 3, 4
6413
- case "q":
6414
- return String(quarter);
6415
- // 01, 02, 03, 04
6416
- case "qq":
6417
- return addLeadingZeros(quarter, 2);
6418
- // 1st, 2nd, 3rd, 4th
6419
- case "qo":
6420
- return localize2.ordinalNumber(quarter, { unit: "quarter" });
6421
- // Q1, Q2, Q3, Q4
6422
- case "qqq":
6423
- return localize2.quarter(quarter, {
6424
- width: "abbreviated",
6425
- context: "standalone"
6426
- });
6427
- // 1, 2, 3, 4 (narrow quarter; could be not numerical)
6428
- case "qqqqq":
6429
- return localize2.quarter(quarter, {
6430
- width: "narrow",
6431
- context: "standalone"
6432
- });
6433
- // 1st quarter, 2nd quarter, ...
6434
- case "qqqq":
6435
- default:
6436
- return localize2.quarter(quarter, {
6437
- width: "wide",
6438
- context: "standalone"
6439
- });
6440
- }
6441
- },
6442
- // Month
6443
- M: function(date, token, localize2) {
6444
- const month = date.getMonth();
6445
- switch (token) {
6446
- case "M":
6447
- case "MM":
6448
- return lightFormatters.M(date, token);
6449
- // 1st, 2nd, ..., 12th
6450
- case "Mo":
6451
- return localize2.ordinalNumber(month + 1, { unit: "month" });
6452
- // Jan, Feb, ..., Dec
6453
- case "MMM":
6454
- return localize2.month(month, {
6455
- width: "abbreviated",
6456
- context: "formatting"
6457
- });
6458
- // J, F, ..., D
6459
- case "MMMMM":
6460
- return localize2.month(month, {
6461
- width: "narrow",
6462
- context: "formatting"
6463
- });
6464
- // January, February, ..., December
6465
- case "MMMM":
6466
- default:
6467
- return localize2.month(month, { width: "wide", context: "formatting" });
6468
- }
6469
- },
6470
- // Stand-alone month
6471
- L: function(date, token, localize2) {
6472
- const month = date.getMonth();
6473
- switch (token) {
6474
- // 1, 2, ..., 12
6475
- case "L":
6476
- return String(month + 1);
6477
- // 01, 02, ..., 12
6478
- case "LL":
6479
- return addLeadingZeros(month + 1, 2);
6480
- // 1st, 2nd, ..., 12th
6481
- case "Lo":
6482
- return localize2.ordinalNumber(month + 1, { unit: "month" });
6483
- // Jan, Feb, ..., Dec
6484
- case "LLL":
6485
- return localize2.month(month, {
6486
- width: "abbreviated",
6487
- context: "standalone"
6488
- });
6489
- // J, F, ..., D
6490
- case "LLLLL":
6491
- return localize2.month(month, {
6492
- width: "narrow",
6493
- context: "standalone"
6494
- });
6495
- // January, February, ..., December
6496
- case "LLLL":
6497
- default:
6498
- return localize2.month(month, { width: "wide", context: "standalone" });
6499
- }
6500
- },
6501
- // Local week of year
6502
- w: function(date, token, localize2, options) {
6503
- const week = getWeek(date, options);
6504
- if (token === "wo") {
6505
- return localize2.ordinalNumber(week, { unit: "week" });
6506
- }
6507
- return addLeadingZeros(week, token.length);
6508
- },
6509
- // ISO week of year
6510
- I: function(date, token, localize2) {
6511
- const isoWeek = getISOWeek(date);
6512
- if (token === "Io") {
6513
- return localize2.ordinalNumber(isoWeek, { unit: "week" });
6514
- }
6515
- return addLeadingZeros(isoWeek, token.length);
6516
- },
6517
- // Day of the month
6518
- d: function(date, token, localize2) {
6519
- if (token === "do") {
6520
- return localize2.ordinalNumber(date.getDate(), { unit: "date" });
6521
- }
6522
- return lightFormatters.d(date, token);
6523
- },
6524
- // Day of year
6525
- D: function(date, token, localize2) {
6526
- const dayOfYear = getDayOfYear(date);
6527
- if (token === "Do") {
6528
- return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" });
6529
- }
6530
- return addLeadingZeros(dayOfYear, token.length);
6531
- },
6532
- // Day of week
6533
- E: function(date, token, localize2) {
6534
- const dayOfWeek = date.getDay();
6535
- switch (token) {
6536
- // Tue
6537
- case "E":
6538
- case "EE":
6539
- case "EEE":
6540
- return localize2.day(dayOfWeek, {
6541
- width: "abbreviated",
6542
- context: "formatting"
6543
- });
6544
- // T
6545
- case "EEEEE":
6546
- return localize2.day(dayOfWeek, {
6547
- width: "narrow",
6548
- context: "formatting"
6549
- });
6550
- // Tu
6551
- case "EEEEEE":
6552
- return localize2.day(dayOfWeek, {
6553
- width: "short",
6554
- context: "formatting"
6555
- });
6556
- // Tuesday
6557
- case "EEEE":
6558
- default:
6559
- return localize2.day(dayOfWeek, {
6560
- width: "wide",
6561
- context: "formatting"
6562
- });
6563
- }
6564
- },
6565
- // Local day of week
6566
- e: function(date, token, localize2, options) {
6567
- const dayOfWeek = date.getDay();
6568
- const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
6569
- switch (token) {
6570
- // Numerical value (Nth day of week with current locale or weekStartsOn)
6571
- case "e":
6572
- return String(localDayOfWeek);
6573
- // Padded numerical value
6574
- case "ee":
6575
- return addLeadingZeros(localDayOfWeek, 2);
6576
- // 1st, 2nd, ..., 7th
6577
- case "eo":
6578
- return localize2.ordinalNumber(localDayOfWeek, { unit: "day" });
6579
- case "eee":
6580
- return localize2.day(dayOfWeek, {
6581
- width: "abbreviated",
6582
- context: "formatting"
6583
- });
6584
- // T
6585
- case "eeeee":
6586
- return localize2.day(dayOfWeek, {
6587
- width: "narrow",
6588
- context: "formatting"
6589
- });
6590
- // Tu
6591
- case "eeeeee":
6592
- return localize2.day(dayOfWeek, {
6593
- width: "short",
6594
- context: "formatting"
6595
- });
6596
- // Tuesday
6597
- case "eeee":
6598
- default:
6599
- return localize2.day(dayOfWeek, {
6600
- width: "wide",
6601
- context: "formatting"
6602
- });
6603
- }
6604
- },
6605
- // Stand-alone local day of week
6606
- c: function(date, token, localize2, options) {
6607
- const dayOfWeek = date.getDay();
6608
- const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
6609
- switch (token) {
6610
- // Numerical value (same as in `e`)
6611
- case "c":
6612
- return String(localDayOfWeek);
6613
- // Padded numerical value
6614
- case "cc":
6615
- return addLeadingZeros(localDayOfWeek, token.length);
6616
- // 1st, 2nd, ..., 7th
6617
- case "co":
6618
- return localize2.ordinalNumber(localDayOfWeek, { unit: "day" });
6619
- case "ccc":
6620
- return localize2.day(dayOfWeek, {
6621
- width: "abbreviated",
6622
- context: "standalone"
6623
- });
6624
- // T
6625
- case "ccccc":
6626
- return localize2.day(dayOfWeek, {
6627
- width: "narrow",
6628
- context: "standalone"
6629
- });
6630
- // Tu
6631
- case "cccccc":
6632
- return localize2.day(dayOfWeek, {
6633
- width: "short",
6634
- context: "standalone"
6635
- });
6636
- // Tuesday
6637
- case "cccc":
6638
- default:
6639
- return localize2.day(dayOfWeek, {
6640
- width: "wide",
6641
- context: "standalone"
6642
- });
6643
- }
6644
- },
6645
- // ISO day of week
6646
- i: function(date, token, localize2) {
6647
- const dayOfWeek = date.getDay();
6648
- const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;
6649
- switch (token) {
6650
- // 2
6651
- case "i":
6652
- return String(isoDayOfWeek);
6653
- // 02
6654
- case "ii":
6655
- return addLeadingZeros(isoDayOfWeek, token.length);
6656
- // 2nd
6657
- case "io":
6658
- return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" });
6659
- // Tue
6660
- case "iii":
6661
- return localize2.day(dayOfWeek, {
6662
- width: "abbreviated",
6663
- context: "formatting"
6664
- });
6665
- // T
6666
- case "iiiii":
6667
- return localize2.day(dayOfWeek, {
6668
- width: "narrow",
6669
- context: "formatting"
6670
- });
6671
- // Tu
6672
- case "iiiiii":
6673
- return localize2.day(dayOfWeek, {
6674
- width: "short",
6675
- context: "formatting"
6676
- });
6677
- // Tuesday
6678
- case "iiii":
6679
- default:
6680
- return localize2.day(dayOfWeek, {
6681
- width: "wide",
6682
- context: "formatting"
6683
- });
6684
- }
6685
- },
6686
- // AM or PM
6687
- a: function(date, token, localize2) {
6688
- const hours = date.getHours();
6689
- const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am";
6690
- switch (token) {
6691
- case "a":
6692
- case "aa":
6693
- return localize2.dayPeriod(dayPeriodEnumValue, {
6694
- width: "abbreviated",
6695
- context: "formatting"
6696
- });
6697
- case "aaa":
6698
- return localize2.dayPeriod(dayPeriodEnumValue, {
6699
- width: "abbreviated",
6700
- context: "formatting"
6701
- }).toLowerCase();
6702
- case "aaaaa":
6703
- return localize2.dayPeriod(dayPeriodEnumValue, {
6704
- width: "narrow",
6705
- context: "formatting"
6706
- });
6707
- case "aaaa":
6708
- default:
6709
- return localize2.dayPeriod(dayPeriodEnumValue, {
6710
- width: "wide",
6711
- context: "formatting"
6712
- });
6713
- }
6714
- },
6715
- // AM, PM, midnight, noon
6716
- b: function(date, token, localize2) {
6717
- const hours = date.getHours();
6718
- let dayPeriodEnumValue;
6719
- if (hours === 12) {
6720
- dayPeriodEnumValue = dayPeriodEnum.noon;
6721
- } else if (hours === 0) {
6722
- dayPeriodEnumValue = dayPeriodEnum.midnight;
6723
- } else {
6724
- dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am";
6725
- }
6726
- switch (token) {
6727
- case "b":
6728
- case "bb":
6729
- return localize2.dayPeriod(dayPeriodEnumValue, {
6730
- width: "abbreviated",
6731
- context: "formatting"
6732
- });
6733
- case "bbb":
6734
- return localize2.dayPeriod(dayPeriodEnumValue, {
6735
- width: "abbreviated",
6736
- context: "formatting"
6737
- }).toLowerCase();
6738
- case "bbbbb":
6739
- return localize2.dayPeriod(dayPeriodEnumValue, {
6740
- width: "narrow",
6741
- context: "formatting"
6742
- });
6743
- case "bbbb":
6744
- default:
6745
- return localize2.dayPeriod(dayPeriodEnumValue, {
6746
- width: "wide",
6747
- context: "formatting"
6748
- });
6749
- }
6750
- },
6751
- // in the morning, in the afternoon, in the evening, at night
6752
- B: function(date, token, localize2) {
6753
- const hours = date.getHours();
6754
- let dayPeriodEnumValue;
6755
- if (hours >= 17) {
6756
- dayPeriodEnumValue = dayPeriodEnum.evening;
6757
- } else if (hours >= 12) {
6758
- dayPeriodEnumValue = dayPeriodEnum.afternoon;
6759
- } else if (hours >= 4) {
6760
- dayPeriodEnumValue = dayPeriodEnum.morning;
6761
- } else {
6762
- dayPeriodEnumValue = dayPeriodEnum.night;
6763
- }
6764
- switch (token) {
6765
- case "B":
6766
- case "BB":
6767
- case "BBB":
6768
- return localize2.dayPeriod(dayPeriodEnumValue, {
6769
- width: "abbreviated",
6770
- context: "formatting"
6771
- });
6772
- case "BBBBB":
6773
- return localize2.dayPeriod(dayPeriodEnumValue, {
6774
- width: "narrow",
6775
- context: "formatting"
6776
- });
6777
- case "BBBB":
6778
- default:
6779
- return localize2.dayPeriod(dayPeriodEnumValue, {
6780
- width: "wide",
6781
- context: "formatting"
6782
- });
6783
- }
6784
- },
6785
- // Hour [1-12]
6786
- h: function(date, token, localize2) {
6787
- if (token === "ho") {
6788
- let hours = date.getHours() % 12;
6789
- if (hours === 0) hours = 12;
6790
- return localize2.ordinalNumber(hours, { unit: "hour" });
6791
- }
6792
- return lightFormatters.h(date, token);
6793
- },
6794
- // Hour [0-23]
6795
- H: function(date, token, localize2) {
6796
- if (token === "Ho") {
6797
- return localize2.ordinalNumber(date.getHours(), { unit: "hour" });
6798
- }
6799
- return lightFormatters.H(date, token);
6800
- },
6801
- // Hour [0-11]
6802
- K: function(date, token, localize2) {
6803
- const hours = date.getHours() % 12;
6804
- if (token === "Ko") {
6805
- return localize2.ordinalNumber(hours, { unit: "hour" });
6806
- }
6807
- return addLeadingZeros(hours, token.length);
6808
- },
6809
- // Hour [1-24]
6810
- k: function(date, token, localize2) {
6811
- let hours = date.getHours();
6812
- if (hours === 0) hours = 24;
6813
- if (token === "ko") {
6814
- return localize2.ordinalNumber(hours, { unit: "hour" });
6815
- }
6816
- return addLeadingZeros(hours, token.length);
6817
- },
6818
- // Minute
6819
- m: function(date, token, localize2) {
6820
- if (token === "mo") {
6821
- return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" });
6822
- }
6823
- return lightFormatters.m(date, token);
6824
- },
6825
- // Second
6826
- s: function(date, token, localize2) {
6827
- if (token === "so") {
6828
- return localize2.ordinalNumber(date.getSeconds(), { unit: "second" });
6829
- }
6830
- return lightFormatters.s(date, token);
6831
- },
6832
- // Fraction of second
6833
- S: function(date, token) {
6834
- return lightFormatters.S(date, token);
6835
- },
6836
- // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
6837
- X: function(date, token, _localize) {
6838
- const timezoneOffset = date.getTimezoneOffset();
6839
- if (timezoneOffset === 0) {
6840
- return "Z";
6841
- }
6842
- switch (token) {
6843
- // Hours and optional minutes
6844
- case "X":
6845
- return formatTimezoneWithOptionalMinutes(timezoneOffset);
6846
- // Hours, minutes and optional seconds without `:` delimiter
6847
- // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
6848
- // so this token always has the same output as `XX`
6849
- case "XXXX":
6850
- case "XX":
6851
- return formatTimezone(timezoneOffset);
6852
- // Hours, minutes and optional seconds with `:` delimiter
6853
- // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
6854
- // so this token always has the same output as `XXX`
6855
- case "XXXXX":
6856
- case "XXX":
6857
- // Hours and minutes with `:` delimiter
6858
- default:
6859
- return formatTimezone(timezoneOffset, ":");
6860
- }
6861
- },
6862
- // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
6863
- x: function(date, token, _localize) {
6864
- const timezoneOffset = date.getTimezoneOffset();
6865
- switch (token) {
6866
- // Hours and optional minutes
6867
- case "x":
6868
- return formatTimezoneWithOptionalMinutes(timezoneOffset);
6869
- // Hours, minutes and optional seconds without `:` delimiter
6870
- // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
6871
- // so this token always has the same output as `xx`
6872
- case "xxxx":
6873
- case "xx":
6874
- return formatTimezone(timezoneOffset);
6875
- // Hours, minutes and optional seconds with `:` delimiter
6876
- // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
6877
- // so this token always has the same output as `xxx`
6878
- case "xxxxx":
6879
- case "xxx":
6880
- // Hours and minutes with `:` delimiter
6881
- default:
6882
- return formatTimezone(timezoneOffset, ":");
6883
- }
6884
- },
6885
- // Timezone (GMT)
6886
- O: function(date, token, _localize) {
6887
- const timezoneOffset = date.getTimezoneOffset();
6888
- switch (token) {
6889
- // Short
6890
- case "O":
6891
- case "OO":
6892
- case "OOO":
6893
- return "GMT" + formatTimezoneShort(timezoneOffset, ":");
6894
- // Long
6895
- case "OOOO":
6896
- default:
6897
- return "GMT" + formatTimezone(timezoneOffset, ":");
6898
- }
6899
- },
6900
- // Timezone (specific non-location)
6901
- z: function(date, token, _localize) {
6902
- const timezoneOffset = date.getTimezoneOffset();
6903
- switch (token) {
6904
- // Short
6905
- case "z":
6906
- case "zz":
6907
- case "zzz":
6908
- return "GMT" + formatTimezoneShort(timezoneOffset, ":");
6909
- // Long
6910
- case "zzzz":
6911
- default:
6912
- return "GMT" + formatTimezone(timezoneOffset, ":");
6913
- }
6914
- },
6915
- // Seconds timestamp
6916
- t: function(date, token, _localize) {
6917
- const timestamp = Math.trunc(+date / 1e3);
6918
- return addLeadingZeros(timestamp, token.length);
6919
- },
6920
- // Milliseconds timestamp
6921
- T: function(date, token, _localize) {
6922
- return addLeadingZeros(+date, token.length);
6923
- }
6924
- };
6925
- function formatTimezoneShort(offset, delimiter = "") {
6926
- const sign = offset > 0 ? "-" : "+";
6927
- const absOffset = Math.abs(offset);
6928
- const hours = Math.trunc(absOffset / 60);
6929
- const minutes = absOffset % 60;
6930
- if (minutes === 0) {
6931
- return sign + String(hours);
6932
- }
6933
- return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);
6934
- }
6935
- function formatTimezoneWithOptionalMinutes(offset, delimiter) {
6936
- if (offset % 60 === 0) {
6937
- const sign = offset > 0 ? "-" : "+";
6938
- return sign + addLeadingZeros(Math.abs(offset) / 60, 2);
6939
- }
6940
- return formatTimezone(offset, delimiter);
6941
- }
6942
- function formatTimezone(offset, delimiter = "") {
6943
- const sign = offset > 0 ? "-" : "+";
6944
- const absOffset = Math.abs(offset);
6945
- const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);
6946
- const minutes = addLeadingZeros(absOffset % 60, 2);
6947
- return sign + hours + delimiter + minutes;
6948
- }
6949
-
6950
- // node_modules/date-fns/_lib/format/longFormatters.js
6951
- var dateLongFormatter = (pattern, formatLong2) => {
6952
- switch (pattern) {
6953
- case "P":
6954
- return formatLong2.date({ width: "short" });
6955
- case "PP":
6956
- return formatLong2.date({ width: "medium" });
6957
- case "PPP":
6958
- return formatLong2.date({ width: "long" });
6959
- case "PPPP":
6960
- default:
6961
- return formatLong2.date({ width: "full" });
6962
- }
6963
- };
6964
- var timeLongFormatter = (pattern, formatLong2) => {
6965
- switch (pattern) {
6966
- case "p":
6967
- return formatLong2.time({ width: "short" });
6968
- case "pp":
6969
- return formatLong2.time({ width: "medium" });
6970
- case "ppp":
6971
- return formatLong2.time({ width: "long" });
6972
- case "pppp":
6973
- default:
6974
- return formatLong2.time({ width: "full" });
6975
- }
6976
- };
6977
- var dateTimeLongFormatter = (pattern, formatLong2) => {
6978
- const matchResult = pattern.match(/(P+)(p+)?/) || [];
6979
- const datePattern = matchResult[1];
6980
- const timePattern = matchResult[2];
6981
- if (!timePattern) {
6982
- return dateLongFormatter(pattern, formatLong2);
6983
- }
6984
- let dateTimeFormat;
6985
- switch (datePattern) {
6986
- case "P":
6987
- dateTimeFormat = formatLong2.dateTime({ width: "short" });
6988
- break;
6989
- case "PP":
6990
- dateTimeFormat = formatLong2.dateTime({ width: "medium" });
6991
- break;
6992
- case "PPP":
6993
- dateTimeFormat = formatLong2.dateTime({ width: "long" });
6994
- break;
6995
- case "PPPP":
6996
- default:
6997
- dateTimeFormat = formatLong2.dateTime({ width: "full" });
6998
- break;
6999
- }
7000
- return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2));
7001
- };
7002
- var longFormatters = {
7003
- p: timeLongFormatter,
7004
- P: dateTimeLongFormatter
7005
- };
7006
-
7007
- // node_modules/date-fns/_lib/protectedTokens.js
7008
- var dayOfYearTokenRE = /^D+$/;
7009
- var weekYearTokenRE = /^Y+$/;
7010
- var throwTokens = ["D", "DD", "YY", "YYYY"];
7011
- function isProtectedDayOfYearToken(token) {
7012
- return dayOfYearTokenRE.test(token);
7013
- }
7014
- function isProtectedWeekYearToken(token) {
7015
- return weekYearTokenRE.test(token);
7016
- }
7017
- function warnOrThrowProtectedError(token, format2, input) {
7018
- const _message = message(token, format2, input);
7019
- console.warn(_message);
7020
- if (throwTokens.includes(token)) throw new RangeError(_message);
7021
- }
7022
- function message(token, format2, input) {
7023
- const subject = token[0] === "Y" ? "years" : "days of the month";
7024
- return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format2}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;
7025
- }
7026
-
7027
- // node_modules/date-fns/format.js
7028
- var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
7029
- var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
7030
- var escapedStringRegExp = /^'([^]*?)'?$/;
7031
- var doubleQuoteRegExp = /''/g;
7032
- var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
7033
- function format(date, formatStr, options) {
7034
- const defaultOptions2 = getDefaultOptions();
7035
- const locale = defaultOptions2.locale ?? enUS;
7036
- const firstWeekContainsDate = defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
7037
- const weekStartsOn = defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
7038
- const originalDate = toDate(date, options?.in);
7039
- if (!isValid(originalDate)) {
7040
- throw new RangeError("Invalid time value");
7041
- }
7042
- let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => {
7043
- const firstCharacter = substring[0];
7044
- if (firstCharacter === "p" || firstCharacter === "P") {
7045
- const longFormatter = longFormatters[firstCharacter];
7046
- return longFormatter(substring, locale.formatLong);
7047
- }
7048
- return substring;
7049
- }).join("").match(formattingTokensRegExp).map((substring) => {
7050
- if (substring === "''") {
7051
- return { isToken: false, value: "'" };
7052
- }
7053
- const firstCharacter = substring[0];
7054
- if (firstCharacter === "'") {
7055
- return { isToken: false, value: cleanEscapedString(substring) };
7056
- }
7057
- if (formatters[firstCharacter]) {
7058
- return { isToken: true, value: substring };
7059
- }
7060
- if (firstCharacter.match(unescapedLatinCharacterRegExp)) {
7061
- throw new RangeError(
7062
- "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"
7063
- );
7064
- }
7065
- return { isToken: false, value: substring };
7066
- });
7067
- if (locale.localize.preprocessor) {
7068
- parts = locale.localize.preprocessor(originalDate, parts);
7069
- }
7070
- const formatterOptions = {
7071
- firstWeekContainsDate,
7072
- weekStartsOn,
7073
- locale
7074
- };
7075
- return parts.map((part) => {
7076
- if (!part.isToken) return part.value;
7077
- const token = part.value;
7078
- if (isProtectedWeekYearToken(token) || isProtectedDayOfYearToken(token)) {
7079
- warnOrThrowProtectedError(token, formatStr, String(date));
7080
- }
7081
- const formatter = formatters[token[0]];
7082
- return formatter(originalDate, token, locale.localize, formatterOptions);
7083
- }).join("");
7084
- }
7085
- function cleanEscapedString(input) {
7086
- const matched = input.match(escapedStringRegExp);
7087
- if (!matched) {
7088
- return input;
7089
- }
7090
- return matched[1].replace(doubleQuoteRegExp, "'");
7091
- }
7092
-
7093
- // node_modules/date-fns/isSameMonth.js
7094
- function isSameMonth(laterDate, earlierDate, options) {
7095
- const [laterDate_, earlierDate_] = normalizeDates(
7096
- options?.in,
7097
- laterDate,
7098
- earlierDate
7099
- );
7100
- return laterDate_.getFullYear() === earlierDate_.getFullYear() && laterDate_.getMonth() === earlierDate_.getMonth();
7101
- }
7102
5372
  var DEFAULT_COLUMN_WIDTH = {
7103
5373
  days: 56,
7104
5374
  weeks: 80,
@@ -7112,7 +5382,7 @@ var EDGE_HIT_PX = 8;
7112
5382
  var LONG_PRESS_MS = 300;
7113
5383
  function startOfScale(date, scale) {
7114
5384
  if (scale === "days") return startOfDay(date);
7115
- if (scale === "weeks") return startOfWeek2(date, { weekStartsOn: 1 });
5385
+ if (scale === "weeks") return startOfWeek$1(date, { weekStartsOn: 1 });
7116
5386
  return startOfMonth(date);
7117
5387
  }
7118
5388
  function endOfScale(date, scale) {
@@ -8719,7 +6989,7 @@ function Sparkline({
8719
6989
  const max = Math.max(...data);
8720
6990
  const range = max - min || 1;
8721
6991
  const pad = 2;
8722
- const lastY = pad + (1 - (data[data.length - 1] - min) / range) * (height - pad * 2);
6992
+ const lastY = pad + (1 - ((data.at(-1) ?? 0) - min) / range) * (height - pad * 2);
8723
6993
  const areaPath = type === "area" ? `${path} L ${width - pad},${height - pad} L ${pad},${height - pad} Z` : void 0;
8724
6994
  return /* @__PURE__ */ jsxs(
8725
6995
  "svg",
@@ -8743,7 +7013,7 @@ var colorMap2 = {
8743
7013
  warning: "bg-yellow-500",
8744
7014
  error: "bg-red-500"
8745
7015
  };
8746
- var sizeMap3 = {
7016
+ var sizeMap4 = {
8747
7017
  sm: "h-1.5 w-1.5",
8748
7018
  md: "h-2.5 w-2.5",
8749
7019
  lg: "h-3.5 w-3.5"
@@ -8751,7 +7021,7 @@ var sizeMap3 = {
8751
7021
  function BeaconDot({ color = "primary", size = "md" }) {
8752
7022
  return /* @__PURE__ */ jsxs("span", { className: "relative flex", children: [
8753
7023
  /* @__PURE__ */ jsx("span", { className: cn("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75", colorMap2[color]) }),
8754
- /* @__PURE__ */ jsx("span", { className: cn("relative inline-flex rounded-full", sizeMap3[size], colorMap2[color]) })
7024
+ /* @__PURE__ */ jsx("span", { className: cn("relative inline-flex rounded-full", sizeMap4[size], colorMap2[color]) })
8755
7025
  ] });
8756
7026
  }
8757
7027
  function Beacon({ color = "primary", size = "md", children, className }) {
@@ -9194,7 +7464,7 @@ function ArrayField({
9194
7464
  }
9195
7465
  var DAYS2 = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
9196
7466
  var MONTHS2 = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
9197
- function isSameDay2(a, b) {
7467
+ function isSameDay(a, b) {
9198
7468
  return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
9199
7469
  }
9200
7470
  function getDaysInMonth(year, month) {
@@ -9213,8 +7483,8 @@ function CalendarGrid({ year, month, selected, onSelect }) {
9213
7483
  cells.map((day, i) => {
9214
7484
  if (!day) return /* @__PURE__ */ jsx("div", {}, i);
9215
7485
  const date = new Date(year, month, day);
9216
- const isToday = isSameDay2(date, today);
9217
- const isSelected = selected && isSameDay2(date, selected);
7486
+ const isToday = isSameDay(date, today);
7487
+ const isSelected = selected && isSameDay(date, selected);
9218
7488
  return /* @__PURE__ */ jsx(
9219
7489
  "button",
9220
7490
  {
@@ -9371,6 +7641,7 @@ function FieldRenderer({ name, field, register, setValue, watch, error }) {
9371
7641
  }
9372
7642
  function AutoForm({ schema, onSubmit, defaultValues, submitLabel = "Submit" }) {
9373
7643
  const { register, handleSubmit, setValue, watch, formState } = useForm({
7644
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9374
7645
  resolver: zodResolver(schema),
9375
7646
  defaultValues
9376
7647
  });
@@ -9394,18 +7665,18 @@ function AutoForm({ schema, onSubmit, defaultValues, submitLabel = "Submit" }) {
9394
7665
  var HEX_RE = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
9395
7666
  var RGB_RE = /^rgba?\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*(,\s*(0|1|0?\.\d+)\s*)?\)$/i;
9396
7667
  var HSL_RE = /^hsla?\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*(,\s*(0|1|0?\.\d+)\s*)?\)$/i;
9397
- function isValid2(value, format2, showAlpha) {
9398
- if (format2 === "hex") {
7668
+ function isValid(value, format3, showAlpha) {
7669
+ if (format3 === "hex") {
9399
7670
  if (!HEX_RE.test(value)) return false;
9400
7671
  if (!showAlpha && (value.length === 5 || value.length === 9)) return false;
9401
7672
  return true;
9402
7673
  }
9403
- if (format2 === "rgb") return RGB_RE.test(value);
7674
+ if (format3 === "rgb") return RGB_RE.test(value);
9404
7675
  return HSL_RE.test(value);
9405
7676
  }
9406
- function defaultFor(format2, showAlpha) {
9407
- if (format2 === "hex") return showAlpha ? "#3b82f6ff" : "#3b82f6";
9408
- if (format2 === "rgb") return showAlpha ? "rgba(59, 130, 246, 1)" : "rgb(59, 130, 246)";
7677
+ function defaultFor(format3, showAlpha) {
7678
+ if (format3 === "hex") return showAlpha ? "#3b82f6ff" : "#3b82f6";
7679
+ if (format3 === "rgb") return showAlpha ? "rgba(59, 130, 246, 1)" : "rgb(59, 130, 246)";
9409
7680
  return showAlpha ? "hsla(217, 91%, 60%, 1)" : "hsl(217, 91%, 60%)";
9410
7681
  }
9411
7682
  var ColorPicker = React131__default.forwardRef(
@@ -9413,7 +7684,7 @@ var ColorPicker = React131__default.forwardRef(
9413
7684
  value: valueProp,
9414
7685
  defaultValue,
9415
7686
  onValueChange,
9416
- format: format2 = "hex",
7687
+ format: format3 = "hex",
9417
7688
  showAlpha = false,
9418
7689
  swatches,
9419
7690
  showEyeDropper = true,
@@ -9421,7 +7692,7 @@ var ColorPicker = React131__default.forwardRef(
9421
7692
  className,
9422
7693
  ...props
9423
7694
  }, ref) => {
9424
- const fallback = defaultValue ?? defaultFor(format2, showAlpha);
7695
+ const fallback = defaultValue ?? defaultFor(format3, showAlpha);
9425
7696
  const isControlled = valueProp !== void 0;
9426
7697
  const [internal, setInternal] = React131__default.useState(fallback);
9427
7698
  const value = isControlled ? valueProp : internal;
@@ -9447,7 +7718,7 @@ var ColorPicker = React131__default.forwardRef(
9447
7718
  const handleDraftChange = (e) => {
9448
7719
  const next = e.target.value;
9449
7720
  setDraft(next);
9450
- const valid = isValid2(next, format2, showAlpha);
7721
+ const valid = isValid(next, format3, showAlpha);
9451
7722
  setDraftValid(valid || next === "");
9452
7723
  if (valid) commit(next);
9453
7724
  };
@@ -9470,9 +7741,9 @@ var ColorPicker = React131__default.forwardRef(
9470
7741
  disabled && "pointer-events-none opacity-50 grayscale"
9471
7742
  )
9472
7743
  };
9473
- if (format2 === "hex" && showAlpha) return /* @__PURE__ */ jsx(HexAlphaColorPicker, { ...common });
9474
- if (format2 === "hex") return /* @__PURE__ */ jsx(HexColorPicker, { ...common });
9475
- if (format2 === "rgb") return /* @__PURE__ */ jsx(RgbStringColorPicker, { ...common });
7744
+ if (format3 === "hex" && showAlpha) return /* @__PURE__ */ jsx(HexAlphaColorPicker, { ...common });
7745
+ if (format3 === "hex") return /* @__PURE__ */ jsx(HexColorPicker, { ...common });
7746
+ if (format3 === "rgb") return /* @__PURE__ */ jsx(RgbStringColorPicker, { ...common });
9476
7747
  return /* @__PURE__ */ jsx(HslStringColorPicker, { ...common });
9477
7748
  })();
9478
7749
  const showDropper = showEyeDropper && eyeDropperSupported;
@@ -9540,7 +7811,7 @@ var ColorPicker = React131__default.forwardRef(
9540
7811
  "font-mono text-xs",
9541
7812
  !draftValid && "border-[hsl(var(--destructive))] focus-visible:ring-[hsl(var(--destructive))]"
9542
7813
  ),
9543
- "aria-label": `Color value (${format2})`,
7814
+ "aria-label": `Color value (${format3})`,
9544
7815
  "aria-invalid": !draftValid
9545
7816
  }
9546
7817
  ),
@@ -9674,7 +7945,91 @@ function FileUploadPreview({ files, onRemove, className }) {
9674
7945
  ] })
9675
7946
  ] }, i)) });
9676
7947
  }
9677
- var FormLabel2 = React131__default.forwardRef(
7948
+ var FloatingLabelInput = React131__default.forwardRef(
7949
+ ({ label, error, hint, wrapperClassName, className, id, value, defaultValue, onFocus, onBlur, onChange, ...props }, ref) => {
7950
+ const autoId = useId();
7951
+ const inputId = id ?? autoId;
7952
+ const errorId = error ? `${inputId}-error` : void 0;
7953
+ const hintId = hint ? `${inputId}-hint` : void 0;
7954
+ const describedBy = [errorId, hintId].filter(Boolean).join(" ") || void 0;
7955
+ const [focused, setFocused] = useState(false);
7956
+ const [filled, setFilled] = useState(() => {
7957
+ if (value !== void 0 && value !== null && value !== "") return true;
7958
+ if (defaultValue !== void 0 && defaultValue !== null && defaultValue !== "") return true;
7959
+ return false;
7960
+ });
7961
+ const isFloated = focused || filled;
7962
+ return /* @__PURE__ */ jsxs("div", { "data-slot": "floating-label-input", className: cn("flex flex-col gap-1.5", wrapperClassName), children: [
7963
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
7964
+ /* @__PURE__ */ jsx(
7965
+ "input",
7966
+ {
7967
+ ref,
7968
+ id: inputId,
7969
+ value,
7970
+ defaultValue,
7971
+ "data-slot": "input",
7972
+ "data-state": isFloated ? "floated" : "rest",
7973
+ "aria-invalid": Boolean(error) || void 0,
7974
+ "aria-describedby": describedBy,
7975
+ onFocus: (e) => {
7976
+ setFocused(true);
7977
+ onFocus?.(e);
7978
+ },
7979
+ onBlur: (e) => {
7980
+ setFocused(false);
7981
+ onBlur?.(e);
7982
+ },
7983
+ onChange: (e) => {
7984
+ setFilled(e.target.value.length > 0);
7985
+ onChange?.(e);
7986
+ },
7987
+ className: cn(
7988
+ // Reset + structure
7989
+ "peer w-full appearance-none bg-transparent",
7990
+ "h-14 rounded-md border px-3 pt-5 pb-1.5",
7991
+ "text-base text-foreground leading-tight",
7992
+ // Border / focus ring colors
7993
+ "border-input focus:border-ring focus:outline-none focus:ring-2 focus:ring-ring/30",
7994
+ error && "border-destructive focus:border-destructive focus:ring-destructive/30",
7995
+ "disabled:cursor-not-allowed disabled:opacity-50",
7996
+ "placeholder:text-transparent",
7997
+ // hide native placeholder; label takes its job
7998
+ className
7999
+ ),
8000
+ ...props
8001
+ }
8002
+ ),
8003
+ /* @__PURE__ */ jsx(
8004
+ "label",
8005
+ {
8006
+ htmlFor: inputId,
8007
+ className: cn(
8008
+ "pointer-events-none absolute left-3",
8009
+ "origin-[0_50%] transition-all duration-150 ease-out",
8010
+ "text-muted-foreground",
8011
+ // Rest: centered vertically inside the field, full size
8012
+ !isFloated && "top-1/2 -translate-y-1/2 text-base",
8013
+ // Floated: tucked into the top with a small subtle background
8014
+ isFloated && "top-1.5 text-[11px] uppercase tracking-wider text-foreground/85",
8015
+ error && "text-destructive"
8016
+ ),
8017
+ children: label
8018
+ }
8019
+ )
8020
+ ] }),
8021
+ error ? /* @__PURE__ */ jsx("p", { id: errorId, className: "text-xs text-destructive", children: error }) : hint ? /* @__PURE__ */ jsx("p", { id: hintId, className: "text-xs text-muted-foreground", children: hint }) : null
8022
+ ] });
8023
+ }
8024
+ );
8025
+ FloatingLabelInput.displayName = "FloatingLabelInput";
8026
+ function FormField(props) {
8027
+ return /* @__PURE__ */ jsx(Controller, { ...props });
8028
+ }
8029
+ function FormItem({ className, ...props }) {
8030
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-1.5", className), ...props });
8031
+ }
8032
+ var FormLabel = React131__default.forwardRef(
9678
8033
  ({ className, error, ...props }, ref) => /* @__PURE__ */ jsx(
9679
8034
  "label",
9680
8035
  {
@@ -9688,14 +8043,24 @@ var FormLabel2 = React131__default.forwardRef(
9688
8043
  }
9689
8044
  )
9690
8045
  );
9691
- FormLabel2.displayName = "FormLabel";
9692
- var FormControl2 = React131__default.forwardRef(
8046
+ FormLabel.displayName = "FormLabel";
8047
+ var FormControl = React131__default.forwardRef(
9693
8048
  ({ ...props }, ref) => {
9694
8049
  const id = useId();
9695
8050
  return /* @__PURE__ */ jsx("div", { ref, id, ...props });
9696
8051
  }
9697
8052
  );
9698
- FormControl2.displayName = "FormControl";
8053
+ FormControl.displayName = "FormControl";
8054
+ function FormDescription({ className, ...props }) {
8055
+ return /* @__PURE__ */ jsx("p", { className: cn("text-xs text-[hsl(var(--muted-foreground))]", className), ...props });
8056
+ }
8057
+ function FormMessage({ className, children, name }) {
8058
+ const { formState } = useFormContext();
8059
+ const error = name ? formState.errors[name] : void 0;
8060
+ const message = error?.message ? String(error.message) : children;
8061
+ if (!message) return null;
8062
+ return /* @__PURE__ */ jsx("p", { className: cn("text-xs text-[hsl(var(--destructive))]", className), children: message });
8063
+ }
9699
8064
  function ObjectField({
9700
8065
  title,
9701
8066
  description,
@@ -10178,7 +8543,7 @@ var MobileSidebarTrigger = React131__default.forwardRef(
10178
8543
  }
10179
8544
  );
10180
8545
  MobileSidebarTrigger.displayName = "MobileSidebarTrigger";
10181
- var sizeMap4 = {
8546
+ var sizeMap5 = {
10182
8547
  sm: "max-w-screen-sm",
10183
8548
  md: "max-w-screen-md",
10184
8549
  lg: "max-w-screen-lg",
@@ -10192,7 +8557,7 @@ var Container = React131__default.forwardRef(
10192
8557
  ref,
10193
8558
  className: cn(
10194
8559
  "mx-auto w-full",
10195
- sizeMap4[size],
8560
+ sizeMap5[size],
10196
8561
  !noPadding && "px-4 sm:px-6 lg:px-8",
10197
8562
  className
10198
8563
  ),
@@ -10795,9 +9160,9 @@ function nextId() {
10795
9160
  return `toast-${++_id}`;
10796
9161
  }
10797
9162
  var toastEmitter = {
10798
- emit(message2, options = {}) {
9163
+ emit(message, options = {}) {
10799
9164
  const id = options.id ?? nextId();
10800
- const event = { id, message: message2, options };
9165
+ const event = { id, message, options };
10801
9166
  listeners.forEach((fn) => fn(event));
10802
9167
  return id;
10803
9168
  },
@@ -10819,13 +9184,13 @@ var toastEmitter = {
10819
9184
  };
10820
9185
  }
10821
9186
  };
10822
- function toastFn(message2, opts) {
10823
- return toastEmitter.emit(message2, opts);
9187
+ function toastFn(message, opts) {
9188
+ return toastEmitter.emit(message, opts);
10824
9189
  }
10825
- toastFn.success = (message2, opts) => toastEmitter.emit(message2, { ...opts, type: "success" });
10826
- toastFn.error = (message2, opts) => toastEmitter.emit(message2, { ...opts, type: "error" });
10827
- toastFn.warning = (message2, opts) => toastEmitter.emit(message2, { ...opts, type: "warning" });
10828
- toastFn.info = (message2, opts) => toastEmitter.emit(message2, { ...opts, type: "info" });
9190
+ toastFn.success = (message, opts) => toastEmitter.emit(message, { ...opts, type: "success" });
9191
+ toastFn.error = (message, opts) => toastEmitter.emit(message, { ...opts, type: "error" });
9192
+ toastFn.warning = (message, opts) => toastEmitter.emit(message, { ...opts, type: "warning" });
9193
+ toastFn.info = (message, opts) => toastEmitter.emit(message, { ...opts, type: "info" });
10829
9194
  toastFn.dismiss = (id) => toastEmitter.dismiss(id);
10830
9195
  var iconMap = {
10831
9196
  success: /* @__PURE__ */ jsx(CheckCircle, { className: "h-4 w-4 text-green-500" }),
@@ -10987,8 +9352,8 @@ GradientHeading.displayName = "GradientHeading";
10987
9352
  function easeOutExpo(t) {
10988
9353
  return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);
10989
9354
  }
10990
- function formatNumber(value, decimals, format2, locale) {
10991
- if (format2) {
9355
+ function formatNumber(value, decimals, format3, locale) {
9356
+ if (format3) {
10992
9357
  return new Intl.NumberFormat(locale, {
10993
9358
  minimumFractionDigits: decimals,
10994
9359
  maximumFractionDigits: decimals
@@ -11007,7 +9372,7 @@ var AnimatedNumber = React131__default.forwardRef(
11007
9372
  easing = easeOutExpo,
11008
9373
  autoStart = true,
11009
9374
  locale,
11010
- format: format2 = true,
9375
+ format: format3 = true,
11011
9376
  className,
11012
9377
  ...props
11013
9378
  }, ref) => {
@@ -11085,7 +9450,7 @@ var AnimatedNumber = React131__default.forwardRef(
11085
9450
  ...props,
11086
9451
  children: [
11087
9452
  prefix,
11088
- formatNumber(displayed, decimals, format2, locale),
9453
+ formatNumber(displayed, decimals, format3, locale),
11089
9454
  suffix
11090
9455
  ]
11091
9456
  }
@@ -12200,13 +10565,13 @@ function eventOverlapsDay(event, day) {
12200
10565
  }
12201
10566
  function getMonthMatrix(date, weekStartsOn) {
12202
10567
  const monthStart = startOfMonth(date);
12203
- const gridStart = startOfWeek2(monthStart, { weekStartsOn });
10568
+ const gridStart = startOfWeek$1(monthStart, { weekStartsOn });
12204
10569
  const cells = [];
12205
10570
  for (let i = 0; i < 42; i++) cells.push(addDays(gridStart, i));
12206
10571
  return cells;
12207
10572
  }
12208
10573
  function getWeekDays(date, weekStartsOn) {
12209
- const start = startOfWeek2(date, { weekStartsOn });
10574
+ const start = startOfWeek$1(date, { weekStartsOn });
12210
10575
  return Array.from({ length: 7 }, (_, i) => addDays(start, i));
12211
10576
  }
12212
10577
  var EventCalendar = React131__default.forwardRef(
@@ -12266,7 +10631,7 @@ var EventCalendar = React131__default.forwardRef(
12266
10631
  const headerLabel = React131__default.useMemo(() => {
12267
10632
  if (view === "month") return format(date, "MMMM yyyy");
12268
10633
  if (view === "week") {
12269
- const start = startOfWeek2(date, { weekStartsOn });
10634
+ const start = startOfWeek$1(date, { weekStartsOn });
12270
10635
  const end = addDays(start, 6);
12271
10636
  if (isSameMonth(start, end)) return `${format(start, "MMM d")} \u2013 ${format(end, "d, yyyy")}`;
12272
10637
  return `${format(start, "MMM d")} \u2013 ${format(end, "MMM d, yyyy")}`;
@@ -12417,7 +10782,7 @@ function MonthView({
12417
10782
  [date, weekStartsOn]
12418
10783
  );
12419
10784
  const weekdayLabels = React131__default.useMemo(() => {
12420
- const start = startOfWeek2(/* @__PURE__ */ new Date(), { weekStartsOn });
10785
+ const start = startOfWeek$1(/* @__PURE__ */ new Date(), { weekStartsOn });
12421
10786
  return Array.from({ length: 7 }, (_, i) => format(addDays(start, i), "EEE"));
12422
10787
  }, [weekStartsOn]);
12423
10788
  const today = /* @__PURE__ */ new Date();
@@ -12432,7 +10797,7 @@ function MonthView({
12432
10797
  )) }),
12433
10798
  /* @__PURE__ */ jsx("div", { role: "grid", "aria-label": "Month grid", className: "grid grid-cols-7", children: cells.map((cell) => {
12434
10799
  const inMonth = isSameMonth(cell, date);
12435
- const isToday = isSameDay(cell, today);
10800
+ const isToday = isSameDay$1(cell, today);
12436
10801
  const dayEvents = events.filter((ev) => eventOverlapsDay(ev, cell)).sort((a, b) => a.start.getTime() - b.start.getTime());
12437
10802
  const visible = dayEvents.slice(0, 3);
12438
10803
  const overflow = dayEvents.length - visible.length;
@@ -12593,7 +10958,7 @@ function HourGrid({
12593
10958
  DayColumn,
12594
10959
  {
12595
10960
  day,
12596
- isToday: isSameDay(day, today),
10961
+ isToday: isSameDay$1(day, today),
12597
10962
  events: events.filter((ev) => eventOverlapsDay(ev, day)),
12598
10963
  onEventClick,
12599
10964
  onEventCreate,
@@ -12888,7 +11253,7 @@ function buildDefaultCrop(defaultCrop, aspect, imgWidth, imgHeight) {
12888
11253
  }
12889
11254
  return { unit: "%", x: 10, y: 10, width: 80, height: 80 };
12890
11255
  }
12891
- async function extractCroppedDataUrl(image, crop, format2, quality) {
11256
+ async function extractCroppedDataUrl(image, crop, format3, quality) {
12892
11257
  const scaleX = image.naturalWidth / image.width;
12893
11258
  const scaleY = image.naturalHeight / image.height;
12894
11259
  const canvas = document.createElement("canvas");
@@ -12908,7 +11273,7 @@ async function extractCroppedDataUrl(image, crop, format2, quality) {
12908
11273
  canvas.width,
12909
11274
  canvas.height
12910
11275
  );
12911
- const mime = format2 === "jpeg" ? "image/jpeg" : format2 === "webp" ? "image/webp" : "image/png";
11276
+ const mime = format3 === "jpeg" ? "image/jpeg" : format3 === "webp" ? "image/webp" : "image/png";
12912
11277
  return canvas.toDataURL(mime, quality);
12913
11278
  }
12914
11279
  var ImageCrop = React131__default.forwardRef(
@@ -14384,6 +12749,6 @@ function SortableNav({ items, onReorder, className }) {
14384
12749
  return /* @__PURE__ */ jsx(DndContext, { sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx(SortableContext, { items: items.map((i) => i.id), strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx("nav", { "data-slot": "sortable-nav", className: cn("space-y-0.5 px-2 py-1", className), children: items.map((item) => /* @__PURE__ */ jsx(SortableNavItemWrapper, { item }, item.id)) }) }) });
14385
12750
  }
14386
12751
 
14387
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityHeatmap, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedGradient, AnimatedNumber, AppShell, AppShellMain, AppShellSidebar, AppShellUserMenu, Sidebar as AppSidebar, AreaChart, ArrayField, AspectRatio, AutoForm, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Banner, BarChart, BarList, Beacon, BillingStatus, Body, Breadcrumb, BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator, BulkActions, Button, Calendar, CalendarDayButton, Caption, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatDetail, Checkbox, Checklist, ChecklistItem, Code3 as Code, CodeBlock, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, ColorSchemeSelect, Combobox, Command, CommandBar, CommandBarEmpty, CommandBarGroup, CommandBarItem, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandList, CommandPalette, CommandPaletteProvider, CommandSeparator, CommandShortcut, Comparison, Container, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_THEME_OPTIONS, DEFAULT_TRANSITION, DataGrid, DataList, DataListItem, DataTable, DataTableColumnHeader, DataTablePagination, DataTableToolbar, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DottedBackground, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateIcon, EventCalendar, FadeIn, FeedbackModal, Field, FieldDescription, FieldError, FieldLabel, FileCards, FileUpload, FileUploadPreview, FilesList, FilterBadge, FilterItem, Filters, FloatingActionButton, FloatingThemePicker, Gantt, GradientBackground, GradientHeading, GridList, GridListItem, HStack, Heading, Heatmap, HelpSheet, HeroShaderA, HotkeyBadge, Hotkeys, HotkeysProvider, HoverCard, HoverCardContent, HoverCardTrigger, IconBadge, ImageCrop, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, IntegrationCard, IntroDisclosure, InviteModal, Kanban, KanbanCard, KanbanColumn, Label3 as Label, LineChart, LoadingOverlay, LogoCarousel, MOTION_PRESETS, ManageTagsModal, Marquee, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessagesCard, MetricCard, MetricCardWithButton, MetricCardWithIcon, MobileSidebarTrigger, Morph, Navbar, NavbarBrand, NavbarContent, NavbarItem, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NoiseBackground, NotificationSettings, ObjectField, OrgMenu, Page, PageActions, PageBody, PageContainer, PageDescription, PageHeader, PageLayout, PageMain, PageTitle, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaletteSwatches, Parallax, PasswordInput, Persona, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, PropertyItem, PropertyList, QrCode, RadioGroup4 as RadioGroup, RadioGroupItem, Rating, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResizeBox, ResizeHandle, Reveal, RichEditor, Ripple, RolesMenu, ScaleIn, ScrollArea, ScrollBar, ScrollHeader, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectUsersModal, SelectValue, Separator6 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, AppShell2 as Shell, Sidebar2 as Sidebar, SidebarContent, SidebarFooter2 as SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader2 as SidebarHeader, SidebarItem2 as SidebarItem, SidebarLayoutDashboard, SidebarLayoutGroups, SidebarLayoutMinimal, SidebarLayoutSearch, SidebarLayoutUser, SidebarResizer, SidebarSeparator2 as SidebarSeparator, Skeleton, SlideIn, Slider, SortableNav, SortableTaskList, Sparkline, Spinner, SplitPage, SplitPageDetail, SplitPageList, Stack, StackedLayoutBranded, StackedLayoutTabs, Stagger, Stat, StatGroup, StepForm, StepFormNavigation, StepFormStep, Stepper, StepperStep, StructuredList, StructuredListItem, StructuredListSection, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tags, TaskCard, TaskCardWithLabels, TextReveal, Textarea, TextureCard, TextureCardDescription, TextureCardHeader, TextureCardTitle, ThemeSwitch, Timeline, TimelineConnector, TimelineContent, TimelineItem, Toaster, Toggle, ToggleButton, ToggleButtonGroup, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TourStep, Transition, Tree, Typewriter, UserMenu, VStack, VideoPlayer, WorkspaceMembers, WorkspacesMenu, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, toastFn as toast, toastEmitter, toggleVariants, useAppShell, useCommandBar, useCommandPalette, useFormField, useHotkeys, useLayoutId, useSidebar, useTour };
12752
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityHeatmap, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedGradient, AnimatedNumber, AppShell, AppShellMain, AppShellSidebar, AppShellUserMenu, Sidebar as AppSidebar, AreaChart, ArrayField, AspectRatio, AutoForm, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Banner, BarChart, BarList, Beacon, BillingStatus, Body, Breadcrumb, BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator, BulkActions, Button, Calendar, CalendarDayButton, Caption, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatDetail, Checkbox, Checklist, ChecklistItem, Code3 as Code, CodeBlock, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, ColorSchemeSelect, Combobox, Command, CommandBar, CommandBarEmpty, CommandBarGroup, CommandBarItem, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandItem2 as CommandListItem, CommandPalette, CommandPaletteProvider, CommandSeparator, CommandShortcut, Comparison, Container, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_THEME_OPTIONS, DEFAULT_TRANSITION, DataGrid, DataList, DataListItem, DataTable, DataTableColumnHeader, DataTablePagination, DataTableToolbar, DatePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DottedBackground, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateIcon, EventCalendar, FadeIn, FeedbackModal, Field, FieldDescription, FieldError, FieldLabel, FileCards, FileUpload, FileUploadPreview, FilesList, FilterBadge, FilterItem, Filters, FloatingActionButton, FloatingLabelInput, FloatingThemePicker, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gantt, GradientBackground, GradientHeading, GridList, GridListItem, HStack, Heading, Heatmap, HelpSheet, HeroShaderA, HotkeyBadge, Hotkeys, HotkeysProvider, HoverCard, HoverCardContent, HoverCardTrigger, IconBadge, ImageCrop, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, IntegrationCard, IntroDisclosure, InviteModal, Kanban, KanbanCard, KanbanColumn, Label3 as Label, LineChart, LoadingOverlay, LogoCarousel, MOTION_PRESETS, ManageTagsModal, Marquee, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessagesCard, MetricCard, MetricCardWithButton, MetricCardWithIcon, MobileSidebarTrigger, Morph, Navbar, NavbarBrand, NavbarContent, NavbarItem, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NoiseBackground, NotificationSettings, ObjectField, OrgMenu, Page, PageActions, PageBody, PageContainer, PageDescription, PageHeader, PageLayout, PageMain, PageTitle, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaletteSwatches, Parallax, PasswordInput, Persona, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, PropertyItem, PropertyList, QrCode, RadioGroup4 as RadioGroup, RadioGroupItem, Rating, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResizeBox, ResizeHandle, Reveal, RichEditor, Ripple, RolesMenu, ScaleIn, ScrollArea, ScrollBar, ScrollHeader, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectUsersModal, SelectValue, Separator6 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, AppShell2 as Shell, Sidebar2 as Sidebar, SidebarContent, SidebarFooter2 as SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader2 as SidebarHeader, SidebarItem2 as SidebarItem, SidebarLayoutDashboard, SidebarLayoutGroups, SidebarLayoutMinimal, SidebarLayoutSearch, SidebarLayoutUser, SidebarResizer, SidebarSeparator2 as SidebarSeparator, Skeleton, SlideIn, Slider, SortableNav, SortableTaskList, Sparkline, Spinner, SplitPage, SplitPageDetail, SplitPageList, Stack, StackedLayoutBranded, StackedLayoutTabs, Stagger, Stat, StatGroup, StepForm, StepFormNavigation, StepFormStep, Stepper, StepperStep, StructuredList, StructuredListItem, StructuredListSection, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tags, TaskCard, TaskCardWithLabels, TextReveal, Textarea, TextureCard, TextureCardDescription, TextureCardHeader, TextureCardTitle, ThemeSwitch, Timeline, TimelineConnector, TimelineContent, TimelineItem, Toaster, Toggle, ToggleButton, ToggleButtonGroup, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Tour, TourStep, Transition, Tree, Typewriter, UserMenu, VStack, VideoPlayer, WorkspaceMembers, WorkspacesMenu, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, toastFn as toast, toastEmitter, toggleVariants, useAppShell, useCommandBar, useCommandPalette, useHotkeys, useLayoutId, useSidebar, useTour };
14388
12753
  //# sourceMappingURL=index.mjs.map
14389
12754
  //# sourceMappingURL=index.mjs.map