Skip to content

feat(components): DLT-3157 align critical/positive prop values and CSS class names#1177

Merged
Brad Paugh (braddialpad) merged 7 commits intonextfrom
props-positive
Apr 12, 2026
Merged

feat(components): DLT-3157 align critical/positive prop values and CSS class names#1177
Brad Paugh (braddialpad) merged 7 commits intonextfrom
props-positive

Conversation

@braddialpad
Copy link
Copy Markdown
Contributor

@braddialpad Brad Paugh (braddialpad) commented Apr 7, 2026

Obligatory GIF (super important!)

Obligatory GIF

🛠️ Type Of Change

  • Feature

📖 Jira Ticket

DLT-3157

📖 Description

Aligns critical/positive naming across components that previously used danger/success/error. Two parallel changes:

Prop values — new preferred values added alongside deprecated ones (old values remain functional):

Component Prop New values Deprecated
DtButton kind critical danger
DtBadge type positive success
DtLink tone (renamed from kind) critical, positive kind, danger, success
DtNotice / DtBanner kind critical, positive error, success
DtToast kind critical, positive error, success
DtModal kind critical danger
DtModal bannerKind critical, positive error, success

DtLink's kind prop is renamed to tone since it only affects link text color. The old kind prop is kept as a deprecated backward-compat fallback via a resolvedTone computed.

CSS classes — new classes added as aliases; old classes kept for backward compatibility:

Old class New class
d-badge--success d-badge--positive
d-btn--danger d-btn--critical
d-link--danger / d-link--inverted-danger d-link--critical / d-link--inverted-critical
d-link--success / d-link--inverted-success d-link--positive / d-link--inverted-positive
d-modal--danger d-modal--critical
d-modal__banner--success d-modal__banner--positive
d-notice--error, d-banner--error, d-toast--error d-notice--critical, d-banner--critical, d-toast--critical
d-notice--success, d-banner--success, d-toast--success d-notice--positive, d-banner--positive, d-toast--positive

💡 Context

kind prop values were inconsistent across components — some used danger/success/error, others already used critical/positive. This change standardizes on critical and positive as the canonical values going forward, while maintaining full backward compatibility with the old values and CSS classes.

📦 Cross-Package Impact

Package Changes Downstream Impact
dialtone-css New CSS class aliases in badge, button, link, modal, notice Less files Consumers using old class names still work; new names available
dialtone-vue New prop values + DtLink kindtone rename Consumers should migrate to new values; old values still work

Dependency flow: CSSVue → docs/MCP

📝 Checklist

For all PRs:

  • I have ensured no private Dialpad links or info are in the code or pull request description (Dialtone is a public repo!).
  • I have reviewed my changes.
  • I have added all relevant documentation.
  • I have considered the performance impact of my change.

For all Vue changes:

  • I have added / updated unit tests.

For all CSS changes:

  • I have used design tokens whenever possible.
  • I have considered how this change will behave on different screen sizes.
  • I have visually validated my change in light and dark mode.
  • I have used gap or flexbox properties for layout instead of margin whenever possible.

Standardizes "critical" and "positive" across components, CSS, and tokens (adds $deprecated aliases for danger/error/success); keeps backward-compatible fallbacks; renames DtLink prop kind→tone with resolvedTone; updates dialtone-css, dialtone-vue, tokens, docs, stories, and tests.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Please add either the visual-test-ready or no-visual-test label to this PR depending on whether you want to run visual tests or not.
It is recommended to run visual tests if your PR changes any UI. ‼️

@braddialpad Brad Paugh (braddialpad) added the no-visual-test Add this tag when the PR does not need visual testing label Apr 7, 2026
@braddialpad Brad Paugh (braddialpad) changed the title feat(badge, banner, button, link, modal, notice, toast): DLT-3157 align critical/positive prop values and CSS class names feat(components): DLT-3157 align critical/positive prop values and CSS class names Apr 7, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c8d0688033

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "Codex (@codex) address that feedback".

Comment thread packages/dialtone-vue/components/banner/banner.vue
Comment thread packages/dialtone-vue/components/link/link.vue
Comment thread packages/dialtone-css/lib/build/less/components/badge.less
Comment thread packages/dialtone-vue/components/link/link.vue
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Remapping props looking as expected.

One major update to make regarding @deprecated-values.

Would documentation updates be a followup PR for all affected components?

e.g. Badge...

Image

Comment thread packages/dialtone-vue/components/badge/badge.vue Outdated
Comment thread packages/dialtone-vue/components/link/link.vue
Comment thread packages/dialtone-css/lib/build/less/components/badge.less
Comment thread packages/dialtone-vue/components/link/link.vue
Comment thread packages/dialtone-vue/components/toast/toast.vue
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 9, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Renamed semantic variants across the repository: errorcritical, successpositive, consolidated dangercritical. Changes touch tokens, CSS selectors, Vue props/validators/computed mappings, constants, tests, stories, documentation, recipes, docs tooling, and one .mcp.json runtime invocation change.

Changes

Cohort / File(s) Summary
Configuration
\.mcp.json
Adjusted MCP server invocation: replaced direct command: dialtone-mcp-server with node and args: ./packages/dialtone-mcp-server/build/index.js to change how the server is launched.
Validation core & utils
packages/dialtone-vue/common/constants/index.js, packages/dialtone-vue/common/utils/index.js, packages/dialtone-vue/common/*test.js
Renamed VALIDATION_MESSAGE_TYPES keys (ERRORCRITICAL, SUCCESSPOSITIVE) and updated getValidationState priority and tests accordingly.
Design tokens
packages/dialtone-tokens/tokens/theme/dp/*.{json}
Added positive* tokens, marked success* tokens deprecated (kept aliases), and rewired link/status token references to use positive tokens.
CSS (LESS)
packages/dialtone-css/lib/build/less/components/*.less, .../recipes/top_banner_info.less, .../components/toast.less
Introduced/aliased .--critical and .--positive selectors and validation-state classes; grouped legacy error/success selectors with new names to preserve styling.
Component constants & class maps
packages/dialtone-vue/components/*/*_constants.js
Replaced mapping keys and exported constants to use critical/positive (removed or aliased danger/error/success) and updated modifier class mappings.
Vue components (props, validators, computed)
packages/dialtone-vue/components/*/*.vue (banner, badge, button, link, modal, notice, input, validation_messages, toast, etc.)
Updated JSDoc @values, prop validators (renamed hooks), computed class mappings; link component added tone prop with deprecated kind fallback via resolvedTone.
Component logic tweaks
packages/dialtone-vue/components/input/input.vue, packages/dialtone-vue/common/utils/index.js
Changed runtime validation outputs (e.g., input length state now returns CRITICAL) and validation priority ordering (CRITICAL > WARNING > POSITIVE).
Tests
packages/dialtone-vue/components/*/*.test.js, packages/dialtone-vue/common/*.test.js
Updated many tests (fixtures, assertions, descriptions) to expect critical/positive variants and new class names; added modal banner critical and text-tone positive tests.
Stories & Recipes
packages/dialtone-vue/components/*/*.story.vue, *.stories.js, packages/dialtone-vue/recipes/**, packages/dialtone-vue/directives/**
Renamed story exports (Error→Critical, Success→Positive), updated story args/templates and computed story logic to use critical/positive or tone.
Documentation & examples
apps/dialtone-documentation/docs/components/*.md, packages/dialtone-vue/docs/storybook/writing_storybook.mdx
Replaced prose and examples to reference critical/positive instead of error/success; updated shown story export names.
Badge & Link specifics
packages/dialtone-vue/components/badge/*, packages/dialtone-vue/components/link/*
Badge successpositive (constants/docs); Link component moves to tone API while preserving kind for backward compatibility and mapping CRITICAL/POSITIVE modifiers.
Docs tooling / token docs
packages/dialtone-tokens/build-docs.js, apps/dialtone-documentation/docs/.vuepress/baseComponents/tokens/*
Docs generation now reads $deprecated/deprecated token metadata instead of local pattern heuristics; removed DEPRECATED_PATTERNS constant and isDeprecated helper.
Stories / Docs examples (app-level)
apps/dialtone-documentation/docs/**, apps/dialtone-documentation/docs/.vuepress/**
Numerous doc pages and example files updated to new variant names and demo payloads; token display logic adjusted to surface token deprecation metadata.
Variant fixtures & combinator
packages/combinator/src/variants/*
Updated fixture variant message type fields (errorcritical, successpositive) and removed some file-level eslint disables.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch props-positive

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

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 18

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (7)
packages/dialtone-vue/components/badge/badge_constants.js (1)

1-9: ⚠️ Potential issue | 🔴 Critical

Restore success in BADGE_TYPE_MODIFIERS to preserve deprecated prop support.

Removing the success key makes type="success" resolve to no modifier class and fails the backward-compatibility contract.

Suggested fix
 export const BADGE_TYPE_MODIFIERS = {
   default: '',
   info: 'd-badge--info',
+  success: 'd-badge--success',
   positive: 'd-badge--positive',
   warning: 'd-badge--warning',
   critical: 'd-badge--critical',
   bulletin: 'd-badge--bulletin',
   ai: 'd-badge--ai',
 };

As per coding guidelines, "Keep reviews short: flag primarily issues that make the PR unsafe to merge and/or difficult to maintain."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-vue/components/badge/badge_constants.js` around lines 1 -
9, The BADGE_TYPE_MODIFIERS map removed the legacy "success" key causing
type="success" to lose its modifier; restore backward compatibility by adding a
"success" entry to BADGE_TYPE_MODIFIERS (map "success" to the same class as the
current positive variant, e.g., 'd-badge--positive') so components reading
BADGE_TYPE_MODIFIERS continue to apply the expected modifier for type="success".
packages/dialtone-vue/components/link/index.js (1)

2-11: ⚠️ Potential issue | 🟠 Major

Restore deprecated constant re-exports to keep the public API backward-compatible.

Line 3–4 introduces new names, but removing DANGER/SUCCESS from this entrypoint can break existing consumers importing from @/components/link (or equivalent public path). If backward compatibility is a goal for this PR, keep deprecated aliases exported here.

Proposed fix
 export {
   CRITICAL,
   POSITIVE,
+  CRITICAL as DANGER, // deprecated alias
+  POSITIVE as SUCCESS, // deprecated alias
   WARNING,
   MUTED,
   MENTION,
   LINK_VARIANTS,
   LINK_KIND_MODIFIERS,
   getLinkKindModifier,
 } from './link_constants';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-vue/components/link/index.js` around lines 2 - 11, Restore
the deprecated re-exports DANGER and SUCCESS from this module so consumers
importing from the public entry still work: export the existing constants
CRITICAL and POSITIVE under the old names (i.e., re-export DANGER as an alias
for CRITICAL and SUCCESS as an alias for POSITIVE) alongside the current exports
(CRITICAL, POSITIVE, WARNING, MUTED, MENTION, LINK_VARIANTS,
LINK_KIND_MODIFIERS, getLinkKindModifier) to preserve backward compatibility
with existing imports.
packages/dialtone-css/lib/build/less/components/forms.less (1)

160-174: ⚠️ Potential issue | 🟠 Major

Keep legacy validation class aliases in CSS selectors.

The PR goal says old class names remain functional, but these selectors drop the legacy names. Add aliases so existing markup using --error/--success keeps working.

Suggested fix
-.d-validation-message--critical {
+.d-validation-message--critical,
+.d-validation-message--error {
   --validation-color-text: var(--dt-color-foreground-critical);
   ...
 }

-.d-validation-message--positive {
+.d-validation-message--positive,
+.d-validation-message--success {
   --validation-color-text: var(--dt-color-foreground-success);
   ...
 }

As per coding guidelines, "Flag primarily issues that make the PR unsafe to merge and/or difficult to maintain."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-css/lib/build/less/components/forms.less` around lines 160
- 174, The selectors for .d-validation-message--critical and
.d-validation-message--positive drop legacy aliases (error/success), breaking
existing markup; update the selectors to include the legacy class names (e.g.,
add .d-validation-message--error as an alias for .d-validation-message--critical
and .d-validation-message--success as an alias for
.d-validation-message--positive) so both names share the same declarations
(including the ::before mask and --validation-color-text variable) and preserve
behavior for old markup.
packages/dialtone-vue/components/validation_messages/validation_messages.vue (1)

91-99: ⚠️ Potential issue | 🟠 Major

Restore legacy error/success handling in messageTypeClass.

messageTypeClass no longer resolves deprecated message types, so legacy payloads can render without validation classes. Please keep aliases until deprecations are removed.

Suggested fix
     messageTypeClass (type) {
       const messageTypesClasses = {
         critical: 'base-input__message--critical d-validation-message--critical',
+        error: 'base-input__message--critical d-validation-message--critical',
         warning: 'base-input__message--warning d-validation-message--warning',
         positive: 'base-input__message--positive d-validation-message--positive',
+        success: 'base-input__message--positive d-validation-message--positive',
       };

       return messageTypesClasses[type];
     },

As per coding guidelines, "Flag primarily issues that make the PR unsafe to merge and/or difficult to maintain."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-vue/components/validation_messages/validation_messages.vue`
around lines 91 - 99, messageTypeClass currently only returns classes for
'critical'/'warning'/'positive' and ignores legacy aliases; update
messageTypeClass (or the messageTypesClasses map) to treat deprecated types
'error' as 'critical' and 'success' as 'positive' so old payloads still resolve
to the proper class names; ensure the mapping happens before the lookup (or add
alias keys in messageTypesClasses) and keep existing keys 'critical', 'warning',
'positive' intact.
packages/dialtone-vue/components/button/button_constants.js (1)

18-25: ⚠️ Potential issue | 🔴 Critical

kind="danger" backward compatibility is broken.

Removing danger from BUTTON_KIND_MODIFIERS makes DtButton.kind fail validation and lose kind styling for legacy usage. Keep danger as a deprecated alias.

Proposed fix
 export const BUTTON_KIND_MODIFIERS = {
   default: '',
   muted: 'd-btn--muted',
   critical: 'd-btn--critical',
+  // Deprecated alias
+  danger: 'd-btn--critical',
   positive: 'd-btn--positive',
   inverted: 'd-btn--inverted',
   unstyled: 'd-btn--unstyled',
 };

 export const INVALID_COMBINATION = [
@@
   {
     circle: true,
     kind: 'critical',
     importance: 'outlined',
     message: _invalidCombinationMessage(true, 'critical', 'outlined'),
   },
+  {
+    circle: true,
+    kind: 'danger',
+    importance: 'outlined',
+    message: _invalidCombinationMessage(true, 'danger', 'outlined'),
+  },

Also applies to: 54-58

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-vue/components/button/button_constants.js` around lines 18
- 25, Restore the deprecated "danger" alias in BUTTON_KIND_MODIFIERS so legacy
DtButton.kind="danger" still passes validation and receives the correct styling;
add an entry "danger": "d-btn--critical" (matching the critical modifier) in the
BUTTON_KIND_MODIFIERS object and keep any existing "critical" entry as-is to
preserve backward compatibility for DtButton.kind.
packages/dialtone-vue/components/checkbox/checkbox.test.js (1)

215-241: ⚠️ Potential issue | 🟠 Major

Add regression tests for deprecated validation aliases (success/error).

Current assertions only cover positive/critical, so backward compatibility is unverified in this suite.

As per coding guidelines, "Flag missing tests for non-trivial logic changes — untested behavior is unverified behavior."

Also applies to: 480-499

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-vue/components/checkbox/checkbox.test.js` around lines 215
- 241, Add regression tests that assert the deprecated validation aliases map to
the same classes as the new types: create two new it blocks in the same "When a
validation state is provided" suite that set mockProps.validationState to
VALIDATION_MESSAGE_TYPES.SUCCESS and VALIDATION_MESSAGE_TYPES.ERROR (or the
string aliases 'success'/'error' if those are used), call updateWrapper(), and
expect
wrapper.find(`.${CHECKBOX_INPUT_VALIDATION_CLASSES[VALIDATION_MESSAGE_TYPES.POSITIVE]}`).exists()
toBe(true) for success and
wrapper.find(`.${CHECKBOX_INPUT_VALIDATION_CLASSES[VALIDATION_MESSAGE_TYPES.CRITICAL]}`).exists()
toBe(true) for error; use the same patterns as the existing
positive/warning/critical tests and keep mockProps.description populated.
packages/dialtone-vue/components/link/link.test.js (1)

65-153: ⚠️ Potential issue | 🟠 Major

Missing compatibility tests for deprecated kind path in DtLink.

DtLink now has compatibility logic via resolvedTone, but this suite only validates tone. Please add tests that verify deprecated kind (including legacy values) still applies correct classes, plus behavior when both tone and kind are passed.

Suggested test additions
 describe('Presentation Tests', () => {
+  describe('Backward compatibility', () => {
+    it('applies class when deprecated kind is used', () => {
+      mockProps = { kind: CRITICAL };
+      updateWrapper();
+      expect(nativeLink.classes('d-link--critical')).toBe(true);
+    });
+
+    it('supports legacy kind aliases', () => {
+      mockProps = { kind: 'danger' };
+      updateWrapper();
+      expect(nativeLink.classes('d-link--critical')).toBe(true);
+    });
+
+    it('defines precedence when both tone and kind are provided', () => {
+      mockProps = { tone: POSITIVE, kind: CRITICAL };
+      updateWrapper();
+      // assert intended precedence explicitly
+      expect(nativeLink.classes('d-link--critical')).toBe(true);
+    });
+  });

As per coding guidelines, "Flag missing tests for non-trivial logic changes — untested behavior is unverified behavior."

Also applies to: 274-293

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/dialtone-vue/components/link/link.test.js` around lines 65 - 153,
The test suite covers tone/inverted behavior but misses compatibility tests for
the deprecated kind prop and resolvedTone logic; add unit tests in link.test.js
that set mockProps.kind to legacy values (and combinations of mockProps.kind +
mockProps.tone) then call updateWrapper() and assert nativeLink.classes(...)
matches the same modifiers used by getLinkKindModifier and LINK_KIND_MODIFIERS
(e.g., verify legacy kind maps to the expected class and that kind is respected
when tone is absent or overridden when both provided), reusing existing helpers
like updateWrapper, nativeLink, getLinkKindModifier, LINK_KIND_MODIFIERS, and
asserting both inverted true/false cases.
🧹 Nitpick comments (1)
apps/dialtone-documentation/docs/components/input-group.md (1)

186-188: Align remaining example identifiers/text with critical naming.

A few example identifiers/text still use error while the shown type/legend are critical (Line 186, Line 211, Line 213, Line 223, Line 234). This makes the docs internally inconsistent.

Suggested doc cleanup
-  name="input-group-with-error-message"
+  name="input-group-with-critical-message"
...
-  name="input-group-with-error-message"
+  name="input-group-with-critical-message"
...
-  :messages="[{ message: `Error`, type: VALIDATION_MESSAGE_TYPES.CRITICAL }]"
+  :messages="[{ message: `Critical`, type: VALIDATION_MESSAGE_TYPES.CRITICAL }]"
...
-  name="input-group-with-error-messages-hidden"
+  name="input-group-with-critical-messages-hidden"
...
-  name="input-group-with-error-messages-hidden"
+  name="input-group-with-critical-messages-hidden"

As per coding guidelines, "flag primarily issues that make the PR unsafe to merge and/or difficult to maintain."

Also applies to: 211-214, 223-236

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/dialtone-documentation/docs/components/input-group.md` around lines 186
- 188, The example block defined by name="input-group-with-error-message" and
legend="With Critical Message" currently mixes "error" identifiers/text with the
shown :messages type 'critical'; update all remaining example identifiers and
display text (e.g., any props, labels, CSS classes, IDs or message strings that
still read "error") to use "critical" instead so the example is consistent with
:messages="[{ message: 'Critical', type: 'critical' }]" and the legend; search
for occurrences of "error" within this example (including nearby examples
referenced around the same component) and rename them to "critical" while
preserving functionality and casing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/dialtone-css/lib/build/less/components/input.less`:
- Around line 293-299: The PR removed legacy validation class aliases causing
regressions; restore `.d-input--error` and `.d-input--success` as aliases of the
new `.d-input--critical` and `.d-input--positive` by adding rule blocks that set
`--input-color-border` to `var(--dt-inputs-color-border-critical)` and
`var(--dt-inputs-color-border-success)` respectively (use the same !important
flag), so both old and new class names produce identical border color behavior.

In `@packages/dialtone-css/lib/build/less/components/selects.less`:
- Around line 140-147: The new selectors drop legacy aliases and break backwards
compatibility; update the stylesheet so the legacy class names map to the same
rules by adding the legacy selectors (.d-select__input--success and
.d-select__input--error) alongside the new ones (.d-select__input--positive and
.d-select__input--critical), including their :hover variants, so both sets of
modifiers set the same CSS variable (--input-color-border) to
var(--dt-inputs-color-border-success) and var(--dt-inputs-color-border-critical)
respectively.

In `@packages/dialtone-css/lib/build/less/recipes/top_banner_info.less`:
- Around line 32-34: The new rule defines .d-recipe-top-banner-info--positive
but removed the legacy .d-recipe-top-banner-info--success alias; restore
backward compatibility by adding the legacy selector
(.d-recipe-top-banner-info--success) to the same rule or by duplicating the
declaration so both selectors share background-color:
var(--dt-color-surface-success), ensuring existing consumers using --success
continue to work; update the rule that currently targets
.d-recipe-top-banner-info--positive to include
.d-recipe-top-banner-info--success as an equivalent selector.

In `@packages/dialtone-vue/common/constants/index.js`:
- Around line 11-15: The public enum VALIDATION_MESSAGE_TYPES removed deprecated
keys ERROR and SUCCESS which is a breaking change; restore backward
compatibility by adding ERROR: 'critical' and SUCCESS: 'positive' entries to the
existing VALIDATION_MESSAGE_TYPES object (so ERROR maps to the same value as
CRITICAL and SUCCESS maps to the same value as POSITIVE) and keep the current
CRITICAL/WARNING/POSITIVE keys unchanged (update the export of
VALIDATION_MESSAGE_TYPES accordingly).

In `@packages/dialtone-vue/common/mixins/input.test.js`:
- Line 24: Add a second passing test for the deprecated "success"
validationState: update the test in input.test.js to call the same helper
itBehavesLikePassesCustomPropValidation for the validation prop with the
deprecated value (e.g., pass 'success' or VALIDATION_MESSAGE_TYPES.SUCCESS) in
addition to the existing POSITIVE case so compatibility for the deprecated alias
is covered; ensure you reference the same prop variable used in the current call
and keep the new call adjacent to the existing
itBehavesLikePassesCustomPropValidation(prop, VALIDATION_MESSAGE_TYPES.POSITIVE)
line.

In `@packages/dialtone-vue/common/utils/index.js`:
- Around line 114-127: getValidationState currently ignores legacy message types
("error" and "success") causing old payloads to be treated as null; update the
function to normalize aliases before checking types: map legacy "error" ->
VALIDATION_MESSAGE_TYPES.CRITICAL and "success" ->
VALIDATION_MESSAGE_TYPES.POSITIVE (or extend VALIDATION_MESSAGE_TYPES to include
aliases) and ensure hasFormattedMessageOfType checks these normalized keys
(refer to getValidationState, VALIDATION_MESSAGE_TYPES, and
hasFormattedMessageOfType to locate the logic), so existing message payloads are
recognized and return the correct validation state.

In `@packages/dialtone-vue/common/validators.test.js`:
- Line 54: Add a test case that ensures the deprecated type string 'success' is
treated the same as VALIDATION_MESSAGE_TYPES.POSITIVE: copy the existing
positive test pattern (the case that uses type:
VALIDATION_MESSAGE_TYPES.POSITIVE) and add a passing assertion that supplying {
type: 'success', ... } yields the same normalized output/behavior as the
POSITIVE case; update validators.test.js to include this deprecated 'success'
passing case so backward-compatibility is explicitly covered.

In `@packages/dialtone-vue/components/badge/badge.test.js`:
- Around line 84-97: The second duplicate "When type is positive" test should be
replaced with a compatibility test for the deprecated "success" value: change
the describe/title to "When type is success", call await wrapper.setProps({
type: 'success' }) inside the it block, and assert that
badge.classes(BADGE_TYPE_MODIFIERS.positive) is true (verifying "success" maps
to the positive modifier); this updates the duplicated positive test to cover
backward compatibility using the existing wrapper, badge, and
BADGE_TYPE_MODIFIERS symbols.

In `@packages/dialtone-vue/components/banner/banner.vue`:
- Around line 121-126: The banner prop "kind" needs a legacy-value fallback so
deprecated values map to current modifiers: before validating/resolving the
class (where NOTICE_KINDS is used and in the class resolution logic around the
computed that builds the modifier class), normalize kind by mapping "error" ->
"danger" and "success" -> "success" (or the current success token) and then
proceed with NOTICE_KINDS.includes(kind) and the existing class lookup; update
both the prop handling (validator/normalization) and the class resolution code
path (the code around the modifier-class computation at the other occurrence) to
use the normalized kind.

In `@packages/dialtone-vue/components/button/button.test.js`:
- Around line 73-95: Remove the duplicate "When button has kind set to critical"
test block (keep a single case that asserts wrapper.setProps({ kind: 'critical'
}) yields the d-btn--critical class via wrapper.find('.base-button__button') and
.classes()), and add a new test that explicitly covers the deprecated alias by
setting wrapper.setProps({ kind: 'danger' }) and another setting
wrapper.setProps({ linkKind: 'danger' }) (or the component's legacy prop)
asserting they also produce the d-btn--critical class to prevent regressions;
update test descriptions to reflect deprecation and ensure you reference the
same selector ('.base-button__button'), wrapper.setProps, and .classes() checks.

In `@packages/dialtone-vue/components/checkbox/checkbox_constants.js`:
- Around line 1-5: CHECKBOX_INPUT_VALIDATION_CLASSES lost legacy keys so callers
using deprecated values ('error' and 'success') no longer resolve classes;
reintroduce the aliases by adding 'error' mapping to the same value as
'critical' and 'success' mapping to the same value as 'positive' in the
CHECKBOX_INPUT_VALIDATION_CLASSES export so existing callers continue to work
without_pre-normalization.

In `@packages/dialtone-vue/components/modal/modal.test.js`:
- Around line 223-233: Extend the test block that currently checks only
'critical' to also assert that bannerKind: 'positive' yields the
MODAL_BANNER_KINDS.positive class and that the deprecated aliases resolve to the
expected current kinds (set bannerKind: 'error' and assert it maps to
MODAL_BANNER_KINDS.critical; set bannerKind: 'success' and assert it maps to
MODAL_BANNER_KINDS.positive). Use the same pattern as the existing test: call
wrapper.setProps({ show: true, bannerKind: '<kind>', bannerTitle: 'title' }),
find banner via wrapper.find('[data-qa="dt-modal-banner"]'), and assert
banner.classes(MODAL_BANNER_KINDS.<expected>) is true.

In `@packages/dialtone-vue/components/notice/notice_constants.js`:
- Line 1: NOTICE_KINDS was changed to remove legacy values and breaks backward
compatibility; restore the deprecated entries 'error' and 'success' in the
NOTICE_KINDS array so existing consumers/validation continue to work. Update the
NOTICE_KINDS constant to include 'error' and 'success' (optionally add an inline
comment marking them as deprecated) and run/update any related validation/tests
that rely on NOTICE_KINDS to ensure no regressions.

In `@packages/dialtone-vue/components/notice/notice.test.js`:
- Around line 88-101: Add test assertions to preserve deprecated kind
compatibility by adding two cases mirroring the existing 'critical' and
'positive' tests: set wrapper.setProps({ kind: 'error' }) and assert
rootElement.classes('d-notice--critical') is true, and set wrapper.setProps({
kind: 'success' }) and assert rootElement.classes('d-notice--positive') is true;
place these alongside the existing describe blocks so the wrapper and
rootElement usage is identical to the current tests.

In `@packages/dialtone-vue/components/notice/notice.vue`:
- Around line 112-119: The component currently accepts deprecated kinds
"error"/"success" but doesn't normalize them before computing classes/icons, so
update the code to map those deprecated values to the current ones (error ->
critical, success -> positive) before any class/icon resolution: add a small
normalizer (e.g. a computed getter like normalizedKind or a normalizeKind(kind)
helper) and use that in noticeClass and the icon resolution logic instead of raw
this.kind; keep the validator/NOTICE_KINDS as-is (or expand it to accept the
deprecated strings) but ensure all styling/icon lookups use normalizedKind so
deprecated values render correctly.

In `@packages/dialtone-vue/components/select_menu/select_menu_constants.js`:
- Around line 16-20: The object SELECT_STATE_MODIFIERS currently only contains
keys critical/warning/positive; add deprecated alias keys error and success that
map to the new class names (error -> 'd-select__input--critical' and success ->
'd-select__input--positive') so existing validation-state usages keep working;
update the SELECT_STATE_MODIFIERS definition to include these alias entries
(preserve existing keys and values) and add a brief comment that error/success
are deprecated aliases for backward compatibility.

In `@packages/dialtone-vue/components/split_button/split_button.test.js`:
- Around line 98-105: Add a companion test to cover the deprecated kind="danger"
alongside the new critical case: inside the same describe block (When kind is
set to critical) or a new describe for backward compatibility, set mockProps = {
kind: 'danger' } and call updateWrapper() and then assert that
startButton.classes().includes('d-btn--critical') and
endButton.classes().includes('d-btn--critical') are true (same expectations as
for 'critical'), so the legacy path is exercised; use the existing helper
functions/variables (mockProps, updateWrapper, startButton, endButton) to locate
and implement the new test.

In `@packages/dialtone-vue/components/toast/toast.test.js`:
- Around line 117-124: Add tests that assert deprecated kind aliases map to the
expected classes: after the existing 'critical' spec, add two new cases that set
mockProps = { kind: 'error' } and mockProps = { kind: 'success' }, call
updateWrapper(), and expect toast.classes('d-toast--critical') toBe(true) for
'error' and toast.classes('d-toast--success') toBe(true) for 'success'. Use the
same test pattern and helpers (mockProps, updateWrapper, toast.classes) as the
existing spec to validate backward compatibility.

---

Outside diff comments:
In `@packages/dialtone-css/lib/build/less/components/forms.less`:
- Around line 160-174: The selectors for .d-validation-message--critical and
.d-validation-message--positive drop legacy aliases (error/success), breaking
existing markup; update the selectors to include the legacy class names (e.g.,
add .d-validation-message--error as an alias for .d-validation-message--critical
and .d-validation-message--success as an alias for
.d-validation-message--positive) so both names share the same declarations
(including the ::before mask and --validation-color-text variable) and preserve
behavior for old markup.

In `@packages/dialtone-vue/components/badge/badge_constants.js`:
- Around line 1-9: The BADGE_TYPE_MODIFIERS map removed the legacy "success" key
causing type="success" to lose its modifier; restore backward compatibility by
adding a "success" entry to BADGE_TYPE_MODIFIERS (map "success" to the same
class as the current positive variant, e.g., 'd-badge--positive') so components
reading BADGE_TYPE_MODIFIERS continue to apply the expected modifier for
type="success".

In `@packages/dialtone-vue/components/button/button_constants.js`:
- Around line 18-25: Restore the deprecated "danger" alias in
BUTTON_KIND_MODIFIERS so legacy DtButton.kind="danger" still passes validation
and receives the correct styling; add an entry "danger": "d-btn--critical"
(matching the critical modifier) in the BUTTON_KIND_MODIFIERS object and keep
any existing "critical" entry as-is to preserve backward compatibility for
DtButton.kind.

In `@packages/dialtone-vue/components/checkbox/checkbox.test.js`:
- Around line 215-241: Add regression tests that assert the deprecated
validation aliases map to the same classes as the new types: create two new it
blocks in the same "When a validation state is provided" suite that set
mockProps.validationState to VALIDATION_MESSAGE_TYPES.SUCCESS and
VALIDATION_MESSAGE_TYPES.ERROR (or the string aliases 'success'/'error' if those
are used), call updateWrapper(), and expect
wrapper.find(`.${CHECKBOX_INPUT_VALIDATION_CLASSES[VALIDATION_MESSAGE_TYPES.POSITIVE]}`).exists()
toBe(true) for success and
wrapper.find(`.${CHECKBOX_INPUT_VALIDATION_CLASSES[VALIDATION_MESSAGE_TYPES.CRITICAL]}`).exists()
toBe(true) for error; use the same patterns as the existing
positive/warning/critical tests and keep mockProps.description populated.

In `@packages/dialtone-vue/components/link/index.js`:
- Around line 2-11: Restore the deprecated re-exports DANGER and SUCCESS from
this module so consumers importing from the public entry still work: export the
existing constants CRITICAL and POSITIVE under the old names (i.e., re-export
DANGER as an alias for CRITICAL and SUCCESS as an alias for POSITIVE) alongside
the current exports (CRITICAL, POSITIVE, WARNING, MUTED, MENTION, LINK_VARIANTS,
LINK_KIND_MODIFIERS, getLinkKindModifier) to preserve backward compatibility
with existing imports.

In `@packages/dialtone-vue/components/link/link.test.js`:
- Around line 65-153: The test suite covers tone/inverted behavior but misses
compatibility tests for the deprecated kind prop and resolvedTone logic; add
unit tests in link.test.js that set mockProps.kind to legacy values (and
combinations of mockProps.kind + mockProps.tone) then call updateWrapper() and
assert nativeLink.classes(...) matches the same modifiers used by
getLinkKindModifier and LINK_KIND_MODIFIERS (e.g., verify legacy kind maps to
the expected class and that kind is respected when tone is absent or overridden
when both provided), reusing existing helpers like updateWrapper, nativeLink,
getLinkKindModifier, LINK_KIND_MODIFIERS, and asserting both inverted true/false
cases.

In
`@packages/dialtone-vue/components/validation_messages/validation_messages.vue`:
- Around line 91-99: messageTypeClass currently only returns classes for
'critical'/'warning'/'positive' and ignores legacy aliases; update
messageTypeClass (or the messageTypesClasses map) to treat deprecated types
'error' as 'critical' and 'success' as 'positive' so old payloads still resolve
to the proper class names; ensure the mapping happens before the lookup (or add
alias keys in messageTypesClasses) and keep existing keys 'critical', 'warning',
'positive' intact.

---

Nitpick comments:
In `@apps/dialtone-documentation/docs/components/input-group.md`:
- Around line 186-188: The example block defined by
name="input-group-with-error-message" and legend="With Critical Message"
currently mixes "error" identifiers/text with the shown :messages type
'critical'; update all remaining example identifiers and display text (e.g., any
props, labels, CSS classes, IDs or message strings that still read "error") to
use "critical" instead so the example is consistent with :messages="[{ message:
'Critical', type: 'critical' }]" and the legend; search for occurrences of
"error" within this example (including nearby examples referenced around the
same component) and rename them to "critical" while preserving functionality and
casing.
🪄 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: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 0fd70071-86b9-4c5f-9523-c72d32d5729e

📥 Commits

Reviewing files that changed from the base of the PR and between 1697911 and fc73eba.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (98)
  • .mcp.json
  • apps/dialtone-documentation/docs/components/badge.md
  • apps/dialtone-documentation/docs/components/banner.md
  • apps/dialtone-documentation/docs/components/button.md
  • apps/dialtone-documentation/docs/components/checkbox-group.md
  • apps/dialtone-documentation/docs/components/checkbox.md
  • apps/dialtone-documentation/docs/components/combobox-multi-select.md
  • apps/dialtone-documentation/docs/components/input-group.md
  • apps/dialtone-documentation/docs/components/input.md
  • apps/dialtone-documentation/docs/components/link.md
  • apps/dialtone-documentation/docs/components/modal.md
  • apps/dialtone-documentation/docs/components/notice.md
  • apps/dialtone-documentation/docs/components/radio-group.md
  • apps/dialtone-documentation/docs/components/radio.md
  • apps/dialtone-documentation/docs/components/select-menu.md
  • apps/dialtone-documentation/docs/components/split-button.md
  • apps/dialtone-documentation/docs/components/toast.md
  • apps/dialtone-documentation/docs/components/validation-messages.md
  • packages/dialtone-css/lib/build/less/components/badge.less
  • packages/dialtone-css/lib/build/less/components/button.less
  • packages/dialtone-css/lib/build/less/components/forms.less
  • packages/dialtone-css/lib/build/less/components/input.less
  • packages/dialtone-css/lib/build/less/components/link.less
  • packages/dialtone-css/lib/build/less/components/modal.less
  • packages/dialtone-css/lib/build/less/components/notice.less
  • packages/dialtone-css/lib/build/less/components/selects.less
  • packages/dialtone-css/lib/build/less/recipes/top_banner_info.less
  • packages/dialtone-vue/common/constants/index.js
  • packages/dialtone-vue/common/mixins/input.test.js
  • packages/dialtone-vue/common/utils.test.js
  • packages/dialtone-vue/common/utils/index.js
  • packages/dialtone-vue/common/validators.test.js
  • packages/dialtone-vue/components/badge/badge.test.js
  • packages/dialtone-vue/components/badge/badge.vue
  • packages/dialtone-vue/components/badge/badge_constants.js
  • packages/dialtone-vue/components/badge/badge_examples.story.vue
  • packages/dialtone-vue/components/banner/banner.stories.js
  • packages/dialtone-vue/components/banner/banner.vue
  • packages/dialtone-vue/components/banner/banner_default.story.vue
  • packages/dialtone-vue/components/button/button.test.js
  • packages/dialtone-vue/components/button/button.vue
  • packages/dialtone-vue/components/button/button_constants.js
  • packages/dialtone-vue/components/button/button_variants.story.vue
  • packages/dialtone-vue/components/checkbox/checkbox.test.js
  • packages/dialtone-vue/components/checkbox/checkbox_constants.js
  • packages/dialtone-vue/components/checkbox/checkbox_variants.story.vue
  • packages/dialtone-vue/components/checkbox_group/checkbox_group_variants.story.vue
  • packages/dialtone-vue/components/combobox_multi_select/combobox_multi_select.stories.js
  • packages/dialtone-vue/components/emoji_text_wrapper/emoji_text_wrapper_variants.story.vue
  • packages/dialtone-vue/components/input/input.stories.js
  • packages/dialtone-vue/components/input/input.test.js
  • packages/dialtone-vue/components/input/input.vue
  • packages/dialtone-vue/components/input/input_constants.js
  • packages/dialtone-vue/components/input_group/input_group_variants.story.vue
  • packages/dialtone-vue/components/link/index.js
  • packages/dialtone-vue/components/link/link.test.js
  • packages/dialtone-vue/components/link/link.vue
  • packages/dialtone-vue/components/link/link_constants.js
  • packages/dialtone-vue/components/modal/modal.stories.js
  • packages/dialtone-vue/components/modal/modal.test.js
  • packages/dialtone-vue/components/modal/modal.vue
  • packages/dialtone-vue/components/modal/modal_constants.js
  • packages/dialtone-vue/components/modal/modal_default.story.vue
  • packages/dialtone-vue/components/notice/notice.stories.js
  • packages/dialtone-vue/components/notice/notice.test.js
  • packages/dialtone-vue/components/notice/notice.vue
  • packages/dialtone-vue/components/notice/notice_constants.js
  • packages/dialtone-vue/components/notice/notice_default.story.vue
  • packages/dialtone-vue/components/notice/notice_icon.vue
  • packages/dialtone-vue/components/radio/radio.test.js
  • packages/dialtone-vue/components/radio/radio_constants.js
  • packages/dialtone-vue/components/radio/radio_variants.story.vue
  • packages/dialtone-vue/components/radio_group/radio_group_variants.story.vue
  • packages/dialtone-vue/components/rich_text_editor/rich_text_editor.vue
  • packages/dialtone-vue/components/select_menu/select_menu.test.js
  • packages/dialtone-vue/components/select_menu/select_menu_constants.js
  • packages/dialtone-vue/components/select_menu/select_menu_variants.story.vue
  • packages/dialtone-vue/components/split_button/split_button.test.js
  • packages/dialtone-vue/components/split_button/split_button.vue
  • packages/dialtone-vue/components/toast/layouts/toast_layout_alternate.vue
  • packages/dialtone-vue/components/toast/layouts/toast_layout_alternate_icon.vue
  • packages/dialtone-vue/components/toast/layouts/toast_layout_default.vue
  • packages/dialtone-vue/components/toast/toast.stories.js
  • packages/dialtone-vue/components/toast/toast.test.js
  • packages/dialtone-vue/components/toast/toast.vue
  • packages/dialtone-vue/components/toast/toast_default.story.vue
  • packages/dialtone-vue/components/validation_messages/validation_messages.stories.js
  • packages/dialtone-vue/components/validation_messages/validation_messages.test.js
  • packages/dialtone-vue/components/validation_messages/validation_messages.vue
  • packages/dialtone-vue/directives/tooltip_directive/tooltip_directive_default.story.vue
  • packages/dialtone-vue/docs/storybook/writing_storybook.mdx
  • packages/dialtone-vue/recipes/conversation_view/message_input/message_input_link.vue
  • packages/dialtone-vue/recipes/item_layout/contact_info/contact_info.stories.js
  • packages/dialtone-vue/recipes/item_layout/contact_info/contact_info_variants.story.vue
  • packages/dialtone-vue/recipes/leftbar/callbox/callbox_variants.story.vue
  • packages/dialtone-vue/recipes/notices/top_banner_info/top_banner_info.test.js
  • packages/dialtone-vue/recipes/notices/top_banner_info/top_banner_info.vue
  • packages/dialtone-vue/recipes/notices/top_banner_info/top_banner_info_variants.story.vue

Comment thread packages/dialtone-css/lib/build/less/components/input.less
Comment thread packages/dialtone-css/lib/build/less/components/selects.less
Comment thread packages/dialtone-css/lib/build/less/recipes/top_banner_info.less Outdated
Comment thread packages/dialtone-vue/common/constants/index.js
Comment thread packages/dialtone-vue/common/mixins/input.test.js
Comment thread packages/dialtone-vue/components/notice/notice.test.js
Comment thread packages/dialtone-vue/components/notice/notice.vue
Comment thread packages/dialtone-vue/components/split_button/split_button.test.js
Comment thread packages/dialtone-vue/components/toast/toast.test.js
@braddialpad
Copy link
Copy Markdown
Contributor Author

Made additional changes for various documentation, storybook files, examples etc that still did not contain sufficient changes. docsite / storybook / everything else should be fully updated with critical/positive naming now.

This was done as a full breaking change in javascript/vue files. The old keys etc have been removed. Legacy classes in .less files will however remain for pure html/css implementations.

@braddialpad
Copy link
Copy Markdown
Contributor Author

Francis Rupert (@francisrupert) noticed our tokens IE var(--dt-color-foreground-success) and utility classes d-fc-success are still the legacy naming. Is this something we are looking to change?

DtText is also mapping to token names via it's "tone" prop. "success", "success-strong". Assuming this would have to change as well if we're changing token names

@francisrupert
Copy link
Copy Markdown
Contributor

...tokens IE var(--dt-color-foreground-success) and utility classes d-fc-success are still the legacy naming. Is this something we are looking to change?

DtText is also mapping to token names via it's "tone" prop. "success", "success-strong". Assuming this would have to change as well if we're changing token names

Yeah, you can create var(--dt-color-foreground-positive) in design tokens set, and mark var(--dt-color-foreground-success) as deprecated, which will show the badge in the Design Tokens table (below screenshot).

I did that with...

export const DEPRECATED_PATTERNS = [
'typography-headline-',
'typography-body-',
'typography-label-',
'typography-helper-',
'typography-code-',
];

... which reads from the description field...

"headline": {
  "xxl": {
    "value": { ... },
    "type": "typography",
    "description": "(DEPRECATED) Largest text style for extra extra large content."
  }
}

I don't feel great about that now that I look at it. I think I was averse to adding a deprecated field as metadata, not knowing how the Tokens Studio plugin or Style Dictionary would react to it. But looking into it a bit, we can use $extensions which we already do for color modifiers. Adding metadata that way won't break anything. Design Tokens spec does defines $deprecated as a format, https://tr.designtokens.org/format/#deprecated, and Tokens Studio recognizes it. So those can be...

{
  "headline-xxl": {
    "value": { ... },
    "type": "typography",
    "$deprecated": "Use ... instead", // or just true
    "description": "Largest text style for extra extra large content."
  }
}

...and eliminate DEPRECATED_PATTERNS in constants.js. Would need build update to build-docs.js to pass $deprecated to the doc JSON output, and then utilities.js checks the field instead of pattern-matching names.

Perhaps logged as a followup task since constants.js currently works?

...utility classes d-fc-success are still the legacy naming...

Same for creating d-fc-*. Continue to support, e.g. d-fc-success, though update uses to the new one.

...DtText is also mapping to token names via it's "tone" prop...

And yes to updating for DtText.

image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Skimmed through all lines, and skimmed through all doc pages. Only noticed one, below. Going ahead and approving, though note the below finding and my other response about Design Token / CSS Utility.

At least one missing error to critical in DtInput variants file.

Image

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@packages/dialtone-docs/src/content/reference/reference-component-api-patterns.md`:
- Around line 147-149: The markdown code fences for the two snippets that expose
provided props are missing language identifiers; update the fenced code blocks
that show "provides: { groupContext: { selected, disabled }, setFocus }" and
"provides: { groupContext: { name, disabled, validationState, value,
selectedValues }, setGroupValue }" to use a language tag (e.g., ```javascript)
so MD040 linting passes, keeping the exact content intact and only adding the
language after the opening triple backticks.
🪄 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: Central YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 2afdcb2c-2b8f-45f7-863f-4b5e645bbffe

📥 Commits

Reviewing files that changed from the base of the PR and between dd01d2b and e503c38.

📒 Files selected for processing (7)
  • apps/dialtone-documentation/docs/components/mode-island.md
  • apps/dialtone-documentation/docs/scratch.md
  • packages/combinator/src/variants/variants_checkbox_group.js
  • packages/combinator/src/variants/variants_input.js
  • packages/combinator/src/variants/variants_radio_group.js
  • packages/combinator/src/variants/variants_validation_messages.js
  • packages/dialtone-docs/src/content/reference/reference-component-api-patterns.md
✅ Files skipped from review due to trivial changes (4)
  • packages/combinator/src/variants/variants_radio_group.js
  • apps/dialtone-documentation/docs/components/mode-island.md
  • packages/combinator/src/variants/variants_checkbox_group.js
  • packages/combinator/src/variants/variants_validation_messages.js

Comment on lines 147 to 149
```
provides: { groupContext: { selected, disabled }, setFocus }
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add fenced-code languages to satisfy markdown linting.
Both code blocks are missing a language identifier (MD040), which can fail docs lint pipelines.

Suggested patch
-```
+```javascript
 provides: { groupContext: { selected, disabled }, setFocus }

- +javascript
provides: { groupContext: { name, disabled, validationState, value, selectedValues }, setGroupValue }

Also applies to: 153-155

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 147-147: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/dialtone-docs/src/content/reference/reference-component-api-patterns.md`
around lines 147 - 149, The markdown code fences for the two snippets that
expose provided props are missing language identifiers; update the fenced code
blocks that show "provides: { groupContext: { selected, disabled }, setFocus }"
and "provides: { groupContext: { name, disabled, validationState, value,
selectedValues }, setGroupValue }" to use a language tag (e.g., ```javascript)
so MD040 linting passes, keeping the exact content intact and only adding the
language after the opening triple backticks.

@github-actions
Copy link
Copy Markdown
Contributor

✔️ Deploy previews ready!
😎 Dialtone documentation preview: https://dialtone.dialpad.com/deploy-previews/pr-1177/
😎 Dialtone-vue preview: https://dialtone.dialpad.com/vue/deploy-previews/pr-1177/

@braddialpad Brad Paugh (braddialpad) merged commit edd98b2 into next Apr 12, 2026
17 checks passed
@braddialpad Brad Paugh (braddialpad) deleted the props-positive branch April 12, 2026 19:32
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [1.2.0-next.4](combinator/v1.2.0-next.3...combinator/v1.2.0-next.4) (2026-04-15)

### Code Refactoring

* **Components:** DLT-3100 remove rootClass references ([#1184](#1184)) ([6531783](6531783))
* **Text:** DLT-3302 tone prop uses css variables instead of css utilities ([#1197](#1197)) ([75df16f](75df16f))

### Documentation

* DLT-3250 display component status badges in sidebar and page headers ([#1170](#1170)) ([7d5f5d5](7d5f5d5))
* **Playground:** DLT-3242 segmented control for compact enum props ([#1165](#1165)) ([fa440d8](fa440d8))

### Features

* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
* **Split Button:** DLT-3257 add show-divider prop ([#1173](#1173)) ([5bef411](5bef411))
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [8.80.0-next.1](dialtone-css/v8.79.0...dialtone-css/v8.80.0-next.1) (2026-04-15)

### Bug Fixes

* **Split Button, Filter Pill:** DLT-3260 DLT-3261 correct misalignment at size 100 ([#1176](#1176)) ([fe2b777](fe2b777))
* **Stylelint:** disable hue-degree-notation rule and update OKLCH color syntax ([81f886e](81f886e))
* **Tokens:** wrap css math expressions with calc() in layered build ([#966](#966)) ([1635f61](1635f61))

### Code Refactoring

* **Css:** DLT-1876 css logical properties ([#872](#872)) ([1acd6c9](1acd6c9))
* **Modal:** DLT-3262 migrate DtModal to native dialog element ([#1179](#1179)) ([589edb5](589edb5))
* **Notice,banner,toast:** DLT-3296 decouple CSS and fix specificity violations ([#1194](#1194)) ([9579ac0](9579ac0))
* **Style:** DLT-3014 wrap all styles in css cascade layers ([#1061](#1061)) ([f8b3fed](f8b3fed))
* **Text:** DLT-2883 rename headline sizes from xxl => 2xl, etc ([#1029](#1029)) ([0ac86f3](0ac86f3))
* **Text:** DLT-3302 tone prop uses css variables instead of css utilities ([#1197](#1197)) ([75df16f](75df16f))
* **Tokens,css,link,text,breadcrumbs,input Group,split Button:** tokens, CSS foundation, deprecations, tooling DLT-3011 DLT-2961 DLT-3068 DLT-3069 DLT-3070 DLT-3071 DLT-3072 ([#1092](#1092)) ([7783090](7783090))
* **Tokens:** DLT-2884 deprecate space tokens in favor of size tokens ([#1013](#1013)) ([63f6d2f](63f6d2f))
* **Tokens:** DLT-3013 convert color system from HSL to OKLCH ([#1060](#1060)) ([42dc418](42dc418))

### Documentation

* **Css Utilities:** DLT-3295 DLT-3280 mark physical utilities as deprecated ([#1193](#1193)) ([73f1479](73f1479))
* DLT-1510 DLT-1511 DLT-1512 site redesign and ia ([#968](#968)) ([6ea7eb9](6ea7eb9))
* DLT-2908 ui kits landing page ([#1049](#1049)) ([d805b9d](d805b9d))
* **Playground:** DLT-3119 refine playground UI and integrate across doc site ([#1127](#1127)) ([ba6b599](ba6b599))

### Features

* **Avatar:** DLT-2942 updated avatar component ([#1047](#1047)) ([e50563d](e50563d))
* **Banner, Notice, Toast, Breadcrumbs, Checkbox, Radio, Input, Select Menu, Empty State:** visual refresh, dt-text integration, form api parity DLT-2944 DLT-2945 DLT-2949 DLT-2959 DLT-2960 DLT-2957 ([#1091](#1091)) ([16e908a](16e908a))
* **Button,tabs,split Button:** visual refresh and slot updates DLT-2946 DLT-2947 DLT-2965 ([#1090](#1090)) ([ffdd56f](ffdd56f))
* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
* **Css Utility:** DLT-2715 add default color for border css utilities ([#874](#874)) ([71310ab](71310ab))
* **Dialtone Css, Dialtone Tokens, Dialtone Vue:** DLT-3197 DLT-3198 DLT-3199 DLT-3200 DLT-3201 DLT-3202 DLT-3203 DLT-3204 DLT-3205 DLT-3206 DLT-3207 DLT-3208 DLT-3209 DLT-3210 DLT-3211 token-stop utility classes, migration tooling, and documentation ([#1150](#1150)) ([6237b84](6237b84))
* **Eslint Plugin Dialtone:** DLT-3047 physical-to-logical naming migration tooling ([#1163](#1163)) ([d94dc4b](d94dc4b))
* **Eslint Plugin Dialtone:** DLT-3227 DLT-3228 add deprecated-tshirt-sizes ESLint rule and migration codemod ([#1159](#1159)) ([21a011f](21a011f))
* **Filter Pill:** DLT-2704 create component ([#473](#473)) ([6267445](6267445))
* **Filter Pill:** DLT-2941 DtFilterPill improvements ([#1110](#1110)) ([23c5689](23c5689))
* **Link,button:** DLT-3012 add underline prop ([#1059](#1059)) ([1cb91ea](1cb91ea))
* **Mode Directive, Mode Island:** DLT-3067 DLT-3078 DLT-3077 add `v-dt-mode` directive ([#1109](#1109)) ([f97efca](f97efca))
* **Segmented Control:** DLT-413 new component ([#1144](#1144)) ([ad4c6c3](ad4c6c3))
* **Split Button:** DLT-3257 add show-divider prop ([#1173](#1173)) ([5bef411](5bef411))
* **Style:** DLT-2976 update underline thickness and offset ([#1058](#1058)) ([1e56947](1e56947))
* **Tabs:** DLT-3114 add vertical orientation variant ([#1120](#1120)) ([3290a23](3290a23))
* **Tabs:** DLT-3162 add spread prop for horizontal distribution ([#1135](#1135)) ([6e7cd04](6e7cd04))
* **Text:** new vue component DLT-2864 DLT-2863 DLT-2862 ([#995](#995)) ([196ef8a](196ef8a))
* **Tokens:** DLT-1977 add high contrast design tokens and theme ([#938](#938)) ([a1c0457](a1c0457))
* **Tokens:** DLT-2802 DLT-2563 layered theming system and mode island component ([#945](#945)) ([5c72c6c](5c72c6c))
* **Tokens:** DLT-2937 introduce spacing and layout token systems ([#1045](#1045)) ([de23e12](de23e12))
* **Tokens:** update color ramps and consumer color migration tools DLT-3004 DLT-3005 DLT-3006 DLT-3007 DLT-3008 ([#1054](#1054)) ([28cb1de](28cb1de))
* **Typography, Tokens:** DLT-2856 DLT-2857 next typography system ([#994](#994)) ([d744e97](d744e97))
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [1.48.0-next.14](dialtone-tokens/v1.48.0-next.13...dialtone-tokens/v1.48.0-next.14) (2026-04-15)

### Features

* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [3.220.0-next.1](dialtone-vue/v3.219.0...dialtone-vue/v3.220.0-next.1) (2026-04-15)

### Bug Fixes

* **Editor:** NO-JIRA remove extra blank line in editor.mdx ([18c47ef](18c47ef))
* **Split Button, Filter Pill:** DLT-3260 DLT-3261 correct misalignment at size 100 ([#1176](#1176)) ([fe2b777](fe2b777))
* **Tabs:** DLT-3251 improve accessibility ([#1171](#1171)) ([01b101e](01b101e))

### Code Refactoring

* **Combobox Multi Select:** NO-JIRA use logical css properties ([#1104](#1104)) ([a675daf](a675daf))
* **Components,recipes:** DLT-3043 DLT-3046 logical start/end naming with deprecated backward-compatible fallbacks ([#1079](#1079)) ([1d26a4e](1d26a4e))
* **Components:** DLT-3100 remove rootClass references ([#1184](#1184)) ([6531783](6531783))
* **Components:** dlt-3282 renamed show prop to open ([#1190](#1190)) ([5509d0f](5509d0f))
* **Components:** dlt-3283 refactor prop/slots to be consistent ([#1196](#1196)) ([2d22c76](2d22c76))
* **Modal:** DLT-3262 migrate DtModal to native dialog element ([#1179](#1179)) ([589edb5](589edb5))
* **Text:** DLT-3302 tone prop uses css variables instead of css utilities ([#1197](#1197)) ([75df16f](75df16f))
* **Tokens,css,link,text,breadcrumbs,input Group,split Button:** tokens, CSS foundation, deprecations, tooling DLT-3011 DLT-2961 DLT-3068 DLT-3069 DLT-3070 DLT-3071 DLT-3072 ([#1092](#1092)) ([7783090](7783090))
* **Tokens:** DLT-3013 convert color system from HSL to OKLCH ([#1060](#1060)) ([42dc418](42dc418))

### Documentation

* **Dialtone Vue:** DLT-3226 update documentation and consuming code to numeric size scale ([#1158](#1158)) ([149c763](149c763))
* **Playground:** DLT-3119 refine playground UI and integrate across doc site ([#1127](#1127)) ([ba6b599](ba6b599))

### Features

* **Avatar:** DLT-2942 updated avatar component ([#1047](#1047)) ([e50563d](e50563d))
* **Avatar:** DLT-3161 change from clickable to "interactive" ([#1182](#1182)) ([2d00fe0](2d00fe0))
* **Banner, Notice, Toast, Breadcrumbs, Checkbox, Radio, Input, Select Menu, Empty State:** visual refresh, dt-text integration, form api parity DLT-2944 DLT-2945 DLT-2949 DLT-2959 DLT-2960 DLT-2957 ([#1091](#1091)) ([16e908a](16e908a))
* **Button,tabs,split Button:** visual refresh and slot updates DLT-2946 DLT-2947 DLT-2965 ([#1090](#1090)) ([ffdd56f](ffdd56f))
* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
* **Components:** DLT-3159 enforce positive boolean props ([#1198](#1198)) ([ac73bdc](ac73bdc))
* **Dialtone Css, Dialtone Tokens, Dialtone Vue:** DLT-3197 DLT-3198 DLT-3199 DLT-3200 DLT-3201 DLT-3202 DLT-3203 DLT-3204 DLT-3205 DLT-3206 DLT-3207 DLT-3208 DLT-3209 DLT-3210 DLT-3211 token-stop utility classes, migration tooling, and documentation ([#1150](#1150)) ([6237b84](6237b84))
* **Dialtone Vue:** DLT-3225 migrate component size props to numeric ordinal scale ([#1157](#1157)) ([725bd41](725bd41))
* **Filter Pill:** DLT-2941 DtFilterPill improvements ([#1110](#1110)) ([23c5689](23c5689))
* **Focusgroup:** DLT-3285 add v-dt-focusgroup directive for declarative roving tabindex ([#1187](#1187)) ([e1ea074](e1ea074))
* **Focustrap:** DLT-3297 add v-dt-focustrap directive for declarative focus trapping ([#1195](#1195)) ([6ef9a21](6ef9a21))
* **Link,button:** DLT-3012 add underline prop ([#1059](#1059)) ([1cb91ea](1cb91ea))
* **Mode Directive, Mode Island:** DLT-3067 DLT-3078 DLT-3077 add `v-dt-mode` directive ([#1109](#1109)) ([f97efca](f97efca))
* **Segmented Control:** DLT-413 new component ([#1144](#1144)) ([ad4c6c3](ad4c6c3))
* **Split Button:** DLT-3257 add show-divider prop ([#1173](#1173)) ([5bef411](5bef411))
* **Tabs:** DLT-3114 add vertical orientation variant ([#1120](#1120)) ([3290a23](3290a23))
* **Tabs:** DLT-3162 add spread prop for horizontal distribution ([#1135](#1135)) ([6e7cd04](6e7cd04))
* **Text:** export text component from dialtone-vue ([757fdb7](757fdb7))
* **Tokens:** DLT-2937 introduce spacing and layout token systems ([#1045](#1045)) ([de23e12](de23e12))
* **Tokens:** update color ramps and consumer color migration tools DLT-3004 DLT-3005 DLT-3006 DLT-3007 DLT-3008 ([#1054](#1054)) ([28cb1de](28cb1de))
Brad Paugh (braddialpad) pushed a commit that referenced this pull request Apr 15, 2026
# [9.180.0-next.1](dialtone/v9.179.0...dialtone/v9.180.0-next.1) (2026-04-15)

### Bug Fixes

* **Doc:** NO-JIRA correct font size utility json ([#1015](#1015)) ([76cf0fa](76cf0fa))
* **Editor:** NO-JIRA remove extra blank line in editor.mdx ([18c47ef](18c47ef))
* possible merge issue in sidebarItem.vue ([5e2e91b](5e2e91b))
* **Split Button, Filter Pill:** DLT-3260 DLT-3261 correct misalignment at size 100 ([#1176](#1176)) ([fe2b777](fe2b777))
* **Stylelint:** disable hue-degree-notation rule and update OKLCH color syntax ([81f886e](81f886e))
* **Stylelint:** disable hue-degree-notation rule and update OKLCH color syntax ([8721f43](8721f43))
* **Tabs:** DLT-3251 improve accessibility ([#1171](#1171)) ([01b101e](01b101e))
* **Tokens:** DLT-3053 preserve root font size variable as reference ([#1093](#1093)) ([112ab4b](112ab4b))
* **Tokens:** handle multi-layer box shadows correctly in postcss plugin ([feea7f1](feea7f1))
* **Tokens:** NO-JIRA output line-height as unitless instead of percentages ([#1040](#1040)) ([33d8505](33d8505))
* **Tokens:** wrap css math expressions with calc() in layered build ([#966](#966)) ([1635f61](1635f61))
* update @dialpad/i18n dependencies to latest versions ([7a4b777](7a4b777))

### Code Refactoring

* **Combobox Multi Select:** NO-JIRA use logical css properties ([#1104](#1104)) ([a675daf](a675daf))
* **Components,recipes:** DLT-3043 DLT-3046 logical start/end naming with deprecated backward-compatible fallbacks ([#1079](#1079)) ([1d26a4e](1d26a4e))
* **Components:** DLT-3100 remove rootClass references ([#1184](#1184)) ([6531783](6531783))
* **Components:** dlt-3282 renamed show prop to open ([#1190](#1190)) ([5509d0f](5509d0f))
* **Components:** dlt-3283 refactor prop/slots to be consistent ([#1196](#1196)) ([2d22c76](2d22c76))
* **Css:** DLT-1876 css logical properties ([#872](#872)) ([1acd6c9](1acd6c9))
* **Modal:** DLT-3262 migrate DtModal to native dialog element ([#1179](#1179)) ([589edb5](589edb5))
* **Notice,banner,toast:** DLT-3296 decouple CSS and fix specificity violations ([#1194](#1194)) ([9579ac0](9579ac0))
* **Style:** DLT-3014 wrap all styles in css cascade layers ([#1061](#1061)) ([f8b3fed](f8b3fed))
* **Text:** DLT-2883 rename headline sizes from xxl => 2xl, etc ([#1029](#1029)) ([0ac86f3](0ac86f3))
* **Text:** DLT-3302 tone prop uses css variables instead of css utilities ([#1197](#1197)) ([75df16f](75df16f))
* **Tokens,css,link,text,breadcrumbs,input Group,split Button:** tokens, CSS foundation, deprecations, tooling DLT-3011 DLT-2961 DLT-3068 DLT-3069 DLT-3070 DLT-3071 DLT-3072 ([#1092](#1092)) ([7783090](7783090))
* **Tokens:** DLT-2884 deprecate space tokens in favor of size tokens ([#1013](#1013)) ([63f6d2f](63f6d2f))
* **Tokens:** DLT-3013 convert color system from HSL to OKLCH ([#1060](#1060)) ([42dc418](42dc418))

### Documentation

* **Components:** DLT-3178 DLT-3182 unify code examples into single code-example component ([#1147](#1147)) ([d0b6e14](d0b6e14))
* **Css Utilities:** DLT-3295 DLT-3280 mark physical utilities as deprecated ([#1193](#1193)) ([73f1479](73f1479))
* **Dialtone Vue:** DLT-3226 update documentation and consuming code to numeric size scale ([#1158](#1158)) ([149c763](149c763))
* DLT-1510 DLT-1511 DLT-1512 site redesign and ia ([#968](#968)) ([6ea7eb9](6ea7eb9))
* DLT-2908 ui kits landing page ([#1049](#1049)) ([d805b9d](d805b9d))
* DLT-3243 fenced code blocks for examples and snippets ([#1166](#1166)) ([cb169df](cb169df))
* DLT-3250 display component status badges in sidebar and page headers ([#1170](#1170)) ([7d5f5d5](7d5f5d5))
* DLT-3252 add GFM alert syntax for notices ([#1172](#1172)) ([1697911](1697911))
* DLT-3258 DLT-3259 improve sidebar search with logical keywords and fuzzy matching ([#1174](#1174)) ([2bf4639](2bf4639))
* NO-JIRA fix focus left-nav items on keypress down up ([#1106](#1106)) ([882c9b9](882c9b9))
* **Playground:** DLT-3119 refine playground UI and integrate across doc site ([#1127](#1127)) ([ba6b599](ba6b599))
* **Playground:** DLT-3242 segmented control for compact enum props ([#1165](#1165)) ([fa440d8](fa440d8))
* **Utilities:** DLT-3183 convert to vue demo fenced block ([#1167](#1167)) ([522197f](522197f))

### Features

* **Avatar:** DLT-2942 updated avatar component ([#1047](#1047)) ([e50563d](e50563d))
* **Avatar:** DLT-3161 change from clickable to "interactive" ([#1182](#1182)) ([2d00fe0](2d00fe0))
* **Banner, Notice, Toast, Breadcrumbs, Checkbox, Radio, Input, Select Menu, Empty State:** visual refresh, dt-text integration, form api parity DLT-2944 DLT-2945 DLT-2949 DLT-2959 DLT-2960 DLT-2957 ([#1091](#1091)) ([16e908a](16e908a))
* **Button,tabs,split Button:** visual refresh and slot updates DLT-2946 DLT-2947 DLT-2965 ([#1090](#1090)) ([ffdd56f](ffdd56f))
* **Components:** DLT-3157 align critical/positive prop values and CSS class names ([#1177](#1177)) ([edd98b2](edd98b2))
* **Components:** DLT-3159 enforce positive boolean props ([#1198](#1198)) ([ac73bdc](ac73bdc))
* **Css Utility:** DLT-2715 add default color for border css utilities ([#874](#874)) ([71310ab](71310ab))
* **Dialtone Css, Dialtone Tokens, Dialtone Vue:** DLT-3197 DLT-3198 DLT-3199 DLT-3200 DLT-3201 DLT-3202 DLT-3203 DLT-3204 DLT-3205 DLT-3206 DLT-3207 DLT-3208 DLT-3209 DLT-3210 DLT-3211 token-stop utility classes, migration tooling, and documentation ([#1150](#1150)) ([6237b84](6237b84))
* **Dialtone Vue:** DLT-3225 migrate component size props to numeric ordinal scale ([#1157](#1157)) ([725bd41](725bd41))
* **Eslint Plugin Dialtone:** DLT-3047 physical-to-logical naming migration tooling ([#1163](#1163)) ([d94dc4b](d94dc4b))
* **Eslint Plugin Dialtone:** DLT-3227 DLT-3228 add deprecated-tshirt-sizes ESLint rule and migration codemod ([#1159](#1159)) ([21a011f](21a011f))
* **Filter Pill:** DLT-2704 create component ([#473](#473)) ([6267445](6267445))
* **Filter Pill:** DLT-2941 DtFilterPill improvements ([#1110](#1110)) ([23c5689](23c5689))
* **Focusgroup:** DLT-3285 add v-dt-focusgroup directive for declarative roving tabindex ([#1187](#1187)) ([e1ea074](e1ea074))
* **Focustrap:** DLT-3297 add v-dt-focustrap directive for declarative focus trapping ([#1195](#1195)) ([6ef9a21](6ef9a21))
* **Link,button:** DLT-3012 add underline prop ([#1059](#1059)) ([1cb91ea](1cb91ea))
* **Mode Directive, Mode Island:** DLT-3067 DLT-3078 DLT-3077 add `v-dt-mode` directive ([#1109](#1109)) ([f97efca](f97efca))
* **Segmented Control:** DLT-413 new component ([#1144](#1144)) ([ad4c6c3](ad4c6c3))
* **Split Button:** DLT-3257 add show-divider prop ([#1173](#1173)) ([5bef411](5bef411))
* **Style:** DLT-2976 update underline thickness and offset ([#1058](#1058)) ([1e56947](1e56947))
* **Tabs:** DLT-3114 add vertical orientation variant ([#1120](#1120)) ([3290a23](3290a23))
* **Tabs:** DLT-3162 add spread prop for horizontal distribution ([#1135](#1135)) ([6e7cd04](6e7cd04))
* **Text:** export text component from dialtone-vue ([757fdb7](757fdb7))
* **Text:** new vue component DLT-2864 DLT-2863 DLT-2862 ([#995](#995)) ([196ef8a](196ef8a))
* **Tokens:** DLT-1977 add high contrast design tokens and theme ([#938](#938)) ([a1c0457](a1c0457))
* **Tokens:** DLT-2767 exploratory shell themes ([#909](#909)) ([3afcf63](3afcf63))
* **Tokens:** DLT-2781 create color-assistive themes ([#921](#921)) ([a6cc397](a6cc397))
* **Tokens:** DLT-2802 DLT-2563 layered theming system and mode island component ([#945](#945)) ([5c72c6c](5c72c6c))
* **Tokens:** DLT-2937 introduce spacing and layout token systems ([#1045](#1045)) ([de23e12](de23e12))
* **Tokens:** update color ramps and consumer color migration tools DLT-3004 DLT-3005 DLT-3006 DLT-3007 DLT-3008 ([#1054](#1054)) ([28cb1de](28cb1de))
* **Typography, Tokens:** DLT-2856 DLT-2857 next typography system ([#994](#994)) ([d744e97](d744e97))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-visual-test Add this tag when the PR does not need visual testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants