Approximate the Danske Bank Sapphire design system using plain CSS and HTML, without installing @danske/sapphire-* packages. Use this skill whenever the user asks to build UI that should look like Sapphire, match Danske Bank's design system, create Sapphire-styled components, or wants banking/fintech UI with a Scandinavian design language. Also trigger when the user mentions 'sapphire tokens', 'sapphire components', or wants to create UI prototypes that follow the Sapphire visual style. This skill is framework-agnostic and works with any frontend stack.
From sapphire-designnpx claudepluginhub thomasrohde/marketplace --plugin sapphire-designThis skill uses the workspace's default tool permissions.
references/buttons.mdreferences/core.mdreferences/feedback.mdreferences/forms.mdreferences/icons.mdreferences/tokens.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Orchestrates phased implementation plans with subagent documentation discovery, verification checklists, and anti-pattern guards for features or tasks.
This skill teaches you how to build UI that closely matches Danske Bank's Sapphire design system using only CSS custom properties and plain HTML/CSS patterns. No npm packages required.
The real Sapphire system uses @danske/sapphire-react, @danske/sapphire-css, @danske/sapphire-design-tokens, and @danske/sapphire-icons. This skill extracts the essential design tokens, component patterns, and icon catalog so you can replicate the look and feel in any framework (React, Vue, Svelte, plain HTML, etc.).
Every Sapphire-styled page needs two things:
class="sapphire-theme-default" to your <body> or root containerThe tokens define everything: colors, spacing, typography, radii, shadows, and control sizes. Components are built by referencing these tokens, which means your entire UI stays consistent and theme-switchable.
<body class="sapphire-theme-default">
<!-- All Sapphire-styled content goes here -->
</body>
references/tokens.md for the full set of CSS custom properties. Copy the .sapphire-theme-default block into your project's CSS.references/icons.md for the complete icon catalog (700+ icons). Icons are simple SVGs that you can inline or reference.Components are split into focused files. Read only what your task requires:
| File | Components | When to read |
|---|---|---|
references/core.md | Surface, Text, Card, Separator, Layout (stack/row/container) | Always — needed for any Sapphire page |
references/buttons.md | Button (7 variants × 3 sizes, states, icons) | When the UI has buttons or clickable actions |
references/forms.md | Text Field, Checkbox, Radio, Switch, Select | When the UI has form inputs or settings |
references/feedback.md | Badge, Alert, Tabs, Dialog/Modal, Avatar | When the UI shows status indicators, navigation tabs, modals, or user avatars |
For a typical page, start with core.md + buttons.md. Add forms.md if there are inputs, feedback.md if there are badges/alerts/tabs/dialogs.
Sapphire follows these key principles that you should maintain:
--sapphire-semantic-color-foreground-primary instead of raw hex/hsl values. This ensures theme compatibility (light, dark, contrast modes).--sapphire-semantic-size-spacing-*) for all padding, margins, and gaps. The scale runs from 4xs (0.125rem) to 6xl (4.5rem).border-radius equal to their height, creating the signature pill shape.color-mix(), not distinct solid colors. This creates smooth, layered interactions.heading-2xl down to heading-xs) and body scale (body-lg down to body-xs) with the Danske font family (falls back to system sans-serif).2px solid blue-400 outline on keyboard focus, offset by 2px.opacity: 0.3 universally.Sapphire has three surface levels plus a contrast (dark) mode. Each adjusts token values:
| Class | Background | Use Case |
|---|---|---|
.sapphire-theme-default | White | Primary surface |
.sapphire-theme--secondary | Sand-50 | Elevated sections |
.sapphire-theme--tertiary | Sand-100 | Nested containers |
.sapphire-theme--contrast | Gray-900 (dark) | Dark mode / hero sections |
Nest theme classes to create depth. A card on a secondary surface would have the secondary class on the section and the default class on the card itself.
Sapphire uses the proprietary "Danske" font. When approximating without the font files, use a system font stack that matches the geometric sans-serif style:
font-family: 'Danske', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--sapphire-semantic-size-height-control-sm (2rem / 32px)<button>, <input>, <nav>) - the CSS classes layer on top