Skip to content

feature/design-tokens-module - #997

Draft
d4mation wants to merge 2046 commits into
masterfrom
feature/design-tokens-module
Draft

d4mation wants to merge 2046 commits into
masterfrom
feature/design-tokens-module

Conversation

@d4mation

@d4mation d4mation commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

🎫 https://linear.app/nexcess/project/design-system-7186b33eeebd/overview

...

Also relies on stellarwp/kadence-helpers#7 and stellarwp/kadence-components#20

Checklist

  • I have performed a self-review.
  • No unrelated files are modified.
  • No debugging statements exist (Ex: console.log, error_log).
  • There are no warnings or notices in the wordpress error log.
  • Passes all tests (linting, acceptance, & unit)

Block specific checklist (where relevant)

  • Tested with an existing instance of this block .
  • Tested creating a new instance of this block.
  • Tested with Dynamic content & Elements.

@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

🎉 Zip build complete

Build timestamp

@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Comment @coderabbitai help to get the list of available commands.

d4mation and others added 27 commits August 29, 2026 22:32
`&` was in the list of characters a suffix may open with and be used verbatim,
which meant `&:hover` composed to `.wp-block-example&:hover`. That is not a
selector -- the browser drops the whole rule -- so a binding written the SCSS way
would have silently done nothing.

It reads naturally enough that someone will write it, and `css_state` makes that
likelier than `css_selector` ever did, so expand it rather than reject it. The
SCSS meaning is honored: the space after the `&` is the whole signal, so
`& .child` descends and `&:hover` attaches.
The Button's hover radius and border, the Section's hover background and radius,
and the Icon's hover color are all token-pickable in the inspector now, but none
of them was a preset property -- so nothing carried a binding, and each control
had to borrow its indicator from the resting state's entry or go without one.

Declares the eight bindings in the css_state shape. None of these blocks reads a
variable in its hover rules -- each paints its hover look straight from its own
attributes -- so there is nothing for a preset to retarget and Preset\Css_Builder
supplies the whole rule instead, front end and editor both, and only for a preset
that actually resolves the property.

Each state gets its own semantic rather than sharing its resting twin's: bound to
`semantic.color.icon`, an override meant for the icon's hover color would have
moved its resting color with it. Every one ships resolving to the same value its
resting counterpart does, so nothing changes look until someone sets a hover.

The selectors' weight is load-bearing and differs per block, which is what the
`:where()` scoping is for -- each declaration carries the note on what its weight
buys and which two of the block's own rules it has to sit between.

The controls prefer their real binding entry and keep the derived indicator as a
fallback, since `usePresetBinding` makes no entry for a property the active preset
does not resolve. The Section's hover background moves to `ColorControl` for the
status and reset the binding now supports, matching its resting sibling.
The hover Border Radius and hover Border Width fields resolved their muted
default from the RESTING preset properties. That was harmless while no preset
could carry a hover value; now that `button-radius-hover` and
`button-border-hover-width` are bound, a preset setting both would have shown the
resting figure on a field the page renders the hover one for.

Each hover field reads its own property first and keeps the resting one as the
second step, because that IS what the button paints on hover when the preset
carries no hover value: a state rule is emitted only for a property the preset
resolves, so with none the button keeps its resting border and radius through
`:hover`.

The Section's equivalent already reads its own hover property; this brings the
Button in line.
Token-pickable block controls [11/11]: Single Icon color
`AppShellSkeleton` reproduced the header bar and nav list but not the frame
elements that hold them: `AppShell` wraps them in
`.kadence-blocks-style-library__header` and `__sidebar`, and those wrappers are
what carry the opaque surface, the header's bottom rule, the sidebar's right
rule, and the sidebar's fixed column width.

Without them the library-switch overlay's translucent scrim left the outgoing
library's real title, Rename/Delete buttons and nav labels showing through the
placeholder, and the nav column shrink-wrapped to its own bars instead of
sitting at the sidebar's width.

The content area stays empty, as before -- the incoming screen's shape is not
knowable from here, and each screen draws its own skeleton once it mounts.

Claude-Session: https://claude.ai/code/session_0196LQcjKH68yR8QBs8WtwP4
Preset hover states [3/3]: bind the hover properties the block controls expose
…h-not-lined-up-properly

Line the Style Library loading skeleton up with the shell it stands in for
…-notice

[DTM] SOFT-3908 [4/4]: palette inheritance notice
…ry-desktop-reset

[DTM] SOFT-4433 [2/2]: Reset a preset breakpoint without dropping the others
…ry-section-hover-tab

[DTM] SOFT-4459 [2/2]: Edit the Section preset's hover background and radius in the Style Library
…efault

[DTM] SOFT-4461: Explain a stale design-token alias in place instead of echoing its dot path
…-default

[DTM] SOFT-4521: Tag the None shadow row as the popover default when the preset declares no shadow
…s-its-own-default

[DTM] SOFT-4555: Button hover box-shadow follows its own default
[DTM] SOFT-4565: Render favorite font rows in the UI face
…ads-default

[DTM] SOFT-4566: Explain a stale theme font reference in place instead of echoing its CSS
…blank-is-empty

[DTM] SOFT-4434: Read an all-blank border default as untouched so a fresh Button is not marked overridden
…follows-theme

[DTM] SOFT-4571: Advanced Text keeps the theme's type until a preset sets it
…r-rows-color-select

[DTM] SOFT-4703 [2/2]: Open the shared color popover with its default swatch on every preset color row
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants