diff --git a/.storybook/storybook.css b/.storybook/storybook.css
index 3c2f3c54..8315f7ed 100644
--- a/.storybook/storybook.css
+++ b/.storybook/storybook.css
@@ -410,7 +410,7 @@ pre .language-tsx:not(.MuiTypography-root) {
.ds-intent-grid {
display: grid;
- grid-template-columns: repeat(4, minmax(0, 1fr));
+ grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;
}
@@ -575,6 +575,28 @@ section.ds-mode-panel section {
background: var(--ds-on-tertiary-solid);
}
+.ds-bg-highlight-main {
+ background: var(--ds-highlight);
+}
+.ds-bg-highlight-dark {
+ background: var(--ds-highlight-emphasis);
+}
+.ds-bg-highlight-light {
+ background: var(--ds-highlight-accent);
+}
+.ds-bg-highlight-container {
+ background: var(--ds-highlight-container);
+}
+.ds-bg-highlight-on-container {
+ background: var(--ds-on-highlight-container);
+}
+.ds-bg-highlight-solid {
+ background: var(--ds-highlight-solid);
+}
+.ds-bg-highlight-on-solid {
+ background: var(--ds-on-highlight-solid);
+}
+
.ds-bg-brand-main {
background: var(--ds-brand);
}
@@ -694,6 +716,36 @@ section.ds-mode-panel section {
background: var(--ds-on-info-solid);
}
+/* Contrast text (onPrimary, onDanger, etc.) shown as its own swatch */
+
+.ds-bg-on-primary {
+ background: var(--ds-on-primary);
+}
+.ds-bg-on-secondary {
+ background: var(--ds-on-secondary);
+}
+.ds-bg-on-tertiary {
+ background: var(--ds-on-tertiary);
+}
+.ds-bg-on-brand {
+ background: var(--ds-on-brand);
+}
+.ds-bg-on-danger {
+ background: var(--ds-on-danger);
+}
+.ds-bg-on-warning {
+ background: var(--ds-on-warning);
+}
+.ds-bg-on-success {
+ background: var(--ds-on-success);
+}
+.ds-bg-on-info {
+ background: var(--ds-on-info);
+}
+.ds-bg-on-highlight {
+ background: var(--ds-on-highlight);
+}
+
/* Foregrounds */
.ds-fg-primary-contrast,
@@ -703,7 +755,8 @@ section.ds-mode-panel section {
.ds-fg-danger-contrast,
.ds-fg-warning-contrast,
.ds-fg-success-contrast,
-.ds-fg-info-contrast {
+.ds-fg-info-contrast,
+.ds-fg-highlight-contrast {
color: var(--ds-on-solid);
}
@@ -739,6 +792,40 @@ section.ds-mode-panel section {
color: var(--ds-on-info);
}
+.ds-fg-highlight-contrast {
+ color: var(--ds-on-highlight);
+}
+
+/* Paired with the on-X backgrounds above so contrastText swatches stay legible */
+
+.ds-fg-primary-main {
+ color: var(--ds-primary);
+}
+.ds-fg-secondary-main {
+ color: var(--ds-secondary);
+}
+.ds-fg-tertiary-main {
+ color: var(--ds-tertiary);
+}
+.ds-fg-brand-main {
+ color: var(--ds-brand);
+}
+.ds-fg-danger-main {
+ color: var(--ds-danger);
+}
+.ds-fg-warning-main {
+ color: var(--ds-warning);
+}
+.ds-fg-success-main {
+ color: var(--ds-success);
+}
+.ds-fg-info-main {
+ color: var(--ds-info);
+}
+.ds-fg-highlight-main {
+ color: var(--ds-highlight);
+}
+
.ds-fg-primary-container {
color: var(--ds-primary-container);
}
@@ -796,6 +883,19 @@ section.ds-mode-panel section {
color: var(--ds-on-tertiary-fixed);
}
+.ds-fg-highlight-container {
+ color: var(--ds-highlight-container);
+}
+.ds-fg-highlight-on-container {
+ color: var(--ds-on-highlight-container);
+}
+.ds-fg-highlight-solid {
+ color: var(--ds-highlight-solid);
+}
+.ds-fg-highlight-on-solid {
+ color: var(--ds-on-highlight-solid);
+}
+
.ds-fg-brand-container {
color: var(--ds-brand-container);
}
@@ -930,8 +1030,12 @@ section.ds-mode-panel section {
background: var(--ds-on-surface-muted);
}
-.ds-bg-action-disabled {
- background: var(--ds-action-disabled);
+.ds-bg-on-surface-disabled {
+ background: var(--ds-on-surface-disabled);
+}
+
+.ds-bg-control-disabled {
+ background: var(--ds-control-disabled);
}
.ds-bg-placeholder {
diff --git a/src/storybook/PracticalGuidance.mdx b/src/storybook/PracticalGuidance.mdx
index ff1230b1..285cf968 100644
--- a/src/storybook/PracticalGuidance.mdx
+++ b/src/storybook/PracticalGuidance.mdx
@@ -399,7 +399,7 @@ They should be the default choice for layout, surfaces, borders, text, and dense
--ds-surface-disabled
surface.disabled
+ action.disabledBackground
--ds-on-surface-disabled
text.disabled
+ text.disabled / action.disabled
--ds-action-disabled
+ --ds-control-disabled
action.disabled
+ Checkbox / Radio (Mui-disabled)
--ds-surface-disabled
surface.disabled
+ action.disabledBackground
--ds-surface-disabled
surface.disabled
+ action.disabledBackground
--ds-on-surface-disabled
text.disabled
+ text.disabled / action.disabled
--ds-action-disabled
+ --ds-control-disabled
action.disabled
+ Checkbox / Radio (Mui-disabled)
+ Exposed as MUI palette roles (e.g. theme.palette.primary.main
+ ).
+
main
+ {muiRole ? `${muiRole}.main` : "main"}
+ {muiRole ? `${muiRole}.contrastText` : "contrastText"}
+ {muiRole ? `${muiRole}.dark` : "dark"}
+ {muiRole ? `${muiRole}.light` : "light"}
+ {muiRole ? `${muiRole}.container` : "container"}
+ {muiRole ? `${muiRole}.onContainer` : "onContainer"}
+ {muiRole ? `${muiRole}.solid` : "solid"}
+ {muiRole ? `${muiRole}.onSolid` : "onSolid"}
+ {muiRole ? `${muiRole}.fixed` : "fixed"}
+ {muiRole ? `${muiRole}.fixedDim` : "fixedDim"}
+ {muiRole ? `${muiRole}.onFixed` : "onFixed"}
+
+ Brand is exposed as a MUI palette role. Tertiary{" "}
+ and Highlight are available as token families via CSS
+ variables, but are not currently exposed as MUI palette roles.
+
{muiRole ? `${muiRole}.main` : "main"}
+ {muiRole ? `${muiRole}.contrastText` : "contrastText"}
dark
+ {muiRole ? `${muiRole}.dark` : "dark"}
light
+ {muiRole ? `${muiRole}.light` : "light"}
container
+ {muiRole ? `${muiRole}.container` : "container"}
onContainer
+ {muiRole ? `${muiRole}.onContainer` : "onContainer"}
solid
+ {muiRole ? `${muiRole}.solid` : "solid"}
onSolid
+ {muiRole ? `${muiRole}.onSolid` : "onSolid"}
fixed
+ {muiRole ? `${muiRole}.fixed` : "fixed"}
fixedDim
+ {muiRole ? `${muiRole}.fixedDim` : "fixedDim"}
onFixed
+ {muiRole ? `${muiRole}.onFixed` : "onFixed"}
background
+ background.default
surface
+ background.paper
surface.container
+ surface.subtle
surface.containerHigh
+ surface.strong
surface.disabled
+ action.disabledBackground
onSurface
+ text.primary
onSurfaceVariant
+ text.secondary
onSurfaceSubtle
+ text.tertiary
onSurfaceMuted
+ text.muted
action.disabled
+ text.disabled / action.disabled
placeholder
+ text.placeholder
placeholder.focus
+ text.placeholderFocus
onSolid
+ text.onSolid
+ Exposed as MUI palette roles (e.g. theme.palette.primary.main
+ ).
+
{muiRole ? `${muiRole}.main` : "main"}
+ {muiRole ? `${muiRole}.contrastText` : "contrastText"}
+ {muiRole ? `${muiRole}.dark` : "dark"}
+ {muiRole ? `${muiRole}.light` : "light"}
+ {muiRole ? `${muiRole}.container` : "container"}
+ {muiRole ? `${muiRole}.onContainer` : "onContainer"}
+ {muiRole ? `${muiRole}.solid` : "solid"}
+ {muiRole ? `${muiRole}.onSolid` : "onSolid"}
+ {muiRole ? `${muiRole}.fixed` : "fixed"}
+ {muiRole ? `${muiRole}.fixedDim` : "fixedDim"}
+ {muiRole ? `${muiRole}.onFixed` : "onFixed"}
+
+ Brand is exposed as a MUI palette role. Tertiary{" "}
+ and Highlight are available as token families via CSS
+ variables, but are not currently exposed as MUI palette roles.
+
main
+ {muiRole ? `${muiRole}.main` : "main"}
+ {muiRole ? `${muiRole}.contrastText` : "contrastText"}
dark
+ {muiRole ? `${muiRole}.dark` : "dark"}
light
+ {muiRole ? `${muiRole}.light` : "light"}
container
+ {muiRole ? `${muiRole}.container` : "container"}
onContainer
+ {muiRole ? `${muiRole}.onContainer` : "onContainer"}
solid
+ {muiRole ? `${muiRole}.solid` : "solid"}
onSolid
+ {muiRole ? `${muiRole}.onSolid` : "onSolid"}
fixed
+ {muiRole ? `${muiRole}.fixed` : "fixed"}
fixedDim
+ {muiRole ? `${muiRole}.fixedDim` : "fixedDim"}
onFixed
+ {muiRole ? `${muiRole}.onFixed` : "onFixed"}
background
+ background.default
surface
+ background.paper
surface.container
+ surface.subtle
surface.containerHigh
+ surface.strong
surface.disabled
+ action.disabledBackground
onSurface
+ text.primary
onSurfaceVariant
+ text.secondary
onSurfaceSubtle
+ text.tertiary
onSurfaceMuted
+ text.muted
action.disabled
+ text.disabled / action.disabled
placeholder
+ text.placeholder
placeholder.focus
+ text.placeholderFocus
onSolid
+ text.onSolid