Skip to content

fix(admin-app): vendor optional/ CSS layers and track framework's dist/ rename - #173

Merged
jackgranatowski merged 3 commits into
mainfrom
claude/pr172-plugins-sync-m1x04t
Jul 7, 2026
Merged

fix(admin-app): vendor optional/ CSS layers and track framework's dist/ rename#173
jackgranatowski merged 3 commits into
mainfrom
claude/pr172-plugins-sync-m1x04t

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

sync-core.mjs only ever vendored core/ chrome layers, so main.ts's new
@framework-css/optional/components.css import (and its
tokens.components.css dependency) had no vendored source and broke
npm run build:admin-app in CI. Also follow the framework's own
badges/ -> dist/ rename for the full CSS bundle PreviewPanel.svelte
imports, and re-sync src/ + framework-css/ to match the framework's
current main.

Summary by CodeRabbit

  • New Features
    • Added new layout, spacing, and fluid-sizing controls for more flexible design adjustments.
    • Introduced new component styling options for buttons and cards, including variants, sizes, shadows, and media settings.
    • Added support for alternate selection colors, external-link labels, overlap effects, and new motion presets.
  • Bug Fixes
    • Improved theme handling and browser compatibility for several UI styling behaviors.
    • Renamed background-layer settings across the app for more consistent controls.
  • Documentation
    • Updated preview and sidebar labels to include the new Components area.

claude added 3 commits July 7, 2026 12:41
…t/ rename

sync-core.mjs only ever vendored core/ chrome layers, so main.ts's new
`@framework-css/optional/components.css` import (and its
tokens.components.css dependency) had no vendored source and broke
`npm run build:admin-app` in CI. Also follow the framework's own
badges/ -> dist/ rename for the full CSS bundle PreviewPanel.svelte
imports, and re-sync src/ + framework-css/ to match the framework's
current main.
Bundled framework CSS was pinned to v0.6.34, well behind the framework's
current v0.7.1 release. Ran `npm run update-framework` to pull the latest
release bundles, regenerate data/inventory.json + classes-hints.json +
variables-hints.json from framework source, and stamp SLASHED_*_CSS_REF
to v0.7.1.
package-lock.json still said MIT; package.json has said
GPL-3.0-or-later since the license change. npm install regenerates
this automatically, it had just drifted.
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

Grey Divider

Sorry, something went wrong

We weren't able to complete the code review on our side. Please try again

Grey Divider

Qodo Logo

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR introduces a new optional .sf-btn/.sf-card component system with tokens, renames .sf-bg to .sf-bg-layer across CSS/tokens/registry/inventory data, adds new macros (surface-bg, corner-scoop, overlap, fluid-cq), extends sync-core.mjs for optional-layer vendoring, wires the configurator UI (new ComponentsPanel, SliderRow variable scales, panel updates) to new tokens, regenerates data files, and bumps CSS reference version constants.

Changes

Components System, Token Refactors, and Configurator Wiring

Layer / File(s) Summary
New .sf-btn/.sf-card component CSS
framework-css/optional/components.css, framework-css/optional/tokens.components.css, scripts/registry-sources.js
Adds button/card component styles and tokens under a new slashed.components layer, and registers the new source file.
.sf-bg → .sf-bg-layer rename
framework-css/core/layout.css, framework-css/core/tokens.layout.css
Renames background cover-layer selectors and tokens from --sf-bg-* to --sf-bg-layer-*.
New macros and tokens (surface-bg, corner-scoop, overlap, fluid-cq, header/divide/overlay)
framework-css/core/layout.css, framework-css/core/macros.css, framework-css/core/themes.css, framework-css/core/tokens.css, framework-css/core/tokens.macros.css
Adds new layout/macro utilities and their supporting design tokens, plus theming alias selector updates.
sync-core.mjs vendoring for optional layers
admin-app/scripts/sync-core.mjs, admin-app/.vendored-manifest.json
Extends vendoring to include optional/ layers and a dist/ full bundle, refactors local/remote vendor helpers, and switches manifest sources to local.
SliderRow variable scales
admin-app/src/lib/variableScales.ts, admin-app/src/components/inputs/SliderRow.svelte
Adds scale option arrays and reworks SliderRow to support picker/raw/slider view modes.
ComponentsPanel and navigation wiring
admin-app/src/components/panels/ComponentsPanel.svelte, .../DomainPanel.svelte, .../shell/SidebarNav.svelte, .../CommandPalette.svelte, .../App.svelte, .../panels/HomePanel.svelte, admin-app/src/main.ts
Adds the new Components panel and wires it into navigation, domain routing, and Home tile counting.
Existing panels updated for new tokens/macros
.../panels/BordersPanel.svelte, LayoutPanel.svelte, MacrosPanel.svelte, MiscPanel.svelte, MotionPanel.svelte, SpacingPanel.svelte, TypographyPanel.svelte, EffectsPanel.svelte
Wires new tokens (media-radius, bg-layer, surface-bg, selection alt, state flags, drop-shadow-xs) into existing configurator panels.
PreviewPanel demo templates switched to sf-btn/sf-card
.../shell/PreviewPanel.svelte, admin-app/vite.config.js
Updates preview import path and rewrites demo templates to use framework component classes.
Regenerated data files and version bumps
admin-app/src/data/*.json, SLASHED-for-WP/data/*.json, SLASHED-for-WP/integrations/**, SLASHED-for-WP/slashed.php
Regenerates token/class inventories and bumps SLASHED_CSS_REF-style constants.

Estimated code review effort: 4 (Complex) | ~75 minutes

Sequence Diagram(s)

sequenceDiagram
  participant SyncScript
  participant LocalRepo
  participant GitHubAPI
  participant FrameworkCSS
  SyncScript->>LocalRepo: vendorChromeLocal(core layers)
  SyncScript->>LocalRepo: vendorOptionalLocal(optional layers)
  SyncScript->>GitHubAPI: vendorChromeRemote(core layers)
  SyncScript->>GitHubAPI: vendorOptionalRemote(optional layers)
  SyncScript->>FrameworkCSS: write framework-css/core/* and framework-css/optional/*
Loading

Possibly related issues

Possibly related PRs

Suggested labels: codex

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main admin-app changes: vendoring optional CSS layers and updating the full CSS bundle path rename.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/pr172-plugins-sync-m1x04t

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot added the codex label Jul 7, 2026
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix admin-app vendoring for optional CSS + dist/ rename; sync framework v0.7.1

🐞 Bug fix ✨ Enhancement ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Vendor optional component CSS so admin-app builds in CI.
• Follow framework rename badges/dist/ for preview bundle import.
• Sync bundled framework CSS/data to v0.7.1 and add Components panel + picker.
Diagram

graph TD
  A["scripts/sync-core.mjs"] -->|"vendors + checks"| B["admin-app/framework-css/*"] -->|"@framework-css alias"| C["admin-app/vite.config.js"]
  D["admin-app/src/main.ts"] -->|"imports core + optional"| B
  E["PreviewPanel.svelte"] -->|"raw import full bundle"| B
  F["ComponentsPanel.svelte"] -->|"uses .sf-btn/.sf-card"| B
  F -->|"uses"| G["SliderRow + variableScales"]
  H["Other token panels"] -->|"variableOptions"| G
Loading
High-Level Assessment

The approach is appropriate: vendoring optional/ is required by the new main.ts import; the badges/dist/ rename must be applied consistently across the vendored tree and preview import; and the v0.7.1 bundle/data sync is inherently coupled to those upstream changes. Splitting would likely leave the build broken between steps.

Files changed (48) +10466 / -5228

Enhancement (14) +885 / -66
App.svelteAdd Components domain label +2/-2

Add Components domain label

• Registers the new 'components' domain in the domain label map so the UI can label badges and counts correctly.

SLASHED-for-WP/admin-app/src/App.svelte

CommandPalette.svelteSync CommandPalette to upstream configurator +1/-1

Sync CommandPalette to upstream configurator

• Applies upstream sync changes (minor drift alignment) as part of the configurator re-vendor.

SLASHED-for-WP/admin-app/src/components/CommandPalette.svelte

DomainPanel.svelteWire in the new ComponentsPanel route +3/-0

Wire in the new ComponentsPanel route

• Adds the 'components' domain branch so selecting Components renders the new panel.

SLASHED-for-WP/admin-app/src/components/DomainPanel.svelte

SliderRow.svelteAdd variable picker dropdown via variableOptions +114/-27

Add variable picker dropdown via variableOptions

• Introduces a dropdown that can select among named 'var(--sf-...)' scale steps when 'variableOptions' is provided. Adds a clearer slider/raw/picker mode model and commits raw expressions on blur/Enter.

SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte

ComponentsPanel.svelteAdd Components panel with live .sf-btn/.sf-card previews +464/-0

Add Components panel with live .sf-btn/.sf-card previews

• New panel providing token knobs and preview toggles for button and card components. Uses SliderRow variable pickers and includes live class-based previews driven by the same override mechanism as other panels.

SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte

EffectsPanel.svelteAdd drop-shadow editor and expand text shadow steps +68/-5

Add drop-shadow editor and expand text shadow steps

• Adds '--sf-text-shadow-xs/xl' controls and a dedicated drop-shadow section ('--sf-drop-shadow-*') with a live SVG preview.

SLASHED-for-WP/admin-app/src/components/panels/EffectsPanel.svelte

HomePanel.svelteAdd Components tile and unify override counting via domainOf() +12/-20

Add Components tile and unify override counting via domainOf()

• Adds a Components entry on the home screen. Replaces local substring matching with canonical 'domainOf()' classification to avoid mismatched/double-counted override totals.

SLASHED-for-WP/admin-app/src/components/panels/HomePanel.svelte

MacrosPanel.svelteAdd surface background preset editor and variableOptions support +104/-3

Add surface background preset editor and variableOptions support

• Adds a new Background surface editor for '--sf-surface-bg-*' tokens with a live preview. Adds 'variableOptions' for macro-related sliders (space/radius scales).

SLASHED-for-WP/admin-app/src/components/panels/MacrosPanel.svelte

MiscPanel.svelteAdd alt-selection controls and update sf-is-* state naming +47/-4

Add alt-selection controls and update sf-is-* state naming

• Adds controls for alternate selection tokens and a preview. Updates UI labels to 'sf-is-*' terminology and adds a variable picker for touch target sizing.

SLASHED-for-WP/admin-app/src/components/panels/MiscPanel.svelte

MotionPanel.svelteSync Motion panel to upstream configurator +6/-3

Sync Motion panel to upstream configurator

• Applies upstream drift sync for motion controls consistent with v0.7.1 token surface.

SLASHED-for-WP/admin-app/src/components/panels/MotionPanel.svelte

SpacingPanel.svelteSync Spacing panel to upstream configurator +4/-0

Sync Spacing panel to upstream configurator

• Applies upstream drift sync for spacing controls consistent with v0.7.1 token surface.

SLASHED-for-WP/admin-app/src/components/panels/SpacingPanel.svelte

TypographyPanel.svelteSync Typography panel to upstream configurator +18/-0

Sync Typography panel to upstream configurator

• Applies upstream drift sync for typography controls consistent with v0.7.1 token surface.

SLASHED-for-WP/admin-app/src/components/panels/TypographyPanel.svelte

SidebarNav.svelteAdd Components entry to sidebar navigation +2/-1

Add Components entry to sidebar navigation

• Adds a new sidebar item for the Components domain using the 'Component' icon.

SLASHED-for-WP/admin-app/src/components/shell/SidebarNav.svelte

variableScales.tsDefine named scale-step lists for SliderRow variable picker +40/-0

Define named scale-step lists for SliderRow variable picker

• Adds reusable option arrays (space, radius, border-width, container, size, shadow) for panels to offer token-to-token choices instead of only numeric overrides.

SLASHED-for-WP/admin-app/src/lib/variableScales.ts

Bug fix (6) +637 / -147
components.cssVendor optional components layer (buttons + cards) +309/-0

Vendor optional components layer (buttons + cards)

• Adds optional components CSS defining '.sf-btn' and '.sf-card' in '@layer slashed.components', importing the new optional component tokens.

SLASHED-for-WP/admin-app/framework-css/optional/components.css

tokens.components.cssVendor optional component token surface (btn/card/field knobs) +73/-0

Vendor optional component token surface (btn/card/field knobs)

• Adds optional token definitions for component-level knobs (card, field, button) under '@layer slashed.tokens'.

SLASHED-for-WP/admin-app/framework-css/optional/tokens.components.css

sync-core.mjsVendor optional/ layers and rename preview bundle path to dist/ +50/-19

Vendor optional/ layers and rename preview bundle path to dist/

• Adds OPTIONAL_LAYERS vendoring (local + GitHub API) and orphans reporting for 'framework-css/optional'. Renames vendored preview bundle destination from 'badges/' to 'dist/' and generalizes vendor helpers for layer sets.

SLASHED-for-WP/admin-app/scripts/sync-core.mjs

LayoutPanel.svelteUpdate bg-layer token names and add variableOptions to sliders +26/-19

Update bg-layer token names and add variableOptions to sliders

• Updates UI controls to use '--sf-bg-layer-*' tokens instead of '--sf-bg-*'. Adds 'variableOptions' (space/container scales) for relevant layout tokens.

SLASHED-for-WP/admin-app/src/components/panels/LayoutPanel.svelte

PreviewPanel.svelteUse dist/ full bundle and switch previews to real .sf-btn/.sf-card +171/-109

Use dist/ full bundle and switch previews to real .sf-btn/.sf-card

• Updates the compile-time raw import to '@framework-css/dist/slashed.full.css?raw'. Removes synthetic pv-* component styling in favor of framework-defined '.sf-btn'/'.sf-card', and refreshes demo templates accordingly.

SLASHED-for-WP/admin-app/src/components/shell/PreviewPanel.svelte

main.tsImport optional component layer so .sf-btn/.sf-card are available +8/-0

Import optional component layer so .sf-btn/.sf-card are available

• Adds the '@framework-css/optional/components.css' import (which pulls in 'tokens.components.css') so component previews render with the real framework styles.

SLASHED-for-WP/admin-app/src/main.ts

Refactor (1) +54 / -14
BordersPanel.svelteMove button tokens out; add media radius and variable pickers +54/-14

Move button tokens out; add media radius and variable pickers

• Removes button token knobs (now owned by ComponentsPanel), renames the section to Field shape, and adds a Global media radius control. Adds 'variableOptions' to relevant SliderRow controls (divider, field tokens).

SLASHED-for-WP/admin-app/src/components/panels/BordersPanel.svelte

Other (27) +8890 / -5001
.vendored-manifest.jsonUpdate vendored manifest and add ComponentsPanel entry +60/-52

Update vendored manifest and add ComponentsPanel entry

• Switches vendored source metadata to local paths and updates sync timestamp. Adds the new ComponentsPanel to the vendored file list.

SLASHED-for-WP/admin-app/.vendored-manifest.json

layout.cssSync core layout utilities to framework v0.7.1 +123/-21

Sync core layout utilities to framework v0.7.1

• Updates vendored layout layer with new helpers (e.g., header padding modifiers, divide utilities, overlay helper, fluid container-query scale scope, and additional layout recipes).

SLASHED-for-WP/admin-app/framework-css/core/layout.css

macros.cssSync core macros to framework v0.7.1 +79/-3

Sync core macros to framework v0.7.1

• Adds/updates macros including surface background composition, external-link content support, expanded drop-shadow utilities, concave corner mask, and overlap recipes.

SLASHED-for-WP/admin-app/framework-css/core/macros.css

themes.cssSync themes layer to v0.7.1 (theme class aliases + scoped token fixes) +37/-10

Sync themes layer to v0.7.1 (theme class aliases + scoped token fixes)

• Adds '.sf-theme-light'/'.sf-theme-dark' aliases alongside 'data-theme' selectors and fixes scoped theme alias token re-declarations to avoid inheriting :root-resolved values.

SLASHED-for-WP/admin-app/framework-css/core/themes.css

tokens.cssSync token layer to v0.7.1 (fluid width driver + new token surfaces) +88/-30

Sync token layer to v0.7.1 (fluid width driver + new token surfaces)

• Introduces '--sf-fluid-width' and updates fluid clamp formulas to reference it. Adds new tokens/registrations such as '--sf-media-radius', new text/drop shadow steps, and alternate selection tokens.

SLASHED-for-WP/admin-app/framework-css/core/tokens.css

tokens.layout.cssRename bg tokens to bg-layer tokens and fix inset default type +11/-6

Rename bg tokens to bg-layer tokens and fix inset default type

• Renames '--sf-bg-*' to '--sf-bg-layer-*' and changes inset default to '0px' to avoid calc type mismatches in derived sizing.

SLASHED-for-WP/admin-app/framework-css/core/tokens.layout.css

tokens.macros.cssAdd new macro token inputs for surface-bg, corner-scoop, and overlap +43/-0

Add new macro token inputs for surface-bg, corner-scoop, and overlap

• Adds default token inputs used by new/expanded macros, including surface background preset tokens and overlap/corner-scoop knobs.

SLASHED-for-WP/admin-app/framework-css/core/tokens.macros.css

slashed.full.cssMove vendored full bundle under dist/ (badges/ rename) +804/-708

Move vendored full bundle under dist/ (badges/ rename)

• Adds/updates the vendored full bundle at 'framework-css/dist/slashed.full.css' to match upstream directory naming. Used by PreviewPanel's '?raw' import.

SLASHED-for-WP/admin-app/framework-css/dist/slashed.full.css

api-index.generated.jsonRegenerate API index for v0.7.1 +1105/-108

Regenerate API index for v0.7.1

• Updates generated API metadata to reflect the new/renamed token and class surfaces from the v0.7.1 framework sync.

SLASHED-for-WP/admin-app/src/data/api-index.generated.json

classes.generated.jsonRegenerate classes catalog for v0.7.1 +1811/-981

Regenerate classes catalog for v0.7.1

• Refreshes the generated class registry to include new utilities/components and renamed classes introduced in v0.7.1.

SLASHED-for-WP/admin-app/src/data/classes.generated.json

domain-patterns.jsonAdd components domain patterns and update token matching rules +4/-3

Add components domain patterns and update token matching rules

• Adds a 'components' domain ('btn-', 'card-') and extends macro/misc/typography patterns for new v0.7.1 token families (e.g., surface-bg, fluid-width, sf-is-*).

SLASHED-for-WP/admin-app/src/data/domain-patterns.json

token-registry.generated.jsonRegenerate token registry for v0.7.1 additions/renames +236/-6

Regenerate token registry for v0.7.1 additions/renames

• Updates the token registry IDs and names for newly introduced tokens and renames (notably bg-layer tokens and component tokens).

SLASHED-for-WP/admin-app/src/data/token-registry.generated.json

vite.config.jsDocument updated vendored CSS layout (core/ + optional/ + dist/) +4/-3

Document updated vendored CSS layout (core/ + optional/ + dist/)

• Updates comments describing where the vendored framework CSS lives under the @framework-css alias.

SLASHED-for-WP/admin-app/vite.config.js

app.cssRebuild admin app CSS bundle +1/-1

Rebuild admin app CSS bundle

• Updates the compiled Tailwind output to match the new/changed admin-app UI markup.

SLASHED-for-WP/assets/admin-app/app.css

app.jsRebuild admin app JS bundle +997/-835

Rebuild admin app JS bundle

• Updates the compiled admin-app JS output to include the new Components panel and SliderRow changes.

SLASHED-for-WP/assets/admin-app/app.js

classes-hints.jsonRegenerate class hints for v0.7.1 +60/-0

Regenerate class hints for v0.7.1

• Updates hint metadata to match the newly synced framework classes and renamed utilities.

SLASHED-for-WP/data/classes-hints.json

inventory.jsonRegenerate inventory for v0.7.1 +184/-55

Regenerate inventory for v0.7.1

• Refreshes the plugin inventory output to align with the v0.7.1 framework bundles and registries.

SLASHED-for-WP/data/inventory.json

variables-hints.jsonRegenerate variable hints for v0.7.1 +447/-303

Regenerate variable hints for v0.7.1

• Updates hint metadata to include newly introduced tokens and renamed variables from the v0.7.1 sync.

SLASHED-for-WP/data/variables-hints.json

slashed.full.cssUpdate plugin full CSS bundle to v0.7.1 +804/-708

Update plugin full CSS bundle to v0.7.1

• Replaces the shipped full bundle with the v0.7.1 build output, including new tokens and renamed utilities.

SLASHED-for-WP/dist/slashed.full.css

slashed.optimal-components.cssUpdate plugin optimal-components CSS bundle to v0.7.1 +680/-702

Update plugin optimal-components CSS bundle to v0.7.1

• Replaces the shipped optimal-components bundle with the v0.7.1 build output.

SLASHED-for-WP/dist/slashed.optimal-components.css

slashed.optimal-utilities.cssUpdate plugin optimal-utilities CSS bundle to v0.7.1 +624/-207

Update plugin optimal-utilities CSS bundle to v0.7.1

• Replaces the shipped optimal-utilities bundle with the v0.7.1 build output.

SLASHED-for-WP/dist/slashed.optimal-utilities.css

slashed.optimal.cssUpdate plugin optimal CSS bundle to v0.7.1 +500/-201

Update plugin optimal CSS bundle to v0.7.1

• Replaces the shipped optimal bundle with the v0.7.1 build output.

SLASHED-for-WP/dist/slashed.optimal.css

inventory.jsonRegenerate Bricks integration inventory for v0.7.1 +184/-55

Regenerate Bricks integration inventory for v0.7.1

• Updates the integration inventory to match the v0.7.1 framework token/class surface.

SLASHED-for-WP/integrations/bricks/data/inventory.json

slashed-bricks.phpBump Bricks integration CSS ref to v0.7.1 +1/-1

Bump Bricks integration CSS ref to v0.7.1

• Updates the integration CSS reference constant to align with the new bundled framework version.

SLASHED-for-WP/integrations/bricks/slashed-bricks.php

slashed-gutenberg.phpBump Gutenberg integration CSS ref to v0.7.1 +1/-1

Bump Gutenberg integration CSS ref to v0.7.1

• Updates the integration CSS reference constant to align with the new bundled framework version.

SLASHED-for-WP/integrations/gutenberg/slashed-gutenberg.php

slashed.phpBump core plugin CSS ref to v0.7.1 +1/-1

Bump core plugin CSS ref to v0.7.1

• Updates the plugin's CSS reference constant so runtime can report/enforce the bundled CSS version.

SLASHED-for-WP/slashed.php

registry-sources.jsInclude optional/utilities.css in registry class sources +1/-0

Include optional/utilities.css in registry class sources

• Adds 'optional/utilities.css' to the registry source list so class generation includes the optional utilities file.

scripts/registry-sources.js

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (6)
SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte (4)

85-89: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Unused parseNum helper.

parseNum is defined but never called in this file (getVal handles numeric extraction instead). Looks like leftover copy-paste from another panel.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte` around
lines 85 - 89, The parseNum helper in ComponentsPanel.svelte is unused and
should be removed; keep the file focused on the numeric extraction already
handled by getVal. Delete the parseNum function and any related dead code, and
make sure no references remain so the component only contains the active logic.

91-97: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

Media radius slider doesn't reflect the live inner radius.

getVal falls back to the static t.default whenever the override looks like a var/calc/clamp expression. For "Media radius" (rawDefault var(--sf-card-radius, var(--sf-radius-m))), this means the slider's numeric display stays pinned at 0.5 even after the user changes "Radius (inner)" away from its default — unlike the "Radius (outer, computed)" readout below, which correctly derives from cardRadius. Minor UX inconsistency, not a functional break since the token still resolves correctly in CSS.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte` around
lines 91 - 97, The Media radius slider is using getVal to fall back to t.default
for var/calc/clamp values, which keeps the displayed value static instead of
reflecting the live inner radius. Update getVal in ComponentsPanel.svelte so the
Media radius token derives its numeric display from the current cardRadius/inner
radius state rather than always returning the default when the override is an
expression, matching the behavior of the “Radius (outer, computed)” readout.

37-52: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Duplicate inline type for BUTTON_TOKENS/CARD_TOKENS.

Both arrays repeat the identical Array<{ label: string; token: string; ... }> shape. Extracting a shared TokenDef type would reduce duplication.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte` around
lines 37 - 52, The `BUTTON_TOKENS` and `CARD_TOKENS` constants in
`ComponentsPanel.svelte` repeat the same inline array item shape, so extract a
shared token type to remove duplication. Define a reusable `TokenDef` (or
similarly named) type near these constants and apply it to both arrays, keeping
the existing fields like `label`, `token`, `unit`, `min`, `max`, `step`,
`default`, `rawDefault`, and `variableOptions`. Update any related typings in
the panel so both token lists use the shared definition consistently.

116-117: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Magic array indices for computed radius/padding are fragile.

cardRadius/cardPadding rely on CARD_TOKENS[2] and CARD_TOKENS[0] positionally. If CARD_TOKENS is ever reordered or a new entry inserted, this silently computes the wrong "Radius (outer, computed)" value with no compile-time signal.

💡 Proposed fix
-  let cardRadius = $derived(getVal(CARD_TOKENS[2]));
-  let cardPadding = $derived(getVal(CARD_TOKENS[0]));
+  let cardRadius = $derived(getVal(CARD_TOKENS.find(t => t.token === "--sf-card-radius")!));
+  let cardPadding = $derived(getVal(CARD_TOKENS.find(t => t.token === "--sf-card-padding")!));
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte` around
lines 116 - 117, The computed cardRadius and cardPadding values are using
fragile positional access into CARD_TOKENS, so reordering the array can silently
break the radius/padding display. Update the ComponentsPanel.svelte logic to
stop relying on CARD_TOKENS[2] and CARD_TOKENS[0] directly; instead use explicit
token lookup by name or a dedicated mapping/helper in the same computed section
where getVal is used, so the intent stays stable even if CARD_TOKENS changes.
SLASHED-for-WP/admin-app/src/components/panels/EffectsPanel.svelte (1)

26-26: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

DROP_SHADOW_STEPS and the inline token list can drift apart.

DROP_SHADOW_STEPS (Line 26) drives the preview SVGs, but the editable token list at Line 326-332 hardcodes the same five steps (xs/s/m/l/xl) with labels/defaults independently. If a step is ever added/removed from one list, the other silently falls out of sync (e.g. preview shows a step with no matching input, or vice versa).

💡 Proposed fix
-        {`#each` [
-          { label: "Extra small", token: "--sf-drop-shadow-xs", default: "drop-shadow(0 0.5px 1px oklch(…))" },
-          { label: "Small",       token: "--sf-drop-shadow-s",  default: "drop-shadow(0 1px 2px oklch(…))" },
-          { label: "Medium",      token: "--sf-drop-shadow-m",  default: "drop-shadow(0 4px 6px oklch(…))" },
-          { label: "Large",       token: "--sf-drop-shadow-l",  default: "drop-shadow(0 8px 16px oklch(…))" },
-          { label: "Extra large", token: "--sf-drop-shadow-xl", default: "drop-shadow(0 16px 32px oklch(…))" },
-        ] as t (t.token)}
+        {`#each` DROP_SHADOW_TOKENS as t (t.token)}

and hoist a single DROP_SHADOW_TOKENS constant (labels + defaults) that DROP_SHADOW_STEPS (for the preview) can derive from via .map(t => t.step).

Also applies to: 326-332

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/panels/EffectsPanel.svelte` at line
26, `DROP_SHADOW_STEPS` and the editable token list in `EffectsPanel.svelte` are
duplicated sources of truth and can drift out of sync. Hoist a single
`DROP_SHADOW_TOKENS` constant containing each step’s step/label/default data,
then derive `DROP_SHADOW_STEPS` from it with a map so the preview SVGs and the
token inputs always stay aligned. Update the preview logic and the token
rendering code to reference the shared constant instead of hardcoded
`xs/s/m/l/xl` values.
SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte (1)

22-101: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Solid state model, minor readability nit.

The picker/raw/slider derivation logic is well thought out (sentinel value, isExprShaped detection, manualView override layer). One small nit: allOptions is typed as an inline { label: string; value: string }[] (Line 35) rather than reusing the imported VarOption type — purely cosmetic.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte` around lines
22 - 101, The `SliderRow.svelte` option list is using an inline `{ label:
string; value: string }[]` shape instead of the existing `VarOption` type, which
is just a readability inconsistency. Update `allOptions` in `SliderRow` to reuse
`VarOption` (or a shared derived type based on it) so the picker logic stays
aligned with the imported option model and the type is defined in one place.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/registry-sources.js`:
- Line 31: The CLASS_FILES entry includes a nonexistent optional/utilities.css
source, so update scripts/registry-sources.js by either removing that path from
CLASS_FILES or adding the missing file under
SLASHED-for-WP/admin-app/framework-css/optional. Make sure the registry list
matches the actual optional CSS sources, especially alongside components.css and
tokens.components.css, so downstream source resolution does not fail.

In `@SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte`:
- Around line 144-169: The raw-text branch in SliderRow.svelte hides the “back
to variable” button too aggressively, unlike the slider branch. Update the
conditional around the back link in the showRawText section to match the same
visibility rule used for the slider path (the one based on canPick/currentRaw),
so rows with rawDefault/onRawSet but no variableOptions still show an explicit
way back to variable mode.

In `@SLASHED-for-WP/admin-app/src/components/panels/BordersPanel.svelte`:
- Line 62: The mediaRadius derived value in BordersPanel.svelte only parses a
numeric rem value and fails for raw token expressions like var() or calc(),
causing the preview to fall back to 0rem. Update the mediaRadius computation to
use the same fallback handling as getRadiusValue() and getComponentVal(), so raw
overrides from onRawSet are resolved before parsing and the preview matches the
selected radius.

In `@SLASHED-for-WP/data/classes-hints.json`:
- Around line 2-61: The sf-is-* entries in classes-hints.json currently reuse
raw selector fragments as their descriptions, which makes the class-hint UI show
incorrect copy. Update the affected objects under the classes-hints data block
so each symbol (sf-is-disabled, sf-is-readonly, sf-is-active, sf-is-selected,
sf-is-current, sf-is-highlighted, sf-is-pressed, sf-is-valid, sf-is-success,
sf-is-invalid, sf-is-error, sf-is-warning, sf-is-info, sf-is-danger,
sf-is-empty) has the intended per-class description text instead of the
placeholder selector strings.

---

Nitpick comments:
In `@SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte`:
- Around line 22-101: The `SliderRow.svelte` option list is using an inline `{
label: string; value: string }[]` shape instead of the existing `VarOption`
type, which is just a readability inconsistency. Update `allOptions` in
`SliderRow` to reuse `VarOption` (or a shared derived type based on it) so the
picker logic stays aligned with the imported option model and the type is
defined in one place.

In `@SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte`:
- Around line 85-89: The parseNum helper in ComponentsPanel.svelte is unused and
should be removed; keep the file focused on the numeric extraction already
handled by getVal. Delete the parseNum function and any related dead code, and
make sure no references remain so the component only contains the active logic.
- Around line 91-97: The Media radius slider is using getVal to fall back to
t.default for var/calc/clamp values, which keeps the displayed value static
instead of reflecting the live inner radius. Update getVal in
ComponentsPanel.svelte so the Media radius token derives its numeric display
from the current cardRadius/inner radius state rather than always returning the
default when the override is an expression, matching the behavior of the “Radius
(outer, computed)” readout.
- Around line 37-52: The `BUTTON_TOKENS` and `CARD_TOKENS` constants in
`ComponentsPanel.svelte` repeat the same inline array item shape, so extract a
shared token type to remove duplication. Define a reusable `TokenDef` (or
similarly named) type near these constants and apply it to both arrays, keeping
the existing fields like `label`, `token`, `unit`, `min`, `max`, `step`,
`default`, `rawDefault`, and `variableOptions`. Update any related typings in
the panel so both token lists use the shared definition consistently.
- Around line 116-117: The computed cardRadius and cardPadding values are using
fragile positional access into CARD_TOKENS, so reordering the array can silently
break the radius/padding display. Update the ComponentsPanel.svelte logic to
stop relying on CARD_TOKENS[2] and CARD_TOKENS[0] directly; instead use explicit
token lookup by name or a dedicated mapping/helper in the same computed section
where getVal is used, so the intent stays stable even if CARD_TOKENS changes.

In `@SLASHED-for-WP/admin-app/src/components/panels/EffectsPanel.svelte`:
- Line 26: `DROP_SHADOW_STEPS` and the editable token list in
`EffectsPanel.svelte` are duplicated sources of truth and can drift out of sync.
Hoist a single `DROP_SHADOW_TOKENS` constant containing each step’s
step/label/default data, then derive `DROP_SHADOW_STEPS` from it with a map so
the preview SVGs and the token inputs always stay aligned. Update the preview
logic and the token rendering code to reference the shared constant instead of
hardcoded `xs/s/m/l/xl` values.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9bf0e216-88e6-4bd5-bc8b-3ccd4c032cae

📥 Commits

Reviewing files that changed from the base of the PR and between 0c9a6c4 and d631d39.

⛔ Files ignored due to path filters (6)
  • SLASHED-for-WP/admin-app/framework-css/dist/slashed.full.css is excluded by !**/dist/**
  • SLASHED-for-WP/dist/slashed.full.css is excluded by !**/dist/**
  • SLASHED-for-WP/dist/slashed.optimal-components.css is excluded by !**/dist/**
  • SLASHED-for-WP/dist/slashed.optimal-utilities.css is excluded by !**/dist/**
  • SLASHED-for-WP/dist/slashed.optimal.css is excluded by !**/dist/**
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (43)
  • SLASHED-for-WP/admin-app/.vendored-manifest.json
  • SLASHED-for-WP/admin-app/framework-css/core/layout.css
  • SLASHED-for-WP/admin-app/framework-css/core/macros.css
  • SLASHED-for-WP/admin-app/framework-css/core/themes.css
  • SLASHED-for-WP/admin-app/framework-css/core/tokens.css
  • SLASHED-for-WP/admin-app/framework-css/core/tokens.layout.css
  • SLASHED-for-WP/admin-app/framework-css/core/tokens.macros.css
  • SLASHED-for-WP/admin-app/framework-css/optional/components.css
  • SLASHED-for-WP/admin-app/framework-css/optional/tokens.components.css
  • SLASHED-for-WP/admin-app/scripts/sync-core.mjs
  • SLASHED-for-WP/admin-app/src/App.svelte
  • SLASHED-for-WP/admin-app/src/components/CommandPalette.svelte
  • SLASHED-for-WP/admin-app/src/components/DomainPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/BordersPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/EffectsPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/HomePanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/LayoutPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/MacrosPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/MiscPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/MotionPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/SpacingPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/panels/TypographyPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/shell/PreviewPanel.svelte
  • SLASHED-for-WP/admin-app/src/components/shell/SidebarNav.svelte
  • SLASHED-for-WP/admin-app/src/data/api-index.generated.json
  • SLASHED-for-WP/admin-app/src/data/classes.generated.json
  • SLASHED-for-WP/admin-app/src/data/domain-patterns.json
  • SLASHED-for-WP/admin-app/src/data/token-registry.generated.json
  • SLASHED-for-WP/admin-app/src/lib/variableScales.ts
  • SLASHED-for-WP/admin-app/src/main.ts
  • SLASHED-for-WP/admin-app/vite.config.js
  • SLASHED-for-WP/assets/admin-app/app.css
  • SLASHED-for-WP/assets/admin-app/app.js
  • SLASHED-for-WP/data/classes-hints.json
  • SLASHED-for-WP/data/inventory.json
  • SLASHED-for-WP/data/variables-hints.json
  • SLASHED-for-WP/integrations/bricks/data/inventory.json
  • SLASHED-for-WP/integrations/bricks/slashed-bricks.php
  • SLASHED-for-WP/integrations/gutenberg/slashed-gutenberg.php
  • SLASHED-for-WP/slashed.php
  • scripts/registry-sources.js

'optional/forms.css',
'optional/components.css',
'optional/theme-example.css',
'optional/utilities.css',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
fd -i 'utilities.css' -p optional

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 263


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n[repo files mentioning utilities.css]\n'
rg -n --hidden --glob '!**/.git/**' 'utilities\.css' .

printf '\n[paths named optional or containing optional/utilities.css]\n'
fd -a -HI 'optional' .
fd -a -HI 'utilities.css' .

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 3380


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n[exact path search]\n'
fd -a -HI 'utilities\.css$' .

printf '\n[reference search]\n'
rg -n --hidden --glob '!**/.git/**' 'optional/utilities\.css|utilities\.css' .

printf '\n[registry-sources context]\n'
sed -n '1,120p' scripts/registry-sources.js

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 3758


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n[framework optional directory]\n'
find SLASHED-for-WP/admin-app/framework-css/optional -maxdepth 2 -type f | sort

printf '\n[context around registry source files]\n'
ls -la SLASHED-for-WP/admin-app/framework-css

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 650


Remove optional/utilities.css from CLASS_FILES or add the missing source file. SLASHED-for-WP/admin-app/framework-css/optional/ has components.css and tokens.components.css, but no utilities.css, so scripts/registry-sources.js:31 now points at a nonexistent source path.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/registry-sources.js` at line 31, The CLASS_FILES entry includes a
nonexistent optional/utilities.css source, so update scripts/registry-sources.js
by either removing that path from CLASS_FILES or adding the missing file under
SLASHED-for-WP/admin-app/framework-css/optional. Make sure the registry list
matches the actual optional CSS sources, especially alongside components.css and
tokens.components.css, so downstream source resolution does not fail.

Source: Coding guidelines

Comment on lines +144 to +169
{:else if showRawText}
<input
type="text"
value={rawDraft}
placeholder={rawDefault}
onfocus={() => { isEditing = true; }}
onfocus={() => { isEditingRaw = true; }}
onblur={() => {
isEditing = false;
if (!rawDraft.trim()) onReset();
isEditingRaw = false;
const v = rawDraft.trim();
if (!v) backToVariable();
else onRawSet?.(v);
}}
onkeydown={(e) => {
if (e.key === "Enter") (e.currentTarget as HTMLInputElement).blur();
}}
oninput={(e) => {
rawDraft = (e.target as HTMLInputElement).value;
const v = rawDraft.trim();
if (v && onRawSet) onRawSet(v);
}}
class="w-full bg-black/5 dark:bg-white/5 border border-black/10 dark:border-white/10 rounded px-2 py-1.5 text-[11px] font-mono text-slate-700 dark:text-slate-300 placeholder:text-slate-500 focus:outline-none focus:border-indigo-500"
class="w-full bg-black/8 dark:bg-white/8 border border-indigo-500/50 rounded px-2 py-1.5 text-[11px] font-mono text-slate-700 dark:text-slate-300 placeholder:text-slate-500 focus:outline-none"
/>
{#if canPick}
<button
onclick={backToVariable}
class="text-[9px] font-mono text-indigo-600 dark:text-indigo-400 hover:underline cursor-pointer mt-0.5"
>&larr; back to variable</button>
{/if}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Inconsistent "back to variable" affordance in raw-text mode.

In the slider branch (Line 173), the back button shows when canPick || currentRaw !== undefined. In the raw-text branch (Line 164), it only shows when canPick. For rows with rawDefault/onRawSet but no variableOptions (e.g. LayoutPanel's sticky offsets, per the comment at Line 49-52), a user who opens raw-text mode via the </> toggle and enters an override has no visible way back except re-clicking </> — the explicit link is silently omitted here. Align the condition with the slider branch for consistency.

💡 Proposed fix
     {`#if` canPick}
+    {:else if currentRaw !== undefined}
       <button
         onclick={backToVariable}
         class="text-[9px] font-mono text-indigo-600 dark:text-indigo-400 hover:underline cursor-pointer mt-0.5"
       >&larr; back to variable</button>
     {/if}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/inputs/SliderRow.svelte` around lines
144 - 169, The raw-text branch in SliderRow.svelte hides the “back to variable”
button too aggressively, unlike the slider branch. Update the conditional around
the back link in the showRawText section to match the same visibility rule used
for the slider path (the one based on canPick/currentRaw), so rows with
rawDefault/onRawSet but no variableOptions still show an explicit way back to
variable mode.

let borderStyle = $derived(overrides["--sf-border-style"] ?? "solid");
let focusRingColor = $derived(overrides["--sf-focus-ring-color"] ?? "");
let dividerColor = $derived(overrides["--sf-divider-color"] ?? "");
let mediaRadius = $derived(parseNum(overrides["--sf-media-radius"]?.replace("rem",""), 0));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

file='SLASHED-for-WP/admin-app/src/components/panels/BordersPanel.svelte'

# Show the relevant area around the derived values and helper functions.
sed -n '50,120p' "$file"

printf '\n---- preview usage ----\n'
sed -n '390,430p' "$file"

printf '\n---- raw-set / variable-options references ----\n'
rg -n 'onRawSet|variableOptions|mediaRadius|getRadiusValue|getComponentVal|sf-media-radius' "$file"

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 7446


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate parseNum and all media-radius references.
rg -n 'function parseNum|const parseNum|export .*parseNum|parseNum\(' SLASHED-for-WP/admin-app/src
printf '\n---- media radius references ----\n'
rg -n --hidden --glob '!**/node_modules/**' --glob '!**/dist/**' '--sf-media-radius|mediaRadius' SLASHED-for-WP/admin-app/src

printf '\n---- BordersPanel surrounding CSS/output ----\n'
sed -n '430,520p' SLASHED-for-WP/admin-app/src/components/panels/BordersPanel.svelte

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 4639


mediaRadius should handle raw var()/calc() overrides like the other radius helpers. getRadiusValue() and getComponentVal() already fall back for raw token expressions, but this derived value just calls parseNum(...). When --sf-media-radius is set through onRawSet, parseFloat("var(--sf-radius-m)") becomes NaN, so the preview box renders as 0rem instead of matching the selected radius.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/admin-app/src/components/panels/BordersPanel.svelte` at line
62, The mediaRadius derived value in BordersPanel.svelte only parses a numeric
rem value and fails for raw token expressions like var() or calc(), causing the
preview to fall back to 0rem. Update the mediaRadius computation to use the same
fallback handling as getRadiusValue() and getComponentVal(), so raw overrides
from onRawSet are resolved before parsing and the preview matches the selected
radius.

Comment on lines +2 to +61
"sf-is-disabled": {
"description": ".sf-is-hidden {",
"category": "States"
},
"sf-is-readonly": {
"description": ".sf-is-hidden {",
"category": "States"
},
"sf-is-active": {
"description": ".sf-is-loading {",
"category": "States"
},
"sf-is-selected": {
"description": ".sf-is-loading {",
"category": "States"
},
"sf-is-current": {
"description": ".sf-is-loading {",
"category": "States"
},
"sf-is-highlighted": {
"description": ".sf-is-loading {",
"category": "States"
},
"sf-is-pressed": {
"description": ".sf-is-loading {",
"category": "States"
},
"sf-is-valid": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-success": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-invalid": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-error": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-warning": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-info": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-danger": {
"description": ".sf-is-open {",
"category": "States"
},
"sf-is-empty": {
"description": ".sf-is-dragging {",
"category": "States"
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Locate the script that generates classes-hints.json to find the description-extraction bug
fd -i 'gen-classes-hints' 
fd -i 'classes-hints' --extension js --extension mjs
rg -n "classes-hints.json" --type js --type json -g '!node_modules'

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 167


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Map the relevant files and search for the hint JSON and its consumers/generators.
git ls-files | rg '(^|/)(data/classes-hints\.json|class-token-page\.php|classes-hints|hint|token-page|class-token)'

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 346


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the relevant consumer to see how the JSON fields are used.
ast-grep outline SLASHED-for-WP/includes/class-token-page.php --view expanded || true
printf '\n--- class-token-page.php (relevant slices) ---\n'
cat -n SLASHED-for-WP/includes/class-token-page.php | sed -n '1,260p'

printf '\n--- classes-hints.json (top slice) ---\n'
cat -n SLASHED-for-WP/data/classes-hints.json | sed -n '1,120p'

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 15609


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Find where classHints/description is consumed in the admin app.
rg -n "classHints|description" SLASHED-for-WP -g '!*.min.*' -g '!*.map'

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 50386


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Narrow down to the actual frontend source that consumes slashedApp.classHints.
git ls-files SLASHED-for-WP | rg '(^|/)(assets/admin-app|src|admin-app)/.*\.(js|jsx|ts|tsx|vue|svelte)$|(^|/)(app|main)\.(js|ts)$'

printf '\n--- classHints references ---\n'
rg -n --max-count 50 "classHints" SLASHED-for-WP --glob '!*.min.*' --glob '!*.map'

printf '\n--- likely tooltip/label references ---\n'
rg -n --max-count 80 "tooltip|hint|description|class hint|classHints" SLASHED-for-WP/assets SLASHED-for-WP/src --glob '!*.min.*' --glob '!*.map'

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 50386


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- integrations/gutenberg/assets/editor/panel.js around class hint rendering ---'
cat -n SLASHED-for-WP/integrations/gutenberg/assets/editor/panel.js | sed -n '380,450p'

printf '\n%s\n' '--- integrations/bricks/editor-app/src/lib/class-hints.js ---'
cat -n SLASHED-for-WP/integrations/bricks/editor-app/src/lib/class-hints.js | sed -n '1,260p'

printf '\n%s\n' '--- admin app class hint usage references ---'
rg -n "classHints|hint|description" SLASHED-for-WP/admin-app/src SLASHED-for-WP/integrations/gutenberg/assets/editor/panel.js SLASHED-for-WP/integrations/bricks/editor-app/src/lib/class-hints.js --glob '!*.min.*' --glob '!*.map'

Repository: codeslash-dev/SLASHED-Plugins

Length of output: 50386


Replace the sf-is-* hint text in SLASHED-for-WP/data/classes-hints.json

The description values for sf-is-disabled through sf-is-empty are raw selector fragments (.sf-is-hidden {, .sf-is-loading {, .sf-is-open {, .sf-is-dragging {) instead of class descriptions, and they feed the class-hint UI. Regenerate this block with the intended per-class copy.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SLASHED-for-WP/data/classes-hints.json` around lines 2 - 61, The sf-is-*
entries in classes-hints.json currently reuse raw selector fragments as their
descriptions, which makes the class-hint UI show incorrect copy. Update the
affected objects under the classes-hints data block so each symbol
(sf-is-disabled, sf-is-readonly, sf-is-active, sf-is-selected, sf-is-current,
sf-is-highlighted, sf-is-pressed, sf-is-valid, sf-is-success, sf-is-invalid,
sf-is-error, sf-is-warning, sf-is-info, sf-is-danger, sf-is-empty) has the
intended per-class description text instead of the placeholder selector strings.

@jackgranatowski
jackgranatowski merged commit 288e5ee into main Jul 7, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants