themelia-react-ui 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/CHANGELOG.md +307 -131
  2. package/README.md +28 -8
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/{accordion-B6a3vVgA.js → accordion-Cjb6sx0G.js} +14 -13
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-ZK5RWdo6.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-ZK5RWdo6.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-CYxKfo69.js → auth-ax2BqjrI.js} +58 -54
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-BBnEJIx8.js → avatar-DAPlDvhJ.js} +7 -7
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/{badge-MrKVNzW9.js → badge-HpFqoqSY.js} +40 -40
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +40 -36
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +92 -92
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +2 -2
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +6 -6
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +14 -14
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +6 -6
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +171 -176
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +6 -6
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +79 -2
  61. package/dist/base/spinner.js.map +1 -0
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +46 -45
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZGDG-Si.js → batch-action-bar-DnUJ21NQ.js} +6 -5
  72. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  73. package/dist/blocks/admin.js +42 -42
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +260 -240
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +620 -585
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +1152 -1109
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +2 -2
  85. package/dist/blocks/onboarding.js +48 -39
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +13 -12
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/{breadcrumbs-D5t7I023.js → breadcrumbs-C-oqs1sQ.js} +5 -5
  91. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  92. package/dist/{button-QYwiyhD2.js → button-DVzspB_G.js} +2 -2
  93. package/dist/{button-QYwiyhD2.js.map → button-DVzspB_G.js.map} +1 -1
  94. package/dist/{buttons-SbIcm1HJ.js → buttons-DPZekJFu.js} +20 -15
  95. package/dist/buttons-DPZekJFu.js.map +1 -0
  96. package/dist/cards-BaBZR-AU.js +68 -0
  97. package/dist/cards-BaBZR-AU.js.map +1 -0
  98. package/dist/{chart-QfrARkXl.js → chart-ZOYyK2xG.js} +58 -55
  99. package/dist/chart-ZOYyK2xG.js.map +1 -0
  100. package/dist/{checkbox-DhB6K0bK.js → checkbox-AWIhNhmo.js} +2 -2
  101. package/dist/{checkbox-DhB6K0bK.js.map → checkbox-AWIhNhmo.js.map} +1 -1
  102. package/dist/{choice-inputs-t6w3ATNz.js → choice-inputs-CNHvARCJ.js} +49 -45
  103. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  104. package/dist/{code-block-Dgbu-CU3.js → code-block-DeneBJR_.js} +8 -8
  105. package/dist/code-block-DeneBJR_.js.map +1 -0
  106. package/dist/{collapsible-D8AEGU1-.js → collapsible-C-_l4hpy.js} +3 -3
  107. package/dist/{collapsible-D8AEGU1-.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  108. package/dist/{collection-content-uK16Grv0.js → collection-content-By56pLog.js} +3 -3
  109. package/dist/{collection-content-uK16Grv0.js.map → collection-content-By56pLog.js.map} +1 -1
  110. package/dist/combobox-C0EQW6dr.js +875 -0
  111. package/dist/combobox-C0EQW6dr.js.map +1 -0
  112. package/dist/combobox-xCQ2RMNE.js +309 -0
  113. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  114. package/dist/{command-kNR20o7x.js → command-C25VMRII.js} +7 -7
  115. package/dist/{command-kNR20o7x.js.map → command-C25VMRII.js.map} +1 -1
  116. package/dist/{comments-BpDuCUUu.js → comments-BYYlTA8E.js} +114 -105
  117. package/dist/comments-BYYlTA8E.js.map +1 -0
  118. package/dist/components/base/badge/badge.recipes.d.ts +1 -1
  119. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  120. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  121. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  122. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  123. package/dist/components/base/chart/chart.d.ts +2 -5
  124. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  125. package/dist/components/base/combobox/index.d.ts +30 -4
  126. package/dist/components/base/forms/form-sizing.d.ts +11 -3
  127. package/dist/components/base/navigation/pagination.d.ts +5 -2
  128. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  129. package/dist/components/base/table/index.d.ts +9 -2
  130. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  131. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  132. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  133. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
  134. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  135. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  136. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  137. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  138. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  139. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  140. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  141. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  142. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  143. package/dist/components/features/combobox/types.d.ts +4 -0
  144. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  145. package/dist/components/features/rich-text-editor/index.d.ts +1 -1
  146. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  147. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
  148. package/dist/components/features/table/table-header.d.ts +1 -1
  149. package/dist/components/features/table/table.strings.d.ts +55 -1
  150. package/dist/components/features/table/table.types.d.ts +17 -4
  151. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  152. package/dist/components/primitives/number.d.ts +4 -2
  153. package/dist/components/primitives/value.d.ts +3 -1
  154. package/dist/components/typography/text-link.d.ts +4 -0
  155. package/dist/components/ui/combobox.d.ts +6 -2
  156. package/dist/components/ui/item.d.ts +8 -8
  157. package/dist/components/ui/tabs.d.ts +1 -1
  158. package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
  159. package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
  160. package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
  161. package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
  162. package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
  163. package/dist/data-display-DT_khPl_.js.map +1 -0
  164. package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
  165. package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
  166. package/dist/{date-picker-CF-DtUpF.js → date-picker-ay0Pha_a.js} +594 -593
  167. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  168. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  169. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  170. package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
  171. package/dist/display-hAc1HjpI.js.map +1 -0
  172. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  173. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  174. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  175. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  176. package/dist/features/activities.js +398 -375
  177. package/dist/features/activities.js.map +1 -1
  178. package/dist/features/ai-chat.js +188 -179
  179. package/dist/features/ai-chat.js.map +1 -1
  180. package/dist/features/appointment-calendar.js +683 -0
  181. package/dist/features/appointment-calendar.js.map +1 -0
  182. package/dist/features/async-preview.js +109 -107
  183. package/dist/features/async-preview.js.map +1 -1
  184. package/dist/features/combobox.js +1 -1
  185. package/dist/features/comments.js +1 -1
  186. package/dist/features/data-view.js +137 -137
  187. package/dist/features/data-view.js.map +1 -1
  188. package/dist/features/email-composer.js +255 -255
  189. package/dist/features/email-composer.js.map +1 -1
  190. package/dist/features/event-calendar.js +254 -248
  191. package/dist/features/event-calendar.js.map +1 -1
  192. package/dist/features/filters.js +1 -1
  193. package/dist/features/global-search.js +35 -32
  194. package/dist/features/global-search.js.map +1 -1
  195. package/dist/features/kanban.js +118 -117
  196. package/dist/features/kanban.js.map +1 -1
  197. package/dist/features/map.js +233 -231
  198. package/dist/features/map.js.map +1 -1
  199. package/dist/features/media-library.js +789 -775
  200. package/dist/features/media-library.js.map +1 -1
  201. package/dist/features/mentions.js +1 -1
  202. package/dist/features/overlays.js +1 -1
  203. package/dist/features/products.js +922 -902
  204. package/dist/features/products.js.map +1 -1
  205. package/dist/features/questionnaire.js +28 -24
  206. package/dist/features/questionnaire.js.map +1 -1
  207. package/dist/features/resource-assignment.js +18 -15
  208. package/dist/features/resource-assignment.js.map +1 -1
  209. package/dist/features/resource.js +12 -12
  210. package/dist/features/resource.js.map +1 -1
  211. package/dist/features/rich-text-editor.js +2 -2
  212. package/dist/features/schema-form.js +15 -13
  213. package/dist/features/schema-form.js.map +1 -1
  214. package/dist/features/suggestions.js +3 -3
  215. package/dist/features/sync.js +11 -5
  216. package/dist/features/sync.js.map +1 -1
  217. package/dist/features/table.js +1 -1
  218. package/dist/features/theme-tweaker.js +493 -489
  219. package/dist/features/theme-tweaker.js.map +1 -1
  220. package/dist/feedback-BYIhtitP.js +239 -0
  221. package/dist/feedback-BYIhtitP.js.map +1 -0
  222. package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
  223. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  224. package/dist/{filters-BkHH53uv.js → filters-BGfvjP4d.js} +589 -580
  225. package/dist/filters-BGfvjP4d.js.map +1 -0
  226. package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
  227. package/dist/form-field-CwH9y77i.js.map +1 -0
  228. package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
  229. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  230. package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
  231. package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
  232. package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
  233. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  234. package/dist/{header-BOefOKd1.js → header-CGXuhcRm.js} +160 -153
  235. package/dist/header-CGXuhcRm.js.map +1 -0
  236. package/dist/{hooks-9k_TtmKh.js → hooks-Dkz0K2WT.js} +2 -2
  237. package/dist/{hooks-9k_TtmKh.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  238. package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
  239. package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
  240. package/dist/index.js +3 -3
  241. package/dist/input-CZw8iU99.js +21 -0
  242. package/dist/input-CZw8iU99.js.map +1 -0
  243. package/dist/input-DQdEd0YD.js +263 -0
  244. package/dist/input-DQdEd0YD.js.map +1 -0
  245. package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
  246. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  247. package/dist/item-K5_ghvze.js +275 -0
  248. package/dist/item-K5_ghvze.js.map +1 -0
  249. package/dist/layout/app-shell.js +1 -1
  250. package/dist/layout/auth.js +1 -1
  251. package/dist/layout/containers.js +1 -1
  252. package/dist/layout/header.js +1 -1
  253. package/dist/layout/hooks.js +1 -1
  254. package/dist/layout/navigation.js +1 -1
  255. package/dist/layout/page.js +1 -1
  256. package/dist/layout/settings.js +1 -1
  257. package/dist/layout/sidebar.js +2 -2
  258. package/dist/layout/workspace.js +1 -1
  259. package/dist/layout.js +10 -10
  260. package/dist/lib/affordance-geometry.generated.d.ts +71 -0
  261. package/dist/lib/editable-text-recipe.d.ts +4 -4
  262. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  263. package/dist/lib/interaction-recipes.d.ts +5 -0
  264. package/dist/lib/theme-mode-css.d.ts +7 -0
  265. package/dist/lib/tone-recipes.d.ts +8 -0
  266. package/dist/lib/ui-provider/types.d.ts +2 -2
  267. package/dist/lib/utils.js +1 -1
  268. package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
  269. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  270. package/dist/{mentions-D-uyCh01.js → mentions-utuUvH1K.js} +144 -142
  271. package/dist/mentions-utuUvH1K.js.map +1 -0
  272. package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
  273. package/dist/message-DZ_ruyUV.js.map +1 -0
  274. package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
  275. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  276. package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
  277. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  278. package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
  279. package/dist/navigation-BzhHI3lo.js.map +1 -0
  280. package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  281. package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  282. package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
  283. package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
  284. package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
  285. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  286. package/dist/{overlays-I0axtYA6.js → overlays-DNWmZrJ4.js} +14 -12
  287. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  288. package/dist/{page-B5dTH9gE.js → page-Bgl1F560.js} +8 -8
  289. package/dist/{page-B5dTH9gE.js.map → page-Bgl1F560.js.map} +1 -1
  290. package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
  291. package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
  292. package/dist/pagination-BL25hu2s.js +158 -0
  293. package/dist/pagination-BL25hu2s.js.map +1 -0
  294. package/dist/{popover-Di55PyAI.js → popover-7_m66eYW.js} +8 -7
  295. package/dist/{popover-Di55PyAI.js.map → popover-7_m66eYW.js.map} +1 -1
  296. package/dist/popover-menu-B9WWygpa.js +100 -0
  297. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  298. package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
  299. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  300. package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
  301. package/dist/primitives-BFK08r9M.js.map +1 -0
  302. package/dist/primitives.js +4 -4
  303. package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
  304. package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
  305. package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
  306. package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  307. package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
  308. package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
  309. package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
  310. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  311. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  312. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  313. package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
  314. package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
  315. package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
  316. package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
  317. package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
  318. package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
  319. package/dist/services/actions.js +1 -1
  320. package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
  321. package/dist/settings-ybnjVwbd.js.map +1 -0
  322. package/dist/{sheet-4SEvVYzA.js → sheet-CGpB3omz.js} +8 -7
  323. package/dist/{sheet-4SEvVYzA.js.map → sheet-CGpB3omz.js.map} +1 -1
  324. package/dist/{sidebar-d7Dg80ln.js → sidebar-A0ElHINE.js} +14 -13
  325. package/dist/{sidebar-d7Dg80ln.js.map → sidebar-A0ElHINE.js.map} +1 -1
  326. package/dist/{sidebar-C7WWR29L.js → sidebar-CPx_7YBa.js} +183 -182
  327. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  328. package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
  329. package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  330. package/dist/smart-card-DiC5aac3.js +604 -0
  331. package/dist/smart-card-DiC5aac3.js.map +1 -0
  332. package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
  333. package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
  334. package/dist/style.css +1 -1
  335. package/dist/table-BweFy_P9.js +1530 -0
  336. package/dist/table-BweFy_P9.js.map +1 -0
  337. package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
  338. package/dist/table-DsfzoUia.js.map +1 -0
  339. package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
  340. package/dist/tabs-CDocW5D1.js.map +1 -0
  341. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  342. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  343. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  344. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  345. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  346. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  347. package/dist/theme.css +285 -228
  348. package/dist/themes/green.css +16 -12
  349. package/dist/timelines-CwM_9IhD.js +457 -0
  350. package/dist/timelines-CwM_9IhD.js.map +1 -0
  351. package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
  352. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  353. package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
  354. package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
  355. package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
  356. package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
  357. package/dist/typography/rich-text.js +1 -1
  358. package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
  359. package/dist/typography-UTnveOEy.js.map +1 -0
  360. package/dist/typography.js +2 -2
  361. package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
  362. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  363. package/dist/ui-provider.js +2 -2
  364. package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
  365. package/dist/upload-CXyxmQBP.js.map +1 -0
  366. package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
  367. package/dist/upload-queue-Boscubn9.js.map +1 -0
  368. package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
  369. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  370. package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
  371. package/dist/utils-BRhFDwuU.js.map +1 -0
  372. package/dist/{value-inputs-TAYMX111.js → value-inputs-DXPDjvBU.js} +268 -252
  373. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  374. package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
  375. package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  376. package/dist/{workspace-DH0v0KcB.js → workspace-Cdrg7k9f.js} +34 -33
  377. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  378. package/docs/consumer-skill/SKILL.md +2 -2
  379. package/docs/consumer-skill/references/agents-md.md +1 -1
  380. package/docs/consumer-skill/references/composition.md +8 -6
  381. package/docs/consumer-skill/references/integration.md +4 -3
  382. package/docs/consumer-skill/references/public-api.json +105 -2
  383. package/docs/consumer-skill/references/review.md +7 -0
  384. package/docs/consumer-skill/references/theming.md +71 -6
  385. package/docs/consumer-skill/references/tokens.json +1 -1
  386. package/docs/consumer-skill/references/workflows.md +25 -0
  387. package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
  388. package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
  389. package/package.json +8 -4
  390. package/dist/accordion-B6a3vVgA.js.map +0 -1
  391. package/dist/action-menu-TzCoSlwL.js +0 -280
  392. package/dist/action-menu-TzCoSlwL.js.map +0 -1
  393. package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
  394. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
  395. package/dist/ai-artifact-BMJdv-6q.js +0 -1115
  396. package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
  397. package/dist/attachment-BtfhGm8i.js +0 -245
  398. package/dist/attachment-BtfhGm8i.js.map +0 -1
  399. package/dist/auth-CYxKfo69.js.map +0 -1
  400. package/dist/avatar-BBnEJIx8.js.map +0 -1
  401. package/dist/badge-MrKVNzW9.js.map +0 -1
  402. package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
  403. package/dist/breadcrumbs-D5t7I023.js.map +0 -1
  404. package/dist/buttons-SbIcm1HJ.js.map +0 -1
  405. package/dist/cards-CiiHpKYd.js +0 -66
  406. package/dist/cards-CiiHpKYd.js.map +0 -1
  407. package/dist/chart-QfrARkXl.js.map +0 -1
  408. package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
  409. package/dist/code-block-Dgbu-CU3.js.map +0 -1
  410. package/dist/combobox-2Ic8N9bL.js +0 -278
  411. package/dist/combobox-2Ic8N9bL.js.map +0 -1
  412. package/dist/combobox-DLl0bfiq.js +0 -867
  413. package/dist/combobox-DLl0bfiq.js.map +0 -1
  414. package/dist/comments-BpDuCUUu.js.map +0 -1
  415. package/dist/data-display-DafIvCl5.js.map +0 -1
  416. package/dist/date-picker-CF-DtUpF.js.map +0 -1
  417. package/dist/date-pickers-BmzxJl5l.js +0 -174
  418. package/dist/date-pickers-BmzxJl5l.js.map +0 -1
  419. package/dist/display-DsQTVzMz.js.map +0 -1
  420. package/dist/dropdown-menu-E2qmdC7o.js +0 -193
  421. package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
  422. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  423. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  424. package/dist/feedback-qNuMBtRH.js +0 -233
  425. package/dist/feedback-qNuMBtRH.js.map +0 -1
  426. package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
  427. package/dist/filters-BkHH53uv.js.map +0 -1
  428. package/dist/form-field-DUt4UxSV.js.map +0 -1
  429. package/dist/form-sizing-By94KzXE.js.map +0 -1
  430. package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
  431. package/dist/header-BOefOKd1.js.map +0 -1
  432. package/dist/input-DWhBBBww.js +0 -262
  433. package/dist/input-DWhBBBww.js.map +0 -1
  434. package/dist/input-Ddi_LSYv.js +0 -20
  435. package/dist/input-Ddi_LSYv.js.map +0 -1
  436. package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
  437. package/dist/item-DEmDiTlD.js +0 -265
  438. package/dist/item-DEmDiTlD.js.map +0 -1
  439. package/dist/media-gallery-DcTtAaeC.js.map +0 -1
  440. package/dist/mentions-D-uyCh01.js.map +0 -1
  441. package/dist/message-CdHgIWKf.js.map +0 -1
  442. package/dist/metadata-list-X5rYAKSB.js.map +0 -1
  443. package/dist/navigation-D3KwXmaq.js.map +0 -1
  444. package/dist/navigation-HJf5zxlH.js.map +0 -1
  445. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
  446. package/dist/overlays-I0axtYA6.js.map +0 -1
  447. package/dist/pagination-3bPA_a6K.js +0 -149
  448. package/dist/pagination-3bPA_a6K.js.map +0 -1
  449. package/dist/popover-menu-B71Tn2Qz.js +0 -99
  450. package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
  451. package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
  452. package/dist/primitives-B-CkiEMU.js.map +0 -1
  453. package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
  454. package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
  455. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
  456. package/dist/settings-CQW3b-Cu.js.map +0 -1
  457. package/dist/sidebar-C7WWR29L.js.map +0 -1
  458. package/dist/smart-card-lFKxn5Hu.js +0 -595
  459. package/dist/smart-card-lFKxn5Hu.js.map +0 -1
  460. package/dist/spinner-fa3h1Aif.js +0 -80
  461. package/dist/spinner-fa3h1Aif.js.map +0 -1
  462. package/dist/table-CIKyLUsy.js.map +0 -1
  463. package/dist/table-CrcLN9Io.js +0 -1458
  464. package/dist/table-CrcLN9Io.js.map +0 -1
  465. package/dist/tabs-DwBJfjxX.js.map +0 -1
  466. package/dist/text-inputs-aaK9wcDT.js +0 -326
  467. package/dist/text-inputs-aaK9wcDT.js.map +0 -1
  468. package/dist/theme-scope-kStaAer0.js +0 -39
  469. package/dist/theme-scope-kStaAer0.js.map +0 -1
  470. package/dist/timelines-C_SBwHNP.js +0 -442
  471. package/dist/timelines-C_SBwHNP.js.map +0 -1
  472. package/dist/tone-recipes-CPoExcTE.js.map +0 -1
  473. package/dist/typography-DTRkE9zL.js.map +0 -1
  474. package/dist/ui-provider-1D_NSYzO.js.map +0 -1
  475. package/dist/upload-BO8-CLN6.js.map +0 -1
  476. package/dist/upload-queue-EOC8g1gf.js.map +0 -1
  477. package/dist/usage-card-obRaBskq.js.map +0 -1
  478. package/dist/utils-l5LpDw2z.js.map +0 -1
  479. package/dist/value-inputs-TAYMX111.js.map +0 -1
  480. package/dist/workspace-DH0v0KcB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","names":["_Fragment","Text","ICON_SIZE_CLASSNAMES","Fragment$1","useEmblaCarousel","defaultCarouselStrings","CarouselContext","createContext","useCarousel","context","useContext","Carousel","forwardRef","stringsProp","props","strings","useStrings","carouselRef","api","opts","orientation","plugins","canScrollPrev","setCanScrollPrev","useState","canScrollNext","setCanScrollNext","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onSelect","useCallback","currentApi","scrollPrev","scrollNext","scrollTo","index","handleKeyDown","isPrevKey","event","isNextKey","useEffect","setApi","controlPlacement","cn","className","CarouselContent","CarouselItem","getCarouselControlPlacementClass","placement","direction","carouselControlPlacementTone","carouselNavigationAlignClass","carouselDotClassName","carouselDotSelectedClassName","CarouselPrevious","resolvedPlacement","Button","disabled","onClick","children","ChevronLeft","CarouselNext","ChevronRight","CarouselNavigation","align","previousProps","showDots","CarouselDots","dotsProps","nextProps","paginationStyle","CarouselDot","dotClassName","selected","label"],"sources":["../../src/components/base/carousel/carousel.strings.ts","../../src/components/base/carousel/carousel.tsx"],"sourcesContent":["export interface CarouselStrings {\n\tpreviousSlide: string;\n\tnextSlide: string;\n\tgoToSlide: string;\n}\n\nexport const defaultCarouselStrings: CarouselStrings = {\n\tpreviousSlide: 'Previous slide',\n\tnextSlide: 'Next slide',\n\tgoToSlide: 'Go to slide {index} of {total}',\n};\n","/**\n * Carousel — Embla-backed base carousel primitive.\n *\n * Package-owned wrapper around `embla-carousel-react` with library Button\n * controls, keyboard navigation, overridable accessible labels, and stable\n * BEM hooks. The optional Embla peer is isolated to `base/carousel`.\n */\nimport {\n\tcreateContext,\n\tforwardRef,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\ttype ComponentPropsWithoutRef,\n\ttype KeyboardEvent,\n\ttype ReactNode,\n} from 'react';\nimport useEmblaCarousel, {\n\ttype UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\n\nimport { Button, type ButtonProps } from '../buttons';\nimport { ICON_SIZE_CLASSNAMES } from '../display/icon-size';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport {\n\tdefaultCarouselStrings,\n\ttype CarouselStrings,\n} from './carousel.strings';\n\nexport type CarouselApi = UseEmblaCarouselType[1];\nexport type CarouselOptions = Parameters<typeof useEmblaCarousel>[0];\nexport type CarouselPlugin = Parameters<typeof useEmblaCarousel>[1];\nexport type CarouselOrientation = 'horizontal' | 'vertical';\nexport type CarouselControlPlacement = 'outside' | 'inside' | 'overlay' | 'inline';\nexport type CarouselNavigationAlign = 'start' | 'center' | 'end' | 'between';\nexport type CarouselPaginationStyle = 'dot' | 'pill';\n\nexport interface CarouselProps extends ComponentPropsWithoutRef<'div'> {\n\t/** Options forwarded to the underlying Embla carousel. */\n\topts?: CarouselOptions;\n\t/** Embla plugins — autoplay, autoscroll, and similar. */\n\tplugins?: CarouselPlugin;\n\t/** Scroll axis. Default: `horizontal`. */\n\torientation?: CarouselOrientation;\n\t/**\n\t * Where the previous/next controls sit relative to the viewport. Default:\n\t * `outside`.\n\t *\n\t * `outside` positions the controls 2.75rem beyond the viewport edge, so the\n\t * caller must reserve a matching intrinsic control gutter or they render\n\t * outside the visible box — `px-11` horizontally, `py-11` vertically:\n\t *\n\t * ```tsx\n\t * <Carousel className=\"w-full max-w-2xl px-11\">\n\t * ```\n\t *\n\t * Use `inside` to overlay the controls on the viewport and skip the gutter\n\t * entirely; they get an opaque background so slide content never shows\n\t * through. `overlay` adds a shadow for media slides, and `inline` keeps\n\t * the controls in document flow (see `CarouselNavigation`).\n\t */\n\tcontrolPlacement?: CarouselControlPlacement;\n\t/** Receives the carousel API so the consumer can drive it from outside. */\n\tsetApi?: (api: CarouselApi) => void;\n\t/** Overrides the previous/next accessible names. */\n\tstrings?: StringsProp<CarouselStrings>;\n}\n\ninterface CarouselContextValue {\n\tcarouselRef: ReturnType<typeof useEmblaCarousel>[0];\n\tapi: CarouselApi;\n\t/** Options forwarded to the underlying Embla carousel. */\n\topts?: CarouselOptions;\n\t/** Scroll axis. Default: `horizontal`. */\n\torientation: CarouselOrientation;\n\t/** Where the previous/next controls sit relative to the viewport. Default: `outside`. */\n\tcontrolPlacement: CarouselControlPlacement;\n\tscrollPrev: () => void;\n\tscrollNext: () => void;\n\tscrollTo: (index: number) => void;\n\tcanScrollPrev: boolean;\n\tcanScrollNext: boolean;\n\tselectedIndex: number;\n\tscrollSnaps: number[];\n\t/** Overrides the previous/next accessible names. */\n\tstrings: CarouselStrings;\n}\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null);\n\nfunction useCarousel(): CarouselContextValue {\n\tconst context = useContext(CarouselContext);\n\n\tif (!context) {\n\t\tthrow new Error('useCarousel must be used within a <Carousel />');\n\t}\n\n\treturn context;\n}\n\nconst Carousel = forwardRef<HTMLDivElement, CarouselProps>(function Carousel(\n\t{\n\t\torientation = 'horizontal',\n\t\tcontrolPlacement = 'outside',\n\t\topts,\n\t\tsetApi,\n\t\tplugins,\n\t\tclassName,\n\t\tchildren,\n\t\tstrings: stringsProp,\n\t\t...props\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultCarouselStrings, stringsProp);\n\tconst [carouselRef, api] = useEmblaCarousel(\n\t\t{\n\t\t\t...opts,\n\t\t\taxis: orientation === 'horizontal' ? 'x' : 'y',\n\t\t},\n\t\tplugins,\n\t);\n\tconst [canScrollPrev, setCanScrollPrev] = useState(false);\n\tconst [canScrollNext, setCanScrollNext] = useState(false);\n\tconst [selectedIndex, setSelectedIndex] = useState(0);\n\tconst [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n\tconst onSelect = useCallback((currentApi: NonNullable<CarouselApi>) => {\n\t\tsetCanScrollPrev(currentApi.canScrollPrev());\n\t\tsetCanScrollNext(currentApi.canScrollNext());\n\t\tsetSelectedIndex(currentApi.selectedScrollSnap());\n\t\tsetScrollSnaps(currentApi.scrollSnapList());\n\t}, []);\n\n\tconst scrollPrev = useCallback(() => {\n\t\tapi?.scrollPrev();\n\t}, [api]);\n\n\tconst scrollNext = useCallback(() => {\n\t\tapi?.scrollNext();\n\t}, [api]);\n\n\tconst scrollTo = useCallback((index: number) => {\n\t\tapi?.scrollTo(index);\n\t}, [api]);\n\n\tconst handleKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLDivElement>) => {\n\t\t\tconst isPrevKey =\n\t\t\t\torientation === 'vertical'\n\t\t\t\t\t? event.key === 'ArrowUp'\n\t\t\t\t\t: event.key === 'ArrowLeft';\n\t\t\tconst isNextKey =\n\t\t\t\torientation === 'vertical'\n\t\t\t\t\t? event.key === 'ArrowDown'\n\t\t\t\t\t: event.key === 'ArrowRight';\n\n\t\t\tif (isPrevKey) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tscrollPrev();\n\t\t\t} else if (isNextKey) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tscrollNext();\n\t\t\t}\n\t\t},\n\t\t[orientation, scrollNext, scrollPrev],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!api) return;\n\t\tsetApi?.(api);\n\t}, [api, setApi]);\n\n\tuseEffect(() => {\n\t\tif (!api) return;\n\n\t\tonSelect(api);\n\t\tapi.on('reInit', onSelect);\n\t\tapi.on('select', onSelect);\n\n\t\treturn () => {\n\t\t\tapi.off('reInit', onSelect);\n\t\t\tapi.off('select', onSelect);\n\t\t};\n\t}, [api, onSelect]);\n\n\treturn (\n\t\t<CarouselContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcarouselRef,\n\t\t\t\tapi,\n\t\t\t\topts,\n\t\t\t\torientation,\n\t\t\t\tcontrolPlacement,\n\t\t\t\tscrollPrev,\n\t\t\t\tscrollNext,\n\t\t\t\tscrollTo,\n\t\t\t\tcanScrollPrev,\n\t\t\t\tcanScrollNext,\n\t\t\t\tselectedIndex,\n\t\t\t\tscrollSnaps,\n\t\t\t\tstrings,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tonKeyDownCapture={handleKeyDown}\n\t\t\t\trole=\"region\"\n\t\t\t\taria-roledescription=\"carousel\"\n\t\t\t\tdata-slot=\"carousel\"\n\t\t\t\tdata-orientation={orientation}\n\t\t\t\tdata-control-placement={controlPlacement}\n\t\t\t\tclassName={cn('carousel--component relative', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</CarouselContext.Provider>\n\t);\n});\nCarousel.displayName = 'Carousel';\n\nconst CarouselContent = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction CarouselContent({ className, ...props }, ref) {\n\t\tconst { carouselRef, orientation } = useCarousel();\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={carouselRef}\n\t\t\t\tclassName=\"carousel--viewport overflow-hidden\"\n\t\t\t\tdata-slot=\"carousel-viewport\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tdata-slot=\"carousel-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'carousel--content flex',\n\t\t\t\t\t\torientation === 'horizontal' ? '-ms-space-xl' : '-mt-space-xl flex-col',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n);\nCarouselContent.displayName = 'CarouselContent';\n\nconst CarouselItem = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction CarouselItem({ className, ...props }, ref) {\n\t\tconst { orientation } = useCarousel();\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\trole=\"group\"\n\t\t\t\taria-roledescription=\"slide\"\n\t\t\t\tdata-slot=\"carousel-item\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--item min-w-0 shrink-0 grow-0 basis-full',\n\t\t\t\t\torientation === 'horizontal' ? 'ps-space-xl' : 'pt-space-xl',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nCarouselItem.displayName = 'CarouselItem';\n\nfunction getCarouselControlPlacementClass(\n\tdirection: 'previous' | 'next',\n\torientation: CarouselOrientation,\n\tplacement: CarouselControlPlacement,\n) {\n\tif (placement === 'inline') {\n\t\treturn 'relative translate-x-0 translate-y-0 rotate-0 active:not-aria-[haspopup]:translate-y-0';\n\t}\n\n\tif (orientation === 'vertical') {\n\t\tif (direction === 'previous') {\n\t\t\treturn placement === 'outside'\n\t\t\t\t? 'absolute -top-11 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0'\n\t\t\t\t: 'absolute top-2 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0';\n\t\t}\n\n\t\treturn placement === 'outside'\n\t\t\t? 'absolute -bottom-11 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0'\n\t\t\t: 'absolute bottom-2 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0';\n\t}\n\n\tif (direction === 'previous') {\n\t\treturn placement === 'outside'\n\t\t\t? 'absolute top-1/2 -left-11 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2'\n\t\t\t: 'absolute top-1/2 left-2 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2';\n\t}\n\n\treturn placement === 'outside'\n\t\t? 'absolute top-1/2 -right-11 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2'\n\t\t: 'absolute top-1/2 right-2 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2';\n}\n\n// Controls that sit over slide content get an opaque, unblurred surface so the\n// arrow stays legible on any slide; `overlay` adds elevation for media slides.\nconst carouselControlPlacementTone: Record<CarouselControlPlacement, string> = {\n\toutside: '',\n\tinside: 'z-10 bg-background',\n\toverlay: 'z-10 bg-background shadow-md',\n\tinline: '',\n};\n\nconst carouselNavigationAlignClass: Record<CarouselNavigationAlign, string> = {\n\tstart: 'justify-start',\n\tcenter: 'justify-center',\n\tend: 'justify-end',\n\tbetween: 'justify-between',\n};\n\n// Inactive marks share one visible fill in both themes; the selected mark is the\n// foreground (and, for pills, wider). A border-on-muted dot vanished on dark pages.\nconst carouselDotClassName: Record<CarouselPaginationStyle, string> = {\n\tdot: 'size-2.5 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground',\n\tpill: 'h-2 w-2 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground',\n};\n\nconst carouselDotSelectedClassName: Record<CarouselPaginationStyle, string> = {\n\tdot: 'bg-foreground hover:bg-foreground',\n\tpill: 'w-5 bg-foreground hover:bg-foreground',\n};\n\nexport interface CarouselControlProps extends Omit<ButtonProps, 'children' | 'href'> {\n\tchildren?: ReactNode;\n\t/** Where the controls sit relative to the viewport. */\n\tplacement?: CarouselControlPlacement;\n}\n\nconst CarouselPrevious = forwardRef<HTMLButtonElement, CarouselControlProps>(\n\tfunction CarouselPrevious(\n\t\t{\n\t\t\tclassName,\n\t\t\ttone = 'secondary',\n\t\t\tbuttonStyle = 'outline',\n\t\t\tsize = 'sm',\n\t\t\ticonOnly = true,\n\t\t\tplacement,\n\t\t\tonClick,\n\t\t\tdisabled,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst {\n\t\t\torientation,\n\t\t\tcontrolPlacement,\n\t\t\tscrollPrev,\n\t\t\tcanScrollPrev,\n\t\t\tstrings,\n\t\t} = useCarousel();\n\t\tconst resolvedPlacement = placement ?? controlPlacement;\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-slot=\"carousel-previous\"\n\t\t\t\tdata-placement={resolvedPlacement}\n\t\t\t\ttone={tone}\n\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\tsize={size}\n\t\t\t\ticonOnly={iconOnly}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--previous touch-manipulation',\n\t\t\t\t\tgetCarouselControlPlacementClass('previous', orientation, resolvedPlacement),\n\t\t\t\t\tcarouselControlPlacementTone[resolvedPlacement],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tdisabled={disabled || !canScrollPrev}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) scrollPrev();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ChevronLeft className={ICON_SIZE_CLASSNAMES.sm} aria-hidden=\"true\" />\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t{strings.previousSlide}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t);\n\t},\n);\nCarouselPrevious.displayName = 'CarouselPrevious';\n\nconst CarouselNext = forwardRef<HTMLButtonElement, CarouselControlProps>(\n\tfunction CarouselNext(\n\t\t{\n\t\t\tclassName,\n\t\t\ttone = 'secondary',\n\t\t\tbuttonStyle = 'outline',\n\t\t\tsize = 'sm',\n\t\t\ticonOnly = true,\n\t\t\tplacement,\n\t\t\tonClick,\n\t\t\tdisabled,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst {\n\t\t\torientation,\n\t\t\tcontrolPlacement,\n\t\t\tscrollNext,\n\t\t\tcanScrollNext,\n\t\t\tstrings,\n\t\t} = useCarousel();\n\t\tconst resolvedPlacement = placement ?? controlPlacement;\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-slot=\"carousel-next\"\n\t\t\t\tdata-placement={resolvedPlacement}\n\t\t\t\ttone={tone}\n\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\tsize={size}\n\t\t\t\ticonOnly={iconOnly}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--next touch-manipulation',\n\t\t\t\t\tgetCarouselControlPlacementClass('next', orientation, resolvedPlacement),\n\t\t\t\t\tcarouselControlPlacementTone[resolvedPlacement],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tdisabled={disabled || !canScrollNext}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) scrollNext();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ChevronRight className={ICON_SIZE_CLASSNAMES.sm} aria-hidden=\"true\" />\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t{strings.nextSlide}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t);\n\t},\n);\nCarouselNext.displayName = 'CarouselNext';\n\nexport interface CarouselNavigationProps extends ComponentPropsWithoutRef<'div'> {\n\t/** Alignment of the dot cluster. */\n\talign?: CarouselNavigationAlign;\n\t/** Renders the pagination dots. */\n\tshowDots?: boolean;\n\t/** Props forwarded to the previous control. */\n\tpreviousProps?: CarouselControlProps;\n\t/** Props forwarded to the next control. */\n\tnextProps?: CarouselControlProps;\n\t/** Props forwarded to the dot cluster. */\n\tdotsProps?: CarouselDotsProps;\n}\n\nconst CarouselNavigation = forwardRef<HTMLDivElement, CarouselNavigationProps>(\n\tfunction CarouselNavigation(\n\t\t{\n\t\t\talign = 'center',\n\t\t\tshowDots = true,\n\t\t\tpreviousProps,\n\t\t\tnextProps,\n\t\t\tdotsProps,\n\t\t\tclassName,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"carousel-navigation\"\n\t\t\t\tdata-align={align}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--navigation flex flex-wrap items-center gap-space-md',\n\t\t\t\t\tcarouselNavigationAlignClass[align],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<CarouselPrevious placement=\"inline\" {...previousProps} />\n\t\t\t\t\t\t{showDots && <CarouselDots {...dotsProps} />}\n\t\t\t\t\t\t<CarouselNext placement=\"inline\" {...nextProps} />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nCarouselNavigation.displayName = 'CarouselNavigation';\n\nexport interface CarouselDotsProps extends ComponentPropsWithoutRef<'div'> {\n\t/** Merged onto each dot. */\n\tdotClassName?: string;\n\t/** Visual treatment of the pagination dots. */\n\tpaginationStyle?: CarouselPaginationStyle;\n}\n\nconst CarouselDots = forwardRef<HTMLDivElement, CarouselDotsProps>(\n\tfunction CarouselDots(\n\t\t{\n\t\t\tclassName,\n\t\t\tdotClassName,\n\t\t\tpaginationStyle = 'dot',\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst { scrollSnaps } = useCarousel();\n\n\t\tif (scrollSnaps.length <= 1) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"carousel-dots\"\n\t\t\t\tdata-pagination-style={paginationStyle}\n\t\t\t\tclassName={cn('carousel--dots flex flex-wrap items-center justify-center gap-space-sm', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{scrollSnaps.map((_, index) => (\n\t\t\t\t\t<CarouselDot\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\tpaginationStyle={paginationStyle}\n\t\t\t\t\t\tclassName={dotClassName}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t},\n);\nCarouselDots.displayName = 'CarouselDots';\n\nexport interface CarouselDotProps\n\textends Omit<ButtonProps, 'children' | 'href'> {\n\tindex: number;\n\tchildren?: ReactNode;\n\t/** Visual treatment of the pagination dots. */\n\tpaginationStyle?: CarouselPaginationStyle;\n}\n\nconst CarouselDot = forwardRef<HTMLButtonElement, CarouselDotProps>(\n\tfunction CarouselDot(\n\t\t{\n\t\t\tindex,\n\t\t\tpaginationStyle = 'dot',\n\t\t\tclassName,\n\t\t\ttone = 'secondary',\n\t\t\tbuttonStyle = 'ghost',\n\t\t\tsize = 'sm',\n\t\t\ticonOnly = true,\n\t\t\tonClick,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst { selectedIndex, scrollSnaps, scrollTo, strings } = useCarousel();\n\t\tconst selected = selectedIndex === index;\n\t\tconst label = strings.goToSlide\n\t\t\t.replace('{index}', String(index + 1))\n\t\t\t.replace('{total}', String(scrollSnaps.length));\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-slot=\"carousel-dot\"\n\t\t\t\tdata-selected={selected ? '' : undefined}\n\t\t\t\tdata-pagination-style={paginationStyle}\n\t\t\t\taria-label={label}\n\t\t\t\taria-current={selected ? 'true' : undefined}\n\t\t\t\ttone={tone}\n\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\tsize={size}\n\t\t\t\ticonOnly={iconOnly}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--dot min-w-0 shrink-0 p-0 active:not-aria-[haspopup]:translate-y-0',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) scrollTo(index);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children ?? <span aria-hidden=\"true\" className={cn('carousel--dot-mark box-border block transition-[width,background-color,border-color] duration-200', carouselDotClassName[paginationStyle], selected && carouselDotSelectedClassName[paginationStyle])} />}\n\t\t\t</Button>\n\t\t);\n\t},\n);\nCarouselDot.displayName = 'CarouselDot';\n\nexport {\n\tCarousel,\n\tCarouselContent,\n\tCarouselItem,\n\tCarouselPrevious,\n\tCarouselNext,\n\tCarouselNavigation,\n\tCarouselDots,\n\tCarouselDot,\n\tuseCarousel,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"carousel.js","names":["_Fragment","Text","ICON_SIZE_CLASSNAMES","Fragment$1","useEmblaCarousel","defaultCarouselStrings","CarouselContext","createContext","useCarousel","context","useContext","Carousel","forwardRef","stringsProp","props","strings","useStrings","carouselRef","api","opts","orientation","plugins","canScrollPrev","setCanScrollPrev","useState","canScrollNext","setCanScrollNext","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onSelect","useCallback","currentApi","scrollPrev","scrollNext","scrollTo","index","handleKeyDown","onKeyDown","event","target","isPrevKey","isNextKey","useEffect","setApi","controlPlacement","cn","className","CarouselContent","CarouselItem","getCarouselControlPlacementClass","placement","direction","carouselControlPlacementTone","carouselNavigationAlignClass","carouselDotClassName","carouselDotSelectedClassName","CarouselPrevious","resolvedPlacement","Button","disabled","onClick","children","ChevronLeft","CarouselNext","ChevronRight","CarouselNavigation","align","previousProps","showDots","CarouselDots","dotsProps","nextProps","paginationStyle","CarouselDot","dotClassName","selected","label"],"sources":["../../src/components/base/carousel/carousel.strings.ts","../../src/components/base/carousel/carousel.tsx"],"sourcesContent":["export interface CarouselStrings {\n\tpreviousSlide: string;\n\tnextSlide: string;\n\tgoToSlide: string;\n}\n\nexport const defaultCarouselStrings: CarouselStrings = {\n\tpreviousSlide: 'Previous slide',\n\tnextSlide: 'Next slide',\n\tgoToSlide: 'Go to slide {index} of {total}',\n};\n","/**\n * Carousel — Embla-backed base carousel primitive.\n *\n * Package-owned wrapper around `embla-carousel-react` with library Button\n * controls, keyboard navigation, overridable accessible labels, and stable\n * BEM hooks. The optional Embla peer is isolated to `base/carousel`.\n */\nimport {\n\tcreateContext,\n\tforwardRef,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\ttype ComponentPropsWithoutRef,\n\ttype KeyboardEvent,\n\ttype ReactNode,\n} from 'react';\nimport useEmblaCarousel, {\n\ttype UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\n\nimport { Button, type ButtonProps } from '../buttons';\nimport { ICON_SIZE_CLASSNAMES } from '../display/icon-size';\nimport { Text } from '../../typography';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport {\n\tdefaultCarouselStrings,\n\ttype CarouselStrings,\n} from './carousel.strings';\n\nexport type CarouselApi = UseEmblaCarouselType[1];\nexport type CarouselOptions = Parameters<typeof useEmblaCarousel>[0];\nexport type CarouselPlugin = Parameters<typeof useEmblaCarousel>[1];\nexport type CarouselOrientation = 'horizontal' | 'vertical';\nexport type CarouselControlPlacement = 'outside' | 'inside' | 'overlay' | 'inline';\nexport type CarouselNavigationAlign = 'start' | 'center' | 'end' | 'between';\nexport type CarouselPaginationStyle = 'dot' | 'pill';\n\nexport interface CarouselProps extends ComponentPropsWithoutRef<'div'> {\n\t/** Options forwarded to the underlying Embla carousel. */\n\topts?: CarouselOptions;\n\t/** Embla plugins — autoplay, autoscroll, and similar. */\n\tplugins?: CarouselPlugin;\n\t/** Scroll axis. Default: `horizontal`. */\n\torientation?: CarouselOrientation;\n\t/**\n\t * Where the previous/next controls sit relative to the viewport. Default:\n\t * `outside`.\n\t *\n\t * `outside` positions the controls 2.75rem beyond the viewport edge, so the\n\t * caller must reserve a matching intrinsic control gutter or they render\n\t * outside the visible box — `px-11` horizontally, `py-11` vertically:\n\t *\n\t * ```tsx\n\t * <Carousel className=\"w-full max-w-2xl px-11\">\n\t * ```\n\t *\n\t * Use `inside` to overlay the controls on the viewport and skip the gutter\n\t * entirely; they get an opaque background so slide content never shows\n\t * through. `overlay` adds a shadow for media slides, and `inline` keeps\n\t * the controls in document flow (see `CarouselNavigation`).\n\t */\n\tcontrolPlacement?: CarouselControlPlacement;\n\t/** Receives the carousel API so the consumer can drive it from outside. */\n\tsetApi?: (api: CarouselApi) => void;\n\t/** Overrides the previous/next accessible names. */\n\tstrings?: StringsProp<CarouselStrings>;\n}\n\ninterface CarouselContextValue {\n\tcarouselRef: ReturnType<typeof useEmblaCarousel>[0];\n\tapi: CarouselApi;\n\t/** Options forwarded to the underlying Embla carousel. */\n\topts?: CarouselOptions;\n\t/** Scroll axis. Default: `horizontal`. */\n\torientation: CarouselOrientation;\n\t/** Where the previous/next controls sit relative to the viewport. Default: `outside`. */\n\tcontrolPlacement: CarouselControlPlacement;\n\tscrollPrev: () => void;\n\tscrollNext: () => void;\n\tscrollTo: (index: number) => void;\n\tcanScrollPrev: boolean;\n\tcanScrollNext: boolean;\n\tselectedIndex: number;\n\tscrollSnaps: number[];\n\t/** Overrides the previous/next accessible names. */\n\tstrings: CarouselStrings;\n}\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null);\n\nfunction useCarousel(): CarouselContextValue {\n\tconst context = useContext(CarouselContext);\n\n\tif (!context) {\n\t\tthrow new Error('useCarousel must be used within a <Carousel />');\n\t}\n\n\treturn context;\n}\n\nconst Carousel = forwardRef<HTMLDivElement, CarouselProps>(function Carousel(\n\t{\n\t\torientation = 'horizontal',\n\t\tcontrolPlacement = 'outside',\n\t\topts,\n\t\tsetApi,\n\t\tplugins,\n\t\tclassName,\n\t\tchildren,\n\t\tonKeyDown,\n\t\tstrings: stringsProp,\n\t\t...props\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultCarouselStrings, stringsProp);\n\tconst [carouselRef, api] = useEmblaCarousel(\n\t\t{\n\t\t\t...opts,\n\t\t\taxis: orientation === 'horizontal' ? 'x' : 'y',\n\t\t},\n\t\tplugins,\n\t);\n\tconst [canScrollPrev, setCanScrollPrev] = useState(false);\n\tconst [canScrollNext, setCanScrollNext] = useState(false);\n\tconst [selectedIndex, setSelectedIndex] = useState(0);\n\tconst [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n\tconst onSelect = useCallback((currentApi: NonNullable<CarouselApi>) => {\n\t\tsetCanScrollPrev(currentApi.canScrollPrev());\n\t\tsetCanScrollNext(currentApi.canScrollNext());\n\t\tsetSelectedIndex(currentApi.selectedScrollSnap());\n\t\tsetScrollSnaps(currentApi.scrollSnapList());\n\t}, []);\n\n\tconst scrollPrev = useCallback(() => {\n\t\tapi?.scrollPrev();\n\t}, [api]);\n\n\tconst scrollNext = useCallback(() => {\n\t\tapi?.scrollNext();\n\t}, [api]);\n\n\tconst scrollTo = useCallback((index: number) => {\n\t\tapi?.scrollTo(index);\n\t}, [api]);\n\n\tconst handleKeyDown = useCallback(\n\t\t(event: KeyboardEvent<HTMLDivElement>) => {\n\t\t\t// Let composed controls and the consumer handle their own keyboard input\n\t\t\t// before deciding whether this arrow belongs to carousel navigation.\n\t\t\tonKeyDown?.(event);\n\t\t\tif (event.defaultPrevented || event.nativeEvent.isComposing || event.altKey || event.ctrlKey || event.metaKey) return;\n\t\t\tconst target = event.target as HTMLElement;\n\t\t\tif (target.closest('[data-slot=\"carousel\"]') !== event.currentTarget) return;\n\t\t\tif (target.closest('input, textarea, select, [contenteditable]:not([contenteditable=\"false\"]), [role=\"slider\"], [role=\"spinbutton\"], [role=\"combobox\"]')) return;\n\t\t\tconst isPrevKey =\n\t\t\t\torientation === 'vertical'\n\t\t\t\t\t? event.key === 'ArrowUp'\n\t\t\t\t\t: event.key === 'ArrowLeft';\n\t\t\tconst isNextKey =\n\t\t\t\torientation === 'vertical'\n\t\t\t\t\t? event.key === 'ArrowDown'\n\t\t\t\t\t: event.key === 'ArrowRight';\n\n\t\t\tif (isPrevKey) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tscrollPrev();\n\t\t\t} else if (isNextKey) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tscrollNext();\n\t\t\t}\n\t\t},\n\t\t[onKeyDown, orientation, scrollNext, scrollPrev],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!api) return;\n\t\tsetApi?.(api);\n\t}, [api, setApi]);\n\n\tuseEffect(() => {\n\t\tif (!api) return;\n\n\t\tonSelect(api);\n\t\tapi.on('reInit', onSelect);\n\t\tapi.on('select', onSelect);\n\n\t\treturn () => {\n\t\t\tapi.off('reInit', onSelect);\n\t\t\tapi.off('select', onSelect);\n\t\t};\n\t}, [api, onSelect]);\n\n\treturn (\n\t\t<CarouselContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcarouselRef,\n\t\t\t\tapi,\n\t\t\t\topts,\n\t\t\t\torientation,\n\t\t\t\tcontrolPlacement,\n\t\t\t\tscrollPrev,\n\t\t\t\tscrollNext,\n\t\t\t\tscrollTo,\n\t\t\t\tcanScrollPrev,\n\t\t\t\tcanScrollNext,\n\t\t\t\tselectedIndex,\n\t\t\t\tscrollSnaps,\n\t\t\t\tstrings,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\trole=\"region\"\n\t\t\t\taria-roledescription=\"carousel\"\n\t\t\t\tdata-slot=\"carousel\"\n\t\t\t\tdata-orientation={orientation}\n\t\t\t\tdata-control-placement={controlPlacement}\n\t\t\t\tclassName={cn('carousel--component relative', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</CarouselContext.Provider>\n\t);\n});\nCarousel.displayName = 'Carousel';\n\nconst CarouselContent = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction CarouselContent({ className, ...props }, ref) {\n\t\tconst { carouselRef, orientation } = useCarousel();\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={carouselRef}\n\t\t\t\tclassName=\"carousel--viewport overflow-hidden\"\n\t\t\t\tdata-slot=\"carousel-viewport\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tdata-slot=\"carousel-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'carousel--content flex',\n\t\t\t\t\t\torientation === 'horizontal' ? '-ms-space-xl' : '-mt-space-xl flex-col',\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n);\nCarouselContent.displayName = 'CarouselContent';\n\nconst CarouselItem = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction CarouselItem({ className, ...props }, ref) {\n\t\tconst { orientation } = useCarousel();\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\trole=\"group\"\n\t\t\t\taria-roledescription=\"slide\"\n\t\t\t\tdata-slot=\"carousel-item\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--item min-w-0 shrink-0 grow-0 basis-full',\n\t\t\t\t\torientation === 'horizontal' ? 'ps-space-xl' : 'pt-space-xl',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nCarouselItem.displayName = 'CarouselItem';\n\nfunction getCarouselControlPlacementClass(\n\tdirection: 'previous' | 'next',\n\torientation: CarouselOrientation,\n\tplacement: CarouselControlPlacement,\n) {\n\tif (placement === 'inline') {\n\t\treturn 'relative translate-x-0 translate-y-0 rotate-0 active:not-aria-[haspopup]:translate-y-0';\n\t}\n\n\tif (orientation === 'vertical') {\n\t\tif (direction === 'previous') {\n\t\t\treturn placement === 'outside'\n\t\t\t\t? 'absolute -top-11 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0'\n\t\t\t\t: 'absolute top-2 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0';\n\t\t}\n\n\t\treturn placement === 'outside'\n\t\t\t? 'absolute -bottom-11 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0'\n\t\t\t: 'absolute bottom-2 left-1/2 -translate-x-1/2 rotate-90 active:not-aria-[haspopup]:translate-y-0';\n\t}\n\n\tif (direction === 'previous') {\n\t\treturn placement === 'outside'\n\t\t\t? 'absolute top-1/2 -left-11 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2'\n\t\t\t: 'absolute top-1/2 left-2 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2';\n\t}\n\n\treturn placement === 'outside'\n\t\t? 'absolute top-1/2 -right-11 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2'\n\t\t: 'absolute top-1/2 right-2 -translate-y-1/2 active:not-aria-[haspopup]:-translate-y-1/2';\n}\n\n// Controls that sit over slide content get an opaque, unblurred surface so the\n// arrow stays legible on any slide; `overlay` adds elevation for media slides.\nconst carouselControlPlacementTone: Record<CarouselControlPlacement, string> = {\n\toutside: '',\n\tinside: 'z-10 bg-background',\n\toverlay: 'z-10 bg-background shadow-md',\n\tinline: '',\n};\n\nconst carouselNavigationAlignClass: Record<CarouselNavigationAlign, string> = {\n\tstart: 'justify-start',\n\tcenter: 'justify-center',\n\tend: 'justify-end',\n\tbetween: 'justify-between',\n};\n\n// Inactive marks share one visible fill in both themes; the selected mark is the\n// foreground (and, for pills, wider). A border-on-muted dot vanished on dark pages.\nconst carouselDotClassName: Record<CarouselPaginationStyle, string> = {\n\tdot: 'size-2.5 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground',\n\tpill: 'h-2 w-2 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground',\n};\n\nconst carouselDotSelectedClassName: Record<CarouselPaginationStyle, string> = {\n\tdot: 'bg-foreground hover:bg-foreground',\n\tpill: 'w-5 bg-foreground hover:bg-foreground',\n};\n\nexport interface CarouselControlProps extends Omit<ButtonProps, 'children' | 'href'> {\n\tchildren?: ReactNode;\n\t/** Where the controls sit relative to the viewport. */\n\tplacement?: CarouselControlPlacement;\n}\n\nconst CarouselPrevious = forwardRef<HTMLButtonElement, CarouselControlProps>(\n\tfunction CarouselPrevious(\n\t\t{\n\t\t\tclassName,\n\t\t\ttone = 'secondary',\n\t\t\tbuttonStyle = 'outline',\n\t\t\tsize = 'sm',\n\t\t\ticonOnly = true,\n\t\t\tplacement,\n\t\t\tonClick,\n\t\t\tdisabled,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst {\n\t\t\torientation,\n\t\t\tcontrolPlacement,\n\t\t\tscrollPrev,\n\t\t\tcanScrollPrev,\n\t\t\tstrings,\n\t\t} = useCarousel();\n\t\tconst resolvedPlacement = placement ?? controlPlacement;\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-slot=\"carousel-previous\"\n\t\t\t\tdata-placement={resolvedPlacement}\n\t\t\t\ttone={tone}\n\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\tsize={size}\n\t\t\t\ticonOnly={iconOnly}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--previous touch-manipulation',\n\t\t\t\t\tgetCarouselControlPlacementClass('previous', orientation, resolvedPlacement),\n\t\t\t\t\tcarouselControlPlacementTone[resolvedPlacement],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tdisabled={disabled || !canScrollPrev}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) scrollPrev();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ChevronLeft className={ICON_SIZE_CLASSNAMES.sm} aria-hidden=\"true\" />\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t{strings.previousSlide}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t);\n\t},\n);\nCarouselPrevious.displayName = 'CarouselPrevious';\n\nconst CarouselNext = forwardRef<HTMLButtonElement, CarouselControlProps>(\n\tfunction CarouselNext(\n\t\t{\n\t\t\tclassName,\n\t\t\ttone = 'secondary',\n\t\t\tbuttonStyle = 'outline',\n\t\t\tsize = 'sm',\n\t\t\ticonOnly = true,\n\t\t\tplacement,\n\t\t\tonClick,\n\t\t\tdisabled,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst {\n\t\t\torientation,\n\t\t\tcontrolPlacement,\n\t\t\tscrollNext,\n\t\t\tcanScrollNext,\n\t\t\tstrings,\n\t\t} = useCarousel();\n\t\tconst resolvedPlacement = placement ?? controlPlacement;\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-slot=\"carousel-next\"\n\t\t\t\tdata-placement={resolvedPlacement}\n\t\t\t\ttone={tone}\n\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\tsize={size}\n\t\t\t\ticonOnly={iconOnly}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--next touch-manipulation',\n\t\t\t\t\tgetCarouselControlPlacementClass('next', orientation, resolvedPlacement),\n\t\t\t\t\tcarouselControlPlacementTone[resolvedPlacement],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tdisabled={disabled || !canScrollNext}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) scrollNext();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ChevronRight className={ICON_SIZE_CLASSNAMES.sm} aria-hidden=\"true\" />\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t{strings.nextSlide}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t);\n\t},\n);\nCarouselNext.displayName = 'CarouselNext';\n\nexport interface CarouselNavigationProps extends ComponentPropsWithoutRef<'div'> {\n\t/** Alignment of the dot cluster. */\n\talign?: CarouselNavigationAlign;\n\t/** Renders the pagination dots. */\n\tshowDots?: boolean;\n\t/** Props forwarded to the previous control. */\n\tpreviousProps?: CarouselControlProps;\n\t/** Props forwarded to the next control. */\n\tnextProps?: CarouselControlProps;\n\t/** Props forwarded to the dot cluster. */\n\tdotsProps?: CarouselDotsProps;\n}\n\nconst CarouselNavigation = forwardRef<HTMLDivElement, CarouselNavigationProps>(\n\tfunction CarouselNavigation(\n\t\t{\n\t\t\talign = 'center',\n\t\t\tshowDots = true,\n\t\t\tpreviousProps,\n\t\t\tnextProps,\n\t\t\tdotsProps,\n\t\t\tclassName,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"carousel-navigation\"\n\t\t\t\tdata-align={align}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--navigation flex flex-wrap items-center gap-space-md',\n\t\t\t\t\tcarouselNavigationAlignClass[align],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<CarouselPrevious placement=\"inline\" {...previousProps} />\n\t\t\t\t\t\t{showDots && <CarouselDots {...dotsProps} />}\n\t\t\t\t\t\t<CarouselNext placement=\"inline\" {...nextProps} />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nCarouselNavigation.displayName = 'CarouselNavigation';\n\nexport interface CarouselDotsProps extends ComponentPropsWithoutRef<'div'> {\n\t/** Merged onto each dot. */\n\tdotClassName?: string;\n\t/** Visual treatment of the pagination dots. */\n\tpaginationStyle?: CarouselPaginationStyle;\n}\n\nconst CarouselDots = forwardRef<HTMLDivElement, CarouselDotsProps>(\n\tfunction CarouselDots(\n\t\t{\n\t\t\tclassName,\n\t\t\tdotClassName,\n\t\t\tpaginationStyle = 'dot',\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst { scrollSnaps } = useCarousel();\n\n\t\tif (scrollSnaps.length <= 1) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"carousel-dots\"\n\t\t\t\tdata-pagination-style={paginationStyle}\n\t\t\t\tclassName={cn('carousel--dots flex flex-wrap items-center justify-center gap-space-sm', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{scrollSnaps.map((_, index) => (\n\t\t\t\t\t<CarouselDot\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\tpaginationStyle={paginationStyle}\n\t\t\t\t\t\tclassName={dotClassName}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t},\n);\nCarouselDots.displayName = 'CarouselDots';\n\nexport interface CarouselDotProps\n\textends Omit<ButtonProps, 'children' | 'href'> {\n\tindex: number;\n\tchildren?: ReactNode;\n\t/** Visual treatment of the pagination dots. */\n\tpaginationStyle?: CarouselPaginationStyle;\n}\n\nconst CarouselDot = forwardRef<HTMLButtonElement, CarouselDotProps>(\n\tfunction CarouselDot(\n\t\t{\n\t\t\tindex,\n\t\t\tpaginationStyle = 'dot',\n\t\t\tclassName,\n\t\t\ttone = 'secondary',\n\t\t\tbuttonStyle = 'ghost',\n\t\t\tsize = 'sm',\n\t\t\ticonOnly = true,\n\t\t\tonClick,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) {\n\t\tconst { selectedIndex, scrollSnaps, scrollTo, strings } = useCarousel();\n\t\tconst selected = selectedIndex === index;\n\t\tconst label = strings.goToSlide\n\t\t\t.replace('{index}', String(index + 1))\n\t\t\t.replace('{total}', String(scrollSnaps.length));\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t\ttype=\"button\"\n\t\t\t\tdata-slot=\"carousel-dot\"\n\t\t\t\tdata-selected={selected ? '' : undefined}\n\t\t\t\tdata-pagination-style={paginationStyle}\n\t\t\t\taria-label={label}\n\t\t\t\taria-current={selected ? 'true' : undefined}\n\t\t\t\ttone={tone}\n\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\tsize={size}\n\t\t\t\ticonOnly={iconOnly}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'carousel--dot min-w-0 shrink-0 p-0 active:not-aria-[haspopup]:translate-y-0',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) scrollTo(index);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children ?? <span aria-hidden=\"true\" className={cn('carousel--dot-mark box-border block transition-[width,background-color,border-color] duration-200', carouselDotClassName[paginationStyle], selected && carouselDotSelectedClassName[paginationStyle])} />}\n\t\t\t</Button>\n\t\t);\n\t},\n);\nCarouselDot.displayName = 'CarouselDot';\n\nexport {\n\tCarousel,\n\tCarouselContent,\n\tCarouselItem,\n\tCarouselPrevious,\n\tCarouselNext,\n\tCarouselNavigation,\n\tCarouselDots,\n\tCarouselDot,\n\tuseCarousel,\n};\n"],"mappings":"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"}
@@ -1,24 +1,24 @@
1
1
  "use client";
2
- import { s as e } from "../ui-provider-1D_NSYzO.js";
3
- import { t } from "../utils-l5LpDw2z.js";
4
- import { n } from "../buttons-SbIcm1HJ.js";
5
- import { s as r } from "../typography-DTRkE9zL.js";
6
- import { t as i } from "../structure-DC2dygdA.js";
2
+ import { s as e } from "../ui-provider-C_U0Xma4.js";
3
+ import { t } from "../utils-BRhFDwuU.js";
4
+ import { n } from "../buttons-DPZekJFu.js";
5
+ import { c as r } from "../typography-UTnveOEy.js";
6
+ import { t as i } from "../structure-BmisBK-3.js";
7
7
  import { a } from "../surface-recipes-BKRVW8Os.js";
8
- import { i as ee } from "../popover.recipes-Bdyhj2db.js";
9
- import { t as te } from "../collection-content-uK16Grv0.js";
10
- import { n as ne, r as o } from "../field-affordance-recipes-qQeIf4lG.js";
11
- import { a as re, o as ie, t as ae } from "../command-kNR20o7x.js";
12
- import { _ as oe, f as se } from "../form-sizing-By94KzXE.js";
13
- import { r as ce, t as le } from "../input-DWhBBBww.js";
14
- import { a as ue, c as de, i as fe, n as pe, o as me, t as he } from "../popover-Di55PyAI.js";
15
- import { t as ge } from "../scroll-area-Bt_vXY2b.js";
16
- import { n as _e, r as s, t as ve } from "../tree-BiKhg8AY.js";
17
- import { useEffect as c, useLayoutEffect as ye, useMemo as be, useRef as l, useState as u } from "react";
8
+ import { a as ee, i as te } from "../popover.recipes-D3j8R8Yp.js";
9
+ import { t as ne } from "../collection-content-By56pLog.js";
10
+ import { n as re, r as o } from "../field-affordance-recipes-DZhnIL_Y.js";
11
+ import { a as ie, o as ae, t as oe } from "../command-C25VMRII.js";
12
+ import { p as se, y as ce } from "../form-sizing-BdP_Mf5p.js";
13
+ import { r as le, t as ue } from "../input-DQdEd0YD.js";
14
+ import { a as de, c as fe, i as pe, n as me, o as he, t as ge } from "../popover-7_m66eYW.js";
15
+ import { t as _e } from "../scroll-area-DcI-M1UT.js";
16
+ import { n as ve, r as s, t as ye } from "../tree-WnKQzwbq.js";
17
+ import { useEffect as c, useLayoutEffect as be, useMemo as xe, useRef as l, useState as u } from "react";
18
18
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
19
- import { ChevronDown as xe, ChevronLeft as Se, ChevronRight as Ce } from "lucide-react";
19
+ import { ChevronDown as Se, ChevronLeft as Ce, ChevronRight as we } from "lucide-react";
20
20
  //#region src/components/base/cascader/cascader.tsx
21
- var we = {
21
+ var Te = {
22
22
  placeholder: "Choose an option",
23
23
  search: "Search options",
24
24
  empty: "No options",
@@ -30,7 +30,7 @@ var we = {
30
30
  clear: "Clear selection",
31
31
  selectCurrent: "Select current category",
32
32
  pathSeparator: " / "
33
- }, Te = (e) => e == null ? [] : typeof e == "string" ? [e] : e, p = "px-row-x py-row-y";
33
+ }, Ee = (e) => e == null ? [] : typeof e == "string" ? [e] : e, p = "px-row-x py-row-y";
34
34
  function m(e, t) {
35
35
  return e.map((e) => {
36
36
  let n = t.get(e.value) ?? e.children;
@@ -41,27 +41,27 @@ function m(e, t) {
41
41
  };
42
42
  });
43
43
  }
44
- function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, multiple: _ = !1, mode: v = "drill", selectable: y = "leaf", open: Oe, defaultOpen: ke = !1, onOpenChange: Ae, disabled: b = !1, invalid: je = !1, searchable: Me = !0, clearable: Ne = !1, density: Pe = "default", size: Fe, name: Ie, id: Le, className: Re, strings: ze, loadChildren: x, renderValue: Be, ...Ve }) {
45
- let { defaultScale: He } = e(), S = oe(Fe, He), C = {
46
- ...we,
47
- ...ze
48
- }, [Ue, We] = u(Ee), w = Te(g === void 0 ? Ue : g), [Ge, Ke] = u(ke), T = !b && (Oe ?? Ge), [qe, E] = u([]), [D, O] = u(""), [k, A] = u([]), [Je, j] = u(/* @__PURE__ */ new Map()), [M, Ye] = u(/* @__PURE__ */ new Map()), N = l({
44
+ function h({ items: h, value: g, defaultValue: De = null, onValueChange: Oe, multiple: _ = !1, mode: v = "drill", selectable: y = "leaf", open: ke, defaultOpen: Ae = !1, onOpenChange: je, disabled: b = !1, invalid: Me = !1, searchable: Ne = !0, clearable: Pe = !1, density: Fe = "default", size: Ie, name: Le, id: Re, className: ze, strings: Be, loadChildren: x, renderValue: Ve, ...He }) {
45
+ let { defaultScale: Ue } = e(), S = ce(Ie, Ue), C = {
46
+ ...Te,
47
+ ...Be
48
+ }, [We, Ge] = u(De), w = Ee(g === void 0 ? We : g), [Ke, qe] = u(Ae), T = !b && (ke ?? Ke), [Je, E] = u([]), [D, O] = u(""), [k, A] = u([]), [Ye, j] = u(/* @__PURE__ */ new Map()), [M, Xe] = u(/* @__PURE__ */ new Map()), N = l({
49
49
  items: h,
50
50
  loadChildren: x
51
51
  }), P = N.current.items === h && N.current.loadChildren === x, F = l(M);
52
- ye(() => {
52
+ be(() => {
53
53
  F.current = M;
54
54
  }, [M]);
55
55
  let [I, L] = u(/* @__PURE__ */ new Map()), R = l(/* @__PURE__ */ new Map()), z = l(!0), B = l(h), V = l(x);
56
- ye(() => {
56
+ be(() => {
57
57
  B.current = h, V.current = x;
58
58
  }, [h, x]);
59
- let H = l(null), Xe = l(null), Ze = Ne && !!w.length, U = l(null), W = l(null), G = be(() => m(h, P ? M : /* @__PURE__ */ new Map()), [
59
+ let H = l(null), Ze = l(null), Qe = Pe && !!w.length, U = l(null), W = l(null), G = xe(() => m(h, P ? M : /* @__PURE__ */ new Map()), [
60
60
  h,
61
61
  M,
62
62
  P
63
- ]), K = be(() => _e(G), [G]), q = w.map((e) => K.get(e)?.path ?? []), J = qe.filter((e) => K.has(e)), Y = J.length ? K.get(J.at(-1))?.node : void 0, X = D.trim() ? [...K.values()].filter((e) => !e.disabled && e.path.map((e) => e.label).join(C.pathSeparator).toLocaleLowerCase().includes(D.trim().toLocaleLowerCase())) : null;
64
- function Qe() {
63
+ ]), K = xe(() => ve(G), [G]), q = w.map((e) => K.get(e)?.path ?? []), J = Je.filter((e) => K.has(e)), Y = J.length ? K.get(J.at(-1))?.node : void 0, X = D.trim() ? [...K.values()].filter((e) => !e.disabled && e.path.map((e) => e.label).join(C.pathSeparator).toLocaleLowerCase().includes(D.trim().toLocaleLowerCase())) : null;
64
+ function $e() {
65
65
  for (let e of R.current.values()) e.abort();
66
66
  R.current.clear(), L((e) => new Map([...e].filter(([, e]) => e.status !== "loading")));
67
67
  }
@@ -70,15 +70,15 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
70
70
  for (let e of R.current.values()) e.abort();
71
71
  R.current.clear();
72
72
  }), []), c(() => {
73
- Qe(), N.current = {
73
+ $e(), N.current = {
74
74
  items: h,
75
75
  loadChildren: x
76
- }, F.current = /* @__PURE__ */ new Map(), Ye(F.current), L(/* @__PURE__ */ new Map()), E([]), A([]), j(/* @__PURE__ */ new Map()), U.current = null, W.current = null;
76
+ }, F.current = /* @__PURE__ */ new Map(), Xe(F.current), L(/* @__PURE__ */ new Map()), E([]), A([]), j(/* @__PURE__ */ new Map()), U.current = null, W.current = null;
77
77
  }, [h, x]), c(() => {
78
- if (!T) Qe(), O("");
78
+ if (!T) $e(), O("");
79
79
  else {
80
80
  let e = q.find((e) => e.length), t = e?.slice(0, -1).map((e) => e.value);
81
- t && (E(t), et(e.map((e) => e.value)), v === "tree" && A((e) => [.../* @__PURE__ */ new Set([...e, ...t])]));
81
+ t && (E(t), tt(e.map((e) => e.value)), v === "tree" && A((e) => [.../* @__PURE__ */ new Set([...e, ...t])]));
82
82
  let n = v === "tree" ? [...k, ...t ?? []] : t ?? J;
83
83
  for (let e of n) {
84
84
  let t = K.get(e)?.node;
@@ -94,30 +94,30 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
94
94
  let e = (H.current?.querySelectorAll("[data-cascader-level]")?.[U.current])?.querySelector("[data-cascader-list][tabindex=\"0\"]");
95
95
  e && (e.focus(), U.current = null);
96
96
  }, [
97
- qe,
97
+ Je,
98
98
  M,
99
99
  D
100
100
  ]);
101
- function $e(e) {
102
- b || (Oe === void 0 && Ke(e), Ae?.(e));
103
- }
104
101
  function et(e) {
102
+ b || (ke === void 0 && qe(e), je?.(e));
103
+ }
104
+ function tt(e) {
105
105
  j((t) => {
106
106
  let n = new Map(t);
107
107
  return e.forEach((t, r) => n.set(r ? e[r - 1] : void 0, t)), n;
108
108
  });
109
109
  }
110
- function tt(e) {
110
+ function nt(e) {
111
111
  return typeof y == "function" ? y(e) : y === "any" || !s(e);
112
112
  }
113
113
  function Z(e) {
114
- if (b || e && (K.get(e.value)?.disabled || !tt(e))) return;
114
+ if (b || e && (K.get(e.value)?.disabled || !nt(e))) return;
115
115
  let t = !!e && w.includes(e.value), n = e ? _ ? t ? w.filter((t) => t !== e.value) : [...w, e.value] : e.value : _ ? [] : null;
116
- g === void 0 && We(n), De?.(n, {
116
+ g === void 0 && Ge(n), Oe?.(n, {
117
117
  node: e,
118
118
  path: e ? K.get(e.value)?.path ?? [e] : [],
119
119
  reason: e ? _ && t ? "deselect" : "select" : "clear"
120
- }), !_ && e && $e(!1);
120
+ }), !_ && e && et(!1);
121
121
  }
122
122
  async function Q(e, t = !1) {
123
123
  if (!x || !e.hasChildren || e.children !== void 0 || P && M.has(e.value) || R.current.has(e.value) || !t && P && I.get(e.value)?.status === "error") return;
@@ -127,7 +127,7 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
127
127
  let t = await i(e, { signal: n.signal });
128
128
  if (!z.current || n.signal.aborted || B.current !== r || V.current !== i || R.current.get(e.value) !== n) return;
129
129
  let a = new Map(F.current).set(e.value, t);
130
- _e(m(r, a)), F.current = a, Ye(a), L((t) => {
130
+ ve(m(r, a)), F.current = a, Xe(a), L((t) => {
131
131
  let n = new Map(t);
132
132
  return n.delete(e.value), n;
133
133
  });
@@ -137,15 +137,15 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
137
137
  R.current.get(e.value) === n && R.current.delete(e.value);
138
138
  }
139
139
  }
140
- function nt(e, t) {
140
+ function rt(e, t) {
141
141
  if (!K.get(e.value)?.disabled) {
142
142
  if (s(e)) {
143
143
  let n = K.get(e.value)?.path.map((e) => e.value) ?? [...J.slice(0, t), e.value];
144
- et(n), O(""), E(n), v === "tree" ? (A((e) => [.../* @__PURE__ */ new Set([...e, ...n])]), W.current = e.value) : U.current = v === "columns" ? n.length : 0, Q(e);
144
+ tt(n), O(""), E(n), v === "tree" ? (A((e) => [.../* @__PURE__ */ new Set([...e, ...n])]), W.current = e.value) : U.current = v === "columns" ? n.length : 0, Q(e);
145
145
  } else Z(e);
146
146
  }
147
147
  }
148
- function rt(e = !0) {
148
+ function it(e = !0) {
149
149
  if (b || !J.length) return;
150
150
  let t = J.at(-1), n = J.slice(0, -1);
151
151
  R.current.get(t)?.abort(), R.current.delete(t), L((e) => {
@@ -154,15 +154,15 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
154
154
  return n.delete(t), n;
155
155
  }), j((e) => new Map(e).set(n.at(-1), t)), O(""), E(n), U.current = e ? v === "columns" ? n.length : 0 : null;
156
156
  }
157
- function it(e, t) {
157
+ function at(e, t) {
158
158
  let n = getComputedStyle(e.currentTarget).direction === "rtl";
159
- if (e.key === (n ? "ArrowRight" : "ArrowLeft") && J.length) e.preventDefault(), e.stopPropagation(), v === "columns" && t > 0 ? H.current?.querySelectorAll("[data-cascader-level]")[t - 1]?.querySelector("[data-cascader-list][tabindex=\"0\"]")?.focus() : rt();
159
+ if (e.key === (n ? "ArrowRight" : "ArrowLeft") && J.length) e.preventDefault(), e.stopPropagation(), v === "columns" && t > 0 ? H.current?.querySelectorAll("[data-cascader-level]")[t - 1]?.querySelector("[data-cascader-list][tabindex=\"0\"]")?.focus() : it();
160
160
  else if (e.key === (n ? "ArrowLeft" : "ArrowRight")) {
161
161
  let n = e.currentTarget.querySelector("[data-cascader-list]")?.getAttribute("aria-activedescendant"), r = (e.target.closest("[data-node-value]") ?? (n ? document.getElementById(n) : null))?.getAttribute("data-node-value"), i = K.get(r ?? "")?.node;
162
- i && s(i) && (e.preventDefault(), e.stopPropagation(), nt(i, t));
162
+ i && s(i) && (e.preventDefault(), e.stopPropagation(), rt(i, t));
163
163
  }
164
164
  }
165
- function at(e, t) {
165
+ function ot(e, t) {
166
166
  let a = e ? I.get(e.value)?.status : void 0;
167
167
  return a === "loading" ? /* @__PURE__ */ d(r, {
168
168
  role: "status",
@@ -191,36 +191,36 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
191
191
  });
192
192
  }
193
193
  function $(e, n, r) {
194
- let i = Je.get(n?.value), a = e.find((e) => e.value === i && !K.get(e.value)?.disabled)?.value ?? e.find((e) => !K.get(e.value)?.disabled)?.value ?? "";
194
+ let i = Ye.get(n?.value), a = e.find((e) => e.value === i && !K.get(e.value)?.disabled)?.value ?? e.find((e) => !K.get(e.value)?.disabled)?.value ?? "";
195
195
  return /* @__PURE__ */ d("div", {
196
196
  "data-cascader-level": r,
197
197
  className: t("cascader--level min-w-0", v === "columns" && !X && "w-56 shrink-0"),
198
- onKeyDownCapture: (e) => it(e, r),
199
- children: /* @__PURE__ */ d(ae, {
198
+ onKeyDownCapture: (e) => at(e, r),
199
+ children: /* @__PURE__ */ d(oe, {
200
200
  shouldFilter: !1,
201
201
  value: a,
202
202
  onValueChange: (e) => j((t) => new Map(t).set(n?.value, e)),
203
203
  "aria-label": n?.label ?? C.root,
204
- children: /* @__PURE__ */ f(ie, {
204
+ children: /* @__PURE__ */ f(ae, {
205
205
  "data-cascader-list": !0,
206
206
  "aria-multiselectable": _ || void 0,
207
207
  "aria-label": n?.label ?? C.root,
208
208
  tabIndex: e.some((e) => !K.get(e.value)?.disabled) ? 0 : -1,
209
- children: [at(n, e), e.map((e) => /* @__PURE__ */ d(re, {
209
+ children: [ot(n, e), e.map((e) => /* @__PURE__ */ d(ie, {
210
210
  value: e.value,
211
211
  "data-node-value": e.value,
212
- density: Pe,
212
+ density: Fe,
213
213
  disabled: b || K.get(e.value)?.disabled,
214
214
  "data-checked": w.includes(e.value),
215
215
  "aria-selected": w.includes(e.value),
216
- onSelect: () => nt(e, r),
217
- children: /* @__PURE__ */ d(te, {
216
+ onSelect: () => rt(e, r),
217
+ children: /* @__PURE__ */ d(ne, {
218
218
  label: X ? K.get(e.value)?.path.map((e) => e.label).join(C.pathSeparator) : e.label,
219
219
  description: e.description,
220
220
  leading: e.icon,
221
221
  leadingDecorative: !0,
222
222
  wrap: !0,
223
- trailing: s(e) ? /* @__PURE__ */ d(Ce, {
223
+ trailing: s(e) ? /* @__PURE__ */ d(we, {
224
224
  "aria-hidden": "true",
225
225
  className: "size-icon rtl:rotate-180"
226
226
  }) : void 0
@@ -230,38 +230,38 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
230
230
  })
231
231
  }, JSON.stringify(n ? [n.value] : []));
232
232
  }
233
- let ot = w.length ? q.map((e, t) => e.length ? e.map((e) => e.label).join(C.pathSeparator) : w[t]).join(", ") : C.placeholder;
233
+ let st = w.length ? q.map((e, t) => e.length ? e.map((e) => e.label).join(C.pathSeparator) : w[t]).join(", ") : C.placeholder;
234
234
  return /* @__PURE__ */ f("div", {
235
- className: t("cascader--component min-w-0", Re),
236
- children: [Ie && w.map((e) => /* @__PURE__ */ d("input", {
235
+ className: t("cascader--component min-w-0", ze),
236
+ children: [Le && w.map((e) => /* @__PURE__ */ d("input", {
237
237
  type: "hidden",
238
- name: Ie,
238
+ name: Le,
239
239
  value: e,
240
240
  disabled: b
241
241
  }, e)), /* @__PURE__ */ f("div", {
242
242
  className: "cascader--field relative min-w-0",
243
- children: [/* @__PURE__ */ f(me, {
243
+ children: [/* @__PURE__ */ f(he, {
244
244
  open: T,
245
- onOpenChange: $e,
246
- children: [/* @__PURE__ */ d(de, {
247
- ref: Xe,
248
- id: Le,
249
- ...Ve,
245
+ onOpenChange: et,
246
+ children: [/* @__PURE__ */ d(fe, {
247
+ ref: Ze,
248
+ id: Re,
249
+ ...He,
250
250
  disabled: b,
251
- "aria-invalid": je || void 0,
252
- className: t("cascader--trigger", se(S), Ze ? o.clearPadding[S] : o.padding[S]),
251
+ "aria-invalid": Me || void 0,
252
+ className: t("cascader--trigger", se(S), Qe ? o.clearPadding[S] : o.padding[S]),
253
253
  children: /* @__PURE__ */ d("span", {
254
254
  className: t("cascader--value min-w-0 flex-1 truncate text-start", !w.length && "text-muted-foreground"),
255
- children: Be ? Be(q) : ot
255
+ children: Ve ? Ve(q) : st
256
256
  })
257
- }), /* @__PURE__ */ d(he, {
257
+ }), /* @__PURE__ */ d(ge, {
258
258
  type: "menu",
259
259
  inset: "flush",
260
- className: t("cascader--popup w-80", v === "columns" && !X && "w-auto"),
260
+ className: t("cascader--popup", te.lg, v === "columns" && !X && "w-auto"),
261
261
  children: /* @__PURE__ */ f("div", {
262
262
  ref: H,
263
263
  children: [
264
- !!J.length && v !== "tree" && /* @__PURE__ */ f(fe, {
264
+ !!J.length && v !== "tree" && /* @__PURE__ */ f(pe, {
265
265
  start: /* @__PURE__ */ d(n, {
266
266
  tone: "secondary",
267
267
  buttonStyle: "ghost",
@@ -269,8 +269,8 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
269
269
  iconOnly: !0,
270
270
  "aria-label": C.back,
271
271
  withTooltip: C.back,
272
- onClick: () => rt(),
273
- children: /* @__PURE__ */ d(Se, {
272
+ onClick: () => it(),
273
+ children: /* @__PURE__ */ d(Ce, {
274
274
  "aria-hidden": "true",
275
275
  className: "size-icon-sm rtl:rotate-180"
276
276
  })
@@ -281,20 +281,20 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
281
281
  align: "center",
282
282
  justify: "between",
283
283
  wrap: !0,
284
- children: [/* @__PURE__ */ d(ue, {
284
+ children: [/* @__PURE__ */ d(de, {
285
285
  className: "min-w-0 wrap-anywhere",
286
286
  children: Y?.label
287
- }), Y && tt(Y) && /* @__PURE__ */ d(n, {
287
+ }), Y && nt(Y) && /* @__PURE__ */ d(n, {
288
288
  buttonStyle: "outline",
289
289
  size: "sm",
290
290
  onClick: () => Z(Y),
291
291
  children: C.selectCurrent
292
292
  })]
293
- }), J.length > 1 && /* @__PURE__ */ d(pe, { children: J.slice(0, -1).map((e) => K.get(e)?.node.label).join(C.pathSeparator) })]
293
+ }), J.length > 1 && /* @__PURE__ */ d(me, { children: J.slice(0, -1).map((e) => K.get(e)?.node.label).join(C.pathSeparator) })]
294
294
  }),
295
- Me && /* @__PURE__ */ d("div", {
295
+ Ne && /* @__PURE__ */ d("div", {
296
296
  className: t("cascader--search", ee.compact, a.anchored.header),
297
- children: /* @__PURE__ */ d(le, {
297
+ children: /* @__PURE__ */ d(ue, {
298
298
  "aria-label": C.search,
299
299
  placeholder: C.search,
300
300
  value: D,
@@ -303,18 +303,18 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
303
303
  if (e.key === "ArrowDown") {
304
304
  let t = H.current?.querySelector("[data-cascader-list][tabindex=\"0\"], [role=treeitem][tabindex=\"0\"]");
305
305
  t && (e.preventDefault(), t.focus());
306
- } else e.key === "Backspace" && !D && J.length && v !== "tree" && (e.preventDefault(), rt(!1));
306
+ } else e.key === "Backspace" && !D && J.length && v !== "tree" && (e.preventDefault(), it(!1));
307
307
  }
308
308
  })
309
309
  }),
310
- X ? $(X.map((e) => e.node), void 0, 0) : v === "tree" ? /* @__PURE__ */ f(ge, {
310
+ X ? $(X.map((e) => e.node), void 0, 0) : v === "tree" ? /* @__PURE__ */ f(_e, {
311
311
  className: "h-72",
312
312
  children: [/* @__PURE__ */ d("div", {
313
313
  className: ee.compact,
314
- children: /* @__PURE__ */ d(ve, {
314
+ children: /* @__PURE__ */ d(ye, {
315
315
  items: G,
316
316
  "aria-label": C.root,
317
- density: Pe,
317
+ density: Fe,
318
318
  selectionMode: _ ? "multiple" : "single",
319
319
  selectedValues: w,
320
320
  expandedValues: k,
@@ -329,12 +329,12 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
329
329
  },
330
330
  onSelectedValuesChange: (e, t) => Z(t)
331
331
  })
332
- }), [...I].filter(([e]) => k.includes(e)).map(([e]) => /* @__PURE__ */ f(fe, { children: [/* @__PURE__ */ d(r, {
332
+ }), [...I].filter(([e]) => k.includes(e)).map(([e]) => /* @__PURE__ */ f(pe, { children: [/* @__PURE__ */ d(r, {
333
333
  size: "xs",
334
334
  type: "secondary",
335
335
  children: K.get(e)?.node.label
336
- }), at(K.get(e)?.node, [])] }, e))]
337
- }) : v === "columns" ? /* @__PURE__ */ d(ge, {
336
+ }), ot(K.get(e)?.node, [])] }, e))]
337
+ }) : v === "columns" ? /* @__PURE__ */ d(_e, {
338
338
  orientation: "both",
339
339
  className: "max-w-full",
340
340
  viewportClassName: "max-h-80",
@@ -350,18 +350,18 @@ function h({ items: h, value: g, defaultValue: Ee = null, onValueChange: De, mul
350
350
  })
351
351
  })]
352
352
  }), /* @__PURE__ */ f("div", {
353
- className: t("cascader--affordances pointer-events-none flex items-center gap-space-xs text-muted-foreground", ne.centered, o.track[S]),
354
- children: [Ze && /* @__PURE__ */ d(ce, {
353
+ className: t("cascader--affordances pointer-events-none flex items-center gap-space-xs text-muted-foreground", re.centered, o.track[S]),
354
+ children: [Qe && /* @__PURE__ */ d(le, {
355
355
  "aria-label": C.clear,
356
356
  disabled: b,
357
357
  className: "cascader--clear pointer-events-auto",
358
358
  onClick: () => {
359
- Z(null), Xe.current?.focus();
359
+ Z(null), Ze.current?.focus();
360
360
  }
361
361
  }), /* @__PURE__ */ d("span", {
362
362
  "aria-hidden": "true",
363
- className: t("cascader--toggle", ne.target, b && "opacity-50"),
364
- children: /* @__PURE__ */ d(xe, { className: t(o.icon[S], "shrink-0") })
363
+ className: t("cascader--toggle", re.target, b && "opacity-50"),
364
+ children: /* @__PURE__ */ d(Se, { className: t(o.icon[S], "shrink-0") })
365
365
  })]
366
366
  })]
367
367
  })]