admin-ui-starter-kit 0.1.0 → 0.1.1

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 (1121) hide show
  1. package/.agents/skills/component-library-rules/SKILL.md +19 -0
  2. package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +2 -2
  3. package/.agents/skills/component-library-rules/references/import-paths.md +21 -0
  4. package/AGENTS.md +3 -1
  5. package/INTEGRATION.md +29 -2
  6. package/PUBLISHING.md +2 -0
  7. package/README.md +24 -0
  8. package/dist/_shared/accordion-CztqyaIN.js +130 -0
  9. package/dist/_shared/accordion-CztqyaIN.js.map +1 -0
  10. package/dist/_shared/accordion-D5uTCLCB.cjs +2 -0
  11. package/dist/_shared/accordion-D5uTCLCB.cjs.map +1 -0
  12. package/dist/_shared/action-menu-Yrj6VzFS.js +96 -0
  13. package/dist/_shared/action-menu-Yrj6VzFS.js.map +1 -0
  14. package/dist/_shared/action-menu-eVP8GGlv.cjs +2 -0
  15. package/dist/_shared/action-menu-eVP8GGlv.cjs.map +1 -0
  16. package/dist/_shared/ai-artifact-DaHXJTKg.cjs +3 -0
  17. package/dist/_shared/ai-artifact-DaHXJTKg.cjs.map +1 -0
  18. package/dist/_shared/ai-artifact-DyLn3JAs.js +1068 -0
  19. package/dist/_shared/ai-artifact-DyLn3JAs.js.map +1 -0
  20. package/dist/_shared/alert-BVw4Mq6H.js +48 -0
  21. package/dist/_shared/alert-BVw4Mq6H.js.map +1 -0
  22. package/dist/_shared/alert-DXSlR9ja.cjs +2 -0
  23. package/dist/_shared/alert-DXSlR9ja.cjs.map +1 -0
  24. package/dist/_shared/avatar-CpBz9pTv.js +52 -0
  25. package/dist/_shared/avatar-CpBz9pTv.js.map +1 -0
  26. package/dist/_shared/avatar-dg20YFFs.cjs +2 -0
  27. package/dist/_shared/avatar-dg20YFFs.cjs.map +1 -0
  28. package/dist/_shared/badge-BVCh_hfL.js +108 -0
  29. package/dist/_shared/badge-BVCh_hfL.js.map +1 -0
  30. package/dist/_shared/badge-C49SSz-6.cjs +2 -0
  31. package/dist/_shared/badge-C49SSz-6.cjs.map +1 -0
  32. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs +2 -0
  33. package/dist/_shared/breadcrumbs-Bo7j5Rhv.cjs.map +1 -0
  34. package/dist/_shared/breadcrumbs-Dc93fqqE.js +111 -0
  35. package/dist/_shared/breadcrumbs-Dc93fqqE.js.map +1 -0
  36. package/dist/_shared/button-2xglT7yf.cjs +2 -0
  37. package/dist/_shared/button-2xglT7yf.cjs.map +1 -0
  38. package/dist/_shared/button-ChCkwoOD.js +176 -0
  39. package/dist/_shared/button-ChCkwoOD.js.map +1 -0
  40. package/dist/_shared/button-D0nF99a9.cjs +2 -0
  41. package/dist/_shared/button-D0nF99a9.cjs.map +1 -0
  42. package/dist/_shared/button-DBR4QI9E.js +46 -0
  43. package/dist/_shared/button-DBR4QI9E.js.map +1 -0
  44. package/dist/_shared/buttons-Bcnt1md_.js +143 -0
  45. package/dist/_shared/buttons-Bcnt1md_.js.map +1 -0
  46. package/dist/_shared/buttons-km9xqXJv.cjs +2 -0
  47. package/dist/_shared/buttons-km9xqXJv.cjs.map +1 -0
  48. package/dist/_shared/card-radio-group-BGH93O5-.js +158 -0
  49. package/dist/_shared/card-radio-group-BGH93O5-.js.map +1 -0
  50. package/dist/_shared/card-radio-group-Vq741uhL.cjs +2 -0
  51. package/dist/_shared/card-radio-group-Vq741uhL.cjs.map +1 -0
  52. package/dist/_shared/combobox-BgXAxjU2.js +746 -0
  53. package/dist/_shared/combobox-BgXAxjU2.js.map +1 -0
  54. package/dist/_shared/combobox-DuIyh3xJ.cjs +2 -0
  55. package/dist/_shared/combobox-DuIyh3xJ.cjs.map +1 -0
  56. package/dist/_shared/command-BbiijN61.js +39 -0
  57. package/dist/_shared/command-BbiijN61.js.map +1 -0
  58. package/dist/_shared/command-D7zTvyBJ.cjs +2 -0
  59. package/dist/_shared/command-D7zTvyBJ.cjs.map +1 -0
  60. package/dist/_shared/command-DGNtTI-V.cjs +2 -0
  61. package/dist/_shared/command-DGNtTI-V.cjs.map +1 -0
  62. package/dist/_shared/command-jKbwFRtS.js +123 -0
  63. package/dist/_shared/command-jKbwFRtS.js.map +1 -0
  64. package/dist/_shared/comments-CNUsdwGW.cjs +2 -0
  65. package/dist/_shared/comments-CNUsdwGW.cjs.map +1 -0
  66. package/dist/_shared/comments-CvmS7zG3.js +945 -0
  67. package/dist/_shared/comments-CvmS7zG3.js.map +1 -0
  68. package/dist/_shared/containers-BFDv7cCV.cjs +2 -0
  69. package/dist/_shared/containers-BFDv7cCV.cjs.map +1 -0
  70. package/dist/_shared/containers-C1-A_2PT.js +19 -0
  71. package/dist/_shared/containers-C1-A_2PT.js.map +1 -0
  72. package/dist/_shared/content-container-CwqFnaI0.cjs +2 -0
  73. package/dist/_shared/content-container-CwqFnaI0.cjs.map +1 -0
  74. package/dist/_shared/content-container-D_3JGBSc.js +33 -0
  75. package/dist/_shared/content-container-D_3JGBSc.js.map +1 -0
  76. package/dist/_shared/copyable-CHhCGMfW.js +38 -0
  77. package/dist/_shared/copyable-CHhCGMfW.js.map +1 -0
  78. package/dist/_shared/copyable-ndaiocYq.cjs +2 -0
  79. package/dist/_shared/copyable-ndaiocYq.cjs.map +1 -0
  80. package/dist/_shared/date-picker-B8O_qbik.js +1353 -0
  81. package/dist/_shared/date-picker-B8O_qbik.js.map +1 -0
  82. package/dist/_shared/date-picker-BnOjyuKS.cjs +2 -0
  83. package/dist/_shared/date-picker-BnOjyuKS.cjs.map +1 -0
  84. package/dist/_shared/date-pickers-Cas9cPlj.js +330 -0
  85. package/dist/_shared/date-pickers-Cas9cPlj.js.map +1 -0
  86. package/dist/_shared/date-pickers-Dk-G3RMy.cjs +2 -0
  87. package/dist/_shared/date-pickers-Dk-G3RMy.cjs.map +1 -0
  88. package/dist/_shared/dialog-67GmkMLC.js +101 -0
  89. package/dist/_shared/dialog-67GmkMLC.js.map +1 -0
  90. package/dist/_shared/dialog-BF_4uAhE.cjs +2 -0
  91. package/dist/_shared/dialog-BF_4uAhE.cjs.map +1 -0
  92. package/dist/_shared/display-B9xVWboG.cjs +8 -0
  93. package/dist/_shared/display-B9xVWboG.cjs.map +1 -0
  94. package/dist/_shared/display-BM_GxDAo.js +1237 -0
  95. package/dist/_shared/display-BM_GxDAo.js.map +1 -0
  96. package/dist/_shared/dropdown-menu-4nxEBMnd.js +147 -0
  97. package/dist/_shared/dropdown-menu-4nxEBMnd.js.map +1 -0
  98. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs +2 -0
  99. package/dist/_shared/dropdown-menu-DZlWHqWS.cjs.map +1 -0
  100. package/dist/_shared/form-field-BQlki-8s.js +319 -0
  101. package/dist/_shared/form-field-BQlki-8s.js.map +1 -0
  102. package/dist/_shared/form-field-DzpwVS99.cjs +2 -0
  103. package/dist/_shared/form-field-DzpwVS99.cjs.map +1 -0
  104. package/dist/_shared/form-sizing-CcbB-OHF.js +21 -0
  105. package/dist/_shared/form-sizing-CcbB-OHF.js.map +1 -0
  106. package/dist/_shared/form-sizing-Cw12UeI6.cjs +2 -0
  107. package/dist/_shared/form-sizing-Cw12UeI6.cjs.map +1 -0
  108. package/dist/_shared/format-B2AdSQVn.cjs +2 -0
  109. package/dist/_shared/format-B2AdSQVn.cjs.map +1 -0
  110. package/dist/_shared/format-CP65h1vK.js +48 -0
  111. package/dist/_shared/format-CP65h1vK.js.map +1 -0
  112. package/dist/_shared/forms-B8aaNG44.cjs +2 -0
  113. package/dist/_shared/forms-B8aaNG44.cjs.map +1 -0
  114. package/dist/_shared/forms-BusuTZZ2.js +3374 -0
  115. package/dist/_shared/forms-BusuTZZ2.js.map +1 -0
  116. package/dist/_shared/header-DWfOUjFL.cjs +2 -0
  117. package/dist/_shared/header-DWfOUjFL.cjs.map +1 -0
  118. package/dist/_shared/header-KpdoLtP9.js +369 -0
  119. package/dist/_shared/header-KpdoLtP9.js.map +1 -0
  120. package/dist/_shared/heading-BprqyzDs.js +39 -0
  121. package/dist/_shared/heading-BprqyzDs.js.map +1 -0
  122. package/dist/_shared/heading-mZc_jan1.cjs +2 -0
  123. package/dist/_shared/heading-mZc_jan1.cjs.map +1 -0
  124. package/dist/_shared/hooks-C-uWoRq5.cjs +2 -0
  125. package/dist/_shared/hooks-C-uWoRq5.cjs.map +1 -0
  126. package/dist/_shared/hooks-D5HJtvvP.js +118 -0
  127. package/dist/_shared/hooks-D5HJtvvP.js.map +1 -0
  128. package/dist/_shared/icon-badge-BBqDyAUz.cjs +2 -0
  129. package/dist/_shared/icon-badge-BBqDyAUz.cjs.map +1 -0
  130. package/dist/_shared/icon-badge-Bi63T-bj.js +52 -0
  131. package/dist/_shared/icon-badge-Bi63T-bj.js.map +1 -0
  132. package/dist/_shared/input-B2YXTHqz.cjs +2 -0
  133. package/dist/_shared/input-B2YXTHqz.cjs.map +1 -0
  134. package/dist/_shared/input-BJb10xb9.cjs +2 -0
  135. package/dist/_shared/input-BJb10xb9.cjs.map +1 -0
  136. package/dist/_shared/input-CZxP5Xgj.js +17 -0
  137. package/dist/_shared/input-CZxP5Xgj.js.map +1 -0
  138. package/dist/_shared/input-DQahu2sm.js +182 -0
  139. package/dist/_shared/input-DQahu2sm.js.map +1 -0
  140. package/dist/_shared/item-Cu5JbZyZ.js +224 -0
  141. package/dist/_shared/item-Cu5JbZyZ.js.map +1 -0
  142. package/dist/_shared/item-Cx_7QZ2o.cjs +2 -0
  143. package/dist/_shared/item-Cx_7QZ2o.cjs.map +1 -0
  144. package/dist/_shared/mentions-CS3rIhze.js +493 -0
  145. package/dist/_shared/mentions-CS3rIhze.js.map +1 -0
  146. package/dist/_shared/mentions-D7gnP3Nf.cjs +2 -0
  147. package/dist/_shared/mentions-D7gnP3Nf.cjs.map +1 -0
  148. package/dist/_shared/metadata-CRsVWE8Y.cjs +2 -0
  149. package/dist/_shared/metadata-CRsVWE8Y.cjs.map +1 -0
  150. package/dist/_shared/metadata-CfG0FdFZ.js +236 -0
  151. package/dist/_shared/metadata-CfG0FdFZ.js.map +1 -0
  152. package/dist/_shared/money-display-Bd0rkjc9.js +198 -0
  153. package/dist/_shared/money-display-Bd0rkjc9.js.map +1 -0
  154. package/dist/_shared/money-display-DSFft9Mi.cjs +2 -0
  155. package/dist/_shared/money-display-DSFft9Mi.cjs.map +1 -0
  156. package/dist/_shared/navigation-Do9k5Xh1.js +420 -0
  157. package/dist/_shared/navigation-Do9k5Xh1.js.map +1 -0
  158. package/dist/_shared/navigation-QAAD3HJd.cjs +2 -0
  159. package/dist/_shared/navigation-QAAD3HJd.cjs.map +1 -0
  160. package/dist/_shared/overlays-B8AH8fNv.js +633 -0
  161. package/dist/_shared/overlays-B8AH8fNv.js.map +1 -0
  162. package/dist/_shared/overlays-DOcoRy8k.cjs +2 -0
  163. package/dist/_shared/overlays-DOcoRy8k.cjs.map +1 -0
  164. package/dist/_shared/page-BPCeKX9X.js +263 -0
  165. package/dist/_shared/page-BPCeKX9X.js.map +1 -0
  166. package/dist/_shared/page-DMM32sxi.cjs +2 -0
  167. package/dist/_shared/page-DMM32sxi.cjs.map +1 -0
  168. package/dist/_shared/popover-B1f_EUQS.cjs +2 -0
  169. package/dist/_shared/popover-B1f_EUQS.cjs.map +1 -0
  170. package/dist/_shared/popover-CgRGcFk9.js +83 -0
  171. package/dist/_shared/popover-CgRGcFk9.js.map +1 -0
  172. package/dist/_shared/popover-menu-BEKIT3LR.cjs +2 -0
  173. package/dist/_shared/popover-menu-BEKIT3LR.cjs.map +1 -0
  174. package/dist/_shared/popover-menu-BHdHLEVL.js +95 -0
  175. package/dist/_shared/popover-menu-BHdHLEVL.js.map +1 -0
  176. package/dist/_shared/rich-text-editor-0uoIoYXU.js +608 -0
  177. package/dist/_shared/rich-text-editor-0uoIoYXU.js.map +1 -0
  178. package/dist/_shared/rich-text-editor-wTiARGuB.cjs +2 -0
  179. package/dist/_shared/rich-text-editor-wTiARGuB.cjs.map +1 -0
  180. package/dist/_shared/scroll-area-Bo17wtZD.cjs +2 -0
  181. package/dist/_shared/scroll-area-Bo17wtZD.cjs.map +1 -0
  182. package/dist/_shared/scroll-area-Cj-hmB5D.js +41 -0
  183. package/dist/_shared/scroll-area-Cj-hmB5D.js.map +1 -0
  184. package/dist/_shared/select-07RRiTWc.js +85 -0
  185. package/dist/_shared/select-07RRiTWc.js.map +1 -0
  186. package/dist/_shared/select-BfiU7a4n.cjs +2 -0
  187. package/dist/_shared/select-BfiU7a4n.cjs.map +1 -0
  188. package/dist/_shared/separator-CN9zAJfs.cjs +2 -0
  189. package/dist/_shared/separator-CN9zAJfs.cjs.map +1 -0
  190. package/dist/_shared/separator-DR0uUMKa.js +16 -0
  191. package/dist/_shared/separator-DR0uUMKa.js.map +1 -0
  192. package/dist/_shared/sheet-B5FoGJAZ.cjs +2 -0
  193. package/dist/_shared/sheet-B5FoGJAZ.cjs.map +1 -0
  194. package/dist/_shared/sheet-cUI8cypP.js +100 -0
  195. package/dist/_shared/sheet-cUI8cypP.js.map +1 -0
  196. package/dist/_shared/sidebar-Bq7yKLrG.cjs +2 -0
  197. package/dist/_shared/sidebar-Bq7yKLrG.cjs.map +1 -0
  198. package/dist/_shared/sidebar-Da20tCUc.cjs +2 -0
  199. package/dist/_shared/sidebar-Da20tCUc.cjs.map +1 -0
  200. package/dist/_shared/sidebar-Q6TYE8Ux.js +371 -0
  201. package/dist/_shared/sidebar-Q6TYE8Ux.js.map +1 -0
  202. package/dist/_shared/sidebar-WmnQ55YY.js +537 -0
  203. package/dist/_shared/sidebar-WmnQ55YY.js.map +1 -0
  204. package/dist/_shared/skeleton-B3HWEc6G.js +14 -0
  205. package/dist/_shared/skeleton-B3HWEc6G.js.map +1 -0
  206. package/dist/_shared/skeleton-Cz_l8-fc.cjs +2 -0
  207. package/dist/_shared/skeleton-Cz_l8-fc.cjs.map +1 -0
  208. package/dist/_shared/slot-BgnZtKR5.js +18 -0
  209. package/dist/_shared/slot-BgnZtKR5.js.map +1 -0
  210. package/dist/_shared/slot-Dac1ipUC.cjs +2 -0
  211. package/dist/_shared/slot-Dac1ipUC.cjs.map +1 -0
  212. package/dist/_shared/smart-card-Bm_VxYUG.cjs +2 -0
  213. package/dist/_shared/smart-card-Bm_VxYUG.cjs.map +1 -0
  214. package/dist/_shared/smart-card-MT6JjkoI.js +360 -0
  215. package/dist/_shared/smart-card-MT6JjkoI.js.map +1 -0
  216. package/dist/_shared/spinner-BQjxJ_Kx.js +67 -0
  217. package/dist/_shared/spinner-BQjxJ_Kx.js.map +1 -0
  218. package/dist/_shared/spinner-Dvaa6GUm.cjs +2 -0
  219. package/dist/_shared/spinner-Dvaa6GUm.cjs.map +1 -0
  220. package/dist/_shared/switch-C0yyhsXZ.js +51 -0
  221. package/dist/_shared/switch-C0yyhsXZ.js.map +1 -0
  222. package/dist/_shared/switch-DozkSQNn.cjs +2 -0
  223. package/dist/_shared/switch-DozkSQNn.cjs.map +1 -0
  224. package/dist/_shared/textarea-Cgl-FPwu.js +119 -0
  225. package/dist/_shared/textarea-Cgl-FPwu.js.map +1 -0
  226. package/dist/_shared/textarea-D8wC0XlZ.cjs +2 -0
  227. package/dist/_shared/textarea-D8wC0XlZ.cjs.map +1 -0
  228. package/dist/_shared/tooltip-Cws4BiPT.js +49 -0
  229. package/dist/_shared/tooltip-Cws4BiPT.js.map +1 -0
  230. package/dist/_shared/tooltip-DyUi-Tac.cjs +2 -0
  231. package/dist/_shared/tooltip-DyUi-Tac.cjs.map +1 -0
  232. package/dist/_shared/typography-BW7iZBx7.cjs +2 -0
  233. package/dist/_shared/typography-BW7iZBx7.cjs.map +1 -0
  234. package/dist/_shared/typography-a3hydyvI.js +102 -0
  235. package/dist/_shared/typography-a3hydyvI.js.map +1 -0
  236. package/dist/components/base/accordion/index.cjs +1 -1
  237. package/dist/components/base/accordion/index.js +1 -1
  238. package/dist/components/base/badge/index.cjs +1 -1
  239. package/dist/components/base/badge/index.js +1 -1
  240. package/dist/components/base/buttons/index.cjs +1 -1
  241. package/dist/components/base/buttons/index.js +2 -2
  242. package/dist/components/base/cards/index.cjs +1 -1
  243. package/dist/components/base/cards/index.js +1 -1
  244. package/dist/components/base/combobox/index.cjs +1 -1
  245. package/dist/components/base/combobox/index.js +1 -1
  246. package/dist/components/base/command/index.cjs +1 -1
  247. package/dist/components/base/command/index.js +2 -2
  248. package/dist/components/base/copyable/index.cjs +1 -1
  249. package/dist/components/base/copyable/index.js +1 -1
  250. package/dist/components/base/currency/index.cjs +1 -1
  251. package/dist/components/base/currency/index.js +1 -1
  252. package/dist/components/base/date-pickers/index.cjs +1 -1
  253. package/dist/components/base/date-pickers/index.js +2 -2
  254. package/dist/components/base/display/index.cjs +1 -1
  255. package/dist/components/base/display/index.js +12 -11
  256. package/dist/components/base/display/metadata/index.cjs +1 -0
  257. package/dist/components/base/display/metadata/index.js +2 -0
  258. package/dist/components/base/event-calendar/index.cjs +1 -1
  259. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  260. package/dist/components/base/event-calendar/index.js +4 -4
  261. package/dist/components/base/forms/index.cjs +1 -1
  262. package/dist/components/base/forms/index.js +6 -6
  263. package/dist/components/base/item/index.cjs +1 -1
  264. package/dist/components/base/item/index.js +1 -1
  265. package/dist/components/base/map/index.cjs +1 -1
  266. package/dist/components/base/map/index.js +3 -3
  267. package/dist/components/base/navigation/index.cjs +1 -1
  268. package/dist/components/base/navigation/index.js +4 -4
  269. package/dist/components/base/popover/index.cjs +1 -1
  270. package/dist/components/base/popover/index.js +1 -1
  271. package/dist/components/base/popover-menu/index.cjs +1 -1
  272. package/dist/components/base/popover-menu/index.js +1 -1
  273. package/dist/components/base/sheet/index.cjs +1 -1
  274. package/dist/components/base/sheet/index.js +1 -1
  275. package/dist/components/base/sidebar/index.cjs +1 -1
  276. package/dist/components/base/sidebar/index.js +1 -1
  277. package/dist/components/base/spinner/index.cjs +1 -1
  278. package/dist/components/base/spinner/index.js +1 -1
  279. package/dist/components/base/table/index.cjs +1 -1
  280. package/dist/components/base/table/index.js +7 -7
  281. package/dist/components/composed/admin/index.cjs +1 -1
  282. package/dist/components/composed/admin/index.cjs.map +1 -1
  283. package/dist/components/composed/admin/index.js +12 -12
  284. package/dist/components/composed/ai/index.cjs +1 -1
  285. package/dist/components/composed/ai/index.js +9 -9
  286. package/dist/components/composed/analytics/index.cjs +1 -1
  287. package/dist/components/composed/analytics/index.cjs.map +1 -1
  288. package/dist/components/composed/analytics/index.js +4 -4
  289. package/dist/components/composed/cards/index.cjs +1 -1
  290. package/dist/components/composed/cards/index.cjs.map +1 -1
  291. package/dist/components/composed/cards/index.js +8 -8
  292. package/dist/components/composed/commerce/index.cjs +1 -1
  293. package/dist/components/composed/commerce/index.cjs.map +1 -1
  294. package/dist/components/composed/commerce/index.js +9 -9
  295. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  296. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  297. package/dist/components/composed/dark-surfaces/index.js +6 -6
  298. package/dist/components/composed/data-display/index.cjs +1 -1
  299. package/dist/components/composed/data-display/index.cjs.map +1 -1
  300. package/dist/components/composed/data-display/index.js +7 -7
  301. package/dist/components/composed/navigation/index.cjs +1 -1
  302. package/dist/components/composed/navigation/index.js +4 -4
  303. package/dist/components/composed/onboarding/index.cjs +1 -1
  304. package/dist/components/composed/onboarding/index.js +2 -2
  305. package/dist/components/composed/timelines/index.cjs +1 -1
  306. package/dist/components/composed/timelines/index.js +2 -2
  307. package/dist/components/features/activities/index.cjs +1 -1
  308. package/dist/components/features/activities/index.js +4 -4
  309. package/dist/components/features/ai-chat/index.cjs +1 -1
  310. package/dist/components/features/ai-chat/index.cjs.map +1 -1
  311. package/dist/components/features/ai-chat/index.js +6 -6
  312. package/dist/components/features/card/index.cjs +1 -1
  313. package/dist/components/features/card/index.js +3 -3
  314. package/dist/components/features/comments/index.cjs +1 -1
  315. package/dist/components/features/comments/index.js +2 -2
  316. package/dist/components/features/event-log/index.cjs +1 -1
  317. package/dist/components/features/event-log/index.js +3 -3
  318. package/dist/components/features/filters/index.cjs +1 -1
  319. package/dist/components/features/filters/index.js +9 -9
  320. package/dist/components/features/global-search/index.cjs +1 -1
  321. package/dist/components/features/global-search/index.js +2 -2
  322. package/dist/components/features/kanban/index.cjs +1 -1
  323. package/dist/components/features/kanban/index.js +1 -1
  324. package/dist/components/features/mentions/index.cjs +1 -1
  325. package/dist/components/features/mentions/index.js +1 -1
  326. package/dist/components/features/overlays/index.cjs +1 -1
  327. package/dist/components/features/overlays/index.js +1 -1
  328. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  329. package/dist/components/features/rich-text-editor/index.js +1 -1
  330. package/dist/components/features/suggestions/index.cjs +1 -1
  331. package/dist/components/features/suggestions/index.js +1 -1
  332. package/dist/components/features/sync/index.cjs +1 -1
  333. package/dist/components/features/sync/index.js +2 -2
  334. package/dist/components/layout/containers/index.cjs +1 -1
  335. package/dist/components/layout/containers/index.js +2 -2
  336. package/dist/components/layout/header/index.cjs +1 -1
  337. package/dist/components/layout/header/index.js +1 -1
  338. package/dist/components/layout/hooks/index.cjs +1 -1
  339. package/dist/components/layout/hooks/index.js +1 -1
  340. package/dist/components/layout/index.cjs +1 -1
  341. package/dist/components/layout/index.js +6 -6
  342. package/dist/components/layout/page/index.cjs +1 -1
  343. package/dist/components/layout/page/index.js +1 -1
  344. package/dist/components/layout/sidebar/index.cjs +1 -1
  345. package/dist/components/layout/sidebar/index.js +2 -2
  346. package/dist/components/typography/index.cjs +1 -1
  347. package/dist/components/typography/index.js +3 -2
  348. package/dist/showcase/assets/AreaChart-CJ57G5Ub.js +6 -0
  349. package/dist/showcase/assets/CSPContext-BA7DfnCI.js +1 -0
  350. package/dist/showcase/assets/CompositeItem-PwzgE4va.js +1 -0
  351. package/dist/showcase/assets/CompositeRoot-Du4CMlK7.js +1 -0
  352. package/dist/showcase/assets/DialogTrigger-FkENgwo6.js +1 -0
  353. package/dist/showcase/assets/FormContext-ChygLayp.js +1 -0
  354. package/dist/showcase/assets/PreviewLayout-z6vpJJGt.js +1 -0
  355. package/dist/showcase/assets/RadioGroup-CcDmbxOw.js +1 -0
  356. package/dist/showcase/assets/Separator-Dk4eN76U.js +1 -0
  357. package/dist/showcase/assets/ToolbarRootContext-D_KAA5hZ.js +1 -0
  358. package/dist/showcase/assets/accordion-dQszzfmw.js +172 -0
  359. package/dist/showcase/assets/accordion-variants-Dp4wxic-.js +1 -0
  360. package/dist/showcase/assets/action-menu-CBi2Eiy0.js +1 -0
  361. package/dist/showcase/assets/activities-DoXsgP4G.js +501 -0
  362. package/dist/showcase/assets/activities-feed-card-xz5FtkOm.js +1 -0
  363. package/dist/showcase/assets/admin-CxklUqAG.js +80 -0
  364. package/dist/showcase/assets/ai-artifact-DkhUdEbM.js +2 -0
  365. package/dist/showcase/assets/ai-chat-B6PuqkEu.js +568 -0
  366. package/dist/showcase/assets/ai-elements-D_rpj_ds.js +379 -0
  367. package/dist/showcase/assets/ai-new-CUPrAbOK.js +167 -0
  368. package/dist/showcase/assets/ai-tool-call-CEr-dGVx.js +1 -0
  369. package/dist/showcase/assets/ai-zxF_msJF.js +41 -0
  370. package/dist/showcase/assets/alert-771BE3Ny.js +59 -0
  371. package/dist/showcase/assets/alert-CG42DAlX.js +1 -0
  372. package/dist/showcase/assets/api-key-list-D6jUN7Fq.js +73 -0
  373. package/dist/showcase/assets/arrow-down-CUoXUyN1.js +1 -0
  374. package/dist/showcase/assets/arrow-left-Cdq69X6h.js +1 -0
  375. package/dist/showcase/assets/arrow-right-i25q9L2H.js +1 -0
  376. package/dist/showcase/assets/arrow-up-pnezegnF.js +1 -0
  377. package/dist/showcase/assets/arrow-up-right-CK3XnMah.js +1 -0
  378. package/dist/showcase/assets/avatar-LPmQqZQv.js +1 -0
  379. package/dist/showcase/assets/avatar-ZVFIQouy.js +57 -0
  380. package/dist/showcase/assets/badge-DK4bsgZC.js +28 -0
  381. package/dist/showcase/assets/badge-check-Cw5gkVcG.js +1 -0
  382. package/dist/showcase/assets/bell-BvJELoaV.js +1 -0
  383. package/dist/showcase/assets/bot-DRj6sdSR.js +1 -0
  384. package/dist/showcase/assets/box-BNND3M2m.js +1 -0
  385. package/dist/showcase/assets/brain-Cy3o-12l.js +1 -0
  386. package/dist/showcase/assets/brand-DvipEpFn.js +40 -0
  387. package/dist/showcase/assets/breadcrumb-B-LNuOyv.js +1 -0
  388. package/dist/showcase/assets/breadcrumb-Lzpc0yo4.js +52 -0
  389. package/dist/showcase/assets/breadcrumbs-DD6msKFZ.js +1 -0
  390. package/dist/showcase/assets/briefcase-LcAwoEmu.js +1 -0
  391. package/dist/showcase/assets/button-CuwcGzk1.js +44 -0
  392. package/dist/showcase/assets/button-group-CAImjDrl.js +1 -0
  393. package/dist/showcase/assets/buttons-DTjNHCMl.js +259 -0
  394. package/dist/showcase/assets/calendar-B1zW0q6I.js +1 -0
  395. package/dist/showcase/assets/calendar-Dlv72ytt.js +1 -0
  396. package/dist/showcase/assets/calendar-ls2A08Pn.js +16 -0
  397. package/dist/showcase/assets/card-BhtkM1BT.js +1 -0
  398. package/dist/showcase/assets/cards-BRpRXzGk.js +328 -0
  399. package/dist/showcase/assets/chart-column-BpQkEi1H.js +1 -0
  400. package/dist/showcase/assets/chevron-down-DyObdfSb.js +1 -0
  401. package/dist/showcase/assets/chevron-left-T7dHNxYM.js +1 -0
  402. package/dist/showcase/assets/chevron-right-D_EcqHpT.js +1 -0
  403. package/dist/showcase/assets/chevron-up-B38ivdGO.js +1 -0
  404. package/dist/showcase/assets/chevrons-up-down-SdRARzoq.js +1 -0
  405. package/dist/showcase/assets/circle-BrCPAmDA.js +1 -0
  406. package/dist/showcase/assets/circle-alert-DdhzLPY_.js +1 -0
  407. package/dist/showcase/assets/circle-check-DlA6zidQ.js +1 -0
  408. package/dist/showcase/assets/circle-check-big-DFGJANQF.js +1 -0
  409. package/dist/showcase/assets/circle-dot-BKmnVUqM.js +1 -0
  410. package/dist/showcase/assets/circle-question-mark-BNREvgVC.js +1 -0
  411. package/dist/showcase/assets/circle-x-C45QjHEs.js +1 -0
  412. package/dist/showcase/assets/clock-D1nKQzQo.js +1 -0
  413. package/dist/showcase/assets/code-xml-B8N3GRSu.js +1 -0
  414. package/dist/showcase/assets/collapsible-4TfcWyNs.js +1 -0
  415. package/dist/showcase/assets/collapsible-CKbZtvTj.js +27 -0
  416. package/dist/showcase/assets/combobox-DTdGPaU0.js +622 -0
  417. package/dist/showcase/assets/command-DymTXwL1.js +1 -0
  418. package/dist/showcase/assets/command-ksVIHQKJ.js +45 -0
  419. package/dist/showcase/assets/comment-composer-DC9oS1Yy.js +1 -0
  420. package/dist/showcase/assets/comment-item-CAmKnJa7.js +1 -0
  421. package/dist/showcase/assets/comments-Benk-2mV.js +349 -0
  422. package/dist/showcase/assets/commerce-Qz-mq8mQ.js +78 -0
  423. package/dist/showcase/assets/commerce-extras-CQRc3Bna.js +179 -0
  424. package/dist/showcase/assets/composite-DBDXLPyz.js +1 -0
  425. package/dist/showcase/assets/contact-card-DkL2nI3r.js +65 -0
  426. package/dist/showcase/assets/content-container-mRm6oJEa.js +1 -0
  427. package/dist/showcase/assets/copyable-DmLlmwzy.js +96 -0
  428. package/dist/showcase/assets/course-card-CJJoeZj9.js +113 -0
  429. package/dist/showcase/assets/cpu-BXJnF2Xy.js +1 -0
  430. package/dist/showcase/assets/credit-card-BQK3KKb2.js +1 -0
  431. package/dist/showcase/assets/currency-DBPUh8ee.js +149 -0
  432. package/dist/showcase/assets/dark-surfaces-LpPuIeYy.js +90 -0
  433. package/dist/showcase/assets/database-BZerpzGE.js +1 -0
  434. package/dist/showcase/assets/date-block-iiHUpbNX.js +1 -0
  435. package/dist/showcase/assets/date-picker-BQeBGL7T.js +1 -0
  436. package/dist/showcase/assets/date-pickers-CKcUEMMF.js +110 -0
  437. package/dist/showcase/assets/dense-info-DATmxRU8.js +106 -0
  438. package/dist/showcase/assets/dialog-Bqu5KDYH.js +1 -0
  439. package/dist/showcase/assets/display-Bj7uPXD4.js +392 -0
  440. package/dist/showcase/assets/dist-QK7JxeYv.js +1 -0
  441. package/dist/showcase/assets/dollar-sign-DFZs6vfz.js +1 -0
  442. package/dist/showcase/assets/download-5oGw_WbW.js +1 -0
  443. package/dist/showcase/assets/dropdown-menu-1CJgYn0S.js +1 -0
  444. package/dist/showcase/assets/dropzone-Co1uhsDn.js +1 -0
  445. package/dist/showcase/assets/ellipsis-cKRcvuyL.js +1 -0
  446. package/dist/showcase/assets/ellipsis-vertical-B1RErEkj.js +1 -0
  447. package/dist/showcase/assets/empty-Y2-4nCBr.js +1 -0
  448. package/dist/showcase/assets/empty-item-USa6xcUv.js +49 -0
  449. package/dist/showcase/assets/empty-state-DfhZ9AT5.js +188 -0
  450. package/dist/showcase/assets/enhanced-activities-DmAPVUSu.js +359 -0
  451. package/dist/showcase/assets/esm-BeGQ_ZTM.js +2 -0
  452. package/dist/showcase/assets/event-calendar-D-jGrrZS.js +138 -0
  453. package/dist/showcase/assets/event-log-tA_i4eR9.js +326 -0
  454. package/dist/showcase/assets/example-6phCHGsN.js +1 -0
  455. package/dist/showcase/assets/external-link-BuVHkCy0.js +1 -0
  456. package/dist/showcase/assets/eye-DC5HfGm6.js +1 -0
  457. package/dist/showcase/assets/feature-announcement-DwvxLytd.js +34 -0
  458. package/dist/showcase/assets/file-D-xM4vLy.js +1 -0
  459. package/dist/showcase/assets/file-text-tmG5vNbr.js +1 -0
  460. package/dist/showcase/assets/filters-CrGRXmq6.js +78 -0
  461. package/dist/showcase/assets/flag-CWrEtkY5.js +1 -0
  462. package/dist/showcase/assets/folder-open-Br-x1pjP.js +1 -0
  463. package/dist/showcase/assets/form-sizing-Bb5hiM45.js +1 -0
  464. package/dist/showcase/assets/format-D_ETCyg4.js +1 -0
  465. package/dist/showcase/assets/forms-B_MkQ3rm.js +790 -0
  466. package/dist/showcase/assets/generic-CdmsyXV3.js +1 -0
  467. package/dist/showcase/assets/getPseudoElementBounds-CZnCbCFP.js +1 -0
  468. package/dist/showcase/assets/gift-NkuklfU2.js +1 -0
  469. package/dist/showcase/assets/giftcard-cards-BAvevZ0i.js +85 -0
  470. package/dist/showcase/assets/git-branch-B_CBqPeO.js +1 -0
  471. package/dist/showcase/assets/global-search-D9teAbPe.js +90 -0
  472. package/dist/showcase/assets/globe-gzw45GU2.js +1 -0
  473. package/dist/showcase/assets/gradient-card-Xk2r7R5H.js +58 -0
  474. package/dist/showcase/assets/header-notifications-_aZCpE5A.js +1 -0
  475. package/dist/showcase/assets/heart-CEMKbRaZ.js +1 -0
  476. package/dist/showcase/assets/house-BlGXAcMH.js +1 -0
  477. package/dist/showcase/assets/icon-badge-z6N9reH_.js +1 -0
  478. package/dist/showcase/assets/image-B8mzmVBr.js +1 -0
  479. package/dist/showcase/assets/inbox-qdSnP4UV.js +1 -0
  480. package/dist/showcase/assets/index-B4ubXfly.js +10 -0
  481. package/dist/showcase/assets/inertValue-D5Q8cLku.js +1 -0
  482. package/dist/showcase/assets/info-DBvvNjc_.js +1 -0
  483. package/dist/showcase/assets/inline-stat-Bm1zVT8D.js +1 -0
  484. package/dist/showcase/assets/input-CBQR0aeX.js +1 -0
  485. package/dist/showcase/assets/input-OrUzpI55.js +1 -0
  486. package/dist/showcase/assets/input-group-DhqOen2N.js +47 -0
  487. package/dist/showcase/assets/input-group-l8xa5nUq.js +1 -0
  488. package/dist/showcase/assets/inputs-DbiJ0qy2.js +49 -0
  489. package/dist/showcase/assets/invoice-header-C6youIbL.js +36 -0
  490. package/dist/showcase/assets/invoice-items-g6dgryF-.js +36 -0
  491. package/dist/showcase/assets/invoice-mini-0iWhufpt.js +14 -0
  492. package/dist/showcase/assets/invoice-table-Bvdh3rRq.js +30 -0
  493. package/dist/showcase/assets/isSameDay-BpZEtJe8.js +1 -0
  494. package/dist/showcase/assets/isToday-F0CS28oK.js +1 -0
  495. package/dist/showcase/assets/italic-CJOEwjdc.js +1 -0
  496. package/dist/showcase/assets/item-BiMm1PPB.js +1 -0
  497. package/dist/showcase/assets/item-CN0cwdj_.js +1 -0
  498. package/dist/showcase/assets/item-DNqEUYLT.js +117 -0
  499. package/dist/showcase/assets/kanban-DxePEUiQ.js +175 -0
  500. package/dist/showcase/assets/label-Dx4WO-fg.js +1 -0
  501. package/dist/showcase/assets/layout-containers-DDl8rG8S.js +96 -0
  502. package/dist/showcase/assets/layout-header-Bu6IcDWu.js +170 -0
  503. package/dist/showcase/assets/layout-page-D-88Qnoy.js +122 -0
  504. package/dist/showcase/assets/layout-sidebar-Ctft10pk.js +224 -0
  505. package/dist/showcase/assets/layout-users-DtbZduBG.js +104 -0
  506. package/dist/showcase/assets/lib-D9BoOYUd.js +1 -0
  507. package/dist/showcase/assets/lock-CHurDI0n.js +1 -0
  508. package/dist/showcase/assets/mail-DZ1o1RLW.js +1 -0
  509. package/dist/showcase/assets/map-C8xiyT9X.js +124 -0
  510. package/dist/showcase/assets/map-pin-CAKaoYod.js +1 -0
  511. package/dist/showcase/assets/menus-C6mnp636.js +89 -0
  512. package/dist/showcase/assets/message-square-Zo5J_zU1.js +1 -0
  513. package/dist/showcase/assets/metadata-list-W83-UMhc.js +278 -0
  514. package/dist/showcase/assets/metric-BSvxidIX.js +1 -0
  515. package/dist/showcase/assets/metric-grid-Dtqx_3Lg.js +1 -0
  516. package/dist/showcase/assets/metric-trend-chip-mtvcJ_M9.js +1 -0
  517. package/dist/showcase/assets/metrics-analytics-bar-DQbyss7i.js +44 -0
  518. package/dist/showcase/assets/metrics-analytics-cards-CEBu5Uw0.js +77 -0
  519. package/dist/showcase/assets/metrics-comparison-Bs-R6v4y.js +76 -0
  520. package/dist/showcase/assets/metrics-heatmap-BKHWH8sM.js +27 -0
  521. package/dist/showcase/assets/metrics-inline-badge-BxVn0Y2p.js +17 -0
  522. package/dist/showcase/assets/metrics-kpi-row-DtACYEds.js +31 -0
  523. package/dist/showcase/assets/metrics-micro-grid-BkwUGOUR.js +42 -0
  524. package/dist/showcase/assets/metrics-overview-BAtrlzsI.js +192 -0
  525. package/dist/showcase/assets/metrics-stat-cards-iCRCNyHY.js +54 -0
  526. package/dist/showcase/assets/minus-C6eBW-2t.js +1 -0
  527. package/dist/showcase/assets/money-display-DjGRJ16l.js +1 -0
  528. package/dist/showcase/assets/month-year-picker-DTDebPqf.js +1 -0
  529. package/dist/showcase/assets/navigation-BrG8Chig.js +86 -0
  530. package/dist/showcase/assets/navigation-CfXQJbyM.js +230 -0
  531. package/dist/showcase/assets/navigation-extras-D_gzLlZ5.js +43 -0
  532. package/dist/showcase/assets/onboarding-checklist-1EerUwAo.js +119 -0
  533. package/dist/showcase/assets/overlays-2AB9-S1Z.js +88 -0
  534. package/dist/showcase/assets/overlays-CYt9o3Xq.js +393 -0
  535. package/dist/showcase/assets/package-BJMP-Fcr.js +1 -0
  536. package/dist/showcase/assets/page-action-button-BZxJ0X1j.js +1 -0
  537. package/dist/showcase/assets/page-header-B_rqHJhe.js +1 -0
  538. package/dist/showcase/assets/pagination-BHiQvvka.js +1 -0
  539. package/dist/showcase/assets/pagination-Dq0GruQd.js +42 -0
  540. package/dist/showcase/assets/paperclip-BMYKrUQo.js +1 -0
  541. package/dist/showcase/assets/pencil-BJ3VS_FO.js +1 -0
  542. package/dist/showcase/assets/phone-CsRIyvep.js +1 -0
  543. package/dist/showcase/assets/plus-D2JuXYLg.js +1 -0
  544. package/dist/showcase/assets/popover-DNT9755r.js +1 -0
  545. package/dist/showcase/assets/popover-KvGgcPNg.js +1 -0
  546. package/dist/showcase/assets/popover-menu-CJx30R65.js +1 -0
  547. package/dist/showcase/assets/progress-B7WuXcJR.js +1 -0
  548. package/dist/showcase/assets/progress-CweCSAUv.js +18 -0
  549. package/dist/showcase/assets/props-table-uDY4eIzt.js +1 -0
  550. package/dist/showcase/assets/quote-DAyyfzQd.js +1 -0
  551. package/dist/showcase/assets/receipt-C0mMZGbF.js +1 -0
  552. package/dist/showcase/assets/refresh-cw-X06JbXb-.js +1 -0
  553. package/dist/showcase/assets/resolveValueLabel-Bks7UDko.js +1 -0
  554. package/dist/showcase/assets/rich-text-editor-QJsb-qIe.js +124 -0
  555. package/dist/showcase/assets/rich-text-editor-h07VBNI9.js +141 -0
  556. package/dist/showcase/assets/rotate-ccw-D84bdX_x.js +1 -0
  557. package/dist/showcase/assets/scroll-area-0rT06pXZ.js +1 -0
  558. package/dist/showcase/assets/scroll-area-YXwdzGpN.js +32 -0
  559. package/dist/showcase/assets/select-BoWQDtUf.js +1 -0
  560. package/dist/showcase/assets/send-DJsk3cr1.js +1 -0
  561. package/dist/showcase/assets/separator-CLSnRcJa.js +28 -0
  562. package/dist/showcase/assets/separator-DWv-twD-.js +1 -0
  563. package/dist/showcase/assets/settings-Cb2MsAmN.js +1 -0
  564. package/dist/showcase/assets/sheet-Dn1-MYus.js +1 -0
  565. package/dist/showcase/assets/shield-DwLjF5ch.js +1 -0
  566. package/dist/showcase/assets/shield-alert-D8i6gzMK.js +1 -0
  567. package/dist/showcase/assets/shield-check-D5YRSBIz.js +1 -0
  568. package/dist/showcase/assets/shopping-bag-BqlAP4vn.js +1 -0
  569. package/dist/showcase/assets/sidebar.context-BAp_pBEB.js +1 -0
  570. package/dist/showcase/assets/skeleton-CeNPp4hr.js +1 -0
  571. package/dist/showcase/assets/skeleton-QPsnM_NR.js +29 -0
  572. package/dist/showcase/assets/smart-card-BisUbLPt.js +1 -0
  573. package/dist/showcase/assets/sonner-B7GzbBK2.js +22 -0
  574. package/dist/showcase/assets/sortable.esm-BDcEOHT7.js +5 -0
  575. package/dist/showcase/assets/sparkles-CF9P5Tqh.js +1 -0
  576. package/dist/showcase/assets/spinner-BeamEyJd.js +49 -0
  577. package/dist/showcase/assets/spinner-DoYBfalR.js +1 -0
  578. package/dist/showcase/assets/spinner-UsLsOYzn.js +30 -0
  579. package/dist/showcase/assets/square-pen-BGTVdnt1.js +1 -0
  580. package/dist/showcase/assets/stacked-avatars-BWfVX1Ov.js +1 -0
  581. package/dist/showcase/assets/star-NsPNO9gR.js +1 -0
  582. package/dist/showcase/assets/startOfDay-zJBpxLuW.js +1 -0
  583. package/dist/showcase/assets/styles-DA7a7hVy.js +1 -0
  584. package/dist/showcase/assets/switch-C62S4U2o.js +1 -0
  585. package/dist/showcase/assets/switch-CYQcinJZ.js +1 -0
  586. package/dist/showcase/assets/table-w4IABkpa.js +1 -0
  587. package/dist/showcase/assets/table-xgB63UrY.js +390 -0
  588. package/dist/showcase/assets/tabs-BFTEaTXj.js +19 -0
  589. package/dist/showcase/assets/tabs-oMJn9Ujq.js +1 -0
  590. package/dist/showcase/assets/text-button-BgcutPuu.js +1 -0
  591. package/dist/showcase/assets/text-link-CS9thOWL.js +1 -0
  592. package/dist/showcase/assets/textarea-BOBx4EM6.js +1 -0
  593. package/dist/showcase/assets/textarea-CTzYZZqa.js +1 -0
  594. package/dist/showcase/assets/timelines-CK07mEBK.js +186 -0
  595. package/dist/showcase/assets/toggle-group-CSPdPT6G.js +1 -0
  596. package/dist/showcase/assets/toggles-DDSdl-gA.js +71 -0
  597. package/dist/showcase/assets/toggles-group-Y2BdKEFB.js +32 -0
  598. package/dist/showcase/assets/trash-2-C-FAptQP.js +1 -0
  599. package/dist/showcase/assets/trending-up-BmLhdF_w.js +1 -0
  600. package/dist/showcase/assets/truck-pZdUS_as.js +1 -0
  601. package/dist/showcase/assets/typography-CnBH2z7f.js +214 -0
  602. package/dist/showcase/assets/ui-badge-Cl6INRO5.js +28 -0
  603. package/dist/showcase/assets/ui-card-B5P-thNu.js +30 -0
  604. package/dist/showcase/assets/ui-table-B32RILKk.js +42 -0
  605. package/dist/showcase/assets/upload-tray-mu6bR2ZE.js +138 -0
  606. package/dist/showcase/assets/useAnchoredPopupScrollLock-CzDaXxmM.js +1 -0
  607. package/dist/showcase/assets/useCollapsiblePanel-B0DZvDFu.js +1 -0
  608. package/dist/showcase/assets/useCompositeItem-BVIVLT9X.js +1 -0
  609. package/dist/showcase/assets/useCompositeListItem-JEMeTFPx.js +1 -0
  610. package/dist/showcase/assets/useControlled-ZjqBfPCn.js +1 -0
  611. package/dist/showcase/assets/useLabelableId-D8CZq8Bm.js +1 -0
  612. package/dist/showcase/assets/useOpenInteractionType-CopGCf3q.js +1 -0
  613. package/dist/showcase/assets/useRender-zuKv6JQF.js +1 -0
  614. package/dist/showcase/assets/useRole-08KeyiD3.js +1 -0
  615. package/dist/showcase/assets/useTriggerFocusGuards-DEuz5CGe.js +1 -0
  616. package/dist/showcase/assets/useValueChanged-BxFi_qyj.js +1 -0
  617. package/dist/showcase/assets/user-Bgc2t2_e.js +1 -0
  618. package/dist/showcase/assets/user-plus-F_TfagnP.js +1 -0
  619. package/dist/showcase/assets/users-B7G4yTCR.js +1 -0
  620. package/dist/showcase/assets/vendor-profile-BTQmsKM6.js +37 -0
  621. package/dist/showcase/assets/wrench-BdzICmjR.js +1 -0
  622. package/dist/showcase/assets/x-B156Wr-5.js +1 -0
  623. package/dist/showcase/assets/zap-B3iByjNV.js +1 -0
  624. package/dist/showcase/index.html +1 -1
  625. package/package.json +10 -1
  626. package/dist/_shared/accordion-7rwpgJ1k.cjs +0 -2
  627. package/dist/_shared/accordion-7rwpgJ1k.cjs.map +0 -1
  628. package/dist/_shared/accordion-DcduCEIo.js +0 -130
  629. package/dist/_shared/accordion-DcduCEIo.js.map +0 -1
  630. package/dist/_shared/action-menu-D0u-q0q-.cjs +0 -2
  631. package/dist/_shared/action-menu-D0u-q0q-.cjs.map +0 -1
  632. package/dist/_shared/action-menu-DUBXdReV.js +0 -96
  633. package/dist/_shared/action-menu-DUBXdReV.js.map +0 -1
  634. package/dist/_shared/ai-artifact-C3R0god0.cjs +0 -3
  635. package/dist/_shared/ai-artifact-C3R0god0.cjs.map +0 -1
  636. package/dist/_shared/ai-artifact-DMjQv_Si.js +0 -1068
  637. package/dist/_shared/ai-artifact-DMjQv_Si.js.map +0 -1
  638. package/dist/_shared/alert-B2cuJGAA.cjs +0 -2
  639. package/dist/_shared/alert-B2cuJGAA.cjs.map +0 -1
  640. package/dist/_shared/alert-BKUmOI2e.js +0 -48
  641. package/dist/_shared/alert-BKUmOI2e.js.map +0 -1
  642. package/dist/_shared/avatar-BcYcRORH.cjs +0 -2
  643. package/dist/_shared/avatar-BcYcRORH.cjs.map +0 -1
  644. package/dist/_shared/avatar-CNzG6jSZ.js +0 -52
  645. package/dist/_shared/avatar-CNzG6jSZ.js.map +0 -1
  646. package/dist/_shared/badge-BbUN6W7E.js +0 -108
  647. package/dist/_shared/badge-BbUN6W7E.js.map +0 -1
  648. package/dist/_shared/badge-BjtDcU1M.cjs +0 -2
  649. package/dist/_shared/badge-BjtDcU1M.cjs.map +0 -1
  650. package/dist/_shared/breadcrumbs-DctwTld5.js +0 -111
  651. package/dist/_shared/breadcrumbs-DctwTld5.js.map +0 -1
  652. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs +0 -2
  653. package/dist/_shared/breadcrumbs-m0-gCdNj.cjs.map +0 -1
  654. package/dist/_shared/button-BCABTFLE.js +0 -46
  655. package/dist/_shared/button-BCABTFLE.js.map +0 -1
  656. package/dist/_shared/button-Ck2qS42n.js +0 -176
  657. package/dist/_shared/button-Ck2qS42n.js.map +0 -1
  658. package/dist/_shared/button-DjJ-mDI1.cjs +0 -2
  659. package/dist/_shared/button-DjJ-mDI1.cjs.map +0 -1
  660. package/dist/_shared/button-DjacsNTg.cjs +0 -2
  661. package/dist/_shared/button-DjacsNTg.cjs.map +0 -1
  662. package/dist/_shared/buttons-BVnjQ-uE.js +0 -143
  663. package/dist/_shared/buttons-BVnjQ-uE.js.map +0 -1
  664. package/dist/_shared/buttons-BdY6igTr.cjs +0 -2
  665. package/dist/_shared/buttons-BdY6igTr.cjs.map +0 -1
  666. package/dist/_shared/card-radio-group--GP1xrz_.js +0 -158
  667. package/dist/_shared/card-radio-group--GP1xrz_.js.map +0 -1
  668. package/dist/_shared/card-radio-group-DnQsWozr.cjs +0 -2
  669. package/dist/_shared/card-radio-group-DnQsWozr.cjs.map +0 -1
  670. package/dist/_shared/combobox-DBrRE1Dr.cjs +0 -2
  671. package/dist/_shared/combobox-DBrRE1Dr.cjs.map +0 -1
  672. package/dist/_shared/combobox-DYztEJaw.js +0 -746
  673. package/dist/_shared/combobox-DYztEJaw.js.map +0 -1
  674. package/dist/_shared/command-COvgXQ8r.cjs +0 -2
  675. package/dist/_shared/command-COvgXQ8r.cjs.map +0 -1
  676. package/dist/_shared/command-CvZ6Emb8.js +0 -39
  677. package/dist/_shared/command-CvZ6Emb8.js.map +0 -1
  678. package/dist/_shared/command-DTFQIUVG.cjs +0 -2
  679. package/dist/_shared/command-DTFQIUVG.cjs.map +0 -1
  680. package/dist/_shared/command-Sq8XbHbA.js +0 -123
  681. package/dist/_shared/command-Sq8XbHbA.js.map +0 -1
  682. package/dist/_shared/comments-BOFU1GYY.js +0 -945
  683. package/dist/_shared/comments-BOFU1GYY.js.map +0 -1
  684. package/dist/_shared/comments-BbTYFzx6.cjs +0 -2
  685. package/dist/_shared/comments-BbTYFzx6.cjs.map +0 -1
  686. package/dist/_shared/containers-BthqdOhA.cjs +0 -2
  687. package/dist/_shared/containers-BthqdOhA.cjs.map +0 -1
  688. package/dist/_shared/containers-CD2xs1nk.js +0 -19
  689. package/dist/_shared/containers-CD2xs1nk.js.map +0 -1
  690. package/dist/_shared/content-container-CFfYbWoa.js +0 -33
  691. package/dist/_shared/content-container-CFfYbWoa.js.map +0 -1
  692. package/dist/_shared/content-container-CReiVugL.cjs +0 -2
  693. package/dist/_shared/content-container-CReiVugL.cjs.map +0 -1
  694. package/dist/_shared/copyable-CweQ72QI.cjs +0 -2
  695. package/dist/_shared/copyable-CweQ72QI.cjs.map +0 -1
  696. package/dist/_shared/copyable-JgsTp6ev.js +0 -38
  697. package/dist/_shared/copyable-JgsTp6ev.js.map +0 -1
  698. package/dist/_shared/date-picker-DI4b-SeE.cjs +0 -2
  699. package/dist/_shared/date-picker-DI4b-SeE.cjs.map +0 -1
  700. package/dist/_shared/date-picker-DTazvODY.js +0 -1352
  701. package/dist/_shared/date-picker-DTazvODY.js.map +0 -1
  702. package/dist/_shared/date-pickers-CLzuzmuc.cjs +0 -2
  703. package/dist/_shared/date-pickers-CLzuzmuc.cjs.map +0 -1
  704. package/dist/_shared/date-pickers-CWPxP3zy.js +0 -330
  705. package/dist/_shared/date-pickers-CWPxP3zy.js.map +0 -1
  706. package/dist/_shared/dialog-2MJmaj_d.js +0 -101
  707. package/dist/_shared/dialog-2MJmaj_d.js.map +0 -1
  708. package/dist/_shared/dialog-KKD0i1T8.cjs +0 -2
  709. package/dist/_shared/dialog-KKD0i1T8.cjs.map +0 -1
  710. package/dist/_shared/display-BCy1Ti7T.cjs +0 -8
  711. package/dist/_shared/display-BCy1Ti7T.cjs.map +0 -1
  712. package/dist/_shared/display-DUpkE2aS.js +0 -1462
  713. package/dist/_shared/display-DUpkE2aS.js.map +0 -1
  714. package/dist/_shared/dropdown-menu-BebBffUH.cjs +0 -2
  715. package/dist/_shared/dropdown-menu-BebBffUH.cjs.map +0 -1
  716. package/dist/_shared/dropdown-menu-xdGEynC8.js +0 -147
  717. package/dist/_shared/dropdown-menu-xdGEynC8.js.map +0 -1
  718. package/dist/_shared/form-field-rOj3cm6C.js +0 -319
  719. package/dist/_shared/form-field-rOj3cm6C.js.map +0 -1
  720. package/dist/_shared/form-field-rcyIIHjR.cjs +0 -2
  721. package/dist/_shared/form-field-rcyIIHjR.cjs.map +0 -1
  722. package/dist/_shared/form-sizing--bs_xPe2.cjs +0 -2
  723. package/dist/_shared/form-sizing--bs_xPe2.cjs.map +0 -1
  724. package/dist/_shared/form-sizing-CkKcs5fi.js +0 -21
  725. package/dist/_shared/form-sizing-CkKcs5fi.js.map +0 -1
  726. package/dist/_shared/format-BlVEsPyT.js +0 -48
  727. package/dist/_shared/format-BlVEsPyT.js.map +0 -1
  728. package/dist/_shared/format-DYVtSA2I.cjs +0 -2
  729. package/dist/_shared/format-DYVtSA2I.cjs.map +0 -1
  730. package/dist/_shared/forms-BAVsxxRk.js +0 -3374
  731. package/dist/_shared/forms-BAVsxxRk.js.map +0 -1
  732. package/dist/_shared/forms-DaZ3LsYc.cjs +0 -2
  733. package/dist/_shared/forms-DaZ3LsYc.cjs.map +0 -1
  734. package/dist/_shared/header-BtTMsQ5P.cjs +0 -2
  735. package/dist/_shared/header-BtTMsQ5P.cjs.map +0 -1
  736. package/dist/_shared/header-DpW4UWV6.js +0 -369
  737. package/dist/_shared/header-DpW4UWV6.js.map +0 -1
  738. package/dist/_shared/hooks-Bsm917yh.cjs +0 -2
  739. package/dist/_shared/hooks-Bsm917yh.cjs.map +0 -1
  740. package/dist/_shared/hooks-CX-SICd4.js +0 -118
  741. package/dist/_shared/hooks-CX-SICd4.js.map +0 -1
  742. package/dist/_shared/icon-badge-DGKpbo9_.cjs +0 -2
  743. package/dist/_shared/icon-badge-DGKpbo9_.cjs.map +0 -1
  744. package/dist/_shared/icon-badge-DoClA_9q.js +0 -52
  745. package/dist/_shared/icon-badge-DoClA_9q.js.map +0 -1
  746. package/dist/_shared/input-BXt-YtVs.cjs +0 -2
  747. package/dist/_shared/input-BXt-YtVs.cjs.map +0 -1
  748. package/dist/_shared/input-Bx4LeLhn.js +0 -17
  749. package/dist/_shared/input-Bx4LeLhn.js.map +0 -1
  750. package/dist/_shared/input-ChZGIhtS.cjs +0 -2
  751. package/dist/_shared/input-ChZGIhtS.cjs.map +0 -1
  752. package/dist/_shared/input-Cwv1-5jt.js +0 -182
  753. package/dist/_shared/input-Cwv1-5jt.js.map +0 -1
  754. package/dist/_shared/item-BmTYKzEb.js +0 -224
  755. package/dist/_shared/item-BmTYKzEb.js.map +0 -1
  756. package/dist/_shared/item-BtR-bz96.cjs +0 -2
  757. package/dist/_shared/item-BtR-bz96.cjs.map +0 -1
  758. package/dist/_shared/mentions-DVCjaO_z.cjs +0 -2
  759. package/dist/_shared/mentions-DVCjaO_z.cjs.map +0 -1
  760. package/dist/_shared/mentions-DzG8mX5H.js +0 -493
  761. package/dist/_shared/mentions-DzG8mX5H.js.map +0 -1
  762. package/dist/_shared/money-display-B5oxCs_0.cjs +0 -2
  763. package/dist/_shared/money-display-B5oxCs_0.cjs.map +0 -1
  764. package/dist/_shared/money-display-C0wI02ou.js +0 -198
  765. package/dist/_shared/money-display-C0wI02ou.js.map +0 -1
  766. package/dist/_shared/navigation-BA2nsTgU.cjs +0 -2
  767. package/dist/_shared/navigation-BA2nsTgU.cjs.map +0 -1
  768. package/dist/_shared/navigation-DHyaf-RZ.js +0 -420
  769. package/dist/_shared/navigation-DHyaf-RZ.js.map +0 -1
  770. package/dist/_shared/overlays-Kl6Gp6WR.js +0 -633
  771. package/dist/_shared/overlays-Kl6Gp6WR.js.map +0 -1
  772. package/dist/_shared/overlays-W6j-Pe1L.cjs +0 -2
  773. package/dist/_shared/overlays-W6j-Pe1L.cjs.map +0 -1
  774. package/dist/_shared/page-DROZhtWT.js +0 -263
  775. package/dist/_shared/page-DROZhtWT.js.map +0 -1
  776. package/dist/_shared/page-lh9Rcx_d.cjs +0 -2
  777. package/dist/_shared/page-lh9Rcx_d.cjs.map +0 -1
  778. package/dist/_shared/popover-BTEwjJZS.cjs +0 -2
  779. package/dist/_shared/popover-BTEwjJZS.cjs.map +0 -1
  780. package/dist/_shared/popover-CF9VWt-l.js +0 -83
  781. package/dist/_shared/popover-CF9VWt-l.js.map +0 -1
  782. package/dist/_shared/popover-menu-BYesl29w.js +0 -95
  783. package/dist/_shared/popover-menu-BYesl29w.js.map +0 -1
  784. package/dist/_shared/popover-menu-DF9sWz61.cjs +0 -2
  785. package/dist/_shared/popover-menu-DF9sWz61.cjs.map +0 -1
  786. package/dist/_shared/rich-text-editor-UZghkgsh.cjs +0 -2
  787. package/dist/_shared/rich-text-editor-UZghkgsh.cjs.map +0 -1
  788. package/dist/_shared/rich-text-editor-fUeuK-rY.js +0 -608
  789. package/dist/_shared/rich-text-editor-fUeuK-rY.js.map +0 -1
  790. package/dist/_shared/scroll-area-XJLcCczs.js +0 -41
  791. package/dist/_shared/scroll-area-XJLcCczs.js.map +0 -1
  792. package/dist/_shared/scroll-area-y8ZJoS97.cjs +0 -2
  793. package/dist/_shared/scroll-area-y8ZJoS97.cjs.map +0 -1
  794. package/dist/_shared/select-D8MYF4f7.js +0 -85
  795. package/dist/_shared/select-D8MYF4f7.js.map +0 -1
  796. package/dist/_shared/select-DxAiUfpM.cjs +0 -2
  797. package/dist/_shared/select-DxAiUfpM.cjs.map +0 -1
  798. package/dist/_shared/separator-BazqiQ9s.js +0 -16
  799. package/dist/_shared/separator-BazqiQ9s.js.map +0 -1
  800. package/dist/_shared/separator-DSkXMOXq.cjs +0 -2
  801. package/dist/_shared/separator-DSkXMOXq.cjs.map +0 -1
  802. package/dist/_shared/sheet-7iHOs-IU.js +0 -100
  803. package/dist/_shared/sheet-7iHOs-IU.js.map +0 -1
  804. package/dist/_shared/sheet-qKtoyxgi.cjs +0 -2
  805. package/dist/_shared/sheet-qKtoyxgi.cjs.map +0 -1
  806. package/dist/_shared/sidebar-CaTUJ3t-.js +0 -537
  807. package/dist/_shared/sidebar-CaTUJ3t-.js.map +0 -1
  808. package/dist/_shared/sidebar-DVjfsm-f.cjs +0 -2
  809. package/dist/_shared/sidebar-DVjfsm-f.cjs.map +0 -1
  810. package/dist/_shared/sidebar-aV5DVAVg.js +0 -371
  811. package/dist/_shared/sidebar-aV5DVAVg.js.map +0 -1
  812. package/dist/_shared/sidebar-mL0jSJ8u.cjs +0 -2
  813. package/dist/_shared/sidebar-mL0jSJ8u.cjs.map +0 -1
  814. package/dist/_shared/skeleton-Bwv_j9jJ.cjs +0 -2
  815. package/dist/_shared/skeleton-Bwv_j9jJ.cjs.map +0 -1
  816. package/dist/_shared/skeleton-DyKa-Ed-.js +0 -14
  817. package/dist/_shared/skeleton-DyKa-Ed-.js.map +0 -1
  818. package/dist/_shared/slot-ClIPTht1.cjs +0 -2
  819. package/dist/_shared/slot-ClIPTht1.cjs.map +0 -1
  820. package/dist/_shared/slot-CrS_VEVl.js +0 -18
  821. package/dist/_shared/slot-CrS_VEVl.js.map +0 -1
  822. package/dist/_shared/smart-card-Ddsjvf7r.cjs +0 -2
  823. package/dist/_shared/smart-card-Ddsjvf7r.cjs.map +0 -1
  824. package/dist/_shared/smart-card-hJ01usWt.js +0 -360
  825. package/dist/_shared/smart-card-hJ01usWt.js.map +0 -1
  826. package/dist/_shared/spinner-D-pcMBt1.js +0 -67
  827. package/dist/_shared/spinner-D-pcMBt1.js.map +0 -1
  828. package/dist/_shared/spinner-zbmhn0vE.cjs +0 -2
  829. package/dist/_shared/spinner-zbmhn0vE.cjs.map +0 -1
  830. package/dist/_shared/switch-C5J37LMI.cjs +0 -2
  831. package/dist/_shared/switch-C5J37LMI.cjs.map +0 -1
  832. package/dist/_shared/switch-ClGgHcEb.js +0 -51
  833. package/dist/_shared/switch-ClGgHcEb.js.map +0 -1
  834. package/dist/_shared/textarea-DeISZfHw.js +0 -119
  835. package/dist/_shared/textarea-DeISZfHw.js.map +0 -1
  836. package/dist/_shared/textarea-iR9txrty.cjs +0 -2
  837. package/dist/_shared/textarea-iR9txrty.cjs.map +0 -1
  838. package/dist/_shared/tooltip-CEqxHWxQ.js +0 -49
  839. package/dist/_shared/tooltip-CEqxHWxQ.js.map +0 -1
  840. package/dist/_shared/tooltip-DPv0LGr9.cjs +0 -2
  841. package/dist/_shared/tooltip-DPv0LGr9.cjs.map +0 -1
  842. package/dist/_shared/typography-BtPQBvSm.js +0 -135
  843. package/dist/_shared/typography-BtPQBvSm.js.map +0 -1
  844. package/dist/_shared/typography-DClleVWi.cjs +0 -2
  845. package/dist/_shared/typography-DClleVWi.cjs.map +0 -1
  846. package/dist/showcase/assets/AreaChart-D-RqNtqG.js +0 -6
  847. package/dist/showcase/assets/CSPContext-t69BXyB7.js +0 -1
  848. package/dist/showcase/assets/CompositeItem-DHNLgEeV.js +0 -1
  849. package/dist/showcase/assets/CompositeRoot-xq_0ZFev.js +0 -1
  850. package/dist/showcase/assets/DialogTrigger-Cl7n_3xX.js +0 -1
  851. package/dist/showcase/assets/FormContext-CXdwDz7F.js +0 -1
  852. package/dist/showcase/assets/PreviewLayout-BHemtKEf.js +0 -1
  853. package/dist/showcase/assets/RadioGroup-DXAt4VZN.js +0 -1
  854. package/dist/showcase/assets/Separator-C9vXwWmZ.js +0 -1
  855. package/dist/showcase/assets/ToolbarRootContext-iF4ctnIz.js +0 -1
  856. package/dist/showcase/assets/accordion-DzkNgNcB.js +0 -172
  857. package/dist/showcase/assets/accordion-variants-DP5-oxLe.js +0 -1
  858. package/dist/showcase/assets/action-menu-CyA2e9TF.js +0 -1
  859. package/dist/showcase/assets/activities-Dt-dO5ew.js +0 -501
  860. package/dist/showcase/assets/activities-feed-card-DZdFekXl.js +0 -1
  861. package/dist/showcase/assets/admin-C2SeJmE7.js +0 -80
  862. package/dist/showcase/assets/ai-Cwo0h_Xn.js +0 -41
  863. package/dist/showcase/assets/ai-artifact-3UJofyU5.js +0 -2
  864. package/dist/showcase/assets/ai-chat-CrFtG_Vg.js +0 -568
  865. package/dist/showcase/assets/ai-elements-iJ15Y7pS.js +0 -379
  866. package/dist/showcase/assets/ai-new-DuznZydd.js +0 -167
  867. package/dist/showcase/assets/ai-tool-call-CTcGGAQU.js +0 -1
  868. package/dist/showcase/assets/alert-CUGGckOX.js +0 -1
  869. package/dist/showcase/assets/alert-tWped3Sw.js +0 -59
  870. package/dist/showcase/assets/api-key-list-Q5LAqzMn.js +0 -73
  871. package/dist/showcase/assets/arrow-down-CfwCPcHL.js +0 -1
  872. package/dist/showcase/assets/arrow-left-BKx9qNX6.js +0 -1
  873. package/dist/showcase/assets/arrow-right-DlEpbqEk.js +0 -1
  874. package/dist/showcase/assets/arrow-up-BYQ4F9L1.js +0 -1
  875. package/dist/showcase/assets/arrow-up-right-C8r6vYfE.js +0 -1
  876. package/dist/showcase/assets/avatar-BuZ3zTbH.js +0 -57
  877. package/dist/showcase/assets/avatar-DR2mqPpY.js +0 -1
  878. package/dist/showcase/assets/badge-D1HLfP93.js +0 -28
  879. package/dist/showcase/assets/badge-check-oP2z_95u.js +0 -1
  880. package/dist/showcase/assets/bell-BTX2D-ES.js +0 -1
  881. package/dist/showcase/assets/bot-CKh5XgUG.js +0 -1
  882. package/dist/showcase/assets/box-F1uaZ6iw.js +0 -1
  883. package/dist/showcase/assets/brain-dD_ppLUa.js +0 -1
  884. package/dist/showcase/assets/brand-zisZOFKf.js +0 -40
  885. package/dist/showcase/assets/breadcrumb-C7vv0L8K.js +0 -52
  886. package/dist/showcase/assets/breadcrumb-fay5sLba.js +0 -1
  887. package/dist/showcase/assets/breadcrumbs-DklRXepp.js +0 -1
  888. package/dist/showcase/assets/briefcase-D9M4aNmi.js +0 -1
  889. package/dist/showcase/assets/button-DbhXfR1N.js +0 -44
  890. package/dist/showcase/assets/button-group-BpdhyMif.js +0 -1
  891. package/dist/showcase/assets/buttons-XexbmUtN.js +0 -259
  892. package/dist/showcase/assets/calendar-BADJgjpI.js +0 -16
  893. package/dist/showcase/assets/calendar-Djh3xLVx.js +0 -1
  894. package/dist/showcase/assets/calendar-dWZ2-0gU.js +0 -1
  895. package/dist/showcase/assets/card-BUSAPPkx.js +0 -1
  896. package/dist/showcase/assets/cards-DHBPe01w.js +0 -328
  897. package/dist/showcase/assets/chart-column-6l5wIZ0h.js +0 -1
  898. package/dist/showcase/assets/chevron-down-at2vrt1V.js +0 -1
  899. package/dist/showcase/assets/chevron-left-DIs3WYNO.js +0 -1
  900. package/dist/showcase/assets/chevron-right-BNy0Or0x.js +0 -1
  901. package/dist/showcase/assets/chevron-up-CX7619BJ.js +0 -1
  902. package/dist/showcase/assets/chevrons-up-down-Be6eciau.js +0 -1
  903. package/dist/showcase/assets/circle-C0Yd1DDS.js +0 -1
  904. package/dist/showcase/assets/circle-alert-DfQp_X3_.js +0 -1
  905. package/dist/showcase/assets/circle-check-BkqQe1tv.js +0 -1
  906. package/dist/showcase/assets/circle-check-big-BXxHUhuc.js +0 -1
  907. package/dist/showcase/assets/circle-dot-HeRgxZxN.js +0 -1
  908. package/dist/showcase/assets/circle-question-mark-BgS4fb6N.js +0 -1
  909. package/dist/showcase/assets/circle-x-CMzwDsaf.js +0 -1
  910. package/dist/showcase/assets/clock-ynCzs_rR.js +0 -1
  911. package/dist/showcase/assets/code-xml-B8aVstrJ.js +0 -1
  912. package/dist/showcase/assets/collapsible-C8CKdiRn.js +0 -27
  913. package/dist/showcase/assets/collapsible-u43HxDHB.js +0 -1
  914. package/dist/showcase/assets/combobox-D-6ff0VG.js +0 -622
  915. package/dist/showcase/assets/command-BsHudlBe.js +0 -1
  916. package/dist/showcase/assets/command-DZqmBolX.js +0 -45
  917. package/dist/showcase/assets/comment-composer-OnxlkC5y.js +0 -1
  918. package/dist/showcase/assets/comment-item-DmZ1AJ2Y.js +0 -1
  919. package/dist/showcase/assets/comments-BjIVksjE.js +0 -349
  920. package/dist/showcase/assets/commerce-3T1GxvrA.js +0 -78
  921. package/dist/showcase/assets/commerce-extras-CYv_uRQR.js +0 -179
  922. package/dist/showcase/assets/composite-mol0-2zZ.js +0 -1
  923. package/dist/showcase/assets/contact-card-CWAANJqn.js +0 -65
  924. package/dist/showcase/assets/content-container-D3Phw6h8.js +0 -1
  925. package/dist/showcase/assets/copyable-BdzUH3U3.js +0 -96
  926. package/dist/showcase/assets/course-card-Cb6Y2vJ6.js +0 -113
  927. package/dist/showcase/assets/cpu-CRrekbGQ.js +0 -1
  928. package/dist/showcase/assets/credit-card--5vg7bQy.js +0 -1
  929. package/dist/showcase/assets/currency-VuqnKj_Y.js +0 -149
  930. package/dist/showcase/assets/dark-surfaces-DEyBimFz.js +0 -90
  931. package/dist/showcase/assets/database-Bnvw0wVV.js +0 -1
  932. package/dist/showcase/assets/date-block-IhoCVl_d.js +0 -1
  933. package/dist/showcase/assets/date-picker-DnJpsnaF.js +0 -1
  934. package/dist/showcase/assets/date-pickers-CEbieq-R.js +0 -110
  935. package/dist/showcase/assets/dense-info-B04QmrOd.js +0 -106
  936. package/dist/showcase/assets/dialog-DotEO3IO.js +0 -1
  937. package/dist/showcase/assets/display-hK7Dtm-B.js +0 -392
  938. package/dist/showcase/assets/dist-DQgGKvzA.js +0 -1
  939. package/dist/showcase/assets/dollar-sign-gJtl-XaL.js +0 -1
  940. package/dist/showcase/assets/download-CMrNgeil.js +0 -1
  941. package/dist/showcase/assets/dropdown-menu-Cqv6D7Sb.js +0 -1
  942. package/dist/showcase/assets/dropzone-v69fWHZJ.js +0 -1
  943. package/dist/showcase/assets/ellipsis-CgqPlt6Z.js +0 -1
  944. package/dist/showcase/assets/ellipsis-vertical-CiJqC0n2.js +0 -1
  945. package/dist/showcase/assets/empty-DYHzk-Gb.js +0 -1
  946. package/dist/showcase/assets/empty-item-CTwvC_3M.js +0 -49
  947. package/dist/showcase/assets/empty-state-eUgJ4h41.js +0 -188
  948. package/dist/showcase/assets/enhanced-activities-XU2u5gO6.js +0 -359
  949. package/dist/showcase/assets/esm-B7xAMXnv.js +0 -2
  950. package/dist/showcase/assets/event-calendar-D2rjpzq1.js +0 -138
  951. package/dist/showcase/assets/event-log-BxER62Ds.js +0 -326
  952. package/dist/showcase/assets/example-DPfw-R7_.js +0 -1
  953. package/dist/showcase/assets/external-link-DJNGkjZ0.js +0 -1
  954. package/dist/showcase/assets/eye-BQU3UqWi.js +0 -1
  955. package/dist/showcase/assets/feature-announcement-CjGQEODB.js +0 -34
  956. package/dist/showcase/assets/file-DBpbC8g-.js +0 -1
  957. package/dist/showcase/assets/file-text-DokBif5V.js +0 -1
  958. package/dist/showcase/assets/filters-DM2olMKy.js +0 -78
  959. package/dist/showcase/assets/flag-hAuZbHU1.js +0 -1
  960. package/dist/showcase/assets/folder-open-DqubQ0ts.js +0 -1
  961. package/dist/showcase/assets/form-sizing-CfbZF8Ja.js +0 -1
  962. package/dist/showcase/assets/format-gCABLair.js +0 -1
  963. package/dist/showcase/assets/forms-FsAT0C-I.js +0 -790
  964. package/dist/showcase/assets/generic-BUuo7j09.js +0 -1
  965. package/dist/showcase/assets/getPseudoElementBounds-l8uxcPNL.js +0 -1
  966. package/dist/showcase/assets/gift-CS7Tg3kD.js +0 -1
  967. package/dist/showcase/assets/giftcard-cards-h1ffLs9F.js +0 -85
  968. package/dist/showcase/assets/git-branch-D4-6vv6t.js +0 -1
  969. package/dist/showcase/assets/global-search-BUyhhsQv.js +0 -90
  970. package/dist/showcase/assets/globe-CqLYhUfl.js +0 -1
  971. package/dist/showcase/assets/gradient-card-Bwr9OLIL.js +0 -58
  972. package/dist/showcase/assets/header-notifications-BWla1yhM.js +0 -1
  973. package/dist/showcase/assets/heart-DfZtXfIP.js +0 -1
  974. package/dist/showcase/assets/house-DhIReDt8.js +0 -1
  975. package/dist/showcase/assets/icon-badge-BgRFYZEc.js +0 -1
  976. package/dist/showcase/assets/image-D_eNEZWQ.js +0 -1
  977. package/dist/showcase/assets/inbox-5sFkO7gC.js +0 -1
  978. package/dist/showcase/assets/index-B-Z7p0So.js +0 -10
  979. package/dist/showcase/assets/inertValue-NU_Amr-x.js +0 -1
  980. package/dist/showcase/assets/info-DyB6KH3Z.js +0 -1
  981. package/dist/showcase/assets/inline-stat-D2aaM1Vt.js +0 -1
  982. package/dist/showcase/assets/input-BS64kyoq.js +0 -1
  983. package/dist/showcase/assets/input-DWLyniGt.js +0 -1
  984. package/dist/showcase/assets/input-group-BS8j5Eek.js +0 -47
  985. package/dist/showcase/assets/input-group-B_E_3EGS.js +0 -1
  986. package/dist/showcase/assets/inputs-DOQ2foig.js +0 -49
  987. package/dist/showcase/assets/invoice-header-C2-uQE_s.js +0 -36
  988. package/dist/showcase/assets/invoice-items-BUunRJqA.js +0 -36
  989. package/dist/showcase/assets/invoice-mini-BrLMrzN6.js +0 -14
  990. package/dist/showcase/assets/invoice-table-CaB9Z8jI.js +0 -30
  991. package/dist/showcase/assets/isSameDay-rwvIyLOL.js +0 -1
  992. package/dist/showcase/assets/isToday-CIAzBrb5.js +0 -1
  993. package/dist/showcase/assets/italic-B02a4PdD.js +0 -1
  994. package/dist/showcase/assets/item-C-0RObvI.js +0 -117
  995. package/dist/showcase/assets/item-CCu0Ufaq.js +0 -1
  996. package/dist/showcase/assets/item-DF4m_56j.js +0 -1
  997. package/dist/showcase/assets/kanban-BgW23a7P.js +0 -175
  998. package/dist/showcase/assets/label-MdV7pglj.js +0 -1
  999. package/dist/showcase/assets/layout-containers-nKVReEJB.js +0 -96
  1000. package/dist/showcase/assets/layout-header-CKyxHHPC.js +0 -170
  1001. package/dist/showcase/assets/layout-page-ClD2yMnK.js +0 -122
  1002. package/dist/showcase/assets/layout-sidebar-jdQnYDiT.js +0 -224
  1003. package/dist/showcase/assets/layout-users-Cv849xnU.js +0 -104
  1004. package/dist/showcase/assets/lib-BHW4JERQ.js +0 -1
  1005. package/dist/showcase/assets/lock-B8bfl9sZ.js +0 -1
  1006. package/dist/showcase/assets/mail-DmOBTX4I.js +0 -1
  1007. package/dist/showcase/assets/map-ButgRl8f.js +0 -124
  1008. package/dist/showcase/assets/map-pin-o3egisLq.js +0 -1
  1009. package/dist/showcase/assets/menus-DdXgYKVA.js +0 -89
  1010. package/dist/showcase/assets/message-square-Bl6P4TA0.js +0 -1
  1011. package/dist/showcase/assets/metadata-list-aXo96h_U.js +0 -278
  1012. package/dist/showcase/assets/metric-BLHKuZtE.js +0 -1
  1013. package/dist/showcase/assets/metric-grid-6Dpj5eV3.js +0 -1
  1014. package/dist/showcase/assets/metric-trend-chip-m389ipmG.js +0 -1
  1015. package/dist/showcase/assets/metrics-analytics-bar-B-1IUlHf.js +0 -44
  1016. package/dist/showcase/assets/metrics-analytics-cards-B8tvK_RB.js +0 -77
  1017. package/dist/showcase/assets/metrics-comparison-DKJ7Js3F.js +0 -76
  1018. package/dist/showcase/assets/metrics-heatmap-BlRnJoI0.js +0 -27
  1019. package/dist/showcase/assets/metrics-inline-badge-COI7f64X.js +0 -17
  1020. package/dist/showcase/assets/metrics-kpi-row-LRfmKhsy.js +0 -31
  1021. package/dist/showcase/assets/metrics-micro-grid-DmqIQVVR.js +0 -42
  1022. package/dist/showcase/assets/metrics-overview-Dbf5RM2k.js +0 -192
  1023. package/dist/showcase/assets/metrics-stat-cards-D5oevQvv.js +0 -54
  1024. package/dist/showcase/assets/minus-D-jmUi0G.js +0 -1
  1025. package/dist/showcase/assets/money-display-C__61373.js +0 -1
  1026. package/dist/showcase/assets/month-year-picker-BfBQePUY.js +0 -1
  1027. package/dist/showcase/assets/navigation-DUAe-sQV.js +0 -86
  1028. package/dist/showcase/assets/navigation-extras-itSAf6QT.js +0 -43
  1029. package/dist/showcase/assets/navigation-fAOvwIlP.js +0 -230
  1030. package/dist/showcase/assets/onboarding-checklist-1gmzk3_J.js +0 -119
  1031. package/dist/showcase/assets/overlays-BMTBOIEI.js +0 -88
  1032. package/dist/showcase/assets/overlays-Lu16yJWM.js +0 -393
  1033. package/dist/showcase/assets/package-BIa1hPVQ.js +0 -1
  1034. package/dist/showcase/assets/page-action-button-C5NiQHnP.js +0 -1
  1035. package/dist/showcase/assets/page-header-Cwf9DuhD.js +0 -1
  1036. package/dist/showcase/assets/pagination-9iSNmdCx.js +0 -1
  1037. package/dist/showcase/assets/pagination-MjniF-7j.js +0 -42
  1038. package/dist/showcase/assets/paperclip-CaNLUOIA.js +0 -1
  1039. package/dist/showcase/assets/pencil-DTLGPoc_.js +0 -1
  1040. package/dist/showcase/assets/phone-XvU6LndA.js +0 -1
  1041. package/dist/showcase/assets/plus-BDSCn8ol.js +0 -1
  1042. package/dist/showcase/assets/popover-CvhuubS6.js +0 -1
  1043. package/dist/showcase/assets/popover-DUQqLZN2.js +0 -1
  1044. package/dist/showcase/assets/popover-menu-DVGBuFpL.js +0 -1
  1045. package/dist/showcase/assets/progress-BQopCRpV.js +0 -1
  1046. package/dist/showcase/assets/progress-CvSUR260.js +0 -18
  1047. package/dist/showcase/assets/props-table-BzUnIcv-.js +0 -1
  1048. package/dist/showcase/assets/quote-D55lkoXn.js +0 -1
  1049. package/dist/showcase/assets/receipt-D3ilhl9U.js +0 -1
  1050. package/dist/showcase/assets/refresh-cw-Csl2LQ4l.js +0 -1
  1051. package/dist/showcase/assets/resolveValueLabel-CM5i142y.js +0 -1
  1052. package/dist/showcase/assets/rich-text-editor-Bz7jWvPv.js +0 -124
  1053. package/dist/showcase/assets/rich-text-editor-DWKFpgNI.js +0 -141
  1054. package/dist/showcase/assets/rotate-ccw-BnkpK7eq.js +0 -1
  1055. package/dist/showcase/assets/scroll-area-BTVLd58j.js +0 -1
  1056. package/dist/showcase/assets/scroll-area-CgFEDepJ.js +0 -32
  1057. package/dist/showcase/assets/select-B7-tZDlG.js +0 -1
  1058. package/dist/showcase/assets/send-BhjEdZ06.js +0 -1
  1059. package/dist/showcase/assets/separator-CJayjKGP.js +0 -28
  1060. package/dist/showcase/assets/separator-CZ_sPWQj.js +0 -1
  1061. package/dist/showcase/assets/settings-Duj7gAZe.js +0 -1
  1062. package/dist/showcase/assets/sheet-BMabZ_Gj.js +0 -1
  1063. package/dist/showcase/assets/shield-C22sWOf4.js +0 -1
  1064. package/dist/showcase/assets/shield-alert-DgZ6UO46.js +0 -1
  1065. package/dist/showcase/assets/shield-check-jGSgmijm.js +0 -1
  1066. package/dist/showcase/assets/shopping-bag-Cd09Ga6D.js +0 -1
  1067. package/dist/showcase/assets/sidebar.context-CXTHS3vn.js +0 -1
  1068. package/dist/showcase/assets/skeleton-Dmp4eC1A.js +0 -1
  1069. package/dist/showcase/assets/skeleton-FLNbc7QP.js +0 -29
  1070. package/dist/showcase/assets/smart-card-50WN9sCI.js +0 -1
  1071. package/dist/showcase/assets/sonner-DR_DYpqb.js +0 -22
  1072. package/dist/showcase/assets/sortable.esm-C_l8_Iqt.js +0 -5
  1073. package/dist/showcase/assets/sparkles-C-fyahzv.js +0 -1
  1074. package/dist/showcase/assets/spinner-B8jgVQNj.js +0 -30
  1075. package/dist/showcase/assets/spinner-C4zPRpI0.js +0 -49
  1076. package/dist/showcase/assets/spinner-DFjHsQlR.js +0 -1
  1077. package/dist/showcase/assets/square-pen-Dp7lCfI3.js +0 -1
  1078. package/dist/showcase/assets/stacked-avatars-CTckbUiW.js +0 -1
  1079. package/dist/showcase/assets/star-l00ivfkD.js +0 -1
  1080. package/dist/showcase/assets/startOfDay-Xmododib.js +0 -1
  1081. package/dist/showcase/assets/styles-zuwR0q1z.js +0 -1
  1082. package/dist/showcase/assets/switch-D3LrIrTQ.js +0 -1
  1083. package/dist/showcase/assets/switch-ylXVyh_N.js +0 -1
  1084. package/dist/showcase/assets/table-Cn3-19zb.js +0 -1
  1085. package/dist/showcase/assets/table-ao3IcAnF.js +0 -390
  1086. package/dist/showcase/assets/tabs-CTLQKtiu.js +0 -19
  1087. package/dist/showcase/assets/tabs-lc1fX94A.js +0 -1
  1088. package/dist/showcase/assets/text-button-Fu8UY1A8.js +0 -1
  1089. package/dist/showcase/assets/text-link--EyGasJN.js +0 -1
  1090. package/dist/showcase/assets/textarea-BdhnlNrF.js +0 -1
  1091. package/dist/showcase/assets/textarea-D1kG3a9B.js +0 -1
  1092. package/dist/showcase/assets/timelines-DF3tNgyG.js +0 -186
  1093. package/dist/showcase/assets/toggle-group-CfxuWsv9.js +0 -1
  1094. package/dist/showcase/assets/toggles-CacdBPlV.js +0 -71
  1095. package/dist/showcase/assets/toggles-group-CRhgTGmL.js +0 -32
  1096. package/dist/showcase/assets/trash-2-B0_GprQM.js +0 -1
  1097. package/dist/showcase/assets/trending-up-B202l1b6.js +0 -1
  1098. package/dist/showcase/assets/truck-Bl1pNrHi.js +0 -1
  1099. package/dist/showcase/assets/typography-DEtOxBlR.js +0 -214
  1100. package/dist/showcase/assets/ui-badge-n4RA0J5b.js +0 -28
  1101. package/dist/showcase/assets/ui-card-Ck-kzrTh.js +0 -30
  1102. package/dist/showcase/assets/ui-table-gzOp82pf.js +0 -42
  1103. package/dist/showcase/assets/upload-tray-VvKdTZSi.js +0 -138
  1104. package/dist/showcase/assets/useAnchoredPopupScrollLock-Cu2ZwN7Z.js +0 -1
  1105. package/dist/showcase/assets/useCollapsiblePanel-C6_cdQ7B.js +0 -1
  1106. package/dist/showcase/assets/useCompositeItem-BfUPqXoj.js +0 -1
  1107. package/dist/showcase/assets/useCompositeListItem-Cf2lpKB8.js +0 -1
  1108. package/dist/showcase/assets/useControlled-C6q3nmcf.js +0 -1
  1109. package/dist/showcase/assets/useLabelableId-CfPT16c1.js +0 -1
  1110. package/dist/showcase/assets/useOpenInteractionType-CGeqRuuY.js +0 -1
  1111. package/dist/showcase/assets/useRender-CoUlh0uZ.js +0 -1
  1112. package/dist/showcase/assets/useRole-DSPUSyVX.js +0 -1
  1113. package/dist/showcase/assets/useTriggerFocusGuards-BwZ1HD24.js +0 -1
  1114. package/dist/showcase/assets/useValueChanged-Dej794I1.js +0 -1
  1115. package/dist/showcase/assets/user-3L762Mec.js +0 -1
  1116. package/dist/showcase/assets/user-plus-9WRYjS04.js +0 -1
  1117. package/dist/showcase/assets/users-CxKZ7gt8.js +0 -1
  1118. package/dist/showcase/assets/vendor-profile-BaCptdMF.js +0 -37
  1119. package/dist/showcase/assets/wrench-Duh91tnW.js +0 -1
  1120. package/dist/showcase/assets/x-t42iKYpL.js +0 -1
  1121. package/dist/showcase/assets/zap-D0z3Tv_L.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/base/event-calendar/event-calendar.types.ts","../../../../src/components/base/event-calendar/event-calendar-event-badge.tsx","../../../../src/components/base/event-calendar/use-event-calendar-data.tsx","../../../../src/components/base/event-calendar/event-calendar-day-cell.tsx","../../../../src/components/base/event-calendar/event-calendar-header.tsx","../../../../src/components/base/event-calendar/colors.ts","../../../../src/components/base/event-calendar/event-calendar-legend.tsx","../../../../src/components/base/event-calendar/use-event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar-event-card.tsx"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\n/**\n * Calendar action item.\n *\n * The library never navigates on its own — there is no `href` shortcut.\n * The consumer wires routing into `onClick` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`), or supplies a fully\n * pre-rendered element via `element`.\n */\nexport interface CalendarActionItem {\n\tid?: string;\n\tlabel: string;\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\telement?: ReactNode;\n\ticon?: LucideIcon;\n\tvariant?: 'default' | 'outline' | 'ghost' | 'secondary' | 'destructive';\n\tisVisible?: boolean;\n}\n\n/**\n * Base event data structure\n */\nexport interface CalendarEvent {\n\tid: string;\n\ttitle: string;\n\tdescription?: string;\n\tstartDate: Date;\n\tendDate?: Date;\n\tallDay?: boolean;\n\tcategory: string;\n\tmetadata?: Record<string, unknown>;\n\turl?: string;\n}\n\n/**\n * Canonical category palette tokens. Map to a small fixed set of colours so\n * the calendar can render dots/strokes without parsing arbitrary class names.\n * Add new tokens here when the design palette grows.\n */\nexport type CalendarColorToken =\n\t| 'gray'\n\t| 'red'\n\t| 'orange'\n\t| 'amber'\n\t| 'yellow'\n\t| 'green'\n\t| 'blue'\n\t| 'purple';\n\n/**\n * Tailwind class lookups for each canonical token. Used by day-cell dots and\n * event-badge dots so we never string-parse `category.color`.\n */\nexport const calendarTokenDot: Record<CalendarColorToken, string> = {\n\tgray: 'bg-gray-500',\n\tred: 'bg-red-500',\n\torange: 'bg-orange-500',\n\tamber: 'bg-amber-500',\n\tyellow: 'bg-yellow-500',\n\tgreen: 'bg-green-500',\n\tblue: 'bg-blue-500',\n\tpurple: 'bg-purple-500',\n};\n\n/**\n * Event category configuration. Provide a canonical `colorToken` when\n * possible — it's used everywhere the calendar paints a dot. The free-form\n * `color`/`bgColor` strings are kept for legacy consumers (legend swatches,\n * external Tailwind classes) but new code should rely on `colorToken`.\n */\nexport interface EventCategory {\n\tid: string;\n\tlabel: string;\n\tcolor: string;\n\tbgColor?: string;\n\ttextColor?: string;\n\tcolorToken?: CalendarColorToken;\n\ticon?: LucideIcon;\n\tdescription?: string;\n}\n\n/**\n * Best-effort mapping from a free-form `category.color` Tailwind class to a\n * canonical token. Falls back to `gray`. Prefer `category.colorToken` —\n * this is only used to retrofit legacy consumers.\n */\nexport function resolveCategoryColorToken(category?: EventCategory | null): CalendarColorToken {\n\tif (!category) return 'gray';\n\tif (category.colorToken) return category.colorToken;\n\tconst c = category.color ?? '';\n\tif (c.includes('orange')) return 'orange';\n\tif (c.includes('yellow')) return 'yellow';\n\tif (c.includes('amber')) return 'amber';\n\tif (c.includes('purple')) return 'purple';\n\tif (c.includes('green')) return 'green';\n\tif (c.includes('blue')) return 'blue';\n\tif (c.includes('red')) return 'red';\n\treturn 'gray';\n}\n\n/**\n * Calendar view mode\n */\nexport type CalendarViewMode = 'month' | 'week' | 'agenda';\n\n/**\n * Day cell data (processed)\n */\nexport interface CalendarDayData {\n\tdate: Date;\n\tisCurrentMonth: boolean;\n\tisToday: boolean;\n\tisWeekend: boolean;\n\tevents: CalendarEvent[];\n\teventCount: number;\n\thasMultipleEvents: boolean;\n}\n\n/**\n * Localizable strings — pass partial overrides via `strings`.\n */\nexport interface EventCalendarStrings {\n\ttoday: string;\n\tprevious: string;\n\tnext: string;\n\tloading: string;\n\tbooking: string;\n\tbookings: string;\n\tviewMode: {\n\t\tmonth: string;\n\t\tweek: string;\n\t\tagenda: string;\n\t};\n\tweekdaysShort: [string, string, string, string, string, string, string]; // Sun..Sat\n}\n\nexport const defaultEventCalendarStrings: EventCalendarStrings = {\n\ttoday: 'Today',\n\tprevious: 'Previous',\n\tnext: 'Next',\n\tloading: 'Loading…',\n\tbooking: 'booking',\n\tbookings: 'bookings',\n\tviewMode: {\n\t\tmonth: 'Month',\n\t\tweek: 'Week',\n\t\tagenda: 'Agenda',\n\t},\n\tweekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n};\n\n/**\n * Visual variant for the weekday-header strip (\"Sun Mon Tue …\").\n * - `default` — muted text on transparent (matches body)\n * - `accent` — primary-tinted background, primary text\n * - `tinted` — muted background, foreground text (subtle separation)\n * - `bordered` — bottom-bordered row, foreground text\n *\n * Consumers can also pass a fully custom `dayHeadingClassName` to override\n * any preset.\n */\nexport type EventCalendarDayHeadingVariant = 'default' | 'accent' | 'tinted' | 'bordered';\n\n/**\n * Predicate-or-list shape for date rules. Either explicit dates,\n * a predicate callback, or both (combined with OR semantics).\n */\nexport type DateRule = Date[] | ((date: Date) => boolean) | { dates?: Date[]; predicate?: (date: Date) => boolean };\n\n/**\n * Hook for filtering events at render time without mutating the source list.\n */\nexport type EventFilter = (event: CalendarEvent) => boolean;\n\n/**\n * Render hook for individual event chips in the day cell.\n */\nexport type RenderEventFn = (event: CalendarEvent, category: EventCategory | undefined) => ReactNode;\n\n/**\n * Render hook for the day cell body (after the date number is drawn).\n */\nexport type RenderDayCellFn = (day: CalendarDayData, defaultRender: () => ReactNode) => ReactNode;\n\n/**\n * Range mode for navigation. `month-year` exposes a Month/Year picker\n * trigger in the header that jumps the calendar to that month.\n */\nexport type EventCalendarRangeMode = 'date' | 'month-year';\n\n/**\n * Event calendar props\n */\nexport interface EventCalendarProps {\n\tevents: CalendarEvent[];\n\tcategories: EventCategory[];\n\tviewMode?: CalendarViewMode;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdefaultDate?: Date;\n\tonDateChange?: (date: Date) => void;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tonDayClick?: (date: Date, events: CalendarEvent[]) => void;\n\tmaxEventsPerDay?: number;\n\tshowLegend?: boolean;\n\tshowHeader?: boolean;\n\tshowWeekends?: boolean;\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tenableCategoryFilter?: boolean;\n\tvisibleCategories?: string[];\n\tonVisibleCategoriesChange?: (categories: string[]) => void;\n\tisLoading?: boolean;\n\temptyStateMessage?: string;\n\tclassName?: string;\n\tcompact?: boolean;\n\tactions?: CalendarActionItem[];\n\tstrings?: Partial<EventCalendarStrings>;\n\t/** Visual variant for the weekday header strip. Default `default`. */\n\tdayHeadingVariant?: EventCalendarDayHeadingVariant;\n\t/** Custom class names appended to each weekday-heading cell — wins over variant presets. */\n\tdayHeadingClassName?: string;\n\t/** Optional renderer to fully control a single weekday cell. */\n\trenderDayHeading?: (day: string, index: number) => ReactNode;\n\n\t/**\n\t * Header navigation range mode.\n\t * - `date` — DatePicker (default; jump to a specific date)\n\t * - `month-year` — MonthYearPicker (compact month/year jump)\n\t */\n\trangeMode?: EventCalendarRangeMode;\n\n\t/** Earliest date the user can navigate to. Earlier nav is disabled. */\n\tminDate?: Date;\n\t/** Latest date the user can navigate to. Later nav is disabled. */\n\tmaxDate?: Date;\n\t/**\n\t * Dates that should render in the calendar but be marked as disabled\n\t * (greyed out, not clickable). Pass dates, a predicate, or both.\n\t */\n\tdisabledDates?: DateRule;\n\t/**\n\t * Hide events from rendering at runtime without mutating `events`.\n\t * Returns `true` to KEEP an event, `false` to hide it.\n\t */\n\tfilterEvent?: EventFilter;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n\t/** Per-day-cell renderer override. */\n\trenderDayCell?: RenderDayCellFn;\n}\n\n/**\n * Day cell props\n */\nexport interface EventCalendarDayCellProps {\n\tdata: CalendarDayData;\n\tcategories: EventCategory[];\n\tmaxEvents?: number;\n\tonClick: () => void;\n\tcompact?: boolean;\n\tstrings?: Pick<EventCalendarStrings, 'booking' | 'bookings'>;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n}\n\n/**\n * Event badge props\n */\nexport interface EventCalendarEventBadgeProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tcompact?: boolean;\n\tonClick?: () => void;\n}\n\n/**\n * Event card props\n */\nexport interface EventCalendarEventCardProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tonClick?: () => void;\n}\n\n/**\n * Legend props\n */\nexport interface EventCalendarLegendProps {\n\tcategories: EventCategory[];\n\tvisibleCategories?: string[];\n\tonToggleCategory?: (categoryId: string) => void;\n\tenableFiltering?: boolean;\n}\n\n/**\n * Header props\n */\nexport interface EventCalendarHeaderProps {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tdisplayLabel: string;\n\tonPrevious: () => void;\n\tonNext: () => void;\n\tonToday: () => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tonDateChange?: (date: Date) => void;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tactions?: CalendarActionItem[];\n\tstrings?: Pick<EventCalendarStrings, 'today' | 'previous' | 'next' | 'viewMode'>;\n\t/** Range mode for the date trigger inside the header. */\n\trangeMode?: EventCalendarRangeMode;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tprevDisabled?: boolean;\n\tnextDisabled?: boolean;\n}\n\n/**\n * Hook return type\n */\nexport interface UseEventCalendarReturn {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tcalendarDays: CalendarDayData[];\n\tvisibleEvents: CalendarEvent[];\n\tgoToToday: () => void;\n\tgoToNextPeriod: () => void;\n\tgoToPreviousPeriod: () => void;\n\tsetDate: (date: Date) => void;\n\tsetViewMode: (mode: CalendarViewMode) => void;\n\tdisplayLabel: string;\n\thasEvents: boolean;\n}\n\n/**\n * Data transformation hook options\n */\nexport interface UseEventCalendarDataOptions {\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\tshowWeekends?: boolean;\n\tvisibleCategories?: string[];\n}\n","/**\n * EventCalendarEventBadge — compact badge representing a single event inside\n * a day cell. Renders a category-coloured dot, the event title (or a custom\n * `metadata.calendar_cell_title` override), and the start time when not an\n * all-day event. Click is captured locally and propagated via `onClick`.\n */\nimport { format } from 'date-fns';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype EventCalendarEventBadgeProps,\n} from './event-calendar.types';\n\nexport function EventCalendarEventBadge({\n\tevent,\n\tcategory,\n\tcompact = false,\n\tonClick,\n}: EventCalendarEventBadgeProps) {\n\tconst dotColor = calendarTokenDot[resolveCategoryColorToken(category)];\n\n\tconst timeDisplay = !event.allDay ? format(event.startDate, 'HH:mm') : null;\n\tconst cellTitleRaw = event.metadata?.calendar_cell_title;\n\tconst displayTitle =\n\t\ttypeof cellTitleRaw === 'string' && cellTitleRaw.trim() !== ''\n\t\t\t? cellTitleRaw\n\t\t\t: event.title;\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.();\n\t\t\t}}\n\t\t\tclassName={cn('event-calendar-event-badge--component', \n\t\t\t\t'group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5',\n\t\t\t\t'text-left transition-colors hover:bg-accent/50',\n\t\t\t\tcompact ? 'h-5' : 'h-6',\n\t\t\t)}\n\t\t\ttitle={typeof displayTitle === 'string' ? displayTitle : undefined}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={cn('size-1.5 shrink-0 rounded-full', dotColor)}\n\t\t\t/>\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"xxs\"\n\t\t\t\tweight=\"medium\"\n\t\t\t\tclassName=\"min-w-0 flex-1 truncate\"\n\t\t\t>\n\t\t\t\t{displayTitle}\n\t\t\t</Text>\n\t\t\t{!!timeDisplay && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName=\"shrink-0 whitespace-nowrap tabular-nums\"\n\t\t\t\t>\n\t\t\t\t\t{timeDisplay}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{void Badge}\n\t\t</button>\n\t);\n}\n\nEventCalendarEventBadge.displayName = 'EventCalendarEventBadge';\n","import {\n\tstartOfMonth,\n\tendOfMonth,\n\tstartOfWeek,\n\tendOfWeek,\n\teachDayOfInterval,\n\tisSameMonth,\n\tisToday,\n\tisSameDay,\n\tisWeekend,\n\tstartOfDay\n} from 'date-fns';\nimport { useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarDayData,\n\tCalendarViewMode,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\n\n/**\n * Transforms raw events into calendar grid data\n */\nexport function useEventCalendarData(\n\tevents: CalendarEvent[],\n\tcurrentDate: Date,\n\tviewMode: CalendarViewMode,\n\toptions: UseEventCalendarDataOptions = {}\n): CalendarDayData[] {\n\tconst {\n\t\tweekStartsOn = 1,\n\t\tshowWeekends = true,\n\t\tvisibleCategories\n\t} = options;\n\n\treturn useMemo(() => {\n\t\tconst monthStart = startOfMonth(currentDate);\n\t\tconst monthEnd = endOfMonth(currentDate);\n\n\t\tlet rangeStart: Date;\n\t\tlet rangeEnd: Date;\n\n\t\tif (viewMode === 'month') {\n\t\t\trangeStart = startOfWeek(monthStart, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(monthEnd, { weekStartsOn });\n\t\t} else if (viewMode === 'week') {\n\t\t\trangeStart = startOfWeek(currentDate, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(currentDate, { weekStartsOn });\n\t\t} else {\n\t\t\trangeStart = monthStart;\n\t\t\trangeEnd = monthEnd;\n\t\t}\n\n\t\tconst days = eachDayOfInterval({ start: rangeStart, end: rangeEnd });\n\n\t\tconst filteredEvents = visibleCategories && visibleCategories.length > 0\n\t\t\t? events.filter(event => visibleCategories.includes(event.category))\n\t\t\t: events;\n\n\t\tconst eventsByDate = new Map<string, CalendarEvent[]>();\n\n\t\tfilteredEvents.forEach(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tif (Number.isNaN(eventStart.getTime())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet eventEnd = eventStart;\n\t\t\tif (event.endDate && !Number.isNaN(event.endDate.getTime())) {\n\t\t\t\tconst normalizedEnd = startOfDay(event.endDate);\n\t\t\t\tif (!Number.isNaN(normalizedEnd.getTime()) && normalizedEnd.getTime() >= eventStart.getTime()) {\n\t\t\t\t\teventEnd = normalizedEnd;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventDays = eachDayOfInterval({ start: eventStart, end: eventEnd });\n\n\t\t\teventDays.forEach(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tif (!eventsByDate.has(dateKey)) {\n\t\t\t\t\teventsByDate.set(dateKey, []);\n\t\t\t\t}\n\t\t\t\teventsByDate.get(dateKey)!.push(event);\n\t\t\t});\n\t\t});\n\n\t\tconst calendarDays: CalendarDayData[] = days\n\t\t\t.filter(day => showWeekends || !isWeekend(day))\n\t\t\t.map(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tconst dayEvents = eventsByDate.get(dateKey) || [];\n\n\t\t\t\tconst sortedEvents = [...dayEvents].sort((a, b) => {\n\t\t\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tdate: day,\n\t\t\t\t\tisCurrentMonth: isSameMonth(day, currentDate),\n\t\t\t\t\tisToday: isToday(day),\n\t\t\t\t\tisWeekend: isWeekend(day),\n\t\t\t\t\tevents: sortedEvents,\n\t\t\t\t\teventCount: sortedEvents.length,\n\t\t\t\t\thasMultipleEvents: sortedEvents.length > 1\n\t\t\t\t};\n\t\t\t});\n\n\t\treturn calendarDays;\n\t}, [events, currentDate, viewMode, weekStartsOn, showWeekends, visibleCategories]);\n}\n\n/**\n * Gets events for a specific day\n */\nexport function getEventsForDay(\n\tevents: CalendarEvent[],\n\tdate: Date\n): CalendarEvent[] {\n\treturn events\n\t\t.filter(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tconst eventEnd = event.endDate ? startOfDay(event.endDate) : eventStart;\n\t\t\tconst targetDay = startOfDay(date);\n\n\t\t\treturn isSameDay(targetDay, eventStart) ||\n\t\t\t\tisSameDay(targetDay, eventEnd) ||\n\t\t\t\t(targetDay > eventStart && targetDay < eventEnd);\n\t\t})\n\t\t.sort((a, b) => {\n\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t});\n}\n\n/**\n * Gets the category object by ID\n */\nexport function getCategoryById<T extends { id: string }>(\n\tcategories: T[],\n\tcategoryId: string\n): T | undefined {\n\treturn categories.find(cat => cat.id === categoryId);\n}\n","/**\n * EventCalendarDayCell — single day square in the month grid. Shows the day\n * number, up to `maxEvents` event badges, and an overflow row with category\n * dots + a pluralised \"+N bookings\" hint when more events exist than fit.\n * Whole cell is keyboard-clickable.\n */\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarEventBadge } from './event-calendar-event-badge';\nimport {\n\tcalendarTokenDot,\n\tdefaultEventCalendarStrings,\n\tresolveCategoryColorToken,\n\ttype EventCalendarDayCellProps,\n} from './event-calendar.types';\nimport { getCategoryById } from './use-event-calendar-data';\n\nexport function EventCalendarDayCell({\n\tdata,\n\tcategories,\n\tmaxEvents = 3,\n\tonClick,\n\tcompact = false,\n\tstrings: stringsProp,\n\trenderEvent,\n}: EventCalendarDayCellProps) {\n\tconst strings = {\n\t\tbooking: stringsProp?.booking ?? defaultEventCalendarStrings.booking,\n\t\tbookings: stringsProp?.bookings ?? defaultEventCalendarStrings.bookings,\n\t};\n\tconst { date, isCurrentMonth, isToday, isWeekend, events, eventCount } = data;\n\n\tconst visibleEvents = events.slice(0, maxEvents);\n\tconst remainingCount = Math.max(0, eventCount - maxEvents);\n\n\treturn (\n\t\t<div className={cn('event-calendar-day-cell--component', 'p-0 relative w-full border-r border-b border-border last:border-r-0 [&:nth-child(7n)]:border-r-0')}>\n\t\t\t<div\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={onClick}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tonClick();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative w-full min-h-24 p-2 transition-colors',\n\t\t\t\t\t'hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10',\n\t\t\t\t\t'flex flex-col items-start gap-1',\n\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground opacity-50',\n\t\t\t\t\tisToday && 'h-full bg-accent text-accent-foreground',\n\t\t\t\t\tcompact && 'min-h-20 p-1'\n\t\t\t\t)}\n\t\t\t\taria-label={date.toDateString()}\n\t\t\t\tdata-date={date.toISOString()}\n\t\t\t\tdata-today={isToday}\n\t\t\t\tdata-weekend={isWeekend}\n\t\t\t\tdata-current-month={isCurrentMonth}\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'font-normal leading-none',\n\t\t\t\t\t\tisToday && 'font-semibold',\n\t\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground',\n\t\t\t\t\t\tcompact && 'text-xs'\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{date.getDate()}\n\t\t\t\t</Text>\n\n\t\t\t\t<div className=\"w-full space-y-0.5\">\n\t\t\t\t\t{visibleEvents.map((event) => {\n\t\t\t\t\t\tconst category = getCategoryById(categories, event.category);\n\t\t\t\t\t\tif (renderEvent) {\n\t\t\t\t\t\t\treturn <div key={event.id}>{renderEvent(event, category)}</div>;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<EventCalendarEventBadge\n\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\tevent={event}\n\t\t\t\t\t\t\t\tcategory={category}\n\t\t\t\t\t\t\t\tcompact={compact || data.hasMultipleEvents}\n\t\t\t\t\t\t\t\tonClick={() => onClick()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{remainingCount > 0 && (\n\t\t\t\t\t\t<div className=\"flex items-center gap-1 py-0.5 px-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center -space-x-1\">\n\t\t\t\t\t\t\t\t{categories.slice(0, 3).map((category, idx) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={category.id || idx}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-1.5 w-1.5 rounded-full border border-background',\n\t\t\t\t\t\t\t\t\t\t\tcalendarTokenDot[resolveCategoryColorToken(category)],\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tclassName=\"font-medium text-xxs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{remainingCount} {remainingCount === 1 ? strings.booking : strings.bookings}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarDayCell.displayName = 'EventCalendarDayCell';\n","/**\n * EventCalendarHeader — title, month/year picker, optional action buttons,\n * Today button, prev/next stepper, and a view-mode select. Designed to sit\n * above `EventCalendar`'s grid; can be reused independently for custom\n * layouts.\n */\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport { MonthYearPicker } from '@/components/base/date-pickers';\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue\n} from '@/components/ui/select';\nimport Heading from '@/components/typography/heading';\nimport { cn } from '@/lib/utils';\nimport { defaultEventCalendarStrings, type EventCalendarHeaderProps, type CalendarActionItem } from './event-calendar.types';\n\nfunction resolveActionButtonVariant(actionVariant?: CalendarActionItem['variant']): {\n\tvariant: ButtonVariant;\n\tbuttonStyle: ButtonStyle;\n\tclassName?: string;\n} {\n\tswitch (actionVariant) {\n\t\tcase 'destructive':\n\t\t\treturn { variant: 'error', buttonStyle: 'solid' };\n\t\tcase 'outline':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'outline' };\n\t\tcase 'secondary':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'solid' };\n\t\tcase 'ghost':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'ghost' };\n\t\tcase 'default':\n\t\tdefault:\n\t\t\treturn { variant: 'primary', buttonStyle: 'solid' };\n\t}\n}\n\n/**\n * Render a single action item\n */\nconst renderAction = (action: CalendarActionItem, index: number) => {\n\tif (!action) return null;\n\n\tif (action.element) {\n\t\treturn <div className=\"event-calendar-header--component\" key={action.id || index}>{action.element}</div>;\n\t}\n\n\tconst IconComponent = action.icon;\n\tconst key = action.id || `action-${index}`;\n\n\tconst handleClick = () => {\n\t\taction.onClick?.();\n\t};\n\n\tconst resolved = resolveActionButtonVariant(action.variant);\n\n\treturn (\n\t\t<Button\n\t\t\tkey={key}\n\t\t\tvariant={resolved.variant}\n\t\t\tbuttonStyle={resolved.buttonStyle}\n\t\t\tonClick={handleClick}\n\t\t\tclassName={cn('h-8 gap-2', resolved.className)}\n\t\t\tdisabled={!!action.disabled}\n\t\t>\n\t\t\t{!!IconComponent && <IconComponent className=\"h-4 w-4\" />}\n\t\t\t{action.label}\n\t\t</Button>\n\t);\n};\n\n/**\n * Calendar header component\n */\nexport function EventCalendarHeader({\n\tcurrentDate,\n\tviewMode,\n\tdisplayLabel,\n\tonPrevious,\n\tonNext,\n\tonToday,\n\tonViewModeChange,\n\tonDateChange,\n\tlocale,\n\tactions,\n\tstrings: stringsProp,\n\trangeMode: _rangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tprevDisabled = false,\n\tnextDisabled = false,\n}: EventCalendarHeaderProps) {\n\tconst strings = {\n\t\ttoday: stringsProp?.today ?? defaultEventCalendarStrings.today,\n\t\tprevious: stringsProp?.previous ?? defaultEventCalendarStrings.previous,\n\t\tnext: stringsProp?.next ?? defaultEventCalendarStrings.next,\n\t\tviewMode: { ...defaultEventCalendarStrings.viewMode, ...(stringsProp?.viewMode ?? {}) },\n\t};\n\tconst visibleActions = useMemo(() => {\n\t\treturn (actions || []).filter(a => a.isVisible !== false);\n\t}, [actions]);\n\n\treturn (\n\t\t<div className=\"flex items-center justify-between gap-4 mb-4\">\n\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t<Heading tag=\"h3\" className=\"text-lg font-semibold\">\n\t\t\t\t\t{displayLabel}\n\t\t\t\t</Heading>\n\n\t\t\t\t<MonthYearPicker\n\t\t\t\t\tvalue={{ month: currentDate.getMonth(), year: currentDate.getFullYear() }}\n\t\t\t\t\tonChange={(output) => {\n\t\t\t\t\t\tif (output.date) {\n\t\t\t\t\t\t\tonDateChange?.(output.date);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tfromYear={minDate?.getFullYear()}\n\t\t\t\t\ttoYear={maxDate?.getFullYear()}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t{visibleActions.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleActions.map((action, index) => renderAction(action, index))}\n\t\t\t\t\t\t<div className=\"h-6 w-px bg-border mx-1\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\tonClick={onToday}\n\t\t\t\t\tclassName=\"hidden sm:inline-flex\"\n\t\t\t\t>\n\t\t\t\t\t{strings.today}\n\t\t\t\t</Button>\n\n\t\t\t\t<div className=\"flex items-center border border-border rounded-md\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onPrevious}\n\t\t\t\t\t\tdisabled={prevDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-r-none border-r\"\n\t\t\t\t\t\taria-label={strings.previous}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronLeft className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onNext}\n\t\t\t\t\t\tdisabled={nextDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-l-none\"\n\t\t\t\t\t\taria-label={strings.next}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t{!!onViewModeChange && (\n\t\t\t\t\t<Select\n\t\t\t\t\t\tvalue={viewMode}\n\t\t\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tonViewModeChange(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SelectTrigger className=\"w-28 h-8\">\n\t\t\t\t\t\t\t<SelectValue />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectItem value=\"month\">{strings.viewMode.month}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"week\">{strings.viewMode.week}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"agenda\">{strings.viewMode.agenda}</SelectItem>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarHeader.displayName = 'EventCalendarHeader';\n","/**\n * Event-calendar colour resolution helpers.\n *\n * The canonical token enum (`CalendarColorToken`) and a basic dot-class lookup\n * live in `event-calendar.types.ts`. This module extends that with the richer\n * class sets used by the day cell, event badge, and legend (badge surface,\n * border, filled swatch). Centralising the map here means new tokens (or theme\n * changes) are a one-line update.\n *\n * Legacy `EventCategory.color` strings (e.g. `'border-amber-500'`) are still\n * supported via `resolveCategoryColorToken` (in types.ts), which falls back to\n * substring matching — the same brittle behaviour the old day-cell /\n * event-badge code implemented inline. New code should set\n * `category.colorToken` directly.\n */\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype CalendarColorToken,\n\ttype EventCategory,\n} from './event-calendar.types';\n\nexport interface CalendarColorClasses {\n\t/** Solid dot fill (used as the leading bullet on event chips). */\n\tdot: string;\n\t/** Soft tinted surface for the event badge background. */\n\tbadgeBg: string;\n\t/** Border-tone for the event badge / legend swatch. */\n\tborder: string;\n\t/** Filled legend swatch (square chip in the legend row). */\n\tswatch: string;\n}\n\nconst TOKEN_EXTRAS: Record<CalendarColorToken, Omit<CalendarColorClasses, 'dot'>> = {\n\tgray: { badgeBg: 'bg-gray-500/10', border: 'border-gray-500/40', swatch: 'bg-gray-500' },\n\tred: { badgeBg: 'bg-red-500/10', border: 'border-red-500/40', swatch: 'bg-red-500' },\n\torange: { badgeBg: 'bg-orange-500/10', border: 'border-orange-500/40', swatch: 'bg-orange-500' },\n\tamber: { badgeBg: 'bg-amber-500/10', border: 'border-amber-500/40', swatch: 'bg-amber-500' },\n\tyellow: { badgeBg: 'bg-yellow-500/10', border: 'border-yellow-500/40', swatch: 'bg-yellow-500' },\n\tgreen: { badgeBg: 'bg-green-500/10', border: 'border-green-500/40', swatch: 'bg-green-500' },\n\tblue: { badgeBg: 'bg-blue-500/10', border: 'border-blue-500/40', swatch: 'bg-blue-500' },\n\tpurple: { badgeBg: 'bg-purple-500/10', border: 'border-purple-500/40', swatch: 'bg-purple-500' },\n};\n\n/**\n * Resolve a category to its full set of Tailwind colour classes. Prefers an\n * explicit `colorToken`; falls back to legacy `color` parsing.\n */\nexport function getCalendarColorClasses(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): CalendarColorClasses {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn {\n\t\tdot: calendarTokenDot[token],\n\t\t...TOKEN_EXTRAS[token],\n\t};\n}\n\n/** Convenience: just the dot class (most common lookup). */\nexport function getCalendarDotClass(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): string {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn calendarTokenDot[token];\n}\n","/**\n * EventCalendarLegend — category chips with optional click-to-filter. When\n * `enableFiltering` is true the whole chip toggles the category's visibility\n * (instead of a free-floating checkbox alongside a swatch — that pattern was\n * cluttered). Inactive categories desaturate to muted; active categories use\n * the colour-token swatch + body text.\n */\nimport { type LucideIcon } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport { getCalendarColorClasses } from './colors';\nimport type { EventCalendarLegendProps } from './event-calendar.types';\n\nexport function EventCalendarLegend({\n\tcategories,\n\tvisibleCategories,\n\tonToggleCategory,\n\tenableFiltering = false,\n}: EventCalendarLegendProps) {\n\tconst isAllVisible = !visibleCategories || visibleCategories.length === 0;\n\n\tconst isCategoryVisible = (categoryId: string) => {\n\t\tif (!enableFiltering) return true;\n\t\treturn isAllVisible || visibleCategories?.includes(categoryId);\n\t};\n\n\tconst handleToggle = (categoryId: string) => {\n\t\tif (!enableFiltering || !onToggleCategory) return;\n\t\tonToggleCategory(categoryId);\n\t};\n\n\tif (categories.length === 0) return null;\n\n\treturn (\n\t\t<div\n\t\t\trole={enableFiltering ? 'group' : undefined}\n\t\t\taria-label={enableFiltering ? 'Filter event categories' : undefined}\n\t\t\tclassName={cn('event-calendar-legend--component', 'flex flex-wrap items-center gap-1.5 py-1')}\n\t\t>\n\t\t\t{categories.map((category) => {\n\t\t\t\tconst isVisible = isCategoryVisible(category.id);\n\t\t\t\tconst colors = getCalendarColorClasses(category);\n\t\t\t\tconst Icon = category.icon as LucideIcon | undefined;\n\n\t\t\t\tconst chipBase =\n\t\t\t\t\t'group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors';\n\n\t\t\t\tconst inner = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'inline-block size-2 rounded-full',\n\t\t\t\t\t\t\t\tisVisible ? colors.swatch : 'bg-muted-foreground/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'size-3',\n\t\t\t\t\t\t\t\t\tisVisible ? 'text-foreground' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" type={isVisible ? 'main' : 'secondary'}>\n\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\n\t\t\t\tif (!enableFiltering) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\t\tclassName={cn(chipBase, 'border-border bg-card cursor-default')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\taria-pressed={isVisible}\n\t\t\t\t\t\tonClick={() => handleToggle(category.id)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tchipBase,\n\t\t\t\t\t\t\t'cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t? 'border-border bg-card hover:bg-muted/40'\n\t\t\t\t\t\t\t\t: 'border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{inner}\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nEventCalendarLegend.displayName = 'EventCalendarLegend';\n","import { addMonths, subMonths, addWeeks, subWeeks, format } from 'date-fns';\nimport { useState, useCallback, useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarViewMode,\n\tUseEventCalendarReturn,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\nimport { useEventCalendarData } from './use-event-calendar-data';\n\nexport interface UseEventCalendarProps {\n\tevents: CalendarEvent[];\n\tdefaultDate?: Date;\n\tdefaultViewMode?: CalendarViewMode;\n\tonDateChange?: (date: Date) => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdataOptions?: UseEventCalendarDataOptions;\n}\n\n/**\n * Core calendar logic hook\n */\nexport function useEventCalendar({\n\tevents,\n\tdefaultDate = new Date(),\n\tdefaultViewMode = 'month',\n\tonDateChange,\n\tonViewModeChange,\n\tdataOptions = {}\n}: UseEventCalendarProps): UseEventCalendarReturn {\n\tconst [currentDate, setCurrentDate] = useState<Date>(defaultDate);\n\tconst [viewMode, setViewMode] = useState<CalendarViewMode>(defaultViewMode);\n\n\tconst calendarDays = useEventCalendarData(\n\t\tevents,\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tdataOptions\n\t);\n\n\tconst visibleEvents = useMemo(() => {\n\t\tif (dataOptions.visibleCategories && dataOptions.visibleCategories.length > 0) {\n\t\t\treturn events.filter(event =>\n\t\t\t\tdataOptions.visibleCategories!.includes(event.category)\n\t\t\t);\n\t\t}\n\t\treturn events;\n\t}, [events, dataOptions.visibleCategories]);\n\n\tconst goToToday = useCallback(() => {\n\t\tconst today = new Date();\n\t\tsetCurrentDate(today);\n\t\tonDateChange?.(today);\n\t}, [onDateChange]);\n\n\tconst goToNextPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? addMonths(currentDate, 1)\n\t\t\t: addWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst goToPreviousPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? subMonths(currentDate, 1)\n\t\t\t: subWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst handleSetDate = useCallback((date: Date) => {\n\t\tsetCurrentDate(date);\n\t\tonDateChange?.(date);\n\t}, [onDateChange]);\n\n\tconst handleSetViewMode = useCallback((mode: CalendarViewMode) => {\n\t\tsetViewMode(mode);\n\t\tonViewModeChange?.(mode);\n\t}, [onViewModeChange]);\n\n\tconst displayLabel = useMemo(() => {\n\t\tif (viewMode === 'month') {\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t} else if (viewMode === 'week') {\n\t\t\tconst weekStart = calendarDays[0]?.date;\n\t\t\tconst weekEnd = calendarDays[calendarDays.length - 1]?.date;\n\t\t\tif (weekStart && weekEnd) {\n\t\t\t\treturn `${format(weekStart, 'MMM d')} - ${format(weekEnd, 'MMM d, yyyy')}`;\n\t\t\t}\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t}\n\t\treturn format(currentDate, 'MMMM yyyy');\n\t}, [currentDate, viewMode, calendarDays]);\n\n\tconst hasEvents = useMemo(() => {\n\t\treturn visibleEvents.length > 0;\n\t}, [visibleEvents]);\n\n\treturn {\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tcalendarDays,\n\t\tvisibleEvents,\n\t\tgoToToday,\n\t\tgoToNextPeriod,\n\t\tgoToPreviousPeriod,\n\t\tsetDate: handleSetDate,\n\t\tsetViewMode: handleSetViewMode,\n\t\tdisplayLabel,\n\t\thasEvents\n\t};\n}\n","/**\n * EventCalendar — month-grid event calendar with category legend, header\n * navigation (prev/next/today + view-mode select), keyboard-accessible day\n * cells, and per-category filtering. Strings are fully overridable; category\n * colours come from a small canonical token set (`calendarTokenDot`).\n */\nimport { useState, useMemo } from 'react';\nimport Text from '@/components/typography/text';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarDayCell } from './event-calendar-day-cell';\nimport { EventCalendarHeader } from './event-calendar-header';\nimport { EventCalendarLegend } from './event-calendar-legend';\nimport { defaultEventCalendarStrings, type EventCalendarProps } from './event-calendar.types';\nimport { useEventCalendar } from './use-event-calendar';\n\nfunction isDateMatched(rule: EventCalendarProps['disabledDates'], date: Date): boolean {\n\tif (!rule) return false;\n\tif (Array.isArray(rule)) {\n\t\treturn rule.some((d) => d.toDateString() === date.toDateString());\n\t}\n\tif (typeof rule === 'function') {\n\t\treturn rule(date);\n\t}\n\tconst datesMatch = rule.dates?.some((d) => d.toDateString() === date.toDateString()) ?? false;\n\tconst predicateMatch = rule.predicate?.(date) ?? false;\n\treturn datesMatch || predicateMatch;\n}\n\nexport function EventCalendar({\n\tevents,\n\tcategories,\n\tviewMode: controlledViewMode,\n\tonViewModeChange,\n\tdefaultDate,\n\tonDateChange,\n\tonEventClick: _onEventClick,\n\tonDayClick,\n\tmaxEventsPerDay = 3,\n\tshowLegend = true,\n\tshowHeader = true,\n\tshowWeekends = true,\n\tweekStartsOn: weekStartsOnProp,\n\tlocale,\n\tenableCategoryFilter = false,\n\tvisibleCategories: controlledVisibleCategories,\n\tonVisibleCategoriesChange,\n\tisLoading = false,\n\temptyStateMessage,\n\tclassName,\n\tcompact = false,\n\tactions,\n\tstrings: stringsProp,\n\tdayHeadingVariant = 'default',\n\tdayHeadingClassName,\n\trenderDayHeading,\n\trangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tdisabledDates,\n\tfilterEvent,\n\trenderEvent,\n\trenderDayCell,\n}: EventCalendarProps) {\n\tconst strings = useMemo(\n\t\t() => ({\n\t\t\t...defaultEventCalendarStrings,\n\t\t\t...stringsProp,\n\t\t\tviewMode: { ...defaultEventCalendarStrings.viewMode, ...(stringsProp?.viewMode ?? {}) },\n\t\t\tweekdaysShort: stringsProp?.weekdaysShort ?? defaultEventCalendarStrings.weekdaysShort,\n\t\t}),\n\t\t[stringsProp],\n\t);\n\n\tconst [internalVisibleCategories, setInternalVisibleCategories] = useState<string[]>([]);\n\n\tconst visibleCategories = controlledVisibleCategories ?? internalVisibleCategories;\n\n\t// Resolve start-of-week against the consumer's <UIProvider> dates\n\t// slice. Library default is 1 (Monday) when no consumer override is set.\n\tconst { weekStartsOn: configWeekStartsOn } = useDatesConfig();\n\tconst weekStartsOn = (weekStartsOnProp ?? configWeekStartsOn ?? 1) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n\tconst handleToggleCategory = (categoryId: string) => {\n\t\tconst newCategories = visibleCategories.includes(categoryId)\n\t\t\t? visibleCategories.filter(id => id !== categoryId)\n\t\t\t: [...visibleCategories, categoryId];\n\n\t\tif (onVisibleCategoriesChange) {\n\t\t\tonVisibleCategoriesChange(newCategories);\n\t\t} else {\n\t\t\tsetInternalVisibleCategories(newCategories);\n\t\t}\n\t};\n\n\tconst calendar = useEventCalendar({\n\t\tevents,\n\t\tdefaultDate,\n\t\tdefaultViewMode: controlledViewMode || 'month',\n\t\tonDateChange,\n\t\tonViewModeChange,\n\t\tdataOptions: {\n\t\t\tweekStartsOn,\n\t\t\tshowWeekends,\n\t\t\tvisibleCategories: visibleCategories.length > 0 ? visibleCategories : undefined\n\t\t}\n\t});\n\n\tconst weekdays = useMemo(() => {\n\t\tconst days = strings.weekdaysShort;\n\t\tif (weekStartsOn === 1) {\n\t\t\treturn [...days.slice(1), days[0]];\n\t\t}\n\t\treturn days as readonly string[];\n\t}, [strings.weekdaysShort, weekStartsOn]);\n\n\tconst handleDayClick = (dayData: typeof calendar.calendarDays[0]) => {\n\t\t// Block clicks on disabled or out-of-range dates.\n\t\tif (isDateMatched(disabledDates, dayData.date)) return;\n\t\tif (minDate && dayData.date < minDate) return;\n\t\tif (maxDate && dayData.date > maxDate) return;\n\t\tonDayClick?.(dayData.date, dayData.events);\n\t};\n\n\t// Apply runtime event filtering + min/max disabled rules to each day's\n\t// event list before passing to the cell. Doesn't mutate the source.\n\tconst filteredCalendarDays = useMemo(() => {\n\t\tif (!filterEvent) return calendar.calendarDays;\n\t\treturn calendar.calendarDays.map((day) => ({\n\t\t\t...day,\n\t\t\tevents: day.events.filter(filterEvent),\n\t\t\teventCount: day.events.filter(filterEvent).length,\n\t\t\thasMultipleEvents: day.events.filter(filterEvent).length > 1,\n\t\t}));\n\t}, [calendar.calendarDays, filterEvent]);\n\n\tfunction isDayDisabled(date: Date): boolean {\n\t\tif (isDateMatched(disabledDates, date)) return true;\n\t\tif (minDate && date < minDate) return true;\n\t\tif (maxDate && date > maxDate) return true;\n\t\treturn false;\n\t}\n\n\t// Pre-compute prev/next disabled state for the header navigation.\n\tconst navDisabled = useMemo(() => {\n\t\tconst days = calendar.calendarDays;\n\t\tif (days.length === 0) return { prev: false, next: false };\n\t\tconst first = days[0].date;\n\t\tconst last = days[days.length - 1].date;\n\t\treturn {\n\t\t\tprev: !!minDate && first <= minDate,\n\t\t\tnext: !!maxDate && last >= maxDate,\n\t\t};\n\t}, [calendar.calendarDays, minDate, maxDate]);\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<div className={cn('event-calendar--component', 'flex items-center justify-center py-12')}>\n\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t{strings.loading}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst viewModeChangeHandler = controlledViewMode ? onViewModeChange : undefined;\n\tconst toggleCategoryHandler = enableCategoryFilter ? handleToggleCategory : undefined;\n\n\treturn (\n\t\t<div className={cn('w-full space-y-4', className)}>\n\t\t\t{!!showHeader && (\n\t\t\t\t<EventCalendarHeader\n\t\t\t\t\tcurrentDate={calendar.currentDate}\n\t\t\t\t\tviewMode={calendar.viewMode}\n\t\t\t\t\tdisplayLabel={calendar.displayLabel}\n\t\t\t\t\tonPrevious={calendar.goToPreviousPeriod}\n\t\t\t\t\tonNext={calendar.goToNextPeriod}\n\t\t\t\t\tonToday={calendar.goToToday}\n\t\t\t\t\tonViewModeChange={viewModeChangeHandler}\n\t\t\t\t\tonDateChange={calendar.setDate}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t\tactions={actions}\n\t\t\t\t\trangeMode={rangeMode}\n\t\t\t\t\tminDate={minDate}\n\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\tprevDisabled={navDisabled.prev}\n\t\t\t\t\tnextDisabled={navDisabled.next}\n\t\t\t\t\tstrings={{ today: strings.today, previous: strings.previous, next: strings.next, viewMode: strings.viewMode }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!showLegend && categories.length > 0 && (\n\t\t\t\t<EventCalendarLegend\n\t\t\t\t\tcategories={categories}\n\t\t\t\t\tvisibleCategories={visibleCategories}\n\t\t\t\t\tonToggleCategory={toggleCategoryHandler}\n\t\t\t\t\tenableFiltering={enableCategoryFilter}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{(!calendar.hasEvents && emptyStateMessage) ? (\n\t\t\t\t<div className=\"flex items-center justify-center py-12 border border-dashed border-border rounded-lg\">\n\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t{emptyStateMessage}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"bg-background rounded-lg border border-border\">\n\t\t\t\t\t{/* Weekday headers */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'grid grid-cols-7',\n\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'border-b border-border mb-0',\n\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'bg-muted/40 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'bg-primary/8 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\t(dayHeadingVariant === 'default') && 'mb-2',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{weekdays.map((day, index) => {\n\t\t\t\t\t\t\tif (renderDayHeading) {\n\t\t\t\t\t\t\t\treturn <div key={day}>{renderDayHeading(day, index)}</div>;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={day}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-center h-8 flex items-center justify-center',\n\t\t\t\t\t\t\t\t\t\tdayHeadingClassName,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\tweight={dayHeadingVariant === 'accent' ? 'medium' : 'regular'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'default' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'text-primary',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Calendar grid */}\n\t\t\t\t\t<div className=\"grid grid-cols-7\">\n\t\t\t\t\t\t{filteredCalendarDays.map((dayData) => {\n\t\t\t\t\t\t\tconst disabled = isDayDisabled(dayData.date);\n\t\t\t\t\t\t\tconst defaultRender = () => (\n\t\t\t\t\t\t\t\t<EventCalendarDayCell\n\t\t\t\t\t\t\t\t\tdata={dayData}\n\t\t\t\t\t\t\t\t\tcategories={categories}\n\t\t\t\t\t\t\t\t\tmaxEvents={maxEventsPerDay}\n\t\t\t\t\t\t\t\t\tonClick={() => handleDayClick(dayData)}\n\t\t\t\t\t\t\t\t\tcompact={compact}\n\t\t\t\t\t\t\t\t\tstrings={{ booking: strings.booking, bookings: strings.bookings }}\n\t\t\t\t\t\t\t\t\trenderEvent={renderEvent}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={dayData.date.toISOString()}\n\t\t\t\t\t\t\t\t\tclassName={cn(disabled && 'pointer-events-none opacity-40')}\n\t\t\t\t\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderDayCell ? renderDayCell(dayData, defaultRender) : defaultRender()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nEventCalendar.displayName = 'EventCalendar';\n","/**\n * EventCalendarEventCard — detailed event view rendered in popovers and\n * agenda lists. Reads optional `metadata.customer_name`, `guest_count`, and\n * `service_name` to render a richer summary; falls back gracefully when any\n * of those are absent. Strings (guest / guests pluralization) overridable.\n */\nimport { format } from 'date-fns';\nimport { User, Users, ExternalLink, Calendar } from 'lucide-react';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport type { EventCalendarEventCardProps } from './event-calendar.types';\n\nexport interface EventCalendarEventCardStrings {\n\tguest: string;\n\tguests: string;\n}\n\nexport const defaultEventCalendarEventCardStrings: EventCalendarEventCardStrings = {\n\tguest: 'guest',\n\tguests: 'guests',\n};\n\ninterface EventCalendarEventCardPropsWithStrings extends EventCalendarEventCardProps {\n\tstrings?: Partial<EventCalendarEventCardStrings>;\n}\n\nexport function EventCalendarEventCard({\n\tevent,\n\tcategory,\n\tonClick,\n\tstrings: stringsProp,\n}: EventCalendarEventCardPropsWithStrings) {\n\tconst strings = useStrings(defaultEventCalendarEventCardStrings, stringsProp);\n\tconst isClickable = !!onClick;\n\n\tconst handleClick = () => {\n\t\tif (onClick) {\n\t\t\tonClick();\n\t\t}\n\t};\n\n\tconst metadata = event.metadata || {};\n\tconst customerName = metadata.customer_name as string | undefined;\n\tconst guestCount = metadata.guest_count as number | undefined;\n\tconst serviceName = metadata.service_name as string | undefined;\n\n\tconst cardContent = (\n\t\t<>\n\t\t\t<div className=\"flex items-start justify-between gap-3 mb-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Heading tag=\"h5\">\n\t\t\t\t\t\t{event.title}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!category && (\n\t\t\t\t\t\t<div className=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className={cn('h-1.5 w-1.5 rounded-full', category.color.replace('border-', 'bg-'))} />\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!isClickable && !!event.url && <ExternalLink className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />}\n\t\t\t</div>\n\n\t\t\t<div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3\">\n\t\t\t\t{!!customerName && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<User className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text className=\"truncate\">\n\t\t\t\t\t\t\t{customerName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{guestCount !== undefined && guestCount > 0 && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<Users className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t{guestCount} {guestCount === 1 ? strings.guest : strings.guests}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!!serviceName && (\n\t\t\t\t<Text type=\"secondary\" className=\"mb-2 line-clamp-1\">\n\t\t\t\t\t{serviceName}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t<div className=\"flex items-center gap-1.5 pt-2 border-t border-border/50\">\n\t\t\t\t<Calendar className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{!!event.allDay && format(event.startDate, 'EEEE, MMM d, yyyy')}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\tconst commonClassName = cn(\n\t\t'w-full text-left p-4 border border-border rounded-lg bg-card transition-none',\n\t\tisClickable ? 'cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring' : ''\n\t);\n\n\tif (isClickable) {\n\t\treturn (\n\t\t\t<button type=\"button\" onClick={handleClick} className={cn('event-calendar-event-card--component', commonClassName)}>\n\t\t\t\t{cardContent}\n\t\t\t</button>\n\t\t);\n\t}\n\n\treturn <div className={commonClassName}>{cardContent}</div>;\n}\n\nEventCalendarEventCard.displayName = 'EventCalendarEventCard';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/base/event-calendar/event-calendar.types.ts","../../../../src/components/base/event-calendar/event-calendar-event-badge.tsx","../../../../src/components/base/event-calendar/use-event-calendar-data.tsx","../../../../src/components/base/event-calendar/event-calendar-day-cell.tsx","../../../../src/components/base/event-calendar/event-calendar-header.tsx","../../../../src/components/base/event-calendar/colors.ts","../../../../src/components/base/event-calendar/event-calendar-legend.tsx","../../../../src/components/base/event-calendar/use-event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar-event-card.tsx"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\n/**\n * Calendar action item.\n *\n * The library never navigates on its own — there is no `href` shortcut.\n * The consumer wires routing into `onClick` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`), or supplies a fully\n * pre-rendered element via `element`.\n */\nexport interface CalendarActionItem {\n\tid?: string;\n\tlabel: string;\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\telement?: ReactNode;\n\ticon?: LucideIcon;\n\tvariant?: 'default' | 'outline' | 'ghost' | 'secondary' | 'destructive';\n\tisVisible?: boolean;\n}\n\n/**\n * Base event data structure\n */\nexport interface CalendarEvent {\n\tid: string;\n\ttitle: string;\n\tdescription?: string;\n\tstartDate: Date;\n\tendDate?: Date;\n\tallDay?: boolean;\n\tcategory: string;\n\tmetadata?: Record<string, unknown>;\n\turl?: string;\n}\n\n/**\n * Canonical category palette tokens. Map to a small fixed set of colours so\n * the calendar can render dots/strokes without parsing arbitrary class names.\n * Add new tokens here when the design palette grows.\n */\nexport type CalendarColorToken =\n\t| 'gray'\n\t| 'red'\n\t| 'orange'\n\t| 'amber'\n\t| 'yellow'\n\t| 'green'\n\t| 'blue'\n\t| 'purple';\n\n/**\n * Tailwind class lookups for each canonical token. Used by day-cell dots and\n * event-badge dots so we never string-parse `category.color`.\n */\nexport const calendarTokenDot: Record<CalendarColorToken, string> = {\n\tgray: 'bg-gray-500',\n\tred: 'bg-red-500',\n\torange: 'bg-orange-500',\n\tamber: 'bg-amber-500',\n\tyellow: 'bg-yellow-500',\n\tgreen: 'bg-green-500',\n\tblue: 'bg-blue-500',\n\tpurple: 'bg-purple-500',\n};\n\n/**\n * Event category configuration. Provide a canonical `colorToken` when\n * possible — it's used everywhere the calendar paints a dot. The free-form\n * `color`/`bgColor` strings are kept for legacy consumers (legend swatches,\n * external Tailwind classes) but new code should rely on `colorToken`.\n */\nexport interface EventCategory {\n\tid: string;\n\tlabel: string;\n\tcolor: string;\n\tbgColor?: string;\n\ttextColor?: string;\n\tcolorToken?: CalendarColorToken;\n\ticon?: LucideIcon;\n\tdescription?: string;\n}\n\n/**\n * Best-effort mapping from a free-form `category.color` Tailwind class to a\n * canonical token. Falls back to `gray`. Prefer `category.colorToken` —\n * this is only used to retrofit legacy consumers.\n */\nexport function resolveCategoryColorToken(category?: EventCategory | null): CalendarColorToken {\n\tif (!category) return 'gray';\n\tif (category.colorToken) return category.colorToken;\n\tconst c = category.color ?? '';\n\tif (c.includes('orange')) return 'orange';\n\tif (c.includes('yellow')) return 'yellow';\n\tif (c.includes('amber')) return 'amber';\n\tif (c.includes('purple')) return 'purple';\n\tif (c.includes('green')) return 'green';\n\tif (c.includes('blue')) return 'blue';\n\tif (c.includes('red')) return 'red';\n\treturn 'gray';\n}\n\n/**\n * Calendar view mode\n */\nexport type CalendarViewMode = 'month' | 'week' | 'agenda';\n\n/**\n * Day cell data (processed)\n */\nexport interface CalendarDayData {\n\tdate: Date;\n\tisCurrentMonth: boolean;\n\tisToday: boolean;\n\tisWeekend: boolean;\n\tevents: CalendarEvent[];\n\teventCount: number;\n\thasMultipleEvents: boolean;\n}\n\n/**\n * Localizable strings — pass partial overrides via `strings`.\n */\nexport interface EventCalendarStrings {\n\ttoday: string;\n\tprevious: string;\n\tnext: string;\n\tloading: string;\n\tbooking: string;\n\tbookings: string;\n\tviewMode: {\n\t\tmonth: string;\n\t\tweek: string;\n\t\tagenda: string;\n\t};\n\tweekdaysShort: [string, string, string, string, string, string, string]; // Sun..Sat\n}\n\nexport const defaultEventCalendarStrings: EventCalendarStrings = {\n\ttoday: 'Today',\n\tprevious: 'Previous',\n\tnext: 'Next',\n\tloading: 'Loading…',\n\tbooking: 'booking',\n\tbookings: 'bookings',\n\tviewMode: {\n\t\tmonth: 'Month',\n\t\tweek: 'Week',\n\t\tagenda: 'Agenda',\n\t},\n\tweekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n};\n\n/**\n * Visual variant for the weekday-header strip (\"Sun Mon Tue …\").\n * - `default` — muted text on transparent (matches body)\n * - `accent` — primary-tinted background, primary text\n * - `tinted` — muted background, foreground text (subtle separation)\n * - `bordered` — bottom-bordered row, foreground text\n *\n * Consumers can also pass a fully custom `dayHeadingClassName` to override\n * any preset.\n */\nexport type EventCalendarDayHeadingVariant = 'default' | 'accent' | 'tinted' | 'bordered';\n\n/**\n * Predicate-or-list shape for date rules. Either explicit dates,\n * a predicate callback, or both (combined with OR semantics).\n */\nexport type DateRule = Date[] | ((date: Date) => boolean) | { dates?: Date[]; predicate?: (date: Date) => boolean };\n\n/**\n * Hook for filtering events at render time without mutating the source list.\n */\nexport type EventFilter = (event: CalendarEvent) => boolean;\n\n/**\n * Render hook for individual event chips in the day cell.\n */\nexport type RenderEventFn = (event: CalendarEvent, category: EventCategory | undefined) => ReactNode;\n\n/**\n * Render hook for the day cell body (after the date number is drawn).\n */\nexport type RenderDayCellFn = (day: CalendarDayData, defaultRender: () => ReactNode) => ReactNode;\n\n/**\n * Range mode for navigation. `month-year` exposes a Month/Year picker\n * trigger in the header that jumps the calendar to that month.\n */\nexport type EventCalendarRangeMode = 'date' | 'month-year';\n\n/**\n * Event calendar props\n */\nexport interface EventCalendarProps {\n\tevents: CalendarEvent[];\n\tcategories: EventCategory[];\n\tviewMode?: CalendarViewMode;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdefaultDate?: Date;\n\tonDateChange?: (date: Date) => void;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tonDayClick?: (date: Date, events: CalendarEvent[]) => void;\n\tmaxEventsPerDay?: number;\n\tshowLegend?: boolean;\n\tshowHeader?: boolean;\n\tshowWeekends?: boolean;\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tenableCategoryFilter?: boolean;\n\tvisibleCategories?: string[];\n\tonVisibleCategoriesChange?: (categories: string[]) => void;\n\tisLoading?: boolean;\n\temptyStateMessage?: string;\n\tclassName?: string;\n\tcompact?: boolean;\n\tactions?: CalendarActionItem[];\n\tstrings?: Partial<EventCalendarStrings>;\n\t/** Visual variant for the weekday header strip. Default `default`. */\n\tdayHeadingVariant?: EventCalendarDayHeadingVariant;\n\t/** Custom class names appended to each weekday-heading cell — wins over variant presets. */\n\tdayHeadingClassName?: string;\n\t/** Optional renderer to fully control a single weekday cell. */\n\trenderDayHeading?: (day: string, index: number) => ReactNode;\n\n\t/**\n\t * Header navigation range mode.\n\t * - `date` — DatePicker (default; jump to a specific date)\n\t * - `month-year` — MonthYearPicker (compact month/year jump)\n\t */\n\trangeMode?: EventCalendarRangeMode;\n\n\t/** Earliest date the user can navigate to. Earlier nav is disabled. */\n\tminDate?: Date;\n\t/** Latest date the user can navigate to. Later nav is disabled. */\n\tmaxDate?: Date;\n\t/**\n\t * Dates that should render in the calendar but be marked as disabled\n\t * (greyed out, not clickable). Pass dates, a predicate, or both.\n\t */\n\tdisabledDates?: DateRule;\n\t/**\n\t * Hide events from rendering at runtime without mutating `events`.\n\t * Returns `true` to KEEP an event, `false` to hide it.\n\t */\n\tfilterEvent?: EventFilter;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n\t/** Per-day-cell renderer override. */\n\trenderDayCell?: RenderDayCellFn;\n}\n\n/**\n * Day cell props\n */\nexport interface EventCalendarDayCellProps {\n\tdata: CalendarDayData;\n\tcategories: EventCategory[];\n\tmaxEvents?: number;\n\tonClick: () => void;\n\tcompact?: boolean;\n\tstrings?: Pick<EventCalendarStrings, 'booking' | 'bookings'>;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n}\n\n/**\n * Event badge props\n */\nexport interface EventCalendarEventBadgeProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tcompact?: boolean;\n\tonClick?: () => void;\n}\n\n/**\n * Event card props\n */\nexport interface EventCalendarEventCardProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tonClick?: () => void;\n}\n\n/**\n * Legend props\n */\nexport interface EventCalendarLegendProps {\n\tcategories: EventCategory[];\n\tvisibleCategories?: string[];\n\tonToggleCategory?: (categoryId: string) => void;\n\tenableFiltering?: boolean;\n}\n\n/**\n * Header props\n */\nexport interface EventCalendarHeaderProps {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tdisplayLabel: string;\n\tonPrevious: () => void;\n\tonNext: () => void;\n\tonToday: () => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tonDateChange?: (date: Date) => void;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tactions?: CalendarActionItem[];\n\tstrings?: Pick<EventCalendarStrings, 'today' | 'previous' | 'next' | 'viewMode'>;\n\t/** Range mode for the date trigger inside the header. */\n\trangeMode?: EventCalendarRangeMode;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tprevDisabled?: boolean;\n\tnextDisabled?: boolean;\n}\n\n/**\n * Hook return type\n */\nexport interface UseEventCalendarReturn {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tcalendarDays: CalendarDayData[];\n\tvisibleEvents: CalendarEvent[];\n\tgoToToday: () => void;\n\tgoToNextPeriod: () => void;\n\tgoToPreviousPeriod: () => void;\n\tsetDate: (date: Date) => void;\n\tsetViewMode: (mode: CalendarViewMode) => void;\n\tdisplayLabel: string;\n\thasEvents: boolean;\n}\n\n/**\n * Data transformation hook options\n */\nexport interface UseEventCalendarDataOptions {\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\tshowWeekends?: boolean;\n\tvisibleCategories?: string[];\n}\n","/**\n * EventCalendarEventBadge — compact badge representing a single event inside\n * a day cell. Renders a category-coloured dot, the event title (or a custom\n * `metadata.calendar_cell_title` override), and the start time when not an\n * all-day event. Click is captured locally and propagated via `onClick`.\n */\nimport { format } from 'date-fns';\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype EventCalendarEventBadgeProps,\n} from './event-calendar.types';\n\nexport function EventCalendarEventBadge({\n\tevent,\n\tcategory,\n\tcompact = false,\n\tonClick,\n}: EventCalendarEventBadgeProps) {\n\tconst dotColor = calendarTokenDot[resolveCategoryColorToken(category)];\n\n\tconst timeDisplay = !event.allDay ? format(event.startDate, 'HH:mm') : null;\n\tconst cellTitleRaw = event.metadata?.calendar_cell_title;\n\tconst displayTitle =\n\t\ttypeof cellTitleRaw === 'string' && cellTitleRaw.trim() !== ''\n\t\t\t? cellTitleRaw\n\t\t\t: event.title;\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.();\n\t\t\t}}\n\t\t\tclassName={cn('event-calendar-event-badge--component', \n\t\t\t\t'group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5',\n\t\t\t\t'text-left transition-colors hover:bg-accent/50',\n\t\t\t\tcompact ? 'h-5' : 'h-6',\n\t\t\t)}\n\t\t\ttitle={typeof displayTitle === 'string' ? displayTitle : undefined}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={cn('size-1.5 shrink-0 rounded-full', dotColor)}\n\t\t\t/>\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"xxs\"\n\t\t\t\tweight=\"medium\"\n\t\t\t\tclassName=\"min-w-0 flex-1 truncate\"\n\t\t\t>\n\t\t\t\t{displayTitle}\n\t\t\t</Text>\n\t\t\t{!!timeDisplay && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName=\"shrink-0 whitespace-nowrap tabular-nums\"\n\t\t\t\t>\n\t\t\t\t\t{timeDisplay}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{void Badge}\n\t\t</button>\n\t);\n}\n\nEventCalendarEventBadge.displayName = 'EventCalendarEventBadge';\n","import {\n\tstartOfMonth,\n\tendOfMonth,\n\tstartOfWeek,\n\tendOfWeek,\n\teachDayOfInterval,\n\tisSameMonth,\n\tisToday,\n\tisSameDay,\n\tisWeekend,\n\tstartOfDay\n} from 'date-fns';\nimport { useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarDayData,\n\tCalendarViewMode,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\n\n/**\n * Transforms raw events into calendar grid data\n */\nexport function useEventCalendarData(\n\tevents: CalendarEvent[],\n\tcurrentDate: Date,\n\tviewMode: CalendarViewMode,\n\toptions: UseEventCalendarDataOptions = {}\n): CalendarDayData[] {\n\tconst {\n\t\tweekStartsOn = 1,\n\t\tshowWeekends = true,\n\t\tvisibleCategories\n\t} = options;\n\n\treturn useMemo(() => {\n\t\tconst monthStart = startOfMonth(currentDate);\n\t\tconst monthEnd = endOfMonth(currentDate);\n\n\t\tlet rangeStart: Date;\n\t\tlet rangeEnd: Date;\n\n\t\tif (viewMode === 'month') {\n\t\t\trangeStart = startOfWeek(monthStart, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(monthEnd, { weekStartsOn });\n\t\t} else if (viewMode === 'week') {\n\t\t\trangeStart = startOfWeek(currentDate, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(currentDate, { weekStartsOn });\n\t\t} else {\n\t\t\trangeStart = monthStart;\n\t\t\trangeEnd = monthEnd;\n\t\t}\n\n\t\tconst days = eachDayOfInterval({ start: rangeStart, end: rangeEnd });\n\n\t\tconst filteredEvents = visibleCategories && visibleCategories.length > 0\n\t\t\t? events.filter(event => visibleCategories.includes(event.category))\n\t\t\t: events;\n\n\t\tconst eventsByDate = new Map<string, CalendarEvent[]>();\n\n\t\tfilteredEvents.forEach(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tif (Number.isNaN(eventStart.getTime())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet eventEnd = eventStart;\n\t\t\tif (event.endDate && !Number.isNaN(event.endDate.getTime())) {\n\t\t\t\tconst normalizedEnd = startOfDay(event.endDate);\n\t\t\t\tif (!Number.isNaN(normalizedEnd.getTime()) && normalizedEnd.getTime() >= eventStart.getTime()) {\n\t\t\t\t\teventEnd = normalizedEnd;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventDays = eachDayOfInterval({ start: eventStart, end: eventEnd });\n\n\t\t\teventDays.forEach(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tif (!eventsByDate.has(dateKey)) {\n\t\t\t\t\teventsByDate.set(dateKey, []);\n\t\t\t\t}\n\t\t\t\teventsByDate.get(dateKey)!.push(event);\n\t\t\t});\n\t\t});\n\n\t\tconst calendarDays: CalendarDayData[] = days\n\t\t\t.filter(day => showWeekends || !isWeekend(day))\n\t\t\t.map(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tconst dayEvents = eventsByDate.get(dateKey) || [];\n\n\t\t\t\tconst sortedEvents = [...dayEvents].sort((a, b) => {\n\t\t\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tdate: day,\n\t\t\t\t\tisCurrentMonth: isSameMonth(day, currentDate),\n\t\t\t\t\tisToday: isToday(day),\n\t\t\t\t\tisWeekend: isWeekend(day),\n\t\t\t\t\tevents: sortedEvents,\n\t\t\t\t\teventCount: sortedEvents.length,\n\t\t\t\t\thasMultipleEvents: sortedEvents.length > 1\n\t\t\t\t};\n\t\t\t});\n\n\t\treturn calendarDays;\n\t}, [events, currentDate, viewMode, weekStartsOn, showWeekends, visibleCategories]);\n}\n\n/**\n * Gets events for a specific day\n */\nexport function getEventsForDay(\n\tevents: CalendarEvent[],\n\tdate: Date\n): CalendarEvent[] {\n\treturn events\n\t\t.filter(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tconst eventEnd = event.endDate ? startOfDay(event.endDate) : eventStart;\n\t\t\tconst targetDay = startOfDay(date);\n\n\t\t\treturn isSameDay(targetDay, eventStart) ||\n\t\t\t\tisSameDay(targetDay, eventEnd) ||\n\t\t\t\t(targetDay > eventStart && targetDay < eventEnd);\n\t\t})\n\t\t.sort((a, b) => {\n\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t});\n}\n\n/**\n * Gets the category object by ID\n */\nexport function getCategoryById<T extends { id: string }>(\n\tcategories: T[],\n\tcategoryId: string\n): T | undefined {\n\treturn categories.find(cat => cat.id === categoryId);\n}\n","/**\n * EventCalendarDayCell — single day square in the month grid. Shows the day\n * number, up to `maxEvents` event badges, and an overflow row with category\n * dots + a pluralised \"+N bookings\" hint when more events exist than fit.\n * Whole cell is keyboard-clickable.\n */\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarEventBadge } from './event-calendar-event-badge';\nimport {\n\tcalendarTokenDot,\n\tdefaultEventCalendarStrings,\n\tresolveCategoryColorToken,\n\ttype EventCalendarDayCellProps,\n} from './event-calendar.types';\nimport { getCategoryById } from './use-event-calendar-data';\n\nexport function EventCalendarDayCell({\n\tdata,\n\tcategories,\n\tmaxEvents = 3,\n\tonClick,\n\tcompact = false,\n\tstrings: stringsProp,\n\trenderEvent,\n}: EventCalendarDayCellProps) {\n\tconst strings = {\n\t\tbooking: stringsProp?.booking ?? defaultEventCalendarStrings.booking,\n\t\tbookings: stringsProp?.bookings ?? defaultEventCalendarStrings.bookings,\n\t};\n\tconst { date, isCurrentMonth, isToday, isWeekend, events, eventCount } = data;\n\n\tconst visibleEvents = events.slice(0, maxEvents);\n\tconst remainingCount = Math.max(0, eventCount - maxEvents);\n\n\treturn (\n\t\t<div className={cn('event-calendar-day-cell--component', 'p-0 relative w-full border-r border-b border-border last:border-r-0 [&:nth-child(7n)]:border-r-0')}>\n\t\t\t<div\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={onClick}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tonClick();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative w-full min-h-24 p-2 transition-colors',\n\t\t\t\t\t'hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10',\n\t\t\t\t\t'flex flex-col items-start gap-1',\n\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground opacity-50',\n\t\t\t\t\tisToday && 'h-full bg-accent text-accent-foreground',\n\t\t\t\t\tcompact && 'min-h-20 p-1'\n\t\t\t\t)}\n\t\t\t\taria-label={date.toDateString()}\n\t\t\t\tdata-date={date.toISOString()}\n\t\t\t\tdata-today={isToday}\n\t\t\t\tdata-weekend={isWeekend}\n\t\t\t\tdata-current-month={isCurrentMonth}\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'font-normal leading-none',\n\t\t\t\t\t\tisToday && 'font-semibold',\n\t\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground',\n\t\t\t\t\t\tcompact && 'text-xs'\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{date.getDate()}\n\t\t\t\t</Text>\n\n\t\t\t\t<div className=\"w-full space-y-0.5\">\n\t\t\t\t\t{visibleEvents.map((event) => {\n\t\t\t\t\t\tconst category = getCategoryById(categories, event.category);\n\t\t\t\t\t\tif (renderEvent) {\n\t\t\t\t\t\t\treturn <div key={event.id}>{renderEvent(event, category)}</div>;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<EventCalendarEventBadge\n\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\tevent={event}\n\t\t\t\t\t\t\t\tcategory={category}\n\t\t\t\t\t\t\t\tcompact={compact || data.hasMultipleEvents}\n\t\t\t\t\t\t\t\tonClick={() => onClick()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{remainingCount > 0 && (\n\t\t\t\t\t\t<div className=\"flex items-center gap-1 py-0.5 px-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center -space-x-1\">\n\t\t\t\t\t\t\t\t{categories.slice(0, 3).map((category, idx) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={category.id || idx}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-1.5 w-1.5 rounded-full border border-background',\n\t\t\t\t\t\t\t\t\t\t\tcalendarTokenDot[resolveCategoryColorToken(category)],\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tclassName=\"font-medium text-xxs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{remainingCount} {remainingCount === 1 ? strings.booking : strings.bookings}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarDayCell.displayName = 'EventCalendarDayCell';\n","/**\n * EventCalendarHeader — title, month/year picker, optional action buttons,\n * Today button, prev/next stepper, and a view-mode select. Designed to sit\n * above `EventCalendar`'s grid; can be reused independently for custom\n * layouts.\n */\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport { MonthYearPicker } from '@/components/base/date-pickers';\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue\n} from '@/components/ui/select';\nimport Heading from '@/components/typography/heading';\nimport { cn } from '@/lib/utils';\nimport { defaultEventCalendarStrings, type EventCalendarHeaderProps, type CalendarActionItem } from './event-calendar.types';\n\nfunction resolveActionButtonVariant(actionVariant?: CalendarActionItem['variant']): {\n\tvariant: ButtonVariant;\n\tbuttonStyle: ButtonStyle;\n\tclassName?: string;\n} {\n\tswitch (actionVariant) {\n\t\tcase 'destructive':\n\t\t\treturn { variant: 'error', buttonStyle: 'solid' };\n\t\tcase 'outline':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'outline' };\n\t\tcase 'secondary':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'solid' };\n\t\tcase 'ghost':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'ghost' };\n\t\tcase 'default':\n\t\tdefault:\n\t\t\treturn { variant: 'primary', buttonStyle: 'solid' };\n\t}\n}\n\n/**\n * Render a single action item\n */\nconst renderAction = (action: CalendarActionItem, index: number) => {\n\tif (!action) return null;\n\n\tif (action.element) {\n\t\treturn <div className=\"event-calendar-header--component\" key={action.id || index}>{action.element}</div>;\n\t}\n\n\tconst IconComponent = action.icon;\n\tconst key = action.id || `action-${index}`;\n\n\tconst handleClick = () => {\n\t\taction.onClick?.();\n\t};\n\n\tconst resolved = resolveActionButtonVariant(action.variant);\n\n\treturn (\n\t\t<Button\n\t\t\tkey={key}\n\t\t\tvariant={resolved.variant}\n\t\t\tbuttonStyle={resolved.buttonStyle}\n\t\t\tonClick={handleClick}\n\t\t\tclassName={cn('h-8 gap-2', resolved.className)}\n\t\t\tdisabled={!!action.disabled}\n\t\t>\n\t\t\t{!!IconComponent && <IconComponent className=\"h-4 w-4\" />}\n\t\t\t{action.label}\n\t\t</Button>\n\t);\n};\n\n/**\n * Calendar header component\n */\nexport function EventCalendarHeader({\n\tcurrentDate,\n\tviewMode,\n\tdisplayLabel,\n\tonPrevious,\n\tonNext,\n\tonToday,\n\tonViewModeChange,\n\tonDateChange,\n\tlocale,\n\tactions,\n\tstrings: stringsProp,\n\trangeMode: _rangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tprevDisabled = false,\n\tnextDisabled = false,\n}: EventCalendarHeaderProps) {\n\tconst strings = {\n\t\ttoday: stringsProp?.today ?? defaultEventCalendarStrings.today,\n\t\tprevious: stringsProp?.previous ?? defaultEventCalendarStrings.previous,\n\t\tnext: stringsProp?.next ?? defaultEventCalendarStrings.next,\n\t\tviewMode: { ...defaultEventCalendarStrings.viewMode, ...(stringsProp?.viewMode ?? {}) },\n\t};\n\tconst visibleActions = useMemo(() => {\n\t\treturn (actions || []).filter(a => a.isVisible !== false);\n\t}, [actions]);\n\n\treturn (\n\t\t<div className=\"flex items-center justify-between gap-4 mb-4\">\n\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t<Heading tag=\"h3\" className=\"text-lg font-semibold\">\n\t\t\t\t\t{displayLabel}\n\t\t\t\t</Heading>\n\n\t\t\t\t<MonthYearPicker\n\t\t\t\t\tvalue={{ month: currentDate.getMonth(), year: currentDate.getFullYear() }}\n\t\t\t\t\tonChange={(output) => {\n\t\t\t\t\t\tif (output.date) {\n\t\t\t\t\t\t\tonDateChange?.(output.date);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tfromYear={minDate?.getFullYear()}\n\t\t\t\t\ttoYear={maxDate?.getFullYear()}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t{visibleActions.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleActions.map((action, index) => renderAction(action, index))}\n\t\t\t\t\t\t<div className=\"h-6 w-px bg-border mx-1\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\tonClick={onToday}\n\t\t\t\t\tclassName=\"hidden sm:inline-flex\"\n\t\t\t\t>\n\t\t\t\t\t{strings.today}\n\t\t\t\t</Button>\n\n\t\t\t\t<div className=\"flex items-center border border-border rounded-md\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onPrevious}\n\t\t\t\t\t\tdisabled={prevDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-r-none border-r\"\n\t\t\t\t\t\taria-label={strings.previous}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronLeft className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onNext}\n\t\t\t\t\t\tdisabled={nextDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-l-none\"\n\t\t\t\t\t\taria-label={strings.next}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t{!!onViewModeChange && (\n\t\t\t\t\t<Select\n\t\t\t\t\t\tvalue={viewMode}\n\t\t\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tonViewModeChange(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SelectTrigger className=\"w-28 h-8\">\n\t\t\t\t\t\t\t<SelectValue />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectItem value=\"month\">{strings.viewMode.month}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"week\">{strings.viewMode.week}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"agenda\">{strings.viewMode.agenda}</SelectItem>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarHeader.displayName = 'EventCalendarHeader';\n","/**\n * Event-calendar colour resolution helpers.\n *\n * The canonical token enum (`CalendarColorToken`) and a basic dot-class lookup\n * live in `event-calendar.types.ts`. This module extends that with the richer\n * class sets used by the day cell, event badge, and legend (badge surface,\n * border, filled swatch). Centralising the map here means new tokens (or theme\n * changes) are a one-line update.\n *\n * Legacy `EventCategory.color` strings (e.g. `'border-amber-500'`) are still\n * supported via `resolveCategoryColorToken` (in types.ts), which falls back to\n * substring matching — the same brittle behaviour the old day-cell /\n * event-badge code implemented inline. New code should set\n * `category.colorToken` directly.\n */\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype CalendarColorToken,\n\ttype EventCategory,\n} from './event-calendar.types';\n\nexport interface CalendarColorClasses {\n\t/** Solid dot fill (used as the leading bullet on event chips). */\n\tdot: string;\n\t/** Soft tinted surface for the event badge background. */\n\tbadgeBg: string;\n\t/** Border-tone for the event badge / legend swatch. */\n\tborder: string;\n\t/** Filled legend swatch (square chip in the legend row). */\n\tswatch: string;\n}\n\nconst TOKEN_EXTRAS: Record<CalendarColorToken, Omit<CalendarColorClasses, 'dot'>> = {\n\tgray: { badgeBg: 'bg-gray-500/10', border: 'border-gray-500/40', swatch: 'bg-gray-500' },\n\tred: { badgeBg: 'bg-red-500/10', border: 'border-red-500/40', swatch: 'bg-red-500' },\n\torange: { badgeBg: 'bg-orange-500/10', border: 'border-orange-500/40', swatch: 'bg-orange-500' },\n\tamber: { badgeBg: 'bg-amber-500/10', border: 'border-amber-500/40', swatch: 'bg-amber-500' },\n\tyellow: { badgeBg: 'bg-yellow-500/10', border: 'border-yellow-500/40', swatch: 'bg-yellow-500' },\n\tgreen: { badgeBg: 'bg-green-500/10', border: 'border-green-500/40', swatch: 'bg-green-500' },\n\tblue: { badgeBg: 'bg-blue-500/10', border: 'border-blue-500/40', swatch: 'bg-blue-500' },\n\tpurple: { badgeBg: 'bg-purple-500/10', border: 'border-purple-500/40', swatch: 'bg-purple-500' },\n};\n\n/**\n * Resolve a category to its full set of Tailwind colour classes. Prefers an\n * explicit `colorToken`; falls back to legacy `color` parsing.\n */\nexport function getCalendarColorClasses(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): CalendarColorClasses {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn {\n\t\tdot: calendarTokenDot[token],\n\t\t...TOKEN_EXTRAS[token],\n\t};\n}\n\n/** Convenience: just the dot class (most common lookup). */\nexport function getCalendarDotClass(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): string {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn calendarTokenDot[token];\n}\n","/**\n * EventCalendarLegend — category chips with optional click-to-filter. When\n * `enableFiltering` is true the whole chip toggles the category's visibility\n * (instead of a free-floating checkbox alongside a swatch — that pattern was\n * cluttered). Inactive categories desaturate to muted; active categories use\n * the colour-token swatch + body text.\n */\nimport { type LucideIcon } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport { getCalendarColorClasses } from './colors';\nimport type { EventCalendarLegendProps } from './event-calendar.types';\n\nexport function EventCalendarLegend({\n\tcategories,\n\tvisibleCategories,\n\tonToggleCategory,\n\tenableFiltering = false,\n}: EventCalendarLegendProps) {\n\tconst isAllVisible = !visibleCategories || visibleCategories.length === 0;\n\n\tconst isCategoryVisible = (categoryId: string) => {\n\t\tif (!enableFiltering) return true;\n\t\treturn isAllVisible || visibleCategories?.includes(categoryId);\n\t};\n\n\tconst handleToggle = (categoryId: string) => {\n\t\tif (!enableFiltering || !onToggleCategory) return;\n\t\tonToggleCategory(categoryId);\n\t};\n\n\tif (categories.length === 0) return null;\n\n\treturn (\n\t\t<div\n\t\t\trole={enableFiltering ? 'group' : undefined}\n\t\t\taria-label={enableFiltering ? 'Filter event categories' : undefined}\n\t\t\tclassName={cn('event-calendar-legend--component', 'flex flex-wrap items-center gap-1.5 py-1')}\n\t\t>\n\t\t\t{categories.map((category) => {\n\t\t\t\tconst isVisible = isCategoryVisible(category.id);\n\t\t\t\tconst colors = getCalendarColorClasses(category);\n\t\t\t\tconst Icon = category.icon as LucideIcon | undefined;\n\n\t\t\t\tconst chipBase =\n\t\t\t\t\t'group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors';\n\n\t\t\t\tconst inner = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'inline-block size-2 rounded-full',\n\t\t\t\t\t\t\t\tisVisible ? colors.swatch : 'bg-muted-foreground/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'size-3',\n\t\t\t\t\t\t\t\t\tisVisible ? 'text-foreground' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" type={isVisible ? 'main' : 'secondary'}>\n\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\n\t\t\t\tif (!enableFiltering) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\t\tclassName={cn(chipBase, 'border-border bg-card cursor-default')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\taria-pressed={isVisible}\n\t\t\t\t\t\tonClick={() => handleToggle(category.id)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tchipBase,\n\t\t\t\t\t\t\t'cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t? 'border-border bg-card hover:bg-muted/40'\n\t\t\t\t\t\t\t\t: 'border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{inner}\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nEventCalendarLegend.displayName = 'EventCalendarLegend';\n","import { addMonths, subMonths, addWeeks, subWeeks, format } from 'date-fns';\nimport { useState, useCallback, useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarViewMode,\n\tUseEventCalendarReturn,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\nimport { useEventCalendarData } from './use-event-calendar-data';\n\nexport interface UseEventCalendarProps {\n\tevents: CalendarEvent[];\n\tdefaultDate?: Date;\n\tdefaultViewMode?: CalendarViewMode;\n\tonDateChange?: (date: Date) => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdataOptions?: UseEventCalendarDataOptions;\n}\n\n/**\n * Core calendar logic hook\n */\nexport function useEventCalendar({\n\tevents,\n\tdefaultDate = new Date(),\n\tdefaultViewMode = 'month',\n\tonDateChange,\n\tonViewModeChange,\n\tdataOptions = {}\n}: UseEventCalendarProps): UseEventCalendarReturn {\n\tconst [currentDate, setCurrentDate] = useState<Date>(defaultDate);\n\tconst [viewMode, setViewMode] = useState<CalendarViewMode>(defaultViewMode);\n\n\tconst calendarDays = useEventCalendarData(\n\t\tevents,\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tdataOptions\n\t);\n\n\tconst visibleEvents = useMemo(() => {\n\t\tif (dataOptions.visibleCategories && dataOptions.visibleCategories.length > 0) {\n\t\t\treturn events.filter(event =>\n\t\t\t\tdataOptions.visibleCategories!.includes(event.category)\n\t\t\t);\n\t\t}\n\t\treturn events;\n\t}, [events, dataOptions.visibleCategories]);\n\n\tconst goToToday = useCallback(() => {\n\t\tconst today = new Date();\n\t\tsetCurrentDate(today);\n\t\tonDateChange?.(today);\n\t}, [onDateChange]);\n\n\tconst goToNextPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? addMonths(currentDate, 1)\n\t\t\t: addWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst goToPreviousPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? subMonths(currentDate, 1)\n\t\t\t: subWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst handleSetDate = useCallback((date: Date) => {\n\t\tsetCurrentDate(date);\n\t\tonDateChange?.(date);\n\t}, [onDateChange]);\n\n\tconst handleSetViewMode = useCallback((mode: CalendarViewMode) => {\n\t\tsetViewMode(mode);\n\t\tonViewModeChange?.(mode);\n\t}, [onViewModeChange]);\n\n\tconst displayLabel = useMemo(() => {\n\t\tif (viewMode === 'month') {\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t} else if (viewMode === 'week') {\n\t\t\tconst weekStart = calendarDays[0]?.date;\n\t\t\tconst weekEnd = calendarDays[calendarDays.length - 1]?.date;\n\t\t\tif (weekStart && weekEnd) {\n\t\t\t\treturn `${format(weekStart, 'MMM d')} - ${format(weekEnd, 'MMM d, yyyy')}`;\n\t\t\t}\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t}\n\t\treturn format(currentDate, 'MMMM yyyy');\n\t}, [currentDate, viewMode, calendarDays]);\n\n\tconst hasEvents = useMemo(() => {\n\t\treturn visibleEvents.length > 0;\n\t}, [visibleEvents]);\n\n\treturn {\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tcalendarDays,\n\t\tvisibleEvents,\n\t\tgoToToday,\n\t\tgoToNextPeriod,\n\t\tgoToPreviousPeriod,\n\t\tsetDate: handleSetDate,\n\t\tsetViewMode: handleSetViewMode,\n\t\tdisplayLabel,\n\t\thasEvents\n\t};\n}\n","/**\n * EventCalendar — month-grid event calendar with category legend, header\n * navigation (prev/next/today + view-mode select), keyboard-accessible day\n * cells, and per-category filtering. Strings are fully overridable; category\n * colours come from a small canonical token set (`calendarTokenDot`).\n */\nimport { useState, useMemo } from 'react';\nimport Text from '@/components/typography/text';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarDayCell } from './event-calendar-day-cell';\nimport { EventCalendarHeader } from './event-calendar-header';\nimport { EventCalendarLegend } from './event-calendar-legend';\nimport { defaultEventCalendarStrings, type EventCalendarProps } from './event-calendar.types';\nimport { useEventCalendar } from './use-event-calendar';\n\nfunction isDateMatched(rule: EventCalendarProps['disabledDates'], date: Date): boolean {\n\tif (!rule) return false;\n\tif (Array.isArray(rule)) {\n\t\treturn rule.some((d) => d.toDateString() === date.toDateString());\n\t}\n\tif (typeof rule === 'function') {\n\t\treturn rule(date);\n\t}\n\tconst datesMatch = rule.dates?.some((d) => d.toDateString() === date.toDateString()) ?? false;\n\tconst predicateMatch = rule.predicate?.(date) ?? false;\n\treturn datesMatch || predicateMatch;\n}\n\nexport function EventCalendar({\n\tevents,\n\tcategories,\n\tviewMode: controlledViewMode,\n\tonViewModeChange,\n\tdefaultDate,\n\tonDateChange,\n\tonEventClick: _onEventClick,\n\tonDayClick,\n\tmaxEventsPerDay = 3,\n\tshowLegend = true,\n\tshowHeader = true,\n\tshowWeekends = true,\n\tweekStartsOn: weekStartsOnProp,\n\tlocale,\n\tenableCategoryFilter = false,\n\tvisibleCategories: controlledVisibleCategories,\n\tonVisibleCategoriesChange,\n\tisLoading = false,\n\temptyStateMessage,\n\tclassName,\n\tcompact = false,\n\tactions,\n\tstrings: stringsProp,\n\tdayHeadingVariant = 'default',\n\tdayHeadingClassName,\n\trenderDayHeading,\n\trangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tdisabledDates,\n\tfilterEvent,\n\trenderEvent,\n\trenderDayCell,\n}: EventCalendarProps) {\n\tconst strings = useMemo(\n\t\t() => ({\n\t\t\t...defaultEventCalendarStrings,\n\t\t\t...stringsProp,\n\t\t\tviewMode: { ...defaultEventCalendarStrings.viewMode, ...(stringsProp?.viewMode ?? {}) },\n\t\t\tweekdaysShort: stringsProp?.weekdaysShort ?? defaultEventCalendarStrings.weekdaysShort,\n\t\t}),\n\t\t[stringsProp],\n\t);\n\n\tconst [internalVisibleCategories, setInternalVisibleCategories] = useState<string[]>([]);\n\n\tconst visibleCategories = controlledVisibleCategories ?? internalVisibleCategories;\n\n\t// Resolve start-of-week against the consumer's <UIProvider> dates\n\t// slice. Library default is 1 (Monday) when no consumer override is set.\n\tconst { weekStartsOn: configWeekStartsOn } = useDatesConfig();\n\tconst weekStartsOn = (weekStartsOnProp ?? configWeekStartsOn ?? 1) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n\tconst handleToggleCategory = (categoryId: string) => {\n\t\tconst newCategories = visibleCategories.includes(categoryId)\n\t\t\t? visibleCategories.filter(id => id !== categoryId)\n\t\t\t: [...visibleCategories, categoryId];\n\n\t\tif (onVisibleCategoriesChange) {\n\t\t\tonVisibleCategoriesChange(newCategories);\n\t\t} else {\n\t\t\tsetInternalVisibleCategories(newCategories);\n\t\t}\n\t};\n\n\tconst calendar = useEventCalendar({\n\t\tevents,\n\t\tdefaultDate,\n\t\tdefaultViewMode: controlledViewMode || 'month',\n\t\tonDateChange,\n\t\tonViewModeChange,\n\t\tdataOptions: {\n\t\t\tweekStartsOn,\n\t\t\tshowWeekends,\n\t\t\tvisibleCategories: visibleCategories.length > 0 ? visibleCategories : undefined\n\t\t}\n\t});\n\n\tconst weekdays = useMemo(() => {\n\t\tconst days = strings.weekdaysShort;\n\t\tif (weekStartsOn === 1) {\n\t\t\treturn [...days.slice(1), days[0]];\n\t\t}\n\t\treturn days as readonly string[];\n\t}, [strings.weekdaysShort, weekStartsOn]);\n\n\tconst handleDayClick = (dayData: typeof calendar.calendarDays[0]) => {\n\t\t// Block clicks on disabled or out-of-range dates.\n\t\tif (isDateMatched(disabledDates, dayData.date)) return;\n\t\tif (minDate && dayData.date < minDate) return;\n\t\tif (maxDate && dayData.date > maxDate) return;\n\t\tonDayClick?.(dayData.date, dayData.events);\n\t};\n\n\t// Apply runtime event filtering + min/max disabled rules to each day's\n\t// event list before passing to the cell. Doesn't mutate the source.\n\tconst filteredCalendarDays = useMemo(() => {\n\t\tif (!filterEvent) return calendar.calendarDays;\n\t\treturn calendar.calendarDays.map((day) => ({\n\t\t\t...day,\n\t\t\tevents: day.events.filter(filterEvent),\n\t\t\teventCount: day.events.filter(filterEvent).length,\n\t\t\thasMultipleEvents: day.events.filter(filterEvent).length > 1,\n\t\t}));\n\t}, [calendar.calendarDays, filterEvent]);\n\n\tfunction isDayDisabled(date: Date): boolean {\n\t\tif (isDateMatched(disabledDates, date)) return true;\n\t\tif (minDate && date < minDate) return true;\n\t\tif (maxDate && date > maxDate) return true;\n\t\treturn false;\n\t}\n\n\t// Pre-compute prev/next disabled state for the header navigation.\n\tconst navDisabled = useMemo(() => {\n\t\tconst days = calendar.calendarDays;\n\t\tif (days.length === 0) return { prev: false, next: false };\n\t\tconst first = days[0].date;\n\t\tconst last = days[days.length - 1].date;\n\t\treturn {\n\t\t\tprev: !!minDate && first <= minDate,\n\t\t\tnext: !!maxDate && last >= maxDate,\n\t\t};\n\t}, [calendar.calendarDays, minDate, maxDate]);\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<div className={cn('event-calendar--component', 'flex items-center justify-center py-12')}>\n\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t{strings.loading}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst viewModeChangeHandler = controlledViewMode ? onViewModeChange : undefined;\n\tconst toggleCategoryHandler = enableCategoryFilter ? handleToggleCategory : undefined;\n\n\treturn (\n\t\t<div className={cn('w-full space-y-4', className)}>\n\t\t\t{!!showHeader && (\n\t\t\t\t<EventCalendarHeader\n\t\t\t\t\tcurrentDate={calendar.currentDate}\n\t\t\t\t\tviewMode={calendar.viewMode}\n\t\t\t\t\tdisplayLabel={calendar.displayLabel}\n\t\t\t\t\tonPrevious={calendar.goToPreviousPeriod}\n\t\t\t\t\tonNext={calendar.goToNextPeriod}\n\t\t\t\t\tonToday={calendar.goToToday}\n\t\t\t\t\tonViewModeChange={viewModeChangeHandler}\n\t\t\t\t\tonDateChange={calendar.setDate}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t\tactions={actions}\n\t\t\t\t\trangeMode={rangeMode}\n\t\t\t\t\tminDate={minDate}\n\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\tprevDisabled={navDisabled.prev}\n\t\t\t\t\tnextDisabled={navDisabled.next}\n\t\t\t\t\tstrings={{ today: strings.today, previous: strings.previous, next: strings.next, viewMode: strings.viewMode }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!showLegend && categories.length > 0 && (\n\t\t\t\t<EventCalendarLegend\n\t\t\t\t\tcategories={categories}\n\t\t\t\t\tvisibleCategories={visibleCategories}\n\t\t\t\t\tonToggleCategory={toggleCategoryHandler}\n\t\t\t\t\tenableFiltering={enableCategoryFilter}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{(!calendar.hasEvents && emptyStateMessage) ? (\n\t\t\t\t<div className=\"flex items-center justify-center py-12 border border-dashed border-border rounded-lg\">\n\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t{emptyStateMessage}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"bg-background rounded-lg border border-border\">\n\t\t\t\t\t{/* Weekday headers */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'grid grid-cols-7',\n\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'border-b border-border mb-0',\n\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'bg-muted/40 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'bg-primary/8 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\t(dayHeadingVariant === 'default') && 'mb-2',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{weekdays.map((day, index) => {\n\t\t\t\t\t\t\tif (renderDayHeading) {\n\t\t\t\t\t\t\t\treturn <div key={day}>{renderDayHeading(day, index)}</div>;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={day}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-center h-8 flex items-center justify-center',\n\t\t\t\t\t\t\t\t\t\tdayHeadingClassName,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\tweight={dayHeadingVariant === 'accent' ? 'medium' : 'regular'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'default' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'text-primary',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Calendar grid */}\n\t\t\t\t\t<div className=\"grid grid-cols-7\">\n\t\t\t\t\t\t{filteredCalendarDays.map((dayData) => {\n\t\t\t\t\t\t\tconst disabled = isDayDisabled(dayData.date);\n\t\t\t\t\t\t\tconst defaultRender = () => (\n\t\t\t\t\t\t\t\t<EventCalendarDayCell\n\t\t\t\t\t\t\t\t\tdata={dayData}\n\t\t\t\t\t\t\t\t\tcategories={categories}\n\t\t\t\t\t\t\t\t\tmaxEvents={maxEventsPerDay}\n\t\t\t\t\t\t\t\t\tonClick={() => handleDayClick(dayData)}\n\t\t\t\t\t\t\t\t\tcompact={compact}\n\t\t\t\t\t\t\t\t\tstrings={{ booking: strings.booking, bookings: strings.bookings }}\n\t\t\t\t\t\t\t\t\trenderEvent={renderEvent}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={dayData.date.toISOString()}\n\t\t\t\t\t\t\t\t\tclassName={cn(disabled && 'pointer-events-none opacity-40')}\n\t\t\t\t\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderDayCell ? renderDayCell(dayData, defaultRender) : defaultRender()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nEventCalendar.displayName = 'EventCalendar';\n","/**\n * EventCalendarEventCard — detailed event view rendered in popovers and\n * agenda lists. Reads optional `metadata.customer_name`, `guest_count`, and\n * `service_name` to render a richer summary; falls back gracefully when any\n * of those are absent. Strings (guest / guests pluralization) overridable.\n */\nimport { format } from 'date-fns';\nimport { User, Users, ExternalLink, Calendar } from 'lucide-react';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport type { EventCalendarEventCardProps } from './event-calendar.types';\n\nexport interface EventCalendarEventCardStrings {\n\tguest: string;\n\tguests: string;\n}\n\nexport const defaultEventCalendarEventCardStrings: EventCalendarEventCardStrings = {\n\tguest: 'guest',\n\tguests: 'guests',\n};\n\ninterface EventCalendarEventCardPropsWithStrings extends EventCalendarEventCardProps {\n\tstrings?: Partial<EventCalendarEventCardStrings>;\n}\n\nexport function EventCalendarEventCard({\n\tevent,\n\tcategory,\n\tonClick,\n\tstrings: stringsProp,\n}: EventCalendarEventCardPropsWithStrings) {\n\tconst strings = useStrings(defaultEventCalendarEventCardStrings, stringsProp);\n\tconst isClickable = !!onClick;\n\n\tconst handleClick = () => {\n\t\tif (onClick) {\n\t\t\tonClick();\n\t\t}\n\t};\n\n\tconst metadata = event.metadata || {};\n\tconst customerName = metadata.customer_name as string | undefined;\n\tconst guestCount = metadata.guest_count as number | undefined;\n\tconst serviceName = metadata.service_name as string | undefined;\n\n\tconst cardContent = (\n\t\t<>\n\t\t\t<div className=\"flex items-start justify-between gap-3 mb-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Heading tag=\"h5\">\n\t\t\t\t\t\t{event.title}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!category && (\n\t\t\t\t\t\t<div className=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className={cn('h-1.5 w-1.5 rounded-full', category.color.replace('border-', 'bg-'))} />\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!isClickable && !!event.url && <ExternalLink className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />}\n\t\t\t</div>\n\n\t\t\t<div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3\">\n\t\t\t\t{!!customerName && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<User className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text className=\"truncate\">\n\t\t\t\t\t\t\t{customerName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{guestCount !== undefined && guestCount > 0 && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<Users className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t{guestCount} {guestCount === 1 ? strings.guest : strings.guests}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!!serviceName && (\n\t\t\t\t<Text type=\"secondary\" className=\"mb-2 line-clamp-1\">\n\t\t\t\t\t{serviceName}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t<div className=\"flex items-center gap-1.5 pt-2 border-t border-border/50\">\n\t\t\t\t<Calendar className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{!!event.allDay && format(event.startDate, 'EEEE, MMM d, yyyy')}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\tconst commonClassName = cn(\n\t\t'w-full text-left p-4 border border-border rounded-lg bg-card transition-none',\n\t\tisClickable ? 'cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring' : ''\n\t);\n\n\tif (isClickable) {\n\t\treturn (\n\t\t\t<button type=\"button\" onClick={handleClick} className={cn('event-calendar-event-card--component', commonClassName)}>\n\t\t\t\t{cardContent}\n\t\t\t</button>\n\t\t);\n\t}\n\n\treturn <div className={commonClassName}>{cardContent}</div>;\n}\n\nEventCalendarEventCard.displayName = 'EventCalendarEventCard';\n"],"mappings":"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"}
@@ -2,10 +2,10 @@ import { useStrings as e } from "../../../lib/strings.js";
2
2
  import { a as t } from "../../../_shared/ui-provider-4qKSKMPd.js";
3
3
  import { cn as n } from "../../../lib/utils.js";
4
4
  import { t as r } from "../../../_shared/text-DIxMTECE.js";
5
- import { o as i } from "../../../_shared/typography-BtPQBvSm.js";
6
- import { t as a } from "../../../_shared/button-Ck2qS42n.js";
7
- import { a as o, i as s, n as c, o as l, t as u } from "../../../_shared/select-D8MYF4f7.js";
8
- import { t as d } from "../../../_shared/date-pickers-CWPxP3zy.js";
5
+ import { t as i } from "../../../_shared/heading-BprqyzDs.js";
6
+ import { t as a } from "../../../_shared/button-ChCkwoOD.js";
7
+ import { a as o, i as s, n as c, o as l, t as u } from "../../../_shared/select-07RRiTWc.js";
8
+ import { t as d } from "../../../_shared/date-pickers-Cas9cPlj.js";
9
9
  import { useCallback as f, useMemo as p, useState as m } from "react";
10
10
  import { addMonths as h, addWeeks as g, eachDayOfInterval as _, endOfMonth as v, endOfWeek as y, format as b, isSameDay as x, isSameMonth as S, isToday as C, isWeekend as w, startOfDay as T, startOfMonth as E, startOfWeek as D, subMonths as O, subWeeks as ee } from "date-fns";
11
11
  import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/input-ChZGIhtS.cjs`),t=require(`../../../_shared/forms-DaZ3LsYc.cjs`),n=require(`../../../_shared/textarea-iR9txrty.cjs`),r=require(`../../../_shared/form-field-rcyIIHjR.cjs`),i=require(`../../../_shared/switch-C5J37LMI.cjs`),a=require(`../../../_shared/card-radio-group-DnQsWozr.cjs`);exports.AvatarUpload=t.v,exports.COUNTRY_PREFIX_MAP=t.I,exports.CardCheckboxGroup=a.n,exports.CardRadioGroup=a.t,exports.Checkbox=t.U,exports.ControlledFormField=r.t,exports.CoordinatesInput=t.O,exports.CurrencyInput=r.i,exports.DEFAULT_COUNTRY_PREFIXES=t.L,exports.DateTimeInput=t.D,exports.DecimalInput=r.a,exports.DimensionsInput=t.A,exports.Dropzone=t.b,exports.FileUpload=t.w,exports.FormField=r.n,exports.ImageUpload=t.S,exports.Input=e.t,exports.KeyValueEditor=t.l,exports.List=t.o,exports.ListRadioGroup=t.N,exports.LocalizedObjectField=t.r,exports.LocalizedStringField=t.i,exports.LocalizedStringRepeater=t.n,exports.MediaGallery=t.g,exports.MoneyInput=r.r,exports.ObjectRepeater=t.s,exports.OperationPasswordForm=t.t,exports.PercentageInput=t.F,exports.PhoneInput=t.R,exports.PillRadioGroup=t.a,exports.Repeater=t.u,exports.RichSelect=t.j,exports.RoundingModeSelect=t.M,exports.Select=t.H,exports.SliderField=t.P,exports.StringRepeater=t.c,exports.Switch=i.t,exports.SwitchCard=t.V,exports.TagsInput=t.z,exports.Textarea=n.t,exports.TimePicker=t.E,exports.ToggleField=t.B,exports.ToggleSwitch=i.n,exports.UploadProgressList=t.m,exports.UploadTray=t.f,exports.WeightInput=t.k,exports.defaultAvatarUploadStrings=t.y,exports.defaultDropzoneStrings=t.x,exports.defaultFileUploadStrings=t.T,exports.defaultImageUploadStrings=t.C,exports.defaultMediaGalleryStrings=t._,exports.defaultRepeaterPrimitiveStrings=t.d,exports.defaultUploadProgressListStrings=t.h,exports.defaultUploadTrayStrings=t.p,exports.useFormFieldState=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/input-BJb10xb9.cjs`),t=require(`../../../_shared/forms-B8aaNG44.cjs`),n=require(`../../../_shared/textarea-D8wC0XlZ.cjs`),r=require(`../../../_shared/form-field-DzpwVS99.cjs`),i=require(`../../../_shared/switch-DozkSQNn.cjs`),a=require(`../../../_shared/card-radio-group-Vq741uhL.cjs`);exports.AvatarUpload=t.v,exports.COUNTRY_PREFIX_MAP=t.I,exports.CardCheckboxGroup=a.n,exports.CardRadioGroup=a.t,exports.Checkbox=t.U,exports.ControlledFormField=r.t,exports.CoordinatesInput=t.O,exports.CurrencyInput=r.i,exports.DEFAULT_COUNTRY_PREFIXES=t.L,exports.DateTimeInput=t.D,exports.DecimalInput=r.a,exports.DimensionsInput=t.A,exports.Dropzone=t.b,exports.FileUpload=t.w,exports.FormField=r.n,exports.ImageUpload=t.S,exports.Input=e.t,exports.KeyValueEditor=t.l,exports.List=t.o,exports.ListRadioGroup=t.N,exports.LocalizedObjectField=t.r,exports.LocalizedStringField=t.i,exports.LocalizedStringRepeater=t.n,exports.MediaGallery=t.g,exports.MoneyInput=r.r,exports.ObjectRepeater=t.s,exports.OperationPasswordForm=t.t,exports.PercentageInput=t.F,exports.PhoneInput=t.R,exports.PillRadioGroup=t.a,exports.Repeater=t.u,exports.RichSelect=t.j,exports.RoundingModeSelect=t.M,exports.Select=t.H,exports.SliderField=t.P,exports.StringRepeater=t.c,exports.Switch=i.t,exports.SwitchCard=t.V,exports.TagsInput=t.z,exports.Textarea=n.t,exports.TimePicker=t.E,exports.ToggleField=t.B,exports.ToggleSwitch=i.n,exports.UploadProgressList=t.m,exports.UploadTray=t.f,exports.WeightInput=t.k,exports.defaultAvatarUploadStrings=t.y,exports.defaultDropzoneStrings=t.x,exports.defaultFileUploadStrings=t.T,exports.defaultImageUploadStrings=t.C,exports.defaultMediaGalleryStrings=t._,exports.defaultRepeaterPrimitiveStrings=t.d,exports.defaultUploadProgressListStrings=t.h,exports.defaultUploadTrayStrings=t.p,exports.useFormFieldState=e.n;
@@ -1,7 +1,7 @@
1
- import { n as e, t } from "../../../_shared/input-Cwv1-5jt.js";
2
- import { A as n, B as r, C as i, D as a, E as o, F as s, H as c, I as l, L as u, M as d, N as f, O as p, P as m, R as h, S as g, T as _, U as v, V as y, _ as b, a as x, b as S, c as C, d as w, f as T, g as E, h as D, i as O, j as k, k as A, l as j, m as M, n as N, o as P, p as F, r as I, s as L, t as R, u as z, v as B, w as V, x as H, y as U, z as W } from "../../../_shared/forms-BAVsxxRk.js";
3
- import { t as G } from "../../../_shared/textarea-DeISZfHw.js";
4
- import { a as K, i as q, n as J, r as Y, t as X } from "../../../_shared/form-field-rOj3cm6C.js";
5
- import { n as Z, t as Q } from "../../../_shared/switch-ClGgHcEb.js";
6
- import { n as $, t as ee } from "../../../_shared/card-radio-group--GP1xrz_.js";
1
+ import { n as e, t } from "../../../_shared/input-DQahu2sm.js";
2
+ import { A as n, B as r, C as i, D as a, E as o, F as s, H as c, I as l, L as u, M as d, N as f, O as p, P as m, R as h, S as g, T as _, U as v, V as y, _ as b, a as x, b as S, c as C, d as w, f as T, g as E, h as D, i as O, j as k, k as A, l as j, m as M, n as N, o as P, p as F, r as I, s as L, t as R, u as z, v as B, w as V, x as H, y as U, z as W } from "../../../_shared/forms-BusuTZZ2.js";
3
+ import { t as G } from "../../../_shared/textarea-Cgl-FPwu.js";
4
+ import { a as K, i as q, n as J, r as Y, t as X } from "../../../_shared/form-field-BQlki-8s.js";
5
+ import { n as Z, t as Q } from "../../../_shared/switch-C0yyhsXZ.js";
6
+ import { n as $, t as ee } from "../../../_shared/card-radio-group-BGH93O5-.js";
7
7
  export { B as AvatarUpload, l as COUNTRY_PREFIX_MAP, $ as CardCheckboxGroup, ee as CardRadioGroup, v as Checkbox, X as ControlledFormField, p as CoordinatesInput, q as CurrencyInput, u as DEFAULT_COUNTRY_PREFIXES, a as DateTimeInput, K as DecimalInput, n as DimensionsInput, S as Dropzone, V as FileUpload, J as FormField, g as ImageUpload, t as Input, j as KeyValueEditor, P as List, f as ListRadioGroup, I as LocalizedObjectField, O as LocalizedStringField, N as LocalizedStringRepeater, E as MediaGallery, Y as MoneyInput, L as ObjectRepeater, R as OperationPasswordForm, s as PercentageInput, h as PhoneInput, x as PillRadioGroup, z as Repeater, k as RichSelect, d as RoundingModeSelect, c as Select, m as SliderField, C as StringRepeater, Q as Switch, y as SwitchCard, W as TagsInput, G as Textarea, o as TimePicker, r as ToggleField, Z as ToggleSwitch, M as UploadProgressList, T as UploadTray, A as WeightInput, U as defaultAvatarUploadStrings, H as defaultDropzoneStrings, _ as defaultFileUploadStrings, i as defaultImageUploadStrings, b as defaultMediaGalleryStrings, w as defaultRepeaterPrimitiveStrings, D as defaultUploadProgressListStrings, F as defaultUploadTrayStrings, e as useFormFieldState };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/item-BtR-bz96.cjs`);exports.Item=e.t,exports.ItemActions=e.n,exports.ItemContent=e.r,exports.ItemDescription=e.i,exports.ItemFooter=e.a,exports.ItemGroup=e.o,exports.ItemHeader=e.s,exports.ItemMedia=e.c,exports.ItemSeparator=e.l,exports.ItemTitle=e.u;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/item-Cx_7QZ2o.cjs`);exports.Item=e.t,exports.ItemActions=e.n,exports.ItemContent=e.r,exports.ItemDescription=e.i,exports.ItemFooter=e.a,exports.ItemGroup=e.o,exports.ItemHeader=e.s,exports.ItemMedia=e.c,exports.ItemSeparator=e.l,exports.ItemTitle=e.u;
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../../../_shared/item-BmTYKzEb.js";
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../../../_shared/item-Cu5JbZyZ.js";
2
2
  export { c as Item, i as ItemActions, o as ItemContent, n as ItemDescription, e as ItemFooter, a as ItemGroup, s as ItemHeader, t as ItemMedia, r as ItemSeparator, l as ItemTitle };
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/chunk-D3uCBrYO.cjs`),t=require(`../../../lib/strings.cjs`),n=require(`../../../lib/utils.cjs`),r=require(`../../../_shared/text-DBnY6fcL.cjs`),i=require(`../../../_shared/button-DjJ-mDI1.cjs`),a=require(`../../../_shared/dropdown-menu-BebBffUH.cjs`),o=require(`../../../_shared/command-COvgXQ8r.cjs`);let s=require(`react`);s=e.t(s,1);let c=require(`react/jsx-runtime`),l=require(`lucide-react`),u=require(`class-variance-authority`);require(`@base-ui/react/merge-props`),require(`@base-ui/react/use-render`);let d=require(`react-dom/server`);var f=(0,u.cva)(`has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1`,{variants:{orientation:{horizontal:`[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0 *:data-slot:rounded-r-none`,vertical:`[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! flex-col [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0 *:data-slot:rounded-b-none`}},defaultVariants:{orientation:`horizontal`}});function p({className:e,orientation:t,...r}){return(0,c.jsx)(`div`,{role:`group`,"data-slot":`button-group`,"data-orientation":t,className:n.cn(f({orientation:t}),e),...r})}function m({className:e,...t}){return(0,c.jsx)(l.Loader2Icon,{role:`status`,"aria-label":`Loading`,className:n.cn(`size-4 animate-spin`,e),...t})}var h={searchPlaceholder:`Search`,error:`Error: {{message}}`,noResults:`Can't find {{query}}.`,unknownPlace:`Unknown`};function g(e){let t=[];return e.name&&t.push(e.name),e.housenumber&&e.street?t.push(`${e.housenumber} ${e.street}`):e.street&&t.push(e.street),e.city?t.push(e.city):e.locality&&t.push(e.locality),e.state&&e.state!==e.city&&t.push(e.state),e.country&&t.push(e.country),[...new Set(t)].join(`, `)}function _({query:e,bbox:t,lang:n,lat:r,limit:i,locationBiasScale:a,lon:o,zoom:s}){let c=new URL(`https://photon.komoot.io/api`);return c.searchParams.set(`q`,e),n&&c.searchParams.set(`lang`,n),i&&c.searchParams.set(`limit`,String(i)),t&&c.searchParams.set(`bbox`,t.join(`,`)),r!==void 0&&o!==void 0&&(c.searchParams.set(`lat`,String(r)),c.searchParams.set(`lon`,String(o))),s!==void 0&&c.searchParams.set(`zoom`,String(s)),a!==void 0&&c.searchParams.set(`location_bias_scale`,String(a)),String(c)}function v(e,t=300){let[n,r]=s.useState(e);return s.useEffect(()=>{let n=setTimeout(()=>r(e),t);return()=>clearTimeout(n)},[e,t]),n}function y({debounceMs:e,query:t,lang:n,limit:r,bbox:i,lat:a,lon:o,zoom:c,locationBiasScale:l}){let[u,d]=s.useState([]),[f,p]=s.useState(!1),[m,h]=s.useState(null),[g,y]=s.useState(!1),b=v(t,e);return s.useEffect(()=>{if(!b.trim()){d([]),p(!1),y(!1);return}let e=new AbortController;async function t(){p(!0),h(null),y(!0);try{let t=_({query:b,lang:n,limit:r,bbox:i,lat:a,lon:o,zoom:c,locationBiasScale:l}),s=await fetch(t,{signal:e.signal});if(!s.ok)throw Error(`Photon API error: ${s.status} ${s.statusText}`);let u=await s.json(),f=new Set;d(u.features.filter(e=>{let t=e.properties.osm_id;return f.has(t)?!1:(f.add(t),!0)}))}catch(e){e instanceof Error&&e.name!==`AbortError`&&(h(e),d([]))}finally{p(!1)}}return t(),()=>e.abort()},[b,n,r,i,a,o,c,l]),{results:u,isLoading:f,error:m,hasSearched:g}}function b(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>t[n]??e)}function x({debounceMs:e=300,lang:i,limit:a=5,bbox:u,lat:d,lon:f,zoom:p,locationBiasScale:_,className:v,value:x,defaultValue:S=``,onChange:C,onPlaceSelect:w,onResultsChange:T,strings:E,...D}){let O=t.useStrings(h,E),[k,A]=s.useState(S),[j,M]=s.useState(``),N=x!==void 0,P=N?x:k,{results:F,isLoading:I,error:L,hasSearched:R}=y({query:j,debounceMs:e,lang:i,limit:a,bbox:u,lat:d,lon:f,zoom:p,locationBiasScale:_});s.useEffect(()=>{T?.(F)},[F,T]);let z=R&&!I&&!L&&F.length===0,B=L||z||F.length>0;return(0,c.jsx)(o.t,{className:n.cn(`place-autocomplete--component`,`h-fit overflow-visible`,v),shouldFilter:!1,loop:!0,children:(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsxs)(o.l,{className:n.cn(`border-input! bg-popover! ring-0!`,B&&`rounded-b-none`),children:[(0,c.jsx)(o.u,{children:(0,c.jsx)(l.SearchIcon,{})}),(0,c.jsx)(o.d,{placeholder:O.searchPlaceholder,value:P,onChange:e=>{let t=e.target.value;N||A(t),M(t),C?.(t)},...D}),!!I&&(0,c.jsx)(o.u,{align:`inline-end`,children:(0,c.jsx)(m,{})})]}),!!B&&(0,c.jsxs)(o.o,{"data-state":B?`open`:`closed`,className:n.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`),children:[!!L&&(0,c.jsx)(o.n,{children:b(O.error,{message:L.message})}),!!z&&(0,c.jsx)(o.n,{children:b(O.noResults,{query:P})}),F.length>0&&(0,c.jsx)(o.r,{children:F.map(e=>{let t=g(e.properties);return(0,c.jsxs)(o.a,{value:String(e.properties.osm_id),onSelect:()=>{let t=g(e.properties);N||A(t),M(``),C?.(t),w?.(e)},children:[(0,c.jsx)(l.MapPinIcon,{}),(0,c.jsxs)(`div`,{className:`flex flex-col items-start text-start`,children:[(0,c.jsx)(r.t,{tag:`span`,weight:`medium`,children:e.properties.name||e.properties.street||O.unknownPlace}),(0,c.jsx)(r.t,{tag:`span`,size:`xs`,type:`secondary`,children:t})]})]},e.properties.osm_id)})})]})]})})}var S=()=>({resolvedTheme:typeof document<`u`&&document.documentElement.classList.contains(`dark`)?`dark`:`light`}),C=(0,s.createContext)(null);function w(e){let t=(0,s.lazy)(e);return e=>{let[n,r]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{r(!0)},[]),n?(0,c.jsx)(s.Suspense,{children:(0,c.jsx)(t,{...e})}):null}}var T=w(()=>import(`react-leaflet`).then(e=>({default:e.MapContainer}))),E=w(()=>import(`react-leaflet`).then(e=>({default:e.TileLayer}))),D=w(()=>import(`react-leaflet`).then(e=>({default:e.Marker}))),O=w(()=>import(`react-leaflet`).then(e=>({default:e.Popup}))),k=w(()=>import(`react-leaflet`).then(e=>({default:e.Tooltip}))),A=w(()=>import(`react-leaflet`).then(e=>({default:e.Circle}))),j=w(()=>import(`react-leaflet`).then(e=>({default:e.CircleMarker}))),M=w(()=>import(`react-leaflet`).then(e=>({default:e.Polyline}))),N=w(()=>import(`react-leaflet`).then(e=>({default:e.Polygon}))),P=w(()=>import(`react-leaflet`).then(e=>({default:e.Rectangle}))),F=w(()=>import(`react-leaflet`).then(e=>({default:e.LayerGroup}))),I=w(()=>import(`react-leaflet`).then(e=>({default:e.FeatureGroup}))),L=w(async()=>import(`react-leaflet-markercluster`).then(e=>({default:e.default}))),R=w(async()=>{let e=await import(`react-leaflet`);function t({children:t}){return(0,c.jsx)(C.Provider,{value:{useMap:e.useMap,useMapEvents:e.useMapEvents},children:t})}return{default:t}});function z(){let e=(0,s.useContext)(C);if(!e)throw Error(`Map controls must be rendered within Map.`);return e.useMap()}function B(e){let t=(0,s.useContext)(C);if(!t)throw Error(`Map controls must be rendered within Map.`);return t.useMapEvents(e)}function ee({zoom:e=15,maxZoom:t=18,className:r,children:i,...a}){return(0,c.jsx)(T,{zoom:e,maxZoom:t,attributionControl:!1,zoomControl:!1,className:n.cn(`map--component`,`z-50 size-full min-h-96 flex-1 rounded-md`,r),...a,children:(0,c.jsx)(R,{children:i})})}var V=(0,s.createContext)(null);function H(){return(0,s.useContext)(V)}function te({name:e=`Default`,url:t,attribution:n,darkUrl:r,darkAttribution:i,...a}){let o=z();o.attributionControl&&o.attributionControl.setPrefix(``);let l=(0,s.useContext)(V),{resolvedTheme:u}=S(),d=u===`dark`?r??t??`https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png`:t??`https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png`,f=u===`dark`&&i?i:n??`&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, &copy; <a href="https://carto.com/attributions">CARTO</a>`;return(0,s.useEffect)(()=>{l&&l.registerTileLayer({name:e,url:d,attribution:f})},[l,e,f,d]),l&&l.selectedTileLayer!==e?null:(0,c.jsx)(E,{url:d,attribution:f,...a})}function ne({name:e,disabled:t,...n}){let r=H();return(0,s.useEffect)(()=>{r&&r.registerLayerGroup({name:e,disabled:t})},[r,e,t]),r&&!r.activeLayerGroups.includes(e)?null:(0,c.jsx)(F,{...n})}function re({name:e,disabled:t,...n}){let r=H();return(0,s.useEffect)(()=>{r&&r.registerLayerGroup({name:e,disabled:t})},[r,e,t]),r&&!r.activeLayerGroups.includes(e)?null:(0,c.jsx)(I,{...n})}function ie({defaultTileLayer:e,defaultLayerGroups:t=[],...n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(e||``),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(t);function p(e){i(t=>t.some(t=>t.name===e.name)?t:[...t,e])}function m(e){u(t=>t.some(t=>t.name===e.name)?t:[...t,e])}return(0,s.useEffect)(()=>{if(e&&r.length>0&&!r.some(t=>t.name===e))throw Error(`Invalid defaultTileLayer "${e}" provided to MapLayers. It must match a MapTileLayer's name prop.`);if(r.length>0&&!a&&o(e&&r.some(t=>t.name===e)?e:r[0].name),t.length>0&&l.length>0&&t.some(e=>!l.some(t=>t.name===e)))throw Error(`Invalid defaultLayerGroups value provided to MapLayers. All names must match a MapLayerGroup's name prop.`)},[r,e,a,l,t]),(0,c.jsx)(V.Provider,{value:{registerTileLayer:p,tileLayers:r,selectedTileLayer:a,setSelectedTileLayer:o,registerLayerGroup:m,layerGroups:l,activeLayerGroups:d,setActiveLayerGroups:f},...n})}function ae({tileLayersLabel:e=`Map Type`,layerGroupsLabel:t=`Layers`,position:r=`top-1 right-1`,className:o,...s}){let u=H();if(!u)throw Error(`MapLayersControl must be used within MapLayers`);let{tileLayers:d,selectedTileLayer:f,setSelectedTileLayer:p,layerGroups:m,activeLayerGroups:h,setActiveLayerGroups:g}=u;if(d.length===0&&m.length===0)return null;function _(e,t){g(t?[...h,e]:h.filter(t=>t!==e))}let v=d.length>1,y=m.length>0;return!v&&!y?null:(0,c.jsxs)(a.t,{children:[(0,c.jsx)(a.g,{render:(0,c.jsx)(i.t,{type:`button`,variant:`secondary`,size:`icon-sm`,"aria-label":`Select layers`,title:`Select layers`,className:n.cn(`absolute z-1000 border`,r,o),...s}),children:(0,c.jsx)(l.LayersIcon,{})}),(0,c.jsxs)(a.r,{align:`end`,className:`z-1000`,children:[!!v&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a.o,{children:e}),(0,c.jsx)(a.l,{value:f,onValueChange:p,children:d.map(e=>(0,c.jsx)(a.u,{value:e.name,children:e.name},e.name))})]}),!!v&&!!y&&(0,c.jsx)(a.d,{}),!!y&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a.o,{children:t}),m.map(e=>(0,c.jsx)(a.n,{checked:h.includes(e.name),disabled:e.disabled,onCheckedChange:t=>_(e.name,t),children:e.name},e.name))]})]})]})}function U({icon:e=(0,c.jsx)(l.MapPinIcon,{className:`size-6 text-foreground`}),iconAnchor:t=[12,12],bgPos:n,popupAnchor:r,tooltipAnchor:i,...a}){let{L:o}=$();return o?(0,c.jsx)(D,{icon:o.divIcon({className:``,html:(0,d.renderToString)(e),iconAnchor:t,...n?{bgPos:n}:{},...r?{popupAnchor:r}:{},...i?{tooltipAnchor:i}:{}}),riseOnHover:!0,...a}):null}function oe({polygonOptions:e={className:`fill-foreground stroke-foreground stroke-2`},spiderLegPolylineOptions:t={className:`fill-foreground stroke-foreground stroke-2`},icon:n,...r}){let{L:i}=$();return i?(0,c.jsx)(L,{polygonOptions:e,spiderLegPolylineOptions:t,iconCreateFunction:n?e=>{let t=n(e.getChildCount());return i.divIcon({html:(0,d.renderToString)(t)})}:void 0,...r}):null}function se({className:e,...t}){return(0,c.jsx)(A,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function W({className:e,...t}){return(0,c.jsx)(j,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function G({className:e,...t}){return(0,c.jsx)(M,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function ce({className:e,...t}){return(0,c.jsx)(N,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function le({className:e,...t}){return(0,c.jsx)(P,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function ue({className:e,...t}){return(0,c.jsx)(O,{className:n.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`,e),...t})}function de({className:e,children:t,side:r=`top`,sideOffset:i=15,...a}){let o={top:`bottom-0.5 left-1/2 -translate-x-1/2 translate-y-1/2`,bottom:`top-0.5 left-1/2 -translate-x-1/2 -translate-y-1/2`,left:`right-0.5 top-1/2 translate-x-1/2 -translate-y-1/2`,right:`left-0.5 top-1/2 -translate-x-1/2 -translate-y-1/2`},s={top:[0,-i],bottom:[0,i],left:[-i,0],right:[i,0]};return(0,c.jsxs)(k,{className:n.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`,e),"data-side":r,direction:r,offset:s[r],opacity:1,...a,children:[t,(0,c.jsx)(`div`,{className:n.cn(`bg-foreground fill-foreground absolute z-50 size-2.5 rotate-45 rounded-[2px]`,o[r])})]})}function fe({position:e=`top-1 left-1`,className:t,...r}){let a=z(),[o,u]=(0,s.useState)(a.getZoom());return B({zoomend:()=>{u(a.getZoom())}}),(0,c.jsx)(Z,{className:n.cn(e,t),children:(0,c.jsxs)(p,{orientation:`vertical`,"aria-label":`Zoom controls`,...r,children:[(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,"aria-label":`Zoom in`,title:`Zoom in`,className:`border`,disabled:o>=a.getMaxZoom(),onClick:()=>a.zoomIn(),children:(0,c.jsx)(l.PlusIcon,{})}),(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,"aria-label":`Zoom out`,title:`Zoom out`,className:`border`,disabled:o<=a.getMinZoom(),onClick:()=>a.zoomOut(),children:(0,c.jsx)(l.MinusIcon,{})})]})})}function pe({position:e=`top-1 right-1`,className:t,...r}){let a=z(),[o,u]=(0,s.useState)(!1),{L:d}=$();return(0,s.useEffect)(()=>{if(!d)return;let e=new d.Control.FullScreen;e.addTo(a);let t=e.getContainer();t&&(t.style.display=`none`);let n=()=>u(!0),r=()=>u(!1);return a.on(`enterFullscreen`,n),a.on(`exitFullscreen`,r),()=>{e.remove(),a.off(`enterFullscreen`,n),a.off(`exitFullscreen`,r)}},[d,a]),(0,c.jsx)(Z,{className:n.cn(e,t),children:(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,onClick:()=>a.toggleFullscreen(),"aria-label":o?`Exit fullscreen`:`Enter fullscreen`,title:o?`Exit fullscreen`:`Enter fullscreen`,className:`border`,...r,children:o?(0,c.jsx)(l.MinimizeIcon,{}):(0,c.jsx)(l.MaximizeIcon,{})})})}function me(){return(0,c.jsxs)(`div`,{className:`absolute -top-1 -right-1 flex size-3 rounded-full`,children:[(0,c.jsx)(`div`,{className:`bg-primary absolute inline-flex size-full animate-ping rounded-full opacity-75`}),(0,c.jsx)(`div`,{className:`bg-primary relative inline-flex size-3 rounded-full`})]})}function he({watch:e=!1,onLocationFound:t,onLocationError:r,position:a=`right-1 bottom-1`,className:o,...u}){let d=z(),[f,p]=Te(200),[m,h]=(0,s.useState)(null),g=m!==null,_=(0,s.useCallback)(()=>{p(!0),d.locate({setView:!0,maxZoom:d.getMaxZoom(),watch:e}),d.on(`locationfound`,e=>{h(e.latlng),p(!1),t?.(e)}),d.on(`locationerror`,e=>{h(null),p(!1),r?.(e)})},[d,r,t,p,e]),v=(0,s.useCallback)(()=>{d.stopLocate(),d.off(`locationfound`),d.off(`locationerror`),h(null),p(!1)},[d,p]),y=g?v:_,b=f?`Locating...`:g?`Stop tracking`:`Track location`,x=f?`Locating...`:g?`Stop location tracking`:`Start location tracking`,S=g&&m?(0,c.jsx)(U,{position:m,icon:(0,c.jsx)(me,{})}):null;return(0,s.useEffect)(()=>()=>v(),[v]),(0,c.jsxs)(Z,{className:n.cn(a,o),children:[(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:g?`default`:`secondary`,onClick:y,disabled:f,title:b,"aria-label":x,className:`border`,...u,children:f?(0,c.jsx)(l.LoaderCircleIcon,{className:`animate-spin`}):(0,c.jsx)(l.NavigationIcon,{})}),S]})}function ge({position:e=`top-1 left-1`,className:t,...r}){return(0,c.jsx)(Z,{className:n.cn(`z-1001 w-60`,e,t),children:(0,c.jsx)(x,{...r})})}var K=(0,s.createContext)(null);function q(){return(0,s.useContext)(K)}function _e({onLayersChange:e,position:t=`bottom-1 left-1`,className:r,...i}){let{L:a,LeafletDraw:o}=$(),l=z(),u=(0,s.useRef)(null),d=(0,s.useRef)(null),f=(0,s.useRef)(null),[m,h]=(0,s.useState)(null),[g,_]=(0,s.useState)(0),v=(0,s.useCallback)(()=>{u.current&&_(u.current.getLayers().length)},[]),y=(0,s.useCallback)(t=>{if(!u.current)return;let{layer:n}=t;u.current.addLayer(n),e?.(u.current),v(),h(null)},[e,v]),b=(0,s.useCallback)(()=>{u.current&&(e?.(u.current),v(),h(null))},[e,v]);return(0,s.useEffect)(()=>{if(!(!a||!o||!l))return l.on(a.Draw.Event.CREATED,y),l.on(a.Draw.Event.EDITED,b),l.on(a.Draw.Event.DELETED,b),()=>{l.off(a.Draw.Event.CREATED,y),l.off(a.Draw.Event.EDITED,b),l.off(a.Draw.Event.DELETED,b)}},[a,o,l,y,b]),(0,c.jsxs)(K.Provider,{value:{featureGroup:u.current,activeMode:m,setActiveMode:h,editControlRef:d,deleteControlRef:f,layersCount:g},children:[(0,c.jsx)(I,{ref:u}),(0,c.jsx)(Z,{className:n.cn(t,r),children:(0,c.jsx)(p,{orientation:`vertical`,...i})})]})}function J({drawMode:e,createDrawTool:t,className:r,...a}){let o=q();if(!o)throw Error(`MapDrawShapeButton must be used within MapDrawControl`);let{L:l}=$(),u=z(),d=(0,s.useRef)(null),{activeMode:f,setActiveMode:p}=o,m=f===e;(0,s.useEffect)(()=>{if(!l||!m){d.current?.disable(),d.current=null;return}let e=t(l,u);return e.enable(),d.current=e,()=>{e.disable(),d.current=null}},[l,u,m,t]);function h(){p(m?null:e)}return(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,"aria-label":`Draw ${e}`,title:`Draw ${e}`,className:n.cn(`border`,r),variant:m?`default`:`secondary`,disabled:f===`edit`||f===`delete`,onClick:h,...a})}function ve({...e}){return(0,c.jsx)(J,{drawMode:`marker`,createDrawTool:(t,n)=>new t.Draw.Marker(n,{icon:t.divIcon({className:``,iconAnchor:[12,12],html:(0,d.renderToString)((0,c.jsx)(l.MapPinIcon,{className:`size-6`}))}),...e}),children:(0,c.jsx)(l.MapPinIcon,{})})}function ye({showLength:e=!1,drawError:t={color:`var(--color-destructive)`},shapeOptions:n={color:`var(--color-primary)`,opacity:1,weight:2},...r}){let i=Q();return(0,c.jsx)(J,{drawMode:`polyline`,createDrawTool:(a,o)=>new a.Draw.Polyline(o,{...i?{icon:i,touchIcon:i}:{},showLength:e,drawError:t,shapeOptions:n,...r}),children:(0,c.jsx)(l.WaypointsIcon,{})})}function be({showRadius:e=!1,shapeOptions:t={color:`var(--color-primary)`,opacity:1,weight:2},...n}){return(0,c.jsx)(J,{drawMode:`circle`,createDrawTool:(r,i)=>new r.Draw.Circle(i,{showRadius:e,shapeOptions:t,...n}),children:(0,c.jsx)(l.CircleIcon,{})})}function xe({showArea:e=!1,shapeOptions:t={color:`var(--color-primary)`,opacity:1,weight:2},...n}){return(0,c.jsx)(J,{drawMode:`rectangle`,createDrawTool:(r,i)=>new r.Draw.Rectangle(i,{showArea:e,shapeOptions:t,...n}),children:(0,c.jsx)(l.SquareIcon,{})})}function Se({drawError:e={color:`var(--color-destructive)`},shapeOptions:t={color:`var(--color-primary)`,opacity:1,weight:2},...n}){let r=Q();return(0,c.jsx)(J,{drawMode:`polygon`,createDrawTool:(i,a)=>new i.Draw.Polygon(a,{...r?{icon:r,touchIcon:r}:{},drawError:e,shapeOptions:t,...n}),children:(0,c.jsx)(l.PentagonIcon,{})})}function Y({drawAction:e,createDrawTool:t,controlRef:r,className:a,...o}){let l=q();if(!l)throw Error(`MapDrawActionButton must be used within MapDrawControl`);let{L:u}=$(),d=z(),{featureGroup:f,activeMode:p,setActiveMode:m,layersCount:h}=l,g=p===e,_=h>0;(0,s.useEffect)(()=>{if(!u||!f||!g){r.current?.disable?.(),r.current=null;return}let e=t(u,d,f);return e.enable?.(),r.current=e,()=>{e.disable?.(),r.current=null}},[u,d,g,f,t,r]);function v(){r.current?.save(),m(g?null:e)}return(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,"aria-label":`${e===`edit`?`Edit`:`Remove`} shapes`,title:`${e===`edit`?`Edit`:`Remove`} shapes`,variant:g?`default`:`secondary`,disabled:!_,onClick:v,className:n.cn(`border`,a),...o})}function Ce({selectedPathOptions:e={color:`var(--color-primary)`,fillColor:`var(--color-primary)`,weight:2},...t}){let{L:n}=$(),r=Q(),i=q();if(!i)throw Error(`MapDrawEdit must be used within MapDrawControl`);return(0,s.useEffect)(()=>{!n||!r||(n.Edit.PolyVerticesEdit.mergeOptions({icon:r,touchIcon:r,drawError:{color:`var(--color-destructive)`}}),n.Edit.SimpleShape.mergeOptions({moveIcon:r,resizeIcon:r,touchMoveIcon:r,touchResizeIcon:r}),n.drawLocal.edit.handlers.edit.tooltip={text:`Drag handles or markers to edit.`,subtext:``},n.drawLocal.edit.handlers.remove.tooltip={text:`Click on a shape to remove.`})},[n,r]),(0,c.jsx)(Y,{drawAction:`edit`,controlRef:i.editControlRef,createDrawTool:(n,r,i)=>new n.EditToolbar.Edit(r,{featureGroup:i,selectedPathOptions:e,...t}),children:(0,c.jsx)(l.PenLineIcon,{})})}function X(){let e=q();if(!e)throw Error(`MapDrawDelete must be used within MapDrawControl`);return(0,c.jsx)(Y,{drawAction:`delete`,controlRef:e.deleteControlRef,createDrawTool:(e,t,n)=>new e.EditToolbar.Delete(t,{featureGroup:n}),children:(0,c.jsx)(l.Trash2Icon,{})})}function we({className:e,...t}){let r=q();if(!r)throw Error(`MapDrawUndo must be used within MapDrawControl`);let{activeMode:a,setActiveMode:o,editControlRef:s,deleteControlRef:u,layersCount:d}=r,f=a===`edit`,p=a===`delete`,m=(f||p)&&d>0;function h(){f?s.current?.revertLayers():p&&u.current?.revertLayers(),o(null)}return(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,"aria-label":`Undo ${a}`,title:`Undo ${a}`,onClick:h,disabled:!m,className:n.cn(`border`,e),...t,children:(0,c.jsx)(l.Undo2Icon,{})})}function Z({className:e,...t}){let{L:r}=$(),i=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!r)return;let e=i.current;e&&(r.DomEvent.disableClickPropagation(e),r.DomEvent.disableScrollPropagation(e))},[r]),(0,c.jsx)(`div`,{ref:i,className:n.cn(`absolute z-1000 size-fit cursor-default`,e),...t})}function Q(){let{L:e}=$();return e?e.divIcon({iconAnchor:[8,8],html:(0,d.renderToString)((0,c.jsx)(l.CircleIcon,{className:`fill-primary stroke-primary size-4 transition-transform hover:scale-110`}))}):null}function $(){let[e,t]=(0,s.useState)(null),[n,r]=(0,s.useState)(null);return(0,s.useEffect)(()=>{async function i(){let e=await import(`leaflet`),n=await import(`leaflet.fullscreen`),i=await import(`leaflet-draw`),a=e.default;a.Control&&!a.Control.FullScreen&&(a.Control.FullScreen=n.default||n),r(i),t(a)}e&&n||typeof window>`u`||i()},[e,n]),{L:e,LeafletDraw:n}}function Te(e=200){let[t,n]=(0,s.useState)(!1),[r,i]=(0,s.useState)(!1),a=(0,s.useRef)(null);return(0,s.useEffect)(()=>(t?a.current=setTimeout(()=>{i(!0)},e):(a.current&&=(clearTimeout(a.current),null),i(!1)),()=>{a.current&&clearTimeout(a.current)}),[t,e]),[r,n]}exports.Map=ee,exports.MapCircle=se,exports.MapCircleMarker=W,exports.MapControlContainer=Z,exports.MapDrawCircle=be,exports.MapDrawControl=_e,exports.MapDrawDelete=X,exports.MapDrawEdit=Ce,exports.MapDrawMarker=ve,exports.MapDrawPolygon=Se,exports.MapDrawPolyline=ye,exports.MapDrawRectangle=xe,exports.MapDrawUndo=we,exports.MapFeatureGroup=re,exports.MapFullscreenControl=pe,exports.MapLayerGroup=ne,exports.MapLayers=ie,exports.MapLayersControl=ae,exports.MapLocateControl=he,exports.MapMarker=U,exports.MapMarkerClusterGroup=oe,exports.MapPolygon=ce,exports.MapPolyline=G,exports.MapPopup=ue,exports.MapRectangle=le,exports.MapSearchControl=ge,exports.MapTileLayer=te,exports.MapTooltip=de,exports.MapZoomControl=fe,exports.PlaceAutocomplete=x,exports.defaultPlaceAutocompleteStrings=h,exports.useLeaflet=$;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/chunk-D3uCBrYO.cjs`),t=require(`../../../lib/strings.cjs`),n=require(`../../../lib/utils.cjs`),r=require(`../../../_shared/text-DBnY6fcL.cjs`),i=require(`../../../_shared/button-2xglT7yf.cjs`),a=require(`../../../_shared/dropdown-menu-DZlWHqWS.cjs`),o=require(`../../../_shared/command-D7zTvyBJ.cjs`);let s=require(`react`);s=e.t(s,1);let c=require(`react/jsx-runtime`),l=require(`lucide-react`),u=require(`class-variance-authority`);require(`@base-ui/react/merge-props`),require(`@base-ui/react/use-render`);let d=require(`react-dom/server`);var f=(0,u.cva)(`has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1`,{variants:{orientation:{horizontal:`[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0 *:data-slot:rounded-r-none`,vertical:`[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! flex-col [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0 *:data-slot:rounded-b-none`}},defaultVariants:{orientation:`horizontal`}});function p({className:e,orientation:t,...r}){return(0,c.jsx)(`div`,{role:`group`,"data-slot":`button-group`,"data-orientation":t,className:n.cn(f({orientation:t}),e),...r})}function m({className:e,...t}){return(0,c.jsx)(l.Loader2Icon,{role:`status`,"aria-label":`Loading`,className:n.cn(`size-4 animate-spin`,e),...t})}var h={searchPlaceholder:`Search`,error:`Error: {{message}}`,noResults:`Can't find {{query}}.`,unknownPlace:`Unknown`};function g(e){let t=[];return e.name&&t.push(e.name),e.housenumber&&e.street?t.push(`${e.housenumber} ${e.street}`):e.street&&t.push(e.street),e.city?t.push(e.city):e.locality&&t.push(e.locality),e.state&&e.state!==e.city&&t.push(e.state),e.country&&t.push(e.country),[...new Set(t)].join(`, `)}function _({query:e,bbox:t,lang:n,lat:r,limit:i,locationBiasScale:a,lon:o,zoom:s}){let c=new URL(`https://photon.komoot.io/api`);return c.searchParams.set(`q`,e),n&&c.searchParams.set(`lang`,n),i&&c.searchParams.set(`limit`,String(i)),t&&c.searchParams.set(`bbox`,t.join(`,`)),r!==void 0&&o!==void 0&&(c.searchParams.set(`lat`,String(r)),c.searchParams.set(`lon`,String(o))),s!==void 0&&c.searchParams.set(`zoom`,String(s)),a!==void 0&&c.searchParams.set(`location_bias_scale`,String(a)),String(c)}function v(e,t=300){let[n,r]=s.useState(e);return s.useEffect(()=>{let n=setTimeout(()=>r(e),t);return()=>clearTimeout(n)},[e,t]),n}function y({debounceMs:e,query:t,lang:n,limit:r,bbox:i,lat:a,lon:o,zoom:c,locationBiasScale:l}){let[u,d]=s.useState([]),[f,p]=s.useState(!1),[m,h]=s.useState(null),[g,y]=s.useState(!1),b=v(t,e);return s.useEffect(()=>{if(!b.trim()){d([]),p(!1),y(!1);return}let e=new AbortController;async function t(){p(!0),h(null),y(!0);try{let t=_({query:b,lang:n,limit:r,bbox:i,lat:a,lon:o,zoom:c,locationBiasScale:l}),s=await fetch(t,{signal:e.signal});if(!s.ok)throw Error(`Photon API error: ${s.status} ${s.statusText}`);let u=await s.json(),f=new Set;d(u.features.filter(e=>{let t=e.properties.osm_id;return f.has(t)?!1:(f.add(t),!0)}))}catch(e){e instanceof Error&&e.name!==`AbortError`&&(h(e),d([]))}finally{p(!1)}}return t(),()=>e.abort()},[b,n,r,i,a,o,c,l]),{results:u,isLoading:f,error:m,hasSearched:g}}function b(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>t[n]??e)}function x({debounceMs:e=300,lang:i,limit:a=5,bbox:u,lat:d,lon:f,zoom:p,locationBiasScale:_,className:v,value:x,defaultValue:S=``,onChange:C,onPlaceSelect:w,onResultsChange:T,strings:E,...D}){let O=t.useStrings(h,E),[k,A]=s.useState(S),[j,M]=s.useState(``),N=x!==void 0,P=N?x:k,{results:F,isLoading:I,error:L,hasSearched:R}=y({query:j,debounceMs:e,lang:i,limit:a,bbox:u,lat:d,lon:f,zoom:p,locationBiasScale:_});s.useEffect(()=>{T?.(F)},[F,T]);let z=R&&!I&&!L&&F.length===0,B=L||z||F.length>0;return(0,c.jsx)(o.t,{className:n.cn(`place-autocomplete--component`,`h-fit overflow-visible`,v),shouldFilter:!1,loop:!0,children:(0,c.jsxs)(`div`,{className:`relative`,children:[(0,c.jsxs)(o.l,{className:n.cn(`border-input! bg-popover! ring-0!`,B&&`rounded-b-none`),children:[(0,c.jsx)(o.u,{children:(0,c.jsx)(l.SearchIcon,{})}),(0,c.jsx)(o.d,{placeholder:O.searchPlaceholder,value:P,onChange:e=>{let t=e.target.value;N||A(t),M(t),C?.(t)},...D}),!!I&&(0,c.jsx)(o.u,{align:`inline-end`,children:(0,c.jsx)(m,{})})]}),!!B&&(0,c.jsxs)(o.o,{"data-state":B?`open`:`closed`,className:n.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`),children:[!!L&&(0,c.jsx)(o.n,{children:b(O.error,{message:L.message})}),!!z&&(0,c.jsx)(o.n,{children:b(O.noResults,{query:P})}),F.length>0&&(0,c.jsx)(o.r,{children:F.map(e=>{let t=g(e.properties);return(0,c.jsxs)(o.a,{value:String(e.properties.osm_id),onSelect:()=>{let t=g(e.properties);N||A(t),M(``),C?.(t),w?.(e)},children:[(0,c.jsx)(l.MapPinIcon,{}),(0,c.jsxs)(`div`,{className:`flex flex-col items-start text-start`,children:[(0,c.jsx)(r.t,{tag:`span`,weight:`medium`,children:e.properties.name||e.properties.street||O.unknownPlace}),(0,c.jsx)(r.t,{tag:`span`,size:`xs`,type:`secondary`,children:t})]})]},e.properties.osm_id)})})]})]})})}var S=()=>({resolvedTheme:typeof document<`u`&&document.documentElement.classList.contains(`dark`)?`dark`:`light`}),C=(0,s.createContext)(null);function w(e){let t=(0,s.lazy)(e);return e=>{let[n,r]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{r(!0)},[]),n?(0,c.jsx)(s.Suspense,{children:(0,c.jsx)(t,{...e})}):null}}var T=w(()=>import(`react-leaflet`).then(e=>({default:e.MapContainer}))),E=w(()=>import(`react-leaflet`).then(e=>({default:e.TileLayer}))),D=w(()=>import(`react-leaflet`).then(e=>({default:e.Marker}))),O=w(()=>import(`react-leaflet`).then(e=>({default:e.Popup}))),k=w(()=>import(`react-leaflet`).then(e=>({default:e.Tooltip}))),A=w(()=>import(`react-leaflet`).then(e=>({default:e.Circle}))),j=w(()=>import(`react-leaflet`).then(e=>({default:e.CircleMarker}))),M=w(()=>import(`react-leaflet`).then(e=>({default:e.Polyline}))),N=w(()=>import(`react-leaflet`).then(e=>({default:e.Polygon}))),P=w(()=>import(`react-leaflet`).then(e=>({default:e.Rectangle}))),F=w(()=>import(`react-leaflet`).then(e=>({default:e.LayerGroup}))),I=w(()=>import(`react-leaflet`).then(e=>({default:e.FeatureGroup}))),L=w(async()=>import(`react-leaflet-markercluster`).then(e=>({default:e.default}))),R=w(async()=>{let e=await import(`react-leaflet`);function t({children:t}){return(0,c.jsx)(C.Provider,{value:{useMap:e.useMap,useMapEvents:e.useMapEvents},children:t})}return{default:t}});function z(){let e=(0,s.useContext)(C);if(!e)throw Error(`Map controls must be rendered within Map.`);return e.useMap()}function B(e){let t=(0,s.useContext)(C);if(!t)throw Error(`Map controls must be rendered within Map.`);return t.useMapEvents(e)}function ee({zoom:e=15,maxZoom:t=18,className:r,children:i,...a}){return(0,c.jsx)(T,{zoom:e,maxZoom:t,attributionControl:!1,zoomControl:!1,className:n.cn(`map--component`,`z-50 size-full min-h-96 flex-1 rounded-md`,r),...a,children:(0,c.jsx)(R,{children:i})})}var V=(0,s.createContext)(null);function H(){return(0,s.useContext)(V)}function te({name:e=`Default`,url:t,attribution:n,darkUrl:r,darkAttribution:i,...a}){let o=z();o.attributionControl&&o.attributionControl.setPrefix(``);let l=(0,s.useContext)(V),{resolvedTheme:u}=S(),d=u===`dark`?r??t??`https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png`:t??`https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png`,f=u===`dark`&&i?i:n??`&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, &copy; <a href="https://carto.com/attributions">CARTO</a>`;return(0,s.useEffect)(()=>{l&&l.registerTileLayer({name:e,url:d,attribution:f})},[l,e,f,d]),l&&l.selectedTileLayer!==e?null:(0,c.jsx)(E,{url:d,attribution:f,...a})}function ne({name:e,disabled:t,...n}){let r=H();return(0,s.useEffect)(()=>{r&&r.registerLayerGroup({name:e,disabled:t})},[r,e,t]),r&&!r.activeLayerGroups.includes(e)?null:(0,c.jsx)(F,{...n})}function re({name:e,disabled:t,...n}){let r=H();return(0,s.useEffect)(()=>{r&&r.registerLayerGroup({name:e,disabled:t})},[r,e,t]),r&&!r.activeLayerGroups.includes(e)?null:(0,c.jsx)(I,{...n})}function ie({defaultTileLayer:e,defaultLayerGroups:t=[],...n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(e||``),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(t);function p(e){i(t=>t.some(t=>t.name===e.name)?t:[...t,e])}function m(e){u(t=>t.some(t=>t.name===e.name)?t:[...t,e])}return(0,s.useEffect)(()=>{if(e&&r.length>0&&!r.some(t=>t.name===e))throw Error(`Invalid defaultTileLayer "${e}" provided to MapLayers. It must match a MapTileLayer's name prop.`);if(r.length>0&&!a&&o(e&&r.some(t=>t.name===e)?e:r[0].name),t.length>0&&l.length>0&&t.some(e=>!l.some(t=>t.name===e)))throw Error(`Invalid defaultLayerGroups value provided to MapLayers. All names must match a MapLayerGroup's name prop.`)},[r,e,a,l,t]),(0,c.jsx)(V.Provider,{value:{registerTileLayer:p,tileLayers:r,selectedTileLayer:a,setSelectedTileLayer:o,registerLayerGroup:m,layerGroups:l,activeLayerGroups:d,setActiveLayerGroups:f},...n})}function ae({tileLayersLabel:e=`Map Type`,layerGroupsLabel:t=`Layers`,position:r=`top-1 right-1`,className:o,...s}){let u=H();if(!u)throw Error(`MapLayersControl must be used within MapLayers`);let{tileLayers:d,selectedTileLayer:f,setSelectedTileLayer:p,layerGroups:m,activeLayerGroups:h,setActiveLayerGroups:g}=u;if(d.length===0&&m.length===0)return null;function _(e,t){g(t?[...h,e]:h.filter(t=>t!==e))}let v=d.length>1,y=m.length>0;return!v&&!y?null:(0,c.jsxs)(a.t,{children:[(0,c.jsx)(a.g,{render:(0,c.jsx)(i.t,{type:`button`,variant:`secondary`,size:`icon-sm`,"aria-label":`Select layers`,title:`Select layers`,className:n.cn(`absolute z-1000 border`,r,o),...s}),children:(0,c.jsx)(l.LayersIcon,{})}),(0,c.jsxs)(a.r,{align:`end`,className:`z-1000`,children:[!!v&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a.o,{children:e}),(0,c.jsx)(a.l,{value:f,onValueChange:p,children:d.map(e=>(0,c.jsx)(a.u,{value:e.name,children:e.name},e.name))})]}),!!v&&!!y&&(0,c.jsx)(a.d,{}),!!y&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(a.o,{children:t}),m.map(e=>(0,c.jsx)(a.n,{checked:h.includes(e.name),disabled:e.disabled,onCheckedChange:t=>_(e.name,t),children:e.name},e.name))]})]})]})}function U({icon:e=(0,c.jsx)(l.MapPinIcon,{className:`size-6 text-foreground`}),iconAnchor:t=[12,12],bgPos:n,popupAnchor:r,tooltipAnchor:i,...a}){let{L:o}=$();return o?(0,c.jsx)(D,{icon:o.divIcon({className:``,html:(0,d.renderToString)(e),iconAnchor:t,...n?{bgPos:n}:{},...r?{popupAnchor:r}:{},...i?{tooltipAnchor:i}:{}}),riseOnHover:!0,...a}):null}function oe({polygonOptions:e={className:`fill-foreground stroke-foreground stroke-2`},spiderLegPolylineOptions:t={className:`fill-foreground stroke-foreground stroke-2`},icon:n,...r}){let{L:i}=$();return i?(0,c.jsx)(L,{polygonOptions:e,spiderLegPolylineOptions:t,iconCreateFunction:n?e=>{let t=n(e.getChildCount());return i.divIcon({html:(0,d.renderToString)(t)})}:void 0,...r}):null}function se({className:e,...t}){return(0,c.jsx)(A,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function W({className:e,...t}){return(0,c.jsx)(j,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function G({className:e,...t}){return(0,c.jsx)(M,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function ce({className:e,...t}){return(0,c.jsx)(N,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function le({className:e,...t}){return(0,c.jsx)(P,{className:n.cn(`fill-foreground stroke-foreground stroke-2`,e),...t})}function ue({className:e,...t}){return(0,c.jsx)(O,{className:n.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`,e),...t})}function de({className:e,children:t,side:r=`top`,sideOffset:i=15,...a}){let o={top:`bottom-0.5 left-1/2 -translate-x-1/2 translate-y-1/2`,bottom:`top-0.5 left-1/2 -translate-x-1/2 -translate-y-1/2`,left:`right-0.5 top-1/2 translate-x-1/2 -translate-y-1/2`,right:`left-0.5 top-1/2 -translate-x-1/2 -translate-y-1/2`},s={top:[0,-i],bottom:[0,i],left:[-i,0],right:[i,0]};return(0,c.jsxs)(k,{className:n.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`,e),"data-side":r,direction:r,offset:s[r],opacity:1,...a,children:[t,(0,c.jsx)(`div`,{className:n.cn(`bg-foreground fill-foreground absolute z-50 size-2.5 rotate-45 rounded-[2px]`,o[r])})]})}function fe({position:e=`top-1 left-1`,className:t,...r}){let a=z(),[o,u]=(0,s.useState)(a.getZoom());return B({zoomend:()=>{u(a.getZoom())}}),(0,c.jsx)(Z,{className:n.cn(e,t),children:(0,c.jsxs)(p,{orientation:`vertical`,"aria-label":`Zoom controls`,...r,children:[(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,"aria-label":`Zoom in`,title:`Zoom in`,className:`border`,disabled:o>=a.getMaxZoom(),onClick:()=>a.zoomIn(),children:(0,c.jsx)(l.PlusIcon,{})}),(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,"aria-label":`Zoom out`,title:`Zoom out`,className:`border`,disabled:o<=a.getMinZoom(),onClick:()=>a.zoomOut(),children:(0,c.jsx)(l.MinusIcon,{})})]})})}function pe({position:e=`top-1 right-1`,className:t,...r}){let a=z(),[o,u]=(0,s.useState)(!1),{L:d}=$();return(0,s.useEffect)(()=>{if(!d)return;let e=new d.Control.FullScreen;e.addTo(a);let t=e.getContainer();t&&(t.style.display=`none`);let n=()=>u(!0),r=()=>u(!1);return a.on(`enterFullscreen`,n),a.on(`exitFullscreen`,r),()=>{e.remove(),a.off(`enterFullscreen`,n),a.off(`exitFullscreen`,r)}},[d,a]),(0,c.jsx)(Z,{className:n.cn(e,t),children:(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,onClick:()=>a.toggleFullscreen(),"aria-label":o?`Exit fullscreen`:`Enter fullscreen`,title:o?`Exit fullscreen`:`Enter fullscreen`,className:`border`,...r,children:o?(0,c.jsx)(l.MinimizeIcon,{}):(0,c.jsx)(l.MaximizeIcon,{})})})}function me(){return(0,c.jsxs)(`div`,{className:`absolute -top-1 -right-1 flex size-3 rounded-full`,children:[(0,c.jsx)(`div`,{className:`bg-primary absolute inline-flex size-full animate-ping rounded-full opacity-75`}),(0,c.jsx)(`div`,{className:`bg-primary relative inline-flex size-3 rounded-full`})]})}function he({watch:e=!1,onLocationFound:t,onLocationError:r,position:a=`right-1 bottom-1`,className:o,...u}){let d=z(),[f,p]=Te(200),[m,h]=(0,s.useState)(null),g=m!==null,_=(0,s.useCallback)(()=>{p(!0),d.locate({setView:!0,maxZoom:d.getMaxZoom(),watch:e}),d.on(`locationfound`,e=>{h(e.latlng),p(!1),t?.(e)}),d.on(`locationerror`,e=>{h(null),p(!1),r?.(e)})},[d,r,t,p,e]),v=(0,s.useCallback)(()=>{d.stopLocate(),d.off(`locationfound`),d.off(`locationerror`),h(null),p(!1)},[d,p]),y=g?v:_,b=f?`Locating...`:g?`Stop tracking`:`Track location`,x=f?`Locating...`:g?`Stop location tracking`:`Start location tracking`,S=g&&m?(0,c.jsx)(U,{position:m,icon:(0,c.jsx)(me,{})}):null;return(0,s.useEffect)(()=>()=>v(),[v]),(0,c.jsxs)(Z,{className:n.cn(a,o),children:[(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:g?`default`:`secondary`,onClick:y,disabled:f,title:b,"aria-label":x,className:`border`,...u,children:f?(0,c.jsx)(l.LoaderCircleIcon,{className:`animate-spin`}):(0,c.jsx)(l.NavigationIcon,{})}),S]})}function ge({position:e=`top-1 left-1`,className:t,...r}){return(0,c.jsx)(Z,{className:n.cn(`z-1001 w-60`,e,t),children:(0,c.jsx)(x,{...r})})}var K=(0,s.createContext)(null);function q(){return(0,s.useContext)(K)}function _e({onLayersChange:e,position:t=`bottom-1 left-1`,className:r,...i}){let{L:a,LeafletDraw:o}=$(),l=z(),u=(0,s.useRef)(null),d=(0,s.useRef)(null),f=(0,s.useRef)(null),[m,h]=(0,s.useState)(null),[g,_]=(0,s.useState)(0),v=(0,s.useCallback)(()=>{u.current&&_(u.current.getLayers().length)},[]),y=(0,s.useCallback)(t=>{if(!u.current)return;let{layer:n}=t;u.current.addLayer(n),e?.(u.current),v(),h(null)},[e,v]),b=(0,s.useCallback)(()=>{u.current&&(e?.(u.current),v(),h(null))},[e,v]);return(0,s.useEffect)(()=>{if(!(!a||!o||!l))return l.on(a.Draw.Event.CREATED,y),l.on(a.Draw.Event.EDITED,b),l.on(a.Draw.Event.DELETED,b),()=>{l.off(a.Draw.Event.CREATED,y),l.off(a.Draw.Event.EDITED,b),l.off(a.Draw.Event.DELETED,b)}},[a,o,l,y,b]),(0,c.jsxs)(K.Provider,{value:{featureGroup:u.current,activeMode:m,setActiveMode:h,editControlRef:d,deleteControlRef:f,layersCount:g},children:[(0,c.jsx)(I,{ref:u}),(0,c.jsx)(Z,{className:n.cn(t,r),children:(0,c.jsx)(p,{orientation:`vertical`,...i})})]})}function J({drawMode:e,createDrawTool:t,className:r,...a}){let o=q();if(!o)throw Error(`MapDrawShapeButton must be used within MapDrawControl`);let{L:l}=$(),u=z(),d=(0,s.useRef)(null),{activeMode:f,setActiveMode:p}=o,m=f===e;(0,s.useEffect)(()=>{if(!l||!m){d.current?.disable(),d.current=null;return}let e=t(l,u);return e.enable(),d.current=e,()=>{e.disable(),d.current=null}},[l,u,m,t]);function h(){p(m?null:e)}return(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,"aria-label":`Draw ${e}`,title:`Draw ${e}`,className:n.cn(`border`,r),variant:m?`default`:`secondary`,disabled:f===`edit`||f===`delete`,onClick:h,...a})}function ve({...e}){return(0,c.jsx)(J,{drawMode:`marker`,createDrawTool:(t,n)=>new t.Draw.Marker(n,{icon:t.divIcon({className:``,iconAnchor:[12,12],html:(0,d.renderToString)((0,c.jsx)(l.MapPinIcon,{className:`size-6`}))}),...e}),children:(0,c.jsx)(l.MapPinIcon,{})})}function ye({showLength:e=!1,drawError:t={color:`var(--color-destructive)`},shapeOptions:n={color:`var(--color-primary)`,opacity:1,weight:2},...r}){let i=Q();return(0,c.jsx)(J,{drawMode:`polyline`,createDrawTool:(a,o)=>new a.Draw.Polyline(o,{...i?{icon:i,touchIcon:i}:{},showLength:e,drawError:t,shapeOptions:n,...r}),children:(0,c.jsx)(l.WaypointsIcon,{})})}function be({showRadius:e=!1,shapeOptions:t={color:`var(--color-primary)`,opacity:1,weight:2},...n}){return(0,c.jsx)(J,{drawMode:`circle`,createDrawTool:(r,i)=>new r.Draw.Circle(i,{showRadius:e,shapeOptions:t,...n}),children:(0,c.jsx)(l.CircleIcon,{})})}function xe({showArea:e=!1,shapeOptions:t={color:`var(--color-primary)`,opacity:1,weight:2},...n}){return(0,c.jsx)(J,{drawMode:`rectangle`,createDrawTool:(r,i)=>new r.Draw.Rectangle(i,{showArea:e,shapeOptions:t,...n}),children:(0,c.jsx)(l.SquareIcon,{})})}function Se({drawError:e={color:`var(--color-destructive)`},shapeOptions:t={color:`var(--color-primary)`,opacity:1,weight:2},...n}){let r=Q();return(0,c.jsx)(J,{drawMode:`polygon`,createDrawTool:(i,a)=>new i.Draw.Polygon(a,{...r?{icon:r,touchIcon:r}:{},drawError:e,shapeOptions:t,...n}),children:(0,c.jsx)(l.PentagonIcon,{})})}function Y({drawAction:e,createDrawTool:t,controlRef:r,className:a,...o}){let l=q();if(!l)throw Error(`MapDrawActionButton must be used within MapDrawControl`);let{L:u}=$(),d=z(),{featureGroup:f,activeMode:p,setActiveMode:m,layersCount:h}=l,g=p===e,_=h>0;(0,s.useEffect)(()=>{if(!u||!f||!g){r.current?.disable?.(),r.current=null;return}let e=t(u,d,f);return e.enable?.(),r.current=e,()=>{e.disable?.(),r.current=null}},[u,d,g,f,t,r]);function v(){r.current?.save(),m(g?null:e)}return(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,"aria-label":`${e===`edit`?`Edit`:`Remove`} shapes`,title:`${e===`edit`?`Edit`:`Remove`} shapes`,variant:g?`default`:`secondary`,disabled:!_,onClick:v,className:n.cn(`border`,a),...o})}function Ce({selectedPathOptions:e={color:`var(--color-primary)`,fillColor:`var(--color-primary)`,weight:2},...t}){let{L:n}=$(),r=Q(),i=q();if(!i)throw Error(`MapDrawEdit must be used within MapDrawControl`);return(0,s.useEffect)(()=>{!n||!r||(n.Edit.PolyVerticesEdit.mergeOptions({icon:r,touchIcon:r,drawError:{color:`var(--color-destructive)`}}),n.Edit.SimpleShape.mergeOptions({moveIcon:r,resizeIcon:r,touchMoveIcon:r,touchResizeIcon:r}),n.drawLocal.edit.handlers.edit.tooltip={text:`Drag handles or markers to edit.`,subtext:``},n.drawLocal.edit.handlers.remove.tooltip={text:`Click on a shape to remove.`})},[n,r]),(0,c.jsx)(Y,{drawAction:`edit`,controlRef:i.editControlRef,createDrawTool:(n,r,i)=>new n.EditToolbar.Edit(r,{featureGroup:i,selectedPathOptions:e,...t}),children:(0,c.jsx)(l.PenLineIcon,{})})}function X(){let e=q();if(!e)throw Error(`MapDrawDelete must be used within MapDrawControl`);return(0,c.jsx)(Y,{drawAction:`delete`,controlRef:e.deleteControlRef,createDrawTool:(e,t,n)=>new e.EditToolbar.Delete(t,{featureGroup:n}),children:(0,c.jsx)(l.Trash2Icon,{})})}function we({className:e,...t}){let r=q();if(!r)throw Error(`MapDrawUndo must be used within MapDrawControl`);let{activeMode:a,setActiveMode:o,editControlRef:s,deleteControlRef:u,layersCount:d}=r,f=a===`edit`,p=a===`delete`,m=(f||p)&&d>0;function h(){f?s.current?.revertLayers():p&&u.current?.revertLayers(),o(null)}return(0,c.jsx)(i.t,{type:`button`,size:`icon-sm`,variant:`secondary`,"aria-label":`Undo ${a}`,title:`Undo ${a}`,onClick:h,disabled:!m,className:n.cn(`border`,e),...t,children:(0,c.jsx)(l.Undo2Icon,{})})}function Z({className:e,...t}){let{L:r}=$(),i=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!r)return;let e=i.current;e&&(r.DomEvent.disableClickPropagation(e),r.DomEvent.disableScrollPropagation(e))},[r]),(0,c.jsx)(`div`,{ref:i,className:n.cn(`absolute z-1000 size-fit cursor-default`,e),...t})}function Q(){let{L:e}=$();return e?e.divIcon({iconAnchor:[8,8],html:(0,d.renderToString)((0,c.jsx)(l.CircleIcon,{className:`fill-primary stroke-primary size-4 transition-transform hover:scale-110`}))}):null}function $(){let[e,t]=(0,s.useState)(null),[n,r]=(0,s.useState)(null);return(0,s.useEffect)(()=>{async function i(){let e=await import(`leaflet`),n=await import(`leaflet.fullscreen`),i=await import(`leaflet-draw`),a=e.default;a.Control&&!a.Control.FullScreen&&(a.Control.FullScreen=n.default||n),r(i),t(a)}e&&n||typeof window>`u`||i()},[e,n]),{L:e,LeafletDraw:n}}function Te(e=200){let[t,n]=(0,s.useState)(!1),[r,i]=(0,s.useState)(!1),a=(0,s.useRef)(null);return(0,s.useEffect)(()=>(t?a.current=setTimeout(()=>{i(!0)},e):(a.current&&=(clearTimeout(a.current),null),i(!1)),()=>{a.current&&clearTimeout(a.current)}),[t,e]),[r,n]}exports.Map=ee,exports.MapCircle=se,exports.MapCircleMarker=W,exports.MapControlContainer=Z,exports.MapDrawCircle=be,exports.MapDrawControl=_e,exports.MapDrawDelete=X,exports.MapDrawEdit=Ce,exports.MapDrawMarker=ve,exports.MapDrawPolygon=Se,exports.MapDrawPolyline=ye,exports.MapDrawRectangle=xe,exports.MapDrawUndo=we,exports.MapFeatureGroup=re,exports.MapFullscreenControl=pe,exports.MapLayerGroup=ne,exports.MapLayers=ie,exports.MapLayersControl=ae,exports.MapLocateControl=he,exports.MapMarker=U,exports.MapMarkerClusterGroup=oe,exports.MapPolygon=ce,exports.MapPolyline=G,exports.MapPopup=ue,exports.MapRectangle=le,exports.MapSearchControl=ge,exports.MapTileLayer=te,exports.MapTooltip=de,exports.MapZoomControl=fe,exports.PlaceAutocomplete=x,exports.defaultPlaceAutocompleteStrings=h,exports.useLeaflet=$;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,9 +1,9 @@
1
1
  import { useStrings as e } from "../../../lib/strings.js";
2
2
  import { cn as t } from "../../../lib/utils.js";
3
3
  import { t as n } from "../../../_shared/text-DIxMTECE.js";
4
- import { t as r } from "../../../_shared/button-BCABTFLE.js";
5
- import { d as i, g as a, l as o, n as s, o as c, r as l, t as u, u as d } from "../../../_shared/dropdown-menu-xdGEynC8.js";
6
- import { a as f, d as p, l as m, n as h, o as g, r as _, t as v, u as y } from "../../../_shared/command-Sq8XbHbA.js";
4
+ import { t as r } from "../../../_shared/button-DBR4QI9E.js";
5
+ import { d as i, g as a, l as o, n as s, o as c, r as l, t as u, u as d } from "../../../_shared/dropdown-menu-4nxEBMnd.js";
6
+ import { a as f, d as p, l as m, n as h, o as g, r as _, t as v, u as y } from "../../../_shared/command-jKbwFRtS.js";
7
7
  import * as b from "react";
8
8
  import { Suspense as x, createContext as S, lazy as C, useCallback as w, useContext as T, useEffect as E, useRef as D, useState as O } from "react";
9
9
  import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/dropdown-menu-BebBffUH.cjs`),t=require(`../../../_shared/action-menu-D0u-q0q-.cjs`),n=require(`../../../_shared/breadcrumbs-m0-gCdNj.cjs`),r=require(`../../../_shared/navigation-BA2nsTgU.cjs`);exports.ActionMenu=t.t,exports.AsideNavigationMenu=r.s,exports.Breadcrumbs=n.t,exports.DropdownMenu=e.t,exports.DropdownMenuCheckboxItem=e.n,exports.DropdownMenuContent=e.r,exports.DropdownMenuGroup=e.i,exports.DropdownMenuItem=e.a,exports.DropdownMenuLabel=e.o,exports.DropdownMenuLinkItem=e.s,exports.DropdownMenuPortal=e.c,exports.DropdownMenuRadioGroup=e.l,exports.DropdownMenuRadioItem=e.u,exports.DropdownMenuSeparator=e.d,exports.DropdownMenuShortcut=e.f,exports.DropdownMenuSub=e.p,exports.DropdownMenuSubContent=e.m,exports.DropdownMenuSubTrigger=e.h,exports.DropdownMenuTrigger=e.g,exports.LanguageSwitcher=r.c,exports.MenuAction=t.n,exports.NavigationTabs=r.o,exports.OverflowTabBar=r.t,exports.PageHeader=r.i,exports.SectionNav=r.r,exports.SideNav=r.n,exports.TabNavigationMenu=r.a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/dropdown-menu-DZlWHqWS.cjs`),t=require(`../../../_shared/action-menu-eVP8GGlv.cjs`),n=require(`../../../_shared/breadcrumbs-Bo7j5Rhv.cjs`),r=require(`../../../_shared/navigation-QAAD3HJd.cjs`);exports.ActionMenu=t.t,exports.AsideNavigationMenu=r.s,exports.Breadcrumbs=n.t,exports.DropdownMenu=e.t,exports.DropdownMenuCheckboxItem=e.n,exports.DropdownMenuContent=e.r,exports.DropdownMenuGroup=e.i,exports.DropdownMenuItem=e.a,exports.DropdownMenuLabel=e.o,exports.DropdownMenuLinkItem=e.s,exports.DropdownMenuPortal=e.c,exports.DropdownMenuRadioGroup=e.l,exports.DropdownMenuRadioItem=e.u,exports.DropdownMenuSeparator=e.d,exports.DropdownMenuShortcut=e.f,exports.DropdownMenuSub=e.p,exports.DropdownMenuSubContent=e.m,exports.DropdownMenuSubTrigger=e.h,exports.DropdownMenuTrigger=e.g,exports.LanguageSwitcher=r.c,exports.MenuAction=t.n,exports.NavigationTabs=r.o,exports.OverflowTabBar=r.t,exports.PageHeader=r.i,exports.SectionNav=r.r,exports.SideNav=r.n,exports.TabNavigationMenu=r.a;
@@ -1,5 +1,5 @@
1
- import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "../../../_shared/dropdown-menu-xdGEynC8.js";
2
- import { n as g, t as _ } from "../../../_shared/action-menu-DUBXdReV.js";
3
- import { t as v } from "../../../_shared/breadcrumbs-DctwTld5.js";
4
- import { a as y, c as b, i as x, n as S, o as C, r as w, s as T, t as E } from "../../../_shared/navigation-DHyaf-RZ.js";
1
+ import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, s as p, t as m, u as h } from "../../../_shared/dropdown-menu-4nxEBMnd.js";
2
+ import { n as g, t as _ } from "../../../_shared/action-menu-Yrj6VzFS.js";
3
+ import { t as v } from "../../../_shared/breadcrumbs-Dc93fqqE.js";
4
+ import { a as y, c as b, i as x, n as S, o as C, r as w, s as T, t as E } from "../../../_shared/navigation-Do9k5Xh1.js";
5
5
  export { _ as ActionMenu, T as AsideNavigationMenu, v as Breadcrumbs, m as DropdownMenu, l as DropdownMenuCheckboxItem, f as DropdownMenuContent, o as DropdownMenuGroup, e as DropdownMenuItem, u as DropdownMenuLabel, p as DropdownMenuLinkItem, t as DropdownMenuPortal, s as DropdownMenuRadioGroup, h as DropdownMenuRadioItem, n as DropdownMenuSeparator, r as DropdownMenuShortcut, d as DropdownMenuSub, c as DropdownMenuSubContent, a as DropdownMenuSubTrigger, i as DropdownMenuTrigger, b as LanguageSwitcher, g as MenuAction, C as NavigationTabs, E as OverflowTabBar, x as PageHeader, w as SectionNav, S as SideNav, y as TabNavigationMenu };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/popover-BTEwjJZS.cjs`);exports.Popover=e.n,exports.PopoverAnchor=e.r,exports.PopoverContent=e.t,exports.PopoverDescription=e.i,exports.PopoverHeader=e.a,exports.PopoverTitle=e.o,exports.PopoverTrigger=e.s;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/popover-B1f_EUQS.cjs`);exports.Popover=e.n,exports.PopoverAnchor=e.r,exports.PopoverContent=e.t,exports.PopoverDescription=e.i,exports.PopoverHeader=e.a,exports.PopoverTitle=e.o,exports.PopoverTrigger=e.s;
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../../../_shared/popover-CF9VWt-l.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../../../_shared/popover-CgRGcFk9.js";
2
2
  export { n as Popover, i as PopoverAnchor, o as PopoverContent, t as PopoverDescription, e as PopoverHeader, r as PopoverTitle, a as PopoverTrigger };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/popover-menu-DF9sWz61.cjs`);exports.PopoverMenu=e.t,exports.defaultPopoverMenuStrings=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../_shared/popover-menu-BEKIT3LR.cjs`);exports.PopoverMenu=e.t,exports.defaultPopoverMenuStrings=e.n;
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../../_shared/popover-menu-BYesl29w.js";
1
+ import { n as e, t } from "../../../_shared/popover-menu-BHdHLEVL.js";
2
2
  export { t as PopoverMenu, e as defaultPopoverMenuStrings };