diff --git a/CHANGELOG.md b/CHANGELOG.md index 845e4ff..75fc05d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,27 @@ Prefix the change with one of these keywords: ## [Unreleased] +### Added + +- Root spacing tokens. `baseStyles.spacing` now produces a `Root Spacing` group on `:root` in `-tokens.css` (and `tokens.wp.css` when themeable), mirrored in `-tokens.js` as `root`, so components can use the page gutter anywhere — including WordPress block themes, which don't load `layout.css`: + + ```css + --mylib--root-padding-x: var(--mylib--spacing-large); + --mylib--root-padding-y: 0; + --mylib--root-padding-top: var(--mylib--root-padding-y); + --mylib--root-padding-right: var(--mylib--root-padding-x); + --mylib--root-padding-bottom: var(--mylib--root-padding-y); + --mylib--root-padding-left: var(--mylib--root-padding-x); + --mylib--root-block-gap: var(--mylib--spacing-medium); + ``` + +- `baseStyles.spacing.padding` accepts `x` (right and left) and `y` (top and bottom) alongside the four sides, and a side set on its own wins over its axis. Without an explicit `x`/`y`, an axis takes the value both of its sides share, so existing four-side configs get the axis tokens with no change. theme.json still receives the four sides. + +### Changed + +- `layout.css` no longer declares the root padding and block-gap custom properties in a `body { }` block. They keep their names and now live on `:root` in `tokens.css`, which `layout.css` already depended on for spacing values. The `.has-global-padding` rules are emitted only when horizontal root padding is configured. +- Unknown keys under `baseStyles.spacing.padding` now throw at config load instead of passing through into theme.json. + ## [0.7.2] - 2026-09-07 ### Fixed diff --git a/CLAUDE.md b/CLAUDE.md index eef1b19..04ad6c8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -109,6 +109,8 @@ Individual headings (h1-h6) get `fontStyle: 'normal'` default via `ensureFontSty Link's `hoverColor` generates `:hover` pseudo-class in both theme.json (nested `":hover"` key) and SCSS (`:where(a:hover)` rule). +**Root spacing tokens**: `baseStyles.spacing` also produces `--{prefix}--root-padding-x`/`-y`, `--{prefix}--root-padding-{top,right,bottom,left}` and `--{prefix}--root-block-gap`. `src/generators/root-tokens.ts` builds them; `tokens.css`/`tokens.wp.css` declare them on `:root` and `tokens.js` mirrors them as `root`. `padding` accepts `x`, `y` and the four sides; `resolveRootPadding()` in `config.ts` is the single source of truth — an axis is its explicit value or the value both its sides share, and a side is its explicit value or its axis (emitted as a `var()` alias of the axis token). `layout.css` holds only rules: its `.has-global-padding` rules read the side tokens so per-side overrides still match theme.json, where `x`/`y` expand to the four sides. + ### Locked vs Themeable Mode - **`themeable: false`** (default): Hardcoded token values, `custom`/`customDuotone`/`customGradient` set to `false` in theme.json. integrate.php enforces layout lock and editor restrictions at theme layer. @@ -143,6 +145,7 @@ src/ generators/ tokens-css.ts CSS custom properties (:root { --prefix--* }) tokens-wp-css.ts WordPress preset-mapped CSS variables + root-tokens.ts Root spacing tokens from baseStyles.spacing (shared by tokens css/wp.css/js) theme-json.ts WordPress theme.json (settings + styles) fonts-css.ts @font-face declarations copy-fonts.ts Font file copying from fontsDir to dist diff --git a/c2b.config.example.json b/c2b.config.example.json index 8e3e391..a85b892 100644 --- a/c2b.config.example.json +++ b/c2b.config.example.json @@ -127,10 +127,8 @@ "blockGap": "medium", "entryContent": "large", "padding": { - "top": "0", - "right": "large", - "bottom": "0", - "left": "large" + "x": "large", + "y": "0" } } } diff --git a/dist/config.d.ts b/dist/config.d.ts index 23ee69b..01ef9ea 100644 --- a/dist/config.d.ts +++ b/dist/config.d.ts @@ -1,4 +1,4 @@ -import type { C2bConfig, C2bConfigInput, TokenCategory, BaseStyleElementDef, BaseStylesConfig } from './types.js'; +import type { C2bConfig, C2bConfigInput, TokenCategory, BaseStyleElementDef, BaseStylesConfig, BaseStylesSpacingPadding } from './types.js'; export declare function loadConfig(configPath?: string): C2bConfig; export declare function validateConfig(input: C2bConfigInput): C2bConfig; export interface ResolvedTokenRef { @@ -35,6 +35,17 @@ export declare function resolveForThemeJson(value: string, tokens: C2bConfig['to * If the config doesn't specify fontStyle, default to "normal". */ export declare function ensureFontStyle(def: BaseStyleElementDef): BaseStyleElementDef; +/** + * Resolve `baseStyles.spacing.padding` into its two axes and four sides — the + * single source of truth for root padding in the token outputs, layout.css and + * theme.json. Values stay as written in config (token keys or raw CSS). + * + * - An axis is its explicit `x`/`y`, else the shared value when both of its + * sides are set and identical. A lone or asymmetric pair has no single axis + * value, so the axis stays undefined. + * - A side is its explicit value, else its axis. + */ +export declare function resolveRootPadding(padding: BaseStylesSpacingPadding | undefined): BaseStylesSpacingPadding; /** Classification result for a baseStyles value. */ export type BaseStyleValueClass = { kind: 'token'; diff --git a/dist/config.d.ts.map b/dist/config.d.ts.map index 46c3da6..17c7cf6 100644 --- a/dist/config.d.ts.map +++ b/dist/config.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAe,aAAa,EAA4D,mBAAmB,EAAE,gBAAgB,EAAc,MAAM,YAAY,CAAC;AAWrM,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAkBzD;AAsJD,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CA2D/D;AAoGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,cAAc,CAAC,EAAE,aAAa,GAC7B,gBAAgB,GAAG,IAAI,CA8BzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,cAAc,CAAC,EAAE,aAAa,GAC7B,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,cAAc,CAAC,EAAE,aAAa,GAC7B,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB,CAG7E;AAsJD,oDAAoD;AACpD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,gBAAgB,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,mBAAmB,CAkCrB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,MAAM,CAMR;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,MAAM,CAaR;AAgCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,IAAI,CAgEN"} \ No newline at end of file +{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAe,aAAa,EAA4D,mBAAmB,EAAE,gBAAgB,EAAE,wBAAwB,EAAc,MAAM,YAAY,CAAC;AAW/N,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAkBzD;AAsJD,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CA2D/D;AAoGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,cAAc,CAAC,EAAE,aAAa,GAC7B,gBAAgB,GAAG,IAAI,CA8BzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,cAAc,CAAC,EAAE,aAAa,GAC7B,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3B,cAAc,CAAC,EAAE,aAAa,GAC7B,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB,CAG7E;AAKD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,GAAG,SAAS,GAAG,wBAAwB,CAY1G;AA2JD,oDAAoD;AACpD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,gBAAgB,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,mBAAmB,CAkCrB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,MAAM,CAMR;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,MAAM,CAaR;AAgCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,IAAI,CA0EN"} \ No newline at end of file diff --git a/dist/config.js b/dist/config.js index 663e8fb..834df08 100644 --- a/dist/config.js +++ b/dist/config.js @@ -344,6 +344,36 @@ export function ensureFontStyle(def) { return def; return { ...def, fontStyle: 'normal' }; } +/** Keys accepted under `baseStyles.spacing.padding`. */ +const ROOT_PADDING_KEYS = ['x', 'y', 'top', 'right', 'bottom', 'left']; +/** + * Resolve `baseStyles.spacing.padding` into its two axes and four sides — the + * single source of truth for root padding in the token outputs, layout.css and + * theme.json. Values stay as written in config (token keys or raw CSS). + * + * - An axis is its explicit `x`/`y`, else the shared value when both of its + * sides are set and identical. A lone or asymmetric pair has no single axis + * value, so the axis stays undefined. + * - A side is its explicit value, else its axis. + */ +export function resolveRootPadding(padding) { + if (!padding) + return {}; + const x = padding.x ?? sharedValue(padding.right, padding.left); + const y = padding.y ?? sharedValue(padding.top, padding.bottom); + return { + x, + y, + top: padding.top ?? y, + right: padding.right ?? x, + bottom: padding.bottom ?? y, + left: padding.left ?? x, + }; +} +/** The value two sides share, or undefined when either is unset or they differ. */ +function sharedValue(a, b) { + return a !== undefined && a === b ? a : undefined; +} /** * Keys WordPress recognizes under `settings.viewport`. Anything else is silently * dropped by core, so c2b rejects it at config load instead of writing dead output. @@ -620,15 +650,23 @@ export function validateBaseStyles(baseStyles, tokens) { } } } - // Spacing padding sides - if (baseStyles.spacing?.padding) { - for (const side of ['top', 'right', 'bottom', 'left']) { - const value = baseStyles.spacing.padding[side]; + // Spacing padding — the x/y axes and the four sides. Unknown keys throw: + // every output reads only these six, so a typo would otherwise vanish. + const padding = baseStyles.spacing?.padding; + if (padding) { + for (const key of Object.keys(padding)) { + if (!ROOT_PADDING_KEYS.includes(key)) { + throw new Error(`Config error: baseStyles.spacing.padding.${key} is not a supported padding key.\n` + + ` Supported keys: ${ROOT_PADDING_KEYS.map(k => `"${k}"`).join(', ')}.`); + } + } + for (const key of ROOT_PADDING_KEYS) { + const value = padding[key]; if (value === undefined) continue; const c = classifyBaseStyleValue(value, 'padding', tokens); if (c.kind === 'invalid') { - throw new Error(buildBaseStyleValueError(`spacing.padding.${side}`, value, 'padding', c)); + throw new Error(buildBaseStyleValueError(`spacing.padding.${key}`, value, 'padding', c)); } } } diff --git a/dist/config.js.map b/dist/config.js.map index c116821..982019c 100644 --- a/dist/config.js.map +++ b/dist/config.js.map @@ -1 +1 @@ -{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3J,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,SAAS;CACZ,CAAC;AAEX,8EAA8E;AAC9E,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAU,CAAC;AAEnF,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAC;IAE9D,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,KAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;QAC3B,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;QAC3B,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,gBAAwB;IAChD,MAAM,GAAG,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;AACzB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,GAAW,EACX,KAAsB,EACtB,WAAqB,EACrB,gBAAyB;IAEzB,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAE9C,IAAI,KAAiB,CAAC;IAEtB,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;SAAM,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,sEAAsE;QACtE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,GAAG,KAAmB,EAAE,CAAC;IACrC,CAAC;IAED,qDAAqD;IACrD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,6DAA6D;IAC7D,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpF,MAAM,SAAS,GAAG,WAAW;QAC3B,CAAC,CAAC,CAAC,aAAa,CAAE,qEAAqE;QACvF,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;IAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,KAAsB,EACtB,WAAqB,EACrB,gBAAyB;IAEzB,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,UAAU,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAqB;IAC1C,MAAM,MAAM,GAA+C,EAAE,CAAC;IAC9D,MAAM,oBAAoB,GAAG;QAC3B,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAClC,GAAG,gBAAgB;KACpB,CAAC;IAEF,6DAA6D;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,mEAAmE;QACnE,IAAK,WAAiC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QAE/D,wBAAwB;QACxB,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAElC,kCAAkC;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,yEAAyE;YACzE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAS;YAC5B,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,CAAC;QAC/D,CAAC;QAED,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAExD,yBAAyB;QACzB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,gBAAiC,CAAC,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,yCAAyC,GAAG,KAAK;gBACjD,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9B,qBAAqB,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7I,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,gBAAiC,CAAC,GAAG,mBAAmB,CAC7D,KAAwB,EACxB,GAAG,CAAC,SAAS,EACb,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,yBAAyB;IACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,kBAAkB,CAAC,QAAQ,EAAE,KAAmB,CAAC,CAAC;IACpD,CAAC;IAED,yDAAyD;IACzD,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE7C,2DAA2D;IAC3D,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAElC,0BAA0B;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;IAEpD,0CAA0C;IAC1C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,oCAAoC,QAAQ,oBAAoB;gBAChE,8EAA8E,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAI,MAAM,CAAC,MAAiC,EAAE,QAAQ,EAAE,KAAK,CAAC;IAClF,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAE9D,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM;QACN,SAAS;QACT,SAAS,EAAE,SAAS,KAAK,IAAI;QAC7B,QAAQ;QACR,WAAW;QACX,QAAQ;QACR,iBAAiB;QACjB,OAAO;QACP,aAAa;QACb,MAAM;QACN,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,kBAAkB,GAA2B;IACjD,UAAU,EACR,kFAAkF;QAClF,iFAAiF;QACjF,mDAAmD;CACtD,CAAC;AAEF;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,KAA2B;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG;QACtB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAClC,GAAG,gBAAgB;KACpB,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAyB,CAAC,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,KAAK;gBACrE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9B,qBAAqB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAyB,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,QAAyB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CACzB,KAAuC,EACvC,cAAuB;IAEvB,MAAM,MAAM,GAAgB;QAC1B,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,aAAa,CAAC,WAAW;QAC5D,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,cAAc,IAAI,aAAa,CAAC,WAAW;KAC/E,CAAC;IAEF,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAErE,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,WAAW,0CAA0C,MAAM,CAAC,WAAW,IAAI,CACvH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,IAAY;IAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,OAAO,KAAK,uDAAuD,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAA2B,EAC3B,cAA8B;IAE9B,2DAA2D;IAC3D,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC9C,OAAO;gBACL,QAAQ,EAAE,cAAc;gBACxB,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;gBACvB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO;gBACL,QAAQ,EAAE,QAAyB;gBACnC,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;gBACvB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,MAAc,EACd,MAA2B,EAC3B,cAA8B;IAE9B,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,SAAS,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,MAA2B,EAC3B,cAA8B;IAE9B,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,OAAO,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAwB;IACtD,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAC5C,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEpD;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAyB;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAC,KAA6B;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO;IAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAAE,OAAO;IACxC,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QAAE,OAAO;IAExC,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,CAAC,MAAO,CAAC,KAAK,wBAAwB;QAC7E,oBAAoB,KAAK,CAAC,MAAO,CAAC,KAAK,MAAM;QAC7C,qEAAqE;QACrE,IAAI,KAAK,CAAC,MAAO,CAAC,KAAK,eAAe,KAAK,CAAC,MAAO,CAAC,KAAK,0CAA0C,CACpG,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,KAAiB;IAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAE,aAAmC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,KAAK,CACb,iCAAiC,GAAG,sCAAsC;gBAC1E,+BAA+B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CACzG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,IAAI,GAAG,yBAAyB,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,IAAI,GAAG,2BAA2B,CAAC,CAAC;QACtF,CAAC;QAED,uCAAuC;QACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7C,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,IAAI,GAAG,aAAa,CAAC,4CAA4C,CAAC,CAAC;gBACrH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,wDAAwD;AACxD,EAAE;AACF,8CAA8C;AAC9C,gFAAgF;AAChF,oFAAoF;AACpF,iFAAiF;AACjF,uEAAuE;AACvE,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,iBAAiB,GAAkC;IACvD,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,cAAc;IACrB,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,gBAAgB,EAAE,SAAS;IAC3B,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,YAAY,GAAgC;IAChD,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClF,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3F,UAAU,EAAE,IAAI,GAAG,CAAC;QAClB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS;QACxD,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc;QACxD,SAAS,EAAE,SAAS,EAAE,OAAO;KAC9B,CAAC;IACF,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACjE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9E,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACnF,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;CACpF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAElE,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,QAAgB,EAChB,MAA2B;IAE3B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAErD,6DAA6D;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE;oBACH,QAAQ;oBACR,GAAG,EAAE,KAAK;oBACV,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;oBACvB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAErD,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAE5D,mEAAmE;IACnE,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ;QACR,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;KAC/D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,QAAgB,EAChB,MAAc,EACd,MAA2B;IAE3B,MAAM,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,SAAS,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAAa,EACb,QAAgB,EAChB,MAA2B;IAE3B,MAAM,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,0EAA0E;QAC1E,uEAAuE;QACvE,qEAAqE;QACrE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QACjD,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAC/B,OAAe,EACf,KAAa,EACb,QAAgB,EAChB,cAAiE;IAEjE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;IAC/C,MAAM,MAAM,GAAG,4BAA4B,OAAO,OAAO,KAAK,8CAA8C,QAAQ,IAAI,CAAC;IAEzH,IAAI,QAAQ,EAAE,CAAC;QACb,kEAAkE;QAClE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;QACzG,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACrF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC;YAC/C,CAAC,CAAC,yCAAyC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC7E,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,GAAG,MAAM,wCAAwC,YAAY,gBAAgB,aAAa,KAAK,WAAW,qGAAqG,CAAC;IACzN,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1E,OAAO,GAAG,MAAM,+BAA+B,WAAW,uBAAuB,CAAC;AACpF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAwC,EACxC,MAA2B;IAE3B,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,mEAAmE;IACnE,kEAAkE;IAClE,yBAAyB;IACzB,MAAM,QAAQ,GAAqD;QACjE,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;QACzB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAA8C,CAAC;KACtG,CAAC;IAEF,MAAM,KAAK,GAAqC;QAC9C,GAAG,qBAAqB;QACxB,OAAO,EAAE,YAAY,EAAE,YAAY;QACnC,kBAAkB;KACnB,CAAC;IAEF,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,mBAAmB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,UAAU,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,UAAU,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/generators/layout-css.d.ts b/dist/generators/layout-css.d.ts index b7e3cbf..3b0d57a 100644 --- a/dist/generators/layout-css.d.ts +++ b/dist/generators/layout-css.d.ts @@ -1,11 +1,13 @@ import type { C2bConfig } from '../types.js'; /** - * Emit layout.css — root padding/block-gap CSS variables on `body` plus the - * layout-utility rules (block-gap on constrained/flex/grid, layout constraint - * for content/wide widths, has-global-padding helpers, alignfull bleed). + * Emit layout.css — the layout-utility rules: block-gap on constrained/flex/grid, + * layout constraint for content/wide widths, has-global-padding helpers, + * alignfull bleed. * - * Per-element typography lives in base-styles.css; flow-spacing rules live in - * typography.css. This file is the layout-only output. + * The root padding and block-gap custom properties these rules read are tokens, + * declared on :root in tokens.css (see root-tokens.ts) so they also exist where + * this file isn't loaded. Per-element typography lives in base-styles.css; + * flow-spacing rules live in typography.css. * * Returns null when no layout-relevant config is present. */ diff --git a/dist/generators/layout-css.d.ts.map b/dist/generators/layout-css.d.ts.map index def869e..1ff715d 100644 --- a/dist/generators/layout-css.d.ts.map +++ b/dist/generators/layout-css.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"layout-css.d.ts","sourceRoot":"","sources":["../../src/generators/layout-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA+C,MAAM,aAAa,CAAC;AAK1F;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAiElE"} \ No newline at end of file +{"version":3,"file":"layout-css.d.ts","sourceRoot":"","sources":["../../src/generators/layout-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAwDlE"} \ No newline at end of file diff --git a/dist/generators/layout-css.js b/dist/generators/layout-css.js index 9847718..a54da26 100644 --- a/dist/generators/layout-css.js +++ b/dist/generators/layout-css.js @@ -1,40 +1,30 @@ -import { resolveBaseStyleValueForScss } from '../config.js'; -const PADDING_SIDES = ['top', 'right', 'bottom', 'left']; +import { resolveBaseStyleValueForScss, resolveRootPadding } from '../config.js'; /** - * Emit layout.css — root padding/block-gap CSS variables on `body` plus the - * layout-utility rules (block-gap on constrained/flex/grid, layout constraint - * for content/wide widths, has-global-padding helpers, alignfull bleed). + * Emit layout.css — the layout-utility rules: block-gap on constrained/flex/grid, + * layout constraint for content/wide widths, has-global-padding helpers, + * alignfull bleed. * - * Per-element typography lives in base-styles.css; flow-spacing rules live in - * typography.css. This file is the layout-only output. + * The root padding and block-gap custom properties these rules read are tokens, + * declared on :root in tokens.css (see root-tokens.ts) so they also exist where + * this file isn't loaded. Per-element typography lives in base-styles.css; + * flow-spacing rules live in typography.css. * * Returns null when no layout-relevant config is present. */ export function generateLayoutCss(config) { const { baseStyles, prefix, tokens } = config; - const hasSpacingPadding = !!baseStyles?.spacing?.padding; + const { right, left } = resolveRootPadding(baseStyles?.spacing?.padding); + const hasHorizontalPadding = right !== undefined || left !== undefined; const hasBlockGap = !!baseStyles?.spacing?.blockGap; const hasLayoutTokens = !!tokens.layout; const hasEntryContent = !!baseStyles?.spacing?.entryContent; - if (!hasSpacingPadding && !hasBlockGap && !hasLayoutTokens && !hasEntryContent) { + if (!hasHorizontalPadding && !hasBlockGap && !hasLayoutTokens && !hasEntryContent) { return null; } + // Each section below opens with its own blank separator line. const lines = [ '/* Auto-generated by component2block — do not edit manually */', - '', ]; - // Body block — root padding vars + block-gap var. Used by .has-global-padding - // and the > * + * block-gap rule below. - if (hasSpacingPadding || hasBlockGap) { - lines.push('body {'); - if (baseStyles?.spacing?.padding) { - appendRootPaddingVars(lines, baseStyles.spacing.padding, prefix, tokens); - } - if (baseStyles?.spacing?.blockGap) { - appendBlockGapVar(lines, baseStyles.spacing, prefix, tokens); - } - lines.push('}'); - } if (hasBlockGap) { appendBlockGapRules(lines, prefix); } @@ -44,7 +34,10 @@ export function generateLayoutCss(config) { if (hasLayoutTokens) { appendLayoutConstraintRules(lines, prefix, tokens); } - if (hasSpacingPadding) { + // Root padding-aware alignment. Reads the side tokens rather than the x axis: + // they alias --{prefix}--root-padding-x unless a side is set on its own, and + // then they still match what WordPress applies from theme.json. + if (hasHorizontalPadding) { lines.push(''); lines.push('.has-global-padding {'); lines.push(` padding-right: var(--${prefix}--root-padding-right);`); @@ -65,21 +58,6 @@ export function generateLayoutCss(config) { lines.push(''); return lines.join('\n'); } -function appendRootPaddingVars(lines, padding, prefix, tokens) { - for (const side of PADDING_SIDES) { - const value = padding[side]; - if (value === undefined) - continue; - const resolvedValue = resolveBaseStyleValueForScss(value, 'padding', prefix, tokens); - lines.push(` --${prefix}--root-padding-${side}: ${resolvedValue};`); - } -} -function appendBlockGapVar(lines, spacing, prefix, tokens) { - if (!spacing.blockGap) - return; - const resolvedValue = resolveBaseStyleValueForScss(spacing.blockGap, 'blockGap', prefix, tokens); - lines.push(` --${prefix}--root-block-gap: ${resolvedValue};`); -} /** * Block-gap utility rules mirroring WordPress layout behavior: * - constrained/flow layouts: reset all children's vertical margins, then diff --git a/dist/generators/layout-css.js.map b/dist/generators/layout-css.js.map index 049e2e1..946c460 100644 --- a/dist/generators/layout-css.js.map +++ b/dist/generators/layout-css.js.map @@ -1 +1 @@ -{"version":3,"file":"layout-css.js","sourceRoot":"","sources":["../../src/generators/layout-css.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"layout-css.js","sourceRoot":"","sources":["../../src/generators/layout-css.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/generators/root-tokens.d.ts b/dist/generators/root-tokens.d.ts new file mode 100644 index 0000000..089aa7f --- /dev/null +++ b/dist/generators/root-tokens.d.ts @@ -0,0 +1,23 @@ +import type { C2bConfig } from '../types.js'; +/** + * Root spacing tokens derived from `baseStyles.spacing`: the root padding axes + * (`padding-x`, `padding-y`), the four sides, and `block-gap`. Keys are relative + * to the `root` segment, so `padding-x` becomes `--{prefix}--root-padding-x`. + * + * tokens.css and tokens.wp.css declare these on :root and tokens.js mirrors + * them, so components can reuse the page gutter anywhere — including WordPress + * block themes, which don't load layout.css. + * + * A side that isn't set on its own, or matches its axis, aliases the axis token + * (`var(--{prefix}--root-padding-x)`), so one axis value drives both sides. + */ +export declare function buildRootTokens(config: C2bConfig): Array<{ + key: string; + value: string; +}>; +/** + * Append the root spacing tokens to a `:root { }` body under a `Root Spacing` + * label. `separate` adds a blank line first, for when category groups precede it. + */ +export declare function appendRootTokens(lines: string[], config: C2bConfig, separate: boolean): void; +//# sourceMappingURL=root-tokens.d.ts.map \ No newline at end of file diff --git a/dist/generators/root-tokens.d.ts.map b/dist/generators/root-tokens.d.ts.map new file mode 100644 index 0000000..13c9876 --- /dev/null +++ b/dist/generators/root-tokens.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"root-tokens.d.ts","sourceRoot":"","sources":["../../src/generators/root-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW7C;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BxF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAS5F"} \ No newline at end of file diff --git a/dist/generators/root-tokens.js b/dist/generators/root-tokens.js new file mode 100644 index 0000000..f0281ea --- /dev/null +++ b/dist/generators/root-tokens.js @@ -0,0 +1,65 @@ +import { resolveBaseStyleValueForScss, resolveRootPadding } from '../config.js'; +/** Each root padding side and the axis it falls back to, in CSS shorthand order. */ +const SIDE_AXES = [ + ['top', 'y'], + ['right', 'x'], + ['bottom', 'y'], + ['left', 'x'], +]; +/** + * Root spacing tokens derived from `baseStyles.spacing`: the root padding axes + * (`padding-x`, `padding-y`), the four sides, and `block-gap`. Keys are relative + * to the `root` segment, so `padding-x` becomes `--{prefix}--root-padding-x`. + * + * tokens.css and tokens.wp.css declare these on :root and tokens.js mirrors + * them, so components can reuse the page gutter anywhere — including WordPress + * block themes, which don't load layout.css. + * + * A side that isn't set on its own, or matches its axis, aliases the axis token + * (`var(--{prefix}--root-padding-x)`), so one axis value drives both sides. + */ +export function buildRootTokens(config) { + const { baseStyles, prefix, tokens } = config; + const spacing = baseStyles?.spacing; + if (!spacing) + return []; + const result = []; + if (spacing.padding) { + const axes = resolveRootPadding(spacing.padding); + for (const axis of ['x', 'y']) { + const value = axes[axis]; + if (value === undefined) + continue; + result.push({ key: `padding-${axis}`, value: resolveBaseStyleValueForScss(value, 'padding', prefix, tokens) }); + } + for (const [side, axis] of SIDE_AXES) { + const own = spacing.padding[side]; + if (own !== undefined && own !== axes[axis]) { + result.push({ key: `padding-${side}`, value: resolveBaseStyleValueForScss(own, 'padding', prefix, tokens) }); + } + else if (axes[axis] !== undefined) { + result.push({ key: `padding-${side}`, value: `var(--${prefix}--root-padding-${axis})` }); + } + } + } + if (spacing.blockGap !== undefined) { + result.push({ key: 'block-gap', value: resolveBaseStyleValueForScss(spacing.blockGap, 'blockGap', prefix, tokens) }); + } + return result; +} +/** + * Append the root spacing tokens to a `:root { }` body under a `Root Spacing` + * label. `separate` adds a blank line first, for when category groups precede it. + */ +export function appendRootTokens(lines, config, separate) { + const rootTokens = buildRootTokens(config); + if (rootTokens.length === 0) + return; + if (separate) + lines.push(''); + lines.push(' /* Root Spacing */'); + for (const { key, value } of rootTokens) { + lines.push(` --${config.prefix}--root-${key}: ${value};`); + } +} +//# sourceMappingURL=root-tokens.js.map \ No newline at end of file diff --git a/dist/generators/root-tokens.js.map b/dist/generators/root-tokens.js.map new file mode 100644 index 0000000..2252f4e --- /dev/null +++ b/dist/generators/root-tokens.js.map @@ -0,0 +1 @@ +{"version":3,"file":"root-tokens.js","sourceRoot":"","sources":["../../src/generators/root-tokens.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/generators/theme-json.js b/dist/generators/theme-json.js index 385acb7..e91d97e 100644 --- a/dist/generators/theme-json.js +++ b/dist/generators/theme-json.js @@ -1,5 +1,5 @@ import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, ELEMENT_REGISTRY, TYPOGRAPHY_PROPERTIES } from '../types.js'; -import { resolveBaseStyleValueForThemeJson, ensureFontStyle } from '../config.js'; +import { resolveBaseStyleValueForThemeJson, ensureFontStyle, resolveRootPadding } from '../config.js'; export function generateThemeJson(config) { const settings = {}; const custom = {}; @@ -186,8 +186,12 @@ function buildStylesBlock(baseStyles, tokens) { spacingBlock.blockGap = resolveBaseStyleValueForThemeJson(baseStyles.spacing.blockGap, 'blockGap', tokens); } if (baseStyles.spacing.padding) { + // WordPress only takes sides: x/y expand to them, and an explicit side + // wins over its axis. + const sides = resolveRootPadding(baseStyles.spacing.padding); const padding = {}; - for (const [side, value] of Object.entries(baseStyles.spacing.padding)) { + for (const side of ['top', 'right', 'bottom', 'left']) { + const value = sides[side]; if (value !== undefined) { padding[side] = resolveBaseStyleValueForThemeJson(value, 'padding', tokens); } diff --git a/dist/generators/theme-json.js.map b/dist/generators/theme-json.js.map index 8616242..11e6b94 100644 --- a/dist/generators/theme-json.js.map +++ b/dist/generators/theme-json.js.map @@ -1 +1 @@ -{"version":3,"file":"theme-json.js","sourceRoot":"","sources":["../../src/generators/theme-json.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"theme-json.js","sourceRoot":"","sources":["../../src/generators/theme-json.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/generators/tokens-css.d.ts.map b/dist/generators/tokens-css.d.ts.map index 659756f..e2d3a6e 100644 --- a/dist/generators/tokens-css.d.ts.map +++ b/dist/generators/tokens-css.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"tokens-css.d.ts","sourceRoot":"","sources":["../../src/generators/tokens-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAmC3D"} \ No newline at end of file +{"version":3,"file":"tokens-css.d.ts","sourceRoot":"","sources":["../../src/generators/tokens-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAqC3D"} \ No newline at end of file diff --git a/dist/generators/tokens-css.js b/dist/generators/tokens-css.js index 0961a12..ae53c85 100644 --- a/dist/generators/tokens-css.js +++ b/dist/generators/tokens-css.js @@ -1,5 +1,6 @@ import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, camelToKebab } from '../types.js'; import { buildFluidClamp } from './fluid.js'; +import { appendRootTokens } from './root-tokens.js'; export function generateTokensCss(config) { const lines = [ '/* Auto-generated by component2block — do not edit manually */', @@ -25,6 +26,7 @@ export function generateTokensCss(config) { lines.push(` ${varName}: ${clampValue ?? entry.value};`); } } + appendRootTokens(lines, config, !firstCategory); lines.push('}'); lines.push(''); return lines.join('\n'); diff --git a/dist/generators/tokens-css.js.map b/dist/generators/tokens-css.js.map index 53a9806..26ec946 100644 --- a/dist/generators/tokens-css.js.map +++ b/dist/generators/tokens-css.js.map @@ -1 +1 @@ -{"version":3,"file":"tokens-css.js","sourceRoot":"","sources":["../../src/generators/tokens-css.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,KAAK,GAAa;QACtB,gEAAgE;QAChE,EAAE;QACF,SAAS;KACV,CAAC;IAEF,IAAI,aAAa,GAAG,IAAI,CAAC;IAEzB,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,aAAa,GAAG,KAAK,CAAC;QAEtB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,sEAAsE;YACtE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACvD,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9F,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file +{"version":3,"file":"tokens-css.js","sourceRoot":"","sources":["../../src/generators/tokens-css.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,KAAK,GAAa;QACtB,gEAAgE;QAChE,EAAE;QACF,SAAS;KACV,CAAC;IAEF,IAAI,aAAa,GAAG,IAAI,CAAC;IAEzB,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,aAAa,GAAG,KAAK,CAAC;QAEtB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,sEAAsE;YACtE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACvD,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9F,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file diff --git a/dist/generators/tokens-js.d.ts.map b/dist/generators/tokens-js.d.ts.map index 2aef81f..7483d3f 100644 --- a/dist/generators/tokens-js.d.ts.map +++ b/dist/generators/tokens-js.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"tokens-js.d.ts","sourceRoot":"","sources":["../../src/generators/tokens-js.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA6B7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAQ3D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAkD1D"} \ No newline at end of file +{"version":3,"file":"tokens-js.d.ts","sourceRoot":"","sources":["../../src/generators/tokens-js.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA8B7C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAQ3D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA2D1D"} \ No newline at end of file diff --git a/dist/generators/tokens-js.js b/dist/generators/tokens-js.js index 5393139..17d3a48 100644 --- a/dist/generators/tokens-js.js +++ b/dist/generators/tokens-js.js @@ -1,5 +1,6 @@ import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, kebabToCamel } from '../types.js'; import { buildFluidClamp } from './fluid.js'; +import { buildRootTokens } from './root-tokens.js'; const VALID_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/; // Wraps a token value in a single-quoted JS string literal. Values are raw CSS, // and font stacks carry their own quotes ("'Inter Tight', system-ui"), which @@ -57,6 +58,14 @@ export function generateTokensJs(config) { populated.push({ jsKey, entries }); } } + // Root spacing tokens aren't a category — they're derived from baseStyles.spacing. + const rootTokens = buildRootTokens(config); + if (rootTokens.length > 0) { + populated.push({ + jsKey: 'root', + entries: rootTokens.map(({ key, value }) => ({ jsTokenKey: toJsIdentifier(key), value })), + }); + } populated.forEach(({ jsKey, entries }, catIdx) => { const lastCat = catIdx === populated.length - 1; lines.push(` ${emitKey(jsKey)}: {`); diff --git a/dist/generators/tokens-js.js.map b/dist/generators/tokens-js.js.map index 5c61e6f..e51ba75 100644 --- a/dist/generators/tokens-js.js.map +++ b/dist/generators/tokens-js.js.map @@ -1 +1 @@ -{"version":3,"file":"tokens-js.js","sourceRoot":"","sources":["../../src/generators/tokens-js.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tokens-js.js","sourceRoot":"","sources":["../../src/generators/tokens-js.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/generators/tokens-wp-css.d.ts.map b/dist/generators/tokens-wp-css.d.ts.map index 5f055d8..6cac414 100644 --- a/dist/generators/tokens-wp-css.d.ts.map +++ b/dist/generators/tokens-wp-css.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"tokens-wp-css.d.ts","sourceRoot":"","sources":["../../src/generators/tokens-wp-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAwC7D"} \ No newline at end of file +{"version":3,"file":"tokens-wp-css.d.ts","sourceRoot":"","sources":["../../src/generators/tokens-wp-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA4C7D"} \ No newline at end of file diff --git a/dist/generators/tokens-wp-css.js b/dist/generators/tokens-wp-css.js index 4e6cf04..afdc8d3 100644 --- a/dist/generators/tokens-wp-css.js +++ b/dist/generators/tokens-wp-css.js @@ -1,5 +1,6 @@ import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, camelToKebab } from '../types.js'; import { buildFluidClamp } from './fluid.js'; +import { appendRootTokens } from './root-tokens.js'; export function generateTokensWpCss(config) { const lines = [ '/* Auto-generated by component2block — do not edit manually */', @@ -30,6 +31,9 @@ export function generateTokensWpCss(config) { } } } + // Same values as tokens.css: they alias spacing tokens, which already map to + // --wp--preset--spacing--* above. + appendRootTokens(lines, config, !firstCategory); lines.push('}'); lines.push(''); return lines.join('\n'); diff --git a/dist/generators/tokens-wp-css.js.map b/dist/generators/tokens-wp-css.js.map index 8e852e8..6b2c578 100644 --- a/dist/generators/tokens-wp-css.js.map +++ b/dist/generators/tokens-wp-css.js.map @@ -1 +1 @@ -{"version":3,"file":"tokens-wp-css.js","sourceRoot":"","sources":["../../src/generators/tokens-wp-css.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,KAAK,GAAa;QACtB,gEAAgE;QAChE,EAAE;QACF,SAAS;KACV,CAAC;IAEF,IAAI,aAAa,GAAG,IAAI,CAAC;IAEzB,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,aAAa,GAAG,KAAK,CAAC;QAEtB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,sEAAsE;YACtE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACvD,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAElH,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,SAAS,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file +{"version":3,"file":"tokens-wp-css.js","sourceRoot":"","sources":["../../src/generators/tokens-wp-css.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,KAAK,GAAa;QACtB,gEAAgE;QAChE,EAAE;QACF,SAAS;KACV,CAAC;IAEF,IAAI,aAAa,GAAG,IAAI,CAAC;IAEzB,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,aAAa,GAAG,KAAK,CAAC;QAEtB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,sEAAsE;YACtE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACvD,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAElH,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,SAAS,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,kCAAkC;IAClC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts index cb5c24b..c614abe 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -54,8 +54,15 @@ export declare const HEADING_KEYS: Array<"h1" | "h2" | "h3" | "h4" | "h5" | "h6" * generator (typography.fontFamily/fontSize/...) so the two outputs can't drift. */ export declare const TYPOGRAPHY_PROPERTIES: Array<'fontFamily' | 'fontSize' | 'fontStyle' | 'fontWeight' | 'lineHeight' | 'letterSpacing'>; -/** Padding values for each side */ +/** + * Root padding. `x` and `y` set both sides of an axis; an explicit side wins + * over its axis. Every value is a spacing token key or a raw CSS value. + */ export interface BaseStylesSpacingPadding { + /** Horizontal root padding — the default for `right` and `left`. */ + x?: string; + /** Vertical root padding — the default for `top` and `bottom`. */ + y?: string; top?: string; right?: string; bottom?: string; diff --git a/dist/types.d.ts.map b/dist/types.d.ts.map index 35e2b72..3c4b987 100644 --- a/dist/types.d.ts.map +++ b/dist/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/types.js.map b/dist/types.js.map index 828e489..0e358ac 100644 --- a/dist/types.js.map +++ b/dist/types.js.map @@ -1 +1 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/config/base-styles.md b/docs/config/base-styles.md index 1644520..19bc58f 100644 --- a/docs/config/base-styles.md +++ b/docs/config/base-styles.md @@ -43,10 +43,8 @@ The `baseStyles` section sits at the top level of the config alongside `prefix`, "spacing": { "blockGap": "medium", "padding": { - "top": "0", - "right": "large", - "bottom": "0", - "left": "large" + "x": "large", + "y": "0" } } } @@ -272,10 +270,8 @@ The `spacing` key within `baseStyles` controls root-level block gap and page pad "spacing": { "blockGap": "medium", "padding": { - "top": "0", - "right": "large", - "bottom": "0", - "left": "large" + "x": "large", + "y": "0" } } } @@ -284,12 +280,12 @@ The `spacing` key within `baseStyles` controls root-level block gap and page pad ### blockGap -Controls the default vertical spacing between WordPress blocks. Generates a CSS custom property and layout utility rules: +Controls the default vertical spacing between WordPress blocks. Generates a root spacing token in `tokens.css` and layout utility rules in `layout.css`: -**SCSS output:** +**CSS output:** -```scss -body { +```css +:root { --mylib--root-block-gap: var(--mylib--spacing-medium); } @@ -326,16 +322,18 @@ The layout utility rules mirror WordPress's block gap behavior: ### padding -Controls root-level page padding. Only defined sides are output. Generates root padding CSS custom properties and WordPress-compatible global padding utility classes: +Controls root-level page padding. Set an axis with `x` (right and left) or `y` (top and bottom), a single side with `top`, `right`, `bottom` or `left`, or mix them — a side set on its own wins over its axis. Generates root spacing tokens in `tokens.css` and WordPress-compatible global padding utility classes in `layout.css`: -**SCSS output:** +**CSS output:** -```scss -body { - --mylib--root-padding-top: 0; - --mylib--root-padding-right: var(--mylib--spacing-large); - --mylib--root-padding-bottom: 0; - --mylib--root-padding-left: var(--mylib--spacing-large); +```css +:root { + --mylib--root-padding-x: var(--mylib--spacing-large); + --mylib--root-padding-y: 0; + --mylib--root-padding-top: var(--mylib--root-padding-y); + --mylib--root-padding-right: var(--mylib--root-padding-x); + --mylib--root-padding-bottom: var(--mylib--root-padding-y); + --mylib--root-padding-left: var(--mylib--root-padding-x); } .has-global-padding { @@ -355,7 +353,9 @@ body { } ``` -The `.has-global-padding` and `.alignfull` rules mirror WordPress's root padding-aware alignment system. Full-width blocks break out of the content padding, while nested content within them retains it. +The `.has-global-padding` and `.alignfull` rules mirror WordPress's root padding-aware alignment system. Full-width blocks break out of the content padding, while nested content within them retains it. The rules read the side tokens rather than `-x`, so a per-side override still matches what WordPress applies from theme.json. + +Components can read the same tokens — `padding-inline: var(--mylib--root-padding-x)` lines a component up with the page gutter. See [Spacing](./spacing.md#root-padding) for how sides fall back to their axis. **theme.json output:** @@ -404,7 +404,7 @@ All elements support the following properties. Values are classified strictly pe | Property | Expected token category | CSS keyword fallbacks | |----------|------------------------|----------------------| -| `spacing.padding.{top,right,bottom,left}` | `spacing` | — | +| `spacing.padding.{x,y,top,right,bottom,left}` | `spacing` | — | | `spacing.blockGap` | `spacing` | — | ### Value Resolution @@ -645,10 +645,8 @@ Here's a complete `baseStyles` section with all supported elements, assuming mat "spacing": { "blockGap": "medium", "padding": { - "top": "0", - "right": "large", - "bottom": "0", - "left": "large" + "x": "large", + "y": "0" } } } diff --git a/docs/config/spacing.md b/docs/config/spacing.md index e5dd77c..8b987a0 100644 --- a/docs/config/spacing.md +++ b/docs/config/spacing.md @@ -156,7 +156,7 @@ CSS-only tokens are excluded from theme.json entirely. ## Spacing in Base Styles -The `baseStyles.spacing` section controls root-level block gap and padding. These values flow into both the generated SCSS and theme.json. +The `baseStyles.spacing` section controls root-level block gap and padding. These values become root spacing tokens in `tokens.css`, drive the layout rules in `layout.css`, and flow into theme.json. ```json { @@ -164,10 +164,8 @@ The `baseStyles.spacing` section controls root-level block gap and padding. Thes "spacing": { "blockGap": "medium", "padding": { - "top": "0", - "right": "large", - "bottom": "0", - "left": "large" + "x": "large", + "y": "0" } } } @@ -178,10 +176,10 @@ Token keys like `"medium"` and `"large"` resolve to the corresponding spacing to ### Block Gap -The `blockGap` value controls the default vertical spacing between WordPress blocks. It generates a CSS custom property: +The `blockGap` value controls the default vertical spacing between WordPress blocks. It generates a root spacing token in `tokens.css`, which the block-gap rules in `layout.css` read: -```scss -body { +```css +:root { --mylib--root-block-gap: var(--mylib--spacing-medium); } ``` @@ -200,16 +198,54 @@ In theme.json, it maps to `styles.spacing.blockGap`: ### Root Padding -The `padding` object controls root-level page padding. Only defined sides are output. The generator produces root padding CSS custom properties and global padding utility classes: +The `padding` object controls root-level page padding. It takes six keys, each a spacing token key or a raw CSS value: -```scss -body { - --mylib--root-padding-top: 0; - --mylib--root-padding-right: var(--mylib--spacing-large); - --mylib--root-padding-bottom: 0; - --mylib--root-padding-left: var(--mylib--spacing-large); +| Key | Sets | +|-----|------| +| `x` | right and left | +| `y` | top and bottom | +| `top`, `right`, `bottom`, `left` | one side — wins over its axis | + +```json +{ + "padding": { + "x": "large", + "y": "0", + "left": "x-large" + } +} +``` + +Here the right edge gets `large` and the left edge `x-large`. Unknown keys throw at config load. + +#### Root spacing tokens + +Root padding becomes tokens declared on `:root` in `tokens.css` (and `tokens.wp.css`), so components can use the page gutter anywhere — including WordPress block themes, which don't load `layout.css`. With the config at the top of this section, `tokens.css` gets: + +```css +:root { + /* Root Spacing */ + --mylib--root-padding-x: var(--mylib--spacing-large); + --mylib--root-padding-y: 0; + --mylib--root-padding-top: var(--mylib--root-padding-y); + --mylib--root-padding-right: var(--mylib--root-padding-x); + --mylib--root-padding-bottom: var(--mylib--root-padding-y); + --mylib--root-padding-left: var(--mylib--root-padding-x); + --mylib--root-block-gap: var(--mylib--spacing-medium); } +``` + +- A side you don't set, or set to the same value as its axis, aliases the axis token. A side set to a different value emits its own — `"left": "x-large"` would give `--mylib--root-padding-left: var(--mylib--spacing-x-large);`. +- Without an explicit `x` or `y`, an axis takes the value its two sides share, so `{ "top": "0", "right": "large", "bottom": "0", "left": "large" }` produces the same tokens. If the two sides differ, or only one is set, the axis token is omitted and the side tokens are still emitted. +- `tokens.js` mirrors the group as `root`: `paddingX`, `paddingY`, `paddingTop`, `paddingRight`, `paddingBottom`, `paddingLeft`, `blockGap`. + +See [Tokens](../guides/tokens.md#root-spacing-tokens) for how the aliases behave when you override them. + +#### Layout rules +`layout.css` applies the side tokens through WordPress-compatible global padding utility classes: + +```css .has-global-padding { padding-right: var(--mylib--root-padding-right); padding-left: var(--mylib--root-padding-left); @@ -227,9 +263,9 @@ body { } ``` -The `.has-global-padding` and `.alignfull` rules mirror WordPress's root padding-aware alignment system, allowing full-width blocks to break out of the content area while nested content retains proper padding. +The `.has-global-padding` and `.alignfull` rules mirror WordPress's root padding-aware alignment system, allowing full-width blocks to break out of the content area while nested content retains proper padding. They read the side tokens rather than `-x`, so a per-side override still matches what WordPress applies from theme.json. -In theme.json, root padding maps to `styles.spacing.padding`: +In theme.json, root padding maps to `styles.spacing.padding`. WordPress only takes sides, so `x` and `y` expand to them: ```json { @@ -264,3 +300,11 @@ Reference the generated CSS variables directly: ``` The variable pattern is `--{prefix}--spacing-{key}`. + +To line a component up with the page gutter, use a root padding token instead of a spacing token: + +```scss +.mylib-banner { + padding-inline: var(--mylib--root-padding-x); +} +``` diff --git a/docs/guides/markup.md b/docs/guides/markup.md index 3714c63..80ef274 100644 --- a/docs/guides/markup.md +++ b/docs/guides/markup.md @@ -206,7 +206,7 @@ The block gap value comes from `baseStyles.spacing.blockGap` in your config: ## How Root Padding Works -The `has-global-padding` class applies the root padding values: +The `has-global-padding` class applies the root padding tokens, which `tokens.css` declares on `:root`: ```scss .has-global-padding { @@ -230,17 +230,15 @@ The `alignfull` class on the Section uses negative margins to break out of a par } ``` -The padding values come from `baseStyles.spacing.padding` in your config: +The padding values come from `baseStyles.spacing.padding` in your config — `x` sets right and left, `y` sets top and bottom, and any side can also be set on its own: ```json { "baseStyles": { "spacing": { "padding": { - "top": "0", - "right": "large", - "bottom": "0", - "left": "large" + "x": "large", + "y": "0" } } } diff --git a/docs/guides/tokens.md b/docs/guides/tokens.md index 301783e..406fa64 100644 --- a/docs/guides/tokens.md +++ b/docs/guides/tokens.md @@ -266,6 +266,31 @@ Reference the generated CSS variables in component SCSS: The variable pattern is always `--{prefix}--{css-segment}-{key}`. +### Root spacing tokens + +`baseStyles.spacing` adds a group of tokens that isn't a token category: the root padding and block gap. `tokens.css` and `tokens.wp.css` declare them on `:root`, and `tokens.js` mirrors them as `root`. + +| Token | Value | +|-------|-------| +| `--mylib--root-padding-x`, `--mylib--root-padding-y` | `padding.x` / `padding.y`, or the value both sides of the axis share | +| `--mylib--root-padding-{top,right,bottom,left}` | the side's own value, else an alias of its axis token | +| `--mylib--root-block-gap` | `spacing.blockGap` | + +Use them to line a component up with the page gutter: + +```scss +.mylib-banner { + padding-inline: var(--mylib--root-padding-x); +} +``` + +Two things to know about the side aliases: + +- They resolve on `:root`. Overriding `--mylib--root-padding-x` on `:root`, for example in a media query, moves the sides with it. Overriding it on a descendant doesn't, because the sides were already resolved higher up — override the side tokens you read, or read `-x` directly. +- In themeable mode they follow spacing preset changes, since they alias spacing tokens that map to `--wp--preset--spacing--*`. They don't follow a theme's own `styles.spacing.padding`: WordPress declares `--wp--style--root--padding-*` on `body`, where `:root` can't read it. + +See [Spacing](../config/spacing.md#root-padding) for the config. + ### Media queries CSS custom properties don't work inside a `@media` condition. Opt into SCSS variables with `"scssVars": ["viewport"]` and c2b emits `_{prefix}-variables.scss` containing both the breakpoint variables and four mixins — `below-mobile`, `above-mobile`, `below-tablet`, `above-tablet` — built from the same values WordPress uses to size its responsive block styles: diff --git a/docs/wordpress/theme-json-reference.md b/docs/wordpress/theme-json-reference.md index dcbfd23..394a63a 100644 --- a/docs/wordpress/theme-json-reference.md +++ b/docs/wordpress/theme-json-reference.md @@ -259,7 +259,7 @@ When `baseStyles` is configured, the generator adds a `styles` block. See [Base ### styles.spacing -When `baseStyles.spacing` is configured: +When `baseStyles.spacing` is configured (`padding.x` / `padding.y` expand to the four sides, since WordPress only accepts sides; a side set on its own wins over its axis): ```json { diff --git a/src/config.ts b/src/config.ts index 3fcf001..dabc15a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,6 +1,6 @@ import { existsSync, readFileSync } from 'node:fs'; import { resolve } from 'node:path'; -import type { C2bConfig, C2bConfigInput, FluidConfig, TokenCategory, TokenEntry, TokenEntryInput, TokenGroup, TokenGroupInput, BaseStyleElementDef, BaseStylesConfig, FluidInput } from './types.js'; +import type { C2bConfig, C2bConfigInput, FluidConfig, TokenCategory, TokenEntry, TokenEntryInput, TokenGroup, TokenGroupInput, BaseStyleElementDef, BaseStylesConfig, BaseStylesSpacingPadding, FluidInput } from './types.js'; import { CATEGORY_REGISTRY, DEFAULT_FLUID, ELEMENT_REGISTRY, INPUT_CATEGORY_MAP, TYPOGRAPHY_PROPERTIES, VALID_CATEGORIES, kebabToTitle } from './types.js'; const DEFAULTS = { @@ -435,6 +435,38 @@ export function ensureFontStyle(def: BaseStyleElementDef): BaseStyleElementDef { return { ...def, fontStyle: 'normal' }; } +/** Keys accepted under `baseStyles.spacing.padding`. */ +const ROOT_PADDING_KEYS = ['x', 'y', 'top', 'right', 'bottom', 'left'] as const; + +/** + * Resolve `baseStyles.spacing.padding` into its two axes and four sides — the + * single source of truth for root padding in the token outputs, layout.css and + * theme.json. Values stay as written in config (token keys or raw CSS). + * + * - An axis is its explicit `x`/`y`, else the shared value when both of its + * sides are set and identical. A lone or asymmetric pair has no single axis + * value, so the axis stays undefined. + * - A side is its explicit value, else its axis. + */ +export function resolveRootPadding(padding: BaseStylesSpacingPadding | undefined): BaseStylesSpacingPadding { + if (!padding) return {}; + const x = padding.x ?? sharedValue(padding.right, padding.left); + const y = padding.y ?? sharedValue(padding.top, padding.bottom); + return { + x, + y, + top: padding.top ?? y, + right: padding.right ?? x, + bottom: padding.bottom ?? y, + left: padding.left ?? x, + }; +} + +/** The value two sides share, or undefined when either is unset or they differ. */ +function sharedValue(a: string | undefined, b: string | undefined): string | undefined { + return a !== undefined && a === b ? a : undefined; +} + /** * Keys WordPress recognizes under `settings.viewport`. Anything else is silently * dropped by core, so c2b rejects it at config load instead of writing dead output. @@ -753,14 +785,24 @@ export function validateBaseStyles( } } - // Spacing padding sides - if (baseStyles.spacing?.padding) { - for (const side of ['top', 'right', 'bottom', 'left'] as const) { - const value = baseStyles.spacing.padding[side]; + // Spacing padding — the x/y axes and the four sides. Unknown keys throw: + // every output reads only these six, so a typo would otherwise vanish. + const padding = baseStyles.spacing?.padding; + if (padding) { + for (const key of Object.keys(padding)) { + if (!(ROOT_PADDING_KEYS as readonly string[]).includes(key)) { + throw new Error( + `Config error: baseStyles.spacing.padding.${key} is not a supported padding key.\n` + + ` Supported keys: ${ROOT_PADDING_KEYS.map(k => `"${k}"`).join(', ')}.`, + ); + } + } + for (const key of ROOT_PADDING_KEYS) { + const value = padding[key]; if (value === undefined) continue; const c = classifyBaseStyleValue(value, 'padding', tokens); if (c.kind === 'invalid') { - throw new Error(buildBaseStyleValueError(`spacing.padding.${side}`, value, 'padding', c)); + throw new Error(buildBaseStyleValueError(`spacing.padding.${key}`, value, 'padding', c)); } } } diff --git a/src/generators/layout-css.ts b/src/generators/layout-css.ts index 4ebc333..73a3c87 100644 --- a/src/generators/layout-css.ts +++ b/src/generators/layout-css.ts @@ -1,48 +1,36 @@ -import type { C2bConfig, BaseStylesSpacingPadding, BaseStylesSpacing } from '../types.js'; -import { resolveBaseStyleValueForScss } from '../config.js'; - -const PADDING_SIDES = ['top', 'right', 'bottom', 'left'] as const; +import type { C2bConfig } from '../types.js'; +import { resolveBaseStyleValueForScss, resolveRootPadding } from '../config.js'; /** - * Emit layout.css — root padding/block-gap CSS variables on `body` plus the - * layout-utility rules (block-gap on constrained/flex/grid, layout constraint - * for content/wide widths, has-global-padding helpers, alignfull bleed). + * Emit layout.css — the layout-utility rules: block-gap on constrained/flex/grid, + * layout constraint for content/wide widths, has-global-padding helpers, + * alignfull bleed. * - * Per-element typography lives in base-styles.css; flow-spacing rules live in - * typography.css. This file is the layout-only output. + * The root padding and block-gap custom properties these rules read are tokens, + * declared on :root in tokens.css (see root-tokens.ts) so they also exist where + * this file isn't loaded. Per-element typography lives in base-styles.css; + * flow-spacing rules live in typography.css. * * Returns null when no layout-relevant config is present. */ export function generateLayoutCss(config: C2bConfig): string | null { const { baseStyles, prefix, tokens } = config; - const hasSpacingPadding = !!baseStyles?.spacing?.padding; + const { right, left } = resolveRootPadding(baseStyles?.spacing?.padding); + const hasHorizontalPadding = right !== undefined || left !== undefined; const hasBlockGap = !!baseStyles?.spacing?.blockGap; const hasLayoutTokens = !!tokens.layout; const hasEntryContent = !!baseStyles?.spacing?.entryContent; - if (!hasSpacingPadding && !hasBlockGap && !hasLayoutTokens && !hasEntryContent) { + if (!hasHorizontalPadding && !hasBlockGap && !hasLayoutTokens && !hasEntryContent) { return null; } + // Each section below opens with its own blank separator line. const lines: string[] = [ '/* Auto-generated by component2block — do not edit manually */', - '', ]; - // Body block — root padding vars + block-gap var. Used by .has-global-padding - // and the > * + * block-gap rule below. - if (hasSpacingPadding || hasBlockGap) { - lines.push('body {'); - if (baseStyles?.spacing?.padding) { - appendRootPaddingVars(lines, baseStyles.spacing.padding, prefix, tokens); - } - if (baseStyles?.spacing?.blockGap) { - appendBlockGapVar(lines, baseStyles.spacing, prefix, tokens); - } - lines.push('}'); - } - if (hasBlockGap) { appendBlockGapRules(lines, prefix); } @@ -55,7 +43,10 @@ export function generateLayoutCss(config: C2bConfig): string | null { appendLayoutConstraintRules(lines, prefix, tokens); } - if (hasSpacingPadding) { + // Root padding-aware alignment. Reads the side tokens rather than the x axis: + // they alias --{prefix}--root-padding-x unless a side is set on its own, and + // then they still match what WordPress applies from theme.json. + if (hasHorizontalPadding) { lines.push(''); lines.push('.has-global-padding {'); lines.push(` padding-right: var(--${prefix}--root-padding-right);`); @@ -80,31 +71,6 @@ export function generateLayoutCss(config: C2bConfig): string | null { return lines.join('\n'); } -function appendRootPaddingVars( - lines: string[], - padding: BaseStylesSpacingPadding, - prefix: string, - tokens: C2bConfig['tokens'], -): void { - for (const side of PADDING_SIDES) { - const value = padding[side]; - if (value === undefined) continue; - const resolvedValue = resolveBaseStyleValueForScss(value, 'padding', prefix, tokens); - lines.push(` --${prefix}--root-padding-${side}: ${resolvedValue};`); - } -} - -function appendBlockGapVar( - lines: string[], - spacing: BaseStylesSpacing, - prefix: string, - tokens: C2bConfig['tokens'], -): void { - if (!spacing.blockGap) return; - const resolvedValue = resolveBaseStyleValueForScss(spacing.blockGap, 'blockGap', prefix, tokens); - lines.push(` --${prefix}--root-block-gap: ${resolvedValue};`); -} - /** * Block-gap utility rules mirroring WordPress layout behavior: * - constrained/flow layouts: reset all children's vertical margins, then diff --git a/src/generators/root-tokens.ts b/src/generators/root-tokens.ts new file mode 100644 index 0000000..bcb9517 --- /dev/null +++ b/src/generators/root-tokens.ts @@ -0,0 +1,70 @@ +import type { C2bConfig } from '../types.js'; +import { resolveBaseStyleValueForScss, resolveRootPadding } from '../config.js'; + +/** Each root padding side and the axis it falls back to, in CSS shorthand order. */ +const SIDE_AXES = [ + ['top', 'y'], + ['right', 'x'], + ['bottom', 'y'], + ['left', 'x'], +] as const; + +/** + * Root spacing tokens derived from `baseStyles.spacing`: the root padding axes + * (`padding-x`, `padding-y`), the four sides, and `block-gap`. Keys are relative + * to the `root` segment, so `padding-x` becomes `--{prefix}--root-padding-x`. + * + * tokens.css and tokens.wp.css declare these on :root and tokens.js mirrors + * them, so components can reuse the page gutter anywhere — including WordPress + * block themes, which don't load layout.css. + * + * A side that isn't set on its own, or matches its axis, aliases the axis token + * (`var(--{prefix}--root-padding-x)`), so one axis value drives both sides. + */ +export function buildRootTokens(config: C2bConfig): Array<{ key: string; value: string }> { + const { baseStyles, prefix, tokens } = config; + const spacing = baseStyles?.spacing; + if (!spacing) return []; + + const result: Array<{ key: string; value: string }> = []; + + if (spacing.padding) { + const axes = resolveRootPadding(spacing.padding); + + for (const axis of ['x', 'y'] as const) { + const value = axes[axis]; + if (value === undefined) continue; + result.push({ key: `padding-${axis}`, value: resolveBaseStyleValueForScss(value, 'padding', prefix, tokens) }); + } + + for (const [side, axis] of SIDE_AXES) { + const own = spacing.padding[side]; + if (own !== undefined && own !== axes[axis]) { + result.push({ key: `padding-${side}`, value: resolveBaseStyleValueForScss(own, 'padding', prefix, tokens) }); + } else if (axes[axis] !== undefined) { + result.push({ key: `padding-${side}`, value: `var(--${prefix}--root-padding-${axis})` }); + } + } + } + + if (spacing.blockGap !== undefined) { + result.push({ key: 'block-gap', value: resolveBaseStyleValueForScss(spacing.blockGap, 'blockGap', prefix, tokens) }); + } + + return result; +} + +/** + * Append the root spacing tokens to a `:root { }` body under a `Root Spacing` + * label. `separate` adds a blank line first, for when category groups precede it. + */ +export function appendRootTokens(lines: string[], config: C2bConfig, separate: boolean): void { + const rootTokens = buildRootTokens(config); + if (rootTokens.length === 0) return; + + if (separate) lines.push(''); + lines.push(' /* Root Spacing */'); + for (const { key, value } of rootTokens) { + lines.push(` --${config.prefix}--root-${key}: ${value};`); + } +} diff --git a/src/generators/theme-json.ts b/src/generators/theme-json.ts index 137e896..e0c57ff 100644 --- a/src/generators/theme-json.ts +++ b/src/generators/theme-json.ts @@ -1,6 +1,6 @@ import type { C2bConfig, TokenCategory, TokenGroup, BaseStylesConfig, BaseStyleElementDef } from '../types.js'; import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, ELEMENT_REGISTRY, TYPOGRAPHY_PROPERTIES } from '../types.js'; -import { resolveBaseStyleValueForThemeJson, ensureFontStyle } from '../config.js'; +import { resolveBaseStyleValueForThemeJson, ensureFontStyle, resolveRootPadding } from '../config.js'; /* eslint-disable @typescript-eslint/no-explicit-any */ type AnySettings = Record; @@ -212,8 +212,12 @@ function buildStylesBlock( } if (baseStyles.spacing.padding) { + // WordPress only takes sides: x/y expand to them, and an explicit side + // wins over its axis. + const sides = resolveRootPadding(baseStyles.spacing.padding); const padding: Record = {}; - for (const [side, value] of Object.entries(baseStyles.spacing.padding)) { + for (const side of ['top', 'right', 'bottom', 'left'] as const) { + const value = sides[side]; if (value !== undefined) { padding[side] = resolveBaseStyleValueForThemeJson(value, 'padding', tokens); } diff --git a/src/generators/tokens-css.ts b/src/generators/tokens-css.ts index 59522b3..8b002cd 100644 --- a/src/generators/tokens-css.ts +++ b/src/generators/tokens-css.ts @@ -1,6 +1,7 @@ import type { C2bConfig } from '../types.js'; import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, camelToKebab } from '../types.js'; import { buildFluidClamp } from './fluid.js'; +import { appendRootTokens } from './root-tokens.js'; export function generateTokensCss(config: C2bConfig): string { const lines: string[] = [ @@ -33,6 +34,8 @@ export function generateTokensCss(config: C2bConfig): string { } } + appendRootTokens(lines, config, !firstCategory); + lines.push('}'); lines.push(''); diff --git a/src/generators/tokens-js.ts b/src/generators/tokens-js.ts index 25cb213..f216ac7 100644 --- a/src/generators/tokens-js.ts +++ b/src/generators/tokens-js.ts @@ -1,6 +1,7 @@ import type { C2bConfig } from '../types.js'; import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, camelToKebab, kebabToCamel } from '../types.js'; import { buildFluidClamp } from './fluid.js'; +import { buildRootTokens } from './root-tokens.js'; const VALID_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/; @@ -71,6 +72,15 @@ export function generateTokensJs(config: C2bConfig): string { } } + // Root spacing tokens aren't a category — they're derived from baseStyles.spacing. + const rootTokens = buildRootTokens(config); + if (rootTokens.length > 0) { + populated.push({ + jsKey: 'root', + entries: rootTokens.map(({ key, value }) => ({ jsTokenKey: toJsIdentifier(key), value })), + }); + } + populated.forEach(({ jsKey, entries }, catIdx) => { const lastCat = catIdx === populated.length - 1; lines.push(` ${emitKey(jsKey)}: {`); diff --git a/src/generators/tokens-wp-css.ts b/src/generators/tokens-wp-css.ts index 5e845cd..61c18a9 100644 --- a/src/generators/tokens-wp-css.ts +++ b/src/generators/tokens-wp-css.ts @@ -1,6 +1,7 @@ import type { C2bConfig } from '../types.js'; import { CATEGORY_REGISTRY, CATEGORY_ORDER, DEFAULT_FLUID, camelToKebab } from '../types.js'; import { buildFluidClamp } from './fluid.js'; +import { appendRootTokens } from './root-tokens.js'; export function generateTokensWpCss(config: C2bConfig): string { const lines: string[] = [ @@ -38,6 +39,10 @@ export function generateTokensWpCss(config: C2bConfig): string { } } + // Same values as tokens.css: they alias spacing tokens, which already map to + // --wp--preset--spacing--* above. + appendRootTokens(lines, config, !firstCategory); + lines.push('}'); lines.push(''); diff --git a/src/types.ts b/src/types.ts index 7cdc96c..bc822a0 100644 --- a/src/types.ts +++ b/src/types.ts @@ -75,8 +75,15 @@ export const TYPOGRAPHY_PROPERTIES: Array<'fontFamily' | 'fontSize' | 'fontStyle 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'letterSpacing', ]; -/** Padding values for each side */ +/** + * Root padding. `x` and `y` set both sides of an axis; an explicit side wins + * over its axis. Every value is a spacing token key or a raw CSS value. + */ export interface BaseStylesSpacingPadding { + /** Horizontal root padding — the default for `right` and `left`. */ + x?: string; + /** Vertical root padding — the default for `top` and `bottom`. */ + y?: string; top?: string; right?: string; bottom?: string; diff --git a/tests/config.test.ts b/tests/config.test.ts index 6653090..49cb044 100644 --- a/tests/config.test.ts +++ b/tests/config.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest'; -import { validateConfig } from '../src/config.js'; +import { validateConfig, resolveRootPadding } from '../src/config.js'; import type { C2bConfigInput } from '../src/types.js'; const minimalConfig: C2bConfigInput = { @@ -806,3 +806,74 @@ describe('validateConfig — flow-spacing baseStyles properties', () => { ).not.toThrow(); }); }); + +describe('validateConfig — root padding', () => { + const tokens = { + spacing: { + medium: { value: '1rem', slug: '50' }, + large: { value: '2rem', slug: '60' }, + }, + }; + + it('accepts the x/y axes alongside the four sides', () => { + expect(() => + validateConfig({ + prefix: 'test', + tokens, + baseStyles: { spacing: { padding: { x: 'large', y: '0', left: 'medium' } } }, + } as C2bConfigInput), + ).not.toThrow(); + }); + + it('reports an invalid axis value with its path', () => { + expect(() => + validateConfig({ + prefix: 'test', + tokens, + baseStyles: { spacing: { padding: { x: 'huge' } } }, + } as C2bConfigInput), + ).toThrow(/baseStyles\.spacing\.padding\.x = "huge"/); + }); + + it('rejects unknown padding keys', () => { + expect(() => + validateConfig({ + prefix: 'test', + tokens, + baseStyles: { spacing: { padding: { rigth: 'large' } } }, + } as C2bConfigInput), + ).toThrow(/baseStyles\.spacing\.padding\.rigth is not a supported padding key/); + }); +}); + +describe('resolveRootPadding', () => { + it('returns nothing for missing padding', () => { + expect(resolveRootPadding(undefined)).toEqual({}); + }); + + it('fills the sides from explicit axes', () => { + expect(resolveRootPadding({ x: 'large', y: '0' })).toEqual({ + x: 'large', y: '0', top: '0', right: 'large', bottom: '0', left: 'large', + }); + }); + + it('derives an axis from two matching sides', () => { + expect(resolveRootPadding({ top: '0', right: 'large', bottom: '0', left: 'large' })).toEqual({ + x: 'large', y: '0', top: '0', right: 'large', bottom: '0', left: 'large', + }); + }); + + it('leaves an axis undefined when its sides differ or only one is set', () => { + const resolved = resolveRootPadding({ right: 'medium', left: 'large', top: '1rem' }); + expect(resolved.x).toBeUndefined(); + expect(resolved.y).toBeUndefined(); + expect(resolved).toMatchObject({ right: 'medium', left: 'large', top: '1rem' }); + expect(resolved.bottom).toBeUndefined(); + }); + + it('lets an explicit side win over its axis', () => { + expect(resolveRootPadding({ x: 'large', left: 'medium' })).toMatchObject({ + x: 'large', right: 'large', left: 'medium', + }); + }); +}); diff --git a/tests/integration.test.ts b/tests/integration.test.ts index ea3d301..6803500 100644 --- a/tests/integration.test.ts +++ b/tests/integration.test.ts @@ -274,7 +274,7 @@ describe('integration: generate() — baseStyles spacing', () => { expect(parsed.styles.spacing.padding.top).toBe('0'); }); - it('layout.css includes root padding and alignfull rules (dual-output)', () => { + it('layout.css includes the alignfull rules reading the root padding tokens (dual-output)', () => { generate(SP_CONFIG_PATH, SP_TEST_DIR); const srcContent = readFileSync( resolve(SP_TEST_DIR, 'src/inttest-layout.css'), @@ -285,12 +285,23 @@ describe('integration: generate() — baseStyles spacing', () => { 'utf-8', ); - expect(srcContent).toContain('--inttest--root-padding-right: var(--inttest--spacing-large);'); + expect(srcContent).toContain('padding-right: var(--inttest--root-padding-right);'); expect(srcContent).toContain('.has-global-padding'); expect(srcContent).toContain('.alignfull'); + expect(srcContent).not.toContain('body {'); expect(srcContent).toBe(wpContent); }); + it('tokens.css declares the root padding tokens on :root', () => { + generate(SP_CONFIG_PATH, SP_TEST_DIR); + const content = readFileSync(resolve(SP_TEST_DIR, 'src/inttest-tokens.css'), 'utf-8'); + + expect(content).toContain(' /* Root Spacing */'); + expect(content).toContain('--inttest--root-padding-x: var(--inttest--spacing-large);'); + expect(content).toContain('--inttest--root-padding-y: 0;'); + expect(content).toContain('--inttest--root-padding-left: var(--inttest--root-padding-x);'); + }); + it('base-styles.css does NOT contain layout utilities', () => { generate(SP_CONFIG_PATH, SP_TEST_DIR); const content = readFileSync( diff --git a/tests/layout-css.test.ts b/tests/layout-css.test.ts index bb10666..52521c7 100644 --- a/tests/layout-css.test.ts +++ b/tests/layout-css.test.ts @@ -42,26 +42,15 @@ describe('generateLayoutCss', () => { expect(result).toContain('Auto-generated by component2block'); }); - it('emits root padding CSS variables in body block', () => { + it('does not declare the root spacing vars (they are tokens in tokens.css)', () => { const result = generateLayoutCss(layoutConfig)!; - const bodyBlock = result.split('body {')[1].split('}')[0]; - expect(bodyBlock).toContain('--design-system--root-padding-top: 0;'); - expect(bodyBlock).toContain('--design-system--root-padding-right: var(--design-system--spacing-large);'); - expect(bodyBlock).toContain('--design-system--root-padding-bottom: 0;'); - expect(bodyBlock).toContain('--design-system--root-padding-left: var(--design-system--spacing-large);'); - }); - - it('emits root block-gap CSS variable in body block', () => { - const result = generateLayoutCss(layoutConfig)!; - const bodyBlock = result.split('body {')[1].split('}')[0]; - expect(bodyBlock).toContain('--design-system--root-block-gap: var(--design-system--spacing-medium);'); + expect(result).not.toContain('body {'); + expect(result).not.toMatch(/^\s*--design-system--root-[\w-]+:/m); }); - it('does NOT emit body typography (lives in base-styles.css)', () => { + it('follows the header with a single blank line', () => { const result = generateLayoutCss(layoutConfig)!; - const bodyBlock = result.split('body {')[1].split('}')[0]; - expect(bodyBlock).not.toContain('font-family:'); - expect(bodyBlock).not.toContain('font-size:'); + expect(result.startsWith('/* Auto-generated by component2block — do not edit manually */\n\n:')).toBe(true); }); it('emits the constrained block-gap rule', () => { @@ -177,26 +166,24 @@ describe('generateLayoutCss', () => { expect(result).not.toContain('.is-layout-constrained > .alignwide'); }); - it('only outputs defined padding sides', () => { + it('emits .has-global-padding rules when only the x axis is set', () => { const cfg: C2bConfig = { ...layoutConfig, - baseStyles: { spacing: { padding: { top: 'medium' } } }, + baseStyles: { spacing: { padding: { x: 'large' } } }, }; - const result = generateLayoutCss(cfg)!; - const bodyBlock = result.split('body {')[1].split('}')[0]; - expect(bodyBlock).toContain('--design-system--root-padding-top:'); - expect(bodyBlock).not.toContain('--design-system--root-padding-right'); - expect(bodyBlock).not.toContain('--design-system--root-padding-left'); + const block = generateLayoutCss(cfg)!.split('.has-global-padding {')[1].split('}')[0]; + expect(block).toContain(' padding-right: var(--design-system--root-padding-right);'); + expect(block).toContain(' padding-left: var(--design-system--root-padding-left);'); }); - it('passes raw padding values through unchanged', () => { + it('omits .has-global-padding rules when only vertical padding is set', () => { const cfg: C2bConfig = { ...layoutConfig, - baseStyles: { spacing: { padding: { top: '12px', right: '1rem' } } }, + baseStyles: { spacing: { padding: { y: 'medium' } } }, }; - const result = generateLayoutCss(cfg)!; - expect(result).toContain('--design-system--root-padding-top: 12px;'); - expect(result).toContain('--design-system--root-padding-right: 1rem;'); + expect(generateLayoutCss(cfg)!).not.toContain('.has-global-padding'); + // With nothing else layout-relevant configured, there is no file at all. + expect(generateLayoutCss({ ...cfg, tokens: { spacing: layoutConfig.tokens.spacing! } })).toBeNull(); }); it('emits when only layout tokens are defined (no baseStyles)', () => { diff --git a/tests/theme-json.test.ts b/tests/theme-json.test.ts index c91f15d..6072293 100644 --- a/tests/theme-json.test.ts +++ b/tests/theme-json.test.ts @@ -839,6 +839,31 @@ describe('generateThemeJson — baseStyles spacing', () => { const result = JSON.parse(generateThemeJson(noSpacingConfig)); expect(result.styles.spacing).toBeUndefined(); }); + + it('expands the x/y axes to the four sides WordPress expects', () => { + const result = JSON.parse(generateThemeJson({ + ...spacingConfig, + baseStyles: { spacing: { padding: { x: 'large', y: '0' } } }, + })); + expect(result.styles.spacing.padding).toEqual({ + top: '0', + right: 'var(--wp--preset--spacing--60)', + bottom: '0', + left: 'var(--wp--preset--spacing--60)', + }); + expect(Object.keys(result.styles.spacing.padding)).toEqual(['top', 'right', 'bottom', 'left']); + }); + + it('lets an explicit side win over its axis', () => { + const result = JSON.parse(generateThemeJson({ + ...spacingConfig, + baseStyles: { spacing: { padding: { x: 'large', left: '2rem' } } }, + })); + expect(result.styles.spacing.padding).toEqual({ + right: 'var(--wp--preset--spacing--60)', + left: '2rem', + }); + }); }); describe('generateThemeJson — baseStyles blockGap', () => { diff --git a/tests/tokens-css.test.ts b/tests/tokens-css.test.ts index 196d9c6..a6334e8 100644 --- a/tests/tokens-css.test.ts +++ b/tests/tokens-css.test.ts @@ -283,3 +283,97 @@ describe('generateTokensCss — fluid font sizes', () => { ); }); }); + +describe('generateTokensCss — root spacing tokens', () => { + const base: C2bConfig = { + prefix: 'test', + srcDir: 'src/styles', + outputDir: 'dist/wp', + bundleFonts: false, + tokens: { + spacing: { + medium: { value: '1rem', slug: '50', name: 'Medium' }, + large: { value: '2rem', slug: '60', name: 'Large' }, + }, + }, + }; + + const rootLines = (config: C2bConfig): string[] => + generateTokensCss(config).split('\n').filter(line => line.startsWith(' --test--root-')); + + it('emits the axes, the four sides as axis aliases, and the block gap', () => { + const output = generateTokensCss({ + ...base, + baseStyles: { spacing: { blockGap: 'medium', padding: { x: 'large', y: '0' } } }, + }); + expect(output).toContain( + [ + ' --test--spacing-large: 2rem;', + '', + ' /* Root Spacing */', + ' --test--root-padding-x: var(--test--spacing-large);', + ' --test--root-padding-y: 0;', + ' --test--root-padding-top: var(--test--root-padding-y);', + ' --test--root-padding-right: var(--test--root-padding-x);', + ' --test--root-padding-bottom: var(--test--root-padding-y);', + ' --test--root-padding-left: var(--test--root-padding-x);', + ' --test--root-block-gap: var(--test--spacing-medium);', + '}', + ].join('\n'), + ); + }); + + it('derives the axes from matching sides, so both config forms produce identical output', () => { + const fromAxes = generateTokensCss({ + ...base, + baseStyles: { spacing: { padding: { x: 'large', y: '0' } } }, + }); + const fromSides = generateTokensCss({ + ...base, + baseStyles: { spacing: { padding: { top: '0', right: 'large', bottom: '0', left: 'large' } } }, + }); + expect(fromSides).toBe(fromAxes); + }); + + it('gives a side set to a different value its own token value', () => { + const output = generateTokensCss({ + ...base, + baseStyles: { spacing: { padding: { x: 'medium', left: 'large' } } }, + }); + expect(output).toContain('--test--root-padding-right: var(--test--root-padding-x);'); + expect(output).toContain('--test--root-padding-left: var(--test--spacing-large);'); + }); + + it('omits an axis whose sides differ, but still emits the sides', () => { + expect(rootLines({ + ...base, + baseStyles: { spacing: { padding: { right: 'medium', left: 'large' } } }, + })).toEqual([ + ' --test--root-padding-right: var(--test--spacing-medium);', + ' --test--root-padding-left: var(--test--spacing-large);', + ]); + }); + + it('passes raw padding values through unchanged', () => { + const output = generateTokensCss({ + ...base, + baseStyles: { spacing: { padding: { x: '1rem', top: '12px' } } }, + }); + expect(output).toContain('--test--root-padding-x: 1rem;'); + expect(output).toContain('--test--root-padding-top: 12px;'); + }); + + it('emits no group without baseStyles.spacing', () => { + expect(generateTokensCss(base)).not.toContain('--test--root-'); + expect(generateTokensCss({ ...base, baseStyles: { body: { fontSize: '1rem' } } })).not.toContain('Root Spacing'); + }); + + it('skips the separator line when the group is the only content', () => { + const output = generateTokensCss({ + ...base, + tokens: {}, + baseStyles: { spacing: { blockGap: '1rem' } }, + }); + expect(output).toContain(':root {\n /* Root Spacing */\n --test--root-block-gap: 1rem;\n}'); + }); +}); diff --git a/tests/tokens-js.test.ts b/tests/tokens-js.test.ts index 386d576..d5b965a 100644 --- a/tests/tokens-js.test.ts +++ b/tests/tokens-js.test.ts @@ -327,3 +327,32 @@ describe('generateTokensJs — emitted output is valid JavaScript', () => { expect(evalTokens(output).z).toEqual({ '100': '100', '200': '200' }); }); }); + +describe('generateTokensJs — root spacing tokens', () => { + const rootConfig: C2bConfig = { + prefix: 'test', + srcDir: 'src/styles', + outputDir: 'dist/wp', + bundleFonts: false, + tokens: { + spacing: { large: { value: '2rem', slug: '60', name: 'Large' } }, + }, + baseStyles: { spacing: { blockGap: '0', padding: { x: 'large', y: '0' } } }, + }; + + it('mirrors the root spacing tokens as a root group', () => { + expect(evalTokens(generateTokensJs(rootConfig)).root).toEqual({ + paddingX: 'var(--test--spacing-large)', + paddingY: '0', + paddingTop: 'var(--test--root-padding-y)', + paddingRight: 'var(--test--root-padding-x)', + paddingBottom: 'var(--test--root-padding-y)', + paddingLeft: 'var(--test--root-padding-x)', + blockGap: '0', + }); + }); + + it('omits the root group without baseStyles.spacing', () => { + expect(evalTokens(generateTokensJs({ ...rootConfig, baseStyles: undefined })).root).toBeUndefined(); + }); +}); diff --git a/tests/tokens-wp-css.test.ts b/tests/tokens-wp-css.test.ts index bd17215..81e9863 100644 --- a/tests/tokens-wp-css.test.ts +++ b/tests/tokens-wp-css.test.ts @@ -198,3 +198,27 @@ describe('generateTokensWpCss — fluid font size fallbacks', () => { ); }); }); + +describe('generateTokensWpCss — root spacing tokens', () => { + const output = generateTokensWpCss({ + prefix: 'test', + srcDir: 'src/styles', + outputDir: 'dist/wp', + bundleFonts: false, + tokens: { + spacing: { + large: { value: '2rem', slug: '60', name: 'Large' }, + }, + }, + baseStyles: { spacing: { blockGap: '0', padding: { x: 'large', y: '0' } } }, + }); + + it('aliases the preset-mapped spacing token rather than a WP root padding var', () => { + expect(output).toContain('--test--spacing-large: var(--wp--preset--spacing--60, 2rem);'); + expect(output).toContain(' /* Root Spacing */'); + expect(output).toContain('--test--root-padding-x: var(--test--spacing-large);'); + expect(output).toContain('--test--root-padding-left: var(--test--root-padding-x);'); + expect(output).toContain('--test--root-block-gap: 0;'); + expect(output).not.toContain('--wp--style--root'); + }); +});