themelia-react-ui 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/README.md +67 -16
  3. package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
  4. package/dist/accordion-CQXVcd7Q.js.map +1 -0
  5. package/dist/action-menu-BTpyPWJ2.js +264 -0
  6. package/dist/action-menu-BTpyPWJ2.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
  8. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
  10. package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
  12. package/dist/app-shell-BE_j8-AT.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
  14. package/dist/attachment-q69dlt5Y.js.map +1 -0
  15. package/dist/auth-M3vGMgDR.js +723 -0
  16. package/dist/auth-M3vGMgDR.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
  18. package/dist/avatar-djdaaQ_s.js.map +1 -0
  19. package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
  20. package/dist/badge-0tATj-tW.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +33 -35
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +246 -222
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +94 -92
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +7 -4
  51. package/dist/base/qr-code.js.map +1 -1
  52. package/dist/base/repeaters.js +53 -53
  53. package/dist/base/repeaters.js.map +1 -1
  54. package/dist/base/sheet.js +1 -1
  55. package/dist/base/sidebar.js +1 -1
  56. package/dist/base/signature-pad.js +84 -82
  57. package/dist/base/signature-pad.js.map +1 -1
  58. package/dist/base/skeleton.js +1 -1
  59. package/dist/base/spinner.js +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +2 -2
  63. package/dist/base/toaster.js +7 -7
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/blocks/admin.js +228 -219
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +182 -212
  72. package/dist/blocks/ai.js.map +1 -1
  73. package/dist/blocks/analytics/usage-card.js +1 -1
  74. package/dist/blocks/analytics.js +665 -620
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +2 -2
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1439 -1553
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +1 -1
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +88 -97
  84. package/dist/blocks/planning.js.map +1 -1
  85. package/dist/blocks/timelines.js +1 -1
  86. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
  87. package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
  88. package/dist/button-BS3KDg00.js +674 -0
  89. package/dist/button-BS3KDg00.js.map +1 -0
  90. package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
  91. package/dist/button-R9CCoH7A.js.map +1 -0
  92. package/dist/buttons-DS0ZIwJ_.js +99 -0
  93. package/dist/buttons-DS0ZIwJ_.js.map +1 -0
  94. package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
  95. package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
  96. package/dist/chart-DwYRKKc-.js +152 -0
  97. package/dist/chart-DwYRKKc-.js.map +1 -0
  98. package/dist/checkbox-B7ygNTYp.js +35 -0
  99. package/dist/checkbox-B7ygNTYp.js.map +1 -0
  100. package/dist/choice-inputs-DrJ17tpL.js +752 -0
  101. package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
  102. package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
  103. package/dist/code-block-CD0B7M93.js.map +1 -0
  104. package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
  105. package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
  106. package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
  107. package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
  108. package/dist/combobox-6dvVny2q.js +272 -0
  109. package/dist/combobox-6dvVny2q.js.map +1 -0
  110. package/dist/combobox-CB7039j7.js +865 -0
  111. package/dist/combobox-CB7039j7.js.map +1 -0
  112. package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
  113. package/dist/command-kPMPjIxJ.js.map +1 -0
  114. package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
  115. package/dist/comments-You0Bzbr.js.map +1 -0
  116. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -2
  118. package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
  119. package/dist/components/base/badge/badge.d.ts +1 -1
  120. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  121. package/dist/components/base/buttons/base-button.d.ts +7 -0
  122. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  123. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  124. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  125. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  126. package/dist/components/base/buttons/text-button.d.ts +2 -2
  127. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  128. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  129. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  130. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  131. package/dist/components/base/carousel/carousel.d.ts +3 -1
  132. package/dist/components/base/chart/chart.d.ts +7 -7
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
  135. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  136. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  137. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  138. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  139. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  140. package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
  141. package/dist/components/base/display/alert-dialog.d.ts +8 -2
  142. package/dist/components/base/display/content-block.d.ts +4 -2
  143. package/dist/components/base/display/date-block.d.ts +1 -1
  144. package/dist/components/base/display/dialog.d.ts +12 -5
  145. package/dist/components/base/display/surface-title.d.ts +6 -1
  146. package/dist/components/base/feedback/alert.d.ts +1 -1
  147. package/dist/components/base/feedback/state-display.d.ts +5 -4
  148. package/dist/components/base/forms/form-field.d.ts +1 -0
  149. package/dist/components/base/forms/form-sizing.d.ts +35 -3
  150. package/dist/components/base/forms/workflow.d.ts +2 -0
  151. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  152. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  153. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  154. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  155. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  156. package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
  157. package/dist/components/base/navigation/tabs.d.ts +3 -5
  158. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  159. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  160. package/dist/components/base/sheet/index.d.ts +29 -1
  161. package/dist/components/base/sheet/sheet.d.ts +14 -5
  162. package/dist/components/base/spinner/spinner.d.ts +3 -2
  163. package/dist/components/base/structure/structure.types.d.ts +1 -1
  164. package/dist/components/base/table/index.d.ts +1 -1
  165. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  166. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  167. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  168. package/dist/components/base/upload/upload.recipes.d.ts +11 -0
  169. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  170. package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
  171. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  172. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  173. package/dist/components/blocks/analytics/index.d.ts +1 -1
  174. package/dist/components/blocks/analytics/types.d.ts +1 -1
  175. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  176. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  177. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  178. package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
  179. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  180. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  181. package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
  182. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  183. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  184. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  185. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
  186. package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
  187. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  188. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  190. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  191. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  192. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  193. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  194. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  195. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  196. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  197. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  198. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  199. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  200. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  201. package/dist/components/features/media-library/media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  203. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  204. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  205. package/dist/components/features/overlays/drawer.d.ts +1 -1
  206. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  207. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  208. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  209. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  210. package/dist/components/features/overlays/overlays.types.d.ts +46 -22
  211. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  212. package/dist/components/features/products/partials/index.d.ts +1 -1
  213. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  214. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  215. package/dist/components/features/products/products.types.d.ts +2 -1
  216. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  217. package/dist/components/features/table/data-table.d.ts +1 -1
  218. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  219. package/dist/components/features/table/table.types.d.ts +1 -1
  220. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  221. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  222. package/dist/components/layout/page/index.d.ts +1 -1
  223. package/dist/components/layout/page/page.d.ts +0 -1
  224. package/dist/components/layout/page/page.types.d.ts +62 -6
  225. package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
  226. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  227. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  228. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  229. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  230. package/dist/components/primitives/date.d.ts +16 -3
  231. package/dist/components/primitives/dimensions.d.ts +6 -0
  232. package/dist/components/primitives/duration.d.ts +6 -0
  233. package/dist/components/primitives/file-size.d.ts +6 -0
  234. package/dist/components/primitives/index.d.ts +1 -1
  235. package/dist/components/primitives/initials.d.ts +11 -2
  236. package/dist/components/primitives/link.d.ts +7 -0
  237. package/dist/components/primitives/money.d.ts +29 -7
  238. package/dist/components/primitives/number.d.ts +17 -0
  239. package/dist/components/primitives/value-typography.d.ts +54 -0
  240. package/dist/components/primitives/value.d.ts +31 -6
  241. package/dist/components/typography/heading.d.ts +13 -2
  242. package/dist/components/typography/index.d.ts +1 -1
  243. package/dist/components/typography/label.d.ts +3 -0
  244. package/dist/components/typography/running-text.d.ts +12 -0
  245. package/dist/components/typography/text-link.d.ts +23 -1
  246. package/dist/components/typography/text.d.ts +12 -0
  247. package/dist/components/typography/text.styles.d.ts +37 -5
  248. package/dist/components/ui/button.d.ts +1 -1
  249. package/dist/components/ui/checkbox.d.ts +5 -0
  250. package/dist/components/ui/overlay.recipes.d.ts +15 -2
  251. package/dist/components/ui/popover.d.ts +1 -1
  252. package/dist/components/ui/select.d.ts +3 -1
  253. package/dist/components/ui/sidebar.d.ts +1 -1
  254. package/dist/components/ui/switch.d.ts +5 -0
  255. package/dist/components/ui/table.d.ts +2 -1
  256. package/dist/container.recipes-D9t8MHR3.js +27 -0
  257. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  258. package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
  259. package/dist/containers-D_L4mTVb.js.map +1 -0
  260. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  261. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  262. package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
  263. package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
  264. package/dist/data-display-3xWQUnMA.js +1335 -0
  265. package/dist/data-display-3xWQUnMA.js.map +1 -0
  266. package/dist/date-picker-DrDFj8Lo.js +1527 -0
  267. package/dist/date-picker-DrDFj8Lo.js.map +1 -0
  268. package/dist/date-pickers-CnFCb0n2.js +174 -0
  269. package/dist/date-pickers-CnFCb0n2.js.map +1 -0
  270. package/dist/date-uf3z37Nm.js +144 -0
  271. package/dist/date-uf3z37Nm.js.map +1 -0
  272. package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
  273. package/dist/display-DrdvPwF0.js.map +1 -0
  274. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
  275. package/dist/dropdown-menu-CURh59jb.js.map +1 -0
  276. package/dist/features/activities.js +177 -163
  277. package/dist/features/activities.js.map +1 -1
  278. package/dist/features/ai-chat.js +187 -183
  279. package/dist/features/ai-chat.js.map +1 -1
  280. package/dist/features/async-preview.js +9 -9
  281. package/dist/features/async-preview.js.map +1 -1
  282. package/dist/features/combobox.js +1 -1
  283. package/dist/features/comments.js +1 -1
  284. package/dist/features/data-view.js +25 -23
  285. package/dist/features/data-view.js.map +1 -1
  286. package/dist/features/email-composer/engine.js +1 -1
  287. package/dist/features/email-composer.js +353 -355
  288. package/dist/features/email-composer.js.map +1 -1
  289. package/dist/features/event-calendar.js +346 -354
  290. package/dist/features/event-calendar.js.map +1 -1
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +225 -227
  293. package/dist/features/global-search.js.map +1 -1
  294. package/dist/features/kanban.js +29 -29
  295. package/dist/features/kanban.js.map +1 -1
  296. package/dist/features/map.js +59 -58
  297. package/dist/features/map.js.map +1 -1
  298. package/dist/features/media-library.js +898 -900
  299. package/dist/features/media-library.js.map +1 -1
  300. package/dist/features/mentions.js +1 -1
  301. package/dist/features/overlays.js +1 -1
  302. package/dist/features/products.js +1412 -1444
  303. package/dist/features/products.js.map +1 -1
  304. package/dist/features/questionnaire.js +51 -49
  305. package/dist/features/questionnaire.js.map +1 -1
  306. package/dist/features/resource-assignment.js +103 -97
  307. package/dist/features/resource-assignment.js.map +1 -1
  308. package/dist/features/resource.js +13 -13
  309. package/dist/features/resource.js.map +1 -1
  310. package/dist/features/rich-text-editor.js +2 -2
  311. package/dist/features/schema-form.js +187 -183
  312. package/dist/features/schema-form.js.map +1 -1
  313. package/dist/features/suggestions.js +3 -3
  314. package/dist/features/sync.js +7 -7
  315. package/dist/features/sync.js.map +1 -1
  316. package/dist/features/table.js +1 -1
  317. package/dist/features/theme-tweaker.js +508 -503
  318. package/dist/features/theme-tweaker.js.map +1 -1
  319. package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
  320. package/dist/feedback-C7nR0UtT.js.map +1 -0
  321. package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
  322. package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
  323. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
  324. package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
  325. package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
  326. package/dist/filters-Da-gNPsE.js.map +1 -0
  327. package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
  328. package/dist/form-field-VZRULhUK.js.map +1 -0
  329. package/dist/form-sizing-uWP4lzVh.js +126 -0
  330. package/dist/form-sizing-uWP4lzVh.js.map +1 -0
  331. package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
  332. package/dist/forms-DDeEnXSY.js.map +1 -0
  333. package/dist/forms-numeric-D3CO60IF.js +905 -0
  334. package/dist/forms-numeric-D3CO60IF.js.map +1 -0
  335. package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
  336. package/dist/header-2ycNqGOR.js.map +1 -0
  337. package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
  338. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
  339. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  340. package/dist/http-CdEIHyQf.js.map +1 -0
  341. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
  342. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
  343. package/dist/index.js +2 -2
  344. package/dist/input-BoLm9Hks.js +20 -0
  345. package/dist/input-BoLm9Hks.js.map +1 -0
  346. package/dist/input-DhQdBnV3.js +255 -0
  347. package/dist/input-DhQdBnV3.js.map +1 -0
  348. package/dist/item-xzh8Df65.js +264 -0
  349. package/dist/item-xzh8Df65.js.map +1 -0
  350. package/dist/layout/app-shell.js +1 -1
  351. package/dist/layout/auth.js +1 -1
  352. package/dist/layout/containers.js +1 -1
  353. package/dist/layout/header.js +1 -1
  354. package/dist/layout/hooks.js +1 -1
  355. package/dist/layout/navigation.js +1 -1
  356. package/dist/layout/page.js +1 -1
  357. package/dist/layout/settings.js +1 -1
  358. package/dist/layout/sidebar.js +2 -2
  359. package/dist/layout/workspace.js +1 -1
  360. package/dist/layout.js +10 -10
  361. package/dist/lib/affordance-geometry.generated.d.ts +46 -10
  362. package/dist/lib/control-group-recipes.d.ts +22 -0
  363. package/dist/lib/field-affordance-recipes.d.ts +70 -2
  364. package/dist/lib/field-state-recipes.d.ts +6 -4
  365. package/dist/lib/format.d.ts +9 -0
  366. package/dist/lib/money-format.d.ts +30 -0
  367. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  368. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
  369. package/dist/lib/surface-recipes.d.ts +13 -8
  370. package/dist/lib/token-merge.generated.d.ts +144 -2
  371. package/dist/lib/track-recipes.d.ts +1 -1
  372. package/dist/lib/ui-provider/provider.d.ts +7 -2
  373. package/dist/lib/ui-provider/store.d.ts +6 -2
  374. package/dist/lib/ui-provider/types.d.ts +9 -4
  375. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  376. package/dist/lib/utils.js +1 -1
  377. package/dist/media-gallery-DQUQ0m3O.js +201 -0
  378. package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
  379. package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
  380. package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
  381. package/dist/message-YfFmbXNP.js +127 -0
  382. package/dist/message-YfFmbXNP.js.map +1 -0
  383. package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
  384. package/dist/navigation-Cbp5V8gG.js.map +1 -0
  385. package/dist/navigation-Cs1npsPm.js +300 -0
  386. package/dist/navigation-Cs1npsPm.js.map +1 -0
  387. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
  388. package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
  389. package/dist/number-CKRBYmZK.js +352 -0
  390. package/dist/number-CKRBYmZK.js.map +1 -0
  391. package/dist/overlay.recipes-CNO2S9V6.js +34 -0
  392. package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
  393. package/dist/overlays-DhZO7N-I.js +994 -0
  394. package/dist/overlays-DhZO7N-I.js.map +1 -0
  395. package/dist/page-C6R_8jFt.js +325 -0
  396. package/dist/page-C6R_8jFt.js.map +1 -0
  397. package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
  398. package/dist/page-header-hUTzcRZX.js.map +1 -0
  399. package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
  400. package/dist/pagination-Cm0jqa3I.js.map +1 -0
  401. package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
  402. package/dist/popover-Dcv_9jxr.js.map +1 -0
  403. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
  404. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
  405. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
  406. package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
  407. package/dist/primitives-BHrwQXFC.js +379 -0
  408. package/dist/primitives-BHrwQXFC.js.map +1 -0
  409. package/dist/primitives.js +5 -5
  410. package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
  411. package/dist/progress-Br9WTFya.js.map +1 -0
  412. package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
  413. package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
  414. package/dist/rich-text-editor-CF8QYt5p.js +574 -0
  415. package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
  416. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
  417. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
  418. package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
  419. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
  420. package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
  421. package/dist/scroll-area-DRdr16Pt.js.map +1 -0
  422. package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
  423. package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
  424. package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
  425. package/dist/separator-Do5GWDYi.js.map +1 -0
  426. package/dist/services/actions/action-adapters.d.ts +4 -0
  427. package/dist/services/actions.js +8 -3
  428. package/dist/services/actions.js.map +1 -1
  429. package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
  430. package/dist/settings-DHk0L2MF.js.map +1 -0
  431. package/dist/sheet-DRFNY1_D.js +207 -0
  432. package/dist/sheet-DRFNY1_D.js.map +1 -0
  433. package/dist/sidebar-Cb8WzOvE.js +511 -0
  434. package/dist/sidebar-Cb8WzOvE.js.map +1 -0
  435. package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
  436. package/dist/sidebar-Crc9M9JV.js.map +1 -0
  437. package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
  438. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
  439. package/dist/smart-card-Bek-TwUp.js +599 -0
  440. package/dist/smart-card-Bek-TwUp.js.map +1 -0
  441. package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
  442. package/dist/spinner-CmTAbEp0.js.map +1 -0
  443. package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
  444. package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
  445. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  446. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  447. package/dist/style.css +1 -1
  448. package/dist/surface-recipes-DOdoBXGm.js +28 -0
  449. package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
  450. package/dist/table-D6zKeYQX.js +162 -0
  451. package/dist/table-D6zKeYQX.js.map +1 -0
  452. package/dist/table-Dn4XSrSB.js +1444 -0
  453. package/dist/table-Dn4XSrSB.js.map +1 -0
  454. package/dist/tabs-Dk8E_knt.js +189 -0
  455. package/dist/tabs-Dk8E_knt.js.map +1 -0
  456. package/dist/text-inputs-BFpku0Qd.js +331 -0
  457. package/dist/text-inputs-BFpku0Qd.js.map +1 -0
  458. package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
  459. package/dist/text.styles-g4He6UIW.js.map +1 -0
  460. package/dist/theme.css +90 -124
  461. package/dist/themes/green.css +24 -0
  462. package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
  463. package/dist/timelines-CxuAFIc2.js.map +1 -0
  464. package/dist/track-recipes-CDcKmndW.js +10 -0
  465. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  466. package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
  467. package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
  468. package/dist/typography/rich-text.js +1 -1
  469. package/dist/typography-CAr3dQhX.js +116 -0
  470. package/dist/typography-CAr3dQhX.js.map +1 -0
  471. package/dist/typography.js +2 -2
  472. package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
  473. package/dist/ui-provider-D2_TeLqw.js.map +1 -0
  474. package/dist/ui-provider.js +1 -1
  475. package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
  476. package/dist/upload-B0WHW7ak.js.map +1 -0
  477. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
  478. package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
  479. package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
  480. package/dist/usage-card-U0YBLTNT.js.map +1 -0
  481. package/dist/utils-Cospvlj1.js +4445 -0
  482. package/dist/utils-Cospvlj1.js.map +1 -0
  483. package/dist/value-inputs-CjfzGMsN.js +854 -0
  484. package/dist/value-inputs-CjfzGMsN.js.map +1 -0
  485. package/dist/value-typography-Deb3yQZg.js +116 -0
  486. package/dist/value-typography-Deb3yQZg.js.map +1 -0
  487. package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
  488. package/dist/workspace-YoFjXi6i.js.map +1 -0
  489. package/docs/consumer-skill/SKILL.md +123 -119
  490. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  491. package/docs/consumer-skill/examples/app-layout.tsx +42 -14
  492. package/docs/consumer-skill/examples/detail.tsx +20 -5
  493. package/docs/consumer-skill/examples/edit.tsx +1 -1
  494. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  495. package/docs/consumer-skill/examples/manifest.json +37 -3
  496. package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
  497. package/docs/consumer-skill/examples/website.tsx +56 -0
  498. package/docs/consumer-skill/references/analytics.md +70 -0
  499. package/docs/consumer-skill/references/composition.md +195 -9
  500. package/docs/consumer-skill/references/design-contract.md +33 -7
  501. package/docs/consumer-skill/references/discovery.md +80 -5
  502. package/docs/consumer-skill/references/installation.md +22 -0
  503. package/docs/consumer-skill/references/integration.md +46 -1
  504. package/docs/consumer-skill/references/public-api.json +2083 -237
  505. package/docs/consumer-skill/references/review.md +74 -6
  506. package/docs/consumer-skill/references/theming.md +59 -8
  507. package/docs/consumer-skill/references/tokens.json +180 -9
  508. package/docs/consumer-skill/references/workflows.md +34 -0
  509. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  510. package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
  511. package/docs/consumer-skill/scripts/discovery.mjs +69 -9
  512. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  513. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  514. package/package.json +11 -6
  515. package/dist/accordion-B-5Focs8.js.map +0 -1
  516. package/dist/action-menu-Cx3SdfbN.js +0 -265
  517. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  518. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  519. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  520. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  521. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  522. package/dist/attachment-BO2R47wn.js.map +0 -1
  523. package/dist/auth-OFwWSAap.js +0 -704
  524. package/dist/auth-OFwWSAap.js.map +0 -1
  525. package/dist/avatar-Bpzty83c.js.map +0 -1
  526. package/dist/badge-BZXZT9wd.js.map +0 -1
  527. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  528. package/dist/button-BS6l5JUw.js.map +0 -1
  529. package/dist/buttons-Co6GavvM.js +0 -674
  530. package/dist/buttons-Co6GavvM.js.map +0 -1
  531. package/dist/chart-DVfcwQu6.js +0 -149
  532. package/dist/chart-DVfcwQu6.js.map +0 -1
  533. package/dist/checkbox-BavDRjF7.js +0 -34
  534. package/dist/checkbox-BavDRjF7.js.map +0 -1
  535. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  536. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  537. package/dist/code-block-xHKbAJDj.js.map +0 -1
  538. package/dist/combobox-DEbdr-3u.js +0 -273
  539. package/dist/combobox-DEbdr-3u.js.map +0 -1
  540. package/dist/combobox-xv3yJbzl.js +0 -850
  541. package/dist/combobox-xv3yJbzl.js.map +0 -1
  542. package/dist/command-C0xe7u9B.js.map +0 -1
  543. package/dist/comments-DviPLnwy.js.map +0 -1
  544. package/dist/containers-6s-ucRQQ.js.map +0 -1
  545. package/dist/data-display-cWIRdeaf.js +0 -1129
  546. package/dist/data-display-cWIRdeaf.js.map +0 -1
  547. package/dist/date-BFNMnrS5.js +0 -140
  548. package/dist/date-BFNMnrS5.js.map +0 -1
  549. package/dist/date-picker-CA6ogMQB.js +0 -1521
  550. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  551. package/dist/date-pickers-BPIKLdsD.js +0 -224
  552. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  553. package/dist/display-CFM5myut.js.map +0 -1
  554. package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
  555. package/dist/feedback-DWUkgEjR.js.map +0 -1
  556. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  557. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  558. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  559. package/dist/filters-BhsUtsxW.js.map +0 -1
  560. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  561. package/dist/form-sizing-BWs70_a2.js +0 -100
  562. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  563. package/dist/format-iamDSqs2.js +0 -110
  564. package/dist/format-iamDSqs2.js.map +0 -1
  565. package/dist/forms-B7pzS25o.js.map +0 -1
  566. package/dist/forms-numeric-BUBxELBv.js +0 -867
  567. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  568. package/dist/header-C59QZyxV.js.map +0 -1
  569. package/dist/http-CLTVJc5I.js.map +0 -1
  570. package/dist/input-WwYQZJzG.js +0 -202
  571. package/dist/input-WwYQZJzG.js.map +0 -1
  572. package/dist/input-ci9fIgFH.js +0 -20
  573. package/dist/input-ci9fIgFH.js.map +0 -1
  574. package/dist/item-pJ0GsOiJ.js +0 -257
  575. package/dist/item-pJ0GsOiJ.js.map +0 -1
  576. package/dist/media-gallery-DhDRgnVZ.js +0 -200
  577. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  578. package/dist/message-COsdEvXT.js +0 -108
  579. package/dist/message-COsdEvXT.js.map +0 -1
  580. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  581. package/dist/navigation-DBEu4POU.js +0 -267
  582. package/dist/navigation-DBEu4POU.js.map +0 -1
  583. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  584. package/dist/number-BNT_BIzJ.js +0 -269
  585. package/dist/number-BNT_BIzJ.js.map +0 -1
  586. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  587. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  588. package/dist/overlays-B11wZka6.js +0 -982
  589. package/dist/overlays-B11wZka6.js.map +0 -1
  590. package/dist/page-BV6ioQg3.js +0 -202
  591. package/dist/page-BV6ioQg3.js.map +0 -1
  592. package/dist/page-header-DQRa0jug.js.map +0 -1
  593. package/dist/pagination-C29vvt3I.js.map +0 -1
  594. package/dist/popover-CoLDEg19.js.map +0 -1
  595. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  596. package/dist/primitives-DKPOGVpj.js +0 -330
  597. package/dist/primitives-DKPOGVpj.js.map +0 -1
  598. package/dist/progress-BOe8l_FZ.js.map +0 -1
  599. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  600. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  601. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  602. package/dist/scroll-area-BheMQ270.js.map +0 -1
  603. package/dist/select-B2mb-qN2.js +0 -108
  604. package/dist/select-B2mb-qN2.js.map +0 -1
  605. package/dist/separator-Gk_WXH-l.js.map +0 -1
  606. package/dist/settings-BnCyyPOJ.js.map +0 -1
  607. package/dist/sheet-B-q914Ad.js +0 -205
  608. package/dist/sheet-B-q914Ad.js.map +0 -1
  609. package/dist/sidebar-C_2p3Tfj.js +0 -501
  610. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  611. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  612. package/dist/smart-card-CYLn46e6.js +0 -578
  613. package/dist/smart-card-CYLn46e6.js.map +0 -1
  614. package/dist/spinner-BY9HbUEh.js.map +0 -1
  615. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  616. package/dist/surface-recipes-CQfRr-VL.js +0 -27
  617. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  618. package/dist/table-BS39xnlq.js +0 -1424
  619. package/dist/table-BS39xnlq.js.map +0 -1
  620. package/dist/table-DnlAJ-xR.js +0 -146
  621. package/dist/table-DnlAJ-xR.js.map +0 -1
  622. package/dist/tabs-B5cNMWiP.js +0 -187
  623. package/dist/tabs-B5cNMWiP.js.map +0 -1
  624. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  625. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  626. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  627. package/dist/timelines-B9ICkQcV.js.map +0 -1
  628. package/dist/track-recipes-LLPNVwFg.js +0 -10
  629. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  630. package/dist/typography-Cv8MT-82.js +0 -96
  631. package/dist/typography-Cv8MT-82.js.map +0 -1
  632. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  633. package/dist/upload-D8Za5x_c.js.map +0 -1
  634. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  635. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  636. package/dist/utils-C2EKeIw3.js +0 -72
  637. package/dist/utils-C2EKeIw3.js.map +0 -1
  638. package/dist/value-inputs-DX2dbxjj.js +0 -824
  639. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  640. package/dist/workspace-C1PZmk8L.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.\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' ? '-ml-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' ? 'pl-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\nconst carouselControlPlacementTone: Record<CarouselControlPlacement, string> = {\n\toutside: '',\n\tinside: 'z-10',\n\toverlay: 'z-10 border-background/70 bg-background/85 shadow-md backdrop-blur hover:bg-background',\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\nconst carouselDotClassName: Record<CarouselPaginationStyle, string> = {\n\tdot: 'size-2.5 rounded-full border border-border bg-muted hover:bg-muted-foreground/40',\n\tpill: 'h-2 w-2 rounded-radius-sm border border-transparent bg-muted-foreground/25 hover:bg-muted-foreground/40',\n};\n\nconst carouselDotSelectedClassName: Record<CarouselPaginationStyle, string> = {\n\tdot: 'border-foreground bg-foreground hover:bg-foreground',\n\tpill: 'w-5 rounded-full border-transparent 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 transition-[width,background-color,border-color] duration-200 active:not-aria-[haspopup]:translate-y-0',\n\t\t\t\t\tcarouselDotClassName[paginationStyle],\n\t\t\t\t\tselected && carouselDotSelectedClassName[paginationStyle],\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 ?? (\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\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","Button","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","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/70',\n\tpill: 'h-2 w-2 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground/70',\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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"}