@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.
- package/README.md +0 -1
- package/THIRD_PARTY_NOTICES.md +2 -0
- package/package.json +49 -40
- package/packages/client/src/components/field/styles.css +2 -1
- package/packages/client/src/styles/components.css +1 -0
- package/packages/client/src/styles/static.css +0 -1
- package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
- package/packages/client/types/capabilities/anchor.d.ts +7 -0
- package/packages/client/types/capabilities/anchor.entry.generated.d.ts +3 -0
- package/packages/client/types/components/accordion/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/checkbox/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/data-grid/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/date-picker/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/direct-upload/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/dropdown/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/entry.generated.d.ts +1 -0
- package/packages/client/types/components/field/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/file-upload/index.d.ts +3 -2
- package/packages/client/types/components/file-upload/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/formset/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/image/contract.d.ts +1 -1
- package/packages/client/types/components/modal/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/panels/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/radio/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/scroll-area/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/select/index.d.ts +3 -2
- package/packages/client/types/components/select/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/sidebar/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/slider/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/switch/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/tabs/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/toast/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/tooltip/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/virtualizer/runtime-docs.d.ts +1 -0
- package/packages/client/types/directives/anchor.d.ts +26 -0
- package/packages/client/types/directives/index.d.ts +1 -0
- package/packages/client/types/runtime/anchored-popover.d.ts +4 -2
- package/packages/client/types/runtime/item-template.d.ts +13 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-103fb43eb5e1.css +14030 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +23 -23
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-584dec82495c.css +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +386 -346
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-B-CbpFFU.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-B-CbpFFU.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CbIOS4Lm.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CbIOS4Lm.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js +2 -0
- 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
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js +5 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-BDbURlVO.js.map → capability-sortable-Bl6ng6Hd.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-Ybm_WmKr.js.map → core-BxNepYBE.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DDrayI_M.js → entry.generated-BRaKxvab.js} +2 -2
- 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
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-OT_bt7F2.js → entry.generated-BzLNUDzF.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BgGSoQFS.js → entry.generated-Cbyseoex.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-dcqwycC7.js → entry.generated-Ct9H8Hlf.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-crNQSZEa.js → flip-BKThFI4L.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{flip-crNQSZEa.js.map → flip-BKThFI4L.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/item-template-DSfME41Q.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/item-template-DSfME41Q.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-B90yNOaV.js → motion-RwlK04Cy.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-B90yNOaV.js.map → motion-RwlK04Cy.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{ui-CTQoglp3.js → ui-Bg44ZmC3.js} +4 -4
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/warn-BbGtqbh1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/warn-BbGtqbh1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DpoqsP_I.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-CCPYnOuT.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-BCkP5gtC.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-Cc84envj.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-MUHGUsup.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-DNAroAhk.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-BjLF548F.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-GpvEBW3K.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-bq7j1uwx.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DkP0-rBO.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-OITEWczP.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-Z4zMCScs.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +160 -132
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-ecb43dfd3b7b.js +11 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +7 -7
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-ecb43dfd3b7b.js +11 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +7 -7
- package/packages/theme-engine/README.md +221 -0
- package/packages/theme-engine/THEME_AUTHORING.md +44 -0
- package/packages/theme-engine/dist/trellis.js +16935 -0
- package/packages/theme-engine/generated/knobs/v1/color-alpha.json +2426 -0
- package/packages/theme-engine/generated/knobs/v1/color-foundations.json +1582 -0
- package/packages/theme-engine/generated/knobs/v1/color-ink.json +6541 -0
- package/packages/theme-engine/generated/knobs/v1/color-lighting.json +3056 -0
- package/packages/theme-engine/generated/knobs/v1/color-normalization.json +1685 -0
- package/packages/theme-engine/generated/knobs/v1/color-ramps.json +14304 -0
- package/packages/theme-engine/generated/knobs/v1/composition.json +881 -0
- package/packages/theme-engine/generated/knobs/v1/depth.json +1705 -0
- package/packages/theme-engine/generated/knobs/v1/edges.json +326 -0
- package/packages/theme-engine/generated/knobs/v1/index.json +20096 -0
- package/packages/theme-engine/generated/knobs/v1/manifest.json +719 -0
- package/packages/theme-engine/generated/knobs/v1/motion.json +128 -0
- package/packages/theme-engine/generated/knobs/v1/radii.json +331 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-actions.json +1814 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-disabled.json +759 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-disclosure.json +59 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-intents.json +4841 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-scrim.json +308 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-selection.json +940 -0
- package/packages/theme-engine/generated/knobs/v1/semantic-structure.json +365 -0
- package/packages/theme-engine/generated/knobs/v1/sizing-anatomy.json +3112 -0
- package/packages/theme-engine/generated/knobs/v1/sizing-controls.json +599 -0
- package/packages/theme-engine/generated/knobs/v1/sizing-measures.json +1089 -0
- package/packages/theme-engine/generated/knobs/v1/spacing.json +1246 -0
- package/packages/theme-engine/generated/knobs/v1/substrates.json +315 -0
- package/packages/theme-engine/generated/knobs/v1/surfaces.json +870 -0
- package/packages/theme-engine/generated/knobs/v1/typography-anatomy.json +1754 -0
- package/packages/theme-engine/generated/knobs/v1/typography-fonts.json +711 -0
- package/packages/theme-engine/generated/knobs/v1/typography-scale.json +329 -0
- package/packages/theme-engine/generated/schemas/theme-config-v1.json +3987 -0
- package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +79 -0
- package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +108 -0
- package/packages/client/types/components/runtime-docs.d.ts +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/anchored-popover-BwQbt4V2.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-D_BJBnwB.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BDbURlVO.js +0 -5
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-Ybm_WmKr.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-18lXAVBg.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-18lXAVBg.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2YvnuzOD.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-2YvnuzOD.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BITa8xFV.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BITa8xFV.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BSVJpGWu.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BSVJpGWu.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bp3Npe3t.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bp3Npe3t.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ce_fpT15.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ce_fpT15.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDJEGHq-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDJEGHq-.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-OT_bt7F2.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-WRveW7p9.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-WRveW7p9.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-dcqwycC7.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +0 -1
- 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.
|