T2: Stand up the ejected Panda build pipeline alongside Vanilla Extract (#179)
* Stand up the ejected Panda build pipeline alongside Vanilla Extract
T2 of the Panda migration (#146). Adds a minimal, ejected Panda setup that
generates into styled-system/ alongside Vanilla Extract without changing any
shipped output — VE still owns dist/stylesheet.css until the T6 flip.
- Shared lukeLayerOrder constant (reset, base, tokens, recipes, box, utilities)
is the single source of truth, imported by panda.config.ts and the assembler.
- Ejected panda.config.ts (eject:true, presets:[], no colour-mode conditions);
Panda's 5 layer slots derived from lukeLayerOrder minus box.
- scripts/assemble-stylesheet.ts emits the canonical @layer order line and
re-wraps Panda's utilities output as a hand-authored @layer box (per spike S1),
ordered between recipes and utilities.
- cssgen uses --splitting (not --minimal, which drops staticCss and emits no box
layer); pulls only Panda recipes + box, VE keeps reset/base/tokens/global.
- Wires panda codegen + cssgen + assemble into turbo generate; adds prepack
regenerate; gitignores styled-system/.
- First-line layer-order assertion + VE theme-to-base/tokens equivalence test.
VE dist/stylesheet.css is byte-for-byte identical (sha256 unchanged).
* Fix knip check:unused for the Panda pipeline
Remove the unused LukeLayerName type export and tell knip to ignore the
postcss dependency it infers from panda.config.ts (we use Panda's standalone
codegen/cssgen CLI, not the postcss plugin).
T2: Stand up the ejected Panda build pipeline alongside Vanilla Extract (#179)
* Stand up the ejected Panda build pipeline alongside Vanilla Extract
T2 of the Panda migration (#146). Adds a minimal, ejected Panda setup that
generates into styled-system/ alongside Vanilla Extract without changing any
shipped output — VE still owns dist/stylesheet.css until the T6 flip.
- Shared lukeLayerOrder constant (reset, base, tokens, recipes, box, utilities)
is the single source of truth, imported by panda.config.ts and the assembler.
- Ejected panda.config.ts (eject:true, presets:[], no colour-mode conditions);
Panda's 5 layer slots derived from lukeLayerOrder minus box.
- scripts/assemble-stylesheet.ts emits the canonical @layer order line and
re-wraps Panda's utilities output as a hand-authored @layer box (per spike S1),
ordered between recipes and utilities.
- cssgen uses --splitting (not --minimal, which drops staticCss and emits no box
layer); pulls only Panda recipes + box, VE keeps reset/base/tokens/global.
- Wires panda codegen + cssgen + assemble into turbo generate; adds prepack
regenerate; gitignores styled-system/.
- First-line layer-order assertion + VE theme-to-base/tokens equivalence test.
VE dist/stylesheet.css is byte-for-byte identical (sha256 unchanged).
* Fix knip check:unused for the Panda pipeline
Remove the unused LukeLayerName type export and tell knip to ignore the
postcss dependency it infers from panda.config.ts (we use Panda's standalone
codegen/cssgen CLI, not the postcss plugin).