themelia-react-ui 2.0.1 → 2.0.2

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 (480) hide show
  1. package/CHANGELOG.md +307 -131
  2. package/README.md +28 -8
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/{accordion-B6a3vVgA.js → accordion-Cjb6sx0G.js} +14 -13
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-ZK5RWdo6.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-ZK5RWdo6.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-CYxKfo69.js → auth-ax2BqjrI.js} +58 -54
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-BBnEJIx8.js → avatar-DAPlDvhJ.js} +7 -7
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/{badge-MrKVNzW9.js → badge-HpFqoqSY.js} +40 -40
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +40 -36
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +92 -92
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +2 -2
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +6 -6
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +14 -14
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +6 -6
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +171 -176
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +6 -6
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +79 -2
  61. package/dist/base/spinner.js.map +1 -0
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +46 -45
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZGDG-Si.js → batch-action-bar-DnUJ21NQ.js} +6 -5
  72. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  73. package/dist/blocks/admin.js +42 -42
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +260 -240
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +620 -585
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +1152 -1109
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +2 -2
  85. package/dist/blocks/onboarding.js +48 -39
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +13 -12
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/{breadcrumbs-D5t7I023.js → breadcrumbs-C-oqs1sQ.js} +5 -5
  91. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  92. package/dist/{button-QYwiyhD2.js → button-DVzspB_G.js} +2 -2
  93. package/dist/{button-QYwiyhD2.js.map → button-DVzspB_G.js.map} +1 -1
  94. package/dist/{buttons-SbIcm1HJ.js → buttons-DPZekJFu.js} +20 -15
  95. package/dist/buttons-DPZekJFu.js.map +1 -0
  96. package/dist/cards-BaBZR-AU.js +68 -0
  97. package/dist/cards-BaBZR-AU.js.map +1 -0
  98. package/dist/{chart-QfrARkXl.js → chart-ZOYyK2xG.js} +58 -55
  99. package/dist/chart-ZOYyK2xG.js.map +1 -0
  100. package/dist/{checkbox-DhB6K0bK.js → checkbox-AWIhNhmo.js} +2 -2
  101. package/dist/{checkbox-DhB6K0bK.js.map → checkbox-AWIhNhmo.js.map} +1 -1
  102. package/dist/{choice-inputs-t6w3ATNz.js → choice-inputs-CNHvARCJ.js} +49 -45
  103. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  104. package/dist/{code-block-Dgbu-CU3.js → code-block-DeneBJR_.js} +8 -8
  105. package/dist/code-block-DeneBJR_.js.map +1 -0
  106. package/dist/{collapsible-D8AEGU1-.js → collapsible-C-_l4hpy.js} +3 -3
  107. package/dist/{collapsible-D8AEGU1-.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  108. package/dist/{collection-content-uK16Grv0.js → collection-content-By56pLog.js} +3 -3
  109. package/dist/{collection-content-uK16Grv0.js.map → collection-content-By56pLog.js.map} +1 -1
  110. package/dist/combobox-C0EQW6dr.js +875 -0
  111. package/dist/combobox-C0EQW6dr.js.map +1 -0
  112. package/dist/combobox-xCQ2RMNE.js +309 -0
  113. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  114. package/dist/{command-kNR20o7x.js → command-C25VMRII.js} +7 -7
  115. package/dist/{command-kNR20o7x.js.map → command-C25VMRII.js.map} +1 -1
  116. package/dist/{comments-BpDuCUUu.js → comments-BYYlTA8E.js} +114 -105
  117. package/dist/comments-BYYlTA8E.js.map +1 -0
  118. package/dist/components/base/badge/badge.recipes.d.ts +1 -1
  119. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  120. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  121. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  122. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  123. package/dist/components/base/chart/chart.d.ts +2 -5
  124. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  125. package/dist/components/base/combobox/index.d.ts +30 -4
  126. package/dist/components/base/forms/form-sizing.d.ts +11 -3
  127. package/dist/components/base/navigation/pagination.d.ts +5 -2
  128. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  129. package/dist/components/base/table/index.d.ts +9 -2
  130. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  131. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  132. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  133. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
  134. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  135. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  136. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  137. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  138. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  139. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  140. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  141. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  142. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  143. package/dist/components/features/combobox/types.d.ts +4 -0
  144. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  145. package/dist/components/features/rich-text-editor/index.d.ts +1 -1
  146. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  147. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
  148. package/dist/components/features/table/table-header.d.ts +1 -1
  149. package/dist/components/features/table/table.strings.d.ts +55 -1
  150. package/dist/components/features/table/table.types.d.ts +17 -4
  151. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  152. package/dist/components/primitives/number.d.ts +4 -2
  153. package/dist/components/primitives/value.d.ts +3 -1
  154. package/dist/components/typography/text-link.d.ts +4 -0
  155. package/dist/components/ui/combobox.d.ts +6 -2
  156. package/dist/components/ui/item.d.ts +8 -8
  157. package/dist/components/ui/tabs.d.ts +1 -1
  158. package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
  159. package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
  160. package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
  161. package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
  162. package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
  163. package/dist/data-display-DT_khPl_.js.map +1 -0
  164. package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
  165. package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
  166. package/dist/{date-picker-CF-DtUpF.js → date-picker-ay0Pha_a.js} +594 -593
  167. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  168. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  169. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  170. package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
  171. package/dist/display-hAc1HjpI.js.map +1 -0
  172. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  173. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  174. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  175. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  176. package/dist/features/activities.js +398 -375
  177. package/dist/features/activities.js.map +1 -1
  178. package/dist/features/ai-chat.js +188 -179
  179. package/dist/features/ai-chat.js.map +1 -1
  180. package/dist/features/appointment-calendar.js +683 -0
  181. package/dist/features/appointment-calendar.js.map +1 -0
  182. package/dist/features/async-preview.js +109 -107
  183. package/dist/features/async-preview.js.map +1 -1
  184. package/dist/features/combobox.js +1 -1
  185. package/dist/features/comments.js +1 -1
  186. package/dist/features/data-view.js +137 -137
  187. package/dist/features/data-view.js.map +1 -1
  188. package/dist/features/email-composer.js +255 -255
  189. package/dist/features/email-composer.js.map +1 -1
  190. package/dist/features/event-calendar.js +254 -248
  191. package/dist/features/event-calendar.js.map +1 -1
  192. package/dist/features/filters.js +1 -1
  193. package/dist/features/global-search.js +35 -32
  194. package/dist/features/global-search.js.map +1 -1
  195. package/dist/features/kanban.js +118 -117
  196. package/dist/features/kanban.js.map +1 -1
  197. package/dist/features/map.js +233 -231
  198. package/dist/features/map.js.map +1 -1
  199. package/dist/features/media-library.js +789 -775
  200. package/dist/features/media-library.js.map +1 -1
  201. package/dist/features/mentions.js +1 -1
  202. package/dist/features/overlays.js +1 -1
  203. package/dist/features/products.js +922 -902
  204. package/dist/features/products.js.map +1 -1
  205. package/dist/features/questionnaire.js +28 -24
  206. package/dist/features/questionnaire.js.map +1 -1
  207. package/dist/features/resource-assignment.js +18 -15
  208. package/dist/features/resource-assignment.js.map +1 -1
  209. package/dist/features/resource.js +12 -12
  210. package/dist/features/resource.js.map +1 -1
  211. package/dist/features/rich-text-editor.js +2 -2
  212. package/dist/features/schema-form.js +15 -13
  213. package/dist/features/schema-form.js.map +1 -1
  214. package/dist/features/suggestions.js +3 -3
  215. package/dist/features/sync.js +11 -5
  216. package/dist/features/sync.js.map +1 -1
  217. package/dist/features/table.js +1 -1
  218. package/dist/features/theme-tweaker.js +493 -489
  219. package/dist/features/theme-tweaker.js.map +1 -1
  220. package/dist/feedback-BYIhtitP.js +239 -0
  221. package/dist/feedback-BYIhtitP.js.map +1 -0
  222. package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
  223. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  224. package/dist/{filters-BkHH53uv.js → filters-BGfvjP4d.js} +589 -580
  225. package/dist/filters-BGfvjP4d.js.map +1 -0
  226. package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
  227. package/dist/form-field-CwH9y77i.js.map +1 -0
  228. package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
  229. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  230. package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
  231. package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
  232. package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
  233. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  234. package/dist/{header-BOefOKd1.js → header-CGXuhcRm.js} +160 -153
  235. package/dist/header-CGXuhcRm.js.map +1 -0
  236. package/dist/{hooks-9k_TtmKh.js → hooks-Dkz0K2WT.js} +2 -2
  237. package/dist/{hooks-9k_TtmKh.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  238. package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
  239. package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
  240. package/dist/index.js +3 -3
  241. package/dist/input-CZw8iU99.js +21 -0
  242. package/dist/input-CZw8iU99.js.map +1 -0
  243. package/dist/input-DQdEd0YD.js +263 -0
  244. package/dist/input-DQdEd0YD.js.map +1 -0
  245. package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
  246. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  247. package/dist/item-K5_ghvze.js +275 -0
  248. package/dist/item-K5_ghvze.js.map +1 -0
  249. package/dist/layout/app-shell.js +1 -1
  250. package/dist/layout/auth.js +1 -1
  251. package/dist/layout/containers.js +1 -1
  252. package/dist/layout/header.js +1 -1
  253. package/dist/layout/hooks.js +1 -1
  254. package/dist/layout/navigation.js +1 -1
  255. package/dist/layout/page.js +1 -1
  256. package/dist/layout/settings.js +1 -1
  257. package/dist/layout/sidebar.js +2 -2
  258. package/dist/layout/workspace.js +1 -1
  259. package/dist/layout.js +10 -10
  260. package/dist/lib/affordance-geometry.generated.d.ts +71 -0
  261. package/dist/lib/editable-text-recipe.d.ts +4 -4
  262. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  263. package/dist/lib/interaction-recipes.d.ts +5 -0
  264. package/dist/lib/theme-mode-css.d.ts +7 -0
  265. package/dist/lib/tone-recipes.d.ts +8 -0
  266. package/dist/lib/ui-provider/types.d.ts +2 -2
  267. package/dist/lib/utils.js +1 -1
  268. package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
  269. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  270. package/dist/{mentions-D-uyCh01.js → mentions-utuUvH1K.js} +144 -142
  271. package/dist/mentions-utuUvH1K.js.map +1 -0
  272. package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
  273. package/dist/message-DZ_ruyUV.js.map +1 -0
  274. package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
  275. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  276. package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
  277. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  278. package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
  279. package/dist/navigation-BzhHI3lo.js.map +1 -0
  280. package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  281. package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  282. package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
  283. package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
  284. package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
  285. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  286. package/dist/{overlays-I0axtYA6.js → overlays-DNWmZrJ4.js} +14 -12
  287. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  288. package/dist/{page-B5dTH9gE.js → page-Bgl1F560.js} +8 -8
  289. package/dist/{page-B5dTH9gE.js.map → page-Bgl1F560.js.map} +1 -1
  290. package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
  291. package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
  292. package/dist/pagination-BL25hu2s.js +158 -0
  293. package/dist/pagination-BL25hu2s.js.map +1 -0
  294. package/dist/{popover-Di55PyAI.js → popover-7_m66eYW.js} +8 -7
  295. package/dist/{popover-Di55PyAI.js.map → popover-7_m66eYW.js.map} +1 -1
  296. package/dist/popover-menu-B9WWygpa.js +100 -0
  297. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  298. package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
  299. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  300. package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
  301. package/dist/primitives-BFK08r9M.js.map +1 -0
  302. package/dist/primitives.js +4 -4
  303. package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
  304. package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
  305. package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
  306. package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  307. package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
  308. package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
  309. package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
  310. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  311. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  312. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  313. package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
  314. package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
  315. package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
  316. package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
  317. package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
  318. package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
  319. package/dist/services/actions.js +1 -1
  320. package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
  321. package/dist/settings-ybnjVwbd.js.map +1 -0
  322. package/dist/{sheet-4SEvVYzA.js → sheet-CGpB3omz.js} +8 -7
  323. package/dist/{sheet-4SEvVYzA.js.map → sheet-CGpB3omz.js.map} +1 -1
  324. package/dist/{sidebar-d7Dg80ln.js → sidebar-A0ElHINE.js} +14 -13
  325. package/dist/{sidebar-d7Dg80ln.js.map → sidebar-A0ElHINE.js.map} +1 -1
  326. package/dist/{sidebar-C7WWR29L.js → sidebar-CPx_7YBa.js} +183 -182
  327. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  328. package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
  329. package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  330. package/dist/smart-card-DiC5aac3.js +604 -0
  331. package/dist/smart-card-DiC5aac3.js.map +1 -0
  332. package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
  333. package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
  334. package/dist/style.css +1 -1
  335. package/dist/table-BweFy_P9.js +1530 -0
  336. package/dist/table-BweFy_P9.js.map +1 -0
  337. package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
  338. package/dist/table-DsfzoUia.js.map +1 -0
  339. package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
  340. package/dist/tabs-CDocW5D1.js.map +1 -0
  341. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  342. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  343. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  344. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  345. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  346. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  347. package/dist/theme.css +285 -228
  348. package/dist/themes/green.css +16 -12
  349. package/dist/timelines-CwM_9IhD.js +457 -0
  350. package/dist/timelines-CwM_9IhD.js.map +1 -0
  351. package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
  352. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  353. package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
  354. package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
  355. package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
  356. package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
  357. package/dist/typography/rich-text.js +1 -1
  358. package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
  359. package/dist/typography-UTnveOEy.js.map +1 -0
  360. package/dist/typography.js +2 -2
  361. package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
  362. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  363. package/dist/ui-provider.js +2 -2
  364. package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
  365. package/dist/upload-CXyxmQBP.js.map +1 -0
  366. package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
  367. package/dist/upload-queue-Boscubn9.js.map +1 -0
  368. package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
  369. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  370. package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
  371. package/dist/utils-BRhFDwuU.js.map +1 -0
  372. package/dist/{value-inputs-TAYMX111.js → value-inputs-DXPDjvBU.js} +268 -252
  373. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  374. package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
  375. package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  376. package/dist/{workspace-DH0v0KcB.js → workspace-Cdrg7k9f.js} +34 -33
  377. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  378. package/docs/consumer-skill/SKILL.md +2 -2
  379. package/docs/consumer-skill/references/agents-md.md +1 -1
  380. package/docs/consumer-skill/references/composition.md +8 -6
  381. package/docs/consumer-skill/references/integration.md +4 -3
  382. package/docs/consumer-skill/references/public-api.json +105 -2
  383. package/docs/consumer-skill/references/review.md +7 -0
  384. package/docs/consumer-skill/references/theming.md +71 -6
  385. package/docs/consumer-skill/references/tokens.json +1 -1
  386. package/docs/consumer-skill/references/workflows.md +25 -0
  387. package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
  388. package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
  389. package/package.json +8 -4
  390. package/dist/accordion-B6a3vVgA.js.map +0 -1
  391. package/dist/action-menu-TzCoSlwL.js +0 -280
  392. package/dist/action-menu-TzCoSlwL.js.map +0 -1
  393. package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
  394. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
  395. package/dist/ai-artifact-BMJdv-6q.js +0 -1115
  396. package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
  397. package/dist/attachment-BtfhGm8i.js +0 -245
  398. package/dist/attachment-BtfhGm8i.js.map +0 -1
  399. package/dist/auth-CYxKfo69.js.map +0 -1
  400. package/dist/avatar-BBnEJIx8.js.map +0 -1
  401. package/dist/badge-MrKVNzW9.js.map +0 -1
  402. package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
  403. package/dist/breadcrumbs-D5t7I023.js.map +0 -1
  404. package/dist/buttons-SbIcm1HJ.js.map +0 -1
  405. package/dist/cards-CiiHpKYd.js +0 -66
  406. package/dist/cards-CiiHpKYd.js.map +0 -1
  407. package/dist/chart-QfrARkXl.js.map +0 -1
  408. package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
  409. package/dist/code-block-Dgbu-CU3.js.map +0 -1
  410. package/dist/combobox-2Ic8N9bL.js +0 -278
  411. package/dist/combobox-2Ic8N9bL.js.map +0 -1
  412. package/dist/combobox-DLl0bfiq.js +0 -867
  413. package/dist/combobox-DLl0bfiq.js.map +0 -1
  414. package/dist/comments-BpDuCUUu.js.map +0 -1
  415. package/dist/data-display-DafIvCl5.js.map +0 -1
  416. package/dist/date-picker-CF-DtUpF.js.map +0 -1
  417. package/dist/date-pickers-BmzxJl5l.js +0 -174
  418. package/dist/date-pickers-BmzxJl5l.js.map +0 -1
  419. package/dist/display-DsQTVzMz.js.map +0 -1
  420. package/dist/dropdown-menu-E2qmdC7o.js +0 -193
  421. package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
  422. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  423. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  424. package/dist/feedback-qNuMBtRH.js +0 -233
  425. package/dist/feedback-qNuMBtRH.js.map +0 -1
  426. package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
  427. package/dist/filters-BkHH53uv.js.map +0 -1
  428. package/dist/form-field-DUt4UxSV.js.map +0 -1
  429. package/dist/form-sizing-By94KzXE.js.map +0 -1
  430. package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
  431. package/dist/header-BOefOKd1.js.map +0 -1
  432. package/dist/input-DWhBBBww.js +0 -262
  433. package/dist/input-DWhBBBww.js.map +0 -1
  434. package/dist/input-Ddi_LSYv.js +0 -20
  435. package/dist/input-Ddi_LSYv.js.map +0 -1
  436. package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
  437. package/dist/item-DEmDiTlD.js +0 -265
  438. package/dist/item-DEmDiTlD.js.map +0 -1
  439. package/dist/media-gallery-DcTtAaeC.js.map +0 -1
  440. package/dist/mentions-D-uyCh01.js.map +0 -1
  441. package/dist/message-CdHgIWKf.js.map +0 -1
  442. package/dist/metadata-list-X5rYAKSB.js.map +0 -1
  443. package/dist/navigation-D3KwXmaq.js.map +0 -1
  444. package/dist/navigation-HJf5zxlH.js.map +0 -1
  445. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
  446. package/dist/overlays-I0axtYA6.js.map +0 -1
  447. package/dist/pagination-3bPA_a6K.js +0 -149
  448. package/dist/pagination-3bPA_a6K.js.map +0 -1
  449. package/dist/popover-menu-B71Tn2Qz.js +0 -99
  450. package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
  451. package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
  452. package/dist/primitives-B-CkiEMU.js.map +0 -1
  453. package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
  454. package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
  455. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
  456. package/dist/settings-CQW3b-Cu.js.map +0 -1
  457. package/dist/sidebar-C7WWR29L.js.map +0 -1
  458. package/dist/smart-card-lFKxn5Hu.js +0 -595
  459. package/dist/smart-card-lFKxn5Hu.js.map +0 -1
  460. package/dist/spinner-fa3h1Aif.js +0 -80
  461. package/dist/spinner-fa3h1Aif.js.map +0 -1
  462. package/dist/table-CIKyLUsy.js.map +0 -1
  463. package/dist/table-CrcLN9Io.js +0 -1458
  464. package/dist/table-CrcLN9Io.js.map +0 -1
  465. package/dist/tabs-DwBJfjxX.js.map +0 -1
  466. package/dist/text-inputs-aaK9wcDT.js +0 -326
  467. package/dist/text-inputs-aaK9wcDT.js.map +0 -1
  468. package/dist/theme-scope-kStaAer0.js +0 -39
  469. package/dist/theme-scope-kStaAer0.js.map +0 -1
  470. package/dist/timelines-C_SBwHNP.js +0 -442
  471. package/dist/timelines-C_SBwHNP.js.map +0 -1
  472. package/dist/tone-recipes-CPoExcTE.js.map +0 -1
  473. package/dist/typography-DTRkE9zL.js.map +0 -1
  474. package/dist/ui-provider-1D_NSYzO.js.map +0 -1
  475. package/dist/upload-BO8-CLN6.js.map +0 -1
  476. package/dist/upload-queue-EOC8g1gf.js.map +0 -1
  477. package/dist/usage-card-obRaBskq.js.map +0 -1
  478. package/dist/utils-l5LpDw2z.js.map +0 -1
  479. package/dist/value-inputs-TAYMX111.js.map +0 -1
  480. package/dist/workspace-DH0v0KcB.js.map +0 -1
package/dist/theme.css CHANGED
@@ -55,107 +55,113 @@
55
55
  --shadow-2xl: var(--shadow-2xl);
56
56
  }
57
57
 
58
- :root {
59
- /* Radius is shared geometry, not a light-palette reset. Mode scopes inherit it. */
60
- --radius: 0.75rem; /* Shared 12px outer corners; inner control/row corners derive from this root and stay rectangular. */
61
- }
62
-
63
- :root,
64
- .light {
65
- color-scheme: light; /* Native scrollbars, form controls and pickers follow the active mode. */
66
- --background: oklch(0.985 0 0); /* Application canvas and default page background. */
67
- --foreground: oklch(0.28 0 0); /* Primary text and icon color on the application canvas. */
68
- --card: oklch(1 0 0); /* Card and framed content-surface background. */
69
- --card-foreground: oklch(0.28 0 0); /* Primary text and icons on card surfaces. */
70
- --popover: var(--card); /* Popover, menu, select, and transient-surface background. */
71
- --popover-foreground: var(--foreground); /* Primary text and icons on popover surfaces. */
72
- --primary: oklch(0.205 0 0); /* Primary-action color: near-black by default so status colors never compete with it; a brand stylesheet such as themes/green.css replaces it. */
73
- --primary-foreground: oklch(0.985 0 0); /* Text and icons on solid primary fills. */
74
- --secondary: oklch(0.94 0 0); /* Neutral secondary-control and supporting-surface fill. */
75
- --secondary-foreground: oklch(0.205 0 0); /* Text and icons on secondary fills. */
76
- --muted: oklch(0.96 0 0); /* Subdued backgrounds for passive regions and skeletons. */
77
- --muted-foreground: oklch(0.50 0 0); /* Secondary text, metadata, and passive icons. */
78
- --accent: oklch(0.945 0 0); /* Hover, selected-row, and emphasized neutral fill. */
79
- --accent-foreground: oklch(0.205 0 0); /* Text and icons on accent fills. */
80
- --destructive: oklch(0.50 0.2039 27.325); /* Destructive action, error, and invalid-state color. */
81
- --destructive-foreground: oklch(0.99 0 0); /* Text and icons on solid destructive fills. */
82
- --border: oklch(0.922 0 0); /* Default divider, outline, and surface-border color. */
83
- --input: oklch(0.28 0 0 / 15%); /* The one control boundary: inputs, selects, field triggers, checkboxes, radios, switch tracks and outline buttons share it. Translucent, so it reads the same on every surface; dividers use --border. */
84
- --ring: oklch(0.60 0 0); /* Focus color: a focused control's frame takes it at full strength (3:1) inside a soft 3px halo of it at 50%. */
85
- /*
86
- * Categorical chart series. Hues are held identical in light and dark so a
87
- * series keeps its identity when the theme flips; only lightness moves, to
88
- * suit the surface it is drawn on. Hues are offset from the status hues
89
- * (destructive 27, warning 75, success 145); series 1 and 5 sit nearest
90
- * (22° from success, 15° from warning), so charts that encode state use the
91
- * status tokens, never series colors. Chroma is kept inside sRGB, so the
92
- * authored value is what renders rather than something the browser clamps.
93
- */
94
- --chart-1: oklch(0.56 0.11 167); /* First categorical chart-series color; never a status color. */
95
- --chart-2: oklch(0.56 0.11 230); /* Second categorical chart-series color; never a status color. */
96
- --chart-3: oklch(0.56 0.17 285); /* Third categorical chart-series color; never a status color. */
97
- --chart-4: oklch(0.58 0.16 330); /* Fourth categorical chart-series color; never a status color. */
98
- --chart-5: oklch(0.60 0.14 60); /* Fifth categorical chart-series color; never a status color. */
99
- --sidebar: oklch(0.96 0 0); /* Sidebar shell background. */
100
- --sidebar-foreground: oklch(0.28 0 0); /* Primary sidebar text and icon color. */
101
- --sidebar-primary: oklch(0.205 0 0); /* Strong sidebar selection or primary action fill. */
102
- --sidebar-primary-foreground: oklch(0.985 0 0); /* Text and icons on sidebar primary fills. */
103
- --sidebar-accent: oklch(0.98 0 0 / 1); /* Sidebar hover and selected-row neutral fill. */
104
- --sidebar-accent-foreground: oklch(0.205 0 0); /* Text and icons on sidebar accent fills. */
105
- --sidebar-border: oklch(0.922 0 0); /* Sidebar dividers and shell border. */
106
- --sidebar-ring: oklch(0.60 0 0); /* Focus-visible ring inside the sidebar. */
107
- --shadow-2xs: 0 1px 3px 0px oklch(0 0 0 / 0.05); /* Minimal elevation for compact controls. */
108
- --shadow-xs: 0 1px 3px 0px oklch(0 0 0 / 0.05); /* Extra-small elevation for controls and rows. */
109
- --shadow-sm: 0 1px 2px 0px oklch(0 0 0 / 0.06), 0 3px 8px -3px oklch(0 0 0 / 0.08); /* Small elevation for raised controls and cards. */
110
- --shadow: 0 1px 3px 0px oklch(0 0 0 / 0.08), 0 4px 10px -3px oklch(0 0 0 / 0.08); /* Default elevation for framed content. */
111
- --shadow-md: 0 2px 4px -2px oklch(0 0 0 / 0.08), 0 6px 16px -4px oklch(0 0 0 / 0.10); /* Medium elevation for floating surfaces. */
112
- --shadow-lg: 0 2px 6px -2px oklch(0 0 0 / 0.08), 0 10px 24px -6px oklch(0 0 0 / 0.12); /* Large elevation for menus, dialogs, and popovers. */
113
- --shadow-xl: 0 4px 8px -4px oklch(0 0 0 / 0.10), 0 16px 32px -8px oklch(0 0 0 / 0.14); /* Extra-large elevation for prominent overlays. */
114
- --shadow-2xl: 0 6px 12px -6px oklch(0 0 0 / 0.12), 0 24px 48px -12px oklch(0 0 0 / 0.20); /* Maximum elevation for exceptional floating surfaces. */
115
- }
116
-
117
- .dark {
118
- color-scheme: dark;
119
- --background: oklch(0.145 0 0);
120
- --foreground: oklch(0.985 0 0);
121
- --card: oklch(0.205 0 0);
122
- --card-foreground: oklch(0.985 0 0);
123
- --popover: oklch(0.235 0 0);
124
- --popover-foreground: var(--foreground);
125
- --primary: oklch(0.922 0 0); /* Near-white primary fill and ink on dark surfaces. */
126
- --primary-foreground: oklch(0.205 0 0); /* Dark ink on the near-white dark-theme primary fill. */
127
- --secondary: oklch(0.269 0 0);
128
- --secondary-foreground: oklch(0.985 0 0);
129
- --muted: oklch(0.175 0 0);
130
- --muted-foreground: oklch(0.74 0 0); /* Secondary copy stays readable on muted and accent surfaces. */
131
- --accent: oklch(0.36 0 0);
132
- --accent-foreground: oklch(0.985 0 0);
133
- --destructive: oklch(0.704 0.1876 22.216);
134
- --destructive-foreground: oklch(0.18 0.05 22);
135
- --border: oklch(1 0 0 / 10%);
136
- --input: oklch(1 0 0 / 15%);
137
- --ring: oklch(0.65 0 0);
138
- --chart-1: oklch(0.74 0.13 167);
139
- --chart-2: oklch(0.72 0.14 230);
140
- --chart-3: oklch(0.72 0.15 285);
141
- --chart-4: oklch(0.74 0.15 330);
142
- --chart-5: oklch(0.78 0.14 60);
143
- --sidebar: oklch(0.175 0 0);
144
- --sidebar-foreground: oklch(0.985 0 0);
145
- --sidebar-primary: var(--primary);
146
- --sidebar-primary-foreground: var(--primary-foreground);
147
- --sidebar-accent: oklch(0.28 0 0);
148
- --sidebar-accent-foreground: oklch(0.985 0 0);
149
- --sidebar-border: oklch(1 0 0 / 10%);
150
- --sidebar-ring: oklch(0.65 0 0);
151
- --shadow-2xs: 0 1px 3px 0px oklch(0 0 0 / 0.05);
152
- --shadow-xs: 0 1px 3px 0px oklch(0 0 0 / 0.05);
153
- --shadow-sm: 0 1px 2px 0px oklch(0 0 0 / 0.18), 0 3px 8px -3px oklch(0 0 0 / 0.22);
154
- --shadow: 0 1px 3px 0px oklch(0 0 0 / 0.20), 0 4px 10px -3px oklch(0 0 0 / 0.22);
155
- --shadow-md: 0 2px 4px -2px oklch(0 0 0 / 0.22), 0 6px 16px -4px oklch(0 0 0 / 0.26);
156
- --shadow-lg: 0 2px 6px -2px oklch(0 0 0 / 0.24), 0 10px 24px -6px oklch(0 0 0 / 0.30);
157
- --shadow-xl: 0 4px 8px -4px oklch(0 0 0 / 0.26), 0 16px 32px -8px oklch(0 0 0 / 0.32);
158
- --shadow-2xl: 0 6px 12px -6px oklch(0 0 0 / 0.28), 0 24px 48px -12px oklch(0 0 0 / 0.38);
58
+ @layer theme {
59
+ :root {
60
+ /* Radius is shared geometry, not a light-palette reset. Mode scopes inherit it. */
61
+ --radius: 0.75rem; /* Shared 12px outer corners; inner control/row corners derive from this root and stay rectangular. */
62
+ }
63
+ }
64
+
65
+ @layer theme {
66
+ :root,
67
+ .light {
68
+ color-scheme: light; /* Native scrollbars, form controls and pickers follow the active mode. */
69
+ --background: oklch(0.985 0 0); /* Application canvas and default page background. */
70
+ --foreground: oklch(0.28 0 0); /* Primary text and icon color on the application canvas. */
71
+ --card: oklch(1 0 0); /* Card and framed content-surface background. */
72
+ --card-foreground: oklch(0.28 0 0); /* Primary text and icons on card surfaces. */
73
+ --popover: var(--card); /* Popover, menu, select, and transient-surface background. */
74
+ --popover-foreground: var(--foreground); /* Primary text and icons on popover surfaces. */
75
+ --primary: oklch(0.205 0 0); /* Primary-action color: near-black by default so status colors never compete with it; a brand stylesheet such as themes/green.css replaces it. */
76
+ --primary-foreground: oklch(0.985 0 0); /* Text and icons on solid primary fills. */
77
+ --secondary: oklch(0.94 0 0); /* Neutral secondary-control and supporting-surface fill. */
78
+ --secondary-foreground: oklch(0.205 0 0); /* Text and icons on secondary fills. */
79
+ --muted: oklch(0.96 0 0); /* Subdued backgrounds for passive regions and skeletons. */
80
+ --muted-foreground: oklch(0.50 0 0); /* Secondary text, metadata, and passive icons. */
81
+ --accent: oklch(0.945 0 0); /* Hover, selected-row, and emphasized neutral fill. */
82
+ --accent-foreground: oklch(0.205 0 0); /* Text and icons on accent fills. */
83
+ --destructive: oklch(0.50 0.2039 27.325); /* Destructive action, error, and invalid-state color. */
84
+ --destructive-foreground: oklch(0.99 0 0); /* Text and icons on solid destructive fills. */
85
+ --border: oklch(0.922 0 0); /* Default divider, outline, and surface-border color. */
86
+ --input: oklch(0.28 0 0 / 56%); /* The one resting control boundary: fields, choice controls and outline buttons share a 3:1 edge across supported surfaces, including rounded sRGB rendering. Dividers use the quieter --border role. */
87
+ --ring: oklch(0.60 0 0); /* Focus color: a focused control's frame takes it at full strength (3:1) inside a soft 3px halo of it at 50%. */
88
+ /*
89
+ * Categorical chart series. Hues are held identical in light and dark so a
90
+ * series keeps its identity when the theme flips; only lightness moves, to
91
+ * suit the surface it is drawn on. Hues are offset from the status hues
92
+ * (destructive 27, warning 75, success 145); series 1 and 5 sit nearest
93
+ * (22° from success, 15° from warning), so charts that encode state use the
94
+ * status tokens, never series colors. Chroma is kept inside sRGB, so the
95
+ * authored value is what renders rather than something the browser clamps.
96
+ */
97
+ --chart-1: oklch(0.56 0.11 167); /* First categorical chart-series color; never a status color. */
98
+ --chart-2: oklch(0.56 0.11 230); /* Second categorical chart-series color; never a status color. */
99
+ --chart-3: oklch(0.56 0.17 285); /* Third categorical chart-series color; never a status color. */
100
+ --chart-4: oklch(0.58 0.16 330); /* Fourth categorical chart-series color; never a status color. */
101
+ --chart-5: oklch(0.60 0.14 60); /* Fifth categorical chart-series color; never a status color. */
102
+ --sidebar: oklch(0.96 0 0); /* Sidebar shell background. */
103
+ --sidebar-foreground: oklch(0.28 0 0); /* Primary sidebar text and icon color. */
104
+ --sidebar-primary: var(--primary); /* Strong sidebar selection or primary action fill; follows the brand in both modes. */
105
+ --sidebar-primary-foreground: var(--primary-foreground); /* Text and icons on sidebar primary fills. */
106
+ --sidebar-accent: oklch(0.98 0 0 / 1); /* Sidebar hover and selected-row neutral fill. */
107
+ --sidebar-accent-foreground: oklch(0.205 0 0); /* Text and icons on sidebar accent fills. */
108
+ --sidebar-border: oklch(0.922 0 0); /* Sidebar dividers and shell border. */
109
+ --sidebar-ring: oklch(0.60 0 0); /* Focus-visible ring inside the sidebar. */
110
+ --shadow-2xs: 0 1px 3px 0px oklch(0 0 0 / 0.05); /* Minimal elevation for compact controls. */
111
+ --shadow-xs: 0 1px 3px 0px oklch(0 0 0 / 0.05); /* Extra-small elevation for controls and rows. */
112
+ --shadow-sm: 0 1px 2px 0px oklch(0 0 0 / 0.06), 0 3px 8px -3px oklch(0 0 0 / 0.08); /* Small elevation for raised controls and cards. */
113
+ --shadow: 0 1px 3px 0px oklch(0 0 0 / 0.08), 0 4px 10px -3px oklch(0 0 0 / 0.08); /* Default elevation for framed content. */
114
+ --shadow-md: 0 2px 4px -2px oklch(0 0 0 / 0.08), 0 6px 16px -4px oklch(0 0 0 / 0.10); /* Medium elevation for floating surfaces. */
115
+ --shadow-lg: 0 2px 6px -2px oklch(0 0 0 / 0.08), 0 10px 24px -6px oklch(0 0 0 / 0.12); /* Large elevation for menus, dialogs, and popovers. */
116
+ --shadow-xl: 0 4px 8px -4px oklch(0 0 0 / 0.10), 0 16px 32px -8px oklch(0 0 0 / 0.14); /* Extra-large elevation for prominent overlays. */
117
+ --shadow-2xl: 0 6px 12px -6px oklch(0 0 0 / 0.12), 0 24px 48px -12px oklch(0 0 0 / 0.20); /* Maximum elevation for exceptional floating surfaces. */
118
+ }
119
+ }
120
+
121
+ @layer theme {
122
+ .dark {
123
+ color-scheme: dark;
124
+ --background: oklch(0.145 0 0);
125
+ --foreground: oklch(0.985 0 0);
126
+ --card: oklch(0.205 0 0);
127
+ --card-foreground: oklch(0.985 0 0);
128
+ --popover: oklch(0.235 0 0);
129
+ --popover-foreground: var(--foreground);
130
+ --primary: oklch(0.922 0 0); /* Near-white primary fill and ink on dark surfaces. */
131
+ --primary-foreground: oklch(0.205 0 0); /* Dark ink on the near-white dark-theme primary fill. */
132
+ --secondary: oklch(0.269 0 0);
133
+ --secondary-foreground: oklch(0.985 0 0);
134
+ --muted: oklch(0.175 0 0);
135
+ --muted-foreground: oklch(0.74 0 0); /* Secondary copy stays readable on muted and accent surfaces. */
136
+ --accent: oklch(0.36 0 0);
137
+ --accent-foreground: oklch(0.985 0 0);
138
+ --destructive: oklch(0.704 0.1876 22.216);
139
+ --destructive-foreground: oklch(0.18 0.05 22);
140
+ --border: oklch(1 0 0 / 10%);
141
+ --input: oklch(1 0 0 / 55%);
142
+ --ring: oklch(0.65 0 0);
143
+ --chart-1: oklch(0.74 0.13 167);
144
+ --chart-2: oklch(0.72 0.14 230);
145
+ --chart-3: oklch(0.72 0.15 285);
146
+ --chart-4: oklch(0.74 0.15 330);
147
+ --chart-5: oklch(0.78 0.14 60);
148
+ --sidebar: oklch(0.175 0 0);
149
+ --sidebar-foreground: oklch(0.985 0 0);
150
+ --sidebar-primary: var(--primary);
151
+ --sidebar-primary-foreground: var(--primary-foreground);
152
+ --sidebar-accent: oklch(0.28 0 0);
153
+ --sidebar-accent-foreground: oklch(0.985 0 0);
154
+ --sidebar-border: oklch(1 0 0 / 10%);
155
+ --sidebar-ring: oklch(0.65 0 0);
156
+ --shadow-2xs: 0 1px 3px 0px oklch(0 0 0 / 0.05);
157
+ --shadow-xs: 0 1px 3px 0px oklch(0 0 0 / 0.05);
158
+ --shadow-sm: 0 1px 2px 0px oklch(0 0 0 / 0.18), 0 3px 8px -3px oklch(0 0 0 / 0.22);
159
+ --shadow: 0 1px 3px 0px oklch(0 0 0 / 0.20), 0 4px 10px -3px oklch(0 0 0 / 0.22);
160
+ --shadow-md: 0 2px 4px -2px oklch(0 0 0 / 0.22), 0 6px 16px -4px oklch(0 0 0 / 0.26);
161
+ --shadow-lg: 0 2px 6px -2px oklch(0 0 0 / 0.24), 0 10px 24px -6px oklch(0 0 0 / 0.30);
162
+ --shadow-xl: 0 4px 8px -4px oklch(0 0 0 / 0.26), 0 16px 32px -8px oklch(0 0 0 / 0.32);
163
+ --shadow-2xl: 0 6px 12px -6px oklch(0 0 0 / 0.28), 0 24px 48px -12px oklch(0 0 0 / 0.38);
164
+ }
159
165
  }
160
166
 
161
167
  /*
@@ -218,56 +224,58 @@
218
224
  --spacing-space-3xl: calc(2rem * var(--space-scale)); /* Page-level rhythm between a page header and its body or between major sections. */
219
225
  }
220
226
 
221
- :root {
222
- /* Fonts */
223
- --font-heading: var(--font-sans); /* Display and heading font stack; defaults to the UI sans stack. */
224
- --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; /* Primary interface and body font stack. */
225
- --font-serif: Merriweather, ui-serif, serif; /* Editorial serif stack for consumer-authored rich content. */
226
- --font-mono: JetBrains Mono, ui-monospace, monospace; /* Monospace stack for code, identifiers, and fixed-width values. */
227
-
228
- /* Multipliers */
229
- --space-scale: 1; /* Multiplies gaps and padding without changing control heights. */
230
- --density-scale: 1; /* Multiplies controls, actions, rows, and other density-sensitive geometry. */
231
-
232
- /* Shared copy gaps: normal surfaces and dense rows/collections. */
233
- --gap-normal: 0.25rem; /* Vertical rhythm between titles and structural descriptions. */
234
- --gap-dense: 0.125rem; /* Vertical rhythm between row titles and compact supporting copy. */
235
-
236
- /* Typography scale.
237
- * Override individual --text-* tokens for precise theme sizing. Line-height
238
- * tokens intentionally match Tailwind's unitless default ratios.
239
- */
240
- --text-xxs: 0.75rem; /* Micro-label role kept at the accessible 12px floor. */
241
- --text-xxs--line-height: calc(1 / 0.75); /* Unitless line height paired with the micro-label role. */
242
- --text-xs: 0.75rem; /* Compact metadata, hints, and secondary row descriptions. */
243
- --text-xs--line-height: calc(1 / 0.75); /* Unitless line height paired with compact metadata. */
244
- --text-pxs: 0.8125rem; /* Dense admin-control and table text at 13px by default. */
245
- --text-pxs--line-height: calc(1.125 / 0.8125); /* Unitless line height paired with dense admin text. */
246
- --text-sm: 0.875rem; /* Default application body and control text at 14px. */
247
- --text-sm--line-height: calc(1.25 / 0.875); /* Unitless line height paired with default body text. */
248
- --text-base: 1rem; /* Deliberate shell hierarchy and explicitly enlarged body copy at 16px. */
249
- --text-base--line-height: calc(1.5 / 1); /* Unitless line height paired with deliberate 16px text. */
250
- --text-lg: 1.125rem; /* Small section and card heading scale. */
251
- --text-lg--line-height: calc(1.75 / 1.125); /* Unitless line height paired with small headings. */
252
- --text-xl: 1.25rem; /* Prominent section heading scale. */
253
- --text-xl--line-height: calc(1.75 / 1.25); /* Unitless line height paired with prominent headings. */
254
- --text-2xl: 1.5rem; /* Page-heading scale for standard application shells. */
255
- --text-2xl--line-height: calc(2 / 1.5); /* Unitless line height paired with page headings. */
256
- --text-3xl: 1.875rem; /* Large page or marketing heading scale. */
257
- --text-3xl--line-height: calc(2.25 / 1.875); /* Unitless line height paired with large headings. */
258
- --text-4xl: 2.25rem; /* Display heading step one. */
259
- --text-4xl--line-height: calc(2.5 / 2.25); /* Unitless line height paired with display step one. */
260
- --text-5xl: 3rem; /* Display heading step two. */
261
- --text-5xl--line-height: 1; /* Tight line height paired with display step two. */
262
- --text-6xl: 3.75rem; /* Display heading step three. */
263
- --text-6xl--line-height: 1; /* Tight line height paired with display step three. */
264
- --text-7xl: 4.5rem; /* Display heading step four. */
265
- --text-7xl--line-height: 1; /* Tight line height paired with display step four. */
266
- --text-8xl: 6rem; /* Display heading step five. */
267
- --text-8xl--line-height: 1; /* Tight line height paired with display step five. */
268
- --text-9xl: 8rem; /* Maximum display heading scale. */
269
- --text-9xl--line-height: 1; /* Tight line height paired with the maximum display scale. */
270
-
227
+ @layer theme {
228
+ :root {
229
+ /* Fonts */
230
+ --font-heading: var(--font-sans); /* Display and heading font stack; defaults to the UI sans stack. */
231
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; /* Primary interface and body font stack. */
232
+ --font-serif: Merriweather, ui-serif, serif; /* Editorial serif stack for consumer-authored rich content. */
233
+ --font-mono: JetBrains Mono, ui-monospace, monospace; /* Monospace stack for code, identifiers, and fixed-width values. */
234
+
235
+ /* Multipliers */
236
+ --space-scale: 1; /* Multiplies gaps and padding without changing control heights. */
237
+ --density-scale: 1; /* Multiplies controls, actions, rows, and other density-sensitive geometry. */
238
+
239
+ /* Shared copy gaps: normal surfaces and dense rows/collections. */
240
+ --gap-normal: 0.25rem; /* Vertical rhythm between titles and structural descriptions. */
241
+ --gap-dense: 0.125rem; /* Vertical rhythm between row titles and compact supporting copy. */
242
+
243
+ /* Typography scale.
244
+ * Override individual --text-* tokens for precise theme sizing. Line-height
245
+ * tokens intentionally match Tailwind's unitless default ratios.
246
+ */
247
+ --text-xxs: 0.75rem; /* Micro-label role kept at the accessible 12px floor. */
248
+ --text-xxs--line-height: calc(1 / 0.75); /* Unitless line height paired with the micro-label role. */
249
+ --text-xs: 0.75rem; /* Compact metadata, hints, and secondary row descriptions. */
250
+ --text-xs--line-height: calc(1 / 0.75); /* Unitless line height paired with compact metadata. */
251
+ --text-pxs: 0.8125rem; /* Dense admin-control and table text at 13px by default. */
252
+ --text-pxs--line-height: calc(1.125 / 0.8125); /* Unitless line height paired with dense admin text. */
253
+ --text-sm: 0.875rem; /* Default application body and control text at 14px. */
254
+ --text-sm--line-height: calc(1.25 / 0.875); /* Unitless line height paired with default body text. */
255
+ --text-base: 1rem; /* Deliberate shell hierarchy and explicitly enlarged body copy at 16px. */
256
+ --text-base--line-height: calc(1.5 / 1); /* Unitless line height paired with deliberate 16px text. */
257
+ --text-lg: 1.125rem; /* Small section and card heading scale. */
258
+ --text-lg--line-height: calc(1.75 / 1.125); /* Unitless line height paired with small headings. */
259
+ --text-xl: 1.25rem; /* Prominent section heading scale. */
260
+ --text-xl--line-height: calc(1.75 / 1.25); /* Unitless line height paired with prominent headings. */
261
+ --text-2xl: 1.5rem; /* Page-heading scale for standard application shells. */
262
+ --text-2xl--line-height: calc(2 / 1.5); /* Unitless line height paired with page headings. */
263
+ --text-3xl: 1.875rem; /* Large page or marketing heading scale. */
264
+ --text-3xl--line-height: calc(2.25 / 1.875); /* Unitless line height paired with large headings. */
265
+ --text-4xl: 2.25rem; /* Display heading step one. */
266
+ --text-4xl--line-height: calc(2.5 / 2.25); /* Unitless line height paired with display step one. */
267
+ --text-5xl: 3rem; /* Display heading step two. */
268
+ --text-5xl--line-height: 1; /* Tight line height paired with display step two. */
269
+ --text-6xl: 3.75rem; /* Display heading step three. */
270
+ --text-6xl--line-height: 1; /* Tight line height paired with display step three. */
271
+ --text-7xl: 4.5rem; /* Display heading step four. */
272
+ --text-7xl--line-height: 1; /* Tight line height paired with display step four. */
273
+ --text-8xl: 6rem; /* Display heading step five. */
274
+ --text-8xl--line-height: 1; /* Tight line height paired with display step five. */
275
+ --text-9xl: 8rem; /* Maximum display heading scale. */
276
+ --text-9xl--line-height: 1; /* Tight line height paired with the maximum display scale. */
277
+
278
+ }
271
279
  }
272
280
 
273
281
 
@@ -310,47 +318,51 @@
310
318
  --color-inverse-decoration: var(--inverse-decoration);
311
319
  }
312
320
 
313
- :root,
314
- .light {
315
- --success: oklch(0.4 0.1257 145); /* Semantic success fill, border, and foreground accent. */
316
- --success-foreground: oklch(0.985 0 0); /* Text and icons on solid success fills. */
317
- --info: oklch(0.45 0.214 276.966); /* Semantic informational fill, border, and foreground accent. */
318
- --info-foreground: oklch(0.99 0 0); /* Text and icons on solid informational fills. */
319
- --link-color: oklch(0.462 0.1776 259.13); /* Inline links and link-like copyable values. */
320
- --primary-accent: var(--primary); /* Brand color drawn AS foreground — icons, spinners, active marks — on the app surface. Follows --primary, so a rebrand needs one root; a brand theme may set a dedicated dark foreground accent. Primary fills and their paired foreground remain owned by the shadcn theme. Distinct from --accent, the muted hover surface. */
321
- --warning: oklch(0.78 0.13 75); /* Semantic warning fill and decorative highlight; use warning-accent for ink on ordinary surfaces. */
322
- --warning-foreground: oklch(0.28 0.035 60); /* Text and icons on solid warning fills. */
323
- --warning-accent: oklch(0.53 0.11 65); /* Warning colour drawn AS foreground — icons and marks — on a tinted warning surface. Darkens here and brightens in dark, where --warning stays a light fill so solid warning chips keep the amber. */
324
- --inverse-background: oklch(0.28 0 0); /* Base background for explicit dark or artwork-backed surfaces. */
325
- --inverse-foreground: oklch(0.985 0 0); /* Primary text and icons on inverse backgrounds. */
326
- --inverse-muted: oklch(0.985 0 0 / 0.74); /* Secondary text on inverse backgrounds. */
327
- --inverse-subtle: oklch(0.985 0 0 / 0.58); /* Tertiary text and icons on inverse backgrounds. */
328
- --inverse-disabled: oklch(0.985 0 0 / 0.42); /* Disabled content on inverse backgrounds. */
329
- --inverse-surface: oklch(0.985 0 0 / 0.12); /* Subtle nested fill on inverse backgrounds. */
330
- --inverse-surface-strong: oklch(0.985 0 0 / 0.22); /* Emphasized nested fill on inverse backgrounds. */
331
- --inverse-border: oklch(0.985 0 0 / 0.18); /* Dividers and outlines on inverse backgrounds. */
332
- --inverse-decoration: oklch(0.985 0 0 / 0.06); /* Non-semantic decorative wash on inverse backgrounds. */
333
- }
334
-
335
- .dark {
336
- --success: oklch(0.76 0.16 145);
337
- --success-foreground: oklch(0.18 0.05 145);
338
- --info: oklch(0.72 0.14 250);
339
- --info-foreground: oklch(0.18 0.05 250);
340
- --link-color: oklch(0.72 0.12 259.13);
341
- --primary-accent: var(--primary);
342
- --warning: oklch(0.81 0.12 75);
343
- --warning-foreground: oklch(0.28 0.035 60);
344
- --warning-accent: oklch(0.81 0.12 75);
345
- --inverse-background: oklch(0.28 0 0);
346
- --inverse-foreground: oklch(0.985 0 0);
347
- --inverse-muted: oklch(0.985 0 0 / 0.74);
348
- --inverse-subtle: oklch(0.985 0 0 / 0.58);
349
- --inverse-disabled: oklch(0.985 0 0 / 0.42);
350
- --inverse-surface: oklch(0.985 0 0 / 0.12);
351
- --inverse-surface-strong: oklch(0.985 0 0 / 0.22);
352
- --inverse-border: oklch(0.985 0 0 / 0.18);
353
- --inverse-decoration: oklch(0.985 0 0 / 0.06);
321
+ @layer theme {
322
+ :root,
323
+ .light {
324
+ --success: oklch(0.4 0.1257 145); /* Semantic success fill, border, and foreground accent. */
325
+ --success-foreground: oklch(0.985 0 0); /* Text and icons on solid success fills. */
326
+ --info: oklch(0.45 0.214 276.966); /* Semantic informational fill, border, and foreground accent. */
327
+ --info-foreground: oklch(0.99 0 0); /* Text and icons on solid informational fills. */
328
+ --link-color: oklch(0.462 0.1776 259.13); /* Inline links and link-like copyable values. */
329
+ --primary-accent: var(--primary); /* Brand color drawn AS foreground — icons, spinners, active marks — on the app surface. Follows --primary, so a rebrand needs one root; a brand theme may set a dedicated dark foreground accent. Primary fills and their paired foreground remain owned by the shadcn theme. Distinct from --accent, the muted hover surface. */
330
+ --warning: oklch(0.78 0.13 75); /* Semantic warning fill and decorative highlight; use warning-accent for ink on ordinary surfaces. */
331
+ --warning-foreground: oklch(0.28 0.035 60); /* Text and icons on solid warning fills. */
332
+ --warning-accent: oklch(0.53 0.11 65); /* Warning colour drawn AS foreground — icons and marks — on a tinted warning surface. Darkens here and brightens in dark, where --warning stays a light fill so solid warning chips keep the amber. */
333
+ --inverse-background: oklch(0.28 0 0); /* Base background for explicit dark or artwork-backed surfaces. */
334
+ --inverse-foreground: oklch(0.985 0 0); /* Primary text and icons on inverse backgrounds. */
335
+ --inverse-muted: oklch(0.985 0 0 / 0.74); /* Secondary text on inverse backgrounds. */
336
+ --inverse-subtle: oklch(0.985 0 0 / 0.58); /* Tertiary text and icons on inverse backgrounds. */
337
+ --inverse-disabled: oklch(0.985 0 0 / 0.42); /* Disabled content on inverse backgrounds. */
338
+ --inverse-surface: oklch(0.985 0 0 / 0.12); /* Subtle nested fill on inverse backgrounds. */
339
+ --inverse-surface-strong: oklch(0.985 0 0 / 0.22); /* Emphasized nested fill on inverse backgrounds. */
340
+ --inverse-border: oklch(0.985 0 0 / 0.18); /* Dividers and outlines on inverse backgrounds. */
341
+ --inverse-decoration: oklch(0.985 0 0 / 0.06); /* Non-semantic decorative wash on inverse backgrounds. */
342
+ }
343
+ }
344
+
345
+ @layer theme {
346
+ .dark {
347
+ --success: oklch(0.76 0.16 145);
348
+ --success-foreground: oklch(0.18 0.05 145);
349
+ --info: oklch(0.72 0.14 250);
350
+ --info-foreground: oklch(0.18 0.05 250);
351
+ --link-color: oklch(0.72 0.12 259.13);
352
+ --primary-accent: var(--primary);
353
+ --warning: oklch(0.81 0.12 75);
354
+ --warning-foreground: oklch(0.28 0.035 60);
355
+ --warning-accent: oklch(0.81 0.12 75);
356
+ --inverse-background: oklch(0.28 0 0);
357
+ --inverse-foreground: oklch(0.985 0 0);
358
+ --inverse-muted: oklch(0.985 0 0 / 0.74);
359
+ --inverse-subtle: oklch(0.985 0 0 / 0.58);
360
+ --inverse-disabled: oklch(0.985 0 0 / 0.42);
361
+ --inverse-surface: oklch(0.985 0 0 / 0.12);
362
+ --inverse-surface-strong: oklch(0.985 0 0 / 0.22);
363
+ --inverse-border: oklch(0.985 0 0 / 0.18);
364
+ --inverse-decoration: oklch(0.985 0 0 / 0.06);
365
+ }
354
366
  }
355
367
 
356
368
  /*
@@ -409,14 +421,16 @@
409
421
  /* Generated geometry aliases:end */
410
422
  }
411
423
 
412
- :root {
413
- --height-action: 2.25rem; /* Default button and action-trigger height. */
414
- --height-control: 2.25rem; /* Default input, select, and field-control height. */
415
- --control-x: 0.75rem; /* Default inline padding for buttons and field controls. */
424
+ @layer theme {
425
+ :root {
426
+ --height-action: 2.25rem; /* Default button and action-trigger height. */
427
+ --height-control: 2.25rem; /* Default input, select, and field-control height. */
428
+ --control-x: 0.75rem; /* Default inline padding for buttons and field controls. */
416
429
 
417
- /* Media */
418
- --icon: 1rem; /* Default interface icon size. */
419
- --avatar: 2rem; /* Default avatar used in standard rows and cards. */
430
+ /* Media */
431
+ --icon: 1rem; /* Default interface icon size. */
432
+ --avatar: 2rem; /* Default avatar used in standard rows and cards. */
433
+ }
420
434
  }
421
435
 
422
436
  /* Generated geometry utilities:start */
@@ -651,29 +665,36 @@
651
665
  --container-adaptive-grid-min-lg: var(--adaptive-grid-min-lg);
652
666
  }
653
667
 
654
- :root {
655
- --shell-header-height: 4.5rem; /* Minimum height of the application header shell. */
656
- --shell-sidebar-width: 16rem; /* Default expanded sidebar content width. */
657
- --content-width-sm: 40rem; /* Compact centered content measure. */
658
- --content-width-md: 48rem; /* Medium centered content measure. */
659
- --content-width-lg: 64rem; /* Default readable page content measure. */
660
- --content-width-xl: 80rem; /* Wide application content measure. */
661
- --content-width-2xl: 96rem; /* Maximum standard application content measure. */
662
- --adaptive-grid-min-sm: 12rem; /* Compact minimum width for adaptive peer columns. */
663
- --adaptive-grid-min-md: 16rem; /* Default minimum width for adaptive peer columns. */
664
- --adaptive-grid-min-lg: 20rem; /* Spacious minimum width for adaptive peer columns. */
665
- }
666
-
668
+ @layer theme {
669
+ :root {
670
+ --shell-header-height: 4.5rem; /* Minimum height of the application header shell. */
671
+ --shell-sidebar-width: 16rem; /* Default expanded sidebar content width. */
672
+ --content-width-sm: 40rem; /* Compact centered content measure. */
673
+ --content-width-md: 48rem; /* Medium centered content measure. */
674
+ --content-width-lg: 64rem; /* Default readable page content measure. */
675
+ --content-width-xl: 80rem; /* Wide application content measure. */
676
+ --content-width-2xl: 96rem; /* Maximum standard application content measure. */
677
+ --adaptive-grid-min-sm: 12rem; /* Compact minimum width for adaptive peer columns. */
678
+ --adaptive-grid-min-md: 16rem; /* Default minimum width for adaptive peer columns. */
679
+ --adaptive-grid-min-lg: 20rem; /* Spacious minimum width for adaptive peer columns. */
680
+ }
681
+ }
682
+
683
+ /* The shell's own widths, defined once: the sidebar primitives and the shell
684
+ * grid read these instead of restating them. They are shell mechanics scoped
685
+ * to the shell, not theme roots. */
667
686
  @utility shell-sidebar-vars {
668
687
  --shell-sidebar-width-current: var(--shell-sidebar-width);
688
+ --shell-sidebar-width-icon: calc(3.75rem * var(--density-scale));
689
+ --shell-sidebar-width-offcanvas: min(20rem, calc(100vw - 2rem));
669
690
  }
670
691
 
671
692
  @utility shell-sidebar-icon-current {
672
- --shell-sidebar-width-current: calc(3.75rem * var(--density-scale));
693
+ --shell-sidebar-width-current: var(--shell-sidebar-width-icon);
673
694
  }
674
695
 
675
696
  @utility shell-sidebar-offcanvas-current {
676
- --shell-sidebar-width-current: min(20rem, calc(100vw - 2rem));
697
+ --shell-sidebar-width-current: var(--shell-sidebar-width-offcanvas);
677
698
  }
678
699
 
679
700
  @utility shell-grid-left {
@@ -697,23 +718,25 @@
697
718
  --spacing-row-y-lg: calc(var(--row-y) * 1.25 * var(--density-scale));
698
719
  }
699
720
 
700
- :root {
701
- /* Rows */
702
- --row-x: 0.75rem; /* Shared inline inset for list, menu, command, and table rows. */
703
- --row-y: 0.5rem; /* Default vertical row inset with an 8px breathing floor. */
721
+ @layer theme {
722
+ :root {
723
+ /* Rows */
724
+ --row-x: 0.75rem; /* Shared inline inset for list, menu, command, and table rows. */
725
+ --row-y: 0.5rem; /* Default vertical row inset with an 8px breathing floor. */
704
726
 
705
- /* Surface base measurements. Utilities apply --space-scale at use time.
706
- * The xs inset is half the surface root for action menus,
707
- * option lists, selects, and equivalent item popovers. */
708
- --surface-x: 1.25rem; /* Default inline inset for cards and multi-content surfaces. */
709
- --surface-y: 1.25rem; /* Default block inset for cards and multi-content surfaces. */
727
+ /* Surface base measurements. Utilities apply --space-scale at use time.
728
+ * The xs inset is half the surface root for action menus,
729
+ * option lists, selects, and equivalent item popovers. */
730
+ --surface-x: 1.25rem; /* Default inline inset for cards and multi-content surfaces. */
731
+ --surface-y: 1.25rem; /* Default block inset for cards and multi-content surfaces. */
710
732
 
711
- /* Data visualization canvas */
712
- --chart-min-height: 13.75rem; /* Minimum readable canvas height for package chart frames. */
733
+ /* Data visualization canvas */
734
+ --chart-min-height: 13.75rem; /* Minimum readable canvas height for package chart frames. */
713
735
 
714
- /* Modal scrim */
715
- --overlay-backdrop: oklch(0 0 0 / 0.5); /* Shared tint behind dialog, alert dialog, sheet, and drawer surfaces. */
736
+ /* Modal scrim */
737
+ --overlay-backdrop: oklch(0 0 0 / 0.5); /* Shared tint behind dialog, alert dialog, sheet, and drawer surfaces. */
716
738
 
739
+ }
717
740
  }
718
741
 
719
742
  /*
@@ -835,4 +858,38 @@
835
858
  padding: calc(var(--surface-y) * 1.8 * var(--space-scale)) calc(var(--surface-x) * 1.8 * var(--space-scale));
836
859
  }
837
860
 
838
- @custom-variant dark (&:where(.dark, .dark *));
861
+ /* Private inherited mode marker: style queries read the nearest boundary with
862
+ * no size containment or DOM synchronization. Keep the own-element branches:
863
+ * container queries inspect ancestors, while a utility may itself own a mode. */
864
+ .light { --themelia-mode: light; }
865
+ .dark { --themelia-mode: dark; }
866
+ @custom-variant dark {
867
+ &:where(.dark) {
868
+ @slot;
869
+ }
870
+ @container style(--themelia-mode: dark) {
871
+ &:not(:where(.light)) {
872
+ @slot;
873
+ }
874
+ }
875
+ }
876
+
877
+ /* Re-resolve default aliases only when a plain ThemeScope supplies their source
878
+ * root. Explicit stylesheet/inline role overrides win this zero-specificity
879
+ * bridge. A scope without a new source inherits its parent's independent role.
880
+ * Mode-dependent aliases such as light-only --popover remain palette-owned. */
881
+ @layer theme {
882
+ :where([data-theme-scope][data-theme-roots~="primary"]) {
883
+ --primary-accent: var(--primary);
884
+ --sidebar-primary: var(--primary);
885
+ }
886
+ :where([data-theme-scope][data-theme-roots~="primary-foreground"]) {
887
+ --sidebar-primary-foreground: var(--primary-foreground);
888
+ }
889
+ :where([data-theme-scope][data-theme-roots~="foreground"]) {
890
+ --popover-foreground: var(--foreground);
891
+ }
892
+ :where([data-theme-scope][data-theme-roots~="font-sans"]) {
893
+ --font-heading: var(--font-sans);
894
+ }
895
+ }