skills/angular-awesome-theming/SKILL.md
Theme and style Angular Awesome components using Web Awesome design tokens, CSS custom properties, CSS parts, variant/appearance/size tokens, and layout utilities. Use when customizing component appearance, applying brand colors, overriding default styles, using CSS shadow parts, or configuring layout directives (cluster, stack, grid, gap, align, flank, frame, split).
npx skillsauth add gedmarc/angular-awesome angular-awesome-themingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Apply consistent visual styling and layout using Web Awesome's design token system.
All components use a shared token vocabulary:
<!-- Variant: semantic color intent -->
<wa-button variant="brand">Brand</wa-button>
<wa-button variant="success">Success</wa-button>
<wa-button variant="warning">Warning</wa-button>
<wa-button variant="danger">Danger</wa-button>
<wa-button variant="neutral">Neutral</wa-button>
<!-- Appearance: visual treatment -->
<wa-button appearance="accent">Accent</wa-button>
<wa-button appearance="filled">Filled</wa-button>
<wa-button appearance="outlined">Outlined</wa-button>
<wa-button appearance="plain">Plain</wa-button>
<wa-button appearance="filled-outlined">Filled Outlined</wa-button>
<!-- Size: physical scale -->
<wa-button size="small">Small</wa-button>
<wa-button size="medium">Medium</wa-button>
<wa-button size="large">Large</wa-button>
Override component internals via CSS custom properties (documented per-component in rules.md):
/* Toast spacing and width */
wa-toast { --gap: 16px; --width: 32rem; }
/* Toast item accent and animation */
wa-toast-item { --accent-width: 6px; --show-duration: 300ms; }
/* Progress bar height */
wa-progress-bar { --height: 8px; --indicator-color: var(--wa-color-brand-600); }
Style shadow DOM internals via exported CSS parts:
wa-button::part(base) { border-radius: 9999px; }
wa-toast-item::part(close-button) { opacity: 0.6; }
wa-input::part(input) { font-family: monospace; }
Each component's rules.md lists available parts.
Layout utilities are CSS-class-based attribute directives. Apply them to any host element.
<div waStack class="wa-stack wa-gap-m">
<wa-button>First</wa-button>
<wa-button>Second</wa-button>
</div>
<div waCluster class="wa-cluster wa-gap-s" style="justify-content: center; align-items: center;">
<wa-tag>One</wa-tag>
<wa-tag>Two</wa-tag>
</div>
<div waGrid class="wa-grid wa-gap-m" style="--min-column-size: 15rem;">
<wa-card>A</wa-card>
<wa-card>B</wa-card>
<wa-card>C</wa-card>
</div>
<div waSplit class="wa-split wa-split:row wa-gap-l">
<nav>Sidebar</nav>
<main>Content</main>
</div>
<div waFlank class="wa-flank wa-gap-s">
<wa-icon name="star"></wa-icon>
<span>Flanked content</span>
</div>
<div waFrame class="wa-frame" style="aspect-ratio: 16 / 9;">
<img src="hero.jpg" alt="Hero" />
</div>
<div waGap class="wa-gap-l">
<div>Spaced content</div>
</div>
<div waAlignItems class="wa-align-items-center">
<wa-spinner></wa-spinner>
</div>
Apply variant to a container and all children:
<wa-variant variant="danger">
<wa-button>Danger button</wa-button>
<wa-callout>Danger callout</wa-callout>
</wa-variant>
Use normalizeAppearance() from src/types/tokens.ts to handle legacy space-delimited values:
import { normalizeAppearance } from 'angular-awesome';
// 'filled outlined' → 'filled-outlined'
// 'outlined filled' → 'filled-outlined'
development
Use Angular Awesome wrapper directives for Web Awesome web components in Angular 20+ projects. Trigger when tasks mention wa-* components (wa-button, wa-input, wa-dialog, wa-toast, wa-select, wa-checkbox, etc.), Angular Awesome directives, Web Awesome Angular integration, component variants/appearance/size tokens, slot projection, form control binding, or angular-awesome imports. Covers component usage, layout utilities, services (toast), theming, and accessibility.
development
Write and maintain tests for Angular Awesome wrapper directives, components, and services. Use when creating spec files for wa-* components, testing form control integration, testing event emission, testing toast/service behavior, running headless or BrowserStack tests, or debugging test failures in Angular Awesome.
development
Create a new Angular Awesome wrapper directive or component for a Web Awesome web component. Use when adding a new wa-* component wrapper, scaffolding a directive with its spec/rules/example files, wiring it into public-api.ts, updating the changelog, and regenerating docs. Covers the full end-to-end flow from llms.txt API extraction through to build verification.
development
Migrate Angular Awesome component wrappers when the upstream Web Awesome API changes. Use when replacing custom implementations with official web components, updating property names or types, removing deprecated fields, aligning placement/position values, updating tests for new APIs, and updating docs/changelog for breaking changes.