Sitelet https://github.com/unoplatform/Uno.Samples/pull/956
Skip to content

feat(uno-crm): seed colours and design tokens for UnoCRM - #956

Draft
DerekRaven wants to merge 1 commit into
dev/jb/unocrm-hd-previewsfrom
dev/dr/design-tokens-uno-crm
Draft

DerekRaven wants to merge 1 commit into
dev/jb/unocrm-hd-previewsfrom
dev/dr/design-tokens-uno-crm

Conversation

@DerekRaven

Copy link
Copy Markdown
Contributor

Goal

Move UnoCRM onto Uno.Themes design tokens: generate the semantic palette from seed colours
instead of hand-authoring it, and consume the generated shape and spacing tokens so theme-level
design-token edits actually reach the UI.

Contributes to #952.

Seed colours

The palette is generated from three seeds on SimpleToolkitTheme.Colors: #0D6E6E / #3B82F6 / #F59E0B — the sample's
own existing light-mode PrimaryColor / SecondaryColor / TertiaryColor, so the brand colours are
unchanged. SeedColorMode defaults to Fidelity, which renders light-mode Primary as the exact hex
and brightens it for dark. The hand-authored palette file is deleted.

Seed exceptions. ColorOverrides.xaml pins SecondaryColor, TertiaryColor, OutlineColor, SecondaryContainerColor, TertiaryContainerColor back to the authored value via Colors.OverrideSource, which merges last and wins over the generated palette. These are a palette that was the least M3-shaped to begin with: a bright amber tertiary and flat grey outlines are exactly what the tonal recipe normalises away. Both themes are declared for every pinned role — the brush resolver probes Light then Default, so a Default-only role would bleed its dark colour into light.

Design tokens

The app previously referenced zero {ThemeResource Space*} or {ThemeResource Radius*} tokens, so
DefaultCornerRadius and DefaultSpacing had nothing to act on — editing them moved nothing. It now
carries 121 token references.

  • 2 pill/circle radii now use RadiusFullCornerRadius. Their radius was half a fixed dimension, which no numeric step tracks — snapping those to the nearest step would visibly square them off.

Left literal on purpose: compound radii and compound thicknesses (no token expresses a per-edge
value), and any value more than 4px from a ramp step.

Verification

  • Builds clean on net10.0-desktop.
  • Rendered on a desktop head before and after the token conversion and the framebuffer compared
    directly: no resource errors, and the pixels are unchanged apart from the handful of radii that
    snapped by 1-4px.
  • Every deleted resource key was checked against all remaining XAML; nothing references one.

Dark mode has not been exercised (the virtual framebuffer has no OS theme to switch), so a human
look in dark mode is still worth doing.

🤖 Generated with Claude Code

@mergify

mergify Bot commented Sep 15, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

… tokens

- Replace the hand-authored semantic palette with three seed colours on
  SimpleToolkitTheme.Colors
- Pin the roles the tonal recipe cannot reach via Colors.OverrideSource
- Consume the generated Radius*/Space* tokens in the app own XAML so
  DefaultCornerRadius and DefaultSpacing actually reach the UI
- Pin Uno.Themes 8.0.0-dev.15 and Uno.Toolkit 9.1.3

Contributes to #952

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant