@datum-cloud/datum-ui 0.2.0-alpha.0 → 0.2.0-alpha.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 (507) hide show
  1. package/dist/_shadcn/hooks/use-mobile.d.ts +2 -0
  2. package/dist/_shadcn/hooks/use-mobile.d.ts.map +1 -0
  3. package/dist/_shadcn/hooks/use-theme.d.ts +9 -0
  4. package/dist/_shadcn/hooks/use-theme.d.ts.map +1 -0
  5. package/dist/_shadcn/lib/utils.d.ts +13 -0
  6. package/dist/_shadcn/lib/utils.d.ts.map +1 -0
  7. package/dist/_shadcn/ui/alert.d.ts +9 -0
  8. package/dist/_shadcn/ui/alert.d.ts.map +1 -0
  9. package/dist/_shadcn/ui/avatar.d.ts +7 -0
  10. package/dist/_shadcn/ui/avatar.d.ts.map +1 -0
  11. package/dist/_shadcn/ui/badge.d.ts +15 -0
  12. package/dist/_shadcn/ui/badge.d.ts.map +1 -0
  13. package/dist/_shadcn/ui/breadcrumb.d.ts +12 -0
  14. package/dist/_shadcn/ui/breadcrumb.d.ts.map +1 -0
  15. package/dist/_shadcn/ui/button-group.d.ts +12 -0
  16. package/dist/_shadcn/ui/button-group.d.ts.map +1 -0
  17. package/dist/_shadcn/ui/button.d.ts +17 -0
  18. package/dist/_shadcn/ui/button.d.ts.map +1 -0
  19. package/dist/_shadcn/ui/card.d.ts +9 -0
  20. package/dist/_shadcn/ui/card.d.ts.map +1 -0
  21. package/dist/_shadcn/ui/chart.d.ts +53 -0
  22. package/dist/_shadcn/ui/chart.d.ts.map +1 -0
  23. package/dist/_shadcn/ui/checkbox.d.ts +5 -0
  24. package/dist/_shadcn/ui/checkbox.d.ts.map +1 -0
  25. package/dist/_shadcn/ui/collapsible.d.ts +6 -0
  26. package/dist/_shadcn/ui/collapsible.d.ts.map +1 -0
  27. package/dist/_shadcn/ui/command.d.ts +20 -0
  28. package/dist/_shadcn/ui/command.d.ts.map +1 -0
  29. package/dist/_shadcn/ui/dialog.d.ts +14 -0
  30. package/dist/_shadcn/ui/dialog.d.ts.map +1 -0
  31. package/dist/_shadcn/ui/dropdown-menu.d.ts +33 -0
  32. package/dist/_shadcn/ui/dropdown-menu.d.ts.map +1 -0
  33. package/dist/_shadcn/ui/hover-card.d.ts +7 -0
  34. package/dist/_shadcn/ui/hover-card.d.ts.map +1 -0
  35. package/dist/_shadcn/ui/input-group.d.ts +17 -0
  36. package/dist/_shadcn/ui/input-group.d.ts.map +1 -0
  37. package/dist/_shadcn/ui/input.d.ts +7 -0
  38. package/dist/_shadcn/ui/input.d.ts.map +1 -0
  39. package/dist/_shadcn/ui/label.d.ts +5 -0
  40. package/dist/_shadcn/ui/label.d.ts.map +1 -0
  41. package/dist/_shadcn/ui/map-leaflet-imports.d.ts +7 -0
  42. package/dist/_shadcn/ui/map-leaflet-imports.d.ts.map +1 -0
  43. package/dist/_shadcn/ui/map.d.ts +115 -0
  44. package/dist/_shadcn/ui/map.d.ts.map +1 -0
  45. package/dist/_shadcn/ui/place-autocomplete.d.ts +64 -0
  46. package/dist/_shadcn/ui/place-autocomplete.d.ts.map +1 -0
  47. package/dist/_shadcn/ui/popover.d.ts +8 -0
  48. package/dist/_shadcn/ui/popover.d.ts.map +1 -0
  49. package/dist/_shadcn/ui/radio-group.d.ts +6 -0
  50. package/dist/_shadcn/ui/radio-group.d.ts.map +1 -0
  51. package/dist/_shadcn/ui/select.d.ts +14 -0
  52. package/dist/_shadcn/ui/select.d.ts.map +1 -0
  53. package/dist/_shadcn/ui/separator.d.ts +5 -0
  54. package/dist/_shadcn/ui/separator.d.ts.map +1 -0
  55. package/dist/_shadcn/ui/sheet.d.ts +14 -0
  56. package/dist/_shadcn/ui/sheet.d.ts.map +1 -0
  57. package/dist/_shadcn/ui/skeleton.d.ts +3 -0
  58. package/dist/_shadcn/ui/skeleton.d.ts.map +1 -0
  59. package/dist/_shadcn/ui/sonner.d.ts +5 -0
  60. package/dist/_shadcn/ui/sonner.d.ts.map +1 -0
  61. package/dist/_shadcn/ui/spinner.d.ts +3 -0
  62. package/dist/_shadcn/ui/spinner.d.ts.map +1 -0
  63. package/dist/_shadcn/ui/switch.d.ts +5 -0
  64. package/dist/_shadcn/ui/switch.d.ts.map +1 -0
  65. package/dist/_shadcn/ui/table.d.ts +11 -0
  66. package/dist/_shadcn/ui/table.d.ts.map +1 -0
  67. package/dist/_shadcn/ui/tabs.d.ts +13 -0
  68. package/dist/_shadcn/ui/tabs.d.ts.map +1 -0
  69. package/dist/_shadcn/ui/textarea.d.ts +4 -0
  70. package/dist/_shadcn/ui/textarea.d.ts.map +1 -0
  71. package/dist/_shadcn/ui/tooltip.d.ts +8 -0
  72. package/dist/_shadcn/ui/tooltip.d.ts.map +1 -0
  73. package/dist/_shadcn/ui/visuallyhidden.d.ts +4 -0
  74. package/dist/_shadcn/ui/visuallyhidden.d.ts.map +1 -0
  75. package/dist/{close.icon-DgjsP0sw.mjs → close.icon-chkXPAUC.mjs} +2 -3
  76. package/dist/cn-DWCc1QRE.mjs +10 -0
  77. package/dist/components/base/alert/alert.d.ts +21 -0
  78. package/dist/components/base/alert/alert.d.ts.map +1 -0
  79. package/dist/components/base/alert/index.d.ts +2 -0
  80. package/dist/components/base/alert/index.d.ts.map +1 -0
  81. package/dist/components/base/badge/badge.d.ts +17 -0
  82. package/dist/components/base/badge/badge.d.ts.map +1 -0
  83. package/dist/components/base/badge/index.d.ts +2 -0
  84. package/dist/components/base/badge/index.d.ts.map +1 -0
  85. package/dist/components/base/breadcrumb/index.d.ts +2 -0
  86. package/dist/components/base/breadcrumb/index.d.ts.map +1 -0
  87. package/dist/components/base/button/button.d.ts +24 -0
  88. package/dist/components/base/button/button.d.ts.map +1 -0
  89. package/dist/components/base/button/index.d.ts +5 -0
  90. package/dist/components/base/button/index.d.ts.map +1 -0
  91. package/dist/components/base/button/link-button.d.ts +19 -0
  92. package/dist/components/base/button/link-button.d.ts.map +1 -0
  93. package/dist/components/base/button-group/index.d.ts +2 -0
  94. package/dist/components/base/button-group/index.d.ts.map +1 -0
  95. package/dist/components/base/calendar/calendar.d.ts +10 -0
  96. package/dist/components/base/calendar/calendar.d.ts.map +1 -0
  97. package/dist/components/base/calendar/index.d.ts +2 -0
  98. package/dist/components/base/calendar/index.d.ts.map +1 -0
  99. package/dist/components/base/card/card.d.ts +8 -0
  100. package/dist/components/base/card/card.d.ts.map +1 -0
  101. package/dist/components/base/card/index.d.ts +2 -0
  102. package/dist/components/base/card/index.d.ts.map +1 -0
  103. package/dist/components/base/chart/index.d.ts +2 -0
  104. package/dist/components/base/chart/index.d.ts.map +1 -0
  105. package/dist/components/base/checkbox/checkbox.d.ts +10 -0
  106. package/dist/components/base/checkbox/checkbox.d.ts.map +1 -0
  107. package/dist/components/base/checkbox/index.d.ts +2 -0
  108. package/dist/components/base/checkbox/index.d.ts.map +1 -0
  109. package/dist/components/base/collapsible/index.d.ts +2 -0
  110. package/dist/components/base/collapsible/index.d.ts.map +1 -0
  111. package/dist/components/base/command/index.d.ts +2 -0
  112. package/dist/components/base/command/index.d.ts.map +1 -0
  113. package/dist/components/base/dialog/dialog.d.ts +46 -0
  114. package/dist/components/base/dialog/dialog.d.ts.map +1 -0
  115. package/dist/components/base/dialog/index.d.ts +3 -0
  116. package/dist/components/base/dialog/index.d.ts.map +1 -0
  117. package/dist/components/base/hover-card/index.d.ts +2 -0
  118. package/dist/components/base/hover-card/index.d.ts.map +1 -0
  119. package/dist/components/base/index.d.ts +38 -0
  120. package/dist/components/base/index.d.ts.map +1 -0
  121. package/dist/components/base/input/index.d.ts +2 -0
  122. package/dist/components/base/input/index.d.ts.map +1 -0
  123. package/dist/components/base/input/input.d.ts +9 -0
  124. package/dist/components/base/input/input.d.ts.map +1 -0
  125. package/dist/components/base/input-group/index.d.ts +2 -0
  126. package/dist/components/base/input-group/index.d.ts.map +1 -0
  127. package/dist/components/base/label/index.d.ts +17 -0
  128. package/dist/components/base/label/index.d.ts.map +1 -0
  129. package/dist/components/base/label/label.d.ts +26 -0
  130. package/dist/components/base/label/label.d.ts.map +1 -0
  131. package/dist/components/base/map/index.d.ts +2 -0
  132. package/dist/components/base/map/index.d.ts.map +1 -0
  133. package/dist/components/base/place-autocomplete/index.d.ts +2 -0
  134. package/dist/components/base/place-autocomplete/index.d.ts.map +1 -0
  135. package/dist/components/base/popover/index.d.ts +2 -0
  136. package/dist/components/base/popover/index.d.ts.map +1 -0
  137. package/dist/components/base/radio-group/index.d.ts +2 -0
  138. package/dist/components/base/radio-group/index.d.ts.map +1 -0
  139. package/dist/components/base/radio-group/radio-group.d.ts +16 -0
  140. package/dist/components/base/radio-group/radio-group.d.ts.map +1 -0
  141. package/dist/components/base/select/index.d.ts +2 -0
  142. package/dist/components/base/select/index.d.ts.map +1 -0
  143. package/dist/components/base/select/select.d.ts +54 -0
  144. package/dist/components/base/select/select.d.ts.map +1 -0
  145. package/dist/components/base/separator/index.d.ts +2 -0
  146. package/dist/components/base/separator/index.d.ts.map +1 -0
  147. package/dist/components/base/sheet/index.d.ts +2 -0
  148. package/dist/components/base/sheet/index.d.ts.map +1 -0
  149. package/dist/components/base/sheet/sheet.d.ts +23 -0
  150. package/dist/components/base/sheet/sheet.d.ts.map +1 -0
  151. package/dist/components/base/skeleton/index.d.ts +2 -0
  152. package/dist/components/base/skeleton/index.d.ts.map +1 -0
  153. package/dist/components/base/spinner/index.d.ts +2 -0
  154. package/dist/components/base/spinner/index.d.ts.map +1 -0
  155. package/dist/components/base/switch/index.d.ts +2 -0
  156. package/dist/components/base/switch/index.d.ts.map +1 -0
  157. package/dist/components/base/switch/switch.d.ts +10 -0
  158. package/dist/components/base/switch/switch.d.ts.map +1 -0
  159. package/dist/components/base/table/index.d.ts +2 -0
  160. package/dist/components/base/table/index.d.ts.map +1 -0
  161. package/dist/components/base/tabs/index.d.ts +2 -0
  162. package/dist/components/base/tabs/index.d.ts.map +1 -0
  163. package/dist/components/base/tabs/tabs.d.ts +22 -0
  164. package/dist/components/base/tabs/tabs.d.ts.map +1 -0
  165. package/dist/components/base/textarea/index.d.ts +2 -0
  166. package/dist/components/base/textarea/index.d.ts.map +1 -0
  167. package/dist/components/base/textarea/textarea.d.ts +9 -0
  168. package/dist/components/base/textarea/textarea.d.ts.map +1 -0
  169. package/dist/components/base/tooltip/index.d.ts +2 -0
  170. package/dist/components/base/tooltip/index.d.ts.map +1 -0
  171. package/dist/components/base/tooltip/tooltip.d.ts +17 -0
  172. package/dist/components/base/tooltip/tooltip.d.ts.map +1 -0
  173. package/dist/components/base/typography/index.d.ts +2 -0
  174. package/dist/components/base/typography/index.d.ts.map +1 -0
  175. package/dist/components/base/typography/typography.d.ts +1182 -0
  176. package/dist/components/base/typography/typography.d.ts.map +1 -0
  177. package/dist/components/base/visuallyhidden/index.d.ts +2 -0
  178. package/dist/components/base/visuallyhidden/index.d.ts.map +1 -0
  179. package/dist/components/features/autocomplete/autocomplete.d.ts +34 -0
  180. package/dist/components/features/autocomplete/autocomplete.d.ts.map +1 -0
  181. package/dist/components/features/autocomplete/autocomplete.types.d.ts +71 -0
  182. package/dist/components/features/autocomplete/autocomplete.types.d.ts.map +1 -0
  183. package/dist/components/features/autocomplete/index.d.ts +3 -0
  184. package/dist/components/features/autocomplete/index.d.ts.map +1 -0
  185. package/dist/components/features/avatar-stack/avatar-stack.d.ts +17 -0
  186. package/dist/components/features/avatar-stack/avatar-stack.d.ts.map +1 -0
  187. package/dist/components/features/avatar-stack/index.d.ts +2 -0
  188. package/dist/components/features/avatar-stack/index.d.ts.map +1 -0
  189. package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts +41 -0
  190. package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts.map +1 -0
  191. package/dist/components/features/calendar-date-picker/index.d.ts +2 -0
  192. package/dist/components/features/calendar-date-picker/index.d.ts.map +1 -0
  193. package/dist/components/features/dropdown/dropdown.d.ts +31 -0
  194. package/dist/components/features/dropdown/dropdown.d.ts.map +1 -0
  195. package/dist/components/features/dropdown/index.d.ts +2 -0
  196. package/dist/components/features/dropdown/index.d.ts.map +1 -0
  197. package/dist/components/features/dropzone/dropzone.d.ts +28 -0
  198. package/dist/components/features/dropzone/dropzone.d.ts.map +1 -0
  199. package/dist/components/features/dropzone/index.d.ts +3 -0
  200. package/dist/components/features/dropzone/index.d.ts.map +1 -0
  201. package/dist/components/features/empty-content/empty-content.d.ts +29 -0
  202. package/dist/components/features/empty-content/empty-content.d.ts.map +1 -0
  203. package/dist/components/features/empty-content/index.d.ts +3 -0
  204. package/dist/components/features/empty-content/index.d.ts.map +1 -0
  205. package/dist/components/features/file-input-button/file-input-button.d.ts +33 -0
  206. package/dist/components/features/file-input-button/file-input-button.d.ts.map +1 -0
  207. package/dist/components/features/file-input-button/index.d.ts +2 -0
  208. package/dist/components/features/file-input-button/index.d.ts.map +1 -0
  209. package/dist/components/features/form/components/form-autocomplete.d.ts +44 -0
  210. package/dist/components/features/form/components/form-autocomplete.d.ts.map +1 -0
  211. package/dist/components/features/form/components/form-button.d.ts +23 -0
  212. package/dist/components/features/form/components/form-button.d.ts.map +1 -0
  213. package/dist/components/features/form/components/form-checkbox.d.ts +18 -0
  214. package/dist/components/features/form/components/form-checkbox.d.ts.map +1 -0
  215. package/dist/components/features/form/components/form-copy-box.d.ts +41 -0
  216. package/dist/components/features/form/components/form-copy-box.d.ts.map +1 -0
  217. package/dist/components/features/form/components/form-custom.d.ts +27 -0
  218. package/dist/components/features/form/components/form-custom.d.ts.map +1 -0
  219. package/dist/components/features/form/components/form-description.d.ts +19 -0
  220. package/dist/components/features/form/components/form-description.d.ts.map +1 -0
  221. package/dist/components/features/form/components/form-dialog.d.ts +58 -0
  222. package/dist/components/features/form/components/form-dialog.d.ts.map +1 -0
  223. package/dist/components/features/form/components/form-error.d.ts +29 -0
  224. package/dist/components/features/form/components/form-error.d.ts.map +1 -0
  225. package/dist/components/features/form/components/form-field-array.d.ts +40 -0
  226. package/dist/components/features/form/components/form-field-array.d.ts.map +1 -0
  227. package/dist/components/features/form/components/form-field.d.ts +40 -0
  228. package/dist/components/features/form/components/form-field.d.ts.map +1 -0
  229. package/dist/components/features/form/components/form-input-group.d.ts +21 -0
  230. package/dist/components/features/form/components/form-input-group.d.ts.map +1 -0
  231. package/dist/components/features/form/components/form-input.d.ts +21 -0
  232. package/dist/components/features/form/components/form-input.d.ts.map +1 -0
  233. package/dist/components/features/form/components/form-radio-group.d.ts +34 -0
  234. package/dist/components/features/form/components/form-radio-group.d.ts.map +1 -0
  235. package/dist/components/features/form/components/form-root.d.ts +49 -0
  236. package/dist/components/features/form/components/form-root.d.ts.map +1 -0
  237. package/dist/components/features/form/components/form-select.d.ts +34 -0
  238. package/dist/components/features/form/components/form-select.d.ts.map +1 -0
  239. package/dist/components/features/form/components/form-submit.d.ts +16 -0
  240. package/dist/components/features/form/components/form-submit.d.ts.map +1 -0
  241. package/dist/components/features/form/components/form-switch.d.ts +18 -0
  242. package/dist/components/features/form/components/form-switch.d.ts.map +1 -0
  243. package/dist/components/features/form/components/form-textarea.d.ts +21 -0
  244. package/dist/components/features/form/components/form-textarea.d.ts.map +1 -0
  245. package/dist/components/features/form/components/form-when.d.ts +34 -0
  246. package/dist/components/features/form/components/form-when.d.ts.map +1 -0
  247. package/dist/components/features/form/components/index.d.ts +20 -0
  248. package/dist/components/features/form/components/index.d.ts.map +1 -0
  249. package/dist/components/features/form/components/stepper/form-step.d.ts +22 -0
  250. package/dist/components/features/form/components/stepper/form-step.d.ts.map +1 -0
  251. package/dist/components/features/form/components/stepper/form-stepper.d.ts +71 -0
  252. package/dist/components/features/form/components/stepper/form-stepper.d.ts.map +1 -0
  253. package/dist/components/features/form/components/stepper/index.d.ts +5 -0
  254. package/dist/components/features/form/components/stepper/index.d.ts.map +1 -0
  255. package/dist/components/features/form/components/stepper/stepper-controls.d.ts +32 -0
  256. package/dist/components/features/form/components/stepper/stepper-controls.d.ts.map +1 -0
  257. package/dist/components/features/form/components/stepper/stepper-navigation.d.ts +17 -0
  258. package/dist/components/features/form/components/stepper/stepper-navigation.d.ts.map +1 -0
  259. package/dist/components/features/form/context/field-context.d.ts +16 -0
  260. package/dist/components/features/form/context/field-context.d.ts.map +1 -0
  261. package/dist/components/features/form/context/form-context.d.ts +20 -0
  262. package/dist/components/features/form/context/form-context.d.ts.map +1 -0
  263. package/dist/components/features/form/context/index.d.ts +3 -0
  264. package/dist/components/features/form/context/index.d.ts.map +1 -0
  265. package/dist/components/features/form/hooks/index.d.ts +6 -0
  266. package/dist/components/features/form/hooks/index.d.ts.map +1 -0
  267. package/dist/components/features/form/hooks/use-field-context.d.ts +24 -0
  268. package/dist/components/features/form/hooks/use-field-context.d.ts.map +1 -0
  269. package/dist/components/features/form/hooks/use-field.d.ts +30 -0
  270. package/dist/components/features/form/hooks/use-field.d.ts.map +1 -0
  271. package/dist/components/features/form/hooks/use-form-context.d.ts +19 -0
  272. package/dist/components/features/form/hooks/use-form-context.d.ts.map +1 -0
  273. package/dist/components/features/form/hooks/use-stepper.d.ts +56 -0
  274. package/dist/components/features/form/hooks/use-stepper.d.ts.map +1 -0
  275. package/dist/components/features/form/hooks/use-watch.d.ts +41 -0
  276. package/dist/components/features/form/hooks/use-watch.d.ts.map +1 -0
  277. package/dist/components/features/form/index.d.ts +133 -0
  278. package/dist/components/features/form/index.d.ts.map +1 -0
  279. package/dist/components/features/form/types/index.d.ts +601 -0
  280. package/dist/components/features/form/types/index.d.ts.map +1 -0
  281. package/dist/components/features/grid/components/col.d.ts +5 -0
  282. package/dist/components/features/grid/components/col.d.ts.map +1 -0
  283. package/dist/components/features/grid/components/index.d.ts +7 -0
  284. package/dist/components/features/grid/components/index.d.ts.map +1 -0
  285. package/dist/components/features/grid/components/row.d.ts +6 -0
  286. package/dist/components/features/grid/components/row.d.ts.map +1 -0
  287. package/dist/components/features/grid/constants/grid.constants.d.ts +22 -0
  288. package/dist/components/features/grid/constants/grid.constants.d.ts.map +1 -0
  289. package/dist/components/features/grid/index.d.ts +7 -0
  290. package/dist/components/features/grid/index.d.ts.map +1 -0
  291. package/dist/components/features/grid/types/grid.types.d.ts +43 -0
  292. package/dist/components/features/grid/types/grid.types.d.ts.map +1 -0
  293. package/dist/components/features/grid/utils/responsive.d.ts +10 -0
  294. package/dist/components/features/grid/utils/responsive.d.ts.map +1 -0
  295. package/dist/components/features/index.d.ts +27 -0
  296. package/dist/components/features/index.d.ts.map +1 -0
  297. package/dist/components/features/input-number/index.d.ts +2 -0
  298. package/dist/components/features/input-number/index.d.ts.map +1 -0
  299. package/dist/components/features/input-number/input-number.d.ts +22 -0
  300. package/dist/components/features/input-number/input-number.d.ts.map +1 -0
  301. package/dist/components/features/input-with-addons/index.d.ts +2 -0
  302. package/dist/components/features/input-with-addons/index.d.ts.map +1 -0
  303. package/dist/components/features/input-with-addons/input-with-addons.d.ts +14 -0
  304. package/dist/components/features/input-with-addons/input-with-addons.d.ts.map +1 -0
  305. package/dist/components/features/loader-overlay/index.d.ts +2 -0
  306. package/dist/components/features/loader-overlay/index.d.ts.map +1 -0
  307. package/dist/components/features/loader-overlay/loader-overlay.d.ts +5 -0
  308. package/dist/components/features/loader-overlay/loader-overlay.d.ts.map +1 -0
  309. package/dist/components/features/more-actions/index.d.ts +3 -0
  310. package/dist/components/features/more-actions/index.d.ts.map +1 -0
  311. package/dist/components/features/more-actions/more-actions.d.ts +19 -0
  312. package/dist/components/features/more-actions/more-actions.d.ts.map +1 -0
  313. package/dist/components/features/nprogress/index.d.ts +4 -0
  314. package/dist/components/features/nprogress/index.d.ts.map +1 -0
  315. package/dist/components/features/page-title/index.d.ts +3 -0
  316. package/dist/components/features/page-title/index.d.ts.map +1 -0
  317. package/dist/components/features/page-title/page-title.d.ts +12 -0
  318. package/dist/components/features/page-title/page-title.d.ts.map +1 -0
  319. package/dist/components/features/sidebar/app-sidebar.d.ts +14 -0
  320. package/dist/components/features/sidebar/app-sidebar.d.ts.map +1 -0
  321. package/dist/components/features/sidebar/index.d.ts +4 -0
  322. package/dist/components/features/sidebar/index.d.ts.map +1 -0
  323. package/dist/components/features/sidebar/nav-main.d.ts +36 -0
  324. package/dist/components/features/sidebar/nav-main.d.ts.map +1 -0
  325. package/dist/components/features/sidebar/sidebar.d.ts +85 -0
  326. package/dist/components/features/sidebar/sidebar.d.ts.map +1 -0
  327. package/dist/components/features/stepper/index.d.ts +2 -0
  328. package/dist/components/features/stepper/index.d.ts.map +1 -0
  329. package/dist/components/features/stepper/stepper.d.ts +42 -0
  330. package/dist/components/features/stepper/stepper.d.ts.map +1 -0
  331. package/dist/components/features/tag-input/index.d.ts +2 -0
  332. package/dist/components/features/tag-input/index.d.ts.map +1 -0
  333. package/dist/components/features/tag-input/tag-input.d.ts +38 -0
  334. package/dist/components/features/tag-input/tag-input.d.ts.map +1 -0
  335. package/dist/components/features/task-queue/constants.d.ts +8 -0
  336. package/dist/components/features/task-queue/constants.d.ts.map +1 -0
  337. package/dist/components/features/task-queue/core/index.d.ts +10 -0
  338. package/dist/components/features/task-queue/core/index.d.ts.map +1 -0
  339. package/dist/components/features/task-queue/core/task-panel-actions.d.ts +7 -0
  340. package/dist/components/features/task-queue/core/task-panel-actions.d.ts.map +1 -0
  341. package/dist/components/features/task-queue/core/task-panel-counter.d.ts +10 -0
  342. package/dist/components/features/task-queue/core/task-panel-counter.d.ts.map +1 -0
  343. package/dist/components/features/task-queue/core/task-panel-header.d.ts +2 -0
  344. package/dist/components/features/task-queue/core/task-panel-header.d.ts.map +1 -0
  345. package/dist/components/features/task-queue/core/task-panel-item.d.ts +9 -0
  346. package/dist/components/features/task-queue/core/task-panel-item.d.ts.map +1 -0
  347. package/dist/components/features/task-queue/core/task-panel.d.ts +6 -0
  348. package/dist/components/features/task-queue/core/task-panel.d.ts.map +1 -0
  349. package/dist/components/features/task-queue/core/task-queue-dropdown.d.ts +2 -0
  350. package/dist/components/features/task-queue/core/task-queue-dropdown.d.ts.map +1 -0
  351. package/dist/components/features/task-queue/core/task-queue-trigger.d.ts +9 -0
  352. package/dist/components/features/task-queue/core/task-queue-trigger.d.ts.map +1 -0
  353. package/dist/components/features/task-queue/core/task-summary-dialog.d.ts +24 -0
  354. package/dist/components/features/task-queue/core/task-summary-dialog.d.ts.map +1 -0
  355. package/dist/components/features/task-queue/engine/executor.d.ts +14 -0
  356. package/dist/components/features/task-queue/engine/executor.d.ts.map +1 -0
  357. package/dist/components/features/task-queue/engine/index.d.ts +5 -0
  358. package/dist/components/features/task-queue/engine/index.d.ts.map +1 -0
  359. package/dist/components/features/task-queue/engine/queue.d.ts +42 -0
  360. package/dist/components/features/task-queue/engine/queue.d.ts.map +1 -0
  361. package/dist/components/features/task-queue/engine/storage/detect-storage.d.ts +19 -0
  362. package/dist/components/features/task-queue/engine/storage/detect-storage.d.ts.map +1 -0
  363. package/dist/components/features/task-queue/engine/storage/index.d.ts +6 -0
  364. package/dist/components/features/task-queue/engine/storage/index.d.ts.map +1 -0
  365. package/dist/components/features/task-queue/engine/storage/local-storage.d.ts +12 -0
  366. package/dist/components/features/task-queue/engine/storage/local-storage.d.ts.map +1 -0
  367. package/dist/components/features/task-queue/engine/storage/memory-storage.d.ts +18 -0
  368. package/dist/components/features/task-queue/engine/storage/memory-storage.d.ts.map +1 -0
  369. package/dist/components/features/task-queue/engine/storage/redis-storage.d.ts +23 -0
  370. package/dist/components/features/task-queue/engine/storage/redis-storage.d.ts.map +1 -0
  371. package/dist/components/features/task-queue/engine/storage/storage.d.ts +2 -0
  372. package/dist/components/features/task-queue/engine/storage/storage.d.ts.map +1 -0
  373. package/dist/components/features/task-queue/hooks/index.d.ts +3 -0
  374. package/dist/components/features/task-queue/hooks/index.d.ts.map +1 -0
  375. package/dist/components/features/task-queue/hooks/use-task-queue.d.ts +3 -0
  376. package/dist/components/features/task-queue/hooks/use-task-queue.d.ts.map +1 -0
  377. package/dist/components/features/task-queue/hooks/use-task-scope.d.ts +52 -0
  378. package/dist/components/features/task-queue/hooks/use-task-scope.d.ts.map +1 -0
  379. package/dist/components/features/task-queue/index.d.ts +9 -0
  380. package/dist/components/features/task-queue/index.d.ts.map +1 -0
  381. package/dist/components/features/task-queue/provider/index.d.ts +2 -0
  382. package/dist/components/features/task-queue/provider/index.d.ts.map +1 -0
  383. package/dist/components/features/task-queue/provider/task-queue-provider.d.ts +14 -0
  384. package/dist/components/features/task-queue/provider/task-queue-provider.d.ts.map +1 -0
  385. package/dist/components/features/task-queue/types.d.ts +213 -0
  386. package/dist/components/features/task-queue/types.d.ts.map +1 -0
  387. package/dist/components/features/task-queue/utils/index.d.ts +37 -0
  388. package/dist/components/features/task-queue/utils/index.d.ts.map +1 -0
  389. package/dist/components/features/time-range-picker/components/absolute-range-panel.d.ts +18 -0
  390. package/dist/components/features/time-range-picker/components/absolute-range-panel.d.ts.map +1 -0
  391. package/dist/components/features/time-range-picker/components/index.d.ts +4 -0
  392. package/dist/components/features/time-range-picker/components/index.d.ts.map +1 -0
  393. package/dist/components/features/time-range-picker/components/quick-ranges-panel.d.ts +10 -0
  394. package/dist/components/features/time-range-picker/components/quick-ranges-panel.d.ts.map +1 -0
  395. package/dist/components/features/time-range-picker/components/timezone-selector.d.ts +10 -0
  396. package/dist/components/features/time-range-picker/components/timezone-selector.d.ts.map +1 -0
  397. package/dist/components/features/time-range-picker/index.d.ts +8 -0
  398. package/dist/components/features/time-range-picker/index.d.ts.map +1 -0
  399. package/dist/components/features/time-range-picker/presets.d.ts +29 -0
  400. package/dist/components/features/time-range-picker/presets.d.ts.map +1 -0
  401. package/dist/components/features/time-range-picker/time-range-picker.d.ts +31 -0
  402. package/dist/components/features/time-range-picker/time-range-picker.d.ts.map +1 -0
  403. package/dist/components/features/time-range-picker/types.d.ts +59 -0
  404. package/dist/components/features/time-range-picker/types.d.ts.map +1 -0
  405. package/dist/components/features/time-range-picker/utils/format-display.d.ts +20 -0
  406. package/dist/components/features/time-range-picker/utils/format-display.d.ts.map +1 -0
  407. package/dist/components/features/time-range-picker/utils/index.d.ts +4 -0
  408. package/dist/components/features/time-range-picker/utils/index.d.ts.map +1 -0
  409. package/dist/components/features/time-range-picker/utils/timezone.d.ts +51 -0
  410. package/dist/components/features/time-range-picker/utils/timezone.d.ts.map +1 -0
  411. package/dist/components/features/time-range-picker/utils/to-api-format.d.ts +13 -0
  412. package/dist/components/features/time-range-picker/utils/to-api-format.d.ts.map +1 -0
  413. package/dist/components/features/toast/headless-toast.d.ts +10 -0
  414. package/dist/components/features/toast/headless-toast.d.ts.map +1 -0
  415. package/dist/components/features/toast/index.d.ts +4 -0
  416. package/dist/components/features/toast/index.d.ts.map +1 -0
  417. package/dist/components/features/toast/toast.d.ts +9 -0
  418. package/dist/components/features/toast/toast.d.ts.map +1 -0
  419. package/dist/components/features/toast/toaster.d.ts +10 -0
  420. package/dist/components/features/toast/toaster.d.ts.map +1 -0
  421. package/dist/components/features/toast/types.d.ts +7 -0
  422. package/dist/components/features/toast/types.d.ts.map +1 -0
  423. package/dist/components/features/toast/use-toast.d.ts +3 -0
  424. package/dist/components/features/toast/use-toast.d.ts.map +1 -0
  425. package/dist/components/icons/close.icon.d.ts +5 -0
  426. package/dist/components/icons/close.icon.d.ts.map +1 -0
  427. package/dist/components/icons/icon-wrapper.d.ts +7 -0
  428. package/dist/components/icons/icon-wrapper.d.ts.map +1 -0
  429. package/dist/components/icons/index.d.ts +4 -0
  430. package/dist/components/icons/index.d.ts.map +1 -0
  431. package/dist/components/icons/spinner.icon.d.ts +13 -0
  432. package/dist/components/icons/spinner.icon.d.ts.map +1 -0
  433. package/dist/components/index.d.ts +10 -0
  434. package/dist/components/index.d.ts.map +1 -0
  435. package/dist/components/index.mjs +5 -249
  436. package/dist/components/themes/client-only.d.ts +8 -0
  437. package/dist/components/themes/client-only.d.ts.map +1 -0
  438. package/dist/components/themes/index.d.ts +5 -0
  439. package/dist/components/themes/index.d.ts.map +1 -0
  440. package/dist/components/themes/script.d.ts +2 -0
  441. package/dist/components/themes/script.d.ts.map +1 -0
  442. package/dist/components/themes/theme-script.d.ts +18 -0
  443. package/dist/components/themes/theme-script.d.ts.map +1 -0
  444. package/dist/components/themes/theme.provider.d.ts +4 -0
  445. package/dist/components/themes/theme.provider.d.ts.map +1 -0
  446. package/dist/components/themes/types.d.ts +30 -0
  447. package/dist/components/themes/types.d.ts.map +1 -0
  448. package/dist/datum.provider-D6VMjSV0.mjs +1 -2
  449. package/dist/hooks/index.d.ts +3 -0
  450. package/dist/hooks/index.d.ts.map +1 -0
  451. package/dist/hooks/index.mjs +1 -1
  452. package/dist/hooks/use-copy-to-clipboard.d.ts +8 -0
  453. package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  454. package/dist/hooks/use-debounce.d.ts +8 -0
  455. package/dist/hooks/use-debounce.d.ts.map +1 -0
  456. package/dist/hooks/use-theme.d.ts +2 -0
  457. package/dist/hooks/use-theme.d.ts.map +1 -0
  458. package/dist/{icon-wrapper-BTllM5Re.mjs → icon-wrapper-BgPkifId.mjs} +2 -3
  459. package/dist/icons/index.mjs +2 -2
  460. package/dist/index.d.ts +5 -0
  461. package/dist/index.d.ts.map +1 -0
  462. package/dist/index.mjs +6 -256
  463. package/dist/map-leaflet-imports-OKaoesjZ.mjs +8 -0
  464. package/dist/providers/datum.provider.d.ts +20 -0
  465. package/dist/providers/datum.provider.d.ts.map +1 -0
  466. package/dist/providers/index.d.ts +3 -0
  467. package/dist/providers/index.d.ts.map +1 -0
  468. package/dist/style.css +151 -2
  469. package/dist/{theme-script-B_TkiYs4.mjs → theme-script-DHyLk25i.mjs} +2679 -392
  470. package/dist/theme.provider-DpFLwtHe.mjs +1 -2
  471. package/dist/{use-copy-to-clipboard-D5U8bWsn.mjs → use-copy-to-clipboard-BfrpD6G8.mjs} +3 -4
  472. package/dist/use-debounce-BYB-jPeX.mjs +1 -2
  473. package/dist/utils/cn.d.ts +3 -0
  474. package/dist/utils/cn.d.ts.map +1 -0
  475. package/dist/utils/index.d.ts +2 -0
  476. package/dist/utils/index.d.ts.map +1 -0
  477. package/dist/utils/index.mjs +1 -1
  478. package/package.json +122 -11
  479. package/dist/chunk-CtajNgzt.mjs +0 -36
  480. package/dist/close.icon-DgjsP0sw.mjs.map +0 -1
  481. package/dist/components/index.d.mts +0 -27
  482. package/dist/components/index.d.mts.map +0 -1
  483. package/dist/components/index.mjs.map +0 -1
  484. package/dist/datum.provider-CsG2KNNc.d.mts +0 -30
  485. package/dist/datum.provider-CsG2KNNc.d.mts.map +0 -1
  486. package/dist/datum.provider-D6VMjSV0.mjs.map +0 -1
  487. package/dist/hooks/index.d.mts +0 -3
  488. package/dist/icon-wrapper-BTllM5Re.mjs.map +0 -1
  489. package/dist/icons/index.d.mts +0 -3
  490. package/dist/index-DH2XEEjO.d.mts +0 -3995
  491. package/dist/index-DH2XEEjO.d.mts.map +0 -1
  492. package/dist/index.d.mts +0 -31
  493. package/dist/index.d.mts.map +0 -1
  494. package/dist/index.mjs.map +0 -1
  495. package/dist/providers/index.d.mts +0 -3
  496. package/dist/spinner.icon-q9zisVlw.d.mts +0 -46
  497. package/dist/spinner.icon-q9zisVlw.d.mts.map +0 -1
  498. package/dist/style.css.map +0 -1
  499. package/dist/theme-script-B_TkiYs4.mjs.map +0 -1
  500. package/dist/theme.provider-DpFLwtHe.mjs.map +0 -1
  501. package/dist/types-BoL47uxV.d.mts +0 -34
  502. package/dist/types-BoL47uxV.d.mts.map +0 -1
  503. package/dist/use-copy-to-clipboard-D5U8bWsn.mjs.map +0 -1
  504. package/dist/use-debounce-BYB-jPeX.mjs.map +0 -1
  505. package/dist/use-debounce-Dg9zNz9U.d.mts +0 -19
  506. package/dist/use-debounce-Dg9zNz9U.d.mts.map +0 -1
  507. package/dist/utils/index.d.mts +0 -3
@@ -1,51 +1,46 @@
1
- import { n as __reExport, t as __exportAll } from "./chunk-CtajNgzt.mjs";
2
- import { n as SpinnerIcon, t as Icon } from "./icon-wrapper-BTllM5Re.mjs";
3
- import { t as CloseIcon } from "./close.icon-DgjsP0sw.mjs";
4
- import { n as toast$1, t as useCopyToClipboard } from "./use-copy-to-clipboard-D5U8bWsn.mjs";
5
- import { cn } from "@repo/shadcn/lib/utils";
1
+ import { t as cn$1 } from "./cn-DWCc1QRE.mjs";
2
+ import { n as SpinnerIcon, t as Icon } from "./icon-wrapper-BgPkifId.mjs";
3
+ import { t as CloseIcon } from "./close.icon-chkXPAUC.mjs";
4
+ import { n as toast$1, t as useCopyToClipboard } from "./use-copy-to-clipboard-BfrpD6G8.mjs";
6
5
  import { cva } from "class-variance-authority";
7
- import { Ban, Calendar, CalendarIcon, CheckCircle2, CheckIcon, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, CircleAlert, CircleCheck, CircleHelp, CircleIcon, CircleXIcon, CopyIcon, CornerDownRightIcon, Ellipsis, ExternalLinkIcon, FileIcon, Globe, ListTodo, PanelLeftCloseIcon, PanelLeftOpenIcon, UploadIcon, X, XCircle } from "lucide-react";
6
+ import { Ban, Calendar, CalendarIcon, CheckCircle2, CheckIcon, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronUpIcon, CircleAlert, CircleCheck, CircleHelp, CircleIcon, CircleXIcon, CopyIcon, CornerDownRightIcon, Ellipsis, ExternalLinkIcon, FileIcon, Globe, LayersIcon, ListTodo, Loader2Icon, LoaderCircleIcon, MapPinIcon, MaximizeIcon, MinimizeIcon, MinusIcon, MoreHorizontal, NavigationIcon, PanelLeftCloseIcon, PanelLeftOpenIcon, PenLineIcon, PentagonIcon, PlusIcon, SearchIcon, SquareIcon, Trash2Icon, Undo2Icon, UploadIcon, WaypointsIcon, X, XCircle, XIcon } from "lucide-react";
8
7
  import * as React$1 from "react";
9
- import React, { Fragment, createContext, use, useCallback, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
8
+ import React, { Fragment, Suspense, createContext, lazy, use, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
9
+ import { clsx } from "clsx";
10
+ import { twMerge } from "tailwind-merge";
10
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
- import { Button, buttonVariants } from "@repo/shadcn/ui/button";
12
+ import { Slot } from "@radix-ui/react-slot";
13
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
12
14
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
13
- import { CardContent, CardDescription, CardTitle } from "@repo/shadcn/ui/card";
14
- import { Checkbox } from "@repo/shadcn/ui/checkbox";
15
+ import * as RechartsPrimitive from "recharts";
16
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
17
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
15
18
  import * as DialogPrimitive from "@radix-ui/react-dialog";
16
- import { Dialog, DialogClose, DialogDescription, DialogFooter, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from "@repo/shadcn/ui/dialog";
17
- import { Input } from "@repo/shadcn/ui/input";
18
- import { Label } from "@repo/shadcn/ui/label";
19
- import { RadioGroup, RadioGroupItem } from "@repo/shadcn/ui/radio-group";
20
- import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from "@repo/shadcn/ui/select";
21
- import { Sheet, SheetContent, SheetDescription, SheetDescription as SheetDescription$1, SheetFooter, SheetHeader, SheetHeader as SheetHeader$1, SheetTitle, SheetTitle as SheetTitle$1, SheetTrigger } from "@repo/shadcn/ui/sheet";
22
- import { Switch } from "@repo/shadcn/ui/switch";
19
+ import { Command } from "cmdk";
20
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
21
+ import * as LabelPrimitive from "@radix-ui/react-label";
22
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
23
+ import { renderToString } from "react-dom/server.browser";
24
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
25
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
26
+ import * as SelectPrimitive from "@radix-ui/react-select";
27
+ import * as SwitchPrimitive from "@radix-ui/react-switch";
23
28
  import * as TabsPrimitive from "@radix-ui/react-tabs";
24
- import { Textarea } from "@repo/shadcn/ui/textarea";
25
- import * as TooltipPrimitiveRadix from "@radix-ui/react-tooltip";
26
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@repo/shadcn/ui/tooltip";
27
- import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@repo/shadcn/ui/collapsible";
28
- import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@repo/shadcn/ui/command";
29
- import { Popover, PopoverContent, PopoverTrigger } from "@repo/shadcn/ui/popover";
30
- import { Separator } from "@repo/shadcn/ui/separator";
31
- import { Skeleton } from "@repo/shadcn/ui/skeleton";
32
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@repo/shadcn/ui/table";
29
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
30
+ import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
33
31
  import { useVirtualizer } from "@tanstack/react-virtual";
34
- import { Avatar, AvatarFallback, AvatarImage } from "@repo/shadcn/ui/avatar";
32
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
35
33
  import { endOfDay, endOfMonth, endOfWeek, endOfYear, format, formatDistanceToNowStrict, isSameDay, isSameYear, parse, startOfDay, startOfMonth, startOfWeek, startOfYear, subDays, subHours, subMinutes } from "date-fns";
36
34
  import { formatInTimeZone, fromZonedTime, toDate, toZonedTime } from "date-fns-tz";
37
- import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
38
35
  import { useDropzone } from "react-dropzone";
39
36
  import { FormProvider, getFormProps, getInputProps, getTextareaProps, useForm, useFormMetadata, useInputControl } from "@conform-to/react";
40
37
  import { Toaster } from "sonner";
41
38
  import { getZodConstraint, parseWithZod } from "@conform-to/zod/v4";
42
39
  import { z } from "zod";
43
- import { Slot } from "@radix-ui/react-slot";
44
40
  import * as Stepperize from "@stepperize/react";
45
41
  import { NumericFormat } from "react-number-format";
46
42
  import NProgress from "nprogress";
47
43
  import { motion } from "motion/react";
48
- import { useIsMobile } from "@repo/shadcn/hooks/use-mobile";
49
44
 
50
45
  //#region src/components/base/alert/alert.tsx
51
46
  /**
@@ -103,7 +98,7 @@ function Alert({ className, variant, closable = false, onClose, ...props }) {
103
98
  if (!isVisible) return null;
104
99
  return /* @__PURE__ */ jsxs("div", {
105
100
  role: "alert",
106
- className: cn(alertVariants({ variant }), closable && "pr-10", className),
101
+ className: cn$1(alertVariants({ variant }), closable && "pr-10", className),
107
102
  ...props,
108
103
  children: [props.children, closable && /* @__PURE__ */ jsx("span", {
109
104
  onClick: handleClose,
@@ -117,19 +112,19 @@ function Alert({ className, variant, closable = false, onClose, ...props }) {
117
112
  },
118
113
  className: "absolute top-4 right-4 z-10 cursor-pointer opacity-70 transition-opacity hover:opacity-100",
119
114
  "aria-label": "Close alert",
120
- children: /* @__PURE__ */ jsx(CircleXIcon, { className: cn("size-4", variant && variantDefinitions[variant]?.closeButtonColor) })
115
+ children: /* @__PURE__ */ jsx(CircleXIcon, { className: cn$1("size-4", variant && variantDefinitions[variant]?.closeButtonColor) })
121
116
  })]
122
117
  });
123
118
  }
124
119
  function AlertTitle({ className, ...props }) {
125
120
  return /* @__PURE__ */ jsx("div", {
126
- className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className),
121
+ className: cn$1("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className),
127
122
  ...props
128
123
  });
129
124
  }
130
125
  function AlertDescription({ className, ...props }) {
131
126
  return /* @__PURE__ */ jsx("div", {
132
- className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className),
127
+ className: cn$1("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className),
133
128
  ...props
134
129
  });
135
130
  }
@@ -305,7 +300,7 @@ const badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-
305
300
  });
306
301
  function Badge({ className, type, theme, ...props }) {
307
302
  return /* @__PURE__ */ jsx("div", {
308
- className: cn(badgeVariants({
303
+ className: cn$1(badgeVariants({
309
304
  type,
310
305
  theme
311
306
  }), className),
@@ -313,6 +308,86 @@ function Badge({ className, type, theme, ...props }) {
313
308
  });
314
309
  }
315
310
 
311
+ //#endregion
312
+ //#region ../shadcn/lib/utils.ts
313
+ /**
314
+ * shadcn/ui Utilities
315
+ * Combines multiple class names using clsx and tailwind-merge
316
+ */
317
+ /**
318
+ * Combines multiple class names using clsx and tailwind-merge
319
+ * Useful for conditionally applying Tailwind CSS classes
320
+ * @param inputs - Array of class values to be merged
321
+ * @returns Merged class string with Tailwind conflicts resolved
322
+ */
323
+ function cn(...inputs) {
324
+ return twMerge(clsx(inputs));
325
+ }
326
+
327
+ //#endregion
328
+ //#region ../shadcn/ui/breadcrumb.tsx
329
+ const Breadcrumb = ({ ...props }) => {
330
+ return /* @__PURE__ */ jsx("nav", {
331
+ "aria-label": "breadcrumb",
332
+ "data-slot": "breadcrumb",
333
+ ...props
334
+ });
335
+ };
336
+ const BreadcrumbList = ({ className, ...props }) => {
337
+ return /* @__PURE__ */ jsx("ol", {
338
+ "data-slot": "breadcrumb-list",
339
+ className: cn("text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5", className),
340
+ ...props
341
+ });
342
+ };
343
+ const BreadcrumbItem = ({ className, ...props }) => {
344
+ return /* @__PURE__ */ jsx("li", {
345
+ "data-slot": "breadcrumb-item",
346
+ className: cn("inline-flex items-center gap-1.5", className),
347
+ ...props
348
+ });
349
+ };
350
+ const BreadcrumbLink = ({ asChild, className, ...props }) => {
351
+ return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
352
+ "data-slot": "breadcrumb-link",
353
+ className: cn("hover:text-foreground transition-colors", className),
354
+ ...props
355
+ });
356
+ };
357
+ const BreadcrumbPage = ({ className, ...props }) => {
358
+ return /* @__PURE__ */ jsx("span", {
359
+ "data-slot": "breadcrumb-page",
360
+ role: "link",
361
+ "aria-disabled": "true",
362
+ "aria-current": "page",
363
+ className: cn("text-foreground font-normal", className),
364
+ ...props
365
+ });
366
+ };
367
+ const BreadcrumbSeparator = ({ children, className, ...props }) => {
368
+ return /* @__PURE__ */ jsx("li", {
369
+ "data-slot": "breadcrumb-separator",
370
+ role: "presentation",
371
+ "aria-hidden": "true",
372
+ className: cn("[&>svg]:size-3.5", className),
373
+ ...props,
374
+ children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
375
+ });
376
+ };
377
+ const BreadcrumbEllipsis = ({ className, ...props }) => {
378
+ return /* @__PURE__ */ jsxs("span", {
379
+ "data-slot": "breadcrumb-ellipsis",
380
+ role: "presentation",
381
+ "aria-hidden": "true",
382
+ className: cn("flex size-9 items-center justify-center", className),
383
+ ...props,
384
+ children: [/* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }), /* @__PURE__ */ jsx("span", {
385
+ className: "sr-only",
386
+ children: "More"
387
+ })]
388
+ });
389
+ };
390
+
316
391
  //#endregion
317
392
  //#region src/components/base/button/button.tsx
318
393
  const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50", {
@@ -355,17 +430,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
355
430
  {
356
431
  type: "primary",
357
432
  theme: "light",
358
- className: cn("bg-btn-neutral-bg text-primary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-primary", "dark:text-foreground")
433
+ className: cn$1("bg-btn-neutral-bg text-primary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-primary", "dark:text-foreground")
359
434
  },
360
435
  {
361
436
  type: "primary",
362
437
  theme: "outline",
363
- className: cn("border border-btn-primary-border/60 text-primary hover:border-btn-primary-border active:border-btn-primary-border disabled:bg-transparent disabled:text-primary disabled:border-btn-primary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
438
+ className: cn$1("border border-btn-primary-border/60 text-primary hover:border-btn-primary-border active:border-btn-primary-border disabled:bg-transparent disabled:text-primary disabled:border-btn-primary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
364
439
  },
365
440
  {
366
441
  type: "primary",
367
442
  theme: "borderless",
368
- className: cn("text-primary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-primary", "dark:text-foreground")
443
+ className: cn$1("text-primary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-primary", "dark:text-foreground")
369
444
  },
370
445
  {
371
446
  type: "secondary",
@@ -375,17 +450,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
375
450
  {
376
451
  type: "secondary",
377
452
  theme: "light",
378
- className: cn("bg-btn-neutral-bg text-secondary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-secondary", "dark:text-foreground")
453
+ className: cn$1("bg-btn-neutral-bg text-secondary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-secondary", "dark:text-foreground")
379
454
  },
380
455
  {
381
456
  type: "secondary",
382
457
  theme: "outline",
383
- className: cn("border border-btn-secondary-border/60 text-secondary hover:border-btn-secondary-border active:border-btn-secondary-border disabled:bg-transparent disabled:text-secondary disabled:border-btn-secondary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
458
+ className: cn$1("border border-btn-secondary-border/60 text-secondary hover:border-btn-secondary-border active:border-btn-secondary-border disabled:bg-transparent disabled:text-secondary disabled:border-btn-secondary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
384
459
  },
385
460
  {
386
461
  type: "secondary",
387
462
  theme: "borderless",
388
- className: cn("text-secondary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-secondary", "dark:text-foreground")
463
+ className: cn$1("text-secondary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-secondary", "dark:text-foreground")
389
464
  },
390
465
  {
391
466
  type: "tertiary",
@@ -395,17 +470,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
395
470
  {
396
471
  type: "tertiary",
397
472
  theme: "light",
398
- className: cn("bg-btn-neutral-bg text-tertiary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-tertiary", "dark:text-foreground")
473
+ className: cn$1("bg-btn-neutral-bg text-tertiary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-tertiary", "dark:text-foreground")
399
474
  },
400
475
  {
401
476
  type: "tertiary",
402
477
  theme: "outline",
403
- className: cn("border border-btn-tertiary-border/60 text-tertiary hover:border-btn-tertiary-border active:border-btn-tertiary-border disabled:bg-transparent disabled:text-tertiary disabled:border-btn-tertiary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
478
+ className: cn$1("border border-btn-tertiary-border/60 text-tertiary hover:border-btn-tertiary-border active:border-btn-tertiary-border disabled:bg-transparent disabled:text-tertiary disabled:border-btn-tertiary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
404
479
  },
405
480
  {
406
481
  type: "tertiary",
407
482
  theme: "borderless",
408
- className: cn("text-tertiary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-tertiary", "dark:text-foreground")
483
+ className: cn$1("text-tertiary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-tertiary", "dark:text-foreground")
409
484
  },
410
485
  {
411
486
  type: "quaternary",
@@ -415,17 +490,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
415
490
  {
416
491
  type: "quaternary",
417
492
  theme: "light",
418
- className: cn("bg-btn-neutral-bg text-btn-quaternary-foreground hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-btn-quaternary-foreground", "dark:text-foreground")
493
+ className: cn$1("bg-btn-neutral-bg text-btn-quaternary-foreground hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-btn-quaternary-foreground", "dark:text-foreground")
419
494
  },
420
495
  {
421
496
  type: "quaternary",
422
497
  theme: "outline",
423
- className: cn("border border-btn-quaternary-border/60 text-btn-quaternary-foreground hover:border-btn-quaternary-border active:border-btn-quaternary-border disabled:bg-transparent disabled:text-btn-quaternary-foreground disabled:border-btn-quaternary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
498
+ className: cn$1("border border-btn-quaternary-border/60 text-btn-quaternary-foreground hover:border-btn-quaternary-border active:border-btn-quaternary-border disabled:bg-transparent disabled:text-btn-quaternary-foreground disabled:border-btn-quaternary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
424
499
  },
425
500
  {
426
501
  type: "quaternary",
427
502
  theme: "borderless",
428
- className: cn("text-btn-quaternary-foreground hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-btn-quaternary-foreground", "dark:text-foreground")
503
+ className: cn$1("text-btn-quaternary-foreground hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-btn-quaternary-foreground", "dark:text-foreground")
429
504
  },
430
505
  {
431
506
  type: "warning",
@@ -516,7 +591,7 @@ function Button$1({ ref, className, type, theme, size, block, loading = false, d
516
591
  return "w-9 px-0";
517
592
  };
518
593
  return /* @__PURE__ */ jsx("button", {
519
- className: cn(buttonVariants$1({
594
+ className: cn$1(buttonVariants$1({
520
595
  type,
521
596
  theme,
522
597
  size,
@@ -548,7 +623,7 @@ function LinkButton({ ref, className, type, theme, size, block, icon, iconPositi
548
623
  };
549
624
  const linkProps = Component === "a" ? { href } : { to: href };
550
625
  return /* @__PURE__ */ jsx(Component, {
551
- className: cn(buttonVariants$1({
626
+ className: cn$1(buttonVariants$1({
552
627
  type,
553
628
  theme,
554
629
  size,
@@ -566,30 +641,117 @@ function LinkButton({ ref, className, type, theme, size, block, icon, iconPositi
566
641
  }
567
642
  LinkButton.displayName = "LinkButton";
568
643
 
644
+ //#endregion
645
+ //#region ../shadcn/ui/separator.tsx
646
+ const Separator = ({ className, orientation = "horizontal", decorative = true, ...props }) => {
647
+ return /* @__PURE__ */ jsx(SeparatorPrimitive.Root, {
648
+ "data-slot": "separator-root",
649
+ decorative,
650
+ orientation,
651
+ className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className),
652
+ ...props
653
+ });
654
+ };
655
+
656
+ //#endregion
657
+ //#region ../shadcn/ui/button-group.tsx
658
+ const buttonGroupVariants = cva("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
659
+ variants: { orientation: {
660
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
661
+ vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
662
+ } },
663
+ defaultVariants: { orientation: "horizontal" }
664
+ });
665
+ function ButtonGroup({ className, orientation, ...props }) {
666
+ return /* @__PURE__ */ jsx("div", {
667
+ role: "group",
668
+ "data-slot": "button-group",
669
+ "data-orientation": orientation,
670
+ className: cn(buttonGroupVariants({ orientation }), className),
671
+ ...props
672
+ });
673
+ }
674
+ function ButtonGroupText({ className, asChild = false, ...props }) {
675
+ return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
676
+ className: cn("bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
677
+ ...props
678
+ });
679
+ }
680
+ function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
681
+ return /* @__PURE__ */ jsx(Separator, {
682
+ "data-slot": "button-group-separator",
683
+ orientation,
684
+ className: cn("bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto", className),
685
+ ...props
686
+ });
687
+ }
688
+
689
+ //#endregion
690
+ //#region ../shadcn/ui/button.tsx
691
+ /**
692
+ * Vanilla shadcn/ui Button Component
693
+ * Pure shadcn button without Datum customizations
694
+ * For Datum-specific features (dashed variant, isLoading), import from @/modules/datum-ui
695
+ */
696
+ const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
697
+ variants: {
698
+ variant: {
699
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
700
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
701
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
702
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
703
+ ghost: "hover:bg-accent hover:text-accent-foreground",
704
+ link: "text-primary underline-offset-4 hover:underline"
705
+ },
706
+ size: {
707
+ default: "h-10 px-4 py-2",
708
+ sm: "h-9 rounded-md px-3",
709
+ lg: "h-11 rounded-md px-8",
710
+ icon: "h-10 w-10"
711
+ }
712
+ },
713
+ defaultVariants: {
714
+ variant: "default",
715
+ size: "default"
716
+ }
717
+ });
718
+ const Button = React$1.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
719
+ return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
720
+ className: cn(buttonVariants({
721
+ variant,
722
+ size,
723
+ className
724
+ })),
725
+ ref,
726
+ ...props
727
+ });
728
+ });
729
+ Button.displayName = "Button";
730
+
569
731
  //#endregion
570
732
  //#region src/components/base/calendar/calendar.tsx
571
733
  function CalendarRoot({ className, rootRef, ...props }) {
572
734
  return /* @__PURE__ */ jsx("div", {
573
735
  "data-slot": "calendar",
574
736
  ref: rootRef,
575
- className: cn(className),
737
+ className: cn$1(className),
576
738
  ...props
577
739
  });
578
740
  }
579
741
  function CalendarChevron({ className, orientation, ...props }) {
580
742
  if (orientation === "left") return /* @__PURE__ */ jsx(Icon, {
581
743
  icon: ChevronLeftIcon,
582
- className: cn("size-4", className),
744
+ className: cn$1("size-4", className),
583
745
  ...props
584
746
  });
585
747
  if (orientation === "right") return /* @__PURE__ */ jsx(Icon, {
586
748
  icon: ChevronRightIcon,
587
- className: cn("size-4", className),
749
+ className: cn$1("size-4", className),
588
750
  ...props
589
751
  });
590
752
  return /* @__PURE__ */ jsx(Icon, {
591
753
  icon: ChevronDownIcon,
592
- className: cn("size-4", className),
754
+ className: cn$1("size-4", className),
593
755
  ...props
594
756
  });
595
757
  }
@@ -606,38 +768,38 @@ function Calendar$1({ className, classNames, showOutsideDays = true, captionLayo
606
768
  const defaultClassNames = getDefaultClassNames();
607
769
  return /* @__PURE__ */ jsx(DayPicker, {
608
770
  showOutsideDays,
609
- className: cn("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
771
+ className: cn$1("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
610
772
  captionLayout,
611
773
  formatters: {
612
774
  formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
613
775
  ...formatters
614
776
  },
615
777
  classNames: {
616
- root: cn("w-fit", defaultClassNames.root),
617
- months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
618
- month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
619
- nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
620
- button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
621
- button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
622
- month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
623
- dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
624
- dropdown_root: cn("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
625
- dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
626
- caption_label: cn("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
778
+ root: cn$1("w-fit", defaultClassNames.root),
779
+ months: cn$1("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
780
+ month: cn$1("flex flex-col w-full gap-4", defaultClassNames.month),
781
+ nav: cn$1("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
782
+ button_previous: cn$1(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
783
+ button_next: cn$1(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
784
+ month_caption: cn$1("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
785
+ dropdowns: cn$1("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
786
+ dropdown_root: cn$1("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
787
+ dropdown: cn$1("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
788
+ caption_label: cn$1("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
627
789
  table: "w-full border-collapse",
628
- weekdays: cn("flex", defaultClassNames.weekdays),
629
- weekday: cn("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
630
- week: cn("flex w-full mt-2", defaultClassNames.week),
631
- week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
632
- week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
633
- day: cn("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", defaultClassNames.day),
634
- range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
635
- range_middle: cn("rounded-none", defaultClassNames.range_middle),
636
- range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
637
- today: cn("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
638
- outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
639
- disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
640
- hidden: cn("invisible", defaultClassNames.hidden),
790
+ weekdays: cn$1("flex", defaultClassNames.weekdays),
791
+ weekday: cn$1("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
792
+ week: cn$1("flex w-full mt-2", defaultClassNames.week),
793
+ week_number_header: cn$1("select-none w-(--cell-size)", defaultClassNames.week_number_header),
794
+ week_number: cn$1("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
795
+ day: cn$1("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", defaultClassNames.day),
796
+ range_start: cn$1("rounded-l-md bg-accent", defaultClassNames.range_start),
797
+ range_middle: cn$1("rounded-none", defaultClassNames.range_middle),
798
+ range_end: cn$1("rounded-r-md bg-accent", defaultClassNames.range_end),
799
+ today: cn$1("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
800
+ outside: cn$1("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
801
+ disabled: cn$1("text-muted-foreground opacity-50", defaultClassNames.disabled),
802
+ hidden: cn$1("invisible", defaultClassNames.hidden),
641
803
  ...classNames
642
804
  },
643
805
  components: {
@@ -665,11 +827,35 @@ function CalendarDayButton({ className, day, modifiers, ...props }) {
665
827
  "data-range-start": modifiers.range_start,
666
828
  "data-range-end": modifiers.range_end,
667
829
  "data-range-middle": modifiers.range_middle,
668
- className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
830
+ className: cn$1("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
669
831
  ...props
670
832
  });
671
833
  }
672
834
 
835
+ //#endregion
836
+ //#region ../shadcn/ui/card.tsx
837
+ const CardTitle = ({ className, ...props }) => {
838
+ return /* @__PURE__ */ jsx("div", {
839
+ "data-slot": "card-title",
840
+ className: cn("leading-none font-semibold", className),
841
+ ...props
842
+ });
843
+ };
844
+ const CardDescription = ({ className, ...props }) => {
845
+ return /* @__PURE__ */ jsx("div", {
846
+ "data-slot": "card-description",
847
+ className: cn("text-muted-foreground text-sm", className),
848
+ ...props
849
+ });
850
+ };
851
+ const CardContent = ({ className, ...props }) => {
852
+ return /* @__PURE__ */ jsx("div", {
853
+ "data-slot": "card-content",
854
+ className: cn("px-6", className),
855
+ ...props
856
+ });
857
+ };
858
+
673
859
  //#endregion
674
860
  //#region src/components/base/card/card.tsx
675
861
  /**
@@ -684,47 +870,362 @@ const DEFAULT_CARD_CLASSNAME = "bg-card text-card-foreground flex flex-col gap-4
684
870
  function Card({ className, ...props }) {
685
871
  return /* @__PURE__ */ jsx("div", {
686
872
  "data-slot": "card",
687
- className: cn(DEFAULT_CARD_CLASSNAME, className),
873
+ className: cn$1(DEFAULT_CARD_CLASSNAME, className),
688
874
  ...props
689
875
  });
690
876
  }
691
877
  function CardHeader({ className, ...props }) {
692
878
  return /* @__PURE__ */ jsx("div", {
693
879
  "data-slot": "card-header",
694
- className: cn("border-card-border flex flex-col gap-3 px-6", className),
880
+ className: cn$1("border-card-border flex flex-col gap-3 px-6", className),
695
881
  ...props
696
882
  });
697
883
  }
698
884
  function CardFooter({ className, ...props }) {
699
885
  return /* @__PURE__ */ jsx("div", {
700
886
  "data-slot": "card-footer",
701
- className: cn("border-card-border px-6", className),
887
+ className: cn$1("border-card-border px-6", className),
702
888
  ...props
703
889
  });
704
890
  }
705
891
 
892
+ //#endregion
893
+ //#region ../shadcn/ui/chart.tsx
894
+ const THEMES = {
895
+ light: "",
896
+ dark: ".dark"
897
+ };
898
+ const ChartContext = React$1.createContext(null);
899
+ function useChart() {
900
+ const context = React$1.useContext(ChartContext);
901
+ if (!context) throw new Error("useChart must be used within a <ChartContainer />");
902
+ return context;
903
+ }
904
+ function ChartContainer({ id, className, children, config, ...props }) {
905
+ const uniqueId = React$1.useId();
906
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
907
+ return /* @__PURE__ */ jsx(ChartContext.Provider, {
908
+ value: { config },
909
+ children: /* @__PURE__ */ jsxs("div", {
910
+ "data-slot": "chart",
911
+ "data-chart": chartId,
912
+ className: cn("[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
913
+ ...props,
914
+ children: [/* @__PURE__ */ jsx(ChartStyle, {
915
+ id: chartId,
916
+ config
917
+ }), /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })]
918
+ })
919
+ });
920
+ }
921
+ const ChartStyle = ({ id, config }) => {
922
+ const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);
923
+ if (!colorConfig.length) return null;
924
+ return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: Object.entries(THEMES).map(([theme, prefix]) => `
925
+ ${prefix} [data-chart=${id}] {
926
+ ${colorConfig.map(([key, itemConfig]) => {
927
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
928
+ return color ? ` --color-${key}: ${color};` : null;
929
+ }).join("\n")}
930
+ }
931
+ `).join("\n") } });
932
+ };
933
+ const ChartTooltip = RechartsPrimitive.Tooltip;
934
+ function ChartTooltipContent({ active, payload, label, className, indicator = "dot", hideLabel = false, hideIndicator = false, labelFormatter, formatter, labelClassName, color, nameKey, labelKey }) {
935
+ const { config } = useChart();
936
+ const tooltipLabel = React$1.useMemo(() => {
937
+ if (hideLabel || !payload?.length) return null;
938
+ const [item] = payload;
939
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${labelKey || item?.dataKey || item?.name || "value"}`);
940
+ const value = (() => {
941
+ const v = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
942
+ return typeof v === "string" || typeof v === "number" ? v : void 0;
943
+ })();
944
+ if (labelFormatter) return /* @__PURE__ */ jsx("div", {
945
+ className: cn("font-medium", labelClassName),
946
+ children: labelFormatter(label, payload)
947
+ });
948
+ if (!value) return null;
949
+ return /* @__PURE__ */ jsx("div", {
950
+ className: cn("font-medium", labelClassName),
951
+ children: value
952
+ });
953
+ }, [
954
+ label,
955
+ labelFormatter,
956
+ payload,
957
+ hideLabel,
958
+ labelClassName,
959
+ config,
960
+ labelKey
961
+ ]);
962
+ if (!active || !payload?.length) return null;
963
+ const nestLabel = payload.length === 1 && indicator !== "dot";
964
+ return /* @__PURE__ */ jsxs("div", {
965
+ className: cn("border-border/50 bg-background z-50 grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl", className),
966
+ children: [!nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("div", {
967
+ className: "grid gap-1.5",
968
+ children: payload.map((item, index) => {
969
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey || item.name || item.dataKey || "value"}`);
970
+ const indicatorColor = color || item.payload.fill || item.color;
971
+ return /* @__PURE__ */ jsx("div", {
972
+ className: cn("[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5", indicator === "dot" && "items-center"),
973
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment$1, { children: [itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx("div", {
974
+ className: cn("shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)", {
975
+ "h-2.5 w-2.5": indicator === "dot",
976
+ "w-1": indicator === "line",
977
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
978
+ "my-0.5": nestLabel && indicator === "dashed"
979
+ }),
980
+ style: {
981
+ "--color-bg": indicatorColor,
982
+ "--color-border": indicatorColor
983
+ }
984
+ }), /* @__PURE__ */ jsxs("div", {
985
+ className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"),
986
+ children: [/* @__PURE__ */ jsxs("div", {
987
+ className: "grid gap-1.5",
988
+ children: [nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("span", {
989
+ className: "text-muted-foreground",
990
+ children: itemConfig?.label || item.name
991
+ })]
992
+ }), item.value && /* @__PURE__ */ jsx("span", {
993
+ className: "text-foreground font-mono font-medium tabular-nums",
994
+ children: item.value.toLocaleString()
995
+ })]
996
+ })] })
997
+ }, item.dataKey);
998
+ })
999
+ })]
1000
+ });
1001
+ }
1002
+ const ChartLegend = RechartsPrimitive.Legend;
1003
+ function ChartLegendContent({ className, hideIcon = false, payload, nameKey }) {
1004
+ const { config } = useChart();
1005
+ if (!payload?.length) return null;
1006
+ return /* @__PURE__ */ jsx("div", {
1007
+ className: cn("flex flex-wrap items-center justify-center gap-2", className),
1008
+ children: payload.map((item) => {
1009
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey || item.dataKey || "value"}`);
1010
+ return /* @__PURE__ */ jsxs("div", {
1011
+ className: cn("[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"),
1012
+ children: [itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx("div", {
1013
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
1014
+ style: { backgroundColor: item.color }
1015
+ }), itemConfig?.label]
1016
+ }, item.value);
1017
+ })
1018
+ });
1019
+ }
1020
+ function getPayloadConfigFromPayload(config, payload, key) {
1021
+ if (typeof payload !== "object" || payload === null) return;
1022
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
1023
+ let configLabelKey = key;
1024
+ if (key in payload && typeof payload[key] === "string") configLabelKey = payload[key];
1025
+ else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
1026
+ return configLabelKey in config ? config[configLabelKey] : config[key];
1027
+ }
1028
+
1029
+ //#endregion
1030
+ //#region ../shadcn/ui/checkbox.tsx
1031
+ function Checkbox$1({ className, ...props }) {
1032
+ return /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
1033
+ "data-slot": "checkbox",
1034
+ className: cn("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-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 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className),
1035
+ ...props,
1036
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, {
1037
+ "data-slot": "checkbox-indicator",
1038
+ className: "flex items-center justify-center text-current transition-none",
1039
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
1040
+ })
1041
+ });
1042
+ }
1043
+
706
1044
  //#endregion
707
1045
  //#region src/components/base/checkbox/checkbox.tsx
708
- function Checkbox$1({ ref, className, ...props }) {
709
- return /* @__PURE__ */ jsx(Checkbox, {
1046
+ function Checkbox({ ref, className, ...props }) {
1047
+ return /* @__PURE__ */ jsx(Checkbox$1, {
710
1048
  ref,
711
- className: cn(className),
1049
+ className: cn$1(className),
712
1050
  ...props
713
1051
  });
714
1052
  }
715
- Checkbox$1.displayName = "Checkbox";
1053
+ Checkbox.displayName = "Checkbox";
1054
+
1055
+ //#endregion
1056
+ //#region ../shadcn/ui/collapsible.tsx
1057
+ const Collapsible = CollapsiblePrimitive.Root;
1058
+ const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
1059
+ const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
1060
+
1061
+ //#endregion
1062
+ //#region ../shadcn/ui/dialog.tsx
1063
+ const Dialog$1 = ({ ...props }) => {
1064
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
1065
+ "data-slot": "dialog",
1066
+ ...props
1067
+ });
1068
+ };
1069
+ const DialogTrigger = ({ ...props }) => {
1070
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
1071
+ "data-slot": "dialog-trigger",
1072
+ ...props
1073
+ });
1074
+ };
1075
+ const DialogPortal = ({ ...props }) => {
1076
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
1077
+ "data-slot": "dialog-portal",
1078
+ ...props
1079
+ });
1080
+ };
1081
+ const DialogClose = ({ ...props }) => {
1082
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, {
1083
+ "data-slot": "dialog-close",
1084
+ ...props
1085
+ });
1086
+ };
1087
+ const DialogOverlay$1 = ({ className, ...props }) => {
1088
+ return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
1089
+ "data-slot": "dialog-overlay",
1090
+ className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", className),
1091
+ ...props
1092
+ });
1093
+ };
1094
+ const DialogContent = ({ className, children, ...props }) => {
1095
+ return /* @__PURE__ */ jsxs(DialogPortal, {
1096
+ "data-slot": "dialog-portal",
1097
+ children: [/* @__PURE__ */ jsx(DialogOverlay$1, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
1098
+ "data-slot": "dialog-content",
1099
+ className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className),
1100
+ ...props,
1101
+ children: [children, /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
1102
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1103
+ children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
1104
+ className: "sr-only",
1105
+ children: "Close"
1106
+ })]
1107
+ })]
1108
+ })]
1109
+ });
1110
+ };
1111
+ const DialogHeader = ({ className, ...props }) => {
1112
+ return /* @__PURE__ */ jsx("div", {
1113
+ "data-slot": "dialog-header",
1114
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
1115
+ ...props
1116
+ });
1117
+ };
1118
+ const DialogFooter = ({ className, ...props }) => {
1119
+ return /* @__PURE__ */ jsx("div", {
1120
+ "data-slot": "dialog-footer",
1121
+ className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
1122
+ ...props
1123
+ });
1124
+ };
1125
+ const DialogTitle = ({ className, ...props }) => {
1126
+ return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
1127
+ "data-slot": "dialog-title",
1128
+ className: cn("text-lg leading-none font-semibold", className),
1129
+ ...props
1130
+ });
1131
+ };
1132
+ const DialogDescription = ({ className, ...props }) => {
1133
+ return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
1134
+ "data-slot": "dialog-description",
1135
+ className: cn("text-muted-foreground text-sm", className),
1136
+ ...props
1137
+ });
1138
+ };
1139
+
1140
+ //#endregion
1141
+ //#region ../shadcn/ui/command.tsx
1142
+ const Command$1 = ({ className, ...props }) => {
1143
+ return /* @__PURE__ */ jsx(Command, {
1144
+ "data-slot": "command",
1145
+ className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className),
1146
+ ...props
1147
+ });
1148
+ };
1149
+ const CommandDialog = ({ title = "Command Palette", description = "Search for a command to run...", children, ...props }) => {
1150
+ return /* @__PURE__ */ jsxs(Dialog$1, {
1151
+ ...props,
1152
+ children: [/* @__PURE__ */ jsxs(DialogHeader, {
1153
+ className: "sr-only",
1154
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
1155
+ }), /* @__PURE__ */ jsx(DialogContent, {
1156
+ className: "overflow-hidden p-0",
1157
+ children: /* @__PURE__ */ jsx(Command$1, {
1158
+ className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
1159
+ children
1160
+ })
1161
+ })]
1162
+ });
1163
+ };
1164
+ const CommandInput = ({ className, wrapperClassName, iconClassName, ...props }) => {
1165
+ return /* @__PURE__ */ jsxs("div", {
1166
+ "data-slot": "command-input-wrapper",
1167
+ className: cn("flex h-9 items-center gap-2 border-b px-3", wrapperClassName),
1168
+ children: [/* @__PURE__ */ jsx(SearchIcon, { className: cn("size-4 shrink-0 opacity-50", iconClassName) }), /* @__PURE__ */ jsx(Command.Input, {
1169
+ "data-slot": "command-input",
1170
+ className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
1171
+ ...props
1172
+ })]
1173
+ });
1174
+ };
1175
+ const CommandList = ({ className, ...props }) => {
1176
+ return /* @__PURE__ */ jsx(Command.List, {
1177
+ "data-slot": "command-list",
1178
+ className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
1179
+ ...props
1180
+ });
1181
+ };
1182
+ const CommandEmpty = ({ ...props }) => {
1183
+ return /* @__PURE__ */ jsx(Command.Empty, {
1184
+ "data-slot": "command-empty",
1185
+ className: "py-6 text-center text-sm",
1186
+ ...props
1187
+ });
1188
+ };
1189
+ const CommandGroup = ({ className, ...props }) => {
1190
+ return /* @__PURE__ */ jsx(Command.Group, {
1191
+ "data-slot": "command-group",
1192
+ className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
1193
+ ...props
1194
+ });
1195
+ };
1196
+ const CommandSeparator = ({ className, ...props }) => {
1197
+ return /* @__PURE__ */ jsx(Command.Separator, {
1198
+ "data-slot": "command-separator",
1199
+ className: cn("bg-border -mx-1 h-px", className),
1200
+ ...props
1201
+ });
1202
+ };
1203
+ const CommandItem = ({ className, ...props }) => {
1204
+ return /* @__PURE__ */ jsx(Command.Item, {
1205
+ "data-slot": "command-item",
1206
+ className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
1207
+ ...props
1208
+ });
1209
+ };
1210
+ const CommandShortcut = ({ className, ...props }) => {
1211
+ return /* @__PURE__ */ jsx("span", {
1212
+ "data-slot": "command-shortcut",
1213
+ className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
1214
+ ...props
1215
+ });
1216
+ };
716
1217
 
717
1218
  //#endregion
718
1219
  //#region src/components/base/dialog/dialog.tsx
719
- function Dialog$1({ children, ...props }) {
720
- return /* @__PURE__ */ jsx(Dialog, {
1220
+ function Dialog({ children, ...props }) {
1221
+ return /* @__PURE__ */ jsx(Dialog$1, {
721
1222
  ...props,
722
1223
  children
723
1224
  });
724
1225
  }
725
- function DialogOverlay$1({ className, ...props }) {
726
- return /* @__PURE__ */ jsx(DialogOverlay, {
727
- className: cn("bg-dialog-overlay/50 backdrop-blur-[2px]", className),
1226
+ function DialogOverlay({ className, ...props }) {
1227
+ return /* @__PURE__ */ jsx(DialogOverlay$1, {
1228
+ className: cn$1("bg-dialog-overlay/50 backdrop-blur-[2px]", className),
728
1229
  ...props
729
1230
  });
730
1231
  }
@@ -735,21 +1236,21 @@ function Trigger$1({ children, asChild = true }) {
735
1236
  });
736
1237
  }
737
1238
  function Content({ children, className }) {
738
- return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay$1, {}), /* @__PURE__ */ jsx(DialogPrimitive.Content, {
739
- className: cn("dark:bg-muted dark:border-dialog-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 flex max-h-[80vh] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] flex-col gap-0 overflow-y-auto rounded-lg bg-white p-0 shadow-xl duration-200 sm:max-w-lg dark:border [&>button:last-child]:hidden", className),
1239
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsx(DialogPrimitive.Content, {
1240
+ className: cn$1("dark:bg-muted dark:border-dialog-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 flex max-h-[80vh] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] flex-col gap-0 overflow-y-auto rounded-lg bg-white p-0 shadow-xl duration-200 sm:max-w-lg dark:border [&>button:last-child]:hidden", className),
740
1241
  children
741
1242
  })] });
742
1243
  }
743
1244
  function Header({ title, description, onClose, className, descriptionClassName }) {
744
1245
  return /* @__PURE__ */ jsxs("div", {
745
- className: cn("dark:bg-muted dark:border-dialog-border sticky top-0 z-50 flex shrink-0 flex-col gap-2 bg-white p-5", className),
1246
+ className: cn$1("dark:bg-muted dark:border-dialog-border sticky top-0 z-50 flex shrink-0 flex-col gap-2 bg-white p-5", className),
746
1247
  children: [
747
1248
  /* @__PURE__ */ jsx(DialogTitle, {
748
1249
  className: "text-base font-semibold",
749
1250
  children: title
750
1251
  }),
751
1252
  description && /* @__PURE__ */ jsx(DialogDescription, {
752
- className: cn("text-sm font-normal", descriptionClassName),
1253
+ className: cn$1("text-sm font-normal", descriptionClassName),
753
1254
  children: description
754
1255
  }),
755
1256
  onClose && /* @__PURE__ */ jsx(DialogClose, {
@@ -762,42 +1263,172 @@ function Header({ title, description, onClose, className, descriptionClassName }
762
1263
  }
763
1264
  function Body({ children, className }) {
764
1265
  return /* @__PURE__ */ jsx("div", {
765
- className: cn("py-5", className),
1266
+ className: cn$1("py-5", className),
766
1267
  children
767
1268
  });
768
1269
  }
769
1270
  function Footer({ children, className }) {
770
1271
  return /* @__PURE__ */ jsx(DialogFooter, {
771
- className: cn("dark:bg-muted dark:border-dialog-border sticky bottom-0 z-50 shrink-0 gap-3 bg-white p-5", className),
1272
+ className: cn$1("dark:bg-muted dark:border-dialog-border sticky bottom-0 z-50 shrink-0 gap-3 bg-white p-5", className),
772
1273
  children
773
1274
  });
774
1275
  }
775
- Dialog$1.Trigger = Trigger$1;
776
- Dialog$1.Content = Content;
777
- Dialog$1.Header = Header;
778
- Dialog$1.Body = Body;
779
- Dialog$1.Footer = Footer;
780
- Dialog$1.Overlay = DialogOverlay$1;
1276
+ Dialog.Trigger = Trigger$1;
1277
+ Dialog.Content = Content;
1278
+ Dialog.Header = Header;
1279
+ Dialog.Body = Body;
1280
+ Dialog.Footer = Footer;
1281
+ Dialog.Overlay = DialogOverlay;
1282
+
1283
+ //#endregion
1284
+ //#region ../shadcn/ui/hover-card.tsx
1285
+ function HoverCard({ ...props }) {
1286
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, {
1287
+ "data-slot": "hover-card",
1288
+ ...props
1289
+ });
1290
+ }
1291
+ function HoverCardTrigger({ ...props }) {
1292
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, {
1293
+ "data-slot": "hover-card-trigger",
1294
+ ...props
1295
+ });
1296
+ }
1297
+ function HoverCardContent({ className, align = "center", sideOffset = 4, ...props }) {
1298
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, {
1299
+ "data-slot": "hover-card-portal",
1300
+ children: /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
1301
+ "data-slot": "hover-card-content",
1302
+ align,
1303
+ sideOffset,
1304
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
1305
+ ...props
1306
+ })
1307
+ });
1308
+ }
1309
+
1310
+ //#endregion
1311
+ //#region ../shadcn/ui/input.tsx
1312
+ const Input$1 = ({ className, type, ...props }) => {
1313
+ return /* @__PURE__ */ jsx("input", {
1314
+ type,
1315
+ className: cn("flex h-10 w-full rounded-md px-3 py-2 text-base md:text-sm", "border-input bg-background ring-offset-background border", "placeholder:text-muted-foreground focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "read-only:cursor-not-allowed read-only:opacity-50 disabled:cursor-not-allowed disabled:opacity-50", "file:text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium", className),
1316
+ "data-slot": "input",
1317
+ ...props
1318
+ });
1319
+ };
1320
+ Input$1.displayName = "Input";
781
1321
 
782
1322
  //#endregion
783
1323
  //#region src/components/base/input/input.tsx
784
- function Input$1({ ref, className, ...props }) {
785
- return /* @__PURE__ */ jsx(Input, {
1324
+ function Input({ ref, className, ...props }) {
1325
+ return /* @__PURE__ */ jsx(Input$1, {
786
1326
  ref,
787
- className: cn("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
1327
+ className: cn$1("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
788
1328
  ...props
789
1329
  });
790
1330
  }
791
- Input$1.displayName = "Input";
1331
+ Input.displayName = "Input";
792
1332
 
793
1333
  //#endregion
794
- //#region src/components/base/label/label.tsx
795
- /**
796
- * Datum Label component - extends shadcn Label with Datum-specific styling
797
- *
798
- * This component wraps the shadcn Label and allows for Datum-specific
799
- * class customizations without modifying the core shadcn component.
800
- *
1334
+ //#region ../shadcn/ui/textarea.tsx
1335
+ function Textarea$1({ className, ...props }) {
1336
+ return /* @__PURE__ */ jsx("textarea", {
1337
+ "data-slot": "textarea",
1338
+ className: cn("border-input placeholder:text-muted-foreground", "dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent", "px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", className),
1339
+ ...props
1340
+ });
1341
+ }
1342
+
1343
+ //#endregion
1344
+ //#region ../shadcn/ui/input-group.tsx
1345
+ function InputGroup({ className, ...props }) {
1346
+ return /* @__PURE__ */ jsx("div", {
1347
+ "data-slot": "input-group",
1348
+ role: "group",
1349
+ className: cn("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none", "h-9 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1", "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40", className),
1350
+ ...props
1351
+ });
1352
+ }
1353
+ const inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
1354
+ variants: { align: {
1355
+ "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
1356
+ "inline-end": "order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]",
1357
+ "block-start": "[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5",
1358
+ "block-end": "[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5"
1359
+ } },
1360
+ defaultVariants: { align: "inline-start" }
1361
+ });
1362
+ function InputGroupAddon({ className, align = "inline-start", ...props }) {
1363
+ return /* @__PURE__ */ jsx("div", {
1364
+ role: "group",
1365
+ "data-slot": "input-group-addon",
1366
+ "data-align": align,
1367
+ className: cn(inputGroupAddonVariants({ align }), className),
1368
+ onClick: (e) => {
1369
+ if (e.target.closest("button")) return;
1370
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
1371
+ },
1372
+ ...props
1373
+ });
1374
+ }
1375
+ const inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
1376
+ variants: { size: {
1377
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
1378
+ sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
1379
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
1380
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
1381
+ } },
1382
+ defaultVariants: { size: "xs" }
1383
+ });
1384
+ function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
1385
+ return /* @__PURE__ */ jsx(Button, {
1386
+ type,
1387
+ "data-size": size,
1388
+ variant,
1389
+ className: cn(inputGroupButtonVariants({ size }), className),
1390
+ ...props
1391
+ });
1392
+ }
1393
+ function InputGroupText({ className, ...props }) {
1394
+ return /* @__PURE__ */ jsx("span", {
1395
+ className: cn("text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
1396
+ ...props
1397
+ });
1398
+ }
1399
+ function InputGroupInput({ className, ...props }) {
1400
+ return /* @__PURE__ */ jsx(Input$1, {
1401
+ "data-slot": "input-group-control",
1402
+ className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", className),
1403
+ ...props
1404
+ });
1405
+ }
1406
+ function InputGroupTextarea({ className, ...props }) {
1407
+ return /* @__PURE__ */ jsx(Textarea$1, {
1408
+ "data-slot": "input-group-control",
1409
+ className: cn("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent", className),
1410
+ ...props
1411
+ });
1412
+ }
1413
+
1414
+ //#endregion
1415
+ //#region ../shadcn/ui/label.tsx
1416
+ const Label$1 = ({ className, ...props }) => {
1417
+ return /* @__PURE__ */ jsx(LabelPrimitive.Root, {
1418
+ "data-slot": "label",
1419
+ className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
1420
+ ...props
1421
+ });
1422
+ };
1423
+
1424
+ //#endregion
1425
+ //#region src/components/base/label/label.tsx
1426
+ /**
1427
+ * Datum Label component - extends shadcn Label with Datum-specific styling
1428
+ *
1429
+ * This component wraps the shadcn Label and allows for Datum-specific
1430
+ * class customizations without modifying the core shadcn component.
1431
+ *
801
1432
  * @example
802
1433
  * ```tsx
803
1434
  * <Label
@@ -808,102 +1439,1404 @@ Input$1.displayName = "Input";
808
1439
  * </Label>
809
1440
  * ```
810
1441
  */
811
- function Label$1({ ref, className, ...props }) {
812
- return /* @__PURE__ */ jsx(Label, {
1442
+ function Label({ ref, className, ...props }) {
1443
+ return /* @__PURE__ */ jsx(Label$1, {
813
1444
  ref,
814
- className: cn(className),
1445
+ className: cn$1(className),
1446
+ ...props
1447
+ });
1448
+ }
1449
+ Label.displayName = "Label";
1450
+
1451
+ //#endregion
1452
+ //#region ../shadcn/hooks/use-theme.ts
1453
+ /**
1454
+ * Lightweight theme detection hook for shadcn components.
1455
+ * Detects dark mode via the `dark` class on <html> (Tailwind convention)
1456
+ * or falls back to prefers-color-scheme media query.
1457
+ */
1458
+ function useTheme() {
1459
+ const [resolvedTheme, setResolvedTheme] = React$1.useState("light");
1460
+ React$1.useEffect(() => {
1461
+ const detect = () => {
1462
+ if (document.documentElement.classList.contains("dark")) return "dark";
1463
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) return "dark";
1464
+ return "light";
1465
+ };
1466
+ setResolvedTheme(detect());
1467
+ const observer = new MutationObserver(() => setResolvedTheme(detect()));
1468
+ observer.observe(document.documentElement, {
1469
+ attributes: true,
1470
+ attributeFilter: ["class"]
1471
+ });
1472
+ const mql = window.matchMedia("(prefers-color-scheme: dark)");
1473
+ const onChange = () => setResolvedTheme(detect());
1474
+ mql.addEventListener("change", onChange);
1475
+ return () => {
1476
+ observer.disconnect();
1477
+ mql.removeEventListener("change", onChange);
1478
+ };
1479
+ }, []);
1480
+ return { resolvedTheme };
1481
+ }
1482
+
1483
+ //#endregion
1484
+ //#region ../shadcn/ui/dropdown-menu.tsx
1485
+ /**
1486
+ * Vanilla shadcn/ui DropdownMenu Component
1487
+ * Pure shadcn dropdown without Datum customizations
1488
+ * For Datum-specific features (destructive MenuItem), import from @/modules/datum-ui
1489
+ */
1490
+ const DropdownMenu$1 = DropdownMenuPrimitive.Root;
1491
+ const DropdownMenuTrigger$1 = DropdownMenuPrimitive.Trigger;
1492
+ const DropdownMenuGroup$1 = DropdownMenuPrimitive.Group;
1493
+ const DropdownMenuPortal$1 = DropdownMenuPrimitive.Portal;
1494
+ const DropdownMenuSub$1 = DropdownMenuPrimitive.Sub;
1495
+ const DropdownMenuRadioGroup$1 = DropdownMenuPrimitive.RadioGroup;
1496
+ const DropdownMenuSubTrigger$1 = React$1.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, {
1497
+ ref,
1498
+ className: cn("focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className),
1499
+ ...props,
1500
+ children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })]
1501
+ }));
1502
+ DropdownMenuSubTrigger$1.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1503
+ const DropdownMenuSubContent$1 = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
1504
+ ref,
1505
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
1506
+ ...props
1507
+ }));
1508
+ DropdownMenuSubContent$1.displayName = DropdownMenuPrimitive.SubContent.displayName;
1509
+ const DropdownMenuContent$1 = React$1.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
1510
+ ref,
1511
+ sideOffset,
1512
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md", className),
1513
+ ...props
1514
+ }) }));
1515
+ DropdownMenuContent$1.displayName = DropdownMenuPrimitive.Content.displayName;
1516
+ const DropdownMenuItem$1 = React$1.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
1517
+ ref,
1518
+ className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className),
1519
+ ...props
1520
+ }));
1521
+ DropdownMenuItem$1.displayName = DropdownMenuPrimitive.Item.displayName;
1522
+ const DropdownMenuCheckboxItem$1 = React$1.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
1523
+ ref,
1524
+ className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
1525
+ checked,
1526
+ ...props,
1527
+ children: [/* @__PURE__ */ jsx("span", {
1528
+ className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
1529
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-4 w-4" }) })
1530
+ }), children]
1531
+ }));
1532
+ DropdownMenuCheckboxItem$1.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1533
+ const DropdownMenuRadioItem$1 = React$1.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
1534
+ ref,
1535
+ className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
1536
+ ...props,
1537
+ children: [/* @__PURE__ */ jsx("span", {
1538
+ className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
1539
+ children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "h-2 w-2 fill-current" }) })
1540
+ }), children]
1541
+ }));
1542
+ DropdownMenuRadioItem$1.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1543
+ const DropdownMenuLabel$1 = React$1.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
1544
+ ref,
1545
+ className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
1546
+ ...props
1547
+ }));
1548
+ DropdownMenuLabel$1.displayName = DropdownMenuPrimitive.Label.displayName;
1549
+ const DropdownMenuSeparator$1 = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
1550
+ ref,
1551
+ className: cn("bg-muted -mx-1 my-1 h-px", className),
1552
+ ...props
1553
+ }));
1554
+ DropdownMenuSeparator$1.displayName = DropdownMenuPrimitive.Separator.displayName;
1555
+ const DropdownMenuShortcut$1 = ({ className, ...props }) => {
1556
+ return /* @__PURE__ */ jsx("span", {
1557
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
1558
+ ...props
1559
+ });
1560
+ };
1561
+ DropdownMenuShortcut$1.displayName = "DropdownMenuShortcut";
1562
+
1563
+ //#endregion
1564
+ //#region ../shadcn/ui/spinner.tsx
1565
+ function Spinner({ className, ...props }) {
1566
+ return /* @__PURE__ */ jsx(Loader2Icon, {
1567
+ role: "status",
1568
+ "aria-label": "Loading",
1569
+ className: cn("size-4 animate-spin", className),
1570
+ ...props
1571
+ });
1572
+ }
1573
+
1574
+ //#endregion
1575
+ //#region ../shadcn/ui/place-autocomplete.tsx
1576
+ function formatAddress(properties) {
1577
+ const parts = [];
1578
+ if (properties.name) parts.push(properties.name);
1579
+ if (properties.housenumber && properties.street) parts.push(`${properties.housenumber} ${properties.street}`);
1580
+ else if (properties.street) parts.push(properties.street);
1581
+ if (properties.city) parts.push(properties.city);
1582
+ else if (properties.locality) parts.push(properties.locality);
1583
+ if (properties.state && properties.state !== properties.city) parts.push(properties.state);
1584
+ if (properties.country) parts.push(properties.country);
1585
+ return [...new Set(parts)].join(", ");
1586
+ }
1587
+ function buildSearchUrl({ query, bbox, lang, lat, limit, locationBiasScale, lon, zoom }) {
1588
+ const url = new URL("https://photon.komoot.io/api");
1589
+ url.searchParams.set("q", query);
1590
+ if (lang) url.searchParams.set("lang", lang);
1591
+ if (limit) url.searchParams.set("limit", String(limit));
1592
+ if (bbox) url.searchParams.set("bbox", bbox.join(","));
1593
+ if (lat !== void 0 && lon !== void 0) {
1594
+ url.searchParams.set("lat", String(lat));
1595
+ url.searchParams.set("lon", String(lon));
1596
+ }
1597
+ if (zoom !== void 0) url.searchParams.set("zoom", String(zoom));
1598
+ if (locationBiasScale !== void 0) url.searchParams.set("location_bias_scale", String(locationBiasScale));
1599
+ return String(url);
1600
+ }
1601
+ function useDebounce(value, delay = 300) {
1602
+ const [debouncedValue, setDebouncedValue] = React$1.useState(value);
1603
+ React$1.useEffect(() => {
1604
+ const timer = setTimeout(() => setDebouncedValue(value), delay);
1605
+ return () => clearTimeout(timer);
1606
+ }, [value, delay]);
1607
+ return debouncedValue;
1608
+ }
1609
+ function usePlaceSearch({ debounceMs, query, ...props }) {
1610
+ const [results, setResults] = React$1.useState([]);
1611
+ const [isLoading, setIsLoading] = React$1.useState(false);
1612
+ const [error, setError] = React$1.useState(null);
1613
+ const [hasSearched, setHasSearched] = React$1.useState(false);
1614
+ const debouncedQuery = useDebounce(query, debounceMs);
1615
+ React$1.useEffect(() => {
1616
+ if (!debouncedQuery.trim()) {
1617
+ setResults([]);
1618
+ setIsLoading(false);
1619
+ setHasSearched(false);
1620
+ return;
1621
+ }
1622
+ const abortController = new AbortController();
1623
+ async function fetchResults() {
1624
+ setIsLoading(true);
1625
+ setError(null);
1626
+ setHasSearched(true);
1627
+ try {
1628
+ const url = buildSearchUrl({
1629
+ query: debouncedQuery,
1630
+ ...props
1631
+ });
1632
+ const response = await fetch(url, { signal: abortController.signal });
1633
+ if (!response.ok) throw new Error(`Photon API error: ${response.status} ${response.statusText}`);
1634
+ const data = await response.json();
1635
+ const addressOsmIds = /* @__PURE__ */ new Set();
1636
+ setResults(data.features.filter((feature) => {
1637
+ const id = feature.properties.osm_id;
1638
+ if (addressOsmIds.has(id)) return false;
1639
+ addressOsmIds.add(id);
1640
+ return true;
1641
+ }));
1642
+ } catch (err) {
1643
+ if (err instanceof Error && err.name !== "AbortError") {
1644
+ setError(err);
1645
+ setResults([]);
1646
+ }
1647
+ } finally {
1648
+ setIsLoading(false);
1649
+ }
1650
+ }
1651
+ fetchResults();
1652
+ return () => abortController.abort();
1653
+ }, [
1654
+ debouncedQuery,
1655
+ props.lang,
1656
+ props.limit,
1657
+ props.bbox,
1658
+ props.lat,
1659
+ props.lon,
1660
+ props.zoom,
1661
+ props.locationBiasScale
1662
+ ]);
1663
+ return {
1664
+ results,
1665
+ isLoading,
1666
+ error,
1667
+ hasSearched
1668
+ };
1669
+ }
1670
+ function PlaceAutocomplete({ debounceMs = 300, lang, limit = 5, bbox, lat, lon, zoom, locationBiasScale, className, value: controlledValue, defaultValue = "", onChange: controlledOnChange, onPlaceSelect, onResultsChange, ...props }) {
1671
+ const [internalValue, setInternalValue] = React$1.useState(defaultValue);
1672
+ const [searchQuery, setSearchQuery] = React$1.useState("");
1673
+ const isControlled = controlledValue !== void 0;
1674
+ const displayValue = isControlled ? controlledValue : internalValue;
1675
+ const { results, isLoading, error, hasSearched } = usePlaceSearch({
1676
+ query: searchQuery,
1677
+ debounceMs,
1678
+ lang,
1679
+ limit,
1680
+ bbox,
1681
+ lat,
1682
+ lon,
1683
+ zoom,
1684
+ locationBiasScale
1685
+ });
1686
+ React$1.useEffect(() => {
1687
+ onResultsChange?.(results);
1688
+ }, [results, onResultsChange]);
1689
+ const hasNoResults = hasSearched && !isLoading && !error && results.length === 0;
1690
+ const showCommandList = error || hasNoResults || results.length > 0;
1691
+ return /* @__PURE__ */ jsx(Command$1, {
1692
+ className: cn("h-fit overflow-visible", className),
1693
+ shouldFilter: false,
1694
+ loop: true,
1695
+ children: /* @__PURE__ */ jsxs("div", {
1696
+ className: "relative",
1697
+ children: [/* @__PURE__ */ jsxs(InputGroup, {
1698
+ className: cn("border-input! bg-popover! ring-0!", showCommandList && "rounded-b-none"),
1699
+ children: [
1700
+ /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, {}) }),
1701
+ /* @__PURE__ */ jsx(InputGroupInput, {
1702
+ placeholder: "Search",
1703
+ value: displayValue,
1704
+ onChange: (event) => {
1705
+ const newValue = event.target.value;
1706
+ if (!isControlled) setInternalValue(newValue);
1707
+ setSearchQuery(newValue);
1708
+ controlledOnChange?.(newValue);
1709
+ },
1710
+ ...props
1711
+ }),
1712
+ isLoading && /* @__PURE__ */ jsx(InputGroupAddon, {
1713
+ align: "inline-end",
1714
+ children: /* @__PURE__ */ jsx(Spinner, {})
1715
+ })
1716
+ ]
1717
+ }), showCommandList && /* @__PURE__ */ jsxs(CommandList, {
1718
+ "data-state": showCommandList ? "open" : "closed",
1719
+ className: cn("bg-popover border-input absolute top-full right-0 left-0 rounded-b-md border border-t-0 shadow-md", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[state=open]:slide-in-from-top-2 data-[state=closed]:slide-out-to-top-2"),
1720
+ children: [
1721
+ error && /* @__PURE__ */ jsxs(CommandEmpty, { children: ["Error: ", error.message] }),
1722
+ hasNoResults && /* @__PURE__ */ jsxs(CommandEmpty, { children: [
1723
+ "Can't find ",
1724
+ displayValue,
1725
+ "."
1726
+ ] }),
1727
+ results.length > 0 && /* @__PURE__ */ jsx(CommandGroup, { children: results.map((feature) => {
1728
+ const formattedAddress = formatAddress(feature.properties);
1729
+ return /* @__PURE__ */ jsxs(CommandItem, {
1730
+ value: String(feature.properties.osm_id),
1731
+ onSelect: () => {
1732
+ const formattedAddress = formatAddress(feature.properties);
1733
+ if (!isControlled) setInternalValue(formattedAddress);
1734
+ setSearchQuery("");
1735
+ controlledOnChange?.(formattedAddress);
1736
+ onPlaceSelect?.(feature);
1737
+ },
1738
+ children: [/* @__PURE__ */ jsx(MapPinIcon, {}), /* @__PURE__ */ jsxs("div", {
1739
+ className: "flex flex-col items-start text-start",
1740
+ children: [/* @__PURE__ */ jsx("span", {
1741
+ className: "font-medium",
1742
+ children: feature.properties.name || feature.properties.street || "Unknown"
1743
+ }), /* @__PURE__ */ jsx("span", {
1744
+ className: "text-muted-foreground text-xs",
1745
+ children: formattedAddress
1746
+ })]
1747
+ })]
1748
+ }, feature.properties.osm_id);
1749
+ }) })
1750
+ ]
1751
+ })]
1752
+ })
1753
+ });
1754
+ }
1755
+
1756
+ //#endregion
1757
+ //#region ../shadcn/ui/map.tsx
1758
+ let _useMap;
1759
+ let _useMapEvents;
1760
+ if (typeof window !== "undefined") import("./map-leaflet-imports-OKaoesjZ.mjs").then((mod) => {
1761
+ _useMap = mod.useMap;
1762
+ _useMapEvents = mod.useMapEvents;
1763
+ });
1764
+ function createLazyComponent(factory) {
1765
+ const LazyComponent = lazy(factory);
1766
+ return (props) => {
1767
+ const [isMounted, setIsMounted] = useState(false);
1768
+ useEffect(() => {
1769
+ setIsMounted(true);
1770
+ }, []);
1771
+ if (!isMounted) return null;
1772
+ return /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(LazyComponent, { ...props }) });
1773
+ };
1774
+ }
1775
+ const LeafletMapContainer = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.MapContainer })));
1776
+ const LeafletTileLayer = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.TileLayer })));
1777
+ const LeafletMarker = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Marker })));
1778
+ const LeafletPopup = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Popup })));
1779
+ const LeafletTooltip = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Tooltip })));
1780
+ const LeafletCircle = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Circle })));
1781
+ const LeafletCircleMarker = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.CircleMarker })));
1782
+ const LeafletPolyline = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Polyline })));
1783
+ const LeafletPolygon = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Polygon })));
1784
+ const LeafletRectangle = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Rectangle })));
1785
+ const LeafletLayerGroup = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.LayerGroup })));
1786
+ const LeafletFeatureGroup = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.FeatureGroup })));
1787
+ const LeafletMarkerClusterGroup = createLazyComponent(async () => import("react-leaflet-markercluster").then((mod) => ({ default: mod.default })));
1788
+ function Map$1({ zoom = 15, maxZoom = 18, className, ...props }) {
1789
+ return /* @__PURE__ */ jsx(LeafletMapContainer, {
1790
+ zoom,
1791
+ maxZoom,
1792
+ attributionControl: false,
1793
+ zoomControl: false,
1794
+ className: cn("z-50 size-full min-h-96 flex-1 rounded-md", className),
1795
+ ...props
1796
+ });
1797
+ }
1798
+ const MapLayersContext = createContext(null);
1799
+ function useMapLayersContext() {
1800
+ return useContext(MapLayersContext);
1801
+ }
1802
+ function MapTileLayer({ name = "Default", url, attribution, darkUrl, darkAttribution, ...props }) {
1803
+ const map = _useMap();
1804
+ if (map.attributionControl) map.attributionControl.setPrefix("");
1805
+ const context = useContext(MapLayersContext);
1806
+ const DEFAULT_URL = "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";
1807
+ const DEFAULT_DARK_URL = "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";
1808
+ const { resolvedTheme } = useTheme();
1809
+ const resolvedUrl = resolvedTheme === "dark" ? darkUrl ?? url ?? DEFAULT_DARK_URL : url ?? DEFAULT_URL;
1810
+ const resolvedAttribution = resolvedTheme === "dark" && darkAttribution ? darkAttribution : attribution ?? "&copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a>, &copy; <a href=\"https://carto.com/attributions\">CARTO</a>";
1811
+ useEffect(() => {
1812
+ if (context) context.registerTileLayer({
1813
+ name,
1814
+ url: resolvedUrl,
1815
+ attribution: resolvedAttribution
1816
+ });
1817
+ }, [
1818
+ context,
1819
+ name,
1820
+ url,
1821
+ attribution
1822
+ ]);
1823
+ if (context && context.selectedTileLayer !== name) return null;
1824
+ return /* @__PURE__ */ jsx(LeafletTileLayer, {
1825
+ url: resolvedUrl,
1826
+ attribution: resolvedAttribution,
1827
+ ...props
1828
+ });
1829
+ }
1830
+ function MapLayerGroup({ name, disabled, ...props }) {
1831
+ const context = useMapLayersContext();
1832
+ useEffect(() => {
1833
+ if (context) context.registerLayerGroup({
1834
+ name,
1835
+ disabled
1836
+ });
1837
+ }, [
1838
+ context,
1839
+ name,
1840
+ disabled
1841
+ ]);
1842
+ if (context && !context.activeLayerGroups.includes(name)) return null;
1843
+ return /* @__PURE__ */ jsx(LeafletLayerGroup, { ...props });
1844
+ }
1845
+ function MapFeatureGroup({ name, disabled, ...props }) {
1846
+ const context = useMapLayersContext();
1847
+ useEffect(() => {
1848
+ if (context) context.registerLayerGroup({
1849
+ name,
1850
+ disabled
1851
+ });
1852
+ }, [
1853
+ context,
1854
+ name,
1855
+ disabled
1856
+ ]);
1857
+ if (context && !context.activeLayerGroups.includes(name)) return null;
1858
+ return /* @__PURE__ */ jsx(LeafletFeatureGroup, { ...props });
1859
+ }
1860
+ function MapLayers({ defaultTileLayer, defaultLayerGroups = [], ...props }) {
1861
+ const [tileLayers, setTileLayers] = useState([]);
1862
+ const [selectedTileLayer, setSelectedTileLayer] = useState(defaultTileLayer || "");
1863
+ const [layerGroups, setLayerGroups] = useState([]);
1864
+ const [activeLayerGroups, setActiveLayerGroups] = useState(defaultLayerGroups);
1865
+ function registerTileLayer(tileLayer) {
1866
+ setTileLayers((prevTileLayers) => {
1867
+ if (prevTileLayers.some((layer) => layer.name === tileLayer.name)) return prevTileLayers;
1868
+ return [...prevTileLayers, tileLayer];
1869
+ });
1870
+ }
1871
+ function registerLayerGroup(layerGroup) {
1872
+ setLayerGroups((prevLayerGroups) => {
1873
+ if (prevLayerGroups.some((group) => group.name === layerGroup.name)) return prevLayerGroups;
1874
+ return [...prevLayerGroups, layerGroup];
1875
+ });
1876
+ }
1877
+ useEffect(() => {
1878
+ if (defaultTileLayer && tileLayers.length > 0 && !tileLayers.some((tileLayer) => tileLayer.name === defaultTileLayer)) throw new Error(`Invalid defaultTileLayer "${defaultTileLayer}" provided to MapLayers. It must match a MapTileLayer's name prop.`);
1879
+ if (tileLayers.length > 0 && !selectedTileLayer) setSelectedTileLayer(defaultTileLayer && tileLayers.some((layer) => layer.name === defaultTileLayer) ? defaultTileLayer : tileLayers[0].name);
1880
+ if (defaultLayerGroups.length > 0 && layerGroups.length > 0 && defaultLayerGroups.some((name) => !layerGroups.some((group) => group.name === name))) throw new Error(`Invalid defaultLayerGroups value provided to MapLayers. All names must match a MapLayerGroup's name prop.`);
1881
+ }, [
1882
+ tileLayers,
1883
+ defaultTileLayer,
1884
+ selectedTileLayer,
1885
+ layerGroups,
1886
+ defaultLayerGroups
1887
+ ]);
1888
+ return /* @__PURE__ */ jsx(MapLayersContext.Provider, {
1889
+ value: {
1890
+ registerTileLayer,
1891
+ tileLayers,
1892
+ selectedTileLayer,
1893
+ setSelectedTileLayer,
1894
+ registerLayerGroup,
1895
+ layerGroups,
1896
+ activeLayerGroups,
1897
+ setActiveLayerGroups
1898
+ },
1899
+ ...props
1900
+ });
1901
+ }
1902
+ function MapLayersControl({ tileLayersLabel = "Map Type", layerGroupsLabel = "Layers", position = "top-1 right-1", className, ...props }) {
1903
+ const layersContext = useMapLayersContext();
1904
+ if (!layersContext) throw new Error("MapLayersControl must be used within MapLayers");
1905
+ const { tileLayers, selectedTileLayer, setSelectedTileLayer, layerGroups, activeLayerGroups, setActiveLayerGroups } = layersContext;
1906
+ if (tileLayers.length === 0 && layerGroups.length === 0) return null;
1907
+ function handleLayerGroupToggle(name, checked) {
1908
+ setActiveLayerGroups(checked ? [...activeLayerGroups, name] : activeLayerGroups.filter((groupName) => groupName !== name));
1909
+ }
1910
+ const showTileLayersDropdown = tileLayers.length > 1;
1911
+ const showLayerGroupsDropdown = layerGroups.length > 0;
1912
+ if (!showTileLayersDropdown && !showLayerGroupsDropdown) return null;
1913
+ return /* @__PURE__ */ jsxs(DropdownMenu$1, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger$1, {
1914
+ asChild: true,
1915
+ children: /* @__PURE__ */ jsx(Button, {
1916
+ type: "button",
1917
+ variant: "secondary",
1918
+ size: "sm",
1919
+ "aria-label": "Select layers",
1920
+ title: "Select layers",
1921
+ className: cn("absolute z-1000 border", position, className),
1922
+ ...props,
1923
+ children: /* @__PURE__ */ jsx(LayersIcon, {})
1924
+ })
1925
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent$1, {
1926
+ align: "end",
1927
+ className: "z-1000",
1928
+ children: [
1929
+ showTileLayersDropdown && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuLabel$1, { children: tileLayersLabel }), /* @__PURE__ */ jsx(DropdownMenuRadioGroup$1, {
1930
+ value: selectedTileLayer,
1931
+ onValueChange: setSelectedTileLayer,
1932
+ children: tileLayers.map((tileLayer) => /* @__PURE__ */ jsx(DropdownMenuRadioItem$1, {
1933
+ value: tileLayer.name,
1934
+ children: tileLayer.name
1935
+ }, tileLayer.name))
1936
+ })] }),
1937
+ showTileLayersDropdown && showLayerGroupsDropdown && /* @__PURE__ */ jsx(DropdownMenuSeparator$1, {}),
1938
+ showLayerGroupsDropdown && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuLabel$1, { children: layerGroupsLabel }), layerGroups.map((layerGroup) => /* @__PURE__ */ jsx(DropdownMenuCheckboxItem$1, {
1939
+ checked: activeLayerGroups.includes(layerGroup.name),
1940
+ disabled: layerGroup.disabled,
1941
+ onCheckedChange: (checked) => handleLayerGroupToggle(layerGroup.name, checked),
1942
+ children: layerGroup.name
1943
+ }, layerGroup.name))] })
1944
+ ]
1945
+ })] });
1946
+ }
1947
+ function MapMarker({ icon = /* @__PURE__ */ jsx(MapPinIcon, { className: "size-6" }), iconAnchor = [12, 12], bgPos, popupAnchor, tooltipAnchor, ...props }) {
1948
+ const { L } = useLeaflet();
1949
+ if (!L) return null;
1950
+ return /* @__PURE__ */ jsx(LeafletMarker, {
1951
+ icon: L.divIcon({
1952
+ html: renderToString(icon),
1953
+ iconAnchor,
1954
+ ...bgPos ? { bgPos } : {},
1955
+ ...popupAnchor ? { popupAnchor } : {},
1956
+ ...tooltipAnchor ? { tooltipAnchor } : {}
1957
+ }),
1958
+ riseOnHover: true,
1959
+ ...props
1960
+ });
1961
+ }
1962
+ function MapMarkerClusterGroup({ polygonOptions = { className: "fill-foreground stroke-foreground stroke-2" }, spiderLegPolylineOptions = { className: "fill-foreground stroke-foreground stroke-2" }, icon, ...props }) {
1963
+ const { L } = useLeaflet();
1964
+ if (!L) return null;
1965
+ return /* @__PURE__ */ jsx(LeafletMarkerClusterGroup, {
1966
+ polygonOptions,
1967
+ spiderLegPolylineOptions,
1968
+ iconCreateFunction: icon ? (cluster) => {
1969
+ const iconNode = icon(cluster.getChildCount());
1970
+ return L.divIcon({ html: renderToString(iconNode) });
1971
+ } : void 0,
1972
+ ...props
1973
+ });
1974
+ }
1975
+ function MapCircle({ className, ...props }) {
1976
+ return /* @__PURE__ */ jsx(LeafletCircle, {
1977
+ className: cn("fill-foreground stroke-foreground stroke-2", className),
1978
+ ...props
1979
+ });
1980
+ }
1981
+ function MapCircleMarker({ className, ...props }) {
1982
+ return /* @__PURE__ */ jsx(LeafletCircleMarker, {
1983
+ className: cn("fill-foreground stroke-foreground stroke-2", className),
1984
+ ...props
1985
+ });
1986
+ }
1987
+ function MapPolyline({ className, ...props }) {
1988
+ return /* @__PURE__ */ jsx(LeafletPolyline, {
1989
+ className: cn("fill-foreground stroke-foreground stroke-2", className),
1990
+ ...props
1991
+ });
1992
+ }
1993
+ function MapPolygon({ className, ...props }) {
1994
+ return /* @__PURE__ */ jsx(LeafletPolygon, {
1995
+ className: cn("fill-foreground stroke-foreground stroke-2", className),
1996
+ ...props
1997
+ });
1998
+ }
1999
+ function MapRectangle({ className, ...props }) {
2000
+ return /* @__PURE__ */ jsx(LeafletRectangle, {
2001
+ className: cn("fill-foreground stroke-foreground stroke-2", className),
2002
+ ...props
2003
+ });
2004
+ }
2005
+ function MapPopup({ className, ...props }) {
2006
+ return /* @__PURE__ */ jsx(LeafletPopup, {
2007
+ className: cn("bg-popover text-popover-foreground animate-in fade-out-0 fade-in-0 zoom-out-95 zoom-in-95 slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 font-sans shadow-md outline-hidden", className),
2008
+ ...props
2009
+ });
2010
+ }
2011
+ function MapTooltip({ className, children, side = "top", sideOffset = 15, ...props }) {
2012
+ const ARROW_POSITION_CLASSES = {
2013
+ top: "bottom-0.5 left-1/2 -translate-x-1/2 translate-y-1/2",
2014
+ bottom: "top-0.5 left-1/2 -translate-x-1/2 -translate-y-1/2",
2015
+ left: "right-0.5 top-1/2 translate-x-1/2 -translate-y-1/2",
2016
+ right: "left-0.5 top-1/2 -translate-x-1/2 -translate-y-1/2"
2017
+ };
2018
+ const DEFAULT_OFFSET = {
2019
+ top: [0, -sideOffset],
2020
+ bottom: [0, sideOffset],
2021
+ left: [-sideOffset, 0],
2022
+ right: [sideOffset, 0]
2023
+ };
2024
+ return /* @__PURE__ */ jsxs(LeafletTooltip, {
2025
+ className: cn("animate-in fade-in-0 zoom-in-95 fade-out-0 zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 w-fit text-xs text-balance transition-opacity", className),
2026
+ "data-side": side,
2027
+ direction: side,
2028
+ offset: DEFAULT_OFFSET[side],
2029
+ opacity: 1,
2030
+ ...props,
2031
+ children: [children, /* @__PURE__ */ jsx("div", { className: cn("bg-foreground fill-foreground absolute z-50 size-2.5 rotate-45 rounded-[2px]", ARROW_POSITION_CLASSES[side]) })]
2032
+ });
2033
+ }
2034
+ function MapZoomControl({ position = "top-1 left-1", className, ...props }) {
2035
+ const map = _useMap();
2036
+ const [zoomLevel, setZoomLevel] = useState(map.getZoom());
2037
+ _useMapEvents({ zoomend: () => {
2038
+ setZoomLevel(map.getZoom());
2039
+ } });
2040
+ return /* @__PURE__ */ jsx(MapControlContainer, {
2041
+ className: cn(position, className),
2042
+ children: /* @__PURE__ */ jsxs(ButtonGroup, {
2043
+ orientation: "vertical",
2044
+ "aria-label": "Zoom controls",
2045
+ ...props,
2046
+ children: [/* @__PURE__ */ jsx(Button, {
2047
+ type: "button",
2048
+ size: "icon",
2049
+ variant: "outline",
2050
+ "aria-label": "Zoom in",
2051
+ title: "Zoom in",
2052
+ className: "border",
2053
+ disabled: zoomLevel >= map.getMaxZoom(),
2054
+ onClick: () => map.zoomIn(),
2055
+ children: /* @__PURE__ */ jsx(PlusIcon, {})
2056
+ }), /* @__PURE__ */ jsx(Button, {
2057
+ type: "button",
2058
+ size: "icon",
2059
+ variant: "outline",
2060
+ "aria-label": "Zoom out",
2061
+ title: "Zoom out",
2062
+ className: "border",
2063
+ disabled: zoomLevel <= map.getMinZoom(),
2064
+ onClick: () => map.zoomOut(),
2065
+ children: /* @__PURE__ */ jsx(MinusIcon, {})
2066
+ })]
2067
+ })
2068
+ });
2069
+ }
2070
+ function MapFullscreenControl({ position = "top-1 right-1", className, ...props }) {
2071
+ const map = _useMap();
2072
+ const [isFullscreen, setIsFullscreen] = useState(false);
2073
+ const { L } = useLeaflet();
2074
+ useEffect(() => {
2075
+ if (!L) return;
2076
+ const fullscreenControl = new L.Control.FullScreen();
2077
+ fullscreenControl.addTo(map);
2078
+ const container = fullscreenControl.getContainer();
2079
+ if (container) container.style.display = "none";
2080
+ const handleEnter = () => setIsFullscreen(true);
2081
+ const handleExit = () => setIsFullscreen(false);
2082
+ map.on("enterFullscreen", handleEnter);
2083
+ map.on("exitFullscreen", handleExit);
2084
+ return () => {
2085
+ fullscreenControl.remove();
2086
+ map.off("enterFullscreen", handleEnter);
2087
+ map.off("exitFullscreen", handleExit);
2088
+ };
2089
+ }, [L, map]);
2090
+ return /* @__PURE__ */ jsx(MapControlContainer, {
2091
+ className: cn(position, className),
2092
+ children: /* @__PURE__ */ jsx(Button, {
2093
+ type: "button",
2094
+ size: "icon",
2095
+ variant: "outline",
2096
+ onClick: () => map.toggleFullscreen(),
2097
+ "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
2098
+ title: isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
2099
+ className: "border",
2100
+ ...props,
2101
+ children: isFullscreen ? /* @__PURE__ */ jsx(MinimizeIcon, {}) : /* @__PURE__ */ jsx(MaximizeIcon, {})
2102
+ })
2103
+ });
2104
+ }
2105
+ function MapLocatePulseIcon() {
2106
+ return /* @__PURE__ */ jsxs("div", {
2107
+ className: "absolute -top-1 -right-1 flex size-3 rounded-full",
2108
+ children: [/* @__PURE__ */ jsx("div", { className: "bg-primary absolute inline-flex size-full animate-ping rounded-full opacity-75" }), /* @__PURE__ */ jsx("div", { className: "bg-primary relative inline-flex size-3 rounded-full" })]
2109
+ });
2110
+ }
2111
+ function MapLocateControl({ watch = false, onLocationFound, onLocationError, position = "right-1 bottom-1", className, ...props }) {
2112
+ const map = _useMap();
2113
+ const [isLocating, setIsLocating] = useDebounceLoadingState(200);
2114
+ const [location, setLocation] = useState(null);
2115
+ function startLocating() {
2116
+ setIsLocating(true);
2117
+ map.locate({
2118
+ setView: true,
2119
+ maxZoom: map.getMaxZoom(),
2120
+ watch
2121
+ });
2122
+ map.on("locationfound", (location) => {
2123
+ setLocation(location.latlng);
2124
+ setIsLocating(false);
2125
+ onLocationFound?.(location);
2126
+ });
2127
+ map.on("locationerror", (error) => {
2128
+ setLocation(null);
2129
+ setIsLocating(false);
2130
+ onLocationError?.(error);
2131
+ });
2132
+ }
2133
+ function stopLocating() {
2134
+ map.stopLocate();
2135
+ map.off("locationfound");
2136
+ map.off("locationerror");
2137
+ setLocation(null);
2138
+ setIsLocating(false);
2139
+ }
2140
+ useEffect(() => () => stopLocating(), []);
2141
+ return /* @__PURE__ */ jsxs(MapControlContainer, {
2142
+ className: cn(position, className),
2143
+ children: [/* @__PURE__ */ jsx(Button, {
2144
+ type: "button",
2145
+ size: "sm",
2146
+ variant: location ? "default" : "secondary",
2147
+ onClick: location ? stopLocating : startLocating,
2148
+ disabled: isLocating,
2149
+ title: isLocating ? "Locating..." : location ? "Stop tracking" : "Track location",
2150
+ "aria-label": isLocating ? "Locating..." : location ? "Stop location tracking" : "Start location tracking",
2151
+ className: "border",
2152
+ ...props,
2153
+ children: isLocating ? /* @__PURE__ */ jsx(LoaderCircleIcon, { className: "animate-spin" }) : /* @__PURE__ */ jsx(NavigationIcon, {})
2154
+ }), location && /* @__PURE__ */ jsx(MapMarker, {
2155
+ position: location,
2156
+ icon: /* @__PURE__ */ jsx(MapLocatePulseIcon, {})
2157
+ })]
2158
+ });
2159
+ }
2160
+ function MapSearchControl({ position = "top-1 left-1", className, ...props }) {
2161
+ return /* @__PURE__ */ jsx(MapControlContainer, {
2162
+ className: cn("z-1001 w-60", position, className),
2163
+ children: /* @__PURE__ */ jsx(PlaceAutocomplete, { ...props })
2164
+ });
2165
+ }
2166
+ const MapDrawContext = createContext(null);
2167
+ function useMapDrawContext() {
2168
+ return useContext(MapDrawContext);
2169
+ }
2170
+ function MapDrawControl({ onLayersChange, position = "bottom-1 left-1", className, ...props }) {
2171
+ const { L, LeafletDraw } = useLeaflet();
2172
+ const map = _useMap();
2173
+ const featureGroupRef = useRef(null);
2174
+ const editControlRef = useRef(null);
2175
+ const deleteControlRef = useRef(null);
2176
+ const [activeMode, setActiveMode] = useState(null);
2177
+ const [layersCount, setLayersCount] = useState(0);
2178
+ function updateLayersCount() {
2179
+ if (featureGroupRef.current) setLayersCount(featureGroupRef.current.getLayers().length);
2180
+ }
2181
+ function handleDrawCreated(event) {
2182
+ if (!featureGroupRef.current) return;
2183
+ const { layer } = event;
2184
+ featureGroupRef.current.addLayer(layer);
2185
+ onLayersChange?.(featureGroupRef.current);
2186
+ updateLayersCount();
2187
+ setActiveMode(null);
2188
+ }
2189
+ function handleDrawEditedOrDeleted() {
2190
+ if (!featureGroupRef.current) return;
2191
+ onLayersChange?.(featureGroupRef.current);
2192
+ updateLayersCount();
2193
+ setActiveMode(null);
2194
+ }
2195
+ useEffect(() => {
2196
+ if (!L || !LeafletDraw || !map) return;
2197
+ map.on(L.Draw.Event.CREATED, handleDrawCreated);
2198
+ map.on(L.Draw.Event.EDITED, handleDrawEditedOrDeleted);
2199
+ map.on(L.Draw.Event.DELETED, handleDrawEditedOrDeleted);
2200
+ return () => {
2201
+ map.off(L.Draw.Event.CREATED, handleDrawCreated);
2202
+ map.off(L.Draw.Event.EDITED, handleDrawEditedOrDeleted);
2203
+ map.off(L.Draw.Event.DELETED, handleDrawEditedOrDeleted);
2204
+ };
2205
+ }, [
2206
+ L,
2207
+ LeafletDraw,
2208
+ map,
2209
+ onLayersChange
2210
+ ]);
2211
+ return /* @__PURE__ */ jsxs(MapDrawContext.Provider, {
2212
+ value: {
2213
+ featureGroup: featureGroupRef.current,
2214
+ activeMode,
2215
+ setActiveMode,
2216
+ editControlRef,
2217
+ deleteControlRef,
2218
+ layersCount
2219
+ },
2220
+ children: [/* @__PURE__ */ jsx(LeafletFeatureGroup, { ref: featureGroupRef }), /* @__PURE__ */ jsx(MapControlContainer, {
2221
+ className: cn(position, className),
2222
+ children: /* @__PURE__ */ jsx(ButtonGroup, {
2223
+ orientation: "vertical",
2224
+ ...props
2225
+ })
2226
+ })]
2227
+ });
2228
+ }
2229
+ function MapDrawShapeButton({ drawMode, createDrawTool, className, ...props }) {
2230
+ const drawContext = useMapDrawContext();
2231
+ if (!drawContext) throw new Error("MapDrawShapeButton must be used within MapDrawControl");
2232
+ const { L } = useLeaflet();
2233
+ const map = _useMap();
2234
+ const controlRef = useRef(null);
2235
+ const { activeMode, setActiveMode } = drawContext;
2236
+ const isActive = activeMode === drawMode;
2237
+ useEffect(() => {
2238
+ if (!L || !isActive) {
2239
+ controlRef.current?.disable();
2240
+ controlRef.current = null;
2241
+ return;
2242
+ }
2243
+ const control = createDrawTool(L, map);
2244
+ control.enable();
2245
+ controlRef.current = control;
2246
+ return () => {
2247
+ control.disable();
2248
+ controlRef.current = null;
2249
+ };
2250
+ }, [
2251
+ L,
2252
+ map,
2253
+ isActive,
2254
+ createDrawTool
2255
+ ]);
2256
+ function handleClick() {
2257
+ setActiveMode(isActive ? null : drawMode);
2258
+ }
2259
+ return /* @__PURE__ */ jsx(Button, {
2260
+ type: "button",
2261
+ size: "sm",
2262
+ "aria-label": `Draw ${drawMode}`,
2263
+ title: `Draw ${drawMode}`,
2264
+ className: cn("border", className),
2265
+ variant: isActive ? "default" : "secondary",
2266
+ disabled: activeMode === "edit" || activeMode === "delete",
2267
+ onClick: handleClick,
2268
+ ...props
2269
+ });
2270
+ }
2271
+ function MapDrawMarker({ ...props }) {
2272
+ return /* @__PURE__ */ jsx(MapDrawShapeButton, {
2273
+ drawMode: "marker",
2274
+ createDrawTool: (L, map) => new L.Draw.Marker(map, {
2275
+ icon: L.divIcon({
2276
+ className: "",
2277
+ iconAnchor: [12, 12],
2278
+ html: renderToString(/* @__PURE__ */ jsx(MapPinIcon, { className: "size-6" }))
2279
+ }),
2280
+ ...props
2281
+ }),
2282
+ children: /* @__PURE__ */ jsx(MapPinIcon, {})
2283
+ });
2284
+ }
2285
+ function MapDrawPolyline({ showLength = false, drawError = { color: "var(--color-destructive)" }, shapeOptions = {
2286
+ color: "var(--color-primary)",
2287
+ opacity: 1,
2288
+ weight: 2
2289
+ }, ...props }) {
2290
+ const mapDrawHandleIcon = useMapDrawHandleIcon();
2291
+ return /* @__PURE__ */ jsx(MapDrawShapeButton, {
2292
+ drawMode: "polyline",
2293
+ createDrawTool: (L, map) => new L.Draw.Polyline(map, {
2294
+ ...mapDrawHandleIcon ? {
2295
+ icon: mapDrawHandleIcon,
2296
+ touchIcon: mapDrawHandleIcon
2297
+ } : {},
2298
+ showLength,
2299
+ drawError,
2300
+ shapeOptions,
2301
+ ...props
2302
+ }),
2303
+ children: /* @__PURE__ */ jsx(WaypointsIcon, {})
2304
+ });
2305
+ }
2306
+ function MapDrawCircle({ showRadius = false, shapeOptions = {
2307
+ color: "var(--color-primary)",
2308
+ opacity: 1,
2309
+ weight: 2
2310
+ }, ...props }) {
2311
+ return /* @__PURE__ */ jsx(MapDrawShapeButton, {
2312
+ drawMode: "circle",
2313
+ createDrawTool: (L, map) => new L.Draw.Circle(map, {
2314
+ showRadius,
2315
+ shapeOptions,
2316
+ ...props
2317
+ }),
2318
+ children: /* @__PURE__ */ jsx(CircleIcon, {})
2319
+ });
2320
+ }
2321
+ function MapDrawRectangle({ showArea = false, shapeOptions = {
2322
+ color: "var(--color-primary)",
2323
+ opacity: 1,
2324
+ weight: 2
2325
+ }, ...props }) {
2326
+ return /* @__PURE__ */ jsx(MapDrawShapeButton, {
2327
+ drawMode: "rectangle",
2328
+ createDrawTool: (L, map) => new L.Draw.Rectangle(map, {
2329
+ showArea,
2330
+ shapeOptions,
2331
+ ...props
2332
+ }),
2333
+ children: /* @__PURE__ */ jsx(SquareIcon, {})
2334
+ });
2335
+ }
2336
+ function MapDrawPolygon({ drawError = { color: "var(--color-destructive)" }, shapeOptions = {
2337
+ color: "var(--color-primary)",
2338
+ opacity: 1,
2339
+ weight: 2
2340
+ }, ...props }) {
2341
+ const mapDrawHandleIcon = useMapDrawHandleIcon();
2342
+ return /* @__PURE__ */ jsx(MapDrawShapeButton, {
2343
+ drawMode: "polygon",
2344
+ createDrawTool: (L, map) => new L.Draw.Polygon(map, {
2345
+ ...mapDrawHandleIcon ? {
2346
+ icon: mapDrawHandleIcon,
2347
+ touchIcon: mapDrawHandleIcon
2348
+ } : {},
2349
+ drawError,
2350
+ shapeOptions,
2351
+ ...props
2352
+ }),
2353
+ children: /* @__PURE__ */ jsx(PentagonIcon, {})
2354
+ });
2355
+ }
2356
+ function MapDrawActionButton({ drawAction, createDrawTool, controlRef, className, ...props }) {
2357
+ const drawContext = useMapDrawContext();
2358
+ if (!drawContext) throw new Error("MapDrawActionButton must be used within MapDrawControl");
2359
+ const { L } = useLeaflet();
2360
+ const map = _useMap();
2361
+ const { featureGroup, activeMode, setActiveMode, layersCount } = drawContext;
2362
+ const isActive = activeMode === drawAction;
2363
+ const hasFeatures = layersCount > 0;
2364
+ useEffect(() => {
2365
+ if (!L || !featureGroup || !isActive) {
2366
+ controlRef.current?.disable?.();
2367
+ controlRef.current = null;
2368
+ return;
2369
+ }
2370
+ const control = createDrawTool(L, map, featureGroup);
2371
+ control.enable?.();
2372
+ controlRef.current = control;
2373
+ return () => {
2374
+ control.disable?.();
2375
+ controlRef.current = null;
2376
+ };
2377
+ }, [
2378
+ L,
2379
+ map,
2380
+ isActive,
2381
+ featureGroup,
2382
+ createDrawTool
2383
+ ]);
2384
+ function handleClick() {
2385
+ controlRef.current?.save();
2386
+ setActiveMode(isActive ? null : drawAction);
2387
+ }
2388
+ return /* @__PURE__ */ jsx(Button, {
2389
+ type: "button",
2390
+ size: "sm",
2391
+ "aria-label": `${drawAction === "edit" ? "Edit" : "Remove"} shapes`,
2392
+ title: `${drawAction === "edit" ? "Edit" : "Remove"} shapes`,
2393
+ variant: isActive ? "default" : "secondary",
2394
+ disabled: !hasFeatures,
2395
+ onClick: handleClick,
2396
+ className: cn("border", className),
2397
+ ...props
2398
+ });
2399
+ }
2400
+ function MapDrawEdit({ selectedPathOptions = {
2401
+ color: "var(--color-primary)",
2402
+ fillColor: "var(--color-primary)",
2403
+ weight: 2
2404
+ }, ...props }) {
2405
+ const { L } = useLeaflet();
2406
+ const mapDrawHandleIcon = useMapDrawHandleIcon();
2407
+ const drawContext = useMapDrawContext();
2408
+ if (!drawContext) throw new Error("MapDrawEdit must be used within MapDrawControl");
2409
+ useEffect(() => {
2410
+ if (!L || !mapDrawHandleIcon) return;
2411
+ L.Edit.PolyVerticesEdit.mergeOptions({
2412
+ icon: mapDrawHandleIcon,
2413
+ touchIcon: mapDrawHandleIcon,
2414
+ drawError: { color: "var(--color-destructive)" }
2415
+ });
2416
+ L.Edit.SimpleShape.mergeOptions({
2417
+ moveIcon: mapDrawHandleIcon,
2418
+ resizeIcon: mapDrawHandleIcon,
2419
+ touchMoveIcon: mapDrawHandleIcon,
2420
+ touchResizeIcon: mapDrawHandleIcon
2421
+ });
2422
+ L.drawLocal.edit.handlers.edit.tooltip = {
2423
+ text: "Drag handles or markers to edit.",
2424
+ subtext: ""
2425
+ };
2426
+ L.drawLocal.edit.handlers.remove.tooltip = { text: "Click on a shape to remove." };
2427
+ }, [mapDrawHandleIcon]);
2428
+ return /* @__PURE__ */ jsx(MapDrawActionButton, {
2429
+ drawAction: "edit",
2430
+ controlRef: drawContext.editControlRef,
2431
+ createDrawTool: (L, map, featureGroup) => new L.EditToolbar.Edit(map, {
2432
+ featureGroup,
2433
+ selectedPathOptions,
2434
+ ...props
2435
+ }),
2436
+ children: /* @__PURE__ */ jsx(PenLineIcon, {})
2437
+ });
2438
+ }
2439
+ function MapDrawDelete() {
2440
+ const drawContext = useMapDrawContext();
2441
+ if (!drawContext) throw new Error("MapDrawDelete must be used within MapDrawControl");
2442
+ return /* @__PURE__ */ jsx(MapDrawActionButton, {
2443
+ drawAction: "delete",
2444
+ controlRef: drawContext.deleteControlRef,
2445
+ createDrawTool: (L, map, featureGroup) => new L.EditToolbar.Delete(map, { featureGroup }),
2446
+ children: /* @__PURE__ */ jsx(Trash2Icon, {})
2447
+ });
2448
+ }
2449
+ function MapDrawUndo({ className, ...props }) {
2450
+ const drawContext = useMapDrawContext();
2451
+ if (!drawContext) throw new Error("MapDrawUndo must be used within MapDrawControl");
2452
+ const { activeMode, setActiveMode, editControlRef, deleteControlRef, layersCount } = drawContext;
2453
+ const isInEditMode = activeMode === "edit";
2454
+ const isInDeleteMode = activeMode === "delete";
2455
+ const isActive = (isInEditMode || isInDeleteMode) && layersCount > 0;
2456
+ function handleUndo() {
2457
+ if (isInEditMode) editControlRef.current?.revertLayers();
2458
+ else if (isInDeleteMode) deleteControlRef.current?.revertLayers();
2459
+ setActiveMode(null);
2460
+ }
2461
+ return /* @__PURE__ */ jsx(Button, {
2462
+ type: "button",
2463
+ size: "sm",
2464
+ variant: "secondary",
2465
+ "aria-label": `Undo ${activeMode}`,
2466
+ title: `Undo ${activeMode}`,
2467
+ onClick: handleUndo,
2468
+ disabled: !isActive,
2469
+ className: cn("border", className),
2470
+ ...props,
2471
+ children: /* @__PURE__ */ jsx(Undo2Icon, {})
2472
+ });
2473
+ }
2474
+ function MapControlContainer({ className, ...props }) {
2475
+ const { L } = useLeaflet();
2476
+ const containerRef = useRef(null);
2477
+ useEffect(() => {
2478
+ if (!L) return;
2479
+ const element = containerRef.current;
2480
+ if (!element) return;
2481
+ L.DomEvent.disableClickPropagation(element);
2482
+ L.DomEvent.disableScrollPropagation(element);
2483
+ }, [L]);
2484
+ return /* @__PURE__ */ jsx("div", {
2485
+ ref: containerRef,
2486
+ className: cn("absolute z-1000 size-fit cursor-default", className),
2487
+ ...props
2488
+ });
2489
+ }
2490
+ function useMapDrawHandleIcon() {
2491
+ const { L } = useLeaflet();
2492
+ if (!L) return null;
2493
+ return L.divIcon({
2494
+ iconAnchor: [8, 8],
2495
+ html: renderToString(/* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary stroke-primary size-4 transition-transform hover:scale-110" }))
2496
+ });
2497
+ }
2498
+ function useLeaflet() {
2499
+ const [L, setL] = useState(null);
2500
+ const [LeafletDraw, setLeafletDraw] = useState(null);
2501
+ useEffect(() => {
2502
+ async function loadLeaflet() {
2503
+ const leaflet = await import("leaflet");
2504
+ const leafletFullscreen = await import("leaflet.fullscreen");
2505
+ const leafletDraw = await import("leaflet-draw");
2506
+ const L_object = leaflet.default;
2507
+ if (L_object.Control && !L_object.Control.FullScreen) L_object.Control.FullScreen = leafletFullscreen.default || leafletFullscreen;
2508
+ setLeafletDraw(leafletDraw);
2509
+ setL(L_object);
2510
+ }
2511
+ if (L && LeafletDraw) return;
2512
+ if (typeof window === "undefined") return;
2513
+ loadLeaflet();
2514
+ }, [L, LeafletDraw]);
2515
+ return {
2516
+ L,
2517
+ LeafletDraw
2518
+ };
2519
+ }
2520
+ function useDebounceLoadingState(delay = 200) {
2521
+ const [isLoading, setIsLoading] = useState(false);
2522
+ const [showLoading, setShowLoading] = useState(false);
2523
+ const timeoutRef = useRef(null);
2524
+ useEffect(() => {
2525
+ if (isLoading) timeoutRef.current = setTimeout(() => {
2526
+ setShowLoading(true);
2527
+ }, delay);
2528
+ else {
2529
+ if (timeoutRef.current) {
2530
+ clearTimeout(timeoutRef.current);
2531
+ timeoutRef.current = null;
2532
+ }
2533
+ setShowLoading(false);
2534
+ }
2535
+ return () => {
2536
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
2537
+ };
2538
+ }, [isLoading, delay]);
2539
+ return [showLoading, setIsLoading];
2540
+ }
2541
+
2542
+ //#endregion
2543
+ //#region ../shadcn/ui/popover.tsx
2544
+ const Popover = ({ ...props }) => {
2545
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, {
2546
+ "data-slot": "popover",
2547
+ ...props
2548
+ });
2549
+ };
2550
+ const PopoverTrigger = ({ ...props }) => {
2551
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, {
2552
+ "data-slot": "popover-trigger",
2553
+ ...props
2554
+ });
2555
+ };
2556
+ const PopoverContent = ({ className, align = "center", sideOffset = 4, ...props }) => {
2557
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
2558
+ "data-slot": "popover-content",
2559
+ align,
2560
+ sideOffset,
2561
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-hidden", className),
2562
+ ...props
2563
+ }) });
2564
+ };
2565
+ const PopoverAnchor = ({ ...props }) => {
2566
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, {
2567
+ "data-slot": "popover-anchor",
2568
+ ...props
2569
+ });
2570
+ };
2571
+
2572
+ //#endregion
2573
+ //#region ../shadcn/ui/radio-group.tsx
2574
+ function RadioGroup$1({ className, ...props }) {
2575
+ return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, {
2576
+ "data-slot": "radio-group",
2577
+ className: cn("grid gap-3", className),
815
2578
  ...props
816
2579
  });
817
2580
  }
818
- Label$1.displayName = "Label";
2581
+ function RadioGroupItem$1({ className, ...props }) {
2582
+ return /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
2583
+ "data-slot": "radio-group-item",
2584
+ 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 transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className),
2585
+ ...props,
2586
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, {
2587
+ "data-slot": "radio-group-indicator",
2588
+ className: "relative flex items-center justify-center",
2589
+ children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
2590
+ })
2591
+ });
2592
+ }
819
2593
 
820
2594
  //#endregion
821
2595
  //#region src/components/base/radio-group/radio-group.tsx
822
- function RadioGroup$1({ ref, className, ...props }) {
823
- return /* @__PURE__ */ jsx(RadioGroup, {
2596
+ function RadioGroup({ ref, className, ...props }) {
2597
+ return /* @__PURE__ */ jsx(RadioGroup$1, {
824
2598
  ref,
825
- className: cn(className),
2599
+ className: cn$1(className),
826
2600
  ...props
827
2601
  });
828
2602
  }
829
- RadioGroup$1.displayName = "RadioGroup";
830
- function RadioGroupItem$1({ ref, className, ...props }) {
831
- return /* @__PURE__ */ jsx(RadioGroupItem, {
2603
+ RadioGroup.displayName = "RadioGroup";
2604
+ function RadioGroupItem({ ref, className, ...props }) {
2605
+ return /* @__PURE__ */ jsx(RadioGroupItem$1, {
832
2606
  ref,
833
- className: cn(className),
2607
+ className: cn$1(className),
834
2608
  ...props
835
2609
  });
836
2610
  }
837
- RadioGroupItem$1.displayName = "RadioGroupItem";
2611
+ RadioGroupItem.displayName = "RadioGroupItem";
2612
+
2613
+ //#endregion
2614
+ //#region ../shadcn/ui/select.tsx
2615
+ const Select$1 = ({ ...props }) => {
2616
+ return /* @__PURE__ */ jsx(SelectPrimitive.Root, {
2617
+ "data-slot": "select",
2618
+ ...props
2619
+ });
2620
+ };
2621
+ const SelectGroup$1 = ({ ...props }) => {
2622
+ return /* @__PURE__ */ jsx(SelectPrimitive.Group, {
2623
+ "data-slot": "select-group",
2624
+ ...props
2625
+ });
2626
+ };
2627
+ const SelectValue$1 = ({ ...props }) => {
2628
+ return /* @__PURE__ */ jsx(SelectPrimitive.Value, {
2629
+ "data-slot": "select-value",
2630
+ ...props
2631
+ });
2632
+ };
2633
+ const SelectTrigger$1 = ({ className, children, ...props }) => {
2634
+ return /* @__PURE__ */ jsxs(SelectPrimitive.Trigger, {
2635
+ "data-slot": "select-trigger",
2636
+ className: cn("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive rounded-md border bg-transparent py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "flex h-auto min-h-10 w-full items-center justify-between px-3 text-sm font-medium", className),
2637
+ ...props,
2638
+ children: [children, /* @__PURE__ */ jsx(SelectPrimitive.Icon, {
2639
+ asChild: true,
2640
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
2641
+ })]
2642
+ });
2643
+ };
2644
+ const SelectContent$1 = ({ className, children, position = "popper", ...props }) => {
2645
+ return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(SelectPrimitive.Content, {
2646
+ "data-slot": "select-content",
2647
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", "w-[var(--radix-select-trigger-width)]", className),
2648
+ position,
2649
+ ...props,
2650
+ children: [
2651
+ /* @__PURE__ */ jsx(SelectScrollUpButton$1, {}),
2652
+ /* @__PURE__ */ jsx(SelectPrimitive.Viewport, {
2653
+ className: cn("p-1", position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
2654
+ children
2655
+ }),
2656
+ /* @__PURE__ */ jsx(SelectScrollDownButton$1, {})
2657
+ ]
2658
+ }) });
2659
+ };
2660
+ const SelectLabel$1 = ({ className, ...props }) => {
2661
+ return /* @__PURE__ */ jsx(SelectPrimitive.Label, {
2662
+ "data-slot": "select-label",
2663
+ className: cn("px-2 py-1.5 text-sm font-medium", className),
2664
+ ...props
2665
+ });
2666
+ };
2667
+ const SelectItem$1 = ({ className, children, ...props }) => {
2668
+ return /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
2669
+ "data-slot": "select-item",
2670
+ className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
2671
+ ...props,
2672
+ children: [/* @__PURE__ */ jsx("span", {
2673
+ className: "absolute right-2 flex size-3.5 items-center justify-center",
2674
+ children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
2675
+ }), /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })]
2676
+ });
2677
+ };
2678
+ const SelectSeparator$1 = ({ className, ...props }) => {
2679
+ return /* @__PURE__ */ jsx(SelectPrimitive.Separator, {
2680
+ "data-slot": "select-separator",
2681
+ className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
2682
+ ...props
2683
+ });
2684
+ };
2685
+ const SelectScrollUpButton$1 = ({ className, ...props }) => {
2686
+ return /* @__PURE__ */ jsx(SelectPrimitive.ScrollUpButton, {
2687
+ "data-slot": "select-scroll-up-button",
2688
+ className: cn("flex cursor-default items-center justify-center py-1", className),
2689
+ ...props,
2690
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
2691
+ });
2692
+ };
2693
+ const SelectScrollDownButton$1 = ({ className, ...props }) => {
2694
+ return /* @__PURE__ */ jsx(SelectPrimitive.ScrollDownButton, {
2695
+ "data-slot": "select-scroll-down-button",
2696
+ className: cn("flex cursor-default items-center justify-center py-1", className),
2697
+ ...props,
2698
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
2699
+ });
2700
+ };
838
2701
 
839
2702
  //#endregion
840
2703
  //#region src/components/base/select/select.tsx
841
- const Select$1 = Select;
842
- const SelectValue$1 = SelectValue;
843
- function SelectGroup$1({ ref, className, ...props }) {
844
- return /* @__PURE__ */ jsx(SelectGroup, {
2704
+ const Select = Select$1;
2705
+ const SelectValue = SelectValue$1;
2706
+ function SelectGroup({ ref, className, ...props }) {
2707
+ return /* @__PURE__ */ jsx(SelectGroup$1, {
845
2708
  ref,
846
- className: cn(className),
2709
+ className: cn$1(className),
847
2710
  ...props
848
2711
  });
849
2712
  }
850
- SelectGroup$1.displayName = "SelectGroup";
851
- function SelectTrigger$1({ ref, className, ...props }) {
852
- return /* @__PURE__ */ jsx(SelectTrigger, {
2713
+ SelectGroup.displayName = "SelectGroup";
2714
+ function SelectTrigger({ ref, className, ...props }) {
2715
+ return /* @__PURE__ */ jsx(SelectTrigger$1, {
853
2716
  ref,
854
- className: cn("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
2717
+ className: cn$1("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
855
2718
  ...props
856
2719
  });
857
2720
  }
858
- SelectTrigger$1.displayName = "SelectTrigger";
859
- function SelectContent$1({ ref, className, ...props }) {
860
- return /* @__PURE__ */ jsx(SelectContent, {
2721
+ SelectTrigger.displayName = "SelectTrigger";
2722
+ function SelectContent({ ref, className, ...props }) {
2723
+ return /* @__PURE__ */ jsx(SelectContent$1, {
861
2724
  ref,
862
- className: cn(className),
2725
+ className: cn$1(className),
863
2726
  ...props
864
2727
  });
865
2728
  }
866
- SelectContent$1.displayName = "SelectContent";
867
- function SelectLabel$1({ ref, className, ...props }) {
868
- return /* @__PURE__ */ jsx(SelectLabel, {
2729
+ SelectContent.displayName = "SelectContent";
2730
+ function SelectLabel({ ref, className, ...props }) {
2731
+ return /* @__PURE__ */ jsx(SelectLabel$1, {
869
2732
  ref,
870
- className: cn(className),
2733
+ className: cn$1(className),
871
2734
  ...props
872
2735
  });
873
2736
  }
874
- SelectLabel$1.displayName = "SelectLabel";
875
- function SelectItem$1({ ref, className, ...props }) {
876
- return /* @__PURE__ */ jsx(SelectItem, {
2737
+ SelectLabel.displayName = "SelectLabel";
2738
+ function SelectItem({ ref, className, ...props }) {
2739
+ return /* @__PURE__ */ jsx(SelectItem$1, {
877
2740
  ref,
878
- className: cn(className),
2741
+ className: cn$1(className),
879
2742
  ...props
880
2743
  });
881
2744
  }
882
- SelectItem$1.displayName = "SelectItem";
883
- function SelectSeparator$1({ ref, className, ...props }) {
884
- return /* @__PURE__ */ jsx(SelectSeparator, {
2745
+ SelectItem.displayName = "SelectItem";
2746
+ function SelectSeparator({ ref, className, ...props }) {
2747
+ return /* @__PURE__ */ jsx(SelectSeparator$1, {
885
2748
  ref,
886
- className: cn(className),
2749
+ className: cn$1(className),
887
2750
  ...props
888
2751
  });
889
2752
  }
890
- SelectSeparator$1.displayName = "SelectSeparator";
891
- function SelectScrollUpButton$1({ ref, className, ...props }) {
892
- return /* @__PURE__ */ jsx(SelectScrollUpButton, {
2753
+ SelectSeparator.displayName = "SelectSeparator";
2754
+ function SelectScrollUpButton({ ref, className, ...props }) {
2755
+ return /* @__PURE__ */ jsx(SelectScrollUpButton$1, {
893
2756
  ref,
894
- className: cn(className),
2757
+ className: cn$1(className),
895
2758
  ...props
896
2759
  });
897
2760
  }
898
- SelectScrollUpButton$1.displayName = "SelectScrollUpButton";
899
- function SelectScrollDownButton$1({ ref, className, ...props }) {
900
- return /* @__PURE__ */ jsx(SelectScrollDownButton, {
2761
+ SelectScrollUpButton.displayName = "SelectScrollUpButton";
2762
+ function SelectScrollDownButton({ ref, className, ...props }) {
2763
+ return /* @__PURE__ */ jsx(SelectScrollDownButton$1, {
901
2764
  ref,
902
- className: cn(className),
2765
+ className: cn$1(className),
903
2766
  ...props
904
2767
  });
905
2768
  }
906
- SelectScrollDownButton$1.displayName = "SelectScrollDownButton";
2769
+ SelectScrollDownButton.displayName = "SelectScrollDownButton";
2770
+
2771
+ //#endregion
2772
+ //#region ../shadcn/ui/sheet.tsx
2773
+ const Sheet$1 = ({ ...props }) => {
2774
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
2775
+ "data-slot": "sheet",
2776
+ ...props
2777
+ });
2778
+ };
2779
+ const SheetTrigger = ({ ...props }) => {
2780
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
2781
+ "data-slot": "sheet-trigger",
2782
+ ...props
2783
+ });
2784
+ };
2785
+ const SheetPortal = ({ ...props }) => {
2786
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
2787
+ "data-slot": "sheet-portal",
2788
+ ...props
2789
+ });
2790
+ };
2791
+ const SheetOverlay$1 = ({ className, ...props }) => {
2792
+ return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
2793
+ "data-slot": "sheet-overlay",
2794
+ className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", className),
2795
+ ...props
2796
+ });
2797
+ };
2798
+ const SheetContent$1 = ({ className, children, side = "right", ...props }) => {
2799
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay$1, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
2800
+ "data-slot": "sheet-content",
2801
+ className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
2802
+ ...props,
2803
+ children: [children, /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
2804
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2805
+ children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
2806
+ className: "sr-only",
2807
+ children: "Close"
2808
+ })]
2809
+ })]
2810
+ })] });
2811
+ };
2812
+ const SheetHeader = ({ className, ...props }) => {
2813
+ return /* @__PURE__ */ jsx("div", {
2814
+ "data-slot": "sheet-header",
2815
+ className: cn("flex flex-col gap-1.5 p-4", className),
2816
+ ...props
2817
+ });
2818
+ };
2819
+ const SheetFooter = ({ className, ...props }) => {
2820
+ return /* @__PURE__ */ jsx("div", {
2821
+ "data-slot": "sheet-footer",
2822
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
2823
+ ...props
2824
+ });
2825
+ };
2826
+ const SheetTitle = ({ className, ...props }) => {
2827
+ return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
2828
+ "data-slot": "sheet-title",
2829
+ className: cn("text-foreground font-semibold", className),
2830
+ ...props
2831
+ });
2832
+ };
2833
+ const SheetDescription = ({ className, ...props }) => {
2834
+ return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
2835
+ "data-slot": "sheet-description",
2836
+ className: cn("text-muted-foreground text-sm", className),
2837
+ ...props
2838
+ });
2839
+ };
907
2840
 
908
2841
  //#endregion
909
2842
  //#region src/components/base/sheet/sheet.tsx
@@ -911,16 +2844,16 @@ const SheetClose = DialogPrimitive.Close;
911
2844
  function SheetOverlay({ className, ...props }) {
912
2845
  return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
913
2846
  "data-slot": "sheet-overlay",
914
- className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-dialog-overlay/50 fixed inset-0 z-50 backdrop-blur-[2px]", className),
2847
+ className: cn$1("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-dialog-overlay/50 fixed inset-0 z-50 backdrop-blur-[2px]", className),
915
2848
  ...props
916
2849
  });
917
2850
  }
918
- function SheetContent$1({ className, children, side = "right", ...props }) {
2851
+ function SheetContent({ className, children, side = "right", ...props }) {
919
2852
  return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, {
920
2853
  "data-slot": "sheet-portal",
921
2854
  children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
922
2855
  "data-slot": "sheet-content",
923
- className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
2856
+ className: cn$1("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
924
2857
  ...props,
925
2858
  children: [children, /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
926
2859
  className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
@@ -932,26 +2865,112 @@ function SheetContent$1({ className, children, side = "right", ...props }) {
932
2865
  })]
933
2866
  });
934
2867
  }
935
- const Sheet$1 = Object.assign(Sheet, {
2868
+ const Sheet = Object.assign(Sheet$1, {
936
2869
  Trigger: SheetTrigger,
937
- Content: SheetContent$1,
2870
+ Content: SheetContent,
938
2871
  Close: SheetClose,
939
- Header: SheetHeader$1,
2872
+ Header: SheetHeader,
940
2873
  Footer: SheetFooter,
941
- Title: SheetTitle$1,
942
- Description: SheetDescription$1
2874
+ Title: SheetTitle,
2875
+ Description: SheetDescription
943
2876
  });
944
2877
 
2878
+ //#endregion
2879
+ //#region ../shadcn/ui/skeleton.tsx
2880
+ function Skeleton({ className, ...props }) {
2881
+ return /* @__PURE__ */ jsx("div", {
2882
+ className: cn("bg-muted animate-pulse rounded-md", className),
2883
+ ...props
2884
+ });
2885
+ }
2886
+
2887
+ //#endregion
2888
+ //#region ../shadcn/ui/switch.tsx
2889
+ function Switch$1({ className, ...props }) {
2890
+ return /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
2891
+ "data-slot": "switch",
2892
+ className: cn("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className),
2893
+ ...props,
2894
+ children: /* @__PURE__ */ jsx(SwitchPrimitive.Thumb, {
2895
+ "data-slot": "switch-thumb",
2896
+ className: cn("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")
2897
+ })
2898
+ });
2899
+ }
2900
+
945
2901
  //#endregion
946
2902
  //#region src/components/base/switch/switch.tsx
947
- function Switch$1({ ref, className, ...props }) {
948
- return /* @__PURE__ */ jsx(Switch, {
2903
+ function Switch({ ref, className, ...props }) {
2904
+ return /* @__PURE__ */ jsx(Switch$1, {
949
2905
  ref,
950
- className: cn(className),
2906
+ className: cn$1(className),
951
2907
  ...props
952
2908
  });
953
2909
  }
954
- Switch$1.displayName = "Switch";
2910
+ Switch.displayName = "Switch";
2911
+
2912
+ //#endregion
2913
+ //#region ../shadcn/ui/table.tsx
2914
+ const Table = ({ className, ...props }) => {
2915
+ return /* @__PURE__ */ jsx("div", {
2916
+ "data-slot": "table-container",
2917
+ className: "relative w-full overflow-x-auto",
2918
+ children: /* @__PURE__ */ jsx("table", {
2919
+ "data-slot": "table",
2920
+ className: cn("w-full caption-bottom text-sm", className),
2921
+ ...props
2922
+ })
2923
+ });
2924
+ };
2925
+ const TableHeader = ({ className, ...props }) => {
2926
+ return /* @__PURE__ */ jsx("thead", {
2927
+ "data-slot": "table-header",
2928
+ className: cn("[&_tr]:border-b", className),
2929
+ ...props
2930
+ });
2931
+ };
2932
+ const TableBody = ({ className, ...props }) => {
2933
+ return /* @__PURE__ */ jsx("tbody", {
2934
+ "data-slot": "table-body",
2935
+ className: cn("[&_tr:last-child]:border-0", className),
2936
+ ...props
2937
+ });
2938
+ };
2939
+ const TableFooter = ({ className, ...props }) => {
2940
+ return /* @__PURE__ */ jsx("tfoot", {
2941
+ "data-slot": "table-footer",
2942
+ className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
2943
+ ...props
2944
+ });
2945
+ };
2946
+ const TableRow = ({ className, ...props }) => {
2947
+ return /* @__PURE__ */ jsx("tr", {
2948
+ "data-slot": "table-row",
2949
+ className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className),
2950
+ ...props
2951
+ });
2952
+ };
2953
+ const TableHead = ({ className, ...props }) => {
2954
+ return /* @__PURE__ */ jsx("th", {
2955
+ "data-slot": "table-head",
2956
+ className: cn("text-muted-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
2957
+ ...props
2958
+ });
2959
+ };
2960
+ const TableCell = ({ className, ...props }) => {
2961
+ return /* @__PURE__ */ jsx("td", {
2962
+ "data-slot": "table-cell",
2963
+ className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
2964
+ ...props
2965
+ });
2966
+ };
2967
+ const TableCaption = ({ className, ...props }) => {
2968
+ return /* @__PURE__ */ jsx("caption", {
2969
+ "data-slot": "table-caption",
2970
+ className: cn("text-muted-foreground mt-4 text-sm", className),
2971
+ ...props
2972
+ });
2973
+ };
955
2974
 
956
2975
  //#endregion
957
2976
  //#region src/components/base/tabs/tabs.tsx
@@ -963,25 +2982,25 @@ Switch$1.displayName = "Switch";
963
2982
  */
964
2983
  function Tabs({ className, ...props }) {
965
2984
  return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
966
- className: cn("flex flex-col gap-2", className),
2985
+ className: cn$1("flex flex-col gap-2", className),
967
2986
  ...props
968
2987
  });
969
2988
  }
970
2989
  function TabsList({ className, ...props }) {
971
2990
  return /* @__PURE__ */ jsx(TabsPrimitive.List, {
972
- className: cn("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1", className),
2991
+ className: cn$1("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1", className),
973
2992
  ...props
974
2993
  });
975
2994
  }
976
2995
  function TabsTrigger({ className, ...props }) {
977
2996
  return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
978
- className: cn("data-[state=active]:bg-background dark:data-[state=active]:text-foreground data-[state=active]:text-foreground dark:hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
2997
+ className: cn$1("data-[state=active]:bg-background dark:data-[state=active]:text-foreground data-[state=active]:text-foreground dark:hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
979
2998
  ...props
980
2999
  });
981
3000
  }
982
3001
  function TabsContent({ className, ...props }) {
983
3002
  return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
984
- className: cn("flex-1 outline-none", className),
3003
+ className: cn$1("flex-1 outline-none", className),
985
3004
  ...props
986
3005
  });
987
3006
  }
@@ -1001,40 +3020,71 @@ function TabsLinkTrigger({ value, href, linkComponent: LinkComp = "a", children,
1001
3020
 
1002
3021
  //#endregion
1003
3022
  //#region src/components/base/textarea/textarea.tsx
1004
- function Textarea$1({ ref, className, ...props }) {
1005
- return /* @__PURE__ */ jsx(Textarea, {
3023
+ function Textarea({ ref, className, ...props }) {
3024
+ return /* @__PURE__ */ jsx(Textarea$1, {
1006
3025
  ref,
1007
- className: cn("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
3026
+ className: cn$1("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
1008
3027
  ...props
1009
3028
  });
1010
3029
  }
1011
- Textarea$1.displayName = "Textarea";
3030
+ Textarea.displayName = "Textarea";
3031
+
3032
+ //#endregion
3033
+ //#region ../shadcn/ui/tooltip.tsx
3034
+ const TooltipProvider = ({ delayDuration = 0, ...props }) => {
3035
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, {
3036
+ "data-slot": "tooltip-provider",
3037
+ delayDuration,
3038
+ ...props
3039
+ });
3040
+ };
3041
+ const Tooltip$1 = ({ ...props }) => {
3042
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, {
3043
+ "data-slot": "tooltip",
3044
+ ...props
3045
+ }) });
3046
+ };
3047
+ const TooltipTrigger = ({ ...props }) => {
3048
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, {
3049
+ "data-slot": "tooltip-trigger",
3050
+ ...props
3051
+ });
3052
+ };
3053
+ const TooltipContent$1 = ({ className, sideOffset = 0, children, ...props }) => {
3054
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(TooltipPrimitive.Content, {
3055
+ "data-slot": "tooltip-content",
3056
+ sideOffset,
3057
+ className: cn("tooltip-content", "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", className),
3058
+ ...props,
3059
+ children: [children, /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
3060
+ }) });
3061
+ };
1012
3062
 
1013
3063
  //#endregion
1014
3064
  //#region src/components/base/tooltip/tooltip.tsx
1015
- function TooltipContent$1({ className, arrowClassName, sideOffset = 0, children, ...props }) {
1016
- return /* @__PURE__ */ jsx(TooltipPrimitiveRadix.Portal, { children: /* @__PURE__ */ jsxs(TooltipPrimitiveRadix.Content, {
3065
+ function TooltipContent({ className, arrowClassName, sideOffset = 0, children, ...props }) {
3066
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(TooltipPrimitive.Content, {
1017
3067
  "data-slot": "tooltip-content",
1018
3068
  sideOffset,
1019
- className: cn("tooltip-content", "bg-secondary text-secondary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", className),
3069
+ className: cn$1("tooltip-content", "bg-secondary text-secondary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", className),
1020
3070
  ...props,
1021
- children: [children, /* @__PURE__ */ jsx(TooltipPrimitiveRadix.Arrow, {
1022
- className: cn("fill-secondary -my-px border-none drop-shadow-[0_1px_0_secondary]", arrowClassName),
3071
+ children: [children, /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, {
3072
+ className: cn$1("fill-secondary -my-px border-none drop-shadow-[0_1px_0_secondary]", arrowClassName),
1023
3073
  width: 12,
1024
3074
  height: 7,
1025
3075
  "aria-hidden": "true"
1026
3076
  })]
1027
3077
  }) });
1028
3078
  }
1029
- function Tooltip$1({ message, children, delayDuration = 200, side, align, sideOffset, hidden, open, onOpenChange, contentClassName, arrowClassName }) {
1030
- return /* @__PURE__ */ jsxs(Tooltip, {
3079
+ function Tooltip({ message, children, delayDuration = 200, side, align, sideOffset, hidden, open, onOpenChange, contentClassName, arrowClassName }) {
3080
+ return /* @__PURE__ */ jsxs(Tooltip$1, {
1031
3081
  delayDuration,
1032
3082
  open,
1033
3083
  onOpenChange,
1034
3084
  children: [/* @__PURE__ */ jsx(TooltipTrigger, {
1035
3085
  asChild: true,
1036
3086
  children
1037
- }), /* @__PURE__ */ jsx(TooltipContent$1, {
3087
+ }), /* @__PURE__ */ jsx(TooltipContent, {
1038
3088
  side,
1039
3089
  align,
1040
3090
  sideOffset,
@@ -1046,11 +3096,208 @@ function Tooltip$1({ message, children, delayDuration = 200, side, align, sideOf
1046
3096
  });
1047
3097
  }
1048
3098
 
3099
+ //#endregion
3100
+ //#region src/components/base/typography/typography.tsx
3101
+ const titleVariants$1 = cva("font-semibold leading-tight tracking-tight", {
3102
+ variants: {
3103
+ level: {
3104
+ 1: "text-2xl md:text-3xl lg:text-4xl",
3105
+ 2: "text-xl md:text-2xl lg:text-3xl",
3106
+ 3: "text-lg md:text-xl lg:text-2xl",
3107
+ 4: "text-base md:text-lg lg:text-xl",
3108
+ 5: "text-sm md:text-base lg:text-lg",
3109
+ 6: "text-xs md:text-sm lg:text-base"
3110
+ },
3111
+ weight: {
3112
+ normal: "font-normal",
3113
+ medium: "font-medium",
3114
+ semibold: "font-semibold",
3115
+ bold: "font-bold",
3116
+ extrabold: "font-extrabold"
3117
+ },
3118
+ textColor: {
3119
+ default: "text-foreground",
3120
+ muted: "text-muted-foreground",
3121
+ primary: "text-primary",
3122
+ secondary: "text-secondary-foreground",
3123
+ destructive: "text-destructive",
3124
+ success: "text-green-600 dark:text-green-400",
3125
+ warning: "text-yellow-600 dark:text-yellow-400",
3126
+ info: "text-blue-600 dark:text-blue-400"
3127
+ }
3128
+ },
3129
+ defaultVariants: {
3130
+ level: 4,
3131
+ weight: "semibold",
3132
+ textColor: "default"
3133
+ }
3134
+ });
3135
+ const textVariants = cva("leading-relaxed", {
3136
+ variants: {
3137
+ size: {
3138
+ "xs": "text-xs",
3139
+ "sm": "text-sm",
3140
+ "base": "text-sm",
3141
+ "lg": "text-lg",
3142
+ "xl": "text-xl",
3143
+ "2xl": "text-2xl",
3144
+ "3xl": "text-3xl",
3145
+ "4xl": "text-4xl"
3146
+ },
3147
+ weight: {
3148
+ normal: "font-normal",
3149
+ medium: "font-medium",
3150
+ semibold: "font-semibold",
3151
+ bold: "font-bold",
3152
+ extrabold: "font-extrabold"
3153
+ },
3154
+ textColor: {
3155
+ default: "text-foreground",
3156
+ muted: "text-muted-foreground",
3157
+ primary: "text-primary",
3158
+ secondary: "text-secondary-foreground",
3159
+ destructive: "text-destructive",
3160
+ success: "text-green-600 dark:text-green-400",
3161
+ warning: "text-yellow-600 dark:text-yellow-400",
3162
+ info: "text-blue-600 dark:text-blue-400"
3163
+ },
3164
+ type: {
3165
+ default: "",
3166
+ code: "font-mono bg-muted px-1.5 py-0.5 rounded text-sm",
3167
+ mark: "bg-yellow-100 dark:bg-yellow-900/30 px-1.5 py-0.5 rounded",
3168
+ underline: "underline underline-offset-4",
3169
+ delete: "line-through",
3170
+ strong: "font-semibold",
3171
+ italic: "italic"
3172
+ }
3173
+ },
3174
+ defaultVariants: {
3175
+ size: "base",
3176
+ weight: "normal",
3177
+ textColor: "default",
3178
+ type: "default"
3179
+ }
3180
+ });
3181
+ const paragraphVariants = cva("leading-relaxed", {
3182
+ variants: {
3183
+ size: {
3184
+ xs: "text-xs",
3185
+ sm: "text-sm",
3186
+ base: "text-sm",
3187
+ lg: "text-lg",
3188
+ xl: "text-xl"
3189
+ },
3190
+ spacing: {
3191
+ tight: "leading-tight",
3192
+ normal: "leading-relaxed",
3193
+ loose: "leading-loose"
3194
+ }
3195
+ },
3196
+ defaultVariants: {
3197
+ size: "base",
3198
+ spacing: "normal"
3199
+ }
3200
+ });
3201
+ function Title$1({ className, level, weight, textColor, as, children, ...props }) {
3202
+ const Component = as ?? `h${level ?? 4}`;
3203
+ return React$1.createElement(Component, {
3204
+ className: cn$1(titleVariants$1({
3205
+ level,
3206
+ weight,
3207
+ textColor,
3208
+ className
3209
+ })),
3210
+ ...props
3211
+ }, children);
3212
+ }
3213
+ function Text({ className, size, weight, textColor, type, as = "span", copyable, ellipsis, mark, underline, delete: deleteProp, strong, italic, code, children, ...props }) {
3214
+ const resolvedType = code ? "code" : italic ? "italic" : strong ? "strong" : deleteProp ? "delete" : underline ? "underline" : mark ? "mark" : type;
3215
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [children, copyable && /* @__PURE__ */ jsx("button", {
3216
+ type: "button",
3217
+ "aria-label": "Copy text",
3218
+ className: "hover:bg-accent hover:text-accent-foreground ml-2 inline-flex size-4 items-center justify-center rounded-md text-sm font-medium transition-colors",
3219
+ onClick: () => {
3220
+ if (typeof children === "string") navigator.clipboard.writeText(children).catch(() => {});
3221
+ },
3222
+ title: "Copy text",
3223
+ children: /* @__PURE__ */ jsx(CopyIcon, {
3224
+ className: "size-3",
3225
+ "aria-hidden": "true"
3226
+ })
3227
+ })] });
3228
+ return React$1.createElement(as, {
3229
+ className: cn$1(textVariants({
3230
+ size,
3231
+ weight,
3232
+ textColor,
3233
+ type: resolvedType
3234
+ }), ellipsis && "truncate", className),
3235
+ ...props
3236
+ }, content);
3237
+ }
3238
+ function Paragraph({ className, size, spacing, as = "p", children, ...props }) {
3239
+ return React$1.createElement(as, {
3240
+ className: cn$1(paragraphVariants({
3241
+ size,
3242
+ spacing,
3243
+ className
3244
+ })),
3245
+ ...props
3246
+ }, children);
3247
+ }
3248
+ function Link({ className, children, href, target = "_self", rel, ...props }) {
3249
+ return /* @__PURE__ */ jsx("a", {
3250
+ href,
3251
+ target,
3252
+ rel: rel ?? (target === "_blank" ? "noopener noreferrer" : void 0),
3253
+ className: cn$1("text-primary focus-visible:ring-ring underline-offset-4 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", className),
3254
+ ...props,
3255
+ children
3256
+ });
3257
+ }
3258
+ function List({ className, as, listType = "unordered", children, ...props }) {
3259
+ const Component = as ?? (listType === "ordered" ? "ol" : "ul");
3260
+ return React$1.createElement(Component, {
3261
+ className: cn$1("space-y-2", listType === "ordered" ? "list-decimal list-inside" : "list-disc list-inside", className),
3262
+ ...props
3263
+ }, children);
3264
+ }
3265
+ function ListItem({ className, children, ...props }) {
3266
+ return /* @__PURE__ */ jsx("li", {
3267
+ className: cn$1("leading-relaxed", className),
3268
+ ...props,
3269
+ children
3270
+ });
3271
+ }
3272
+ function Blockquote({ className, children, ...props }) {
3273
+ return /* @__PURE__ */ jsx("blockquote", {
3274
+ className: cn$1("border-primary text-muted-foreground border-l-4 pl-4 italic", className),
3275
+ ...props,
3276
+ children
3277
+ });
3278
+ }
3279
+ function Code({ className, as = "code", children, ...props }) {
3280
+ if (as === "pre") return /* @__PURE__ */ jsx("pre", {
3281
+ className: cn$1("bg-muted relative overflow-x-auto rounded p-4 font-mono text-sm", className),
3282
+ ...props,
3283
+ children
3284
+ });
3285
+ return /* @__PURE__ */ jsx("code", {
3286
+ className: cn$1("bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm", className),
3287
+ ...props,
3288
+ children
3289
+ });
3290
+ }
3291
+
3292
+ //#endregion
3293
+ //#region ../shadcn/ui/visuallyhidden.tsx
3294
+ const VisuallyHidden$1 = { Root: VisuallyHidden };
3295
+
1049
3296
  //#endregion
1050
3297
  //#region src/components/features/loader-overlay/loader-overlay.tsx
1051
3298
  function LoaderOverlay({ message, className }) {
1052
3299
  return /* @__PURE__ */ jsxs("div", {
1053
- className: cn("bg-background/80 absolute inset-0 z-10 flex items-center justify-center gap-2 backdrop-blur-[1px]", className),
3300
+ className: cn$1("bg-background/80 absolute inset-0 z-10 flex items-center justify-center gap-2 backdrop-blur-[1px]", className),
1054
3301
  children: [/* @__PURE__ */ jsx(SpinnerIcon, { size: "sm" }), typeof message === "string" ? /* @__PURE__ */ jsx("span", {
1055
3302
  className: "text-sm font-medium",
1056
3303
  children: message
@@ -1085,7 +3332,7 @@ function Trigger({ ref, selectedOption, renderValue, placeholder, loading, disab
1085
3332
  role: "combobox",
1086
3333
  "aria-expanded": open,
1087
3334
  disabled: disabled || loading,
1088
- className: cn("text-input-foreground placeholder:text-input-placeholder", "border-input-border bg-input-background/50 relative flex h-10 w-full items-center justify-between rounded-lg border px-3 py-2 text-left text-sm transition-all", "focus-visible:border-input-focus-border focus-visible:shadow-(--input-focus-shadow)", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "aria-invalid:border-destructive", (disabled || loading) && "cursor-not-allowed opacity-50", className),
3335
+ className: cn$1("text-input-foreground placeholder:text-input-placeholder", "border-input-border bg-input-background/50 relative flex h-10 w-full items-center justify-between rounded-lg border px-3 py-2 text-left text-sm transition-all", "focus-visible:border-input-focus-border focus-visible:shadow-(--input-focus-shadow)", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "aria-invalid:border-destructive", (disabled || loading) && "cursor-not-allowed opacity-50", className),
1089
3336
  ...rest,
1090
3337
  children: [
1091
3338
  loading && /* @__PURE__ */ jsx(LoaderOverlay, {}),
@@ -1158,7 +3405,7 @@ function VirtualizedOptions({ options, selectedValue, onSelect, renderOption, it
1158
3405
  ]);
1159
3406
  return /* @__PURE__ */ jsx("div", {
1160
3407
  ref: parentRef,
1161
- className: cn("max-h-[200px] overflow-auto", listClassName),
3408
+ className: cn$1("max-h-[200px] overflow-auto", listClassName),
1162
3409
  children: /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx("div", {
1163
3410
  style: { height: `${virtualizer.getTotalSize()}px` },
1164
3411
  className: "relative w-full",
@@ -1261,7 +3508,7 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
1261
3508
  if (isExternalSearch) onSearchChange?.(val);
1262
3509
  }, [isExternalSearch, onSearchChange]);
1263
3510
  return /* @__PURE__ */ jsxs("div", {
1264
- className: cn("relative", className),
3511
+ className: cn$1("relative", className),
1265
3512
  children: [/* @__PURE__ */ jsxs(Popover, {
1266
3513
  open,
1267
3514
  onOpenChange: handleOpenChange,
@@ -1279,9 +3526,9 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
1279
3526
  className: triggerClassName
1280
3527
  })
1281
3528
  }), /* @__PURE__ */ jsx(PopoverContent, {
1282
- className: cn("popover-content-width-full p-0", contentClassName),
3529
+ className: cn$1("popover-content-width-full p-0", contentClassName),
1283
3530
  align: "start",
1284
- children: /* @__PURE__ */ jsxs(Command, {
3531
+ children: /* @__PURE__ */ jsxs(Command$1, {
1285
3532
  shouldFilter: !isExternalSearch && !creatable,
1286
3533
  defaultValue: value,
1287
3534
  children: [
@@ -1294,7 +3541,7 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
1294
3541
  onValueChange: handleSearchChange
1295
3542
  }),
1296
3543
  /* @__PURE__ */ jsxs(CommandList, {
1297
- className: cn(!virtualize && "max-h-[300px]", listClassName),
3544
+ className: cn$1(!virtualize && "max-h-[300px]", listClassName),
1298
3545
  children: [
1299
3546
  !showCreatableItem && /* @__PURE__ */ jsx(CommandEmpty, { children: typeof emptyContent === "string" ? /* @__PURE__ */ jsx("span", {
1300
3547
  className: "text-muted-foreground text-xs",
@@ -1343,6 +3590,30 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
1343
3590
  }
1344
3591
  Autocomplete.displayName = "Autocomplete";
1345
3592
 
3593
+ //#endregion
3594
+ //#region ../shadcn/ui/avatar.tsx
3595
+ const Avatar = ({ className, ...props }) => {
3596
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
3597
+ "data-slot": "avatar",
3598
+ className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className),
3599
+ ...props
3600
+ });
3601
+ };
3602
+ const AvatarImage = ({ className, ...props }) => {
3603
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
3604
+ "data-slot": "avatar-image",
3605
+ className: cn("aspect-square size-full", className),
3606
+ ...props
3607
+ });
3608
+ };
3609
+ const AvatarFallback = ({ className, ...props }) => {
3610
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
3611
+ "data-slot": "avatar-fallback",
3612
+ className: cn("bg-muted flex size-full items-center justify-center rounded-full", className),
3613
+ ...props
3614
+ });
3615
+ };
3616
+
1346
3617
  //#endregion
1347
3618
  //#region src/components/features/avatar-stack/avatar-stack.tsx
1348
3619
  const avatarStackVariants = cva("flex", {
@@ -1367,23 +3638,23 @@ function AvatarStack({ className, orientation, avatars, spacing, maxAvatarsAmoun
1367
3638
  const shownAvatars = avatars.slice(0, maxAvatarsAmount);
1368
3639
  const hiddenAvatars = avatars.slice(maxAvatarsAmount);
1369
3640
  return /* @__PURE__ */ jsxs("div", {
1370
- className: cn(avatarStackVariants({
3641
+ className: cn$1(avatarStackVariants({
1371
3642
  orientation,
1372
3643
  spacing
1373
3644
  }), className, orientation === "horizontal" ? "-space-x-0" : "-space-y-0"),
1374
3645
  ...props,
1375
- children: [shownAvatars.map(({ name, image }, index) => /* @__PURE__ */ jsx(Tooltip$1, {
3646
+ children: [shownAvatars.map(({ name, image }, index) => /* @__PURE__ */ jsx(Tooltip, {
1376
3647
  message: name,
1377
3648
  delayDuration: 300,
1378
3649
  children: /* @__PURE__ */ jsxs(Avatar, {
1379
- className: cn(avatarStackVariants(), "hover:z-10", avatarClassName),
3650
+ className: cn$1(avatarStackVariants(), "hover:z-10", avatarClassName),
1380
3651
  children: [/* @__PURE__ */ jsx(AvatarImage, { src: image }), /* @__PURE__ */ jsx(AvatarFallback, { children: name?.split(" ")?.map((word) => word[0])?.join("")?.toUpperCase() })]
1381
3652
  })
1382
- }, `${image}-${index + 1}`)), hiddenAvatars.length ? /* @__PURE__ */ jsx(Tooltip$1, {
3653
+ }, `${image}-${index + 1}`)), hiddenAvatars.length ? /* @__PURE__ */ jsx(Tooltip, {
1383
3654
  message: /* @__PURE__ */ jsx(Fragment$1, { children: hiddenAvatars.map(({ name }, index) => /* @__PURE__ */ jsx("p", { children: name }, `${name}-${index + 1}`)) }),
1384
3655
  delayDuration: 300,
1385
3656
  children: /* @__PURE__ */ jsx(Avatar, {
1386
- className: cn(avatarClassName),
3657
+ className: cn$1(avatarClassName),
1387
3658
  children: /* @__PURE__ */ jsxs(AvatarFallback, { children: ["+", avatars.length - shownAvatars.length] })
1388
3659
  }, "Excesive avatars")
1389
3660
  }) : null]
@@ -1809,7 +4080,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1809
4080
  id: "date",
1810
4081
  ref,
1811
4082
  ...props,
1812
- className: cn("w-full", triggerClassName, multiSelectVariants({
4083
+ className: cn$1("w-full", triggerClassName, multiSelectVariants({
1813
4084
  variant,
1814
4085
  className
1815
4086
  })),
@@ -1822,7 +4093,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1822
4093
  children: [/* @__PURE__ */ jsx(CalendarIcon, { className: "text-muted-foreground h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: date?.from ? date.to ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
1823
4094
  /* @__PURE__ */ jsx("span", {
1824
4095
  id: `firstDay-${id}`,
1825
- className: cn("date-part", highlightedPart === "firstDay" && "font-bold underline"),
4096
+ className: cn$1("date-part", highlightedPart === "firstDay" && "font-bold underline"),
1826
4097
  onMouseOver: () => handleMouseOver("firstDay"),
1827
4098
  onMouseLeave: handleMouseLeave,
1828
4099
  children: formatWithTz(date.from, "dd")
@@ -1830,7 +4101,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1830
4101
  " ",
1831
4102
  /* @__PURE__ */ jsx("span", {
1832
4103
  id: `firstMonth-${id}`,
1833
- className: cn("date-part", highlightedPart === "firstMonth" && "font-bold underline"),
4104
+ className: cn$1("date-part", highlightedPart === "firstMonth" && "font-bold underline"),
1834
4105
  onMouseOver: () => handleMouseOver("firstMonth"),
1835
4106
  onMouseLeave: handleMouseLeave,
1836
4107
  children: formatWithTz(date.from, "LLL")
@@ -1839,7 +4110,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1839
4110
  " ",
1840
4111
  /* @__PURE__ */ jsx("span", {
1841
4112
  id: `firstYear-${id}`,
1842
- className: cn("date-part", highlightedPart === "firstYear" && "font-bold underline"),
4113
+ className: cn$1("date-part", highlightedPart === "firstYear" && "font-bold underline"),
1843
4114
  onMouseOver: () => handleMouseOver("firstYear"),
1844
4115
  onMouseLeave: handleMouseLeave,
1845
4116
  children: formatWithTz(date.from, "y")
@@ -1848,7 +4119,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1848
4119
  " - ",
1849
4120
  /* @__PURE__ */ jsx("span", {
1850
4121
  id: `secondDay-${id}`,
1851
- className: cn("date-part", highlightedPart === "secondDay" && "font-bold underline"),
4122
+ className: cn$1("date-part", highlightedPart === "secondDay" && "font-bold underline"),
1852
4123
  onMouseOver: () => handleMouseOver("secondDay"),
1853
4124
  onMouseLeave: handleMouseLeave,
1854
4125
  children: formatWithTz(date.to, "dd")
@@ -1856,7 +4127,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1856
4127
  " ",
1857
4128
  /* @__PURE__ */ jsx("span", {
1858
4129
  id: `secondMonth-${id}`,
1859
- className: cn("date-part", highlightedPart === "secondMonth" && "font-bold underline"),
4130
+ className: cn$1("date-part", highlightedPart === "secondMonth" && "font-bold underline"),
1860
4131
  onMouseOver: () => handleMouseOver("secondMonth"),
1861
4132
  onMouseLeave: handleMouseLeave,
1862
4133
  children: formatWithTz(date.to, "LLL")
@@ -1865,7 +4136,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1865
4136
  " ",
1866
4137
  /* @__PURE__ */ jsx("span", {
1867
4138
  id: `secondYear-${id}`,
1868
- className: cn("date-part", highlightedPart === "secondYear" && "font-bold underline"),
4139
+ className: cn$1("date-part", highlightedPart === "secondYear" && "font-bold underline"),
1869
4140
  onMouseOver: () => handleMouseOver("secondYear"),
1870
4141
  onMouseLeave: handleMouseLeave,
1871
4142
  children: formatWithTz(date.to, "y")
@@ -1874,7 +4145,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1874
4145
  ] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
1875
4146
  /* @__PURE__ */ jsx("span", {
1876
4147
  id: "day",
1877
- className: cn("date-part", highlightedPart === "day" && "font-bold underline"),
4148
+ className: cn$1("date-part", highlightedPart === "day" && "font-bold underline"),
1878
4149
  onMouseOver: () => handleMouseOver("day"),
1879
4150
  onMouseLeave: handleMouseLeave,
1880
4151
  children: formatWithTz(date.from, "dd")
@@ -1882,7 +4153,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1882
4153
  " ",
1883
4154
  /* @__PURE__ */ jsx("span", {
1884
4155
  id: "month",
1885
- className: cn("date-part", highlightedPart === "month" && "font-bold underline"),
4156
+ className: cn$1("date-part", highlightedPart === "month" && "font-bold underline"),
1886
4157
  onMouseOver: () => handleMouseOver("month"),
1887
4158
  onMouseLeave: handleMouseLeave,
1888
4159
  children: formatWithTz(date.from, "LLL")
@@ -1891,7 +4162,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1891
4162
  " ",
1892
4163
  /* @__PURE__ */ jsx("span", {
1893
4164
  id: "year",
1894
- className: cn("date-part", highlightedPart === "year" && "font-bold underline"),
4165
+ className: cn$1("date-part", highlightedPart === "year" && "font-bold underline"),
1895
4166
  onMouseOver: () => handleMouseOver("year"),
1896
4167
  onMouseLeave: handleMouseLeave,
1897
4168
  children: formatWithTz(date.from, "y")
@@ -1927,7 +4198,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1927
4198
  children: dateRanges.map(({ key, label, start, end }) => /* @__PURE__ */ jsx(Button, {
1928
4199
  variant: "ghost",
1929
4200
  size: "sm",
1930
- className: cn("hover:bg-primary/90 hover:text-background justify-start", selectedRange === label && "bg-primary text-background hover:bg-primary/90 hover:text-background"),
4201
+ className: cn$1("hover:bg-primary/90 hover:text-background justify-start", selectedRange === label && "bg-primary text-background hover:bg-primary/90 hover:text-background"),
1931
4202
  onClick: () => {
1932
4203
  selectDateRange(start, end, label);
1933
4204
  setMonthFrom(start);
@@ -1944,58 +4215,58 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
1944
4215
  className: "flex items-center gap-4",
1945
4216
  children: [/* @__PURE__ */ jsxs("div", {
1946
4217
  className: "ml-3 flex gap-2",
1947
- children: [/* @__PURE__ */ jsxs(Select$1, {
4218
+ children: [/* @__PURE__ */ jsxs(Select, {
1948
4219
  onValueChange: (value) => {
1949
4220
  handleMonthChange(months.indexOf(value), "from");
1950
4221
  setSelectedRange(null);
1951
4222
  },
1952
4223
  value: monthFrom ? months[monthFrom.getMonth()] : void 0,
1953
- children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
4224
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
1954
4225
  className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
1955
- children: /* @__PURE__ */ jsx(SelectValue$1, { placeholder: "Month" })
1956
- }), /* @__PURE__ */ jsx(SelectContent$1, { children: months.map((month, idx) => /* @__PURE__ */ jsx(SelectItem$1, {
4226
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Month" })
4227
+ }), /* @__PURE__ */ jsx(SelectContent, { children: months.map((month, idx) => /* @__PURE__ */ jsx(SelectItem, {
1957
4228
  value: month,
1958
4229
  children: month
1959
4230
  }, idx)) })]
1960
- }), /* @__PURE__ */ jsxs(Select$1, {
4231
+ }), /* @__PURE__ */ jsxs(Select, {
1961
4232
  onValueChange: (value) => {
1962
4233
  handleYearChange(Number(value), "from");
1963
4234
  setSelectedRange(null);
1964
4235
  },
1965
4236
  value: yearFrom ? yearFrom.toString() : void 0,
1966
- children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
4237
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
1967
4238
  className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
1968
- children: /* @__PURE__ */ jsx(SelectValue$1, { placeholder: "Year" })
1969
- }), /* @__PURE__ */ jsx(SelectContent$1, { children: years.map((year, idx) => /* @__PURE__ */ jsx(SelectItem$1, {
4239
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Year" })
4240
+ }), /* @__PURE__ */ jsx(SelectContent, { children: years.map((year, idx) => /* @__PURE__ */ jsx(SelectItem, {
1970
4241
  value: year.toString(),
1971
4242
  children: year
1972
4243
  }, idx)) })]
1973
4244
  })]
1974
4245
  }), numberOfMonths === 2 && /* @__PURE__ */ jsxs("div", {
1975
4246
  className: "flex gap-2",
1976
- children: [/* @__PURE__ */ jsxs(Select$1, {
4247
+ children: [/* @__PURE__ */ jsxs(Select, {
1977
4248
  onValueChange: (value) => {
1978
4249
  handleMonthChange(months.indexOf(value), "to");
1979
4250
  setSelectedRange(null);
1980
4251
  },
1981
4252
  value: monthTo ? months[monthTo.getMonth()] : void 0,
1982
- children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
4253
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
1983
4254
  className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
1984
- children: /* @__PURE__ */ jsx(SelectValue$1, { placeholder: "Month" })
1985
- }), /* @__PURE__ */ jsx(SelectContent$1, { children: months.map((month, idx) => /* @__PURE__ */ jsx(SelectItem$1, {
4255
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Month" })
4256
+ }), /* @__PURE__ */ jsx(SelectContent, { children: months.map((month, idx) => /* @__PURE__ */ jsx(SelectItem, {
1986
4257
  value: month,
1987
4258
  children: month
1988
4259
  }, idx)) })]
1989
- }), /* @__PURE__ */ jsxs(Select$1, {
4260
+ }), /* @__PURE__ */ jsxs(Select, {
1990
4261
  onValueChange: (value) => {
1991
4262
  handleYearChange(Number(value), "to");
1992
4263
  setSelectedRange(null);
1993
4264
  },
1994
4265
  value: yearTo ? yearTo.toString() : void 0,
1995
- children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
4266
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
1996
4267
  className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
1997
- children: /* @__PURE__ */ jsx(SelectValue$1, { placeholder: "Year" })
1998
- }), /* @__PURE__ */ jsx(SelectContent$1, { children: years.map((year, idx) => /* @__PURE__ */ jsx(SelectItem$1, {
4268
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Year" })
4269
+ }), /* @__PURE__ */ jsx(SelectContent, { children: years.map((year, idx) => /* @__PURE__ */ jsx(SelectItem, {
1999
4270
  value: year.toString(),
2000
4271
  children: year
2001
4272
  }, idx)) })]
@@ -2061,7 +4332,7 @@ function DropdownMenuTrigger({ ...props }) {
2061
4332
  function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
2062
4333
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
2063
4334
  sideOffset,
2064
- className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
4335
+ className: cn$1("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
2065
4336
  ...props
2066
4337
  }) });
2067
4338
  }
@@ -2072,13 +4343,13 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
2072
4343
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
2073
4344
  "data-inset": inset,
2074
4345
  "data-variant": variant,
2075
- className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive-foreground data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/40 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:!text-destructive-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
4346
+ className: cn$1("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive-foreground data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/40 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:!text-destructive-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
2076
4347
  ...props
2077
4348
  });
2078
4349
  }
2079
4350
  function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
2080
4351
  return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
2081
- className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
4352
+ className: cn$1("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
2082
4353
  checked,
2083
4354
  ...props,
2084
4355
  children: [/* @__PURE__ */ jsx("span", {
@@ -2095,7 +4366,7 @@ function DropdownMenuRadioGroup({ ...props }) {
2095
4366
  }
2096
4367
  function DropdownMenuRadioItem({ className, children, ...props }) {
2097
4368
  return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
2098
- className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
4369
+ className: cn$1("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
2099
4370
  ...props,
2100
4371
  children: [/* @__PURE__ */ jsx("span", {
2101
4372
  className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
@@ -2109,19 +4380,19 @@ function DropdownMenuRadioItem({ className, children, ...props }) {
2109
4380
  function DropdownMenuLabel({ className, inset, ...props }) {
2110
4381
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
2111
4382
  "data-inset": inset,
2112
- className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
4383
+ className: cn$1("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
2113
4384
  ...props
2114
4385
  });
2115
4386
  }
2116
4387
  function DropdownMenuSeparator({ className, ...props }) {
2117
4388
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
2118
- className: cn("bg-border -mx-1 my-1 h-px", className),
4389
+ className: cn$1("bg-border -mx-1 my-1 h-px", className),
2119
4390
  ...props
2120
4391
  });
2121
4392
  }
2122
4393
  function DropdownMenuShortcut({ className, ...props }) {
2123
4394
  return /* @__PURE__ */ jsx("span", {
2124
- className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
4395
+ className: cn$1("text-muted-foreground ml-auto text-xs tracking-widest", className),
2125
4396
  ...props
2126
4397
  });
2127
4398
  }
@@ -2131,7 +4402,7 @@ function DropdownMenuSub({ ...props }) {
2131
4402
  function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
2132
4403
  return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, {
2133
4404
  "data-inset": inset,
2134
- className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className),
4405
+ className: cn$1("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className),
2135
4406
  ...props,
2136
4407
  children: [children, /* @__PURE__ */ jsx(Icon, {
2137
4408
  icon: ChevronRightIcon,
@@ -2141,7 +4412,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
2141
4412
  }
2142
4413
  function DropdownMenuSubContent({ className, ...props }) {
2143
4414
  return /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
2144
- className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
4415
+ className: cn$1("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
2145
4416
  ...props
2146
4417
  });
2147
4418
  }
@@ -2193,7 +4464,7 @@ function Dropzone({ accept, maxFiles = 1, maxSize, minSize, onDrop, onError, dis
2193
4464
  maxFiles
2194
4465
  },
2195
4466
  children: /* @__PURE__ */ jsxs(Button, {
2196
- className: cn("relative h-auto w-full flex-col overflow-hidden rounded-lg border border-dashed border-[#90969C99] bg-transparent p-9 text-base", isDragActive && "ring-ring ring-1 outline-none", className),
4467
+ className: cn$1("relative h-auto w-full flex-col overflow-hidden rounded-lg border border-dashed border-[#90969C99] bg-transparent p-9 text-base", isDragActive && "ring-ring ring-1 outline-none", className),
2197
4468
  disabled,
2198
4469
  type: "button",
2199
4470
  variant: "outline",
@@ -2221,7 +4492,7 @@ function DropzoneContent({ children, className, icon, label, description }) {
2221
4492
  if (children) return children;
2222
4493
  const renderedLabel = typeof label === "function" ? label(src) : label;
2223
4494
  return /* @__PURE__ */ jsxs("div", {
2224
- className: cn("flex flex-col items-center justify-center", className),
4495
+ className: cn$1("flex flex-col items-center justify-center", className),
2225
4496
  children: [
2226
4497
  icon ?? /* @__PURE__ */ jsx(Icon, {
2227
4498
  icon: UploadIcon,
@@ -2254,7 +4525,7 @@ function DropzoneEmptyState({ children, className, icon, label, description, sho
2254
4525
  else if (maxSize) caption += ` less than ${renderBytes(maxSize)}`;
2255
4526
  }
2256
4527
  return /* @__PURE__ */ jsxs("div", {
2257
- className: cn("flex flex-col items-center justify-center", className),
4528
+ className: cn$1("flex flex-col items-center justify-center", className),
2258
4529
  children: [
2259
4530
  icon ?? /* @__PURE__ */ jsx(Icon, {
2260
4531
  icon: UploadIcon,
@@ -2413,7 +4684,7 @@ function EmptyContent({ title = "No data found", subtitle, variant = "default",
2413
4684
  }, action.label);
2414
4685
  };
2415
4686
  return /* @__PURE__ */ jsxs("div", {
2416
- className: cn(containerVariants({
4687
+ className: cn$1(containerVariants({
2417
4688
  variant,
2418
4689
  size,
2419
4690
  orientation
@@ -2622,7 +4893,7 @@ function FormAutocomplete({ disabled, className, ...props }) {
2622
4893
  value: selectValue ?? "",
2623
4894
  onValueChange: control.change,
2624
4895
  disabled: isDisabled,
2625
- triggerClassName: cn(hasErrors && "border-destructive", props.triggerClassName),
4896
+ triggerClassName: cn$1(hasErrors && "border-destructive", props.triggerClassName),
2626
4897
  className
2627
4898
  });
2628
4899
  }
@@ -2702,8 +4973,8 @@ function FormCheckbox({ label, disabled, className }) {
2702
4973
  };
2703
4974
  const checkboxId = fieldMeta.id;
2704
4975
  return /* @__PURE__ */ jsxs("div", {
2705
- className: cn("flex items-center space-x-2", className),
2706
- children: [/* @__PURE__ */ jsx(Checkbox$1, {
4976
+ className: cn$1("flex items-center space-x-2", className),
4977
+ children: [/* @__PURE__ */ jsx(Checkbox, {
2707
4978
  id: checkboxId,
2708
4979
  name: fieldMeta.name,
2709
4980
  checked: isChecked,
@@ -2711,9 +4982,9 @@ function FormCheckbox({ label, disabled, className }) {
2711
4982
  disabled: isDisabled,
2712
4983
  "aria-invalid": hasErrors || void 0,
2713
4984
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0
2714
- }), label && /* @__PURE__ */ jsx(Label$1, {
4985
+ }), label && /* @__PURE__ */ jsx(Label, {
2715
4986
  htmlFor: checkboxId,
2716
- className: cn("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
4987
+ className: cn$1("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
2717
4988
  children: label
2718
4989
  })]
2719
4990
  });
@@ -2801,9 +5072,9 @@ function FormCopyBox({ variant = "default", className, contentClassName, buttonC
2801
5072
  });
2802
5073
  };
2803
5074
  return /* @__PURE__ */ jsxs("div", {
2804
- className: cn("group border-input flex h-10 w-full overflow-hidden rounded-lg border bg-[#F6F6F580] text-xs focus-within:outline-hidden", className),
5075
+ className: cn$1("group border-input flex h-10 w-full overflow-hidden rounded-lg border bg-[#F6F6F580] text-xs focus-within:outline-hidden", className),
2805
5076
  children: [/* @__PURE__ */ jsx("div", {
2806
- className: cn("flex w-full items-center overflow-hidden px-3 py-2 text-xs opacity-50", contentClassName),
5077
+ className: cn$1("flex w-full items-center overflow-hidden px-3 py-2 text-xs opacity-50", contentClassName),
2807
5078
  children: /* @__PURE__ */ jsx("span", {
2808
5079
  className: "truncate",
2809
5080
  children: String(value)
@@ -2812,14 +5083,14 @@ function FormCopyBox({ variant = "default", className, contentClassName, buttonC
2812
5083
  className: "flex items-center py-2 pr-3",
2813
5084
  children: variant === "icon-only" ? /* @__PURE__ */ jsx("button", {
2814
5085
  type: "button",
2815
- className: cn("text-muted-foreground hover:text-foreground flex size-7 items-center justify-center rounded-sm transition-colors", buttonClassName),
5086
+ className: cn$1("text-muted-foreground hover:text-foreground flex size-7 items-center justify-center rounded-sm transition-colors", buttonClassName),
2816
5087
  onClick: copyToClipboard,
2817
5088
  children: copied ? /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) : /* @__PURE__ */ jsx(CopyIcon, { className: "size-4" })
2818
5089
  }) : /* @__PURE__ */ jsxs(Button$1, {
2819
5090
  type: "quaternary",
2820
5091
  theme: "outline",
2821
5092
  size: "small",
2822
- className: cn("h-7 w-fit gap-1 px-2 text-xs", buttonClassName),
5093
+ className: cn$1("h-7 w-fit gap-1 px-2 text-xs", buttonClassName),
2823
5094
  onClick: copyToClipboard,
2824
5095
  children: [/* @__PURE__ */ jsx(CopyIcon, { className: "size-3!" }), copied ? "Copied" : "Copy"]
2825
5096
  })
@@ -2881,7 +5152,7 @@ function FormDescription({ children, className }) {
2881
5152
  const fieldContext = useOptionalFieldContext();
2882
5153
  return /* @__PURE__ */ jsx("p", {
2883
5154
  id: fieldContext ? `${fieldContext.id}-description` : void 0,
2884
- className: cn("text-muted-foreground text-xs text-wrap", className),
5155
+ className: cn$1("text-muted-foreground text-xs text-wrap", className),
2885
5156
  children
2886
5157
  });
2887
5158
  }
@@ -2974,10 +5245,10 @@ function FormDialog({ open, onOpenChange, defaultOpen, title, description, trigg
2974
5245
  const handleCancel = React$1.useCallback(() => {
2975
5246
  handleOpenChange(false);
2976
5247
  }, [handleOpenChange]);
2977
- return /* @__PURE__ */ jsxs(Dialog$1, {
5248
+ return /* @__PURE__ */ jsxs(Dialog, {
2978
5249
  open: isOpen,
2979
5250
  onOpenChange: handleOpenChange,
2980
- children: [trigger && /* @__PURE__ */ jsx(Dialog$1.Trigger, { children: trigger }), /* @__PURE__ */ jsx(Dialog$1.Content, {
5251
+ children: [trigger && /* @__PURE__ */ jsx(Dialog.Trigger, { children: trigger }), /* @__PURE__ */ jsx(Dialog.Content, {
2981
5252
  className,
2982
5253
  children: /* @__PURE__ */ jsx(Form.Root, {
2983
5254
  schema,
@@ -2988,20 +5259,20 @@ function FormDialog({ open, onOpenChange, defaultOpen, title, description, trigg
2988
5259
  mode: "onSubmit",
2989
5260
  formComponent,
2990
5261
  telemetry,
2991
- className: cn("space-y-0", formClassName),
5262
+ className: cn$1("space-y-0", formClassName),
2992
5263
  children: (renderProps) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
2993
- /* @__PURE__ */ jsx(Dialog$1.Header, {
5264
+ /* @__PURE__ */ jsx(Dialog.Header, {
2994
5265
  title,
2995
5266
  description,
2996
5267
  onClose: handleCancel,
2997
5268
  className: "border-b",
2998
5269
  descriptionClassName: "text-foreground/80"
2999
5270
  }),
3000
- /* @__PURE__ */ jsx(Dialog$1.Body, {
5271
+ /* @__PURE__ */ jsx(Dialog.Body, {
3001
5272
  className: "space-y-0",
3002
5273
  children: typeof children === "function" ? children(renderProps) : children
3003
5274
  }),
3004
- /* @__PURE__ */ jsxs(Dialog$1.Footer, {
5275
+ /* @__PURE__ */ jsxs(Dialog.Footer, {
3005
5276
  className: "border-t",
3006
5277
  children: [showCancel && /* @__PURE__ */ jsx(Form.Button, {
3007
5278
  type: "quaternary",
@@ -3051,7 +5322,7 @@ function FormError({ children, className }) {
3051
5322
  if (!errors || errors.length === 0) return null;
3052
5323
  if (typeof children === "function") return /* @__PURE__ */ jsx(Fragment$1, { children: children(errors) });
3053
5324
  return /* @__PURE__ */ jsx("ul", {
3054
- className: cn("text-destructive space-y-1 text-sm font-medium", errors.length > 1 && "list-disc pl-4", className),
5325
+ className: cn$1("text-destructive space-y-1 text-sm font-medium", errors.length > 1 && "list-disc pl-4", className),
3055
5326
  role: "alert",
3056
5327
  "aria-live": "polite",
3057
5328
  children: errors.map((error) => /* @__PURE__ */ jsx("li", {
@@ -3071,15 +5342,15 @@ function FieldLabel({ htmlFor, label, hasErrors, required, tooltip, className })
3071
5342
  const [isTooltipVisible, setIsTooltipVisible] = React$1.useState(false);
3072
5343
  return /* @__PURE__ */ jsxs("div", {
3073
5344
  className: "relative flex w-fit items-center space-x-2",
3074
- children: [/* @__PURE__ */ jsxs(Label$1, {
5345
+ children: [/* @__PURE__ */ jsxs(Label, {
3075
5346
  htmlFor,
3076
- className: cn("text-foreground/80 gap-0 text-xs font-semibold", hasErrors && "text-destructive", className),
5347
+ className: cn$1("text-foreground/80 gap-0 text-xs font-semibold", hasErrors && "text-destructive", className),
3077
5348
  children: [label, required && /* @__PURE__ */ jsx("span", {
3078
5349
  className: "text-destructive/80 align-super text-sm leading-0",
3079
5350
  "aria-hidden": "true",
3080
5351
  children: "*"
3081
5352
  })]
3082
- }), tooltip && /* @__PURE__ */ jsx(Tooltip$1, {
5353
+ }), tooltip && /* @__PURE__ */ jsx(Tooltip, {
3083
5354
  message: tooltip,
3084
5355
  open: isTooltipVisible,
3085
5356
  onOpenChange: setIsTooltipVisible,
@@ -3087,7 +5358,7 @@ function FieldLabel({ htmlFor, label, hasErrors, required, tooltip, className })
3087
5358
  contentClassName: "max-w-xs text-wrap",
3088
5359
  children: /* @__PURE__ */ jsx(Icon, {
3089
5360
  icon: CircleHelp,
3090
- className: cn("text-ring absolute top-0.5 -right-3 size-3.5 cursor-pointer transition-opacity duration-400")
5361
+ className: cn$1("text-ring absolute top-0.5 -right-3 size-3.5 cursor-pointer transition-opacity duration-400")
3091
5362
  })
3092
5363
  })]
3093
5364
  });
@@ -3186,7 +5457,7 @@ function FormField({ name, children, label, description, tooltip, required = fal
3186
5457
  return /* @__PURE__ */ jsx(FieldProvider, {
3187
5458
  value: contextValue,
3188
5459
  children: /* @__PURE__ */ jsxs("div", {
3189
- className: cn("flex flex-col space-y-2", className),
5460
+ className: cn$1("flex flex-col space-y-2", className),
3190
5461
  children: [
3191
5462
  label && /* @__PURE__ */ jsx(FieldLabel, {
3192
5463
  htmlFor: fieldId,
@@ -3204,7 +5475,7 @@ function FormField({ name, children, label, description, tooltip, required = fal
3204
5475
  }),
3205
5476
  hasErrors && /* @__PURE__ */ jsx("ul", {
3206
5477
  id: errorId,
3207
- className: cn("text-destructive space-y-1 text-xs font-medium", errors.length > 1 && "list-disc pl-4"),
5478
+ className: cn$1("text-destructive space-y-1 text-xs font-medium", errors.length > 1 && "list-disc pl-4"),
3208
5479
  role: "alert",
3209
5480
  "aria-live": "polite",
3210
5481
  children: errors.map((error) => /* @__PURE__ */ jsx("li", {
@@ -3359,7 +5630,7 @@ function FormInput({ ref, type = "text", className, disabled, ...props }) {
3359
5630
  const inputProps = getInputProps(fieldMeta, { type });
3360
5631
  const isDisabled = disabled ?? fieldDisabled;
3361
5632
  const hasErrors = errors && errors.length > 0;
3362
- return /* @__PURE__ */ jsx(Input$1, {
5633
+ return /* @__PURE__ */ jsx(Input, {
3363
5634
  ref,
3364
5635
  ...inputProps,
3365
5636
  ...props,
@@ -3367,7 +5638,7 @@ function FormInput({ ref, type = "text", className, disabled, ...props }) {
3367
5638
  disabled: isDisabled,
3368
5639
  "aria-invalid": hasErrors || void 0,
3369
5640
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
3370
- className: cn("!text-xs", className)
5641
+ className: cn$1("!text-xs", className)
3371
5642
  });
3372
5643
  }
3373
5644
  FormInput.displayName = "Form.Input";
@@ -3396,14 +5667,14 @@ function FormRadioGroup({ orientation = "vertical", disabled, className, childre
3396
5667
  const isDisabled = disabled ?? fieldDisabled;
3397
5668
  const hasErrors = errors && errors.length > 0;
3398
5669
  const radioValue = Array.isArray(control.value) ? control.value[0] : control.value;
3399
- return /* @__PURE__ */ jsx(RadioGroup$1, {
5670
+ return /* @__PURE__ */ jsx(RadioGroup, {
3400
5671
  name: fieldMeta.name,
3401
5672
  value: radioValue ?? "",
3402
5673
  onValueChange: control.change,
3403
5674
  disabled: isDisabled,
3404
5675
  "aria-invalid": hasErrors || void 0,
3405
5676
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
3406
- className: cn(orientation === "horizontal" ? "flex flex-row space-x-4" : "flex flex-col space-y-2", className),
5677
+ className: cn$1(orientation === "horizontal" ? "flex flex-row space-x-4" : "flex flex-col space-y-2", className),
3407
5678
  children
3408
5679
  });
3409
5680
  }
@@ -3420,16 +5691,16 @@ function FormRadioItem({ value, label, description, disabled }) {
3420
5691
  const radioId = `radio-${value}`;
3421
5692
  return /* @__PURE__ */ jsxs("div", {
3422
5693
  className: "flex items-start space-x-2",
3423
- children: [/* @__PURE__ */ jsx(RadioGroupItem$1, {
5694
+ children: [/* @__PURE__ */ jsx(RadioGroupItem, {
3424
5695
  id: radioId,
3425
5696
  value,
3426
5697
  disabled,
3427
5698
  className: "mt-1"
3428
5699
  }), /* @__PURE__ */ jsxs("div", {
3429
5700
  className: "flex flex-col",
3430
- children: [/* @__PURE__ */ jsx(Label$1, {
5701
+ children: [/* @__PURE__ */ jsx(Label, {
3431
5702
  htmlFor: radioId,
3432
- className: cn("cursor-pointer text-sm font-normal", disabled && "cursor-not-allowed opacity-70"),
5703
+ className: cn$1("cursor-pointer text-sm font-normal", disabled && "cursor-not-allowed opacity-70"),
3433
5704
  children: label
3434
5705
  }), description && /* @__PURE__ */ jsx("span", {
3435
5706
  className: "text-muted-foreground text-xs",
@@ -3604,7 +5875,7 @@ function FormRoot({ schema, children, onSubmit, action, method = "POST", formCom
3604
5875
  },
3605
5876
  method,
3606
5877
  action,
3607
- className: cn("space-y-6", className),
5878
+ className: cn$1("space-y-6", className),
3608
5879
  autoComplete: "off",
3609
5880
  children: renderChildren()
3610
5881
  })
@@ -3637,18 +5908,18 @@ function FormSelect({ placeholder, disabled, className, children }) {
3637
5908
  const isDisabled = disabled ?? fieldDisabled;
3638
5909
  const hasErrors = errors && errors.length > 0;
3639
5910
  const selectValue = Array.isArray(control.value) ? control.value[0] : control.value;
3640
- return /* @__PURE__ */ jsxs(Select$1, {
5911
+ return /* @__PURE__ */ jsxs(Select, {
3641
5912
  name: fieldMeta.name,
3642
5913
  value: selectValue ?? "",
3643
5914
  onValueChange: control.change,
3644
5915
  disabled: isDisabled,
3645
- children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
5916
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
3646
5917
  id: fieldMeta.id,
3647
5918
  "aria-invalid": hasErrors || void 0,
3648
5919
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
3649
- className: cn(className),
3650
- children: /* @__PURE__ */ jsx(SelectValue$1, { placeholder })
3651
- }), /* @__PURE__ */ jsx(SelectContent$1, { children })]
5920
+ className: cn$1(className),
5921
+ children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
5922
+ }), /* @__PURE__ */ jsx(SelectContent, { children })]
3652
5923
  });
3653
5924
  }
3654
5925
  FormSelect.displayName = "Form.Select";
@@ -3661,7 +5932,7 @@ FormSelect.displayName = "Form.Select";
3661
5932
  * ```
3662
5933
  */
3663
5934
  function FormSelectItem({ value, children, disabled }) {
3664
- return /* @__PURE__ */ jsx(SelectItem$1, {
5935
+ return /* @__PURE__ */ jsx(SelectItem, {
3665
5936
  value,
3666
5937
  disabled,
3667
5938
  children
@@ -3719,8 +5990,8 @@ function FormSwitch({ label, disabled, className }) {
3719
5990
  };
3720
5991
  const switchId = fieldMeta.id;
3721
5992
  return /* @__PURE__ */ jsxs("div", {
3722
- className: cn("flex items-center space-x-2", className),
3723
- children: [/* @__PURE__ */ jsx(Switch$1, {
5993
+ className: cn$1("flex items-center space-x-2", className),
5994
+ children: [/* @__PURE__ */ jsx(Switch, {
3724
5995
  id: switchId,
3725
5996
  name: fieldMeta.name,
3726
5997
  checked: isChecked,
@@ -3728,9 +5999,9 @@ function FormSwitch({ label, disabled, className }) {
3728
5999
  disabled: isDisabled,
3729
6000
  "aria-invalid": hasErrors || void 0,
3730
6001
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0
3731
- }), label && /* @__PURE__ */ jsx(Label$1, {
6002
+ }), label && /* @__PURE__ */ jsx(Label, {
3732
6003
  htmlFor: switchId,
3733
- className: cn("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
6004
+ className: cn$1("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
3734
6005
  children: label
3735
6006
  })]
3736
6007
  });
@@ -3756,7 +6027,7 @@ function FormTextarea({ ref, className, disabled, rows = 3, ...props }) {
3756
6027
  const textareaProps = getTextareaProps(fieldMeta);
3757
6028
  const isDisabled = disabled ?? fieldDisabled;
3758
6029
  const hasErrors = errors && errors.length > 0;
3759
- return /* @__PURE__ */ jsx(Textarea$1, {
6030
+ return /* @__PURE__ */ jsx(Textarea, {
3760
6031
  ref,
3761
6032
  ...textareaProps,
3762
6033
  ...props,
@@ -3764,7 +6035,7 @@ function FormTextarea({ ref, className, disabled, rows = 3, ...props }) {
3764
6035
  disabled: isDisabled,
3765
6036
  "aria-invalid": hasErrors || void 0,
3766
6037
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
3767
- className: cn(className)
6038
+ className: cn$1(className)
3768
6039
  });
3769
6040
  }
3770
6041
  FormTextarea.displayName = "Form.Textarea";
@@ -3920,7 +6191,7 @@ function defineStepper(...steps) {
3920
6191
  const methods = useStepper();
3921
6192
  return /* @__PURE__ */ jsx("div", {
3922
6193
  "date-component": "stepper",
3923
- className: cn("w-full", className),
6194
+ className: cn$1("w-full", className),
3924
6195
  ...props,
3925
6196
  children: typeof children === "function" ? children({ methods }) : children
3926
6197
  });
@@ -3978,7 +6249,7 @@ function defineStepper(...steps) {
3978
6249
  const panel = childMap.get("panel");
3979
6250
  if (variant === "circle") return /* @__PURE__ */ jsxs("li", {
3980
6251
  "date-component": "stepper-step",
3981
- className: cn("flex shrink-0 items-center gap-4 rounded-md transition-colors", className),
6252
+ className: cn$1("flex shrink-0 items-center gap-4 rounded-md transition-colors", className),
3982
6253
  children: [/* @__PURE__ */ jsx(CircleStepIndicator, {
3983
6254
  currentStep: stepIndex + 1,
3984
6255
  totalSteps: steps.length
@@ -3991,7 +6262,7 @@ function defineStepper(...steps) {
3991
6262
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
3992
6263
  /* @__PURE__ */ jsxs("li", {
3993
6264
  "date-component": "stepper-step",
3994
- className: cn([
6265
+ className: cn$1([
3995
6266
  "group peer relative flex items-center gap-2",
3996
6267
  "data-[variant=vertical]:flex-row",
3997
6268
  "data-[label-orientation=vertical]:w-full",
@@ -4009,7 +6280,7 @@ function defineStepper(...steps) {
4009
6280
  type: "button",
4010
6281
  role: "tab",
4011
6282
  tabIndex: dataState !== "inactive" ? 0 : -1,
4012
- className: cn("rounded-full", className),
6283
+ className: cn$1("rounded-full", className),
4013
6284
  variant: dataState !== "inactive" ? "default" : "secondary",
4014
6285
  size: "icon",
4015
6286
  "aria-controls": `step-panel-${props.of}`,
@@ -4073,7 +6344,7 @@ function defineStepper(...steps) {
4073
6344
  Controls: ({ children, className, asChild, ...props }) => {
4074
6345
  return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
4075
6346
  "date-component": "stepper-controls",
4076
- className: cn("flex justify-end gap-4", className),
6347
+ className: cn$1("flex justify-end gap-4", className),
4077
6348
  ...props,
4078
6349
  children
4079
6350
  });
@@ -4084,7 +6355,7 @@ function defineStepper(...steps) {
4084
6355
  function Title({ children, className, asChild, ...props }) {
4085
6356
  return /* @__PURE__ */ jsx(asChild ? Slot : "h4", {
4086
6357
  "date-component": "stepper-step-title",
4087
- className: cn("text-base font-medium", className),
6358
+ className: cn$1("text-base font-medium", className),
4088
6359
  ...props,
4089
6360
  children
4090
6361
  });
@@ -4092,7 +6363,7 @@ function Title({ children, className, asChild, ...props }) {
4092
6363
  function Description({ children, className, asChild, ...props }) {
4093
6364
  return /* @__PURE__ */ jsx(asChild ? Slot : "p", {
4094
6365
  "date-component": "stepper-step-description",
4095
- className: cn("text-muted-foreground text-sm", className),
6366
+ className: cn$1("text-muted-foreground text-sm", className),
4096
6367
  ...props,
4097
6368
  children
4098
6369
  });
@@ -4477,7 +6748,7 @@ function StepForm({ steps, stepper, currentStepConfig, combinedSchema, storedVal
4477
6748
  ref: formRef,
4478
6749
  ...getFormProps(form),
4479
6750
  method: "POST",
4480
- className: cn("space-y-6", className),
6751
+ className: cn$1("space-y-6", className),
4481
6752
  autoComplete: "off",
4482
6753
  children: resolvedChildren
4483
6754
  })
@@ -4560,7 +6831,7 @@ function StepperControls({ prevLabel = "Previous", nextLabel = (isLast) => isLas
4560
6831
  }
4561
6832
  };
4562
6833
  return /* @__PURE__ */ jsxs("div", {
4563
- className: cn("flex items-center justify-between gap-3", className),
6834
+ className: cn$1("flex items-center justify-between gap-3", className),
4564
6835
  children: [/* @__PURE__ */ jsx("div", { children: showPrev && /* @__PURE__ */ jsx(Button$1, {
4565
6836
  htmlType: "button",
4566
6837
  type: "quaternary",
@@ -4598,7 +6869,7 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
4598
6869
  const { steps, currentIndex } = useFormStepperContext();
4599
6870
  if (variant === "horizontal" && labelOrientation === "vertical") return /* @__PURE__ */ jsx("nav", {
4600
6871
  "aria-label": "Form steps",
4601
- className: cn("flex flex-row items-start justify-between", className),
6872
+ className: cn$1("flex flex-row items-start justify-between", className),
4602
6873
  children: steps.map((step, index) => {
4603
6874
  const isActive = index === currentIndex;
4604
6875
  const isCompleted = index < currentIndex;
@@ -4607,14 +6878,14 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
4607
6878
  children: [
4608
6879
  !(index === steps.length - 1) && /* @__PURE__ */ jsx("div", { className: "bg-stepper-line absolute top-4 right-[calc(-50%+20px)] left-[calc(50%+20px)] h-0.5" }),
4609
6880
  /* @__PURE__ */ jsx("div", {
4610
- className: cn("relative z-10 flex h-8 w-8 items-center justify-center rounded-full border bg-transparent text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
6881
+ className: cn$1("relative z-10 flex h-8 w-8 items-center justify-center rounded-full border bg-transparent text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
4611
6882
  "aria-current": isActive ? "step" : void 0,
4612
6883
  children: isCompleted ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-tertiary h-4 w-4" }) : index + 1
4613
6884
  }),
4614
6885
  /* @__PURE__ */ jsxs("div", {
4615
6886
  className: "mt-1",
4616
6887
  children: [/* @__PURE__ */ jsx("span", {
4617
- className: cn("text-xs font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
6888
+ className: cn$1("text-xs font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
4618
6889
  children: step.label
4619
6890
  }), step.description && /* @__PURE__ */ jsx("p", {
4620
6891
  className: "text-muted-foreground mt-0.5 text-xs",
@@ -4627,7 +6898,7 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
4627
6898
  });
4628
6899
  if (variant === "horizontal") return /* @__PURE__ */ jsx("nav", {
4629
6900
  "aria-label": "Form steps",
4630
- className: cn("flex flex-row items-center", className),
6901
+ className: cn$1("flex flex-row items-center", className),
4631
6902
  children: steps.map((step, index) => {
4632
6903
  const isActive = index === currentIndex;
4633
6904
  const isCompleted = index < currentIndex;
@@ -4635,13 +6906,13 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
4635
6906
  return /* @__PURE__ */ jsxs(React$1.Fragment, { children: [/* @__PURE__ */ jsxs("div", {
4636
6907
  className: "flex items-center",
4637
6908
  children: [/* @__PURE__ */ jsx("div", {
4638
- className: cn("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
6909
+ className: cn$1("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
4639
6910
  "aria-current": isActive ? "step" : void 0,
4640
6911
  children: isCompleted ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-tertiary size-4" }) : index + 1
4641
6912
  }), /* @__PURE__ */ jsx("div", {
4642
6913
  className: "ml-2",
4643
6914
  children: /* @__PURE__ */ jsx("span", {
4644
- className: cn("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
6915
+ className: cn$1("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
4645
6916
  children: step.label
4646
6917
  })
4647
6918
  })]
@@ -4650,7 +6921,7 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
4650
6921
  });
4651
6922
  return /* @__PURE__ */ jsx("nav", {
4652
6923
  "aria-label": "Form steps",
4653
- className: cn("flex flex-col", className),
6924
+ className: cn$1("flex flex-col", className),
4654
6925
  children: steps.map((step, index) => {
4655
6926
  const isActive = index === currentIndex;
4656
6927
  const isCompleted = index < currentIndex;
@@ -4660,14 +6931,14 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
4660
6931
  children: [/* @__PURE__ */ jsxs("div", {
4661
6932
  className: "flex flex-col items-center",
4662
6933
  children: [/* @__PURE__ */ jsx("div", {
4663
- className: cn("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
6934
+ className: cn$1("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
4664
6935
  "aria-current": isActive ? "step" : void 0,
4665
6936
  children: isCompleted ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-tertiary size-4" }) : index + 1
4666
6937
  }), !isLast && /* @__PURE__ */ jsx("div", { className: "bg-stepper-line my-1 min-h-8 w-0.5 flex-1" })]
4667
6938
  }), /* @__PURE__ */ jsxs("div", {
4668
6939
  className: "ml-3 pb-8",
4669
6940
  children: [/* @__PURE__ */ jsx("span", {
4670
- className: cn("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
6941
+ className: cn$1("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
4671
6942
  children: step.label
4672
6943
  }), step.description && /* @__PURE__ */ jsx("p", {
4673
6944
  className: "text-muted-foreground mt-0.5 text-xs",
@@ -4684,14 +6955,14 @@ StepperNavigation.displayName = "Form.StepperNavigation";
4684
6955
  //#region src/components/features/input-with-addons/input-with-addons.tsx
4685
6956
  function InputWithAddons({ ref, leading, trailing, containerClassName, className, ...props }) {
4686
6957
  return /* @__PURE__ */ jsxs("div", {
4687
- className: cn("border-input-border bg-input-background/50 text-input-foreground placeholder:text-input-placeholder", "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow)", "group flex h-10 w-full items-stretch overflow-hidden rounded-lg border transition-all", "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", containerClassName),
6958
+ className: cn$1("border-input-border bg-input-background/50 text-input-foreground placeholder:text-input-placeholder", "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow)", "group flex h-10 w-full items-stretch overflow-hidden rounded-lg border transition-all", "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", containerClassName),
4688
6959
  children: [
4689
6960
  leading ? /* @__PURE__ */ jsx("div", {
4690
6961
  className: "text-muted-foreground flex items-center bg-transparent pl-3",
4691
6962
  children: leading
4692
6963
  }) : null,
4693
6964
  /* @__PURE__ */ jsx("input", {
4694
- className: cn("flex-1 bg-transparent px-3 text-base md:text-sm", "placeholder:text-input-placeholder text-input-foreground", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "focus-visible:border-transparent focus-visible:shadow-none", "read-only:cursor-not-allowed read-only:opacity-50 disabled:cursor-not-allowed disabled:opacity-50", "file:text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium", leading && "pl-2", trailing && "pr-2", className),
6965
+ className: cn$1("flex-1 bg-transparent px-3 text-base md:text-sm", "placeholder:text-input-placeholder text-input-foreground", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "focus-visible:border-transparent focus-visible:shadow-none", "read-only:cursor-not-allowed read-only:opacity-50 disabled:cursor-not-allowed disabled:opacity-50", "file:text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium", leading && "pl-2", trailing && "pr-2", className),
4695
6966
  "data-slot": "input-with-addons",
4696
6967
  ref,
4697
6968
  ...props
@@ -4732,7 +7003,7 @@ function FormInputGroup({ ref, type = "text", className, disabled, ...props }) {
4732
7003
  disabled: isDisabled,
4733
7004
  "aria-invalid": hasErrors || void 0,
4734
7005
  "aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
4735
- className: cn("text-xs!", className)
7006
+ className: cn$1("text-xs!", className)
4736
7007
  });
4737
7008
  }
4738
7009
  FormInputGroup.displayName = "Form.InputGroup";
@@ -5143,7 +7414,7 @@ const Row = ({ type, align, justify, className, style, children, gutter = 0, pre
5143
7414
  }, [gutter]);
5144
7415
  const gutters = getGutter(gutter, screens);
5145
7416
  const prefix = `${prefixCls}-row`;
5146
- const classes = cn({
7417
+ const classes = cn$1({
5147
7418
  [prefix]: type !== "flex",
5148
7419
  [`${prefix}-${type}`]: type,
5149
7420
  [`${prefix}-${type}-${justify}`]: type && justify,
@@ -5192,7 +7463,7 @@ const Col = ({ span, order, offset, push, pull, className, prefixCls = GRID_PREF
5192
7463
  [`${prefix}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull !== void 0
5193
7464
  };
5194
7465
  });
5195
- const classes = cn(prefix, {
7466
+ const classes = cn$1(prefix, {
5196
7467
  [`${prefix}-${span}`]: span !== void 0,
5197
7468
  [`${prefix}-order-${order}`]: order !== void 0,
5198
7469
  [`${prefix}-offset-${offset}`]: offset !== void 0,
@@ -5282,7 +7553,7 @@ function InputNumber({ ref, stepper, thousandSeparator, placeholder, defaultValu
5282
7553
  min,
5283
7554
  suffix,
5284
7555
  prefix,
5285
- customInput: Input$1,
7556
+ customInput: Input,
5286
7557
  placeholder,
5287
7558
  className: "relative [appearance:textfield] rounded-r-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none",
5288
7559
  getInputRef: combinedRef,
@@ -5334,8 +7605,8 @@ function MoreActions({ row, actions, className, disabled = false, iconClassName
5334
7605
  theme: "borderless",
5335
7606
  size: "icon",
5336
7607
  disabled,
5337
- className: cn("data-[state=open]:bg-accent size-7 p-0 focus-visible:ring-0 focus-visible:ring-offset-0", className),
5338
- children: /* @__PURE__ */ jsx(Ellipsis, { className: cn("size-5", iconClassName) })
7608
+ className: cn$1("data-[state=open]:bg-accent size-7 p-0 focus-visible:ring-0 focus-visible:ring-offset-0", className),
7609
+ children: /* @__PURE__ */ jsx(Ellipsis, { className: cn$1("size-5", iconClassName) })
5339
7610
  })
5340
7611
  }), /* @__PURE__ */ jsx(DropdownMenuContent, {
5341
7612
  align: "end",
@@ -5348,11 +7619,11 @@ function MoreActions({ row, actions, className, disabled = false, iconClassName
5348
7619
  setOpen(false);
5349
7620
  action.action(row);
5350
7621
  },
5351
- className: cn("cursor-pointer text-xs", action.variant === "destructive" && "text-destructive [&_svg]:!text-destructive hover:!text-destructive hover:[&_svg]:!text-destructive", action.className),
7622
+ className: cn$1("cursor-pointer text-xs", action.variant === "destructive" && "text-destructive [&_svg]:!text-destructive hover:!text-destructive hover:[&_svg]:!text-destructive", action.className),
5352
7623
  disabled: action.disabled?.(row) ?? false,
5353
7624
  children: [action.icon, action.label]
5354
7625
  });
5355
- if (tooltipText && tooltipText !== action.label) return /* @__PURE__ */ jsx(Tooltip$1, {
7626
+ if (tooltipText && tooltipText !== action.label) return /* @__PURE__ */ jsx(Tooltip, {
5356
7627
  message: tooltipText,
5357
7628
  children: menuItem
5358
7629
  }, action.key);
@@ -5396,18 +7667,18 @@ function configureProgress() {
5396
7667
  function PageTitle({ title, description, actions, className, titleClassName, descriptionClassName, actionsClassName, actionsPosition = "inline" }) {
5397
7668
  const isInline = actionsPosition === "inline";
5398
7669
  return /* @__PURE__ */ jsxs("div", {
5399
- className: cn("flex w-full", isInline ? "items-center justify-between" : "flex-col gap-3", className),
7670
+ className: cn$1("flex w-full", isInline ? "items-center justify-between" : "flex-col gap-3", className),
5400
7671
  children: [/* @__PURE__ */ jsxs("div", {
5401
- className: cn("flex", isInline ? "flex-col justify-start gap-1" : "w-full flex-col gap-1"),
7672
+ className: cn$1("flex", isInline ? "flex-col justify-start gap-1" : "w-full flex-col gap-1"),
5402
7673
  children: [title && /* @__PURE__ */ jsx("span", {
5403
- className: cn("text-2xl leading-none font-medium", titleClassName),
7674
+ className: cn$1("text-2xl leading-none font-medium", titleClassName),
5404
7675
  children: title
5405
7676
  }), description && /* @__PURE__ */ jsx("div", {
5406
- className: cn("text-sm font-normal", descriptionClassName),
7677
+ className: cn$1("text-sm font-normal", descriptionClassName),
5407
7678
  children: description
5408
7679
  })]
5409
7680
  }), actions && /* @__PURE__ */ jsx("div", {
5410
- className: cn("flex gap-1", isInline ? "justify-end pl-2" : "w-full", actionsClassName),
7681
+ className: cn$1("flex gap-1", isInline ? "justify-end pl-2" : "w-full", actionsClassName),
5411
7682
  children: actions
5412
7683
  })]
5413
7684
  });
@@ -5425,7 +7696,7 @@ function NavIcon({ icon: IconComponent, className, size = "default" }) {
5425
7696
  if (!IconComponent) return null;
5426
7697
  return /* @__PURE__ */ jsx(Icon, {
5427
7698
  icon: IconComponent,
5428
- className: cn(size === "small" ? NAV_STYLES.iconSmall : NAV_STYLES.icon, className)
7699
+ className: cn$1(size === "small" ? NAV_STYLES.iconSmall : NAV_STYLES.icon, className)
5429
7700
  });
5430
7701
  }
5431
7702
  NavIcon.displayName = "NavIcon";
@@ -5436,7 +7707,7 @@ function NavSidebarMenuButton({ ref, item, isActive, disableTooltip, className,
5436
7707
  isActive,
5437
7708
  disabled: item.disabled,
5438
7709
  asChild,
5439
- className: cn(NAV_STYLES.menuButton, item.disabled && NAV_STYLES.disabled, className),
7710
+ className: cn$1(NAV_STYLES.menuButton, item.disabled && NAV_STYLES.disabled, className),
5440
7711
  ...props,
5441
7712
  children: asChild ? children : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(NavIcon, { icon: item.icon }), children] })
5442
7713
  });
@@ -5608,7 +7879,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
5608
7879
  onClick: () => {
5609
7880
  handleNavigation();
5610
7881
  },
5611
- children: /* @__PURE__ */ jsx("span", { className: cn("size-1 rounded-full", isSubItemActive ? "bg-primary" : "bg-sidebar-primary-foreground") })
7882
+ children: /* @__PURE__ */ jsx("span", { className: cn$1("size-1 rounded-full", isSubItemActive ? "bg-primary" : "bg-sidebar-primary-foreground") })
5612
7883
  })
5613
7884
  })
5614
7885
  }, `collapsed-dot-${subItem.href}-${level}`);
@@ -5665,7 +7936,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
5665
7936
  initial: isInitialMount.current || previousOpenItems.current[item.href] === openItems[item.href] && previousState.current === state && previousPathname.current === pathname && !hasActiveChild ? "visible" : "hidden",
5666
7937
  animate: isOpen ? "visible" : "hidden",
5667
7938
  children: /* @__PURE__ */ jsx(SidebarMenuSub, {
5668
- className: cn(level >= 1 ? "mr-0 pr-[.1rem]" : "", level === 2 ? "pl-4" : "", level === 3 ? "pl-6" : "", "mr-0 gap-0.5 pr-0"),
7939
+ className: cn$1(level >= 1 ? "mr-0 pr-[.1rem]" : "", level === 2 ? "pl-4" : "", level === 3 ? "pl-6" : "", "mr-0 gap-0.5 pr-0"),
5669
7940
  children: item.children?.map((subItem, index) => /* @__PURE__ */ jsx(motion.div, {
5670
7941
  variants: {
5671
7942
  hidden: { opacity: 0 },
@@ -5721,7 +7992,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
5721
7992
  overflow: "hidden"
5722
7993
  },
5723
7994
  children: /* @__PURE__ */ jsx(SidebarMenuSub, {
5724
- className: cn(currentLevel >= 1 ? "mr-0 pr-[.1rem]" : "", "gap-0.5"),
7995
+ className: cn$1(currentLevel >= 1 ? "mr-0 pr-[.1rem]" : "", "gap-0.5"),
5725
7996
  children: currentItem.children?.map((subItem) => renderNavItem(subItem, currentLevel + 1))
5726
7997
  })
5727
7998
  })
@@ -5739,14 +8010,14 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
5739
8010
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5740
8011
  item.showSeparatorAbove && /* @__PURE__ */ jsx(SidebarSeparator, { className: "my-2" }),
5741
8012
  /* @__PURE__ */ jsx(SidebarMenu, {
5742
- className: cn(`level_${level} px-2`),
8013
+ className: cn$1(`level_${level} px-2`),
5743
8014
  children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(NavSidebarMenuButton, {
5744
8015
  asChild: true,
5745
8016
  item,
5746
8017
  isActive: isActive && !hasActiveChild,
5747
8018
  disableTooltip,
5748
8019
  onClick: () => hasChildren && toggleItem(item.href),
5749
- className: cn(level >= 1 && "h-6", itemClassName),
8020
+ className: cn$1(level >= 1 && "h-6", itemClassName),
5750
8021
  children: item.type === "externalLink" ? /* @__PURE__ */ jsxs("a", {
5751
8022
  href: item.href || "",
5752
8023
  target: "_blank",
@@ -5779,7 +8050,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
5779
8050
  return /* @__PURE__ */ jsx("ul", {
5780
8051
  ref,
5781
8052
  "data-sidebar": "menu",
5782
- className: cn("flex h-full w-full min-w-0 flex-col gap-0.5 py-2", className),
8053
+ className: cn$1("flex h-full w-full min-w-0 flex-col gap-0.5 py-2", className),
5783
8054
  ...props,
5784
8055
  children: (items || []).map((item) => renderNavItem(item))
5785
8056
  });
@@ -5819,6 +8090,23 @@ function AppSidebar({ navItems, title, closeOnNavigation, defaultOpen, currentPa
5819
8090
  });
5820
8091
  }
5821
8092
 
8093
+ //#endregion
8094
+ //#region ../shadcn/hooks/use-mobile.ts
8095
+ const MOBILE_BREAKPOINT = 768;
8096
+ function useIsMobile() {
8097
+ const [isMobile, setIsMobile] = React$1.useState(void 0);
8098
+ React$1.useEffect(() => {
8099
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
8100
+ const onChange = () => {
8101
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
8102
+ };
8103
+ mql.addEventListener("change", onChange);
8104
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
8105
+ return () => mql.removeEventListener("change", onChange);
8106
+ }, []);
8107
+ return !!isMobile;
8108
+ }
8109
+
5822
8110
  //#endregion
5823
8111
  //#region src/components/features/sidebar/sidebar.tsx
5824
8112
  const SIDEBAR_COOKIE_NAME = "sidebar_state";
@@ -5989,7 +8277,7 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
5989
8277
  "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
5990
8278
  ...style
5991
8279
  },
5992
- className: cn("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
8280
+ className: cn$1("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
5993
8281
  ...props,
5994
8282
  children
5995
8283
  })
@@ -6021,15 +8309,15 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
6021
8309
  ]);
6022
8310
  if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
6023
8311
  "data-slot": "sidebar",
6024
- className: cn("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", side === "left" ? "border-r" : "border-l", className),
8312
+ className: cn$1("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", side === "left" ? "border-r" : "border-l", className),
6025
8313
  ...props,
6026
8314
  children
6027
8315
  });
6028
- if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
8316
+ if (isMobile) return /* @__PURE__ */ jsx(Sheet$1, {
6029
8317
  open: openMobile,
6030
8318
  onOpenChange: setOpenMobile,
6031
8319
  ...props,
6032
- children: /* @__PURE__ */ jsxs(SheetContent, {
8320
+ children: /* @__PURE__ */ jsxs(SheetContent$1, {
6033
8321
  "data-sidebar": "sidebar",
6034
8322
  "data-slot": "sidebar",
6035
8323
  "data-mobile": "true",
@@ -6056,19 +8344,19 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
6056
8344
  onMouseEnter: handleMouseEnter,
6057
8345
  onMouseLeave: handleMouseLeave,
6058
8346
  children: [
6059
- /* @__PURE__ */ jsx("div", { className: cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)]", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", expandBehavior === "overlay" ? variant === "floating" || variant === "inset" ? "w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "w-(--sidebar-width-icon)" : variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)") }),
8347
+ /* @__PURE__ */ jsx("div", { className: cn$1("relative w-(--sidebar-width) bg-transparent transition-[width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)]", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", expandBehavior === "overlay" ? variant === "floating" || variant === "inset" ? "w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "w-(--sidebar-width-icon)" : variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)") }),
6060
8348
  /* @__PURE__ */ jsx("div", {
6061
8349
  ref: sidebarRef,
6062
- className: cn("border-sidebar-border fixed inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] md:flex", expandBehavior === "overlay" ? "z-50" : "z-10", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
8350
+ className: cn$1("border-sidebar-border fixed inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] md:flex", expandBehavior === "overlay" ? "z-50" : "z-10", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
6063
8351
  ...props,
6064
8352
  children: /* @__PURE__ */ jsx("div", {
6065
8353
  "data-sidebar": "sidebar",
6066
- className: cn("bg-sidebar flex h-full w-full flex-col", "group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm", expandBehavior === "overlay" && state === "expanded" && "shadow-lg"),
8354
+ className: cn$1("bg-sidebar flex h-full w-full flex-col", "group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm", expandBehavior === "overlay" && state === "expanded" && "shadow-lg"),
6067
8355
  children
6068
8356
  })
6069
8357
  }),
6070
8358
  showBackdropElement && /* @__PURE__ */ jsx("div", {
6071
- className: cn("fixed inset-0 z-40 hidden bg-black/50 transition-opacity duration-200 ease-in-out md:block", backdropVisible ? "opacity-100" : "opacity-0"),
8359
+ className: cn$1("fixed inset-0 z-40 hidden bg-black/50 transition-opacity duration-200 ease-in-out md:block", backdropVisible ? "opacity-100" : "opacity-0"),
6072
8360
  onMouseEnter: () => forceClose(),
6073
8361
  onClick: () => forceClose(),
6074
8362
  "aria-hidden": "true"
@@ -6078,7 +8366,7 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
6078
8366
  }
6079
8367
  function SidebarTrigger({ className, onClick, ...props }) {
6080
8368
  const { toggleSidebar, open } = useSidebar();
6081
- return /* @__PURE__ */ jsx(Tooltip$1, {
8369
+ return /* @__PURE__ */ jsx(Tooltip, {
6082
8370
  message: open ? "Close Sidebar" : "Open Sidebar",
6083
8371
  side: "right",
6084
8372
  align: "center",
@@ -6088,7 +8376,7 @@ function SidebarTrigger({ className, onClick, ...props }) {
6088
8376
  "data-slot": "sidebar-trigger",
6089
8377
  variant: "ghost",
6090
8378
  size: "icon",
6091
- className: cn("text-icon-primary hover:bg-sidebar hover:text-sidebar-primary h-8 w-8 rounded-lg transition-all", className),
8379
+ className: cn$1("text-icon-primary hover:bg-sidebar hover:text-sidebar-primary h-8 w-8 rounded-lg transition-all", className),
6092
8380
  onClick: (event) => {
6093
8381
  onClick?.(event);
6094
8382
  toggleSidebar();
@@ -6116,22 +8404,22 @@ function SidebarRail({ className, ...props }) {
6116
8404
  tabIndex: -1,
6117
8405
  onClick: toggleSidebar,
6118
8406
  title: "Toggle Sidebar",
6119
- className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-[cubic-bezier(0.25,0.1,0.25,1)] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
8407
+ className: cn$1("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-[cubic-bezier(0.25,0.1,0.25,1)] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
6120
8408
  ...props
6121
8409
  });
6122
8410
  }
6123
8411
  function SidebarInset({ className, ...props }) {
6124
8412
  return /* @__PURE__ */ jsx("main", {
6125
8413
  "data-slot": "sidebar-inset",
6126
- className: cn("bg-background relative flex w-full min-w-0 flex-1 flex-col", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
8414
+ className: cn$1("bg-background relative flex w-full min-w-0 flex-1 flex-col", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
6127
8415
  ...props
6128
8416
  });
6129
8417
  }
6130
8418
  function SidebarInput({ className, ...props }) {
6131
- return /* @__PURE__ */ jsx(Input$1, {
8419
+ return /* @__PURE__ */ jsx(Input, {
6132
8420
  "data-slot": "sidebar-input",
6133
8421
  "data-sidebar": "input",
6134
- className: cn("bg-background h-8 w-full shadow-none", className),
8422
+ className: cn$1("bg-background h-8 w-full shadow-none", className),
6135
8423
  ...props
6136
8424
  });
6137
8425
  }
@@ -6139,7 +8427,7 @@ function SidebarHeader({ className, ...props }) {
6139
8427
  return /* @__PURE__ */ jsx("div", {
6140
8428
  "data-slot": "sidebar-header",
6141
8429
  "data-sidebar": "header",
6142
- className: cn("flex flex-col gap-2 p-2", className),
8430
+ className: cn$1("flex flex-col gap-2 p-2", className),
6143
8431
  ...props
6144
8432
  });
6145
8433
  }
@@ -6147,7 +8435,7 @@ function SidebarFooter({ className, ...props }) {
6147
8435
  return /* @__PURE__ */ jsx("div", {
6148
8436
  "data-slot": "sidebar-footer",
6149
8437
  "data-sidebar": "footer",
6150
- className: cn("flex flex-col gap-2 p-2", className),
8438
+ className: cn$1("flex flex-col gap-2 p-2", className),
6151
8439
  ...props
6152
8440
  });
6153
8441
  }
@@ -6155,7 +8443,7 @@ function SidebarSeparator({ className, ...props }) {
6155
8443
  return /* @__PURE__ */ jsx(Separator, {
6156
8444
  "data-slot": "sidebar-separator",
6157
8445
  "data-sidebar": "separator",
6158
- className: cn("bg-sidebar-border w-full", className),
8446
+ className: cn$1("bg-sidebar-border w-full", className),
6159
8447
  ...props
6160
8448
  });
6161
8449
  }
@@ -6163,7 +8451,7 @@ function SidebarContent({ className, ...props }) {
6163
8451
  return /* @__PURE__ */ jsx("div", {
6164
8452
  "data-slot": "sidebar-content",
6165
8453
  "data-sidebar": "content",
6166
- className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
8454
+ className: cn$1("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
6167
8455
  ...props
6168
8456
  });
6169
8457
  }
@@ -6171,7 +8459,7 @@ function SidebarGroup({ className, ...props }) {
6171
8459
  return /* @__PURE__ */ jsx("div", {
6172
8460
  "data-slot": "sidebar-group",
6173
8461
  "data-sidebar": "group",
6174
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
8462
+ className: cn$1("relative flex w-full min-w-0 flex-col p-2", className),
6175
8463
  ...props
6176
8464
  });
6177
8465
  }
@@ -6179,7 +8467,7 @@ function SidebarGroupLabel({ className, asChild = false, ...props }) {
6179
8467
  return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
6180
8468
  "data-slot": "sidebar-group-label",
6181
8469
  "data-sidebar": "group-label",
6182
- className: cn("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-[cubic-bezier(0.25,0.1,0.25,1)] focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
8470
+ className: cn$1("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-[cubic-bezier(0.25,0.1,0.25,1)] focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
6183
8471
  ...props
6184
8472
  });
6185
8473
  }
@@ -6187,7 +8475,7 @@ function SidebarGroupAction({ className, asChild = false, ...props }) {
6187
8475
  return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
6188
8476
  "data-slot": "sidebar-group-action",
6189
8477
  "data-sidebar": "group-action",
6190
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
8478
+ className: cn$1("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
6191
8479
  ...props
6192
8480
  });
6193
8481
  }
@@ -6195,7 +8483,7 @@ function SidebarGroupContent({ className, ...props }) {
6195
8483
  return /* @__PURE__ */ jsx("div", {
6196
8484
  "data-slot": "sidebar-group-content",
6197
8485
  "data-sidebar": "group-content",
6198
- className: cn("w-full text-sm", className),
8486
+ className: cn$1("w-full text-sm", className),
6199
8487
  ...props
6200
8488
  });
6201
8489
  }
@@ -6203,7 +8491,7 @@ function SidebarMenu({ className, ...props }) {
6203
8491
  return /* @__PURE__ */ jsx("ul", {
6204
8492
  "data-slot": "sidebar-menu",
6205
8493
  "data-sidebar": "menu",
6206
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
8494
+ className: cn$1("flex w-full min-w-0 flex-col gap-1", className),
6207
8495
  ...props
6208
8496
  });
6209
8497
  }
@@ -6211,7 +8499,7 @@ function SidebarMenuItem({ className, ...props }) {
6211
8499
  return /* @__PURE__ */ jsx("li", {
6212
8500
  "data-slot": "sidebar-menu-item",
6213
8501
  "data-sidebar": "menu-item",
6214
- className: cn("group/menu-item relative", className),
8502
+ className: cn$1("group/menu-item relative", className),
6215
8503
  ...props
6216
8504
  });
6217
8505
  }
@@ -6240,7 +8528,7 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
6240
8528
  "data-sidebar": "menu-button",
6241
8529
  "data-size": size,
6242
8530
  "data-active": isActive,
6243
- className: cn(sidebarMenuButtonVariants({
8531
+ className: cn$1(sidebarMenuButtonVariants({
6244
8532
  variant,
6245
8533
  size
6246
8534
  }), className),
@@ -6252,7 +8540,7 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
6252
8540
  side: tooltip.side,
6253
8541
  align: tooltip.align
6254
8542
  } : {};
6255
- return /* @__PURE__ */ jsx(Tooltip$1, {
8543
+ return /* @__PURE__ */ jsx(Tooltip, {
6256
8544
  message: tooltipMessage,
6257
8545
  side: "right",
6258
8546
  align: "center",
@@ -6265,7 +8553,7 @@ function SidebarMenuAction({ className, asChild = false, showOnHover = false, ..
6265
8553
  return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
6266
8554
  "data-slot": "sidebar-menu-action",
6267
8555
  "data-sidebar": "menu-action",
6268
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
8556
+ className: cn$1("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
6269
8557
  ...props
6270
8558
  });
6271
8559
  }
@@ -6273,7 +8561,7 @@ function SidebarMenuBadge({ className, ...props }) {
6273
8561
  return /* @__PURE__ */ jsx("div", {
6274
8562
  "data-slot": "sidebar-menu-badge",
6275
8563
  "data-sidebar": "menu-badge",
6276
- className: cn("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
8564
+ className: cn$1("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
6277
8565
  ...props
6278
8566
  });
6279
8567
  }
@@ -6284,7 +8572,7 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
6284
8572
  return /* @__PURE__ */ jsxs("div", {
6285
8573
  "data-slot": "sidebar-menu-skeleton",
6286
8574
  "data-sidebar": "menu-skeleton",
6287
- className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
8575
+ className: cn$1("flex h-8 items-center gap-2 rounded-md px-2", className),
6288
8576
  ...props,
6289
8577
  children: [showIcon && /* @__PURE__ */ jsx(Skeleton, {
6290
8578
  className: "size-4 rounded-md",
@@ -6300,7 +8588,7 @@ function SidebarMenuSub({ className, ...props }) {
6300
8588
  return /* @__PURE__ */ jsx("ul", {
6301
8589
  "data-slot": "sidebar-menu-sub",
6302
8590
  "data-sidebar": "menu-sub",
6303
- className: cn("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col px-2.5", "group-data-[collapsible=icon]:hidden", className),
8591
+ className: cn$1("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col px-2.5", "group-data-[collapsible=icon]:hidden", className),
6304
8592
  ...props
6305
8593
  });
6306
8594
  }
@@ -6308,7 +8596,7 @@ function SidebarMenuSubItem({ className, ...props }) {
6308
8596
  return /* @__PURE__ */ jsx("li", {
6309
8597
  "data-slot": "sidebar-menu-sub-item",
6310
8598
  "data-sidebar": "menu-sub-item",
6311
- className: cn("group/menu-sub-item relative", className),
8599
+ className: cn$1("group/menu-sub-item relative", className),
6312
8600
  ...props
6313
8601
  });
6314
8602
  }
@@ -6318,7 +8606,7 @@ function SidebarMenuSubButton({ asChild = false, size = "md", isActive = false,
6318
8606
  "data-sidebar": "menu-sub-button",
6319
8607
  "data-size": size,
6320
8608
  "data-active": isActive,
6321
- className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
8609
+ className: cn$1("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
6322
8610
  ...props
6323
8611
  });
6324
8612
  }
@@ -6530,7 +8818,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
6530
8818
  ...props,
6531
8819
  ref,
6532
8820
  dir,
6533
- className: cn("border-input-border bg-input-background/50 text-input-foreground flex min-h-10 flex-wrap items-center gap-1 overflow-hidden rounded-lg border px-3 py-2 transition-all", activeIndex === -1 ? "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow) focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden" : "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", className),
8821
+ className: cn$1("border-input-border bg-input-background/50 text-input-foreground flex min-h-10 flex-wrap items-center gap-1 overflow-hidden rounded-lg border px-3 py-2 transition-all", activeIndex === -1 ? "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow) focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden" : "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", className),
6534
8822
  suppressHydrationWarning: true,
6535
8823
  children: [
6536
8824
  (showValidationErrors && validationError || error) && /* @__PURE__ */ jsx("div", {
@@ -6541,7 +8829,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
6541
8829
  tabIndex: activeIndex !== -1 ? 0 : activeIndex,
6542
8830
  "aria-disabled": disableButton,
6543
8831
  "data-active": activeIndex === index,
6544
- className: cn("data-[active='true']:ring-muted-foreground relative flex items-center gap-1 truncate rounded px-1 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 data-[active='true']:ring-2"),
8832
+ className: cn$1("data-[active='true']:ring-muted-foreground relative flex items-center gap-1 truncate rounded px-1 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 data-[active='true']:ring-2"),
6545
8833
  type: "secondary",
6546
8834
  children: [/* @__PURE__ */ jsx("span", {
6547
8835
  className: "text-xs",
@@ -6568,7 +8856,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
6568
8856
  })]
6569
8857
  })]
6570
8858
  }, item)),
6571
- /* @__PURE__ */ jsx(Input$1, {
8859
+ /* @__PURE__ */ jsx(Input, {
6572
8860
  tabIndex: 0,
6573
8861
  "aria-label": "input tag",
6574
8862
  disabled: disableInput,
@@ -6580,7 +8868,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
6580
8868
  onChange: activeIndex === -1 ? handleChange : void 0,
6581
8869
  placeholder,
6582
8870
  onClick: () => setActiveIndex(-1),
6583
- className: cn("text-input-foreground h-6 min-w-fit flex-1 border-0 bg-transparent p-0 py-1 shadow-none", "placeholder:text-input-placeholder", "focus-visible:border-transparent focus-visible:shadow-none focus-visible:ring-0 focus-visible:ring-offset-0", activeIndex !== -1 && "caret-transparent")
8871
+ className: cn$1("text-input-foreground h-6 min-w-fit flex-1 border-0 bg-transparent p-0 py-1 shadow-none", "placeholder:text-input-placeholder", "focus-visible:border-transparent focus-visible:shadow-none focus-visible:ring-0 focus-visible:ring-offset-0", activeIndex !== -1 && "caret-transparent")
6584
8872
  })
6585
8873
  ]
6586
8874
  }), /* @__PURE__ */ jsxs("select", {
@@ -7538,7 +9826,7 @@ function TaskPanelCounter({ total, completed, failed = 0, status }) {
7538
9826
  return /* @__PURE__ */ jsx("span", {
7539
9827
  className: "text-muted-foreground text-xs",
7540
9828
  children: parts.map((part, i) => /* @__PURE__ */ jsxs("span", { children: [i > 0 && ", ", /* @__PURE__ */ jsx("span", {
7541
- className: cn(part.destructive && "text-destructive"),
9829
+ className: cn$1(part.destructive && "text-destructive"),
7542
9830
  children: part.text
7543
9831
  })] }, i))
7544
9832
  });
@@ -7649,19 +9937,19 @@ function TaskStatusAction({ task, onCancel }) {
7649
9937
  children: [/* @__PURE__ */ jsx("div", {
7650
9938
  className: "pointer-events-none absolute inset-0 flex items-center justify-center transition-opacity group-hover:opacity-0",
7651
9939
  children: /* @__PURE__ */ jsx(SpinnerIcon, { size: "sm" })
7652
- }), task.cancelable && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
9940
+ }), task.cancelable && /* @__PURE__ */ jsxs(Tooltip$1, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
7653
9941
  asChild: true,
7654
9942
  children: /* @__PURE__ */ jsx("button", {
7655
9943
  type: "button",
7656
9944
  onClick: onCancel,
7657
- className: cn("flex size-5 items-center justify-center rounded-md transition-colors", "text-muted-foreground hover:bg-accent hover:text-foreground", "absolute inset-0 opacity-0 transition-opacity group-hover:opacity-100"),
9945
+ className: cn$1("flex size-5 items-center justify-center rounded-md transition-colors", "text-muted-foreground hover:bg-accent hover:text-foreground", "absolute inset-0 opacity-0 transition-opacity group-hover:opacity-100"),
7658
9946
  "aria-label": "Cancel task",
7659
9947
  children: /* @__PURE__ */ jsx(Icon, {
7660
9948
  icon: X,
7661
9949
  className: "size-4"
7662
9950
  })
7663
9951
  })
7664
- }), /* @__PURE__ */ jsx(TooltipContent, {
9952
+ }), /* @__PURE__ */ jsx(TooltipContent$1, {
7665
9953
  side: "left",
7666
9954
  children: "Cancel"
7667
9955
  })] })]
@@ -7689,7 +9977,7 @@ function TaskPanel() {
7689
9977
  const { tasks, cancel } = useTaskQueue();
7690
9978
  if (tasks.length === 0) return null;
7691
9979
  return /* @__PURE__ */ jsxs("div", {
7692
- className: cn("bg-background fixed right-4 bottom-4 z-50 w-96 overflow-hidden", "border-border/50 rounded-xl border shadow-xl shadow-black/10", "animate-in slide-in-from-bottom-4 fade-in duration-200"),
9980
+ className: cn$1("bg-background fixed right-4 bottom-4 z-50 w-96 overflow-hidden", "border-border/50 rounded-xl border shadow-xl shadow-black/10", "animate-in slide-in-from-bottom-4 fade-in duration-200"),
7693
9981
  children: [/* @__PURE__ */ jsx(TaskPanelHeader, {}), /* @__PURE__ */ jsx("div", {
7694
9982
  className: "max-h-80 overflow-y-auto",
7695
9983
  children: tasks.map((task) => /* @__PURE__ */ jsx(TaskPanelItem, {
@@ -7725,20 +10013,20 @@ function TaskQueueTrigger({ ref, tasks, ...props }) {
7725
10013
  prevAllComplete.current = false;
7726
10014
  }
7727
10015
  }, [tasks.length]);
7728
- return /* @__PURE__ */ jsx(Tooltip$1, {
10016
+ return /* @__PURE__ */ jsx(Tooltip, {
7729
10017
  message: "Tasks",
7730
10018
  children: /* @__PURE__ */ jsxs(Button$1, {
7731
10019
  ref,
7732
10020
  type: "quaternary",
7733
10021
  theme: "borderless",
7734
10022
  size: "small",
7735
- className: cn("hover:bg-sidebar-accent relative h-7 w-7 rounded-lg p-0 transition-colors duration-300", flash && "bg-primary/10"),
10023
+ className: cn$1("hover:bg-sidebar-accent relative h-7 w-7 rounded-lg p-0 transition-colors duration-300", flash && "bg-primary/10"),
7736
10024
  "aria-label": `Tasks${activeCount > 0 ? ` (${activeCount} active)` : ""}`,
7737
10025
  ...props,
7738
10026
  children: [
7739
10027
  /* @__PURE__ */ jsx(Icon, {
7740
10028
  icon: ListTodo,
7741
- className: cn("text-icon-header size-4", flash ? "text-primary" : "text-icon-header")
10029
+ className: cn$1("text-icon-header size-4", flash ? "text-primary" : "text-icon-header")
7742
10030
  }),
7743
10031
  hasRunning && /* @__PURE__ */ jsx("span", { className: "border-t-primary pointer-events-none absolute inset-[-3px] animate-spin rounded-full border-2 border-transparent" }),
7744
10032
  activeCount > 0 && /* @__PURE__ */ jsx(Badge, {
@@ -7776,9 +10064,9 @@ function StatusCell({ item }) {
7776
10064
  className: "flex items-center gap-1.5",
7777
10065
  children: [/* @__PURE__ */ jsx(Icon, {
7778
10066
  icon: config.icon,
7779
- className: cn("size-4", config.className)
10067
+ className: cn$1("size-4", config.className)
7780
10068
  }), /* @__PURE__ */ jsx("span", {
7781
- className: cn("text-xs font-medium", config.className),
10069
+ className: cn$1("text-xs font-medium", config.className),
7782
10070
  children: config.label
7783
10071
  })]
7784
10072
  }), item.message && item.status !== "success" && /* @__PURE__ */ jsx("span", {
@@ -7843,23 +10131,23 @@ function TaskSummaryDialog(props) {
7843
10131
  const resolvedItems = props.items ?? taskIdItems;
7844
10132
  const successCount = resolvedItems.filter((i) => i.status === "success").length;
7845
10133
  const failedCount = resolvedItems.filter((i) => i.status === "failed").length;
7846
- return /* @__PURE__ */ jsx(Dialog$1, {
10134
+ return /* @__PURE__ */ jsx(Dialog, {
7847
10135
  open,
7848
10136
  onOpenChange,
7849
- children: /* @__PURE__ */ jsxs(Dialog$1.Content, {
10137
+ children: /* @__PURE__ */ jsxs(Dialog.Content, {
7850
10138
  className: "w-full sm:max-w-[774px]",
7851
10139
  children: [
7852
- /* @__PURE__ */ jsx(Dialog$1.Header, {
10140
+ /* @__PURE__ */ jsx(Dialog.Header, {
7853
10141
  title,
7854
10142
  description: description ?? `${successCount} succeeded, ${failedCount} failed`,
7855
10143
  onClose: () => onOpenChange(false),
7856
10144
  className: "border-b-0"
7857
10145
  }),
7858
- /* @__PURE__ */ jsx(Dialog$1.Body, {
10146
+ /* @__PURE__ */ jsx(Dialog.Body, {
7859
10147
  className: "px-5 py-0",
7860
10148
  children: renderContent ? renderContent(resolvedItems) : /* @__PURE__ */ jsx(DefaultTableContent, { items: resolvedItems })
7861
10149
  }),
7862
- /* @__PURE__ */ jsxs(Dialog$1.Footer, {
10150
+ /* @__PURE__ */ jsxs(Dialog.Footer, {
7863
10151
  className: "border-t-0",
7864
10152
  children: [actions, /* @__PURE__ */ jsx(Button$1, {
7865
10153
  type: "primary",
@@ -8192,7 +10480,7 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
8192
10480
  notifyChangeDebounced
8193
10481
  ]);
8194
10482
  return /* @__PURE__ */ jsxs("div", {
8195
- className: cn("flex flex-col gap-2", className),
10483
+ className: cn$1("flex flex-col gap-2", className),
8196
10484
  children: [/* @__PURE__ */ jsx("p", {
8197
10485
  className: "text-muted-foreground text-xs font-medium",
8198
10486
  children: "Custom Range"
@@ -8227,12 +10515,12 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
8227
10515
  initialFocus: true
8228
10516
  })
8229
10517
  })]
8230
- }), /* @__PURE__ */ jsx(Input$1, {
10518
+ }), /* @__PURE__ */ jsx(Input, {
8231
10519
  type: "time",
8232
10520
  id: startTimeId,
8233
10521
  value: startTime,
8234
10522
  onChange: handleStartTimeChange,
8235
- className: cn("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
10523
+ className: cn$1("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
8236
10524
  })]
8237
10525
  }),
8238
10526
  /* @__PURE__ */ jsx("span", {
@@ -8267,12 +10555,12 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
8267
10555
  initialFocus: true
8268
10556
  })
8269
10557
  })]
8270
- }), /* @__PURE__ */ jsx(Input$1, {
10558
+ }), /* @__PURE__ */ jsx(Input, {
8271
10559
  type: "time",
8272
10560
  id: endTimeId,
8273
10561
  value: endTime,
8274
10562
  onChange: handleEndTimeChange,
8275
- className: cn("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
10563
+ className: cn$1("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
8276
10564
  })]
8277
10565
  })
8278
10566
  ]
@@ -8285,7 +10573,7 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
8285
10573
  function QuickRangesPanel({ presets, value, onPresetSelect, className }) {
8286
10574
  const selectedPreset = value?.type === "preset" ? value.preset : void 0;
8287
10575
  return /* @__PURE__ */ jsxs("div", {
8288
- className: cn("flex flex-col gap-2", className),
10576
+ className: cn$1("flex flex-col gap-2", className),
8289
10577
  children: [/* @__PURE__ */ jsx("p", {
8290
10578
  className: "text-muted-foreground px-3 text-xs font-medium",
8291
10579
  children: "Presets"
@@ -8296,9 +10584,9 @@ function QuickRangesPanel({ presets, value, onPresetSelect, className }) {
8296
10584
  return /* @__PURE__ */ jsxs("button", {
8297
10585
  type: "button",
8298
10586
  onClick: () => onPresetSelect(preset),
8299
- className: cn("flex items-center justify-between gap-2 rounded-lg px-3 py-1.5 text-xs transition-colors", "hover:bg-accent hover:text-accent-foreground", isSelected ? "bg-accent text-primary border-border border font-medium" : "border border-transparent"),
10587
+ className: cn$1("flex items-center justify-between gap-2 rounded-lg px-3 py-1.5 text-xs transition-colors", "hover:bg-accent hover:text-accent-foreground", isSelected ? "bg-accent text-primary border-border border font-medium" : "border border-transparent"),
8300
10588
  children: [/* @__PURE__ */ jsx("span", { children: preset.label }), /* @__PURE__ */ jsx("kbd", {
8301
- className: cn("bg-muted pointer-events-none hidden h-5 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium select-none sm:flex", isSelected ? "border-primary" : "bg-muted/50 border-transparent"),
10589
+ className: cn$1("bg-muted pointer-events-none hidden h-5 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium select-none sm:flex", isSelected ? "border-primary" : "bg-muted/50 border-transparent"),
8302
10590
  children: preset.shortcut
8303
10591
  })]
8304
10592
  }, preset.key);
@@ -8312,17 +10600,17 @@ function QuickRangesPanel({ presets, value, onPresetSelect, className }) {
8312
10600
  function TimezoneSelector({ value, onChange, options, className }) {
8313
10601
  const selectedOption = options.find((opt) => opt.value === value);
8314
10602
  return /* @__PURE__ */ jsxs("div", {
8315
- className: cn("flex items-center gap-2", className),
8316
- children: [/* @__PURE__ */ jsx(Globe, { className: "text-muted-foreground h-4 w-4 shrink-0" }), /* @__PURE__ */ jsxs(Select$1, {
10603
+ className: cn$1("flex items-center gap-2", className),
10604
+ children: [/* @__PURE__ */ jsx(Globe, { className: "text-muted-foreground h-4 w-4 shrink-0" }), /* @__PURE__ */ jsxs(Select, {
8317
10605
  value,
8318
10606
  onValueChange: onChange,
8319
- children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
10607
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
8320
10608
  className: "hover:bg-accent h-8 min-w-[180px] border-0 bg-transparent px-2 text-xs shadow-none",
8321
- children: /* @__PURE__ */ jsx(SelectValue$1, {
10609
+ children: /* @__PURE__ */ jsx(SelectValue, {
8322
10610
  placeholder: "Select timezone",
8323
10611
  children: selectedOption?.label ?? value
8324
10612
  })
8325
- }), /* @__PURE__ */ jsx(SelectContent$1, { children: options.map((option) => /* @__PURE__ */ jsx(SelectItem$1, {
10613
+ }), /* @__PURE__ */ jsx(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
8326
10614
  value: option.value,
8327
10615
  className: "text-xs",
8328
10616
  children: option.label
@@ -8652,7 +10940,7 @@ function TimeRangePicker({ value, onChange, onClear, timezone: timezoneProp, pre
8652
10940
  type: "quaternary",
8653
10941
  theme: "outline",
8654
10942
  disabled,
8655
- className: cn("text-foreground min-w-[200px] items-center justify-between gap-2 px-3 font-normal", className),
10943
+ className: cn$1("text-foreground min-w-[200px] items-center justify-between gap-2 px-3 font-normal", className),
8656
10944
  children: [/* @__PURE__ */ jsxs("div", {
8657
10945
  className: "flex flex-1 items-center gap-2",
8658
10946
  children: [/* @__PURE__ */ jsx(Icon, {
@@ -8668,7 +10956,7 @@ function TimeRangePicker({ value, onChange, onClear, timezone: timezoneProp, pre
8668
10956
  e.preventDefault();
8669
10957
  handleClear(e);
8670
10958
  },
8671
- className: cn("size-[14px] shrink-0 p-0 hover:bg-transparent", "hover:text-destructive text-icon-quaternary hover:bg-transparent dark:text-white", "focus:ring-ring focus:ring-2 focus:ring-offset-1 focus:outline-none", "disabled:pointer-events-none disabled:opacity-50", "transition-colors"),
10959
+ className: cn$1("size-[14px] shrink-0 p-0 hover:bg-transparent", "hover:text-destructive text-icon-quaternary hover:bg-transparent dark:text-white", "focus:ring-ring focus:ring-2 focus:ring-offset-1 focus:outline-none", "disabled:pointer-events-none disabled:opacity-50", "transition-colors"),
8672
10960
  "aria-label": "Clear time range",
8673
10961
  children: /* @__PURE__ */ jsx(Icon, {
8674
10962
  icon: X,
@@ -8837,5 +11125,4 @@ const ThemeScript = React$1.memo(({ forcedTheme, storageKey = "theme", attribute
8837
11125
  });
8838
11126
 
8839
11127
  //#endregion
8840
- export { SidebarGroupAction as $, SheetClose as $n, FormSwitch as $t, TaskPanel as A, DropdownMenuPortal as An, CalendarDayButton as Ar, getGutter as At, TaskQueueProvider as B, AvatarStack as Bn, useFormContext as Bt, localInputStringToUtc as C, DropzoneEmptyState as Cn, Card as Cr, startProgress as Ct, TaskQueueDropdown as D, DropdownMenuGroup as Dn, CardHeader as Dr, Col as Dt, zonedDateToUtcString as E, DropdownMenuContent as En, CardFooter as Er, InputNumber as Et, getContextLabel as F, DropdownMenuSub as Fn, badgeVariants as Fr, GRID_PREFIX as Ft, createOrgMetadata as G, Textarea$1 as Gn, StepperControls as Gt, detectStorage as H, Autocomplete as Hn, useField as Ht, matchesCurrentScope as I, DropdownMenuSubContent as In, Alert as Ir, RESPONSIVE_ARRAY as It, TagsInput as J, TabsLinkTrigger as Jn, defineStepper as Jt, createProjectMetadata as K, Tabs as Kn, FormStep as Kt, useCurrentScope as L, DropdownMenuSubTrigger as Ln, AlertDescription as Lr, RESPONSIVE_MAP as Lt, TaskPanelCounter as M, DropdownMenuRadioItem as Mn, Button$1 as Mr, registerMediaQuery as Mt, TaskPanelActions as N, DropdownMenuSeparator as Nn, buttonVariants$1 as Nr, GRID_BREAKPOINTS as Nt, TaskSummaryDialog as O, DropdownMenuItem as On, CardTitle as Or, Row as Ot, TaskPanelHeader as P, DropdownMenuShortcut as Pn, Badge as Pr, GRID_COLUMNS as Pt, SidebarGroup as Q, Sheet$1 as Qn, FormTextarea as Qt, useTasksWithLabels as R, DropdownMenuTrigger as Rn, AlertTitle as Rr, Form as Rt, getTimezoneOffset as S, DropzoneContent as Sn, Checkbox$1 as Sr, configureProgress as St, utcToLocalInputString as T, DropdownMenuCheckboxItem as Tn, CardDescription as Tr, MoreActions as Tt, RedisTaskStorage as U, LoaderOverlay as Un, InputWithAddons as Ut, TaskQueue as V, avatarStackVariants as Vn, useFieldContext as Vt, LocalTaskStorage as W, Tooltip$1 as Wn, StepperNavigation as Wt, SidebarContent as X, TabsTrigger as Xn, useWatch as Xt, Sidebar as Y, TabsList as Yn, FormWhen as Yt, SidebarFooter as Z, Switch$1 as Zn, useWatchAll as Zt, formatTimezoneLabel as _, FormButton as _n, RadioGroup$1 as _r, SidebarTrigger as _t, formatDateForInput as a, FormRadioItem as an, SheetTitle$1 as ar, SidebarMenu as at, getDefaultTimezoneOptions as b, EmptyContent as bn, Input$1 as br, NavMain as bt, DEFAULT_PRESETS as c, FormField as cn, SelectContent$1 as cr, SidebarMenuButton as ct, getPresetByShortcut as d, FormDescription as dn, SelectLabel$1 as dr, SidebarMenuSub as dt, FormSubmit as en, SheetContent$1 as er, SidebarGroupContent as et, getPresetRange as f, FormCustom as fn, SelectScrollDownButton$1 as fr, SidebarMenuSubButton as ft, createTimezoneOption as g, FormCheckbox as gn, SelectValue$1 as gr, SidebarSeparator as gt, CustomRangePanel as h, Toaster$1 as hn, SelectTrigger$1 as hr, SidebarRail as ht, TimeRangePicker as i, FormRadioGroup as in, SheetOverlay as ir, SidebarInset as it, TaskPanelItem as j, DropdownMenuRadioGroup as jn, LinkButton as jr, getResponsiveValue as jt, TaskQueueTrigger as k, DropdownMenuLabel as kn, Calendar$1 as kr, RowContext as kt, getDefaultPreset as l, FormError as ln, SelectGroup$1 as lr, SidebarMenuItem as lt, QuickRangesPanel as m, useToast as mn, SelectSeparator$1 as mr, SidebarProvider as mt, ClientOnly as n, FormSelectItem as nn, SheetFooter as nr, SidebarHeader as nt, formatSingleTimeDisplay as o, FormInput as on, SheetTrigger as or, SidebarMenuAction as ot, TimezoneSelector as p, FormCopyBox as pn, SelectScrollUpButton$1 as pr, SidebarMenuSubItem as pt, createUserMetadata as q, TabsContent as qn, FormStepper as qt, toApiTimeRange as r, FormRoot as rn, SheetHeader$1 as rr, SidebarInput as rt, formatTimeRangeDisplay as s, FormFieldArray as sn, Select$1 as sr, SidebarMenuBadge as st, ThemeScript as t, FormSelect as tn, SheetDescription$1 as tr, SidebarGroupLabel as tt, getPresetByKey as u, FormDialog as un, SelectItem$1 as ur, SidebarMenuSkeleton as ut, formatUtcForDisplay as v, FormAutocomplete as vn, RadioGroupItem$1 as vr, useSidebar as vt, utcStringToZonedDate as w, DropdownMenu as wn, CardContent as wr, stopProgress as wt, getShortTimezoneDisplay as x, Dropzone as xn, Dialog$1 as xr, PageTitle as xt, getBrowserTimezone as y, FileInputButton as yn, Label$1 as yr, AppSidebar as yt, useTaskQueue as z, CalendarDatePicker as zn, useStepper as zt };
8841
- //# sourceMappingURL=theme-script-B_TkiYs4.mjs.map
11128
+ export { SidebarGroupAction as $, Card as $i, paragraphVariants as $n, MapDrawPolygon as $r, FormSwitch as $t, TaskPanel as A, HoverCard as Ai, DropdownMenuPortal as An, SelectGroup as Ar, getGutter as At, TaskQueueProvider as B, CommandList as Bi, AvatarStack as Bn, Popover as Br, useFormContext as Bt, localInputStringToUtc as C, badgeVariants as Ca, InputGroup as Ci, DropzoneEmptyState as Cn, SheetDescription as Cr, startProgress as Ct, TaskQueueDropdown as D, InputGroupText as Di, DropdownMenuGroup as Dn, SheetTrigger as Dr, Col as Dt, zonedDateToUtcString as E, AlertTitle as Ea, InputGroupInput as Ei, DropdownMenuContent as En, SheetTitle as Er, InputNumber as Et, getContextLabel as F, CommandDialog as Fi, DropdownMenuSub as Fn, SelectSeparator as Fr, GRID_PREFIX as Ft, createOrgMetadata as G, CollapsibleTrigger as Gi, Blockquote as Gn, MapCircle as Gr, StepperControls as Gt, detectStorage as H, CommandShortcut as Hi, Autocomplete as Hn, PopoverContent as Hr, useField as Ht, matchesCurrentScope as I, CommandEmpty as Ii, DropdownMenuSubContent as In, SelectTrigger as Ir, RESPONSIVE_ARRAY as It, TagsInput as J, ChartLegend as Ji, List as Jn, MapDrawCircle as Jr, defineStepper as Jt, createProjectMetadata as K, Checkbox as Ki, Code as Kn, MapCircleMarker as Kr, FormStep as Kt, useCurrentScope as L, CommandGroup as Li, DropdownMenuSubTrigger as Ln, SelectValue as Lr, RESPONSIVE_MAP as Lt, TaskPanelCounter as M, HoverCardTrigger as Mi, DropdownMenuRadioItem as Mn, SelectLabel as Mr, registerMediaQuery as Mt, TaskPanelActions as N, Dialog as Ni, DropdownMenuSeparator as Nn, SelectScrollDownButton as Nr, GRID_BREAKPOINTS as Nt, TaskSummaryDialog as O, InputGroupTextarea as Oi, DropdownMenuItem as On, Select as Or, Row as Ot, TaskPanelHeader as P, Command$1 as Pi, DropdownMenuShortcut as Pn, SelectScrollUpButton as Pr, GRID_COLUMNS as Pt, SidebarGroup as Q, ChartTooltipContent as Qi, Title$1 as Qn, MapDrawMarker as Qr, FormTextarea as Qt, useTasksWithLabels as R, CommandInput as Ri, DropdownMenuTrigger as Rn, RadioGroup as Rr, Form as Rt, getTimezoneOffset as S, Badge as Sa, Label as Si, DropzoneContent as Sn, SheetOverlay as Sr, configureProgress as St, utcToLocalInputString as T, AlertDescription as Ta, InputGroupButton as Ti, DropdownMenuCheckboxItem as Tn, SheetHeader as Tr, MoreActions as Tt, RedisTaskStorage as U, Collapsible as Ui, LoaderOverlay as Un, PopoverTrigger as Ur, InputWithAddons as Ut, TaskQueue as V, CommandSeparator as Vi, avatarStackVariants as Vn, PopoverAnchor as Vr, useFieldContext as Vt, LocalTaskStorage as W, CollapsibleContent as Wi, VisuallyHidden$1 as Wn, Map$1 as Wr, StepperNavigation as Wt, SidebarContent as X, ChartStyle as Xi, Paragraph as Xn, MapDrawDelete as Xr, useWatch as Xt, Sidebar as Y, ChartLegendContent as Yi, ListItem as Yn, MapDrawControl as Yr, FormWhen as Yt, SidebarFooter as Z, ChartTooltip as Zi, Text as Zn, MapDrawEdit as Zr, useWatchAll as Zt, formatTimezoneLabel as _, BreadcrumbItem as _a, MapTooltip as _i, FormButton as _n, Switch as _r, SidebarTrigger as _t, formatDateForInput as a, Calendar$1 as aa, MapLayerGroup as ai, FormRadioItem as an, TabsContent as ar, SidebarMenu as at, getDefaultTimezoneOptions as b, BreadcrumbPage as ba, PlaceAutocomplete as bi, EmptyContent as bn, SheetClose as br, NavMain as bt, DEFAULT_PRESETS as c, ButtonGroupSeparator as ca, MapLocateControl as ci, FormField as cn, TabsTrigger as cr, SidebarMenuButton as ct, getPresetByShortcut as d, Separator as da, MapPolygon as di, FormDescription as dn, TableCaption as dr, SidebarMenuSub as dt, CardFooter as ea, MapDrawPolyline as ei, FormSubmit as en, textVariants as er, SidebarGroupContent as et, getPresetRange as f, LinkButton as fa, MapPolyline as fi, FormCustom as fn, TableCell as fr, SidebarMenuSubButton as ft, createTimezoneOption as g, BreadcrumbEllipsis as ga, MapTileLayer as gi, FormCheckbox as gn, TableRow as gr, SidebarSeparator as gt, CustomRangePanel as h, Breadcrumb as ha, MapSearchControl as hi, Toaster$1 as hn, TableHeader as hr, SidebarRail as ht, TimeRangePicker as i, CardTitle as ia, MapFullscreenControl as ii, FormRadioGroup as in, Tabs as ir, SidebarInset as it, TaskPanelItem as j, HoverCardContent as ji, DropdownMenuRadioGroup as jn, SelectItem as jr, getResponsiveValue as jt, TaskQueueTrigger as k, Input as ki, DropdownMenuLabel as kn, SelectContent as kr, RowContext as kt, getDefaultPreset as l, ButtonGroupText as la, MapMarker as li, FormError as ln, Table as lr, SidebarMenuItem as lt, QuickRangesPanel as m, buttonVariants$1 as ma, MapRectangle as mi, useToast as mn, TableHead as mr, SidebarProvider as mt, ClientOnly as n, CardContent as na, MapDrawUndo as ni, FormSelectItem as nn, Tooltip as nr, SidebarHeader as nt, formatSingleTimeDisplay as o, CalendarDayButton as oa, MapLayers as oi, FormInput as on, TabsLinkTrigger as or, SidebarMenuAction as ot, TimezoneSelector as p, Button$1 as pa, MapPopup as pi, FormCopyBox as pn, TableFooter as pr, SidebarMenuSubItem as pt, createUserMetadata as q, ChartContainer as qi, Link as qn, MapControlContainer as qr, FormStepper as qt, toApiTimeRange as r, CardDescription as ra, MapFeatureGroup as ri, FormRoot as rn, Textarea as rr, SidebarInput as rt, formatTimeRangeDisplay as s, ButtonGroup as sa, MapLayersControl as si, FormFieldArray as sn, TabsList as sr, SidebarMenuBadge as st, ThemeScript as t, CardHeader as ta, MapDrawRectangle as ti, FormSelect as tn, titleVariants$1 as tr, SidebarGroupLabel as tt, getPresetByKey as u, buttonGroupVariants as ua, MapMarkerClusterGroup as ui, FormDialog as un, TableBody as ur, SidebarMenuSkeleton as ut, formatUtcForDisplay as v, BreadcrumbLink as va, MapZoomControl as vi, FormAutocomplete as vn, Skeleton as vr, useSidebar as vt, utcStringToZonedDate as w, Alert as wa, InputGroupAddon as wi, DropdownMenu as wn, SheetFooter as wr, stopProgress as wt, getShortTimezoneDisplay as x, BreadcrumbSeparator as xa, Spinner as xi, Dropzone as xn, SheetContent as xr, PageTitle as xt, getBrowserTimezone as y, BreadcrumbList as ya, useLeaflet as yi, FileInputButton as yn, Sheet as yr, AppSidebar as yt, useTaskQueue as z, CommandItem as zi, CalendarDatePicker as zn, RadioGroupItem as zr, useStepper as zt };