@datum-cloud/datum-ui 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/{action-row-DTvs91_3.mjs → action-row-BEzE9x37.mjs} +2 -3
  2. package/dist/{adapter-context-h0jCVqGO.mjs → adapter-context-XT749tyT.mjs} +1 -2
  3. package/dist/alert/index.mjs +1 -2
  4. package/dist/{alert-SAPwee1h.mjs → alert-CVckvox4.mjs} +2 -3
  5. package/dist/app-navigation/index.mjs +2 -2
  6. package/dist/{app-navigation-BB_NLEWv.mjs → app-navigation-DyNZwlSG.mjs} +14 -20
  7. package/dist/assistant/index.mjs +57 -63
  8. package/dist/autocomplete/index.mjs +1 -2
  9. package/dist/{autocomplete-BxtzndxZ.mjs → autocomplete-D0zAcT78.mjs} +6 -8
  10. package/dist/autosearch/index.mjs +8 -10
  11. package/dist/avatar/index.mjs +2 -3
  12. package/dist/avatar-stack/index.mjs +1 -2
  13. package/dist/{avatar-stack-BUcsjhA6.mjs → avatar-stack-2ow672bR.mjs} +3 -4
  14. package/dist/badge/index.mjs +181 -1
  15. package/dist/breadcrumb/index.mjs +1 -2
  16. package/dist/{breadcrumb-DmdhC8bE.mjs → breadcrumb-D97jAZ2N.mjs} +2 -3
  17. package/dist/button/index.mjs +2 -2
  18. package/dist/{button-CsdF61EI.mjs → button-C57mkFkS.mjs} +2 -3
  19. package/dist/{button-DoMqfQLu.mjs → button-Cn4KagBO.mjs} +4 -6
  20. package/dist/{button-CDPui_Ov.mjs → button-IK-Lnu_9.mjs} +3 -4
  21. package/dist/button-group/index.mjs +1 -2
  22. package/dist/{button-group-DFrTH4L8.mjs → button-group-C3GKo-0p.mjs} +3 -4
  23. package/dist/calendar/index.mjs +4 -5
  24. package/dist/{calendar-date-picker-DPvVAW2I.mjs → calendar-date-picker-CknZM6a2.mjs} +3 -4
  25. package/dist/card/index.mjs +1 -2
  26. package/dist/{card-save-bar-BZzNnKYj.mjs → card-save-bar-Te8jf-ie.mjs} +5 -8
  27. package/dist/chart/index.mjs +1 -2
  28. package/dist/{chart-EgzTS28l.mjs → chart-BsGsx2jb.mjs} +2 -3
  29. package/dist/checkbox/index.mjs +1 -2
  30. package/dist/checkbox-BAo5sbHk.mjs +84 -0
  31. package/dist/{close.icon-DdXKQ4m0.mjs → close.icon-BCPmH4nN.mjs} +2 -3
  32. package/dist/code-editor/index.mjs +1 -2
  33. package/dist/{col-BYGWTB4j.mjs → col-CYHIfPJq.mjs} +5 -9
  34. package/dist/collapsible/index.mjs +1 -7
  35. package/dist/collapsible-B-KP3JZ-.mjs +104 -0
  36. package/dist/command/index.mjs +1 -2
  37. package/dist/{command-C0aGIYnQ.mjs → command-B0be-zU5.mjs} +3 -4
  38. package/dist/components/base/checkbox/checkbox.d.ts +11 -3
  39. package/dist/components/base/collapsible/collapsible.d.ts +28 -0
  40. package/dist/components/base/collapsible/index.d.ts +1 -1
  41. package/dist/components/base/radio-group/radio-group.d.ts +11 -5
  42. package/dist/components/base/spinner/index.d.ts +1 -1
  43. package/dist/components/base/spinner/spinner.d.ts +11 -0
  44. package/dist/components/base/switch/switch.d.ts +6 -1
  45. package/dist/components/base/typography/typography.d.ts +1 -1
  46. package/dist/components/features/_shared/copy-state-icon.d.ts +12 -0
  47. package/dist/components/features/_shared/index.d.ts +2 -0
  48. package/dist/components/features/_shared/motion-chip.d.ts +293 -0
  49. package/dist/components/features/assistant/components/message/plan-card.d.ts +1 -1
  50. package/dist/components/icons/spinner.icon.d.ts +17 -3
  51. package/dist/copy-state-icon-DMvXXsZm.mjs +61 -0
  52. package/dist/data-table/index.mjs +1 -2
  53. package/dist/{data-table-CJiQQ6TM.mjs → data-table-CpBwO8Ea.mjs} +39 -66
  54. package/dist/date-picker/index.mjs +3 -3
  55. package/dist/date-time/index.mjs +1 -2
  56. package/dist/{date-time-lZdefM4H.mjs → date-time-BBRVM9qb.mjs} +4 -6
  57. package/dist/date-time-picker/index.mjs +1 -2
  58. package/dist/{date-time-picker-CricsXgF.mjs → date-time-picker-Bc41Ixrs.mjs} +3 -4
  59. package/dist/{date-time-range-picker-DM4AIvQ1.mjs → date-time-range-picker-yy1Acntn.mjs} +36 -59
  60. package/dist/dialog/index.mjs +1 -2
  61. package/dist/{dialog-Gu70fban.mjs → dialog-C8RXIQYm.mjs} +4 -5
  62. package/dist/{dialog-CmkrpaYy.mjs → dialog-D6sDXaH6.mjs} +2 -3
  63. package/dist/dropdown/index.mjs +1 -2
  64. package/dist/{dropdown-Xvduih96.mjs → dropdown-DR9j3Ni_.mjs} +3 -4
  65. package/dist/{dropdown-menu-b8zY5Cs6.mjs → dropdown-menu-CjgTr8Ab.mjs} +2 -3
  66. package/dist/dropzone/index.mjs +1 -2
  67. package/dist/{dropzone-ihksfjN2.mjs → dropzone-qKYfSe7o.mjs} +6 -8
  68. package/dist/empty-content/index.mjs +1 -2
  69. package/dist/{empty-content-CmuVcU0P.mjs → empty-content-CTMHak36.mjs} +8 -13
  70. package/dist/form/adapters/conform/index.mjs +4 -6
  71. package/dist/form/adapters/rhf/index.mjs +6 -9
  72. package/dist/form/index.mjs +2 -2
  73. package/dist/form/stepper/index.mjs +11 -16
  74. package/dist/{form-D4R6C609.mjs → form-DTaVgDSV.mjs} +64 -89
  75. package/dist/{form-context-DzB2a-dw.mjs → form-context-BRzt53M5.mjs} +1 -2
  76. package/dist/grid/index.mjs +1 -2
  77. package/dist/grouped-table/index.mjs +1 -2
  78. package/dist/{grouped-table-fHguJz9W.mjs → grouped-table-Dl6DclbV.mjs} +17 -25
  79. package/dist/hooks/index.mjs +4 -4
  80. package/dist/{hooks-CwZ6hyI1.mjs → hooks-WVJbyhCz.mjs} +1 -2
  81. package/dist/hover-card/index.mjs +1 -2
  82. package/dist/{hover-card-BNOE5vT5.mjs → hover-card-DSt1lZGg.mjs} +3 -5
  83. package/dist/{icon-wrapper-DKfJlJd0.mjs → icon-wrapper-CIk2th6R.mjs} +1 -2
  84. package/dist/icons/index.mjs +3 -3
  85. package/dist/index.mjs +80 -80
  86. package/dist/input/index.mjs +1 -2
  87. package/dist/{input-j4tbmYYz.mjs → input-DsT5qkJn.mjs} +3 -4
  88. package/dist/{input-DR-XbgpD.mjs → input-Wl1K48ca.mjs} +2 -3
  89. package/dist/input-group/index.mjs +1 -2
  90. package/dist/{input-group-DieA8aBt.mjs → input-group-CCzvJIZM.mjs} +5 -6
  91. package/dist/input-number/index.mjs +1 -2
  92. package/dist/{input-number-TXmW-X9o.mjs → input-number-DF-bfIo8.mjs} +5 -6
  93. package/dist/input-with-addons/index.mjs +2 -3
  94. package/dist/label/index.mjs +1 -2
  95. package/dist/{label-Bk6FXsju.mjs → label-BR1V3Imy.mjs} +3 -5
  96. package/dist/{layers-DWYdrGmC.mjs → layers-DLUbkJtt.mjs} +26 -27
  97. package/dist/loader-overlay/index.mjs +1 -2
  98. package/dist/{loader-overlay-DD94azZX.mjs → loader-overlay-DP0pvHuG.mjs} +3 -4
  99. package/dist/logo/index.mjs +2 -2
  100. package/dist/logo/themed/index.mjs +3 -4
  101. package/dist/{logo-C3FxD7jb.mjs → logo-CkzKra6H.mjs} +2 -3
  102. package/dist/{logo-text-Dpm5O6Kg.mjs → logo-text-B54YiEte.mjs} +6 -11
  103. package/dist/logs/fixtures/index.mjs +2 -4
  104. package/dist/logs/index.mjs +68 -87
  105. package/dist/map/index.mjs +1 -2
  106. package/dist/{map-leaflet-imports-S3kx8Q-S.mjs → map-leaflet-imports-Xdz9Xiaf.mjs} +1 -2
  107. package/dist/mobile-sheet/index.mjs +1 -2
  108. package/dist/{mobile-sheet-9TootJGg.mjs → mobile-sheet-1995HYY_.mjs} +6 -9
  109. package/dist/more-actions/index.mjs +2 -2
  110. package/dist/{more-actions-C3DYWO0a.mjs → more-actions-BlSOVwa8.mjs} +6 -7
  111. package/dist/{motion-DvGRWdsm.mjs → motion-DOrRbLmy.mjs} +1 -2
  112. package/dist/motion-chip-BczV7spP.mjs +52 -0
  113. package/dist/multi-select/index.mjs +1 -2
  114. package/dist/{multi-select-CF0Yq5yf.mjs → multi-select-C2cBrqXl.mjs} +61 -57
  115. package/dist/nprogress/index.mjs +1 -2
  116. package/dist/page-title/index.mjs +1 -2
  117. package/dist/{page-title-ipRWEOeM.mjs → page-title-Djl3LvPT.mjs} +2 -3
  118. package/dist/picker/index.mjs +2 -2
  119. package/dist/{picker-BoKXW6_s.mjs → picker-DC3GErYg.mjs} +14 -25
  120. package/dist/popover/index.mjs +1 -2
  121. package/dist/{popover-X82NwhX9.mjs → popover-7YxyP_W0.mjs} +3 -5
  122. package/dist/radio-group/index.mjs +1 -2
  123. package/dist/radio-group-Boxi2hm0.mjs +83 -0
  124. package/dist/responsive-dropdown/index.mjs +1 -2
  125. package/dist/{responsive-dropdown-C_KKgLbH.mjs → responsive-dropdown-DsWgpE_i.mjs} +5 -6
  126. package/dist/responsive-popover/index.mjs +1 -2
  127. package/dist/{responsive-popover-8VcjBM2d.mjs → responsive-popover-DJYd8lOK.mjs} +5 -6
  128. package/dist/rich-text-content/index.mjs +1 -2
  129. package/dist/{rich-text-content-DNonBD39.mjs → rich-text-content-BiIIowBU.mjs} +2 -3
  130. package/dist/rich-text-editor/index.mjs +2 -2
  131. package/dist/{rich-text-editor-CP1YyxMR.mjs → rich-text-editor-BUz06s-b.mjs} +14 -22
  132. package/dist/select/index.mjs +1 -2
  133. package/dist/{select-D4pk9e2d.mjs → select-DemYhwnG.mjs} +3 -4
  134. package/dist/{select-daE2Nn0Z.mjs → select-jgK6wyXj.mjs} +2 -3
  135. package/dist/separator/index.mjs +1 -2
  136. package/dist/{separator-vbPD_WFQ.mjs → separator-DNiiN2BN.mjs} +2 -3
  137. package/dist/settings-nav/index.mjs +1 -2
  138. package/dist/{settings-nav-Hf3GrCGv.mjs → settings-nav-CCZdPD-x.mjs} +2 -3
  139. package/dist/sheet/index.mjs +2 -2
  140. package/dist/{sheet-DHn6C_rs.mjs → sheet-DEpEJ_Rk.mjs} +4 -5
  141. package/dist/{sheet-DXCZyMHI.mjs → sheet-DYPtVIb2.mjs} +2 -3
  142. package/dist/sidebar/index.mjs +1 -2
  143. package/dist/{sidebar-sbqOOFii.mjs → sidebar-DWnxQWQ8.mjs} +13 -18
  144. package/dist/skeleton/index.mjs +3 -4
  145. package/dist/{skeleton-DFExK4GX.mjs → skeleton-CDPoo7-M.mjs} +2 -3
  146. package/dist/spinner/index.mjs +1 -2
  147. package/dist/spinner-DSlDJdWl.mjs +23 -0
  148. package/dist/spinner.icon-BiUnMAxw.mjs +104 -0
  149. package/dist/stepper/index.mjs +1 -2
  150. package/dist/{stepper-dNvkipop.mjs → stepper-ZipxpzWY.mjs} +10 -11
  151. package/dist/switch/index.mjs +1 -2
  152. package/dist/switch-IduVwiPZ.mjs +114 -0
  153. package/dist/table/index.mjs +2 -3
  154. package/dist/tabs/index.mjs +3 -4
  155. package/dist/tag-input/index.mjs +1 -2
  156. package/dist/{tag-input-c9OvWTSe.mjs → tag-input-a3ktkGrH.mjs} +46 -43
  157. package/dist/task-queue/index.mjs +1 -2
  158. package/dist/{task-queue-dropdown-CHPP5WIm.mjs → task-queue-dropdown-DuCAAybs.mjs} +39 -59
  159. package/dist/textarea/index.mjs +1 -2
  160. package/dist/{textarea-DiSGxCBO.mjs → textarea-CvhdK6JY.mjs} +3 -4
  161. package/dist/{textarea-CCxpXJdh.mjs → textarea-D36SE4ki.mjs} +2 -3
  162. package/dist/theme/index.mjs +1 -2
  163. package/dist/{themes-Ba2bajuF.mjs → themes-BoxnQbbu.mjs} +8 -10
  164. package/dist/time-picker/index.mjs +1 -2
  165. package/dist/{time-picker-DQlc2gKW.mjs → time-picker-B_am4eAK.mjs} +3 -4
  166. package/dist/{to-api-format-QuJ81vQ9.mjs → to-api-format-DyImCzCn.mjs} +15 -23
  167. package/dist/toast/index.mjs +2 -2
  168. package/dist/{toast-BUPlDkN3.mjs → toast-CizxCEcK.mjs} +4 -6
  169. package/dist/tooltip/index.mjs +1 -2
  170. package/dist/{tooltip-DhbN1BDK.mjs → tooltip-OIySjJWW.mjs} +3 -5
  171. package/dist/transfer/index.mjs +1 -2
  172. package/dist/{transfer-DsshYgIk.mjs → transfer-DGUeAQUL.mjs} +8 -14
  173. package/dist/{types-agDpVXBG.mjs → types-ChINrR8H.mjs} +7 -11
  174. package/dist/typography/index.mjs +1 -2
  175. package/dist/{typography-B1bpHKmV.mjs → typography-XFfN6PGD.mjs} +2 -3
  176. package/dist/{use-breakpoint-CwiUJSmk.mjs → use-breakpoint-zY_JYINK.mjs} +1 -2
  177. package/dist/{use-controllable-state-Dna7u3r9.mjs → use-controllable-state-DLeVgbAb.mjs} +1 -2
  178. package/dist/{use-copy-to-clipboard-DZDq_85T.mjs → use-copy-to-clipboard-CWKWHLxI.mjs} +1 -2
  179. package/dist/{use-debounced-search-input-yu_F0QBt.mjs → use-debounced-search-input-B4u28iLx.mjs} +1 -2
  180. package/dist/{use-deprecation-warning-DXrGc0jX.mjs → use-deprecation-warning-BS1V4IS5.mjs} +1 -2
  181. package/dist/{use-display-touched-CMEEv7aT.mjs → use-display-touched-BSq0Ninl.mjs} +3 -5
  182. package/dist/{use-option-picker-s2bUYwXC.mjs → use-option-picker-DXY2SNnT.mjs} +6 -9
  183. package/dist/{use-toast-Bpq0yJIT.mjs → use-toast-CZAZeS95.mjs} +3 -5
  184. package/dist/utils/index.mjs +3 -3
  185. package/dist/{utils-CA4QEIJ8.mjs → utils-CPJ5MCfd.mjs} +1 -2
  186. package/dist/{utils-Bu32wN-x.mjs → utils-CTIuhCOs.mjs} +1 -2
  187. package/dist/visually-hidden/index.mjs +1 -2
  188. package/dist/{visuallyhidden-D7L_qs8b.mjs → visuallyhidden-Mg4OsZ-l.mjs} +1 -2
  189. package/dist/{zod-helpers-YEhVo2S-.mjs → zod-helpers-JcfFVJJd.mjs} +1 -2
  190. package/package.json +20 -23
  191. package/dist/badge-DOZUr5DV.mjs +0 -183
  192. package/dist/checkbox-C6P12fio.mjs +0 -30
  193. package/dist/radio-group-LduBVTnh.mjs +0 -45
  194. package/dist/spinner-C5Xv-i2C.mjs +0 -14
  195. package/dist/spinner.icon-BYUMQ8H-.mjs +0 -48
  196. package/dist/switch-BaR-Vna4.mjs +0 -34
@@ -1,15 +1,16 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { t as Badge } from "./badge-DOZUr5DV.mjs";
3
- import { t as Separator } from "./separator-vbPD_WFQ.mjs";
4
- import { t as useControllableState } from "./use-controllable-state-Dna7u3r9.mjs";
5
- import { t as ResponsivePopover } from "./responsive-popover-8VcjBM2d.mjs";
6
- import { t as LoaderOverlay } from "./loader-overlay-DD94azZX.mjs";
7
- import { n as OptionList, t as useOptionPicker } from "./use-option-picker-s2bUYwXC.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
+ import { t as useControllableState } from "./use-controllable-state-DLeVgbAb.mjs";
3
+ import { n as OptionList, t as useOptionPicker } from "./use-option-picker-DXY2SNnT.mjs";
4
+ import { t as ResponsivePopover } from "./responsive-popover-DJYd8lOK.mjs";
5
+ import { t as Separator } from "./separator-DNiiN2BN.mjs";
6
+ import { t as LoaderOverlay } from "./loader-overlay-DP0pvHuG.mjs";
7
+ import { n as useChipMotion, t as MotionBadge } from "./motion-chip-BczV7spP.mjs";
8
8
  import { cva } from "class-variance-authority";
9
9
  import { CheckIcon, ChevronDown, WandSparkles, XCircle, XIcon } from "lucide-react";
10
10
  import * as React from "react";
11
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
- //#region src/components/features/multi-select/multi-select-options.tsx
12
+ import { AnimatePresence } from "motion/react";
13
+ // src/components/features/multi-select/multi-select-options.tsx
13
14
  /**
14
15
  * Presentational popover command list for the multi-select: the searchable
15
16
  * option list with a checkbox affordance per row. Selection state and search
@@ -35,8 +36,7 @@ function MultiSelectOptions({ picker, searchPlaceholder, emptyContent, header, f
35
36
  });
36
37
  }
37
38
  MultiSelectOptions.displayName = "MultiSelectOptions";
38
- //#endregion
39
- //#region src/components/features/multi-select/multi-select-shared.ts
39
+ // src/components/features/multi-select/multi-select-shared.ts
40
40
  /**
41
41
  * Variants for the multi-select badges to handle different styles.
42
42
  * Uses class-variance-authority (cva) to define styles based on the `variant` prop.
@@ -53,8 +53,7 @@ const multiSelectVariants = cva("flex items-center gap-1 rounded-md border px-2
53
53
  } },
54
54
  defaultVariants: { variant: "default" }
55
55
  });
56
- //#endregion
57
- //#region src/components/features/multi-select/selected-badge-list.tsx
56
+ // src/components/features/multi-select/selected-badge-list.tsx
58
57
  /**
59
58
  * A keyboard-operable icon control. The badge/clear affordances live inside the
60
59
  * trigger button, so they cannot be real nested `<button>`s (invalid DOM). We
@@ -90,52 +89,59 @@ function IconAction({ label, onActivate, className, children }) {
90
89
  function SelectedBadgeList({ selectedOptions, maxCount, variant, badgeClassName, clickableBadges, isAnimating, animation, onRemove, onClearExtra, onClearAll, onBadgeClick }) {
91
90
  const visibleOptions = selectedOptions.slice(0, maxCount === -1 ? void 0 : maxCount);
92
91
  const overflowCount = maxCount === -1 ? 0 : selectedOptions.length - maxCount;
92
+ const chipMotion = useChipMotion();
93
93
  return /* @__PURE__ */ jsxs("div", {
94
94
  className: "flex w-full items-center justify-between",
95
- children: [/* @__PURE__ */ jsxs("div", {
96
- className: "flex flex-wrap items-center gap-2",
97
- children: [visibleOptions.map((option) => {
98
- const IconComponent = option.icon;
99
- return /* @__PURE__ */ jsxs(Badge, {
100
- className: cn(multiSelectVariants({ variant }), "truncate", isAnimating && "animate-bounce", clickableBadges && "cursor-pointer", badgeClassName),
101
- style: { animationDuration: `${animation}s` },
102
- onClick: (event) => {
103
- if (clickableBadges) {
104
- event.stopPropagation();
105
- event.preventDefault();
106
- onBadgeClick?.(option);
107
- }
108
- },
109
- children: [
110
- IconComponent && /* @__PURE__ */ jsx(IconComponent, { className: "text-muted-foreground size-3" }),
111
- /* @__PURE__ */ jsx("span", {
112
- className: "max-w-[120px] truncate",
113
- children: option.label
114
- }),
115
- /* @__PURE__ */ jsx(IconAction, {
116
- label: `Remove ${option.label}`,
117
- onActivate: () => onRemove(option.value),
118
- className: "text-muted-foreground ml-1",
119
- children: /* @__PURE__ */ jsx(XCircle, {
120
- className: "size-3",
121
- "aria-hidden": "true"
95
+ children: [/* @__PURE__ */ jsx("div", {
96
+ className: "relative flex flex-wrap items-center gap-2",
97
+ children: /* @__PURE__ */ jsxs(AnimatePresence, {
98
+ initial: false,
99
+ mode: "popLayout",
100
+ children: [visibleOptions.map((option) => {
101
+ const IconComponent = option.icon;
102
+ return /* @__PURE__ */ jsxs(MotionBadge, {
103
+ ...chipMotion,
104
+ className: cn(multiSelectVariants({ variant }), "truncate", isAnimating && "animate-bounce", clickableBadges && "cursor-pointer", badgeClassName),
105
+ style: { animationDuration: `${animation}s` },
106
+ onClick: (event) => {
107
+ if (clickableBadges) {
108
+ event.stopPropagation();
109
+ event.preventDefault();
110
+ onBadgeClick?.(option);
111
+ }
112
+ },
113
+ children: [
114
+ IconComponent && /* @__PURE__ */ jsx(IconComponent, { className: "text-muted-foreground size-3" }),
115
+ /* @__PURE__ */ jsx("span", {
116
+ className: "max-w-[120px] truncate",
117
+ children: option.label
118
+ }),
119
+ /* @__PURE__ */ jsx(IconAction, {
120
+ label: `Remove ${option.label}`,
121
+ onActivate: () => onRemove(option.value),
122
+ className: "text-muted-foreground ml-1",
123
+ children: /* @__PURE__ */ jsx(XCircle, {
124
+ className: "size-3",
125
+ "aria-hidden": "true"
126
+ })
122
127
  })
128
+ ]
129
+ }, option.value);
130
+ }), overflowCount > 0 && /* @__PURE__ */ jsxs(MotionBadge, {
131
+ ...chipMotion,
132
+ className: cn(multiSelectVariants({ variant }), "text-muted-foreground", isAnimating && "animate-bounce"),
133
+ style: { animationDuration: `${animation}s` },
134
+ children: [`+ ${overflowCount} more`, /* @__PURE__ */ jsx(IconAction, {
135
+ label: "Clear extra selected",
136
+ onActivate: onClearExtra,
137
+ className: "text-muted-foreground ml-1",
138
+ children: /* @__PURE__ */ jsx(XCircle, {
139
+ className: "size-3",
140
+ "aria-hidden": "true"
123
141
  })
124
- ]
125
- }, option.value);
126
- }), overflowCount > 0 && /* @__PURE__ */ jsxs(Badge, {
127
- className: cn(multiSelectVariants({ variant }), "text-muted-foreground", isAnimating && "animate-bounce"),
128
- style: { animationDuration: `${animation}s` },
129
- children: [`+ ${overflowCount} more`, /* @__PURE__ */ jsx(IconAction, {
130
- label: "Clear extra selected",
131
- onActivate: onClearExtra,
132
- className: "text-muted-foreground ml-1",
133
- children: /* @__PURE__ */ jsx(XCircle, {
134
- className: "size-3",
135
- "aria-hidden": "true"
136
- })
137
- })]
138
- })]
142
+ })]
143
+ }, "overflow")]
144
+ })
139
145
  }), /* @__PURE__ */ jsxs("div", {
140
146
  className: "flex items-center justify-between",
141
147
  children: [
@@ -161,8 +167,7 @@ function SelectedBadgeList({ selectedOptions, maxCount, variant, badgeClassName,
161
167
  });
162
168
  }
163
169
  SelectedBadgeList.displayName = "SelectedBadgeList";
164
- //#endregion
165
- //#region src/components/features/multi-select/multi-select.tsx
170
+ // src/components/features/multi-select/multi-select.tsx
166
171
  const EMPTY_ARRAY = [];
167
172
  function MultiSelect({ options, onValueChange, variant, defaultValue = EMPTY_ARRAY, value, placeholder = "Select options", animation = 0, maxCount = 3, modalPopover = false, className, boxClassName, actions, onBadgeClick, badgeClassName, clickableBadges = false, showCloseButton = true, showClearButton = true, showSelectAll = false, disabled = false, id, name, isLoading = false, emptyContent = "No results found.", responsive = true, sheetTitle, asChild: _asChild, onClick: onTriggerClick, ...rest }) {
168
173
  const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);
@@ -306,5 +311,4 @@ function MultiSelect({ options, onValueChange, variant, defaultValue = EMPTY_ARR
306
311
  ] });
307
312
  }
308
313
  MultiSelect.displayName = "MultiSelect";
309
- //#endregion
310
314
  export { MultiSelect as t };
@@ -1,5 +1,5 @@
1
1
  import NProgress from "nprogress";
2
- //#region src/components/features/nprogress/index.ts
2
+ // src/components/features/nprogress/index.ts
3
3
  /**
4
4
  * NProgress Module
5
5
  *
@@ -26,5 +26,4 @@ function configureProgress() {
26
26
  trickleSpeed: 100
27
27
  });
28
28
  }
29
- //#endregion
30
29
  export { configureProgress, startProgress, stopProgress };
@@ -1,2 +1 @@
1
- import { t as PageTitle } from "../page-title-ipRWEOeM.mjs";
2
- export { PageTitle };
1
+ export { t as PageTitle } from "../page-title-Djl3LvPT.mjs";
@@ -1,6 +1,6 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- //#region src/components/features/page-title/page-title.tsx
3
+ // src/components/features/page-title/page-title.tsx
4
4
  function PageTitle({ title, description, actions, className, titleClassName, descriptionClassName, actionsClassName, actionsPosition = "inline" }) {
5
5
  const isInline = actionsPosition === "inline";
6
6
  return /* @__PURE__ */ jsxs("div", {
@@ -21,5 +21,4 @@ function PageTitle({ title, description, actions, className, titleClassName, des
21
21
  })]
22
22
  });
23
23
  }
24
- //#endregion
25
24
  export { PageTitle as t };
@@ -1,3 +1,3 @@
1
- import { A as formatInTimezone, B as isDateBearingMode, C as PickerClear, D as PickerCalendar, E as PickerContent, F as zonedDateToIso, H as isTimeBearingMode, I as ALLOWED_STEPS, L as DATE_BEARING_MODES, M as getBrowserTimezone, N as getTimezoneOffset, O as PickerContext, P as isoToZonedDate, R as RANGE_MODES, S as PickerCancel, T as PickerReset, V as isRangeMode, _ as parseTimeString, a as PickerTimezoneIndicator, b as PickerPresets, d as DATE_PRESETS, f as getDefaultPresets, g as isValidTimeString, h as formatTimeLabel, i as PickerTrigger, j as formatTimezoneLabel, k as usePickerContext, l as usePresets, m as dateToYYYYMMDD, o as PickerTimeInput, p as usePickerState, r as formatPickerValue, s as useTimeSlots, t as DateTimeRangePicker, u as DATETIME_PRESETS, v as resolveCommit, w as PickerFooter, x as PickerApply, y as useKeyboardShortcuts, z as TIME_BEARING_MODES } from "../date-time-range-picker-DM4AIvQ1.mjs";
2
- import { a as DateRangePicker, c as getDaysDifference, d as isSameDateRange, f as isSameStringRange, i as DateRangeTimePicker, l as isRangeValid, m as PickerTimezoneSelect, n as TimePicker, o as DatePicker, p as Picker, r as DateTimePicker, s as clampRange, t as TimeRangePicker, u as isSameDate } from "../picker-BoKXW6_s.mjs";
1
+ import { A as formatInTimezone, B as isDateBearingMode, C as PickerClear, D as PickerCalendar, E as PickerContent, F as zonedDateToIso, H as isTimeBearingMode, I as ALLOWED_STEPS, L as DATE_BEARING_MODES, M as getBrowserTimezone, N as getTimezoneOffset, O as PickerContext, P as isoToZonedDate, R as RANGE_MODES, S as PickerCancel, T as PickerReset, V as isRangeMode, _ as parseTimeString, a as PickerTimezoneIndicator, b as PickerPresets, d as DATE_PRESETS, f as getDefaultPresets, g as isValidTimeString, h as formatTimeLabel, i as PickerTrigger, j as formatTimezoneLabel, k as usePickerContext, l as usePresets, m as dateToYYYYMMDD, o as PickerTimeInput, p as usePickerState, r as formatPickerValue, s as useTimeSlots, t as DateTimeRangePicker, u as DATETIME_PRESETS, v as resolveCommit, w as PickerFooter, x as PickerApply, y as useKeyboardShortcuts, z as TIME_BEARING_MODES } from "../date-time-range-picker-yy1Acntn.mjs";
2
+ import { a as DateRangePicker, c as getDaysDifference, d as isSameDateRange, f as isSameStringRange, i as DateRangeTimePicker, l as isRangeValid, m as PickerTimezoneSelect, n as TimePicker, o as DatePicker, p as Picker, r as DateTimePicker, s as clampRange, t as TimeRangePicker, u as isSameDate } from "../picker-DC3GErYg.mjs";
3
3
  export { ALLOWED_STEPS, DATETIME_PRESETS, DATE_BEARING_MODES, DATE_PRESETS, DatePicker, DateRangePicker, DateRangeTimePicker, DateTimePicker, DateTimeRangePicker, Picker, PickerApply, PickerCalendar, PickerCancel, PickerClear, PickerContent, PickerContext, PickerFooter, PickerPresets, PickerReset, PickerTimeInput, PickerTimezoneIndicator, PickerTimezoneSelect, PickerTrigger, RANGE_MODES, TIME_BEARING_MODES, TimePicker, TimeRangePicker, clampRange, dateToYYYYMMDD, formatInTimezone, formatPickerValue, formatTimeLabel, formatTimezoneLabel, getBrowserTimezone, getDaysDifference, getDefaultPresets, getTimezoneOffset, isDateBearingMode, isRangeMode, isRangeValid, isSameDate, isSameDateRange, isSameStringRange, isTimeBearingMode, isValidTimeString, isoToZonedDate, parseTimeString, resolveCommit, useKeyboardShortcuts, usePickerContext, usePickerState, usePresets, useTimeSlots, zonedDateToIso };
@@ -1,11 +1,11 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u as SelectValue } from "./select-daE2Nn0Z.mjs";
3
- import { C as PickerClear, D as PickerCalendar, E as PickerContent, F as zonedDateToIso, H as isTimeBearingMode, P as isoToZonedDate, S as PickerCancel, T as PickerReset, _ as parseTimeString, a as PickerTimezoneIndicator, b as PickerPresets, c as Picker$1, i as PickerTrigger, k as usePickerContext, n as DefaultFooter, o as PickerTimeInput, r as formatPickerValue, w as PickerFooter, x as PickerApply } from "./date-time-range-picker-DM4AIvQ1.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
+ import { i as SelectItem, l as SelectTrigger, n as SelectContent, t as Select, u as SelectValue } from "./select-jgK6wyXj.mjs";
3
+ import { C as PickerClear, D as PickerCalendar, E as PickerContent, F as zonedDateToIso, H as isTimeBearingMode, P as isoToZonedDate, S as PickerCancel, T as PickerReset, _ as parseTimeString, a as PickerTimezoneIndicator, b as PickerPresets, c as Picker$1, i as PickerTrigger, k as usePickerContext, n as DefaultFooter, o as PickerTimeInput, r as formatPickerValue, w as PickerFooter, x as PickerApply } from "./date-time-range-picker-yy1Acntn.mjs";
4
4
  import { Clock, Globe } from "lucide-react";
5
5
  import { useEffect, useState } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { addDays, differenceInCalendarDays } from "date-fns";
8
- //#region src/components/features/picker/components/timezone-select.tsx
8
+ // src/components/features/picker/components/timezone-select.tsx
9
9
  function PickerTimezoneSelect({ options, onChange, className, placeholder = "Select timezone" }) {
10
10
  const { mode, timezone } = usePickerContext();
11
11
  if (!isTimeBearingMode(mode)) return null;
@@ -27,8 +27,7 @@ function PickerTimezoneSelect({ options, onChange, className, placeholder = "Sel
27
27
  });
28
28
  }
29
29
  PickerTimezoneSelect.displayName = "Picker.TimezoneSelect";
30
- //#endregion
31
- //#region src/components/features/picker/components/index.ts
30
+ // src/components/features/picker/components/index.ts
32
31
  const Picker = Object.assign(Picker$1, {
33
32
  Trigger: PickerTrigger,
34
33
  Content: PickerContent,
@@ -43,8 +42,7 @@ const Picker = Object.assign(Picker$1, {
43
42
  TimezoneIndicator: PickerTimezoneIndicator,
44
43
  TimezoneSelect: PickerTimezoneSelect
45
44
  });
46
- //#endregion
47
- //#region src/components/features/picker/utils/compare.ts
45
+ // src/components/features/picker/utils/compare.ts
48
46
  /** Strict equality of two nullable Date references by millisecond value. */
49
47
  function isSameDate(a, b) {
50
48
  if (a === b) return true;
@@ -67,8 +65,7 @@ function isSameStringRange(a, b) {
67
65
  if (a === null || b === null) return false;
68
66
  return a.from === b.from && a.to === b.to && a.preset === b.preset;
69
67
  }
70
- //#endregion
71
- //#region src/components/features/picker/utils/range.ts
68
+ // src/components/features/picker/utils/range.ts
72
69
  /**
73
70
  * Number of calendar days between two dates. Always non-negative.
74
71
  *
@@ -105,8 +102,7 @@ function clampRange(from, to, maxRange) {
105
102
  to: addDays(from, maxRange)
106
103
  };
107
104
  }
108
- //#endregion
109
- //#region src/components/features/picker/wrappers/date-picker.tsx
105
+ // src/components/features/picker/wrappers/date-picker.tsx
110
106
  function DatePicker({ value, onChange, placeholder = "Pick a date", clearable = true, responsive = true, sheetTitle = "Pick a date", numberOfMonths = 1, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit, disablePast, disableFuture, minDate, maxDate, dateFormat }) {
111
107
  return /* @__PURE__ */ jsx(Picker$1.Root, {
112
108
  mode: "date",
@@ -146,8 +142,7 @@ function DatePicker({ value, onChange, placeholder = "Pick a date", clearable =
146
142
  });
147
143
  }
148
144
  DatePicker.displayName = "DatePicker";
149
- //#endregion
150
- //#region src/components/features/picker/wrappers/date-range-picker.tsx
145
+ // src/components/features/picker/wrappers/date-range-picker.tsx
151
146
  function DateRangePicker({ value, onChange, placeholder = "Pick a date range", clearable = true, responsive = true, sheetTitle = "Pick a date range", numberOfMonths = 2, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat }) {
152
147
  return /* @__PURE__ */ jsx(Picker$1.Root, {
153
148
  mode: "date-range",
@@ -191,8 +186,7 @@ function DateRangePicker({ value, onChange, placeholder = "Pick a date range", c
191
186
  });
192
187
  }
193
188
  DateRangePicker.displayName = "DateRangePicker";
194
- //#endregion
195
- //#region src/components/features/picker/wrappers/date-range-time-picker.tsx
189
+ // src/components/features/picker/wrappers/date-range-time-picker.tsx
196
190
  function DateRangeTimePicker({ value, onChange, placeholder = "Pick a date range with time", clearable = true, responsive = true, sheetTitle = "Pick a date range with time", timezone, step = 15, hourCycle, numberOfMonths = 2, hideTimezone = false, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, presets, excludePresets, dateFormat, timeFormat }) {
197
191
  return /* @__PURE__ */ jsx(Picker$1.Root, {
198
192
  mode: "date-range-time",
@@ -257,8 +251,7 @@ function DateRangeTimePicker({ value, onChange, placeholder = "Pick a date range
257
251
  });
258
252
  }
259
253
  DateRangeTimePicker.displayName = "DateRangeTimePicker";
260
- //#endregion
261
- //#region src/components/features/picker/components/time-input-field.tsx
254
+ // src/components/features/picker/components/time-input-field.tsx
262
255
  function formatZonedTimeOfDay(iso, tz) {
263
256
  try {
264
257
  const d = isoToZonedDate(iso, tz);
@@ -299,8 +292,7 @@ function PickerTimeInputField({ className, ariaLabel = "Select time", id }) {
299
292
  });
300
293
  }
301
294
  PickerTimeInputField.displayName = "Picker.TimeInputField";
302
- //#endregion
303
- //#region src/components/features/picker/wrappers/date-time-picker.tsx
295
+ // src/components/features/picker/wrappers/date-time-picker.tsx
304
296
  function DateTimePicker({ value, onChange, placeholder = "Pick a date & time", clearable = true, responsive = true, sheetTitle = "Pick a date & time", timezone, step = 15, hourCycle, numberOfMonths = 1, hideTimezone = false, timeInputMode = "slot", timezoneIndicatorVariant = "full", triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, disablePast, disableFuture, minDate, maxDate, dateFormat, timeFormat }) {
305
297
  return /* @__PURE__ */ jsx(Picker$1.Root, {
306
298
  mode: "datetime",
@@ -358,8 +350,7 @@ function DateTimePicker({ value, onChange, placeholder = "Pick a date & time", c
358
350
  });
359
351
  }
360
352
  DateTimePicker.displayName = "DateTimePicker";
361
- //#endregion
362
- //#region src/components/features/picker/wrappers/time-picker.tsx
353
+ // src/components/features/picker/wrappers/time-picker.tsx
363
354
  const DEFAULT_TIME_ICON$1 = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
364
355
  function TimePicker({ value, onChange, placeholder = "Pick a time", clearable = true, responsive = true, sheetTitle = "Pick a time", step = 15, hourCycle, minTime, maxTime, timeFormat, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit }) {
365
356
  return /* @__PURE__ */ jsx(Picker$1.Root, {
@@ -398,8 +389,7 @@ function TimePicker({ value, onChange, placeholder = "Pick a time", clearable =
398
389
  });
399
390
  }
400
391
  TimePicker.displayName = "TimePicker";
401
- //#endregion
402
- //#region src/components/features/picker/wrappers/time-range-picker.tsx
392
+ // src/components/features/picker/wrappers/time-range-picker.tsx
403
393
  const DEFAULT_TIME_ICON = /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground size-4 shrink-0" });
404
394
  function TimeRangePicker({ value, onChange, placeholder = "Pick a time range", clearable = true, responsive = true, sheetTitle = "Pick a time range", step = 15, hourCycle, timeFormat, triggerLabel, icon, disabled, className, triggerClassName, popoverClassName, id, sheetDescription, modal, commit }) {
405
395
  return /* @__PURE__ */ jsx(Picker$1.Root, {
@@ -449,5 +439,4 @@ function TimeRangePicker({ value, onChange, placeholder = "Pick a time range", c
449
439
  });
450
440
  }
451
441
  TimeRangePicker.displayName = "TimeRangePicker";
452
- //#endregion
453
442
  export { DateRangePicker as a, getDaysDifference as c, isSameDateRange as d, isSameStringRange as f, DateRangeTimePicker as i, isRangeValid as l, PickerTimezoneSelect as m, TimePicker as n, DatePicker as o, Picker as p, DateTimePicker as r, clampRange as s, TimeRangePicker as t, isSameDate as u };
@@ -1,2 +1 @@
1
- import { i as PopoverTrigger, n as PopoverAnchor, r as PopoverContent, t as Popover } from "../popover-X82NwhX9.mjs";
2
- export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
1
+ export { t as Popover, n as PopoverAnchor, r as PopoverContent, i as PopoverTrigger } from "../popover-7YxyP_W0.mjs";
@@ -1,8 +1,8 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import * as PopoverPrimitive from "@radix-ui/react-popover";
5
- //#region ../shadcn/ui/popover.tsx
5
+ // ../shadcn/ui/popover.tsx
6
6
  function Popover$1({ ...props }) {
7
7
  return /* @__PURE__ */ jsx(PopoverPrimitive.Root, {
8
8
  "data-slot": "popover",
@@ -30,8 +30,7 @@ function PopoverAnchor$1({ ...props }) {
30
30
  ...props
31
31
  });
32
32
  }
33
- //#endregion
34
- //#region src/components/base/popover/popover.tsx
33
+ // src/components/base/popover/popover.tsx
35
34
  /**
36
35
  * Datum Popover
37
36
  *
@@ -49,5 +48,4 @@ function PopoverContent({ className, ...props }) {
49
48
  ...props
50
49
  });
51
50
  }
52
- //#endregion
53
51
  export { PopoverTrigger as i, PopoverAnchor as n, PopoverContent as r, Popover as t };
@@ -1,2 +1 @@
1
- import { n as RadioGroupItem, t as RadioGroup } from "../radio-group-LduBVTnh.mjs";
2
- export { RadioGroup, RadioGroupItem };
1
+ export { t as RadioGroup, n as RadioGroupItem } from "../radio-group-Boxi2hm0.mjs";
@@ -0,0 +1,83 @@
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
+ import { n as EASE } from "./motion-DOrRbLmy.mjs";
3
+ import * as React from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { motion, useReducedMotion } from "motion/react";
6
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
7
+ // src/components/base/radio-group/radio-group.tsx
8
+ /**
9
+ * The selected value, mirrored from Radix so each item can animate its dot in
10
+ * and out. `null` means there is no datum `RadioGroup` above the item (it was
11
+ * placed in a bare Radix root), in which case the item falls back to Radix's
12
+ * own mount/unmount and does not animate.
13
+ */
14
+ const RadioGroupValueContext = React.createContext(null);
15
+ function RadioGroup({ ref, className, value: valueProp, defaultValue, onValueChange, ...props }) {
16
+ const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
17
+ const value = valueProp ?? uncontrolled;
18
+ const handleValueChange = React.useCallback((next) => {
19
+ if (valueProp === void 0) setUncontrolled(next);
20
+ onValueChange?.(next);
21
+ }, [onValueChange, valueProp]);
22
+ return /* @__PURE__ */ jsx(RadioGroupValueContext, {
23
+ value,
24
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, {
25
+ ref,
26
+ "data-slot": "radio-group",
27
+ className: cn("grid gap-3", className),
28
+ value: valueProp,
29
+ defaultValue,
30
+ onValueChange: handleValueChange,
31
+ ...props
32
+ })
33
+ });
34
+ }
35
+ RadioGroup.displayName = "RadioGroup";
36
+ const DOT_IN = {
37
+ type: "spring",
38
+ visualDuration: .2,
39
+ bounce: .35
40
+ };
41
+ const DOT_OUT = {
42
+ duration: .1,
43
+ ease: EASE.out
44
+ };
45
+ /**
46
+ * RadioGroupItem renders the Radix primitive directly (not the shadcn wrapper)
47
+ * so the dot can stay mounted and animate out as well as in. The dot pops in
48
+ * from half size with a small spring and fades out quickly when another option
49
+ * takes the selection. Under reduced motion it only fades.
50
+ */
51
+ function RadioGroupItem({ ref, className, value, ...props }) {
52
+ const groupValue = React.use(RadioGroupValueContext);
53
+ const reduceMotion = Boolean(useReducedMotion());
54
+ const animated = groupValue !== null;
55
+ const visible = animated ? groupValue === value : true;
56
+ return /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
57
+ ref,
58
+ value,
59
+ "data-slot": "radio-group-item",
60
+ className: cn("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", "transition-[color,box-shadow,transform] duration-[var(--duration-fast)] ease-out active:scale-[0.92] disabled:active:scale-100", className),
61
+ ...props,
62
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, {
63
+ forceMount: animated ? true : void 0,
64
+ "data-slot": "radio-group-indicator",
65
+ className: "flex size-full items-center justify-center",
66
+ children: /* @__PURE__ */ jsx(motion.span, {
67
+ "aria-hidden": true,
68
+ className: "bg-primary size-2 rounded-full",
69
+ initial: false,
70
+ animate: visible ? {
71
+ scale: 1,
72
+ opacity: 1
73
+ } : {
74
+ scale: reduceMotion ? 1 : .5,
75
+ opacity: 0
76
+ },
77
+ transition: visible && !reduceMotion ? DOT_IN : DOT_OUT
78
+ })
79
+ })
80
+ });
81
+ }
82
+ RadioGroupItem.displayName = "RadioGroupItem";
83
+ export { RadioGroupItem as n, RadioGroup as t };
@@ -1,2 +1 @@
1
- import { t as ResponsiveDropdown } from "../responsive-dropdown-C_KKgLbH.mjs";
2
- export { ResponsiveDropdown };
1
+ export { t as ResponsiveDropdown } from "../responsive-dropdown-DsWgpE_i.mjs";
@@ -1,9 +1,9 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { i as useInSheet, t as ResponsiveSheetTrigger } from "./mobile-sheet-9TootJGg.mjs";
3
- import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-X82NwhX9.mjs";
4
- import { t as useBreakpoint } from "./use-breakpoint-CwiUJSmk.mjs";
1
+ import { t as useBreakpoint } from "./use-breakpoint-zY_JYINK.mjs";
2
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
3
+ import { i as useInSheet, t as ResponsiveSheetTrigger } from "./mobile-sheet-1995HYY_.mjs";
4
+ import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-7YxyP_W0.mjs";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
- //#region src/components/base/responsive-dropdown/responsive-dropdown.tsx
6
+ // src/components/base/responsive-dropdown/responsive-dropdown.tsx
7
7
  function ResponsiveDropdown({ open, onOpenChange, trigger, children, sheetTitle, sheetDescription, sheetFooter, align = "end", contentClassName, onCloseAutoFocus, responsive = true }) {
8
8
  const breakpoint = useBreakpoint();
9
9
  const inSheet = useInSheet();
@@ -31,5 +31,4 @@ function ResponsiveDropdown({ open, onOpenChange, trigger, children, sheetTitle,
31
31
  })]
32
32
  });
33
33
  }
34
- //#endregion
35
34
  export { ResponsiveDropdown as t };
@@ -1,2 +1 @@
1
- import { t as ResponsivePopover } from "../responsive-popover-8VcjBM2d.mjs";
2
- export { ResponsivePopover };
1
+ export { t as ResponsivePopover } from "../responsive-popover-DJYd8lOK.mjs";
@@ -1,9 +1,9 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { i as useInSheet, t as ResponsiveSheetTrigger } from "./mobile-sheet-9TootJGg.mjs";
3
- import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-X82NwhX9.mjs";
4
- import { t as useBreakpoint } from "./use-breakpoint-CwiUJSmk.mjs";
1
+ import { t as useBreakpoint } from "./use-breakpoint-zY_JYINK.mjs";
2
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
3
+ import { i as useInSheet, t as ResponsiveSheetTrigger } from "./mobile-sheet-1995HYY_.mjs";
4
+ import { i as PopoverTrigger, r as PopoverContent, t as Popover } from "./popover-7YxyP_W0.mjs";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
- //#region src/components/base/responsive-popover/responsive-popover.tsx
6
+ // src/components/base/responsive-popover/responsive-popover.tsx
7
7
  function ResponsivePopover({ open, onOpenChange, trigger, children, sheetTitle, sheetDescription, sheetFooter, align = "start", side = "bottom", contentClassName, sideOffset, alignOffset, avoidCollisions, onOpenAutoFocus, onCloseAutoFocus, onInteractOutside, onEscapeKeyDown, responsive = true, modal = false }) {
8
8
  const breakpoint = useBreakpoint();
9
9
  const inSheet = useInSheet();
@@ -38,5 +38,4 @@ function ResponsivePopover({ open, onOpenChange, trigger, children, sheetTitle,
38
38
  })]
39
39
  });
40
40
  }
41
- //#endregion
42
41
  export { ResponsivePopover as t };
@@ -1,2 +1 @@
1
- import { t as RichTextContent } from "../rich-text-content-DNonBD39.mjs";
2
- export { RichTextContent };
1
+ export { t as RichTextContent } from "../rich-text-content-BiIIowBU.mjs";
@@ -1,7 +1,7 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import DOMPurify from "isomorphic-dompurify";
4
- //#region src/components/features/rich-text-editor/rich-text-content.tsx
4
+ // src/components/features/rich-text-editor/rich-text-content.tsx
5
5
  const SANITIZE_CONFIG = {
6
6
  ALLOWED_TAGS: [
7
7
  "strong",
@@ -59,5 +59,4 @@ function RichTextContent({ content, className }) {
59
59
  dangerouslySetInnerHTML: { __html: withSafeLinks }
60
60
  });
61
61
  }
62
- //#endregion
63
62
  export { RichTextContent as t };
@@ -1,3 +1,3 @@
1
- import { t as RichTextContent } from "../rich-text-content-DNonBD39.mjs";
2
- import { n as useRichTextEditor, t as RichTextEditor } from "../rich-text-editor-CP1YyxMR.mjs";
1
+ import { t as RichTextContent } from "../rich-text-content-BiIIowBU.mjs";
2
+ import { n as useRichTextEditor, t as RichTextEditor } from "../rich-text-editor-BUz06s-b.mjs";
3
3
  export { RichTextContent, RichTextEditor, useRichTextEditor };
@@ -1,9 +1,9 @@
1
- import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { t as Button } from "./button-DoMqfQLu.mjs";
3
- import { t as Icon } from "./icon-wrapper-DKfJlJd0.mjs";
4
- import { t as Input } from "./input-j4tbmYYz.mjs";
5
- import { t as ResponsivePopover } from "./responsive-popover-8VcjBM2d.mjs";
6
- import { t as Tooltip } from "./tooltip-DhbN1BDK.mjs";
1
+ import { t as cn } from "./utils-CTIuhCOs.mjs";
2
+ import { t as Tooltip } from "./tooltip-OIySjJWW.mjs";
3
+ import { t as Button } from "./button-Cn4KagBO.mjs";
4
+ import { t as Input } from "./input-DsT5qkJn.mjs";
5
+ import { t as ResponsivePopover } from "./responsive-popover-DJYd8lOK.mjs";
6
+ import { t as Icon } from "./icon-wrapper-CIk2th6R.mjs";
7
7
  import { BoldIcon, ItalicIcon, LinkIcon, StrikethroughIcon, UnderlineIcon, UnlinkIcon } from "lucide-react";
8
8
  import { createContext, use, useCallback, useEffect, useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -13,7 +13,7 @@ import Placeholder from "@tiptap/extension-placeholder";
13
13
  import Underline from "@tiptap/extension-underline";
14
14
  import { EditorContent, useEditor } from "@tiptap/react";
15
15
  import StarterKit from "@tiptap/starter-kit";
16
- //#region src/components/features/rich-text-editor/toolbar/toolbar-button.tsx
16
+ // src/components/features/rich-text-editor/toolbar/toolbar-button.tsx
17
17
  function ToolbarButton({ ref, active, disabled, onClick, tooltip, children, className }) {
18
18
  const button = /* @__PURE__ */ jsx("button", {
19
19
  ref,
@@ -35,8 +35,7 @@ function ToolbarButton({ ref, active, disabled, onClick, tooltip, children, clas
35
35
  });
36
36
  }
37
37
  ToolbarButton.displayName = "ToolbarButton";
38
- //#endregion
39
- //#region src/components/features/rich-text-editor/toolbar/bold-toolbar.tsx
38
+ // src/components/features/rich-text-editor/toolbar/bold-toolbar.tsx
40
39
  function BoldToolbar() {
41
40
  const { editor } = useRichTextEditor();
42
41
  return /* @__PURE__ */ jsx(ToolbarButton, {
@@ -48,8 +47,7 @@ function BoldToolbar() {
48
47
  children: /* @__PURE__ */ jsx(BoldIcon, { className: "h-4 w-4" })
49
48
  });
50
49
  }
51
- //#endregion
52
- //#region src/components/features/rich-text-editor/toolbar/italic-toolbar.tsx
50
+ // src/components/features/rich-text-editor/toolbar/italic-toolbar.tsx
53
51
  function ItalicToolbar() {
54
52
  const { editor } = useRichTextEditor();
55
53
  return /* @__PURE__ */ jsx(ToolbarButton, {
@@ -61,8 +59,7 @@ function ItalicToolbar() {
61
59
  children: /* @__PURE__ */ jsx(ItalicIcon, { className: "h-4 w-4" })
62
60
  });
63
61
  }
64
- //#endregion
65
- //#region src/components/features/rich-text-editor/toolbar/link-toolbar.tsx
62
+ // src/components/features/rich-text-editor/toolbar/link-toolbar.tsx
66
63
  function normalizeUrl(input) {
67
64
  const trimmed = input.trim();
68
65
  if (!trimmed) return trimmed;
@@ -133,8 +130,7 @@ function LinkToolbar() {
133
130
  })
134
131
  });
135
132
  }
136
- //#endregion
137
- //#region src/components/features/rich-text-editor/toolbar/strike-toolbar.tsx
133
+ // src/components/features/rich-text-editor/toolbar/strike-toolbar.tsx
138
134
  function StrikeToolbar() {
139
135
  const { editor } = useRichTextEditor();
140
136
  return /* @__PURE__ */ jsx(ToolbarButton, {
@@ -146,8 +142,7 @@ function StrikeToolbar() {
146
142
  children: /* @__PURE__ */ jsx(StrikethroughIcon, { className: "h-4 w-4" })
147
143
  });
148
144
  }
149
- //#endregion
150
- //#region src/components/features/rich-text-editor/toolbar/toolbar.tsx
145
+ // src/components/features/rich-text-editor/toolbar/toolbar.tsx
151
146
  function Toolbar({ children, className }) {
152
147
  return /* @__PURE__ */ jsx("div", {
153
148
  className: cn("border-input-border flex items-center gap-0.5 border-b px-2 py-1", className),
@@ -157,8 +152,7 @@ function Toolbar({ children, className }) {
157
152
  function ToolbarSeparator() {
158
153
  return /* @__PURE__ */ jsx("div", { className: "bg-input-border mx-1 h-5 w-px" });
159
154
  }
160
- //#endregion
161
- //#region src/components/features/rich-text-editor/toolbar/underline-toolbar.tsx
155
+ // src/components/features/rich-text-editor/toolbar/underline-toolbar.tsx
162
156
  function UnderlineToolbar() {
163
157
  const { editor } = useRichTextEditor();
164
158
  return /* @__PURE__ */ jsx(ToolbarButton, {
@@ -170,8 +164,7 @@ function UnderlineToolbar() {
170
164
  children: /* @__PURE__ */ jsx(UnderlineIcon, { className: "h-4 w-4" })
171
165
  });
172
166
  }
173
- //#endregion
174
- //#region src/components/features/rich-text-editor/rich-text-editor.tsx
167
+ // src/components/features/rich-text-editor/rich-text-editor.tsx
175
168
  const RichTextEditorContext = createContext({ editor: null });
176
169
  function useRichTextEditor() {
177
170
  return use(RichTextEditorContext);
@@ -270,5 +263,4 @@ const RichTextEditor = Object.assign(RichTextEditorRoot, {
270
263
  Link: LinkToolbar,
271
264
  Separator: ToolbarSeparator
272
265
  });
273
- //#endregion
274
266
  export { useRichTextEditor as n, RichTextEditor as t };