Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 144 additions & 15 deletions packages/eds-core-react/src/components/next/Chip/chip.css
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,30 @@
(var(--_label-line-height) - var(--_label-height)) / 2
);

/* Colours from the eds-tokens beta (Tokens Studio) — data-color-appearance
* selects the tone (Chip always sets it, default tone is neutral). Neutral
* has no --eds-text-neutral token; it maps text to --eds-text-primary by
* design (#5283). Non-neutral tones use --eds-text-{tone} for label text
* and --eds-icon-{tone} for icons (the two differ for accent: shade 12 vs
* shade 10). Surfaces use --eds-background-interactive-{tone}-*. */
--_bg-muted: var(--eds-background-interactive-neutral-muted-default);
--_bg-muted-hover: var(--eds-background-interactive-neutral-muted-hover);
--_bg-muted-pressed: var(
--eds-background-interactive-neutral-muted-pressed
);
--_bg-emphasis: var(--eds-background-interactive-neutral-emphasis-default);
--_bg-emphasis-hover: var(
--eds-background-interactive-neutral-emphasis-hover
);
--_bg-emphasis-pressed: var(
--eds-background-interactive-neutral-emphasis-pressed
);
--_text: var(--eds-text-primary);
--_icon: var(--eds-icon-primary);
--_border-interactive: var(
--eds-border-interactive-neutral-emphasis-default
);

cursor: pointer;
user-select: none;

Expand All @@ -43,70 +67,174 @@
font-family: var(--_font-family);
font-size: var(--_label-font-size);
line-height: var(--_label-line-height);
color: inherit;
color: var(--_text);

transition:
background-color 150ms ease-in-out,
outline-color 150ms ease-in-out,
color 150ms ease-in-out;

/* ===== TONES ===== */

&[data-color-appearance='accent'] {
--_bg-muted: var(--eds-background-interactive-accent-muted-default);
--_bg-muted-hover: var(--eds-background-interactive-accent-muted-hover);
--_bg-muted-pressed: var(
--eds-background-interactive-accent-muted-pressed
);
--_bg-emphasis: var(--eds-background-interactive-accent-emphasis-default);
--_bg-emphasis-hover: var(
--eds-background-interactive-accent-emphasis-hover
);
--_bg-emphasis-pressed: var(
--eds-background-interactive-accent-emphasis-pressed
);
--_text: var(--eds-text-accent);
--_icon: var(--eds-icon-accent);
--_border-interactive: var(
--eds-border-interactive-accent-emphasis-default
);
}

&[data-color-appearance='success'] {
--_bg-muted: var(--eds-background-interactive-success-muted-default);
--_bg-muted-hover: var(--eds-background-interactive-success-muted-hover);
--_bg-muted-pressed: var(
--eds-background-interactive-success-muted-pressed
);
--_bg-emphasis: var(
--eds-background-interactive-success-emphasis-default
);
--_bg-emphasis-hover: var(
--eds-background-interactive-success-emphasis-hover
);
--_bg-emphasis-pressed: var(
--eds-background-interactive-success-emphasis-pressed
);
--_text: var(--eds-text-success);
--_icon: var(--eds-icon-success);
--_border-interactive: var(
--eds-border-interactive-success-emphasis-default
);
}

&[data-color-appearance='info'] {
--_bg-muted: var(--eds-background-interactive-info-muted-default);
--_bg-muted-hover: var(--eds-background-interactive-info-muted-hover);
--_bg-muted-pressed: var(--eds-background-interactive-info-muted-pressed);
--_bg-emphasis: var(--eds-background-interactive-info-emphasis-default);
--_bg-emphasis-hover: var(
--eds-background-interactive-info-emphasis-hover
);
--_bg-emphasis-pressed: var(
--eds-background-interactive-info-emphasis-pressed
);
--_text: var(--eds-text-info);
--_icon: var(--eds-icon-info);
--_border-interactive: var(
--eds-border-interactive-info-emphasis-default
);
}

&[data-color-appearance='warning'] {
--_bg-muted: var(--eds-background-interactive-warning-muted-default);
--_bg-muted-hover: var(--eds-background-interactive-warning-muted-hover);
--_bg-muted-pressed: var(
--eds-background-interactive-warning-muted-pressed
);
--_bg-emphasis: var(
--eds-background-interactive-warning-emphasis-default
);
--_bg-emphasis-hover: var(
--eds-background-interactive-warning-emphasis-hover
);
--_bg-emphasis-pressed: var(
--eds-background-interactive-warning-emphasis-pressed
);
--_text: var(--eds-text-warning);
--_icon: var(--eds-icon-warning);
--_border-interactive: var(
--eds-border-interactive-warning-emphasis-default
);
}

&[data-color-appearance='danger'] {
--_bg-muted: var(--eds-background-interactive-danger-muted-default);
--_bg-muted-hover: var(--eds-background-interactive-danger-muted-hover);
--_bg-muted-pressed: var(
--eds-background-interactive-danger-muted-pressed
);
--_bg-emphasis: var(--eds-background-interactive-danger-emphasis-default);
--_bg-emphasis-hover: var(
--eds-background-interactive-danger-emphasis-hover
);
--_bg-emphasis-pressed: var(
--eds-background-interactive-danger-emphasis-pressed
);
--_text: var(--eds-text-danger);
--_icon: var(--eds-icon-danger);
--_border-interactive: var(
--eds-border-interactive-danger-emphasis-default
);
}

/* ===== DEFAULT VARIANT (solid muted fill) ===== */

&[data-variant='default'] {
color: var(--eds-color-text-subtle);
background-color: var(--eds-color-bg-fill-muted-default);
background-color: var(--_bg-muted);
outline: none;
}

&[data-variant='default']:hover {
background-color: var(--eds-color-bg-fill-muted-hover);
background-color: var(--_bg-muted-hover);
}

&[data-variant='default']:active {
background-color: var(--eds-color-bg-fill-muted-active);
background-color: var(--_bg-muted-pressed);
}

/* ===== OUTLINED VARIANT (border + transparent bg) ===== */

&[data-variant='outlined'] {
color: var(--eds-color-text-subtle);
background-color: transparent;
outline: var(--eds-border-width-default, 1px) solid
var(--eds-color-border-strong);
var(--_border-interactive);
outline-offset: calc(-1 * var(--eds-border-width-default, 1px));
}

&[data-variant='outlined']:hover {
background-color: var(--eds-color-bg-fill-muted-hover);
background-color: var(--_bg-muted-hover);
}

&[data-variant='outlined']:active {
background-color: var(--eds-color-bg-fill-muted-active);
background-color: var(--_bg-muted-pressed);
}

/* ===== HIGH-CONTRAST VARIANT (emphasis fill + light text) ===== */

&[data-variant='high-contrast'] {
color: var(--eds-color-text-strong-on-emphasis);
background-color: var(--eds-color-bg-fill-emphasis-default);
--_text: var(--eds-text-on-emphasis);
--_icon: var(--eds-icon-on-emphasis);

background-color: var(--_bg-emphasis);
outline: none;
}

&[data-variant='high-contrast']:hover {
background-color: var(--eds-color-bg-fill-emphasis-hover);
background-color: var(--_bg-emphasis-hover);
}

&[data-variant='high-contrast']:active {
background-color: var(--eds-color-bg-fill-emphasis-active);
background-color: var(--_bg-emphasis-pressed);
}

/* ===== FOCUS STATE ===== */

&:focus-visible {
box-shadow:
0 0 0 var(--eds-sizing-stroke-thin) var(--eds-color-bg-canvas),
0 0 0 var(--eds-sizing-stroke-thin) var(--eds-background-canvas),
0 0 0 calc(var(--eds-sizing-stroke-thin) * 2)
var(--eds-color-border-focus);
var(--eds-border-interactive-focus);
}

/* ===== ICONS ===== */
Expand All @@ -115,6 +243,7 @@
flex-shrink: 0;
margin-block: calc(-1 * var(--_padding-adjusted));
margin-inline: calc(-1 * var(--_padding-adjusted) / 2);
color: var(--_icon);
}
}
}
Expand Down
Loading