themelia-react-ui 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. package/CHANGELOG.md +351 -0
  2. package/README.md +26 -13
  3. package/dist/{accordion-CQXVcd7Q.js → accordion-B6a3vVgA.js} +84 -82
  4. package/dist/accordion-B6a3vVgA.js.map +1 -0
  5. package/dist/action-menu-TzCoSlwL.js +280 -0
  6. package/dist/action-menu-TzCoSlwL.js.map +1 -0
  7. package/dist/{affordance-geometry.generated-CCIXb2A1.js → affordance-geometry.generated-B5iu-Mkr.js} +3 -2
  8. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +1 -0
  9. package/dist/{ai-artifact-2PQ2fItc.js → ai-artifact-BMJdv-6q.js} +379 -376
  10. package/dist/ai-artifact-BMJdv-6q.js.map +1 -0
  11. package/dist/{app-shell-BE_j8-AT.js → app-shell-ZK5RWdo6.js} +4 -4
  12. package/dist/{app-shell-BE_j8-AT.js.map → app-shell-ZK5RWdo6.js.map} +1 -1
  13. package/dist/attachment-BtfhGm8i.js +245 -0
  14. package/dist/attachment-BtfhGm8i.js.map +1 -0
  15. package/dist/{auth-M3vGMgDR.js → auth-CYxKfo69.js} +237 -235
  16. package/dist/auth-CYxKfo69.js.map +1 -0
  17. package/dist/{avatar-djdaaQ_s.js → avatar-BBnEJIx8.js} +66 -65
  18. package/dist/avatar-BBnEJIx8.js.map +1 -0
  19. package/dist/badge-MrKVNzW9.js +93 -0
  20. package/dist/badge-MrKVNzW9.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/batch-action-bar.js +3 -0
  27. package/dist/base/buttons.js +2 -3
  28. package/dist/base/cards.js +2 -2
  29. package/dist/base/carousel.js +13 -13
  30. package/dist/base/carousel.js.map +1 -1
  31. package/dist/base/cascader.js +103 -115
  32. package/dist/base/cascader.js.map +1 -1
  33. package/dist/base/chart.js +1 -1
  34. package/dist/base/choice-inputs.js +3 -3
  35. package/dist/base/code-block.js +1 -1
  36. package/dist/base/combobox.js +1 -1
  37. package/dist/base/command.js +1 -1
  38. package/dist/base/copyable.js +1 -1
  39. package/dist/base/date-pickers.js +2 -2
  40. package/dist/base/display.js +7 -7
  41. package/dist/base/feedback.js +3 -3
  42. package/dist/base/forms-numeric.js +1 -1
  43. package/dist/base/forms.js +2 -2
  44. package/dist/base/inline-edit.js +17 -17
  45. package/dist/base/inline-edit.js.map +1 -1
  46. package/dist/base/item.js +1 -1
  47. package/dist/base/media-gallery.js +1 -1
  48. package/dist/base/metadata-list.js +3 -0
  49. package/dist/base/navigation.js +7 -7
  50. package/dist/base/popover-menu.js +1 -1
  51. package/dist/base/popover.js +1 -1
  52. package/dist/base/qr-code.js +1 -1
  53. package/dist/base/repeaters.js +171 -170
  54. package/dist/base/repeaters.js.map +1 -1
  55. package/dist/base/sheet.js +1 -1
  56. package/dist/base/sidebar.js +1 -1
  57. package/dist/base/signature-pad.js +147 -137
  58. package/dist/base/signature-pad.js.map +1 -1
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +1 -1
  61. package/dist/base/structure.js +1 -1
  62. package/dist/base/table.js +1 -1
  63. package/dist/base/text-inputs.js +2 -2
  64. package/dist/base/toaster.js +2 -2
  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 +2 -2
  69. package/dist/batch-action-bar-BZGDG-Si.js +104 -0
  70. package/dist/batch-action-bar-BZGDG-Si.js.map +1 -0
  71. package/dist/blocks/admin.js +173 -171
  72. package/dist/blocks/admin.js.map +1 -1
  73. package/dist/blocks/ai.js +266 -263
  74. package/dist/blocks/ai.js.map +1 -1
  75. package/dist/blocks/analytics/usage-card.js +1 -1
  76. package/dist/blocks/analytics.js +440 -438
  77. package/dist/blocks/analytics.js.map +1 -1
  78. package/dist/blocks/collaboration.js +1 -1
  79. package/dist/blocks/commerce/receipt.js +1 -1
  80. package/dist/blocks/commerce.js +1945 -1266
  81. package/dist/blocks/commerce.js.map +1 -1
  82. package/dist/blocks/data-display.js +3 -2
  83. package/dist/blocks/onboarding.js +50 -49
  84. package/dist/blocks/onboarding.js.map +1 -1
  85. package/dist/blocks/planning.js +25 -25
  86. package/dist/blocks/planning.js.map +1 -1
  87. package/dist/blocks/timelines.js +1 -1
  88. package/dist/breadcrumbs-D5t7I023.js +129 -0
  89. package/dist/breadcrumbs-D5t7I023.js.map +1 -0
  90. package/dist/{button-R9CCoH7A.js → button-QYwiyhD2.js} +15 -14
  91. package/dist/button-QYwiyhD2.js.map +1 -0
  92. package/dist/{button-BS3KDg00.js → buttons-SbIcm1HJ.js} +200 -213
  93. package/dist/buttons-SbIcm1HJ.js.map +1 -0
  94. package/dist/{cards-QoJ4syG9.js → cards-CiiHpKYd.js} +8 -8
  95. package/dist/cards-CiiHpKYd.js.map +1 -0
  96. package/dist/{chart-DwYRKKc-.js → chart-QfrARkXl.js} +5 -5
  97. package/dist/{chart-DwYRKKc-.js.map → chart-QfrARkXl.js.map} +1 -1
  98. package/dist/checkbox-DhB6K0bK.js +36 -0
  99. package/dist/checkbox-DhB6K0bK.js.map +1 -0
  100. package/dist/choice-inputs-t6w3ATNz.js +766 -0
  101. package/dist/choice-inputs-t6w3ATNz.js.map +1 -0
  102. package/dist/code-block-Dgbu-CU3.js +185 -0
  103. package/dist/code-block-Dgbu-CU3.js.map +1 -0
  104. package/dist/{collapsible-oMUGM4tr.js → collapsible-D8AEGU1-.js} +4 -4
  105. package/dist/{collapsible-oMUGM4tr.js.map → collapsible-D8AEGU1-.js.map} +1 -1
  106. package/dist/{collection-content-Ys-OZOkY.js → collection-content-uK16Grv0.js} +3 -3
  107. package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-uK16Grv0.js.map} +1 -1
  108. package/dist/{combobox-6dvVny2q.js → combobox-2Ic8N9bL.js} +74 -68
  109. package/dist/combobox-2Ic8N9bL.js.map +1 -0
  110. package/dist/{combobox-CB7039j7.js → combobox-DLl0bfiq.js} +307 -305
  111. package/dist/combobox-DLl0bfiq.js.map +1 -0
  112. package/dist/{command-kPMPjIxJ.js → command-kNR20o7x.js} +7 -7
  113. package/dist/{command-kPMPjIxJ.js.map → command-kNR20o7x.js.map} +1 -1
  114. package/dist/{comments-You0Bzbr.js → comments-BpDuCUUu.js} +341 -339
  115. package/dist/comments-BpDuCUUu.js.map +1 -0
  116. package/dist/components/base/action-menu/action-menu.d.ts +21 -4
  117. package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
  118. package/dist/components/base/action-menu/index.d.ts +1 -0
  119. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  120. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  121. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  122. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  123. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  124. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  125. package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
  126. package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
  127. package/dist/components/base/display/alert-dialog.d.ts +6 -5
  128. package/dist/components/base/display/dialog.d.ts +4 -8
  129. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  130. package/dist/components/base/forms/form-sizing.d.ts +15 -12
  131. package/dist/components/base/metadata-list/index.d.ts +12 -0
  132. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  133. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  134. package/dist/components/base/navigation/index.d.ts +1 -1
  135. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  136. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  137. package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
  138. package/dist/components/base/sheet/sheet.d.ts +4 -8
  139. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  140. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  141. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  142. package/dist/components/base/upload/upload.recipes.d.ts +25 -3
  143. package/dist/components/base/value-inputs/index.d.ts +5 -5
  144. package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
  145. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  146. package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
  147. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  148. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  149. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  150. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  151. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  152. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  153. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  154. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  155. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +43 -0
  156. package/dist/components/blocks/commerce/index.d.ts +13 -5
  157. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  158. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  159. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  160. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  161. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  162. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  163. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  164. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  165. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  166. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  167. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  168. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  169. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  170. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  171. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  172. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  173. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  174. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  175. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  176. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  177. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  178. package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
  179. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  180. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  181. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  182. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  183. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  184. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  185. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  186. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  187. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  188. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  189. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  190. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  191. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  192. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  193. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  194. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  195. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  196. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  197. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  198. package/dist/components/features/kanban/kanban.d.ts +1 -1
  199. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  200. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  201. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/index.d.ts +1 -1
  203. package/dist/components/features/media-library/media-library.d.ts +1 -1
  204. package/dist/components/features/media-library/media-library.strings.d.ts +4 -0
  205. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  206. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  207. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  208. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  209. package/dist/components/features/overlays/dialog.d.ts +1 -1
  210. package/dist/components/features/overlays/index.d.ts +1 -1
  211. package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
  212. package/dist/components/features/overlays/overlays.types.d.ts +20 -0
  213. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  214. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  215. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  216. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  217. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  218. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  219. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  220. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  221. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  222. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  223. package/dist/components/features/products/products.types.d.ts +9 -2
  224. package/dist/components/features/resource/index.d.ts +1 -1
  225. package/dist/components/features/resource/resource.d.ts +1 -1
  226. package/dist/components/features/resource/resource.types.d.ts +34 -6
  227. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  228. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  229. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  230. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  231. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  232. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  233. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +45 -0
  234. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  235. package/dist/components/features/sync/index.d.ts +26 -3
  236. package/dist/components/features/table/data-table.d.ts +1 -1
  237. package/dist/components/features/table/table.types.d.ts +32 -7
  238. package/dist/components/layout/page/index.d.ts +1 -1
  239. package/dist/components/layout/page/page.types.d.ts +33 -36
  240. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  241. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  242. package/dist/components/layout/settings/settings.d.ts +16 -2
  243. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  244. package/dist/components/typography/rich-text/index.d.ts +1 -1
  245. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  246. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  247. package/dist/components/typography/text-link.d.ts +4 -3
  248. package/dist/components/ui/checkbox.d.ts +4 -3
  249. package/dist/components/ui/overlay.recipes.d.ts +0 -9
  250. package/dist/components/ui/switch.d.ts +2 -2
  251. package/dist/{containers-D_L4mTVb.js → containers-DmWiJa2I.js} +36 -35
  252. package/dist/containers-DmWiJa2I.js.map +1 -0
  253. package/dist/{copyable-DDjTeW_j.js → copyable-B3Gwgdqc.js} +6 -6
  254. package/dist/{copyable-DDjTeW_j.js.map → copyable-B3Gwgdqc.js.map} +1 -1
  255. package/dist/data-display-DafIvCl5.js +960 -0
  256. package/dist/data-display-DafIvCl5.js.map +1 -0
  257. package/dist/{date-uf3z37Nm.js → date-BgK3bTdo.js} +5 -5
  258. package/dist/{date-uf3z37Nm.js.map → date-BgK3bTdo.js.map} +1 -1
  259. package/dist/date-picker-CF-DtUpF.js +1529 -0
  260. package/dist/date-picker-CF-DtUpF.js.map +1 -0
  261. package/dist/{date-pickers-CnFCb0n2.js → date-pickers-BmzxJl5l.js} +19 -19
  262. package/dist/{date-pickers-CnFCb0n2.js.map → date-pickers-BmzxJl5l.js.map} +1 -1
  263. package/dist/{display-DrdvPwF0.js → display-DsQTVzMz.js} +88 -87
  264. package/dist/display-DsQTVzMz.js.map +1 -0
  265. package/dist/{dropdown-menu-CURh59jb.js → dropdown-menu-E2qmdC7o.js} +7 -7
  266. package/dist/{dropdown-menu-CURh59jb.js.map → dropdown-menu-E2qmdC7o.js.map} +1 -1
  267. package/dist/features/activities.js +414 -501
  268. package/dist/features/activities.js.map +1 -1
  269. package/dist/features/ai-chat.js +170 -169
  270. package/dist/features/ai-chat.js.map +1 -1
  271. package/dist/features/async-preview.js +8 -8
  272. package/dist/features/async-preview.js.map +1 -1
  273. package/dist/features/combobox.js +1 -1
  274. package/dist/features/comments.js +1 -1
  275. package/dist/features/data-view.js +139 -138
  276. package/dist/features/data-view.js.map +1 -1
  277. package/dist/features/email-composer/engine.js +1 -1
  278. package/dist/features/email-composer.js +73 -71
  279. package/dist/features/email-composer.js.map +1 -1
  280. package/dist/features/event-calendar.js +278 -275
  281. package/dist/features/event-calendar.js.map +1 -1
  282. package/dist/features/filters.js +1 -1
  283. package/dist/features/global-search.js +307 -310
  284. package/dist/features/global-search.js.map +1 -1
  285. package/dist/features/kanban.js +95 -97
  286. package/dist/features/kanban.js.map +1 -1
  287. package/dist/features/map.js +56 -57
  288. package/dist/features/map.js.map +1 -1
  289. package/dist/features/media-library.js +918 -825
  290. package/dist/features/media-library.js.map +1 -1
  291. package/dist/features/mentions.js +1 -1
  292. package/dist/features/overlays.js +1 -1
  293. package/dist/features/products.js +1115 -1122
  294. package/dist/features/products.js.map +1 -1
  295. package/dist/features/questionnaire.js +202 -194
  296. package/dist/features/questionnaire.js.map +1 -1
  297. package/dist/features/resource-assignment.js +25 -25
  298. package/dist/features/resource-assignment.js.map +1 -1
  299. package/dist/features/resource.js +77 -69
  300. package/dist/features/resource.js.map +1 -1
  301. package/dist/features/rich-text-editor.js +30 -11
  302. package/dist/features/rich-text-editor.js.map +1 -1
  303. package/dist/features/schema-form.js +33 -33
  304. package/dist/features/schema-form.js.map +1 -1
  305. package/dist/features/suggestions.js +3 -3
  306. package/dist/features/sync.js +3 -3
  307. package/dist/features/table.js +1 -1
  308. package/dist/features/theme-tweaker.js +397 -396
  309. package/dist/features/theme-tweaker.js.map +1 -1
  310. package/dist/{feedback-C7nR0UtT.js → feedback-qNuMBtRH.js} +84 -83
  311. package/dist/feedback-qNuMBtRH.js.map +1 -0
  312. package/dist/{field-affordance-recipes-CkOCdE2y.js → field-affordance-recipes-qQeIf4lG.js} +8 -6
  313. package/dist/field-affordance-recipes-qQeIf4lG.js.map +1 -0
  314. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  315. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  316. package/dist/{filters-Da-gNPsE.js → filters-BkHH53uv.js} +565 -563
  317. package/dist/filters-BkHH53uv.js.map +1 -0
  318. package/dist/focus-recipes-B653VaLq.js +12 -0
  319. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  320. package/dist/{form-field-VZRULhUK.js → form-field-DUt4UxSV.js} +4 -4
  321. package/dist/{form-field-VZRULhUK.js.map → form-field-DUt4UxSV.js.map} +1 -1
  322. package/dist/{form-sizing-uWP4lzVh.js → form-sizing-By94KzXE.js} +19 -15
  323. package/dist/form-sizing-By94KzXE.js.map +1 -0
  324. package/dist/{forms-DDeEnXSY.js → forms-Bzha-Y3B.js} +22 -22
  325. package/dist/{forms-DDeEnXSY.js.map → forms-Bzha-Y3B.js.map} +1 -1
  326. package/dist/{forms-numeric-D3CO60IF.js → forms-numeric-C0bvjRPZ.js} +265 -264
  327. package/dist/forms-numeric-C0bvjRPZ.js.map +1 -0
  328. package/dist/{header-2ycNqGOR.js → header-BOefOKd1.js} +47 -51
  329. package/dist/header-BOefOKd1.js.map +1 -0
  330. package/dist/{hooks-DQ5SPwZw.js → hooks-9k_TtmKh.js} +2 -2
  331. package/dist/{hooks-DQ5SPwZw.js.map → hooks-9k_TtmKh.js.map} +1 -1
  332. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  333. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  334. package/dist/icon-badge-CAuKupo9.js +55 -0
  335. package/dist/icon-badge-CAuKupo9.js.map +1 -0
  336. package/dist/index.js +7 -7
  337. package/dist/input-DWhBBBww.js +262 -0
  338. package/dist/input-DWhBBBww.js.map +1 -0
  339. package/dist/{input-BoLm9Hks.js → input-Ddi_LSYv.js} +3 -3
  340. package/dist/{input-BoLm9Hks.js.map → input-Ddi_LSYv.js.map} +1 -1
  341. package/dist/interaction-recipes-CHr0dJUs.js +24 -0
  342. package/dist/interaction-recipes-CHr0dJUs.js.map +1 -0
  343. package/dist/{item-xzh8Df65.js → item-DEmDiTlD.js} +98 -97
  344. package/dist/item-DEmDiTlD.js.map +1 -0
  345. package/dist/layer-recipes-CCpklYME.js +13 -0
  346. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  347. package/dist/layout/app-shell.js +1 -1
  348. package/dist/layout/auth.js +1 -1
  349. package/dist/layout/containers.js +1 -1
  350. package/dist/layout/header.js +1 -1
  351. package/dist/layout/hooks.js +1 -1
  352. package/dist/layout/navigation.js +1 -1
  353. package/dist/layout/page.js +1 -1
  354. package/dist/layout/settings.js +1 -1
  355. package/dist/layout/sidebar.js +2 -2
  356. package/dist/layout/workspace.js +1 -1
  357. package/dist/layout.js +10 -10
  358. package/dist/lib/affordance-geometry.generated.d.ts +1 -0
  359. package/dist/lib/field-affordance-recipes.d.ts +6 -1
  360. package/dist/lib/field-state-recipes.d.ts +9 -8
  361. package/dist/lib/focus-recipes.d.ts +24 -0
  362. package/dist/lib/interaction-recipes.d.ts +35 -0
  363. package/dist/lib/layer-recipes.d.ts +19 -0
  364. package/dist/lib/motion-recipes.d.ts +1 -0
  365. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
  366. package/dist/lib/safe-image-src.d.ts +10 -0
  367. package/dist/lib/sanitize-html.d.ts +15 -3
  368. package/dist/lib/surface-recipes.d.ts +47 -7
  369. package/dist/lib/token-merge.generated.d.ts +9 -6
  370. package/dist/lib/tone-recipes.d.ts +79 -0
  371. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  372. package/dist/lib/ui-provider/index.d.ts +2 -2
  373. package/dist/lib/ui-provider/types.d.ts +9 -0
  374. package/dist/lib/utils.js +1 -1
  375. package/dist/media-gallery-DcTtAaeC.js +203 -0
  376. package/dist/media-gallery-DcTtAaeC.js.map +1 -0
  377. package/dist/mentions-D-uyCh01.js +568 -0
  378. package/dist/mentions-D-uyCh01.js.map +1 -0
  379. package/dist/{message-YfFmbXNP.js → message-CdHgIWKf.js} +5 -5
  380. package/dist/{message-YfFmbXNP.js.map → message-CdHgIWKf.js.map} +1 -1
  381. package/dist/metadata-list-X5rYAKSB.js +394 -0
  382. package/dist/metadata-list-X5rYAKSB.js.map +1 -0
  383. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  384. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  385. package/dist/navigation-D3KwXmaq.js +145 -0
  386. package/dist/navigation-D3KwXmaq.js.map +1 -0
  387. package/dist/navigation-HJf5zxlH.js +268 -0
  388. package/dist/navigation-HJf5zxlH.js.map +1 -0
  389. package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BVowojQw.js} +2 -2
  390. package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BVowojQw.js.map} +1 -1
  391. package/dist/{number-CKRBYmZK.js → number-DMhe-Vsk.js} +5 -5
  392. package/dist/{number-CKRBYmZK.js.map → number-DMhe-Vsk.js.map} +1 -1
  393. package/dist/overflow-tab-bar-sQHXLlwQ.js +280 -0
  394. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +1 -0
  395. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  396. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  397. package/dist/overlays-I0axtYA6.js +999 -0
  398. package/dist/overlays-I0axtYA6.js.map +1 -0
  399. package/dist/page-B5dTH9gE.js +224 -0
  400. package/dist/page-B5dTH9gE.js.map +1 -0
  401. package/dist/page-header-commands-DjzFEq3E.js +126 -0
  402. package/dist/page-header-commands-DjzFEq3E.js.map +1 -0
  403. package/dist/{pagination-Cm0jqa3I.js → pagination-3bPA_a6K.js} +15 -15
  404. package/dist/{pagination-Cm0jqa3I.js.map → pagination-3bPA_a6K.js.map} +1 -1
  405. package/dist/{popover-Dcv_9jxr.js → popover-Di55PyAI.js} +8 -8
  406. package/dist/popover-Di55PyAI.js.map +1 -0
  407. package/dist/{popover-menu-DnRFKnHP.js → popover-menu-B71Tn2Qz.js} +6 -6
  408. package/dist/{popover-menu-DnRFKnHP.js.map → popover-menu-B71Tn2Qz.js.map} +1 -1
  409. package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-Bdyhj2db.js} +2 -2
  410. package/dist/{popover.recipes-wmbvL8Ah.js.map → popover.recipes-Bdyhj2db.js.map} +1 -1
  411. package/dist/{primitives-BHrwQXFC.js → primitives-B-CkiEMU.js} +5 -5
  412. package/dist/{primitives-BHrwQXFC.js.map → primitives-B-CkiEMU.js.map} +1 -1
  413. package/dist/primitives.js +4 -4
  414. package/dist/{progress-Br9WTFya.js → progress-rnS8-uAW.js} +9 -9
  415. package/dist/{progress-Br9WTFya.js.map → progress-rnS8-uAW.js.map} +1 -1
  416. package/dist/{receipt-CV89q1fs.js → receipt-D0oswZ0p.js} +6 -6
  417. package/dist/{receipt-CV89q1fs.js.map → receipt-D0oswZ0p.js.map} +1 -1
  418. package/dist/rich-text-DvGulsNJ.js +78 -0
  419. package/dist/rich-text-DvGulsNJ.js.map +1 -0
  420. package/dist/rich-text-editor-sMU_Scqm.js +1204 -0
  421. package/dist/rich-text-editor-sMU_Scqm.js.map +1 -0
  422. package/dist/rich-text-editor.recipes-CadiF_Uu.js +88 -0
  423. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +1 -0
  424. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  425. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  426. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  427. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  428. package/dist/sanitize-html-DsQmI48u.js +92 -0
  429. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  430. package/dist/scroll-area-Bt_vXY2b.js +48 -0
  431. package/dist/scroll-area-Bt_vXY2b.js.map +1 -0
  432. package/dist/{separator-Do5GWDYi.js → separator-C8DlRGwF.js} +3 -3
  433. package/dist/{separator-Do5GWDYi.js.map → separator-C8DlRGwF.js.map} +1 -1
  434. package/dist/{separator-BMEvwnSX.js → separator-CYHnjsAb.js} +2 -2
  435. package/dist/{separator-BMEvwnSX.js.map → separator-CYHnjsAb.js.map} +1 -1
  436. package/dist/services/actions/action-adapters.d.ts +18 -0
  437. package/dist/services/actions/index.d.ts +1 -1
  438. package/dist/services/actions.js +16 -4
  439. package/dist/services/actions.js.map +1 -1
  440. package/dist/settings-CQW3b-Cu.js +170 -0
  441. package/dist/settings-CQW3b-Cu.js.map +1 -0
  442. package/dist/sheet-4SEvVYzA.js +210 -0
  443. package/dist/sheet-4SEvVYzA.js.map +1 -0
  444. package/dist/{sidebar-Crc9M9JV.js → sidebar-C7WWR29L.js} +180 -179
  445. package/dist/sidebar-C7WWR29L.js.map +1 -0
  446. package/dist/{sidebar-Cb8WzOvE.js → sidebar-d7Dg80ln.js} +16 -16
  447. package/dist/sidebar-d7Dg80ln.js.map +1 -0
  448. package/dist/{skeleton-DVMXr15h.js → skeleton-Cz890JZF.js} +9 -9
  449. package/dist/{skeleton-DVMXr15h.js.map → skeleton-Cz890JZF.js.map} +1 -1
  450. package/dist/smart-card-lFKxn5Hu.js +595 -0
  451. package/dist/smart-card-lFKxn5Hu.js.map +1 -0
  452. package/dist/{spinner-CmTAbEp0.js → spinner-fa3h1Aif.js} +7 -7
  453. package/dist/{spinner-CmTAbEp0.js.map → spinner-fa3h1Aif.js.map} +1 -1
  454. package/dist/{structure-hzCW-XsV.js → structure-DC2dygdA.js} +2 -2
  455. package/dist/{structure-hzCW-XsV.js.map → structure-DC2dygdA.js.map} +1 -1
  456. package/dist/style.css +1 -1
  457. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  458. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  459. package/dist/{table-D6zKeYQX.js → table-CIKyLUsy.js} +59 -58
  460. package/dist/table-CIKyLUsy.js.map +1 -0
  461. package/dist/table-CrcLN9Io.js +1458 -0
  462. package/dist/table-CrcLN9Io.js.map +1 -0
  463. package/dist/{tabs-Dk8E_knt.js → tabs-DwBJfjxX.js} +58 -57
  464. package/dist/tabs-DwBJfjxX.js.map +1 -0
  465. package/dist/{text-inputs-BFpku0Qd.js → text-inputs-aaK9wcDT.js} +74 -79
  466. package/dist/text-inputs-aaK9wcDT.js.map +1 -0
  467. package/dist/theme.css +3 -3
  468. package/dist/{timelines-CxuAFIc2.js → timelines-C_SBwHNP.js} +153 -150
  469. package/dist/timelines-C_SBwHNP.js.map +1 -0
  470. package/dist/tone-recipes-CPoExcTE.js +70 -0
  471. package/dist/tone-recipes-CPoExcTE.js.map +1 -0
  472. package/dist/tooltip-CsfgrfS7.js +111 -0
  473. package/dist/tooltip-CsfgrfS7.js.map +1 -0
  474. package/dist/{tree-BotPlyiD.js → tree-BiKhg8AY.js} +68 -66
  475. package/dist/tree-BiKhg8AY.js.map +1 -0
  476. package/dist/typography/rich-text.js +1 -1
  477. package/dist/typography-DTRkE9zL.js +117 -0
  478. package/dist/typography-DTRkE9zL.js.map +1 -0
  479. package/dist/typography.js +1 -1
  480. package/dist/{ui-provider-D2_TeLqw.js → ui-provider-1D_NSYzO.js} +11 -3
  481. package/dist/ui-provider-1D_NSYzO.js.map +1 -0
  482. package/dist/ui-provider.js +3 -3
  483. package/dist/{upload-B0WHW7ak.js → upload-BO8-CLN6.js} +209 -209
  484. package/dist/upload-BO8-CLN6.js.map +1 -0
  485. package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-EOC8g1gf.js} +109 -111
  486. package/dist/upload-queue-EOC8g1gf.js.map +1 -0
  487. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  488. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  489. package/dist/{usage-card-U0YBLTNT.js → usage-card-obRaBskq.js} +46 -46
  490. package/dist/{usage-card-U0YBLTNT.js.map → usage-card-obRaBskq.js.map} +1 -1
  491. package/dist/{utils-Cospvlj1.js → utils-l5LpDw2z.js} +56 -24
  492. package/dist/utils-l5LpDw2z.js.map +1 -0
  493. package/dist/value-inputs-TAYMX111.js +947 -0
  494. package/dist/value-inputs-TAYMX111.js.map +1 -0
  495. package/dist/{value-typography-Deb3yQZg.js → value-typography-b8wpz1eX.js} +2 -2
  496. package/dist/{value-typography-Deb3yQZg.js.map → value-typography-b8wpz1eX.js.map} +1 -1
  497. package/dist/workspace-DH0v0KcB.js +407 -0
  498. package/dist/workspace-DH0v0KcB.js.map +1 -0
  499. package/docs/consumer-skill/SKILL.md +19 -20
  500. package/docs/consumer-skill/examples/app-layout.tsx +1 -1
  501. package/docs/consumer-skill/examples/composition.tsx +3 -3
  502. package/docs/consumer-skill/examples/detail.tsx +59 -12
  503. package/docs/consumer-skill/examples/edit.tsx +1 -1
  504. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  505. package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
  506. package/docs/consumer-skill/examples/website.tsx +1 -1
  507. package/docs/consumer-skill/references/agents-md.md +33 -0
  508. package/docs/consumer-skill/references/analytics.md +1 -1
  509. package/docs/consumer-skill/references/composition.md +51 -8
  510. package/docs/consumer-skill/references/design-contract.md +12 -3
  511. package/docs/consumer-skill/references/installation.md +11 -1
  512. package/docs/consumer-skill/references/public-api.json +847 -447
  513. package/docs/consumer-skill/references/review.md +25 -5
  514. package/docs/consumer-skill/references/theming.md +8 -4
  515. package/docs/consumer-skill/references/tokens.json +1 -1
  516. package/docs/consumer-skill/references/workflows.md +29 -10
  517. package/docs/consumer-skill/scripts/composition-policy.mjs +41 -11
  518. package/docs/consumer-skill/scripts/surface-policy.mjs +139 -5
  519. package/package.json +10 -2
  520. package/dist/accordion-CQXVcd7Q.js.map +0 -1
  521. package/dist/action-menu-BTpyPWJ2.js +0 -264
  522. package/dist/action-menu-BTpyPWJ2.js.map +0 -1
  523. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
  524. package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
  525. package/dist/attachment-q69dlt5Y.js +0 -244
  526. package/dist/attachment-q69dlt5Y.js.map +0 -1
  527. package/dist/auth-M3vGMgDR.js.map +0 -1
  528. package/dist/avatar-djdaaQ_s.js.map +0 -1
  529. package/dist/badge-0tATj-tW.js +0 -92
  530. package/dist/badge-0tATj-tW.js.map +0 -1
  531. package/dist/breadcrumbs-BG_FfMK4.js +0 -128
  532. package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
  533. package/dist/button-BS3KDg00.js.map +0 -1
  534. package/dist/button-R9CCoH7A.js.map +0 -1
  535. package/dist/buttons-DS0ZIwJ_.js +0 -99
  536. package/dist/buttons-DS0ZIwJ_.js.map +0 -1
  537. package/dist/cards-QoJ4syG9.js.map +0 -1
  538. package/dist/checkbox-B7ygNTYp.js +0 -35
  539. package/dist/checkbox-B7ygNTYp.js.map +0 -1
  540. package/dist/choice-inputs-DrJ17tpL.js +0 -752
  541. package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
  542. package/dist/code-block-CD0B7M93.js +0 -183
  543. package/dist/code-block-CD0B7M93.js.map +0 -1
  544. package/dist/combobox-6dvVny2q.js.map +0 -1
  545. package/dist/combobox-CB7039j7.js.map +0 -1
  546. package/dist/comments-You0Bzbr.js.map +0 -1
  547. package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
  548. package/dist/containers-D_L4mTVb.js.map +0 -1
  549. package/dist/data-display-3xWQUnMA.js +0 -1335
  550. package/dist/data-display-3xWQUnMA.js.map +0 -1
  551. package/dist/date-picker-DrDFj8Lo.js +0 -1527
  552. package/dist/date-picker-DrDFj8Lo.js.map +0 -1
  553. package/dist/display-DrdvPwF0.js.map +0 -1
  554. package/dist/feedback-C7nR0UtT.js.map +0 -1
  555. package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
  556. package/dist/field-state-recipes-C-MFBX_8.js +0 -11
  557. package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
  558. package/dist/filters-Da-gNPsE.js.map +0 -1
  559. package/dist/form-sizing-uWP4lzVh.js.map +0 -1
  560. package/dist/forms-numeric-D3CO60IF.js.map +0 -1
  561. package/dist/header-2ycNqGOR.js.map +0 -1
  562. package/dist/icon-badge-DKlaKXoo.js +0 -53
  563. package/dist/icon-badge-DKlaKXoo.js.map +0 -1
  564. package/dist/input-DhQdBnV3.js +0 -255
  565. package/dist/input-DhQdBnV3.js.map +0 -1
  566. package/dist/item-xzh8Df65.js.map +0 -1
  567. package/dist/media-gallery-DQUQ0m3O.js +0 -201
  568. package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
  569. package/dist/mentions-DwnO1hh4.js +0 -564
  570. package/dist/mentions-DwnO1hh4.js.map +0 -1
  571. package/dist/navigation-Cbp5V8gG.js +0 -264
  572. package/dist/navigation-Cbp5V8gG.js.map +0 -1
  573. package/dist/navigation-Cs1npsPm.js +0 -300
  574. package/dist/navigation-Cs1npsPm.js.map +0 -1
  575. package/dist/overlay.recipes-CNO2S9V6.js +0 -34
  576. package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
  577. package/dist/overlays-DhZO7N-I.js +0 -994
  578. package/dist/overlays-DhZO7N-I.js.map +0 -1
  579. package/dist/page-C6R_8jFt.js +0 -325
  580. package/dist/page-C6R_8jFt.js.map +0 -1
  581. package/dist/page-header-hUTzcRZX.js +0 -112
  582. package/dist/page-header-hUTzcRZX.js.map +0 -1
  583. package/dist/popover-Dcv_9jxr.js.map +0 -1
  584. package/dist/rich-text-editor-CF8QYt5p.js +0 -574
  585. package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
  586. package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
  587. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
  588. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  589. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  590. package/dist/rich-text-j-FGAeZW.js +0 -32
  591. package/dist/rich-text-j-FGAeZW.js.map +0 -1
  592. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  593. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  594. package/dist/scroll-area-DRdr16Pt.js +0 -47
  595. package/dist/scroll-area-DRdr16Pt.js.map +0 -1
  596. package/dist/settings-DHk0L2MF.js +0 -161
  597. package/dist/settings-DHk0L2MF.js.map +0 -1
  598. package/dist/sheet-DRFNY1_D.js +0 -207
  599. package/dist/sheet-DRFNY1_D.js.map +0 -1
  600. package/dist/sidebar-Cb8WzOvE.js.map +0 -1
  601. package/dist/sidebar-Crc9M9JV.js.map +0 -1
  602. package/dist/smart-card-Bek-TwUp.js +0 -599
  603. package/dist/smart-card-Bek-TwUp.js.map +0 -1
  604. package/dist/surface-recipes-DOdoBXGm.js +0 -28
  605. package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
  606. package/dist/table-D6zKeYQX.js.map +0 -1
  607. package/dist/table-Dn4XSrSB.js +0 -1444
  608. package/dist/table-Dn4XSrSB.js.map +0 -1
  609. package/dist/tabs-Dk8E_knt.js.map +0 -1
  610. package/dist/text-inputs-BFpku0Qd.js.map +0 -1
  611. package/dist/timelines-CxuAFIc2.js.map +0 -1
  612. package/dist/tree-BotPlyiD.js.map +0 -1
  613. package/dist/typography-CAr3dQhX.js +0 -116
  614. package/dist/typography-CAr3dQhX.js.map +0 -1
  615. package/dist/ui-provider-D2_TeLqw.js.map +0 -1
  616. package/dist/upload-B0WHW7ak.js.map +0 -1
  617. package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
  618. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  619. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  620. package/dist/utils-Cospvlj1.js.map +0 -1
  621. package/dist/value-inputs-CjfzGMsN.js +0 -854
  622. package/dist/value-inputs-CjfzGMsN.js.map +0 -1
  623. package/dist/workspace-YoFjXi6i.js +0 -394
  624. package/dist/workspace-YoFjXi6i.js.map +0 -1
  625. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "../lib/strings.js";
3
- import { t } from "../utils-Cospvlj1.js";
4
- import { s as n } from "../typography-CAr3dQhX.js";
5
- import { t as r } from "../button-BS3KDg00.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
6
  import { r as i } from "../icon-size-B6PVwjbC.js";
7
7
  import { createContext as a, forwardRef as o, useCallback as s, useContext as c, useEffect as l, useState as u } from "react";
8
8
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
@@ -117,14 +117,14 @@ var w = {
117
117
  end: "justify-end",
118
118
  between: "justify-between"
119
119
  }, E = {
120
- dot: "size-2.5 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground/70",
121
- pill: "h-2 w-2 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground/70"
120
+ dot: "size-2.5 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground",
121
+ pill: "h-2 w-2 rounded-full border border-transparent bg-muted-foreground/40 hover:bg-muted-foreground"
122
122
  }, D = {
123
123
  dot: "bg-foreground hover:bg-foreground",
124
124
  pill: "w-5 bg-foreground hover:bg-foreground"
125
125
  }, O = o(function({ className: e, tone: a = "secondary", buttonStyle: o = "outline", size: s = "sm", iconOnly: c = !0, placement: l, onClick: u, disabled: h, children: g, ..._ }, v) {
126
126
  let { orientation: b, controlPlacement: x, scrollPrev: S, canScrollPrev: T, strings: E } = y(), D = l ?? x;
127
- return /* @__PURE__ */ f(r, {
127
+ return /* @__PURE__ */ f(n, {
128
128
  ref: v,
129
129
  ..._,
130
130
  type: "button",
@@ -142,7 +142,7 @@ var w = {
142
142
  children: g ?? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(m, {
143
143
  className: i.sm,
144
144
  "aria-hidden": "true"
145
- }), /* @__PURE__ */ f(n, {
145
+ }), /* @__PURE__ */ f(r, {
146
146
  tag: "span",
147
147
  size: "inherit",
148
148
  className: "sr-only",
@@ -153,7 +153,7 @@ var w = {
153
153
  O.displayName = "CarouselPrevious";
154
154
  var k = o(function({ className: e, tone: a = "secondary", buttonStyle: o = "outline", size: s = "sm", iconOnly: c = !0, placement: l, onClick: u, disabled: m, children: g, ..._ }, v) {
155
155
  let { orientation: b, controlPlacement: x, scrollNext: S, canScrollNext: T, strings: E } = y(), D = l ?? x;
156
- return /* @__PURE__ */ f(r, {
156
+ return /* @__PURE__ */ f(n, {
157
157
  ref: v,
158
158
  ..._,
159
159
  type: "button",
@@ -171,7 +171,7 @@ var k = o(function({ className: e, tone: a = "secondary", buttonStyle: o = "outl
171
171
  children: g ?? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(h, {
172
172
  className: i.sm,
173
173
  "aria-hidden": "true"
174
- }), /* @__PURE__ */ f(n, {
174
+ }), /* @__PURE__ */ f(r, {
175
175
  tag: "span",
176
176
  size: "inherit",
177
177
  className: "sr-only",
@@ -217,15 +217,15 @@ var j = o(function({ className: e, dotClassName: n, paginationStyle: r = "dot",
217
217
  });
218
218
  });
219
219
  j.displayName = "CarouselDots";
220
- var M = o(function({ index: e, paginationStyle: n = "dot", className: i, tone: a = "secondary", buttonStyle: o = "ghost", size: s = "sm", iconOnly: c = !0, onClick: l, children: u, ...d }, p) {
220
+ var M = o(function({ index: e, paginationStyle: r = "dot", className: i, tone: a = "secondary", buttonStyle: o = "ghost", size: s = "sm", iconOnly: c = !0, onClick: l, children: u, ...d }, p) {
221
221
  let { selectedIndex: m, scrollSnaps: h, scrollTo: g, strings: _ } = y(), v = m === e, b = _.goToSlide.replace("{index}", String(e + 1)).replace("{total}", String(h.length));
222
- return /* @__PURE__ */ f(r, {
222
+ return /* @__PURE__ */ f(n, {
223
223
  ref: p,
224
224
  ...d,
225
225
  type: "button",
226
226
  "data-slot": "carousel-dot",
227
227
  "data-selected": v ? "" : void 0,
228
- "data-pagination-style": n,
228
+ "data-pagination-style": r,
229
229
  "aria-label": b,
230
230
  "aria-current": v ? "true" : void 0,
231
231
  tone: a,
@@ -238,7 +238,7 @@ var M = o(function({ index: e, paginationStyle: n = "dot", className: i, tone: a
238
238
  },
239
239
  children: u ?? /* @__PURE__ */ f("span", {
240
240
  "aria-hidden": "true",
241
- className: t("carousel--dot-mark box-border block transition-[width,background-color,border-color] duration-200", E[n], v && D[n])
241
+ className: t("carousel--dot-mark box-border block transition-[width,background-color,border-color] duration-200", E[r], v && D[r])
242
242
  })
243
243
  });
244
244
  });
@@ -1 +1 @@
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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"}
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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"}