Shared design tokens and base component styles for Wintermuted projects.
The package is derived from the styling language introduced in the CV project and extracts the reusable parts of that system so application repositories can depend on a single source of truth instead of copying CSS.
npm install @wintermuted/ui-themeIf you prefer to consume the package directly from GitHub without GitHub Packages auth, install from a tagged release:
npm install github:wintermuted/wintermuted-ui#v0.1.0- Core color, spacing, radius, shadow, and typography tokens
- Base document and form-control styling
- Shared surface, button, badge, tag, list, separator, and side-nav primitives
- Light and dark theme variables via
[data-theme="dark"]
import "@wintermuted/ui-theme";Then use the exported CSS variables in application styles:
.app-shell {
color: var(--wm-color-text);
background: var(--wm-color-surface);
border: 1px solid var(--wm-color-border);
}Import only the slices you need. Most component files require tokens, and many apps also want base element styles.
import "@wintermuted/ui-theme/styles/tokens.css";
import "@wintermuted/ui-theme/styles/base.css";
import "@wintermuted/ui-theme/styles/components/button.css";
import "@wintermuted/ui-theme/styles/components/card.css";Available modular entry points:
@wintermuted/ui-theme/styles/tokens.css@wintermuted/ui-theme/styles/base.css@wintermuted/ui-theme/styles/components.css(all components)@wintermuted/ui-theme/styles/components/button.css@wintermuted/ui-theme/styles/components/card.css@wintermuted/ui-theme/styles/components/badge.css@wintermuted/ui-theme/styles/components/tag.css@wintermuted/ui-theme/styles/components/list.css@wintermuted/ui-theme/styles/components/separator.css@wintermuted/ui-theme/styles/components/side-nav.css
This repo includes a static showcase app for validating common component scenarios.
npm run showcase:serveThen open http://localhost:4174/showcase/.
Helpful local viewing scripts:
npm run showcase:open
npm run showcase:open:sample-data
npm run showcase:open:formsThe showcase includes:
- Light and dark theme toggle
- Buttons, badges, cards, and alerts
- Form controls and focus states
- A representative data table
- A sample-data page that renders stats, chart bars, and table rows from one dataset
Files:
showcase/index.htmlshowcase/sample-data.htmlshowcase/showcase.css
The showcase is deployed with a preview/main pattern:
- Pushes to
mainpublish production content to the root Pages site. - Pull requests to
mainpublish isolated previews underpreviews/pr-<number>/showcase/. - Closing a pull request removes its preview folder from
gh-pages.
Workflows:
.github/workflows/deploy-showcase-pages.yml.github/workflows/cleanup-showcase-preview.yml
Use npm link to symlink this theme into local consuming apps so style changes appear immediately.
From this repo:
npm run link:local -- <consumer-path> [consumer-path-2 ...]Workspace example:
npm run link:local -- ../sub-killer ../cvWhen done testing, revert consumers back to normal package resolution:
npm run unlink:local -- ../sub-killer ../cvScripts:
scripts/link-local.shscripts/unlink-local.sh
- Merges to main trigger auto-release, which bumps the minor version in package.json, creates a matching vX.Y.Z tag, and creates a GitHub release.
- Tag pushes matching v* trigger the publish workflow, which publishes to npmjs using npm provenance.
- Set the NPM_TOKEN repository secret with an npm automation token before running the workflow.
- The package intentionally avoids application-specific layout opinions.
- Projects should keep product-specific selectors and layout rules in their own repositories.
- Publishing is handled through GitHub Actions to npmjs.