themelia-ui 3.0.0 → 3.1.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 (709) hide show
  1. package/.agents/skills/themelia-ui/SKILL.md +27 -29
  2. package/.agents/skills/themelia-ui/references/api-compatibility.md +3 -3
  3. package/.agents/skills/themelia-ui/references/composition.md +2 -18
  4. package/.agents/skills/themelia-ui/references/framework-wiring.md +8 -8
  5. package/.agents/skills/themelia-ui/references/imports.md +104 -104
  6. package/.agents/skills/themelia-ui/references/installation.md +55 -27
  7. package/.agents/skills/themelia-ui/references/migration.md +136 -5
  8. package/.agents/skills/themelia-ui/references/provider-and-scoping.md +13 -19
  9. package/.agents/skills/themelia-ui/references/theming.md +170 -131
  10. package/.agents/skills/themelia-ui/references/troubleshooting.md +62 -27
  11. package/.agents/skills/themelia-ui/references/verification.md +2 -3
  12. package/CHANGELOG.md +187 -0
  13. package/README.md +45 -60
  14. package/dist/accordion-CHuzMmWL.js +143 -0
  15. package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
  16. package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Bmo1YrTm.js} +1 -1
  17. package/dist/avatar-Dc_BNYfB.js +93 -0
  18. package/dist/badge-VlJVZjdm.js +45 -0
  19. package/dist/base/accordion.js +1 -1
  20. package/dist/base/action-menu.js +1 -1
  21. package/dist/base/alert-dialog.js +1 -1
  22. package/dist/base/aspect-ratio.js +3 -1
  23. package/dist/base/avatar.js +1 -1
  24. package/dist/base/badge.js +2 -2
  25. package/dist/base/batch-action-bar.js +1 -1
  26. package/dist/base/buttons.js +1 -1
  27. package/dist/base/cards.js +1 -1
  28. package/dist/base/carousel.js +6 -4
  29. package/dist/base/chart.js +1 -1
  30. package/dist/base/choice-inputs.js +1 -1
  31. package/dist/base/combobox.js +1 -1
  32. package/dist/base/command.js +1 -1
  33. package/dist/base/context-menu.js +22 -21
  34. package/dist/base/copyable.js +1 -1
  35. package/dist/base/date-pickers.js +1 -1
  36. package/dist/base/dialog.js +1 -1
  37. package/dist/base/display.js +1 -1
  38. package/dist/base/dropdown-menu.js +1 -1
  39. package/dist/base/feedback.js +1 -1
  40. package/dist/base/forms-numeric.js +1 -1
  41. package/dist/base/forms.js +1 -1
  42. package/dist/base/hover-card.js +26 -23
  43. package/dist/base/input-group.js +1 -1
  44. package/dist/base/item.js +1 -1
  45. package/dist/base/label.js +1 -1
  46. package/dist/base/menubar.js +20 -14
  47. package/dist/base/navigation-menu.js +47 -38
  48. package/dist/base/navigation.js +1 -1
  49. package/dist/base/otp-input.js +36 -30
  50. package/dist/base/overlay.js +1 -1
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +51 -47
  54. package/dist/base/repeaters.js +1 -1
  55. package/dist/base/resizable.js +2 -0
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/skeleton.js +1 -1
  59. package/dist/base/spinner.js +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +1 -1
  63. package/dist/base/timeline.js +1 -1
  64. package/dist/base/toaster.js +1 -1
  65. package/dist/base/toggle.js +21 -15
  66. package/dist/base/toolbar.js +1 -1
  67. package/dist/base/tooltip.js +1 -1
  68. package/dist/base/typography.js +2 -2
  69. package/dist/base/upload.js +1 -1
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
  72. package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
  73. package/dist/blocks/admin/commerce.js +2493 -0
  74. package/dist/{patterns → blocks}/analytics.js +312 -303
  75. package/dist/{patterns → blocks}/onboarding.js +27 -23
  76. package/dist/{patterns → blocks}/timelines.js +1 -1
  77. package/dist/buttons-BX2JfL5X.js +173 -0
  78. package/dist/cards-DdiICdMM.js +279 -0
  79. package/dist/chart-BkK3Xm10.js +201 -0
  80. package/dist/choice-inputs-CCw-0gD6.js +694 -0
  81. package/dist/combobox-Byu8N-Oe.js +274 -0
  82. package/dist/command-CnB_IZSo.js +156 -0
  83. package/dist/comments-C6Y_ddMt.js +1443 -0
  84. package/dist/components/base/action-menu/action-menu.d.ts +1 -1
  85. package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
  86. package/dist/components/base/avatar/avatar.d.ts +5 -2
  87. package/dist/components/base/badge/badge.d.ts +10 -10
  88. package/dist/components/base/badge/badge.variants.d.ts +1 -2
  89. package/dist/components/base/badge/index.d.ts +1 -2
  90. package/dist/components/base/buttons/button.d.ts +9 -8
  91. package/dist/components/base/buttons/button.types.d.ts +2 -2
  92. package/dist/components/base/buttons/index.d.ts +1 -1
  93. package/dist/components/base/buttons/text-button.d.ts +1 -1
  94. package/dist/components/base/cards/card-actions.d.ts +1 -1
  95. package/dist/components/base/cards/card.d.ts +3 -1
  96. package/dist/components/base/cards/partials/card-header.d.ts +2 -1
  97. package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
  98. package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
  99. package/dist/components/base/command/command.d.ts +5 -2
  100. package/dist/components/base/display/icon-badge.d.ts +5 -3
  101. package/dist/components/base/display/index.d.ts +1 -1
  102. package/dist/components/base/display/metadata-list.d.ts +6 -6
  103. package/dist/components/base/display/metadata-value.d.ts +1 -1
  104. package/dist/components/base/display/separator.d.ts +2 -2
  105. package/dist/components/base/feedback/alert.d.ts +3 -2
  106. package/dist/components/base/feedback/empty.d.ts +5 -4
  107. package/dist/components/base/feedback/progress-circle.d.ts +2 -2
  108. package/dist/components/base/feedback/progress.d.ts +3 -1
  109. package/dist/components/base/input-group/input-group.d.ts +8 -10
  110. package/dist/components/base/item/item.d.ts +2 -2
  111. package/dist/components/base/overlay/index.d.ts +1 -1
  112. package/dist/components/base/overlay/overlay.types.d.ts +7 -5
  113. package/dist/components/base/qr-code/qr-code.d.ts +4 -4
  114. package/dist/components/base/sheet/sheet.d.ts +1 -1
  115. package/dist/components/base/sidebar/sidebar.d.ts +9 -13
  116. package/dist/components/base/spinner/spinner.d.ts +2 -2
  117. package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
  118. package/dist/components/base/structure/bleed.d.ts +3 -2
  119. package/dist/components/base/structure/grid.d.ts +2 -2
  120. package/dist/components/base/structure/index.d.ts +1 -1
  121. package/dist/components/base/structure/split.d.ts +3 -3
  122. package/dist/components/base/structure/stack.d.ts +5 -5
  123. package/dist/components/base/structure/structure.maps.d.ts +2 -1
  124. package/dist/components/base/structure/structure.types.d.ts +10 -4
  125. package/dist/components/base/toggle/toggle.d.ts +2 -2
  126. package/dist/components/base/toolbar/toolbar.d.ts +3 -3
  127. package/dist/components/base/typography/index.d.ts +2 -0
  128. package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
  129. package/dist/components/base/typography/text/index.d.ts +1 -0
  130. package/dist/components/base/typography/text/text.d.ts +15 -8
  131. package/dist/components/base/typography/text/text.variants.d.ts +41 -0
  132. package/dist/components/base/value-inputs/color-input.d.ts +1 -7
  133. package/dist/components/base/value-inputs/slider.d.ts +2 -7
  134. package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
  135. package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
  136. package/dist/components/features/actions/action-adapters.d.ts +3 -3
  137. package/dist/components/features/actions/actions.types.d.ts +3 -5
  138. package/dist/components/features/actions/index.d.ts +1 -1
  139. package/dist/components/features/activities/activities-feed.d.ts +1 -1
  140. package/dist/components/features/activities/activities.types.d.ts +4 -4
  141. package/dist/components/features/activities/activity-parts.d.ts +3 -3
  142. package/dist/components/features/activities/activity-row.d.ts +4 -4
  143. package/dist/components/features/activities/index.d.ts +1 -1
  144. package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
  145. package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
  146. package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
  147. package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
  148. package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
  149. package/dist/components/features/media-library/index.d.ts +1 -1
  150. package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
  151. package/dist/components/features/media-library/media-library-views.d.ts +4 -3
  152. package/dist/components/features/media-library/media-library.d.ts +1 -1
  153. package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
  154. package/dist/components/features/media-library/media-library.types.d.ts +11 -9
  155. package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
  156. package/dist/components/features/media-library/use-media-library.d.ts +1 -4
  157. package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
  158. package/dist/components/features/overlays/index.d.ts +1 -1
  159. package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
  160. package/dist/components/features/overlays/overlays.types.d.ts +8 -7
  161. package/dist/components/features/rich-text-editor/index.d.ts +0 -1
  162. package/dist/components/features/table/data-table-body.d.ts +1 -1
  163. package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
  164. package/dist/components/features/table/data-table-header.d.ts +1 -1
  165. package/dist/components/features/table/data-table-size.d.ts +1 -1
  166. package/dist/components/features/table/data-table.d.ts +1 -1
  167. package/dist/components/features/table/index.d.ts +1 -1
  168. package/dist/components/features/table/table-helpers.d.ts +9 -3
  169. package/dist/components/features/table/table.strings.d.ts +11 -0
  170. package/dist/components/features/table/table.types.d.ts +60 -2
  171. package/dist/components/features/theme-tweaker/index.d.ts +1 -1
  172. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
  173. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
  174. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
  175. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  176. package/dist/components/layout/auth/auth.d.ts +1 -1
  177. package/dist/components/layout/auth/auth.types.d.ts +1 -1
  178. package/dist/components/primitives/value.d.ts +3 -1
  179. package/dist/containers-B8d8U9GS.js +2 -0
  180. package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
  181. package/dist/core.css +2 -2
  182. package/dist/css/access.css +2 -1
  183. package/dist/css/accordion.css +2 -1
  184. package/dist/css/action-menu.css +2 -1
  185. package/dist/css/activities.css +2 -1
  186. package/dist/css/ai-chat.css +2 -1
  187. package/dist/css/analytics.css +2 -1
  188. package/dist/css/app-shell.css +2 -1
  189. package/dist/css/aspect-ratio.css +2 -1
  190. package/dist/css/async-preview.css +2 -1
  191. package/dist/css/auth.css +2 -1
  192. package/dist/css/avatar.css +2 -1
  193. package/dist/css/badge.css +2 -1
  194. package/dist/css/batch-action-bar.css +2 -1
  195. package/dist/css/buttons.css +2 -1
  196. package/dist/css/cards.css +2 -1
  197. package/dist/css/carousel.css +2 -1
  198. package/dist/css/chart.css +2 -1
  199. package/dist/css/choice-inputs.css +2 -1
  200. package/dist/css/combobox.css +2 -1
  201. package/dist/css/combobox2.css +2 -1
  202. package/dist/css/command.css +2 -1
  203. package/dist/css/comments.css +2 -1
  204. package/dist/css/commerce.css +2 -1
  205. package/dist/css/containers.css +2 -1
  206. package/dist/css/copyable.css +2 -1
  207. package/dist/css/data-view.css +2 -1
  208. package/dist/css/date-pickers.css +2 -1
  209. package/dist/css/display.css +2 -1
  210. package/dist/css/dropdown-menu.css +2 -1
  211. package/dist/css/event-calendar.css +2 -1
  212. package/dist/css/feedback.css +2 -1
  213. package/dist/css/filters.css +2 -1
  214. package/dist/css/forms-numeric.css +2 -1
  215. package/dist/css/forms.css +2 -1
  216. package/dist/css/global-search.css +2 -1
  217. package/dist/css/header.css +2 -1
  218. package/dist/css/hover-card.css +2 -1
  219. package/dist/css/input-group.css +2 -1
  220. package/dist/css/item.css +2 -1
  221. package/dist/css/kanban.css +2 -1
  222. package/dist/css/label.css +2 -1
  223. package/dist/css/map.css +2 -1
  224. package/dist/css/media-library.css +2 -1
  225. package/dist/css/mentions.css +2 -1
  226. package/dist/css/menubar.css +2 -1
  227. package/dist/css/navigation-menu.css +2 -1
  228. package/dist/css/navigation.css +2 -1
  229. package/dist/css/navigation2.css +2 -1
  230. package/dist/css/onboarding.css +2 -1
  231. package/dist/css/otp-input.css +2 -1
  232. package/dist/css/overlay.css +2 -1
  233. package/dist/css/overlays.css +2 -1
  234. package/dist/css/page.css +2 -1
  235. package/dist/css/popover-menu.css +2 -1
  236. package/dist/css/popover.css +2 -1
  237. package/dist/css/primitives.css +2 -1
  238. package/dist/css/products.css +2 -1
  239. package/dist/css/qr-code.css +2 -1
  240. package/dist/css/repeaters.css +2 -1
  241. package/dist/css/resizable.css +2 -1
  242. package/dist/css/resource-assignment.css +2 -1
  243. package/dist/css/resource.css +2 -1
  244. package/dist/css/rich-text-editor.css +2 -1
  245. package/dist/css/schema-form.css +2 -1
  246. package/dist/css/sidebar.css +2 -1
  247. package/dist/css/sidebar2.css +2 -1
  248. package/dist/css/skeleton.css +2 -1
  249. package/dist/css/spinner.css +2 -1
  250. package/dist/css/structure.css +2 -1
  251. package/dist/css/sync.css +2 -1
  252. package/dist/css/table.css +2 -1
  253. package/dist/css/table2.css +2 -1
  254. package/dist/css/text-inputs.css +2 -1
  255. package/dist/css/theme-tweaker.css +2 -1
  256. package/dist/css/timeline.css +2 -1
  257. package/dist/css/timelines.css +2 -1
  258. package/dist/css/toaster.css +2 -1
  259. package/dist/css/toggle.css +2 -1
  260. package/dist/css/toolbar.css +2 -1
  261. package/dist/css/tooltip.css +2 -1
  262. package/dist/css/typography.css +2 -1
  263. package/dist/css/upload.css +2 -1
  264. package/dist/css/value-inputs.css +2 -1
  265. package/dist/css/workspace.css +2 -1
  266. package/dist/css-graph.json +1027 -0
  267. package/dist/date-pickers-C2HgjpFU.js +685 -0
  268. package/dist/{dialog-CtFCuTUF.js → dialog-0nRFg5Zs.js} +1 -1
  269. package/dist/display-BGN834xV.js +664 -0
  270. package/dist/dropdown-menu-Br8kvjrF.js +235 -0
  271. package/dist/empty.js +0 -0
  272. package/dist/features/actions.js +6 -6
  273. package/dist/features/activities.js +219 -216
  274. package/dist/features/ai-chat.js +593 -565
  275. package/dist/features/async-preview.js +105 -286
  276. package/dist/features/combobox.js +119 -117
  277. package/dist/features/comments.js +1 -1
  278. package/dist/features/data-view.js +56 -55
  279. package/dist/features/event-calendar.js +189 -185
  280. package/dist/features/filters.js +1 -1
  281. package/dist/features/global-search.js +259 -260
  282. package/dist/features/kanban.js +39 -37
  283. package/dist/features/map.js +357 -354
  284. package/dist/features/media-library.js +931 -931
  285. package/dist/features/mentions.js +1 -1
  286. package/dist/features/overlays.js +1 -1
  287. package/dist/features/products.js +950 -942
  288. package/dist/features/resource-assignment.js +39 -37
  289. package/dist/features/resource.js +70 -71
  290. package/dist/features/rich-text-editor.js +2 -2
  291. package/dist/features/schema-form.js +342 -338
  292. package/dist/features/sync.js +14 -12
  293. package/dist/features/table.js +1 -1
  294. package/dist/features/theme-tweaker.js +1002 -962
  295. package/dist/feedback-D4qVsKlD.js +430 -0
  296. package/dist/{filters-DOLKRSmb.js → filters-geLuSlFL.js} +386 -383
  297. package/dist/forms-NxbJK4Mh.js +250 -0
  298. package/dist/forms-numeric-C6NMdj6G.js +582 -0
  299. package/dist/index.js +2 -2
  300. package/dist/input-group-HS_Z0Ei_.js +119 -0
  301. package/dist/item-CuUJyETl.js +150 -0
  302. package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
  303. package/dist/layout/app-shell.js +4 -2
  304. package/dist/layout/auth.js +102 -100
  305. package/dist/layout/header.js +190 -180
  306. package/dist/layout/navigation.js +1 -1
  307. package/dist/layout/page.js +18 -16
  308. package/dist/layout/settings.js +2 -2
  309. package/dist/layout/sidebar.js +43 -43
  310. package/dist/layout/workspace.js +71 -69
  311. package/dist/lib/action-presentation.d.ts +3 -3
  312. package/dist/lib/component-vocabulary.d.ts +2 -2
  313. package/dist/lib/css-length.d.ts +2 -0
  314. package/dist/lib/responsive.d.ts +1 -1
  315. package/dist/lib/theming/index.d.ts +1 -0
  316. package/dist/lib/theming/recipes.d.ts +2 -2
  317. package/dist/lib/theming/themes/dense.d.ts +3 -0
  318. package/dist/lib/theming/themes/editorial.d.ts +3 -0
  319. package/dist/lib/theming/themes/index.d.ts +8 -0
  320. package/dist/lib/theming/themes/pair.d.ts +7 -0
  321. package/dist/lib/theming/themes/sharp.d.ts +3 -0
  322. package/dist/lib/theming/themes/soft.d.ts +3 -0
  323. package/dist/lib/theming/themes/types.d.ts +12 -0
  324. package/dist/lib/ui-provider/index.d.ts +1 -1
  325. package/dist/lib/ui-provider/scope.d.ts +5 -8
  326. package/dist/lib/ui-provider/tokens.d.ts +11 -3
  327. package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
  328. package/dist/lib/ui-provider/types.d.ts +17 -19
  329. package/dist/{mentions-BbsEHlcH.js → mentions-oeYNv_j1.js} +113 -111
  330. package/dist/navigation-BTX5Ti0Z.js +622 -0
  331. package/dist/navigation-WYKjDhZq.js +216 -0
  332. package/dist/overlay-C8RAgi2_.js +356 -0
  333. package/dist/{overlays-DvVoS3td.js → overlays-9BxwFTou.js} +77 -75
  334. package/dist/popover-CA7SP_iz.js +127 -0
  335. package/dist/popover-menu-DcLeiw9r.js +192 -0
  336. package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
  337. package/dist/primitives.js +1 -1
  338. package/dist/profiles/admin.json +6 -36
  339. package/dist/profiles/general.json +6 -96
  340. package/dist/repeaters-DfptvbGA.js +445 -0
  341. package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
  342. package/dist/{sheet-CKcmRbJ9.js → sheet-D-DVZH_b.js} +3 -3
  343. package/dist/sidebar-DXQOy_Cb.js +421 -0
  344. package/dist/skeleton-CubvHel9.js +173 -0
  345. package/dist/spinner-Tc1QCnxM.js +30 -0
  346. package/dist/{structure-D0WGQAP3.js → structure-B9Y5NkP_.js} +15 -22
  347. package/dist/style.css +1 -1
  348. package/dist/styles/TOKENS.md +115 -275
  349. package/dist/styles/animation.css +114 -0
  350. package/dist/styles/base.css +7 -6
  351. package/dist/styles/fields.css +45 -63
  352. package/dist/styles/focus.css +12 -0
  353. package/dist/styles/forced-colors.css +11 -10
  354. package/dist/styles/index.css +23 -30
  355. package/dist/styles/map.css +45 -34
  356. package/dist/styles/mentions.css +14 -52
  357. package/dist/styles/overlays.css +7 -7
  358. package/dist/styles/tailwind.css +76 -127
  359. package/dist/styles/targets.css +3 -3
  360. package/dist/styles/theme/colour.css +86 -0
  361. package/dist/styles/theme/density.css +31 -0
  362. package/dist/styles/theme/elevation.css +9 -0
  363. package/dist/styles/theme/layout.css +18 -0
  364. package/dist/styles/theme/motion.css +18 -0
  365. package/dist/styles/theme/shape.css +12 -0
  366. package/dist/styles/theme/size.css +10 -0
  367. package/dist/styles/theme/spacing.css +11 -0
  368. package/dist/styles/theme/typography.css +20 -0
  369. package/dist/styles/tone.css +61 -0
  370. package/dist/table-DT_20ity.js +1262 -0
  371. package/dist/table-Ds_eO9av.js +191 -0
  372. package/dist/tailwind.css +76 -127
  373. package/dist/text-inputs-BboE77nZ.js +395 -0
  374. package/dist/theming-C5ygF5uf.js +292 -0
  375. package/dist/theming.js +2 -2
  376. package/dist/{timeline-BdaGRyj-.js → timeline-BRZbSdhf.js} +57 -49
  377. package/dist/{timelines-BB7550mz.js → timelines-DczZKW5p.js} +69 -67
  378. package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
  379. package/dist/tokens.json +1027 -636
  380. package/dist/toolbar-DBK-c4yy.js +74 -0
  381. package/dist/tooltip-BPYP-jUm.js +76 -0
  382. package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
  383. package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
  384. package/dist/ui-provider.js +1 -1
  385. package/dist/upload-C_6mlbfl.js +968 -0
  386. package/dist/use-async-preview-BFwf9ElY.js +188 -0
  387. package/dist/value-inputs-CnO6RZeT.js +728 -0
  388. package/docs/README.md +2 -2
  389. package/docs/build/recipes.md +10992 -10628
  390. package/docs/generated/component-index.json +11133 -11624
  391. package/docs/generated/components/INDEX.md +5 -5
  392. package/docs/generated/components/base--accordion.md +51 -2
  393. package/docs/generated/components/base--action-menu.md +14 -15
  394. package/docs/generated/components/base--alert-dialog.md +3 -4
  395. package/docs/generated/components/base--aspect-ratio.md +3 -4
  396. package/docs/generated/components/base--avatar.md +7 -7
  397. package/docs/generated/components/base--badge.md +159 -27
  398. package/docs/generated/components/base--batch-action-bar.md +6 -7
  399. package/docs/generated/components/base--buttons.md +151 -47
  400. package/docs/generated/components/base--cards.md +107 -14
  401. package/docs/generated/components/base--carousel.md +1 -2
  402. package/docs/generated/components/base--chart.md +44 -8
  403. package/docs/generated/components/base--choice-inputs.md +10 -11
  404. package/docs/generated/components/base--combobox.md +3 -4
  405. package/docs/generated/components/base--command.md +6 -6
  406. package/docs/generated/components/base--context-menu.md +1 -2
  407. package/docs/generated/components/base--copyable.md +6 -7
  408. package/docs/generated/components/base--date-pickers.md +6 -7
  409. package/docs/generated/components/base--dialog.md +6 -7
  410. package/docs/generated/components/base--direction.md +1 -1
  411. package/docs/generated/components/base--display.md +234 -54
  412. package/docs/generated/components/base--dropdown-menu.md +6 -7
  413. package/docs/generated/components/base--feedback.md +71 -18
  414. package/docs/generated/components/base--forms-numeric.md +6 -7
  415. package/docs/generated/components/base--forms.md +12 -13
  416. package/docs/generated/components/base--hover-card.md +3 -4
  417. package/docs/generated/components/base--input-group.md +27 -30
  418. package/docs/generated/components/base--item.md +8 -9
  419. package/docs/generated/components/base--label.md +2 -3
  420. package/docs/generated/components/base--menubar.md +2 -4
  421. package/docs/generated/components/base--navigation-menu.md +2 -3
  422. package/docs/generated/components/base--navigation.md +2 -3
  423. package/docs/generated/components/base--otp-input.md +3 -4
  424. package/docs/generated/components/base--overlay.md +56 -47
  425. package/docs/generated/components/base--popover-menu.md +7 -8
  426. package/docs/generated/components/base--popover.md +9 -10
  427. package/docs/generated/components/base--qr-code.md +7 -8
  428. package/docs/generated/components/base--repeaters.md +6 -7
  429. package/docs/generated/components/base--resizable.md +2 -3
  430. package/docs/generated/components/base--sheet.md +12 -13
  431. package/docs/generated/components/base--sidebar.md +9 -11
  432. package/docs/generated/components/base--skeleton.md +6 -7
  433. package/docs/generated/components/base--slot.md +1 -1
  434. package/docs/generated/components/base--spinner.md +5 -7
  435. package/docs/generated/components/base--structure.md +264 -65
  436. package/docs/generated/components/base--table.md +61 -3
  437. package/docs/generated/components/base--text-inputs.md +17 -18
  438. package/docs/generated/components/base--timeline.md +45 -4
  439. package/docs/generated/components/base--toaster.md +43 -12
  440. package/docs/generated/components/base--toggle.md +11 -12
  441. package/docs/generated/components/base--toolbar.md +7 -8
  442. package/docs/generated/components/base--tooltip.md +5 -6
  443. package/docs/generated/components/base--typography.md +279 -32
  444. package/docs/generated/components/base--upload.md +8 -9
  445. package/docs/generated/components/base--value-inputs.md +9 -38
  446. package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +5 -6
  447. package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
  448. package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +13 -14
  449. package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
  450. package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
  451. package/docs/generated/components/features--actions.md +8 -18
  452. package/docs/generated/components/features--activities.md +31 -32
  453. package/docs/generated/components/features--ai-chat.md +15 -15
  454. package/docs/generated/components/features--async-preview.md +5 -6
  455. package/docs/generated/components/features--combobox.md +4 -5
  456. package/docs/generated/components/features--comments.md +0 -1
  457. package/docs/generated/components/features--data-view.md +4 -5
  458. package/docs/generated/components/features--event-calendar.md +1 -2
  459. package/docs/generated/components/features--filters.md +1 -2
  460. package/docs/generated/components/features--global-search.md +1 -2
  461. package/docs/generated/components/features--kanban.md +1 -2
  462. package/docs/generated/components/features--map.md +1 -2
  463. package/docs/generated/components/features--media-library.md +37 -38
  464. package/docs/generated/components/features--mentions.md +7 -7
  465. package/docs/generated/components/features--overlays.md +21 -22
  466. package/docs/generated/components/features--products.md +10 -11
  467. package/docs/generated/components/features--resource-assignment.md +2 -3
  468. package/docs/generated/components/features--resource.md +3 -4
  469. package/docs/generated/components/features--rich-text-editor.md +4 -13
  470. package/docs/generated/components/features--schema-form.md +1 -2
  471. package/docs/generated/components/features--sync.md +2 -3
  472. package/docs/generated/components/features--table.md +162 -12
  473. package/docs/generated/components/features--theme-tweaker.md +30 -15
  474. package/docs/generated/components/forms.md +2 -2
  475. package/docs/generated/components/layout--app-shell.md +10 -11
  476. package/docs/generated/components/layout--auth.md +8 -9
  477. package/docs/generated/components/layout--containers.md +0 -1
  478. package/docs/generated/components/layout--header.md +2 -3
  479. package/docs/generated/components/layout--navigation.md +0 -1
  480. package/docs/generated/components/layout--page.md +3 -4
  481. package/docs/generated/components/layout--settings.md +0 -1
  482. package/docs/generated/components/layout--sidebar.md +6 -7
  483. package/docs/generated/components/layout--workspace.md +3 -4
  484. package/docs/generated/components/primitives.md +128 -17
  485. package/docs/generated/components/theming.md +147 -4
  486. package/docs/generated/components/ui-provider.md +95 -77
  487. package/docs/generated/imports.md +104 -104
  488. package/docs/generated/migration-broad-imports.json +267 -90
  489. package/docs/generated/migration-broad-imports.md +266 -101
  490. package/docs/generated/migration-codemod.json +365 -70
  491. package/docs/generated/migration.md +665 -95
  492. package/docs/generated/profiles.md +27 -27
  493. package/docs/generated/public-api.md +104 -102
  494. package/docs/generated/recipes.json +585 -810
  495. package/docs/learn/api-compatibility.md +3 -3
  496. package/docs/learn/composition.md +2 -18
  497. package/docs/learn/framework-wiring.md +8 -8
  498. package/docs/learn/installation.md +55 -27
  499. package/docs/learn/migration.md +136 -5
  500. package/docs/learn/provider-and-scoping.md +13 -19
  501. package/docs/learn/theming.md +170 -131
  502. package/docs/learn/troubleshooting.md +62 -27
  503. package/docs/learn/verification.md +2 -3
  504. package/package.json +39 -473
  505. package/scripts/consumer/codemod.mjs +51 -12
  506. package/scripts/consumer/find-component.mjs +2 -4
  507. package/src/styles/TOKENS.md +115 -275
  508. package/dist/accordion-6YPJ9XRO.js +0 -135
  509. package/dist/admin/patterns/access.css +0 -15
  510. package/dist/admin/patterns/commerce.css +0 -29
  511. package/dist/admin/patterns/commerce.js +0 -2493
  512. package/dist/avatar-CS7zow2q.js +0 -85
  513. package/dist/badge-CxOuTfVr.js +0 -63
  514. package/dist/base/accordion.css +0 -3
  515. package/dist/base/action-menu.css +0 -6
  516. package/dist/base/alert-dialog.css +0 -4
  517. package/dist/base/aspect-ratio.css +0 -2
  518. package/dist/base/avatar.css +0 -4
  519. package/dist/base/badge.css +0 -2
  520. package/dist/base/batch-action-bar.css +0 -5
  521. package/dist/base/buttons.css +0 -4
  522. package/dist/base/cards.css +0 -13
  523. package/dist/base/carousel.css +0 -5
  524. package/dist/base/chart.css +0 -2
  525. package/dist/base/choice-inputs.css +0 -10
  526. package/dist/base/combobox.css +0 -3
  527. package/dist/base/command.css +0 -9
  528. package/dist/base/context-menu.css +0 -2
  529. package/dist/base/copyable.css +0 -6
  530. package/dist/base/date-pickers.css +0 -11
  531. package/dist/base/dialog.css +0 -4
  532. package/dist/base/display.css +0 -8
  533. package/dist/base/dropdown-menu.css +0 -2
  534. package/dist/base/feedback.css +0 -5
  535. package/dist/base/forms-numeric.css +0 -12
  536. package/dist/base/forms.css +0 -14
  537. package/dist/base/hover-card.css +0 -2
  538. package/dist/base/input-group.css +0 -6
  539. package/dist/base/item.css +0 -9
  540. package/dist/base/label.css +0 -3
  541. package/dist/base/menubar.css +0 -2
  542. package/dist/base/navigation-menu.css +0 -2
  543. package/dist/base/navigation.css +0 -12
  544. package/dist/base/otp-input.css +0 -9
  545. package/dist/base/overlay.css +0 -4
  546. package/dist/base/popover-menu.css +0 -11
  547. package/dist/base/popover.css +0 -3
  548. package/dist/base/qr-code.css +0 -2
  549. package/dist/base/repeaters.css +0 -18
  550. package/dist/base/resizable.css +0 -2
  551. package/dist/base/sheet.css +0 -4
  552. package/dist/base/sidebar.css +0 -12
  553. package/dist/base/skeleton.css +0 -9
  554. package/dist/base/spinner.css +0 -2
  555. package/dist/base/structure.css +0 -2
  556. package/dist/base/table.css +0 -3
  557. package/dist/base/text-inputs.css +0 -2
  558. package/dist/base/timeline.css +0 -9
  559. package/dist/base/toaster.css +0 -2
  560. package/dist/base/toggle.css +0 -2
  561. package/dist/base/toolbar.css +0 -5
  562. package/dist/base/tooltip.css +0 -2
  563. package/dist/base/typography.css +0 -2
  564. package/dist/base/upload.css +0 -10
  565. package/dist/base/value-inputs.css +0 -14
  566. package/dist/buttons-CqXKWty3.js +0 -179
  567. package/dist/cards-C6Ulbkw7.js +0 -271
  568. package/dist/chart-nomhJ87z.js +0 -193
  569. package/dist/choice-inputs-OUDn0kQw.js +0 -680
  570. package/dist/combobox-C8oP92bT.js +0 -266
  571. package/dist/command-Bp3B6pUu.js +0 -143
  572. package/dist/comments-CAnDlyXO.js +0 -1438
  573. package/dist/components/admin/patterns/index.d.ts +0 -2
  574. package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
  575. package/dist/components/patterns/index.d.ts +0 -3
  576. package/dist/css/styles.css +0 -1
  577. package/dist/date-pickers-DOwIT-Nk.js +0 -661
  578. package/dist/display-B3Q17h5z.js +0 -645
  579. package/dist/dropdown-menu-TyNLCLML.js +0 -223
  580. package/dist/features/actions.css +0 -11
  581. package/dist/features/activities.css +0 -25
  582. package/dist/features/ai-chat.css +0 -14
  583. package/dist/features/async-preview.css +0 -10
  584. package/dist/features/combobox.css +0 -12
  585. package/dist/features/comments.css +0 -24
  586. package/dist/features/data-view.css +0 -31
  587. package/dist/features/event-calendar.css +0 -17
  588. package/dist/features/filters.css +0 -24
  589. package/dist/features/global-search.css +0 -19
  590. package/dist/features/kanban.css +0 -7
  591. package/dist/features/map.css +0 -15
  592. package/dist/features/media-library.css +0 -27
  593. package/dist/features/mentions.css +0 -17
  594. package/dist/features/overlays.css +0 -11
  595. package/dist/features/products.css +0 -29
  596. package/dist/features/resource-assignment.css +0 -14
  597. package/dist/features/resource.css +0 -15
  598. package/dist/features/rich-text-editor.css +0 -8
  599. package/dist/features/schema-form.css +0 -22
  600. package/dist/features/sync.css +0 -11
  601. package/dist/features/table.css +0 -20
  602. package/dist/features/theme-tweaker.css +0 -27
  603. package/dist/feedback-DRerHGuV.js +0 -469
  604. package/dist/forms-CPrGGif_.js +0 -242
  605. package/dist/forms-numeric-CPVsL7Vf.js +0 -569
  606. package/dist/index.css +0 -3
  607. package/dist/input-group-BYe0rhoB.js +0 -126
  608. package/dist/item-B3yQ26as.js +0 -146
  609. package/dist/layout/app-shell.css +0 -13
  610. package/dist/layout/auth.css +0 -14
  611. package/dist/layout/containers.css +0 -2
  612. package/dist/layout/header.css +0 -20
  613. package/dist/layout/navigation.css +0 -11
  614. package/dist/layout/page.css +0 -15
  615. package/dist/layout/settings.css +0 -16
  616. package/dist/layout/sidebar.css +0 -16
  617. package/dist/layout/workspace.css +0 -15
  618. package/dist/navigation-CsqTA16F.js +0 -614
  619. package/dist/navigation-DzxzPuwg.js +0 -202
  620. package/dist/overlay-WQOsLd69.js +0 -345
  621. package/dist/patterns/analytics.css +0 -15
  622. package/dist/patterns/onboarding.css +0 -11
  623. package/dist/patterns/timelines.css +0 -11
  624. package/dist/popover-DriLnIFc.js +0 -123
  625. package/dist/popover-menu-C2UCMAe7.js +0 -189
  626. package/dist/primitives.css +0 -3
  627. package/dist/repeaters-DuP1N0nw.js +0 -438
  628. package/dist/rich-text-editor-BQXFe9oN.js +0 -595
  629. package/dist/sidebar-D0N6ckJL.js +0 -412
  630. package/dist/skeleton-DGR9df28.js +0 -172
  631. package/dist/spinner-CUAVFecI.js +0 -52
  632. package/dist/styles/FACTORS.md +0 -36
  633. package/dist/styles/SCOPES.md +0 -86
  634. package/dist/styles/themes/default.css +0 -164
  635. package/dist/styles/theming/animation.css +0 -143
  636. package/dist/styles/theming/colors.css +0 -97
  637. package/dist/styles/theming/feedback.css +0 -17
  638. package/dist/styles/theming/field.css +0 -21
  639. package/dist/styles/theming/focus.css +0 -88
  640. package/dist/styles/theming/layers.css +0 -13
  641. package/dist/styles/theming/layout.css +0 -21
  642. package/dist/styles/theming/motion.css +0 -42
  643. package/dist/styles/theming/overlay.css +0 -52
  644. package/dist/styles/theming/sizing.css +0 -118
  645. package/dist/styles/theming/text.css +0 -30
  646. package/dist/styles/theming/typography.css +0 -26
  647. package/dist/styles/tokens/components.css +0 -22
  648. package/dist/styles/tokens/foundation.css +0 -80
  649. package/dist/styles/tokens/layout.css +0 -19
  650. package/dist/styles/tokens/palette.css +0 -88
  651. package/dist/styles/tokens/primitives.css +0 -18
  652. package/dist/styles/tokens/states.css +0 -77
  653. package/dist/table-BC4qqsUb.js +0 -180
  654. package/dist/table-BHDpjajL.js +0 -982
  655. package/dist/text-inputs-DF_lD7pA.js +0 -385
  656. package/dist/theming-D6KRU7hO.js +0 -104
  657. package/dist/toolbar-DWRywF0R.js +0 -68
  658. package/dist/tooltip-t1VQQ2tZ.js +0 -73
  659. package/dist/upload-B38YZeFJ.js +0 -938
  660. package/dist/value-inputs-Q4ymjXlV.js +0 -716
  661. package/src/styles/FACTORS.md +0 -36
  662. package/src/styles/SCOPES.md +0 -86
  663. /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
  664. /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
  665. /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
  666. /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
  667. /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
  668. /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
  669. /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
  670. /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
  671. /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
  672. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
  673. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
  674. /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
  675. /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
  676. /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
  677. /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
  678. /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
  679. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
  680. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
  681. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
  682. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
  683. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
  684. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
  685. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
  686. /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
  687. /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
  688. /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
  689. /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
  690. /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
  691. /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
  692. /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
  693. /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
  694. /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
  695. /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
  696. /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
  697. /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
  698. /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
  699. /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
  700. /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
  701. /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
  702. /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
  703. /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
  704. /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
  705. /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
  706. /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
  707. /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
  708. /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
  709. /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
@@ -20,7 +20,7 @@ uses CSS Modules over Base UI, publishes exact module subpaths, and has no `ui/`
20
20
  4. Prefer the highest ready module that owns the behavior, then customize it at the lowest
21
21
  sufficient extension rung: prop → provider default → slot/render prop → composition →
22
22
  consumer CSS → application-owned component.
23
- 5. Import the exact JavaScript subpath and exact module stylesheet.
23
+ 5. Import the exact JavaScript subpath; in a bundled app its CSS comes with it.
24
24
  6. Keep application policy in the application, then verify the composed result in its real
25
25
  route, theme, density, data states, keyboard flow, and production bundle.
26
26
 
@@ -44,11 +44,9 @@ These paths exist after installation and are the source of truth:
44
44
  | `node_modules/themelia-ui/docs/generated/components/INDEX.md` | module-by-module API references and recipes |
45
45
  | `node_modules/themelia-ui/docs/generated/component-index.json` | machine-readable discovery records |
46
46
  | `node_modules/themelia-ui/docs/generated/public-api.md` | every exported name and exact subpath |
47
- | `node_modules/themelia-ui/docs/generated/imports.md` | every JS/CSS import and optional-peer owner |
47
+ | `node_modules/themelia-ui/docs/generated/imports.md` | every import and optional-peer owner |
48
48
  | `node_modules/themelia-ui/docs/generated/recipes.json` | machine-readable live-preview examples |
49
- | `node_modules/themelia-ui/src/styles/TOKENS.md` | exhaustive public theme-author contract |
50
- | `node_modules/themelia-ui/src/styles/FACTORS.md` | scale, spacing, density, and typography factors |
51
- | `node_modules/themelia-ui/src/styles/SCOPES.md` | boundaries where derived tokens recompute |
49
+ | `node_modules/themelia-ui/src/styles/TOKENS.md` | the theme contract: every variable, its role, and what components compute from it |
52
50
  | `node_modules/themelia-ui/docs/generated/migration.md` | every renamed or removed name, token and utility, with what replaces it |
53
51
  | `node_modules/themelia-ui/scripts/consumer/codemod.mjs` | applies the mechanical half of an upgrade to your source |
54
52
 
@@ -67,11 +65,11 @@ node node_modules/themelia-ui/scripts/consumer/find-component.mjs --peer=@tansta
67
65
  node node_modules/themelia-ui/scripts/consumer/find-component.mjs --help
68
66
  ```
69
67
 
70
- It indexes 97 modules, 386 attributed live recipes, and
71
- 118 live preview routes by public symbol, module id, recipe title, preview route,
68
+ It indexes 97 modules, 395 attributed live recipes, and
69
+ 119 live preview routes by public symbol, module id, recipe title, preview route,
72
70
  component capabilities, descriptions, and positive selection guidance. Negative `avoidWhen` guidance is never treated as a
73
71
  recommendation. `--json` includes the exact
74
- `publicImport`, `cssImport`, `apiDoc`, optional peers, dependencies, and alternatives.
72
+ `publicImport`, `apiDoc`, optional peers, dependencies, and alternatives.
75
73
  Use `--explain` to see matched components and why they fit. Component guidance identifies
76
74
  curated decisions separately from module-level fallback; missing prop defaults are not inferred.
77
75
  <!-- /GENERATED:search -->
@@ -102,9 +100,9 @@ Selection rules:
102
100
  | Base (`base`) | 54 | one generic concept: text roles, controls, rows, passive structure | `themelia-ui/base/accordion` |
103
101
  | Layout (`layout`) | 9 | page and application shells | `themelia-ui/layout/app-shell` |
104
102
  | Features (`features`) | 24 | an owned interaction lifecycle — a context, a hook, a state machine | `themelia-ui/features/actions` |
105
- | Blocks (`blocks`) | 5 | an arrangement rendering a subject; the admin blocks make up the admin profile | `themelia-ui/admin/patterns/access` |
103
+ | Blocks (`blocks`) | 5 | an arrangement rendering a subject; the admin blocks make up the admin profile | `themelia-ui/blocks/admin/access` |
106
104
 
107
- 97 modules, 752 public components, 1070 exported symbols in total.
105
+ 97 modules, 752 public components, 1072 exported symbols in total.
108
106
  <!-- /GENERATED:tiers -->
109
107
 
110
108
  Dependencies flow downward:
@@ -152,21 +150,21 @@ leaflet. Reach for a module by its own subpath and the question never comes up.
152
150
  <!-- GENERATED:delivery by scripts/gen-agent-skill.mjs — do not edit between these markers. -->
153
151
  ```tsx compile
154
152
  import { Button } from "themelia-ui/base/buttons"
155
- import "themelia-ui/base/buttons.css"
156
153
  ```
157
154
 
158
- **The JavaScript imports no CSS.** A component whose module stylesheet is not imported
159
- renders unstyled.
155
+ **A component brings its own CSS.** In a bundled app (Vite, webpack, Rspack, Next.js, React
156
+ Router, Astro) importing the component is enough: its stylesheet arrives with its
157
+ JavaScript, once, and a module the application never imports brings none. Do not also
158
+ import `themelia-ui/style.css` or a module stylesheet from JavaScript; that loads the CSS twice.
160
159
 
161
- **The stylesheet is split per module.** 90 of 97 modules ship one; a module whose components draw nothing has none. Each module stylesheet imports
162
- `core.css` itself, so the tokens, themes, and cascade layer order arrive automatically.
163
- Import `core.css` on its own only when application CSS needs the token contract before
164
- any component stylesheet is loaded.
160
+ **Server rendering with Vite needs one line.** Astro, React Router, TanStack Start and Vike
161
+ list `themelia-ui` in `ssr.noExternal`; Astro renders the kit unstyled without it.
165
162
 
166
- `themelia-ui/style.css` is the deduplicated union of every sheet, for a consumer who would
167
- rather not track them. It is larger than what any one application uses.
163
+ **No bundler:** link `themelia-ui/style.css`, which includes `core.css`. Node, Vitest and
164
+ `require()` load the JavaScript with no CSS setup; Jest needs 29.4 or newer, with the package
165
+ exempted in `transformIgnorePatterns`.
168
166
 
169
- Import consumer overrides after the kit. Its component rules are layered, so ordinary
167
+ Consumer overrides need no ordering: the kit's component rules are layered, so ordinary
170
168
  unlayered app CSS wins without specificity tricks.
171
169
  <!-- /GENERATED:delivery -->
172
170
 
@@ -192,7 +190,7 @@ There are 15 optional peer packages. A consumer only needs the peers reachable f
192
190
  | `react-hook-form` | `features/sync`, `forms-rhf` |
193
191
  | `react-leaflet` | `features/map` |
194
192
  | `react-leaflet-markercluster` | `features/map` |
195
- | `recharts` | `base/chart`, `patterns/analytics` |
193
+ | `recharts` | `base/chart`, `blocks/analytics` |
196
194
  <!-- /GENERATED:peers -->
197
195
 
198
196
  ## Provider, scopes, themes, and portals
@@ -224,15 +222,15 @@ export function ScopedPreview() {
224
222
  }
225
223
  ```
226
224
 
227
- Theme through the public contract in `node_modules/themelia-ui/src/styles/TOKENS.md`.
228
- The three factors are `--scale` (everything), `--density-scale` (spacing and control
229
- geometry, rounded to whole pixels) and `--text-scale` (type); the last two default to
230
- `--scale`. Set them on `:root`, with a `density` preset, or on a scope boundary; semantic
231
- colours are re-derived at each boundary, so override those through the provider or a scope. Component-level variables
232
- are implementation plumbing unless the public token reference explicitly promotes them.
225
+ Theme through the public contract in `node_modules/themelia-ui/src/styles/TOKENS.md`: about
226
+ eighty variables, declared once at `:root`, each colour a `light-dark(light, dark)` pair. Set
227
+ the ones you change on `:root` (or on any element, for a region); nothing below `:root`
228
+ declares them again. A denser region is the provider's `density` or `scale`, and type alone
229
+ is `typography.scale`. A component's own variables are private (`--_x`), never an override
230
+ surface.
233
231
 
234
- Import application overrides after kit CSS. Kit component rules are layered, so ordinary
235
- unlayered consumer CSS wins without `!important`. Target stable documented `data-slot` or
232
+ Kit component rules are layered, so ordinary unlayered consumer CSS wins whatever its order,
233
+ without `!important`. Target stable documented `data-slot` or
236
234
  BEM hooks, and Base UI's state attributes (`data-open`, `data-checked`, `data-disabled`,
237
235
  `data-highlighted`, `data-popup-open`) for a state — not Radix's `[data-state="open"]`; never
238
236
  target CSS Module hashes. If the application uses Tailwind
@@ -15,9 +15,9 @@ exported props/type members are compatibility surfaces. Public global theme toke
15
15
  | a documented default changes | behavioural change; release notes required |
16
16
  | component token or hashed CSS Module name changes | internal unless documented as an extension point |
17
17
 
18
- A deprecated API introduced during a stable major remains available for that major with a
19
- named replacement and migration instructions. It is removed only in the next major unless
20
- security or correctness makes retaining it unsafe.
18
+ 3.1 removes obsolete aliases and adapters. Removed names do not stay available solely for an
19
+ upgrade window. A breaking release records the replacement in the migration reference and
20
+ the changelog; consumers pin the old version until they are ready to update.
21
21
 
22
22
  A removal, a newly required member or an incompatible type change ships with a migration
23
23
  record: the migration reference (`node_modules/themelia-ui/docs/generated/migration.md`) names each one with its
@@ -68,11 +68,8 @@ generic metadata, and an action without teaching the package what an invoice is:
68
68
 
69
69
  ```tsx compile
70
70
  import { Button } from "themelia-ui/base/buttons"
71
- import "themelia-ui/base/buttons.css"
72
71
  import { MetadataList } from "themelia-ui/base/display"
73
- import "themelia-ui/base/display.css"
74
72
  import { Page } from "themelia-ui/layout/page"
75
- import "themelia-ui/layout/page.css"
76
73
 
77
74
  type Invoice = { id: string; number: string; customerName: string; status: string; dueLabel: string }
78
75
  export function InvoiceDetail({ invoice, onCollectPayment }: {
@@ -111,10 +108,8 @@ callbacks, then open each linked module reference for the complete prop contract
111
108
  ### Dashboard
112
109
 
113
110
  ```tsx fragment — dashboard data and chart series come from the consuming application
114
- import { MetricGrid } from "themelia-ui/patterns/analytics"
115
- import "themelia-ui/patterns/analytics.css"
111
+ import { MetricGrid } from "themelia-ui/blocks/analytics"
116
112
  import { Page } from "themelia-ui/layout/page"
117
- import "themelia-ui/layout/page.css"
118
113
 
119
114
  <Page header={{ title: "Overview", description: periodLabel }}>
120
115
  <MetricGrid metrics={metrics} variant="card" />
@@ -128,7 +123,6 @@ window, permission-filtered figures, and what clicking a metric means.
128
123
 
129
124
  ```tsx fragment — columns, filters, records, paging, and mutations are consumer-owned
130
125
  import { DataView, DataViewPagination } from "themelia-ui/features/data-view"
131
- import "themelia-ui/features/data-view.css"
132
126
 
133
127
  <DataView
134
128
  data={records}
@@ -152,9 +146,7 @@ record type out of the package.
152
146
 
153
147
  ```tsx fragment — validation, field values, submit mutation, and product copy remain in the app
154
148
  import { FormActionsBar, FormField, FormSection, SubmitStateButton } from "themelia-ui/base/forms"
155
- import "themelia-ui/base/forms.css"
156
149
  import { Input } from "themelia-ui/base/text-inputs"
157
- import "themelia-ui/base/text-inputs.css"
158
150
 
159
151
  <FormSection title="Billing" description="Where invoices go.">
160
152
  <FormField label="Company" error={errors.company}>
@@ -171,7 +163,6 @@ adapter when React Hook Form already owns the state.
171
163
 
172
164
  ```tsx fragment — route matching and the router link renderer belong to the application
173
165
  import { AsideNavShell } from "themelia-ui/layout/settings"
174
- import "themelia-ui/layout/settings.css"
175
166
 
176
167
  <AsideNavShell
177
168
  title="Settings"
@@ -218,15 +209,10 @@ the entered value; pending state prevents a second submission.
218
209
  ```tsx compile
219
210
  import { useState } from "react"
220
211
  import { Card, CardHeader, CardContent } from "themelia-ui/base/cards"
221
- import "themelia-ui/base/cards.css"
222
212
  import { FormField } from "themelia-ui/base/forms"
223
- import "themelia-ui/base/forms.css"
224
213
  import { Input } from "themelia-ui/base/text-inputs"
225
- import "themelia-ui/base/text-inputs.css"
226
214
  import { Button } from "themelia-ui/base/buttons"
227
- import "themelia-ui/base/buttons.css"
228
215
  import { Stack } from "themelia-ui/base/structure"
229
- import "themelia-ui/base/structure.css"
230
216
 
231
217
  export function RenameRecord({ initialName, save }: {
232
218
  initialName: string
@@ -248,7 +234,7 @@ export function RenameRecord({ initialName, save }: {
248
234
  catch { setError("Could not save. Your changes are still here; try again.") }
249
235
  finally { setPending(false) }
250
236
  }}>
251
- <Stack gap="md">
237
+ <Stack gap="sm">
252
238
  <FormField label="Name" error={error}>
253
239
  <Input value={name} disabled={pending} onChange={(event) => setName(event.target.value)} />
254
240
  </FormField>
@@ -270,7 +256,6 @@ filtering contract to your query layer instead of filtering an already paged sub
270
256
  ```tsx compile
271
257
  import { useState } from "react"
272
258
  import { DataView, type DataViewProps } from "themelia-ui/features/data-view"
273
- import "themelia-ui/features/data-view.css"
274
259
  import { FilterType, FilterOperator, type ActiveFilter, type FilterConfig } from "themelia-ui/features/filters"
275
260
 
276
261
  type RecordRow = { id: string; name: string; status: string }
@@ -298,7 +283,6 @@ edge fade through the public prop instead of adding a local mask or a second scr
298
283
 
299
284
  ```tsx compile
300
285
  import { Tabs, TabList, Tab, TabPanel } from "themelia-ui/base/navigation"
301
- import "themelia-ui/base/navigation.css"
302
286
 
303
287
  export function SettingsTabs() {
304
288
  return <Tabs defaultValue="general">
@@ -73,14 +73,14 @@ For CSP, portals, nested theme regions, and defaults, use
73
73
  [Provider and scoping](provider-and-scoping.md). Do not recreate provider context in an
74
74
  application adapter unless the documented public hooks are insufficient.
75
75
 
76
- ## Vite, Next.js, and CSS entrypoints
77
-
78
- The JavaScript imports no CSS: import the exact module stylesheet beside the component. In a
79
- framework that restricts where global CSS may be imported, collect the same module
80
- stylesheets in its permitted application or route-layout entry. Do not replace them with
81
- source paths. `style.css` loads every module; prefer module stylesheets when a route uses a
82
- few. Server rendering and test runners are covered in
83
- [Loading the CSS](installation.md#loading-the-css).
76
+ ## Vite, Next.js, and CSS
77
+
78
+ A component brings its own CSS, so there is no stylesheet to collect: it arrives through the
79
+ component's JavaScript, which your bundler processes. Frameworks that render on the server
80
+ with Vite, such as Astro, React Router, TanStack Start and Vike, list the package in
81
+ `ssr.noExternal`; see [Server rendering with Vite](installation.md#server-rendering-with-vite).
82
+ Parcel needs its `packageExports` option. Next.js needs nothing. Pages with no bundler link
83
+ `style.css`.
84
84
 
85
85
  Server-rendered HTML and the client bundle must load the same theme tokens before hydration.
86
86
  Apply the theme attribute and provider configuration from the same persisted value to avoid
@@ -6,115 +6,115 @@ Every module has one subpath. There are no tier barrels: `themelia-ui/base` and
6
6
  siblings do not exist, because one specifier would pull an entire tier and every optional
7
7
  peer inside it. The root carries the provider and the display primitives, both peer-free.
8
8
 
9
- Import the stylesheet column beside the exact JavaScript subpath, or `style.css` once. The
10
- JavaScript imports no CSS, so a module without its stylesheet renders unstyled.
9
+ A component brings its own CSS in a bundled app. Pages with no bundler link `style.css`; see
10
+ docs/learn/installation.md.
11
11
 
12
12
  ## general profile — 95 modules
13
13
 
14
- | module | import | stylesheet | optional peers |
15
- | --- | --- | --- | --- |
16
- | `base/accordion` | `themelia-ui/base/accordion` | `themelia-ui/base/accordion.css` | — |
17
- | `base/action-menu` | `themelia-ui/base/action-menu` | `themelia-ui/base/action-menu.css` | — |
18
- | `base/alert-dialog` | `themelia-ui/base/alert-dialog` | `themelia-ui/base/alert-dialog.css` | — |
19
- | `base/aspect-ratio` | `themelia-ui/base/aspect-ratio` | `themelia-ui/base/aspect-ratio.css` | — |
20
- | `base/avatar` | `themelia-ui/base/avatar` | `themelia-ui/base/avatar.css` | — |
21
- | `base/badge` | `themelia-ui/base/badge` | `themelia-ui/base/badge.css` | — |
22
- | `base/batch-action-bar` | `themelia-ui/base/batch-action-bar` | `themelia-ui/base/batch-action-bar.css` | — |
23
- | `base/buttons` | `themelia-ui/base/buttons` | `themelia-ui/base/buttons.css` | — |
24
- | `base/cards` | `themelia-ui/base/cards` | `themelia-ui/base/cards.css` | — |
25
- | `base/carousel` | `themelia-ui/base/carousel` | `themelia-ui/base/carousel.css` | — |
26
- | `base/chart` | `themelia-ui/base/chart` | `themelia-ui/base/chart.css` | recharts |
27
- | `base/choice-inputs` | `themelia-ui/base/choice-inputs` | `themelia-ui/base/choice-inputs.css` | — |
28
- | `base/combobox` | `themelia-ui/base/combobox` | `themelia-ui/base/combobox.css` | — |
29
- | `base/command` | `themelia-ui/base/command` | `themelia-ui/base/command.css` | — |
30
- | `base/context-menu` | `themelia-ui/base/context-menu` | `themelia-ui/base/context-menu.css` | — |
31
- | `base/copyable` | `themelia-ui/base/copyable` | `themelia-ui/base/copyable.css` | — |
32
- | `base/date-pickers` | `themelia-ui/base/date-pickers` | `themelia-ui/base/date-pickers.css` | — |
33
- | `base/dialog` | `themelia-ui/base/dialog` | `themelia-ui/base/dialog.css` | — |
34
- | `base/direction` | `themelia-ui/base/direction` | — | — |
35
- | `base/display` | `themelia-ui/base/display` | `themelia-ui/base/display.css` | — |
36
- | `base/dropdown-menu` | `themelia-ui/base/dropdown-menu` | `themelia-ui/base/dropdown-menu.css` | — |
37
- | `base/feedback` | `themelia-ui/base/feedback` | `themelia-ui/base/feedback.css` | — |
38
- | `base/forms` | `themelia-ui/base/forms` | `themelia-ui/base/forms.css` | — |
39
- | `base/forms-numeric` | `themelia-ui/base/forms-numeric` | `themelia-ui/base/forms-numeric.css` | — |
40
- | `base/hover-card` | `themelia-ui/base/hover-card` | `themelia-ui/base/hover-card.css` | — |
41
- | `base/input-group` | `themelia-ui/base/input-group` | `themelia-ui/base/input-group.css` | — |
42
- | `base/item` | `themelia-ui/base/item` | `themelia-ui/base/item.css` | — |
43
- | `base/label` | `themelia-ui/base/label` | `themelia-ui/base/label.css` | — |
44
- | `base/menubar` | `themelia-ui/base/menubar` | `themelia-ui/base/menubar.css` | — |
45
- | `base/navigation` | `themelia-ui/base/navigation` | `themelia-ui/base/navigation.css` | — |
46
- | `base/navigation-menu` | `themelia-ui/base/navigation-menu` | `themelia-ui/base/navigation-menu.css` | — |
47
- | `base/otp-input` | `themelia-ui/base/otp-input` | `themelia-ui/base/otp-input.css` | — |
48
- | `base/overlay` | `themelia-ui/base/overlay` | `themelia-ui/base/overlay.css` | — |
49
- | `base/popover` | `themelia-ui/base/popover` | `themelia-ui/base/popover.css` | — |
50
- | `base/popover-menu` | `themelia-ui/base/popover-menu` | `themelia-ui/base/popover-menu.css` | — |
51
- | `base/qr-code` | `themelia-ui/base/qr-code` | `themelia-ui/base/qr-code.css` | — |
52
- | `base/repeaters` | `themelia-ui/base/repeaters` | `themelia-ui/base/repeaters.css` | — |
53
- | `base/resizable` | `themelia-ui/base/resizable` | `themelia-ui/base/resizable.css` | — |
54
- | `base/sheet` | `themelia-ui/base/sheet` | `themelia-ui/base/sheet.css` | — |
55
- | `base/sidebar` | `themelia-ui/base/sidebar` | `themelia-ui/base/sidebar.css` | — |
56
- | `base/skeleton` | `themelia-ui/base/skeleton` | `themelia-ui/base/skeleton.css` | — |
57
- | `base/slot` | `themelia-ui/base/slot` | — | — |
58
- | `base/spinner` | `themelia-ui/base/spinner` | `themelia-ui/base/spinner.css` | — |
59
- | `base/structure` | `themelia-ui/base/structure` | `themelia-ui/base/structure.css` | — |
60
- | `base/table` | `themelia-ui/base/table` | `themelia-ui/base/table.css` | — |
61
- | `base/text-inputs` | `themelia-ui/base/text-inputs` | `themelia-ui/base/text-inputs.css` | — |
62
- | `base/timeline` | `themelia-ui/base/timeline` | `themelia-ui/base/timeline.css` | — |
63
- | `base/toaster` | `themelia-ui/base/toaster` | `themelia-ui/base/toaster.css` | — |
64
- | `base/toggle` | `themelia-ui/base/toggle` | `themelia-ui/base/toggle.css` | — |
65
- | `base/toolbar` | `themelia-ui/base/toolbar` | `themelia-ui/base/toolbar.css` | — |
66
- | `base/tooltip` | `themelia-ui/base/tooltip` | `themelia-ui/base/tooltip.css` | — |
67
- | `base/typography` | `themelia-ui/base/typography` | `themelia-ui/base/typography.css` | — |
68
- | `base/upload` | `themelia-ui/base/upload` | `themelia-ui/base/upload.css` | — |
69
- | `base/value-inputs` | `themelia-ui/base/value-inputs` | `themelia-ui/base/value-inputs.css` | — |
70
- | `features/actions` | `themelia-ui/features/actions` | `themelia-ui/features/actions.css` | — |
71
- | `features/activities` | `themelia-ui/features/activities` | `themelia-ui/features/activities.css` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
72
- | `features/ai-chat` | `themelia-ui/features/ai-chat` | `themelia-ui/features/ai-chat.css` | — |
73
- | `features/async-preview` | `themelia-ui/features/async-preview` | `themelia-ui/features/async-preview.css` | — |
74
- | `features/combobox` | `themelia-ui/features/combobox` | `themelia-ui/features/combobox.css` | — |
75
- | `features/comments` | `themelia-ui/features/comments` | `themelia-ui/features/comments.css` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
76
- | `features/data-view` | `themelia-ui/features/data-view` | `themelia-ui/features/data-view.css` | @tanstack/react-table |
77
- | `features/event-calendar` | `themelia-ui/features/event-calendar` | `themelia-ui/features/event-calendar.css` | — |
78
- | `features/filters` | `themelia-ui/features/filters` | `themelia-ui/features/filters.css` | — |
79
- | `features/global-search` | `themelia-ui/features/global-search` | `themelia-ui/features/global-search.css` | — |
80
- | `features/kanban` | `themelia-ui/features/kanban` | `themelia-ui/features/kanban.css` | @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities |
81
- | `features/map` | `themelia-ui/features/map` | `themelia-ui/features/map.css` | leaflet, leaflet-draw, leaflet.fullscreen, leaflet.markercluster, react-leaflet, react-leaflet-markercluster |
82
- | `features/media-library` | `themelia-ui/features/media-library` | `themelia-ui/features/media-library.css` | — |
83
- | `features/mentions` | `themelia-ui/features/mentions` | `themelia-ui/features/mentions.css` | — |
84
- | `features/overlays` | `themelia-ui/features/overlays` | `themelia-ui/features/overlays.css` | — |
85
- | `features/products` | `themelia-ui/features/products` | `themelia-ui/features/products.css` | @tanstack/react-table |
86
- | `features/resource` | `themelia-ui/features/resource` | `themelia-ui/features/resource.css` | — |
87
- | `features/resource-assignment` | `themelia-ui/features/resource-assignment` | `themelia-ui/features/resource-assignment.css` | — |
88
- | `features/rich-text-editor` | `themelia-ui/features/rich-text-editor` | `themelia-ui/features/rich-text-editor.css` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
89
- | `features/rich-text-editor/tiptap` | `themelia-ui/features/rich-text-editor/tiptap` | — | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
90
- | `features/schema-form` | `themelia-ui/features/schema-form` | `themelia-ui/features/schema-form.css` | — |
91
- | `features/sync` | `themelia-ui/features/sync` | `themelia-ui/features/sync.css` | react-hook-form |
92
- | `features/table` | `themelia-ui/features/table` | `themelia-ui/features/table.css` | @tanstack/react-table |
93
- | `features/theme-tweaker` | `themelia-ui/features/theme-tweaker` | `themelia-ui/features/theme-tweaker.css` | — |
94
- | `forms` | `themelia-ui/forms` | — | — |
95
- | `forms-rhf` | `themelia-ui/forms-rhf` | — | react-hook-form |
96
- | `layout/app-shell` | `themelia-ui/layout/app-shell` | `themelia-ui/layout/app-shell.css` | — |
97
- | `layout/auth` | `themelia-ui/layout/auth` | `themelia-ui/layout/auth.css` | — |
98
- | `layout/containers` | `themelia-ui/layout/containers` | `themelia-ui/layout/containers.css` | — |
99
- | `layout/header` | `themelia-ui/layout/header` | `themelia-ui/layout/header.css` | — |
100
- | `layout/navigation` | `themelia-ui/layout/navigation` | `themelia-ui/layout/navigation.css` | — |
101
- | `layout/page` | `themelia-ui/layout/page` | `themelia-ui/layout/page.css` | — |
102
- | `layout/settings` | `themelia-ui/layout/settings` | `themelia-ui/layout/settings.css` | — |
103
- | `layout/sidebar` | `themelia-ui/layout/sidebar` | `themelia-ui/layout/sidebar.css` | — |
104
- | `layout/workspace` | `themelia-ui/layout/workspace` | `themelia-ui/layout/workspace.css` | — |
105
- | `patterns/analytics` | `themelia-ui/patterns/analytics` | `themelia-ui/patterns/analytics.css` | recharts |
106
- | `patterns/onboarding` | `themelia-ui/patterns/onboarding` | `themelia-ui/patterns/onboarding.css` | — |
107
- | `patterns/timelines` | `themelia-ui/patterns/timelines` | `themelia-ui/patterns/timelines.css` | — |
108
- | `primitives` | `themelia-ui/primitives` | `themelia-ui/primitives.css` | — |
109
- | `theming` | `themelia-ui/theming` | — | — |
110
- | `ui-provider` | `themelia-ui/ui-provider` | — | — |
14
+ | module | import | optional peers |
15
+ | --- | --- | --- |
16
+ | `base/accordion` | `themelia-ui/base/accordion` | — |
17
+ | `base/action-menu` | `themelia-ui/base/action-menu` | — |
18
+ | `base/alert-dialog` | `themelia-ui/base/alert-dialog` | — |
19
+ | `base/aspect-ratio` | `themelia-ui/base/aspect-ratio` | — |
20
+ | `base/avatar` | `themelia-ui/base/avatar` | — |
21
+ | `base/badge` | `themelia-ui/base/badge` | — |
22
+ | `base/batch-action-bar` | `themelia-ui/base/batch-action-bar` | — |
23
+ | `base/buttons` | `themelia-ui/base/buttons` | — |
24
+ | `base/cards` | `themelia-ui/base/cards` | — |
25
+ | `base/carousel` | `themelia-ui/base/carousel` | — |
26
+ | `base/chart` | `themelia-ui/base/chart` | recharts |
27
+ | `base/choice-inputs` | `themelia-ui/base/choice-inputs` | — |
28
+ | `base/combobox` | `themelia-ui/base/combobox` | — |
29
+ | `base/command` | `themelia-ui/base/command` | — |
30
+ | `base/context-menu` | `themelia-ui/base/context-menu` | — |
31
+ | `base/copyable` | `themelia-ui/base/copyable` | — |
32
+ | `base/date-pickers` | `themelia-ui/base/date-pickers` | — |
33
+ | `base/dialog` | `themelia-ui/base/dialog` | — |
34
+ | `base/direction` | `themelia-ui/base/direction` | — |
35
+ | `base/display` | `themelia-ui/base/display` | — |
36
+ | `base/dropdown-menu` | `themelia-ui/base/dropdown-menu` | — |
37
+ | `base/feedback` | `themelia-ui/base/feedback` | — |
38
+ | `base/forms` | `themelia-ui/base/forms` | — |
39
+ | `base/forms-numeric` | `themelia-ui/base/forms-numeric` | — |
40
+ | `base/hover-card` | `themelia-ui/base/hover-card` | — |
41
+ | `base/input-group` | `themelia-ui/base/input-group` | — |
42
+ | `base/item` | `themelia-ui/base/item` | — |
43
+ | `base/label` | `themelia-ui/base/label` | — |
44
+ | `base/menubar` | `themelia-ui/base/menubar` | — |
45
+ | `base/navigation` | `themelia-ui/base/navigation` | — |
46
+ | `base/navigation-menu` | `themelia-ui/base/navigation-menu` | — |
47
+ | `base/otp-input` | `themelia-ui/base/otp-input` | — |
48
+ | `base/overlay` | `themelia-ui/base/overlay` | — |
49
+ | `base/popover` | `themelia-ui/base/popover` | — |
50
+ | `base/popover-menu` | `themelia-ui/base/popover-menu` | — |
51
+ | `base/qr-code` | `themelia-ui/base/qr-code` | — |
52
+ | `base/repeaters` | `themelia-ui/base/repeaters` | — |
53
+ | `base/resizable` | `themelia-ui/base/resizable` | — |
54
+ | `base/sheet` | `themelia-ui/base/sheet` | — |
55
+ | `base/sidebar` | `themelia-ui/base/sidebar` | — |
56
+ | `base/skeleton` | `themelia-ui/base/skeleton` | — |
57
+ | `base/slot` | `themelia-ui/base/slot` | — |
58
+ | `base/spinner` | `themelia-ui/base/spinner` | — |
59
+ | `base/structure` | `themelia-ui/base/structure` | — |
60
+ | `base/table` | `themelia-ui/base/table` | — |
61
+ | `base/text-inputs` | `themelia-ui/base/text-inputs` | — |
62
+ | `base/timeline` | `themelia-ui/base/timeline` | — |
63
+ | `base/toaster` | `themelia-ui/base/toaster` | — |
64
+ | `base/toggle` | `themelia-ui/base/toggle` | — |
65
+ | `base/toolbar` | `themelia-ui/base/toolbar` | — |
66
+ | `base/tooltip` | `themelia-ui/base/tooltip` | — |
67
+ | `base/typography` | `themelia-ui/base/typography` | — |
68
+ | `base/upload` | `themelia-ui/base/upload` | — |
69
+ | `base/value-inputs` | `themelia-ui/base/value-inputs` | — |
70
+ | `blocks/analytics` | `themelia-ui/blocks/analytics` | recharts |
71
+ | `blocks/onboarding` | `themelia-ui/blocks/onboarding` | — |
72
+ | `blocks/timelines` | `themelia-ui/blocks/timelines` | — |
73
+ | `features/actions` | `themelia-ui/features/actions` | — |
74
+ | `features/activities` | `themelia-ui/features/activities` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
75
+ | `features/ai-chat` | `themelia-ui/features/ai-chat` | — |
76
+ | `features/async-preview` | `themelia-ui/features/async-preview` | — |
77
+ | `features/combobox` | `themelia-ui/features/combobox` | — |
78
+ | `features/comments` | `themelia-ui/features/comments` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
79
+ | `features/data-view` | `themelia-ui/features/data-view` | @tanstack/react-table |
80
+ | `features/event-calendar` | `themelia-ui/features/event-calendar` | — |
81
+ | `features/filters` | `themelia-ui/features/filters` | — |
82
+ | `features/global-search` | `themelia-ui/features/global-search` | — |
83
+ | `features/kanban` | `themelia-ui/features/kanban` | @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities |
84
+ | `features/map` | `themelia-ui/features/map` | leaflet, leaflet-draw, leaflet.fullscreen, leaflet.markercluster, react-leaflet, react-leaflet-markercluster |
85
+ | `features/media-library` | `themelia-ui/features/media-library` | — |
86
+ | `features/mentions` | `themelia-ui/features/mentions` | — |
87
+ | `features/overlays` | `themelia-ui/features/overlays` | — |
88
+ | `features/products` | `themelia-ui/features/products` | @tanstack/react-table |
89
+ | `features/resource` | `themelia-ui/features/resource` | — |
90
+ | `features/resource-assignment` | `themelia-ui/features/resource-assignment` | — |
91
+ | `features/rich-text-editor` | `themelia-ui/features/rich-text-editor` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
92
+ | `features/rich-text-editor/tiptap` | `themelia-ui/features/rich-text-editor/tiptap` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
93
+ | `features/schema-form` | `themelia-ui/features/schema-form` | — |
94
+ | `features/sync` | `themelia-ui/features/sync` | react-hook-form |
95
+ | `features/table` | `themelia-ui/features/table` | @tanstack/react-table |
96
+ | `features/theme-tweaker` | `themelia-ui/features/theme-tweaker` | — |
97
+ | `forms` | `themelia-ui/forms` | — |
98
+ | `forms-rhf` | `themelia-ui/forms-rhf` | react-hook-form |
99
+ | `layout/app-shell` | `themelia-ui/layout/app-shell` | — |
100
+ | `layout/auth` | `themelia-ui/layout/auth` | — |
101
+ | `layout/containers` | `themelia-ui/layout/containers` | — |
102
+ | `layout/header` | `themelia-ui/layout/header` | — |
103
+ | `layout/navigation` | `themelia-ui/layout/navigation` | — |
104
+ | `layout/page` | `themelia-ui/layout/page` | — |
105
+ | `layout/settings` | `themelia-ui/layout/settings` | — |
106
+ | `layout/sidebar` | `themelia-ui/layout/sidebar` | — |
107
+ | `layout/workspace` | `themelia-ui/layout/workspace` | — |
108
+ | `primitives` | `themelia-ui/primitives` | — |
109
+ | `theming` | `themelia-ui/theming` | — |
110
+ | `ui-provider` | `themelia-ui/ui-provider` | — |
111
111
 
112
112
  ## admin profile — 2 modules
113
113
 
114
- | module | import | stylesheet | optional peers |
115
- | --- | --- | --- | --- |
116
- | `admin/patterns/access` | `themelia-ui/admin/patterns/access` | `themelia-ui/admin/patterns/access.css` | — |
117
- | `admin/patterns/commerce` | `themelia-ui/admin/patterns/commerce` | `themelia-ui/admin/patterns/commerce.css` | — |
114
+ | module | import | optional peers |
115
+ | --- | --- | --- |
116
+ | `blocks/admin/access` | `themelia-ui/blocks/admin/access` | — |
117
+ | `blocks/admin/commerce` | `themelia-ui/blocks/admin/commerce` | — |
118
118
 
119
119
  ## Optional peers — 15 of them
120
120
 
@@ -137,4 +137,4 @@ resolves it. Release verification rejects a module that reaches an undeclared pe
137
137
  | `react-hook-form` | `features/sync`, `forms-rhf` |
138
138
  | `react-leaflet` | `features/map` |
139
139
  | `react-leaflet-markercluster` | `features/map` |
140
- | `recharts` | `base/chart`, `patterns/analytics` |
140
+ | `recharts` | `base/chart`, `blocks/analytics` |
@@ -9,11 +9,13 @@ by the module that needs it; see [Optional peers](#optional-peers).
9
9
 
10
10
  ## Browser support
11
11
 
12
- Chrome and Edge 125, Firefox 121 and Safari 16.4 or newer. The stylesheets rely on
13
- `round()`, `:has()`, `:dir()` and `color-mix()` with no fallback below those versions.
14
- Entrance transitions use `@starting-style` and simply don't animate where it is missing.
15
- If your bundler lowers CSS for older targets, keep `:dir()` out of it: lowered, it becomes a
16
- list of right-to-left languages and ignores `dir="rtl"`.
12
+ Chrome and Edge 125, Firefox 121 and Safari 17.5 or newer. The stylesheets rely on
13
+ `round()`, `:has()`, `:dir()`, `color-mix()` and `light-dark()` with no fallback below those
14
+ versions. Entrance transitions use `@starting-style` and simply don't animate where it is
15
+ missing. If your bundler lowers CSS for older targets, keep `:dir()` and `light-dark()` out of
16
+ it: lowered, `:dir()` becomes a list of right-to-left languages and ignores `dir="rtl"`, and
17
+ `light-dark()` resolves where a theme variable is declared, so a dark region inside a light
18
+ page keeps the light colours.
17
19
 
18
20
  ## Import exactly what you use
19
21
 
@@ -36,41 +38,67 @@ The exact import for every module is in
36
38
 
37
39
  ## Loading the CSS
38
40
 
39
- The package ships three kinds of stylesheet:
41
+ ### In a bundled app
40
42
 
41
- | Import | Contains |
42
- | --- | --- |
43
- | `themelia-ui/<module>.css` | `core.css`, then the rules of the module and of the modules it draws with |
44
- | `themelia-ui/style.css` | `core.css` and every module, in one file |
45
- | `themelia-ui/core.css` | Tokens, themes, typefaces, the base reset and the cascade layer order; no component rules |
43
+ A component brings its own CSS. Import it from its subpath and nothing else: Vite, webpack,
44
+ Rspack and the frameworks built on them, such as Next.js and React Router, add its stylesheet
45
+ with its JavaScript, include each stylesheet once however many components need it, and leave
46
+ out the CSS of any module the application never imports. Your bundler processes the kit's CSS
47
+ like your own, so the note on lowering under [Browser support](#browser-support) applies to it.
48
+
49
+ Do not also import `themelia-ui/style.css` or a module stylesheet from JavaScript; that loads
50
+ the same rules twice. The upgrade codemod removes those imports.
46
51
 
47
- [`imports.md`](imports.md) gives each module's stylesheet path. A module whose
48
- components draw nothing has no stylesheet.
52
+ Parcel reads a package's `exports` only when the application's `package.json` sets
53
+ `"@parcel/resolver-default": { "packageExports": true }`.
49
54
 
50
- ### Import the stylesheets
55
+ ### Server rendering with Vite
56
+
57
+ Astro, React Router, TanStack Start, Vike and other frameworks that render on the server with
58
+ Vite hand installed packages to Node, which loads the kit without its CSS. List `themelia-ui`,
59
+ and any installed package that imports it, in `ssr.noExternal`, so Vite processes it:
60
+
61
+ ```ts fragment — the consuming application's bundler config, not compiled against the package
62
+ // vite.config.ts, or the `vite` key of astro.config.mjs
63
+ export default {
64
+ ssr: { noExternal: ["themelia-ui"] },
65
+ }
66
+ ```
51
67
 
52
- The JavaScript imports no CSS. Import each module's stylesheet beside its JavaScript, as the
53
- examples in these docs do, or `style.css` once. Vite, webpack, Rspack, Next.js and other
54
- bundlers that handle CSS imports include each file once, however many modules import it. A
55
- component whose stylesheet is not imported renders unstyled.
68
+ Astro gathers a page's CSS on the server, so without this line it renders the kit unstyled.
69
+ React Router takes CSS from the client build; the line fixes its development server's first
70
+ render. Next.js needs nothing.
71
+
72
+ ### Without a bundler
73
+
74
+ A page that links stylesheets directly links `style.css`, which includes `core.css`:
75
+
76
+ | Stylesheet | Contains |
77
+ | --- | --- |
78
+ | `themelia-ui/core.css` | Tokens, themes, typefaces, the base reset and the cascade layer order; no component rules |
79
+ | `themelia-ui/style.css` | `core.css` and every module, in one file |
56
80
 
57
81
  ### In Node
58
82
 
59
- The package is ES modules, and its JavaScript imports no CSS, so Node loads it as it is:
60
- server rendering and test runners need no configuration for it, and CommonJS code on Node
61
- 20.19 or later can `require()` it. Jest is the exception, because it transforms nothing in
62
- `node_modules` by default: exempt the package in `transformIgnorePatterns`.
83
+ The package is ES modules. Its JavaScript imports its CSS through the package's private
84
+ `imports` map, which resolves to an empty module outside a bundler, so Node loads it as it
85
+ is, without the CSS. Test runners need no configuration for it, and CommonJS code on Node
86
+ 20.19 or later can `require()` it; a server render needs configuration only where the
87
+ framework gathers CSS on the server, as in
88
+ [Server rendering with Vite](#server-rendering-with-vite). Jest is the exception: it needs
89
+ 29.4 or newer, which resolves the `imports` map, and it transforms nothing in `node_modules`
90
+ by default, so exempt the package in `transformIgnorePatterns`.
63
91
 
64
92
  ### `core.css` on its own
65
93
 
66
- Every module stylesheet begins by importing `core.css`, so a component never needs a
67
- separate core import to render correctly. Import `core.css` on its own when application CSS
68
- uses the tokens on a page without kit components, or to place the kit's layers next to
69
- another layered stylesheet, as in the [Tailwind setup](theming.md#tailwind-css-v4).
94
+ Import `core.css` on its own when application CSS uses the tokens on a page without kit
95
+ components, or to place the kit's layers next to another layered stylesheet: import it from
96
+ JavaScript before that stylesheet. It is the file the components import, so a bundler keeps
97
+ one copy; an `@import` from a CSS file inlines a second one.
70
98
 
71
99
  ### Overriding the kit
72
100
 
73
- Component rules live in the cascade layers `tokens, theming, base, components, utilities`,
101
+ Component rules live in the cascade layers `tokens, base, components, utilities`,
74
102
  so unlayered application CSS wins over them whatever its order or specificity. Select with
75
103
  the stable `data-slot` attributes and BEM hooks such as `{name}--component`, and select a
76
104
  state with the attributes the primitives set (`data-open`, `data-checked`, `data-disabled`,