Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…udio brands Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…olor-docs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dreamwasp
commented
Oct 29, 2026
|
|
||
| ### Pair a status tint with a status ink | ||
|
|
||
| A status message is a tint behind and an ink on top. An error box uses `surface-error` for the background and `text-error` for the icon and the message; each status ink clears text contrast on its own tint. A floating `Alert` takes the same ink on its border. Show warnings with an icon, not color alone. |
Contributor
Author
There was a problem hiding this comment.
Updated for design's Alert change (sandbox 15c2195): the status ink now carries the message as well as the icon, and a floating Alert's border. Line 50 also reflects that Original Codecademy no longer pins navy and beige.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s' into cass-gmt-1825-color-docs
- 45 roles: the shadow-* group (key, ambient, scrim) replaces backdrop. - surface-raised is the lighter surface step, not a depth; navs and headers are surface-default, fields surface-raised. - New guidance: raised surfaces take a border-subtle hairline, floating ones add a shadow, Card is default or brand. - Brand role overrides need both attributes on one element. - Elevation: old Core's hard offset for Original Codecademy, soft shadows elsewhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dreamwasp
commented
Nov 4, 2026
| | `action-*` | `primary`, `danger` and `neutral`, each with `-hover` and `-pressed`; `disabled` | Interactive fills and inks: buttons, links, toggles | | ||
| | `state-*` | `hover`, `pressed`, `selected` | Translucent layers over elements that have no fill of their own | | ||
| | `viz-*` | `1` to `8` (categorical), `seq-1` to `seq-4` (sequential) | Charts | | ||
| | `shadow-*` | `key`, `ambient`, `scrim` | Shadow colors and the dimmed layer behind a modal | |
Contributor
Author
There was a problem hiding this comment.
Design's sandbox update, 2026-11-03: backdrop becomes shadow-scrim, and shadow-key / shadow-ambient are the two layers every elevation shadow draws.
| ); | ||
| ``` | ||
|
|
||
| ### Give raised surfaces a hairline |
Contributor
Author
There was a problem hiding this comment.
Design's sandbox update, 2026-11-03: every card and floating surface takes a border-subtle hairline and the shadow does the separating; Card collapses to default and brand.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t pairings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s' into cass-gmt-1825-color-docs
Each brand theme now carries and injects only its own brand's CSS (about 21 KB, down from 56 KB for every brand at once). The CSS puts the brand's palette and initial mode on :root, and folds its role overrides into its mode blocks. Every brand resolves to the same values as before in both modes. The generator, role table, checks, sandbox fixture and gamut's brand inputs move from gamut-styles' src/colorSystem to a new build-time package, @skillsoft/gamut-brand. Its `gamut-brand build` CLI writes a brand's values.ts, tokens.css and DTCG JSON (--watch, --check), and refuses a brand that fails a check, including on its own tokens.css read back. gamut-styles' build:tokens uses the same writeBrand on gamut's five brands. - createBrandTheme, BrandBase and BrandValues are exported. A team's theme has the same type as gamut's, so system props stay typed. - BREAKING: generated files move to one folder per brand (tokens/<brand>.css, tokens/<brand>/*.tokens.json; tokens.css stays the default brand). initialMode moves from the theme onto the brand. - DTCG mode files include each brand's role overrides. - Role names in brand overrides are typed (ROLE_TOKENS). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… your own brand Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sandbox parity only matters while the port is in development. The generator is now held to its own rules for any hue (fixed lightness per grade, chroma inside sRGB, the separation guarantee, one role mapping for every brand, every check passing) instead of a saved copy of the sandbox's output. The checked-in generated files still catch value drift. Drops the sandbox fixture, dump script and comments that pointed at sandbox commits and files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 5, 2026
Covers the variance createTheme and gamut-styles ColorMode prefixes, the gamut-brand Style Dictionary prefix, the docs and the regenerated tokens. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…s' into cass-gmt-1825-color-docs # Conflicts: # .changeset/color-system-brands.md # packages/gamut-brand/src/__tests__/system.test.ts # packages/gamut-styles/scripts/build-tokens.ts # packages/gamut-styles/scripts/validate-tokens.ts # packages/gamut-styles/src/colorSystem/README.md # packages/gamut-styles/src/themes/__tests__/__snapshots__/theme.test.ts.snap # packages/gamut-styles/src/themes/__tests__/brandElevation.test.ts # packages/gamut-styles/src/themes/__tests__/theme.test.ts # packages/gamut-styles/src/themes/platform.ts # packages/gamut-styles/src/tokens/generated/tokens.css # packages/gamut-styles/src/tokens/generated/tokensCss.ts
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Adds a gamut-docs concept page on the generated color system: how it works, how to use it, and what's better and worse than the old color names.
Docs
concepts/color-system.md: covers:GamutProviderputstokens.csson the page, and mode and brand attributestext-inverse, status tint plus ink,Background,viz-*and app setupconcepts/index.md: links the page. The Concepts sidebar is generated, soastro.config.mjsdoesn't change.Every role name, CSS variable, prop and import path on the page is checked against the code on this branch. Stacked on #58, so it lists all six brands. It's kept in step with design's changes from 2026-10-29: status alerts carry their ink on the message and on a floating border, and Original Codecademy no longer pins navy and beige. Status separation is described as reported, not enforced, because that's what
probe.tsdoes.Not in this PR
concepts/color-modes.md,foundations/design-tokens.md,foundations/themes.mdandguides/supporting-dark-mode.mdstill describe the old aliases here. #67 moves them, and the rest of the site, onto roles. The codemod (#53) isn't named until it lands.PR Checklist
Testing Instructions
cd packages/gamut-docs && npx astro build: the build completes.npx astro devand open/concepts/color-system/: the page renders, it's in the Concepts sidebar, and its links work.packages/gamut-styles/src/colorSystem/roles.ts.🤖 Generated with Claude Code