@vireo-ai/trellis-ui 0.1.59 → 0.1.61

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 (239) hide show
  1. package/README.md +0 -1
  2. package/THIRD_PARTY_NOTICES.md +2 -0
  3. package/package.json +49 -40
  4. package/packages/client/src/components/field/styles.css +2 -1
  5. package/packages/client/src/styles/components.css +1 -0
  6. package/packages/client/src/styles/static.css +0 -1
  7. package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
  8. package/packages/client/types/capabilities/anchor.d.ts +7 -0
  9. package/packages/client/types/capabilities/anchor.entry.generated.d.ts +3 -0
  10. package/packages/client/types/components/accordion/runtime-docs.d.ts +1 -0
  11. package/packages/client/types/components/checkbox/runtime-docs.d.ts +1 -0
  12. package/packages/client/types/components/data-grid/runtime-docs.d.ts +1 -0
  13. package/packages/client/types/components/date-picker/runtime-docs.d.ts +1 -0
  14. package/packages/client/types/components/direct-upload/runtime-docs.d.ts +1 -0
  15. package/packages/client/types/components/dropdown/runtime-docs.d.ts +1 -0
  16. package/packages/client/types/components/entry.generated.d.ts +1 -0
  17. package/packages/client/types/components/field/runtime-docs.d.ts +1 -0
  18. package/packages/client/types/components/file-upload/index.d.ts +3 -2
  19. package/packages/client/types/components/file-upload/runtime-docs.d.ts +1 -0
  20. package/packages/client/types/components/formset/runtime-docs.d.ts +1 -0
  21. package/packages/client/types/components/image/contract.d.ts +1 -1
  22. package/packages/client/types/components/modal/runtime-docs.d.ts +1 -0
  23. package/packages/client/types/components/panels/runtime-docs.d.ts +1 -0
  24. package/packages/client/types/components/radio/runtime-docs.d.ts +1 -0
  25. package/packages/client/types/components/scroll-area/runtime-docs.d.ts +1 -0
  26. package/packages/client/types/components/select/index.d.ts +3 -2
  27. package/packages/client/types/components/select/runtime-docs.d.ts +1 -0
  28. package/packages/client/types/components/sidebar/runtime-docs.d.ts +1 -0
  29. package/packages/client/types/components/slider/runtime-docs.d.ts +1 -0
  30. package/packages/client/types/components/switch/runtime-docs.d.ts +1 -0
  31. package/packages/client/types/components/tabs/runtime-docs.d.ts +1 -0
  32. package/packages/client/types/components/toast/runtime-docs.d.ts +1 -0
  33. package/packages/client/types/components/tooltip/runtime-docs.d.ts +1 -0
  34. package/packages/client/types/components/virtualizer/runtime-docs.d.ts +1 -0
  35. package/packages/client/types/directives/anchor.d.ts +26 -0
  36. package/packages/client/types/directives/index.d.ts +1 -0
  37. package/packages/client/types/runtime/anchored-popover.d.ts +4 -2
  38. package/packages/client/types/runtime/item-template.d.ts +13 -0
  39. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-103fb43eb5e1.css +14030 -0
  40. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +23 -23
  41. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-584dec82495c.css +2 -0
  42. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +1 -0
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +386 -346
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-B-CbpFFU.js +2 -0
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-B-CbpFFU.js.map +1 -0
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor.js +2 -0
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js +2 -0
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js.map +1 -0
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +2 -2
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +2 -0
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js.map +1 -0
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -2
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +2 -0
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js.map +1 -0
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +2 -2
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CbIOS4Lm.js +2 -0
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CbIOS4Lm.js.map +1 -0
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -2
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js +2 -0
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js.map +1 -0
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js +2 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-D_BJBnwB.js.map → capability-motion-B32HePGn.js.map} +1 -1
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js +5 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-BDbURlVO.js.map → capability-sortable-Bl6ng6Hd.js.map} +1 -1
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +1 -1
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js +2 -0
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-Ybm_WmKr.js.map → core-BxNepYBE.js.map} +1 -1
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js +2 -0
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js.map +1 -0
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DDrayI_M.js → entry.generated-BRaKxvab.js} +2 -2
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DDrayI_M.js.map → entry.generated-BRaKxvab.js.map} +1 -1
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-OT_bt7F2.js → entry.generated-BzLNUDzF.js} +2 -2
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js.map +1 -0
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js +2 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js +2 -0
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js.map +1 -0
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BgGSoQFS.js → entry.generated-Cbyseoex.js} +2 -2
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js.map +1 -0
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js +2 -0
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js.map +1 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +1 -1
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js +2 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js.map +1 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-dcqwycC7.js → entry.generated-Ct9H8Hlf.js} +2 -2
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js.map +1 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +1 -1
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +2 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js +2 -0
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js.map +1 -0
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-crNQSZEa.js → flip-BKThFI4L.js} +2 -2
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-crNQSZEa.js.map → flip-BKThFI4L.js.map} +1 -1
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/item-template-DSfME41Q.js +2 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/item-template-DSfME41Q.js.map +1 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-B90yNOaV.js → motion-RwlK04Cy.js} +2 -2
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-B90yNOaV.js.map → motion-RwlK04Cy.js.map} +1 -1
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +1 -1
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-CTQoglp3.js → ui-Bg44ZmC3.js} +4 -4
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js.map +1 -0
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/warn-BbGtqbh1.js +2 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/warn-BbGtqbh1.js.map +1 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DpoqsP_I.js +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -1
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -1
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +1 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -1
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-CCPYnOuT.js +1 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -1
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-BCkP5gtC.js +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -1
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +1 -0
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -1
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-Cc84envj.js +1 -0
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -1
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +1 -0
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -1
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +1 -0
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -1
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +1 -0
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -1
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +1 -0
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -1
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js +2 -0
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js.map +1 -0
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +2 -2
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +1 -0
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +1 -0
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-MUHGUsup.js +1 -0
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -1
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-DNAroAhk.js +1 -0
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -1
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +1 -0
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -1
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +1 -0
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -1
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-BjLF548F.js +1 -0
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -1
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-GpvEBW3K.js +1 -0
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -1
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +1 -0
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -1
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +1 -0
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -1
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +1 -0
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -1
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-bq7j1uwx.js +1 -0
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -1
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DkP0-rBO.js +1 -0
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -1
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-OITEWczP.js +1 -0
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -1
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +1 -0
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -1
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-Z4zMCScs.js +1 -0
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -1
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js +2 -0
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js.map +1 -0
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +2 -2
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +160 -132
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-ecb43dfd3b7b.js +11 -0
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +7 -7
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-ecb43dfd3b7b.js +11 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +7 -7
  173. package/packages/theme-engine/README.md +221 -0
  174. package/packages/theme-engine/THEME_AUTHORING.md +44 -0
  175. package/packages/theme-engine/dist/trellis.js +16935 -0
  176. package/packages/theme-engine/generated/knobs/v1/color-alpha.json +2426 -0
  177. package/packages/theme-engine/generated/knobs/v1/color-foundations.json +1582 -0
  178. package/packages/theme-engine/generated/knobs/v1/color-ink.json +6541 -0
  179. package/packages/theme-engine/generated/knobs/v1/color-lighting.json +3056 -0
  180. package/packages/theme-engine/generated/knobs/v1/color-normalization.json +1685 -0
  181. package/packages/theme-engine/generated/knobs/v1/color-ramps.json +14304 -0
  182. package/packages/theme-engine/generated/knobs/v1/composition.json +881 -0
  183. package/packages/theme-engine/generated/knobs/v1/depth.json +1705 -0
  184. package/packages/theme-engine/generated/knobs/v1/edges.json +326 -0
  185. package/packages/theme-engine/generated/knobs/v1/index.json +20096 -0
  186. package/packages/theme-engine/generated/knobs/v1/manifest.json +719 -0
  187. package/packages/theme-engine/generated/knobs/v1/motion.json +128 -0
  188. package/packages/theme-engine/generated/knobs/v1/radii.json +331 -0
  189. package/packages/theme-engine/generated/knobs/v1/semantic-actions.json +1814 -0
  190. package/packages/theme-engine/generated/knobs/v1/semantic-disabled.json +759 -0
  191. package/packages/theme-engine/generated/knobs/v1/semantic-disclosure.json +59 -0
  192. package/packages/theme-engine/generated/knobs/v1/semantic-intents.json +4841 -0
  193. package/packages/theme-engine/generated/knobs/v1/semantic-scrim.json +308 -0
  194. package/packages/theme-engine/generated/knobs/v1/semantic-selection.json +940 -0
  195. package/packages/theme-engine/generated/knobs/v1/semantic-structure.json +365 -0
  196. package/packages/theme-engine/generated/knobs/v1/sizing-anatomy.json +3112 -0
  197. package/packages/theme-engine/generated/knobs/v1/sizing-controls.json +599 -0
  198. package/packages/theme-engine/generated/knobs/v1/sizing-measures.json +1089 -0
  199. package/packages/theme-engine/generated/knobs/v1/spacing.json +1246 -0
  200. package/packages/theme-engine/generated/knobs/v1/substrates.json +315 -0
  201. package/packages/theme-engine/generated/knobs/v1/surfaces.json +870 -0
  202. package/packages/theme-engine/generated/knobs/v1/typography-anatomy.json +1754 -0
  203. package/packages/theme-engine/generated/knobs/v1/typography-fonts.json +711 -0
  204. package/packages/theme-engine/generated/knobs/v1/typography-scale.json +329 -0
  205. package/packages/theme-engine/generated/schemas/theme-config-v1.json +3987 -0
  206. package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +79 -0
  207. package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +108 -0
  208. package/packages/client/types/components/runtime-docs.d.ts +0 -2
  209. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +0 -1
  210. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +0 -1
  211. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js.map +0 -1
  212. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +0 -1
  213. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js +0 -2
  214. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js.map +0 -1
  215. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-D_BJBnwB.js +0 -2
  216. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BDbURlVO.js +0 -5
  217. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-Ybm_WmKr.js +0 -2
  218. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-18lXAVBg.js +0 -2
  219. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-18lXAVBg.js.map +0 -1
  220. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2YvnuzOD.js +0 -2
  221. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2YvnuzOD.js.map +0 -1
  222. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BITa8xFV.js +0 -2
  223. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BITa8xFV.js.map +0 -1
  224. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BSVJpGWu.js +0 -2
  225. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BSVJpGWu.js.map +0 -1
  226. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js.map +0 -1
  227. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bp3Npe3t.js +0 -2
  228. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bp3Npe3t.js.map +0 -1
  229. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ce_fpT15.js +0 -2
  230. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ce_fpT15.js.map +0 -1
  231. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDJEGHq-.js +0 -2
  232. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDJEGHq-.js.map +0 -1
  233. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-OT_bt7F2.js.map +0 -1
  234. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-WRveW7p9.js +0 -2
  235. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-WRveW7p9.js.map +0 -1
  236. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dcqwycC7.js.map +0 -1
  237. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js.map +0 -1
  238. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +0 -1
  239. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +0 -1
@@ -0,0 +1,221 @@
1
+ # Trellis Theme Engine
2
+
3
+ The theme engine is a deterministic compiler from a materialized JSON `ThemeConfig` to a complete generated theme,
4
+ a [DTCG 2025.10](https://www.designtokens.org/TR/2025.10/) design-token document, and output artifacts such as
5
+ Tailwind-compatible CSS. It encodes brand
6
+ relationships once so components and custom compositions stay in sync.
7
+
8
+ ## Top-down model
9
+
10
+ ```mermaid
11
+ flowchart TD
12
+ base["Base ThemeConfig<br/>validated authored JSON"] --> materialize["materializeTheme<br/>apply ordered atomic commits"]
13
+ commits["Theme Patch Commits<br/>RFC 6902 add · remove · replace"] --> materialize
14
+ materialize --> config["Materialized ThemeConfig<br/>complete authored compiler input"]
15
+
16
+ config --> entry["generateTheme<br/>public compiler entry"]
17
+ config --> knobs["createThemeKnobCatalog<br/>generated authoring read model"]
18
+ entry --> resolve["generateColorTheme → resolveThemeConfig<br/>validate, merge baselines, parse, and record provenance"]
19
+ resolve --> resolved["ResolvedThemeConfig<br/>one explicit and internally consistent specification"]
20
+
21
+ resolved --> color["Color branch<br/>canvas, families, surfaces, depth, semantics"]
22
+ color --> colorTheme["GeneratedColorTheme<br/>color must succeed before the remaining axes run"]
23
+ colorTheme --> composition["Composition<br/>breakpoints, grids, shell"]
24
+ colorTheme --> edge["Edge<br/>line weights and anatomy roles"]
25
+ colorTheme --> radius["Radius<br/>scale and anatomy roles"]
26
+ colorTheme --> spacing["Spacing<br/>progressive fluid scale and anatomy aliases"]
27
+ colorTheme --> typography["Typography<br/>families, type scale, and text roles"]
28
+ colorTheme --> sizing["Sizing<br/>controls, icons, measures, and component anatomy"]
29
+ colorTheme --> motion["Motion<br/>durations, bounce, and displacement"]
30
+
31
+ colorTheme --> generated["GeneratedTheme<br/>values, dependencies, diagnostics, and fingerprint"]
32
+ composition --> generated
33
+ edge --> generated
34
+ radius --> generated
35
+ spacing --> generated
36
+ typography --> generated
37
+ sizing --> generated
38
+ motion --> generated
39
+
40
+ generated --> validate["validateGeneratedTheme<br/>reject broken generated relationships"]
41
+ validate --> tokens["generateDesignTokens<br/>DTCG 2025.10 resolver document"]
42
+ tokens --> serialize["Output adapters<br/>consume tokens, never compiler internals"]
43
+ serialize --> artifacts["CSS artifacts<br/>palette · runtime · fonts"]
44
+ artifacts --> recipes["theme.css recipes<br/>map semantic tokens onto component states"]
45
+ recipes --> components["Trellis components and custom Tailwind UI"]
46
+ ```
47
+
48
+ `ResolvedThemeConfig` separates authored intent from computed relationships. The DTCG document separates the
49
+ proprietary compiler from portable output adapters. CSS serialization only consumes that document.
50
+
51
+ The Theme Knob Catalog is a separate generated read model of the authored configuration boundary. It derives paths,
52
+ constraints, concrete authored/compiler defaults, required parents, and repeated-path parameters from
53
+ `ThemeConfigSchema`, then layers semantic search metadata from one definition file. Human and agent interfaces
54
+ consume the same versioned JSON catalog and produce ordinary Theme Patch Commits; the catalog is never another
55
+ configuration source.
56
+
57
+ ## What each stage owns
58
+
59
+ ### 1. Revision materialization
60
+
61
+ `compileTheme` is the hardened public path from a base plus patch history to a materialized config and validated token
62
+ document. It composes the stages below without exposing generated compiler internals to output adapters.
63
+
64
+ `materializeTheme` starts from a base `ThemeConfig` and applies ordered commits. A commit is an atomic batch of the
65
+ RFC 6902 `add`, `remove`, and `replace` operations. Theme patches may replace existing array members but cannot change
66
+ array membership. The result is validated against `ThemeConfigSchema`; storage, branches, heads, and snapshots remain
67
+ outside the compiler.
68
+
69
+ ### 2. Authored configuration
70
+
71
+ `ThemeConfig` is the language-agnostic authoring boundary. Each axis selects a named, versioned strategy and may
72
+ override the baseline without requiring component-specific tokens.
73
+
74
+ `createThemeKnobCatalog` walks that boundary and exposes every non-constant leaf as a Theme Knob. Fixed tuples and
75
+ dynamic records use parameterized JSON Pointer paths so the catalog remains searchable without hiding low-level
76
+ control or duplicating every possible instance. Repeated schema branches retain their concrete defaults as values
77
+ keyed by parameter bindings. Generated files live under `generated/knobs/v1/`, split into semantic groups organized
78
+ under each axis. A small `manifest.json` exposes axes, groups, escalation tiers, impact scopes, and counts without
79
+ embedding knob records. `index.json` supports deterministic search without loading full group documents.
80
+
81
+ Discovery is progressive: call `listThemeKnobGroups`, then `searchThemeKnobs`, then `getThemeKnobs` only for selected
82
+ paths. Search includes Primary and Tuning knobs by default. Expert and Escape Hatch knobs require an explicit tier
83
+ filter; exact authored palette steps are Escape Hatches rather than ordinary color controls. Interfaces should prefer
84
+ the minimum sufficient leaf mutations, compile the result, and escalate only when broader controls are insufficient.
85
+
86
+ ### 3. Resolution
87
+
88
+ `resolveThemeConfig` validates the schema, fills omitted values from `defaults.ts`, parses colors, and validates all
89
+ references. It also records whether every resolved value came from authored config or a default.
90
+
91
+ ### 4. Generation
92
+
93
+ `generateTheme` completes color first, then gives the remaining axes their resolved configuration and combines the
94
+ results. Cross-axis work stays in the orchestrator; for example, surface shadows consume generated color and resolved
95
+ depth.
96
+
97
+ ### 5. Validation and token projection
98
+
99
+ Generated values are validated before `generateDesignTokens` projects them into a DTCG 2025.10 Resolver Document.
100
+ Invariant tokens form one set and light/dark appearances form an `appearance` modifier. Standard DTCG types represent
101
+ colors, dimensions, numbers, durations, font families, weights, and shadows. Namespaced `dev.trellis` extensions retain
102
+ fluid relationships, unsupported CSS units, font resources, and CSS adapter metadata without changing token values.
103
+
104
+ ### 6. Output serialization
105
+
106
+ `serializeThemeArtifacts` and `serializeThemeCss` consume only the DTCG document. They produce named resources,
107
+ palette, and runtime artifacts with Tailwind registrations and deterministic fingerprints. Future adapters should
108
+ consume the same token boundary rather than `GeneratedTheme`.
109
+
110
+ ### 7. Component consumption
111
+
112
+ `packages/client/src/styles/theme.css` imports the generated artifacts and defines shared recipes such as actions,
113
+ fields, options, and selections. Component code chooses semantic roles; it does not reproduce theme math.
114
+
115
+ ## Inside the color branch
116
+
117
+ Each appearance and family follows the same ordered pipeline. Later steps are allowed to constrain earlier requests,
118
+ but every adjustment is retained in diagnostics rather than silently hidden.
119
+
120
+ ```mermaid
121
+ flowchart TD
122
+ source["Family source<br/>seed + anchor, or 12 authored steps"] --> ramp["Functional curve<br/>build the 12-step candidate ramp"]
123
+ canvas["Appearance canvas<br/>light or dark"] --> lighting["Canvas-relative lighting<br/>adapt quiet steps to their substrate"]
124
+ ramp --> lighting
125
+ lighting --> normalize["Constraint-priority normalization<br/>balance order, contrast, seed fidelity, and smoothness"]
126
+ normalize --> fit["Solid-ink fitting<br/>make solid backgrounds pairable"]
127
+ fit --> canonical["Canonical color<br/>retain one OKLCH value"]
128
+ canonical --> proof["sRGB proof<br/>delegate CSS gamut mapping to Color.js"]
129
+ proof --> ink["Accessible ink pairing<br/>attach regular, subtle, and muted inks"]
130
+ proof --> alpha["Substrate alpha fitting<br/>derive translucent steps across known substrates"]
131
+ ink --> family["Generated family<br/>opaque color + inks + alpha for every step"]
132
+ alpha --> family
133
+
134
+ family --> surfaces["Surface ladder<br/>canvas + neutral/accent influence + depth layers"]
135
+ canvas --> surfaces
136
+ surfaces --> semantics["Semantic graph<br/>structure, intents, interactions, selection, disabled, scrim"]
137
+ family --> semantics
138
+ ```
139
+
140
+ The 12-step families are primitives, not component colors. Semantic roles select from those families, and surface
141
+ levels provide the actual substrates against which alpha colors, inks, and shadows are evaluated.
142
+
143
+ Solid semantic roles also calibrate `separation.hover.{light,dark}` and `separation.pressed.{light,dark}` as minimum
144
+ perceptual distances from rest. The generator follows the authored state direction when contrast permits, then favors
145
+ the contrast-safe direction.
146
+
147
+ ## Generated relationship tree
148
+
149
+ | Branch | Generates | Downstream consumers |
150
+ | --- | --- | --- |
151
+ | Color families | Canonical OKLCH steps, alpha steps, accessible inks, sRGB proofs | Surfaces and semantic roles |
152
+ | Surfaces + depth | Levels `0–8`, paired surface inks, calibrated local edges, elevation shadows | Panels, overlays, cards, app regions |
153
+ | Semantic roles | Text, soft, solid, edge, focus, interaction, selection, disabled attenuation, scrim | Shared component recipes |
154
+ | Edge | Width scale and perimeter/control/separator/divider aliases | Rings, dividers, shadow spreads |
155
+ | Radius | Six-step curve and control/surface/overlay aliases | Component shape choices |
156
+ | Spacing | Half-step `0–12` scale and anatomy dependencies | Gaps and padding |
157
+ | Typography | Font resources, 13 type steps, weights, anatomy dependencies | Text and control typography |
158
+ | Sizing | Bounded lengths for controls, icons, component anatomy, and measures | Component geometry |
159
+ | Composition | Breakpoints, responsive column maps, shell breakpoint | Page and layout recipes |
160
+ | Motion | Semantic durations, bounce strengths, and displacement scale | Component transitions and gestures |
161
+
162
+ ## Shipped default at a glance
163
+
164
+ | Axis | Default relationship |
165
+ | --- | --- |
166
+ | Canvas | `#fafafa` light and `#171717` dark |
167
+ | Core families | Neutral `#737373`; accent and information `#0090ff` |
168
+ | Status families | Success `#30a46c`, warning `#ffc53d`, danger `#e5484d` |
169
+ | Color output | Canonical OKLCH values with an sRGB proof for accessibility and compositing |
170
+ | Surfaces | Nine levels from canvas through progressively stronger neutral depth, with very restrained accent influence |
171
+ | Semantics | Crisp `1px` focus; quiet neutral selection and action layers; disabled controls preserve their treatment at `50%` opacity |
172
+ | Edges | `0 / 1 / 2 / 4px`; every default anatomy role uses the `1px` step, while edge color is calibrated against the active substrate and surface |
173
+ | Radius | `1 / 2.5 / 4 / 6 / 8 / 10.5px`; control `4px`, surface `6px`, overlay `8px` |
174
+ | Spacing | `4px` foundation; compact through step `4`, then gently fluid from `320–1440px` |
175
+ | Controls | Fixed `20 / 24 / 28 / 32 / 36px` heights from `xs` through `xlg` |
176
+ | Typography | Inter for UI, Fira Code for code; body/control defaults are mostly `14px`, with a 13-step display scale |
177
+ | Composition | `640 / 768 / 1024 / 1280 / 1536px` breakpoints; sidebars enter at `lg` |
178
+
179
+ The default is deliberately neutral, compact, and low-chroma at rest. Blue carries selection and primary emphasis,
180
+ while surface elevation and interaction layers do most of the structural work.
181
+
182
+ ## Principles
183
+
184
+ - Patch history, authored config, resolved config, generated relationships, design tokens, output artifacts, and
185
+ component recipes are separate layers.
186
+ - Axes such as color, surface, depth, edge, radius, spacing, typography, sizing, and composition remain independently
187
+ tunable. Presets may coordinate them.
188
+ - Output adapters consume DTCG tokens; components consume serialized tokens and anatomy relationships. Neither reads
189
+ config nor repeats generation math.
190
+ - Generated tokens extend familiar Tailwind syntax. Do not replace foundations such as the base `--spacing` value.
191
+ - Shared bounded-fluid math may support several axes, but it does not create one universal public length scale.
192
+ - The same resolved config must produce the same light/dark output, diagnostics, provenance, fingerprint, and CSS.
193
+
194
+ Avoid personality or use-case god knobs, component-named tokens, downstream theme literals, silent coercion, and
195
+ per-breakpoint configuration matrices. Fix systemic visual defects upstream so every composition benefits.
196
+
197
+ ## Where to look
198
+
199
+ | Need | Location |
200
+ | --- | --- |
201
+ | Public compiler API | `src/compile-theme.ts`, `src/index.ts` |
202
+ | Patch commits and materialization | `src/materialize-theme.ts` |
203
+ | Authored schema | `src/schema/theme-config.ts` |
204
+ | Packaged Theme Config schema | `generated/schemas/theme-config-v1.json` |
205
+ | Packaged Theme Workspace schema | `generated/schemas/theme-manifest-v1.json` |
206
+ | Theme knob factory and metadata | `src/knobs/` |
207
+ | Generated knob JSON | `generated/knobs/v1/` |
208
+ | Agent theme-authoring skill | `skills/create-trellis-theme/SKILL.md` |
209
+ | Defaults and shipped preset | `src/defaults.ts`, `src/presets/trellis-default.ts` |
210
+ | Resolution, validation, provenance | `src/resolve-theme-config.ts`, `src/validate-*.ts` |
211
+ | Complete orchestration | `src/orchestrator.ts` |
212
+ | Axis math | `src/color/`, `src/edge/`, `src/radius/`, `src/spacing/`, `src/typography/`, `src/sizing/`, `src/composition/`, `src/motion/` |
213
+ | Shared fluid primitive | `src/fluid/bounded.ts` |
214
+ | DTCG token projection | `src/design-tokens/` |
215
+ | CSS and Tailwind output | `src/serialize/` |
216
+ | Default CSS build | `scripts/generate-default-css.mjs` |
217
+ | Boundary tests | `../../tests/client/theme-engine/` |
218
+
219
+ When changing an axis, move its schema, defaults, resolution, focused generator, generated types, serialization, and
220
+ boundary tests together. Add cross-axis coordination only in orchestration. Never hand-edit `dist/` or
221
+ `packages/client/src/styles/generated/`.
@@ -0,0 +1,44 @@
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
+ Resource paths in this guide are relative to the authoring resource root: the directory containing this file and
7
+ `generated/`. In the Trellis repository, that directory is `packages/theme-engine/`.
8
+
9
+ The versioned Theme Config JSON Schema is at `generated/schemas/theme-config-v1.json` with the stable `$id`
10
+ `https://trellis.build/schemas/theme-config-v1.json`. A config may use any string in its own `$schema` property as
11
+ optional editor metadata. The compiler neither requires nor inserts that property, and it does not affect resolved
12
+ theme semantics or fingerprints.
13
+
14
+ For agent-assisted changes, inspect `generated/knobs/v1/manifest.json` or `index.json` before opening a semantic group.
15
+ Search Primary and Tuning knobs first. Use Expert or Escape Hatch knobs only when broader controls cannot express the
16
+ request, and prefer the smallest sufficient set of leaf operations. The catalog is a read model, not theme state.
17
+
18
+ Write exactly one commit object to a normal JSON file, then run:
19
+
20
+ ```console
21
+ npm exec --no -- trellis theme apply path/to/theme.json path/to/commit.json
22
+ ```
23
+
24
+ This consumer command requires the packaged CLI to be installed locally. In the Trellis repository, use
25
+ `pnpm trellis theme apply path/to/theme.json path/to/commit.json` instead.
26
+
27
+ Inspect the generated artifact and Git diff. Use `theme build` to regenerate selected outputs and `theme check` for a
28
+ read-only byte comparison. Git owns attribution, branches, merges, rollback, and review; Trellis does not maintain a
29
+ second revision graph.
30
+
31
+ ## Enable the authoring skill
32
+
33
+ The authoring resources include `skills/create-trellis-theme/SKILL.md`. Register that folder with your agent's skill
34
+ discovery mechanism, or copy the `create-trellis-theme` folder into its configured skill directory. Installing the npm
35
+ package alone does not enable the skill. Keep the Trellis package installed in the project: the skill reads its
36
+ authoring guide, schemas, and knob catalog. A copied skill should be refreshed when upgrading Trellis.
37
+
38
+ Invoke `create-trellis-theme` with the intended workspace and design direction, for example: “Use
39
+ create-trellis-theme to make the application theme denser with a muted green accent.”
40
+
41
+ Theme Patch Commits should not add or remove `$schema` merely to express a design change.
42
+
43
+ If `apply` reports that the Theme Commit Log changed concurrently, reload the workspace source and retry the intended
44
+ commit. Trellis preserves the external change rather than guessing an ordering or merging commits automatically.