themelia-react-ui 2.0.6 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (912) hide show
  1. package/CHANGELOG.md +250 -0
  2. package/MIGRATION.md +746 -7
  3. package/README.md +27 -23
  4. package/dist/{accordion-0tQUZ20r.js → accordion-DNVqwEIC.js} +36 -36
  5. package/dist/accordion-DNVqwEIC.js.map +1 -0
  6. package/dist/action-menu-D5343RwT.js +286 -0
  7. package/dist/action-menu-D5343RwT.js.map +1 -0
  8. package/dist/ai-artifact-otrz9ZwS.js +1214 -0
  9. package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
  10. package/dist/anchored-positioning-1U_eBFNx.js +9 -0
  11. package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
  12. package/dist/app-shell-CPN30Nb1.js +372 -0
  13. package/dist/app-shell-CPN30Nb1.js.map +1 -0
  14. package/dist/{attachment-BCpA4e7i.js → attachment-D2-fpfmv.js} +15 -15
  15. package/dist/{attachment-BCpA4e7i.js.map → attachment-D2-fpfmv.js.map} +1 -1
  16. package/dist/{auth-B0girIk_.js → auth-g_oUTDDC.js} +234 -241
  17. package/dist/auth-g_oUTDDC.js.map +1 -0
  18. package/dist/{avatar-B9Jnp-T-.js → avatar-Ca3Ihrq4.js} +4 -4
  19. package/dist/{avatar-B9Jnp-T-.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
  20. package/dist/{badge-wWauMgAt.js → badge-oGiXblW7.js} +8 -9
  21. package/dist/badge-oGiXblW7.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +2 -2
  29. package/dist/base/cards.js +3 -3
  30. package/dist/base/carousel.js +11 -11
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +1 -1
  33. package/dist/base/chart.js +1 -1
  34. package/dist/base/choice-inputs.js +2 -2
  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 +4 -4
  42. package/dist/base/forms-numeric.js +2 -2
  43. package/dist/base/forms.js +2 -2
  44. package/dist/base/inline-edit.js +13 -13
  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 +203 -2
  48. package/dist/base/media-gallery.js.map +1 -0
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +7 -7
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +32 -22
  54. package/dist/base/qr-code.js.map +1 -1
  55. package/dist/base/repeaters.js +91 -88
  56. package/dist/base/repeaters.js.map +1 -1
  57. package/dist/base/sidebar.js +2 -2
  58. package/dist/base/signature-pad.js +14 -14
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +6 -12
  62. package/dist/base/spinner.js.map +1 -1
  63. package/dist/base/structure.js +1 -1
  64. package/dist/base/table.js +1 -1
  65. package/dist/base/text-inputs.js +3 -3
  66. package/dist/base/toaster.js +2 -2
  67. package/dist/base/tree.js +2 -2
  68. package/dist/base/upload-queue.js +303 -2
  69. package/dist/base/upload-queue.js.map +1 -0
  70. package/dist/base/upload.js +3 -4
  71. package/dist/base/value-inputs.js +1 -1
  72. package/dist/{batch-action-bar-BoqWIIpV.js → batch-action-bar-D6MZQNnC.js} +10 -10
  73. package/dist/{batch-action-bar-BoqWIIpV.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
  74. package/dist/blocks/admin.js +242 -228
  75. package/dist/blocks/admin.js.map +1 -1
  76. package/dist/blocks/ai.js +395 -357
  77. package/dist/blocks/ai.js.map +1 -1
  78. package/dist/blocks/analytics/charts.js +1022 -0
  79. package/dist/blocks/analytics/charts.js.map +1 -0
  80. package/dist/blocks/analytics/usage-card.js +1 -1
  81. package/dist/blocks/analytics.js +171 -1365
  82. package/dist/blocks/analytics.js.map +1 -1
  83. package/dist/blocks/collaboration.js +1 -1
  84. package/dist/blocks/commerce/receipt.js +1 -1
  85. package/dist/blocks/commerce.js +1487 -1358
  86. package/dist/blocks/commerce.js.map +1 -1
  87. package/dist/blocks/data-display.js +2 -3
  88. package/dist/blocks/onboarding.js +91 -82
  89. package/dist/blocks/onboarding.js.map +1 -1
  90. package/dist/blocks/planning.js +25 -25
  91. package/dist/blocks/planning.js.map +1 -1
  92. package/dist/blocks/timelines.js +2 -2
  93. package/dist/{breadcrumbs-Bp9Ke7kd.js → breadcrumbs-CQ9JSlez.js} +52 -45
  94. package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
  95. package/dist/{button-ChBovTx0.js → button-rd6FiHfQ.js} +12 -8
  96. package/dist/button-rd6FiHfQ.js.map +1 -0
  97. package/dist/{buttons-DeW0bQeK.js → buttons-pZVgPTZn.js} +230 -246
  98. package/dist/buttons-pZVgPTZn.js.map +1 -0
  99. package/dist/{cards-CNXnmvV5.js → cards-CgWyqvgZ.js} +25 -22
  100. package/dist/{cards-CNXnmvV5.js.map → cards-CgWyqvgZ.js.map} +1 -1
  101. package/dist/cascader-Cf05pwaq.js +444 -0
  102. package/dist/cascader-Cf05pwaq.js.map +1 -0
  103. package/dist/{chart-I7ROnsl8.js → chart-CygRCyIZ.js} +5 -5
  104. package/dist/{chart-I7ROnsl8.js.map → chart-CygRCyIZ.js.map} +1 -1
  105. package/dist/{checkbox-MoyHIAPs.js → checkbox-Dy5_XBMZ.js} +4 -4
  106. package/dist/{checkbox-MoyHIAPs.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
  107. package/dist/{choice-inputs-DHGtx0QV.js → choice-inputs-oJEsrb5Y.js} +113 -114
  108. package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
  109. package/dist/{code-block-BSJyq9e-.js → code-block-BrLD7mCi.js} +44 -60
  110. package/dist/code-block-BrLD7mCi.js.map +1 -0
  111. package/dist/collapsible-CRCCg_bO.js +80 -0
  112. package/dist/collapsible-CRCCg_bO.js.map +1 -0
  113. package/dist/{collection-content-CSnwtOTH.js → collection-content-D7SoDlYd.js} +3 -3
  114. package/dist/{collection-content-CSnwtOTH.js.map → collection-content-D7SoDlYd.js.map} +1 -1
  115. package/dist/combobox-Dl6f6kHz.js +362 -0
  116. package/dist/combobox-Dl6f6kHz.js.map +1 -0
  117. package/dist/combobox-DrDXtSSt.js +929 -0
  118. package/dist/combobox-DrDXtSSt.js.map +1 -0
  119. package/dist/command-CjZ2VzKC.js +432 -0
  120. package/dist/command-CjZ2VzKC.js.map +1 -0
  121. package/dist/comments-C2MZyRmh.js +1214 -0
  122. package/dist/comments-C2MZyRmh.js.map +1 -0
  123. package/dist/components/base/accordion/accordion.d.ts +11 -3
  124. package/dist/components/base/action-menu/action-menu.d.ts +11 -3
  125. package/dist/components/base/buttons/button.d.ts +2 -2
  126. package/dist/components/base/buttons/index.d.ts +1 -1
  127. package/dist/components/base/buttons/loader-button.d.ts +6 -15
  128. package/dist/components/base/cards/index.d.ts +1 -1
  129. package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
  130. package/dist/components/base/cards/smart-card.d.ts +0 -2
  131. package/dist/components/base/cards/smart-card.types.d.ts +12 -10
  132. package/dist/components/base/cascader/cascader.d.ts +8 -2
  133. package/dist/components/base/cascader/cascader.types.d.ts +24 -2
  134. package/dist/components/base/cascader/index.d.ts +1 -1
  135. package/dist/components/base/choice-inputs/switch.d.ts +1 -1
  136. package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
  137. package/dist/components/base/command/command.d.ts +1 -1
  138. package/dist/components/base/date-pickers/datepicker.types.d.ts +1 -3
  139. package/dist/components/base/display/dialog.d.ts +3 -9
  140. package/dist/components/base/display/index.d.ts +2 -3
  141. package/dist/components/base/display/separator.d.ts +1 -1
  142. package/dist/components/base/feedback/alert.d.ts +2 -1
  143. package/dist/components/base/feedback/empty.d.ts +10 -2
  144. package/dist/components/base/forms/workflow.d.ts +2 -2
  145. package/dist/components/base/forms-numeric/dimensions-input.d.ts +9 -17
  146. package/dist/components/base/forms-numeric/index.d.ts +3 -3
  147. package/dist/components/base/item/item.types.d.ts +6 -2
  148. package/dist/components/base/metadata-list/index.d.ts +1 -3
  149. package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
  150. package/dist/components/base/navigation/index.d.ts +2 -2
  151. package/dist/components/base/navigation/language-switcher.d.ts +7 -6
  152. package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
  153. package/dist/components/base/navigation/page-header/index.d.ts +1 -1
  154. package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
  155. package/dist/components/base/navigation/pagination.d.ts +5 -5
  156. package/dist/components/base/popover/popover.recipes.d.ts +0 -1
  157. package/dist/components/base/qr-code/qr-code.d.ts +4 -0
  158. package/dist/components/base/repeaters/index.d.ts +1 -1
  159. package/dist/components/base/repeaters/key-value-editor.d.ts +4 -0
  160. package/dist/components/base/sheet/sheet.d.ts +6 -15
  161. package/dist/components/base/sidebar/index.d.ts +1 -6
  162. package/dist/components/base/sidebar/sidebar.d.ts +38 -10
  163. package/dist/components/base/skeleton/skeleton.d.ts +1 -1
  164. package/dist/components/base/structure/structure.types.d.ts +11 -2
  165. package/dist/components/base/text-inputs/index.d.ts +1 -1
  166. package/dist/components/base/tree/index.d.ts +1 -0
  167. package/dist/components/base/tree/tree.d.ts +2 -2
  168. package/dist/components/base/tree/tree.types.d.ts +7 -1
  169. package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
  170. package/dist/components/base/upload/image-upload.d.ts +2 -0
  171. package/dist/components/base/upload/index.d.ts +3 -9
  172. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
  173. package/dist/components/base/value-inputs/slider.d.ts +5 -2
  174. package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
  175. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
  176. package/dist/components/blocks/admin/index.d.ts +1 -1
  177. package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
  178. package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
  179. package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
  180. package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
  181. package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
  182. package/dist/components/blocks/ai/ai-citation/types.d.ts +6 -0
  183. package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
  184. package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
  185. package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
  186. package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
  187. package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
  188. package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
  189. package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
  190. package/dist/components/blocks/ai/ai-sources/types.d.ts +8 -2
  191. package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
  192. package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
  193. package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
  194. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +6 -0
  195. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  196. package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
  197. package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
  198. package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
  199. package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
  200. package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
  201. package/dist/components/blocks/analytics/index.d.ts +17 -24
  202. package/dist/components/blocks/analytics/metric/metric.d.ts +5 -5
  203. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +2 -2
  204. package/dist/components/blocks/analytics/types.d.ts +12 -3
  205. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  206. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  207. package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
  208. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
  209. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
  210. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
  211. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  212. package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
  213. package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
  214. package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
  215. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
  216. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  217. package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
  218. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  219. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
  220. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
  221. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
  222. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
  223. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
  224. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
  225. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
  226. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
  227. package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
  228. package/dist/components/blocks/commerce/index.d.ts +8 -8
  229. package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
  230. package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
  231. package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
  232. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
  233. package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
  234. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
  235. package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
  236. package/dist/components/blocks/commerce/order-status/types.d.ts +8 -8
  237. package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
  238. package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
  239. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  240. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
  241. package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
  242. package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
  243. package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
  244. package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
  245. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  246. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
  247. package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
  248. package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
  249. package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
  250. package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
  251. package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
  252. package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
  253. package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
  254. package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
  255. package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
  256. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
  257. package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
  258. package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
  259. package/dist/components/blocks/content-block-hooks.d.ts +22 -0
  260. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
  261. package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
  262. package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
  263. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
  264. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
  265. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
  266. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
  267. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
  268. package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
  269. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +6 -0
  270. package/dist/components/blocks/data-display/index.d.ts +0 -1
  271. package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
  272. package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
  273. package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
  274. package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
  275. package/dist/components/blocks/timelines/index.d.ts +2 -2
  276. package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
  277. package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
  278. package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
  279. package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
  280. package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
  281. package/dist/components/features/activities/activities.strings.d.ts +5 -3
  282. package/dist/components/features/activities/activities.types.d.ts +28 -11
  283. package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
  284. package/dist/components/features/activities/index.d.ts +1 -1
  285. package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
  286. package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
  287. package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
  288. package/dist/components/features/activities/relative-time.d.ts +18 -0
  289. package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
  290. package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
  291. package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
  292. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
  293. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
  294. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
  295. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
  296. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  297. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +19 -5
  298. package/dist/components/features/appointment-calendar/index.d.ts +1 -1
  299. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
  300. package/dist/components/features/async-preview/async-preview.d.ts +2 -2
  301. package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
  302. package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
  303. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  304. package/dist/components/features/combobox/combobox.d.ts +12 -3
  305. package/dist/components/features/combobox/components/error-message.d.ts +3 -1
  306. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -2
  307. package/dist/components/features/combobox/index.d.ts +1 -1
  308. package/dist/components/features/combobox/types.d.ts +47 -45
  309. package/dist/components/features/comments/comments.strings.d.ts +6 -5
  310. package/dist/components/features/comments/comments.types.d.ts +40 -26
  311. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
  312. package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
  313. package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
  314. package/dist/components/features/data-view/data-view.types.d.ts +15 -2
  315. package/dist/components/features/email-composer/email-html.d.ts +5 -0
  316. package/dist/components/features/email-composer/http.d.ts +2 -0
  317. package/dist/components/features/email-composer/strings.d.ts +17 -2
  318. package/dist/components/features/email-composer/types.d.ts +17 -2
  319. package/dist/components/features/email-composer/use-composer.d.ts +2 -78
  320. package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
  321. package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
  322. package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
  323. package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
  324. package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
  325. package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
  326. package/dist/components/features/filters/facets/range-facet.d.ts +13 -8
  327. package/dist/components/features/filters/filter-context.d.ts +9 -0
  328. package/dist/components/features/filters/filters.strings.d.ts +36 -3
  329. package/dist/components/features/filters/filters.types.d.ts +72 -5
  330. package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
  331. package/dist/components/features/filters/index.d.ts +2 -2
  332. package/dist/components/features/filters/operator-options.d.ts +25 -2
  333. package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
  334. package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
  335. package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
  336. package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
  337. package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
  338. package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
  339. package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
  340. package/dist/components/features/filters/utils/filter-utils.d.ts +29 -4
  341. package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
  342. package/dist/components/features/global-search/global-search.d.ts +7 -1
  343. package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
  344. package/dist/components/features/global-search/global-search.types.d.ts +30 -6
  345. package/dist/components/features/global-search/index.d.ts +1 -1
  346. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
  347. package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
  348. package/dist/components/features/kanban/index.d.ts +2 -2
  349. package/dist/components/features/kanban/kanban-context.d.ts +4 -0
  350. package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
  351. package/dist/components/features/kanban/kanban.d.ts +10 -1
  352. package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
  353. package/dist/components/features/kanban/kanban.types.d.ts +26 -0
  354. package/dist/components/features/map/map.d.ts +4 -0
  355. package/dist/components/features/map/place-autocomplete.d.ts +10 -1
  356. package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
  357. package/dist/components/features/media-library/media-library.d.ts +1 -1
  358. package/dist/components/features/media-library/media-library.strings.d.ts +33 -3
  359. package/dist/components/features/media-library/media-library.types.d.ts +47 -2
  360. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  361. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
  362. package/dist/components/features/mentions/index.d.ts +1 -1
  363. package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
  364. package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
  365. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +8 -1
  366. package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
  367. package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
  368. package/dist/components/features/mentions/utils/index.d.ts +0 -1
  369. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  370. package/dist/components/features/overlays/dialog.d.ts +1 -1
  371. package/dist/components/features/overlays/drawer.d.ts +1 -1
  372. package/dist/components/features/overlays/index.d.ts +2 -2
  373. package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
  374. package/dist/components/features/overlays/overlays.types.d.ts +27 -10
  375. package/dist/components/features/products/components/index.d.ts +0 -10
  376. package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
  377. package/dist/components/features/products/components/product-details-card.d.ts +1 -1
  378. package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
  379. package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
  380. package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
  381. package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
  382. package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
  383. package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
  384. package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
  385. package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
  386. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  387. package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
  388. package/dist/components/features/products/partials/product-surface.d.ts +15 -0
  389. package/dist/components/features/products/products.strings.d.ts +8 -0
  390. package/dist/components/features/products/products.types.d.ts +25 -7
  391. package/dist/components/features/questionnaire/questionnaire.types.d.ts +6 -4
  392. package/dist/components/features/resource/index.d.ts +2 -3
  393. package/dist/components/features/resource/resource.d.ts +2 -10
  394. package/dist/components/features/resource/resource.types.d.ts +7 -149
  395. package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
  396. package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
  397. package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
  398. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
  399. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
  400. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
  401. package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
  402. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
  403. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +2 -3
  404. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +13 -1
  405. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -0
  406. package/dist/components/features/schema-form/schema-form.d.ts +1 -1
  407. package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
  408. package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
  409. package/dist/components/features/suggestions/suggestions.types.d.ts +12 -4
  410. package/dist/components/features/table/data-table.d.ts +1 -1
  411. package/dist/components/features/table/filter-bar.d.ts +1 -1
  412. package/dist/components/features/table/pagination.d.ts +1 -1
  413. package/dist/components/features/table/partials/cell-value.d.ts +1 -1
  414. package/dist/components/features/table/table-body.d.ts +1 -1
  415. package/dist/components/features/table/table-header.d.ts +1 -1
  416. package/dist/components/features/table/table-helpers.d.ts +31 -9
  417. package/dist/components/features/table/table-region.recipes.d.ts +11 -0
  418. package/dist/components/features/table/table-toolbar.d.ts +1 -1
  419. package/dist/components/features/table/table.strings.d.ts +1 -0
  420. package/dist/components/features/table/table.types.d.ts +74 -48
  421. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
  422. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
  423. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
  424. package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
  425. package/dist/components/layout/app-shell/index.d.ts +2 -2
  426. package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
  427. package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
  428. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  429. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  430. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  431. package/dist/components/layout/auth/auth-shell.d.ts +1 -1
  432. package/dist/components/layout/auth/auth.types.d.ts +0 -5
  433. package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
  434. package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
  435. package/dist/components/layout/header/header.types.d.ts +16 -6
  436. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
  437. package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
  438. package/dist/components/layout/header/partials/header-search.d.ts +1 -1
  439. package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
  440. package/dist/components/layout/layout.types.d.ts +2 -2
  441. package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
  442. package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
  443. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
  444. package/dist/components/layout/page/index.d.ts +2 -3
  445. package/dist/components/layout/page/page.strings.d.ts +12 -0
  446. package/dist/components/layout/page/page.types.d.ts +7 -110
  447. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  448. package/dist/components/layout/settings/index.d.ts +1 -1
  449. package/dist/components/layout/settings/settings.d.ts +3 -5
  450. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  451. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  452. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
  453. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  454. package/dist/components/layout/sidebar/index.d.ts +1 -1
  455. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +15 -7
  456. package/dist/components/layout/sidebar/sidebar.types.d.ts +10 -12
  457. package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
  458. package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
  459. package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
  460. package/dist/components/primitives/date.d.ts +22 -3
  461. package/dist/components/primitives/file-size.d.ts +8 -2
  462. package/dist/components/primitives/index.d.ts +1 -1
  463. package/dist/components/primitives/initials.d.ts +3 -1
  464. package/dist/components/primitives/link.d.ts +8 -1
  465. package/dist/components/primitives/money.d.ts +1 -1
  466. package/dist/components/primitives/number.d.ts +2 -1
  467. package/dist/components/typography/heading.d.ts +9 -3
  468. package/dist/components/typography/index.d.ts +1 -1
  469. package/dist/components/typography/text-link.d.ts +10 -3
  470. package/dist/components/ui/badge.d.ts +2 -4
  471. package/dist/components/ui/breadcrumb.d.ts +2 -3
  472. package/dist/components/ui/button.d.ts +8 -2
  473. package/dist/components/ui/collapsible.d.ts +1 -4
  474. package/dist/components/ui/command.d.ts +20 -18
  475. package/dist/components/ui/dialog.d.ts +3 -9
  476. package/dist/components/ui/empty.d.ts +2 -2
  477. package/dist/components/ui/input-group.d.ts +3 -3
  478. package/dist/components/ui/item.d.ts +3 -3
  479. package/dist/components/ui/popover.d.ts +3 -7
  480. package/dist/components/ui/sheet.d.ts +4 -12
  481. package/dist/components/ui/sidebar-state.d.ts +6 -1
  482. package/dist/components/ui/sidebar.d.ts +7 -4
  483. package/dist/components/ui/tabs.d.ts +2 -2
  484. package/dist/components/ui/toggle-group.d.ts +3 -3
  485. package/dist/components/ui/toggle.d.ts +2 -2
  486. package/dist/components/ui/tooltip.d.ts +1 -3
  487. package/dist/{containers-CSdc32h9.js → containers-BdfLTP4w.js} +37 -32
  488. package/dist/containers-BdfLTP4w.js.map +1 -0
  489. package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
  490. package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
  491. package/dist/{copyable-3fdHfMR3.js → copyable-Bmr14W0d.js} +6 -6
  492. package/dist/{copyable-3fdHfMR3.js.map → copyable-Bmr14W0d.js.map} +1 -1
  493. package/dist/{data-display-Cmj-xZYl.js → data-display-CWe9SOYh.js} +264 -251
  494. package/dist/data-display-CWe9SOYh.js.map +1 -0
  495. package/dist/date-3qsCE1ID.js +209 -0
  496. package/dist/date-3qsCE1ID.js.map +1 -0
  497. package/dist/{date-picker-CyQlFYsP.js → date-picker-D1keJQIG.js} +129 -129
  498. package/dist/date-picker-D1keJQIG.js.map +1 -0
  499. package/dist/date-pickers-D8aJoeHc.js +185 -0
  500. package/dist/date-pickers-D8aJoeHc.js.map +1 -0
  501. package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
  502. package/dist/{display-CT_N2a3w.js → display-VlmP1I0i.js} +23 -46
  503. package/dist/display-VlmP1I0i.js.map +1 -0
  504. package/dist/{dropdown-menu-C08iIugv.js → dropdown-menu-B8hjvbkS.js} +9 -9
  505. package/dist/{dropdown-menu-C08iIugv.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
  506. package/dist/dropzone-CHBNK3de.js +116 -0
  507. package/dist/dropzone-CHBNK3de.js.map +1 -0
  508. package/dist/features/activities.js +682 -628
  509. package/dist/features/activities.js.map +1 -1
  510. package/dist/features/ai-chat.js +258 -226
  511. package/dist/features/ai-chat.js.map +1 -1
  512. package/dist/features/appointment-calendar.js +436 -340
  513. package/dist/features/appointment-calendar.js.map +1 -1
  514. package/dist/features/async-preview.js +351 -265
  515. package/dist/features/async-preview.js.map +1 -1
  516. package/dist/features/combobox.js +2 -2
  517. package/dist/features/comments.js +1 -1
  518. package/dist/features/data-view.js +212 -151
  519. package/dist/features/data-view.js.map +1 -1
  520. package/dist/features/email-composer/engine.js +1 -1
  521. package/dist/features/email-composer.js +344 -315
  522. package/dist/features/email-composer.js.map +1 -1
  523. package/dist/features/event-calendar.js +504 -355
  524. package/dist/features/event-calendar.js.map +1 -1
  525. package/dist/features/filters.js +2 -2
  526. package/dist/features/global-search.js +250 -206
  527. package/dist/features/global-search.js.map +1 -1
  528. package/dist/features/kanban.js +269 -189
  529. package/dist/features/kanban.js.map +1 -1
  530. package/dist/features/map.js +385 -371
  531. package/dist/features/map.js.map +1 -1
  532. package/dist/features/media-library.js +1571 -1199
  533. package/dist/features/media-library.js.map +1 -1
  534. package/dist/features/mentions.js +2 -2
  535. package/dist/features/overlays.js +2 -2
  536. package/dist/features/products.js +1780 -1691
  537. package/dist/features/products.js.map +1 -1
  538. package/dist/features/questionnaire.js +165 -152
  539. package/dist/features/questionnaire.js.map +1 -1
  540. package/dist/features/resource-assignment.js +223 -191
  541. package/dist/features/resource-assignment.js.map +1 -1
  542. package/dist/features/resource.js +55 -220
  543. package/dist/features/resource.js.map +1 -1
  544. package/dist/features/rich-text-editor.js +3 -3
  545. package/dist/features/schema-form.js +280 -228
  546. package/dist/features/schema-form.js.map +1 -1
  547. package/dist/features/suggestions.js +48 -39
  548. package/dist/features/suggestions.js.map +1 -1
  549. package/dist/features/table.js +2 -2
  550. package/dist/features/theme-tweaker.js +723 -633
  551. package/dist/features/theme-tweaker.js.map +1 -1
  552. package/dist/feedback-DmqmXKLn.js +254 -0
  553. package/dist/feedback-DmqmXKLn.js.map +1 -0
  554. package/dist/{field-affordance-recipes-D6H7tVJi.js → field-affordance-recipes-DfbMadot.js} +13 -9
  555. package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
  556. package/dist/{field-state-recipes-7sza8QbC.js → field-state-recipes-EtCxpEy3.js} +6 -2
  557. package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
  558. package/dist/filters-BviMRMLS.js +2692 -0
  559. package/dist/filters-BviMRMLS.js.map +1 -0
  560. package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
  561. package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
  562. package/dist/{form-field-CAPdwdnZ.js → form-field-BdfCwSoQ.js} +5 -5
  563. package/dist/{form-field-CAPdwdnZ.js.map → form-field-BdfCwSoQ.js.map} +1 -1
  564. package/dist/{form-sizing-CgcrUbLU.js → form-sizing-DE_dZw32.js} +3 -3
  565. package/dist/{form-sizing-CgcrUbLU.js.map → form-sizing-DE_dZw32.js.map} +1 -1
  566. package/dist/{forms-B3W8CH7-.js → forms-B8DzJnBN.js} +35 -35
  567. package/dist/forms-B8DzJnBN.js.map +1 -0
  568. package/dist/forms-numeric-DOBswjKj.js +992 -0
  569. package/dist/forms-numeric-DOBswjKj.js.map +1 -0
  570. package/dist/{header-ZIIsRKxP.js → header-Cq3G0ZRP.js} +100 -95
  571. package/dist/header-Cq3G0ZRP.js.map +1 -0
  572. package/dist/{hooks-BitHSh-Y.js → hooks-DHfeSMAO.js} +34 -14
  573. package/dist/hooks-DHfeSMAO.js.map +1 -0
  574. package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
  575. package/dist/http-Cu-GPpss.js.map +1 -0
  576. package/dist/{icon-badge-npxF1SLX.js → icon-badge-B0Kq7wom.js} +3 -3
  577. package/dist/{icon-badge-npxF1SLX.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
  578. package/dist/index.js +6 -6
  579. package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
  580. package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
  581. package/dist/{input-DIREVYHs.js → input-2YrgTUrz.js} +3 -3
  582. package/dist/{input-DIREVYHs.js.map → input-2YrgTUrz.js.map} +1 -1
  583. package/dist/{input-7KAc7XQL.js → input-DfJyrjoR.js} +6 -6
  584. package/dist/{input-7KAc7XQL.js.map → input-DfJyrjoR.js.map} +1 -1
  585. package/dist/{interaction-recipes-4wZ2tvfb.js → interaction-recipes-DmuS1ase.js} +2 -2
  586. package/dist/{interaction-recipes-4wZ2tvfb.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
  587. package/dist/item-GJ9mvCcg.js +279 -0
  588. package/dist/item-GJ9mvCcg.js.map +1 -0
  589. package/dist/layout/app-shell.js +1 -1
  590. package/dist/layout/auth.js +1 -1
  591. package/dist/layout/containers.js +1 -1
  592. package/dist/layout/header.js +1 -1
  593. package/dist/layout/hooks.js +1 -1
  594. package/dist/layout/navigation.js +1 -1
  595. package/dist/layout/page.js +2 -2
  596. package/dist/layout/settings.js +2 -2
  597. package/dist/layout/sidebar.js +3 -3
  598. package/dist/layout/workspace.js +1 -1
  599. package/dist/layout.js +12 -12
  600. package/dist/{layout.types-E_GAApzO.js → layout.types-DbtnyAtd.js} +11 -8
  601. package/dist/layout.types-DbtnyAtd.js.map +1 -0
  602. package/dist/lib/anchored-positioning.d.ts +11 -0
  603. package/dist/lib/field-affordance-recipes.d.ts +10 -0
  604. package/dist/lib/field-state-recipes.d.ts +6 -0
  605. package/dist/lib/focus-recipes.d.ts +7 -0
  606. package/dist/lib/format.d.ts +25 -0
  607. package/dist/lib/money-format.d.ts +6 -0
  608. package/dist/lib/motion-recipes.d.ts +6 -0
  609. package/dist/lib/surface-recipes.d.ts +32 -2
  610. package/dist/lib/theme-scope.d.ts +17 -1
  611. package/dist/lib/token-merge.generated.d.ts +13 -19
  612. package/dist/lib/ui-provider/index.d.ts +1 -1
  613. package/dist/lib/ui-provider/types.d.ts +5 -0
  614. package/dist/lib/use-controllable-state.d.ts +16 -0
  615. package/dist/lib/use-copy-feedback.d.ts +15 -0
  616. package/dist/lib/utils.js +1 -1
  617. package/dist/lib/variant-props.d.ts +9 -0
  618. package/dist/main-landmark-context-BAsyqp2I.js +11 -0
  619. package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
  620. package/dist/mentions-zz0ewNIq.js +670 -0
  621. package/dist/mentions-zz0ewNIq.js.map +1 -0
  622. package/dist/{message-BJHnn43M.js → message-BiiVrRrm.js} +10 -7
  623. package/dist/{message-BJHnn43M.js.map → message-BiiVrRrm.js.map} +1 -1
  624. package/dist/{metadata-list-XkqZ_UXH.js → metadata-list-G85roWjS.js} +13 -12
  625. package/dist/metadata-list-G85roWjS.js.map +1 -0
  626. package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
  627. package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
  628. package/dist/navigation-C0Be5C3i.js +304 -0
  629. package/dist/navigation-C0Be5C3i.js.map +1 -0
  630. package/dist/{navigation-Bt-v7rWP.js → navigation-CmqaQR_G.js} +99 -103
  631. package/dist/navigation-CmqaQR_G.js.map +1 -0
  632. package/dist/number-NFWKIoiK.js +340 -0
  633. package/dist/number-NFWKIoiK.js.map +1 -0
  634. package/dist/{overflow-tab-bar-BQCA2Zn2.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
  635. package/dist/{overflow-tab-bar-BQCA2Zn2.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
  636. package/dist/overlays-D-gAIfPF.js +1018 -0
  637. package/dist/overlays-D-gAIfPF.js.map +1 -0
  638. package/dist/page-D4pQhgSq.js +216 -0
  639. package/dist/page-D4pQhgSq.js.map +1 -0
  640. package/dist/{page-header-commands-DIKspJfx.js → page-header-commands-elelNOfd.js} +29 -29
  641. package/dist/{page-header-commands-DIKspJfx.js.map → page-header-commands-elelNOfd.js.map} +1 -1
  642. package/dist/{pagination-Br8TdV9A.js → pagination-BuSWw1US.js} +22 -23
  643. package/dist/pagination-BuSWw1US.js.map +1 -0
  644. package/dist/{popover-k8TdUcAt.js → popover-BpMxbqEK.js} +73 -69
  645. package/dist/popover-BpMxbqEK.js.map +1 -0
  646. package/dist/{popover-menu-yn-o0kyA.js → popover-menu-CO-_iiuz.js} +7 -7
  647. package/dist/{popover-menu-yn-o0kyA.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
  648. package/dist/{popover.recipes-DJ0AkUan.js → popover.recipes-BqkdvlZn.js} +3 -4
  649. package/dist/{popover.recipes-DJ0AkUan.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
  650. package/dist/{portal-recipes-DyUXqUtD.js → portal-recipes-BPeS4rGB.js} +2 -2
  651. package/dist/{portal-recipes-DyUXqUtD.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
  652. package/dist/primitives-BlC1lXBr.js +447 -0
  653. package/dist/primitives-BlC1lXBr.js.map +1 -0
  654. package/dist/primitives.js +4 -4
  655. package/dist/{progress-DZFXXzPs.js → progress-RARK8AjB.js} +5 -5
  656. package/dist/{progress-DZFXXzPs.js.map → progress-RARK8AjB.js.map} +1 -1
  657. package/dist/receipt-CUf2Vegp.js +114 -0
  658. package/dist/receipt-CUf2Vegp.js.map +1 -0
  659. package/dist/{rich-text-BnTzZjIo.js → rich-text-Cypm9__d.js} +7 -8
  660. package/dist/{rich-text-BnTzZjIo.js.map → rich-text-Cypm9__d.js.map} +1 -1
  661. package/dist/rich-text-editor-Z6cQepsA.js +919 -0
  662. package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
  663. package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
  664. package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
  665. package/dist/rich-text-tree-DdKHIJx4.js +154 -0
  666. package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
  667. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  668. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  669. package/dist/{scroll-area-Bj6CRUif.js → scroll-area-B9HKbji0.js} +3 -3
  670. package/dist/{scroll-area-Bj6CRUif.js.map → scroll-area-B9HKbji0.js.map} +1 -1
  671. package/dist/{separator-DM6gs2vu.js → separator-DaDe26sf.js} +3 -3
  672. package/dist/separator-DaDe26sf.js.map +1 -0
  673. package/dist/{separator-B9ewiCGO.js → separator-KGsNXt2J.js} +2 -2
  674. package/dist/{separator-B9ewiCGO.js.map → separator-KGsNXt2J.js.map} +1 -1
  675. package/dist/services/actions/action-adapters.d.ts +5 -2
  676. package/dist/services/actions/index.d.ts +1 -1
  677. package/dist/services/actions.js +2 -2
  678. package/dist/services/actions.js.map +1 -1
  679. package/dist/settings-D5j_RJvT.js +160 -0
  680. package/dist/settings-D5j_RJvT.js.map +1 -0
  681. package/dist/sheet-B6j_BE9O.js +241 -0
  682. package/dist/sheet-B6j_BE9O.js.map +1 -0
  683. package/dist/{sidebar-CmD6a-HK.js → sidebar-C-iQ_TJP.js} +377 -351
  684. package/dist/sidebar-C-iQ_TJP.js.map +1 -0
  685. package/dist/sidebar-D5VO2W8S.js +715 -0
  686. package/dist/sidebar-D5VO2W8S.js.map +1 -0
  687. package/dist/{skeleton-DDgdhmu9.js → skeleton-Cab_KgVo.js} +12 -12
  688. package/dist/skeleton-Cab_KgVo.js.map +1 -0
  689. package/dist/{smart-card-B6vLxqa_.js → smart-card-C59z6KFO.js} +217 -210
  690. package/dist/smart-card-C59z6KFO.js.map +1 -0
  691. package/dist/{structure-DZJ2wbAU.js → structure-DElaQwwN.js} +2 -2
  692. package/dist/{structure-DZJ2wbAU.js.map → structure-DElaQwwN.js.map} +1 -1
  693. package/dist/style.css +1 -1
  694. package/dist/{surface-recipes-C8mNycaY.js → surface-recipes-DV6rrOFq.js} +10 -2
  695. package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
  696. package/dist/{table-CXSPHH25.js → table-CSRUgpdK.js} +62 -61
  697. package/dist/table-CSRUgpdK.js.map +1 -0
  698. package/dist/table-DdXDBsR_.js +1657 -0
  699. package/dist/table-DdXDBsR_.js.map +1 -0
  700. package/dist/{tabs-C4Kr_hCr.js → tabs-WnHfV2pM.js} +27 -27
  701. package/dist/tabs-WnHfV2pM.js.map +1 -0
  702. package/dist/{text-inputs-jdkS3ReG.js → text-inputs-ljyBYaCd.js} +112 -112
  703. package/dist/text-inputs-ljyBYaCd.js.map +1 -0
  704. package/dist/theme.css +21 -5
  705. package/dist/timelines-mOmS9Eh3.js +479 -0
  706. package/dist/timelines-mOmS9Eh3.js.map +1 -0
  707. package/dist/tooltip-yjX-Uv-p.js +112 -0
  708. package/dist/tooltip-yjX-Uv-p.js.map +1 -0
  709. package/dist/{tree-CeYVzdFE.js → tree-YpkxUG2Z.js} +80 -72
  710. package/dist/tree-YpkxUG2Z.js.map +1 -0
  711. package/dist/typography/rich-text.js +1 -1
  712. package/dist/{typography-C7-YMW1S.js → typography-C0dELqYV.js} +46 -40
  713. package/dist/typography-C0dELqYV.js.map +1 -0
  714. package/dist/typography.js +1 -1
  715. package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
  716. package/dist/ui-provider-Bu1S-o96.js.map +1 -0
  717. package/dist/ui-provider.js +2 -2
  718. package/dist/{upload-Hdm5gObf.js → upload-DMuMYJFT.js} +276 -268
  719. package/dist/upload-DMuMYJFT.js.map +1 -0
  720. package/dist/{usage-card-9s8hLDfn.js → usage-card-DDPki5P1.js} +57 -54
  721. package/dist/usage-card-DDPki5P1.js.map +1 -0
  722. package/dist/use-controllable-state-BlP8SyBI.js +13 -0
  723. package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
  724. package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
  725. package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
  726. package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
  727. package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
  728. package/dist/{utils-DhuoqFy4.js → utils-BVbAG2J6.js} +98 -76
  729. package/dist/utils-BVbAG2J6.js.map +1 -0
  730. package/dist/value-inputs-h5MwjGCo.js +982 -0
  731. package/dist/value-inputs-h5MwjGCo.js.map +1 -0
  732. package/dist/value-typography-D15uwfj-.js +154 -0
  733. package/dist/value-typography-D15uwfj-.js.map +1 -0
  734. package/dist/workspace-DIryPqBt.js +400 -0
  735. package/dist/workspace-DIryPqBt.js.map +1 -0
  736. package/docs/consumer-skill/SKILL.md +7 -0
  737. package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
  738. package/docs/consumer-skill/examples/analytics.tsx +1 -1
  739. package/docs/consumer-skill/examples/app-layout.tsx +3 -3
  740. package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
  741. package/docs/consumer-skill/examples/detail.tsx +3 -2
  742. package/docs/consumer-skill/examples/email-composer.tsx +1 -1
  743. package/docs/consumer-skill/examples/index-table.tsx +2 -2
  744. package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
  745. package/docs/consumer-skill/references/agents-md.md +20 -16
  746. package/docs/consumer-skill/references/analytics.md +20 -6
  747. package/docs/consumer-skill/references/building-views.md +213 -0
  748. package/docs/consumer-skill/references/catalogue.md +617 -0
  749. package/docs/consumer-skill/references/component-contracts.json +10202 -18084
  750. package/docs/consumer-skill/references/composition.md +21 -17
  751. package/docs/consumer-skill/references/discovery.md +8 -5
  752. package/docs/consumer-skill/references/installation.md +10 -4
  753. package/docs/consumer-skill/references/integration.md +5 -5
  754. package/docs/consumer-skill/references/product-composition.md +2 -2
  755. package/docs/consumer-skill/references/public-api.json +580 -633
  756. package/docs/consumer-skill/references/review.md +6 -4
  757. package/docs/consumer-skill/references/screen-archetypes.md +2 -2
  758. package/docs/consumer-skill/references/theming.md +1 -1
  759. package/docs/consumer-skill/references/tokens.json +4 -4
  760. package/docs/consumer-skill/references/workflows.md +7 -7
  761. package/docs/consumer-skill/scripts/composition-policy.mjs +40 -20
  762. package/docs/consumer-skill/scripts/composition.mjs +4 -1
  763. package/docs/consumer-skill/scripts/discovery.mjs +3 -1
  764. package/docs/consumer-skill/scripts/setup-skills.mjs +31 -4
  765. package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
  766. package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
  767. package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
  768. package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
  769. package/package.json +9 -12
  770. package/templates/README.md +3 -2
  771. package/templates/admin-shell-template.tsx +49 -9
  772. package/templates/analytics-operations-template.tsx +20 -24
  773. package/templates/customers-template.tsx +12 -9
  774. package/templates/index.ts +2 -8
  775. package/templates/orders-template.tsx +28 -24
  776. package/templates/products-template.tsx +14 -4
  777. package/templates/user-permissions-template.tsx +11 -14
  778. package/dist/accordion-0tQUZ20r.js.map +0 -1
  779. package/dist/action-menu-C0gjzLyE.js +0 -284
  780. package/dist/action-menu-C0gjzLyE.js.map +0 -1
  781. package/dist/ai-artifact-CGGpQryR.js +0 -1200
  782. package/dist/ai-artifact-CGGpQryR.js.map +0 -1
  783. package/dist/anchored-positioning-DPnKTvNs.js +0 -6
  784. package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
  785. package/dist/app-shell-EHuuRDGy.js +0 -321
  786. package/dist/app-shell-EHuuRDGy.js.map +0 -1
  787. package/dist/auth-B0girIk_.js.map +0 -1
  788. package/dist/badge-wWauMgAt.js.map +0 -1
  789. package/dist/base/sheet.js +0 -3
  790. package/dist/breadcrumbs-Bp9Ke7kd.js.map +0 -1
  791. package/dist/button-ChBovTx0.js.map +0 -1
  792. package/dist/buttons-DeW0bQeK.js.map +0 -1
  793. package/dist/cascader-CrAl9zD5.js +0 -439
  794. package/dist/cascader-CrAl9zD5.js.map +0 -1
  795. package/dist/choice-inputs-DHGtx0QV.js.map +0 -1
  796. package/dist/code-block-BSJyq9e-.js.map +0 -1
  797. package/dist/collapsible-BzJ91LUG.js +0 -81
  798. package/dist/collapsible-BzJ91LUG.js.map +0 -1
  799. package/dist/combobox-Bcvu5J8O.js +0 -363
  800. package/dist/combobox-Bcvu5J8O.js.map +0 -1
  801. package/dist/combobox-C2JiSQPc.js +0 -915
  802. package/dist/combobox-C2JiSQPc.js.map +0 -1
  803. package/dist/command-9e52NPgK.js +0 -425
  804. package/dist/command-9e52NPgK.js.map +0 -1
  805. package/dist/comments-BsgErEqd.js +0 -1174
  806. package/dist/comments-BsgErEqd.js.map +0 -1
  807. package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
  808. package/dist/components/base/display/content-block.d.ts +0 -75
  809. package/dist/components/base/display/content-block.strings.d.ts +0 -5
  810. package/dist/components/base/sheet/index.d.ts +0 -29
  811. package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
  812. package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
  813. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -10
  814. package/dist/components/features/resource/resource.strings.d.ts +0 -12
  815. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
  816. package/dist/components/features/sync/index.d.ts +0 -26
  817. package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
  818. package/dist/components/features/sync/sync.strings.d.ts +0 -18
  819. package/dist/components/features/sync/sync.types.d.ts +0 -44
  820. package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
  821. package/dist/components/ui/slot.d.ts +0 -6
  822. package/dist/containers-CSdc32h9.js.map +0 -1
  823. package/dist/data-display-Cmj-xZYl.js.map +0 -1
  824. package/dist/date-Br0FicVv.js +0 -144
  825. package/dist/date-Br0FicVv.js.map +0 -1
  826. package/dist/date-picker-CyQlFYsP.js.map +0 -1
  827. package/dist/date-pickers-tj2MXmXd.js +0 -185
  828. package/dist/date-pickers-tj2MXmXd.js.map +0 -1
  829. package/dist/display-CT_N2a3w.js.map +0 -1
  830. package/dist/features/sync.js +0 -142
  831. package/dist/features/sync.js.map +0 -1
  832. package/dist/feedback-Dzo1xtAU.js +0 -246
  833. package/dist/feedback-Dzo1xtAU.js.map +0 -1
  834. package/dist/field-affordance-recipes-D6H7tVJi.js.map +0 -1
  835. package/dist/field-state-recipes-7sza8QbC.js.map +0 -1
  836. package/dist/filters-Dl80yYtN.js +0 -2415
  837. package/dist/filters-Dl80yYtN.js.map +0 -1
  838. package/dist/focus-recipes-B653VaLq.js.map +0 -1
  839. package/dist/forms-B3W8CH7-.js.map +0 -1
  840. package/dist/forms-numeric-CwjQJe-O.js +0 -991
  841. package/dist/forms-numeric-CwjQJe-O.js.map +0 -1
  842. package/dist/header-ZIIsRKxP.js.map +0 -1
  843. package/dist/hooks-BitHSh-Y.js.map +0 -1
  844. package/dist/http-D_6rOnzU.js.map +0 -1
  845. package/dist/item-FfWnaYST.js +0 -278
  846. package/dist/item-FfWnaYST.js.map +0 -1
  847. package/dist/layout.types-E_GAApzO.js.map +0 -1
  848. package/dist/media-gallery-C81DAnKI.js +0 -203
  849. package/dist/media-gallery-C81DAnKI.js.map +0 -1
  850. package/dist/mentions-qOnedSt4.js +0 -639
  851. package/dist/mentions-qOnedSt4.js.map +0 -1
  852. package/dist/metadata-list-XkqZ_UXH.js.map +0 -1
  853. package/dist/motion-recipes-DitYv6P2.js.map +0 -1
  854. package/dist/navigation-BgtPJAhi.js +0 -288
  855. package/dist/navigation-BgtPJAhi.js.map +0 -1
  856. package/dist/navigation-Bt-v7rWP.js.map +0 -1
  857. package/dist/number-CYqBcrSj.js +0 -346
  858. package/dist/number-CYqBcrSj.js.map +0 -1
  859. package/dist/overlays-CC8zI3Du.js +0 -1017
  860. package/dist/overlays-CC8zI3Du.js.map +0 -1
  861. package/dist/page-BoQ1VaFJ.js +0 -331
  862. package/dist/page-BoQ1VaFJ.js.map +0 -1
  863. package/dist/pagination-Br8TdV9A.js.map +0 -1
  864. package/dist/popover-k8TdUcAt.js.map +0 -1
  865. package/dist/primitives-BkkQjYl7.js +0 -385
  866. package/dist/primitives-BkkQjYl7.js.map +0 -1
  867. package/dist/receipt-C7LhOg7Q.js +0 -116
  868. package/dist/receipt-C7LhOg7Q.js.map +0 -1
  869. package/dist/rich-text-editor-CAurDwT5.js +0 -1273
  870. package/dist/rich-text-editor-CAurDwT5.js.map +0 -1
  871. package/dist/rich-text-editor-toolbar-DbXig7Jk.js +0 -99
  872. package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +0 -1
  873. package/dist/rich-text-tree-BqyQ_7-R.js +0 -66
  874. package/dist/rich-text-tree-BqyQ_7-R.js.map +0 -1
  875. package/dist/sanitize-html-BWkH4dLM.js +0 -105
  876. package/dist/sanitize-html-BWkH4dLM.js.map +0 -1
  877. package/dist/separator-DM6gs2vu.js.map +0 -1
  878. package/dist/settings-DZPHgpx4.js +0 -155
  879. package/dist/settings-DZPHgpx4.js.map +0 -1
  880. package/dist/sheet-C4DHsgLk.js +0 -250
  881. package/dist/sheet-C4DHsgLk.js.map +0 -1
  882. package/dist/sidebar-C8BnDwTH.js +0 -709
  883. package/dist/sidebar-C8BnDwTH.js.map +0 -1
  884. package/dist/sidebar-CmD6a-HK.js.map +0 -1
  885. package/dist/skeleton-DDgdhmu9.js.map +0 -1
  886. package/dist/slot-CLF9kLrS.js +0 -16
  887. package/dist/slot-CLF9kLrS.js.map +0 -1
  888. package/dist/smart-card-B6vLxqa_.js.map +0 -1
  889. package/dist/surface-recipes-C8mNycaY.js.map +0 -1
  890. package/dist/table-CBonSdTp.js +0 -1584
  891. package/dist/table-CBonSdTp.js.map +0 -1
  892. package/dist/table-CXSPHH25.js.map +0 -1
  893. package/dist/tabs-C4Kr_hCr.js.map +0 -1
  894. package/dist/text-inputs-jdkS3ReG.js.map +0 -1
  895. package/dist/timelines-CoPwdJP0.js +0 -458
  896. package/dist/timelines-CoPwdJP0.js.map +0 -1
  897. package/dist/tooltip-31NwIpTo.js +0 -113
  898. package/dist/tooltip-31NwIpTo.js.map +0 -1
  899. package/dist/tree-CeYVzdFE.js.map +0 -1
  900. package/dist/typography-C7-YMW1S.js.map +0 -1
  901. package/dist/ui-provider-C-74NVLc.js.map +0 -1
  902. package/dist/upload-Hdm5gObf.js.map +0 -1
  903. package/dist/upload-queue-D0sYPuqo.js +0 -409
  904. package/dist/upload-queue-D0sYPuqo.js.map +0 -1
  905. package/dist/usage-card-9s8hLDfn.js.map +0 -1
  906. package/dist/utils-DhuoqFy4.js.map +0 -1
  907. package/dist/value-inputs-D3aPgq9H.js +0 -980
  908. package/dist/value-inputs-D3aPgq9H.js.map +0 -1
  909. package/dist/value-typography-uSzzG9Gf.js +0 -122
  910. package/dist/value-typography-uSzzG9Gf.js.map +0 -1
  911. package/dist/workspace-CC8Vchiu.js +0 -411
  912. package/dist/workspace-CC8Vchiu.js.map +0 -1
package/MIGRATION.md CHANGED
@@ -1,11 +1,719 @@
1
- # From admin-ui-starter-kit 3.x
1
+ # Migration guide
2
2
 
3
3
  `themelia-react-ui` is the Base UI and Tailwind port of the Themelia package
4
4
  `admin-ui-starter-kit`. The package names have independent version histories.
5
+ This file covers two moves:
6
+
7
+ - [Upgrading from 2.x to 3.0](#upgrading-from-2x-to-30), for applications
8
+ already on `themelia-react-ui` 2.x.
9
+ - [From admin-ui-starter-kit 3.x](#from-admin-ui-starter-kit-3x), for
10
+ applications moving from the earlier package.
11
+
12
+ ## Upgrading from 2.x to 3.0
13
+
14
+ 3.0 removes the deprecated and legacy API that 2.x kept for compatibility:
15
+ second names for one component, re-exports from an old path, props and string
16
+ keys that had no effect, and the `asChild` composition form. It also removes
17
+ props that duplicated another prop: a label prop beside a `strings` key, a
18
+ flat prop beside a `slots` key, a boolean beside the option that already
19
+ implies it. Each such row names the one form that remains. Two package
20
+ entries are gone, the chart blocks have their own entry, a few types are
21
+ narrower, and the default control size and table edge inset changed.
22
+
23
+ Work in this order:
24
+
25
+ 1. Install `themelia-react-ui` 3.0.0.
26
+ 2. Update imports of moved and removed entries: the
27
+ [chart blocks](#chart-blocks-moved) and the two
28
+ [removed entries](#removed-entries).
29
+ 3. Replace removed API layer by layer, using the tables in
30
+ [Removed API](#removed-api): base and lower layers first, then layouts and
31
+ templates, blocks, data features and content features.
32
+ 4. Convert `asChild` to `render` ([Composition form](#composition-form)).
33
+ 5. Fix the narrower types listed under [Breaking changes](#breaking-changes).
34
+ 6. Review the [changed defaults](#changed-defaults) and the
35
+ [changed behaviour](#changed-behaviour).
36
+
37
+ Removed exports, types and props are type errors, so a type check after each
38
+ step shows what is left. A few removals are not reported by the compiler and
39
+ need a search of your own code: the snake case `content_type` field on
40
+ comments, a RANGE filter URL that carries one bare value, and CSS or test
41
+ selectors that target ContentBlock or PageHeader hooks. Their rows say what
42
+ changed.
43
+
44
+ ### Breaking changes
45
+
46
+ - **Chart blocks moved.** `Metric`, `MetricBar`, `MetricGrid`,
47
+ `MetricMicroGrid`, `MetricGradient`, `MetricSparkline` and `ChartCard` (with
48
+ their types) are now imported from
49
+ `themelia-react-ui/blocks/analytics/charts`.
50
+ `themelia-react-ui/blocks/analytics` no longer loads the optional `recharts`
51
+ peer. The symbol table is in [Chart blocks moved](#chart-blocks-moved).
52
+ - **Variant props no longer accept `null`.** Affects `variant`, `size`, `tone`
53
+ and `align` on Alert, EmptyMedia, SidebarMenuButton, SidebarTrigger,
54
+ TabsList, Toggle, ToggleGroup, InputGroupAddon, InputGroupButton, Item and
55
+ ItemMedia. Pass `undefined` or omit the prop.
56
+ - **Cascader and Accordion value types are narrower.** Cascader is typed by
57
+ mode: single takes `string | null`, `multiple` takes and emits string arrays
58
+ (`CascaderSingleProps`, `CascaderMultipleProps`). `Accordion` is generic over
59
+ its value type instead of `any[]`.
60
+ - **Deprecated and legacy API removed.** Two entries
61
+ ([Removed entries](#removed-entries)) and the exports, types, props, string
62
+ keys and values listed in [Removed API](#removed-api).
63
+
64
+ #### Changed defaults
65
+
66
+ **Control sizes.** `--height-action` and `--height-control` default to
67
+ 2.125rem (were 2rem) and `--control-x` to 0.875rem (was 0.75rem), so default
68
+ buttons and fields are 34px tall with a 14px inline inset.
69
+
70
+ | Root | 2.x default | 3.0 default |
71
+ | --- | --- | --- |
72
+ | `--height-action` | 2rem | 2.125rem |
73
+ | `--height-control` | 2rem | 2.125rem |
74
+ | `--control-x` | 0.75rem | 0.875rem |
75
+
76
+ To keep the previous sizes, set the three roots back to the old values at the
77
+ root or at a scoped theme boundary:
78
+
79
+ ```css
80
+ :root {
81
+ --height-action: 2rem;
82
+ --height-control: 2rem;
83
+ --control-x: 0.75rem;
84
+ }
85
+ ```
86
+
87
+ **Table edges.** The first and last columns of every table use the default
88
+ surface inset (24px, following `--surface-x` and `--space-scale`) instead of
89
+ 16px, so a table lines up with the card title, toolbar and footer around it. A
90
+ table inside a padded Card body sits flush with that body. DataTable and
91
+ DataView regions (topbar, selection bar, filter bar, footer, pagination) share
92
+ the same edge, and row checkboxes start on it. The table edge has no root of
93
+ its own: it follows `--surface-x` and `--space-scale`, which also set the
94
+ inset of the surfaces around the table, so changing those roots moves every
95
+ surface inset with it.
96
+
97
+ ### Removed entries
98
+
99
+ | Removed entry | Use instead |
100
+ | --- | --- |
101
+ | `themelia-react-ui/features/sync` | `SchemaForm` from `themelia-react-ui/features/schema-form`, with a `radio-cards` field for the window and a `checkbox-cards` field for the options. Wrap it in `ActionDialog` from `themelia-react-ui/features/overlays` for a dialog. The symbol rows are under [`features/sync`](#featuressync). |
102
+ | `themelia-react-ui/base/sheet` | `ActionDrawer` from `themelia-react-ui/features/overlays`; for an external control use `useOverlayVisibility` from the same entry. The part-by-part mapping is under [`base/sheet`](#basesheet). |
103
+
104
+ ### Removed API
105
+
106
+ Every table has the same columns. "Kind" is `export`, `type`, `prop`,
107
+ `string` (a key of a strings object) or `value` (a prop value, a data field or
108
+ a call shape). Import paths are the public package entries.
109
+
110
+ #### Base and lower layers
111
+
112
+ ##### `base/upload`
113
+
114
+ These names were re-exports. They moved to their own entries.
115
+
116
+ | Removed | Kind | Import path | Use instead | Notes |
117
+ | --- | --- | --- | --- | --- |
118
+ | `MediaGallery` | export | `themelia-react-ui/base/upload` | `MediaGallery` from `themelia-react-ui/base/media-gallery` | Same component; only the import path changes. |
119
+ | `defaultMediaGalleryStrings` | export | `themelia-react-ui/base/upload` | `defaultMediaGalleryStrings` from `themelia-react-ui/base/media-gallery` | |
120
+ | `MediaGalleryProps` | type | `themelia-react-ui/base/upload` | `MediaGalleryProps` from `themelia-react-ui/base/media-gallery` | |
121
+ | `MediaGalleryStrings` | type | `themelia-react-ui/base/upload` | `MediaGalleryStrings` from `themelia-react-ui/base/media-gallery` | |
122
+ | `UploadProgressList` | export | `themelia-react-ui/base/upload` | `UploadProgressList` from `themelia-react-ui/base/upload-queue` | Same component; only the import path changes. |
123
+ | `defaultUploadProgressListStrings` | export | `themelia-react-ui/base/upload` | `defaultUploadProgressListStrings` from `themelia-react-ui/base/upload-queue` | |
124
+ | `UploadProgressListProps` | type | `themelia-react-ui/base/upload` | `UploadProgressListProps` from `themelia-react-ui/base/upload-queue` | |
125
+ | `UploadProgressListStrings` | type | `themelia-react-ui/base/upload` | `UploadProgressListStrings` from `themelia-react-ui/base/upload-queue` | |
126
+ | `UploadItem` | type | `themelia-react-ui/base/upload` | `UploadItem` from `themelia-react-ui/base/upload-queue` | |
127
+ | `UploadStatus` | type | `themelia-react-ui/base/upload` | `UploadStatus` from `themelia-react-ui/base/upload-queue` | |
128
+ | `UploadTray` | export | `themelia-react-ui/base/upload` | `UploadTray` from `themelia-react-ui/base/upload-queue` | Same component; only the import path changes. |
129
+ | `defaultUploadTrayStrings` | export | `themelia-react-ui/base/upload` | `defaultUploadTrayStrings` from `themelia-react-ui/base/upload-queue` | |
130
+ | `UploadTrayProps` | type | `themelia-react-ui/base/upload` | `UploadTrayProps` from `themelia-react-ui/base/upload-queue` | |
131
+ | `UploadTrayStrings` | type | `themelia-react-ui/base/upload` | `UploadTrayStrings` from `themelia-react-ui/base/upload-queue` | |
132
+
133
+ ##### `base/sheet`
134
+
135
+ The `themelia-react-ui/base/sheet` entry no longer exists. Nothing public is
136
+ left in it. `ActionDrawer` and `useOverlayVisibility` come from
137
+ `themelia-react-ui/features/overlays`.
138
+
139
+ | Removed | Kind | Import path | Use instead | Notes |
140
+ | --- | --- | --- | --- | --- |
141
+ | `Sheet` | export | `themelia-react-ui/base/sheet` | `ActionDrawer` from `themelia-react-ui/features/overlays` | Open state: `open`/`onOpenChange`, or the `trigger` prop. |
142
+ | `SheetTrigger` | export | `themelia-react-ui/base/sheet` | `ActionDrawer trigger={…}` | For an external control use `useOverlayVisibility` from `themelia-react-ui/features/overlays`. |
143
+ | `SheetClose` | export | `themelia-react-ui/base/sheet` | `ActionDrawer showCloseButton` and its cancel action | ActionDrawer renders its own dismiss control. |
144
+ | `SheetContent` | export | `themelia-react-ui/base/sheet` | `ActionDrawer` (`direction`, `width`, `modal`) | |
145
+ | `SheetHeader` | export | `themelia-react-ui/base/sheet` | `ActionDrawer title` / `description` | |
146
+ | `SheetBody` | export | `themelia-react-ui/base/sheet` | `children` of `ActionDrawer` | ActionDrawer owns the scrolling body. |
147
+ | `SheetFooter` | export | `themelia-react-ui/base/sheet` | The generated actions or the `footer` prop of `ActionDrawer` | |
148
+ | `SheetTitle` | export | `themelia-react-ui/base/sheet` | `ActionDrawer title` | |
149
+ | `SheetDescription` | export | `themelia-react-ui/base/sheet` | `ActionDrawer description` | |
150
+
151
+ ##### `base/cards`
152
+
153
+ The `SmartCard*` names were second names for `Card`.
154
+
155
+ | Removed | Kind | Import path | Use instead | Notes |
156
+ | --- | --- | --- | --- | --- |
157
+ | `SmartCard` | export | `themelia-react-ui/base/cards` | `Card` | Same component and props; rename only. |
158
+ | `SmartCardSkeleton` | export | `themelia-react-ui/base/cards` | `CardSkeleton` | Rename only. |
159
+ | `defaultSmartCardStrings` | export | `themelia-react-ui/base/cards` | `defaultCardStrings` | Rename only. |
160
+ | `SmartCardProps` | type | `themelia-react-ui/base/cards` | `CardProps` | Rename only. |
161
+ | `SmartCardSkeletonProps` | type | `themelia-react-ui/base/cards` | `CardSkeletonProps` | Rename only. |
162
+ | `SmartCardAction` | type | `themelia-react-ui/base/cards` | `CardAction` | Rename only. |
163
+ | `SmartCardStrings` | type | `themelia-react-ui/base/cards` | `CardStrings` | Rename only. |
164
+ | `SmartCardSurface` | type | `themelia-react-ui/base/cards` | `CardSurface` | Rename only. |
165
+ | `Card` `tooltipAriaLabel` | prop | `themelia-react-ui/base/cards` | `strings={{ tooltipLabel: '…' }}` | Same accessible name on the info trigger. |
166
+ | `Card` `actionsLabel` | prop | `themelia-react-ui/base/cards` | `strings={{ actionsLabel: '…' }}` | Same accessible name on the overflow trigger. An `undefined` value keeps the default. |
167
+ | `Card` `footerText` | prop | `themelia-react-ui/base/cards` | `footerSlot` | A string or number in `footerSlot` is now the footnote: small, secondary, at the end of the footer, exactly as `footerText` drew it. A node fills the footer width, as before. For a footnote above a command, pass both in one `footerSlot` node. |
168
+
169
+ ##### `base/display`
170
+
171
+ The ContentBlock adapter is removed. The `asChild` rows are explained in
172
+ [Composition form](#composition-form).
173
+
174
+ | Removed | Kind | Import path | Use instead | Notes |
175
+ | --- | --- | --- | --- | --- |
176
+ | `ContentBlock` | export | `themelia-react-ui/base/display` | `Card` from `themelia-react-ui/base/cards` with `surface="flat" padding="none"` | Every ContentBlock prop exists on Card under the same name. ContentBlock defaulted to `surface="flat"`; its `padding` defaulted to `none`, or to `md` when a `surface` other than `flat` was given. Pass those two props explicitly. Card no longer adds `content-block--component`, `content-block--header`, `content-block--content`, `content-block--footer`, `data-component="content-block"`, `data-slot="content-block"` or `data-padding` on the root; if your CSS or tests select them, add the classes through `className`, `headerClassName`, `contentClassName` and `footerClassName`, or select `card--component`, `card--header`, `card--content`, `card--footer`. |
177
+ | `ContentBlockProps` | type | `themelia-react-ui/base/display` | `CardProps` from `themelia-react-ui/base/cards` | |
178
+ | `ContentBlockPadding` | type | `themelia-react-ui/base/display` | `CardProps['padding']` | ContentBlock accepted `sm`, `md`, `lg`; Card also accepts `none`. |
179
+ | `ContentBlockSurface` | type | `themelia-react-ui/base/display` | `CardSurface` from `themelia-react-ui/base/cards` | |
180
+ | `ContentBlockTitleSize` | type | `themelia-react-ui/base/display` | `CardProps['titleSize']` | |
181
+ | `ContentBlockStrings` | type | `themelia-react-ui/base/display` | `CardStrings` from `themelia-react-ui/base/cards` | Same keys: `actionsLabel`, `tooltipLabel`. |
182
+ | `defaultContentBlockStrings` | export | `themelia-react-ui/base/display` | `defaultCardStrings` from `themelia-react-ui/base/cards` | |
183
+ | `TooltipTrigger` `asChild` | prop | `themelia-react-ui/base/display` | `render={<Button … />}` | |
184
+ | `CollapsibleTrigger` `asChild` | prop | `themelia-react-ui/base/display` | `render={<Button … />}` | `nativeButton` is now inferred from the `render` element (a `button`, or a component without `href`, is native). Pass `nativeButton` to override. |
185
+
186
+ ##### `base/popover`
187
+
188
+ | Removed | Kind | Import path | Use instead | Notes |
189
+ | --- | --- | --- | --- | --- |
190
+ | `PopoverTrigger` `asChild` | prop | `themelia-react-ui/base/popover` | `render={<Button … />}` | Same `nativeButton` inference as `CollapsibleTrigger`: it is inferred from the `render` element (a `button`, or a component without `href`, is native). Pass `nativeButton` to override. |
191
+ | `PopoverAnchor` `asChild` | prop | `themelia-react-ui/base/popover` | `render={<div … />}` | Without `render` it is still a `span`. |
192
+
193
+ ##### `base/command`
194
+
195
+ | Removed | Kind | Import path | Use instead | Notes |
196
+ | --- | --- | --- | --- | --- |
197
+ | `Command` `asChild` | prop | `themelia-react-ui/base/command` | `render={<section />}` with the content as `children` | `render` takes an element. |
198
+ | `CommandInput` `asChild` | prop | `themelia-react-ui/base/command` | `render={<input … />}` | Without `render` the shared `Input` is used, as before. |
199
+ | `CommandList` `asChild` | prop | `themelia-react-ui/base/command` | `render={<ul />}` with items as `children` | |
200
+ | `CommandGroup` `asChild` | prop | `themelia-react-ui/base/command` | `render={<section />}` with items as `children` | The `heading` is rendered inside the composed element, before the children. |
201
+ | `CommandItem` `asChild` | prop | `themelia-react-ui/base/command` | `render={<a href="…" />}` with the label as `children` | The item's `id` is still applied to the composed element. |
202
+ | `CommandSeparator` `asChild` | prop | `themelia-react-ui/base/command` | `render={<hr />}` | |
203
+
204
+ ##### `base/sidebar`
205
+
206
+ | Removed | Kind | Import path | Use instead | Notes |
207
+ | --- | --- | --- | --- | --- |
208
+ | `useSidebar` | export | `themelia-react-ui/base/sidebar` | `useLayoutSidebar` from `themelia-react-ui/layout/sidebar` | |
209
+ | `SidebarTrigger` `variant` | prop | `themelia-react-ui/base/sidebar` | Nothing; the trigger is always the ghost icon button | It exposed the raw primitive's variants (`default`, `destructive`, `ghost`, `link`, `outline`, `secondary`). Style a different trigger through `className`, or render your own button and drive `SidebarProvider` through `open` / `onOpenChange`. |
210
+ | `SidebarTrigger` `size` values `default`, `xs`, `icon`, `icon-xs`, `icon-sm`, `icon-lg` | value | `themelia-react-ui/base/sidebar` | `size="sm" \| "md" \| "lg"` | `icon-sm` → `sm`, `icon` or `default` → `md`, `icon-lg` → `lg`; `xs` and `icon-xs` have no equivalent. `sm` and `lg` now name the icon-button scale (they were the raw text-button sizes). Default is `md`. |
211
+
212
+ ##### `base/navigation`
213
+
214
+ | Removed | Kind | Import path | Use instead | Notes |
215
+ | --- | --- | --- | --- | --- |
216
+ | `PaginationPrimitive` | export | `themelia-react-ui/base/navigation` | `PaginationRoot` | Same component; rename only. |
217
+ | `PaginationPrevious` `children` | prop | `themelia-react-ui/base/navigation` | `text` | The children were accepted and ignored. |
218
+ | `PaginationNext` `children` | prop | `themelia-react-ui/base/navigation` | `text` | The children were accepted and ignored. |
219
+ | `LanguageSwitcher` `onRenderLabel` | prop | `themelia-react-ui/base/navigation` | `renderLabel` | Same signature: `(locale: LocaleOption) => string`. |
220
+ | `LanguageSwitcher` `onSelect` | prop | `themelia-react-ui/base/navigation` | `onValueChange` | Same payload: the chosen locale's `value`. `onSelect` is now a type error rather than the native text-selection event. |
221
+ | `PageHeading` `badge` | prop | `themelia-react-ui/base/navigation` | `titleSuffix={<Badge tone="secondary">Beta</Badge>}` with `Badge` from `base/badge` | Same position, directly after the title on the title line. |
222
+ | `PageHeading` `badges` | prop | `themelia-react-ui/base/navigation` | `titleSuffix` with one `Badge` per entry; wrap several in `<Stack direction="horizontal" gap="sm" wrap>` | The separate `page-header--badges` row is no longer rendered; status, count and version badges sit after the title. |
223
+ | `PageHeading` `moreActionsLabel` | prop | `themelia-react-ui/base/navigation` | `strings={{ moreActions: '…' }}` | New `PageHeadingStrings` / `defaultPageHeadingStrings`. Same accessible name on the More actions trigger. |
224
+
225
+ ##### `base/action-menu`
226
+
227
+ | Removed | Kind | Import path | Use instead | Notes |
228
+ | --- | --- | --- | --- | --- |
229
+ | `ActionMenu` `density="table"` (`ActionMenuDensity` member `'table'`) | value | `themelia-react-ui/base/action-menu` | `density="compact"` | `table` gave menu rows a `min-height` one step below compact; the popup already rendered compact rows for it. |
230
+
231
+ ##### `primitives`
232
+
233
+ | Removed | Kind | Import path | Use instead | Notes |
234
+ | --- | --- | --- | --- | --- |
235
+ | `formatFileSize(value, 'en-US')` (locale as a string second argument) | value | `themelia-react-ui/primitives` | `formatFileSize(value, { locale: 'en-US' })` | The second argument is `FileSizeFormatOptions` only: `{ from, locale, unitLabels }`. |
236
+
237
+ ##### `services/actions`
238
+
239
+ | Removed | Kind | Import path | Use instead | Notes |
240
+ | --- | --- | --- | --- | --- |
241
+ | `toPageAction` | export | `themelia-react-ui/services/actions` | `toButtonAction` for `ActionButtons`; `toPageHeaderAction` for a page header's `primaryAction` and `secondaryActions` | Renamed: it adapted a resolved action for the removed `PageActions` ribbon. The returned shape is unchanged. |
242
+
243
+ ##### `base/forms-numeric`
244
+
245
+ | Removed | Kind | Import path | Use instead | Notes |
246
+ | --- | --- | --- | --- | --- |
247
+ | `DimensionsInput` `widthLabel` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ width: '…' }}` | |
248
+ | `DimensionsInput` `heightLabel` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ height: '…' }}` | |
249
+ | `DimensionsInput` `depthLabel` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ depth: '…' }}` | |
250
+ | `DimensionsInput` `unitLabel` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ unitLabel: '…' }}` | New string key, empty by default. As before, a non-empty value shows the unit sub-label in the vertical layout and names the unit selector. Same key as `WeightInput`. |
251
+ | `DimensionsInput` `unitPlaceholder` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ unitPlaceholder: '…' }}` | New string key, empty by default; empty falls back to `strings.unit`, as before. |
252
+ | `DimensionsInput` `widthPlaceholder` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ widthPlaceholder: '…' }}` | |
253
+ | `DimensionsInput` `heightPlaceholder` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ heightPlaceholder: '…' }}` | |
254
+ | `DimensionsInput` `depthPlaceholder` | prop | `themelia-react-ui/base/forms-numeric` | `strings={{ depthPlaceholder: '…' }}` | |
255
+
256
+ ##### `base/date-pickers`
257
+
258
+ | Removed | Kind | Import path | Use instead | Notes |
259
+ | --- | --- | --- | --- | --- |
260
+ | `DatePicker` `enableYearDropdown` | prop | `themelia-react-ui/base/date-pickers` | `yearSelection={{ enabled: true }}` | Same dropdown caption; `fromYear`/`toYear` bound it. |
261
+
262
+ #### Layouts and templates
263
+
264
+ Every layout import path below is also re-exported from the aggregate
265
+ `themelia-react-ui/layout`, so each removal applies to both paths.
266
+
267
+ ##### `layout/page`
268
+
269
+ | Removed | Kind | Import path | Use instead | Notes |
270
+ | --- | --- | --- | --- | --- |
271
+ | `PageActions` | export (component) | `themelia-react-ui/layout/page` | Pass page commands as `primaryAction` and `secondaryActions` on `Page` `header` or `PageHeader`. For a row of commands that is not a page header, use `ActionButtons` (and `ActionMenu` for overflow) from `themelia-react-ui/base/action-menu`. | The header owns treatment, overflow and narrow-width collapse, so `display`, `breakpoint`, `maxInlineActions`, `renderAction` and per-action `placement` have no replacement. `display="auto"` is gone with it: PageHeader collapses commands into More actions below 40rem of its own width. |
272
+ | `PageActionsProps` | type | `themelia-react-ui/layout/page` | `PageHeaderProps` (`primaryAction`, `secondaryActions`, `maxVisibleSecondaryActions`) | |
273
+ | `PageAction` | type | `themelia-react-ui/layout/page` | `PageHeaderAction` | `tone`, `buttonStyle`, `size`, `group`, `placement` and `element` have no equivalent: a command states its role (`primaryAction`, an ordered secondary action, or `destructive: true`). `visible`, `disabled`, `loading`, `icon`, `href`, `target`, `rel`, `external` and `onClick` carry over. |
274
+ | `PageActionsDisplay` | type | `themelia-react-ui/layout/page` | Nothing | Only typed `PageActions` `display`. |
275
+ | `PageActionContext` | type | `themelia-react-ui/layout/page` | Nothing | Only typed `PageActions` `renderAction`. |
276
+ | `PageActionsStrings` | type | `themelia-react-ui/layout/page` | `PageHeaderStrings` (`moreActions`) | |
277
+ | `defaultPageActionsStrings` | export | `themelia-react-ui/layout/page` | `defaultPageHeaderStrings` | `menuLabel` becomes `moreActions`. |
278
+ | `titleBadges` on `PageHeaderProps` (and `Page` `header`) | prop | `themelia-react-ui/layout/page` | `slots.titleSuffix` with `Badge` from `themelia-react-ui/base/badge`: `slots: { titleSuffix: <Badge tone="success">Paid</Badge> }`. Wrap several in `<Stack direction="horizontal" gap="sm" wrap>`. | A badge that set no `tone` rendered `secondary`; pass `tone="secondary"` to keep it. The `page-header--badges` wrapper is no longer rendered. |
279
+ | `PageTitleBadge` | type | `themelia-react-ui/layout/page` (declared, not exported by name) | `BadgeProps` from `themelia-react-ui/base/badge` | Only typed `titleBadges`. |
280
+ | `titleIcon` on `PageHeaderProps` | prop | `themelia-react-ui/layout/page` | Put the glyph in a React-node `title`, or in `slots.beforeTitle` / `slots.titleSuffix`. | Title icons were decorative by default; ordinary titles need none. The `page-header--title-icon` element is no longer rendered. |
281
+ | `titleIconHref` on `PageHeaderProps` | prop | `themelia-react-ui/layout/page` | A link composed in a slot callback through its `renderLink` argument: `slots: { titleSuffix: ({ renderLink }) => renderLink({ href, children }) }`. | The `page-header--title-icon-link` element is no longer rendered. |
282
+ | `onTitleIconClick` on `PageHeaderProps` | prop | `themelia-react-ui/layout/page` | A command: `primaryAction` or an entry in `secondaryActions`; or a control in `slots.actions`. | The `page-header--title-icon-button` element is no longer rendered. |
283
+ | `titleIconLabel` on `PageHeaderProps` | prop | `themelia-react-ui/layout/page` | Nothing | Named the removed title-icon control. |
284
+ | `titleIconClassName` on `PageHeaderProps` | prop | `themelia-react-ui/layout/page` | Nothing | Styled the removed title-icon control. |
285
+ | `actions` on `PageHeaderProps` (and `Page` `header`) | prop | `themelia-react-ui/layout/page` | Controls that are not commands (a period select, a scope switcher): the `Page` `toolbar` prop. To add something beside the command row: `slots.actions` as a callback, `({ defaultContent }) => <>{control}{defaultContent}</>`. | With a callback the region is yours: the header no longer end-aligns it for you. `actions` on `AsideNavShell` and `WorkspaceRecordHeader` is unchanged. |
286
+ | `back` on `PageHeaderSlots` | prop | `themelia-react-ui/layout/page` | `backHref` (a link through `renderLink`) or `onBack` (a button), with `strings.back` for its name. | A fully custom back control can go in `slots.beforeTitle`. |
287
+ | `afterHeader` on `PageProps` | prop | `themelia-react-ui/layout/page` | `toolbar` | Same region and position; it was only read when `toolbar` was absent. |
288
+ | `PageHeader` `backLabel` (and `Page` `header.backLabel`) | prop | `themelia-react-ui/layout/page` | `strings={{ back: '…' }}` (`header: { strings: { back: '…' } }` on `Page`) | Same accessible name on the back link or button. |
289
+ | `PageHeader` `moreActionsLabel` | prop | `themelia-react-ui/layout/page` | `strings={{ moreActions: '…' }}` | — |
290
+ | `PageHeaderTabs` `label` (`tabs.label`) | prop | `themelia-react-ui/layout/page` | `strings={{ sections: '…' }}` on the header | Names the tab list. `strings` sits beside `tabs`, not inside it. |
291
+ | `PageHeaderTabs` `moreLabel` (`tabs.moreLabel`) | prop | `themelia-react-ui/layout/page` | `strings={{ moreSections: '…' }}` on the header | Names the More menu that holds tabs that do not fit. |
292
+ | `Page` `slots.aside` | prop | `themelia-react-ui/layout/page` | `aside` | The slot only took precedence over the prop; same region. |
293
+ | `Page` `slots.toolbar` | prop | `themelia-react-ui/layout/page` | `toolbar` | Same region, above the body and aside. |
294
+ | `Page` `slots.empty` | prop | `themelia-react-ui/layout/page` | `emptySlot` | Same replacement of the default empty state. |
295
+
296
+ ##### `layout/settings`
297
+
298
+ | Removed | Kind | Import path | Use instead | Notes |
299
+ | --- | --- | --- | --- | --- |
300
+ | `SettingsShell` | export (component) | `themelia-react-ui/layout/settings` | `AsideNavShell` | The same component under its one name; props, strings and the `aside-nav-shell--*` hooks are unchanged. |
301
+ | `SettingsShellProps` | type | `themelia-react-ui/layout/settings` | `AsideNavShellProps` | |
302
+
303
+ ##### `layout/workspace`
304
+
305
+ | Removed | Kind | Import path | Use instead | Notes |
306
+ | --- | --- | --- | --- | --- |
307
+ | `ariaLabel` on `WorkspaceLayoutProps` | prop | `themelia-react-ui/layout/workspace` | The native `aria-label` attribute | Same effect: it names the workspace as a group, or the content region when `mainAs="section"`. |
308
+ | Rendered elements as `secondaryActions` on `WorkspaceRecordHeaderProps` | value | `themelia-react-ui/layout/workspace` | Command objects: `secondaryActions={[{ label: 'Preview', onClick }]}` (`readonly PageHeaderAction[]`). For controls that are not commands, use `actions`. | The prop type is now `readonly PageHeaderAction[]` only. The separate "Secondary actions" cluster is no longer rendered. |
309
+ | `secondaryActionsLabel` in `WorkspaceRecordHeaderStrings` (and `defaultWorkspaceRecordHeaderStrings`) | string | `themelia-react-ui/layout/workspace` | Nothing | Named the removed element cluster. `actionsLabel` still names the `actions` cluster. |
310
+ | `currentLabel` in `WorkspaceNavStrings` (and `defaultWorkspaceNavStrings`) | string | `themelia-react-ui/layout/workspace` | Nothing | The current entry carries `aria-current` (`page` on a link, `true` on a callback row), which assistive technology announces in the reader's language. Delete the key from any `strings` override. |
311
+
312
+ ##### `layout/sidebar`
313
+
314
+ | Removed | Kind | Import path | Use instead | Notes |
315
+ | --- | --- | --- | --- | --- |
316
+ | `handle` as the identity of a `SidebarNavigationRailItem` | value | `themelia-react-ui/layout/sidebar` | `id` on every rail item | `id` is required. `value` and `onValueChange` on `SidebarNavigationRail` report it. An item that had only `handle` needs `id` set to the same string. |
317
+ | `showBadges` on `AppSidebar`, `SidebarNavigation`, `SidebarGroupedNavigation`, `SidebarNavigationFooter` | prop | `themelia-react-ui/layout/sidebar` | Leave `badge` off the items and omit `liveBadges` | Counts come from the navigation data only. |
318
+ | `AppSidebar` `logoClassName` | prop | `themelia-react-ui/layout/sidebar` | Style the node passed as `logo` / `collapsedLogo`; for the wrapper itself, compose `<SidebarLogo className="…" />` in `slots.header` | It only reached the wrapper around that node. No caller in the repository. |
319
+
320
+ ##### Templates
321
+
322
+ The templates are source assets shipped in the package's `templates` folder,
323
+ not an import entry.
324
+
325
+ | Removed | Kind | Import path | Use instead | Notes |
326
+ | --- | --- | --- | --- | --- |
327
+ | `UserPermissionsAdminTemplate` | export (alias) | `templates/index.ts` in `themelia-react-ui/templates` | `UserPermissionsTemplate` | Same component. |
328
+ | `AnalyticsOperationsAdminTemplate` | export (alias) | `templates/index.ts` in `themelia-react-ui/templates` | `AnalyticsOperationsTemplate` | Same component. The props type in the template file keeps its name. |
329
+
330
+ The templates themselves changed to the current API, so a copy taken from 2.x
331
+ needs the same edits: `useLayoutSidebar` from
332
+ `themelia-react-ui/layout/sidebar` replaces `useSidebar` from
333
+ `themelia-react-ui/base/sidebar`; title badges are `Badge`s in
334
+ `slots.titleSuffix`; the analytics period select moved from the header's
335
+ `actions` to the Page `toolbar`.
336
+
337
+ ##### `layout/app-shell`
338
+
339
+ | Removed | Kind | Import path | Use instead | Notes |
340
+ | --- | --- | --- | --- | --- |
341
+ | `TopbarSidebarLayout` / `AppLayout` `slots.logo`, `slots.sidebar`, `slots.sidebarTrigger`, `slots.headerActions` | prop | `themelia-react-ui/layout/app-shell` | The direct props `logo`, `sidebar`, `sidebarTrigger`, `headerActions` | `slots` keeps the regions with no direct prop: `header`, `headerStart`, `headerCenter`, `headerEnd`, `secondarySidebar`, `aside`. |
342
+ | `SidebarInsetLayout` / `AppLayout` (`sidebar`, `inset`) `slots.sidebar`, `slots.sidebarTrigger` | prop | `themelia-react-ui/layout/app-shell` | `sidebar`, `sidebarTrigger` | `slots` keeps `toolbar`, `toolbarStart`, `toolbarEnd`, `secondarySidebar`, `aside`. |
343
+ | `StackedLayout` / `AppLayout` (`stacked`) `slots.logo`, `slots.nav` | prop | `themelia-react-ui/layout/app-shell` | `logo`, `nav` | `slots` keeps `header`, `headerEnd`, `subheader`, `aside`. |
344
+ | `slots.content` on all three shells | prop | `themelia-react-ui/layout/app-shell` | `children` | It only replaced `children`. |
345
+ | `TopbarSidebarLayout` / `StackedLayout` `headerHeight` | prop | `themelia-react-ui/layout/app-shell` | `style={{ '--shell-header-height': '5rem' }}` | The prop only set this root on the shell. Set it at `:root` or a theme scope to size every shell. |
346
+ | `TopbarSidebarLayout` / `SidebarInsetLayout` `sidebarWidth` | prop | `themelia-react-ui/layout/app-shell` | `style={{ '--shell-sidebar-width': '18rem' }}` | The prop only set this root on the shell. `secondarySidebarWidth` and `asideWidth` stay: no root sizes those regions alone. |
347
+
348
+ ##### `layout/auth`
349
+
350
+ | Removed | Kind | Import path | Use instead | Notes |
351
+ | --- | --- | --- | --- | --- |
352
+ | `AuthShell` `socialDivider` | prop | `themelia-react-ui/layout/auth` | `strings={{ socialDivider: '…' }}` | Text only; the divider is a label between two rules. |
353
+ | `AuthShell` `cardClassName`, `cardContentClassName`, `footerClassName` | prop | `themelia-react-ui/layout/auth` | `variant` for the card surface; style the content passed as `children`, `cardFooter` and `postCard` | They reached the card's own frame and inset and the row under the card. No caller in the repository. `AuthCard` keeps its class slots for a composed layout. |
354
+
355
+ ##### `layout/settings`, `layout/workspace`
356
+
357
+ | Removed | Kind | Import path | Use instead | Notes |
358
+ | --- | --- | --- | --- | --- |
359
+ | `AsideNavShell` `moreActionsLabel` | prop | `themelia-react-ui/layout/settings` | `strings={{ moreActionsLabel: '…' }}` | Same accessible name. |
360
+ | `WorkspaceRecordHeader` `moreActionsLabel` | prop | `themelia-react-ui/layout/workspace` | `strings={{ moreActionsLabel: '…' }}` | Same accessible name. |
361
+
362
+ #### Blocks
363
+
364
+ ##### `blocks/data-display`
365
+
366
+ The metadata names were re-exports of the base family.
367
+
368
+ | Removed | Kind | Import path | Use instead | Notes |
369
+ | --- | --- | --- | --- | --- |
370
+ | `MetadataList` | export | `themelia-react-ui/blocks/data-display` | `MetadataList` from `themelia-react-ui/base/metadata-list` | Same component; only the import path changes. |
371
+ | `MetadataValue` | export | `themelia-react-ui/blocks/data-display` | `MetadataValue` from `themelia-react-ui/base/metadata-list` | Same component; only the import path changes. |
372
+ | `MetadataDensity` | type | `themelia-react-ui/blocks/data-display` | `MetadataDensity` from `themelia-react-ui/base/metadata-list` | |
373
+ | `MetadataInlineListItem` | type | `themelia-react-ui/blocks/data-display` | `MetadataInlineListItem` from `themelia-react-ui/base/metadata-list` | |
374
+ | `MetadataLayout` | type | `themelia-react-ui/blocks/data-display` | `MetadataLayout` from `themelia-react-ui/base/metadata-list` | |
375
+ | `MetadataListItem` | type | `themelia-react-ui/blocks/data-display` | `MetadataListItem` from `themelia-react-ui/base/metadata-list` | |
376
+ | `MetadataListProps` | type | `themelia-react-ui/blocks/data-display` | `MetadataListProps` from `themelia-react-ui/base/metadata-list` | |
377
+ | `MetadataValueDescriptor` | type | `themelia-react-ui/blocks/data-display` | `MetadataValueDescriptor` from `themelia-react-ui/base/metadata-list` | |
378
+ | `MetadataValueKind` | type | `themelia-react-ui/blocks/data-display` | `MetadataValueKind` from `themelia-react-ui/base/metadata-list` | |
379
+ | `MetadataValueProps` | type | `themelia-react-ui/blocks/data-display` | `MetadataValueProps` from `themelia-react-ui/base/metadata-list` | |
380
+
381
+ ##### `blocks/analytics` and `blocks/analytics/charts`
382
+
383
+ | Removed | Kind | Import path | Use instead | Notes |
384
+ | --- | --- | --- | --- | --- |
385
+ | `Metric` prop `colorScheme` | prop | `themelia-react-ui/blocks/analytics/charts` | `tone` | Map the value: `default` → omit the prop (or `tone="neutral"`), `primary` → `primary`, `success` → `success`, `warning` → `warning`, `info` → `info`, `danger` → `destructive`. Without `tone`, bordered metrics stay neutral and the `colored` variant keeps primary progress, as before. |
386
+ | `MetricGrid` prop `colorScheme` | prop | `themelia-react-ui/blocks/analytics/charts` | `tone` | Same value mapping as `Metric`. |
387
+ | `MetricColorScheme` | type | `themelia-react-ui/blocks/analytics` and `themelia-react-ui/blocks/analytics/charts` | `SemanticTone` from `themelia-react-ui/component-vocabulary` | `danger` is spelled `destructive` in `SemanticTone`; `default` is `neutral`. |
388
+
389
+ ##### `blocks/commerce`
390
+
391
+ | Removed | Kind | Import path | Use instead | Notes |
392
+ | --- | --- | --- | --- | --- |
393
+ | `CartSummary` | export | `themelia-react-ui/blocks/commerce` | `CartSummaryCard` | Alias of the same component. |
394
+ | `CartSummaryProps` | type | `themelia-react-ui/blocks/commerce` | `CartSummaryCardProps` | Alias of the same type. |
395
+ | `DiscountStack` | export | `themelia-react-ui/blocks/commerce` | `DiscountStackPreview` | Alias of the same component. |
396
+ | `DiscountStackProps` | type | `themelia-react-ui/blocks/commerce` | `DiscountStackPreviewProps` | Alias of the same type. |
397
+ | `RefundStatus` | export | `themelia-react-ui/blocks/commerce` | `RefundStatusCard` | Alias of the same component. |
398
+ | `RefundStatusProps` | type | `themelia-react-ui/blocks/commerce` | `RefundStatusCardProps` | Alias of the same type. |
399
+ | `PaymentMethodCard` | export | `themelia-react-ui/blocks/commerce` | `<PaymentMethod variant="row" … />` | It was `PaymentMethod` with `variant` defaulting to `row`. Pass `variant="row"` explicitly; an explicit `variant="card"` on the old name becomes plain `PaymentMethod`. |
400
+ | `PaymentMethodCardProps` | type | `themelia-react-ui/blocks/commerce` | `PaymentMethodProps` | Alias of the same type. |
401
+ | `Discount.type` | value | `themelia-react-ui/blocks/commerce` (`DiscountStackPreview` `discounts[]`) | `kind` | `kind` takes the same text (or a node). `badge` still draws it as a chip. The fallback row key is now the label and position. |
402
+ | `CartLineItem.name` | value | `themelia-react-ui/blocks/commerce` (`CartSummaryCard` `items[]`) | `title` | `title` is now required. A line without any name used to show its `id`; pass the text you want. |
403
+ | `CartLineItem.productTitle` | value | `themelia-react-ui/blocks/commerce` (`CartSummaryCard` `items[]`) | `title` | It used to win over `title` and `name` when several were set. |
404
+ | `CartLineItem.imageUrl` | value | `themelia-react-ui/blocks/commerce` (`CartSummaryCard` `items[]`) | `imageSrc` | |
405
+ | `CartLineItem.src` | value | `themelia-react-ui/blocks/commerce` (`CartSummaryCard` `items[]`) | `imageSrc` | |
406
+ | `CartLineItem.url` | value | `themelia-react-ui/blocks/commerce` (`CartSummaryCard` `items[]`) | `imageSrc` | |
407
+ | `InventorySectionMetric.tone` | value | `themelia-react-ui/blocks/commerce` | Nothing: delete it | It was never rendered. The title badge states the stock status. |
408
+ | `OrderStatusStrings.statusLabel` | string | `themelia-react-ui/blocks/commerce` (`OrderStatusCard` `strings`) | Nothing: delete it | Not rendered; the title badge states the status (`strings.status`). |
409
+ | `OrderStatusStrings.latestEvent` | string | `themelia-react-ui/blocks/commerce` (`OrderStatusCard` `strings`) | Nothing: delete it | Not rendered; the timeline lists the events. |
410
+ | `OrderStatusStrings.currentStep` | string | `themelia-react-ui/blocks/commerce` (`OrderStatusCard` `strings`) | Nothing: delete it | Not rendered; the current step is marked with `aria-current`. Completed and upcoming steps use `completedStep` and `upcomingStep`. |
411
+ | `LoyaltyPointsStrings.tier` | string | `themelia-react-ui/blocks/commerce` (`LoyaltyPoints` `strings`) | The `tier` prop | `<LoyaltyPoints tier="Gold" />`. No tier, no chip. |
412
+ | `AddressCard` `name` | prop | `themelia-react-ui/blocks/commerce` | `address={{ name, … }}` | `address` is the exported `OrderAddress`, the shape `OrderCustomer` takes. `name` is optional there. |
413
+ | `AddressCard` `line1` | prop | `themelia-react-ui/blocks/commerce` | `address={{ line1, … }}` | |
414
+ | `AddressCard` `line2` | prop | `themelia-react-ui/blocks/commerce` | `address={{ line2, … }}` | |
415
+ | `AddressCard` `city` | prop | `themelia-react-ui/blocks/commerce` | `address={{ city, … }}` | |
416
+ | `AddressCard` `region` | prop | `themelia-react-ui/blocks/commerce` | `address={{ region, … }}` | |
417
+ | `AddressCard` `postalCode` | prop | `themelia-react-ui/blocks/commerce` | `address={{ postalCode, … }}` | |
418
+ | `AddressCard` `country` | prop | `themelia-react-ui/blocks/commerce` | `address={{ country, … }}` | |
419
+ | `AddressCard` `phone` | prop | `themelia-react-ui/blocks/commerce` | `address={{ phone, … }}` | Still one click-to-call link under the lines. |
420
+
421
+ ##### `blocks/timelines`
422
+
423
+ | Removed | Kind | Import path | Use instead | Notes |
424
+ | --- | --- | --- | --- | --- |
425
+ | `ChangelogTimelineStrings.title` | string | `themelia-react-ui/blocks/timelines` (`ChangelogTimeline` `strings`) | Nothing: delete it | Not rendered; the composing surface supplies the title. |
426
+ | `MilestonesTimelineStrings.title` | string | `themelia-react-ui/blocks/timelines` (`MilestonesTimeline` `strings`) | Nothing: delete it | Not rendered; the composing surface supplies the title. |
427
+
428
+ ##### `blocks/ai`
429
+
430
+ | Removed | Kind | Import path | Use instead | Notes |
431
+ | --- | --- | --- | --- | --- |
432
+ | `AiArtifactStrings.expandAria` | string | `themelia-react-ui/blocks/ai` (`AiArtifact` `strings`) | Nothing: delete it | Not rendered; the artifact header has no expand control. |
433
+ | `AiSourcesStrings.title` | string | `themelia-react-ui/blocks/ai` (`AiSources` `strings`) | `formatTitle: (count) => string` | The `'{{count}} sources'` template becomes a function, for example `` formatTitle: (count) => `${count} fuentes` ``. The default writes "1 source" and "N sources". |
434
+
435
+ #### Data features
436
+
437
+ ##### `features/table`
438
+
439
+ | Removed | Kind | Import path | Use instead | Notes |
440
+ | --- | --- | --- | --- | --- |
441
+ | `DataTable` `enablePagination` | prop | `themelia-react-ui/features/table` | Delete the prop | It had no effect. The pagination footer renders when `pagination` reports more than one page. |
442
+ | `DataTable` `manualPagination` | prop | `themelia-react-ui/features/table` | Delete the prop; pass `pagination` and `onPageChange` | It had no effect. The table never slices `data`; paging is always the app's. |
443
+ | `DataTable` `debugMode` | prop | `themelia-react-ui/features/table` | Delete the prop | It had no effect. |
444
+ | `DataTable` `initialState.pagination` | prop | `themelia-react-ui/features/table` | Delete the key; pass `pagination` | It had no effect. `initialState.sorting`, `rowSelection`, `columnVisibility` and `columnFilters` are unchanged. |
445
+ | `DataTableHeader` `headerClassName` | prop | `themelia-react-ui/features/table` | `className` | Only on the standalone `DataTableHeader` part. `DataTable`'s own `headerClassName` slot prop is unchanged. |
446
+ | `DataTable` `defaultSorting` | prop | `themelia-react-ui/features/table` | `initialState={{ sorting: [...] }}` | Same value, read once on mount. A controlled `sorting` prop still wins. |
447
+ | `DataTable` `defaultColumnVisibility` | prop | `themelia-react-ui/features/table` | `initialState={{ columnVisibility: {...} }}` | Same value. With `storageKey`, `columnVisibilityPrecedence` now compares the stored value against `initialState.columnVisibility`. |
448
+ | `DataTable` `enableFiltering` | prop | `themelia-react-ui/features/table` | `filterColumn` | Naming the column shows the search input and filters the loaded rows. Delete `enableFiltering`. Without `filterColumn` the table filters nothing itself, so `initialState.columnFilters` only takes effect once `filterColumn` is set. |
449
+ | `DataTable` `filterPlaceholder` | prop | `themelia-react-ui/features/table` | `strings={{ filter: { searchPlaceholder: '…' } }}` | The same string also names the input for assistive technology. |
450
+ | `DataTableFilterBar` `filterPlaceholder` | prop | `themelia-react-ui/features/table` | `strings.filter.searchPlaceholder` | `DataTableFilterBar` takes a complete `DataTableStrings` object: spread `defaultDataTableStrings` and override `filter.searchPlaceholder`. |
451
+ | `DataTable` `emptyStateMessage` | prop | `themelia-react-ui/features/table` | `strings={{ emptyState: { message: '…' } }}` | `emptyStateAction` is unchanged. In `DataView`, pass it inside `table={{ strings: { emptyState: { message } } }}`. |
452
+ | `DataTableBody` `emptyStateMessage` | prop | `themelia-react-ui/features/table` | `strings.emptyState.message` | Only for apps that compose `DataTableBody` themselves. |
453
+ | `DataTable` `rowActionsMenuLabel` as a string | value | `themelia-react-ui/features/table` | `strings={{ actions: { menuLabel: '…' } }}` | The function form stays: `rowActionsMenuLabel={(row) => \`Actions for ${row.name}\`}` names each row's menu from its record, which a single string cannot. |
454
+ | `DataTable` `enableSubRowSelection` | prop | `themelia-react-ui/features/table` | Delete the prop | `DataTable` has no sub-row or expansion props, so nothing acted on it. |
455
+
456
+ ##### `features/filters`
457
+
458
+ | Removed | Kind | Import path | Use instead | Notes |
459
+ | --- | --- | --- | --- | --- |
460
+ | `FilterStrings.calendar.dateSelected` | string | `themelia-react-ui/features/filters` | Delete the key | No reader. A complete `FilterStrings` object that still sets it is a type error. |
461
+ | `FilterStrings.calendar.selectedEndDate` | string | `themelia-react-ui/features/filters` | Delete the key | No reader. |
462
+ | `FilterStrings.calendar.customRange` | string | `themelia-react-ui/features/filters` | Delete the key | No reader. |
463
+ | `FilterConfig.datePickerConfig.fullWidth` | prop | `themelia-react-ui/features/filters` | Delete the key | It had no effect; the date editor always fills its region. |
464
+ | `FilterOperatorSelect` `segmentResetClass` | prop | `themelia-react-ui/features/filters` | `segmentResetClassName` | Same value, new name. |
465
+ | RANGE filter: a single query value read as an exact match | value | `themelia-react-ui/features/filters` (`parseFiltersFromQuery`) | Send both bounds (`?price=150&price=150`), or add the operator (`?price=150&price__op=equals`) | `?price=150` on a RANGE filter with no configured operator used to parse as `{ operator: 'equals', value: ['150', '150'] }`. It now parses as the lower bound of the filter's own operator: `{ operator: 'between', value: ['150', ''] }`. Saved URLs with one bare value change meaning. |
466
+
467
+ ##### `features/combobox`
468
+
469
+ | Removed | Kind | Import path | Use instead | Notes |
470
+ | --- | --- | --- | --- | --- |
471
+ | `Combobox` `selectedValue` | prop | `themelia-react-ui/features/combobox` | `value` | Same type (`T \| null`). `defaultValue` seeds an uncontrolled field. |
472
+ | `Combobox` `onSelectedValueChange` | prop | `themelia-react-ui/features/combobox` | `onValueChange` | Same signature. |
473
+ | `MultiCombobox` `selectedValues` | prop | `themelia-react-ui/features/combobox` | `values` | Same type (`T[]`). `defaultValues` seeds an uncontrolled field. |
474
+ | `MultiCombobox` `onSelectedValuesChange` | prop | `themelia-react-ui/features/combobox` | `onValuesChange` | Same signature. With `applyButton` it still fires on Apply only. |
475
+ | `AsyncResourceCombobox` `hasMore` | prop | `themelia-react-ui/features/combobox` | Raise `limit`; or use `Combobox` with your own `items`, `hasMore` and `onLoadMore` | The component owns its list and replaces it on each request, so a page could never be appended. |
476
+ | `AsyncResourceCombobox` `onLoadMore` | prop | `themelia-react-ui/features/combobox` | As for `hasMore`: raise `limit`; or use `Combobox` with your own `items`, `hasMore` and `onLoadMore` | |
477
+ | `AsyncResourceCombobox` `loadingMore` | prop | `themelia-react-ui/features/combobox` | As for `hasMore`: raise `limit`; or use `Combobox` with your own `items`, `hasMore` and `onLoadMore` | `Combobox` and `MultiCombobox` keep all three props. |
478
+ | `Combobox` / `AsyncResourceCombobox` `closeOnSelect` | prop | `themelia-react-ui/features/combobox` | Delete the prop | The single combobox never read it; it always closes on selection. `MultiCombobox` keeps `closeOnSelect`. |
479
+ | `Combobox` / `AsyncResourceCombobox` `applyButton`, `onApply`, `onCancel` | prop | `themelia-react-ui/features/combobox` | Delete the props | Only `MultiCombobox` renders the Apply and Cancel footer; the props are now on `MultiComboboxProps` only. |
480
+ | `MultiCombobox` `clearable` | prop | `themelia-react-ui/features/combobox` | Delete the prop | `MultiCombobox` ignored it; each chip has its own remove control. `Combobox` and `AsyncResourceCombobox` keep `clearable`. |
481
+ | `Combobox` / `MultiCombobox` `showListContent` | prop | `themelia-react-ui/features/combobox` | Nothing for the components; `useComboboxCore({ showListContent })` for a headless build | It was a seam for this package's async wrappers. `AsyncResourceCombobox` and `SuggestionsCombobox` still use it internally. |
482
+ | `closeOnSelect`, `applyButton`, `onApply`, `onCancel`, `clearable`, `showListContent` on `ComboboxSharedProps` | type | `themelia-react-ui/features/combobox` | `MultiComboboxProps` for the first four, `ComboboxProps` for `clearable`, `ComboboxListControl` for `showListContent` | `ComboboxSharedProps` now holds only what both components and the headless hook share. `UseComboboxCoreOptions` extends `ComboboxSharedProps` and the new `ComboboxListControl`. |
483
+
484
+ ##### `features/questionnaire`
485
+
486
+ | Removed | Kind | Import path | Use instead | Notes |
487
+ | --- | --- | --- | --- | --- |
488
+ | `Questionnaire` `onQuestionChange` | prop | `themelia-react-ui/features/questionnaire` | `onQuestionIdChange` | Same signature (`(id: string) => void`). |
489
+
490
+ ##### `features/products`
491
+
492
+ The eight overview regions and the two row menus are no longer exported;
493
+ `ProductOverview` and the variant and option surfaces render them. Their props
494
+ types (`ProductDetailsCardProps`, `ProductVariantActionMenuStrings` and so on)
495
+ are still exported, because the public props are typed with them.
496
+
497
+ | Removed | Kind | Import path | Use instead | Notes |
498
+ | --- | --- | --- | --- | --- |
499
+ | `ProductContractOverview` | export | `themelia-react-ui/features/products` | `<ProductOverview contract={…} />` | Pass the same props object. Add custom content through `ProductOverview` `slots`. |
500
+ | `ProductDetailsCard` | export | `themelia-react-ui/features/products` | `<ProductOverview details={…} />` | |
501
+ | `ProductOperationsCard` | export | `themelia-react-ui/features/products` | `<ProductOverview operations={…} />` | |
502
+ | `ProductOptionsSummary` | export | `themelia-react-ui/features/products` | `<ProductOverview options={…} />` | |
503
+ | `ProductPoliciesCard` | export | `themelia-react-ui/features/products` | `<ProductOverview policies={…} />` | |
504
+ | `ProductQuotePreviewCard` | export | `themelia-react-ui/features/products` | `<ProductOverview quote={…} />` | |
505
+ | `ProductReadinessCard` | export | `themelia-react-ui/features/products` | `<ProductOverview readiness={…} />` | |
506
+ | `ProductStructureCard` | export | `themelia-react-ui/features/products` | `<ProductOverview structure={…} />` | |
507
+ | `ProductOptionActionMenu` | export | `themelia-react-ui/features/products` | `renderOptionActions` on `ProductOptionsMatrix`, or on `ProductOverview` `options`, composing `ActionMenu` from `themelia-react-ui/base/action-menu` | The default menu still renders when `renderOptionActions` is not set. |
508
+ | `ProductVariantActionMenu` | export | `themelia-react-ui/features/products` | `renderVariantActions` on `ProductVariantsTable`, `ProductVariantsBulkTable`, `ProductVariantsManager` or `ProductVariantDetails`, composing `ActionMenu` from `themelia-react-ui/base/action-menu` | The default menu still renders when `renderVariantActions` is not set. |
509
+ | `ProductVariantOptionField.value` | prop | `themelia-react-ui/features/products` | `defaultValue.options` or `value.options` on `ProductVariantEditor` | `optionFields={[{ id: 'size', label: 'Size', value: 'M' }]}` becomes `optionFields={[{ id: 'size', label: 'Size' }]}` with `defaultValue={{ options: { size: 'M' } }}`. The field value is no longer added to the submitted value. |
510
+
511
+ ##### `features/resource`
512
+
513
+ Route shells are `Page` from `themelia-react-ui/layout/page`. The family keeps
514
+ `ResourceActionBar`, `ResourceDetailsSection` and `ResourceEmptyState`.
515
+
516
+ | Removed | Kind | Import path | Use instead | Notes |
517
+ | --- | --- | --- | --- | --- |
518
+ | `ResourceHeader` | export | `themelia-react-ui/features/resource` | `Page` `header` (`PageHeaderProps`), or `PageHeader` for an embedded header, from `themelia-react-ui/layout/page` | `title`, `description`, `primaryAction`, `secondaryActions`, `maxVisibleSecondaryActions`, `moreActionsLabel` keep their names. `badges` moves to `header.slots.titleSuffix`; `metadata` to `header.slots.afterDescription`; `eyebrow` to `header.slots.beforeTitle`. |
519
+ | `ResourceIndexShell` | export | `themelia-react-ui/features/resource` | `Page` from `themelia-react-ui/layout/page` | `title`, `description` and commands move into `header`. `toolbar`, `loading`, `error`, `onRetry`, `emptySlot` and `slots.loading` / `empty` / `error` have the same names on `Page`. |
520
+ | `ResourceShowShell` | export | `themelia-react-ui/features/resource` | `Page` from `themelia-react-ui/layout/page` with `aside` | `slots.aside` becomes the `aside` prop. |
521
+ | `TabbedResourceShell` | export | `themelia-react-ui/features/resource` | `Page` from `themelia-react-ui/layout/page` with `header.tabs` | `tabs`, `activeTab`, `defaultActiveTab` and `onTabChange` move into `header.tabs`; check `PageHeaderTabs` for the exact field names. |
522
+ | `ResourceHeaderProps` | type | `themelia-react-ui/features/resource` | `PageHeaderProps` from `themelia-react-ui/layout/page` | |
523
+ | `ResourceIndexShellProps` | type | `themelia-react-ui/features/resource` | `PageProps` from `themelia-react-ui/layout/page` | |
524
+ | `ResourceShowShellProps` | type | `themelia-react-ui/features/resource` | `PageProps` from `themelia-react-ui/layout/page` | |
525
+ | `TabbedResourceShellProps` | type | `themelia-react-ui/features/resource` | `PageProps` from `themelia-react-ui/layout/page` with `PageHeaderTabs` | |
526
+ | `ResourceHeaderCommandProps` | type | `themelia-react-ui/features/resource` | The command fields of `PageHeaderProps` | Existed only for the removed header and shells. |
527
+ | `ResourceShellSlots` | type | `themelia-react-ui/features/resource` | `PageSlots` from `themelia-react-ui/layout/page` | Existed only for the removed shells. |
528
+ | `defaultResourceStrings` | export | `themelia-react-ui/features/resource` | `Page` `strings` | Loading, empty, error, retry and tab copy now belongs to `Page`. |
529
+ | `ResourceStrings` | type | `themelia-react-ui/features/resource` | `PageStrings` from `themelia-react-ui/layout/page` | |
530
+ | `ResourceEmptyState` `ariaLabel` | prop | `themelia-react-ui/features/resource` | `aria-label` | Same value, native attribute name. |
531
+
532
+ ##### `features/resource-assignment`
533
+
534
+ | Removed | Kind | Import path | Use instead | Notes |
535
+ | --- | --- | --- | --- | --- |
536
+ | `SharedResourceCardStrings.changeAction` | string | `themelia-react-ui/features/resource-assignment` | `assignAction` for the empty-state action; `selector.actionLabel` for the action on an assigned resource | An overridden `changeAction` used to name the empty-state action when `assignAction` was not set. That fallback is gone, and nothing else read the key. |
537
+
538
+ ##### `features/sync`
539
+
540
+ The `themelia-react-ui/features/sync` entry no longer exists.
541
+
542
+ | Removed | Kind | Import path | Use instead | Notes |
543
+ | --- | --- | --- | --- | --- |
544
+ | `SyncRangeDialogForm` | export | `themelia-react-ui/features/sync` | `SchemaForm` from `themelia-react-ui/features/schema-form`, with a `radio-cards` field for the window and a `checkbox-cards` field for the options | Map the values in `onSubmit`, for example `{ hours: Number(values.hours), options: values.options }`. Wrap it in `ActionDialog` for a dialog. The schema-form catalogue page has the full schema. |
545
+ | `SyncRangeDialogFormProps` | type | `themelia-react-ui/features/sync` | `SchemaFormProps` from `themelia-react-ui/features/schema-form` | |
546
+ | `SyncRangeDialogFormSubmit` | type | `themelia-react-ui/features/sync` | Your own payload type, built in `onSubmit` | |
547
+ | `SyncRangeDialogFormValues` | type | `themelia-react-ui/features/sync` | `SchemaFormValues` from `themelia-react-ui/features/schema-form` | |
548
+ | `defaultSyncRangeDialogFormStrings` | export | `themelia-react-ui/features/sync` | Labels and descriptions on the `SchemaForm` field definitions | |
549
+ | `SyncRangeDialogFormStrings` | type | `themelia-react-ui/features/sync` | Labels and descriptions on the `SchemaForm` field definitions | |
550
+
551
+ ##### `features/schema-form`
552
+
553
+ | Removed | Kind | Import path | Use instead | Notes |
554
+ | --- | --- | --- | --- | --- |
555
+ | `SchemaForm` `submitLabel` | prop | `themelia-react-ui/features/schema-form` | `strings={{ submitLabel: '…' }}` | Same key name inside `strings`. |
556
+ | `SchemaForm` `resetLabel` | prop | `themelia-react-ui/features/schema-form` | `strings={{ resetLabel: '…' }}` | Same key name inside `strings`. |
557
+
558
+ #### Content features
559
+
560
+ Type-level effect of the string removals: a dictionary typed as the full
561
+ strings interface (not `strings={{ … }}` inline) that still carries a removed
562
+ key fails to compile with an excess-property error. Delete the key.
563
+
564
+ ##### `features/overlays`
565
+
566
+ | Removed | Kind | Import path | Use instead | Notes |
567
+ | --- | --- | --- | --- | --- |
568
+ | `defaultAlertDialogStrings` | export | `themelia-react-ui/features/overlays` | `defaultConfirmDialogStrings` | Same object, renamed to the `default<Component>Strings` convention. |
569
+ | `ConfirmDialogProps.closeOnBackdropClick` | prop | `themelia-react-ui/features/overlays` | Nothing; delete the prop | It never had an effect: a confirmation ignores outside presses. Passing it is now a type error. `ActionDialog` and `ActionDrawer` keep it. |
570
+ | `ConfirmDialogProps.showCloseButton` | prop | `themelia-react-ui/features/overlays` | Nothing; delete the prop | It never had an effect: a confirmation has no corner close control. `ActionDialog` and `ActionDrawer` keep it. |
571
+
572
+ ##### `features/mentions`
573
+
574
+ | Removed | Kind | Import path | Use instead | Notes |
575
+ | --- | --- | --- | --- | --- |
576
+ | `splitHtmlByMentions` | export | `themelia-react-ui/features/mentions` | `MentionContent` to render HTML with mentions; `parseMentionsFromHtml` to read the mentions out of HTML | The splitter cut serialized HTML with a regex and broke paragraphs and lists around a mention. `MentionContent` renders the sanitized tree and keeps each chip inside its paragraph. |
577
+ | `MentionHtmlSegment` | type | `themelia-react-ui/features/mentions` | Nothing | Return type of `splitHtmlByMentions`. |
578
+
579
+ ##### `features/comments`
580
+
581
+ | Removed | Kind | Import path | Use instead | Notes |
582
+ | --- | --- | --- | --- | --- |
583
+ | `CommentData.content_type` (snake case, read as a fallback) | value | `themelia-react-ui/features/comments` | `contentType` | The field was never in the type; it was read at runtime when `contentType` was absent. A comment that only sets `content_type` now renders as plain text. Map it when you build `CommentData`. Also applies to comments passed to `ActivityLog`. |
584
+ | `CommentsProps.avatarComponent` (declared on `CommentsSlots`) | prop | `themelia-react-ui/features/comments` | Nothing; for a custom avatar use `renderItem` | Declared but never read: it had no effect. |
585
+ | `CommentsStrings.moreActionsLabel` | string | `themelia-react-ui/features/comments` | Nothing; delete the key | Never rendered. |
586
+ | `CommentsStrings.showRepliesLabel` | string | `themelia-react-ui/features/comments` | Nothing; delete the key | Never rendered. |
587
+ | `CommentsStrings.hideRepliesLabel` | string | `themelia-react-ui/features/comments` | Nothing; delete the key | Never rendered. |
588
+ | `CommentsProps.maxAttachments` | prop | `themelia-react-ui/features/comments` | `attachments={{ onUpload, maxFiles: n }}` | Same cap on the draft. The default stays 5 when `maxFiles` is unset. `attachments.maxFiles` already won when both were set. |
589
+ | `CommentsProps.allowAttachments` | prop | `themelia-react-ui/features/comments` | `attachments={{ onUpload, disabled: true }}` to turn uploads off; nothing to turn them on | The attach control only ever appeared with `attachments.onUpload`; `allowAttachments={false}` did what `attachments.disabled` does. Without `attachments` there is no control, so a read-only thread just drops the prop. |
590
+ | `CommentComposerProps.maxAttachments` | prop | `themelia-react-ui/features/comments` | `attachments={{ onUpload, maxFiles: n }}` | Same as on `Comments`. |
591
+ | `CommentComposerProps.allowAttachments` | prop | `themelia-react-ui/features/comments` | `attachments={{ onUpload, disabled: true }}` | Same as on `Comments`. |
592
+ | `CommentsProps.bare` | prop | `themelia-react-ui/features/comments` | `title={false}` | Renders the thread with no heading. Two differences from `bare`, both intended: the root `section` (`comments--component`, `className`) stays around the thread, and the delete confirmation works (with `bare` the confirmation dialog was never mounted, so a confirmed delete did nothing unless `confirmDelete={false}`). |
593
+
594
+ ##### `features/activities`
595
+
596
+ | Removed | Kind | Import path | Use instead | Notes |
597
+ | --- | --- | --- | --- | --- |
598
+ | `ActivityLogProps.avatarComponent` | prop | `themelia-react-ui/features/activities` | Nothing; for custom rows use `renderers` | Declared but never read: it had no effect. |
599
+ | `ActivityRowProps.moreLabel` | prop | `themelia-react-ui/features/activities` | Nothing; delete the prop | It was a required prop with no effect since collapsed rows stopped previewing metadata. Code that renders `ActivityRow` directly must stop passing it. |
600
+ | `ActivitiesStrings.moreLabel` | string | `themelia-react-ui/features/activities` | Nothing; delete the key | Fed the `ActivityRowProps.moreLabel` prop. Applies to `ActivityFeed strings` and `ActivityLog activityStrings`. |
601
+ | `ActivityLogProps.bare` | prop | `themelia-react-ui/features/activities` | `title={false}` | Renders the log with no heading, for a log inside a titled Card or section. The root `section` (`activity-log--component`, `data-slot="activity-log"`) now stays around the feed, and `className` lands on that section instead of on the feed. A missing `title` still shows `activityStrings.title` ("Activity"), as before. With `bare`, a `title` passed alongside was ignored; remove it or keep it and drop `title={false}`. |
602
+ | `ActivityRowProps.youLabel` | prop | `themelia-react-ui/features/activities` | `strings={{ you: '…' }}` | One optional `strings` prop (`StringsProp<ActivitiesStrings>`) replaces the four label props; unset keys take the `defaultActivitiesStrings` values. |
603
+ | `ActivityRowProps.showChangesLabel` | prop | `themelia-react-ui/features/activities` | `strings={{ showChanges: '…' }}` | As above. |
604
+ | `ActivityRowProps.hideChangesLabel` | prop | `themelia-react-ui/features/activities` | `strings={{ hideChanges: '…' }}` | As above. |
605
+ | `ActivityRowProps.actionsLabel` | prop | `themelia-react-ui/features/activities` | `strings={{ actionsLabel: '…' }}` | As above. All four were required; code that renders `ActivityRow` directly can now omit them. `ActivityFeed` and `ActivityLog` callers are unaffected: they already pass `strings` / `activityStrings`. |
606
+
607
+ ##### `features/email-composer`
608
+
609
+ | Removed | Kind | Import path | Use instead | Notes |
610
+ | --- | --- | --- | --- | --- |
611
+ | `EmailComposerProps.onChange` | prop | `themelia-react-ui/features/email-composer` | `onValueChange` | Same payload (a detached draft proposal). `onChange` was only called when `onValueChange` was missing. |
612
+
613
+ ##### `features/appointment-calendar`
614
+
615
+ | Removed | Kind | Import path | Use instead | Notes |
616
+ | --- | --- | --- | --- | --- |
617
+ | `AppointmentCalendarProps.onStaffChange` | prop | `themelia-react-ui/features/appointment-calendar` | `onStaffIdChange` | Same payload (the staff id, or `'all'`). |
618
+
619
+ ##### `features/ai-chat`
620
+
621
+ | Removed | Kind | Import path | Use instead | Notes |
622
+ | --- | --- | --- | --- | --- |
623
+ | `AiChatPromptInputStrings.modelPickerAria` | string | `themelia-react-ui/features/ai-chat` | Nothing; delete the key | Never rendered: the prompt has no model picker. Applies to `AiChat strings.prompt` too. |
624
+
625
+ ##### `features/media-library`
626
+
627
+ | Removed | Kind | Import path | Use instead | Notes |
628
+ | --- | --- | --- | --- | --- |
629
+ | `MediaLibraryStrings.privateLabel` | string | `themelia-react-ui/features/media-library` | Nothing; delete the key | Never rendered. Visibility copy is `strings.detail.*` and `strings.upload.*`. |
630
+ | `MediaLibraryStrings.publicLabel` | string | `themelia-react-ui/features/media-library` | Nothing; delete the key | Never rendered. |
631
+ | `MediaLibraryState.error` (returned by `useMediaLibrary`) | value | `themelia-react-ui/features/media-library` | `loadError` for a failed fetch, `mutationError` for a failed update or delete (`{ itemId, operation, cause }`), `uploadError` for a failed upload request, `loadMoreError` for a failed next page | The single field mixed every failure. The `MediaLibrary` component already used the specific fields. |
632
+
633
+ ##### `features/theme-tweaker`
634
+
635
+ | Removed | Kind | Import path | Use instead | Notes |
636
+ | --- | --- | --- | --- | --- |
637
+ | `ThemeTweakerStrings.groupNavigationTitle` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered. |
638
+ | `ThemeTweakerStrings.groupNavigationDescription` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered. |
639
+ | `ThemeTweakerStrings.copyOverrides` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered: the export dialog has one CSS output. |
640
+ | `ThemeTweakerStrings.exportProvider` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered. |
641
+ | `ThemeTweakerStrings.exportOptions` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered. |
642
+ | `ThemeTweakerStrings.overrideOutputLabel` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered. |
643
+ | `ThemeTweakerStrings.overrideOutputDescription` | string | `themelia-react-ui/features/theme-tweaker` | Nothing; delete the key | Never rendered. |
644
+
645
+ ##### `features/event-calendar`
646
+
647
+ | Removed | Kind | Import path | Use instead | Notes |
648
+ | --- | --- | --- | --- | --- |
649
+ | `EventCalendarProps.emptyStateMessage` | prop | `themelia-react-ui/features/event-calendar` | `strings={{ emptyState: '…' }}` | New optional key `EventCalendarStrings.emptyState`. Same behaviour: it is opt-in (no default), and when set it replaces the day grid while the visible period has no events after the category and runtime filters. Merge it into an existing `strings` object rather than passing `strings` twice. |
650
+
651
+ ### Composition form
652
+
653
+ There is one composition form: `render`. Every part below took `asChild` and
654
+ rendered its single child in place of its own element. Pass that element to
655
+ `render` instead.
656
+
657
+ ```tsx
658
+ // 2.x
659
+ <PopoverTrigger asChild>
660
+ <Button>Open</Button>
661
+ </PopoverTrigger>
662
+
663
+ // 3.0
664
+ <PopoverTrigger render={<Button>Open</Button>} />
665
+ ```
666
+
667
+ A function form is also accepted where the part is a Base UI primitive:
668
+ `render={(props) => <Button {...props}>Open</Button>}`. The Command parts take
669
+ an element in `render` and keep their content as `children`, for example
670
+ `<CommandList render={<ul />}>{items}</CommandList>`.
671
+
672
+ `asChild` is removed from these parts:
673
+
674
+ - `themelia-react-ui/base/display`: `TooltipTrigger`, `CollapsibleTrigger`
675
+ - `themelia-react-ui/base/popover`: `PopoverTrigger`, `PopoverAnchor`
676
+ - `themelia-react-ui/base/command`: `Command`, `CommandInput`, `CommandList`,
677
+ `CommandGroup`, `CommandItem`, `CommandSeparator`
678
+
679
+ `CollapsibleTrigger` and `PopoverTrigger` now infer `nativeButton` from the
680
+ `render` element: a `button`, or a component without `href`, is native. Pass
681
+ `nativeButton` to override. The per-part replacement element and notes are in
682
+ the [`base/display`](#basedisplay), [`base/popover`](#basepopover) and
683
+ [`base/command`](#basecommand) tables.
684
+
685
+ ### Changed behaviour
686
+
687
+ Some behaviour changed without an API change: value formatting, focus and
688
+ keyboard handling, default copy, ARIA roles and shared geometry. These are
689
+ listed under "Changed behaviour" in the 3.0.0 entry of the
690
+ [changelog](CHANGELOG.md#changed-behaviour). Review that list after the code
691
+ compiles, and check tests that match rendered text, roles or element names.
692
+
693
+ Three changes follow from the removed props:
694
+
695
+ - **Card footers.** `footerText` is gone, so a string or number passed to
696
+ `footerSlot` renders as the footnote (small, secondary, end-aligned); a node
697
+ still fills the footer width. OrderTimeline, StepsCard and
698
+ SharedResourceCard keep their own `footerText`: a string renders as before,
699
+ a node now fills the width.
700
+ - **ActivityLog without a title.** `title={false}` drops the heading and keeps
701
+ the root section, so `className` lands on the section rather than on the
702
+ feed.
703
+ - **DataTable search.** The built-in search input appears when `filterColumn`
704
+ is set. `initialState.columnFilters` without `filterColumn` no longer
705
+ filters invisibly.
706
+
707
+ ## From admin-ui-starter-kit 3.x
708
+
5
709
  The `themelia-react-ui` 2.x line is the migration destination for
6
- `admin-ui-starter-kit` 3.x applications.
710
+ `admin-ui-starter-kit` 3.x applications. This section describes that move and
711
+ was written for 2.x. When you install 3.0, the names it calls deprecated
712
+ (`SmartCard`, `ContentBlock`, base `Sheet`, the resource shells and the sync
713
+ form) no longer exist: use their replacements directly, then follow
714
+ [Upgrading from 2.x to 3.0](#upgrading-from-2x-to-30).
7
715
 
8
- ## Imports and installation
716
+ ### Imports and installation
9
717
 
10
718
  1. Use the [consumer setup](README.md#consumer-setup) to install the new package
11
719
  and its required peers. React and React DOM use 19.x, Lucide uses 1.x, and
@@ -23,7 +731,7 @@ The `themelia-react-ui` 2.x line is the migration destination for
23
731
  The [theme guide](docs/consumer-skill/references/theming.md) covers the
24
732
  optional green brand, structural roots and scoped portals.
25
733
 
26
- ### Host CSS
734
+ #### Host CSS
27
735
 
28
736
  The compiled stylesheet leaves global preflight and the page canvas to the app.
29
737
  If the previous stylesheet supplied these values, put them in your app's lower
@@ -46,7 +754,7 @@ For app-generated Tailwind utilities, follow the [Tailwind setup](docs/consumer-
46
754
  The editable `theme.css` entry is processed by the application's Tailwind v4
47
755
  build. The compiled `style.css` already includes package utilities.
48
756
 
49
- ### Tools
757
+ #### Tools
50
758
 
51
759
  | Former bin | Workflow in this package |
52
760
  | --- | --- |
@@ -55,7 +763,7 @@ build. The compiled `style.css` already includes package utilities.
55
763
  | `admin-ui-starter-kit-publish-theme` | Import the published theme CSS or export a custom theme from Theme Studio and apply it in the app. |
56
764
  | `admin-ui-starter-kit-showcase` | Use the component catalogue or render the shipped examples in your application. |
57
765
 
58
- ## Defaults to review
766
+ ### Defaults to review
59
767
 
60
768
  | Owner | Earlier default | Current default or migration |
61
769
  | --- | --- | --- |
@@ -90,7 +798,7 @@ import { UIProvider } from 'themelia-react-ui/ui-provider';
90
798
  </UIProvider>
91
799
  ```
92
800
 
93
- ## Behavior, selectors and deprecated entry points
801
+ ### Behavior, selectors and deprecated entry points
94
802
 
95
803
  - Check the query policy of async filters. Options are cached within a mounted
96
804
  editor and refetch after a remount. Chip labels stay within their filter
@@ -115,5 +823,36 @@ import { UIProvider } from 'themelia-react-ui/ui-provider';
115
823
  for application-specific ranking and use the current public parts when
116
824
  composing empty and group content.
117
825
 
826
+ ## Chart blocks moved
827
+
828
+ `recharts` is an optional peer. The analytics blocks that draw with it now
829
+ have their own exact entry, so `themelia-react-ui/blocks/analytics` no longer
830
+ loads it. Change the import path of each moved symbol; names, props and
831
+ behaviour are unchanged. `Metric`, `MetricBar` and `MetricGrid` move with the
832
+ chart blocks because every `Metric` can draw a sparkline.
833
+
834
+ | Symbol | Before | After |
835
+ | --- | --- | --- |
836
+ | `Metric`, `MetricProps` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
837
+ | `MetricBar`, `MetricBarProps`, `MetricBarVariant` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
838
+ | `MetricGrid`, `MetricGridProps` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
839
+ | `MetricMicroGrid`, `MetricMicroGridProps`, `MicroChartKind`, `MicroMetricCell` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
840
+ | `MetricGradient`, `MetricGradientProps`, `MetricGradientTheme` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
841
+ | `MetricSparkline`, `MetricSparklineProps` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
842
+ | `ChartCard`, `ChartCardProps` | `themelia-react-ui/blocks/analytics` | `themelia-react-ui/blocks/analytics/charts` |
843
+
844
+ ```diff
845
+ - import { MetricGrid, ChartCard, type MetricData } from 'themelia-react-ui/blocks/analytics';
846
+ + import { MetricGrid, ChartCard, type MetricData } from 'themelia-react-ui/blocks/analytics/charts';
847
+ ```
848
+
849
+ Nothing else moves. `MetricComparison`, `ActivityHeatmap`,
850
+ `TimeDistributionRuler`, `MetricTrendChip`, `MetricSkeleton`, `UsageCard`,
851
+ `formatMetricValue`, `resolveTrend` and the analytics strings stay in
852
+ `themelia-react-ui/blocks/analytics`. The shared metric types (`MetricData`,
853
+ `MetricChange`, `MetricSize`, `MetricVariant` and the rest) stay there too and
854
+ are also exported from the charts entry, so one import covers a metric and its
855
+ data.
856
+
118
857
  The [changelog](CHANGELOG.md) and [consumer composition guide](docs/consumer-skill/references/composition.md)
119
858
  describe the current roles and the version-specific changes.