@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.
- package/README.md +0 -1
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/package.json +54 -66
- package/packages/client/src/components/accordion/styles.css +21 -9
- package/packages/client/src/components/badge/styles.css +12 -0
- package/packages/client/src/components/button/styles.css +31 -5
- package/packages/client/src/components/card/styles.css +16 -0
- package/packages/client/src/components/checkbox/styles.css +29 -5
- package/packages/client/src/components/date-picker/styles.css +22 -17
- package/packages/client/src/components/field/styles.css +18 -17
- package/packages/client/src/components/input/styles.css +1 -0
- package/packages/client/src/components/keybinding/styles.css +9 -2
- package/packages/client/src/components/menu/styles.css +13 -0
- package/packages/client/src/components/panels/styles.css +12 -2
- package/packages/client/src/components/scroll-area/styles.css +169 -2
- package/packages/client/src/components/select/styles.css +28 -8
- package/packages/client/src/components/sidebar/styles.css +218 -0
- package/packages/client/src/components/slider/styles.css +57 -0
- package/packages/client/src/components/tabs/styles.css +26 -24
- package/packages/client/src/components/toast/styles.css +31 -0
- package/packages/client/src/directives/sortable.css +5 -0
- package/packages/client/src/runtime/drag-and-drop/resize-handle.css +2 -2
- package/packages/client/src/styles/components.css +8 -3
- package/packages/client/src/styles/fonts/fira-code/5.3.0/LICENSE +93 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/download.json +47 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/font.css +62 -0
- package/packages/client/src/styles/fonts/fira-code/5.3.0/resource.json +82 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/LICENSE +93 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/download.json +47 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/font.css +62 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
- package/packages/client/src/styles/fonts/inter/5.3.0/resource.json +82 -0
- package/packages/client/src/styles/generated/theme-fonts.css +3 -3
- package/packages/client/src/styles/generated/theme-palette.css +1001 -634
- package/packages/client/src/styles/generated/theme-runtime.css +905 -580
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/layout.css +88 -0
- package/packages/client/src/styles/recipes/action.css +4 -16
- package/packages/client/src/styles/recipes/disabled.css +8 -0
- package/packages/client/src/styles/recipes/option.css +0 -44
- package/packages/client/src/styles/recipes/selection.css +28 -39
- package/packages/client/src/styles/theme-support.css +19 -42
- package/packages/client/src/styles/typography.css +26 -0
- package/packages/client/types/assets/bridge.d.ts +1 -2
- 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/capabilities/collection.d.ts +7 -0
- package/packages/client/types/capabilities/collection.entry.generated.d.ts +3 -0
- package/packages/client/types/capabilities/shortcut.d.ts +4 -3
- package/packages/client/types/components/accordion/machine.d.ts +4 -4
- package/packages/client/types/components/accordion/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/app/contract.d.ts +5 -5
- package/packages/client/types/components/badge/contract.d.ts +1 -0
- package/packages/client/types/components/box/contract.d.ts +17 -12
- package/packages/client/types/components/box/index.d.ts +1 -1
- package/packages/client/types/components/button/contract.d.ts +3 -2
- package/packages/client/types/components/card/contract.d.ts +27 -16
- package/packages/client/types/components/checkbox/contract.d.ts +13 -13
- package/packages/client/types/components/checkbox/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/common.d.ts +13 -11
- package/packages/client/types/components/container/contract.d.ts +4 -3
- package/packages/client/types/components/data-grid/contract.d.ts +3 -2
- package/packages/client/types/components/data-grid/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/date-picker/contract.d.ts +2 -2
- package/packages/client/types/components/date-picker/machine.d.ts +11 -11
- 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/contract.d.ts +1 -1
- package/packages/client/types/components/dropdown/machine.d.ts +5 -3
- package/packages/client/types/components/dropdown/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/field/contract.d.ts +4 -4
- package/packages/client/types/components/field/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/file-upload/contract.d.ts +3 -3
- package/packages/client/types/components/file-upload/machine.d.ts +4 -4
- package/packages/client/types/components/file-upload/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/flex/contract.d.ts +10 -8
- package/packages/client/types/components/formset/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/frame/contract.d.ts +14 -11
- package/packages/client/types/components/grid/contract.d.ts +8 -7
- package/packages/client/types/components/image/contract.d.ts +1 -0
- package/packages/client/types/components/input/contract.d.ts +1 -0
- package/packages/client/types/components/input/machine.d.ts +2 -2
- package/packages/client/types/components/layout.d.ts +91 -35
- package/packages/client/types/components/menu/contract.d.ts +27 -10
- package/packages/client/types/components/modal/contract.d.ts +22 -5
- package/packages/client/types/components/modal/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/panels/contract.d.ts +2 -2
- package/packages/client/types/components/panels/index.d.ts +2 -1
- package/packages/client/types/components/panels/machine.d.ts +9 -8
- package/packages/client/types/components/panels/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/radio/contract.d.ts +8 -8
- package/packages/client/types/components/radio/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/scroll-area/contract.d.ts +1 -20
- package/packages/client/types/components/scroll-area/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/section/contract.d.ts +4 -3
- package/packages/client/types/components/select/contract.d.ts +3 -3
- package/packages/client/types/components/select/machine.d.ts +13 -13
- package/packages/client/types/components/select/presentation.d.ts +1 -0
- package/packages/client/types/components/select/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/sidebar/contract.d.ts +26 -8
- package/packages/client/types/components/sidebar/groups.d.ts +4 -0
- package/packages/client/types/components/sidebar/index.d.ts +5 -4
- package/packages/client/types/components/sidebar/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/slider/contract.d.ts +1 -0
- package/packages/client/types/components/slider/machine.d.ts +10 -5
- package/packages/client/types/components/slider/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/stack/contract.d.ts +10 -8
- package/packages/client/types/components/switch/contract.d.ts +8 -8
- package/packages/client/types/components/switch/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/table/contract.d.ts +6 -5
- package/packages/client/types/components/tabs/index.d.ts +2 -1
- package/packages/client/types/components/tabs/machine.d.ts +2 -2
- package/packages/client/types/components/tabs/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/textarea/contract.d.ts +1 -1
- package/packages/client/types/components/toast/machine.d.ts +2 -2
- package/packages/client/types/components/toast/runtime-docs.d.ts +1 -0
- package/packages/client/types/components/tooltip/contract.d.ts +13 -13
- package/packages/client/types/components/tooltip/machine.d.ts +3 -7
- 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/core.d.ts +2 -0
- package/packages/client/types/directives/anchor.d.ts +27 -0
- package/packages/client/types/directives/animate.d.ts +3 -0
- package/packages/client/types/directives/collection.d.ts +9 -0
- package/packages/client/types/directives/index.d.ts +3 -2
- package/packages/client/types/docs/transition-docs.d.ts +0 -2
- package/packages/client/types/motion/animate.d.ts +7 -2
- package/packages/client/types/motion/config.d.ts +118 -0
- package/packages/client/types/motion/feedback.d.ts +3 -0
- package/packages/client/types/motion/index.d.ts +8 -107
- package/packages/client/types/motion/layout.d.ts +25 -0
- package/packages/client/types/motion/lifecycle.d.ts +10 -0
- package/packages/client/types/motion/owned.d.ts +15 -4
- package/packages/client/types/motion/properties.d.ts +17 -0
- package/packages/client/types/motion/recipe.d.ts +8 -75
- package/packages/client/types/motion/reduced-motion.d.ts +7 -8
- package/packages/client/types/motion/registry.d.ts +37 -0
- package/packages/client/types/motion/resize-preview.d.ts +26 -0
- package/packages/client/types/motion/resize.d.ts +3 -1
- package/packages/client/types/motion/size.d.ts +7 -4
- package/packages/client/types/runtime/anchored-popover.d.ts +14 -3
- package/packages/client/types/runtime/collection-navigation.d.ts +12 -4
- package/packages/client/types/runtime/control-size.d.ts +4 -0
- package/packages/client/types/runtime/drag-and-drop/index.d.ts +10 -3
- package/packages/client/types/runtime/drag-and-drop/sortable/ghost.d.ts +2 -1
- package/packages/client/types/runtime/engine/fragment.d.ts +2 -1
- package/packages/client/types/runtime/engine/stream.d.ts +5 -9
- package/packages/client/types/runtime/focus.d.ts +3 -1
- package/packages/client/types/runtime/index.d.ts +1 -1
- package/packages/client/types/runtime/layout-participant.d.ts +10 -9
- package/packages/client/types/runtime/layout-task.d.ts +9 -0
- package/packages/client/types/runtime/morph-engine.d.ts +1 -0
- package/packages/client/types/runtime/option-data.d.ts +2 -1
- package/packages/client/types/runtime/preferences.d.ts +14 -0
- package/packages/client/types/runtime/scroll-area-schema.d.ts +23 -0
- package/packages/client/types/runtime/ui.d.ts +3 -5
- package/packages/client/types/runtime/virtualizer-schema.d.ts +3 -1
- package/packages/client/types/runtime/virtualizer-size.d.ts +7 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js.map +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 +989 -1109
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-DXCLxWw-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor-DXCLxWw-.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/collection-CSrnChwy.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-DlgeSL0c.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{resizable-Ctqx_OoS.js.map → resizable-DlgeSL0c.js.map} +1 -1
- 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-Qa2EByIB.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{shortcut-D2NgvMgw.js.map → shortcut-Qa2EByIB.js.map} +1 -1
- 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-DQ4eUO2l.js → sortable-Do3a0LA9.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-DQ4eUO2l.js.map → sortable-Do3a0LA9.js.map} +1 -1
- 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-BqejlBjS.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bm1phXnj.js +5 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bm1phXnj.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-zFOeeob-.js +6 -0
- 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
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{anchored-popover-BwQbt4V2.js → floating-ui.dom-B05VsV_p.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js → focus-BvBkrIcj.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js.map → focus-BvBkrIcj.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DYfME-Rk.js +2 -0
- 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
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preload-helper-BZ1Pz5am.js +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CQDZhwd_.js → styles-BvLCjUXV.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-BvLCjUXV.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CZ7fEQL2.js +4 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CZ7fEQL2.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.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-DGWRKBdw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Dm3rQfQ_.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Dm3rQfQ_.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CX4J7tsN.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CX4J7tsN.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +308 -429
- package/packages/theme-engine/README.md +273 -0
- package/packages/theme-engine/THEME_AUTHORING.md +78 -0
- package/packages/theme-engine/dist/trellis.js +17200 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/LICENSE +93 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/download.json +47 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/font.css +62 -0
- package/packages/theme-engine/fonts/fira-code/5.3.0/resource.json +82 -0
- package/packages/theme-engine/fonts/inter/5.3.0/LICENSE +93 -0
- package/packages/theme-engine/fonts/inter/5.3.0/download.json +47 -0
- package/packages/theme-engine/fonts/inter/5.3.0/font.css +62 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
- package/packages/theme-engine/fonts/inter/5.3.0/resource.json +82 -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 +20409 -0
- package/packages/theme-engine/generated/knobs/v1/manifest.json +683 -0
- package/packages/theme-engine/generated/knobs/v1/radii.json +380 -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 +5660 -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 +829 -0
- package/packages/theme-engine/generated/knobs/v1/typography-scale.json +329 -0
- package/packages/theme-engine/generated/schemas/theme-config-v1.json +4008 -0
- package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +52 -0
- package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +107 -0
- package/packages/client/src/components/app/styles.css +0 -1
- package/packages/client/src/components/brand/styles.css +0 -8
- package/packages/client/src/styles/motion.css +0 -26
- package/packages/client/src/styles/static.css +0 -4
- package/packages/client/types/assets/full-runtime.generated.d.ts +0 -2
- package/packages/client/types/capabilities/motion.d.ts +0 -6
- package/packages/client/types/capabilities/motion.entry.generated.d.ts +0 -3
- package/packages/client/types/cdn.d.ts +0 -2
- package/packages/client/types/components/entry.generated.d.ts +0 -36
- package/packages/client/types/components/runtime-docs.d.ts +0 -2
- package/packages/client/types/directives/bounds.d.ts +0 -4
- package/packages/client/types/directives/layout.d.ts +0 -3
- package/packages/client/types/index.d.ts +0 -8
- package/packages/client/types/motion/bounds.d.ts +0 -20
- package/packages/client/types/motion/controller.d.ts +0 -33
- package/packages/client/types/motion/flip.d.ts +0 -14
- package/packages/client/types/motion/plan.d.ts +0 -52
- package/packages/client/types/motion/stream.d.ts +0 -18
- package/packages/client/types/motion/targets.d.ts +0 -23
- package/packages/client/types/motion/view.d.ts +0 -27
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-a1130be0a833.css +0 -14030
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +0 -14030
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-d053936d467f.css +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-B0MINJTL.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-B0MINJTL.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js.map +0 -1
- 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/bridge-DMrvM3JE.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.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-motion-D_BJBnwB.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +0 -1
- 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/capability-sortable-BDbURlVO.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +0 -1
- 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/core-Ybm_WmKr.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js +0 -6
- 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-B986Ob4f.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B986Ob4f.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.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-BQNpmLZO.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.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-BZWdGtgg.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BgGSoQFS.js +0 -2
- 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-BnqcHAaF.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ChoqPigj.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-ChoqPigj.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CqtsPVJy.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CqtsPVJy.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDrayI_M.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DDrayI_M.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-OT_bt7F2.js +0 -2
- 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 +0 -2
- 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/entry.generated-oJwO9fIY.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-crNQSZEa.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-crNQSZEa.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-B90yNOaV.js +0 -3
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-B90yNOaV.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CTQoglp3.js +0 -4
- 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/accordion-CKh9jOQc.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-DHqf4lhn.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-DhNrvLv7.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-CDPdgATy.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DzOKmgfj.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DzOKmgfj.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-1D2WtmlK.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-BXtMr9cv.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-B_b2uwfv.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-D8y44c-J.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CBjcV5_z.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DSduFsxK.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-B3vA5YAi.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CRIj89v5.js +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-CL7BWKcd.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-CL7BWKcd.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-acc1b62a38b1.js +0 -11
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +0 -11
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-acc1b62a38b1.js +0 -11
- 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.
|