themelia-ui 3.0.0 → 3.2.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 (746) hide show
  1. package/.agents/skills/themelia-ui/SKILL.md +60 -33
  2. package/.agents/skills/themelia-ui/manifest.json +23 -0
  3. package/.agents/skills/themelia-ui/references/api-compatibility.md +5 -4
  4. package/.agents/skills/themelia-ui/references/blocks.md +123 -0
  5. package/.agents/skills/themelia-ui/references/composition-ladder.md +8 -8
  6. package/.agents/skills/themelia-ui/references/composition.md +100 -19
  7. package/.agents/skills/themelia-ui/references/forms.md +23 -3
  8. package/.agents/skills/themelia-ui/references/framework-wiring.md +41 -13
  9. package/.agents/skills/themelia-ui/references/i18n.md +4 -2
  10. package/.agents/skills/themelia-ui/references/imports.md +104 -104
  11. package/.agents/skills/themelia-ui/references/installation.md +60 -31
  12. package/.agents/skills/themelia-ui/references/migration.md +156 -5
  13. package/.agents/skills/themelia-ui/references/provider-and-scoping.md +37 -25
  14. package/.agents/skills/themelia-ui/references/reference-workflows.md +43 -0
  15. package/.agents/skills/themelia-ui/references/structure-and-spacing.md +147 -0
  16. package/.agents/skills/themelia-ui/references/theming.md +174 -131
  17. package/.agents/skills/themelia-ui/references/troubleshooting.md +88 -30
  18. package/.agents/skills/themelia-ui/references/verification.md +60 -5
  19. package/CHANGELOG.md +212 -0
  20. package/README.md +48 -60
  21. package/dist/accordion-CHuzMmWL.js +143 -0
  22. package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
  23. package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Cg2HhuBe.js} +1 -1
  24. package/dist/avatar-Dc_BNYfB.js +93 -0
  25. package/dist/badge-VlJVZjdm.js +45 -0
  26. package/dist/base/accordion.js +1 -1
  27. package/dist/base/action-menu.js +1 -1
  28. package/dist/base/alert-dialog.js +1 -1
  29. package/dist/base/aspect-ratio.js +3 -1
  30. package/dist/base/avatar.js +1 -1
  31. package/dist/base/badge.js +2 -2
  32. package/dist/base/batch-action-bar.js +1 -1
  33. package/dist/base/buttons.js +1 -1
  34. package/dist/base/cards.js +1 -1
  35. package/dist/base/carousel.js +6 -4
  36. package/dist/base/chart.js +1 -1
  37. package/dist/base/choice-inputs.js +1 -1
  38. package/dist/base/combobox.js +1 -1
  39. package/dist/base/command.js +1 -1
  40. package/dist/base/context-menu.js +22 -21
  41. package/dist/base/copyable.js +1 -1
  42. package/dist/base/date-pickers.js +1 -1
  43. package/dist/base/dialog.js +1 -1
  44. package/dist/base/display.js +1 -1
  45. package/dist/base/dropdown-menu.js +1 -1
  46. package/dist/base/feedback.js +1 -1
  47. package/dist/base/forms-numeric.js +1 -1
  48. package/dist/base/forms.js +1 -1
  49. package/dist/base/hover-card.js +26 -23
  50. package/dist/base/input-group.js +1 -1
  51. package/dist/base/item.js +1 -1
  52. package/dist/base/label.js +1 -1
  53. package/dist/base/menubar.js +20 -14
  54. package/dist/base/navigation-menu.js +47 -38
  55. package/dist/base/navigation.js +1 -1
  56. package/dist/base/otp-input.js +36 -30
  57. package/dist/base/overlay.js +1 -1
  58. package/dist/base/popover-menu.js +1 -1
  59. package/dist/base/popover.js +1 -1
  60. package/dist/base/qr-code.js +51 -47
  61. package/dist/base/repeaters.js +1 -1
  62. package/dist/base/resizable.js +2 -0
  63. package/dist/base/sheet.js +1 -1
  64. package/dist/base/sidebar.js +1 -1
  65. package/dist/base/skeleton.js +1 -1
  66. package/dist/base/spinner.js +1 -1
  67. package/dist/base/structure.js +1 -1
  68. package/dist/base/table.js +1 -1
  69. package/dist/base/text-inputs.js +1 -1
  70. package/dist/base/timeline.js +1 -1
  71. package/dist/base/toaster.js +1 -1
  72. package/dist/base/toggle.js +21 -15
  73. package/dist/base/toolbar.js +1 -1
  74. package/dist/base/tooltip.js +1 -1
  75. package/dist/base/typography.js +2 -2
  76. package/dist/base/upload.js +1 -1
  77. package/dist/base/value-inputs.js +1 -1
  78. package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
  79. package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
  80. package/dist/blocks/admin/commerce.js +2493 -0
  81. package/dist/{patterns → blocks}/analytics.js +312 -303
  82. package/dist/{patterns → blocks}/onboarding.js +27 -23
  83. package/dist/{patterns → blocks}/timelines.js +1 -1
  84. package/dist/buttons-BX2JfL5X.js +173 -0
  85. package/dist/cards-Ddhz43Bz.js +279 -0
  86. package/dist/chart-BkK3Xm10.js +201 -0
  87. package/dist/choice-inputs-NwRxvmZN.js +694 -0
  88. package/dist/combobox-519ubijc.js +292 -0
  89. package/dist/command-JjApYFds.js +156 -0
  90. package/dist/comments-CCQ2QRaU.js +1443 -0
  91. package/dist/components/base/action-menu/action-menu.d.ts +1 -1
  92. package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
  93. package/dist/components/base/avatar/avatar.d.ts +5 -2
  94. package/dist/components/base/badge/badge.d.ts +10 -10
  95. package/dist/components/base/badge/badge.variants.d.ts +1 -2
  96. package/dist/components/base/badge/index.d.ts +1 -2
  97. package/dist/components/base/buttons/button.d.ts +9 -8
  98. package/dist/components/base/buttons/button.types.d.ts +2 -2
  99. package/dist/components/base/buttons/index.d.ts +1 -1
  100. package/dist/components/base/buttons/text-button.d.ts +1 -1
  101. package/dist/components/base/cards/card-actions.d.ts +1 -1
  102. package/dist/components/base/cards/card.d.ts +3 -1
  103. package/dist/components/base/cards/partials/card-header.d.ts +2 -1
  104. package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
  105. package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
  106. package/dist/components/base/command/command.d.ts +5 -2
  107. package/dist/components/base/display/icon-badge.d.ts +5 -3
  108. package/dist/components/base/display/index.d.ts +1 -1
  109. package/dist/components/base/display/metadata-list.d.ts +6 -6
  110. package/dist/components/base/display/metadata-value.d.ts +1 -1
  111. package/dist/components/base/display/separator.d.ts +2 -2
  112. package/dist/components/base/feedback/alert.d.ts +3 -2
  113. package/dist/components/base/feedback/empty.d.ts +5 -4
  114. package/dist/components/base/feedback/progress-circle.d.ts +2 -2
  115. package/dist/components/base/feedback/progress.d.ts +3 -1
  116. package/dist/components/base/forms/form-field.d.ts +2 -2
  117. package/dist/components/base/input-group/input-group.d.ts +8 -10
  118. package/dist/components/base/item/item.d.ts +2 -2
  119. package/dist/components/base/overlay/index.d.ts +1 -1
  120. package/dist/components/base/overlay/overlay.types.d.ts +7 -5
  121. package/dist/components/base/qr-code/qr-code.d.ts +4 -4
  122. package/dist/components/base/sheet/sheet.d.ts +1 -1
  123. package/dist/components/base/sidebar/sidebar.d.ts +9 -13
  124. package/dist/components/base/spinner/spinner.d.ts +2 -2
  125. package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
  126. package/dist/components/base/structure/bleed.d.ts +4 -2
  127. package/dist/components/base/structure/grid.d.ts +10 -4
  128. package/dist/components/base/structure/index.d.ts +1 -1
  129. package/dist/components/base/structure/split.d.ts +4 -3
  130. package/dist/components/base/structure/stack.d.ts +5 -5
  131. package/dist/components/base/structure/structure.maps.d.ts +2 -1
  132. package/dist/components/base/structure/structure.types.d.ts +10 -4
  133. package/dist/components/base/toggle/toggle.d.ts +2 -2
  134. package/dist/components/base/toolbar/toolbar.d.ts +3 -3
  135. package/dist/components/base/typography/index.d.ts +2 -0
  136. package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
  137. package/dist/components/base/typography/text/index.d.ts +1 -0
  138. package/dist/components/base/typography/text/text.d.ts +15 -8
  139. package/dist/components/base/typography/text/text.variants.d.ts +41 -0
  140. package/dist/components/base/value-inputs/color-input.d.ts +1 -7
  141. package/dist/components/base/value-inputs/slider.d.ts +2 -7
  142. package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
  143. package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
  144. package/dist/components/features/actions/action-adapters.d.ts +3 -3
  145. package/dist/components/features/actions/actions.types.d.ts +3 -5
  146. package/dist/components/features/actions/index.d.ts +1 -1
  147. package/dist/components/features/activities/activities-feed.d.ts +1 -1
  148. package/dist/components/features/activities/activities.types.d.ts +4 -4
  149. package/dist/components/features/activities/activity-parts.d.ts +3 -3
  150. package/dist/components/features/activities/activity-row.d.ts +4 -4
  151. package/dist/components/features/activities/index.d.ts +1 -1
  152. package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
  153. package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
  154. package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
  155. package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
  156. package/dist/components/features/combobox/fetching-combobox.d.ts +2 -1
  157. package/dist/components/features/combobox/resource-combobox.d.ts +3 -0
  158. package/dist/components/features/combobox/use-suggestions.d.ts +7 -0
  159. package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
  160. package/dist/components/features/media-library/index.d.ts +1 -1
  161. package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
  162. package/dist/components/features/media-library/media-library-views.d.ts +4 -3
  163. package/dist/components/features/media-library/media-library.d.ts +1 -1
  164. package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
  165. package/dist/components/features/media-library/media-library.types.d.ts +11 -9
  166. package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
  167. package/dist/components/features/media-library/use-media-library.d.ts +1 -4
  168. package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
  169. package/dist/components/features/overlays/index.d.ts +1 -1
  170. package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
  171. package/dist/components/features/overlays/overlays.types.d.ts +8 -7
  172. package/dist/components/features/rich-text-editor/index.d.ts +0 -1
  173. package/dist/components/features/table/data-table-body.d.ts +1 -1
  174. package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
  175. package/dist/components/features/table/data-table-header.d.ts +1 -1
  176. package/dist/components/features/table/data-table-size.d.ts +1 -1
  177. package/dist/components/features/table/data-table.d.ts +1 -1
  178. package/dist/components/features/table/index.d.ts +1 -1
  179. package/dist/components/features/table/table-helpers.d.ts +9 -3
  180. package/dist/components/features/table/table.strings.d.ts +11 -0
  181. package/dist/components/features/table/table.types.d.ts +60 -2
  182. package/dist/components/features/theme-tweaker/index.d.ts +1 -1
  183. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
  184. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
  185. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
  186. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  187. package/dist/components/layout/auth/auth.d.ts +1 -1
  188. package/dist/components/layout/auth/auth.types.d.ts +1 -1
  189. package/dist/components/primitives/value.d.ts +3 -1
  190. package/dist/containers-B8d8U9GS.js +2 -0
  191. package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
  192. package/dist/core.css +2 -2
  193. package/dist/css/access.css +2 -1
  194. package/dist/css/accordion.css +2 -1
  195. package/dist/css/action-menu.css +2 -1
  196. package/dist/css/activities.css +2 -1
  197. package/dist/css/ai-chat.css +2 -1
  198. package/dist/css/analytics.css +2 -1
  199. package/dist/css/app-shell.css +2 -1
  200. package/dist/css/aspect-ratio.css +2 -1
  201. package/dist/css/async-preview.css +2 -1
  202. package/dist/css/auth.css +2 -1
  203. package/dist/css/avatar.css +2 -1
  204. package/dist/css/badge.css +2 -1
  205. package/dist/css/batch-action-bar.css +2 -1
  206. package/dist/css/buttons.css +2 -1
  207. package/dist/css/cards.css +2 -1
  208. package/dist/css/carousel.css +2 -1
  209. package/dist/css/chart.css +2 -1
  210. package/dist/css/choice-inputs.css +2 -1
  211. package/dist/css/combobox.css +2 -1
  212. package/dist/css/combobox2.css +2 -1
  213. package/dist/css/command.css +2 -1
  214. package/dist/css/comments.css +2 -1
  215. package/dist/css/commerce.css +2 -1
  216. package/dist/css/containers.css +2 -1
  217. package/dist/css/copyable.css +2 -1
  218. package/dist/css/data-view.css +2 -1
  219. package/dist/css/date-pickers.css +2 -1
  220. package/dist/css/display.css +2 -1
  221. package/dist/css/dropdown-menu.css +2 -1
  222. package/dist/css/event-calendar.css +2 -1
  223. package/dist/css/feedback.css +2 -1
  224. package/dist/css/filters.css +2 -1
  225. package/dist/css/forms-numeric.css +2 -1
  226. package/dist/css/forms.css +2 -1
  227. package/dist/css/global-search.css +2 -1
  228. package/dist/css/header.css +2 -1
  229. package/dist/css/hover-card.css +2 -1
  230. package/dist/css/input-group.css +2 -1
  231. package/dist/css/item.css +2 -1
  232. package/dist/css/kanban.css +2 -1
  233. package/dist/css/label.css +2 -1
  234. package/dist/css/map.css +2 -1
  235. package/dist/css/media-library.css +2 -1
  236. package/dist/css/mentions.css +2 -1
  237. package/dist/css/menubar.css +2 -1
  238. package/dist/css/navigation-menu.css +2 -1
  239. package/dist/css/navigation.css +2 -1
  240. package/dist/css/navigation2.css +2 -1
  241. package/dist/css/onboarding.css +2 -1
  242. package/dist/css/otp-input.css +2 -1
  243. package/dist/css/overlay.css +2 -1
  244. package/dist/css/overlays.css +2 -1
  245. package/dist/css/page.css +2 -1
  246. package/dist/css/popover-menu.css +2 -1
  247. package/dist/css/popover.css +2 -1
  248. package/dist/css/primitives.css +2 -1
  249. package/dist/css/products.css +2 -1
  250. package/dist/css/qr-code.css +2 -1
  251. package/dist/css/repeaters.css +2 -1
  252. package/dist/css/resizable.css +2 -1
  253. package/dist/css/resource-assignment.css +2 -1
  254. package/dist/css/resource.css +2 -1
  255. package/dist/css/rich-text-editor.css +2 -1
  256. package/dist/css/schema-form.css +2 -1
  257. package/dist/css/sidebar.css +2 -1
  258. package/dist/css/sidebar2.css +2 -1
  259. package/dist/css/skeleton.css +2 -1
  260. package/dist/css/spinner.css +2 -1
  261. package/dist/css/structure.css +2 -1
  262. package/dist/css/sync.css +2 -1
  263. package/dist/css/table.css +2 -1
  264. package/dist/css/table2.css +2 -1
  265. package/dist/css/text-inputs.css +2 -1
  266. package/dist/css/theme-tweaker.css +2 -1
  267. package/dist/css/timeline.css +2 -1
  268. package/dist/css/timelines.css +2 -1
  269. package/dist/css/toaster.css +2 -1
  270. package/dist/css/toggle.css +2 -1
  271. package/dist/css/toolbar.css +2 -1
  272. package/dist/css/tooltip.css +2 -1
  273. package/dist/css/typography.css +2 -1
  274. package/dist/css/upload.css +2 -1
  275. package/dist/css/value-inputs.css +2 -1
  276. package/dist/css/workspace.css +2 -1
  277. package/dist/css-graph.json +1027 -0
  278. package/dist/date-pickers-BwCwKIVM.js +685 -0
  279. package/dist/{dialog-CtFCuTUF.js → dialog-CAnwRNrm.js} +1 -1
  280. package/dist/display-a7AoX_u7.js +664 -0
  281. package/dist/dropdown-menu-Br8kvjrF.js +235 -0
  282. package/dist/empty.js +0 -0
  283. package/dist/features/actions.js +6 -6
  284. package/dist/features/activities.js +219 -216
  285. package/dist/features/ai-chat.js +593 -565
  286. package/dist/features/async-preview.js +105 -286
  287. package/dist/features/combobox.js +328 -314
  288. package/dist/features/comments.js +1 -1
  289. package/dist/features/data-view.js +56 -55
  290. package/dist/features/event-calendar.js +189 -185
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +259 -260
  293. package/dist/features/kanban.js +39 -37
  294. package/dist/features/map.js +357 -354
  295. package/dist/features/media-library.js +931 -931
  296. package/dist/features/mentions.js +1 -1
  297. package/dist/features/overlays.js +1 -1
  298. package/dist/features/products.js +950 -942
  299. package/dist/features/resource-assignment.js +39 -37
  300. package/dist/features/resource.js +70 -71
  301. package/dist/features/rich-text-editor.js +2 -2
  302. package/dist/features/schema-form.js +342 -338
  303. package/dist/features/sync.js +14 -12
  304. package/dist/features/table.js +1 -1
  305. package/dist/features/theme-tweaker.js +1002 -962
  306. package/dist/feedback-D4qVsKlD.js +430 -0
  307. package/dist/{filters-DOLKRSmb.js → filters-BhsTkWpZ.js} +386 -383
  308. package/dist/forms-C0WeNPFF.js +250 -0
  309. package/dist/forms-numeric-IwQ1ltNf.js +582 -0
  310. package/dist/hooks/use-native-dialog.d.ts +1 -1
  311. package/dist/index.js +2 -2
  312. package/dist/input-group-HS_Z0Ei_.js +119 -0
  313. package/dist/item-M2pmpWXh.js +150 -0
  314. package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
  315. package/dist/layout/app-shell.js +4 -2
  316. package/dist/layout/auth.js +102 -100
  317. package/dist/layout/header.js +190 -180
  318. package/dist/layout/navigation.js +1 -1
  319. package/dist/layout/page.js +18 -16
  320. package/dist/layout/settings.js +2 -2
  321. package/dist/layout/sidebar.js +50 -46
  322. package/dist/layout/workspace.js +71 -69
  323. package/dist/lib/action-presentation.d.ts +3 -3
  324. package/dist/lib/component-vocabulary.d.ts +2 -2
  325. package/dist/lib/css-length.d.ts +2 -0
  326. package/dist/lib/responsive.d.ts +1 -1
  327. package/dist/lib/theming/index.d.ts +1 -0
  328. package/dist/lib/theming/recipes.d.ts +2 -2
  329. package/dist/lib/theming/themes/dense.d.ts +3 -0
  330. package/dist/lib/theming/themes/editorial.d.ts +3 -0
  331. package/dist/lib/theming/themes/index.d.ts +8 -0
  332. package/dist/lib/theming/themes/pair.d.ts +7 -0
  333. package/dist/lib/theming/themes/sharp.d.ts +3 -0
  334. package/dist/lib/theming/themes/soft.d.ts +3 -0
  335. package/dist/lib/theming/themes/types.d.ts +12 -0
  336. package/dist/lib/ui-provider/index.d.ts +1 -1
  337. package/dist/lib/ui-provider/scope.d.ts +5 -8
  338. package/dist/lib/ui-provider/tokens.d.ts +11 -3
  339. package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
  340. package/dist/lib/ui-provider/types.d.ts +17 -19
  341. package/dist/lib/ui-provider/ui-scope.d.ts +1 -1
  342. package/dist/{mentions-BbsEHlcH.js → mentions-BOxbigwp.js} +113 -111
  343. package/dist/navigation-Bgu7Vc0M.js +622 -0
  344. package/dist/navigation-DiYACqpE.js +216 -0
  345. package/dist/overlay-BuQOl8aP.js +356 -0
  346. package/dist/{overlays-DvVoS3td.js → overlays-1sULyytH.js} +77 -75
  347. package/dist/popover-CA7SP_iz.js +127 -0
  348. package/dist/popover-menu-QXgQeWeG.js +192 -0
  349. package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
  350. package/dist/primitives.js +1 -1
  351. package/dist/profiles/admin.json +6 -36
  352. package/dist/profiles/general.json +6 -96
  353. package/dist/repeaters-CeH20dvr.js +445 -0
  354. package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
  355. package/dist/{sheet-CKcmRbJ9.js → sheet-CJ1-OAla.js} +3 -3
  356. package/dist/sidebar-D8uGqxio.js +421 -0
  357. package/dist/skeleton-BTKNKTdj.js +173 -0
  358. package/dist/spinner-Tc1QCnxM.js +30 -0
  359. package/dist/{structure-D0WGQAP3.js → structure-CynEZ-OY.js} +15 -23
  360. package/dist/style.css +1 -1
  361. package/dist/styles/TOKENS.md +116 -275
  362. package/dist/styles/animation.css +114 -0
  363. package/dist/styles/base.css +7 -6
  364. package/dist/styles/fields.css +45 -63
  365. package/dist/styles/focus.css +12 -0
  366. package/dist/styles/forced-colors.css +11 -10
  367. package/dist/styles/index.css +23 -30
  368. package/dist/styles/map.css +45 -34
  369. package/dist/styles/mentions.css +14 -52
  370. package/dist/styles/overlays.css +7 -7
  371. package/dist/styles/tailwind.css +76 -127
  372. package/dist/styles/targets.css +3 -3
  373. package/dist/styles/theme/colour.css +86 -0
  374. package/dist/styles/theme/density.css +31 -0
  375. package/dist/styles/theme/elevation.css +9 -0
  376. package/dist/styles/theme/layout.css +18 -0
  377. package/dist/styles/theme/motion.css +18 -0
  378. package/dist/styles/theme/shape.css +12 -0
  379. package/dist/styles/theme/size.css +10 -0
  380. package/dist/styles/theme/spacing.css +11 -0
  381. package/dist/styles/theme/typography.css +20 -0
  382. package/dist/styles/tone.css +61 -0
  383. package/dist/table-B7dtIFUx.js +1262 -0
  384. package/dist/table-Ds_eO9av.js +191 -0
  385. package/dist/tailwind.css +76 -127
  386. package/dist/text-inputs-BboE77nZ.js +395 -0
  387. package/dist/theming-C5ygF5uf.js +292 -0
  388. package/dist/theming.js +2 -2
  389. package/dist/{timeline-BdaGRyj-.js → timeline-BR_jNgvz.js} +57 -49
  390. package/dist/{timelines-BB7550mz.js → timelines-DXG1BfIN.js} +69 -67
  391. package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
  392. package/dist/tokens.json +1027 -636
  393. package/dist/toolbar-DBK-c4yy.js +74 -0
  394. package/dist/tooltip-BPYP-jUm.js +76 -0
  395. package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
  396. package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
  397. package/dist/ui-provider.js +1 -1
  398. package/dist/upload-CYuoJykZ.js +968 -0
  399. package/dist/use-async-preview-BFwf9ElY.js +188 -0
  400. package/dist/value-inputs-ng8aVJJZ.js +728 -0
  401. package/docs/README.md +13 -3
  402. package/docs/build/browser-composition-fixture.ts +28 -0
  403. package/docs/build/recipes.md +11484 -10723
  404. package/docs/generated/component-index.json +9809 -9169
  405. package/docs/generated/components/INDEX.md +5 -5
  406. package/docs/generated/components/base--accordion.md +51 -2
  407. package/docs/generated/components/base--action-menu.md +14 -15
  408. package/docs/generated/components/base--alert-dialog.md +3 -4
  409. package/docs/generated/components/base--aspect-ratio.md +3 -4
  410. package/docs/generated/components/base--avatar.md +7 -7
  411. package/docs/generated/components/base--badge.md +159 -27
  412. package/docs/generated/components/base--batch-action-bar.md +6 -7
  413. package/docs/generated/components/base--buttons.md +151 -47
  414. package/docs/generated/components/base--cards.md +107 -14
  415. package/docs/generated/components/base--carousel.md +1 -2
  416. package/docs/generated/components/base--chart.md +44 -8
  417. package/docs/generated/components/base--choice-inputs.md +10 -11
  418. package/docs/generated/components/base--combobox.md +3 -4
  419. package/docs/generated/components/base--command.md +6 -6
  420. package/docs/generated/components/base--context-menu.md +1 -2
  421. package/docs/generated/components/base--copyable.md +6 -7
  422. package/docs/generated/components/base--date-pickers.md +6 -7
  423. package/docs/generated/components/base--dialog.md +6 -7
  424. package/docs/generated/components/base--direction.md +1 -1
  425. package/docs/generated/components/base--display.md +234 -54
  426. package/docs/generated/components/base--dropdown-menu.md +6 -7
  427. package/docs/generated/components/base--feedback.md +71 -18
  428. package/docs/generated/components/base--forms-numeric.md +6 -7
  429. package/docs/generated/components/base--forms.md +84 -14
  430. package/docs/generated/components/base--hover-card.md +3 -4
  431. package/docs/generated/components/base--input-group.md +27 -30
  432. package/docs/generated/components/base--item.md +8 -9
  433. package/docs/generated/components/base--label.md +2 -3
  434. package/docs/generated/components/base--menubar.md +2 -4
  435. package/docs/generated/components/base--navigation-menu.md +2 -3
  436. package/docs/generated/components/base--navigation.md +2 -3
  437. package/docs/generated/components/base--otp-input.md +3 -4
  438. package/docs/generated/components/base--overlay.md +56 -47
  439. package/docs/generated/components/base--popover-menu.md +7 -8
  440. package/docs/generated/components/base--popover.md +9 -10
  441. package/docs/generated/components/base--qr-code.md +7 -8
  442. package/docs/generated/components/base--repeaters.md +6 -7
  443. package/docs/generated/components/base--resizable.md +2 -3
  444. package/docs/generated/components/base--sheet.md +12 -13
  445. package/docs/generated/components/base--sidebar.md +9 -11
  446. package/docs/generated/components/base--skeleton.md +6 -7
  447. package/docs/generated/components/base--slot.md +1 -1
  448. package/docs/generated/components/base--spinner.md +5 -7
  449. package/docs/generated/components/base--structure.md +320 -70
  450. package/docs/generated/components/base--table.md +61 -3
  451. package/docs/generated/components/base--text-inputs.md +17 -18
  452. package/docs/generated/components/base--timeline.md +45 -4
  453. package/docs/generated/components/base--toaster.md +43 -12
  454. package/docs/generated/components/base--toggle.md +11 -12
  455. package/docs/generated/components/base--toolbar.md +7 -8
  456. package/docs/generated/components/base--tooltip.md +5 -6
  457. package/docs/generated/components/base--typography.md +317 -32
  458. package/docs/generated/components/base--upload.md +8 -9
  459. package/docs/generated/components/base--value-inputs.md +9 -38
  460. package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +15 -6
  461. package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
  462. package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +57 -14
  463. package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
  464. package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
  465. package/docs/generated/components/features--actions.md +8 -18
  466. package/docs/generated/components/features--activities.md +31 -32
  467. package/docs/generated/components/features--ai-chat.md +15 -15
  468. package/docs/generated/components/features--async-preview.md +5 -6
  469. package/docs/generated/components/features--combobox.md +71 -5
  470. package/docs/generated/components/features--comments.md +0 -1
  471. package/docs/generated/components/features--data-view.md +63 -8
  472. package/docs/generated/components/features--event-calendar.md +1 -2
  473. package/docs/generated/components/features--filters.md +11 -2
  474. package/docs/generated/components/features--global-search.md +1 -2
  475. package/docs/generated/components/features--kanban.md +1 -2
  476. package/docs/generated/components/features--map.md +1 -2
  477. package/docs/generated/components/features--media-library.md +105 -38
  478. package/docs/generated/components/features--mentions.md +7 -7
  479. package/docs/generated/components/features--overlays.md +75 -22
  480. package/docs/generated/components/features--products.md +10 -11
  481. package/docs/generated/components/features--resource-assignment.md +2 -3
  482. package/docs/generated/components/features--resource.md +3 -4
  483. package/docs/generated/components/features--rich-text-editor.md +42 -13
  484. package/docs/generated/components/features--schema-form.md +1 -2
  485. package/docs/generated/components/features--sync.md +2 -3
  486. package/docs/generated/components/features--table.md +162 -12
  487. package/docs/generated/components/features--theme-tweaker.md +30 -15
  488. package/docs/generated/components/forms.md +2 -2
  489. package/docs/generated/components/layout--app-shell.md +41 -11
  490. package/docs/generated/components/layout--auth.md +8 -9
  491. package/docs/generated/components/layout--containers.md +40 -1
  492. package/docs/generated/components/layout--header.md +2 -3
  493. package/docs/generated/components/layout--navigation.md +0 -1
  494. package/docs/generated/components/layout--page.md +33 -5
  495. package/docs/generated/components/layout--settings.md +0 -1
  496. package/docs/generated/components/layout--sidebar.md +47 -7
  497. package/docs/generated/components/layout--workspace.md +3 -4
  498. package/docs/generated/components/primitives.md +128 -17
  499. package/docs/generated/components/theming.md +147 -4
  500. package/docs/generated/components/ui-provider.md +96 -78
  501. package/docs/generated/composition-ladder.md +8 -8
  502. package/docs/generated/consumer-contract.json +5736 -0
  503. package/docs/generated/imports.md +104 -104
  504. package/docs/generated/migration-broad-imports.json +267 -90
  505. package/docs/generated/migration-broad-imports.md +266 -101
  506. package/docs/generated/migration-codemod.json +365 -70
  507. package/docs/generated/migration.md +665 -95
  508. package/docs/generated/profiles.md +27 -27
  509. package/docs/generated/public-api.md +104 -102
  510. package/docs/generated/recipes.json +755 -810
  511. package/docs/generated/workflows/communications-overview/analytics/communications-reference.tsx +19 -0
  512. package/docs/generated/workflows/index.json +691 -0
  513. package/docs/generated/workflows/media-picking/media-library/media-picking-reference.tsx +63 -0
  514. package/docs/generated/workflows/media-picking/media-library/reference-data.ts +3 -0
  515. package/docs/generated/workflows/multi-section-form/form-workflow/multi-section-reference.tsx +46 -0
  516. package/docs/generated/workflows/nested-action-flow/action-overlays/nested-action-reference.tsx +39 -0
  517. package/docs/generated/workflows/record-detail/page-layout/record-detail-reference.tsx +24 -0
  518. package/docs/generated/workflows/resource-index/data-view/resource-index-reference.tsx +51 -0
  519. package/docs/generated/workflows/scoped-resource-selection/combobox/scoped-resource-reference.tsx +50 -0
  520. package/docs/generated/workflows/website-content-editor/media-library/reference-data.ts +3 -0
  521. package/docs/generated/workflows/website-content-editor/rich-text-editor/website-content-reference.tsx +33 -0
  522. package/docs/generated/workflows/workspace-navigation/app-shell/workspace-navigation-reference.tsx +26 -0
  523. package/docs/learn/api-compatibility.md +5 -4
  524. package/docs/learn/blocks.md +123 -0
  525. package/docs/learn/composition.md +100 -19
  526. package/docs/learn/forms.md +23 -3
  527. package/docs/learn/framework-wiring.md +41 -13
  528. package/docs/learn/i18n.md +4 -2
  529. package/docs/learn/installation.md +60 -31
  530. package/docs/learn/migration.md +156 -5
  531. package/docs/learn/provider-and-scoping.md +37 -25
  532. package/docs/learn/reference-workflows.md +43 -0
  533. package/docs/learn/structure-and-spacing.md +147 -0
  534. package/docs/learn/theming.md +174 -131
  535. package/docs/learn/troubleshooting.md +88 -30
  536. package/docs/learn/verification.md +60 -5
  537. package/package.json +42 -473
  538. package/scripts/consumer/codemod.mjs +50 -32
  539. package/scripts/consumer/contract-reader.mjs +42 -0
  540. package/scripts/consumer/css-scan.mjs +51 -0
  541. package/scripts/consumer/diagnose.mjs +136 -0
  542. package/scripts/consumer/find-component.mjs +30 -17
  543. package/scripts/consumer/install-skill.mjs +93 -11
  544. package/src/styles/TOKENS.md +116 -275
  545. package/dist/accordion-6YPJ9XRO.js +0 -135
  546. package/dist/admin/patterns/access.css +0 -15
  547. package/dist/admin/patterns/commerce.css +0 -29
  548. package/dist/admin/patterns/commerce.js +0 -2493
  549. package/dist/avatar-CS7zow2q.js +0 -85
  550. package/dist/badge-CxOuTfVr.js +0 -63
  551. package/dist/base/accordion.css +0 -3
  552. package/dist/base/action-menu.css +0 -6
  553. package/dist/base/alert-dialog.css +0 -4
  554. package/dist/base/aspect-ratio.css +0 -2
  555. package/dist/base/avatar.css +0 -4
  556. package/dist/base/badge.css +0 -2
  557. package/dist/base/batch-action-bar.css +0 -5
  558. package/dist/base/buttons.css +0 -4
  559. package/dist/base/cards.css +0 -13
  560. package/dist/base/carousel.css +0 -5
  561. package/dist/base/chart.css +0 -2
  562. package/dist/base/choice-inputs.css +0 -10
  563. package/dist/base/combobox.css +0 -3
  564. package/dist/base/command.css +0 -9
  565. package/dist/base/context-menu.css +0 -2
  566. package/dist/base/copyable.css +0 -6
  567. package/dist/base/date-pickers.css +0 -11
  568. package/dist/base/dialog.css +0 -4
  569. package/dist/base/display.css +0 -8
  570. package/dist/base/dropdown-menu.css +0 -2
  571. package/dist/base/feedback.css +0 -5
  572. package/dist/base/forms-numeric.css +0 -12
  573. package/dist/base/forms.css +0 -14
  574. package/dist/base/hover-card.css +0 -2
  575. package/dist/base/input-group.css +0 -6
  576. package/dist/base/item.css +0 -9
  577. package/dist/base/label.css +0 -3
  578. package/dist/base/menubar.css +0 -2
  579. package/dist/base/navigation-menu.css +0 -2
  580. package/dist/base/navigation.css +0 -12
  581. package/dist/base/otp-input.css +0 -9
  582. package/dist/base/overlay.css +0 -4
  583. package/dist/base/popover-menu.css +0 -11
  584. package/dist/base/popover.css +0 -3
  585. package/dist/base/qr-code.css +0 -2
  586. package/dist/base/repeaters.css +0 -18
  587. package/dist/base/resizable.css +0 -2
  588. package/dist/base/sheet.css +0 -4
  589. package/dist/base/sidebar.css +0 -12
  590. package/dist/base/skeleton.css +0 -9
  591. package/dist/base/spinner.css +0 -2
  592. package/dist/base/structure.css +0 -2
  593. package/dist/base/table.css +0 -3
  594. package/dist/base/text-inputs.css +0 -2
  595. package/dist/base/timeline.css +0 -9
  596. package/dist/base/toaster.css +0 -2
  597. package/dist/base/toggle.css +0 -2
  598. package/dist/base/toolbar.css +0 -5
  599. package/dist/base/tooltip.css +0 -2
  600. package/dist/base/typography.css +0 -2
  601. package/dist/base/upload.css +0 -10
  602. package/dist/base/value-inputs.css +0 -14
  603. package/dist/buttons-CqXKWty3.js +0 -179
  604. package/dist/cards-C6Ulbkw7.js +0 -271
  605. package/dist/chart-nomhJ87z.js +0 -193
  606. package/dist/choice-inputs-OUDn0kQw.js +0 -680
  607. package/dist/combobox-C8oP92bT.js +0 -266
  608. package/dist/command-Bp3B6pUu.js +0 -143
  609. package/dist/comments-CAnDlyXO.js +0 -1438
  610. package/dist/components/admin/patterns/index.d.ts +0 -2
  611. package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
  612. package/dist/components/patterns/index.d.ts +0 -3
  613. package/dist/css/styles.css +0 -1
  614. package/dist/date-pickers-DOwIT-Nk.js +0 -661
  615. package/dist/display-B3Q17h5z.js +0 -645
  616. package/dist/dropdown-menu-TyNLCLML.js +0 -223
  617. package/dist/features/actions.css +0 -11
  618. package/dist/features/activities.css +0 -25
  619. package/dist/features/ai-chat.css +0 -14
  620. package/dist/features/async-preview.css +0 -10
  621. package/dist/features/combobox.css +0 -12
  622. package/dist/features/comments.css +0 -24
  623. package/dist/features/data-view.css +0 -31
  624. package/dist/features/event-calendar.css +0 -17
  625. package/dist/features/filters.css +0 -24
  626. package/dist/features/global-search.css +0 -19
  627. package/dist/features/kanban.css +0 -7
  628. package/dist/features/map.css +0 -15
  629. package/dist/features/media-library.css +0 -27
  630. package/dist/features/mentions.css +0 -17
  631. package/dist/features/overlays.css +0 -11
  632. package/dist/features/products.css +0 -29
  633. package/dist/features/resource-assignment.css +0 -14
  634. package/dist/features/resource.css +0 -15
  635. package/dist/features/rich-text-editor.css +0 -8
  636. package/dist/features/schema-form.css +0 -22
  637. package/dist/features/sync.css +0 -11
  638. package/dist/features/table.css +0 -20
  639. package/dist/features/theme-tweaker.css +0 -27
  640. package/dist/feedback-DRerHGuV.js +0 -469
  641. package/dist/forms-CPrGGif_.js +0 -242
  642. package/dist/forms-numeric-CPVsL7Vf.js +0 -569
  643. package/dist/index.css +0 -3
  644. package/dist/input-group-BYe0rhoB.js +0 -126
  645. package/dist/item-B3yQ26as.js +0 -146
  646. package/dist/layout/app-shell.css +0 -13
  647. package/dist/layout/auth.css +0 -14
  648. package/dist/layout/containers.css +0 -2
  649. package/dist/layout/header.css +0 -20
  650. package/dist/layout/navigation.css +0 -11
  651. package/dist/layout/page.css +0 -15
  652. package/dist/layout/settings.css +0 -16
  653. package/dist/layout/sidebar.css +0 -16
  654. package/dist/layout/workspace.css +0 -15
  655. package/dist/navigation-CsqTA16F.js +0 -614
  656. package/dist/navigation-DzxzPuwg.js +0 -202
  657. package/dist/overlay-WQOsLd69.js +0 -345
  658. package/dist/patterns/analytics.css +0 -15
  659. package/dist/patterns/onboarding.css +0 -11
  660. package/dist/patterns/timelines.css +0 -11
  661. package/dist/popover-DriLnIFc.js +0 -123
  662. package/dist/popover-menu-C2UCMAe7.js +0 -189
  663. package/dist/primitives.css +0 -3
  664. package/dist/repeaters-DuP1N0nw.js +0 -438
  665. package/dist/rich-text-editor-BQXFe9oN.js +0 -595
  666. package/dist/sidebar-D0N6ckJL.js +0 -412
  667. package/dist/skeleton-DGR9df28.js +0 -172
  668. package/dist/spinner-CUAVFecI.js +0 -52
  669. package/dist/styles/FACTORS.md +0 -36
  670. package/dist/styles/SCOPES.md +0 -86
  671. package/dist/styles/themes/default.css +0 -164
  672. package/dist/styles/theming/animation.css +0 -143
  673. package/dist/styles/theming/colors.css +0 -97
  674. package/dist/styles/theming/feedback.css +0 -17
  675. package/dist/styles/theming/field.css +0 -21
  676. package/dist/styles/theming/focus.css +0 -88
  677. package/dist/styles/theming/layers.css +0 -13
  678. package/dist/styles/theming/layout.css +0 -21
  679. package/dist/styles/theming/motion.css +0 -42
  680. package/dist/styles/theming/overlay.css +0 -52
  681. package/dist/styles/theming/sizing.css +0 -118
  682. package/dist/styles/theming/text.css +0 -30
  683. package/dist/styles/theming/typography.css +0 -26
  684. package/dist/styles/tokens/components.css +0 -22
  685. package/dist/styles/tokens/foundation.css +0 -80
  686. package/dist/styles/tokens/layout.css +0 -19
  687. package/dist/styles/tokens/palette.css +0 -88
  688. package/dist/styles/tokens/primitives.css +0 -18
  689. package/dist/styles/tokens/states.css +0 -77
  690. package/dist/table-BC4qqsUb.js +0 -180
  691. package/dist/table-BHDpjajL.js +0 -982
  692. package/dist/text-inputs-DF_lD7pA.js +0 -385
  693. package/dist/theming-D6KRU7hO.js +0 -104
  694. package/dist/toolbar-DWRywF0R.js +0 -68
  695. package/dist/tooltip-t1VQQ2tZ.js +0 -73
  696. package/dist/upload-B38YZeFJ.js +0 -938
  697. package/dist/value-inputs-Q4ymjXlV.js +0 -716
  698. package/src/styles/FACTORS.md +0 -36
  699. package/src/styles/SCOPES.md +0 -86
  700. /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
  701. /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
  702. /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
  703. /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
  704. /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
  705. /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
  706. /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
  707. /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
  708. /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
  709. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
  710. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
  711. /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
  712. /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
  713. /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
  714. /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
  715. /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
  716. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
  717. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
  718. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
  719. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
  720. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
  721. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
  722. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
  723. /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
  724. /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
  725. /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
  726. /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
  727. /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
  728. /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
  729. /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
  730. /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
  731. /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
  732. /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
  733. /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
  734. /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
  735. /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
  736. /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
  737. /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
  738. /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
  739. /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
  740. /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
  741. /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
  742. /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
  743. /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
  744. /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
  745. /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
  746. /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
@@ -19,55 +19,55 @@ worse than no codemod.
19
19
 
20
20
  ## Moved subpaths
21
21
 
22
- The tier above Features moved from `blocks/` to `patterns/`, and the admin domains moved into the admin profile. Every one of these is a pure specifier rewrite, which is why the codemod does them for you — the stylesheet import moves with its module.
22
+ Modules that moved to another subpath. Every one of these is a pure specifier rewrite, which is why the codemod does them for you — the stylesheet import moves with its module.
23
23
 
24
- ### `themelia-ui/blocks/analytics`
24
+ ### `@/services/actions`
25
25
 
26
- **Becomes** `themelia-ui/patterns/analytics` — mechanical, the codemod does it.
26
+ **Becomes** `themelia-ui/features/actions` — mechanical, the codemod does it.
27
27
 
28
- `blocks/` became `patterns/`, and the admin domains moved under `admin/patterns/`. The tier kept its position above Features; only the subpath changed.
28
+ The action registry was never published; it lived at a source alias no consumer could resolve. It is a module now.
29
29
 
30
- ### `themelia-ui/blocks/onboarding`
30
+ ### `themelia-ui/features/suggestions`
31
31
 
32
- **Becomes** `themelia-ui/patterns/onboarding` — mechanical, the codemod does it.
32
+ **Becomes** `themelia-ui/features/combobox` — mechanical, the codemod does it.
33
33
 
34
- See above.
34
+ The entry point only re-exported SuggestionsCombobox, useSuggestions, defaultSuggestionsStrings and their types (MaybePromise, SuggestionsComboboxProps, SuggestionsErrorContext, SuggestionsFetchContext, SuggestionsStrings, UseSuggestionsConfig, UseSuggestionsResult) from features/combobox, where they live. Every name is published there unchanged, so this is a pure specifier rewrite. Styles arrive with the new module import.
35
35
 
36
- ### `themelia-ui/blocks/timelines`
36
+ ### `themelia-ui/styles`
37
37
 
38
- **Becomes** `themelia-ui/patterns/timelines` — mechanical, the codemod does it.
38
+ **Becomes** `themelia-ui/core.css` — mechanical, the codemod does it.
39
39
 
40
- See above.
40
+ The JavaScript imports no CSS, so the entry that only imported the core stylesheet is gone; import the stylesheet itself.
41
41
 
42
- ### `themelia-ui/blocks/access`
42
+ ### `themelia-ui/patterns/analytics`
43
43
 
44
- **Becomes** `themelia-ui/admin/patterns/access` — mechanical, the codemod does it.
44
+ **Becomes** `themelia-ui/blocks/analytics` — mechanical, the codemod does it.
45
45
 
46
- Admin domains moved into the admin profile, which may build on general modules but never the reverse.
46
+ The tier above Features is Blocks everywhere else: in the documentation, the component index and the finder. Its subpaths now say so too, and the admin blocks sit inside it at `blocks/admin/`.
47
47
 
48
- ### `themelia-ui/blocks/commerce`
48
+ ### `themelia-ui/patterns/onboarding`
49
49
 
50
- **Becomes** `themelia-ui/admin/patterns/commerce` — mechanical, the codemod does it.
50
+ **Becomes** `themelia-ui/blocks/onboarding` — mechanical, the codemod does it.
51
51
 
52
52
  See above.
53
53
 
54
- ### `@/services/actions`
54
+ ### `themelia-ui/patterns/timelines`
55
55
 
56
- **Becomes** `themelia-ui/features/actions` — mechanical, the codemod does it.
56
+ **Becomes** `themelia-ui/blocks/timelines` — mechanical, the codemod does it.
57
57
 
58
- The action registry was never published; it lived at a source alias no consumer could resolve. It is a module now.
58
+ See above.
59
59
 
60
- ### `themelia-ui/features/suggestions`
60
+ ### `themelia-ui/admin/patterns/access`
61
61
 
62
- **Becomes** `themelia-ui/features/combobox` — mechanical, the codemod does it.
62
+ **Becomes** `themelia-ui/blocks/admin/access` — mechanical, the codemod does it.
63
63
 
64
- The entry point only re-exported SuggestionsCombobox, useSuggestions, defaultSuggestionsStrings and their types (MaybePromise, SuggestionsComboboxProps, SuggestionsErrorContext, SuggestionsFetchContext, SuggestionsStrings, UseSuggestionsConfig, UseSuggestionsResult) from features/combobox, where they live. Every name is published there unchanged, so this is a pure specifier rewrite; themelia-ui/features/suggestions.css goes too, and themelia-ui/features/combobox.css styles the picker.
64
+ See above.
65
65
 
66
- ### `themelia-ui/styles`
66
+ ### `themelia-ui/admin/patterns/commerce`
67
67
 
68
- **Becomes** `themelia-ui/core.css` — mechanical, the codemod does it.
68
+ **Becomes** `themelia-ui/blocks/admin/commerce` — mechanical, the codemod does it.
69
69
 
70
- The JavaScript imports no CSS, so the entry that only imported the core stylesheet is gone; import the stylesheet itself.
70
+ See above.
71
71
 
72
72
  ## Provider changes
73
73
 
@@ -105,10 +105,74 @@ Enable forms.preventIPhoneZoom explicitly to apply a 16px minimum to native fiel
105
105
 
106
106
  Set radiusSm beside radius when you want controls to change with containers.
107
107
 
108
+ ### `UIConfig.theme.colors keys link-color, inverse-background, inverse-foreground, inverse-surface, inverse-surface-strong, inverse-muted, inverse-subtle, inverse-border, inverse-decoration, inverse-disabled, primary-accent, destructive-accent, warning-accent, sidebar-primary and sidebar-primary-foreground (SemanticToken)`
109
+
110
+ **Becomes** `the theme's 38 colours: link instead of link-color, and overlay-backdrop` — by hand.
111
+
112
+ The theme is one level of variables, each colour a light-dark() pair. An inverse region is a colour island rather than a second set of names, a tone's text colour comes from the tone rule, and the sidebar's current item takes --sidebar-accent.
113
+
114
+ Rename `link-color` to `link`. For an inverse region, nest a provider with `config={{ colorScheme: "dark" }}` and drop the `inverse-*` keys. Drop the `*-accent` keys: a component with a `tone` colours its text from it. Move a `sidebar-primary` value to `sidebar-accent`.
115
+
116
+ ### `MotionConfig.durations.instant`
117
+
118
+ **Becomes** `MotionConfig.durations.fast` — by hand.
119
+
120
+ Two durations: `fast` for state changes, `normal` for entrances. Every use of the instant step read as a state change.
121
+
122
+ Write an `instant` value as `fast`, or drop it.
123
+
124
+ ### `ThemeConfig.palette (UIConfig.theme.palette) and the PaletteToken type`
125
+
126
+ **Becomes** `theme.colors` — by hand.
127
+
128
+ The palette is gone: each theme colour is its own light-dark() pair, so there is no ramp for the colours to resolve through.
129
+
130
+ Set the theme colour of the same role through `theme.colors`, as a `light-dark(light, dark)` pair when the modes differ.
131
+
108
132
  ## Prop changes
109
133
 
110
134
  One idea that had two spellings.
111
135
 
136
+ ### `ColorInputProps.emitHex`
137
+
138
+ **Becomes** `ColorInputProps.format="hex"` — a direct rename, by hand.
139
+
140
+ One output format had two prop spellings.
141
+
142
+ Replace emitHex with format="hex" on ColorInput.
143
+
144
+ ### `AnalyticsStrings.metricInfoLabel and AsyncComboboxStrings.removeChip`
145
+
146
+ **Becomes** `required translation keys` — by hand.
147
+
148
+ A complete translation table must name the info control and each removable chip.
149
+
150
+ Add metricInfoLabel and removeChip to complete AnalyticsStrings and AsyncComboboxStrings maps. Partial strings props continue to use defaults.
151
+
152
+ ### `MediaLibraryState optional recovery and selection controls`
153
+
154
+ **Becomes** `required fetchError, refetch, selectVisible and deselectVisible` — by hand.
155
+
156
+ The state contract includes every control the hook returns and the component reads.
157
+
158
+ State adapters must implement all four members. useMediaLibrary supplies them.
159
+
160
+ ### `MediaLibraryStrings optional complete-translation keys`
161
+
162
+ **Becomes** `required keys in complete translations` — by hand.
163
+
164
+ Complete translation tables should cover every string the media library renders.
165
+
166
+ Fill the new keys from defaultMediaLibraryStrings in complete translations; partial strings props may still override only what they need.
167
+
168
+ ### `createExecCommandEngine`
169
+
170
+ **Becomes** `createTiptapEngine` — by hand.
171
+
172
+ The browser command adapter is removed; TipTap is the editor engine.
173
+
174
+ Use the built-in RichTextEditor engine or import createTiptapEngine from themelia-ui/features/rich-text-editor/tiptap for a custom schema.
175
+
112
176
  ### `asChild`
113
177
 
114
178
  **Becomes** `render` — by hand.
@@ -137,7 +201,7 @@ Nothing to change when passing a string or omitting the prop. Only a consumer wh
137
201
 
138
202
  **Becomes** `removed` — by hand.
139
203
 
140
- Each of these was declared in a `default*Strings` object and in its exported interface, and read by NOTHING. Overriding one did exactly nothing, silently, which is the worst shape an API can take — the caller has no way to tell it did not work. They accumulated the same way each time: the component owned a label, the design moved that copy to a prop the caller supplies or the feature went away, and the key stayed behind. Removed: `OrderCustomerStrings.viewCustomer`, `OrderSummaryStrings.formatItemCount`, `PaymentMethodStrings.holder`, `SeoStrings.scoreLabel`, `OverflowTabBarStrings.scrollHint`, `AiChatPromptInputStrings.modelPickerAria`, `CommentsStrings.moreActionsLabel`, `DataViewPaginationStrings.morePages`, `FilterStrings.selectDateRange`, `GlobalSearchStrings.idleRecent`, `GlobalSearchStrings.idleSuggestions`, `MediaLibraryStrings.retry`, `MediaLibraryStrings.usedIn`, `ProductVariantBulkTableStrings.optionLabel`, `SideNavStrings.toggleGroup`.
204
+ Each of these was declared in a `default*Strings` object and in its exported interface, and read by nothing. Removed: `OrderCustomerStrings.viewCustomer`, `OrderSummaryStrings.formatItemCount`, `PaymentMethodStrings.holder`, `SeoStrings.scoreLabel`, `OverflowTabBarStrings.scrollHint`, `AiChatPromptInputStrings.modelPickerAria`, `CommentsStrings.moreActionsLabel`, `DataViewPaginationStrings.morePages`, `FilterStrings.selectDateRange`, `GlobalSearchStrings.idleRecent`, `GlobalSearchStrings.idleSuggestions`, `MediaLibraryStrings.usedIn`, `ProductVariantBulkTableStrings.optionLabel`, `SideNavStrings.toggleGroup`.
141
205
 
142
206
  Delete the override. The copy it appeared to control is either supplied by you already — a `sections[].label`, a slot, an item field — or is no longer rendered. Two keys from the same sweep went the other way and are NOT removed: `CredentialListStrings.copyLabel` now names each row's copy button, and `AiConfirmationStrings.detailsLabel` now names the confirmation's details region; both were unread for the opposite reason, and both are worth setting.
143
207
 
@@ -163,7 +227,7 @@ Nothing to change when passing a partial, which is what both `strings` props tak
163
227
 
164
228
  The default RichTextEditor now uses TipTap StarterKit with atomic mentions. TiptapEngineOptions.extensions now uses the public Extensions type; the previous conditional type incorrectly resolved to never with the installed optional constructor options.
165
229
 
166
- Install @tiptap/core, @tiptap/pm and @tiptap/starter-kit when importing RichTextEditor, comments or activities. Existing props and refs remain supported. HTML is normalized to the active schema; supply custom extensions to retain other content. Custom extension arrays replace StarterKit and the default mention node. Existing calls without extensions remain valid; consumers can now pass real TipTap extensions without a cast. The legacy createExecCommandEngine export remains available for explicit integrations.
230
+ Install @tiptap/core, @tiptap/pm and @tiptap/starter-kit when importing RichTextEditor, comments or activities. HTML is normalized to the active schema; supply custom extensions to retain other content. Custom extension arrays replace StarterKit and the default mention node. Consumers can pass TipTap extensions directly.
167
231
 
168
232
  ### `Complete FilterStrings and ActivitiesStrings translation maps`
169
233
 
@@ -179,7 +243,7 @@ Partial strings overrides continue to work without changes. Complete FilterStrin
179
243
 
180
244
  Asset management needs both dense browsing and comparable metadata.
181
245
 
182
- Use view="list" for compact rows. Supply onUpload to show the upload tab, use helpers.files IDs for progress, and applyItemPatch when accessors read a custom record shape. New MediaLibraryStrings keys are optional for existing complete translations.
246
+ Use view="list" for compact rows. Supply onUpload to show the upload tab, use helpers.files IDs for progress, and applyItemPatch when accessors read a custom record shape. Add the new keys to complete MediaLibraryStrings translations.
183
247
 
184
248
  ### `Slider, SliderField, SliderProps, SliderFieldProps and SliderChangeEvent with never-valued callbacks or scalar-only events`
185
249
 
@@ -333,17 +397,169 @@ Props typed from a variant map are declared, so their types no longer include nu
333
397
 
334
398
  Leave the prop out for the default: `Badge`'s `tone` and `variant` (and a metadata value's `badgeTone` and `badgeVariant`), `Alert`'s `tone` and `variant`, `Item`'s `surface`, `ItemMedia`'s `variant`, `InputGroupAddon`'s `align` and `InputGroupButton`'s `size`.
335
399
 
400
+ ### `buttonStyle on Button, TextButton, LoaderButton, TooltipButton, ToolbarButton (ToolbarButtonProps) and every other component that forwards Button props; buttonStyle in action definitions (ActionDefinition) and ActionPresentation; the ButtonStyle and ActionButtonStyle types`
401
+
402
+ **Becomes** `appearance, with the ButtonAppearance and ActionAppearance types` — by hand.
403
+
404
+ Fill style had three names: `buttonStyle` on buttons and actions, `variant` on Badge and Toggle. It is `appearance` everywhere now, so `tone` is always colour, `appearance` always fill and `variant` always structure.
405
+
406
+ Rename the prop: `<Button buttonStyle="outline">` becomes `<Button appearance="outline">`, and `{ buttonStyle: "ghost" }` in an action definition becomes `{ appearance: "ghost" }`. Provider defaults move with it: `defaults: { button: { appearance: "ghost" } }`. Button renders `data-appearance` instead of `data-style`; update CSS that selects it.
407
+
408
+ ### `variant on Badge (soft, solid, outline), the BadgeVariant type, the badgeVariants class function, and badgeVariant on a metadata badge value`
409
+
410
+ **Becomes** `appearance, BadgeAppearance, Badge itself, and badgeAppearance` — by hand.
411
+
412
+ See the Button entry.
413
+
414
+ `<Badge variant="solid">` becomes `<Badge appearance="solid">`; a metadata value `{ kind: "badge", badgeVariant }` becomes `{ kind: "badge", badgeAppearance }`. `badgeVariants` is gone: its colours came from a class, and a badge now takes its colour from the tone it carries. For a badge that links, render one: `<Badge render={<a href="/queue" />}>Queued</Badge>`.
415
+
416
+ ### `variant on Toggle (ToggleProps: ghost, outline) and SidebarMenuButton (SidebarMenuButtonProps: default, outline)`
417
+
418
+ **Becomes** `appearance` — by hand.
419
+
420
+ See the Button entry.
421
+
422
+ `<Toggle variant="outline">` becomes `<Toggle appearance="outline">`, and Toggle renders `data-appearance` instead of `data-variant`; `<SidebarMenuButton variant="outline">` becomes `<SidebarMenuButton appearance="outline">`.
423
+
424
+ ### `confirmStyle on ActionDialog, ActionSheet and ConfirmDialog (OverlayActionProps) and on an action modality (ActionModalityConfig), and the OverlayButtonStyle type`
425
+
426
+ **Becomes** `confirmAppearance and OverlayButtonAppearance` — by hand.
427
+
428
+ See the Button entry.
429
+
430
+ `confirmStyle="outline"` becomes `confirmAppearance="outline"`.
431
+
432
+ ### `gap, rowGap, columnGap and amount on Stack, Grid, AdaptiveGrid, Split and Bleed (StructureGap: 2xs, xs, sm, md, lg, xl, 2xl)`
433
+
434
+ **Becomes** `StructureGap: none, sm and default` — by hand.
435
+
436
+ Two gaps: `default` between groups, `sm` inside a group. Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone.
437
+
438
+ `2xs`, `xs`, `sm` and `md` become `sm` (8px); `lg`, `xl` and `2xl` become `default` (16px), which is also what an unset gap is. An unset Stack or Split gap was 8px and is now 16px: write `gap="sm"` to keep the tighter one.
439
+
440
+ ### `maxWidth on Stack and Grid (StackProps, GridProps) and sideWidth on Split (SplitProps): StructureWidth sm, md, lg, xl and 2xl, or any string`
441
+
442
+ **Becomes** `StructureWidth default, sm, full and none, or a CssLength` — by hand.
443
+
444
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone. A free string no longer type-checks, so a misspelt step cannot pass as a length.
445
+
446
+ `lg` becomes `default` (the content width) and `sm` stays; for `md`, `xl` or `2xl` pass the length itself, such as `"48rem"`. A length is a number with a unit, a percentage, or a `calc()`, `min()`, `max()`, `clamp()` or `var()` expression.
447
+
448
+ ### `minColumnWidth on AdaptiveGrid (AdaptiveGridProps, AdaptiveGridMinimum: sm, md, lg)`
449
+
450
+ **Becomes** `default, sm or a CssLength` — by hand.
451
+
452
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone.
453
+
454
+ `md` becomes `default` (16rem) and `sm` stays (12rem); for `lg` pass `"20rem"`.
455
+
456
+ ### `ComponentScale (sm, md, lg): Spinner size, Empty padding (EmptyPadding), DataTable size (DataTableSize) and ResourceDetailsSection padding (ResourceBlockPadding)`
457
+
458
+ **Becomes** `ComponentScale: default and sm` — by hand.
459
+
460
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone.
461
+
462
+ `md` becomes `default`, which is what an unset prop is, and `sm` stays. `lg` is gone: leave the prop out. A comfortable provider density no longer widens a DataTable, because the density preset already widens its insets.
463
+
464
+ ### `size="lg" on Avatar (AvatarSize), SidebarMenuButton (SidebarMenuButtonSize) and AuthShell (AuthShellSize); md on SidebarMenuButton, SidebarMenuSubButton (SidebarMenuSubButtonProps) and AuthShell`
465
+
466
+ **Becomes** `default and sm` — by hand.
467
+
468
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone. A sidebar row that holds a workspace or an account (an avatar over two lines) takes its height from AppSidebar.
469
+
470
+ `md` becomes `default`; remove `size="lg"`.
471
+
472
+ ### `size on Slider and SliderField (SliderFieldProps)`
473
+
474
+ **Becomes** `no size prop` — by hand.
475
+
476
+ A slider is dragged, so it sizes itself to the pointer: under a finger the track and thumb grow into a larger target.
477
+
478
+ Remove `size`.
479
+
480
+ ### `size on InputGroupButton (InputGroupButtonProps: xs, sm, icon-xs, icon-sm)`
481
+
482
+ **Becomes** `one size, and iconOnly for a square button` — by hand.
483
+
484
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone. A button inside a field has one size that fits it.
485
+
486
+ Remove `size="xs"` and `size="sm"`; replace `size="icon-xs"` and `size="icon-sm"` with `iconOnly`.
487
+
488
+ ### `size on an overlay, SheetContent and ActionSheet (OverlaySize: sm, md, lg, full or any string); size, length and inset on ActionSheet (ActionSheetProps) as any string; OverlayLength and OverlayInset as any string`
489
+
490
+ **Becomes** `OverlaySize: default, sm, full or a CssLength; OverlayLength and OverlayInset take a CssLength` — by hand.
491
+
492
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone. A free string no longer type-checks, so a misspelt step cannot pass as a length.
493
+
494
+ `md` becomes `default`, which is what an unset size is, and `sm` and `full` stay; for `lg` pass a length such as `"90%"`.
495
+
496
+ ### `size on an action modality (ActionModalityConfig) and the ActionOverlaySize type`
497
+
498
+ **Becomes** `removed` — by hand.
499
+
500
+ The size was never read: no dialog, sheet or drawer took its width from it.
501
+
502
+ Remove `size` from the modality. Size an action sheet through ActionSheet’s own `size`.
503
+
504
+ ### `density on MetadataList (MetadataDensity: default, compact) and its data-row-density attribute`
505
+
506
+ **Becomes** `size (MetadataSize: default, sm) and data-size` — by hand.
507
+
508
+ `density` belongs to the provider; a component prop that sets a rhythm is a size.
509
+
510
+ `density="compact"` becomes `size="sm"`; CSS that selects `[data-row-density="compact"]` selects `[data-size="sm"]`.
511
+
512
+ ### `density on ActivityFeed, ActivityRow and ActivityMarker (ActivityFeedProps, ActivityRowProps, ActivityMarkerProps, ActivityRenderRowContext, ActivityDensity) and data-activity-density`
513
+
514
+ **Becomes** `variant (ActivityVariant: compact, default, rich) and data-variant` — by hand.
515
+
516
+ `density` belongs to the provider. This one decides how much of a row is drawn, which is a variant.
517
+
518
+ Rename `density` to `variant`, `ActivityDensity` to `ActivityVariant`, and a row renderer’s `context.density` to `context.variant`; CSS that selects `[data-activity-density]` selects `[data-variant]`.
519
+
520
+ ### `itemSpacing on ActivityFeed and ActivityLog (ActivityItemSpacing: compact, default, relaxed)`
521
+
522
+ **Becomes** `ActivityItemSpacing: default and sm` — by hand.
523
+
524
+ Every scale has two steps: a default and a smaller one. A size, padding or gap prop offers `default` and `sm`; a step larger than the default is gone.
525
+
526
+ `compact` becomes `sm`; remove `relaxed`.
527
+
528
+ ### `density on MediaLibrary, MediaLibraryGrid, MediaLibraryCard and MediaResourceGallery (MediaLibraryProps, MediaLibraryGridProps, MediaLibraryCardProps, MediaResourceGalleryProps, MediaLibraryDensity: comfortable, compact) and data-media-density`
529
+
530
+ **Becomes** `size (MediaLibrarySize: default, sm) and data-size` — by hand.
531
+
532
+ `density` belongs to the provider; a prop that sets the tile size is a size.
533
+
534
+ `density="comfortable"` becomes `size="default"` (or leave it out) and `density="compact"` becomes `size="sm"`; CSS that selects `[data-media-density="compact"]` selects `[data-size="sm"]`.
535
+
536
+ ### `density on AiTask (AiTaskProps: compact, expanded)`
537
+
538
+ **Becomes** `defaultExpanded` — by hand.
539
+
540
+ `density` belongs to the provider. This one decided whether nested sub-tasks start open.
541
+
542
+ `density="expanded"` becomes `defaultExpanded`; remove `density="compact"`, which is the default.
543
+
544
+ ### `size="xxs" on Text (TextSize) and weight="regular" on Text (TextWeight), and typography.defaultTextSize "xxs"`
545
+
546
+ **Becomes** `size="xs" and weight="normal"` — by hand.
547
+
548
+ Two spellings of one value each: `xxs` rendered as `xs`, and `regular` as `normal`.
549
+
550
+ Replace `xxs` with `xs` and `regular` with `normal`.
551
+
336
552
  ## CSS imports and tokens
337
553
 
338
554
  One stylesheet became one per module, and the token surface lost every name that restated another. Each token table below is applied by the codemod; a name marked removed is reported, never guessed at.
339
555
 
340
556
  ### `themelia-ui/style.css`
341
557
 
342
- **Becomes** `one self-contained sheet per family` — by hand.
558
+ **Becomes** `automatic CSS with component imports, or style.css for direct links` — by hand.
343
559
 
344
- One stylesheet meant every consumer shipped every component's rules. The split means you ship what you import.
560
+ One stylesheet meant every consumer shipped every component's rules. Component imports now bring only their reachable CSS.
345
561
 
346
- Import each module's stylesheet beside its components; the module sheet imports `core.css` and its cascade layer order itself. `docs/generated/imports.md` lists every exact path. `style.css` still exists as the deduplicated union if you would rather not track them.
562
+ In a bundled app, import the JavaScript subpaths and remove explicit kit stylesheet imports. For direct stylesheet links without a bundler, use style.css; see docs/learn/migration.md#upgrading-to-31.
347
563
 
348
564
  ### `--radius-surface, --radius-popup, --radius-control, --radius-inner, --radius-md, --radius-lg, --radius-xl, --radius-2xl, --radius-3xl and --radius-4xl; --radius-sm as calc(var(--radius) * 0.375)`
349
565
 
@@ -386,7 +602,7 @@ The codemod replaces --text-role-discrete with --text-role-secondary, so a surfa
386
602
 
387
603
  | was | is |
388
604
  | --- | --- |
389
- | `--text-role-discrete` | `--text-role-secondary` |
605
+ | `--text-role-discrete` | `--muted-foreground` |
390
606
  | `--foreground-80` | `--muted-foreground` |
391
607
 
392
608
  ### `--menu-surface-p, --menu-row-px, --field-h, --field-px, --text-xxs and --text-xxs--line-height`
@@ -399,12 +615,12 @@ The codemod renames each token, and the text-xxs utility to text-xs — the Tail
399
615
 
400
616
  | was | is |
401
617
  | --- | --- |
402
- | `--menu-surface-p` | `--space-md` |
403
- | `--menu-row-px` | `--row-px` |
404
- | `--field-h` | `--control-h` |
405
- | `--field-px` | `--control-px-sm` |
618
+ | `--menu-surface-p` | removed — reported |
619
+ | `--menu-row-px` | `--padding-sm` |
620
+ | `--field-h` | `--control-height` |
621
+ | `--field-px` | removed — reported |
406
622
  | `--text-xxs` | `--text-xs` |
407
- | `--text-xxs--line-height` | `--text-xs--line-height` |
623
+ | `--text-xxs--line-height` | removed — reported |
408
624
  | `text-xxs` (class) | `text-xs` |
409
625
 
410
626
  ### `--heading-fg, --heading-sub-fg, --display-label-fg and --link-fg`
@@ -417,10 +633,10 @@ Where you re-pointed these on an inverted or tinted surface, re-point --text-rol
417
633
 
418
634
  | was | is |
419
635
  | --- | --- |
420
- | `--heading-fg` | `--text-role-main` |
421
- | `--display-label-fg` | `--text-role-main` |
422
- | `--heading-sub-fg` | `--text-role-secondary` |
423
- | `--link-fg` | `--link-color` |
636
+ | `--heading-fg` | `--foreground` |
637
+ | `--display-label-fg` | `--foreground` |
638
+ | `--heading-sub-fg` | `--muted-foreground` |
639
+ | `--link-fg` | `--link` |
424
640
 
425
641
  ### `--height-action with --action, --action-sm and --action-2xs; --height-control with --control-h`
426
642
 
@@ -432,10 +648,10 @@ Replace --height-action with --height-control, --action with --control-h, --acti
432
648
 
433
649
  | was | is |
434
650
  | --- | --- |
435
- | `--height-action` | `--height-control` |
436
- | `--action` | `--control-h` |
437
- | `--action-sm` | `--control-h-sm` |
438
- | `--action-2xs` | `--control-h-2xs` |
651
+ | `--height-action` | `--control-height` |
652
+ | `--action` | `--control-height` |
653
+ | `--action-sm` | `--control-height-sm` |
654
+ | `--action-2xs` | removed — reported |
439
655
 
440
656
  ### `--shell-sidebar-width, --shell-sidebar-w (app shell), --workspace-sidebar-w (workspace) and Sidebar's own --sidebar-width; --shell-toolbar-h and the app shell's --shell-header-h literal`
441
657
 
@@ -450,7 +666,7 @@ The codemod renames the width and toolbar tokens. Set --shell-header-height (3.5
450
666
  | `--shell-sidebar-width` | `--sidebar-width` |
451
667
  | `--shell-sidebar-w` | `--sidebar-width` |
452
668
  | `--workspace-sidebar-w` | `--sidebar-width` |
453
- | `--shell-toolbar-h` | `--shell-header-h` |
669
+ | `--shell-toolbar-h` | `--header-height` |
454
670
 
455
671
  ### `--medallion-base with --accordion-medallion, --choice-card-icon-box and --choice-card-row-icon; --switch-track-h; --menu-shadow and --menu-ring-width; --sidebar-group-action-size and --sidebar-menu-action-size; --button-px, --button-px-icon, --button-gap, --button-icon, --button-text, --toast-icon, --sidebar-menu-text, --accordion-media-gap; --badge-destructive-bg and the --destructive-60 alpha step only it read`
456
672
 
@@ -462,23 +678,23 @@ Replace each name with its target where you override it. To retune the medallion
462
678
 
463
679
  | was | is |
464
680
  | --- | --- |
465
- | `--medallion-base` | `--size-medallion` |
466
- | `--accordion-medallion` | `--size-medallion` |
467
- | `--choice-card-icon-box` | `--size-medallion` |
468
- | `--choice-card-row-icon` | `--size-medallion` |
469
- | `--switch-track-h` | `--choice-size` |
470
- | `--menu-shadow` | `--popover-shadow` |
681
+ | `--medallion-base` | removed — reported |
682
+ | `--accordion-medallion` | removed — reported |
683
+ | `--choice-card-icon-box` | removed — reported |
684
+ | `--choice-card-row-icon` | removed — reported |
685
+ | `--switch-track-h` | removed — reported |
686
+ | `--menu-shadow` | `--shadow-lg` |
471
687
  | `--menu-ring-width` | `--border-width` |
472
- | `--sidebar-group-action-size` | `--size-icon-lg` |
473
- | `--sidebar-menu-action-size` | `--size-icon-lg` |
474
- | `--button-px` | `--control-px` |
475
- | `--button-px-icon` | `--control-px-sm` |
476
- | `--button-gap` | `--space-sm` |
477
- | `--button-icon` | `--size-icon` |
688
+ | `--sidebar-group-action-size` | removed — reported |
689
+ | `--sidebar-menu-action-size` | removed — reported |
690
+ | `--button-px` | removed — reported |
691
+ | `--button-px-icon` | removed — reported |
692
+ | `--button-gap` | removed — reported |
693
+ | `--button-icon` | `--icon-size` |
478
694
  | `--button-text` | `--text-sm` |
479
- | `--toast-icon` | `--size-icon-lg` |
695
+ | `--toast-icon` | removed — reported |
480
696
  | `--sidebar-menu-text` | `--text-sm` |
481
- | `--accordion-media-gap` | `--space-lg` |
697
+ | `--accordion-media-gap` | removed — reported |
482
698
  | `--badge-destructive-bg` | removed — reported |
483
699
  | `--destructive-60` | removed — reported |
484
700
 
@@ -492,13 +708,13 @@ The codemod renames the first seven. It reports the last five without editing th
492
708
 
493
709
  | was | is |
494
710
  | --- | --- |
495
- | `--ai-avatar-size` | `--size-avatar-sm` |
711
+ | `--ai-avatar-size` | removed — reported |
496
712
  | `--ai-shimmer-base` | `--muted-foreground` |
497
- | `--badge-destructive-ink` | `--destructive-accent` |
498
- | `--choice-list-marker` | `--choice-size` |
499
- | `--header-px` | `--space-xl` |
500
- | `--item-media-image` | `--size-medallion` |
501
- | `--upload-thumb` | `--size-medallion` |
713
+ | `--badge-destructive-ink` | removed — reported |
714
+ | `--choice-list-marker` | removed — reported |
715
+ | `--header-px` | removed — reported |
716
+ | `--item-media-image` | removed — reported |
717
+ | `--upload-thumb` | removed — reported |
502
718
  | `--destructive-50` | removed — reported |
503
719
  | `--field-py` | removed — reported |
504
720
  | `--slide-panel` | removed — reported |
@@ -515,12 +731,12 @@ The codemod renames the six tokens. Rows and insets move by 2–4px; if a layout
515
731
 
516
732
  | was | is |
517
733
  | --- | --- |
518
- | `--table-cell-py` | `--space-lg` |
519
- | `--aside-nav-px` | `--space-md` |
520
- | `--auth-brand-gap` | `--space-md` |
521
- | `--repeater-gap` | `--space-lg` |
522
- | `--calendar-months-gap` | `--space-xl` |
523
- | `--skeleton-block-gap` | `--space-xl` |
734
+ | `--table-cell-py` | removed — reported |
735
+ | `--aside-nav-px` | removed — reported |
736
+ | `--auth-brand-gap` | removed — reported |
737
+ | `--repeater-gap` | removed — reported |
738
+ | `--calendar-months-gap` | removed — reported |
739
+ | `--skeleton-block-gap` | removed — reported |
524
740
 
525
741
  ### `--space-scale (gaps and padding) beside --density-scale (heights and rows), both derived at every boundary from --density-preset-scale; density-scaled lengths left fractional`
526
742
 
@@ -532,8 +748,8 @@ The codemod renames --space-scale; a rule that set both factors now sets --densi
532
748
 
533
749
  | was | is |
534
750
  | --- | --- |
535
- | `--space-scale` | `--density-scale` |
536
- | `--density-preset-scale` | `--density-scale` |
751
+ | `--space-scale` | removed — reported |
752
+ | `--density-preset-scale` | removed — reported |
537
753
 
538
754
  ### `--card-framed-bg, --alert-description-fg, --alert-link-hover, --alert-meta-label-fg, --mention-destructive-fg, --menu-item-destructive-bg-hover and --segmented-chip-bg`
539
755
 
@@ -546,11 +762,11 @@ The codemod renames each read. A declaration that restyled one component now set
546
762
  | was | is |
547
763
  | --- | --- |
548
764
  | `--card-framed-bg` | `--card` |
549
- | `--alert-description-fg` | `--text-role-secondary` |
550
- | `--alert-link-hover` | `--text-role-main` |
551
- | `--alert-meta-label-fg` | `--text-role-secondary` |
552
- | `--mention-destructive-fg` | `--destructive-accent` |
553
- | `--menu-item-destructive-bg-hover` | `--destructive-10` |
765
+ | `--alert-description-fg` | `--muted-foreground` |
766
+ | `--alert-link-hover` | `--foreground` |
767
+ | `--alert-meta-label-fg` | `--muted-foreground` |
768
+ | `--mention-destructive-fg` | removed — reported |
769
+ | `--menu-item-destructive-bg-hover` | removed — reported |
554
770
  | `--segmented-chip-bg` | `--popover` |
555
771
 
556
772
  ### `--aside-nav-item-h, --avatar-group-ring-width, --item-title-underline-offset, --product-thumb-size, --stepper-line, --timeline-dot-icon and --tooltip-arrow-radius`
@@ -563,12 +779,12 @@ The codemod renames each read. --tooltip-arrow-radius is reported, not renamed:
563
779
 
564
780
  | was | is |
565
781
  | --- | --- |
566
- | `--aside-nav-item-h` | `--control-h-sm` |
567
- | `--avatar-group-ring-width` | `--border-width-strong` |
568
- | `--item-title-underline-offset` | `--link-underline-offset` |
569
- | `--product-thumb-size` | `--size-medallion` |
570
- | `--stepper-line` | `--border-width-strong` |
571
- | `--timeline-dot-icon` | `--size-icon-sm` |
782
+ | `--aside-nav-item-h` | `--control-height-sm` |
783
+ | `--avatar-group-ring-width` | removed — reported |
784
+ | `--item-title-underline-offset` | removed — reported |
785
+ | `--product-thumb-size` | removed — reported |
786
+ | `--stepper-line` | removed — reported |
787
+ | `--timeline-dot-icon` | `--icon-size-sm` |
572
788
  | `--tooltip-arrow-radius` | removed — reported |
573
789
 
574
790
  ### `--primary-12, --success-15, --info-15, --info-40, --warning-50, --muted-30, --muted-35, --border-50 and --border-70`
@@ -581,14 +797,14 @@ The codemod renames each read. The mapping keeps the role, not the exact alpha:
581
797
 
582
798
  | was | is |
583
799
  | --- | --- |
584
- | `--primary-12` | `--primary-10` |
585
- | `--success-15` | `--success-10` |
586
- | `--info-15` | `--info-10` |
587
- | `--info-40` | `--info-30` |
588
- | `--warning-50` | `--warning-10` |
589
- | `--muted-30` | `--muted-50` |
590
- | `--muted-35` | `--muted-20` |
591
- | `--border-50` | `--border-60` |
800
+ | `--primary-12` | removed — reported |
801
+ | `--success-15` | removed — reported |
802
+ | `--info-15` | removed — reported |
803
+ | `--info-40` | removed — reported |
804
+ | `--warning-50` | removed — reported |
805
+ | `--muted-30` | `--muted` |
806
+ | `--muted-35` | removed — reported |
807
+ | `--border-50` | `--border` |
592
808
  | `--border-70` | `--border` |
593
809
 
594
810
  ### `--sidebar-action-size and --picker-clear-size`
@@ -601,8 +817,314 @@ The codemod renames each read. Retune the sizes kit-wide with --icon, or set wid
601
817
 
602
818
  | was | is |
603
819
  | --- | --- |
604
- | `--sidebar-action-size` | `--size-icon-lg` |
605
- | `--picker-clear-size` | `--size-icon` |
820
+ | `--sidebar-action-size` | removed — reported |
821
+ | `--picker-clear-size` | `--icon-size` |
822
+
823
+ ### `The 3.0 theme: a palette, alpha steps, a seven-step spacing ladder, control, icon and avatar ladders, derived role variables, dark twins and three scale factors`
824
+
825
+ **Becomes** `About eighty theme variables declared once at :root, each colour a light-dark() pair, and every length, shadow, tint and duration in twos` — by hand.
826
+
827
+ Components compute everything else where they use it, so an override anywhere reaches every reader below it, and a dark region inside a light page needs no second set of values. Two of each leaves no step for two neighbouring controls to disagree on.
828
+
829
+ Run the codemod: it renames each variable with a successor and reports the rest. For a reported one, write a tint as `color-mix(in oklab, var(--primary) var(--tint), transparent)` (`--tint-strong` for a line); a spacing step as `--padding` or `--padding-sm` for an inset and `--gap` or `--gap-sm` between things; type through Text's `size`, `weight` and `lineHeight`; an inverse region as a nested provider with `colorScheme: "dark"`; a scale factor as the provider's `scale` or `typography.scale`; a palette step as the theme colour of the same role. A component's own variable is private now: set the theme variable it reads, or style the component through `className`.
830
+
831
+ | was | is |
832
+ | --- | --- |
833
+ | `--accent-50` | `--accent` |
834
+ | `--adaptive-grid-min-lg` | removed — reported |
835
+ | `--adaptive-grid-min-md` | removed — reported |
836
+ | `--adaptive-grid-min-sm` | removed — reported |
837
+ | `--ai-shimmer-duration` | removed — reported |
838
+ | `--animate-enter` | removed — reported |
839
+ | `--animate-exit` | removed — reported |
840
+ | `--animate-ping` | removed — reported |
841
+ | `--animate-pulse` | removed — reported |
842
+ | `--animate-spin` | removed — reported |
843
+ | `--avatar` | removed — reported |
844
+ | `--background-70` | removed — reported |
845
+ | `--background-80` | removed — reported |
846
+ | `--border-60` | `--border` |
847
+ | `--border-width-strong` | removed — reported |
848
+ | `--brand-300` | removed — reported |
849
+ | `--brand-350` | removed — reported |
850
+ | `--brand-600` | removed — reported |
851
+ | `--brand-950` | removed — reported |
852
+ | `--button-h` | removed — reported |
853
+ | `--button-radius` | removed — reported |
854
+ | `--card-px` | removed — reported |
855
+ | `--card-py` | removed — reported |
856
+ | `--chart-aspect` | removed — reported |
857
+ | `--chart-indicator-color` | removed — reported |
858
+ | `--choice-size` | removed — reported |
859
+ | `--color-destructive-accent` | removed — reported |
860
+ | `--color-inverse-background` | removed — reported |
861
+ | `--color-inverse-border` | removed — reported |
862
+ | `--color-inverse-decoration` | removed — reported |
863
+ | `--color-inverse-disabled` | removed — reported |
864
+ | `--color-inverse-foreground` | removed — reported |
865
+ | `--color-inverse-muted` | removed — reported |
866
+ | `--color-inverse-subtle` | removed — reported |
867
+ | `--color-inverse-surface` | removed — reported |
868
+ | `--color-inverse-surface-strong` | removed — reported |
869
+ | `--color-primary-accent` | removed — reported |
870
+ | `--color-sidebar-primary` | removed — reported |
871
+ | `--color-sidebar-primary-foreground` | removed — reported |
872
+ | `--color-warning-accent` | removed — reported |
873
+ | `--content-block-p` | removed — reported |
874
+ | `--content-width-2xl` | removed — reported |
875
+ | `--content-width-lg` | `--content-width` |
876
+ | `--content-width-md` | removed — reported |
877
+ | `--content-width-sm` | removed — reported |
878
+ | `--content-width-xl` | removed — reported |
879
+ | `--control-border` | `--input` |
880
+ | `--control-border-hover` | removed — reported |
881
+ | `--control-h` | `--control-height` |
882
+ | `--control-h-2xs` | removed — reported |
883
+ | `--control-h-sm` | `--control-height-sm` |
884
+ | `--control-px` | removed — reported |
885
+ | `--control-px-2xs` | removed — reported |
886
+ | `--control-px-sm` | removed — reported |
887
+ | `--control-x` | removed — reported |
888
+ | `--danger-400` | removed — reported |
889
+ | `--danger-600` | removed — reported |
890
+ | `--danger-950` | removed — reported |
891
+ | `--data-table-body-max-height` | removed — reported |
892
+ | `--density-scale` | removed — reported |
893
+ | `--destructive-10` | removed — reported |
894
+ | `--destructive-20` | removed — reported |
895
+ | `--destructive-30` | removed — reported |
896
+ | `--destructive-40` | removed — reported |
897
+ | `--destructive-5` | removed — reported |
898
+ | `--destructive-accent` | removed — reported |
899
+ | `--duration-instant` | `--duration-fast` |
900
+ | `--duration-normal` | `--duration` |
901
+ | `--ease-in-out` | `--ease` |
902
+ | `--ease-out` | `--ease` |
903
+ | `--editor-min-h` | removed — reported |
904
+ | `--editor-min-h-compact` | removed — reported |
905
+ | `--empty-art-h` | removed — reported |
906
+ | `--enter-opacity` | removed — reported |
907
+ | `--enter-scale` | removed — reported |
908
+ | `--enter-translate-x` | removed — reported |
909
+ | `--enter-translate-y` | removed — reported |
910
+ | `--exit-opacity` | removed — reported |
911
+ | `--exit-scale` | removed — reported |
912
+ | `--exit-translate-x` | removed — reported |
913
+ | `--exit-translate-y` | removed — reported |
914
+ | `--field-addon-lane` | removed — reported |
915
+ | `--field-bg` | removed — reported |
916
+ | `--field-focus-ring` | removed — reported |
917
+ | `--field-icon-lane` | removed — reported |
918
+ | `--field-label-width` | removed — reported |
919
+ | `--field-min-font-size` | removed — reported |
920
+ | `--focus-ring` | removed — reported |
921
+ | `--focus-ring-color` | `--ring` |
922
+ | `--focus-ring-inset` | removed — reported |
923
+ | `--focus-ring-offset` | removed — reported |
924
+ | `--focus-ring-width` | removed — reported |
925
+ | `--font-serif` | removed — reported |
926
+ | `--foreground-10` | removed — reported |
927
+ | `--foreground-20` | removed — reported |
928
+ | `--foreground-8` | removed — reported |
929
+ | `--height-control` | `--control-height` |
930
+ | `--hit-area-min` | removed — reported |
931
+ | `--icon` | `--icon-size` |
932
+ | `--info-10` | removed — reported |
933
+ | `--info-30` | removed — reported |
934
+ | `--info-400` | removed — reported |
935
+ | `--info-5` | removed — reported |
936
+ | `--info-600` | removed — reported |
937
+ | `--info-950` | removed — reported |
938
+ | `--input-30` | removed — reported |
939
+ | `--invalid-ring` | removed — reported |
940
+ | `--invalid-ring-border` | removed — reported |
941
+ | `--invalid-ring-color` | removed — reported |
942
+ | `--inverse-background` | removed — reported |
943
+ | `--inverse-border` | removed — reported |
944
+ | `--inverse-decoration` | removed — reported |
945
+ | `--inverse-disabled` | removed — reported |
946
+ | `--inverse-foreground` | removed — reported |
947
+ | `--inverse-muted` | removed — reported |
948
+ | `--inverse-subtle` | removed — reported |
949
+ | `--inverse-surface` | removed — reported |
950
+ | `--inverse-surface-strong` | removed — reported |
951
+ | `--item-media-offset` | removed — reported |
952
+ | `--layout-aside-min` | removed — reported |
953
+ | `--layout-column-gap` | removed — reported |
954
+ | `--leading-12` | removed — reported |
955
+ | `--leading-none` | removed — reported |
956
+ | `--leading-normal` | removed — reported |
957
+ | `--leading-relaxed` | removed — reported |
958
+ | `--leading-snug` | removed — reported |
959
+ | `--leading-tight` | removed — reported |
960
+ | `--link-400` | removed — reported |
961
+ | `--link-600` | removed — reported |
962
+ | `--link-color` | `--link` |
963
+ | `--link-underline-offset` | removed — reported |
964
+ | `--mention-available-height` | removed — reported |
965
+ | `--menu-button-h` | removed — reported |
966
+ | `--menu-row-min-h` | removed — reported |
967
+ | `--menu-row-py` | removed — reported |
968
+ | `--muted-20` | removed — reported |
969
+ | `--muted-40` | removed — reported |
970
+ | `--muted-50` | `--muted` |
971
+ | `--muted-60` | removed — reported |
972
+ | `--muted-80` | removed — reported |
973
+ | `--muted-foreground-40` | removed — reported |
974
+ | `--muted-foreground-70` | removed — reported |
975
+ | `--neutral-0` | removed — reported |
976
+ | `--neutral-100` | removed — reported |
977
+ | `--neutral-150` | removed — reported |
978
+ | `--neutral-200` | removed — reported |
979
+ | `--neutral-25` | removed — reported |
980
+ | `--neutral-400` | removed — reported |
981
+ | `--neutral-50` | removed — reported |
982
+ | `--neutral-500` | removed — reported |
983
+ | `--neutral-550` | removed — reported |
984
+ | `--neutral-700` | removed — reported |
985
+ | `--neutral-75` | removed — reported |
986
+ | `--neutral-750` | removed — reported |
987
+ | `--neutral-800` | removed — reported |
988
+ | `--neutral-850` | removed — reported |
989
+ | `--neutral-875` | removed — reported |
990
+ | `--neutral-900` | removed — reported |
991
+ | `--neutral-950` | removed — reported |
992
+ | `--overlay-duration-exit` | removed — reported |
993
+ | `--overlay-edge-full` | removed — reported |
994
+ | `--overlay-edge-inset` | removed — reported |
995
+ | `--overlay-edge-inset-default` | removed — reported |
996
+ | `--overlay-edge-length` | removed — reported |
997
+ | `--overlay-edge-lg` | removed — reported |
998
+ | `--overlay-edge-md` | removed — reported |
999
+ | `--overlay-edge-sm` | removed — reported |
1000
+ | `--overlay-enter-scale` | removed — reported |
1001
+ | `--overlay-max-width` | removed — reported |
1002
+ | `--overlay-region-p` | removed — reported |
1003
+ | `--popover-shadow` | `--shadow-lg` |
1004
+ | `--primary-10` | removed — reported |
1005
+ | `--primary-15` | removed — reported |
1006
+ | `--primary-20` | removed — reported |
1007
+ | `--primary-25` | removed — reported |
1008
+ | `--primary-30` | removed — reported |
1009
+ | `--primary-40` | removed — reported |
1010
+ | `--primary-5` | removed — reported |
1011
+ | `--primary-accent` | `--primary` |
1012
+ | `--progress-fill` | removed — reported |
1013
+ | `--progress-sweep` | removed — reported |
1014
+ | `--pure-black` | removed — reported |
1015
+ | `--ref-hue` | removed — reported |
1016
+ | `--ref-ink` | removed — reported |
1017
+ | `--ref-line` | removed — reported |
1018
+ | `--repeater-dragging-opacity` | removed — reported |
1019
+ | `--repeater-footer-inset` | removed — reported |
1020
+ | `--resource-media` | removed — reported |
1021
+ | `--rich-text-block-gap` | removed — reported |
1022
+ | `--rich-text-item-gap` | removed — reported |
1023
+ | `--rich-text-list-indent` | removed — reported |
1024
+ | `--rich-text-quote-indent` | removed — reported |
1025
+ | `--row-px` | `--padding-sm` |
1026
+ | `--row-py` | `--padding-sm` |
1027
+ | `--row-x` | `--padding-sm` |
1028
+ | `--row-y` | `--padding-sm` |
1029
+ | `--scale` | removed — reported |
1030
+ | `--separator-thickness` | removed — reported |
1031
+ | `--series-1` | removed — reported |
1032
+ | `--series-1-dark` | removed — reported |
1033
+ | `--series-2` | removed — reported |
1034
+ | `--series-2-dark` | removed — reported |
1035
+ | `--series-3` | removed — reported |
1036
+ | `--series-3-dark` | removed — reported |
1037
+ | `--series-4` | removed — reported |
1038
+ | `--series-4-dark` | removed — reported |
1039
+ | `--series-5` | removed — reported |
1040
+ | `--series-5-dark` | removed — reported |
1041
+ | `--shadow-2xl` | `--shadow-lg` |
1042
+ | `--shadow-2xs` | `--shadow` |
1043
+ | `--shadow-ink` | removed — reported |
1044
+ | `--shadow-md` | `--shadow-lg` |
1045
+ | `--shadow-sm` | `--shadow` |
1046
+ | `--shadow-xl` | `--shadow-lg` |
1047
+ | `--shadow-xs` | `--shadow` |
1048
+ | `--shell-header-h` | `--header-height` |
1049
+ | `--shell-header-height` | `--header-height` |
1050
+ | `--sidebar-accent-50` | `--sidebar-accent` |
1051
+ | `--sidebar-primary` | removed — reported |
1052
+ | `--sidebar-primary-foreground` | removed — reported |
1053
+ | `--size-avatar` | removed — reported |
1054
+ | `--size-avatar-lg` | removed — reported |
1055
+ | `--size-avatar-sm` | removed — reported |
1056
+ | `--size-icon` | `--icon-size` |
1057
+ | `--size-icon-2xl` | removed — reported |
1058
+ | `--size-icon-lg` | removed — reported |
1059
+ | `--size-icon-md` | removed — reported |
1060
+ | `--size-icon-sm` | `--icon-size-sm` |
1061
+ | `--size-icon-xl` | removed — reported |
1062
+ | `--size-medallion` | removed — reported |
1063
+ | `--slide-nudge` | removed — reported |
1064
+ | `--space-2xl` | removed — reported |
1065
+ | `--space-2xs` | removed — reported |
1066
+ | `--space-lg` | removed — reported |
1067
+ | `--space-md` | removed — reported |
1068
+ | `--space-sm` | removed — reported |
1069
+ | `--space-xl` | removed — reported |
1070
+ | `--space-xs` | removed — reported |
1071
+ | `--spacing-2xl` | removed — reported |
1072
+ | `--spacing-2xs` | removed — reported |
1073
+ | `--spacing-lg` | removed — reported |
1074
+ | `--spacing-md` | removed — reported |
1075
+ | `--spacing-sm` | removed — reported |
1076
+ | `--spacing-xl` | removed — reported |
1077
+ | `--spacing-xs` | removed — reported |
1078
+ | `--sparkline-stroke` | removed — reported |
1079
+ | `--success-10` | removed — reported |
1080
+ | `--success-30` | removed — reported |
1081
+ | `--success-400` | removed — reported |
1082
+ | `--success-5` | removed — reported |
1083
+ | `--success-600` | removed — reported |
1084
+ | `--success-950` | removed — reported |
1085
+ | `--surface-px` | `--padding` |
1086
+ | `--surface-px-lg` | removed — reported |
1087
+ | `--surface-px-xs` | `--padding-sm` |
1088
+ | `--surface-py` | `--padding` |
1089
+ | `--surface-py-lg` | removed — reported |
1090
+ | `--surface-py-xs` | `--padding-sm` |
1091
+ | `--surface-x` | `--padding` |
1092
+ | `--surface-y` | `--padding` |
1093
+ | `--table-head-h` | removed — reported |
1094
+ | `--table-selection-w` | removed — reported |
1095
+ | `--text-2xl--line-height` | removed — reported |
1096
+ | `--text-base--line-height` | removed — reported |
1097
+ | `--text-lg--line-height` | removed — reported |
1098
+ | `--text-pxs--line-height` | removed — reported |
1099
+ | `--text-role-inverse` | removed — reported |
1100
+ | `--text-role-main` | `--foreground` |
1101
+ | `--text-role-secondary` | `--muted-foreground` |
1102
+ | `--text-sm--line-height` | removed — reported |
1103
+ | `--text-xl--line-height` | removed — reported |
1104
+ | `--text-xs--line-height` | removed — reported |
1105
+ | `--tooltip-arrow-size` | removed — reported |
1106
+ | `--tracking-tight` | removed — reported |
1107
+ | `--tracking-widest` | removed — reported |
1108
+ | `--transition-control` | removed — reported |
1109
+ | `--violet-500` | removed — reported |
1110
+ | `--warning-10` | removed — reported |
1111
+ | `--warning-20` | removed — reported |
1112
+ | `--warning-30` | removed — reported |
1113
+ | `--warning-300` | removed — reported |
1114
+ | `--warning-40` | removed — reported |
1115
+ | `--warning-500` | removed — reported |
1116
+ | `--warning-700` | removed — reported |
1117
+ | `--warning-900` | removed — reported |
1118
+ | `--warning-950` | removed — reported |
1119
+ | `--warning-accent` | removed — reported |
1120
+ | `--weight-bold` | removed — reported |
1121
+ | `--weight-medium` | removed — reported |
1122
+ | `--weight-normal` | removed — reported |
1123
+ | `--weight-semibold` | removed — reported |
1124
+ | `--white-a10` | removed — reported |
1125
+ | `--white-a15` | removed — reported |
1126
+ | `--workspace-rail-w` | removed — reported |
1127
+ | `--z-raised` | removed — reported |
606
1128
 
607
1129
  ## Behaviour changes
608
1130
 
@@ -726,7 +1248,55 @@ Import the package from ES modules; CommonJS code on Node 20.19 or later can `re
726
1248
 
727
1249
  One way to load the styles. A bundler could drop a stylesheet together with an unused re-export module, and Node could not run an entry that imported one.
728
1250
 
729
- Import each module's stylesheet beside its JavaScript, as in `import "themelia-ui/base/buttons.css"`, or `themelia-ui/style.css` once; a component whose stylesheet is not imported renders unstyled. `ssr.noExternal` and `test.server.deps.inline` entries added for the kit can go.
1251
+ Import each module's stylesheet beside its JavaScript, as in `import "themelia-ui/base/buttons.css"`, or `themelia-ui/style.css` once; a component whose stylesheet is not imported renders unstyled. `ssr.noExternal` and `test.server.deps.inline` entries added for the kit can go. From 3.1, components bring their own CSS, and server rendering with Vite lists the package in `ssr.noExternal`; see docs/learn/migration.md#upgrading-to-31.
1252
+
1253
+ ### `ThemeSelectors { shared, light, dark, systemLight, systemDark }; createScopedThemeSelectors returning one selector per mode`
1254
+
1255
+ **Becomes** `ThemeSelectors { shared }: one block in which each colour is a light-dark() pair` — by hand.
1256
+
1257
+ Every colour carries both modes, so a theme needs no mode selectors: the element's color-scheme picks the half, in a dark island inside a light page as well.
1258
+
1259
+ Pass `{ shared: selector }` where you passed one selector per mode. Re-export a stylesheet written by an earlier ThemeTweaker: it names variables the theme no longer declares.
1260
+
1261
+ ### `themeToStyle(theme, mode)`
1262
+
1263
+ **Becomes** `themeToStyle(theme)` — by hand.
1264
+
1265
+ The style carries both halves of each colour, and the element's color-scheme picks one.
1266
+
1267
+ Drop the second argument.
1268
+
1269
+ ### `ThemeTweakerSection inverse-surfaces, global-scales, actions-controls, rows-surfaces, media, content-widths and adaptive-layout, and the matching keys of ThemeTweakerStrings.sections`
1270
+
1271
+ **Becomes** `ThemeTweakerSection tints, spacing, controls and motion` — by hand.
1272
+
1273
+ The default fields are the theme's own variables, and the sections follow them.
1274
+
1275
+ In custom `fields`, put spacing under `spacing`, control and icon sizes under `controls`, durations under `motion`, and the tint strengths under `tints`. A complete `strings.sections` names the new sections.
1276
+
1277
+ ### `deriveThemeTypeScale writing --text-*--line-height; deriveThemeElevation writing --shadow-2xs to --shadow-2xl; deriveThemePalette writing --link-color and --sidebar-primary`
1278
+
1279
+ **Becomes** `the type steps; --shadow and --shadow-lg; --link` — by hand.
1280
+
1281
+ The recipes write the theme's variables. Text pairs each type step with its own line height, and elevation has two steps: raised and floating.
1282
+
1283
+ Nothing to change where you apply a recipe's result. If you read its keys, read the new names.
1284
+
1285
+ ### `Tone unions spelled out per component: VendorStat.changeTone, AlertTone, ProgressTone, IconBadgeTone, BadgeTone`
1286
+
1287
+ **Becomes** `the same members, written as SemanticTone or an Extract of it` — a direct rename, by hand.
1288
+
1289
+ Every tone prop takes a subset of one union, so a tone added to the kit reaches every component that takes it.
1290
+
1291
+ Nothing to change: each component accepts the same values.
1292
+
1293
+ ### `Each module's stylesheet, or `style.css`, imported beside the JavaScript`
1294
+
1295
+ **Becomes** `Components that bring their own CSS` — by hand.
1296
+
1297
+ Each module stylesheet imported from JavaScript carried its own copy of `core.css`, and a package built on this one could not reference them from a stylesheet. Tying the CSS to the JavaScript module graph uses what the bundler already knows: a module that is used brings its CSS, once; a module that is not brings none.
1298
+
1299
+ In a bundled app, import components only: the codemod removes JavaScript imports of `themelia-ui/style.css` and module stylesheets, and lists `@import`s of kit stylesheets to remove from CSS the app bundles, a Tailwind entry included. Server rendering with Vite lists `themelia-ui` in `ssr.noExternal`. Pages with no bundler link `style.css`.
730
1300
 
731
1301
  ## Data files and the component finder
732
1302