themelia-react-ui 2.0.1 → 2.0.3

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 (490) hide show
  1. package/CHANGELOG.md +317 -131
  2. package/README.md +25 -9
  3. package/THIRD_PARTY_NOTICES.md +7 -0
  4. package/dist/{accordion-B6a3vVgA.js → accordion-Cjb6sx0G.js} +14 -13
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-ZK5RWdo6.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-ZK5RWdo6.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-CYxKfo69.js → auth-BGua8ouh.js} +58 -54
  17. package/dist/auth-BGua8ouh.js.map +1 -0
  18. package/dist/{avatar-BBnEJIx8.js → avatar-DAPlDvhJ.js} +7 -7
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/{badge-MrKVNzW9.js → badge-HpFqoqSY.js} +40 -40
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +40 -36
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +92 -92
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +2 -2
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +6 -6
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +14 -14
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +6 -6
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +171 -176
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +6 -6
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +79 -2
  61. package/dist/base/spinner.js.map +1 -0
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +46 -45
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZGDG-Si.js → batch-action-bar-DnUJ21NQ.js} +6 -5
  72. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  73. package/dist/blocks/admin.js +42 -42
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +260 -240
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +620 -585
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +1152 -1109
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +2 -2
  85. package/dist/blocks/onboarding.js +48 -39
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +13 -12
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/{breadcrumbs-D5t7I023.js → breadcrumbs-C-oqs1sQ.js} +5 -5
  91. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  92. package/dist/{button-QYwiyhD2.js → button-DVzspB_G.js} +2 -2
  93. package/dist/{button-QYwiyhD2.js.map → button-DVzspB_G.js.map} +1 -1
  94. package/dist/{buttons-SbIcm1HJ.js → buttons-DPZekJFu.js} +20 -15
  95. package/dist/buttons-DPZekJFu.js.map +1 -0
  96. package/dist/cards-BaBZR-AU.js +68 -0
  97. package/dist/cards-BaBZR-AU.js.map +1 -0
  98. package/dist/{chart-QfrARkXl.js → chart-ZOYyK2xG.js} +58 -55
  99. package/dist/chart-ZOYyK2xG.js.map +1 -0
  100. package/dist/{checkbox-DhB6K0bK.js → checkbox-AWIhNhmo.js} +2 -2
  101. package/dist/{checkbox-DhB6K0bK.js.map → checkbox-AWIhNhmo.js.map} +1 -1
  102. package/dist/{choice-inputs-t6w3ATNz.js → choice-inputs-CNHvARCJ.js} +49 -45
  103. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  104. package/dist/{code-block-Dgbu-CU3.js → code-block-DeneBJR_.js} +8 -8
  105. package/dist/code-block-DeneBJR_.js.map +1 -0
  106. package/dist/{collapsible-D8AEGU1-.js → collapsible-C-_l4hpy.js} +3 -3
  107. package/dist/{collapsible-D8AEGU1-.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  108. package/dist/{collection-content-uK16Grv0.js → collection-content-By56pLog.js} +3 -3
  109. package/dist/{collection-content-uK16Grv0.js.map → collection-content-By56pLog.js.map} +1 -1
  110. package/dist/combobox-DaHESuiL.js +355 -0
  111. package/dist/combobox-DaHESuiL.js.map +1 -0
  112. package/dist/{combobox-DLl0bfiq.js → combobox-Dxo2fAYQ.js} +289 -279
  113. package/dist/combobox-Dxo2fAYQ.js.map +1 -0
  114. package/dist/{command-kNR20o7x.js → command-C25VMRII.js} +7 -7
  115. package/dist/{command-kNR20o7x.js.map → command-C25VMRII.js.map} +1 -1
  116. package/dist/{comments-BpDuCUUu.js → comments-DD0DUPwJ.js} +114 -105
  117. package/dist/comments-DD0DUPwJ.js.map +1 -0
  118. package/dist/components/base/badge/badge.recipes.d.ts +1 -1
  119. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  120. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  121. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  122. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  123. package/dist/components/base/chart/chart.d.ts +2 -5
  124. package/dist/components/base/combobox/combobox-field.d.ts +16 -0
  125. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  126. package/dist/components/base/combobox/index.d.ts +30 -4
  127. package/dist/components/base/forms/form-sizing.d.ts +11 -3
  128. package/dist/components/base/navigation/pagination.d.ts +5 -2
  129. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  130. package/dist/components/base/table/index.d.ts +9 -2
  131. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  132. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  133. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  134. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
  135. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  136. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  137. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  138. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  139. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  140. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  141. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  142. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  143. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  144. package/dist/components/features/combobox/types.d.ts +4 -0
  145. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  146. package/dist/components/features/rich-text-editor/index.d.ts +1 -1
  147. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  148. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
  149. package/dist/components/features/table/table-header.d.ts +1 -1
  150. package/dist/components/features/table/table.strings.d.ts +55 -1
  151. package/dist/components/features/table/table.types.d.ts +17 -4
  152. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  153. package/dist/components/primitives/number.d.ts +4 -2
  154. package/dist/components/primitives/value.d.ts +3 -1
  155. package/dist/components/typography/text-link.d.ts +4 -0
  156. package/dist/components/ui/combobox-dismiss.d.ts +16 -0
  157. package/dist/components/ui/combobox.d.ts +16 -7
  158. package/dist/components/ui/dialog.d.ts +1 -1
  159. package/dist/components/ui/item.d.ts +8 -8
  160. package/dist/components/ui/popover.d.ts +1 -1
  161. package/dist/components/ui/sheet.d.ts +1 -1
  162. package/dist/components/ui/tabs.d.ts +1 -1
  163. package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
  164. package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
  165. package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
  166. package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
  167. package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
  168. package/dist/data-display-DT_khPl_.js.map +1 -0
  169. package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
  170. package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
  171. package/dist/{date-picker-CF-DtUpF.js → date-picker-B2K3ucWn.js} +594 -593
  172. package/dist/date-picker-B2K3ucWn.js.map +1 -0
  173. package/dist/date-pickers-Ds8gLaoP.js +175 -0
  174. package/dist/date-pickers-Ds8gLaoP.js.map +1 -0
  175. package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
  176. package/dist/display-hAc1HjpI.js.map +1 -0
  177. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  178. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  179. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  180. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  181. package/dist/features/activities.js +398 -375
  182. package/dist/features/activities.js.map +1 -1
  183. package/dist/features/ai-chat.js +188 -179
  184. package/dist/features/ai-chat.js.map +1 -1
  185. package/dist/features/appointment-calendar.js +683 -0
  186. package/dist/features/appointment-calendar.js.map +1 -0
  187. package/dist/features/async-preview.js +109 -107
  188. package/dist/features/async-preview.js.map +1 -1
  189. package/dist/features/combobox.js +1 -1
  190. package/dist/features/comments.js +1 -1
  191. package/dist/features/data-view.js +137 -137
  192. package/dist/features/data-view.js.map +1 -1
  193. package/dist/features/email-composer.js +255 -255
  194. package/dist/features/email-composer.js.map +1 -1
  195. package/dist/features/event-calendar.js +254 -248
  196. package/dist/features/event-calendar.js.map +1 -1
  197. package/dist/features/filters.js +1 -1
  198. package/dist/features/global-search.js +35 -32
  199. package/dist/features/global-search.js.map +1 -1
  200. package/dist/features/kanban.js +118 -117
  201. package/dist/features/kanban.js.map +1 -1
  202. package/dist/features/map.js +233 -231
  203. package/dist/features/map.js.map +1 -1
  204. package/dist/features/media-library.js +789 -775
  205. package/dist/features/media-library.js.map +1 -1
  206. package/dist/features/mentions.js +1 -1
  207. package/dist/features/overlays.js +1 -1
  208. package/dist/features/products.js +922 -902
  209. package/dist/features/products.js.map +1 -1
  210. package/dist/features/questionnaire.js +28 -24
  211. package/dist/features/questionnaire.js.map +1 -1
  212. package/dist/features/resource-assignment.js +18 -15
  213. package/dist/features/resource-assignment.js.map +1 -1
  214. package/dist/features/resource.js +12 -12
  215. package/dist/features/resource.js.map +1 -1
  216. package/dist/features/rich-text-editor.js +2 -2
  217. package/dist/features/schema-form.js +15 -13
  218. package/dist/features/schema-form.js.map +1 -1
  219. package/dist/features/suggestions.js +3 -3
  220. package/dist/features/sync.js +11 -5
  221. package/dist/features/sync.js.map +1 -1
  222. package/dist/features/table.js +1 -1
  223. package/dist/features/theme-tweaker.js +493 -489
  224. package/dist/features/theme-tweaker.js.map +1 -1
  225. package/dist/feedback-BYIhtitP.js +239 -0
  226. package/dist/feedback-BYIhtitP.js.map +1 -0
  227. package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
  228. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  229. package/dist/{filters-BkHH53uv.js → filters-DJVAveHA.js} +589 -580
  230. package/dist/filters-DJVAveHA.js.map +1 -0
  231. package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
  232. package/dist/form-field-CwH9y77i.js.map +1 -0
  233. package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
  234. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  235. package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
  236. package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
  237. package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
  238. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  239. package/dist/{header-BOefOKd1.js → header-BSfIEWbI.js} +160 -153
  240. package/dist/header-BSfIEWbI.js.map +1 -0
  241. package/dist/{hooks-9k_TtmKh.js → hooks-ClH9thn4.js} +2 -2
  242. package/dist/{hooks-9k_TtmKh.js.map → hooks-ClH9thn4.js.map} +1 -1
  243. package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
  244. package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
  245. package/dist/index.js +3 -3
  246. package/dist/input-CZw8iU99.js +21 -0
  247. package/dist/input-CZw8iU99.js.map +1 -0
  248. package/dist/input-DQdEd0YD.js +263 -0
  249. package/dist/input-DQdEd0YD.js.map +1 -0
  250. package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
  251. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  252. package/dist/item-K5_ghvze.js +275 -0
  253. package/dist/item-K5_ghvze.js.map +1 -0
  254. package/dist/layout/app-shell.js +1 -1
  255. package/dist/layout/auth.js +1 -1
  256. package/dist/layout/containers.js +1 -1
  257. package/dist/layout/header.js +1 -1
  258. package/dist/layout/hooks.js +1 -1
  259. package/dist/layout/navigation.js +1 -1
  260. package/dist/layout/page.js +1 -1
  261. package/dist/layout/settings.js +1 -1
  262. package/dist/layout/sidebar.js +2 -2
  263. package/dist/layout/workspace.js +1 -1
  264. package/dist/layout.js +10 -10
  265. package/dist/lib/affordance-geometry.generated.d.ts +71 -0
  266. package/dist/lib/editable-text-recipe.d.ts +4 -4
  267. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  268. package/dist/lib/interaction-recipes.d.ts +5 -0
  269. package/dist/lib/theme-mode-css.d.ts +7 -0
  270. package/dist/lib/tone-recipes.d.ts +8 -0
  271. package/dist/lib/ui-provider/types.d.ts +2 -2
  272. package/dist/lib/use-popup-focus-recovery.d.ts +8 -0
  273. package/dist/lib/utils.js +1 -1
  274. package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
  275. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  276. package/dist/{mentions-D-uyCh01.js → mentions-CGlEJ15c.js} +144 -142
  277. package/dist/mentions-CGlEJ15c.js.map +1 -0
  278. package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
  279. package/dist/message-DZ_ruyUV.js.map +1 -0
  280. package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
  281. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  282. package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
  283. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  284. package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
  285. package/dist/navigation-BzhHI3lo.js.map +1 -0
  286. package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  287. package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  288. package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
  289. package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
  290. package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
  291. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  292. package/dist/{overlays-I0axtYA6.js → overlays-tMkF-VAN.js} +282 -278
  293. package/dist/overlays-tMkF-VAN.js.map +1 -0
  294. package/dist/{page-B5dTH9gE.js → page-CL9YeH_V.js} +8 -8
  295. package/dist/{page-B5dTH9gE.js.map → page-CL9YeH_V.js.map} +1 -1
  296. package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
  297. package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
  298. package/dist/pagination-BL25hu2s.js +158 -0
  299. package/dist/pagination-BL25hu2s.js.map +1 -0
  300. package/dist/{popover-Di55PyAI.js → popover-gnTOhbFM.js} +69 -66
  301. package/dist/popover-gnTOhbFM.js.map +1 -0
  302. package/dist/popover-menu-Cn9rUkdc.js +100 -0
  303. package/dist/popover-menu-Cn9rUkdc.js.map +1 -0
  304. package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
  305. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  306. package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
  307. package/dist/primitives-BFK08r9M.js.map +1 -0
  308. package/dist/primitives.js +4 -4
  309. package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
  310. package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
  311. package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
  312. package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  313. package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
  314. package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
  315. package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
  316. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  317. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  318. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  319. package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
  320. package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
  321. package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
  322. package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
  323. package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
  324. package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
  325. package/dist/services/actions.js +1 -1
  326. package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
  327. package/dist/settings-ybnjVwbd.js.map +1 -0
  328. package/dist/{sheet-4SEvVYzA.js → sheet-ijlsjq-n.js} +76 -73
  329. package/dist/sheet-ijlsjq-n.js.map +1 -0
  330. package/dist/{sidebar-C7WWR29L.js → sidebar-Db6gkh3U.js} +183 -182
  331. package/dist/sidebar-Db6gkh3U.js.map +1 -0
  332. package/dist/{sidebar-d7Dg80ln.js → sidebar-DkTO4VTO.js} +14 -13
  333. package/dist/{sidebar-d7Dg80ln.js.map → sidebar-DkTO4VTO.js.map} +1 -1
  334. package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
  335. package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  336. package/dist/smart-card-DiC5aac3.js +604 -0
  337. package/dist/smart-card-DiC5aac3.js.map +1 -0
  338. package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
  339. package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
  340. package/dist/style.css +1 -1
  341. package/dist/table-BweFy_P9.js +1530 -0
  342. package/dist/table-BweFy_P9.js.map +1 -0
  343. package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
  344. package/dist/table-DsfzoUia.js.map +1 -0
  345. package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
  346. package/dist/tabs-CDocW5D1.js.map +1 -0
  347. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  348. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  349. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  350. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  351. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  352. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  353. package/dist/theme.css +285 -228
  354. package/dist/themes/green.css +16 -12
  355. package/dist/timelines-CwM_9IhD.js +457 -0
  356. package/dist/timelines-CwM_9IhD.js.map +1 -0
  357. package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
  358. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  359. package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
  360. package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
  361. package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
  362. package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
  363. package/dist/typography/rich-text.js +1 -1
  364. package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
  365. package/dist/typography-UTnveOEy.js.map +1 -0
  366. package/dist/typography.js +2 -2
  367. package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
  368. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  369. package/dist/ui-provider.js +2 -2
  370. package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
  371. package/dist/upload-CXyxmQBP.js.map +1 -0
  372. package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
  373. package/dist/upload-queue-Boscubn9.js.map +1 -0
  374. package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
  375. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  376. package/dist/use-popup-focus-recovery-C0QPvgOR.js +36 -0
  377. package/dist/use-popup-focus-recovery-C0QPvgOR.js.map +1 -0
  378. package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
  379. package/dist/utils-BRhFDwuU.js.map +1 -0
  380. package/dist/{value-inputs-TAYMX111.js → value-inputs-TaX4OjNk.js} +268 -252
  381. package/dist/value-inputs-TaX4OjNk.js.map +1 -0
  382. package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
  383. package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  384. package/dist/{workspace-DH0v0KcB.js → workspace-B-OEm3Kf.js} +34 -33
  385. package/dist/workspace-B-OEm3Kf.js.map +1 -0
  386. package/docs/consumer-skill/SKILL.md +3 -3
  387. package/docs/consumer-skill/references/agents-md.md +1 -1
  388. package/docs/consumer-skill/references/composition.md +8 -6
  389. package/docs/consumer-skill/references/installation.md +6 -0
  390. package/docs/consumer-skill/references/integration.md +4 -3
  391. package/docs/consumer-skill/references/public-api.json +105 -2
  392. package/docs/consumer-skill/references/review.md +7 -0
  393. package/docs/consumer-skill/references/theming.md +71 -6
  394. package/docs/consumer-skill/references/tokens.json +1 -1
  395. package/docs/consumer-skill/references/workflows.md +26 -0
  396. package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
  397. package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
  398. package/package.json +8 -4
  399. package/dist/accordion-B6a3vVgA.js.map +0 -1
  400. package/dist/action-menu-TzCoSlwL.js +0 -280
  401. package/dist/action-menu-TzCoSlwL.js.map +0 -1
  402. package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
  403. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
  404. package/dist/ai-artifact-BMJdv-6q.js +0 -1115
  405. package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
  406. package/dist/attachment-BtfhGm8i.js +0 -245
  407. package/dist/attachment-BtfhGm8i.js.map +0 -1
  408. package/dist/auth-CYxKfo69.js.map +0 -1
  409. package/dist/avatar-BBnEJIx8.js.map +0 -1
  410. package/dist/badge-MrKVNzW9.js.map +0 -1
  411. package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
  412. package/dist/breadcrumbs-D5t7I023.js.map +0 -1
  413. package/dist/buttons-SbIcm1HJ.js.map +0 -1
  414. package/dist/cards-CiiHpKYd.js +0 -66
  415. package/dist/cards-CiiHpKYd.js.map +0 -1
  416. package/dist/chart-QfrARkXl.js.map +0 -1
  417. package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
  418. package/dist/code-block-Dgbu-CU3.js.map +0 -1
  419. package/dist/combobox-2Ic8N9bL.js +0 -278
  420. package/dist/combobox-2Ic8N9bL.js.map +0 -1
  421. package/dist/combobox-DLl0bfiq.js.map +0 -1
  422. package/dist/comments-BpDuCUUu.js.map +0 -1
  423. package/dist/data-display-DafIvCl5.js.map +0 -1
  424. package/dist/date-picker-CF-DtUpF.js.map +0 -1
  425. package/dist/date-pickers-BmzxJl5l.js +0 -174
  426. package/dist/date-pickers-BmzxJl5l.js.map +0 -1
  427. package/dist/display-DsQTVzMz.js.map +0 -1
  428. package/dist/dropdown-menu-E2qmdC7o.js +0 -193
  429. package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
  430. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  431. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  432. package/dist/feedback-qNuMBtRH.js +0 -233
  433. package/dist/feedback-qNuMBtRH.js.map +0 -1
  434. package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
  435. package/dist/filters-BkHH53uv.js.map +0 -1
  436. package/dist/form-field-DUt4UxSV.js.map +0 -1
  437. package/dist/form-sizing-By94KzXE.js.map +0 -1
  438. package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
  439. package/dist/header-BOefOKd1.js.map +0 -1
  440. package/dist/input-DWhBBBww.js +0 -262
  441. package/dist/input-DWhBBBww.js.map +0 -1
  442. package/dist/input-Ddi_LSYv.js +0 -20
  443. package/dist/input-Ddi_LSYv.js.map +0 -1
  444. package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
  445. package/dist/item-DEmDiTlD.js +0 -265
  446. package/dist/item-DEmDiTlD.js.map +0 -1
  447. package/dist/media-gallery-DcTtAaeC.js.map +0 -1
  448. package/dist/mentions-D-uyCh01.js.map +0 -1
  449. package/dist/message-CdHgIWKf.js.map +0 -1
  450. package/dist/metadata-list-X5rYAKSB.js.map +0 -1
  451. package/dist/navigation-D3KwXmaq.js.map +0 -1
  452. package/dist/navigation-HJf5zxlH.js.map +0 -1
  453. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
  454. package/dist/overlays-I0axtYA6.js.map +0 -1
  455. package/dist/pagination-3bPA_a6K.js +0 -149
  456. package/dist/pagination-3bPA_a6K.js.map +0 -1
  457. package/dist/popover-Di55PyAI.js.map +0 -1
  458. package/dist/popover-menu-B71Tn2Qz.js +0 -99
  459. package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
  460. package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
  461. package/dist/primitives-B-CkiEMU.js.map +0 -1
  462. package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
  463. package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
  464. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
  465. package/dist/settings-CQW3b-Cu.js.map +0 -1
  466. package/dist/sheet-4SEvVYzA.js.map +0 -1
  467. package/dist/sidebar-C7WWR29L.js.map +0 -1
  468. package/dist/smart-card-lFKxn5Hu.js +0 -595
  469. package/dist/smart-card-lFKxn5Hu.js.map +0 -1
  470. package/dist/spinner-fa3h1Aif.js +0 -80
  471. package/dist/spinner-fa3h1Aif.js.map +0 -1
  472. package/dist/table-CIKyLUsy.js.map +0 -1
  473. package/dist/table-CrcLN9Io.js +0 -1458
  474. package/dist/table-CrcLN9Io.js.map +0 -1
  475. package/dist/tabs-DwBJfjxX.js.map +0 -1
  476. package/dist/text-inputs-aaK9wcDT.js +0 -326
  477. package/dist/text-inputs-aaK9wcDT.js.map +0 -1
  478. package/dist/theme-scope-kStaAer0.js +0 -39
  479. package/dist/theme-scope-kStaAer0.js.map +0 -1
  480. package/dist/timelines-C_SBwHNP.js +0 -442
  481. package/dist/timelines-C_SBwHNP.js.map +0 -1
  482. package/dist/tone-recipes-CPoExcTE.js.map +0 -1
  483. package/dist/typography-DTRkE9zL.js.map +0 -1
  484. package/dist/ui-provider-1D_NSYzO.js.map +0 -1
  485. package/dist/upload-BO8-CLN6.js.map +0 -1
  486. package/dist/upload-queue-EOC8g1gf.js.map +0 -1
  487. package/dist/usage-card-obRaBskq.js.map +0 -1
  488. package/dist/utils-l5LpDw2z.js.map +0 -1
  489. package/dist/value-inputs-TAYMX111.js.map +0 -1
  490. package/dist/workspace-DH0v0KcB.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,321 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.3 — 2026-10-24
4
+
5
+ Patch release of the audited UI and official Base UI compatibility fixes.
6
+ Uses `@base-ui/react ^1.9.0`, with translated Combobox dismissal and nested
7
+ popup focus preserved by Themelia's wrappers. Package metadata, setup guidance
8
+ and generated consumer references now identify 2.0.3.
9
+
10
+ ## 2.0.2 — 2026-10-21
11
+
12
+ Card dividers on by default, one rule per overlay region boundary, the
13
+ appointment calendar, and the fixes and shared recipes that followed 2.0.1. No
14
+ public export or prop is removed. Base UI uses the official
15
+ `@base-ui/react ^1.9.0` registry package (see "Upgrading from 2.0.1"). Additions:
16
+ `align` on ConfirmDialog and ActionDialog with UIProvider overlay defaults;
17
+ `selecting`, `defaultSelecting`, `onSelectingChange`, `onItemOpen` and
18
+ `bulkActions` on MediaLibrary; `useRichTextImages` and `images` on RichTextEditor
19
+ and RichText; `bodyHeight` on RichTextEditor; the
20
+ `themelia-react-ui/base/metadata-list`, `themelia-react-ui/base/batch-action-bar`
21
+ and `themelia-react-ui/features/appointment-calendar` entrypoints; an optional
22
+ `fontFamily` on `signaturePadToSVG`; the order blocks, `SummaryPanel` and
23
+ `AmountRow` in `blocks/commerce`; `valueAlign` on MetadataList; `defaultValue`,
24
+ `name` and ARIA props on TagsInput; `density` on Table; `variant="chips"` on
25
+ TabsList; `valueWeight` on InlineStat and `size` on AiShimmer; screen-reader
26
+ label strings on Combobox, AsyncResourceCombobox, DataTable and MediaLibrary.
27
+ `features/sync`, the standalone product region cards, the `blocks/data-display`
28
+ MetadataList exports and `ActivityRow` `moreLabel` are deprecated.
29
+
30
+ ### Audit update — 2026-10-24
31
+
32
+ - Replaced the private Base UI dependency with official `@base-ui/react ^1.9.0`.
33
+ Themelia owns translated Combobox dismissal labels and the shared popup
34
+ recovery guard; consumers need no companion archive or patched dependency.
35
+ - Layouts, blocks and features pair painted surfaces with their foregrounds;
36
+ owned primary copy inherits those roles while secondary, status and custom
37
+ content keep their intended colors. Existing sizing, spacing and radius
38
+ defaults remain unchanged.
39
+ - Bordered auth/workspace, metric, media/chat and event frames preserve their
40
+ geometry without a consumer CSS reset. Rich editor controls dim once, and a
41
+ disabled AI prompt suspends staged and custom actions as well as its input.
42
+ - Narrow checklist titles stay beside their status markers. Media detail regions
43
+ retain their content height and scroll in order without overlap. Flat Card
44
+ sections inherit their containing surface; search previews pair canvas ink.
45
+ - Owned field labels follow their containing surface across forms, helper fields,
46
+ repeaters, filters and questionnaires; the public Label defaults are preserved.
47
+ - MetadataList labels and primary values follow their containing surface in all
48
+ layouts; explicit secondary, link, status and custom content retain their roles.
49
+ Product catalogue viewports preserve native keyboard focus clearance.
50
+ - Compact table pagination resolves one size across its anatomy. Muted values
51
+ use the shared secondary role without an extra opacity tier; source and
52
+ consumer composition checks reject faded typography and primitive copy.
53
+ - Generated brand palettes retain the centralized input and focus roles instead
54
+ of replacing their contrast with a weak brand wash.
55
+ - Base composition now consistently follows the foreground of its card or
56
+ popover surface, including owned titles, values, upload copy and chart
57
+ tooltips. Native hosts retain their geometry without a consumer CSS reset.
58
+ - Card keeps full-width pre-title context, omits empty body regions, and reveals
59
+ clipped actions when keyboard focus enters them. CardSkeleton follows the
60
+ provider surface and accepts an optional `surface` override.
61
+ - Pagination resolves one shared size for links, previous/next and ellipsis;
62
+ PaginationEllipsis also accepts an optional `size`. Attachment focus corners
63
+ match their Item shell, and Empty media follows the existing media roots.
64
+ - Nested disabled content dims once; compound field affordances respect pending
65
+ and read-only state, including PhoneInput blur normalization. Carousel
66
+ preserves descendant editing keys, uncontrolled SliderField values stay
67
+ synchronized, and overflow links retain native href and keyboard behavior.
68
+ - Resting control boundaries now meet the shared 3:1 contrast floor, including
69
+ filled fields on supported surfaces. Divider and focus roles remain separate.
70
+ - Nested light/dark state utilities follow the nearest explicit mode boundary.
71
+ ThemeScope rebinds default aliases for explicitly supplied source roots while
72
+ preserving deliberate CSS/inline role overrides. This behavior uses container
73
+ style queries: Chromium 111+, Safari 18.1+ and Firefox 151+.
74
+ - Chart series and scoped theme exports follow the same mode boundary. Scoped
75
+ selector helpers add optional `modeScope` metadata while retaining their
76
+ existing selector strings. Package defaults use the theme cascade layer so
77
+ explicit utility classes can override them on a mode boundary.
78
+ - Enlarged editable typography can grow its shared field frame and reduce spare
79
+ vertical padding. Default control sizes and radius roles remain unchanged.
80
+ - Fullscreen table menus and dialogs retain keyboard ownership; sorted headers
81
+ expose direction/precedence; nested cell controls no longer activate the row.
82
+ Row callbacks also support Enter and Space with visible keyboard focus.
83
+ - Maintainer and packaged consumer guidance now cover surface inheritance at
84
+ owned text/label/value leaves, semantic text roles without extra opacity,
85
+ once-only disabled treatment, and stable post-interaction visual evidence.
86
+ The MetadataList evaluation uses its current base entrypoint.
87
+
88
+ ### Upgrading from 2.0.1
89
+
90
+ - **Official Base UI peer.** Install `@base-ui/react ^1.9.0` from npm. Existing
91
+ apps using that range satisfy the requirement. Themelia retains
92
+ `ComboboxRoot.dismissLabel`, feature dismissal strings and nested popup focus
93
+ behavior through its own wrappers. Remove any former private archive pin or
94
+ package-manager override and refresh the app's lockfile.
95
+ - **MetadataList moved to base.** Import `MetadataList`, its item types and
96
+ default strings from `themelia-react-ui/base/metadata-list`. The
97
+ `themelia-react-ui/blocks/data-display` re-exports keep working and are
98
+ deprecated. Labels render semibold.
99
+ - **MediaLibrary opens before it selects.** Activating an asset (click, Enter,
100
+ Space) calls `onItemOpen` or shows the details panel. Selection is an explicit
101
+ mode: `selecting`, `defaultSelecting` and `onSelectingChange`. Picker dialogs
102
+ start selecting; pass `defaultSelecting` where a library relied on selecting
103
+ by default.
104
+ - **ConfirmDialog is centred.** ConfirmDialog and ActionDialog accept
105
+ `align: 'start' | 'center'`, resolved from the prop, then the UIProvider
106
+ `overlay.defaultConfirmAlign` / `overlay.defaultDialogAlign` defaults, then
107
+ center for ConfirmDialog and start for ActionDialog.
108
+ - **Deprecated: `themelia-react-ui/features/sync`.** `SyncRangeDialogForm` is
109
+ application-specific; use `SchemaForm` with `radio-cards` and
110
+ `checkbox-cards` fields. The entrypoint still ships.
111
+ - **Deprecated: standalone product region cards and row menus.** Render them
112
+ through `ProductOverview` slots and the `renderOptionActions` /
113
+ `renderVariantActions` options. They stay exported.
114
+ - **Deprecated: `ActivityRow` `moreLabel`.** The collapsed metadata preview it
115
+ labelled is gone; secondary detail opens with the details disclosure.
116
+ - **Selection bars are a `BatchActionBar`.** DataTable's default selection
117
+ toolbar now docks to the bottom of the viewport (`floating`); pass
118
+ `selectionToolbarPlacement="inline"` to keep it in the table. Its summary and
119
+ the new `totalRowCount` prop default to `pagination.total`, so server-paginated
120
+ tables count the whole result. Product variant tables show an inline bar only
121
+ while variants are selected; `renderBulkActions` now replaces the default
122
+ commands, as documented (return `null` to keep them), and Delete no longer
123
+ repeats the count.
124
+ - **MetadataList rows.** `layout="rows"` draws rules only with `itemSeparator`,
125
+ and values start their column on `2fr/3fr` tracks. Pass `valueAlign="end"` for
126
+ the previous right-aligned figures, such as money columns.
127
+ - **TagsInput.** Chips sit inside the field, before the text input in Tab order;
128
+ the count and clear-all move to a footer under the field, and the placeholder
129
+ shows only while the field is empty. The input stays enabled at `maxTags`.
130
+ - **Commerce DOM hooks.** RefundStatusCard, CartSummaryCard,
131
+ DiscountStackPreview, TaxBreakdownCard and ShipmentTracking render on `Card`
132
+ and lose the `content-block--*` classes and `data-component="content-block"`;
133
+ their own `--component` classes stay. ShipmentTracking and InvoiceHeader show
134
+ a visible title with the status chip in its suffix.
135
+ - **Shell width utilities.** `shell-sidebar-icon-current` and
136
+ `shell-sidebar-offcanvas-current` read their widths from `shell-sidebar-vars`;
137
+ apply them together on the same element, as the library's shells do.
138
+ - **Card dividers are on by default.** `card.defaultHeaderDivider` and
139
+ `card.defaultFooterDivider` now default to `true`, so framed cards rule their
140
+ header and footer apart. Flat, card-free structure (`surface="flat"`) and a
141
+ `headerPlacement="frame"` header still draw no rule unless asked, and
142
+ explicit per-card booleans still win. For the previous spacing-only look, set
143
+ both provider defaults to `false`, or pass `headerDivider={false}` /
144
+ `footerDivider={false}` on a card.
145
+
146
+ ### Changes
147
+
148
+ - **Accessibility strings.** Combobox, AsyncResourceCombobox, DataTable and
149
+ MediaLibrary take strings for their screen-reader-only labels, including both
150
+ Combobox dismissal controls. Closing a nested popup no longer moves focus that
151
+ was already restored inside its parent popup.
152
+ - **Overlays draw one rule per region boundary.** ActionDialog, ActionDrawer
153
+ and ConfirmDialog separate header, body and footer with a rule, and a dialog
154
+ without a body shows a single rule.
155
+ - **Rich text images.** RichTextEditor and RichText support images through
156
+ `useRichTextImages`: the consumer owns `upload(file, { signal })`; the library
157
+ owns toolbar, paste and drop insertion, the upload placeholder, cancel, retry
158
+ and remove, type and size limits, alt text and the http/https/blob/relative
159
+ source policy. `renderImage` draws read-only images with the consumer's
160
+ component.
161
+ - **RichTextEditor runs Tiptap.** Its runtime check required `EditorContent`
162
+ to be a function, but Tiptap 3 exports it as `React.memo`, so every editor
163
+ (rich text, comment, activity and email composers) silently rendered the
164
+ contenteditable fallback with formatting disabled. Picking a mention in Tiptap
165
+ now replaces its `@query` instead of appending after it, and the editor chip
166
+ keeps the `.rsc-mention` hook, so mention-chip.css draws it in both engines.
167
+ - **Mentions insert as atomic badge chips** removed by one Backspace. The
168
+ suggestion list and picker are more compact, and kind filters use the shared
169
+ toggle style.
170
+ - **Global search** builds its field on the public `InputGroup` and lays out
171
+ results, group headings and the footer with the compact Command recipe.
172
+ - **Activities open compact.** Rich rows show the headline and description;
173
+ metadata, changes, details, resource chips and inline actions appear together
174
+ behind "Show details".
175
+ - **Comments** no longer leave an empty band under each comment's action row.
176
+ - **Choice inputs centre on the label line.** Checkbox, radio, switch and
177
+ selected-card checks share one label-line track (questionnaire,
178
+ ApiTokenManager, card groups).
179
+ - **One plain X clears fields.** Input, Textarea, Cascader, Combobox and global
180
+ search clear actions, and TagsInput and Combobox chip removes, draw a plain X
181
+ instead of a circled X.
182
+ - **Cascader** draws Input's field frame and the shared Combobox affordance
183
+ track; its clear sits beside a chevron aligned with Select's.
184
+ - **Visual: Badge `sm` and `md` are 2px taller** (20px and 23px) at the same
185
+ type size; inline badges are unchanged, and TagsInput chips follow.
186
+ - **NavigationTabs** keeps the current tab lifted under hover and press;
187
+ inactive tabs change colour only.
188
+ - **SignaturePad** draws, exports and previews typed names in the pad's font
189
+ (theme sans by default) instead of `cursive`, and fits long names by font
190
+ size; `signaturePadToSVG` accepts an optional `fontFamily`.
191
+ - **Fixes:** Dropzone centres both copy lines; IconBadge sizes child glyphs with
192
+ its icon role (SmartAccordion medallions render at 16px); Alert's icon and
193
+ action columns use Toast's 8px gap; content typography fits images to the
194
+ column.
195
+ - **Catalogue:** the deprecated Sheet page, the products main-column, actions
196
+ and support-rail pages and the sync page are retired; their URLs redirect to
197
+ the overlays, product overview and SchemaForm pages.
198
+ - **BatchActionBar** (`themelia-react-ui/base/batch-action-bar`): one selection
199
+ bar with a count, bulk actions and Clear, `floating` (docked, lifted, opaque)
200
+ or `inline`. The count is a polite live region, Escape inside the bar clears,
201
+ and focus returns to the list (or `returnFocusRef`) when the bar goes away.
202
+ DataTable, product variants and MediaLibrary's new `bulkActions` use it; the
203
+ old sticky selection toolbar and its overlap with the sticky topbar are gone.
204
+ - **Order blocks** in `blocks/commerce`: `OrderHeader` (payment and fulfilment
205
+ status axes), `FulfillmentGroup`, `OrderLineItem`, `OrderSummary`,
206
+ `OrderTransactions` and `OrderCustomer`, with an Orders catalogue group and an
207
+ Order detail composition. The shared money ledger `SummaryPanel` and
208
+ `AmountRow` now draw CartSummaryCard, TaxBreakdownCard, DiscountStackPreview,
209
+ InvoiceHeader and OrderSummary: no tinted box, one rule above a grand total.
210
+ - **Commerce blocks follow the source kit.** ShipmentTracking has a copyable
211
+ tracking number (`onCopyTracking`) and a timestamped checkpoint rail whose
212
+ current step is `aria-current="step"`; RefundStatusCard is an ordered list of
213
+ stages; PaymentMethod gains `variant="row"` and speaks `strings.formatCard`
214
+ ("Visa ending 4242"); CartSummaryCard falls back to initials on a failed image
215
+ and adds `strings.formatQuantity`; DiscountStackPreview takes an optional
216
+ `kind` and `id`. Blocks pass native attributes to their root. `CartSummary`,
217
+ `DiscountStack`, `RefundStatus` and `PaymentMethodCard` are added as the source
218
+ kit's names for the same components. `Timeline` items expose `data-status` and
219
+ mark the current item `aria-current="step"`.
220
+ - **MetadataList** labels wrap in every layout and stay semibold; inline
221
+ `itemSeparator` is a middle dot hidden from screen readers; `render` output
222
+ takes the value style; the info trigger no longer grows its line; `icon` takes
223
+ any `ComponentType<{ className?: string }>`.
224
+ - **TagsInput fixes.** Multi-tag paste commits every tag, `sortTags` removes the
225
+ right tag, object tags are created from an empty value, a refused entry no
226
+ longer traps Tab, IME composition no longer commits, a typed delimiter splits,
227
+ single-token paste is native, and focus moves to the neighbouring chip after a
228
+ removal. Refused entries stay in the draft and are announced
229
+ (`strings.notAdded`). New `defaultValue`, `name` (hidden `name[]` inputs) and
230
+ ARIA pass-through; `TagsInputStrings` and `defaultTagsInputStrings` are
231
+ exported.
232
+ - **Order and commerce block fixes.** ShipmentTracking marks no checkpoint
233
+ current before the parcel reaches the first one. FulfillmentGroup keeps its
234
+ `items` rows when a conditional `children` renders nothing, takes Card's
235
+ default rules instead of forcing them, and accepts `headerDivider` /
236
+ `footerDivider`. OrderTransactions signs only money that moved (a failed
237
+ refund shows no minus), spells each kind out without a glyph tile or tinted
238
+ row, and draws no frame of its own inside a card. PaymentMethod's `row`
239
+ variant drops the credit-card tile, which misnamed wallets. Order status chips
240
+ match the rest of the library (no dot), and InvoiceHeader shows its dates as
241
+ facts rather than money rows.
242
+ - **Item as a button or link.** An `Item` given `render` renders its media,
243
+ content, title, description, actions, header and footer as spans, so a
244
+ button row holds valid phrasing content. Layout and `data-slot` hooks are
245
+ unchanged.
246
+ - **Theme fixes.** Light `--sidebar-primary` and its foreground follow
247
+ `--primary`, as dark already did, so a brand theme colours the sidebar
248
+ selection in both modes (the default theme is unchanged). `themes/green.css`
249
+ drops its `--chart-1` override, which restated the default. Theme Studio's
250
+ light warning accent matches the shipped token again.
251
+ - **Filter pill focus.** Active filter segments draw the inset focus recipe
252
+ instead of clearing the ring, so keyboard focus no longer looks like hover.
253
+ - **Icons follow `--icon`.** Sidebar, tabs, breadcrumb, item media, pagination,
254
+ avatar-group, toaster and chart-legend icons use the `size-icon*` roles
255
+ instead of fixed sizes; at the default `--icon` nothing moves.
256
+ - **Design checks.** Design lint judges every `*ClassName` slot prop like
257
+ `className`, adds an `icon-size` rule, and rejects a cleared focus ring with
258
+ no replacement edge. `check:contract` adds theme-mode checks: one value per
259
+ mode, mode-dependent aliases restated in `.dark`, no role that follows another
260
+ in one mode while copying its value in the other, and no brand-theme no-ops.
261
+ - **One owner for shared geometry.** The clear-target size, the action and
262
+ control size steps and the corner formulas that fields, the sidebar, toasts,
263
+ calendars, the key-value editor and MetadataList each wrote by hand now come
264
+ from the generated `affordanceGeometry` recipes, and `check:contract` keeps
265
+ the rich-content corners on the same formulas as the radius tokens. The
266
+ sidebar's collapsed and off-canvas widths are defined once by
267
+ `shell-sidebar-vars`; Workspace's sidebar column reads `--shell-sidebar-width`;
268
+ the mobile range-calendar cell follows density; the toaster's corner is the
269
+ shell radius role. BatchActionBar's dock offset and MetadataList's info target
270
+ no longer read `:root`-resolved aliases, so a scoped `ThemeScope` spacing or
271
+ density reaches them, and a new `root-alias` design-lint rule keeps such reads
272
+ out.
273
+ - **Shared components instead of hand-built copies.** AI, metric, giftcard and
274
+ checklist blocks frame with `Card` instead of hand-built shells; progress bars
275
+ across blocks and features are `Progress`; avatar, step and status discs are
276
+ `IconBadge`, `Avatar` or Badge `dot`; count pills and resource chips are
277
+ `Badge`; the media facts list is `MetadataList`; spacing chains are `Stack`
278
+ gaps; the map card uses the popover surface recipe and the AI prompt frame the
279
+ shared field-state recipes. MetricComparison drops its nested tiles.
280
+ - **Table density.** Base `Table` takes `density` (`compact`, `default`,
281
+ `comfortable`; also `data-density` on the table) and owns head and cell
282
+ insets; DataTable passes its `size` through it instead of overriding cells,
283
+ and headers lose the fixed `h-12`, so they follow density. Consumer
284
+ `cellClassName` padding now wins.
285
+ - **Typography through props.** `InlineStat` takes `valueWeight` and renders its
286
+ value in the provider text size; `AiShimmer` takes `size`; field labels share
287
+ one line box (`formLabelLineClass`); link-styled text shares the 0.2em
288
+ underline offset; library components set size, weight and leading through
289
+ `Text`/`Heading` props, and `no-restyle` now enforces that in library code.
290
+ - **Shared recipes for repeated choices.** Anchored surfaces (popovers, menus,
291
+ Select, Combobox, map and chart popups) take their viewport bound from the
292
+ shared surface recipe, and their widths from one `popoverWidthRecipes` scale;
293
+ the kanban card menu widens from 11rem to 12rem, the default filter popover
294
+ from 16rem to 18rem and ActionMenu's minimum from 9rem to 10rem. Status dots
295
+ use `dotRecipes` (6px beside text, 8px as a marker). The unread and stale
296
+ `theme` section of the token contract is removed.
297
+ - **Tabs chips.** `TabsList` takes `variant="chips"`: wrapping, trackless toggle
298
+ chips with the muted hover and accent pressed fill. Saved views and filter
299
+ presets use it instead of overriding the default track.
300
+ - **Smaller shared pieces.** AI source and citation numbers sit in `IconBadge`
301
+ (24px, up from a 20px hand-built disc). Native buttons that draw their own
302
+ shape start from `interactionRecipes.nativeButtonReset`.
303
+ - **Appointment calendar.** New `features/appointment-calendar` entrypoint:
304
+ `AppointmentCalendar` puts a month with category dots beside the day or week
305
+ agenda, with category and staff filters, booked and conflict counts and a
306
+ dismissible double-booking alert. Overlaps are found per staff member across
307
+ every category. `onAppointmentClick` opens a row, `appointmentActions` adds a
308
+ per-row commands menu, `onRangeChange` reports the days on screen for loading,
309
+ and `loading`, `error` and `onRetry` cover the agenda's states.
310
+ `renderAppointment` renders custom rows from a context with the category
311
+ colour, conflict, status, time, `open`, actions, a ready actions menu and
312
+ `defaultRender`; the calendar is generic over the app's appointment type.
313
+ `appointmentsOn`, `filterAppointments` and `findConflicts` are exported for
314
+ apps that pre-compute their own view.
315
+ - **Editor body height.** RichTextEditor takes `bodyHeight` (`control`, `field`
316
+ or `document`); `minHeight` still wins. The comment composer uses `field`, so
317
+ its empty editor is one textarea tall, 1rem taller than before.
318
+
3
319
  ## 2.0.1 — 2026-10-18
4
320
 
5
321
  One shared recipe and design-lint rule for each visual state, the fixes the new
@@ -11,17 +327,7 @@ SettingsShell, and `primaryAction` on WorkspaceRecordHeader;
11
327
  `toPageHeaderAction` in `services/actions`; an optional `toggle` flag on
12
328
  `ToolbarButtonConfig` and `RichTextEditorToolbarItem`; `context` on
13
329
  `ActionMenu` (`ActionMenuContext`); an optional `actions.menuLabel` in DataTable
14
- strings; `align` on ConfirmDialog and ActionDialog with UIProvider overlay
15
- defaults; `selecting`, `defaultSelecting`, `onSelectingChange` and `onItemOpen`
16
- on MediaLibrary; `useRichTextImages` and `images` on RichTextEditor and
17
- RichText; the `themelia-react-ui/base/metadata-list` entrypoint; an optional
18
- `fontFamily` on `signaturePadToSVG`; the `themelia-react-ui/base/batch-action-bar`
19
- entrypoint; the order blocks, `SummaryPanel` and `AmountRow` in `blocks/commerce`;
20
- `valueAlign` on MetadataList; `defaultValue`, `name` and ARIA props on TagsInput.
21
- `PageActions`, `PageAction`,
22
- `toPageAction`, `features/sync`, the standalone product region cards, the
23
- `blocks/data-display` MetadataList exports and `ActivityRow` `moreLabel` are
24
- deprecated.
330
+ strings. `PageActions`, `PageAction` and `toPageAction` are deprecated.
25
331
 
26
332
  ### Upgrading from 2.0.0
27
333
 
@@ -57,46 +363,6 @@ deprecated.
57
363
  instead of a status colour or a solid primary fill. `HighlightedText`'s
58
364
  default `highlightClassName` is the shared match mark: foreground text on the
59
365
  warning tint.
60
- - **MetadataList moved to base.** Import `MetadataList`, its item types and
61
- default strings from `themelia-react-ui/base/metadata-list`. The
62
- `themelia-react-ui/blocks/data-display` re-exports keep working and are
63
- deprecated. Labels render semibold.
64
- - **MediaLibrary opens before it selects.** Activating an asset (click, Enter,
65
- Space) calls `onItemOpen` or shows the details panel. Selection is an explicit
66
- mode: `selecting`, `defaultSelecting` and `onSelectingChange`. Picker dialogs
67
- start selecting; pass `defaultSelecting` where a library relied on selecting
68
- by default.
69
- - **ConfirmDialog is centred.** ConfirmDialog and ActionDialog accept
70
- `align: 'start' | 'center'`, resolved from the prop, then the UIProvider
71
- `overlay.defaultConfirmAlign` / `overlay.defaultDialogAlign` defaults, then
72
- center for ConfirmDialog and start for ActionDialog.
73
- - **Deprecated: `themelia-react-ui/features/sync`.** `SyncRangeDialogForm` is
74
- application-specific; use `SchemaForm` with `radio-cards` and
75
- `checkbox-cards` fields. The entrypoint still ships.
76
- - **Deprecated: standalone product region cards and row menus.** Render them
77
- through `ProductOverview` slots and the `renderOptionActions` /
78
- `renderVariantActions` options. They stay exported.
79
- - **Deprecated: `ActivityRow` `moreLabel`.** The collapsed metadata preview it
80
- labelled is gone; secondary detail opens with the details disclosure.
81
- - **Selection bars are a `BatchActionBar`.** DataTable's default selection
82
- toolbar now docks to the bottom of the viewport (`floating`); pass
83
- `selectionToolbarPlacement="inline"` to keep it in the table. Its summary and
84
- the new `totalRowCount` prop default to `pagination.total`, so server-paginated
85
- tables count the whole result. Product variant tables show an inline bar only
86
- while variants are selected; `renderBulkActions` now replaces the default
87
- commands, as documented (return `null` to keep them), and Delete no longer
88
- repeats the count.
89
- - **MetadataList rows.** `layout="rows"` draws rules only with `itemSeparator`,
90
- and values start their column on `2fr/3fr` tracks. Pass `valueAlign="end"` for
91
- the previous right-aligned figures, such as money columns.
92
- - **TagsInput.** Chips sit inside the field, before the text input in Tab order;
93
- the count and clear-all move to a footer under the field, and the placeholder
94
- shows only while the field is empty. The input stays enabled at `maxTags`.
95
- - **Commerce DOM hooks.** RefundStatusCard, CartSummaryCard,
96
- DiscountStackPreview, TaxBreakdownCard and ShipmentTracking render on `Card`
97
- and lose the `content-block--*` classes and `data-component="content-block"`;
98
- their own `--component` classes stay. ShipmentTracking and InvoiceHeader show
99
- a visible title with the status chip in its suffix.
100
366
 
101
367
  ### Changes
102
368
 
@@ -270,86 +536,6 @@ deprecated.
270
536
  clipped mid-glyph instead: an applied coupon `SPRING2026` read as `SPRING202`.
271
537
  Truncating titles in citations, vendor profiles, gift cards and attachments
272
538
  benefit too. The applied coupon also carries its full code as a `title`.
273
- - **Overlays draw one rule per region boundary.** ActionDialog, ActionDrawer
274
- and ConfirmDialog separate header, body and footer with a rule, and a dialog
275
- without a body shows a single rule.
276
- - **Rich text images.** RichTextEditor and RichText support images through
277
- `useRichTextImages`: the consumer owns `upload(file, { signal })`; the library
278
- owns toolbar, paste and drop insertion, the upload placeholder, cancel, retry
279
- and remove, type and size limits, alt text and the http/https/blob/relative
280
- source policy. `renderImage` draws read-only images with the consumer's
281
- component.
282
- - **RichTextEditor runs Tiptap.** Its runtime check required `EditorContent`
283
- to be a function, but Tiptap 3 exports it as `React.memo`, so every editor
284
- (rich text, comment, activity and email composers) silently rendered the
285
- contenteditable fallback with formatting disabled. Picking a mention in Tiptap
286
- now replaces its `@query` instead of appending after it, and the editor chip
287
- keeps the `.rsc-mention` hook, so mention-chip.css draws it in both engines.
288
- - **Mentions insert as atomic badge chips** removed by one Backspace. The
289
- suggestion list and picker are more compact, and kind filters use the shared
290
- toggle style.
291
- - **Global search** builds its field on the public `InputGroup` and lays out
292
- results, group headings and the footer with the compact Command recipe.
293
- - **Activities open compact.** Rich rows show the headline and description;
294
- metadata, changes, details, resource chips and inline actions appear together
295
- behind "Show details".
296
- - **Comments** no longer leave an empty band under each comment's action row.
297
- - **Choice inputs centre on the label line.** Checkbox, radio, switch and
298
- selected-card checks share one label-line track (questionnaire,
299
- ApiTokenManager, card groups).
300
- - **One plain X clears fields.** Input, Textarea, Cascader, Combobox and global
301
- search clear actions, and TagsInput and Combobox chip removes, draw a plain X
302
- instead of a circled X.
303
- - **Cascader** draws Input's field frame and the shared Combobox affordance
304
- track; its clear sits beside a chevron aligned with Select's.
305
- - **Visual: Badge `sm` and `md` are 2px taller** (20px and 23px) at the same
306
- type size; inline badges are unchanged, and TagsInput chips follow.
307
- - **NavigationTabs** keeps the current tab lifted under hover and press;
308
- inactive tabs change colour only.
309
- - **SignaturePad** draws, exports and previews typed names in the pad's font
310
- (theme sans by default) instead of `cursive`, and fits long names by font
311
- size; `signaturePadToSVG` accepts an optional `fontFamily`.
312
- - **Fixes:** Dropzone centres both copy lines; IconBadge sizes child glyphs with
313
- its icon role (SmartAccordion medallions render at 16px); Alert's icon and
314
- action columns use Toast's 8px gap; content typography fits images to the
315
- column.
316
- - **Catalogue:** the deprecated Sheet page, the products main-column, actions
317
- and support-rail pages and the sync page are retired; their URLs redirect to
318
- the overlays, product overview and SchemaForm pages.
319
- - **BatchActionBar** (`themelia-react-ui/base/batch-action-bar`): one selection
320
- bar with a count, bulk actions and Clear, `floating` (docked, lifted, opaque)
321
- or `inline`. The count is a polite live region, Escape inside the bar clears,
322
- and focus returns to the list (or `returnFocusRef`) when the bar goes away.
323
- DataTable, product variants and MediaLibrary's new `bulkActions` use it; the
324
- old sticky selection toolbar and its overlap with the sticky topbar are gone.
325
- - **Order blocks** in `blocks/commerce`: `OrderHeader` (payment and fulfilment
326
- status axes), `FulfillmentGroup`, `OrderLineItem`, `OrderSummary`,
327
- `OrderTransactions` and `OrderCustomer`, with an Orders catalogue group and an
328
- Order detail composition. The shared money ledger `SummaryPanel` and
329
- `AmountRow` now draw CartSummaryCard, TaxBreakdownCard, DiscountStackPreview,
330
- InvoiceHeader and OrderSummary: no tinted box, one rule above a grand total.
331
- - **Commerce blocks follow the source kit.** ShipmentTracking has a copyable
332
- tracking number (`onCopyTracking`) and a timestamped checkpoint rail whose
333
- current step is `aria-current="step"`; RefundStatusCard is an ordered list of
334
- stages; PaymentMethod gains `variant="row"` and speaks `strings.formatCard`
335
- ("Visa ending 4242"); CartSummaryCard falls back to initials on a failed image
336
- and adds `strings.formatQuantity`; DiscountStackPreview takes an optional
337
- `kind` and `id`. Blocks pass native attributes to their root. `CartSummary`,
338
- `DiscountStack`, `RefundStatus` and `PaymentMethodCard` are added as the source
339
- kit's names for the same components. `Timeline` items expose `data-status` and
340
- mark the current item `aria-current="step"`.
341
- - **MetadataList** labels wrap in every layout and stay semibold; inline
342
- `itemSeparator` is a middle dot hidden from screen readers; `render` output
343
- takes the value style; the info trigger no longer grows its line; `icon` takes
344
- any `ComponentType<{ className?: string }>`.
345
- - **TagsInput fixes.** Multi-tag paste commits every tag, `sortTags` removes the
346
- right tag, object tags are created from an empty value, a refused entry no
347
- longer traps Tab, IME composition no longer commits, a typed delimiter splits,
348
- single-token paste is native, and focus moves to the neighbouring chip after a
349
- removal. Refused entries stay in the draft and are announced
350
- (`strings.notAdded`). New `defaultValue`, `name` (hidden `name[]` inputs) and
351
- ARIA pass-through; `TagsInputStrings` and `defaultTagsInputStrings` are
352
- exported.
353
539
 
354
540
  ## 2.0.0 — 2026-10-16
355
541
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A publishable React UI package built on Base UI and Tailwind, with shadcn-compatible themes and Themelia's public APIs. Routing, persistence, permissions and translations remain consumer-owned.
4
4
 
5
- Package: **`themelia-react-ui`** · current version: **`2.0.1`** · MIT licensed.
5
+ Package: **`themelia-react-ui`** · current version: **`2.0.3`** · MIT licensed.
6
6
  The GitHub repository is `themelia-react-ui`; npm imports use `themelia-react-ui`.
7
7
 
8
8
  Consuming apps start with [consumer setup](#consumer-setup) and the packaged
@@ -41,12 +41,27 @@ Browser verification requires Playwright Chromium. An existing executable can be
41
41
 
42
42
  ## Consumer setup
43
43
 
44
- Install a built tarball; use a registry release when available. React 19, React DOM 19, Base UI 1.8+ and Lucide React 1 are required peers. Import exact family paths; there is no aggregate component barrel or public raw UI entrypoint.
44
+ Install a built tarball; use a registry release when available. React 19, React DOM 19, the declared Base UI peer and Lucide React 1 are required peers. Import exact family paths; there is no aggregate component barrel or public raw UI entrypoint.
45
+
46
+ Nested light/dark utilities use custom-property container style queries. Use
47
+ Chromium 111+, Safari 18.1+ or Firefox 151+ for this theme behavior. The nearest
48
+ mode class governs nested components and their scoped portals; see the
49
+ [theme guide](docs/consumer-skill/references/theming.md) for partial overrides.
50
+
51
+ Version 2.0.3 uses official `@base-ui/react ^1.9.0` from npm. Themelia's
52
+ `ComboboxRoot.dismissLabel` and feature `strings.dismiss` name both screen-reader
53
+ dismissal controls. Shared popup owners preserve focus restored to a child
54
+ trigger during deferred parent recovery. These behaviors are library-owned;
55
+ consumers install the unmodified official Base UI package.
56
+
57
+ ```sh
58
+ npm install ./themelia-react-ui-2.0.3.tgz '@base-ui/react@^1.9.0' lucide-react
59
+ ```
45
60
 
46
61
  After the initial registry release, install into a React 19 application with:
47
62
 
48
63
  ```sh
49
- npm install themelia-react-ui @base-ui/react lucide-react
64
+ npm install themelia-react-ui '@base-ui/react@^1.9.0' lucide-react
50
65
  ```
51
66
 
52
67
  ```tsx
@@ -95,7 +110,7 @@ The shipped stylesheet follows `prefers-reduced-motion` automatically for these
95
110
  | Base | `base/<family>` — controls, forms, buttons, cards, structure, navigation, menus, feedback, display, tables, uploads and specialist controls |
96
111
  | Layout | `layout`, `layout/<family>` — application shell, authentication, containers, page, settings, header, navigation, sidebar, workspace and hooks |
97
112
  | Blocks | `blocks/admin`, `ai`, `analytics`, `commerce`, `data-display`, `onboarding`, `timelines` (each prefixed `blocks/`) |
98
- | Features | `features/activities`, `ai-chat`, `async-preview`, `combobox`, `comments`, `data-view`, `email-composer`, `event-calendar`, `filters`, `global-search`, `kanban`, `map`, `media-library`, `mentions`, `overlays`, `products`, `resource`, `resource-assignment`, `rich-text-editor`, `schema-form`, `suggestions`, `sync` (deprecated), `table`, `theme-tweaker` (each prefixed `features/`) |
113
+ | Features | `features/activities`, `ai-chat`, `appointment-calendar`, `async-preview`, `combobox`, `comments`, `data-view`, `email-composer`, `event-calendar`, `filters`, `global-search`, `kanban`, `map`, `media-library`, `mentions`, `overlays`, `products`, `resource`, `resource-assignment`, `rich-text-editor`, `schema-form`, `suggestions`, `sync` (deprecated), `table`, `theme-tweaker` (each prefixed `features/`) |
99
114
 
100
115
  The complete machine-readable entry inventory is `scripts/entries.json`. Dialogs and confirmations use `ActionDialog`, `ActionDrawer`, `ConfirmDialog` and visibility/action hooks from `features/overlays`.
101
116
 
@@ -201,7 +216,7 @@ The default development URL opens the full component catalogue. The focused foun
201
216
 
202
217
  `Button` separates `tone` from `buttonStyle` (`solid`, `outline`, `ghost`); the catalogue shows their matrix, sizes and loading/disabled states. Icon-only controls may omit children when an accessible label or tooltip is supplied. Badges use compact typography and insets rather than inheriting action geometry.
203
218
 
204
- Use `titleSuffix` for card status, count and version badges. `headerStart` is full-width pre-title context, and `headerAction`/`actions` own controls. Card owns token-spaced title/suffix wrapping for all surface modes. Give a card one quick control in `headerAction`, a command list in `actions` (its More actions menu) and the commit action in `footerSlot`; spacing, not a divider, separates the footer. Reserve body actions for a specific content step. Card owns aligned card insets, frames and expand/collapse behavior; Use `Card surface="flat" padding="none"` for card-free content hierarchy. ChartCard exposes `titleSuffix` too. Use `headerPlacement="frame"` for a header above an inset body. SmartCard and ContentBlock remain deprecated migration adapters; new code uses Card.
219
+ Use `titleSuffix` for card status, count and version badges. `headerStart` is full-width pre-title context, and `headerAction`/`actions` own controls. Card owns token-spaced title/suffix wrapping for all surface modes. Give a card one quick control in `headerAction`, a command list in `actions` (its More actions menu) and the commit action in `footerSlot`; a framed card rules the footer off by default. Reserve body actions for a specific content step. Card owns aligned card insets, frames and expand/collapse behavior; Use `Card surface="flat" padding="none"` for card-free content hierarchy. ChartCard exposes `titleSuffix` too. Use `headerPlacement="frame"` for a header above an inset body. SmartCard and ContentBlock remain deprecated migration adapters; new code uses Card.
205
220
 
206
221
  Application drawers use `ActionDrawer` and `useOverlayVisibility` from `themelia-react-ui/features/overlays`. Sheet is the structural foundation and remains available for lower-layer infrastructure and compatibility.
207
222
 
@@ -222,9 +237,10 @@ entries stay last.
222
237
  Page owns inline and block padding, defaulting to the large surface role;
223
238
  PageViewport owns scrolling and supplies no inset. Use `Page narrow` for a
224
239
  centered single resource; explicit `maxWidth` wins. Page headers use dense copy
225
- gaps. Ordinary cards retain default `md` padding and separate header, body and
226
- footer by spacing; `card.defaultHeaderDivider` and `card.defaultFooterDivider`
227
- remain for an app whose design calls for rules.
240
+ gaps. Ordinary framed cards retain default `md` padding and rule header, body and
241
+ footer apart by default; flat, card-free structure draws no rule unless asked. Set
242
+ `card.defaultHeaderDivider` and `card.defaultFooterDivider` to `false` for an app
243
+ that separates card regions by spacing alone.
228
244
  AppSidebar offers pinned `slots.headerStart`/`headerEnd` around its workspace
229
245
  region, compact navigation and a separated footer. The
230
246
  [complete shell recipe](docs/consumer-skill/examples/app-layout.tsx) demonstrates
@@ -289,7 +305,7 @@ purpose from its name or read every document before starting a screen.
289
305
 
290
306
  Maintainers run `npm run docs:sync-skill` after changes to exports, types, selection guidance, peers or tokens. `npm run check:skill` requires a fresh library build and rejects stale source-backed references, built declaration exports and broken reference links. `prepack` checks source-backed references without rebuilding; `prepublishOnly` builds fresh assets and verifies built guidance. `check:package` verifies the complete shipped skill, strictly compiles the basic recipes without optional peers and every recipe with its required peers, and executes installed shell/resource-page and workflow checks.
291
307
 
292
- Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/2.0.1/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
308
+ Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/2.0.3/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
293
309
 
294
310
  `npm run check:agent` runs focused agent-consumption fixtures and built skill alignment. `npm run check:release` performs the real serial local build/package/browser/agent/static-documentation gate; it does not publish or deploy. `npm run check:quick` runs the everyday core (contract, lint, design lint, typecheck, unit tests, build). See the [release guide](docs/releasing.md) and [draft changelog](CHANGELOG.md). There is no hosted CI; every check runs locally, when you choose. These commands verify locally; publication and deployment remain separate actions.
295
311
 
@@ -27,6 +27,13 @@ SOFTWARE.
27
27
 
28
28
  External dependencies retain their own licenses and notices in their packages.
29
29
 
30
+ ## Base UI
31
+
32
+ The required `@base-ui/react ^1.9.0` peer uses the unmodified official npm
33
+ distribution from [Base UI](https://github.com/mui/base-ui), licensed under MIT.
34
+ Its package retains the upstream copyright and permission notice. Themelia
35
+ does not distribute a fork or a companion Base UI archive.
36
+
30
37
  ## Email composer reference
31
38
 
32
39
  The email composer public types and HTTP adapter adapt the supplied MIT-licensed
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "./lib/strings.js";
3
- import { t } from "./utils-l5LpDw2z.js";
4
- import { s as n } from "./typography-DTRkE9zL.js";
3
+ import { t } from "./utils-BRhFDwuU.js";
4
+ import { c as n } from "./typography-UTnveOEy.js";
5
5
  import { t as r } from "./focus-recipes-B653VaLq.js";
6
6
  import { t as i } from "./motion-recipes-ChBg4HBq.js";
7
- import { t as a } from "./structure-DC2dygdA.js";
8
- import { t as o } from "./interaction-recipes-CHr0dJUs.js";
7
+ import { t as a } from "./structure-BmisBK-3.js";
8
+ import { t as o } from "./interaction-recipes-XR9ZpVYL.js";
9
9
  import { t as s } from "./disclosure-panel-B0HFNZ9x.js";
10
- import { t as c } from "./icon-badge-CAuKupo9.js";
10
+ import { t as c } from "./icon-badge-DYKIwvOV.js";
11
11
  import * as l from "react";
12
12
  import { forwardRef as u } from "react";
13
13
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
@@ -45,7 +45,7 @@ function _({ className: e, children: n, ...r }) {
45
45
  function v({ className: e, children: n, render: r, ...a }) {
46
46
  return /* @__PURE__ */ d(m.Panel, {
47
47
  "data-slot": "accordion-content",
48
- className: t("accordion-content--component box-border text-foreground h-(--accordion-panel-height)", i.disclosure, e),
48
+ className: t("accordion-content--component box-border text-inherit h-(--accordion-panel-height)", i.disclosure, e),
49
49
  ...a,
50
50
  render: (e, t) => /* @__PURE__ */ d(s, {
51
51
  props: e,
@@ -61,7 +61,7 @@ function v({ className: e, children: n, render: r, ...a }) {
61
61
  var y = l.forwardRef(function({ className: e, ...n }, r) {
62
62
  return /* @__PURE__ */ d(h, {
63
63
  ref: r,
64
- className: t("accordion--component rounded-radius border-border bg-card", e),
64
+ className: t("accordion--component rounded-radius border-border bg-card text-card-foreground", e),
65
65
  ...n
66
66
  });
67
67
  });
@@ -78,7 +78,7 @@ var x = l.forwardRef(function({ className: e, children: i, ...a }, s) {
78
78
  let c = typeof i == "string" || typeof i == "number" || typeof i == "bigint";
79
79
  return /* @__PURE__ */ d(_, {
80
80
  ref: s,
81
- className: t("accordion-trigger--component min-h-action items-center gap-space-lg px-row-x py-row-y", `text-start text-sm font-medium transition-colors ${o.rowHover} hover:no-underline`, `focus-visible:z-10 ${r.inset}`, e),
81
+ className: t("accordion-trigger--component min-h-action items-center gap-space-lg px-row-x py-row-y", `text-start text-inherit text-sm font-medium transition-colors ${o.rowHover} hover:no-underline`, `focus-visible:z-10 ${r.inset}`, e),
82
82
  ...a,
83
83
  children: c ? /* @__PURE__ */ d(n, {
84
84
  tag: "span",
@@ -110,11 +110,11 @@ S.displayName = "AccordionContent";
110
110
  //#endregion
111
111
  //#region src/components/base/accordion/accordion-variants.ts
112
112
  var C = {
113
- card: "gap-space-md border-0 rounded-none bg-transparent overflow-visible",
114
- bordered: "rounded-radius border border-border bg-card overflow-hidden",
115
- flat: "border-0 rounded-none bg-transparent overflow-visible"
113
+ card: "gap-space-md border-0 rounded-none bg-transparent text-inherit overflow-visible",
114
+ bordered: "rounded-radius border border-border bg-card text-card-foreground overflow-hidden",
115
+ flat: "border-0 rounded-none bg-transparent text-inherit overflow-visible"
116
116
  }, w = {
117
- card: "border border-border bg-card rounded-radius overflow-hidden",
117
+ card: "border border-border bg-card text-card-foreground rounded-radius overflow-hidden",
118
118
  bordered: "bg-transparent not-last:border-b border-border",
119
119
  flat: "border-0 not-last:border-b-0 bg-transparent rounded-radius overflow-hidden"
120
120
  }, T = "items-center gap-space-lg px-row-x py-row-y text-start hover:no-underline", E = {
@@ -153,6 +153,7 @@ var C = {
153
153
  className: "flex min-w-0 flex-wrap items-center gap-x-space-md gap-y-space-xs",
154
154
  children: [k(e.title) ? /* @__PURE__ */ d(n, {
155
155
  tag: "span",
156
+ type: "inherit",
156
157
  weight: "semibold",
157
158
  className: "smart-accordion--title min-w-0",
158
159
  children: e.title
@@ -204,4 +205,4 @@ function A({ iconStyle: e, icon: n, reserveSpace: r }) {
204
205
  //#endregion
205
206
  export { C as a, S as c, w as i, b as l, D as n, T as o, E as r, y as s, O as t, x as u };
206
207
 
207
- //# sourceMappingURL=accordion-B6a3vVgA.js.map
208
+ //# sourceMappingURL=accordion-Cjb6sx0G.js.map