docs(css-utilities): DLT-3337 migrate internal utility-class consumers to token-indexed names and rewrite radius docs - #1212
Merged
Francis Rupert (francisrupert) merged 9 commits intoApr 21, 2026
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🛠️ Type Of Change
📖 Jira Ticket
DLT-3337
Important
Stacked on top of #1211 (DLT-3329).
Do not merge this PR until #1211 has merged. Once #1211 lands, GitHub will auto-retarget this PR from
new-and-improve-radiustonextand the diff will shrink to only the 6 commits unique to this branch.📖 Description
Consumer migration + docs rewrite. Broader than the initial radius-only scope: running
dt-migrate utility-class-to-token-stopsacross the monorepo rewrites every legacy utility class, not just radius — the sizing/spacing/position families from PR #1150 were never swept across internal consumers. This PR does that cleanup at the same time.What this PR does:
dt-migrate utility-class-to-token-stopsacross the monorepo. 1,273 class-attribute rewrites across 164 source files spanning 6 property families:d-h16→d-h-25,d-w1→d-w-1pxd-m8→d-m-100,d-mtn8→d-mt-n100d-p8→d-p-100d-g8→d-g-100d-t0→d-t-0,d-tn8→d-t-n100d-bar6→d-bar-350,d-btr-pill→d-bbsr-pillapps/dialtone-documentation/— 121 files (docs.md,.vuepress/baseComponents/, theme, example components)packages/dialtone-vue/— 31 files (stories, recipes, prototypes,skeleton_constants.js, one test)packages/combinator/— 8 files (variants + components)packages/dialtone-mcp-server/— 2 files (README, test-search fixtures)packages/dialtone-docs/— 1 file (dev docs content).claude/rules/— 1 file (example code in docs-writing rule)apps/dialtone-documentation/docs/utilities/borders/radius.md:## Individual Cornerssection for the net-new single-corner utilities from feat(css-utilities, eslint-plugin-dialtone): DLT-3329 update border-radius css utilities and associated tooling #1211._data/borders.json). Renders via<utility-class-table show-rendered>+ClampedTableWrapper, gaining the standard search input and "Hide deprecated" toggle.radius.scopes(9) andradius.values(12 stops) to_data/borders.json./* eslint-disable max-len */header to 58packages/combinator/src/variants/variants_*.jsfiles. Combinator variant definitions are inherently long (large prop-combination arrays, long HTML template strings); enforcing 120-char was impractical and blocked the migration commit.ThemeColorTable.vuethat max-len was silently tolerating.What this PR does NOT do:
pnpm dt-migrate utility-class-to-token-stopsthemselves after Dialtone package bump.packages/eslint-plugin-dialtone/— those rule files intentionally contain legacy class names as regex patterns and test inputs.💡 Context
PR #1211 adds the primitives (new tokens, new classes, deprecation metadata, ESLint rule, migration helper config). This PR consumes them — wiping legacy class names from every internal source file and rebuilding the radius docs page around the new primitives.
The broader-than-radius scope emerged during the migration run: running the full
utility-class-to-token-stopsconfig rewrites everything, not just radius. Filtering to radius-only would have left ~47 files with legacy spacing/sizing/position class names that PR #1150 should have cleaned up but didn't. Bundling the catch-up here avoids a future "why are there stilld-p8classes in our own stories" ticket.🔍 For Reviewers
Before reviewing, make sure #1211 is in your local checkout (it's the base branch). If you just pull this branch, it'll include #1211's commits too.
Build + tests:
Expected: 113/113 test files, 2918 tests passing. No regressions.
Radius docs page (
http://localhost:4000/utilities/borders/radius.htmlafterpnpm nx run dialtone-documentation:start):## All Cornersdemos — 10 boxes, visibly increasing radius,d-bar-0throughd-bar-600.d-bar-550sits between 500 and 600 as 24px.## Rounded Sides— 4 boxes, top / right / bottom / left rounding at 12px.## Individual Corners(new) — 4 boxes, single-corner rounding at 16px.## Pills,## Circles— render correctly.## Classestable — scrollable, search input, "Hide deprecated" toggle present. ~169 rows with toggle off, ~109 with toggle on. Legacy rows carry a red "Deprecated" badge.Migration spot-checks — these pages had the highest rewrite counts and should look identical to pre-migration (
git diff next...feat/DLT-3337-utility-class-consumer-migration -- <file>):docs/utilities/flex/columns-layouts.md(~141 rewrites)packages/dialtone-vue/components/stack/stack_variants.story.vue(~100)docs/dialtone/whats-new/posts/2025-12-2.md(~28)docs/components/stack.md(~26)docs/foundations/colors/usage/index.md(~23)Confirm no legacy class-attribute usages remain in tracked source:
📦 Cross-Package Impact
Dependency flow: tokens / CSS / Vue → docs/MCP/combinator (this PR).
📝 Checklist
## Individual Cornerssection + data-driven classes table).For all Vue changes:
.test.jswith class-name assertions — tests still pass).For all CSS changes:
gap/ flexbox over margin where possible (N/A — no new layout).🔮 Next Steps
pnpm dt-migrate utility-class-to-token-stopsafter Dialtone's nextnext-channel release to pick up the full migration across their own source code.dist//.cache//etc. exclusions.