Skip to content

Commit 8d04906

Browse files
committed
feat(skeleton): Resolve surface colors via light-dark() so the Skeleton presets follow color-scheme (the .dark toggle, or prefers-color-scheme when unpinned), and fix the surface scale collapsing to a single shade — surfaces now graduate from 100 (lightest) to 300 (darkest) in both light and dark
1 parent f387bba commit 8d04906

4 files changed

Lines changed: 47 additions & 30 deletions

File tree

.changeset/skeleton-light-dark.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'layerchart': patch
3+
---
4+
5+
feat(skeleton): Resolve surface colors via `light-dark()` so the Skeleton presets follow `color-scheme` (the `.dark` toggle, or `prefers-color-scheme` when unpinned), and fix the surface scale collapsing to a single shade — surfaces now graduate from 100 (lightest) to 300 (darkest) in both light and dark

packages/layerchart/src/lib/styles/skeleton-3.css

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55
.lc-tooltip-root {
66
--color-primary: var(--color-primary-500);
77

8-
--color-surface-100: var(--color-surface-50);
9-
--color-surface-200: var(--color-surface-100);
10-
--color-surface-300: var(--color-surface-200);
11-
--color-surface-content: var(--base-font-color);
8+
/*
9+
Surfaces resolve via `light-dark()` so they follow `color-scheme` — the `.dark`
10+
toggle (Skeleton sets `color-scheme` alongside it) or `prefers-color-scheme` when
11+
no toggle is used. Graduated so 100 is lightest and 300 darkest in both modes.
1212
13-
html.dark & {
14-
--color-surface-100: var(--color-surface-700);
15-
--color-surface-200: var(--color-surface-800);
16-
--color-surface-300: var(--color-surface-900);
17-
--color-surface-content: var(--base-font-color-dark);
18-
}
13+
200/300 read their light shade from Skeleton's contextual pairing tokens
14+
(`--color-surface-100-900`, `--color-surface-200-800`) because LayerChart redefines
15+
`--color-surface-100/200` here, which would shadow the raw tokens. The pairings are
16+
resolved at `:root`, so they aren't shadowed; only their light branch is used (dark
17+
uses `--color-surface-800/900`).
18+
*/
19+
--color-surface-100: light-dark(var(--color-surface-50), var(--color-surface-700));
20+
--color-surface-200: light-dark(var(--color-surface-100-900), var(--color-surface-800));
21+
--color-surface-300: light-dark(var(--color-surface-200-800), var(--color-surface-900));
22+
--color-surface-content: light-dark(var(--base-font-color), var(--base-font-color-dark));
1923
}

packages/layerchart/src/lib/styles/skeleton-4.css

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55
.lc-tooltip-root {
66
--color-primary: var(--color-primary-500);
77

8-
--color-surface-100: var(--color-surface-50);
9-
--color-surface-200: var(--color-surface-100);
10-
--color-surface-300: var(--color-surface-200);
11-
--color-surface-content: var(--base-font-color);
8+
/*
9+
Surfaces resolve via `light-dark()` so they follow `color-scheme` — the `.dark`
10+
toggle (Skeleton sets `color-scheme` alongside it) or `prefers-color-scheme` when
11+
no toggle is used. Graduated so 100 is lightest and 300 darkest in both modes.
1212
13-
html.dark & {
14-
--color-surface-100: var(--color-surface-700);
15-
--color-surface-200: var(--color-surface-800);
16-
--color-surface-300: var(--color-surface-900);
17-
--color-surface-content: var(--base-font-color-dark);
18-
}
13+
200/300 read their light shade from Skeleton's contextual pairing tokens
14+
(`--color-surface-100-900`, `--color-surface-200-800`) because LayerChart redefines
15+
`--color-surface-100/200` here, which would shadow the raw tokens. The pairings are
16+
resolved at `:root`, so they aren't shadowed; only their light branch is used (dark
17+
uses `--color-surface-800/900`).
18+
*/
19+
--color-surface-100: light-dark(var(--color-surface-50), var(--color-surface-700));
20+
--color-surface-200: light-dark(var(--color-surface-100-900), var(--color-surface-800));
21+
--color-surface-300: light-dark(var(--color-surface-200-800), var(--color-surface-900));
22+
--color-surface-content: light-dark(var(--base-font-color), var(--base-font-color-dark));
1923
}

packages/layerchart/src/lib/styles/skeleton-5.css

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55
.lc-tooltip-root {
66
--color-primary: var(--color-primary-500);
77

8-
--color-surface-100: var(--color-surface-50-950);
9-
--color-surface-200: var(--color-surface-100);
10-
--color-surface-300: var(--color-surface-200);
11-
--color-surface-content: var(--typo-base-color-dark);
8+
/*
9+
Surfaces resolve via `light-dark()` so they follow `color-scheme` — the `.dark`
10+
toggle (Skeleton sets `color-scheme` alongside it) or `prefers-color-scheme` when
11+
no toggle is used. Graduated so 100 is lightest and 300 darkest in both modes.
1212
13-
html.dark & {
14-
--color-surface-100: var(--color-surface-700);
15-
--color-surface-200: var(--color-surface-800);
16-
--color-surface-300: var(--color-surface-900);
17-
--color-surface-content: var(--typo-base-color-light);
18-
}
13+
200/300 read their light shade from Skeleton's contextual pairing tokens
14+
(`--color-surface-100-900`, `--color-surface-200-800`) because LayerChart redefines
15+
`--color-surface-100/200` here, which would shadow the raw tokens. The pairings are
16+
resolved at `:root`, so they aren't shadowed; only their light branch is used (dark
17+
uses `--color-surface-800/900`).
18+
*/
19+
--color-surface-100: light-dark(var(--color-surface-50), var(--color-surface-700));
20+
--color-surface-200: light-dark(var(--color-surface-100-900), var(--color-surface-800));
21+
--color-surface-300: light-dark(var(--color-surface-200-800), var(--color-surface-900));
22+
--color-surface-content: light-dark(var(--typo-base--color-light), var(--typo-base--color-dark));
1923
}

0 commit comments

Comments
 (0)