@vireo-ai/trellis-ui 0.1.60 → 0.1.62

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 (556) hide show
  1. package/README.md +0 -1
  2. package/THIRD_PARTY_NOTICES.md +11 -0
  3. package/package.json +54 -66
  4. package/packages/client/src/components/accordion/styles.css +21 -9
  5. package/packages/client/src/components/badge/styles.css +12 -0
  6. package/packages/client/src/components/button/styles.css +31 -5
  7. package/packages/client/src/components/card/styles.css +16 -0
  8. package/packages/client/src/components/checkbox/styles.css +29 -5
  9. package/packages/client/src/components/date-picker/styles.css +22 -17
  10. package/packages/client/src/components/field/styles.css +18 -17
  11. package/packages/client/src/components/input/styles.css +1 -0
  12. package/packages/client/src/components/keybinding/styles.css +9 -2
  13. package/packages/client/src/components/menu/styles.css +13 -0
  14. package/packages/client/src/components/panels/styles.css +12 -2
  15. package/packages/client/src/components/scroll-area/styles.css +169 -2
  16. package/packages/client/src/components/select/styles.css +28 -8
  17. package/packages/client/src/components/sidebar/styles.css +218 -0
  18. package/packages/client/src/components/slider/styles.css +57 -0
  19. package/packages/client/src/components/tabs/styles.css +26 -24
  20. package/packages/client/src/components/toast/styles.css +31 -0
  21. package/packages/client/src/directives/sortable.css +5 -0
  22. package/packages/client/src/runtime/drag-and-drop/resize-handle.css +2 -2
  23. package/packages/client/src/styles/components.css +8 -3
  24. package/packages/client/src/styles/fonts/fira-code/5.3.0/LICENSE +93 -0
  25. package/packages/client/src/styles/fonts/fira-code/5.3.0/download.json +47 -0
  26. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  27. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  28. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  29. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  30. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  31. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  32. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  33. package/packages/client/src/styles/fonts/fira-code/5.3.0/font.css +62 -0
  34. package/packages/client/src/styles/fonts/fira-code/5.3.0/resource.json +82 -0
  35. package/packages/client/src/styles/fonts/inter/5.3.0/LICENSE +93 -0
  36. package/packages/client/src/styles/fonts/inter/5.3.0/download.json +47 -0
  37. package/packages/client/src/styles/fonts/inter/5.3.0/font.css +62 -0
  38. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  39. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  40. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  41. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  42. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  43. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  44. package/packages/client/src/styles/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  45. package/packages/client/src/styles/fonts/inter/5.3.0/resource.json +82 -0
  46. package/packages/client/src/styles/generated/theme-fonts.css +3 -3
  47. package/packages/client/src/styles/generated/theme-palette.css +1001 -634
  48. package/packages/client/src/styles/generated/theme-runtime.css +905 -580
  49. package/packages/client/src/styles/generated-sources.css +1 -1
  50. package/packages/client/src/styles/layout.css +88 -0
  51. package/packages/client/src/styles/recipes/action.css +4 -16
  52. package/packages/client/src/styles/recipes/disabled.css +8 -0
  53. package/packages/client/src/styles/recipes/option.css +0 -44
  54. package/packages/client/src/styles/recipes/selection.css +28 -39
  55. package/packages/client/src/styles/theme-support.css +19 -42
  56. package/packages/client/src/styles/typography.css +26 -0
  57. package/packages/client/types/assets/bridge.d.ts +1 -2
  58. package/packages/client/types/capabilities/anchor.d.ts +7 -0
  59. package/packages/client/types/capabilities/anchor.entry.generated.d.ts +3 -0
  60. package/packages/client/types/capabilities/collection.d.ts +7 -0
  61. package/packages/client/types/capabilities/collection.entry.generated.d.ts +3 -0
  62. package/packages/client/types/capabilities/shortcut.d.ts +4 -3
  63. package/packages/client/types/components/accordion/machine.d.ts +4 -4
  64. package/packages/client/types/components/accordion/runtime-docs.d.ts +1 -0
  65. package/packages/client/types/components/app/contract.d.ts +5 -5
  66. package/packages/client/types/components/badge/contract.d.ts +1 -0
  67. package/packages/client/types/components/box/contract.d.ts +17 -12
  68. package/packages/client/types/components/box/index.d.ts +1 -1
  69. package/packages/client/types/components/button/contract.d.ts +3 -2
  70. package/packages/client/types/components/card/contract.d.ts +27 -16
  71. package/packages/client/types/components/checkbox/contract.d.ts +13 -13
  72. package/packages/client/types/components/checkbox/runtime-docs.d.ts +1 -0
  73. package/packages/client/types/components/common.d.ts +13 -11
  74. package/packages/client/types/components/container/contract.d.ts +4 -3
  75. package/packages/client/types/components/data-grid/contract.d.ts +3 -2
  76. package/packages/client/types/components/data-grid/runtime-docs.d.ts +1 -0
  77. package/packages/client/types/components/date-picker/contract.d.ts +2 -2
  78. package/packages/client/types/components/date-picker/machine.d.ts +11 -11
  79. package/packages/client/types/components/date-picker/runtime-docs.d.ts +1 -0
  80. package/packages/client/types/components/direct-upload/runtime-docs.d.ts +1 -0
  81. package/packages/client/types/components/dropdown/contract.d.ts +1 -1
  82. package/packages/client/types/components/dropdown/machine.d.ts +5 -3
  83. package/packages/client/types/components/dropdown/runtime-docs.d.ts +1 -0
  84. package/packages/client/types/components/field/contract.d.ts +4 -4
  85. package/packages/client/types/components/field/runtime-docs.d.ts +1 -0
  86. package/packages/client/types/components/file-upload/contract.d.ts +3 -3
  87. package/packages/client/types/components/file-upload/machine.d.ts +4 -4
  88. package/packages/client/types/components/file-upload/runtime-docs.d.ts +1 -0
  89. package/packages/client/types/components/flex/contract.d.ts +10 -8
  90. package/packages/client/types/components/formset/runtime-docs.d.ts +1 -0
  91. package/packages/client/types/components/frame/contract.d.ts +14 -11
  92. package/packages/client/types/components/grid/contract.d.ts +8 -7
  93. package/packages/client/types/components/image/contract.d.ts +1 -0
  94. package/packages/client/types/components/input/contract.d.ts +1 -0
  95. package/packages/client/types/components/input/machine.d.ts +2 -2
  96. package/packages/client/types/components/layout.d.ts +91 -35
  97. package/packages/client/types/components/menu/contract.d.ts +27 -10
  98. package/packages/client/types/components/modal/contract.d.ts +22 -5
  99. package/packages/client/types/components/modal/runtime-docs.d.ts +1 -0
  100. package/packages/client/types/components/panels/contract.d.ts +2 -2
  101. package/packages/client/types/components/panels/index.d.ts +2 -1
  102. package/packages/client/types/components/panels/machine.d.ts +9 -8
  103. package/packages/client/types/components/panels/runtime-docs.d.ts +1 -0
  104. package/packages/client/types/components/radio/contract.d.ts +8 -8
  105. package/packages/client/types/components/radio/runtime-docs.d.ts +1 -0
  106. package/packages/client/types/components/scroll-area/contract.d.ts +1 -20
  107. package/packages/client/types/components/scroll-area/runtime-docs.d.ts +1 -0
  108. package/packages/client/types/components/section/contract.d.ts +4 -3
  109. package/packages/client/types/components/select/contract.d.ts +3 -3
  110. package/packages/client/types/components/select/machine.d.ts +13 -13
  111. package/packages/client/types/components/select/presentation.d.ts +1 -0
  112. package/packages/client/types/components/select/runtime-docs.d.ts +1 -0
  113. package/packages/client/types/components/sidebar/contract.d.ts +26 -8
  114. package/packages/client/types/components/sidebar/groups.d.ts +4 -0
  115. package/packages/client/types/components/sidebar/index.d.ts +5 -4
  116. package/packages/client/types/components/sidebar/runtime-docs.d.ts +1 -0
  117. package/packages/client/types/components/slider/contract.d.ts +1 -0
  118. package/packages/client/types/components/slider/machine.d.ts +10 -5
  119. package/packages/client/types/components/slider/runtime-docs.d.ts +1 -0
  120. package/packages/client/types/components/stack/contract.d.ts +10 -8
  121. package/packages/client/types/components/switch/contract.d.ts +8 -8
  122. package/packages/client/types/components/switch/runtime-docs.d.ts +1 -0
  123. package/packages/client/types/components/table/contract.d.ts +6 -5
  124. package/packages/client/types/components/tabs/index.d.ts +2 -1
  125. package/packages/client/types/components/tabs/machine.d.ts +2 -2
  126. package/packages/client/types/components/tabs/runtime-docs.d.ts +1 -0
  127. package/packages/client/types/components/textarea/contract.d.ts +1 -1
  128. package/packages/client/types/components/toast/machine.d.ts +2 -2
  129. package/packages/client/types/components/toast/runtime-docs.d.ts +1 -0
  130. package/packages/client/types/components/tooltip/contract.d.ts +13 -13
  131. package/packages/client/types/components/tooltip/machine.d.ts +3 -7
  132. package/packages/client/types/components/tooltip/runtime-docs.d.ts +1 -0
  133. package/packages/client/types/components/virtualizer/runtime-docs.d.ts +1 -0
  134. package/packages/client/types/core.d.ts +2 -0
  135. package/packages/client/types/directives/anchor.d.ts +27 -0
  136. package/packages/client/types/directives/animate.d.ts +3 -0
  137. package/packages/client/types/directives/collection.d.ts +9 -0
  138. package/packages/client/types/directives/index.d.ts +3 -2
  139. package/packages/client/types/docs/transition-docs.d.ts +0 -2
  140. package/packages/client/types/motion/animate.d.ts +7 -2
  141. package/packages/client/types/motion/config.d.ts +118 -0
  142. package/packages/client/types/motion/feedback.d.ts +3 -0
  143. package/packages/client/types/motion/index.d.ts +8 -107
  144. package/packages/client/types/motion/layout.d.ts +25 -0
  145. package/packages/client/types/motion/lifecycle.d.ts +10 -0
  146. package/packages/client/types/motion/owned.d.ts +15 -4
  147. package/packages/client/types/motion/properties.d.ts +17 -0
  148. package/packages/client/types/motion/recipe.d.ts +8 -75
  149. package/packages/client/types/motion/reduced-motion.d.ts +7 -8
  150. package/packages/client/types/motion/registry.d.ts +37 -0
  151. package/packages/client/types/motion/resize-preview.d.ts +26 -0
  152. package/packages/client/types/motion/resize.d.ts +3 -1
  153. package/packages/client/types/motion/size.d.ts +7 -4
  154. package/packages/client/types/runtime/anchored-popover.d.ts +14 -3
  155. package/packages/client/types/runtime/collection-navigation.d.ts +12 -4
  156. package/packages/client/types/runtime/control-size.d.ts +4 -0
  157. package/packages/client/types/runtime/drag-and-drop/index.d.ts +10 -3
  158. package/packages/client/types/runtime/drag-and-drop/sortable/ghost.d.ts +2 -1
  159. package/packages/client/types/runtime/engine/fragment.d.ts +2 -1
  160. package/packages/client/types/runtime/engine/stream.d.ts +5 -9
  161. package/packages/client/types/runtime/focus.d.ts +3 -1
  162. package/packages/client/types/runtime/index.d.ts +1 -1
  163. package/packages/client/types/runtime/layout-participant.d.ts +10 -9
  164. package/packages/client/types/runtime/layout-task.d.ts +9 -0
  165. package/packages/client/types/runtime/morph-engine.d.ts +1 -0
  166. package/packages/client/types/runtime/option-data.d.ts +2 -1
  167. package/packages/client/types/runtime/preferences.d.ts +14 -0
  168. package/packages/client/types/runtime/scroll-area-schema.d.ts +23 -0
  169. package/packages/client/types/runtime/ui.d.ts +3 -5
  170. package/packages/client/types/runtime/virtualizer-schema.d.ts +3 -1
  171. package/packages/client/types/runtime/virtualizer-size.d.ts +7 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js +2 -0
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js.map +1 -0
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +989 -1109
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-DXCLxWw-.js +2 -0
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-DXCLxWw-.js.map +1 -0
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor.js +2 -0
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js +2 -0
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js.map +1 -0
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection.js +2 -0
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-DlgeSL0c.js +2 -0
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{resizable-Ctqx_OoS.js.map → resizable-DlgeSL0c.js.map} +1 -1
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -2
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-Qa2EByIB.js +2 -0
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{shortcut-D2NgvMgw.js.map → shortcut-Qa2EByIB.js.map} +1 -1
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +2 -2
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-DQ4eUO2l.js → sortable-Do3a0LA9.js} +2 -2
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-DQ4eUO2l.js.map → sortable-Do3a0LA9.js.map} +1 -1
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -2
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js +2 -0
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js.map +1 -0
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js +2 -0
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js.map +1 -0
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js +2 -0
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js.map +1 -0
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bm1phXnj.js +5 -0
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bm1phXnj.js.map +1 -0
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js +2 -0
  200. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js.map +1 -0
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js +2 -0
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js.map +1 -0
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js +2 -0
  204. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js.map +1 -0
  205. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js +2 -0
  206. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js.map +1 -0
  207. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js +2 -0
  208. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js.map +1 -0
  209. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js +2 -0
  210. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js.map +1 -0
  211. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-zFOeeob-.js +6 -0
  212. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{element-adapter-native-data-key-DrqJDAVH.js.map → element-adapter-native-data-key-zFOeeob-.js.map} +1 -1
  213. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js +2 -0
  214. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js.map +1 -0
  215. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{anchored-popover-BwQbt4V2.js → floating-ui.dom-B05VsV_p.js} +2 -2
  216. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js.map +1 -0
  217. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js → focus-BvBkrIcj.js} +2 -2
  218. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js.map → focus-BvBkrIcj.js.map} +1 -1
  219. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DYfME-Rk.js +2 -0
  220. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-scope-BrYxsrhc.js.map → focus-scope-DYfME-Rk.js.map} +1 -1
  221. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js +2 -0
  222. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js.map +1 -0
  223. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js +2 -0
  224. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js.map +1 -0
  225. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js +2 -0
  226. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js.map +1 -0
  227. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js +2 -0
  228. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js.map +1 -0
  229. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js +2 -0
  230. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js.map +1 -0
  231. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js +2 -0
  232. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js.map +1 -0
  233. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js +2 -0
  234. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js.map +1 -0
  235. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js +2 -0
  236. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js.map +1 -0
  237. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js +2 -0
  238. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js.map +1 -0
  239. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js +2 -0
  240. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js.map +1 -0
  241. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preload-helper-BZ1Pz5am.js +1 -0
  242. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js +2 -0
  243. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js.map +1 -0
  244. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js +2 -0
  245. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js.map +1 -0
  246. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js +2 -0
  247. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js.map +1 -0
  248. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js +2 -0
  249. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js.map +1 -0
  250. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js +2 -0
  251. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js.map +1 -0
  252. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CQDZhwd_.js → styles-BvLCjUXV.js} +2 -2
  253. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-BvLCjUXV.js.map +1 -0
  254. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CZ7fEQL2.js +4 -0
  255. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CZ7fEQL2.js.map +1 -0
  256. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js +2 -0
  257. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js.map +1 -0
  258. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/warn-BbGtqbh1.js +2 -0
  259. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/warn-BbGtqbh1.js.map +1 -0
  260. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js +2 -0
  261. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js.map +1 -0
  262. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -2
  263. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js +2 -0
  264. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js.map +1 -0
  265. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -2
  266. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js +2 -0
  267. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js.map +1 -0
  268. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -2
  269. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Dm3rQfQ_.js +2 -0
  270. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Dm3rQfQ_.js.map +1 -0
  271. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -2
  272. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js +2 -0
  273. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js.map +1 -0
  274. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -2
  275. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js +2 -0
  276. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js.map +1 -0
  277. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -2
  278. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js +2 -0
  279. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js.map +1 -0
  280. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -2
  281. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js +2 -0
  282. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js.map +1 -0
  283. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -2
  284. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js +2 -0
  285. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js.map +1 -0
  286. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -2
  287. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js +2 -0
  288. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js.map +1 -0
  289. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -2
  290. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js +2 -0
  291. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js.map +1 -0
  292. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -2
  293. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js +2 -0
  294. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js.map +1 -0
  295. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -2
  296. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js +2 -0
  297. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js.map +1 -0
  298. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -2
  299. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js +2 -0
  300. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js.map +1 -0
  301. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -2
  302. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js +2 -0
  303. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js.map +1 -0
  304. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -2
  305. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js +2 -0
  306. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js.map +1 -0
  307. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -2
  308. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js +2 -0
  309. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js.map +1 -0
  310. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -2
  311. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js +2 -0
  312. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js.map +1 -0
  313. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -2
  314. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js +2 -0
  315. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js.map +1 -0
  316. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -2
  317. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js +2 -0
  318. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js.map +1 -0
  319. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -2
  320. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js +2 -0
  321. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js.map +1 -0
  322. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -2
  323. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js +2 -0
  324. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js.map +1 -0
  325. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -2
  326. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js +2 -0
  327. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js.map +1 -0
  328. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -2
  329. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js +2 -0
  330. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js.map +1 -0
  331. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -2
  332. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js +2 -0
  333. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js.map +1 -0
  334. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -2
  335. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js +2 -0
  336. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js.map +1 -0
  337. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -2
  338. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CX4J7tsN.js +2 -0
  339. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CX4J7tsN.js.map +1 -0
  340. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -2
  341. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +308 -429
  342. package/packages/theme-engine/README.md +273 -0
  343. package/packages/theme-engine/THEME_AUTHORING.md +78 -0
  344. package/packages/theme-engine/dist/trellis.js +17200 -0
  345. package/packages/theme-engine/fonts/fira-code/5.3.0/LICENSE +93 -0
  346. package/packages/theme-engine/fonts/fira-code/5.3.0/download.json +47 -0
  347. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  348. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  349. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  350. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  351. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  352. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  353. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  354. package/packages/theme-engine/fonts/fira-code/5.3.0/font.css +62 -0
  355. package/packages/theme-engine/fonts/fira-code/5.3.0/resource.json +82 -0
  356. package/packages/theme-engine/fonts/inter/5.3.0/LICENSE +93 -0
  357. package/packages/theme-engine/fonts/inter/5.3.0/download.json +47 -0
  358. package/packages/theme-engine/fonts/inter/5.3.0/font.css +62 -0
  359. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  360. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  361. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  362. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  363. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  364. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  365. package/packages/theme-engine/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  366. package/packages/theme-engine/fonts/inter/5.3.0/resource.json +82 -0
  367. package/packages/theme-engine/generated/knobs/v1/color-alpha.json +2426 -0
  368. package/packages/theme-engine/generated/knobs/v1/color-foundations.json +1582 -0
  369. package/packages/theme-engine/generated/knobs/v1/color-ink.json +6541 -0
  370. package/packages/theme-engine/generated/knobs/v1/color-lighting.json +3056 -0
  371. package/packages/theme-engine/generated/knobs/v1/color-normalization.json +1685 -0
  372. package/packages/theme-engine/generated/knobs/v1/color-ramps.json +14304 -0
  373. package/packages/theme-engine/generated/knobs/v1/composition.json +881 -0
  374. package/packages/theme-engine/generated/knobs/v1/depth.json +1705 -0
  375. package/packages/theme-engine/generated/knobs/v1/edges.json +326 -0
  376. package/packages/theme-engine/generated/knobs/v1/index.json +20409 -0
  377. package/packages/theme-engine/generated/knobs/v1/manifest.json +683 -0
  378. package/packages/theme-engine/generated/knobs/v1/radii.json +380 -0
  379. package/packages/theme-engine/generated/knobs/v1/semantic-actions.json +1814 -0
  380. package/packages/theme-engine/generated/knobs/v1/semantic-disabled.json +759 -0
  381. package/packages/theme-engine/generated/knobs/v1/semantic-disclosure.json +59 -0
  382. package/packages/theme-engine/generated/knobs/v1/semantic-intents.json +5660 -0
  383. package/packages/theme-engine/generated/knobs/v1/semantic-scrim.json +308 -0
  384. package/packages/theme-engine/generated/knobs/v1/semantic-selection.json +940 -0
  385. package/packages/theme-engine/generated/knobs/v1/semantic-structure.json +365 -0
  386. package/packages/theme-engine/generated/knobs/v1/sizing-anatomy.json +3112 -0
  387. package/packages/theme-engine/generated/knobs/v1/sizing-controls.json +599 -0
  388. package/packages/theme-engine/generated/knobs/v1/sizing-measures.json +1089 -0
  389. package/packages/theme-engine/generated/knobs/v1/spacing.json +1246 -0
  390. package/packages/theme-engine/generated/knobs/v1/substrates.json +315 -0
  391. package/packages/theme-engine/generated/knobs/v1/surfaces.json +870 -0
  392. package/packages/theme-engine/generated/knobs/v1/typography-anatomy.json +1754 -0
  393. package/packages/theme-engine/generated/knobs/v1/typography-fonts.json +829 -0
  394. package/packages/theme-engine/generated/knobs/v1/typography-scale.json +329 -0
  395. package/packages/theme-engine/generated/schemas/theme-config-v1.json +4008 -0
  396. package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +52 -0
  397. package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +107 -0
  398. package/packages/client/src/components/app/styles.css +0 -1
  399. package/packages/client/src/components/brand/styles.css +0 -8
  400. package/packages/client/src/styles/motion.css +0 -26
  401. package/packages/client/src/styles/static.css +0 -4
  402. package/packages/client/types/assets/full-runtime.generated.d.ts +0 -2
  403. package/packages/client/types/capabilities/motion.d.ts +0 -6
  404. package/packages/client/types/capabilities/motion.entry.generated.d.ts +0 -3
  405. package/packages/client/types/cdn.d.ts +0 -2
  406. package/packages/client/types/components/entry.generated.d.ts +0 -36
  407. package/packages/client/types/components/runtime-docs.d.ts +0 -2
  408. package/packages/client/types/directives/bounds.d.ts +0 -4
  409. package/packages/client/types/directives/layout.d.ts +0 -3
  410. package/packages/client/types/index.d.ts +0 -8
  411. package/packages/client/types/motion/bounds.d.ts +0 -20
  412. package/packages/client/types/motion/controller.d.ts +0 -33
  413. package/packages/client/types/motion/flip.d.ts +0 -14
  414. package/packages/client/types/motion/plan.d.ts +0 -52
  415. package/packages/client/types/motion/stream.d.ts +0 -18
  416. package/packages/client/types/motion/targets.d.ts +0 -23
  417. package/packages/client/types/motion/view.d.ts +0 -27
  418. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-a1130be0a833.css +0 -14030
  419. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +0 -14030
  420. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-d053936d467f.css +0 -2
  421. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +0 -2
  422. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +0 -1
  423. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-B0MINJTL.js +0 -2
  424. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-B0MINJTL.js.map +0 -1
  425. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +0 -2
  426. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +0 -2
  427. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +0 -2
  428. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js +0 -2
  429. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js.map +0 -1
  430. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js.map +0 -1
  431. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js +0 -2
  432. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js.map +0 -1
  433. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-D_BJBnwB.js +0 -2
  434. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-D_BJBnwB.js.map +0 -1
  435. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js +0 -2
  436. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js.map +0 -1
  437. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +0 -2
  438. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +0 -1
  439. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BDbURlVO.js +0 -5
  440. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BDbURlVO.js.map +0 -1
  441. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +0 -2
  442. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +0 -1
  443. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +0 -2
  444. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +0 -1
  445. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js +0 -2
  446. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +0 -1
  447. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-Ybm_WmKr.js +0 -2
  448. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-Ybm_WmKr.js.map +0 -1
  449. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +0 -2
  450. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +0 -1
  451. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +0 -2
  452. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +0 -1
  453. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js +0 -6
  454. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2YvnuzOD.js +0 -2
  455. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2YvnuzOD.js.map +0 -1
  456. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B986Ob4f.js +0 -2
  457. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B986Ob4f.js.map +0 -1
  458. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +0 -2
  459. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +0 -1
  460. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BITa8xFV.js +0 -2
  461. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BITa8xFV.js.map +0 -1
  462. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js +0 -2
  463. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js.map +0 -1
  464. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BSVJpGWu.js +0 -2
  465. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BSVJpGWu.js.map +0 -1
  466. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +0 -2
  467. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +0 -1
  468. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js +0 -2
  469. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js.map +0 -1
  470. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js +0 -2
  471. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +0 -1
  472. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js +0 -2
  473. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js.map +0 -1
  474. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +0 -2
  475. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +0 -1
  476. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js +0 -2
  477. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js.map +0 -1
  478. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +0 -2
  479. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +0 -1
  480. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ChoqPigj.js +0 -2
  481. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ChoqPigj.js.map +0 -1
  482. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CqtsPVJy.js +0 -2
  483. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CqtsPVJy.js.map +0 -1
  484. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js +0 -2
  485. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +0 -1
  486. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDrayI_M.js +0 -2
  487. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDrayI_M.js.map +0 -1
  488. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +0 -2
  489. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +0 -1
  490. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js +0 -2
  491. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js.map +0 -1
  492. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js +0 -2
  493. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js.map +0 -1
  494. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js +0 -2
  495. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js.map +0 -1
  496. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-OT_bt7F2.js +0 -2
  497. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-OT_bt7F2.js.map +0 -1
  498. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-WRveW7p9.js +0 -2
  499. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-WRveW7p9.js.map +0 -1
  500. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dcqwycC7.js +0 -2
  501. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dcqwycC7.js.map +0 -1
  502. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js +0 -2
  503. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js.map +0 -1
  504. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +0 -2
  505. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +0 -1
  506. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-crNQSZEa.js +0 -2
  507. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-crNQSZEa.js.map +0 -1
  508. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +0 -2
  509. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js +0 -2
  510. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js.map +0 -1
  511. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js +0 -2
  512. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js.map +0 -1
  513. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-B90yNOaV.js +0 -3
  514. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-B90yNOaV.js.map +0 -1
  515. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js +0 -2
  516. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +0 -1
  517. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +0 -1
  518. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js +0 -4
  519. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js.map +0 -1
  520. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-CKh9jOQc.js +0 -1
  521. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +0 -1
  522. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +0 -1
  523. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-DHqf4lhn.js +0 -1
  524. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-DhNrvLv7.js +0 -1
  525. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +0 -1
  526. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-CDPdgATy.js +0 -1
  527. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +0 -1
  528. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +0 -1
  529. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +0 -1
  530. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +0 -1
  531. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DzOKmgfj.js +0 -2
  532. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DzOKmgfj.js.map +0 -1
  533. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +0 -2
  534. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +0 -1
  535. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +0 -1
  536. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-1D2WtmlK.js +0 -1
  537. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-BXtMr9cv.js +0 -1
  538. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +0 -1
  539. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +0 -1
  540. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-B_b2uwfv.js +0 -1
  541. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-D8y44c-J.js +0 -1
  542. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +0 -1
  543. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +0 -1
  544. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +0 -1
  545. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CBjcV5_z.js +0 -1
  546. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DSduFsxK.js +0 -1
  547. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-B3vA5YAi.js +0 -1
  548. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +0 -1
  549. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CRIj89v5.js +0 -1
  550. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-CL7BWKcd.js +0 -2
  551. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-CL7BWKcd.js.map +0 -1
  552. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +0 -2
  553. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-acc1b62a38b1.js +0 -11
  554. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +0 -11
  555. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-acc1b62a38b1.js +0 -11
  556. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +0 -11
@@ -0,0 +1,273 @@
1
+ # Trellis Theme Engine
2
+
3
+ The theme engine is a deterministic compiler from a materialized JSON `ThemeConfig` to Tailwind CSS. It encodes
4
+ brand relationships once so components and custom Tailwind compositions stay in sync. A validated
5
+ [DTCG 2025.10](https://www.designtokens.org/TR/2025.10/) document carries tokens between generation and serialization.
6
+
7
+ ## Top-down model
8
+
9
+ ```mermaid
10
+ flowchart TD
11
+ base["Base ThemeConfig<br/>validated authored JSON"] --> materialize["materializeTheme<br/>apply ordered atomic commits"]
12
+ commits["Theme Patch Commits<br/>RFC 6902 add · remove · replace"] --> materialize
13
+ materialize --> config["Materialized ThemeConfig<br/>complete authored compiler input"]
14
+
15
+ config --> entry["generateTheme<br/>public compiler entry"]
16
+ config --> knobs["createThemeKnobCatalog<br/>generated authoring read model"]
17
+ entry --> resolve["generateColorTheme → resolveThemeConfig<br/>validate, merge baselines, parse, and record provenance"]
18
+ resolve --> resolved["ResolvedThemeConfig<br/>one explicit and internally consistent specification"]
19
+
20
+ resolved --> color["Color branch<br/>canvas, families, surfaces, depth, semantics"]
21
+ color --> colorTheme["GeneratedColorTheme<br/>color must succeed before the remaining axes run"]
22
+ colorTheme --> composition["Composition<br/>breakpoints, grids, shell"]
23
+ colorTheme --> edge["Edge<br/>line weights and anatomy roles"]
24
+ colorTheme --> radius["Radius<br/>scale and anatomy roles"]
25
+ colorTheme --> spacing["Spacing<br/>progressive fluid scale and anatomy aliases"]
26
+ colorTheme --> typography["Typography<br/>families, type scale, and text roles"]
27
+ colorTheme --> sizing["Sizing<br/>controls, icons, measures, and component anatomy"]
28
+
29
+ colorTheme --> generated["GeneratedTheme<br/>values, dependencies, diagnostics, and fingerprint"]
30
+ composition --> generated
31
+ edge --> generated
32
+ radius --> generated
33
+ spacing --> generated
34
+ typography --> generated
35
+ sizing --> generated
36
+
37
+ generated --> validate["validateGeneratedTheme<br/>reject broken generated relationships"]
38
+ validate --> tokens["generateDesignTokens<br/>DTCG 2025.10 resolver document"]
39
+ tokens --> serialize["Tailwind serialization<br/>consume tokens, never compiler internals"]
40
+ serialize --> artifacts["CSS artifacts<br/>palette · runtime · fonts"]
41
+ artifacts --> recipes["theme.css recipes<br/>map semantic tokens onto component states"]
42
+ recipes --> components["Trellis components and custom Tailwind UI"]
43
+ ```
44
+
45
+ `ResolvedThemeConfig` separates authored intent from computed relationships. The internal token document separates
46
+ theme generation from Tailwind serialization. CSS serialization only consumes that document.
47
+
48
+ The Theme Knob Catalog is a separate generated read model of the authored configuration boundary. It derives paths,
49
+ constraints, concrete authored/compiler defaults, required parents, and repeated-path parameters from
50
+ `ThemeConfigSchema`, then layers semantic search metadata from one definition file. Human and agent interfaces
51
+ consume the same versioned JSON catalog and produce ordinary Theme Patch Commits; the catalog is never another
52
+ configuration source.
53
+
54
+ ## What each stage owns
55
+
56
+ ### 1. Revision materialization
57
+
58
+ `compileTheme` is the hardened public path from a base plus patch history to a materialized config and validated token
59
+ document. It composes the stages below without exposing generated compiler internals to Tailwind serialization.
60
+
61
+ `materializeTheme` starts from a base `ThemeConfig` and applies ordered commits. A commit is an atomic batch of the
62
+ RFC 6902 `add`, `remove`, and `replace` operations. Theme patches may replace existing array members but cannot change
63
+ array membership. The result is validated against `ThemeConfigSchema`; storage, branches, heads, and snapshots remain
64
+ outside the compiler.
65
+
66
+ ### 2. Authored configuration
67
+
68
+ `ThemeConfig` is the language-agnostic authoring boundary. Each axis selects a named, versioned strategy and may
69
+ override the baseline without requiring component-specific tokens.
70
+
71
+ `createThemeKnobCatalog` walks that boundary and exposes every non-constant leaf as a Theme Knob. Fixed tuples and
72
+ dynamic records use parameterized JSON Pointer paths so the catalog remains searchable without hiding low-level
73
+ control or duplicating every possible instance. Repeated schema branches retain their concrete defaults as values
74
+ keyed by parameter bindings. Generated files live under `generated/knobs/v1/`, split into semantic groups organized
75
+ under each axis. A small `manifest.json` exposes axes, groups, escalation tiers, impact scopes, and counts without
76
+ embedding knob records. `index.json` supports deterministic search without loading full group documents.
77
+
78
+ Discovery is progressive: call `listThemeKnobGroups`, then `searchThemeKnobs`, then `getThemeKnobs` only for selected
79
+ paths. Search includes Primary and Tuning knobs by default. Expert and Escape Hatch knobs require an explicit tier
80
+ filter; exact authored palette steps are Escape Hatches rather than ordinary color controls. Interfaces should prefer
81
+ the minimum sufficient leaf mutations, compile the result, and escalate only when broader controls are insufficient.
82
+
83
+ ### 3. Resolution
84
+
85
+ `resolveThemeConfig` validates the schema, fills omitted values from `defaults.ts`, parses colors, and validates all
86
+ references. It also records whether every resolved value came from authored config or a default.
87
+
88
+ ### 4. Generation
89
+
90
+ `generateTheme` completes color first, then gives the remaining axes their resolved configuration and combines the
91
+ results. Cross-axis work stays in the orchestrator; for example, surface shadows consume generated color and resolved
92
+ depth.
93
+
94
+ ### 5. Validation and token projection
95
+
96
+ Generated values are validated before `generateDesignTokens` projects them into a DTCG 2025.10 Resolver Document.
97
+ Invariant tokens form one set and light/dark appearances form an `appearance` modifier. Standard DTCG types represent
98
+ colors, dimensions, numbers, font families, weights, and shadows. Namespaced `dev.trellis` extensions retain
99
+ fluid relationships, unsupported CSS units, font resources, and Tailwind registration metadata without changing token values.
100
+
101
+ ### 6. Tailwind serialization
102
+
103
+ `serializeThemeArtifacts` and `serializeThemeCss` consume only the DTCG document. They produce named resources,
104
+ palette, and runtime artifacts with Tailwind registrations and deterministic fingerprints. Theme Workspaces emit
105
+ Tailwind CSS directly; each entry in `outputs` supplies only a `path`, with no output format selection.
106
+
107
+ ### 7. Component consumption
108
+
109
+ `packages/client/src/styles/theme.css` imports the generated artifacts and defines shared recipes such as actions,
110
+ fields, options, and selections. Component code chooses semantic roles; it does not reproduce theme math.
111
+
112
+ ## Inside the color branch
113
+
114
+ Each appearance and family follows the same ordered pipeline. Later steps are allowed to constrain earlier requests,
115
+ but every adjustment is retained in diagnostics rather than silently hidden.
116
+
117
+ ```mermaid
118
+ flowchart TD
119
+ source["Family source<br/>seed + anchor, or 12 authored steps"] --> ramp["Functional curve<br/>build the 12-step candidate ramp"]
120
+ canvas["Appearance canvas<br/>light or dark"] --> lighting["Canvas-relative lighting<br/>adapt quiet steps to their substrate"]
121
+ ramp --> lighting
122
+ lighting --> normalize["Constraint-priority normalization<br/>balance order, contrast, seed fidelity, and smoothness"]
123
+ normalize --> fit["Solid-ink fitting<br/>make solid backgrounds pairable"]
124
+ fit --> canonical["Canonical color<br/>retain one OKLCH value"]
125
+ canonical --> proof["sRGB proof<br/>delegate CSS gamut mapping to Color.js"]
126
+ proof --> ink["Accessible ink pairing<br/>attach regular, subtle, and muted inks"]
127
+ proof --> alpha["Substrate alpha fitting<br/>derive translucent steps across known substrates"]
128
+ ink --> family["Generated family<br/>opaque color + inks + alpha for every step"]
129
+ alpha --> family
130
+
131
+ family --> surfaces["Surface ladder<br/>canvas + neutral/accent influence + depth layers"]
132
+ canvas --> surfaces
133
+ surfaces --> semantics["Semantic graph<br/>structure, intents, interactions, selection, disabled, scrim"]
134
+ family --> semantics
135
+ ```
136
+
137
+ The 12-step families are primitives, not component colors. Semantic roles select from those families, and surface
138
+ levels provide the actual substrates against which alpha colors, inks, and shadows are evaluated.
139
+
140
+ Solid semantic roles also calibrate `separation.hover.{light,dark}` and `separation.pressed.{light,dark}` as minimum
141
+ perceptual distances from rest. The generator follows the authored state direction when contrast permits, then favors
142
+ the contrast-safe direction.
143
+
144
+ Selection foregrounds use the family's existing ink contrast policy against both selected and selected-hover fills
145
+ over every workspace and chrome level. Readable authored ink is preserved; otherwise the shared ink solver fits it.
146
+ This proof uses browser sRGB alpha compositing, while perceptual overlay calibration retains its linear-light math.
147
+ The compiler reports adjustments and rejects treatments that cannot meet the minimum under the pairing policy.
148
+
149
+ Colored soft treatments share their family's step 9 at 10%, 15%, and 20% opacity for rest, hover, and pressed.
150
+ Neutral soft treatments retain quiet alpha steps. `semantic.roles.intents.<intent>.soft.strength` can override each
151
+ state with an opacity or the existing `minimum-delta-e` calibration; the same contrast proof fits readable soft inks
152
+ across every generated surface. Components consume these shared treatments rather than mixing their own tints.
153
+
154
+ ## Generated relationship tree
155
+
156
+ | Branch | Generates | Downstream consumers |
157
+ | --- | --- | --- |
158
+ | Color families | Canonical OKLCH steps, alpha steps, accessible inks, sRGB proofs | Surfaces and semantic roles |
159
+ | Surfaces + depth | Levels `0–8`, paired surface inks, calibrated local edges, elevation shadows | Panels, overlays, cards, app regions |
160
+ | Semantic roles | Text, soft, solid, edge, focus, interaction, selection, disabled attenuation, scrim | Shared component recipes |
161
+ | Edge | Width scale and perimeter/control/separator/divider aliases | Rings, dividers, shadow spreads |
162
+ | Radius | Six-step curve and control/surface/overlay aliases | Component shape choices |
163
+ | Spacing | Half-step `0–12` scale and anatomy dependencies | Gaps and padding |
164
+ | Typography | Font resources, 13 type steps, weights, anatomy dependencies | Text and control typography |
165
+ | Sizing | Bounded lengths for controls, icons, component anatomy, and measures | Component geometry |
166
+ | Composition | Breakpoints, responsive column maps, shell breakpoint | Page and layout recipes |
167
+
168
+ ## Shipped default at a glance
169
+
170
+ | Axis | Default relationship |
171
+ | --- | --- |
172
+ | Canvas | `#fafafa` light and `#171717` dark |
173
+ | Core families | Neutral `#737373`; accent and information `#0090ff` |
174
+ | Status families | Success `#30a46c`, warning `#ffc53d`, danger `#e5484d` |
175
+ | Color output | Canonical OKLCH values with an sRGB proof for accessibility and compositing |
176
+ | Surfaces | Nine levels from canvas through progressively stronger neutral depth, with very restrained accent influence |
177
+ | Semantics | Crisp `1px` focus; quiet neutral selection and action layers; disabled controls preserve their treatment at `50%` opacity |
178
+ | Edges | `0 / 1 / 2 / 4px`; every default anatomy role uses the `1px` step, while edge color is calibrated against the active substrate and surface |
179
+ | Radius | `1 / 2.5 / 4 / 6 / 8 / 10.5px`; control `4px`, surface `6px`, overlay `8px` |
180
+ | Spacing | `4px` foundation; compact through step `4`, then gently fluid from `320–1440px` |
181
+ | Controls | Fixed `20 / 24 / 28 / 32 / 36px` heights from `xs` through `xlg` |
182
+ | Typography | Inter for UI, Fira Code for code; body/control defaults are mostly `14px`, with a 13-step display scale |
183
+ | Composition | `640 / 768 / 1024 / 1280 / 1536px` breakpoints; sidebars enter at `lg` |
184
+
185
+ The default is deliberately neutral, compact, and low-chroma at rest. Blue carries selection and primary emphasis,
186
+ while surface elevation and interaction layers do most of the structural work.
187
+
188
+ ## Principles
189
+
190
+ - Patch history, authored config, resolved config, generated relationships, design tokens, output artifacts, and
191
+ component recipes are separate layers.
192
+ - Axes such as color, surface, depth, edge, radius, spacing, typography, sizing, and composition remain independently
193
+ tunable. Presets may coordinate them.
194
+ - Tailwind serialization consumes validated tokens; components consume serialized tokens and anatomy relationships. Neither reads
195
+ config nor repeats generation math.
196
+ - Generated tokens extend familiar Tailwind syntax. Do not replace foundations such as the base `--spacing` value.
197
+ - Shared bounded-fluid math may support several axes, but it does not create one universal public length scale.
198
+ - The same resolved config must produce the same light/dark output, diagnostics, provenance, fingerprint, and CSS.
199
+
200
+ Avoid personality or use-case god knobs, component-named tokens, downstream theme literals, silent coercion, and
201
+ per-breakpoint configuration matrices. Fix systemic visual defects upstream so every composition benefits.
202
+
203
+ ## Where to look
204
+
205
+ | Need | Location |
206
+ | --- | --- |
207
+ | Public compiler API | `src/compile-theme.ts`, `src/index.ts` |
208
+ | Patch commits and materialization | `src/materialize-theme.ts` |
209
+ | Authored schema | `src/schema/theme-config.ts` |
210
+ | Packaged Theme Config schema | `generated/schemas/theme-config-v1.json` |
211
+ | Packaged Theme Workspace schema | `generated/schemas/theme-manifest-v1.json` |
212
+ | Theme knob factory and metadata | `src/knobs/` |
213
+ | Generated knob JSON | `generated/knobs/v1/` |
214
+ | Agent theme-authoring skill | `skills/create-trellis-theme/SKILL.md` |
215
+ | Defaults and shipped preset | `src/defaults.ts`, `src/presets/trellis-default.ts` |
216
+ | Resolution, validation, provenance | `src/resolve-theme-config.ts`, `src/validate-*.ts` |
217
+ | Complete orchestration | `src/orchestrator.ts` |
218
+ | Axis math | `src/color/`, `src/edge/`, `src/radius/`, `src/spacing/`, `src/typography/`, `src/sizing/`, `src/composition/` |
219
+ | Shared fluid primitive | `src/fluid/bounded.ts` |
220
+ | DTCG token projection | `src/design-tokens/` |
221
+ | CSS and Tailwind output | `src/serialize/` |
222
+ | Default CSS build | `scripts/generate-default-css.mjs` |
223
+ | Boundary tests | `../../tests/client/theme-engine/` |
224
+
225
+ When changing an axis, move its schema, defaults, resolution, focused generator, generated types, serialization, and
226
+ boundary tests together. Add cross-axis coordination only in orchestration. Never hand-edit `dist/` or
227
+ `packages/client/src/styles/generated/`.
228
+
229
+ ## Dismiss control radius
230
+
231
+ `radius.dismiss` selects the shared shape of standalone Card, Modal, and Toast dismiss controls. It defaults to
232
+ `"full"`; use `"none"` for square corners or a radius-scale step (`1`–`6`) to follow the generated curve. Badge removal
233
+ retains its compact badge anatomy. The token `radius.role.dismiss` aliases the chosen primitive and emits
234
+ `--radius-dismiss` (`rounded-dismiss` in Tailwind); ordinary control, surface, and overlay radius roles stay independent.
235
+
236
+ ```json
237
+ {
238
+ "message": "Use the second radius step for dismiss controls",
239
+ "operations": [{"op": "add", "path": "/radius/dismiss", "value": 2}]
240
+ }
241
+ ```
242
+
243
+ ## Fonts through theme commits
244
+
245
+ Font selection is part of the Theme Config and JSONL commit history. The shipped default uses pinned Fontsource
246
+ resources for Inter (weight and optical size) and Fira Code. No separate font command or manual face copying is needed.
247
+
248
+ ```json
249
+ {
250
+ "message": "Use Inter locally",
251
+ "operations": [{
252
+ "op": "replace",
253
+ "path": "/typography/resources/brand",
254
+ "value": {"type": "fontsource", "id": "inter", "version": "5.3.0"}
255
+ }]
256
+ }
257
+ ```
258
+
259
+ Use `trellis theme apply <manifest> <commit>` as usual. Apply and build prepare missing font dependencies, preserve
260
+ licenses and source hashes, validate available families and weights, and publish local stylesheets and font files
261
+ under the workspace's `fonts/<id>/<version>/` directory. The compiler performs no network or file IO; its generated
262
+ font references follow the same declarative resource identity. Font resource knobs are Primary authoring controls.
263
+
264
+ Fontsource selection prefers variable fonts with all available axes and includes supported styles and language
265
+ subsets. Static-only families use all catalog weights. An exact package version is required. When changing fonts,
266
+ update the corresponding `typography.families` binding in the same commit. Custom application-owned fonts use `local`
267
+ resources; `bunny` resources explicitly opt into CDN loading through the same theme workflow.
268
+
269
+ The bundled defaults require no network. Other fonts download on first apply/build and are reused locally thereafter.
270
+ Build planning and `theme check` never download or write; they report missing or stale assets. A failed acquisition
271
+ leaves the commit log and generated outputs unchanged. Deploy the generated CSS and workspace fonts together; paths
272
+ are calculated relative to each output, including nested output directories. Keep acquired assets under source control
273
+ for offline builds. Older versions may remain for rollback; active references come only from the materialized theme.
@@ -0,0 +1,78 @@
1
+ # Theme authoring
2
+
3
+ A Theme Workspace is one source-controlled theme. Pass its `theme.json` explicitly; separate workspaces never share
4
+ implicit state. Keep `base.json` complete and append one coherent `ThemePatchCommit` per line to `commits.jsonl`.
5
+
6
+ Theme Workspaces produce Tailwind CSS. The manifest's `outputs` entries specify CSS paths directly:
7
+
8
+ ```json
9
+ {"outputs": [{"path": "./generated/theme.css"}]}
10
+ ```
11
+
12
+ Import the generated CSS into the application's Tailwind 4 stylesheet. There is no output format selection.
13
+
14
+ Resource paths in this guide are relative to the authoring resource root: the directory containing this file and
15
+ `generated/`. In the Trellis repository, that directory is `packages/theme-engine/`.
16
+
17
+ The versioned Theme Config JSON Schema is at `generated/schemas/theme-config-v1.json` with the stable `$id`
18
+ `https://trellis.build/schemas/theme-config-v1.json`. A config may use any string in its own `$schema` property as
19
+ optional editor metadata. The compiler neither requires nor inserts that property, and it does not affect resolved
20
+ theme semantics or fingerprints.
21
+
22
+ For agent-assisted changes, inspect `generated/knobs/v1/manifest.json` or `index.json` before opening a semantic group.
23
+ Search Primary and Tuning knobs first. Use Expert or Escape Hatch knobs only when broader controls cannot express the
24
+ request, and prefer the smallest sufficient set of leaf operations. The catalog is a read model, not theme state.
25
+
26
+ Write exactly one commit object to a normal JSON file, then run:
27
+
28
+ ```console
29
+ npm exec --no -- trellis theme apply path/to/theme.json path/to/commit.json
30
+ ```
31
+
32
+ This consumer command requires the packaged CLI to be installed locally. In the Trellis repository, use
33
+ `pnpm trellis theme apply path/to/theme.json path/to/commit.json` instead.
34
+
35
+ Inspect the generated artifact and Git diff. Use `theme build` to regenerate selected outputs and `theme check` for a
36
+ read-only byte comparison. Git owns attribution, branches, merges, rollback, and review; Trellis does not maintain a
37
+ second revision graph.
38
+
39
+ ## Enable the authoring skill
40
+
41
+ The authoring resources include `skills/create-trellis-theme/SKILL.md`. Register that folder with your agent's skill
42
+ discovery mechanism, or copy the `create-trellis-theme` folder into its configured skill directory. Installing the npm
43
+ package alone does not enable the skill. Keep the Trellis package installed in the project: the skill reads its
44
+ authoring guide, schemas, and knob catalog. A copied skill should be refreshed when upgrading Trellis.
45
+
46
+ Invoke `create-trellis-theme` with the intended workspace and design direction, for example: “Use
47
+ create-trellis-theme to make the application theme denser with a muted green accent.”
48
+
49
+ Theme Patch Commits should not add or remove `$schema` merely to express a design change.
50
+
51
+ If `apply` reports that the Theme Commit Log changed concurrently, reload the workspace source and retry the intended
52
+ commit. Trellis preserves the external change rather than guessing an ordering or merging commits automatically.
53
+
54
+ ## Font selection
55
+
56
+ Discover `/typography/resources/**` in the font knob catalog and select fonts through an ordinary theme commit:
57
+
58
+ ```json
59
+ {
60
+ "message": "Use Inter locally",
61
+ "operations": [{
62
+ "op": "replace",
63
+ "path": "/typography/resources/brand",
64
+ "value": {"type": "fontsource", "id": "inter", "version": "5.3.0"}
65
+ }]
66
+ }
67
+ ```
68
+
69
+ Apply it with `trellis theme apply <manifest> <commit>`. Fontsource resources use a catalog ID and exact package
70
+ version, prefer variable fonts with their available axes, and are served locally. Update the matching
71
+ `typography.families` binding in the same commit when selecting another family. Faces, filenames, licenses, hashes,
72
+ and local stylesheets are prepared by apply/build; they are not authored into the JSONL history.
73
+
74
+ The bundled Inter and Fira Code defaults work offline. Apply/build acquire missing fonts once and reuse cached assets;
75
+ `theme check` and build planning never download or modify files. Download failures preserve the history and outputs.
76
+ Commit acquired `fonts/` assets for reproducible offline builds and deploy them with the generated CSS. A `bunny`
77
+ resource explicitly selects CDN loading; application-owned font files use a `local` resource. All selections follow
78
+ the same theme commit workflow.