admin-ui-starter-kit 0.6.9 → 0.7.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 (1360) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +29 -1
  2. package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +14 -0
  3. package/.agents/skills/admin-ui-consumer-migration/references/theme-overrides.md +172 -0
  4. package/.agents/skills/component-library-rules/SKILL.md +5 -4
  5. package/.agents/skills/component-library-rules/references/components/INDEX.json +23 -4
  6. package/.agents/skills/component-library-rules/references/components/INDEX.md +21 -2
  7. package/.agents/skills/component-library-rules/references/components/base__avatar.md +3 -3
  8. package/.agents/skills/component-library-rules/references/components/base__carousel.md +8 -5
  9. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +1 -0
  10. package/.agents/skills/component-library-rules/references/components/base__currency.md +10 -11
  11. package/.agents/skills/component-library-rules/references/components/base__item.md +7 -7
  12. package/.agents/skills/component-library-rules/references/components/base__money-display.md +4 -0
  13. package/.agents/skills/component-library-rules/references/components/base__typography.md +3 -3
  14. package/.agents/skills/component-library-rules/references/components/composed__commerce-address-card.md +74 -0
  15. package/.agents/skills/component-library-rules/references/components/composed__commerce-cart-summary.md +84 -0
  16. package/.agents/skills/component-library-rules/references/components/composed__commerce-coupon-input.md +52 -0
  17. package/.agents/skills/component-library-rules/references/components/composed__commerce-discount-stack.md +58 -0
  18. package/.agents/skills/component-library-rules/references/components/composed__commerce-inventory-section.md +168 -0
  19. package/.agents/skills/component-library-rules/references/components/composed__commerce-loyalty-points.md +60 -0
  20. package/.agents/skills/component-library-rules/references/components/composed__commerce-order-status.md +62 -0
  21. package/.agents/skills/component-library-rules/references/components/composed__commerce-payment-method.md +58 -0
  22. package/.agents/skills/component-library-rules/references/components/composed__commerce-refund-status.md +58 -0
  23. package/.agents/skills/component-library-rules/references/components/composed__commerce-seo-listing.md +106 -0
  24. package/.agents/skills/component-library-rules/references/components/composed__commerce-shipment-tracking.md +65 -0
  25. package/.agents/skills/component-library-rules/references/components/composed__commerce-subscription-summary.md +66 -0
  26. package/.agents/skills/component-library-rules/references/components/composed__commerce-tax-breakdown.md +60 -0
  27. package/.agents/skills/component-library-rules/references/components/composed__commerce-upcoming-booking.md +62 -0
  28. package/.agents/skills/component-library-rules/references/components/composed__commerce-voucher-entry.md +60 -0
  29. package/.agents/skills/component-library-rules/references/components/composed__commerce.md +29 -143
  30. package/.agents/skills/component-library-rules/references/components/features__products.md +18 -462
  31. package/.agents/skills/component-library-rules/references/components/features__products__actions.md +37 -0
  32. package/.agents/skills/component-library-rules/references/components/features__products__support-rail.md +73 -0
  33. package/.agents/skills/component-library-rules/references/components/features__products__variant-details.md +97 -0
  34. package/.agents/skills/component-library-rules/references/components/features__products__variant-management.md +269 -0
  35. package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +1 -1
  36. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +43 -1
  37. package/.agents/skills/component-library-rules/references/testing.md +1 -1
  38. package/.agents/skills/token-system/SKILL.md +4 -1
  39. package/AGENTS.md +4 -3
  40. package/COMPONENT_SELECTION.md +15 -0
  41. package/INTEGRATION.md +41 -2
  42. package/MIGRATION.md +7 -7
  43. package/README.md +7 -3
  44. package/dist/_shared/accordion-CSRRDWVZ.js +135 -0
  45. package/dist/_shared/accordion-CSRRDWVZ.js.map +1 -0
  46. package/dist/_shared/accordion-ClVkIaCy.cjs +2 -0
  47. package/dist/_shared/accordion-ClVkIaCy.cjs.map +1 -0
  48. package/dist/_shared/action-menu-8RN2_Jdr.js +96 -0
  49. package/dist/_shared/action-menu-8RN2_Jdr.js.map +1 -0
  50. package/dist/_shared/action-menu-Cx2xaBjN.cjs +2 -0
  51. package/dist/_shared/action-menu-Cx2xaBjN.cjs.map +1 -0
  52. package/dist/_shared/ai-artifact-BO0XGFHz.cjs +3 -0
  53. package/dist/_shared/ai-artifact-BO0XGFHz.cjs.map +1 -0
  54. package/dist/_shared/ai-artifact-CbsGR1t8.js +1099 -0
  55. package/dist/_shared/ai-artifact-CbsGR1t8.js.map +1 -0
  56. package/dist/_shared/auth-CwipRgNB.cjs +2 -0
  57. package/dist/_shared/auth-CwipRgNB.cjs.map +1 -0
  58. package/dist/_shared/auth-Wipu0Oa_.js +643 -0
  59. package/dist/_shared/auth-Wipu0Oa_.js.map +1 -0
  60. package/dist/_shared/badge-B0Ashqkn.cjs +2 -0
  61. package/dist/_shared/badge-B0Ashqkn.cjs.map +1 -0
  62. package/dist/_shared/badge-DOJpEtsa.js +110 -0
  63. package/dist/_shared/badge-DOJpEtsa.js.map +1 -0
  64. package/dist/_shared/breadcrumbs-C7PI8sxx.cjs +2 -0
  65. package/dist/_shared/breadcrumbs-C7PI8sxx.cjs.map +1 -0
  66. package/dist/_shared/breadcrumbs-xNjbIrGc.js +105 -0
  67. package/dist/_shared/breadcrumbs-xNjbIrGc.js.map +1 -0
  68. package/dist/_shared/button-CB8e7fui.cjs +2 -0
  69. package/dist/_shared/button-CB8e7fui.cjs.map +1 -0
  70. package/dist/_shared/button-CNEMqDHK.js +192 -0
  71. package/dist/_shared/button-CNEMqDHK.js.map +1 -0
  72. package/dist/_shared/buttons-BCFKQuB5.js +137 -0
  73. package/dist/_shared/buttons-BCFKQuB5.js.map +1 -0
  74. package/dist/_shared/buttons-DHj5I2YL.cjs +2 -0
  75. package/dist/_shared/buttons-DHj5I2YL.cjs.map +1 -0
  76. package/dist/_shared/card-radio-group-DdubYUJ6.cjs +2 -0
  77. package/dist/_shared/card-radio-group-DdubYUJ6.cjs.map +1 -0
  78. package/dist/_shared/card-radio-group-Du6rzuoC.js +150 -0
  79. package/dist/_shared/card-radio-group-Du6rzuoC.js.map +1 -0
  80. package/dist/_shared/cards-B7voInTJ.js +430 -0
  81. package/dist/_shared/cards-B7voInTJ.js.map +1 -0
  82. package/dist/_shared/cards-DvE5gRFf.cjs +2 -0
  83. package/dist/_shared/cards-DvE5gRFf.cjs.map +1 -0
  84. package/dist/_shared/combobox-AbXh9ft4.cjs +2 -0
  85. package/dist/_shared/combobox-AbXh9ft4.cjs.map +1 -0
  86. package/dist/_shared/combobox-ImXiC1qy.js +957 -0
  87. package/dist/_shared/combobox-ImXiC1qy.js.map +1 -0
  88. package/dist/_shared/command-B-Yokco3.js +39 -0
  89. package/dist/_shared/command-B-Yokco3.js.map +1 -0
  90. package/dist/_shared/command-kcPx4TM_.cjs +2 -0
  91. package/dist/_shared/command-kcPx4TM_.cjs.map +1 -0
  92. package/dist/_shared/comments-BR5ENvoo.cjs +2 -0
  93. package/dist/_shared/comments-BR5ENvoo.cjs.map +1 -0
  94. package/dist/_shared/comments-a3l--GJ-.js +952 -0
  95. package/dist/_shared/comments-a3l--GJ-.js.map +1 -0
  96. package/dist/_shared/containers-CclPUW7j.cjs +2 -0
  97. package/dist/_shared/containers-CclPUW7j.cjs.map +1 -0
  98. package/dist/_shared/containers-GDaJ3SOV.js +101 -0
  99. package/dist/_shared/containers-GDaJ3SOV.js.map +1 -0
  100. package/dist/_shared/copyable-C0KJlRVr.js +38 -0
  101. package/dist/_shared/copyable-C0KJlRVr.js.map +1 -0
  102. package/dist/_shared/copyable-tJxsOyn-.cjs +2 -0
  103. package/dist/_shared/copyable-tJxsOyn-.cjs.map +1 -0
  104. package/dist/_shared/data-display-0uNuZSN7.js +1878 -0
  105. package/dist/_shared/data-display-0uNuZSN7.js.map +1 -0
  106. package/dist/_shared/data-display-DRa39LH8.cjs +2 -0
  107. package/dist/_shared/data-display-DRa39LH8.cjs.map +1 -0
  108. package/dist/_shared/date-picker-BaPDfs1p.js +1361 -0
  109. package/dist/_shared/date-picker-BaPDfs1p.js.map +1 -0
  110. package/dist/_shared/date-picker-DrkoZZdr.cjs +2 -0
  111. package/dist/_shared/date-picker-DrkoZZdr.cjs.map +1 -0
  112. package/dist/_shared/date-pickers-CT3aZpPn.cjs +2 -0
  113. package/dist/_shared/date-pickers-CT3aZpPn.cjs.map +1 -0
  114. package/dist/_shared/date-pickers-DRp0VM7k.js +329 -0
  115. package/dist/_shared/date-pickers-DRp0VM7k.js.map +1 -0
  116. package/dist/_shared/display-BHIs_Y_j.js +1006 -0
  117. package/dist/_shared/display-BHIs_Y_j.js.map +1 -0
  118. package/dist/_shared/display-DV7n0KA1.cjs +2 -0
  119. package/dist/_shared/display-DV7n0KA1.cjs.map +1 -0
  120. package/dist/_shared/dropdown-menu-5fFMhKo4.js +147 -0
  121. package/dist/_shared/dropdown-menu-5fFMhKo4.js.map +1 -0
  122. package/dist/_shared/dropdown-menu-B_SCGRL2.cjs +2 -0
  123. package/dist/_shared/dropdown-menu-B_SCGRL2.cjs.map +1 -0
  124. package/dist/_shared/form-sizing-VNEGzvM7.js +42 -0
  125. package/dist/_shared/form-sizing-VNEGzvM7.js.map +1 -0
  126. package/dist/_shared/form-sizing-lBFpJWv4.cjs +2 -0
  127. package/dist/_shared/form-sizing-lBFpJWv4.cjs.map +1 -0
  128. package/dist/_shared/forms-B7LYVbAy.cjs +2 -0
  129. package/dist/_shared/forms-B7LYVbAy.cjs.map +1 -0
  130. package/dist/_shared/forms-C5uZX_kQ.js +3534 -0
  131. package/dist/_shared/forms-C5uZX_kQ.js.map +1 -0
  132. package/dist/_shared/header-B4wGB6Ca.cjs +2 -0
  133. package/dist/_shared/header-B4wGB6Ca.cjs.map +1 -0
  134. package/dist/_shared/header-CWyOry0f.js +447 -0
  135. package/dist/_shared/header-CWyOry0f.js.map +1 -0
  136. package/dist/_shared/hooks-B4Cop5YI.cjs +2 -0
  137. package/dist/_shared/hooks-B4Cop5YI.cjs.map +1 -0
  138. package/dist/_shared/hooks-CFUZJW_S.js +95 -0
  139. package/dist/_shared/hooks-CFUZJW_S.js.map +1 -0
  140. package/dist/_shared/icon-size-CMNigtUu.js +15 -0
  141. package/dist/_shared/icon-size-CMNigtUu.js.map +1 -0
  142. package/dist/_shared/icon-size-D2NnYd0K.cjs +2 -0
  143. package/dist/_shared/icon-size-D2NnYd0K.cjs.map +1 -0
  144. package/dist/_shared/input-BEhrcsk7.js +182 -0
  145. package/dist/_shared/input-BEhrcsk7.js.map +1 -0
  146. package/dist/_shared/input-DGvh-izk.cjs +2 -0
  147. package/dist/_shared/input-DGvh-izk.cjs.map +1 -0
  148. package/dist/_shared/item-BG2iK1sy.cjs +2 -0
  149. package/dist/_shared/item-BG2iK1sy.cjs.map +1 -0
  150. package/dist/_shared/item-D75eGy8G.js +227 -0
  151. package/dist/_shared/item-D75eGy8G.js.map +1 -0
  152. package/dist/_shared/layout-DN8tzvlm.cjs +2 -0
  153. package/dist/_shared/layout-DN8tzvlm.cjs.map +1 -0
  154. package/dist/_shared/layout-DNrUkvzF.js +268 -0
  155. package/dist/_shared/layout-DNrUkvzF.js.map +1 -0
  156. package/dist/_shared/mentions-CWqC8Xds.js +506 -0
  157. package/dist/_shared/mentions-CWqC8Xds.js.map +1 -0
  158. package/dist/_shared/mentions-wtkrL2hX.cjs +2 -0
  159. package/dist/_shared/mentions-wtkrL2hX.cjs.map +1 -0
  160. package/dist/_shared/money-display-BabyaIWb.js +198 -0
  161. package/dist/_shared/money-display-BabyaIWb.js.map +1 -0
  162. package/dist/_shared/money-display-CrNRbByx.cjs +2 -0
  163. package/dist/_shared/money-display-CrNRbByx.cjs.map +1 -0
  164. package/dist/_shared/navigation-9DB-vtGI.js +436 -0
  165. package/dist/_shared/navigation-9DB-vtGI.js.map +1 -0
  166. package/dist/_shared/navigation-DAjFLSv5.cjs +2 -0
  167. package/dist/_shared/navigation-DAjFLSv5.cjs.map +1 -0
  168. package/dist/_shared/overlays-BK0J8zSv.cjs +2 -0
  169. package/dist/_shared/overlays-BK0J8zSv.cjs.map +1 -0
  170. package/dist/_shared/overlays-DKsXufDv.js +735 -0
  171. package/dist/_shared/overlays-DKsXufDv.js.map +1 -0
  172. package/dist/_shared/popover-menu-DXh14PIu.js +93 -0
  173. package/dist/_shared/popover-menu-DXh14PIu.js.map +1 -0
  174. package/dist/_shared/popover-menu-DkjPUZ4v.cjs +2 -0
  175. package/dist/_shared/popover-menu-DkjPUZ4v.cjs.map +1 -0
  176. package/dist/_shared/rich-text-editor-DjZTJzdm.cjs +2 -0
  177. package/dist/_shared/rich-text-editor-DjZTJzdm.cjs.map +1 -0
  178. package/dist/_shared/rich-text-editor-DloyZq46.js +620 -0
  179. package/dist/_shared/rich-text-editor-DloyZq46.js.map +1 -0
  180. package/dist/_shared/settings-AIgixHbB.cjs +2 -0
  181. package/dist/_shared/settings-AIgixHbB.cjs.map +1 -0
  182. package/dist/_shared/settings-D3KdypJk.js +143 -0
  183. package/dist/_shared/settings-D3KdypJk.js.map +1 -0
  184. package/dist/_shared/sidebar-BzBincq3.js +548 -0
  185. package/dist/_shared/sidebar-BzBincq3.js.map +1 -0
  186. package/dist/_shared/sidebar-D5NLbyow.cjs +2 -0
  187. package/dist/_shared/sidebar-D5NLbyow.cjs.map +1 -0
  188. package/dist/_shared/skeleton-Bc_qa5l_.js +256 -0
  189. package/dist/_shared/skeleton-Bc_qa5l_.js.map +1 -0
  190. package/dist/_shared/skeleton-Wq6G0Kya.cjs +2 -0
  191. package/dist/_shared/skeleton-Wq6G0Kya.cjs.map +1 -0
  192. package/dist/_shared/spinner-C-yoZUk-.cjs +2 -0
  193. package/dist/_shared/spinner-C-yoZUk-.cjs.map +1 -0
  194. package/dist/_shared/spinner-CDVWFN0N.js +67 -0
  195. package/dist/_shared/spinner-CDVWFN0N.js.map +1 -0
  196. package/dist/_shared/table-B70kyH2E.js +1377 -0
  197. package/dist/_shared/table-B70kyH2E.js.map +1 -0
  198. package/dist/_shared/table-DQA2m2F0.cjs +2 -0
  199. package/dist/_shared/table-DQA2m2F0.cjs.map +1 -0
  200. package/dist/_shared/textarea-Dx9yEZY2.js +118 -0
  201. package/dist/_shared/textarea-Dx9yEZY2.js.map +1 -0
  202. package/dist/_shared/textarea-rfnSeHHC.cjs +2 -0
  203. package/dist/_shared/textarea-rfnSeHHC.cjs.map +1 -0
  204. package/dist/_shared/typography-C_kCoR1d.js +204 -0
  205. package/dist/_shared/typography-C_kCoR1d.js.map +1 -0
  206. package/dist/_shared/typography-sXFd02zl.cjs +2 -0
  207. package/dist/_shared/typography-sXFd02zl.cjs.map +1 -0
  208. package/dist/_shared/workspace-Bw-k_HXQ.js +357 -0
  209. package/dist/_shared/workspace-Bw-k_HXQ.js.map +1 -0
  210. package/dist/_shared/workspace-CLUsYC5y.cjs +2 -0
  211. package/dist/_shared/workspace-CLUsYC5y.cjs.map +1 -0
  212. package/dist/components/base/accordion/index.cjs +1 -1
  213. package/dist/components/base/accordion/index.js +1 -1
  214. package/dist/components/base/badge/index.cjs +1 -1
  215. package/dist/components/base/badge/index.js +1 -1
  216. package/dist/components/base/buttons/index.cjs +1 -1
  217. package/dist/components/base/buttons/index.js +2 -2
  218. package/dist/components/base/cards/index.cjs +1 -1
  219. package/dist/components/base/cards/index.js +1 -1
  220. package/dist/components/base/carousel/carousel.d.ts.map +1 -1
  221. package/dist/components/base/carousel/index.cjs +1 -1
  222. package/dist/components/base/carousel/index.cjs.map +1 -1
  223. package/dist/components/base/carousel/index.js +98 -97
  224. package/dist/components/base/carousel/index.js.map +1 -1
  225. package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
  226. package/dist/components/base/combobox/index.cjs +1 -1
  227. package/dist/components/base/combobox/index.js +1 -1
  228. package/dist/components/base/command/command.d.ts +1 -1
  229. package/dist/components/base/command/index.cjs +1 -1
  230. package/dist/components/base/command/index.js +1 -1
  231. package/dist/components/base/copyable/index.cjs +1 -1
  232. package/dist/components/base/copyable/index.js +1 -1
  233. package/dist/components/base/currency/index.cjs +1 -1
  234. package/dist/components/base/currency/index.js +1 -1
  235. package/dist/components/base/date-pickers/index.cjs +1 -1
  236. package/dist/components/base/date-pickers/index.js +2 -2
  237. package/dist/components/base/display/alert.d.ts.map +1 -1
  238. package/dist/components/base/display/chart.cjs +1 -1
  239. package/dist/components/base/display/chart.js +1 -1
  240. package/dist/components/base/display/icon-size.d.ts +6 -0
  241. package/dist/components/base/display/icon-size.d.ts.map +1 -0
  242. package/dist/components/base/display/index.cjs +1 -1
  243. package/dist/components/base/display/index.d.ts +1 -0
  244. package/dist/components/base/display/index.d.ts.map +1 -1
  245. package/dist/components/base/display/index.js +10 -9
  246. package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
  247. package/dist/components/base/event-calendar/index.cjs +1 -1
  248. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  249. package/dist/components/base/event-calendar/index.js +4 -4
  250. package/dist/components/base/event-calendar/index.js.map +1 -1
  251. package/dist/components/base/forms/index.cjs +1 -1
  252. package/dist/components/base/forms/index.js +5 -5
  253. package/dist/components/base/item/index.cjs +1 -1
  254. package/dist/components/base/item/index.js +1 -1
  255. package/dist/components/base/item/item.d.ts.map +1 -1
  256. package/dist/components/base/map/index.cjs +1 -1
  257. package/dist/components/base/map/index.cjs.map +1 -1
  258. package/dist/components/base/map/index.js +3 -3
  259. package/dist/components/base/map/index.js.map +1 -1
  260. package/dist/components/base/map/map.d.ts +1 -1
  261. package/dist/components/base/map/map.d.ts.map +1 -1
  262. package/dist/components/base/navigation/dropdown-menu.d.ts +33 -1
  263. package/dist/components/base/navigation/dropdown-menu.d.ts.map +1 -1
  264. package/dist/components/base/navigation/index.cjs +1 -1
  265. package/dist/components/base/navigation/index.js +4 -4
  266. package/dist/components/base/popover-menu/index.cjs +1 -1
  267. package/dist/components/base/popover-menu/index.js +1 -1
  268. package/dist/components/base/spinner/index.cjs +1 -1
  269. package/dist/components/base/spinner/index.js +1 -1
  270. package/dist/components/base/table/index.cjs +1 -1
  271. package/dist/components/base/table/index.js +1 -1
  272. package/dist/components/composed/admin/index.cjs +1 -1
  273. package/dist/components/composed/admin/index.cjs.map +1 -1
  274. package/dist/components/composed/admin/index.js +10 -11
  275. package/dist/components/composed/admin/index.js.map +1 -1
  276. package/dist/components/composed/ai/index.cjs +1 -1
  277. package/dist/components/composed/ai/index.cjs.map +1 -1
  278. package/dist/components/composed/ai/index.js +8 -9
  279. package/dist/components/composed/ai/index.js.map +1 -1
  280. package/dist/components/composed/analytics/index.cjs +1 -1
  281. package/dist/components/composed/analytics/index.cjs.map +1 -1
  282. package/dist/components/composed/analytics/index.js +4 -4
  283. package/dist/components/composed/analytics/index.js.map +1 -1
  284. package/dist/components/composed/cards/index.cjs +1 -1
  285. package/dist/components/composed/cards/index.cjs.map +1 -1
  286. package/dist/components/composed/cards/index.js +13 -15
  287. package/dist/components/composed/cards/index.js.map +1 -1
  288. package/dist/components/composed/commerce/index.cjs +1 -1
  289. package/dist/components/composed/commerce/index.cjs.map +1 -1
  290. package/dist/components/composed/commerce/index.d.ts +2 -0
  291. package/dist/components/composed/commerce/index.d.ts.map +1 -1
  292. package/dist/components/composed/commerce/index.js +1246 -382
  293. package/dist/components/composed/commerce/index.js.map +1 -1
  294. package/dist/components/composed/commerce/inventory-section/index.d.ts +3 -0
  295. package/dist/components/composed/commerce/inventory-section/index.d.ts.map +1 -0
  296. package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts +6 -0
  297. package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts.map +1 -0
  298. package/dist/components/composed/commerce/inventory-section/types.d.ts +85 -0
  299. package/dist/components/composed/commerce/inventory-section/types.d.ts.map +1 -0
  300. package/dist/components/composed/commerce/seo-listing/index.d.ts +4 -0
  301. package/dist/components/composed/commerce/seo-listing/index.d.ts.map +1 -0
  302. package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts +6 -0
  303. package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts.map +1 -0
  304. package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts +6 -0
  305. package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts.map +1 -0
  306. package/dist/components/composed/commerce/seo-listing/types.d.ts +68 -0
  307. package/dist/components/composed/commerce/seo-listing/types.d.ts.map +1 -0
  308. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  309. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  310. package/dist/components/composed/dark-surfaces/index.js +7 -7
  311. package/dist/components/composed/dark-surfaces/index.js.map +1 -1
  312. package/dist/components/composed/data-display/index.cjs +1 -1
  313. package/dist/components/composed/data-display/index.js +1 -1
  314. package/dist/components/composed/navigation/index.cjs +1 -1
  315. package/dist/components/composed/navigation/index.cjs.map +1 -1
  316. package/dist/components/composed/navigation/index.js +5 -6
  317. package/dist/components/composed/navigation/index.js.map +1 -1
  318. package/dist/components/composed/onboarding/index.cjs +1 -1
  319. package/dist/components/composed/onboarding/index.js +3 -3
  320. package/dist/components/composed/timelines/index.cjs +1 -1
  321. package/dist/components/composed/timelines/index.js +3 -3
  322. package/dist/components/features/activities/index.cjs +1 -1
  323. package/dist/components/features/activities/index.js +5 -5
  324. package/dist/components/features/ai-chat/index.cjs +1 -1
  325. package/dist/components/features/ai-chat/index.js +5 -5
  326. package/dist/components/features/card/index.cjs +1 -1
  327. package/dist/components/features/card/index.js +4 -4
  328. package/dist/components/features/comments/index.cjs +1 -1
  329. package/dist/components/features/comments/index.js +2 -2
  330. package/dist/components/features/data-view/index.cjs +1 -1
  331. package/dist/components/features/data-view/index.js +2 -2
  332. package/dist/components/features/event-log/index.cjs +1 -1
  333. package/dist/components/features/event-log/index.js +4 -4
  334. package/dist/components/features/filters/index.cjs +1 -1
  335. package/dist/components/features/filters/index.cjs.map +1 -1
  336. package/dist/components/features/filters/index.js +64 -64
  337. package/dist/components/features/filters/index.js.map +1 -1
  338. package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
  339. package/dist/components/features/global-search/index.cjs +1 -1
  340. package/dist/components/features/global-search/index.js +4 -4
  341. package/dist/components/features/kanban/index.cjs +1 -1
  342. package/dist/components/features/kanban/index.js +3 -3
  343. package/dist/components/features/media-library/index.cjs +1 -1
  344. package/dist/components/features/media-library/index.cjs.map +1 -1
  345. package/dist/components/features/media-library/index.js +230 -206
  346. package/dist/components/features/media-library/index.js.map +1 -1
  347. package/dist/components/features/media-library/media-library.d.ts.map +1 -1
  348. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  349. package/dist/components/features/media-library/media-library.strings.d.ts.map +1 -1
  350. package/dist/components/features/media-library/partials/media-library-partials.d.ts.map +1 -1
  351. package/dist/components/features/mentions/index.cjs +1 -1
  352. package/dist/components/features/mentions/index.js +1 -1
  353. package/dist/components/features/overlays/index.cjs +1 -1
  354. package/dist/components/features/overlays/index.js +1 -1
  355. package/dist/components/features/products/components/index.d.ts +3 -0
  356. package/dist/components/features/products/components/index.d.ts.map +1 -1
  357. package/dist/components/features/products/components/product-options-matrix.d.ts +6 -0
  358. package/dist/components/features/products/components/product-options-matrix.d.ts.map +1 -0
  359. package/dist/components/features/products/components/product-variants-bulk-table.d.ts +6 -0
  360. package/dist/components/features/products/components/product-variants-bulk-table.d.ts.map +1 -0
  361. package/dist/components/features/products/components/product-variants-manager.d.ts +6 -0
  362. package/dist/components/features/products/components/product-variants-manager.d.ts.map +1 -0
  363. package/dist/components/features/products/index.cjs +1 -1
  364. package/dist/components/features/products/index.cjs.map +1 -1
  365. package/dist/components/features/products/index.js +1705 -511
  366. package/dist/components/features/products/index.js.map +1 -1
  367. package/dist/components/features/products/products.strings.d.ts +70 -0
  368. package/dist/components/features/products/products.strings.d.ts.map +1 -1
  369. package/dist/components/features/products/products.types.d.ts +163 -1
  370. package/dist/components/features/products/products.types.d.ts.map +1 -1
  371. package/dist/components/features/resource/index.cjs +1 -1
  372. package/dist/components/features/resource/index.js +5 -5
  373. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  374. package/dist/components/features/rich-text-editor/index.js +1 -1
  375. package/dist/components/features/schema-form/index.cjs +1 -1
  376. package/dist/components/features/schema-form/index.js +8 -8
  377. package/dist/components/features/suggestions/index.cjs +1 -1
  378. package/dist/components/features/suggestions/index.js +1 -1
  379. package/dist/components/features/sync/index.cjs +1 -1
  380. package/dist/components/features/sync/index.js +2 -2
  381. package/dist/components/layout/auth/index.cjs +1 -1
  382. package/dist/components/layout/auth/index.js +1 -1
  383. package/dist/components/layout/containers/index.cjs +1 -1
  384. package/dist/components/layout/containers/index.d.ts +1 -0
  385. package/dist/components/layout/containers/index.d.ts.map +1 -1
  386. package/dist/components/layout/containers/index.js +2 -2
  387. package/dist/components/layout/containers/two-column-layout.d.ts +43 -0
  388. package/dist/components/layout/containers/two-column-layout.d.ts.map +1 -0
  389. package/dist/components/layout/header/index.cjs +1 -1
  390. package/dist/components/layout/header/index.js +1 -1
  391. package/dist/components/layout/hooks/index.cjs +1 -1
  392. package/dist/components/layout/hooks/index.js +1 -1
  393. package/dist/components/layout/index.cjs +1 -1
  394. package/dist/components/layout/index.js +9 -9
  395. package/dist/components/layout/page/index.cjs +1 -1
  396. package/dist/components/layout/page/index.js +1 -1
  397. package/dist/components/layout/page/page-content.d.ts +1 -1
  398. package/dist/components/layout/page/page-content.d.ts.map +1 -1
  399. package/dist/components/layout/settings/index.cjs +1 -1
  400. package/dist/components/layout/settings/index.js +1 -1
  401. package/dist/components/layout/sidebar/index.cjs +1 -1
  402. package/dist/components/layout/sidebar/index.js +2 -2
  403. package/dist/components/layout/workspace/index.cjs +1 -1
  404. package/dist/components/layout/workspace/index.js +1 -1
  405. package/dist/components/typography/index.cjs +1 -1
  406. package/dist/components/typography/index.js +1 -1
  407. package/dist/components/typography/text-link.d.ts +3 -1
  408. package/dist/components/typography/text-link.d.ts.map +1 -1
  409. package/dist/components/typography/text.d.ts.map +1 -1
  410. package/dist/lib/ui-provider/types.d.ts +1 -1
  411. package/dist/lib/ui-provider/types.d.ts.map +1 -1
  412. package/dist/lib/utils.cjs +1 -1
  413. package/dist/lib/utils.cjs.map +1 -1
  414. package/dist/lib/utils.d.ts.map +1 -1
  415. package/dist/lib/utils.js +1 -0
  416. package/dist/lib/utils.js.map +1 -1
  417. package/dist/services/actions/index.cjs +1 -1
  418. package/dist/services/actions/index.js +1 -1
  419. package/dist/showcase/assets/AreaChart-D_z9eYQj.js +6 -0
  420. package/dist/showcase/assets/CompositeItem-BSVzIXzg.js +1 -0
  421. package/dist/showcase/assets/CompositeRoot-Ewl7bgm-.js +1 -0
  422. package/dist/showcase/assets/DialogTrigger-CD-DcY4b.js +1 -0
  423. package/dist/showcase/assets/LabelableContext-BdRVtvs6.js +1 -0
  424. package/dist/showcase/assets/MenuTrigger-B8Y7BUCN.js +1 -0
  425. package/dist/showcase/assets/PreviewLayout-CE0fmzoc.js +1 -0
  426. package/dist/showcase/assets/RadioGroup-Qaf-akL1.js +1 -0
  427. package/dist/showcase/assets/ScrollAreaCorner-BQR87jzh.js +1 -0
  428. package/dist/showcase/assets/Separator-Cymh2jzU.js +1 -0
  429. package/dist/showcase/assets/ToolbarRootContext-P5BSzPlo.js +1 -0
  430. package/dist/showcase/assets/accordion-BGUvdQ5Z.js +171 -0
  431. package/dist/showcase/assets/accordion-variants-B56z6tQI.js +1 -0
  432. package/dist/showcase/assets/action-menu-C3DOQfP4.js +1 -0
  433. package/dist/showcase/assets/actions-DHG4zJRu.js +38 -0
  434. package/dist/showcase/assets/actions-IxPK0biY.js +310 -0
  435. package/dist/showcase/assets/activities-TK5Lr8Wb.js +500 -0
  436. package/dist/showcase/assets/activities-feed-card-tgQKimyh.js +1 -0
  437. package/dist/showcase/assets/admin-BQrDKNJa.js +140 -0
  438. package/dist/showcase/assets/ai-artifact-Cv7LTw1V.js +2 -0
  439. package/dist/showcase/assets/ai-chat-Dmg2Tqf1.js +568 -0
  440. package/dist/showcase/assets/ai-elements-BmokxSCy.js +387 -0
  441. package/dist/showcase/assets/ai-tool-call-6qESA6We.js +1 -0
  442. package/dist/showcase/assets/ai-xShhEkrM.js +207 -0
  443. package/dist/showcase/assets/alert--MONSwFW.js +1 -0
  444. package/dist/showcase/assets/alert-BuMNu_BZ.js +62 -0
  445. package/dist/showcase/assets/alert-z1RP5MhA.js +93 -0
  446. package/dist/showcase/assets/api-key-list-BhmXUJty.js +73 -0
  447. package/dist/showcase/assets/api-key-list-hPTN6gwa.js +1 -0
  448. package/dist/showcase/assets/app-sidebar-CY-XpIu6.js +1 -0
  449. package/dist/showcase/assets/arrow-down-D0XbhSDi.js +1 -0
  450. package/dist/showcase/assets/arrow-left-DBxsWbzL.js +1 -0
  451. package/dist/showcase/assets/arrow-right-Dk80zKWl.js +1 -0
  452. package/dist/showcase/assets/arrow-up-BiZ_VvpP.js +1 -0
  453. package/dist/showcase/assets/arrow-up-right-OdmPQEwY.js +1 -0
  454. package/dist/showcase/assets/avatar-BThv_quW.js +1 -0
  455. package/dist/showcase/assets/avatar-Bcy2snIC.js +67 -0
  456. package/dist/showcase/assets/avatar-Ca3to6dB.js +57 -0
  457. package/dist/showcase/assets/avatar-Dba0yVei.js +1 -0
  458. package/dist/showcase/assets/badge-A1w2eIaM.js +31 -0
  459. package/dist/showcase/assets/badge-check-DyqZ9Ff8.js +1 -0
  460. package/dist/showcase/assets/bell-DyqsYdKK.js +1 -0
  461. package/dist/showcase/assets/boolean-indicator-gaFjXuY1.js +1 -0
  462. package/dist/showcase/assets/bot-BGQvS_p9.js +1 -0
  463. package/dist/showcase/assets/box-BoFEAPr6.js +1 -0
  464. package/dist/showcase/assets/braces-D88Ve7g-.js +1 -0
  465. package/dist/showcase/assets/brain-hIv2TdLu.js +1 -0
  466. package/dist/showcase/assets/brand-CiWM8HzB.js +36 -0
  467. package/dist/showcase/assets/breadcrumb-DlHNoCer.js +1 -0
  468. package/dist/showcase/assets/breadcrumb-Dy-UbgK5.js +52 -0
  469. package/dist/showcase/assets/breadcrumbs-BoXmoDHt.js +1 -0
  470. package/dist/showcase/assets/briefcase-BeN7dk_G.js +1 -0
  471. package/dist/showcase/assets/building-2-ICycTKXZ.js +1 -0
  472. package/dist/showcase/assets/button-BADo_inb.js +44 -0
  473. package/dist/showcase/assets/button-group-BGkXY3HC.js +1 -0
  474. package/dist/showcase/assets/buttons-3z50eWMp.js +272 -0
  475. package/dist/showcase/assets/calendar-BAfoc476.js +1 -0
  476. package/dist/showcase/assets/calendar-DNxQUmlO.js +16 -0
  477. package/dist/showcase/assets/calendar-days-D86Fv-vG.js +1 -0
  478. package/dist/showcase/assets/calendar-pjS8iCZE.js +1 -0
  479. package/dist/showcase/assets/camera-DxWfctRe.js +1 -0
  480. package/dist/showcase/assets/card-BazLaDA9.js +188 -0
  481. package/dist/showcase/assets/card-F8Ona144.js +1 -0
  482. package/dist/showcase/assets/card-checkbox-group-DtK7aVPU.js +1 -0
  483. package/dist/showcase/assets/card-primitives-DzqLvy5f.js +1 -0
  484. package/dist/showcase/assets/card-radio-group-EjPkSg-w.js +1 -0
  485. package/dist/showcase/assets/cards--V2D7Sft.js +354 -0
  486. package/dist/showcase/assets/carousel-BNmTHQiN.js +452 -0
  487. package/dist/showcase/assets/cell-renderers-BdpeNGHs.js +1 -0
  488. package/dist/showcase/assets/chart-column-CJx3qWPs.js +1 -0
  489. package/dist/showcase/assets/chart-p7dUP6Mo.js +358 -0
  490. package/dist/showcase/assets/checkbox-BBxn_hxI.js +1 -0
  491. package/dist/showcase/assets/checkbox-BEyESyQ2.js +1 -0
  492. package/dist/showcase/assets/chevron-down-mjLUdP6b.js +1 -0
  493. package/dist/showcase/assets/chevron-left-DOofVtEd.js +1 -0
  494. package/dist/showcase/assets/chevron-up-BJk6z8Fg.js +1 -0
  495. package/dist/showcase/assets/chevrons-up-down-C-9zUpl_.js +1 -0
  496. package/dist/showcase/assets/circle-OmLq29jq.js +1 -0
  497. package/dist/showcase/assets/circle-alert-DSpR2pdl.js +1 -0
  498. package/dist/showcase/assets/circle-check-BjuHEm7p.js +1 -0
  499. package/dist/showcase/assets/circle-check-big-BuYdgE3Q.js +1 -0
  500. package/dist/showcase/assets/circle-dot-DlYGMuaF.js +1 -0
  501. package/dist/showcase/assets/circle-question-mark-BlgRDDu3.js +1 -0
  502. package/dist/showcase/assets/circle-x-BavQ4wuc.js +1 -0
  503. package/dist/showcase/assets/clock-3-CzeN1Iwk.js +1 -0
  504. package/dist/showcase/assets/clock-CZYS08d1.js +1 -0
  505. package/dist/showcase/assets/code-xml-D4NwoTpD.js +1 -0
  506. package/dist/showcase/assets/collapsible-BtawbO_2.js +1 -0
  507. package/dist/showcase/assets/collapsible-CJXE3z1T.js +27 -0
  508. package/dist/showcase/assets/collapsible-ws3VKPg9.js +1 -0
  509. package/dist/showcase/assets/combobox-Btpk7-vH.js +685 -0
  510. package/dist/showcase/assets/command-CoiVI2_b.js +1 -0
  511. package/dist/showcase/assets/command-Dkn9XqF2.js +1 -0
  512. package/dist/showcase/assets/comment-composer-BNnVQo1O.js +1 -0
  513. package/dist/showcase/assets/comment-item-BiIgcrPQ.js +1 -0
  514. package/dist/showcase/assets/comments-CvzWz23L.js +357 -0
  515. package/dist/showcase/assets/commerce-CBHLQF8q.js +19 -0
  516. package/dist/showcase/assets/commerce-address-card-Bqm0FQkG.js +33 -0
  517. package/dist/showcase/assets/commerce-cart-summary-BtGCOEun.js +43 -0
  518. package/dist/showcase/assets/commerce-coupon-input-I3FY6pgV.js +11 -0
  519. package/dist/showcase/assets/commerce-discount-stack-CWqyobuL.js +17 -0
  520. package/dist/showcase/assets/commerce-inventory-section-rBtMNLTt.js +123 -0
  521. package/dist/showcase/assets/commerce-loyalty-points-ne7c2ObQ.js +19 -0
  522. package/dist/showcase/assets/commerce-order-status-eLtUC1iE.js +21 -0
  523. package/dist/showcase/assets/commerce-payment-method-B3yFyhpS.js +17 -0
  524. package/dist/showcase/assets/commerce-refund-status-C1pzTSus.js +17 -0
  525. package/dist/showcase/assets/commerce-seo-listing-CBk_c8ru.js +61 -0
  526. package/dist/showcase/assets/commerce-shipment-tracking-auiKGGyV.js +24 -0
  527. package/dist/showcase/assets/commerce-subscription-summary-BCX4WxbS.js +25 -0
  528. package/dist/showcase/assets/commerce-tax-breakdown-D4F5dOjL.js +19 -0
  529. package/dist/showcase/assets/commerce-upcoming-booking-qlWKp0kq.js +20 -0
  530. package/dist/showcase/assets/commerce-voucher-entry-CqCuoKHq.js +19 -0
  531. package/dist/showcase/assets/composite-DeYDU7hg.js +1 -0
  532. package/dist/showcase/assets/conditional-rendering-CFHxzngX.js +1 -0
  533. package/dist/showcase/assets/contact-card-CxVeuwp_.js +65 -0
  534. package/dist/showcase/assets/content-container-CJN01OtO.js +1 -0
  535. package/dist/showcase/assets/copyable-DajG-Sgx.js +1 -0
  536. package/dist/showcase/assets/copyable-zOzqOOBl.js +96 -0
  537. package/dist/showcase/assets/course-card-DO8z-KeM.js +77 -0
  538. package/dist/showcase/assets/cpu-C8IgjvoP.js +1 -0
  539. package/dist/showcase/assets/credit-card-XYEEHtzk.js +1 -0
  540. package/dist/showcase/assets/css-variables-BglvDaVO.js +1223 -0
  541. package/dist/showcase/assets/currency-Bso6kejw.js +148 -0
  542. package/dist/showcase/assets/dark-surfaces-5WTjzxYN.js +90 -0
  543. package/dist/showcase/assets/data-view-B7uRWXOO.js +4 -0
  544. package/dist/showcase/assets/data-view-C4bGuOlY.js +124 -0
  545. package/dist/showcase/assets/database-CZLgFKRy.js +1 -0
  546. package/dist/showcase/assets/date-block-BicWaKPj.js +1 -0
  547. package/dist/showcase/assets/date-block-yRFY8Ne5.js +1 -0
  548. package/dist/showcase/assets/date-picker-CskCoiwf.js +1 -0
  549. package/dist/showcase/assets/date-pickers-fcqdsvef.js +73 -0
  550. package/dist/showcase/assets/dense-info-Dg38xVsF.js +106 -0
  551. package/dist/showcase/assets/design-system-consistency-DFa3RNWm.js +264 -0
  552. package/dist/showcase/assets/dialog-C4fhqXD0.js +1 -0
  553. package/dist/showcase/assets/dialog-CN_gfVV2.js +1 -0
  554. package/dist/showcase/assets/dialog-CoJdLYZ8.js +1 -0
  555. package/dist/showcase/assets/display-utilities-DB0eXAdH.js +4 -0
  556. package/dist/showcase/assets/display-utilities.examples-ez3DfdgN.js +309 -0
  557. package/dist/showcase/assets/dist-5H2NtsLp.js +45 -0
  558. package/dist/showcase/assets/dist-SJMpFlRc.js +1 -0
  559. package/dist/showcase/assets/dollar-sign-LBLhl0Y2.js +1 -0
  560. package/dist/showcase/assets/download-BkOWnQEj.js +1 -0
  561. package/dist/showcase/assets/dropdown-menu-5yqchTEF.js +1 -0
  562. package/dist/showcase/assets/dropzone-CJHqIcHB.js +1 -0
  563. package/dist/showcase/assets/earth-BGrx2u2i.js +1 -0
  564. package/dist/showcase/assets/ellipsis-Dumpj4aE.js +1 -0
  565. package/dist/showcase/assets/ellipsis-vertical-h1O9pibc.js +1 -0
  566. package/dist/showcase/assets/empty-Cc8JP5--.js +1 -0
  567. package/dist/showcase/assets/empty-item-C-v-Akyi.js +49 -0
  568. package/dist/showcase/assets/empty-state-B7BQDoeL.js +1 -0
  569. package/dist/showcase/assets/empty-state-BSvZNFnQ.js +190 -0
  570. package/dist/showcase/assets/enhanced-activities-D7g7ZD9m.js +357 -0
  571. package/dist/showcase/assets/enhanced-combobox-4Olgu--e.js +1 -0
  572. package/dist/showcase/assets/esm-CFFDcW-Z.js +2 -0
  573. package/dist/showcase/assets/event-calendar-vdFWcI49.js +138 -0
  574. package/dist/showcase/assets/event-log-BbHM_3Ko.js +330 -0
  575. package/dist/showcase/assets/example-BsDQngs7.js +1 -0
  576. package/dist/showcase/assets/external-link-BvVwsJxR.js +1 -0
  577. package/dist/showcase/assets/eye-CAeo-GNe.js +1 -0
  578. package/dist/showcase/assets/feature-announcement-7hZGrJd6.js +34 -0
  579. package/dist/showcase/assets/file-D4d3b9bx.js +1 -0
  580. package/dist/showcase/assets/file-text-C59ToXmU.js +1 -0
  581. package/dist/showcase/assets/filter-layout-BjoG6qxP.js +1 -0
  582. package/dist/showcase/assets/filters-CrE_UGbo.js +139 -0
  583. package/dist/showcase/assets/fixtures-ClOCQD2a.js +1 -0
  584. package/dist/showcase/assets/flag-CuF52WEl.js +1 -0
  585. package/dist/showcase/assets/folder-open-BLLtgh4E.js +1 -0
  586. package/dist/showcase/assets/form-field-D5kwgD4P.js +1 -0
  587. package/dist/showcase/assets/form-sizing-Bv0A0Oi0.js +1 -0
  588. package/dist/showcase/assets/format-LvvHefMj.js +1 -0
  589. package/dist/showcase/assets/forms-Ck6hPzLP.js +915 -0
  590. package/dist/showcase/assets/funnel-Bvp5cFZt.js +1 -0
  591. package/dist/showcase/assets/generic-Cownd_Wk.js +1 -0
  592. package/dist/showcase/assets/getPseudoElementBounds-CPnjAO3K.js +1 -0
  593. package/dist/showcase/assets/gift-BCQpmV33.js +1 -0
  594. package/dist/showcase/assets/giftcard-cards-B_78Meny.js +85 -0
  595. package/dist/showcase/assets/git-branch-r0dDGCKy.js +1 -0
  596. package/dist/showcase/assets/global-search-DD9cGOt5.js +1 -0
  597. package/dist/showcase/assets/global-search-fTKzzx8k.js +215 -0
  598. package/dist/showcase/assets/globe-RF5bwiar.js +1 -0
  599. package/dist/showcase/assets/gradient-card-BDJes3UK.js +58 -0
  600. package/dist/showcase/assets/grip-vertical-qqe2NqfZ.js +1 -0
  601. package/dist/showcase/assets/hash-D9_KYvHs.js +1 -0
  602. package/dist/showcase/assets/header-XNCAB6Rs.js +1 -0
  603. package/dist/showcase/assets/header-notifications-BdWsVoN3.js +1 -0
  604. package/dist/showcase/assets/heart-C56rAanb.js +1 -0
  605. package/dist/showcase/assets/hooks-fDydjf6M.js +220 -0
  606. package/dist/showcase/assets/house-DbYM6er_.js +1 -0
  607. package/dist/showcase/assets/icon-badge-DWQE6dAm.js +37 -0
  608. package/dist/showcase/assets/icon-badge-ruuI6tt0.js +1 -0
  609. package/dist/showcase/assets/icon-size-BHn0d6Zp.js +1 -0
  610. package/dist/showcase/assets/image-DCpC2weW.js +1 -0
  611. package/dist/showcase/assets/inbox-cvR2MbZq.js +1 -0
  612. package/dist/showcase/assets/index-B4sKWDcN.js +10 -0
  613. package/dist/showcase/assets/index-Dy3INIq2.css +2 -0
  614. package/dist/showcase/assets/inertValue-DhXA8ytu.js +1 -0
  615. package/dist/showcase/assets/info-DXwnIz56.js +1 -0
  616. package/dist/showcase/assets/inline-stat-C9Syz6in.js +1 -0
  617. package/dist/showcase/assets/inline-stat-CDcWILUM.js +15 -0
  618. package/dist/showcase/assets/input-CLQIEOQ4.js +1 -0
  619. package/dist/showcase/assets/input-D70ed8oB.js +1 -0
  620. package/dist/showcase/assets/input-group-CMJ2yUuD.js +47 -0
  621. package/dist/showcase/assets/input-group-DwZov3Y6.js +1 -0
  622. package/dist/showcase/assets/inputs-DQWbPvC8.js +155 -0
  623. package/dist/showcase/assets/installation-B2BcSkJr.js +134 -0
  624. package/dist/showcase/assets/invoice-header-Ds4A6mLs.js +36 -0
  625. package/dist/showcase/assets/invoice-items-LFYeS0eR.js +36 -0
  626. package/dist/showcase/assets/invoice-mini-BMVm8x43.js +14 -0
  627. package/dist/showcase/assets/invoice-table-BVZ-PtSC.js +30 -0
  628. package/dist/showcase/assets/isSameDay-BYK9pmDX.js +1 -0
  629. package/dist/showcase/assets/isToday-B3-xb910.js +1 -0
  630. package/dist/showcase/assets/italic-CPSVPc63.js +1 -0
  631. package/dist/showcase/assets/item-KsGEgVjl.js +1 -0
  632. package/dist/showcase/assets/item-WOhHNpnr.js +1 -0
  633. package/dist/showcase/assets/item-avTNp1z7.js +140 -0
  634. package/dist/showcase/assets/kanban-DwVW3Lab.js +188 -0
  635. package/dist/showcase/assets/key-round-CNEqnMGG.js +1 -0
  636. package/dist/showcase/assets/label-BZzl85ev.js +1 -0
  637. package/dist/showcase/assets/languages-BWquWXSu.js +1 -0
  638. package/dist/showcase/assets/layers-hYbCFSpT.js +1 -0
  639. package/dist/showcase/assets/layout-app-shell-BRLO7lFp.js +608 -0
  640. package/dist/showcase/assets/layout-auth-ysobcsYs.js +790 -0
  641. package/dist/showcase/assets/layout-containers-BoVYkBOk.js +141 -0
  642. package/dist/showcase/assets/layout-header-BnkgzPgS.js +203 -0
  643. package/dist/showcase/assets/layout-page-CdzQQr2_.js +315 -0
  644. package/dist/showcase/assets/layout-primitives-BXP_nFQX.js +34 -0
  645. package/dist/showcase/assets/layout-sidebar-tPHppANn.js +224 -0
  646. package/dist/showcase/assets/layout-users-DgChX6ig.js +117 -0
  647. package/dist/showcase/assets/layout-workspace-u1kkLDCd.js +191 -0
  648. package/dist/showcase/assets/lib-VG1Lf4Lk.js +1 -0
  649. package/dist/showcase/assets/list-checks-CUXbiTmk.js +1 -0
  650. package/dist/showcase/assets/lock-BwI_fNQW.js +1 -0
  651. package/dist/showcase/assets/lock-keyhole-DKi16lNp.js +1 -0
  652. package/dist/showcase/assets/mail-BlH-8y33.js +1 -0
  653. package/dist/showcase/assets/mail-check-DrNT7RWT.js +1 -0
  654. package/dist/showcase/assets/map-BKztQq4-.js +124 -0
  655. package/dist/showcase/assets/map-pin-BwGJCGY8.js +1 -0
  656. package/dist/showcase/assets/media-library-CUI_IPkM.js +699 -0
  657. package/dist/showcase/assets/mention-inline-suggestions-BIIRKRpU.js +1 -0
  658. package/dist/showcase/assets/mentions-CTkcQNFc.js +138 -0
  659. package/dist/showcase/assets/menus-DilZRggQ.js +171 -0
  660. package/dist/showcase/assets/message-square-Cjuladix.js +1 -0
  661. package/dist/showcase/assets/metadata-list-C6CF85o9.js +1 -0
  662. package/dist/showcase/assets/metadata-list-PqngP9QU.js +286 -0
  663. package/dist/showcase/assets/metric-C5Wrr90_.js +1 -0
  664. package/dist/showcase/assets/metric-bar-CIesI_gw.js +1 -0
  665. package/dist/showcase/assets/metric-grid-FlL7atag.js +1 -0
  666. package/dist/showcase/assets/metric-trend-chip-DxTiaCTB.js +1 -0
  667. package/dist/showcase/assets/metrics-analytics-bar-YabnSIOP.js +44 -0
  668. package/dist/showcase/assets/metrics-analytics-cards-Buas8exV.js +50 -0
  669. package/dist/showcase/assets/metrics-comparison-Jx1WGPZL.js +76 -0
  670. package/dist/showcase/assets/metrics-heatmap-C5cB95P9.js +27 -0
  671. package/dist/showcase/assets/metrics-inline-badge-D7r40gFm.js +17 -0
  672. package/dist/showcase/assets/metrics-kpi-row-CweMAqSm.js +31 -0
  673. package/dist/showcase/assets/metrics-micro-grid-UUa2fUGF.js +42 -0
  674. package/dist/showcase/assets/metrics-overview-eGnNPvwF.js +192 -0
  675. package/dist/showcase/assets/metrics-stat-cards-CEcX0zqZ.js +54 -0
  676. package/dist/showcase/assets/minus-CVVsGq91.js +1 -0
  677. package/dist/showcase/assets/money-display-Chu4t6MY.js +1 -0
  678. package/dist/showcase/assets/money-display-DNs6PXCm.js +3 -0
  679. package/dist/showcase/assets/month-year-picker-B0odiuhf.js +1 -0
  680. package/dist/showcase/assets/navigation-CQwt1f4b.js +90 -0
  681. package/dist/showcase/assets/navigation-KQxXtiL6.js +231 -0
  682. package/dist/showcase/assets/navigation-extras-2uJbGPhJ.js +43 -0
  683. package/dist/showcase/assets/notification-banner-Cx1Qm0ij.js +1 -0
  684. package/dist/showcase/assets/onboarding-checklist-CAHajXzP.js +119 -0
  685. package/dist/showcase/assets/overflow-tab-bar-gNULx5Wr.js +1 -0
  686. package/dist/showcase/assets/overlays-CaSVa-L2.js +159 -0
  687. package/dist/showcase/assets/overlays-zjTanrAP.js +408 -0
  688. package/dist/showcase/assets/overview-EZ_RMkeD.js +184 -0
  689. package/dist/showcase/assets/package-CqQQqj6Y.js +1 -0
  690. package/dist/showcase/assets/package-check-Nqr5Lv95.js +1 -0
  691. package/dist/showcase/assets/page-BTXFFFwT.js +1 -0
  692. package/dist/showcase/assets/page-action-button-NJqE-qP0.js +1 -0
  693. package/dist/showcase/assets/page-header-AFTuoGVw.js +1 -0
  694. package/dist/showcase/assets/pagination-B1Ewc7Co.js +1 -0
  695. package/dist/showcase/assets/pagination-DOdLcTiT.js +42 -0
  696. package/dist/showcase/assets/paperclip-D0oBI19t.js +1 -0
  697. package/dist/showcase/assets/password-input-C5MrNrHm.js +1 -0
  698. package/dist/showcase/assets/pencil-DdCEPDLe.js +1 -0
  699. package/dist/showcase/assets/phone-BdGmQ_eI.js +1 -0
  700. package/dist/showcase/assets/placeholder-pattern-BnyJukU0.js +1 -0
  701. package/dist/showcase/assets/plus-Dp_nZNjk.js +1 -0
  702. package/dist/showcase/assets/popover-BP4R2w67.js +1 -0
  703. package/dist/showcase/assets/popover-DfGXC2pN.js +1 -0
  704. package/dist/showcase/assets/popover-menu-DGkCA4YC.js +1 -0
  705. package/dist/showcase/assets/product-empty-state-CKylTX_h.js +1 -0
  706. package/dist/showcase/assets/product-option-action-menu-vqslODBe.js +1 -0
  707. package/dist/showcase/assets/product-rows-CWy63Dk5.js +1 -0
  708. package/dist/showcase/assets/product-structure-card-EJY038tP.js +1 -0
  709. package/dist/showcase/assets/product-variant-action-menu-CnRJscP3.js +1 -0
  710. package/dist/showcase/assets/products-jpCjHLbZ.js +61 -0
  711. package/dist/showcase/assets/progress-D19PRprP.js +1 -0
  712. package/dist/showcase/assets/progress-UbtWRfF2.js +18 -0
  713. package/dist/showcase/assets/progress-twHfoY8k.js +1 -0
  714. package/dist/showcase/assets/props-table-aynAz90t.js +1 -0
  715. package/dist/showcase/assets/props.generated-IUhT2lh_.json +42950 -0
  716. package/dist/showcase/assets/qr-code-ywR6kVzD.js +1 -0
  717. package/dist/showcase/assets/quote-BFMPQa3L.js +1 -0
  718. package/dist/showcase/assets/receipt-CcTseXcy.js +1 -0
  719. package/dist/showcase/assets/receipt-text-C9BMAbTL.js +1 -0
  720. package/dist/showcase/assets/refinement-guide-lotMKye4.js +189 -0
  721. package/dist/showcase/assets/refresh-cw-DpfoVhbc.js +1 -0
  722. package/dist/showcase/assets/resolveValueLabel-mzTN-8j9.js +1 -0
  723. package/dist/showcase/assets/resource-CwHVDrOk.js +1 -0
  724. package/dist/showcase/assets/resource-kPziVtVy.js +139 -0
  725. package/dist/showcase/assets/resource-selector-card-xIysiHOg.js +43 -0
  726. package/dist/showcase/assets/rich-text-editor-Bi6stpAW.js +124 -0
  727. package/dist/showcase/assets/rich-text-editor-DggGI4Dj.js +143 -0
  728. package/dist/showcase/assets/rotate-ccw-Uau0Jm3_.js +1 -0
  729. package/dist/showcase/assets/route-Dj29lOBc.js +1 -0
  730. package/dist/showcase/assets/save-j-PKUm-B.js +1 -0
  731. package/dist/showcase/assets/schema-form-D4kfmM1o.js +327 -0
  732. package/dist/showcase/assets/scroll-area-CK1S6JpQ.js +1 -0
  733. package/dist/showcase/assets/scroll-area-Di7TDfFD.js +32 -0
  734. package/dist/showcase/assets/section-C_rLy6Zn.js +1 -0
  735. package/dist/showcase/assets/select-BRC14Sd3.js +1 -0
  736. package/dist/showcase/assets/select-J0hPSc5B.js +1 -0
  737. package/dist/showcase/assets/send-BnVbRsaN.js +1 -0
  738. package/dist/showcase/assets/separator-7gHhV7ed.js +1 -0
  739. package/dist/showcase/assets/separator-CjWigMul.js +1 -0
  740. package/dist/showcase/assets/separator-Dpo134G3.js +28 -0
  741. package/dist/showcase/assets/separator-JYQ5rY8E.js +1 -0
  742. package/dist/showcase/assets/settings-2-D06IRW2d.js +1 -0
  743. package/dist/showcase/assets/settings-YDwquOPS.js +1 -0
  744. package/dist/showcase/assets/sheet-O9T8bfRr.js +1 -0
  745. package/dist/showcase/assets/shield-Cebk5nXH.js +1 -0
  746. package/dist/showcase/assets/shield-alert-BldSpQ1t.js +1 -0
  747. package/dist/showcase/assets/shield-check-CNudpzdR.js +1 -0
  748. package/dist/showcase/assets/shopping-bag-BuHsmxnN.js +1 -0
  749. package/dist/showcase/assets/showcase-B1BPgzRP.js +132 -0
  750. package/dist/showcase/assets/sidebar-DPVgEwE0.js +1 -0
  751. package/dist/showcase/assets/sidebar.context-CYk51BQ5.js +1 -0
  752. package/dist/showcase/assets/skeleton-CrB6dGV4.js +29 -0
  753. package/dist/showcase/assets/skeleton-DMWrHdVi.js +1 -0
  754. package/dist/showcase/assets/skeleton-IBZSxxTq.js +1 -0
  755. package/dist/showcase/assets/skeleton-OK5SgmlA.js +1 -0
  756. package/dist/showcase/assets/slider-DMLIlQeO.js +1 -0
  757. package/dist/showcase/assets/smart-card-CwDYx0xj.js +1 -0
  758. package/dist/showcase/assets/sonner-Dpe1Nwfb.js +22 -0
  759. package/dist/showcase/assets/sortable.esm-BSC2lHxr.js +5 -0
  760. package/dist/showcase/assets/sparkles-BDnbTUMq.js +1 -0
  761. package/dist/showcase/assets/spinner-BZ0h-j9y.js +49 -0
  762. package/dist/showcase/assets/spinner-TNaSAQh7.js +30 -0
  763. package/dist/showcase/assets/spinner-k76a4i_M.js +1 -0
  764. package/dist/showcase/assets/square-pen-Cn-sFtCo.js +1 -0
  765. package/dist/showcase/assets/stacked-avatars-Ds8eV_Nx.js +1 -0
  766. package/dist/showcase/assets/star-BzQGhFDT.js +1 -0
  767. package/dist/showcase/assets/startOfDay-BfIUGWW-.js +1 -0
  768. package/dist/showcase/assets/styles-BleHZ-uX.js +1 -0
  769. package/dist/showcase/assets/suggestions-CsrJSY__.js +126 -0
  770. package/dist/showcase/assets/support-rail-C_fc_C1j.js +26 -0
  771. package/dist/showcase/assets/switch-BEfD8lic.js +1 -0
  772. package/dist/showcase/assets/switch-BOlIXIn9.js +1 -0
  773. package/dist/showcase/assets/switch-card-CCJ-MaRI.js +1 -0
  774. package/dist/showcase/assets/sync-vACCm2ND.js +124 -0
  775. package/dist/showcase/assets/table-CeZy8iT0.js +686 -0
  776. package/dist/showcase/assets/table-DPpHEvR_.js +1 -0
  777. package/dist/showcase/assets/table-actions-C9J5piiU.js +1 -0
  778. package/dist/showcase/assets/tabs-Ca6ldTWi.js +1 -0
  779. package/dist/showcase/assets/tabs-DGP5RvNm.js +19 -0
  780. package/dist/showcase/assets/tags-input-BOemEMZS.js +1 -0
  781. package/dist/showcase/assets/text-button-C8qZqcCy.js +1 -0
  782. package/dist/showcase/assets/text-link-BFYPeXTq.js +1 -0
  783. package/dist/showcase/assets/textarea-DcCHHuP-.js +1 -0
  784. package/dist/showcase/assets/textarea-RUqV9hNm.js +1 -0
  785. package/dist/showcase/assets/throttle-alert-Sf7FjTvh.js +1 -0
  786. package/dist/showcase/assets/timelines-nQ8shLIn.js +200 -0
  787. package/dist/showcase/assets/toggle-group-k5nqOfUW.js +1 -0
  788. package/dist/showcase/assets/toggles-E80ufOk5.js +71 -0
  789. package/dist/showcase/assets/toggles-group-vaJ63gg9.js +32 -0
  790. package/dist/showcase/assets/tooltip-DIvBe7hb.js +31 -0
  791. package/dist/showcase/assets/trash-2-C-6T17-B.js +1 -0
  792. package/dist/showcase/assets/trending-up-DRyRbFnA.js +1 -0
  793. package/dist/showcase/assets/truck-BE6OFjJs.js +1 -0
  794. package/dist/showcase/assets/typography-i6Zhj3TO.js +223 -0
  795. package/dist/showcase/assets/ui-badge-MBQsz2Mn.js +28 -0
  796. package/dist/showcase/assets/ui-card-jaEeRDe5.js +30 -0
  797. package/dist/showcase/assets/ui-table-CbmOEWVu.js +42 -0
  798. package/dist/showcase/assets/upload-tray-D4aE56cX.js +138 -0
  799. package/dist/showcase/assets/use-layout-link-DpqFiDf-.js +1 -0
  800. package/dist/showcase/assets/useAriaLabelledBy-DSKQpAlQ.js +1 -0
  801. package/dist/showcase/assets/useCollapsiblePanel-DL6IpVQS.js +1 -0
  802. package/dist/showcase/assets/useCompositeItem-jckozrpu.js +1 -0
  803. package/dist/showcase/assets/useCompositeListItem-Ce0eZtsp.js +1 -0
  804. package/dist/showcase/assets/useLabelableId-Bs8clfkJ.js +1 -0
  805. package/dist/showcase/assets/useOpenInteractionType-KBhpVaur.js +1 -0
  806. package/dist/showcase/assets/useRender-Bn5cjIfs.js +1 -0
  807. package/dist/showcase/assets/useTriggerFocusGuards-D5Cl055z.js +1 -0
  808. package/dist/showcase/assets/useValueChanged-B-czUWmg.js +1 -0
  809. package/dist/showcase/assets/user-C7ORJkSr.js +1 -0
  810. package/dist/showcase/assets/user-plus-O410ITvy.js +1 -0
  811. package/dist/showcase/assets/users-BlcUaVEY.js +1 -0
  812. package/dist/showcase/assets/variant-details-BJ0OtpeL.js +50 -0
  813. package/dist/showcase/assets/variant-management-pTZ83MM_.js +209 -0
  814. package/dist/showcase/assets/vendor-profile-F2EP-AGx.js +37 -0
  815. package/dist/showcase/assets/video-fYZEPex_.js +1 -0
  816. package/dist/showcase/assets/visually-hidden-C1KAHG63.js +1 -0
  817. package/dist/showcase/assets/weight-input-_wl5mPGA.js +1 -0
  818. package/dist/showcase/assets/wrench-BzqNpztP.js +1 -0
  819. package/dist/showcase/assets/x-C5_SzMQM.js +1 -0
  820. package/dist/showcase/assets/zap-DdInHaAD.js +1 -0
  821. package/dist/showcase/index.html +2 -2
  822. package/dist/style.css +1 -1
  823. package/package.json +1 -1
  824. package/src/css/tokens/components.css +17 -2
  825. package/src/css/tokens/foundation.css +4 -2
  826. package/dist/_shared/accordion-8B4OFqiT.cjs +0 -2
  827. package/dist/_shared/accordion-8B4OFqiT.cjs.map +0 -1
  828. package/dist/_shared/accordion-DlpTSZ3p.js +0 -135
  829. package/dist/_shared/accordion-DlpTSZ3p.js.map +0 -1
  830. package/dist/_shared/action-menu-BYrYdpkR.cjs +0 -2
  831. package/dist/_shared/action-menu-BYrYdpkR.cjs.map +0 -1
  832. package/dist/_shared/action-menu-CYwMZX-b.js +0 -96
  833. package/dist/_shared/action-menu-CYwMZX-b.js.map +0 -1
  834. package/dist/_shared/ai-artifact-Cv8VBibf.cjs +0 -3
  835. package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +0 -1
  836. package/dist/_shared/ai-artifact-DwfXQuh4.js +0 -1099
  837. package/dist/_shared/ai-artifact-DwfXQuh4.js.map +0 -1
  838. package/dist/_shared/auth-Cz5ci18c.cjs +0 -2
  839. package/dist/_shared/auth-Cz5ci18c.cjs.map +0 -1
  840. package/dist/_shared/auth-DDWsgFUL.js +0 -643
  841. package/dist/_shared/auth-DDWsgFUL.js.map +0 -1
  842. package/dist/_shared/badge-C65rt1M9.cjs +0 -2
  843. package/dist/_shared/badge-C65rt1M9.cjs.map +0 -1
  844. package/dist/_shared/badge-r8ae66Vd.js +0 -110
  845. package/dist/_shared/badge-r8ae66Vd.js.map +0 -1
  846. package/dist/_shared/breadcrumbs-CuT0YIfo.js +0 -105
  847. package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +0 -1
  848. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +0 -2
  849. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +0 -1
  850. package/dist/_shared/button-Be2ayMxF.js +0 -192
  851. package/dist/_shared/button-Be2ayMxF.js.map +0 -1
  852. package/dist/_shared/button-CfQtOuBK.cjs +0 -2
  853. package/dist/_shared/button-CfQtOuBK.cjs.map +0 -1
  854. package/dist/_shared/buttons-DABiSx6N.cjs +0 -2
  855. package/dist/_shared/buttons-DABiSx6N.cjs.map +0 -1
  856. package/dist/_shared/buttons-DYQqQPpk.js +0 -137
  857. package/dist/_shared/buttons-DYQqQPpk.js.map +0 -1
  858. package/dist/_shared/card-radio-group-DKhZhBFV.cjs +0 -2
  859. package/dist/_shared/card-radio-group-DKhZhBFV.cjs.map +0 -1
  860. package/dist/_shared/card-radio-group-DRjmLN5s.js +0 -150
  861. package/dist/_shared/card-radio-group-DRjmLN5s.js.map +0 -1
  862. package/dist/_shared/cards-BJctT9KD.js +0 -428
  863. package/dist/_shared/cards-BJctT9KD.js.map +0 -1
  864. package/dist/_shared/cards-m03XN10f.cjs +0 -2
  865. package/dist/_shared/cards-m03XN10f.cjs.map +0 -1
  866. package/dist/_shared/combobox-BdBpeD3C.cjs +0 -2
  867. package/dist/_shared/combobox-BdBpeD3C.cjs.map +0 -1
  868. package/dist/_shared/combobox-D9tU_83-.js +0 -954
  869. package/dist/_shared/combobox-D9tU_83-.js.map +0 -1
  870. package/dist/_shared/command-BbJB0pjP.cjs +0 -2
  871. package/dist/_shared/command-BbJB0pjP.cjs.map +0 -1
  872. package/dist/_shared/command-IP2wy_HN.js +0 -39
  873. package/dist/_shared/command-IP2wy_HN.js.map +0 -1
  874. package/dist/_shared/comments-DAzpeuQq.cjs +0 -2
  875. package/dist/_shared/comments-DAzpeuQq.cjs.map +0 -1
  876. package/dist/_shared/comments-DzZaKP9x.js +0 -952
  877. package/dist/_shared/comments-DzZaKP9x.js.map +0 -1
  878. package/dist/_shared/containers-CB7zaAvN.cjs +0 -2
  879. package/dist/_shared/containers-CB7zaAvN.cjs.map +0 -1
  880. package/dist/_shared/containers-CLBmhGfs.js +0 -48
  881. package/dist/_shared/containers-CLBmhGfs.js.map +0 -1
  882. package/dist/_shared/copyable-BJYx2SlN.js +0 -38
  883. package/dist/_shared/copyable-BJYx2SlN.js.map +0 -1
  884. package/dist/_shared/copyable-DiDEjp8Z.cjs +0 -2
  885. package/dist/_shared/copyable-DiDEjp8Z.cjs.map +0 -1
  886. package/dist/_shared/data-display-DQUUEzCx.cjs +0 -2
  887. package/dist/_shared/data-display-DQUUEzCx.cjs.map +0 -1
  888. package/dist/_shared/data-display-LlvMEFTK.js +0 -1878
  889. package/dist/_shared/data-display-LlvMEFTK.js.map +0 -1
  890. package/dist/_shared/date-picker-CrC-lHyF.cjs +0 -2
  891. package/dist/_shared/date-picker-CrC-lHyF.cjs.map +0 -1
  892. package/dist/_shared/date-picker-DbYBek-b.js +0 -1361
  893. package/dist/_shared/date-picker-DbYBek-b.js.map +0 -1
  894. package/dist/_shared/date-pickers-9AU8YQK2.js +0 -329
  895. package/dist/_shared/date-pickers-9AU8YQK2.js.map +0 -1
  896. package/dist/_shared/date-pickers-DUEwCWig.cjs +0 -2
  897. package/dist/_shared/date-pickers-DUEwCWig.cjs.map +0 -1
  898. package/dist/_shared/display-BqoPOdof.cjs +0 -2
  899. package/dist/_shared/display-BqoPOdof.cjs.map +0 -1
  900. package/dist/_shared/display-CQoSwU74.js +0 -986
  901. package/dist/_shared/display-CQoSwU74.js.map +0 -1
  902. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +0 -2
  903. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +0 -1
  904. package/dist/_shared/dropdown-menu-CoWmrjYX.js +0 -147
  905. package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +0 -1
  906. package/dist/_shared/form-sizing-DJus3nK3.cjs +0 -2
  907. package/dist/_shared/form-sizing-DJus3nK3.cjs.map +0 -1
  908. package/dist/_shared/form-sizing-DWjJsQSR.js +0 -42
  909. package/dist/_shared/form-sizing-DWjJsQSR.js.map +0 -1
  910. package/dist/_shared/forms-CNh-S9FK.cjs +0 -2
  911. package/dist/_shared/forms-CNh-S9FK.cjs.map +0 -1
  912. package/dist/_shared/forms-DIz3SCA9.js +0 -3534
  913. package/dist/_shared/forms-DIz3SCA9.js.map +0 -1
  914. package/dist/_shared/header-Bs61tQla.js +0 -447
  915. package/dist/_shared/header-Bs61tQla.js.map +0 -1
  916. package/dist/_shared/header-D01oOxna.cjs +0 -2
  917. package/dist/_shared/header-D01oOxna.cjs.map +0 -1
  918. package/dist/_shared/hooks-ACnpaIli.js +0 -95
  919. package/dist/_shared/hooks-ACnpaIli.js.map +0 -1
  920. package/dist/_shared/hooks-B7khuHkk.cjs +0 -2
  921. package/dist/_shared/hooks-B7khuHkk.cjs.map +0 -1
  922. package/dist/_shared/input-CzJzVyQ0.js +0 -182
  923. package/dist/_shared/input-CzJzVyQ0.js.map +0 -1
  924. package/dist/_shared/input-Dvvmn96E.cjs +0 -2
  925. package/dist/_shared/input-Dvvmn96E.cjs.map +0 -1
  926. package/dist/_shared/item-CVjjpHQd.js +0 -226
  927. package/dist/_shared/item-CVjjpHQd.js.map +0 -1
  928. package/dist/_shared/item-ChHblHhR.cjs +0 -2
  929. package/dist/_shared/item-ChHblHhR.cjs.map +0 -1
  930. package/dist/_shared/layout-CGi5w1mo.js +0 -268
  931. package/dist/_shared/layout-CGi5w1mo.js.map +0 -1
  932. package/dist/_shared/layout-ccVwjUG8.cjs +0 -2
  933. package/dist/_shared/layout-ccVwjUG8.cjs.map +0 -1
  934. package/dist/_shared/mentions-Cg_4vFxd.cjs +0 -2
  935. package/dist/_shared/mentions-Cg_4vFxd.cjs.map +0 -1
  936. package/dist/_shared/mentions-Ci9RFTfw.js +0 -506
  937. package/dist/_shared/mentions-Ci9RFTfw.js.map +0 -1
  938. package/dist/_shared/money-display-BFk9Gu21.cjs +0 -2
  939. package/dist/_shared/money-display-BFk9Gu21.cjs.map +0 -1
  940. package/dist/_shared/money-display-DpuLnsK2.js +0 -198
  941. package/dist/_shared/money-display-DpuLnsK2.js.map +0 -1
  942. package/dist/_shared/navigation-C1QN2-Vq.cjs +0 -2
  943. package/dist/_shared/navigation-C1QN2-Vq.cjs.map +0 -1
  944. package/dist/_shared/navigation-CMrLO8v5.js +0 -436
  945. package/dist/_shared/navigation-CMrLO8v5.js.map +0 -1
  946. package/dist/_shared/overlays-BJLczwpz.js +0 -735
  947. package/dist/_shared/overlays-BJLczwpz.js.map +0 -1
  948. package/dist/_shared/overlays-DbaPLT67.cjs +0 -2
  949. package/dist/_shared/overlays-DbaPLT67.cjs.map +0 -1
  950. package/dist/_shared/popover-menu-D_t6rCvN.cjs +0 -2
  951. package/dist/_shared/popover-menu-D_t6rCvN.cjs.map +0 -1
  952. package/dist/_shared/popover-menu-f2O6R_27.js +0 -93
  953. package/dist/_shared/popover-menu-f2O6R_27.js.map +0 -1
  954. package/dist/_shared/rich-text-editor-DmZHbsms.js +0 -620
  955. package/dist/_shared/rich-text-editor-DmZHbsms.js.map +0 -1
  956. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs +0 -2
  957. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs.map +0 -1
  958. package/dist/_shared/settings-CgtcSI8L.js +0 -143
  959. package/dist/_shared/settings-CgtcSI8L.js.map +0 -1
  960. package/dist/_shared/settings-csNmeT7b.cjs +0 -2
  961. package/dist/_shared/settings-csNmeT7b.cjs.map +0 -1
  962. package/dist/_shared/sidebar-DyGIcJd9.cjs +0 -2
  963. package/dist/_shared/sidebar-DyGIcJd9.cjs.map +0 -1
  964. package/dist/_shared/sidebar-OT-xIguQ.js +0 -548
  965. package/dist/_shared/sidebar-OT-xIguQ.js.map +0 -1
  966. package/dist/_shared/skeleton-DwF5VdMh.cjs +0 -2
  967. package/dist/_shared/skeleton-DwF5VdMh.cjs.map +0 -1
  968. package/dist/_shared/skeleton-yUXqeWzB.js +0 -256
  969. package/dist/_shared/skeleton-yUXqeWzB.js.map +0 -1
  970. package/dist/_shared/spinner-BDrUzfTo.cjs +0 -2
  971. package/dist/_shared/spinner-BDrUzfTo.cjs.map +0 -1
  972. package/dist/_shared/spinner-CuVZhJhN.js +0 -67
  973. package/dist/_shared/spinner-CuVZhJhN.js.map +0 -1
  974. package/dist/_shared/table-BVWemr79.cjs +0 -2
  975. package/dist/_shared/table-BVWemr79.cjs.map +0 -1
  976. package/dist/_shared/table-WYSjfQRr.js +0 -1377
  977. package/dist/_shared/table-WYSjfQRr.js.map +0 -1
  978. package/dist/_shared/textarea-C0iZwWdD.js +0 -118
  979. package/dist/_shared/textarea-C0iZwWdD.js.map +0 -1
  980. package/dist/_shared/textarea-bHFAtwYd.cjs +0 -2
  981. package/dist/_shared/textarea-bHFAtwYd.cjs.map +0 -1
  982. package/dist/_shared/typography-5bLhAYaK.js +0 -201
  983. package/dist/_shared/typography-5bLhAYaK.js.map +0 -1
  984. package/dist/_shared/typography-CWEobAJV.cjs +0 -2
  985. package/dist/_shared/typography-CWEobAJV.cjs.map +0 -1
  986. package/dist/_shared/workspace-BkwsqTrc.cjs +0 -2
  987. package/dist/_shared/workspace-BkwsqTrc.cjs.map +0 -1
  988. package/dist/_shared/workspace-DpU1YG1t.js +0 -357
  989. package/dist/_shared/workspace-DpU1YG1t.js.map +0 -1
  990. package/dist/showcase/assets/AreaChart-DxDBymDt.js +0 -6
  991. package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +0 -1
  992. package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +0 -1
  993. package/dist/showcase/assets/DialogTrigger-OUBMI353.js +0 -1
  994. package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +0 -1
  995. package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +0 -1
  996. package/dist/showcase/assets/RadioGroup-BzveyiIV.js +0 -1
  997. package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +0 -1
  998. package/dist/showcase/assets/Separator-CSYYEo-X.js +0 -1
  999. package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +0 -1
  1000. package/dist/showcase/assets/accordion-B9VkLXiy.js +0 -171
  1001. package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +0 -1
  1002. package/dist/showcase/assets/action-menu-CWIvuiLO.js +0 -1
  1003. package/dist/showcase/assets/actions-BuwzXYEF.js +0 -310
  1004. package/dist/showcase/assets/activities-BTBlr1G4.js +0 -500
  1005. package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +0 -1
  1006. package/dist/showcase/assets/admin-kbK6nUjx.js +0 -140
  1007. package/dist/showcase/assets/ai-CKu9EGmA.js +0 -207
  1008. package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +0 -2
  1009. package/dist/showcase/assets/ai-chat-DEntRhJD.js +0 -568
  1010. package/dist/showcase/assets/ai-elements-DyKRCWiS.js +0 -387
  1011. package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +0 -1
  1012. package/dist/showcase/assets/alert-C0wSpBYn.js +0 -93
  1013. package/dist/showcase/assets/alert-CZ4rgwPr.js +0 -62
  1014. package/dist/showcase/assets/alert-WTKIdE4s.js +0 -1
  1015. package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +0 -1
  1016. package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +0 -73
  1017. package/dist/showcase/assets/app-sidebar-B3veRbac.js +0 -1
  1018. package/dist/showcase/assets/arrow-down-CEXJx115.js +0 -1
  1019. package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +0 -1
  1020. package/dist/showcase/assets/arrow-right-a3STqWgx.js +0 -1
  1021. package/dist/showcase/assets/arrow-up-CCU1MaGq.js +0 -1
  1022. package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +0 -1
  1023. package/dist/showcase/assets/avatar-Bwgai0SK.js +0 -67
  1024. package/dist/showcase/assets/avatar-DSmL52Us.js +0 -57
  1025. package/dist/showcase/assets/avatar-kK9n1a25.js +0 -1
  1026. package/dist/showcase/assets/avatar-nb7MgV_x.js +0 -1
  1027. package/dist/showcase/assets/badge-CTGPRSXm.js +0 -31
  1028. package/dist/showcase/assets/badge-check-zqoYYrVj.js +0 -1
  1029. package/dist/showcase/assets/bell-D7HWGStL.js +0 -1
  1030. package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +0 -1
  1031. package/dist/showcase/assets/bot-Owx4SMiU.js +0 -1
  1032. package/dist/showcase/assets/box-BeeoLlMd.js +0 -1
  1033. package/dist/showcase/assets/braces-fzrExVIx.js +0 -1
  1034. package/dist/showcase/assets/brain-Da2fsBjd.js +0 -1
  1035. package/dist/showcase/assets/brand-Bo6uwdGf.js +0 -36
  1036. package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +0 -1
  1037. package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +0 -52
  1038. package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +0 -1
  1039. package/dist/showcase/assets/briefcase-DQjbh28E.js +0 -1
  1040. package/dist/showcase/assets/building-2-DaQW5yJa.js +0 -1
  1041. package/dist/showcase/assets/button-D3skvyQS.js +0 -44
  1042. package/dist/showcase/assets/button-group-BYtbrhme.js +0 -1
  1043. package/dist/showcase/assets/buttons-B3IkMmNQ.js +0 -272
  1044. package/dist/showcase/assets/calendar-C4fCDK3O.js +0 -1
  1045. package/dist/showcase/assets/calendar-CcwkVxCK.js +0 -16
  1046. package/dist/showcase/assets/calendar-DBkwxV9H.js +0 -1
  1047. package/dist/showcase/assets/calendar-days-BWed1W3Z.js +0 -1
  1048. package/dist/showcase/assets/camera-BUoAyoZT.js +0 -1
  1049. package/dist/showcase/assets/card-7DBPqWuv.js +0 -1
  1050. package/dist/showcase/assets/card-ClwyNDHJ.js +0 -188
  1051. package/dist/showcase/assets/card-primitives-BE1YpEQW.js +0 -1
  1052. package/dist/showcase/assets/card-radio-group-1NMbocuG.js +0 -1
  1053. package/dist/showcase/assets/cards-Bu8uaGSU.js +0 -354
  1054. package/dist/showcase/assets/carousel-dTTRRSQg.js +0 -449
  1055. package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +0 -1
  1056. package/dist/showcase/assets/chart-BSboeIO6.js +0 -358
  1057. package/dist/showcase/assets/chart-column-CCzA6B9l.js +0 -1
  1058. package/dist/showcase/assets/checkbox-CSdEPNT5.js +0 -1
  1059. package/dist/showcase/assets/checkbox-CqNLi9Q3.js +0 -1
  1060. package/dist/showcase/assets/chevron-down-C91gNQdT.js +0 -1
  1061. package/dist/showcase/assets/chevron-left-SiAoYFSo.js +0 -1
  1062. package/dist/showcase/assets/chevron-up-Beb1_ET_.js +0 -1
  1063. package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +0 -1
  1064. package/dist/showcase/assets/circle-D9KiRp8C.js +0 -1
  1065. package/dist/showcase/assets/circle-alert-BQkAwFkl.js +0 -1
  1066. package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +0 -1
  1067. package/dist/showcase/assets/circle-check-dqmKTiDe.js +0 -1
  1068. package/dist/showcase/assets/circle-dot-B7LPN_0V.js +0 -1
  1069. package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +0 -1
  1070. package/dist/showcase/assets/circle-x-CW2dFcX-.js +0 -1
  1071. package/dist/showcase/assets/clock-3-CXJ_JotW.js +0 -1
  1072. package/dist/showcase/assets/clock-DUqvfazQ.js +0 -1
  1073. package/dist/showcase/assets/code-xml-BmdQDeID.js +0 -1
  1074. package/dist/showcase/assets/collapsible-C-WYhJxn.js +0 -1
  1075. package/dist/showcase/assets/collapsible-CL37AlCX.js +0 -27
  1076. package/dist/showcase/assets/collapsible-uGO5Rj8q.js +0 -1
  1077. package/dist/showcase/assets/combobox-CFh5kUzj.js +0 -685
  1078. package/dist/showcase/assets/command-CtpLaHjh.js +0 -1
  1079. package/dist/showcase/assets/command-DSlK-QAE.js +0 -1
  1080. package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +0 -1
  1081. package/dist/showcase/assets/comment-item-Dme2o2KI.js +0 -1
  1082. package/dist/showcase/assets/comments-CW2nz465.js +0 -357
  1083. package/dist/showcase/assets/commerce-bwcq6oPn.js +0 -267
  1084. package/dist/showcase/assets/composite-DMIR0vmP.js +0 -1
  1085. package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +0 -1
  1086. package/dist/showcase/assets/contact-card-BCXS9tWq.js +0 -65
  1087. package/dist/showcase/assets/content-container-b1dC2caJ.js +0 -1
  1088. package/dist/showcase/assets/copyable-BIABx-Vv.js +0 -96
  1089. package/dist/showcase/assets/copyable-Ic9wzVaj.js +0 -1
  1090. package/dist/showcase/assets/course-card-Bo5P3TYv.js +0 -77
  1091. package/dist/showcase/assets/cpu-_VqU6yRO.js +0 -1
  1092. package/dist/showcase/assets/credit-card-BbxO8xLo.js +0 -1
  1093. package/dist/showcase/assets/css-variables-zqpBgnS1.js +0 -1205
  1094. package/dist/showcase/assets/currency-Cjvt4F0b.js +0 -149
  1095. package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +0 -90
  1096. package/dist/showcase/assets/data-view-AtyUp7b-.js +0 -124
  1097. package/dist/showcase/assets/data-view-cnEmgP1C.js +0 -4
  1098. package/dist/showcase/assets/database-TbVXEw7v.js +0 -1
  1099. package/dist/showcase/assets/date-block-CDHemKnP.js +0 -1
  1100. package/dist/showcase/assets/date-block-COb89Y_-.js +0 -1
  1101. package/dist/showcase/assets/date-picker-CK8llBIN.js +0 -1
  1102. package/dist/showcase/assets/date-pickers-DFfDnW9w.js +0 -73
  1103. package/dist/showcase/assets/dense-info-CaFVDE90.js +0 -106
  1104. package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +0 -264
  1105. package/dist/showcase/assets/dialog-CRQNEK2K.js +0 -1
  1106. package/dist/showcase/assets/dialog-CsCLDb0G.js +0 -1
  1107. package/dist/showcase/assets/dialog-Qh3EHEKq.js +0 -1
  1108. package/dist/showcase/assets/display-utilities-rP3hb4FK.js +0 -4
  1109. package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +0 -309
  1110. package/dist/showcase/assets/dist-CbqRct9s.js +0 -1
  1111. package/dist/showcase/assets/dist-iivamCjp.js +0 -45
  1112. package/dist/showcase/assets/dollar-sign-COaRmdJE.js +0 -1
  1113. package/dist/showcase/assets/download-yCcb4rfH.js +0 -1
  1114. package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +0 -1
  1115. package/dist/showcase/assets/dropzone-DLguWnmu.js +0 -1
  1116. package/dist/showcase/assets/earth-TDRqTA4S.js +0 -1
  1117. package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +0 -1
  1118. package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +0 -1
  1119. package/dist/showcase/assets/empty-DvmDTSAj.js +0 -1
  1120. package/dist/showcase/assets/empty-item-C3HP5nuw.js +0 -49
  1121. package/dist/showcase/assets/empty-state-Dcin4cOt.js +0 -190
  1122. package/dist/showcase/assets/empty-state-IV_GTNEI.js +0 -1
  1123. package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +0 -357
  1124. package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +0 -1
  1125. package/dist/showcase/assets/esm-Cf6QQstQ.js +0 -2
  1126. package/dist/showcase/assets/event-calendar-zrfI_3AM.js +0 -138
  1127. package/dist/showcase/assets/event-log-D-_CViAw.js +0 -330
  1128. package/dist/showcase/assets/example-6bZGEb3-.js +0 -1
  1129. package/dist/showcase/assets/external-link-7ldgjHZM.js +0 -1
  1130. package/dist/showcase/assets/eye-pXVkim6z.js +0 -1
  1131. package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +0 -34
  1132. package/dist/showcase/assets/file-Bn9sAGaT.js +0 -1
  1133. package/dist/showcase/assets/file-text-Cvxg6pjh.js +0 -1
  1134. package/dist/showcase/assets/filter-layout-DqNRRzDU.js +0 -1
  1135. package/dist/showcase/assets/filters-CQMI_T63.js +0 -139
  1136. package/dist/showcase/assets/flag-vI_WJ-BU.js +0 -1
  1137. package/dist/showcase/assets/folder-open-0AyKSRQS.js +0 -1
  1138. package/dist/showcase/assets/form-field-BaBeXn7a.js +0 -1
  1139. package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +0 -1
  1140. package/dist/showcase/assets/format-DLLMyN-3.js +0 -1
  1141. package/dist/showcase/assets/forms-gPD-Caru.js +0 -915
  1142. package/dist/showcase/assets/funnel-Ca9nWMHm.js +0 -1
  1143. package/dist/showcase/assets/generic-AAssz0h7.js +0 -1
  1144. package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +0 -1
  1145. package/dist/showcase/assets/gift-BC42Oxfz.js +0 -1
  1146. package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +0 -85
  1147. package/dist/showcase/assets/git-branch-B-nF8w-J.js +0 -1
  1148. package/dist/showcase/assets/global-search-D6Gxw0G3.js +0 -1
  1149. package/dist/showcase/assets/global-search-jsb_4idg.js +0 -215
  1150. package/dist/showcase/assets/globe-C92uBSrO.js +0 -1
  1151. package/dist/showcase/assets/gradient-card-D4ly60sD.js +0 -58
  1152. package/dist/showcase/assets/hash-BShTbxlR.js +0 -1
  1153. package/dist/showcase/assets/header-CSiNqg9Q.js +0 -1
  1154. package/dist/showcase/assets/header-notifications-CpHeFPQF.js +0 -1
  1155. package/dist/showcase/assets/heart-B3hXs7fr.js +0 -1
  1156. package/dist/showcase/assets/hooks-CamAqFFh.js +0 -220
  1157. package/dist/showcase/assets/house-4_CouE-Y.js +0 -1
  1158. package/dist/showcase/assets/icon-badge-CePIZqWR.js +0 -1
  1159. package/dist/showcase/assets/icon-badge-DSbvvnxh.js +0 -37
  1160. package/dist/showcase/assets/image-BxbFIbVJ.js +0 -1
  1161. package/dist/showcase/assets/inbox-BXab1SM6.js +0 -1
  1162. package/dist/showcase/assets/index-BPUtPJjB.css +0 -2
  1163. package/dist/showcase/assets/index-BjjNfnhP.js +0 -10
  1164. package/dist/showcase/assets/inertValue-CZOzgsmF.js +0 -1
  1165. package/dist/showcase/assets/info-DzqwCq93.js +0 -1
  1166. package/dist/showcase/assets/inline-stat-D5ybpUh-.js +0 -15
  1167. package/dist/showcase/assets/inline-stat-Dq34wv-6.js +0 -1
  1168. package/dist/showcase/assets/input-C8OfUHCK.js +0 -1
  1169. package/dist/showcase/assets/input-D34Ge3rh.js +0 -1
  1170. package/dist/showcase/assets/input-group-BCPZ6Pwq.js +0 -1
  1171. package/dist/showcase/assets/input-group-CySTANka.js +0 -47
  1172. package/dist/showcase/assets/inputs-CnmHo_lj.js +0 -155
  1173. package/dist/showcase/assets/installation-BPvseS46.js +0 -134
  1174. package/dist/showcase/assets/invoice-header-C9JjJWQX.js +0 -36
  1175. package/dist/showcase/assets/invoice-items-DB8tbCv9.js +0 -36
  1176. package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +0 -14
  1177. package/dist/showcase/assets/invoice-table-CLDvpLib.js +0 -30
  1178. package/dist/showcase/assets/isSameDay-D8bDebyL.js +0 -1
  1179. package/dist/showcase/assets/isToday-XVjRuMtp.js +0 -1
  1180. package/dist/showcase/assets/italic-Cm13b8qb.js +0 -1
  1181. package/dist/showcase/assets/item-C07859JQ.js +0 -1
  1182. package/dist/showcase/assets/item-LinnMxvu.js +0 -1
  1183. package/dist/showcase/assets/item-i7ZUMs5t.js +0 -140
  1184. package/dist/showcase/assets/kanban-CIMTpuN5.js +0 -188
  1185. package/dist/showcase/assets/key-round-Bh7EzOyR.js +0 -1
  1186. package/dist/showcase/assets/label-C3A4CjeG.js +0 -1
  1187. package/dist/showcase/assets/languages-C37jhetw.js +0 -1
  1188. package/dist/showcase/assets/layers-Lyr6p-Nt.js +0 -1
  1189. package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +0 -608
  1190. package/dist/showcase/assets/layout-auth-y1alnhc8.js +0 -790
  1191. package/dist/showcase/assets/layout-containers-B6c-uvil.js +0 -101
  1192. package/dist/showcase/assets/layout-header-DNhJHWNw.js +0 -203
  1193. package/dist/showcase/assets/layout-page-CXU7CnQK.js +0 -315
  1194. package/dist/showcase/assets/layout-primitives-StuFwfwh.js +0 -34
  1195. package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +0 -224
  1196. package/dist/showcase/assets/layout-users-D7KMzs3-.js +0 -117
  1197. package/dist/showcase/assets/layout-workspace-Butr7CL5.js +0 -191
  1198. package/dist/showcase/assets/lib-D5nOMXIt.js +0 -1
  1199. package/dist/showcase/assets/list-checks-Cg9HZf4W.js +0 -1
  1200. package/dist/showcase/assets/lock-Da21HhQx.js +0 -1
  1201. package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +0 -1
  1202. package/dist/showcase/assets/mail-Bamky-ti.js +0 -1
  1203. package/dist/showcase/assets/mail-check-BfVYPC42.js +0 -1
  1204. package/dist/showcase/assets/map-BTlWnRAQ.js +0 -124
  1205. package/dist/showcase/assets/map-pin-BU2RBuvC.js +0 -1
  1206. package/dist/showcase/assets/media-library-DJxgoGAF.js +0 -699
  1207. package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +0 -1
  1208. package/dist/showcase/assets/mentions-kMT-Z3qU.js +0 -138
  1209. package/dist/showcase/assets/menus-bhp_n9PT.js +0 -171
  1210. package/dist/showcase/assets/message-square-DC5Bb9Zs.js +0 -1
  1211. package/dist/showcase/assets/metadata-list-DGr729EW.js +0 -286
  1212. package/dist/showcase/assets/metadata-list-DyjhZi6d.js +0 -1
  1213. package/dist/showcase/assets/metric-DRDok6Ci.js +0 -1
  1214. package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +0 -1
  1215. package/dist/showcase/assets/metric-grid-BlFXTrid.js +0 -1
  1216. package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +0 -1
  1217. package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +0 -44
  1218. package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +0 -50
  1219. package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +0 -76
  1220. package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +0 -27
  1221. package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +0 -17
  1222. package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +0 -31
  1223. package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +0 -42
  1224. package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +0 -192
  1225. package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +0 -54
  1226. package/dist/showcase/assets/minus-Dr1iTc_q.js +0 -1
  1227. package/dist/showcase/assets/money-display-B5_VqQC0.js +0 -1
  1228. package/dist/showcase/assets/money-display-bU2_cVGX.js +0 -1
  1229. package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +0 -1
  1230. package/dist/showcase/assets/navigation-DBKvJoe-.js +0 -231
  1231. package/dist/showcase/assets/navigation-DOhfmtgy.js +0 -90
  1232. package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +0 -43
  1233. package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +0 -1
  1234. package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +0 -119
  1235. package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +0 -1
  1236. package/dist/showcase/assets/overlays-4E_sUgkz.js +0 -408
  1237. package/dist/showcase/assets/overlays-ulNl-Vhr.js +0 -159
  1238. package/dist/showcase/assets/overview-CgymfIBq.js +0 -184
  1239. package/dist/showcase/assets/package-CADuUP1u.js +0 -1
  1240. package/dist/showcase/assets/package-check-O7MD6XE_.js +0 -1
  1241. package/dist/showcase/assets/page-GB6OIgID.js +0 -1
  1242. package/dist/showcase/assets/page-action-button-Dpprot7y.js +0 -1
  1243. package/dist/showcase/assets/page-header-2VEUPx67.js +0 -1
  1244. package/dist/showcase/assets/pagination-BBuRtAX9.js +0 -1
  1245. package/dist/showcase/assets/pagination-C4mt4Q4l.js +0 -42
  1246. package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +0 -1
  1247. package/dist/showcase/assets/password-input-CgZj1niQ.js +0 -1
  1248. package/dist/showcase/assets/pencil-CtdXjogr.js +0 -1
  1249. package/dist/showcase/assets/phone-CAFMH1vV.js +0 -1
  1250. package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +0 -1
  1251. package/dist/showcase/assets/plus-CN2dzUxL.js +0 -1
  1252. package/dist/showcase/assets/popover-DILNXLWy.js +0 -1
  1253. package/dist/showcase/assets/popover-menu-Bp08xxOf.js +0 -1
  1254. package/dist/showcase/assets/popover-o1EO2yVS.js +0 -1
  1255. package/dist/showcase/assets/products-CCLAbHBN.js +0 -423
  1256. package/dist/showcase/assets/progress-BGna-ZmU.js +0 -18
  1257. package/dist/showcase/assets/progress-BSYlNLIJ.js +0 -1
  1258. package/dist/showcase/assets/progress-CZVy3LGB.js +0 -1
  1259. package/dist/showcase/assets/props-table-X9St7Q4m.js +0 -1
  1260. package/dist/showcase/assets/props.generated-f_jHBhPb.json +0 -41753
  1261. package/dist/showcase/assets/qr-code-CEmKf9xU.js +0 -1
  1262. package/dist/showcase/assets/quote-IH6r-rlY.js +0 -1
  1263. package/dist/showcase/assets/receipt-m9rOe5lY.js +0 -1
  1264. package/dist/showcase/assets/receipt-text-C0TobatH.js +0 -1
  1265. package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +0 -189
  1266. package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +0 -1
  1267. package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +0 -1
  1268. package/dist/showcase/assets/resource-BcJ8O6uj.js +0 -1
  1269. package/dist/showcase/assets/resource-_zDXez77.js +0 -139
  1270. package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +0 -43
  1271. package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +0 -143
  1272. package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +0 -124
  1273. package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +0 -1
  1274. package/dist/showcase/assets/route-C7EZ2Njy.js +0 -1
  1275. package/dist/showcase/assets/save-fKrt-yFG.js +0 -1
  1276. package/dist/showcase/assets/schema-form-k7TXeirD.js +0 -327
  1277. package/dist/showcase/assets/scroll-area-CqNwdlI6.js +0 -32
  1278. package/dist/showcase/assets/scroll-area-UVtlGOgx.js +0 -1
  1279. package/dist/showcase/assets/section-DuBNJP4P.js +0 -1
  1280. package/dist/showcase/assets/select-CINVEIWn.js +0 -1
  1281. package/dist/showcase/assets/select-ZLaamXrm.js +0 -1
  1282. package/dist/showcase/assets/send-DBvt_4jT.js +0 -1
  1283. package/dist/showcase/assets/separator-BdBXRpc3.js +0 -28
  1284. package/dist/showcase/assets/separator-CkJjJQWW.js +0 -1
  1285. package/dist/showcase/assets/separator-CxOeStjL.js +0 -1
  1286. package/dist/showcase/assets/separator-O-VQMSf_.js +0 -1
  1287. package/dist/showcase/assets/settings-2-BWjMVlyS.js +0 -1
  1288. package/dist/showcase/assets/settings-D9Z79UcG.js +0 -1
  1289. package/dist/showcase/assets/sheet-CK9C6r7_.js +0 -1
  1290. package/dist/showcase/assets/shield-BboB3Zlo.js +0 -1
  1291. package/dist/showcase/assets/shield-alert-CAAobStl.js +0 -1
  1292. package/dist/showcase/assets/shield-check-Rfyzz9bK.js +0 -1
  1293. package/dist/showcase/assets/shopping-bag-5hLD82YW.js +0 -1
  1294. package/dist/showcase/assets/showcase-DhOQXB5E.js +0 -132
  1295. package/dist/showcase/assets/sidebar-ZTUACc0t.js +0 -1
  1296. package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +0 -1
  1297. package/dist/showcase/assets/skeleton-BZUSoHbk.js +0 -1
  1298. package/dist/showcase/assets/skeleton-BZkYzAdq.js +0 -1
  1299. package/dist/showcase/assets/skeleton-CrOp8tx3.js +0 -29
  1300. package/dist/showcase/assets/skeleton-P5GXAj4U.js +0 -1
  1301. package/dist/showcase/assets/slider-zlE7nLrp.js +0 -1
  1302. package/dist/showcase/assets/smart-card-OExZHSsj.js +0 -1
  1303. package/dist/showcase/assets/sonner-eMphKM9E.js +0 -22
  1304. package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +0 -5
  1305. package/dist/showcase/assets/sparkles-CIB5irID.js +0 -1
  1306. package/dist/showcase/assets/spinner-11-kP-Ob.js +0 -1
  1307. package/dist/showcase/assets/spinner-D4G5TFSm.js +0 -49
  1308. package/dist/showcase/assets/spinner-DKGukuFV.js +0 -30
  1309. package/dist/showcase/assets/square-pen-zflKy9oX.js +0 -1
  1310. package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +0 -1
  1311. package/dist/showcase/assets/star-DleXDkCp.js +0 -1
  1312. package/dist/showcase/assets/startOfDay-TDP2erzM.js +0 -1
  1313. package/dist/showcase/assets/styles-BKlX_Ipc.js +0 -1
  1314. package/dist/showcase/assets/suggestions-Dt2hm1NY.js +0 -126
  1315. package/dist/showcase/assets/switch-DAPAgJbv.js +0 -1
  1316. package/dist/showcase/assets/switch-fQpP2tJl.js +0 -1
  1317. package/dist/showcase/assets/sync-BRcK160D.js +0 -124
  1318. package/dist/showcase/assets/table-Dhmbe1yN.js +0 -686
  1319. package/dist/showcase/assets/table-actions-GGrPOQcv.js +0 -1
  1320. package/dist/showcase/assets/table-v0Eu5yZn.js +0 -1
  1321. package/dist/showcase/assets/tabs-DmaXB1aF.js +0 -19
  1322. package/dist/showcase/assets/tabs-vbNIJ-eo.js +0 -1
  1323. package/dist/showcase/assets/tags-input-Bms_Q5CE.js +0 -1
  1324. package/dist/showcase/assets/text-button-gvJCzaXS.js +0 -1
  1325. package/dist/showcase/assets/text-link-DkByVX4d.js +0 -1
  1326. package/dist/showcase/assets/textarea-B6Ho29y3.js +0 -1
  1327. package/dist/showcase/assets/textarea-JCb0yhZ1.js +0 -1
  1328. package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +0 -1
  1329. package/dist/showcase/assets/timelines-Bw7mvAdx.js +0 -200
  1330. package/dist/showcase/assets/toggle-group-jlIGX1zh.js +0 -1
  1331. package/dist/showcase/assets/toggles-DV6V9vj-.js +0 -71
  1332. package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +0 -32
  1333. package/dist/showcase/assets/tooltip-CDtPyNOv.js +0 -31
  1334. package/dist/showcase/assets/trash-2-CXRm3lMl.js +0 -1
  1335. package/dist/showcase/assets/trending-up-Bcyp9cw8.js +0 -1
  1336. package/dist/showcase/assets/truck-DVgzuKLP.js +0 -1
  1337. package/dist/showcase/assets/typography-BKPf4j85.js +0 -223
  1338. package/dist/showcase/assets/ui-badge-D-Ud2MES.js +0 -28
  1339. package/dist/showcase/assets/ui-card-gGqI2cfr.js +0 -30
  1340. package/dist/showcase/assets/ui-table-Bqcab_kq.js +0 -42
  1341. package/dist/showcase/assets/upload-tray-BFh6twLE.js +0 -138
  1342. package/dist/showcase/assets/use-layout-link-e9jr981L.js +0 -1
  1343. package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +0 -1
  1344. package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +0 -1
  1345. package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +0 -1
  1346. package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +0 -1
  1347. package/dist/showcase/assets/useLabelableId-COfjI9qt.js +0 -1
  1348. package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +0 -1
  1349. package/dist/showcase/assets/useRender-Bgu76j1u.js +0 -1
  1350. package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +0 -1
  1351. package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +0 -1
  1352. package/dist/showcase/assets/user-CmkLnMh9.js +0 -1
  1353. package/dist/showcase/assets/user-plus-3CGFNUf0.js +0 -1
  1354. package/dist/showcase/assets/users-CuO8W7wn.js +0 -1
  1355. package/dist/showcase/assets/vendor-profile-HLMsE22G.js +0 -37
  1356. package/dist/showcase/assets/video-CoHnn0fp.js +0 -1
  1357. package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +0 -1
  1358. package/dist/showcase/assets/wrench-C93IxaGt.js +0 -1
  1359. package/dist/showcase/assets/x-BJDvVLAz.js +0 -1
  1360. package/dist/showcase/assets/zap-DYD_Ljkv.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/base/display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3H,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EACN,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,SAAS,EACT,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GAClB,MAAM,cAAc,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AACtH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACnF,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/base/display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3H,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EACN,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,SAAS,EACT,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GAClB,MAAM,cAAc,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AACtH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACnF,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { i as e, n as t, r as n, t as r } from "../../../_shared/tooltip-CLr_sPX8.js";
2
2
  import { t as i } from "../../../_shared/icon-badge-dZQPvuas.js";
3
- import { a, c as o, i as s, o as c, s as l } from "../../../_shared/cards-BJctT9KD.js";
4
- import { C as u, S as d, T as f, _ as p, a as m, b as h, c as g, d as _, f as v, g as y, h as b, i as x, l as S, m as C, n as w, o as T, p as E, r as D, s as O, t as k, u as A, v as j, w as M, x as N, y as P } from "../../../_shared/display-CQoSwU74.js";
5
- import { t as F } from "../../../_shared/separator-DiH-j--f.js";
6
- import { n as I, t as L } from "../../../_shared/scroll-area-B32KwU9k.js";
7
- import { a as R, c as z, i as B, l as V, n as H, o as U, r as W, s as G, t as K, u as q } from "../../../_shared/dialog-CCN4tjU9.js";
8
- import { n as J, t as Y } from "../../../_shared/money-display-DpuLnsK2.js";
9
- import { a as X, i as Z, n as Q, o as $, r as ee, t as te } from "../../../_shared/avatar-BagPbPuD.js";
10
- import { a as ne, i as re, n as ie, r as ae, t as oe } from "../../../_shared/skeleton-yUXqeWzB.js";
11
- export { s as Alert, a as AlertAction, c as AlertDescription, l as AlertTitle, te as Avatar, Q as AvatarBadge, ee as AvatarFallback, Z as AvatarGroup, X as AvatarGroupCount, $ as AvatarImage, E as BooleanIndicator, b as Collapsible, y as CollapsibleContent, p as CollapsibleTrigger, oe as ContentSkeleton, J as CurrencyPairPreview, j as DateBlock, K as Dialog, H as DialogClose, W as DialogContent, B as DialogDescription, R as DialogFooter, U as DialogHeader, G as DialogOverlay, z as DialogPortal, V as DialogTitle, q as DialogTrigger, O as Empty, g as EmptyContent, S as EmptyDescription, A as EmptyHeader, _ as EmptyMedia, v as EmptyTitle, i as IconBadge, Y as MoneyDisplay, C as MoneyInput, f as NotificationBanner, ie as PageSkeleton, M as PlaceholderPattern, w as Progress, D as ProgressIndicator, x as ProgressLabel, m as ProgressTrack, T as ProgressValue, k as QRCode, L as ScrollArea, I as ScrollBar, F as Separator, u as ShowIf, ae as Skeleton, h as StackedAvatars, re as TableSkeleton, d as ThrottleAlert, r as Tooltip, t as TooltipContent, n as TooltipProvider, e as TooltipTrigger, ne as TwoColumnPageSkeleton, N as VisuallyHidden, o as alertVariants, P as defaultDateBlockStrings };
3
+ import { a, c as o, i as s, o as c, s as l } from "../../../_shared/cards-B7voInTJ.js";
4
+ import { n as u, r as d, t as f } from "../../../_shared/icon-size-CMNigtUu.js";
5
+ import { C as p, S as m, T as h, _ as g, a as _, b as v, c as y, d as b, f as x, g as S, h as C, i as w, l as T, m as E, n as D, o as O, p as k, r as A, s as j, t as M, u as N, v as P, w as F, x as I, y as L } from "../../../_shared/display-BHIs_Y_j.js";
6
+ import { t as R } from "../../../_shared/separator-DiH-j--f.js";
7
+ import { n as z, t as B } from "../../../_shared/scroll-area-B32KwU9k.js";
8
+ import { a as V, c as H, i as U, l as W, n as G, o as K, r as q, s as J, t as Y, u as X } from "../../../_shared/dialog-CCN4tjU9.js";
9
+ import { n as Z, t as Q } from "../../../_shared/money-display-BabyaIWb.js";
10
+ import { a as $, i as ee, n as te, o as ne, r as re, t as ie } from "../../../_shared/avatar-BagPbPuD.js";
11
+ import { a as ae, i as oe, n as se, r as ce, t as le } from "../../../_shared/skeleton-Bc_qa5l_.js";
12
+ export { s as Alert, a as AlertAction, c as AlertDescription, l as AlertTitle, ie as Avatar, te as AvatarBadge, re as AvatarFallback, ee as AvatarGroup, $ as AvatarGroupCount, ne as AvatarImage, k as BooleanIndicator, C as Collapsible, S as CollapsibleContent, g as CollapsibleTrigger, le as ContentSkeleton, Z as CurrencyPairPreview, P as DateBlock, Y as Dialog, G as DialogClose, q as DialogContent, U as DialogDescription, V as DialogFooter, K as DialogHeader, J as DialogOverlay, H as DialogPortal, W as DialogTitle, X as DialogTrigger, j as Empty, y as EmptyContent, T as EmptyDescription, N as EmptyHeader, b as EmptyMedia, x as EmptyTitle, f as ICON_CHILD_SIZE_CLASSNAMES, u as ICON_DESCENDANT_SIZE_CLASSNAMES, d as ICON_SIZE_CLASSNAMES, i as IconBadge, Q as MoneyDisplay, E as MoneyInput, h as NotificationBanner, se as PageSkeleton, F as PlaceholderPattern, D as Progress, A as ProgressIndicator, w as ProgressLabel, _ as ProgressTrack, O as ProgressValue, M as QRCode, B as ScrollArea, z as ScrollBar, R as Separator, p as ShowIf, ce as Skeleton, v as StackedAvatars, oe as TableSkeleton, m as ThrottleAlert, r as Tooltip, t as TooltipContent, n as TooltipProvider, e as TooltipTrigger, ae as TwoColumnPageSkeleton, I as VisuallyHidden, o as alertVariants, L as defaultDateBlockStrings };
@@ -1 +1 @@
1
- {"version":3,"file":"throttle-alert.d.ts","sourceRoot":"","sources":["../../../../src/components/base/display/throttle-alert.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAG7D,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,2BAA2B,EAAE,oBAGzC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;CAC5C;AAED,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EAAE,WAAW,GACpB,EAAE,kBAAkB,+BAoCpB;yBA1Ce,aAAa"}
1
+ {"version":3,"file":"throttle-alert.d.ts","sourceRoot":"","sources":["../../../../src/components/base/display/throttle-alert.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAI7D,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,2BAA2B,EAAE,oBAGzC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;CAC5C;AAED,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EAAE,WAAW,GACpB,EAAE,kBAAkB,+BAyCpB;yBA/Ce,aAAa"}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../_shared/ui-provider-CrsJ_dGn.cjs"),n=require("../../../lib/utils.cjs"),r=require("../../../_shared/button-CfQtOuBK.cjs"),i=require("../../../_shared/typography-CWEobAJV.cjs"),a=require("../../../_shared/select-CG5Yq-6A.cjs"),o=require("../../../_shared/date-pickers-DUEwCWig.cjs");let s=require("react"),c=require("date-fns"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={gray:`bg-muted-foreground`,red:`bg-destructive`,orange:`bg-warning`,amber:`bg-warning`,yellow:`bg-warning`,green:`bg-success`,blue:`bg-info`,purple:`bg-primary`};function f(e){if(!e)return`gray`;if(e.colorToken)return e.colorToken;let t=e.color??``;return t.includes(`orange`)?`orange`:t.includes(`yellow`)?`yellow`:t.includes(`amber`)?`amber`:t.includes(`purple`)?`purple`:t.includes(`green`)?`green`:t.includes(`blue`)?`blue`:t.includes(`red`)?`red`:`gray`}var p={today:`Today`,previous:`Previous`,next:`Next`,loading:`Loading…`,booking:`booking`,bookings:`bookings`,viewMode:{month:`Month`,week:`Week`,agenda:`Agenda`},weekdaysShort:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`]};function m({event:e,category:t,compact:a=!1,onClick:o}){let s=d[f(t)],u=e.allDay?null:(0,c.format)(e.startDate,`HH:mm`),p=e.metadata?.calendar_cell_title,m=typeof p==`string`&&p.trim()!==``?p:e.title,h=u?`${m} at ${u}`:m;return(0,l.jsxs)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:a?`small`:`default`,onClick:e=>{e.stopPropagation(),o?.()},className:n.cn(`event-calendar-event-badge--component`,`group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5`,`justify-start text-left shadow-none transition-colors hover:bg-accent/50`,`max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0`,a?`h-5`:`h-6`),"aria-label":h,title:typeof m==`string`?m:void 0,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,className:n.cn(`size-1.5 shrink-0 rounded-full`,s)}),(0,l.jsx)(i.s,{tag:`span`,size:`xs`,weight:`medium`,className:`min-w-0 flex-1 truncate max-sm:hidden`,children:m}),!!u&&(0,l.jsx)(i.s,{tag:`span`,size:`xs`,type:`secondary`,className:`shrink-0 whitespace-nowrap tabular-nums max-sm:hidden`,children:u})]})}m.displayName=`EventCalendarEventBadge`;function h(e,t,n,r={}){let{weekStartsOn:i=1,showWeekends:a=!0,visibleCategories:o}=r;return(0,s.useMemo)(()=>{let r=(0,c.startOfMonth)(t),s=(0,c.endOfMonth)(t),l,u;n===`month`?(l=(0,c.startOfWeek)(r,{weekStartsOn:i}),u=(0,c.endOfWeek)(s,{weekStartsOn:i})):n===`week`?(l=(0,c.startOfWeek)(t,{weekStartsOn:i}),u=(0,c.endOfWeek)(t,{weekStartsOn:i})):(l=r,u=s);let d=(0,c.eachDayOfInterval)({start:l,end:u}),f=o&&o.length>0?e.filter(e=>o.includes(e.category)):e,p=new Map;return f.forEach(e=>{let t=(0,c.startOfDay)(e.startDate);if(Number.isNaN(t.getTime()))return;let n=t;if(e.endDate&&!Number.isNaN(e.endDate.getTime())){let r=(0,c.startOfDay)(e.endDate);!Number.isNaN(r.getTime())&&r.getTime()>=t.getTime()&&(n=r)}(0,c.eachDayOfInterval)({start:t,end:n}).forEach(t=>{let n=t.toISOString().split(`T`)[0];p.has(n)||p.set(n,[]),p.get(n).push(e)})}),d.filter(e=>a||!(0,c.isWeekend)(e)).map(e=>{let n=e.toISOString().split(`T`)[0],r=[...p.get(n)||[]].sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime());return{date:e,isCurrentMonth:(0,c.isSameMonth)(e,t),isToday:(0,c.isToday)(e),isWeekend:(0,c.isWeekend)(e),events:r,eventCount:r.length,hasMultipleEvents:r.length>1}})},[e,t,n,i,a,o])}function g(e,t){return e.filter(e=>{let n=(0,c.startOfDay)(e.startDate),r=e.endDate?(0,c.startOfDay)(e.endDate):n,i=(0,c.startOfDay)(t);return(0,c.isSameDay)(i,n)||(0,c.isSameDay)(i,r)||i>n&&i<r}).sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime())}function _(e,t){return e.find(e=>e.id===t)}function v({data:e,categories:t,maxEvents:r=3,onClick:a,compact:o=!1,strings:s,renderEvent:c}){let u={booking:s?.booking??p.booking,bookings:s?.bookings??p.bookings},{date:h,isCurrentMonth:g,isToday:v,isWeekend:y,events:b,eventCount:x}=e,S=b.slice(0,r),C=Math.max(0,x-r);return(0,l.jsx)(`div`,{className:n.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`),children:(0,l.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},className:n.cn(`relative w-full min-h-24 p-2 transition-colors`,`hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10`,`flex flex-col items-start gap-1`,!g&&`text-muted-foreground opacity-50`,v&&`h-full bg-accent text-accent-foreground`,o&&`min-h-20 p-1`),"aria-label":h.toDateString(),"data-date":h.toISOString(),"data-today":v,"data-weekend":y,"data-current-month":g,children:[(0,l.jsx)(i.s,{className:n.cn(`font-normal leading-none`,v&&`font-semibold`,!g&&`text-muted-foreground`,o&&`text-xs`),children:h.getDate()}),(0,l.jsxs)(`div`,{className:`w-full space-y-0.5`,children:[S.map(n=>{let r=_(t,n.category);return c?(0,l.jsx)(`div`,{children:c(n,r)},n.id):(0,l.jsx)(m,{event:n,category:r,compact:o||e.hasMultipleEvents,onClick:()=>a()},n.id)}),C>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 px-2`,children:[(0,l.jsx)(`div`,{className:`flex items-center -space-x-1`,children:t.slice(0,3).map((e,t)=>(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full border border-background`,d[f(e)])},e.id||t))}),(0,l.jsxs)(i.s,{size:`xs`,type:`secondary`,className:`font-medium text-xs`,children:[C,` `,C===1?u.booking:u.bookings]})]})]})]})})}v.displayName=`EventCalendarDayCell`;function y(e){switch(e){case`destructive`:return{variant:`error`,buttonStyle:`solid`};case`outline`:return{variant:`secondary`,buttonStyle:`outline`};case`secondary`:return{variant:`secondary`,buttonStyle:`solid`};case`ghost`:return{variant:`secondary`,buttonStyle:`ghost`};default:return{variant:`primary`,buttonStyle:`solid`}}}var b=(e,t)=>{if(!e)return null;if(e.element)return(0,l.jsx)(`div`,{className:`event-calendar-header--component`,children:e.element},e.id||t);let i=e.icon,a=e.id||`action-${t}`,o=()=>{e.onClick?.()},s=y(e.variant);return(0,l.jsxs)(r.t,{variant:s.variant,buttonStyle:s.buttonStyle,onClick:o,className:n.cn(`h-8 gap-2`,s.className),disabled:!!e.disabled,children:[!!i&&(0,l.jsx)(i,{className:`h-4 w-4`}),e.label]},a)};function x({currentDate:t,viewMode:n,displayLabel:c,onPrevious:d,onNext:f,onToday:m,onViewModeChange:h,onDateChange:g,locale:_,actions:v,strings:y,rangeMode:x=`date`,minDate:S,maxDate:C,prevDisabled:w=!1,nextDisabled:T=!1}){let E=e.useStrings(p,y),D=(0,s.useMemo)(()=>(v||[]).filter(e=>e.isVisible!==!1),[v]);return(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-4`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,l.jsx)(i.o,{tag:`h3`,className:`text-lg font-semibold`,children:c}),(0,l.jsx)(o.t,{value:{month:t.getMonth(),year:t.getFullYear()},onChange:e=>{e.date&&g?.(e.date)},fromYear:S?.getFullYear(),toYear:C?.getFullYear(),locale:_})]}),(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[D.length>0&&(0,l.jsxs)(l.Fragment,{children:[D.map((e,t)=>b(e,t)),(0,l.jsx)(`div`,{className:`h-6 w-px bg-border mx-1`})]}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`outline`,onClick:m,className:`hidden sm:inline-flex`,children:E.today}),(0,l.jsxs)(`div`,{className:`flex items-center border border-border rounded-md`,children:[(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:d,disabled:w,className:`h-8 w-8 rounded-r-none border-r`,"aria-label":E.previous,children:(0,l.jsx)(u.ChevronLeft,{className:`h-4 w-4`})}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:f,disabled:T,className:`h-8 w-8 rounded-l-none`,"aria-label":E.next,children:(0,l.jsx)(u.ChevronRight,{className:`h-4 w-4`})})]}),!!h&&(0,l.jsxs)(a.t,{value:n,onValueChange:e=>{e&&h(e)},children:[(0,l.jsx)(a.a,{className:`w-28 h-8`,children:(0,l.jsx)(a.o,{})}),(0,l.jsxs)(a.n,{children:[(0,l.jsx)(a.i,{value:`month`,children:E.viewMode.month}),(0,l.jsx)(a.i,{value:`week`,children:E.viewMode.week}),(0,l.jsx)(a.i,{value:`agenda`,children:E.viewMode.agenda})]})]})]})]})}x.displayName=`EventCalendarHeader`;var S={gray:{badgeBg:`bg-muted`,border:`border-border`,swatch:`bg-muted-foreground`},red:{badgeBg:`bg-destructive/10`,border:`border-destructive/40`,swatch:`bg-destructive`},orange:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},amber:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},yellow:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},green:{badgeBg:`bg-success/10`,border:`border-success/40`,swatch:`bg-success`},blue:{badgeBg:`bg-info/10`,border:`border-info/40`,swatch:`bg-info`},purple:{badgeBg:`bg-primary/10`,border:`border-primary/40`,swatch:`bg-primary`}};function C(e){let t=f(e);return{dot:d[t],...S[t]}}function w(e){return d[f(e)]}function T({categories:e,visibleCategories:t,onToggleCategory:a,enableFiltering:o=!1}){let s=!t||t.length===0,c=e=>o?s||t?.includes(e):!0,u=e=>{!o||!a||a(e)};return e.length===0?null:(0,l.jsx)(`div`,{role:o?`group`:void 0,"aria-label":o?`Filter event categories`:void 0,className:n.cn(`event-calendar-legend--component`,`flex flex-wrap items-center gap-1.5 py-1`),children:e.map(e=>{let t=c(e.id),a=C(e),s=e.icon,d=`group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors`,f=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:n.cn(`inline-block size-2 rounded-full`,t?a.swatch:`bg-muted-foreground/40`),"aria-hidden":`true`}),!!s&&(0,l.jsx)(s,{className:n.cn(`size-3`,t?`text-foreground`:`text-muted-foreground`),"aria-hidden":`true`}),(0,l.jsx)(i.s,{tag:`span`,size:`xs`,weight:`medium`,type:t?`main`:`secondary`,children:e.label})]});return o?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,"aria-pressed":t,onClick:()=>u(e.id),className:n.cn(d,`h-auto cursor-pointer shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,t?`border-border bg-card hover:bg-muted/40`:`border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30`),children:f},e.id):(0,l.jsx)(`span`,{className:n.cn(d,`border-border bg-card cursor-default`),children:f},e.id)})})}T.displayName=`EventCalendarLegend`;function E({events:e,defaultDate:t=new Date,defaultViewMode:n=`month`,onDateChange:r,onViewModeChange:i,dataOptions:a={}}){let[o,l]=(0,s.useState)(t),[u,d]=(0,s.useState)(n),f=h(e,o,u,a),p=(0,s.useMemo)(()=>a.visibleCategories&&a.visibleCategories.length>0?e.filter(e=>a.visibleCategories.includes(e.category)):e,[e,a.visibleCategories]);return{currentDate:o,viewMode:u,calendarDays:f,visibleEvents:p,goToToday:(0,s.useCallback)(()=>{let e=new Date;l(e),r?.(e)},[r]),goToNextPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.addMonths)(o,1):(0,c.addWeeks)(o,1);l(e),r?.(e)},[o,u,r]),goToPreviousPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.subMonths)(o,1):(0,c.subWeeks)(o,1);l(e),r?.(e)},[o,u,r]),setDate:(0,s.useCallback)(e=>{l(e),r?.(e)},[r]),setViewMode:(0,s.useCallback)(e=>{d(e),i?.(e)},[i]),displayLabel:(0,s.useMemo)(()=>{if(u===`month`)return(0,c.format)(o,`MMMM yyyy`);if(u===`week`){let e=f[0]?.date,t=f[f.length-1]?.date;return e&&t?`${(0,c.format)(e,`MMM d`)} - ${(0,c.format)(t,`MMM d, yyyy`)}`:(0,c.format)(o,`MMMM yyyy`)}return(0,c.format)(o,`MMMM yyyy`)},[o,u,f]),hasEvents:(0,s.useMemo)(()=>p.length>0,[p])}}function D(e,t){if(!e)return!1;if(Array.isArray(e))return e.some(e=>e.toDateString()===t.toDateString());if(typeof e==`function`)return e(t);let n=e.dates?.some(e=>e.toDateString()===t.toDateString())??!1,r=e.predicate?.(t)??!1;return n||r}function O({events:r,categories:a,viewMode:o,onViewModeChange:c,defaultDate:u,onDateChange:d,onEventClick:f,onDayClick:m,maxEventsPerDay:h=3,showLegend:g=!0,showHeader:_=!0,showWeekends:y=!0,weekStartsOn:b,locale:S,enableCategoryFilter:C=!1,visibleCategories:w,onVisibleCategoriesChange:O,isLoading:k=!1,emptyStateMessage:A,className:j,compact:M=!1,actions:N,strings:P,dayHeadingVariant:F=`default`,dayHeadingClassName:I,renderDayHeading:L,rangeMode:R=`date`,minDate:z,maxDate:B,disabledDates:V,filterEvent:H,renderEvent:U,renderDayCell:W}){let G=e.useStrings(p,P),[K,q]=(0,s.useState)([]),J=w??K,{weekStartsOn:Y}=t.i(),X=b??Y??1,Z=e=>{let t=J.includes(e)?J.filter(t=>t!==e):[...J,e];O?O(t):q(t)},Q=E({events:r,defaultDate:u,defaultViewMode:o||`month`,onDateChange:d,onViewModeChange:c,dataOptions:{weekStartsOn:X,showWeekends:y,visibleCategories:J.length>0?J:void 0}}),ee=(0,s.useMemo)(()=>{let e=G.weekdaysShort;return X===1?[...e.slice(1),e[0]]:e},[G.weekdaysShort,X]),te=e=>{D(V,e.date)||z&&e.date<z||B&&e.date>B||m?.(e.date,e.events)},ne=(0,s.useMemo)(()=>H?Q.calendarDays.map(e=>({...e,events:e.events.filter(H),eventCount:e.events.filter(H).length,hasMultipleEvents:e.events.filter(H).length>1})):Q.calendarDays,[Q.calendarDays,H]);function re(e){return!!(D(V,e)||z&&e<z||B&&e>B)}let $=(0,s.useMemo)(()=>{let e=Q.calendarDays;if(e.length===0)return{prev:!1,next:!1};let t=e[0].date,n=e[e.length-1].date;return{prev:!!z&&t<=z,next:!!B&&n>=B}},[Q.calendarDays,z,B]);if(k)return(0,l.jsx)(`div`,{className:n.cn(`event-calendar--component`,`flex items-center justify-center py-12`),children:(0,l.jsx)(i.s,{type:`secondary`,children:G.loading})});let ie=o?c:void 0,ae=C?Z:void 0;return(0,l.jsxs)(`div`,{className:n.cn(`w-full space-y-4`,j),children:[!!_&&(0,l.jsx)(x,{currentDate:Q.currentDate,viewMode:Q.viewMode,displayLabel:Q.displayLabel,onPrevious:Q.goToPreviousPeriod,onNext:Q.goToNextPeriod,onToday:Q.goToToday,onViewModeChange:ie,onDateChange:Q.setDate,locale:S,actions:N,rangeMode:R,minDate:z,maxDate:B,prevDisabled:$.prev,nextDisabled:$.next,strings:{today:G.today,previous:G.previous,next:G.next,viewMode:G.viewMode}}),!!g&&a.length>0&&(0,l.jsx)(T,{categories:a,visibleCategories:J,onToggleCategory:ae,enableFiltering:C}),!Q.hasEvents&&A?(0,l.jsx)(`div`,{className:`flex items-center justify-center py-12 border border-dashed border-border rounded-lg`,children:(0,l.jsx)(i.s,{type:`secondary`,children:A})}):(0,l.jsxs)(`div`,{className:`bg-background rounded-lg border border-border`,children:[(0,l.jsx)(`div`,{className:n.cn(`grid grid-cols-7`,F===`bordered`&&`border-b border-border mb-0`,F===`tinted`&&`bg-muted/40 rounded-t-lg mb-0 overflow-hidden`,F===`accent`&&`bg-primary/8 rounded-t-lg mb-0 overflow-hidden`,F==="default"&&`mb-2`),children:ee.map((e,t)=>L?(0,l.jsx)(`div`,{children:L(e,t)},e):(0,l.jsx)(`div`,{className:n.cn(`text-center h-8 flex items-center justify-center`,I),children:(0,l.jsx)(i.s,{size:`xs`,weight:F===`accent`?`medium`:`regular`,className:n.cn(F==="default"&&`text-muted-foreground`,F===`tinted`&&`text-muted-foreground`,F===`bordered`&&`text-foreground`,F===`accent`&&`text-primary`),children:e})},e))}),(0,l.jsx)(`div`,{className:`grid grid-cols-7`,children:ne.map(e=>{let t=re(e.date),r=()=>(0,l.jsx)(v,{data:e,categories:a,maxEvents:h,onClick:()=>te(e),compact:M,strings:{booking:G.booking,bookings:G.bookings},renderEvent:U});return(0,l.jsx)(`div`,{className:n.cn(t&&`pointer-events-none opacity-40`),"aria-disabled":t||void 0,children:W?W(e,r):r()},e.date.toISOString())})})]})]})}O.displayName=`EventCalendar`;var k={guest:`guest`,guests:`guests`};function A({event:t,category:a,onClick:o,strings:s}){let d=e.useStrings(k,s),f=!!o,p=()=>{o&&o()},m=t.metadata||{},h=m.customer_name,g=m.guest_count,_=m.service_name,v=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(i.o,{tag:`h5`,children:t.title}),!!a&&(0,l.jsxs)(`div`,{className:`inline-flex items-center gap-1`,children:[(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full`,a.color.replace(`border-`,`bg-`))}),(0,l.jsx)(i.s,{size:`xs`,weight:`medium`,children:a.label})]})]}),!!f&&!!t.url&&(0,l.jsx)(u.ExternalLink,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`})]}),(0,l.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3`,children:[!!h&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.User,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.s,{className:`truncate`,children:h})]}),g!==void 0&&g>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.Users,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsxs)(i.s,{children:[g,` `,g===1?d.guest:d.guests]})]})]}),!!_&&(0,l.jsx)(i.s,{type:`secondary`,className:`mb-2 line-clamp-1`,children:_}),(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-2 border-t border-border/50`,children:[(0,l.jsx)(u.Calendar,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.s,{size:`xs`,type:`secondary`,children:!!t.allDay&&(0,c.format)(t.startDate,`EEEE, MMM d, yyyy`)})]})]}),y=n.cn(`w-full text-left p-4 border border-border rounded-lg bg-card transition-none`,f?`cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`:``);return f?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:p,className:n.cn(`event-calendar-event-card--component`,`h-auto flex-col items-stretch justify-start whitespace-normal shadow-none`,y),children:v}):(0,l.jsx)(`div`,{className:n.cn(`event-calendar-event-card--component`,y),children:v})}A.displayName=`EventCalendarEventCard`,exports.EventCalendar=O,exports.EventCalendarDayCell=v,exports.EventCalendarEventBadge=m,exports.EventCalendarEventCard=A,exports.EventCalendarHeader=x,exports.EventCalendarLegend=T,exports.calendarTokenDot=d,exports.defaultEventCalendarEventCardStrings=k,exports.defaultEventCalendarStrings=p,exports.getCalendarColorClasses=C,exports.getCalendarDotClass=w,exports.getCategoryById=_,exports.getEventsForDay=g,exports.resolveCategoryColorToken=f,exports.useEventCalendar=E,exports.useEventCalendarData=h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../_shared/ui-provider-CrsJ_dGn.cjs"),n=require("../../../lib/utils.cjs"),r=require("../../../_shared/button-CB8e7fui.cjs"),i=require("../../../_shared/typography-sXFd02zl.cjs"),a=require("../../../_shared/select-CG5Yq-6A.cjs"),o=require("../../../_shared/date-pickers-CT3aZpPn.cjs");let s=require("react"),c=require("date-fns"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={gray:`bg-muted-foreground`,red:`bg-destructive`,orange:`bg-warning`,amber:`bg-warning`,yellow:`bg-warning`,green:`bg-success`,blue:`bg-info`,purple:`bg-primary`};function f(e){if(!e)return`gray`;if(e.colorToken)return e.colorToken;let t=e.color??``;return t.includes(`orange`)?`orange`:t.includes(`yellow`)?`yellow`:t.includes(`amber`)?`amber`:t.includes(`purple`)?`purple`:t.includes(`green`)?`green`:t.includes(`blue`)?`blue`:t.includes(`red`)?`red`:`gray`}var p={today:`Today`,previous:`Previous`,next:`Next`,loading:`Loading…`,booking:`booking`,bookings:`bookings`,viewMode:{month:`Month`,week:`Week`,agenda:`Agenda`},weekdaysShort:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`]};function m({event:e,category:t,compact:a=!1,onClick:o}){let s=d[f(t)],u=e.allDay?null:(0,c.format)(e.startDate,`HH:mm`),p=e.metadata?.calendar_cell_title,m=typeof p==`string`&&p.trim()!==``?p:e.title,h=u?`${m} at ${u}`:m;return(0,l.jsxs)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:a?`small`:`default`,onClick:e=>{e.stopPropagation(),o?.()},className:n.cn(`event-calendar-event-badge--component`,`group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5`,`justify-start text-left shadow-none transition-colors hover:bg-accent/50`,`max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0`,a?`h-5`:`h-6`),"aria-label":h,title:typeof m==`string`?m:void 0,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,className:n.cn(`size-1.5 shrink-0 rounded-full`,s)}),(0,l.jsx)(i.s,{tag:`span`,size:`xs`,weight:`medium`,className:`min-w-0 flex-1 truncate max-sm:hidden`,children:m}),!!u&&(0,l.jsx)(i.s,{tag:`span`,size:`xs`,type:`secondary`,className:`shrink-0 whitespace-nowrap tabular-nums max-sm:hidden`,children:u})]})}m.displayName=`EventCalendarEventBadge`;function h(e,t,n,r={}){let{weekStartsOn:i=1,showWeekends:a=!0,visibleCategories:o}=r;return(0,s.useMemo)(()=>{let r=(0,c.startOfMonth)(t),s=(0,c.endOfMonth)(t),l,u;n===`month`?(l=(0,c.startOfWeek)(r,{weekStartsOn:i}),u=(0,c.endOfWeek)(s,{weekStartsOn:i})):n===`week`?(l=(0,c.startOfWeek)(t,{weekStartsOn:i}),u=(0,c.endOfWeek)(t,{weekStartsOn:i})):(l=r,u=s);let d=(0,c.eachDayOfInterval)({start:l,end:u}),f=o&&o.length>0?e.filter(e=>o.includes(e.category)):e,p=new Map;return f.forEach(e=>{let t=(0,c.startOfDay)(e.startDate);if(Number.isNaN(t.getTime()))return;let n=t;if(e.endDate&&!Number.isNaN(e.endDate.getTime())){let r=(0,c.startOfDay)(e.endDate);!Number.isNaN(r.getTime())&&r.getTime()>=t.getTime()&&(n=r)}(0,c.eachDayOfInterval)({start:t,end:n}).forEach(t=>{let n=t.toISOString().split(`T`)[0];p.has(n)||p.set(n,[]),p.get(n).push(e)})}),d.filter(e=>a||!(0,c.isWeekend)(e)).map(e=>{let n=e.toISOString().split(`T`)[0],r=[...p.get(n)||[]].sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime());return{date:e,isCurrentMonth:(0,c.isSameMonth)(e,t),isToday:(0,c.isToday)(e),isWeekend:(0,c.isWeekend)(e),events:r,eventCount:r.length,hasMultipleEvents:r.length>1}})},[e,t,n,i,a,o])}function g(e,t){return e.filter(e=>{let n=(0,c.startOfDay)(e.startDate),r=e.endDate?(0,c.startOfDay)(e.endDate):n,i=(0,c.startOfDay)(t);return(0,c.isSameDay)(i,n)||(0,c.isSameDay)(i,r)||i>n&&i<r}).sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime())}function _(e,t){return e.find(e=>e.id===t)}function v({data:e,categories:t,maxEvents:r=3,onClick:a,compact:o=!1,strings:s,renderEvent:c}){let u={booking:s?.booking??p.booking,bookings:s?.bookings??p.bookings},{date:h,isCurrentMonth:g,isToday:v,isWeekend:y,events:b,eventCount:x}=e,S=b.slice(0,r),C=Math.max(0,x-r);return(0,l.jsx)(`div`,{className:n.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`),children:(0,l.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},className:n.cn(`relative w-full min-h-24 p-2 transition-colors`,`hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10`,`flex flex-col items-start gap-1`,!g&&`text-muted-foreground opacity-50`,v&&`h-full bg-accent text-accent-foreground`,o&&`min-h-20 p-1`),"aria-label":h.toDateString(),"data-date":h.toISOString(),"data-today":v,"data-weekend":y,"data-current-month":g,children:[(0,l.jsx)(i.s,{className:n.cn(`font-normal leading-none`,v&&`font-semibold`,!g&&`text-muted-foreground`,o&&`text-xs`),children:h.getDate()}),(0,l.jsxs)(`div`,{className:`w-full space-y-0.5`,children:[S.map(n=>{let r=_(t,n.category);return c?(0,l.jsx)(`div`,{children:c(n,r)},n.id):(0,l.jsx)(m,{event:n,category:r,compact:o||e.hasMultipleEvents,onClick:()=>a()},n.id)}),C>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 px-2`,children:[(0,l.jsx)(`div`,{className:`flex items-center -space-x-1`,children:t.slice(0,3).map((e,t)=>(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full border border-background`,d[f(e)])},e.id||t))}),(0,l.jsxs)(i.s,{size:`xs`,type:`secondary`,className:`font-medium text-xs`,children:[C,` `,C===1?u.booking:u.bookings]})]})]})]})})}v.displayName=`EventCalendarDayCell`;function y(e){switch(e){case`destructive`:return{variant:`error`,buttonStyle:`solid`};case`outline`:return{variant:`secondary`,buttonStyle:`outline`};case`secondary`:return{variant:`secondary`,buttonStyle:`solid`};case`ghost`:return{variant:`secondary`,buttonStyle:`ghost`};default:return{variant:`primary`,buttonStyle:`solid`}}}var b=(e,t)=>{if(!e)return null;if(e.element)return(0,l.jsx)(`div`,{className:`event-calendar-header--component`,children:e.element},e.id||t);let i=e.icon,a=e.id||`action-${t}`,o=()=>{e.onClick?.()},s=y(e.variant);return(0,l.jsxs)(r.t,{variant:s.variant,buttonStyle:s.buttonStyle,onClick:o,className:n.cn(`h-8 gap-2`,s.className),disabled:!!e.disabled,children:[!!i&&(0,l.jsx)(i,{className:`h-4 w-4`}),e.label]},a)};function x({currentDate:t,viewMode:n,displayLabel:c,onPrevious:d,onNext:f,onToday:m,onViewModeChange:h,onDateChange:g,locale:_,actions:v,strings:y,rangeMode:x=`date`,minDate:S,maxDate:C,prevDisabled:w=!1,nextDisabled:T=!1}){let E=e.useStrings(p,y),D=(0,s.useMemo)(()=>(v||[]).filter(e=>e.isVisible!==!1),[v]);return(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-4`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,l.jsx)(i.o,{tag:`h3`,className:`text-base font-semibold`,children:c}),(0,l.jsx)(o.t,{value:{month:t.getMonth(),year:t.getFullYear()},onChange:e=>{e.date&&g?.(e.date)},fromYear:S?.getFullYear(),toYear:C?.getFullYear(),locale:_})]}),(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[D.length>0&&(0,l.jsxs)(l.Fragment,{children:[D.map((e,t)=>b(e,t)),(0,l.jsx)(`div`,{className:`h-6 w-px bg-border mx-1`})]}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`outline`,onClick:m,className:`hidden sm:inline-flex`,children:E.today}),(0,l.jsxs)(`div`,{className:`flex items-center border border-border rounded-md`,children:[(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:d,disabled:w,className:`h-8 w-8 rounded-r-none border-r`,"aria-label":E.previous,children:(0,l.jsx)(u.ChevronLeft,{className:`h-4 w-4`})}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:f,disabled:T,className:`h-8 w-8 rounded-l-none`,"aria-label":E.next,children:(0,l.jsx)(u.ChevronRight,{className:`h-4 w-4`})})]}),!!h&&(0,l.jsxs)(a.t,{value:n,onValueChange:e=>{e&&h(e)},children:[(0,l.jsx)(a.a,{className:`w-28 h-8`,children:(0,l.jsx)(a.o,{})}),(0,l.jsxs)(a.n,{children:[(0,l.jsx)(a.i,{value:`month`,children:E.viewMode.month}),(0,l.jsx)(a.i,{value:`week`,children:E.viewMode.week}),(0,l.jsx)(a.i,{value:`agenda`,children:E.viewMode.agenda})]})]})]})]})}x.displayName=`EventCalendarHeader`;var S={gray:{badgeBg:`bg-muted`,border:`border-border`,swatch:`bg-muted-foreground`},red:{badgeBg:`bg-destructive/10`,border:`border-destructive/40`,swatch:`bg-destructive`},orange:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},amber:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},yellow:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},green:{badgeBg:`bg-success/10`,border:`border-success/40`,swatch:`bg-success`},blue:{badgeBg:`bg-info/10`,border:`border-info/40`,swatch:`bg-info`},purple:{badgeBg:`bg-primary/10`,border:`border-primary/40`,swatch:`bg-primary`}};function C(e){let t=f(e);return{dot:d[t],...S[t]}}function w(e){return d[f(e)]}function T({categories:e,visibleCategories:t,onToggleCategory:a,enableFiltering:o=!1}){let s=!t||t.length===0,c=e=>o?s||t?.includes(e):!0,u=e=>{!o||!a||a(e)};return e.length===0?null:(0,l.jsx)(`div`,{role:o?`group`:void 0,"aria-label":o?`Filter event categories`:void 0,className:n.cn(`event-calendar-legend--component`,`flex flex-wrap items-center gap-1.5 py-1`),children:e.map(e=>{let t=c(e.id),a=C(e),s=e.icon,d=`group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors`,f=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:n.cn(`inline-block size-2 rounded-full`,t?a.swatch:`bg-muted-foreground/40`),"aria-hidden":`true`}),!!s&&(0,l.jsx)(s,{className:n.cn(`size-3`,t?`text-foreground`:`text-muted-foreground`),"aria-hidden":`true`}),(0,l.jsx)(i.s,{tag:`span`,size:`xs`,weight:`medium`,type:t?`main`:`secondary`,children:e.label})]});return o?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,"aria-pressed":t,onClick:()=>u(e.id),className:n.cn(d,`h-auto cursor-pointer shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,t?`border-border bg-card hover:bg-muted/40`:`border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30`),children:f},e.id):(0,l.jsx)(`span`,{className:n.cn(d,`border-border bg-card cursor-default`),children:f},e.id)})})}T.displayName=`EventCalendarLegend`;function E({events:e,defaultDate:t=new Date,defaultViewMode:n=`month`,onDateChange:r,onViewModeChange:i,dataOptions:a={}}){let[o,l]=(0,s.useState)(t),[u,d]=(0,s.useState)(n),f=h(e,o,u,a),p=(0,s.useMemo)(()=>a.visibleCategories&&a.visibleCategories.length>0?e.filter(e=>a.visibleCategories.includes(e.category)):e,[e,a.visibleCategories]);return{currentDate:o,viewMode:u,calendarDays:f,visibleEvents:p,goToToday:(0,s.useCallback)(()=>{let e=new Date;l(e),r?.(e)},[r]),goToNextPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.addMonths)(o,1):(0,c.addWeeks)(o,1);l(e),r?.(e)},[o,u,r]),goToPreviousPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.subMonths)(o,1):(0,c.subWeeks)(o,1);l(e),r?.(e)},[o,u,r]),setDate:(0,s.useCallback)(e=>{l(e),r?.(e)},[r]),setViewMode:(0,s.useCallback)(e=>{d(e),i?.(e)},[i]),displayLabel:(0,s.useMemo)(()=>{if(u===`month`)return(0,c.format)(o,`MMMM yyyy`);if(u===`week`){let e=f[0]?.date,t=f[f.length-1]?.date;return e&&t?`${(0,c.format)(e,`MMM d`)} - ${(0,c.format)(t,`MMM d, yyyy`)}`:(0,c.format)(o,`MMMM yyyy`)}return(0,c.format)(o,`MMMM yyyy`)},[o,u,f]),hasEvents:(0,s.useMemo)(()=>p.length>0,[p])}}function D(e,t){if(!e)return!1;if(Array.isArray(e))return e.some(e=>e.toDateString()===t.toDateString());if(typeof e==`function`)return e(t);let n=e.dates?.some(e=>e.toDateString()===t.toDateString())??!1,r=e.predicate?.(t)??!1;return n||r}function O({events:r,categories:a,viewMode:o,onViewModeChange:c,defaultDate:u,onDateChange:d,onEventClick:f,onDayClick:m,maxEventsPerDay:h=3,showLegend:g=!0,showHeader:_=!0,showWeekends:y=!0,weekStartsOn:b,locale:S,enableCategoryFilter:C=!1,visibleCategories:w,onVisibleCategoriesChange:O,isLoading:k=!1,emptyStateMessage:A,className:j,compact:M=!1,actions:N,strings:P,dayHeadingVariant:F=`default`,dayHeadingClassName:I,renderDayHeading:L,rangeMode:R=`date`,minDate:z,maxDate:B,disabledDates:V,filterEvent:H,renderEvent:U,renderDayCell:W}){let G=e.useStrings(p,P),[K,q]=(0,s.useState)([]),J=w??K,{weekStartsOn:Y}=t.i(),X=b??Y??1,Z=e=>{let t=J.includes(e)?J.filter(t=>t!==e):[...J,e];O?O(t):q(t)},Q=E({events:r,defaultDate:u,defaultViewMode:o||`month`,onDateChange:d,onViewModeChange:c,dataOptions:{weekStartsOn:X,showWeekends:y,visibleCategories:J.length>0?J:void 0}}),ee=(0,s.useMemo)(()=>{let e=G.weekdaysShort;return X===1?[...e.slice(1),e[0]]:e},[G.weekdaysShort,X]),te=e=>{D(V,e.date)||z&&e.date<z||B&&e.date>B||m?.(e.date,e.events)},ne=(0,s.useMemo)(()=>H?Q.calendarDays.map(e=>({...e,events:e.events.filter(H),eventCount:e.events.filter(H).length,hasMultipleEvents:e.events.filter(H).length>1})):Q.calendarDays,[Q.calendarDays,H]);function re(e){return!!(D(V,e)||z&&e<z||B&&e>B)}let $=(0,s.useMemo)(()=>{let e=Q.calendarDays;if(e.length===0)return{prev:!1,next:!1};let t=e[0].date,n=e[e.length-1].date;return{prev:!!z&&t<=z,next:!!B&&n>=B}},[Q.calendarDays,z,B]);if(k)return(0,l.jsx)(`div`,{className:n.cn(`event-calendar--component`,`flex items-center justify-center py-12`),children:(0,l.jsx)(i.s,{type:`secondary`,children:G.loading})});let ie=o?c:void 0,ae=C?Z:void 0;return(0,l.jsxs)(`div`,{className:n.cn(`w-full space-y-4`,j),children:[!!_&&(0,l.jsx)(x,{currentDate:Q.currentDate,viewMode:Q.viewMode,displayLabel:Q.displayLabel,onPrevious:Q.goToPreviousPeriod,onNext:Q.goToNextPeriod,onToday:Q.goToToday,onViewModeChange:ie,onDateChange:Q.setDate,locale:S,actions:N,rangeMode:R,minDate:z,maxDate:B,prevDisabled:$.prev,nextDisabled:$.next,strings:{today:G.today,previous:G.previous,next:G.next,viewMode:G.viewMode}}),!!g&&a.length>0&&(0,l.jsx)(T,{categories:a,visibleCategories:J,onToggleCategory:ae,enableFiltering:C}),!Q.hasEvents&&A?(0,l.jsx)(`div`,{className:`flex items-center justify-center py-12 border border-dashed border-border rounded-lg`,children:(0,l.jsx)(i.s,{type:`secondary`,children:A})}):(0,l.jsxs)(`div`,{className:`bg-background rounded-lg border border-border`,children:[(0,l.jsx)(`div`,{className:n.cn(`grid grid-cols-7`,F===`bordered`&&`border-b border-border mb-0`,F===`tinted`&&`bg-muted/40 rounded-t-lg mb-0 overflow-hidden`,F===`accent`&&`bg-primary/8 rounded-t-lg mb-0 overflow-hidden`,F==="default"&&`mb-2`),children:ee.map((e,t)=>L?(0,l.jsx)(`div`,{children:L(e,t)},e):(0,l.jsx)(`div`,{className:n.cn(`text-center h-8 flex items-center justify-center`,I),children:(0,l.jsx)(i.s,{size:`xs`,weight:F===`accent`?`medium`:`regular`,className:n.cn(F==="default"&&`text-muted-foreground`,F===`tinted`&&`text-muted-foreground`,F===`bordered`&&`text-foreground`,F===`accent`&&`text-primary`),children:e})},e))}),(0,l.jsx)(`div`,{className:`grid grid-cols-7`,children:ne.map(e=>{let t=re(e.date),r=()=>(0,l.jsx)(v,{data:e,categories:a,maxEvents:h,onClick:()=>te(e),compact:M,strings:{booking:G.booking,bookings:G.bookings},renderEvent:U});return(0,l.jsx)(`div`,{className:n.cn(t&&`pointer-events-none opacity-40`),"aria-disabled":t||void 0,children:W?W(e,r):r()},e.date.toISOString())})})]})]})}O.displayName=`EventCalendar`;var k={guest:`guest`,guests:`guests`};function A({event:t,category:a,onClick:o,strings:s}){let d=e.useStrings(k,s),f=!!o,p=()=>{o&&o()},m=t.metadata||{},h=m.customer_name,g=m.guest_count,_=m.service_name,v=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(i.o,{tag:`h5`,children:t.title}),!!a&&(0,l.jsxs)(`div`,{className:`inline-flex items-center gap-1`,children:[(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full`,a.color.replace(`border-`,`bg-`))}),(0,l.jsx)(i.s,{size:`xs`,weight:`medium`,children:a.label})]})]}),!!f&&!!t.url&&(0,l.jsx)(u.ExternalLink,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`})]}),(0,l.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3`,children:[!!h&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.User,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.s,{className:`truncate`,children:h})]}),g!==void 0&&g>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.Users,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsxs)(i.s,{children:[g,` `,g===1?d.guest:d.guests]})]})]}),!!_&&(0,l.jsx)(i.s,{type:`secondary`,className:`mb-2 line-clamp-1`,children:_}),(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-2 border-t border-border/50`,children:[(0,l.jsx)(u.Calendar,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.s,{size:`xs`,type:`secondary`,children:!!t.allDay&&(0,c.format)(t.startDate,`EEEE, MMM d, yyyy`)})]})]}),y=n.cn(`w-full text-left p-4 border border-border rounded-lg bg-card transition-none`,f?`cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`:``);return f?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:p,className:n.cn(`event-calendar-event-card--component`,`h-auto flex-col items-stretch justify-start whitespace-normal shadow-none`,y),children:v}):(0,l.jsx)(`div`,{className:n.cn(`event-calendar-event-card--component`,y),children:v})}A.displayName=`EventCalendarEventCard`,exports.EventCalendar=O,exports.EventCalendarDayCell=v,exports.EventCalendarEventBadge=m,exports.EventCalendarEventCard=A,exports.EventCalendarHeader=x,exports.EventCalendarLegend=T,exports.calendarTokenDot=d,exports.defaultEventCalendarEventCardStrings=k,exports.defaultEventCalendarStrings=p,exports.getCalendarColorClasses=C,exports.getCalendarDotClass=w,exports.getCategoryById=_,exports.getEventsForDay=g,exports.resolveCategoryColorToken=f,exports.useEventCalendar=E,exports.useEventCalendarData=h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -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\nimport type { StringsProp } from '@/lib/strings';\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-muted-foreground',\n\tred: 'bg-destructive',\n\torange: 'bg-warning',\n\tamber: 'bg-warning',\n\tyellow: 'bg-warning',\n\tgreen: 'bg-success',\n\tblue: 'bg-info',\n\tpurple: 'bg-primary',\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?: StringsProp<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?: StringsProp<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 { Button } from '@/components/base/buttons';\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\tconst accessibleLabel = timeDisplay ? `${displayTitle} at ${timeDisplay}` : displayTitle;\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize={compact ? 'small' : 'default'}\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'justify-start text-left shadow-none transition-colors hover:bg-accent/50',\n\t\t\t\t'max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0',\n\t\t\t\tcompact ? 'h-5' : 'h-6',\n\t\t\t)}\n\t\t\taria-label={accessibleLabel}\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=\"xs\"\n\t\t\t\tweight=\"medium\"\n\t\t\t\tclassName=\"min-w-0 flex-1 truncate max-sm:hidden\"\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=\"xs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName=\"shrink-0 whitespace-nowrap tabular-nums max-sm:hidden\"\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</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-xs\"\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 { useStrings } from '@/lib/strings';\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 = useStrings(defaultEventCalendarStrings, stringsProp);\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 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-muted', border: 'border-border', swatch: 'bg-muted-foreground' },\n\tred: { badgeBg: 'bg-destructive/10', border: 'border-destructive/40', swatch: 'bg-destructive' },\n\torange: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tamber: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tyellow: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tgreen: { badgeBg: 'bg-success/10', border: 'border-success/40', swatch: 'bg-success' },\n\tblue: { badgeBg: 'bg-info/10', border: 'border-info/40', swatch: 'bg-info' },\n\tpurple: { badgeBg: 'bg-primary/10', border: 'border-primary/40', swatch: 'bg-primary' },\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 { Button } from '@/components/base/buttons';\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\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"small\"\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'h-auto cursor-pointer shadow-none 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 { useStrings } from '@/lib/strings';\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 = useStrings(defaultEventCalendarStrings, stringsProp);\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 { Button } from '@/components/base/buttons';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { useStrings, type StringsProp } 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?: StringsProp<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\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'event-calendar-event-card--component',\n\t\t\t\t\t'h-auto flex-col items-stretch justify-start whitespace-normal shadow-none',\n\t\t\t\t\tcommonClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{cardContent}\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn <div className={cn('event-calendar-event-card--component', 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\nimport type { StringsProp } from '@/lib/strings';\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-muted-foreground',\n\tred: 'bg-destructive',\n\torange: 'bg-warning',\n\tamber: 'bg-warning',\n\tyellow: 'bg-warning',\n\tgreen: 'bg-success',\n\tblue: 'bg-info',\n\tpurple: 'bg-primary',\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?: StringsProp<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?: StringsProp<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 { Button } from '@/components/base/buttons';\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\tconst accessibleLabel = timeDisplay ? `${displayTitle} at ${timeDisplay}` : displayTitle;\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize={compact ? 'small' : 'default'}\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'justify-start text-left shadow-none transition-colors hover:bg-accent/50',\n\t\t\t\t'max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0',\n\t\t\t\tcompact ? 'h-5' : 'h-6',\n\t\t\t)}\n\t\t\taria-label={accessibleLabel}\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=\"xs\"\n\t\t\t\tweight=\"medium\"\n\t\t\t\tclassName=\"min-w-0 flex-1 truncate max-sm:hidden\"\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=\"xs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName=\"shrink-0 whitespace-nowrap tabular-nums max-sm:hidden\"\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</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-xs\"\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 { useStrings } from '@/lib/strings';\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 = useStrings(defaultEventCalendarStrings, stringsProp);\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-base 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 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-muted', border: 'border-border', swatch: 'bg-muted-foreground' },\n\tred: { badgeBg: 'bg-destructive/10', border: 'border-destructive/40', swatch: 'bg-destructive' },\n\torange: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tamber: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tyellow: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tgreen: { badgeBg: 'bg-success/10', border: 'border-success/40', swatch: 'bg-success' },\n\tblue: { badgeBg: 'bg-info/10', border: 'border-info/40', swatch: 'bg-info' },\n\tpurple: { badgeBg: 'bg-primary/10', border: 'border-primary/40', swatch: 'bg-primary' },\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 { Button } from '@/components/base/buttons';\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\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"small\"\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'h-auto cursor-pointer shadow-none 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 { useStrings } from '@/lib/strings';\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 = useStrings(defaultEventCalendarStrings, stringsProp);\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 { Button } from '@/components/base/buttons';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { useStrings, type StringsProp } 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?: StringsProp<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\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'event-calendar-event-card--component',\n\t\t\t\t\t'h-auto flex-col items-stretch justify-start whitespace-normal shadow-none',\n\t\t\t\t\tcommonClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{cardContent}\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn <div className={cn('event-calendar-event-card--component', commonClassName)}>{cardContent}</div>;\n}\n\nEventCalendarEventCard.displayName = 'EventCalendarEventCard';\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { useStrings as e } from "../../../lib/strings.js";
2
2
  import { i as t } from "../../../_shared/ui-provider-Dz2qXgZQ.js";
3
3
  import { cn as n } from "../../../lib/utils.js";
4
- import { t as r } from "../../../_shared/button-Be2ayMxF.js";
5
- import { o as i, s as a } from "../../../_shared/typography-5bLhAYaK.js";
4
+ import { t as r } from "../../../_shared/button-CNEMqDHK.js";
5
+ import { o as i, s as a } from "../../../_shared/typography-C_kCoR1d.js";
6
6
  import { a as o, i as s, n as c, o as l, t as u } from "../../../_shared/select-BwUUXpsb.js";
7
- import { t as d } from "../../../_shared/date-pickers-9AU8YQK2.js";
7
+ import { t as d } from "../../../_shared/date-pickers-DRp0VM7k.js";
8
8
  import { useCallback as f, useMemo as p, useState as m } from "react";
9
9
  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 ee, subWeeks as O } from "date-fns";
10
10
  import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
@@ -250,7 +250,7 @@ function J({ currentDate: t, viewMode: n, displayLabel: a, onPrevious: f, onNext
250
250
  className: "flex items-center gap-3",
251
251
  children: [/* @__PURE__ */ A(i, {
252
252
  tag: "h3",
253
- className: "text-lg font-semibold",
253
+ className: "text-base font-semibold",
254
254
  children: a
255
255
  }), /* @__PURE__ */ A(d, {
256
256
  value: {