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
@@ -5,9 +5,9 @@ import type { TextGap } from '../structure';
5
5
  * Not published from any entrypoint: applications use `ActionDialog` (or
6
6
  * `ConfirmDialog`) from `themelia-react-ui/features/overlays`, which owns the
7
7
  * lifecycle, focus, dismissal and action contract. This wrapper supplies the
8
- * modal geometry those features share: one framed popover surface whose shell
9
- * owns the block inset and the gap between header, scrolling body and footer,
10
- * as Card does, with no static rules between regions.
8
+ * modal geometry those features share: one framed popover surface whose
9
+ * header, scrolling body and footer each own their inset, with exactly one rule
10
+ * between adjacent visible regions (`modalRegionRecipes`).
11
11
  */
12
12
  import * as React from 'react';
13
13
  import { Dialog as DialogPrimitive, DialogOverlay, DialogPortal } from '../../ui/dialog';
@@ -24,11 +24,7 @@ export declare const DialogContent: React.ForwardRefExoticComponent<Omit<import(
24
24
  export declare const DialogHeader: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, "ref"> & {
25
25
  textGap?: TextGap;
26
26
  } & React.RefAttributes<HTMLDivElement>>;
27
- /**
28
- * Scroll-owning content region between the pinned dialog header and footer.
29
- * A rule appears on its top or bottom edge only while content is scrolled out
30
- * of view there.
31
- */
27
+ /** Scroll-owning content region between the pinned dialog header and footer. */
32
28
  export declare const DialogBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
33
29
  export declare const DialogFooter: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
34
30
  showCloseButton?: boolean;
@@ -4,7 +4,7 @@
4
4
  * coupon checks, conversation initials, search-result tones, AI-bot avatars.
5
5
  *
6
6
  * Tones reuse the shadcn semantic tokens, with the foreground colour picked
7
- * to read against a 10–15% background tint (e.g. `bg-success/15 text-success`).
7
+ * to read against its tone's shared tint (`toneRecipes`, contrast-tested).
8
8
  * For a fully-saturated mark (primary fill, inverse foreground), use
9
9
  * `tone="primary"` and pass `solid`.
10
10
  *
@@ -60,20 +60,23 @@ export declare const formControlMinHeightClasses: {
60
60
  lg: string;
61
61
  };
62
62
  /**
63
- * Canonical "input-shaped trigger" chrome — used by any control that
64
- * renders as a button-style trigger but visually has to read as a form
65
- * field (DatePicker, TimePicker, the inner Select inside composite
66
- * fields, etc.). Mirrors `Input`'s `border-input rounded-inner
67
- * bg-transparent focus-visible:ring` chrome (no shadow — the library
68
- * is intentionally flat) plus the size-driven height + horizontal
69
- * padding.
63
+ * The one field frame, drawn by `Input` on its native field and by
64
+ * `formFieldTriggerClasses` on button-shaped triggers: the `--input` boundary,
65
+ * inner radius, transparent fill (the library is intentionally flat), control
66
+ * height, editable text size, control padding and the shared focus, invalid and
67
+ * disabled states. Layout (`flex`, width) stays with each owner.
70
68
  *
71
69
  * The displayed value is the field's value, so it follows the editable text
72
- * recipe: on coarse pointers it matches the touch input size of an adjoining
73
- * `Input` instead of rendering a step smaller.
74
- *
75
- * Kept here so the chrome lives in exactly one place — when we tweak
76
- * the canonical input look, every trigger picks it up.
70
+ * recipe: on coarse pointers a trigger matches the touch input size of an
71
+ * adjoining `Input` instead of rendering a step smaller.
72
+ */
73
+ export declare function formFieldFrameClasses(size: ComponentScale): string;
74
+ /**
75
+ * Canonical "input-shaped trigger" chrome — used by any control that
76
+ * renders as a button-style trigger but visually has to read as a form
77
+ * field (DatePicker, TimePicker, Cascader, the inner Select inside composite
78
+ * fields, etc.). It is `Input`'s own frame plus button resets, so when the
79
+ * canonical input look changes every trigger picks it up.
77
80
  */
78
81
  export declare function formFieldTriggerClasses(size: ComponentScale): string;
79
82
  export declare const formTextareaSizeClasses: {
@@ -0,0 +1,12 @@
1
+ /**
2
+ * metadata-list — label/value facts about one entity.
3
+ *
4
+ * A base structure: it composes typography, primitives and base display parts,
5
+ * and any surface (Card, panel, drawer or block) places it. Previously
6
+ * published from `themelia-react-ui/blocks/data-display`, which re-exports it
7
+ * as a deprecated compatibility path.
8
+ */
9
+ export { MetadataList, defaultMetadataListStrings } from './metadata-list';
10
+ export type { MetadataDensity, MetadataInlineListItem, MetadataLayout, MetadataListItem, MetadataListProps, MetadataListStrings, } from './metadata-list';
11
+ export { MetadataValue } from './metadata-value';
12
+ export type { MetadataValueDescriptor, MetadataValueKind, MetadataValueProps, } from './metadata-value';
@@ -1,37 +1,28 @@
1
- /**
2
- * MetadataList — flexible label/value list for entity metadata.
3
- *
4
- * Three layouts:
5
- * - `grid` (default): label-on-top, value-below cells for entity details.
6
- * - `rows`: two-column definition rows with hairline separators.
7
- * - `inline`: label/separator/value pairs that wrap, suitable for
8
- * pill-style summaries (e.g. "Created Jan 4 · By Alice · v3.2").
9
- *
10
- * Each item supports an optional icon, tooltip, React-node value, custom
11
- * `render`, and per-item `emptyLabel`. Falls back to the shared `EMPTY` when
12
- * both are missing. Returns `null` when the list is empty so callers can render
13
- * unconditionally.
14
- */
15
- import { type LucideIcon } from 'lucide-react';
16
1
  import React from 'react';
17
- import { type ResponsiveValue } from '../../../base/structure';
18
- import { type StringsProp } from '../../../../lib/strings';
2
+ import { type ResponsiveValue } from '../structure';
3
+ import { type StringsProp } from '../../../lib/strings';
19
4
  import { defaultMetadataListStrings, type MetadataListStrings } from './metadata-list.strings';
20
5
  import { type MetadataValueDescriptor } from './metadata-value';
21
6
  export type { MetadataListStrings };
22
7
  export { defaultMetadataListStrings };
23
8
  export type MetadataListItem = {
24
- /** Stable identity for this entry. */
9
+ /** Stable identity for this entry. Without one the label and index stand in. */
25
10
  id?: string;
26
11
  /** Display label. */
27
12
  label: React.ReactNode;
13
+ /** A node, or a descriptor that names the fact's kind. */
28
14
  value?: React.ReactNode | MetadataValueDescriptor | null;
29
- /** Supporting copy shown under the label. */
15
+ /** Supporting copy shown under the value. */
30
16
  description?: React.ReactNode | null;
17
+ /** Shown from an info trigger beside the label, named after the label through `strings.formatInfoAriaLabel`. */
31
18
  tooltip?: React.ReactNode;
32
- /** Leading glyph. */
33
- icon?: LucideIcon;
19
+ /** Leading glyph. Any component that accepts `className`, including Lucide icons. */
20
+ icon?: React.ComponentType<{
21
+ className?: string;
22
+ }>;
23
+ /** Shown when this item's value is absent, in place of the list's `emptyLabel`. */
34
24
  emptyLabel?: React.ReactNode;
25
+ /** Takes over the value. The output sits in the value box, so it inherits the value's type role. */
35
26
  render?: (item: MetadataListItem) => React.ReactNode;
36
27
  };
37
28
  export type MetadataInlineListItem = Omit<MetadataListItem, 'description'> & {
@@ -54,7 +45,11 @@ type MetadataListSharedProps = {
54
45
  className?: string;
55
46
  /** Character placed between a label and its value. Defaults to a colon. */
56
47
  separator?: string;
57
- /** Divider between items — `true` for the default rule, or a character for inline layouts. */
48
+ /**
49
+ * Divider between items, off by default. In `rows`, any truthy value draws a
50
+ * rule between rows (never at the ends). In `inline`, `true` places a middle
51
+ * dot (`·`) and a string places that character.
52
+ */
58
53
  itemSeparator?: boolean | string;
59
54
  /** Per-instance string overrides (deep-merged over `defaultMetadataListStrings`). */
60
55
  strings?: StringsProp<MetadataListStrings>;
@@ -64,15 +59,23 @@ type MetadataGridRowsProps = MetadataListSharedProps & {
64
59
  items: MetadataListItem[];
65
60
  /** `grid` flows items into `columns`; `rows` stacks them one per line. Default: `grid`. */
66
61
  layout?: 'grid' | 'rows';
62
+ /**
63
+ * Rows layout only. `start` (default) places values and descriptions at the
64
+ * start of proportional label/value tracks; `end` pins them to the row's end
65
+ * edge, for figures that read down a column.
66
+ */
67
+ valueAlign?: 'start' | 'end';
67
68
  };
68
69
  type MetadataInlineProps = MetadataListSharedProps & {
69
- /** Values to render, without labels. */
70
+ /** Label/value pairs run together on wrapping lines. Inline items take no description. */
70
71
  items: MetadataInlineListItem[];
71
- /** Runs the values together on one line, separated by `itemSeparator`. */
72
+ /** Runs the label/value pairs together on one line, separated by `itemSeparator`. */
72
73
  layout: 'inline';
74
+ /** Not used by the inline layout. */
75
+ valueAlign?: never;
73
76
  };
74
77
  export type MetadataListProps = MetadataGridRowsProps | MetadataInlineProps;
75
- export declare function MetadataList({ items, columns, density, emptyLabel, title, titleSeparator, className, layout, separator, itemSeparator, strings: stringsProp, }: MetadataListProps): React.JSX.Element | null;
78
+ export declare function MetadataList({ items, columns, density, emptyLabel, title, titleSeparator, className, layout, separator, itemSeparator, valueAlign, strings: stringsProp, }: MetadataListProps): React.JSX.Element | null;
76
79
  export declare namespace MetadataList {
77
80
  var displayName: string;
78
81
  }
@@ -6,8 +6,8 @@
6
6
  */
7
7
  import type { ReactNode } from 'react';
8
8
  import type { Locale } from 'date-fns';
9
- import { type BadgeProps } from '../../../base/badge';
10
- import { type DateInput, type DatePreset, type MoneyProps, type TimeProps } from '../../../primitives';
9
+ import { type BadgeProps } from '../badge';
10
+ import { type DateInput, type DatePreset, type MoneyProps, type TimeProps } from '../../primitives';
11
11
  export type MetadataValueKind = 'text' | 'mono' | 'email' | 'phone' | 'url' | 'link' | 'date' | 'time' | 'datetime' | 'money' | 'badge' | 'node' | 'empty';
12
12
  type MetadataDisplayValue = Exclude<ReactNode, null | undefined>;
13
13
  type MetadataDateInput = Exclude<DateInput, null | undefined>;
@@ -16,6 +16,6 @@ export { LanguageSwitcher, type LanguageSwitcherProps } from './language-switche
16
16
  export { NavigationTabs, defaultNavigationTabsStrings, type NavigationTabItem, type NavigationTabsProps, type NavigationTabsStrings, type NavigationTabsVariant, } from './navigation-tabs';
17
17
  export { Tabs, TabsContent, TabsList, TabsTrigger, type TabsListProps } from './tabs';
18
18
  export { defaultTabsScrollStrings, type TabsScrollStrings } from './tab-scroll-viewport';
19
- export { PageHeading, type PageHeadingProps, type PageHeadingBadge, } from './page-header';
19
+ export { PageHeading, type PageHeadingProps, type PageHeadingBadge, type PageHeaderAction, type PageHeaderLinkRenderProps, type PageHeaderLinkRenderer, } from './page-header';
20
20
  export { OverflowTabBar, defaultOverflowTabBarStrings, type OverflowTabBarProps, type OverflowTabBarStrings, type OverflowTabItem, } from './overflow-tab-bar';
21
21
  export { PaginationPrimitive, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, defaultPaginationStrings, type PaginationContentProps, type PaginationEllipsisProps, type PaginationItemProps, type PaginationLinkProps, type PaginationNextProps, type PaginationPreviousProps, type PaginationProps, type PaginationStrings, } from './pagination';
@@ -1 +1,2 @@
1
1
  export { PageHeading, type PageHeadingProps, type PageHeadingBadge, } from './page-header';
2
+ export { type PageHeaderAction, type PageHeaderLinkRenderProps, type PageHeaderLinkRenderer, } from './page-header-commands';
@@ -0,0 +1,73 @@
1
+ /**
2
+ * PageHeaderCommands — role-based commands for page and record headers.
3
+ *
4
+ * The role chooses each command's treatment and place: outline secondary
5
+ * commands, then one solid primary command, then the More actions menu for
6
+ * overflow and destructive commands, which always closes the row. Below `sm`,
7
+ * secondary commands collapse into that menu through CSS alone, so server and
8
+ * client markup agree. PageHeading owns the row, so every header that takes
9
+ * `primaryAction` and `secondaryActions` places its commands the same way.
10
+ */
11
+ import type { ComponentType, MouseEvent, ReactNode } from 'react';
12
+ /**
13
+ * A page command described by its role. `primaryAction` and `secondaryActions`
14
+ * choose the treatment, so a command carries no tone or button style.
15
+ */
16
+ export interface PageHeaderAction {
17
+ /** Stable key. Defaults to the command's position. */
18
+ id?: string;
19
+ /** Visible command text. */
20
+ label: ReactNode;
21
+ /** Runs the command. When both are set, `onClick` wins over `href`. */
22
+ onClick?: () => void;
23
+ /** Navigates through the header's `renderLink` instead of running a callback. */
24
+ href?: string;
25
+ target?: string;
26
+ rel?: string;
27
+ /** Marks the destination as leaving the app; forwarded to `renderLink`. */
28
+ external?: boolean;
29
+ /** Leading glyph. Pass a Lucide icon component. */
30
+ icon?: ComponentType<{
31
+ className?: string;
32
+ }>;
33
+ /** Shows the pending indicator and blocks activation. */
34
+ loading?: boolean;
35
+ /** Blocks activation while keeping the command visible. */
36
+ disabled?: boolean;
37
+ /** Set false to omit the command, for example without permission. */
38
+ visible?: boolean;
39
+ /**
40
+ * Irreversible or harmful command. A destructive secondary command moves to
41
+ * the More actions menu; a destructive primary command keeps its place with
42
+ * the destructive treatment. Confirm it from the handler, e.g. ConfirmDialog.
43
+ */
44
+ destructive?: boolean;
45
+ }
46
+ /** What a header hands its link renderer for an `href` command. */
47
+ export interface PageHeaderLinkRenderProps {
48
+ href: string;
49
+ children: ReactNode;
50
+ className?: string;
51
+ target?: string;
52
+ rel?: string;
53
+ /** Marks the destination as leaving the app. */
54
+ external?: boolean;
55
+ onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
56
+ 'aria-label'?: string;
57
+ }
58
+ /** Renders framework links for `href` commands. Layout `renderLink` functions fit. */
59
+ export type PageHeaderLinkRenderer = (props: PageHeaderLinkRenderProps) => ReactNode;
60
+ /** Native anchor fallback, matching the layout default: external links open a new tab. */
61
+ export declare const defaultPageHeaderLinkRenderer: PageHeaderLinkRenderer;
62
+ /** Secondary commands rendered as buttons from `sm` up; later ones overflow. */
63
+ export declare const PAGE_HEADER_INLINE_SECONDARY_LIMIT = 2;
64
+ export interface PageHeaderCommandsProps {
65
+ primaryAction?: PageHeaderAction;
66
+ secondaryActions?: readonly PageHeaderAction[];
67
+ /** Accessible name of the More actions menu trigger. */
68
+ moreActionsLabel: string;
69
+ renderLink?: PageHeaderLinkRenderer;
70
+ }
71
+ /** Whether the header has any role-based command to render. */
72
+ export declare function hasPageHeaderCommands(primaryAction: PageHeaderAction | undefined, secondaryActions: readonly PageHeaderAction[] | undefined): boolean;
73
+ export declare function PageHeaderCommands({ primaryAction, secondaryActions, moreActionsLabel, renderLink, }: PageHeaderCommandsProps): import("react").JSX.Element | null;
@@ -2,12 +2,15 @@
2
2
  * PageHeading — reusable visual heading block for sections and resources.
3
3
  * Higher-level layout components add routing/back behavior around this base
4
4
  * visual primitive instead of reimplementing title, description, badge, and
5
- * action spacing.
5
+ * action spacing. `primaryAction` and `secondaryActions` describe commands by
6
+ * role; the heading owns their treatment and placement for every header built
7
+ * on it.
6
8
  */
7
9
  import type { Key, ReactNode } from 'react';
8
10
  import { type HeadingTag } from '../../../typography';
9
11
  import { type BadgeTone } from '../../badge';
10
12
  import { type TextGap } from '../../structure';
13
+ import { type PageHeaderAction, type PageHeaderLinkRenderer } from './page-header-commands';
11
14
  export interface PageHeadingBadge {
12
15
  label: ReactNode;
13
16
  tone?: BadgeTone;
@@ -58,8 +61,28 @@ export interface PageHeadingProps {
58
61
  titleSuffix?: ReactNode;
59
62
  /** Content directly beneath the description, sharing its alignment — a metadata line. */
60
63
  afterDescription?: ReactNode;
61
- /** Independent actions column beside the copy; follows it on narrow widths. */
64
+ /**
65
+ * Independent actions column beside the copy; follows it on narrow widths.
66
+ * Holds non-command controls such as a period select; they render before
67
+ * the role-based commands.
68
+ */
62
69
  actions?: ReactNode;
70
+ /**
71
+ * The header's one main command: a solid primary button after the secondary
72
+ * commands, visible at every width.
73
+ */
74
+ primaryAction?: PageHeaderAction;
75
+ /**
76
+ * Supporting commands in priority order. The first two render as outline
77
+ * buttons before the primary command; the rest, and every destructive
78
+ * command, move into the More actions menu, which always closes the row.
79
+ * Below `sm`, all secondary commands collapse into that menu.
80
+ */
81
+ secondaryActions?: readonly PageHeaderAction[];
82
+ /** Accessible name of the More actions menu trigger. Default: `'More actions'`. */
83
+ moreActionsLabel?: string;
84
+ /** Renders `href` commands as framework links. Defaults to a native anchor. */
85
+ renderLink?: PageHeaderLinkRenderer;
63
86
  /** Content below the whole header block, above the separator. */
64
87
  children?: ReactNode;
65
88
  /** Merged onto the `<header>` root. */
@@ -85,7 +108,7 @@ export interface PageHeadingProps {
85
108
  */
86
109
  withSeparator?: boolean;
87
110
  }
88
- export declare function PageHeading({ eyebrow, title, description, textGap, headingTag, badge, badges, breadcrumbs, leading, beforeTitle, titlePrefix, titleSuffix, afterDescription, actions, children, className, contentClassName, eyebrowClassName, titleClassName, titleRowClassName, descriptionClassName, actionsClassName, withSeparator, }: PageHeadingProps): import("react").JSX.Element;
111
+ export declare function PageHeading({ eyebrow, title, description, textGap, headingTag, badge, badges, breadcrumbs, leading, beforeTitle, titlePrefix, titleSuffix, afterDescription, actions, primaryAction, secondaryActions, moreActionsLabel, renderLink, children, className, contentClassName, eyebrowClassName, titleClassName, titleRowClassName, descriptionClassName, actionsClassName, withSeparator, }: PageHeadingProps): import("react").JSX.Element;
89
112
  export declare namespace PageHeading {
90
113
  var displayName: string;
91
114
  }
@@ -7,9 +7,9 @@ import type { TextGap } from '../structure';
7
7
  * which owns the lifecycle, focus, dismissal and action contract; the
8
8
  * `themelia-react-ui/base/sheet` entrypoint remains only as a deprecated
9
9
  * compatibility surface. The panel shares the modal geometry of the internal
10
- * Dialog wrapper: the shell owns the block inset and the gap between header,
11
- * scrolling body and footer, regions own their inline inset, and one edge rule
12
- * separates the panel from the page.
10
+ * Dialog wrapper: header, scrolling body and footer each own their inset, one
11
+ * rule separates adjacent visible regions, and one edge rule separates the
12
+ * panel from the page.
13
13
  */
14
14
  import * as React from 'react';
15
15
  import { Sheet as SheetPrimitive } from '../../ui/sheet';
@@ -29,11 +29,7 @@ export declare const SheetContent: React.ForwardRefExoticComponent<Omit<import("
29
29
  export declare const SheetHeader: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, "ref"> & {
30
30
  textGap?: TextGap;
31
31
  } & React.RefAttributes<HTMLDivElement>>;
32
- /**
33
- * Scroll-owning content region between the pinned sheet header and footer.
34
- * A rule appears on its top or bottom edge only while content is scrolled out
35
- * of view there.
36
- */
32
+ /** Scroll-owning content region between the pinned sheet header and footer. */
37
33
  export declare const SheetBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
38
34
  export declare const SheetFooter: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
39
35
  export declare const SheetTitle: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").AlertDialogTitleProps & {
@@ -54,7 +54,11 @@ export interface SignaturePadProps extends Omit<ComponentPropsWithoutRef<'div'>,
54
54
  name?: string;
55
55
  form?: string;
56
56
  required?: boolean;
57
- /** Shows the keyboard-accessible typed signature alternative. @default true */
57
+ /**
58
+ * Shows the keyboard-accessible typed signature alternative. The typed name is
59
+ * drawn and exported in the pad's font family: the theme sans unless a font is
60
+ * set on the pad through `className` or `style`. @default true
61
+ */
58
62
  allowTypedSignature?: boolean;
59
63
  /** Ink diameter in CSS drawing pixels; pen pressure varies it. @default 2 */
60
64
  strokeWidth?: number;
@@ -2,7 +2,15 @@ import type { SignaturePadValue } from './signature-pad.types';
2
2
  export declare const emptySignature: SignaturePadValue;
3
3
  export declare function isSignatureEmpty(value: SignaturePadValue): boolean;
4
4
  export declare function normalizeSignature(value: SignaturePadValue): SignaturePadValue;
5
+ /**
6
+ * A typed name is drawn in the field's own font family: the theme sans unless the
7
+ * consumer sets a font on the pad. This fallback applies only outside the DOM.
8
+ */
9
+ export declare const signatureFallbackFont = "sans-serif";
5
10
  /** Drawing geometry, separate from structural UI spacing and theme tokens. */
6
- export declare function drawSignature(context: CanvasRenderingContext2D, value: SignaturePadValue, width: number, height: number, strokeWidth: number): void;
7
- /** Semantic currentColor is preserved unless a resolved export ink is supplied. */
8
- export declare function signaturePadToSVG(value: SignaturePadValue, width?: number, height?: number, strokeWidth?: number, ink?: string): string;
11
+ export declare function drawSignature(context: CanvasRenderingContext2D, value: SignaturePadValue, width: number, height: number, strokeWidth: number, fontFamily?: string): void;
12
+ /**
13
+ * Semantic currentColor is preserved unless a resolved export ink is supplied. The
14
+ * typed name uses `fontFamily`, which SignaturePad resolves from its rendered font.
15
+ */
16
+ export declare function signaturePadToSVG(value: SignaturePadValue, width?: number, height?: number, strokeWidth?: number, ink?: string, fontFamily?: string): string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The inline clear action shared by Input, Textarea and Cascader: a native button
3
+ * drawing the shared clear target, focus edge and glyph. Its owner places it and
4
+ * supplies the accessible name, handler and disabled state.
5
+ */
6
+ export declare const FieldClearButton: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,11 +1,33 @@
1
1
  /**
2
2
  * Private drop-target states shared by Dropzone, AvatarUpload and ImageUpload.
3
- * An empty target draws the dashed `--input` control boundary (3:1 on every
4
- * surface), so all three upload targets read as the same kind of control.
5
- * Hover, drag and invalid states replace only the boundary colour and fill.
3
+ * An empty target draws the dashed `--input` control boundary, so all three
4
+ * upload targets read as the same kind of control as every field. Hover, drag
5
+ * and invalid states replace only the boundary colour and fill.
6
+ *
7
+ * Keyboard focus on the hidden file input draws the shared focus frame on the
8
+ * target (each owner adds the `ring-3` width). The valid and invalid colours are
9
+ * alternatives, never stacked, so an invalid target keeps its destructive border
10
+ * and tints the halo instead of tying with the ring colour.
6
11
  */
7
12
  export declare const uploadDropTargetRecipes: {
8
13
  readonly idle: "border-input";
9
14
  readonly invalid: "border-destructive";
15
+ readonly invalidHover: "hover:bg-destructive/5";
16
+ readonly invalidDragging: "border-destructive bg-destructive/5";
10
17
  readonly dragging: "border-primary bg-primary/10";
18
+ /** Pointer over an enabled target previews the drop: the boundary takes the primary colour. */
19
+ readonly hover: "hover:border-primary hover:bg-primary/5";
20
+ /** A file dragged over an already selected file row: the row keeps its edge and gains the tone halo. */
21
+ readonly draggingRing: "ring-3 ring-primary/30";
22
+ readonly invalidDraggingRing: "ring-3 ring-destructive/30";
23
+ readonly focus: {
24
+ readonly input: {
25
+ readonly valid: "has-[input:focus-visible]:border-ring has-[input:focus-visible]:ring-ring/50";
26
+ readonly invalid: "has-[input:focus-visible]:ring-destructive/30 dark:has-[input:focus-visible]:ring-destructive/50";
27
+ };
28
+ readonly filePicker: {
29
+ readonly valid: "has-[[data-slot=file-picker-input]:focus-visible]:border-ring has-[[data-slot=file-picker-input]:focus-visible]:ring-ring/50";
30
+ readonly invalid: "has-[[data-slot=file-picker-input]:focus-visible]:ring-destructive/30 dark:has-[[data-slot=file-picker-input]:focus-visible]:ring-destructive/50";
31
+ };
32
+ };
11
33
  };
@@ -7,10 +7,10 @@
7
7
  * (chips, country prefix menu, swatch and picker, track, calendar) rather than
8
8
  * a text box.
9
9
  *
10
- * This family composes the other two: the phone, colour and tags controls all
11
- * render `Input` from `base/text-inputs`, and the phone control renders the
12
- * shared `SelectPopup*` parts from `base/choice-inputs`. The dependency runs
13
- * one way only.
10
+ * This family composes the other two: the phone and colour controls render
11
+ * `Input` from `base/text-inputs`, the tags control draws the same field frame
12
+ * around its chips, and the phone control renders the shared `SelectPopup*`
13
+ * parts from `base/choice-inputs`. The dependency runs one way only.
14
14
  *
15
15
  * Related families:
16
16
  * - `themelia-react-ui/base/text-inputs` — free-form text entry
@@ -18,7 +18,7 @@
18
18
  * - `themelia-react-ui/base/forms-numeric` — money, weight, dimensions
19
19
  * - `themelia-react-ui/base/date-pickers` — calendars and time pickers
20
20
  */
21
- export { TagsInput, type TagsInputProps } from './tags-input';
21
+ export { TagsInput, defaultTagsInputStrings, type TagsInputProps, type TagsInputStrings, } from './tags-input';
22
22
  export { PhoneInput, defaultPhoneInputStrings, DEFAULT_COUNTRY_PREFIXES, COUNTRY_PREFIX_MAP, type PhoneInputProps, type PhoneInputStrings, type CountryPrefixOption, type CountryPrefixInput, } from './phone-input';
23
23
  export { ColorInput, defaultColorInputStrings, type ColorInputProps, type ColorInputStrings, } from './color-input';
24
24
  export { SliderField, defaultSliderStrings, type SliderProps, type SliderStrings, type SliderImitationEvent, } from './slider';
@@ -10,49 +10,73 @@ export interface TagsInputStrings {
10
10
  summary: (current: number, max: number) => string;
11
11
  /** Accessible name of a tag's remove action. Defaults to `"Remove {tag}"`. */
12
12
  removeTag?: (tag: string) => string;
13
+ /**
14
+ * Announced when a commit leaves entries it could not add (too short or
15
+ * long, duplicate, refused by `validate`, or over `maxTags`). Receives the
16
+ * rejected entries joined with commas. Defaults to `"Not added: {entries}."`.
17
+ */
18
+ notAdded?: (entries: string) => string;
19
+ /** Accessible name of the recommendation list. Defaults to `"Suggested tags"`. */
20
+ recommendationsLabel?: string;
13
21
  }
14
22
  export declare const defaultTagsInputStrings: TagsInputStrings;
15
23
  export interface TagsInputProps<T = string> {
16
24
  /** ID of the editable input, for an external field label. */
17
25
  id?: string;
26
+ /** Names the editable input when no visible label points at it. */
27
+ 'aria-label'?: string;
28
+ /** IDs of the elements that label the editable input. */
29
+ 'aria-labelledby'?: string;
18
30
  /** Additional supporting/error descriptions associated with the editable control. */
19
31
  'aria-describedby'?: string;
20
- /** Current value (array of T) */
32
+ /** Marks the field invalid, like `invalid`; a FormField or form library may inject it. */
33
+ 'aria-invalid'?: boolean | 'true' | 'false';
34
+ /** Marks the editable input as required for assistive tech. */
35
+ 'aria-required'?: boolean | 'true' | 'false';
36
+ /** Current value (array of T). Pass it to control the field. */
21
37
  value?: T[];
38
+ /** Initial value when uncontrolled. Ignored when `value` is set. */
39
+ defaultValue?: T[];
22
40
  /** Callback when value changes */
23
41
  onValueChange?: (value: T[]) => void;
24
- /** Placeholder text for the input */
42
+ /** Form field name. Each tag is serialised as a hidden `name[]` input (its display value), disabled with the field. */
43
+ name?: string;
44
+ /** Placeholder text for the input, shown while there are no tags. */
25
45
  placeholder?: string;
26
46
  /** Array of recommendations to suggest */
27
47
  recommendations?: Array<T | {
28
48
  value: T;
29
49
  label: string;
30
50
  }>;
31
- /** Maximum number of tags allowed */
51
+ /** Maximum number of tags allowed. Entry is refused and announced once it is reached; the input stays focusable. */
32
52
  maxTags?: number;
33
- /** Show the label for the maximum tags */
53
+ /** Shows the `strings.summary` count under the field. Requires `maxTags`. */
34
54
  showMaxTags?: boolean;
35
55
  /** Whether duplicate tags are allowed */
36
56
  allowDuplicates?: boolean;
37
- /** Custom validation function */
57
+ /** Custom validation function. Runs after the length, limit and duplicate checks. */
38
58
  validate?: (value: T) => boolean;
39
59
  /** Whether the input is disabled */
40
60
  disabled?: boolean;
41
- /** Whether to show the clear all button */
61
+ /** Shows a clear-all action under the field while there are tags. */
42
62
  showClearAll?: boolean;
43
- /** Custom tag component */
63
+ /**
64
+ * Custom tag component. `index` is the tag's position in the value, and
65
+ * `onRemove(index)` removes it and moves focus to the neighbouring remove
66
+ * action (an element with `data-tag-remove`), else the input.
67
+ */
44
68
  renderTag?: (tag: T, index: number, onRemove: (index: number) => void) => React.ReactNode;
45
- /** Delimiter for separating tags when pasting */
69
+ /** Splits typed and pasted text into several tags. Defaults to a comma or a newline. */
46
70
  delimiter?: string | RegExp;
47
71
  /** Whether to trigger add on blur */
48
72
  addOnBlur?: boolean;
49
73
  /** Minimum length for a tag */
50
74
  minLength?: number;
51
- /** Maximum length for a tag */
75
+ /** Maximum length for a tag. Longer entries are refused and announced, never truncated. */
52
76
  maxLength?: number;
53
- /** Override default English strings (placeholder, empty list, clear-all). */
77
+ /** Override default English strings (placeholder, empty list, clear-all, announcements). */
54
78
  strings?: StringsProp<TagsInputStrings>;
55
- /** Whether tags should be sorted */
79
+ /** Keeps the value sorted by display text as tags are added. */
56
80
  sortTags?: boolean;
57
81
  /** Case sensitivity for duplicate checking */
58
82
  caseSensitive?: boolean;
@@ -63,7 +87,7 @@ export interface TagsInputProps<T = string> {
63
87
  /** Additional class names */
64
88
  className?: string;
65
89
  }
66
- export declare function TagsInput<T = string>({ id, 'aria-describedby': ariaDescribedBy, value, onValueChange, placeholder, recommendations, maxTags, showMaxTags, allowDuplicates, validate, disabled, showClearAll, renderTag, delimiter, addOnBlur, minLength, maxLength, sortTags, caseSensitive, field, invalid, className, strings: stringsProp, }: TagsInputProps<T>): React.JSX.Element;
90
+ export declare function TagsInput<T = string>({ id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, 'aria-required': ariaRequired, value, defaultValue, onValueChange, name, placeholder, recommendations, maxTags, showMaxTags, allowDuplicates, validate, disabled, showClearAll, renderTag, delimiter, addOnBlur, minLength, maxLength, sortTags, caseSensitive, field, invalid, className, strings: stringsProp, }: TagsInputProps<T>): React.JSX.Element;
67
91
  export declare namespace TagsInput {
68
92
  var displayName: string;
69
93
  }
@@ -1,5 +1,5 @@
1
1
  import { type AddressCardProps } from './types';
2
- export declare function AddressCard({ kind, name, line1, line2, city, region, postalCode, country, phone, default: defaultAddress, onEdit, onRemove, onMakeDefault, surface, padding, headerDivider, className, strings: stringsProp, }: AddressCardProps): import("react").JSX.Element;
2
+ export declare function AddressCard({ kind, name, line1, line2, city, region, postalCode, country, phone, default: defaultAddress, onEdit, onRemove, onMakeDefault, surface, padding, headerDivider, className, strings: stringsProp, ...props }: AddressCardProps): import("react").JSX.Element;
3
3
  export declare namespace AddressCard {
4
4
  var displayName: string;
5
5
  }
@@ -1,3 +1,4 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
1
2
  import type { CardProps } from '../../../base/cards';
2
3
  import type { StringsProp } from '../../../../lib/strings';
3
4
  export type AddressKind = 'shipping' | 'billing' | 'pickup';
@@ -12,7 +13,7 @@ export interface AddressCardStrings {
12
13
  }
13
14
  export declare const defaultAddressCardStrings: AddressCardStrings;
14
15
  /** Unframed by default. Set surface="card" to let this owner frame its heading and body. */
15
- export interface AddressCardProps extends Pick<CardProps, 'surface' | 'padding' | 'headerDivider'> {
16
+ export interface AddressCardProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'title'>, Pick<CardProps, 'surface' | 'padding' | 'headerDivider'> {
16
17
  /** What the address is for — billing, shipping, or both. */
17
18
  kind?: AddressKind;
18
19
  /** Display name. */
@@ -1,5 +1,7 @@
1
1
  import { type CartSummaryCardProps } from './types';
2
- export declare function CartSummaryCard({ items, subtotal, tax, shipping, discount, total, onCheckout, className, strings: stringsProp, }: CartSummaryCardProps): import("react").JSX.Element;
2
+ export declare function CartSummaryCard({ items, subtotal, tax, shipping, discount, total, onCheckout, className, strings: stringsProp, ...props }: CartSummaryCardProps): import("react").JSX.Element;
3
3
  export declare namespace CartSummaryCard {
4
4
  var displayName: string;
5
5
  }
6
+ /** The source kit's name for `CartSummaryCard`; the same component. */
7
+ export declare const CartSummary: typeof CartSummaryCard;
@@ -1,2 +1,2 @@
1
- export { CartSummaryCard } from './cart-summary';
2
- export { defaultCartSummaryStrings, type CartSummaryCardProps, type CartSummaryStrings, type CartLineItem, } from './types';
1
+ export { CartSummary, CartSummaryCard } from './cart-summary';
2
+ export { defaultCartSummaryStrings, type CartSummaryCardProps, type CartSummaryProps, type CartSummaryStrings, type CartLineItem, } from './types';
@@ -1,3 +1,4 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
1
2
  import type { StringsProp } from '../../../../lib/strings';
2
3
  export interface CartLineItem {
3
4
  /** Stable identity for this entry. */
@@ -30,9 +31,11 @@ export interface CartSummaryStrings {
30
31
  /** Formatted order total. */
31
32
  total: string;
32
33
  checkout: string;
34
+ /** Writes a line's quantity, so a translation owns the multiplication sign. */
35
+ formatQuantity: (quantity: number) => string;
33
36
  }
34
37
  export declare const defaultCartSummaryStrings: CartSummaryStrings;
35
- export interface CartSummaryCardProps {
38
+ export interface CartSummaryCardProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'title'> {
36
39
  /** Line items in the cart. */
37
40
  items: CartLineItem[];
38
41
  /** Formatted total before tax, shipping, and discounts. */
@@ -51,3 +54,5 @@ export interface CartSummaryCardProps {
51
54
  /** Overrides this surface's own copy. */
52
55
  strings?: StringsProp<CartSummaryStrings>;
53
56
  }
57
+ /** The source kit's name for `CartSummaryCardProps`. */
58
+ export type CartSummaryProps = CartSummaryCardProps;