Uno Simple Theme — Agent Skill
The Simple theme is Uno's designer/wireframe-style theme. It shares the semantic surface (style keys, typography keys, color keys, brush keys) with Material via the Semantic Design Language — see uno-themes-semantic-colors-brushes for the shared layer. This skill covers the Simple-only style keys, brushes, and SimpleTheme configuration that are not portable to other themes.
Workflow
Docs lookup: call uno_platform_docs_search(...) first, then uno_platform_docs_fetch(sourcePath="…") using the sourcePath field from a result (a relative .md path; add the result's anchor for a section). Never pass a URL, a .html link, or a hand-built path.
Step 1: Search the docs for the topic
| Topic |
Search query |
Installation / SimpleTheme setup |
uno_platform_docs_search("Uno Simple theme installation SimpleTheme UnoFeatures") |
| Simple style keys (buttons, inputs, etc.) |
uno_platform_docs_search("Uno Simple controls styles danger size variants") |
DefaultSize (Small / Medium) |
uno_platform_docs_search("Uno Simple DefaultSize SimpleControlSize button height") |
| Color override / palette |
uno_platform_docs_search("Uno Simple ColorOverrideSource palette grayscale") |
| Font override |
uno_platform_docs_search("Uno Simple FontOverrideSource Inter font family") |
| Utility brushes (overlays, scrims) |
uno_platform_docs_search("Uno Simple utility brushes overlay scrim measurement") |
Step 2: Fetch a page
Uno's published docs have no Simple-theme-specific pages — the inline tables in this skill are the authoritative reference for Simple. For cross-theme topics, search and fetch the sourcePath from a result, e.g. lightweight styling:
- Lightweight Styling (cross-theme):
external/uno.themes/doc/lightweight-styling.md
uno_platform_docs_fetch(sourcePath="external/uno.themes/doc/lightweight-styling.md")
Critical Rules
- Simple uses a flat grayscale palette for all roles except Error (which uses red). Primary, Secondary, Tertiary, Surface, and Outline are achromatic grays. To introduce brand colors, override the palette via
ColorOverrideSource / ColorOverrideDictionary.
- Simple defaults to Inter for all typography (
SimpleFontFamily); CharacterSpacing=0 on all styles; font weights are Bold / SemiBold / Normal (no Medium).
- Typography style keys are NEVER theme-prefixed. Write
DisplayLarge, BodyMedium, LabelSmall — NOT SimpleDisplayLarge. The theme-prefix pattern only applies to the Simple-only control styles listed below.
DefaultSize affects implicit styles only. Setting <SimpleTheme DefaultSize="Medium" /> switches the unsized button / icon-button / toggle-button defaults from 32px (Small) to 40px (Medium). Size-specific styles (SimpleSmall*, SimpleMedium*) always use their declared size regardless of DefaultSize.
SimpleTheme Configuration
SimpleTheme (namespace using:Uno.Simple) accepts:
| Property |
Type |
Default |
Purpose |
ColorOverrideSource |
string (URI) |
— |
Path to a XAML ResourceDictionary overriding *Color keys |
ColorOverrideDictionary |
ResourceDictionary |
— |
Inline ResourceDictionary overriding *Color keys |
FontOverrideSource |
string (URI) |
— |
Path to a XAML ResourceDictionary overriding font resources |
FontOverrideDictionary |
ResourceDictionary |
— |
Inline ResourceDictionary overriding font resources |
DefaultSize |
SimpleControlSize |
Small |
Default size variant for buttons / icon buttons / toggle buttons |
<SimpleTheme xmlns="using:Uno.Simple"
ColorOverrideSource="ms-appx:///Styles/Application/ColorOverride.xaml"
FontOverrideSource="ms-appx:///Styles/Application/FontOverride.xaml"
DefaultSize="Medium" />
When overriding the palette, always provide both Light and Default (Dark) theme values.
Simple-Only Style Keys
Button Variants (no Material equivalent)
| Style Key |
Control |
Use For |
SimpleDangerPrimaryButtonStyle |
Button |
Destructive filled action ("Delete account") |
SimpleDangerSubtleButtonStyle |
Button |
Destructive text action |
SimpleIconButtonNeutralStyle |
Button |
Neutral (secondary) icon button |
SimpleIconButtonSubtleStyle |
Button |
Subtle (tertiary) icon button |
SimpleIconButtonDangerPrimaryStyle |
Button |
Destructive filled icon button |
SimpleIconButtonDangerSubtleStyle |
Button |
Destructive subtle icon button |
Size Variants (Small / Medium)
Pattern: Simple{Size}{Style}. Small = 32px, Medium = 40px (button height).
| Size |
Button |
Icon Button |
ToggleButton |
| Small |
SimpleSmallFilledButtonStyle, SimpleSmallFilledTonalButtonStyle, SimpleSmallTextButtonStyle, SimpleSmallDangerPrimaryButtonStyle, SimpleSmallDangerSubtleButtonStyle |
SimpleSmallIconButtonStyle, SimpleSmallIconButtonNeutralStyle, SimpleSmallIconButtonSubtleStyle, SimpleSmallIconButtonDangerPrimaryStyle, SimpleSmallIconButtonDangerSubtleStyle |
SimpleSmallToggleButtonStyle |
| Medium |
SimpleMediumFilledButtonStyle, SimpleMediumFilledTonalButtonStyle, SimpleMediumTextButtonStyle, SimpleMediumDangerPrimaryButtonStyle, SimpleMediumDangerSubtleButtonStyle |
SimpleMediumIconButtonStyle, SimpleMediumIconButtonNeutralStyle, SimpleMediumIconButtonSubtleStyle, SimpleMediumIconButtonDangerPrimaryStyle, SimpleMediumIconButtonDangerSubtleStyle |
SimpleMediumToggleButtonStyle |
Input Variants
| Style Key |
Control |
Use For |
SimpleTextBoxErrorStyle |
TextBox |
Error / validation state |
SimpleTextBoxSmallStyle |
TextBox |
Small size variant |
SimpleComboBoxErrorStyle |
ComboBox |
Error / validation state |
Controls Without Material Equivalent
| Style Key |
Control |
Notes |
SimpleExpanderStyle |
Expander |
No Material counterpart |
SimpleAutoSuggestBoxStyle |
AutoSuggestBox |
No Material counterpart |
SimpleToolTipStyle |
ToolTip |
No Material counterpart |
SimplePersonPictureStyle |
PersonPicture |
Circular, medium (default) |
SimplePersonPictureSmallStyle |
PersonPicture |
Circular, small |
SimplePersonPictureLargeStyle |
PersonPicture |
Circular, large |
SimplePersonPictureSquareStyle |
PersonPicture |
Square (rounded), medium |
SimplePersonPictureSquareSmallStyle |
PersonPicture |
Square (rounded), small |
SimplePersonPictureSquareLargeStyle |
PersonPicture |
Square (rounded), large |
Simple-Specific Utility Brushes
Beyond the shared semantic brushes, Simple defines utility brushes for overlays, scrims, and measurement/debug overlays. Defined in Simple's ColorPalette.xaml; no shared equivalent.
| Brush Key |
Light |
Dark |
Purpose |
SimpleBackgroundUtilitiesBlanketBrush |
#B2000000 |
#B2000000 |
Heavy overlay / blanket |
SimpleBackgroundUtilitiesMeasurementBrush |
Pink 200 |
Pink 800 |
Measurement overlay background |
SimpleBackgroundUtilitiesOverlayBrush |
#80000000 |
#80000000 |
Semi-transparent overlay |
SimpleBackgroundUtilitiesScrimBrush |
#CCFFFFFF |
#CC000000 |
Scrim behind dialogs / sheets |
SimpleTextUtilitiesOnMeasurementBrush |
Pink 800 |
Pink 200 |
Text on measurement surfaces |
SimpleTextUtilitiesOnOverlayBrush |
OnSurfaceInverseBrush |
OnSurfaceBrush |
Text on overlay surfaces |
SimpleIconUtilitiesBrush |
Pink 600 |
Pink 400 |
Measurement / debug icons |
SimpleIconUtilitiesOnMeasurementBrush |
Pink 800 |
Pink 200 |
Icons on measurement surfaces |
SimpleBorderUtilitiesMeasurementBrush |
Pink 400 |
Pink 600 |
Measurement / debug borders |
SimpleBorderUtilitiesSwatchBrush |
#3D000000 |
#3DFFFFFF |
Color swatch borders |
These reference a Simple-specific pink primitive scale: SimplePink200Color through SimplePink800Color. Pink values intentionally swap between light and dark themes to maintain contrast.
Customization Methods
Simple supports five escalating overrides (ordered by scope):
- Override color palette (full cascade) —
ColorOverrideSource / ColorOverrideDictionary on SimpleTheme. All brushes cascade.
- Switch default size variant —
DefaultSize="Medium" on SimpleTheme. Affects implicit button / icon-button / toggle-button styles only; size-named variants are unaffected.
- Override specific brushes (targeted) —
<SolidColorBrush x:Key="FilledButtonBackground" Color="..." /> in App.xaml.
- Override per-control instance (scoped) — wrap the brush override inside the control's
Resources block.
- Override font family —
FontOverrideSource / FontOverrideDictionary on SimpleTheme, or override SimpleFontFamily directly. Default is Inter.
Customization precedence (highest → lowest): per-instance Control.Resources → Page.Resources → app-level overrides → SimpleTheme defaults → SharedColorPalette / SharedColors / SharedTypography foundation.
Related Skills
- [[uno-themes-semantic-colors-brushes]] — Read this first for the shared semantic surface (style keys, typography, palette, brushes) common to Simple AND Material. Most styling should use those portable keys; reach for Simple-prefixed styles only when targeting Simple-specific concepts (danger variants, explicit sizes, Expander, etc.).
- [[uno-themes-material]] — Material theme reference. Use when targeting Material instead of (or alongside) Simple.
1---2name: uno-themes-simple3description: Comprehensive reference for the Uno Simple theme — designer/wireframe-style theming for Uno Platform apps. Covers SimpleTheme configuration (color/font overrides, default size), Simple-specific style keys (danger buttons, size variants, error inputs, PersonPicture variants), controls without Material equivalent (Expander, AutoSuggestBox, ToolTip, PersonPicture), Simple utility brushes (overlays, scrims, measurement/debug), and the Simple-specific pink primitive scale.4---56# Uno Simple Theme — Agent Skill78The Simple theme is Uno's designer/wireframe-style theme. It shares the semantic surface (style keys, typography keys, color keys, brush keys) with Material via the **Semantic Design Language** — see `uno-themes-semantic-colors-brushes` for the shared layer. This skill covers the **Simple-only** style keys, brushes, and `SimpleTheme` configuration that are not portable to other themes.910## Workflow1112> **Docs lookup:** call `uno_platform_docs_search(...)` first, then `uno_platform_docs_fetch(sourcePath="…")` using the `sourcePath` field from a result (a relative `.md` path; add the result's `anchor` for a section). Never pass a URL, a `.html` link, or a hand-built path.1314### Step 1: Search the docs for the topic1516| Topic | Search query |17|---|---|18| Installation / `SimpleTheme` setup | `uno_platform_docs_search("Uno Simple theme installation SimpleTheme UnoFeatures")` |19| Simple style keys (buttons, inputs, etc.) | `uno_platform_docs_search("Uno Simple controls styles danger size variants")` |20| `DefaultSize` (Small / Medium) | `uno_platform_docs_search("Uno Simple DefaultSize SimpleControlSize button height")` |21| Color override / palette | `uno_platform_docs_search("Uno Simple ColorOverrideSource palette grayscale")` |22| Font override | `uno_platform_docs_search("Uno Simple FontOverrideSource Inter font family")` |23| Utility brushes (overlays, scrims) | `uno_platform_docs_search("Uno Simple utility brushes overlay scrim measurement")` |2425### Step 2: Fetch a page2627Uno's published docs have **no Simple-theme-specific pages** — the inline tables in this skill are the authoritative reference for Simple. For cross-theme topics, search and fetch the `sourcePath` from a result, e.g. lightweight styling:2829- **Lightweight Styling** (cross-theme): `external/uno.themes/doc/lightweight-styling.md`3031```32uno_platform_docs_fetch(sourcePath="external/uno.themes/doc/lightweight-styling.md")33```3435## Critical Rules3637- **Simple uses a flat grayscale palette** for all roles except Error (which uses red). Primary, Secondary, Tertiary, Surface, and Outline are achromatic grays. To introduce brand colors, override the palette via `ColorOverrideSource` / `ColorOverrideDictionary`.38- **Simple defaults to Inter** for all typography (`SimpleFontFamily`); `CharacterSpacing=0` on all styles; font weights are `Bold` / `SemiBold` / `Normal` (no `Medium`).39- **Typography style keys are NEVER theme-prefixed.** Write `DisplayLarge`, `BodyMedium`, `LabelSmall` — NOT `SimpleDisplayLarge`. The theme-prefix pattern only applies to the Simple-only control styles listed below.40- **`DefaultSize` affects implicit styles only.** Setting `<SimpleTheme DefaultSize="Medium" />` switches the unsized button / icon-button / toggle-button defaults from 32px (Small) to 40px (Medium). Size-specific styles (`SimpleSmall*`, `SimpleMedium*`) always use their declared size regardless of `DefaultSize`.4142## SimpleTheme Configuration4344`SimpleTheme` (namespace `using:Uno.Simple`) accepts:4546| Property | Type | Default | Purpose |47|---|---|---|---|48| `ColorOverrideSource` | `string` (URI) | — | Path to a XAML ResourceDictionary overriding `*Color` keys |49| `ColorOverrideDictionary` | `ResourceDictionary` | — | Inline ResourceDictionary overriding `*Color` keys |50| `FontOverrideSource` | `string` (URI) | — | Path to a XAML ResourceDictionary overriding font resources |51| `FontOverrideDictionary` | `ResourceDictionary` | — | Inline ResourceDictionary overriding font resources |52| `DefaultSize` | `SimpleControlSize` | `Small` | Default size variant for buttons / icon buttons / toggle buttons |5354```xml55<SimpleTheme xmlns="using:Uno.Simple"56 ColorOverrideSource="ms-appx:///Styles/Application/ColorOverride.xaml"57 FontOverrideSource="ms-appx:///Styles/Application/FontOverride.xaml"58 DefaultSize="Medium" />59```6061When overriding the palette, **always provide both `Light` and `Default` (Dark) theme values**.6263## Simple-Only Style Keys6465### Button Variants (no Material equivalent)6667| Style Key | Control | Use For |68|---|---|---|69| `SimpleDangerPrimaryButtonStyle` | `Button` | Destructive filled action ("Delete account") |70| `SimpleDangerSubtleButtonStyle` | `Button` | Destructive text action |71| `SimpleIconButtonNeutralStyle` | `Button` | Neutral (secondary) icon button |72| `SimpleIconButtonSubtleStyle` | `Button` | Subtle (tertiary) icon button |73| `SimpleIconButtonDangerPrimaryStyle` | `Button` | Destructive filled icon button |74| `SimpleIconButtonDangerSubtleStyle` | `Button` | Destructive subtle icon button |7576### Size Variants (Small / Medium)7778Pattern: `Simple{Size}{Style}`. `Small` = 32px, `Medium` = 40px (button height).7980| Size | Button | Icon Button | ToggleButton |81|---|---|---|---|82| Small | `SimpleSmallFilledButtonStyle`, `SimpleSmallFilledTonalButtonStyle`, `SimpleSmallTextButtonStyle`, `SimpleSmallDangerPrimaryButtonStyle`, `SimpleSmallDangerSubtleButtonStyle` | `SimpleSmallIconButtonStyle`, `SimpleSmallIconButtonNeutralStyle`, `SimpleSmallIconButtonSubtleStyle`, `SimpleSmallIconButtonDangerPrimaryStyle`, `SimpleSmallIconButtonDangerSubtleStyle` | `SimpleSmallToggleButtonStyle` |83| Medium | `SimpleMediumFilledButtonStyle`, `SimpleMediumFilledTonalButtonStyle`, `SimpleMediumTextButtonStyle`, `SimpleMediumDangerPrimaryButtonStyle`, `SimpleMediumDangerSubtleButtonStyle` | `SimpleMediumIconButtonStyle`, `SimpleMediumIconButtonNeutralStyle`, `SimpleMediumIconButtonSubtleStyle`, `SimpleMediumIconButtonDangerPrimaryStyle`, `SimpleMediumIconButtonDangerSubtleStyle` | `SimpleMediumToggleButtonStyle` |8485### Input Variants8687| Style Key | Control | Use For |88|---|---|---|89| `SimpleTextBoxErrorStyle` | `TextBox` | Error / validation state |90| `SimpleTextBoxSmallStyle` | `TextBox` | Small size variant |91| `SimpleComboBoxErrorStyle` | `ComboBox` | Error / validation state |9293### Controls Without Material Equivalent9495| Style Key | Control | Notes |96|---|---|---|97| `SimpleExpanderStyle` | `Expander` | No Material counterpart |98| `SimpleAutoSuggestBoxStyle` | `AutoSuggestBox` | No Material counterpart |99| `SimpleToolTipStyle` | `ToolTip` | No Material counterpart |100| `SimplePersonPictureStyle` | `PersonPicture` | Circular, medium (default) |101| `SimplePersonPictureSmallStyle` | `PersonPicture` | Circular, small |102| `SimplePersonPictureLargeStyle` | `PersonPicture` | Circular, large |103| `SimplePersonPictureSquareStyle` | `PersonPicture` | Square (rounded), medium |104| `SimplePersonPictureSquareSmallStyle` | `PersonPicture` | Square (rounded), small |105| `SimplePersonPictureSquareLargeStyle` | `PersonPicture` | Square (rounded), large |106107## Simple-Specific Utility Brushes108109Beyond the shared semantic brushes, Simple defines utility brushes for overlays, scrims, and measurement/debug overlays. Defined in Simple's `ColorPalette.xaml`; no shared equivalent.110111| Brush Key | Light | Dark | Purpose |112|---|---|---|---|113| `SimpleBackgroundUtilitiesBlanketBrush` | `#B2000000` | `#B2000000` | Heavy overlay / blanket |114| `SimpleBackgroundUtilitiesMeasurementBrush` | Pink 200 | Pink 800 | Measurement overlay background |115| `SimpleBackgroundUtilitiesOverlayBrush` | `#80000000` | `#80000000` | Semi-transparent overlay |116| `SimpleBackgroundUtilitiesScrimBrush` | `#CCFFFFFF` | `#CC000000` | Scrim behind dialogs / sheets |117| `SimpleTextUtilitiesOnMeasurementBrush` | Pink 800 | Pink 200 | Text on measurement surfaces |118| `SimpleTextUtilitiesOnOverlayBrush` | `OnSurfaceInverseBrush` | `OnSurfaceBrush` | Text on overlay surfaces |119| `SimpleIconUtilitiesBrush` | Pink 600 | Pink 400 | Measurement / debug icons |120| `SimpleIconUtilitiesOnMeasurementBrush` | Pink 800 | Pink 200 | Icons on measurement surfaces |121| `SimpleBorderUtilitiesMeasurementBrush` | Pink 400 | Pink 600 | Measurement / debug borders |122| `SimpleBorderUtilitiesSwatchBrush` | `#3D000000` | `#3DFFFFFF` | Color swatch borders |123124These reference a Simple-specific **pink primitive scale**: `SimplePink200Color` through `SimplePink800Color`. Pink values **intentionally swap** between light and dark themes to maintain contrast.125126## Customization Methods127128Simple supports five escalating overrides (ordered by scope):1291301. **Override color palette (full cascade)** — `ColorOverrideSource` / `ColorOverrideDictionary` on `SimpleTheme`. All brushes cascade.1312. **Switch default size variant** — `DefaultSize="Medium"` on `SimpleTheme`. Affects implicit button / icon-button / toggle-button styles only; size-named variants are unaffected.1323. **Override specific brushes (targeted)** — `<SolidColorBrush x:Key="FilledButtonBackground" Color="..." />` in App.xaml.1334. **Override per-control instance (scoped)** — wrap the brush override inside the control's `Resources` block.1345. **Override font family** — `FontOverrideSource` / `FontOverrideDictionary` on `SimpleTheme`, or override `SimpleFontFamily` directly. Default is **Inter**.135136Customization precedence (highest → lowest): per-instance `Control.Resources` → `Page.Resources` → app-level overrides → `SimpleTheme` defaults → `SharedColorPalette` / `SharedColors` / `SharedTypography` foundation.137138## Related Skills139140- [[uno-themes-semantic-colors-brushes]] — **Read this first** for the shared semantic surface (style keys, typography, palette, brushes) common to Simple AND Material. Most styling should use those portable keys; reach for Simple-prefixed styles only when targeting Simple-specific concepts (danger variants, explicit sizes, Expander, etc.).141- [[uno-themes-material]] — Material theme reference. Use when targeting Material instead of (or alongside) Simple.