@skdx/tokens 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +439 -0
- package/dist/foundation.css +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +1 -0
- package/dist/themes/AntBrand.cjs +1 -0
- package/dist/themes/AntBrand.d.cts +3 -0
- package/dist/themes/AntBrand.d.ts +3 -0
- package/dist/themes/AntBrand.js +1 -0
- package/dist/themes/AntDark.cjs +1 -0
- package/dist/themes/AntDark.d.cts +12 -0
- package/dist/themes/AntDark.d.ts +12 -0
- package/dist/themes/AntDark.js +1 -0
- package/dist/themes/CatppuccinLatte.cjs +1 -0
- package/dist/themes/CatppuccinLatte.d.cts +9 -0
- package/dist/themes/CatppuccinLatte.d.ts +9 -0
- package/dist/themes/CatppuccinLatte.js +1 -0
- package/dist/themes/CatppuccinMocha.cjs +1 -0
- package/dist/themes/CatppuccinMocha.d.cts +9 -0
- package/dist/themes/CatppuccinMocha.d.ts +9 -0
- package/dist/themes/CatppuccinMocha.js +1 -0
- package/dist/themes/ChakraBrand.cjs +1 -0
- package/dist/themes/ChakraBrand.d.cts +3 -0
- package/dist/themes/ChakraBrand.d.ts +3 -0
- package/dist/themes/ChakraBrand.js +1 -0
- package/dist/themes/ChakraDark.cjs +1 -0
- package/dist/themes/ChakraDark.d.cts +12 -0
- package/dist/themes/ChakraDark.d.ts +12 -0
- package/dist/themes/ChakraDark.js +1 -0
- package/dist/themes/CupcakeDark.cjs +1 -0
- package/dist/themes/CupcakeDark.d.cts +9 -0
- package/dist/themes/CupcakeDark.d.ts +9 -0
- package/dist/themes/CupcakeDark.js +1 -0
- package/dist/themes/CupcakeLight.cjs +1 -0
- package/dist/themes/CupcakeLight.d.cts +10 -0
- package/dist/themes/CupcakeLight.d.ts +10 -0
- package/dist/themes/CupcakeLight.js +1 -0
- package/dist/themes/DefaultTheme.cjs +1 -0
- package/dist/themes/DefaultTheme.d.cts +37 -0
- package/dist/themes/DefaultTheme.d.ts +37 -0
- package/dist/themes/DefaultTheme.js +1 -0
- package/dist/themes/DraculaDark.cjs +1 -0
- package/dist/themes/DraculaDark.d.cts +3 -0
- package/dist/themes/DraculaDark.d.ts +3 -0
- package/dist/themes/DraculaDark.js +1 -0
- package/dist/themes/DraculaLight.cjs +1 -0
- package/dist/themes/DraculaLight.d.cts +14 -0
- package/dist/themes/DraculaLight.d.ts +14 -0
- package/dist/themes/DraculaLight.js +1 -0
- package/dist/themes/EmeraldBrand.cjs +1 -0
- package/dist/themes/EmeraldBrand.d.cts +3 -0
- package/dist/themes/EmeraldBrand.d.ts +3 -0
- package/dist/themes/EmeraldBrand.js +1 -0
- package/dist/themes/EmeraldDark.cjs +1 -0
- package/dist/themes/EmeraldDark.d.cts +8 -0
- package/dist/themes/EmeraldDark.d.ts +8 -0
- package/dist/themes/EmeraldDark.js +1 -0
- package/dist/themes/EverforestDark.cjs +1 -0
- package/dist/themes/EverforestDark.d.cts +9 -0
- package/dist/themes/EverforestDark.d.ts +9 -0
- package/dist/themes/EverforestDark.js +1 -0
- package/dist/themes/EverforestLight.cjs +1 -0
- package/dist/themes/EverforestLight.d.cts +13 -0
- package/dist/themes/EverforestLight.d.ts +13 -0
- package/dist/themes/EverforestLight.js +1 -0
- package/dist/themes/FluentBrand.cjs +1 -0
- package/dist/themes/FluentBrand.d.cts +3 -0
- package/dist/themes/FluentBrand.d.ts +3 -0
- package/dist/themes/FluentBrand.js +1 -0
- package/dist/themes/FluentDark.cjs +1 -0
- package/dist/themes/FluentDark.d.cts +11 -0
- package/dist/themes/FluentDark.d.ts +11 -0
- package/dist/themes/FluentDark.js +1 -0
- package/dist/themes/GraphiteBrand.cjs +1 -0
- package/dist/themes/GraphiteBrand.d.cts +3 -0
- package/dist/themes/GraphiteBrand.d.ts +3 -0
- package/dist/themes/GraphiteBrand.js +1 -0
- package/dist/themes/GraphiteDark.cjs +1 -0
- package/dist/themes/GraphiteDark.d.cts +8 -0
- package/dist/themes/GraphiteDark.d.ts +8 -0
- package/dist/themes/GraphiteDark.js +1 -0
- package/dist/themes/GruvboxDark.cjs +1 -0
- package/dist/themes/GruvboxDark.d.cts +9 -0
- package/dist/themes/GruvboxDark.d.ts +9 -0
- package/dist/themes/GruvboxDark.js +1 -0
- package/dist/themes/GruvboxLight.cjs +1 -0
- package/dist/themes/GruvboxLight.d.cts +13 -0
- package/dist/themes/GruvboxLight.d.ts +13 -0
- package/dist/themes/GruvboxLight.js +1 -0
- package/dist/themes/MaterialBrand.cjs +1 -0
- package/dist/themes/MaterialBrand.d.cts +3 -0
- package/dist/themes/MaterialBrand.d.ts +3 -0
- package/dist/themes/MaterialBrand.js +1 -0
- package/dist/themes/MaterialDark.cjs +1 -0
- package/dist/themes/MaterialDark.d.cts +12 -0
- package/dist/themes/MaterialDark.d.ts +12 -0
- package/dist/themes/MaterialDark.js +1 -0
- package/dist/themes/MidnightBrand.cjs +1 -0
- package/dist/themes/MidnightBrand.d.cts +11 -0
- package/dist/themes/MidnightBrand.d.ts +11 -0
- package/dist/themes/MidnightBrand.js +1 -0
- package/dist/themes/MidnightLight.cjs +1 -0
- package/dist/themes/MidnightLight.d.cts +10 -0
- package/dist/themes/MidnightLight.d.ts +10 -0
- package/dist/themes/MidnightLight.js +1 -0
- package/dist/themes/NordDark.cjs +1 -0
- package/dist/themes/NordDark.d.cts +3 -0
- package/dist/themes/NordDark.d.ts +3 -0
- package/dist/themes/NordDark.js +1 -0
- package/dist/themes/NordLight.cjs +1 -0
- package/dist/themes/NordLight.d.cts +13 -0
- package/dist/themes/NordLight.d.ts +13 -0
- package/dist/themes/NordLight.js +1 -0
- package/dist/themes/OneDark.cjs +1 -0
- package/dist/themes/OneDark.d.cts +9 -0
- package/dist/themes/OneDark.d.ts +9 -0
- package/dist/themes/OneDark.js +1 -0
- package/dist/themes/OneLight.cjs +1 -0
- package/dist/themes/OneLight.d.cts +13 -0
- package/dist/themes/OneLight.d.ts +13 -0
- package/dist/themes/OneLight.js +1 -0
- package/dist/themes/PrimerDark.cjs +1 -0
- package/dist/themes/PrimerDark.d.cts +9 -0
- package/dist/themes/PrimerDark.d.ts +9 -0
- package/dist/themes/PrimerDark.js +1 -0
- package/dist/themes/PrimerLight.cjs +1 -0
- package/dist/themes/PrimerLight.d.cts +9 -0
- package/dist/themes/PrimerLight.d.ts +9 -0
- package/dist/themes/PrimerLight.js +1 -0
- package/dist/themes/RosePine.cjs +1 -0
- package/dist/themes/RosePine.d.cts +9 -0
- package/dist/themes/RosePine.d.ts +9 -0
- package/dist/themes/RosePine.js +1 -0
- package/dist/themes/RosePineDawn.cjs +1 -0
- package/dist/themes/RosePineDawn.d.cts +13 -0
- package/dist/themes/RosePineDawn.d.ts +13 -0
- package/dist/themes/RosePineDawn.js +1 -0
- package/dist/themes/SkandaDark.cjs +1 -0
- package/dist/themes/SkandaDark.d.cts +12 -0
- package/dist/themes/SkandaDark.d.ts +12 -0
- package/dist/themes/SkandaDark.js +1 -0
- package/dist/themes/SkandaLight.cjs +1 -0
- package/dist/themes/SkandaLight.d.cts +3 -0
- package/dist/themes/SkandaLight.d.ts +3 -0
- package/dist/themes/SkandaLight.js +1 -0
- package/dist/themes/SolarizedDark.cjs +1 -0
- package/dist/themes/SolarizedDark.d.cts +9 -0
- package/dist/themes/SolarizedDark.d.ts +9 -0
- package/dist/themes/SolarizedDark.js +1 -0
- package/dist/themes/SolarizedLight.cjs +1 -0
- package/dist/themes/SolarizedLight.d.cts +9 -0
- package/dist/themes/SolarizedLight.d.ts +9 -0
- package/dist/themes/SolarizedLight.js +1 -0
- package/dist/themes/SynthwaveDark.cjs +1 -0
- package/dist/themes/SynthwaveDark.d.cts +9 -0
- package/dist/themes/SynthwaveDark.d.ts +9 -0
- package/dist/themes/SynthwaveDark.js +1 -0
- package/dist/themes/SynthwaveLight.cjs +1 -0
- package/dist/themes/SynthwaveLight.d.cts +12 -0
- package/dist/themes/SynthwaveLight.d.ts +12 -0
- package/dist/themes/SynthwaveLight.js +1 -0
- package/dist/themes/brands.cjs +1 -0
- package/dist/themes/brands.d.cts +41 -0
- package/dist/themes/brands.d.ts +41 -0
- package/dist/themes/brands.js +1 -0
- package/dist/themes/createBrandTheme.cjs +1 -0
- package/dist/themes/createBrandTheme.d.cts +55 -0
- package/dist/themes/createBrandTheme.d.ts +55 -0
- package/dist/themes/createBrandTheme.js +1 -0
- package/dist/themes/index.cjs +1 -0
- package/dist/themes/index.d.cts +41 -0
- package/dist/themes/index.d.ts +41 -0
- package/dist/themes/index.js +1 -0
- package/dist/themes.css +1 -0
- package/dist/tokens.css +1 -0
- package/dist/utils/aliases.cjs +9 -0
- package/dist/utils/aliases.d.cts +121 -0
- package/dist/utils/aliases.d.ts +121 -0
- package/dist/utils/aliases.js +9 -0
- package/dist/utils/contrast.cjs +1 -0
- package/dist/utils/contrast.d.cts +27 -0
- package/dist/utils/contrast.d.ts +27 -0
- package/dist/utils/contrast.js +1 -0
- package/dist/utils/cssVars.cjs +2 -0
- package/dist/utils/cssVars.d.cts +37 -0
- package/dist/utils/cssVars.d.ts +37 -0
- package/dist/utils/cssVars.js +2 -0
- package/dist/utils/foundation.cjs +15 -0
- package/dist/utils/foundation.d.cts +300 -0
- package/dist/utils/foundation.d.ts +300 -0
- package/dist/utils/foundation.js +15 -0
- package/dist/utils/mode.cjs +1 -0
- package/dist/utils/mode.d.cts +89 -0
- package/dist/utils/mode.d.ts +89 -0
- package/dist/utils/mode.js +1 -0
- package/dist/utils/theme.cjs +1 -0
- package/dist/utils/theme.d.cts +503 -0
- package/dist/utils/theme.d.ts +503 -0
- package/dist/utils/theme.js +1 -0
- package/dist/utils/toCss.cjs +10 -0
- package/dist/utils/toCss.d.cts +92 -0
- package/dist/utils/toCss.d.ts +92 -0
- package/dist/utils/toCss.js +10 -0
- package/package.json +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
# @skdx/tokens
|
|
2
|
+
|
|
3
|
+
Theme contract and design tokens for the SkandaDX design system.
|
|
4
|
+
|
|
5
|
+
A SkandaDX theme is a **plain, JSON-serializable object** — no CSS files, no build step required. This package defines what a theme looks like (the `Theme` contract), ships ready-made themes, and provides functions that turn any theme into CSS custom properties (`--skdx-*` variables). It's published as a standalone, general-purpose package: skdx's own framework packages are headless (Phase 1) and don't depend on or apply these tokens themselves today, so `@skdx/tokens` is meant to be consumed independently — by `apps/docs`, or by any other project that wants the `--skdx-*` variables. Themed components that auto-apply a `Theme` are planned as future (Phase 2) work, not current behavior. Because themes are plain data, they are the natural output format for a visual theme builder: the builder edits a `Theme` object, and this package renders it to CSS.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Theme (colors) ── themeToCss / applyTheme ─┐
|
|
9
|
+
├─▶ --skdx-* CSS variables ─▶ your own styled markup
|
|
10
|
+
Foundation ── foundationToCss ─────────┘
|
|
11
|
+
(type, space, radii, shadow geometry, motion — shared by every theme)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
pnpm add @skdx/tokens
|
|
18
|
+
# or: npm install @skdx/tokens
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The package ships ESM and CJS builds with TypeScript declarations, has no runtime dependencies, and is fully tree-shakeable (`sideEffects: false`) — importing one theme does not pull in the others.
|
|
22
|
+
|
|
23
|
+
## Quick start
|
|
24
|
+
|
|
25
|
+
Apply a theme to the whole document at runtime:
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
import { applyTheme, defaultTheme, foundationToCss } from '@skdx/tokens';
|
|
29
|
+
|
|
30
|
+
// Once: the type scale, spacing, radii, shadow geometry and motion every theme shares.
|
|
31
|
+
document.head.appendChild(
|
|
32
|
+
Object.assign(document.createElement('style'), { textContent: foundationToCss() })
|
|
33
|
+
);
|
|
34
|
+
// Per theme: colors.
|
|
35
|
+
applyTheme(defaultTheme);
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`applyTheme` sets the theme's `--skdx-*` variables as inline styles on `<html>` and stamps it with `data-skdx-theme="skanda-light"`; `foundationToCss()` supplies the rest at `:root`. You need both — a theme no longer carries the shared scales. From then on, any CSS (including all SkandaDX components) can use the tokens:
|
|
39
|
+
|
|
40
|
+
```css
|
|
41
|
+
.card {
|
|
42
|
+
background: var(--skdx-color-semantic-surface);
|
|
43
|
+
color: var(--skdx-color-semantic-text);
|
|
44
|
+
border-radius: var(--skdx-radius-lg);
|
|
45
|
+
box-shadow: var(--skdx-shadow-md);
|
|
46
|
+
padding: var(--skdx-space-4);
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## The theme contract
|
|
51
|
+
|
|
52
|
+
**A theme is colors.** The type scale, spacing, radii, shadow geometry and motion are identical
|
|
53
|
+
in all 38 bundled themes, so they aren't part of a theme at all — they're the *foundation*,
|
|
54
|
+
exported once and emitted at `:root` by `foundationToCss()`.
|
|
55
|
+
|
|
56
|
+
| Group | Type | Contents |
|
|
57
|
+
| --------------------------------------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
58
|
+
| `colors.primary` / `neutral` / `success` / `warning` / `danger` | `ColorScale` | 11-step scales, `50` (lightest) → `950` (darkest) |
|
|
59
|
+
| `colors.semantic` | `SemanticColors` | Purpose-driven colors: `background`, `surface`, `surfaceHover`, `overlay`, `text`, `textMuted`, `textInverted`, `border`, `borderStrong`, `focusRing` |
|
|
60
|
+
| `shadow` | `ThemeShadowColor` | The color half of the shared shadow geometry: `color` (an sRGB triple like `'2 6 23'`) and `strength` (a multiplier on the shared base alphas) |
|
|
61
|
+
|
|
62
|
+
Components should use the **semantic** colors (`colors.semantic.*`) wherever possible and reach into the raw scales only for accents — that is what lets one component tree re-brand cleanly across light and dark themes.
|
|
63
|
+
|
|
64
|
+
### The foundation
|
|
65
|
+
|
|
66
|
+
Imported as bare named exports, not read off a theme:
|
|
67
|
+
|
|
68
|
+
| Export | Type | Contents |
|
|
69
|
+
| ------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
70
|
+
| `typography` | `ThemeTypography` | `fontFamily`, `fontFamilyMono`, `fontSize` (`xs`–`3xl`), `fontWeight` (`regular`–`bold`), `lineHeight`, `letterSpacing` |
|
|
71
|
+
| `space` | `ThemeSpace` | Spacing steps `1`–`16` (`0.25rem`–`4rem`) |
|
|
72
|
+
| `radii` | `ThemeRadii` | `sm`, `md`, `lg`, `xl`, `full` |
|
|
73
|
+
| `shadows` | `ThemeShadows` | `sm`, `md`, `lg`, `overlay` — geometry only; each defers its color to `var(--skdx-shadow-color)` / `var(--skdx-shadow-strength)` |
|
|
74
|
+
| `motion` | `ThemeMotion` | `durationFast`/`Normal`/`Slow`, `easing`, plus the optional `easingExit`/`Steady`/`Linear` and the two staggers |
|
|
75
|
+
|
|
76
|
+
### The two escape hatches
|
|
77
|
+
|
|
78
|
+
A theme may optionally declare `typography` (just `fontFamily` / `fontFamilyMono`) and `motion`
|
|
79
|
+
(just the four base tokens). Declaring one *is* the deviation — there is no wrapper to opt into,
|
|
80
|
+
and they re-emit at the theme's own higher-specificity selector so `[data-skdx-theme="material-you"]`
|
|
81
|
+
beats `:root`.
|
|
82
|
+
|
|
83
|
+
This exists for the themes that impersonate a published design language, where mirroring that
|
|
84
|
+
language's own typeface and motion spec is the entire point: `material-you`, `fluent` and
|
|
85
|
+
`ant-daybreak` (plus their dark counterparts). Nothing else declares either.
|
|
86
|
+
|
|
87
|
+
All types are exported: `Theme`, `ThemeOverride`, `ThemeColors`, `ColorScale`, `SemanticColors`, `ThemeShadowColor`, `ThemeTypographyDeviation`, `ThemeMotionDeviation`, `ThemeTypography`, `ThemeSpace`, `ThemeRadii`, `ThemeShadows`, `ThemeMotion`.
|
|
88
|
+
|
|
89
|
+
## Built-in brands and themes
|
|
90
|
+
|
|
91
|
+
`defaultTheme` (name `skanda-light`) is the reference theme. On top of it, the package ships **nineteen brands, each with a complete light and dark theme** (thirty-eight themes total). A theme carries its own `mode: 'light' | 'dark'`, and the `brands` registry pairs the two themes per brand:
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
import { applyTheme, brands, getBrand, type ThemeColorMode } from '@skdx/tokens';
|
|
95
|
+
|
|
96
|
+
const nord = getBrand('nord')!; // { name, displayName, themes: { light, dark } }
|
|
97
|
+
const mode: ThemeColorMode = matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
98
|
+
applyTheme(nord.themes[mode]); // stamps data-skdx-theme="nord-dark|nord-light" + data-skdx-mode
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Brand and color mode are **independent dimensions**: the brand decides identity (hues, and for three themes type and motion), the mode decides light or dark appearance, and the resolved theme is an ordinary `Theme` — so `themeToCss` / `applyTheme` and every `--skdx-*` variable name work exactly as before. Store a user's brand preference and color-mode preference (`'light' | 'dark' | 'system'`) separately; resolve `'system'` via `prefers-color-scheme`, then apply `brand.themes[resolvedMode]`. `getBrandByThemeName('one-dark')` maps a persisted pre-brand theme name to its owning brand for migrations, and `defaultBrand` is `skanda`.
|
|
102
|
+
|
|
103
|
+
The original twenty-two themes are unchanged (names, exports, and light-mode values preserved); the sixteen `*Dark`/`*Light` counterparts were added so every brand covers both modes. Each counterpart is a `createTheme` override of its sibling, keeping the brand's ramps. Themes inspired by third-party palettes only use permissively licensed sources (MIT / MIT-X11) — see [THIRD-PARTY-NOTICES.md](./THIRD-PARTY-NOTICES.md):
|
|
104
|
+
|
|
105
|
+
| Export | Name | Character |
|
|
106
|
+
| ----------------- | ------------------- | ----------------------------------------------------------------------------------- |
|
|
107
|
+
| `skandaLight` | `skanda-light` | The default SkandaDX light theme (same values as `defaultTheme`) |
|
|
108
|
+
| `emeraldBrand` | `emerald-brand` | Fresh greens, soft mint surfaces, tight corners |
|
|
109
|
+
| `midnightBrand` | `midnight-brand` | Dark theme — violet actions on deep indigo surfaces |
|
|
110
|
+
| `graphiteBrand` | `graphite` | Monochrome, shadcn/ui-zinc spirit: near-black actions, quiet grays |
|
|
111
|
+
| `materialBrand` | `material-you` | Material Design 3 inspired: tonal purple, Roboto, M3's slower emphasized motion |
|
|
112
|
+
| `antBrand` | `ant-daybreak` | Ant Design inspired: daybreak blue, compact corners |
|
|
113
|
+
| `fluentBrand` | `fluent` | Microsoft Fluent 2 inspired: communication blue, Segoe UI |
|
|
114
|
+
| `chakraBrand` | `chakra-teal` | Chakra UI inspired: teal actions, blue focus ring |
|
|
115
|
+
| `nordDark` | `nord-dark` | Dark theme — polar-night surfaces, frost blue actions |
|
|
116
|
+
| `draculaDark` | `dracula` | Dark theme — purple actions on the classic `#282a36` |
|
|
117
|
+
| `catppuccinLatte` | `catppuccin-latte` | Catppuccin Latte inspired: warm off-white surfaces, saturated blue actions |
|
|
118
|
+
| `catppuccinMocha` | `catppuccin-mocha` | Dark theme — Catppuccin Mocha inspired pastels on `#1e1e2e` |
|
|
119
|
+
| `solarizedLight` | `solarized-light` | Solarized Light inspired: cream `#fdf6e3` background, `#268bd2` blue actions |
|
|
120
|
+
| `solarizedDark` | `solarized-dark` | Dark theme — Solarized Dark inspired, deep `#002b36` background |
|
|
121
|
+
| `gruvboxDark` | `gruvbox-dark` | Dark theme — Gruvbox inspired retro warm browns, cream text |
|
|
122
|
+
| `rosePine` | `rose-pine` | Dark theme — Rosé Pine inspired iris purple actions on `#191724` |
|
|
123
|
+
| `everforestDark` | `everforest-dark` | Dark theme — Everforest inspired sage green on forest surfaces |
|
|
124
|
+
| `oneDark` | `one-dark` | Dark theme — Atom One Dark inspired, blue actions on `#282c34` |
|
|
125
|
+
| `primerLight` | `primer-light` | GitHub Primer light mode inspired: white canvas, `#0969da` accent, 6px corners |
|
|
126
|
+
| `primerDark` | `primer-dark` | Dark theme — GitHub Primer dark mode inspired, `#0d1117` canvas |
|
|
127
|
+
| `cupcakeLight` | `cupcake-light` | daisyUI cupcake inspired: pastel teal actions, creamy surfaces, extra-round corners |
|
|
128
|
+
| `synthwaveDark` | `synthwave-dark` | Dark theme — daisyUI synthwave inspired neon pink on deep indigo |
|
|
129
|
+
| `skandaDark` | `skanda-dark` | Dark counterpart of `skanda-light` — Skanda blue on deep slate |
|
|
130
|
+
| `emeraldDark` | `emerald-dark` | Dark counterpart of `emerald-brand` — lighter emeralds on deep green |
|
|
131
|
+
| `midnightLight` | `midnight-light` | Light counterpart of `midnight-brand` — violet on white |
|
|
132
|
+
| `graphiteDark` | `graphite-dark` | Dark counterpart of `graphite` — shadcn-style inverted zinc actions |
|
|
133
|
+
| `materialDark` | `material-you-dark` | Dark counterpart of `material-you` — M3 dark surfaces |
|
|
134
|
+
| `antDark` | `ant-dark` | Dark counterpart of `ant-daybreak` — Ant dark algorithm surfaces |
|
|
135
|
+
| `fluentDark` | `fluent-dark` | Dark counterpart of `fluent` — Fluent 2 dark neutrals |
|
|
136
|
+
| `chakraDark` | `chakra-teal-dark` | Dark counterpart of `chakra-teal` — Chakra gray.800 surfaces |
|
|
137
|
+
| `nordLight` | `nord-light` | Light counterpart of `nord-dark` — Nord Snow Storm |
|
|
138
|
+
| `draculaLight` | `dracula-light` | Light counterpart of `dracula` — near-white `#f8f8f2` canvas |
|
|
139
|
+
| `gruvboxLight` | `gruvbox-light` | Light counterpart of `gruvbox-dark` — cream `#fbf1c7` retro warmth |
|
|
140
|
+
| `rosePineDawn` | `rose-pine-dawn` | Light counterpart of `rose-pine` — the Dawn variant |
|
|
141
|
+
| `everforestLight` | `everforest-light` | Light counterpart of `everforest-dark` — sage greens on `#fdf6e3` |
|
|
142
|
+
| `oneLight` | `one-light` | Light counterpart of `one-dark` — Atom One Light |
|
|
143
|
+
| `cupcakeDark` | `cupcake-dark` | Dark counterpart of `cupcake-light` — pastel teal on deep plum |
|
|
144
|
+
| `synthwaveLight` | `synthwave-light` | Light counterpart of `synthwave-dark` — neon pink on pale lavender |
|
|
145
|
+
|
|
146
|
+
`themes` exports all thirty-eight as an array — handy for theme pickers and galleries:
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
import { themes, applyTheme } from '@skdx/tokens';
|
|
150
|
+
|
|
151
|
+
themes.map((t) => t.name); // ['skanda-light', 'emerald-brand', ...]
|
|
152
|
+
applyTheme(themes.find((t) => t.name === 'nord-dark')!);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Named imports from the package root (`import { nordDark } from '@skdx/tokens'`) already tree-shake in any modern bundler (Vite, Rollup, esbuild, Webpack 5 production) since the package is marked `sideEffects: false`. If you want a theme's data included in your build regardless of bundler, import it from its own subpath instead — each theme also ships as an individual entry point, matching its source filename in `src/themes/`:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
import { nordDark } from '@skdx/tokens/themes/NordDark';
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Creating your own theme
|
|
162
|
+
|
|
163
|
+
### Override the default with `createTheme`
|
|
164
|
+
|
|
165
|
+
`createTheme(name, override, base?)` deep-merges a partial override (`ThemeOverride`) into a base theme (`defaultTheme` unless you pass another) and returns a complete `Theme`. You only specify what changes:
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
import { createTheme } from '@skdx/tokens';
|
|
169
|
+
|
|
170
|
+
const acmeBrand = createTheme('acme-brand', {
|
|
171
|
+
colors: {
|
|
172
|
+
primary: { 500: '#e11d48', 600: '#be123c' }, // partial scale override is fine
|
|
173
|
+
semantic: { focusRing: '#e11d48' },
|
|
174
|
+
},
|
|
175
|
+
shadow: { strength: '1.4' }, // a touch heavier than the reference tint
|
|
176
|
+
});
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Write a full theme by hand
|
|
180
|
+
|
|
181
|
+
Since a theme is plain data, you can also author one from scratch (or copy one of the files in `src/themes/` as a starting point) and type it as `Theme` — the compiler guarantees no token is missing:
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
import type { Theme } from '@skdx/tokens';
|
|
185
|
+
|
|
186
|
+
export const myTheme: Theme = { name: 'my-theme', colors: {/* ... */} /* ... */ };
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Rendering themes to CSS
|
|
190
|
+
|
|
191
|
+
### `applyTheme(theme, element?)` — runtime
|
|
192
|
+
|
|
193
|
+
Sets all variables as inline styles on `element` (default `document.documentElement`) and sets `data-skdx-theme="<name>"` on it. Ideal for live previews and instant theme switching — no stylesheet involved.
|
|
194
|
+
|
|
195
|
+
### `themeToCss(theme, options?)` — CSS string
|
|
196
|
+
|
|
197
|
+
Renders a theme as a CSS rule, ready to inject into a `<style>` tag or write to a file at build time:
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
import { themeToCss, nordDark } from '@skdx/tokens';
|
|
201
|
+
|
|
202
|
+
themeToCss(nordDark);
|
|
203
|
+
// [data-skdx-theme="nord-dark"] {
|
|
204
|
+
// --skdx-color-primary-50: #eceff4;
|
|
205
|
+
// ... (104 variables)
|
|
206
|
+
// }
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
By default variables are scoped to `[data-skdx-theme="<name>"]`, so multiple themes can coexist in one stylesheet and you switch by flipping one attribute:
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
const style = document.createElement('style');
|
|
213
|
+
style.textContent = themes.map((t) => themeToCss(t)).join('\n');
|
|
214
|
+
document.head.appendChild(style);
|
|
215
|
+
|
|
216
|
+
document.documentElement.dataset.skdxTheme = 'dracula-dark'; // switch theme
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Pass `{ selector: ':root' }` to scope a single theme globally instead:
|
|
220
|
+
|
|
221
|
+
```ts
|
|
222
|
+
themeToCss(defaultTheme, { selector: ':root' });
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### `themeToCssVars(theme)` — flat variable map
|
|
226
|
+
|
|
227
|
+
Returns the raw `Record<string, string>` of variable names to values (`{ '--skdx-color-primary-500': '#3d6eef', ... }`). Useful for CSS-in-JS style objects or React inline styles:
|
|
228
|
+
|
|
229
|
+
```tsx
|
|
230
|
+
<div style={themeToCssVars(emeraldBrand)}>...</div>
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Non-themed foundation tokens
|
|
234
|
+
|
|
235
|
+
The type scale, spacing, radii, shadow geometry and motion — plus stacking order, focus-ring
|
|
236
|
+
geometry, border thicknesses and the two structural opacities — aren't per-brand visual choices the
|
|
237
|
+
way color is. Every theme should behave the same way, so they're exported once as plain constants
|
|
238
|
+
rather than duplicated into all 38 `Theme` objects:
|
|
239
|
+
|
|
240
|
+
```ts
|
|
241
|
+
import { typography, space, radii, zIndex, focusRing, borderWidth, opacity, breakpoints, foundationToCss } from '@skdx/tokens';
|
|
242
|
+
|
|
243
|
+
typography.fontSize.md; // '1rem'
|
|
244
|
+
space['4']; // '1rem'
|
|
245
|
+
radii.md; // '0.5rem'
|
|
246
|
+
zIndex.overlay; // 30 — coordinate Dialog/Popover backdrop stacking against this scale
|
|
247
|
+
focusRing.width; // '2px'
|
|
248
|
+
borderWidth.thin; // '1px'
|
|
249
|
+
opacity.disabled; // '0.5'
|
|
250
|
+
breakpoints.lg; // 1024 (a number — see below)
|
|
251
|
+
|
|
252
|
+
// Inject once. Without it the shared half of the --skdx-* surface does not exist.
|
|
253
|
+
document.head.appendChild(Object.assign(document.createElement('style'), { textContent: foundationToCss() }));
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
`zIndex` scale (low → high): `base`, `dropdown`, `sticky`, `overlay`, `modal`, `popover`, `toast`, `max`.
|
|
257
|
+
`overlay` is a modal's scrim and `modal` the surface on top of it, so a `popover` opened from inside
|
|
258
|
+
a dialog still renders above it. `max` is the escape hatch for the one thing that must sit above
|
|
259
|
+
everything (a debug overlay, an "app is offline" banner) so app code never has to invent a bigger number.
|
|
260
|
+
|
|
261
|
+
`borderWidth` is `thin`/`thick`/`thicker` (1/2/4px) — a hairline, an emphasis weight, and a heavy
|
|
262
|
+
structural rule. `opacity` is `disabled` and `scrim` only: deliberately not a 0–100 ramp, since an
|
|
263
|
+
arbitrary ramp invents decisions nobody made while these two are real, repeated choices.
|
|
264
|
+
|
|
265
|
+
`breakpoints` is a **TypeScript export only** — `foundationToCss()` does not emit it. A custom
|
|
266
|
+
property can't be used in a `@media` condition (`@media (min-width: var(--x))` is invalid CSS), so a
|
|
267
|
+
`--skdx-breakpoint-*` variable would be a token that looks usable and isn't. Read it from JS, or inline
|
|
268
|
+
the number in your own build step.
|
|
269
|
+
|
|
270
|
+
## Following the system color mode
|
|
271
|
+
|
|
272
|
+
`watchSystemMode()` applies a brand's light or dark theme from `prefers-color-scheme` and re-applies
|
|
273
|
+
it whenever the OS preference flips. It is browser-only — call it from a mounted effect — and returns
|
|
274
|
+
an unsubscribe function:
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
import { watchSystemMode } from '@skdx/tokens';
|
|
278
|
+
|
|
279
|
+
const stop = watchSystemMode({ brand: 'nord', persist: true }); // persists 'light'/'dark' to localStorage
|
|
280
|
+
// on unmount:
|
|
281
|
+
stop();
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Preventing a flash of the wrong theme (SSR)
|
|
285
|
+
|
|
286
|
+
In a server-rendered app the first paint happens before any JavaScript module runs, so a dark-mode
|
|
287
|
+
visitor sees a flash of the light theme. `getThemeInitScript()` returns a small blocking snippet that
|
|
288
|
+
reads the persisted brand/mode, resolves `'system'` through `prefers-color-scheme`, and stamps
|
|
289
|
+
`data-skdx-theme` / `data-skdx-mode` on `<html>` before first paint. The brand → theme-name table is
|
|
290
|
+
baked into the returned string, so the snippet needs nothing at runtime.
|
|
291
|
+
|
|
292
|
+
It returns **bare JavaScript** (no `<script>` wrapper) so each framework can inject it its own way,
|
|
293
|
+
and it only sets attributes — the page's CSS must already contain a `[data-skdx-theme="…"]` block per
|
|
294
|
+
theme (see `themeToCss`).
|
|
295
|
+
|
|
296
|
+
```tsx
|
|
297
|
+
// Next.js — app/layout.tsx
|
|
298
|
+
<head>
|
|
299
|
+
<script dangerouslySetInnerHTML={{ __html: getThemeInitScript() }} />
|
|
300
|
+
</head>
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
```ts
|
|
304
|
+
// Nuxt — nuxt.config.ts
|
|
305
|
+
app: { head: { script: [{ innerHTML: getThemeInitScript(), tagPosition: 'head' }] } }
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
```html
|
|
309
|
+
<!-- SvelteKit — src/app.html; replace the placeholder from a Vite plugin at build time -->
|
|
310
|
+
<head>
|
|
311
|
+
%sveltekit.head%
|
|
312
|
+
<script>%skdx.themeInit%</script>
|
|
313
|
+
</head>
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
```astro
|
|
317
|
+
<!-- Astro — src/layouts/Base.astro -->
|
|
318
|
+
<script is:inline set:html={getThemeInitScript()} />
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Storage keys default to `skdx-brand` and `skdx-mode` (exported as `BRAND_STORAGE_KEY` /
|
|
322
|
+
`MODE_STORAGE_KEY`) and are overridable via `getThemeInitScript({ brandKey, modeKey, fallbackBrand })`.
|
|
323
|
+
|
|
324
|
+
## Validating contrast
|
|
325
|
+
|
|
326
|
+
`contrastRatio(hexA, hexB)` computes the WCAG relative-luminance contrast ratio between two colors
|
|
327
|
+
— useful for a theme builder to warn on an inaccessible custom theme before it ships:
|
|
328
|
+
|
|
329
|
+
```ts
|
|
330
|
+
import { contrastRatio } from '@skdx/tokens';
|
|
331
|
+
|
|
332
|
+
contrastRatio(theme.colors.semantic.text, theme.colors.semantic.background) >= 4.5; // WCAG AA body text
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**Known gap:** `colors.semantic.textInverted` (body text meant for use on a filled `primary-600`
|
|
336
|
+
background, e.g. a solid button's label) currently falls below the 4.5:1 AA threshold in 10 of the
|
|
337
|
+
22 bundled themes (`emerald-brand`, `dracula`, `solarized-light`, `solarized-dark`, `gruvbox-dark`,
|
|
338
|
+
`rose-pine`, `everforest-dark`, `one-dark`, `cupcake-light`, `synthwave-dark`) — their `primary-600`
|
|
339
|
+
swatch isn't dark/light enough for the paired `textInverted` value. This is tracked explicitly in
|
|
340
|
+
`src/utils/contrast.test.ts` (not silently skipped) pending a color pass on those themes' primary
|
|
341
|
+
scales; `cupcake-light`'s `focusRing` also falls short of the 3:1 non-text threshold.
|
|
342
|
+
|
|
343
|
+
## CSS variable reference
|
|
344
|
+
|
|
345
|
+
Every variable is prefixed `--skdx-`. The names are unchanged by the colors-only split — only which
|
|
346
|
+
of the two blocks declares them moved.
|
|
347
|
+
|
|
348
|
+
From a `Theme`, at `[data-skdx-theme="…"]`:
|
|
349
|
+
|
|
350
|
+
| Theme path | CSS variable |
|
|
351
|
+
| ------------------------------ | ------------------------------------ |
|
|
352
|
+
| `colors.primary[500]` | `--skdx-color-primary-500` |
|
|
353
|
+
| `colors.semantic.surfaceHover` | `--skdx-color-semantic-surface-hover` |
|
|
354
|
+
| `shadow.color` | `--skdx-shadow-color` |
|
|
355
|
+
| `shadow.strength` | `--skdx-shadow-strength` |
|
|
356
|
+
|
|
357
|
+
From the foundation, at `:root`:
|
|
358
|
+
|
|
359
|
+
| Foundation path | CSS variable |
|
|
360
|
+
| --------------------------- | -------------------------------- |
|
|
361
|
+
| `typography.fontFamily` | `--skdx-font-family` |
|
|
362
|
+
| `typography.fontSize.md` | `--skdx-font-size-md` |
|
|
363
|
+
| `typography.fontWeight.semibold` | `--skdx-font-weight-semibold`|
|
|
364
|
+
| `typography.lineHeight.tight` | `--skdx-font-line-height-tight` |
|
|
365
|
+
| `typography.letterSpacing.wide` | `--skdx-font-letter-spacing-wide` |
|
|
366
|
+
| `space[4]` | `--skdx-space-4` |
|
|
367
|
+
| `radii.md` | `--skdx-radius-md` |
|
|
368
|
+
| `shadows.overlay` | `--skdx-shadow-overlay` |
|
|
369
|
+
| `motion.durationFast` | `--skdx-motion-duration-fast` |
|
|
370
|
+
| `motion.easing` | `--skdx-motion-easing` |
|
|
371
|
+
|
|
372
|
+
The pattern: section prefix (`color`, `font`, `space`, `radius`, `shadow`, `motion`) followed by the kebab-cased path within that group. When the path already starts with the section prefix (typography's `fontSize`, `fontFamily`, `fontWeight`), the prefix is not doubled — `--skdx-font-size-md`, not `--skdx-font-font-size-md`.
|
|
373
|
+
|
|
374
|
+
The two blocks never declare the same variable, so you can inject them in either order — except
|
|
375
|
+
for the six deviating themes, which re-declare `--skdx-font-family` / `--skdx-motion-*` on purpose
|
|
376
|
+
and win on specificity regardless of order.
|
|
377
|
+
|
|
378
|
+
A shadow resolves across both blocks:
|
|
379
|
+
|
|
380
|
+
```css
|
|
381
|
+
/* :root, from foundationToCss() */
|
|
382
|
+
--skdx-shadow-md: 0 4px 6px -1px rgb(var(--skdx-shadow-color) / calc(0.1 * var(--skdx-shadow-strength))), …;
|
|
383
|
+
/* [data-skdx-theme="nord-dark"], from themeToCss() */
|
|
384
|
+
--skdx-shadow-color: 0 0 0;
|
|
385
|
+
--skdx-shadow-strength: 4.7;
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
Custom-property substitution is lazy, so `--skdx-shadow-md` picks up whichever theme is active on the
|
|
389
|
+
element that uses it. `strength: 1` reproduces the original light-theme shadows exactly; dark themes
|
|
390
|
+
run around `5`. It's a look, not a measurement — tune it by eye.
|
|
391
|
+
|
|
392
|
+
## API summary
|
|
393
|
+
|
|
394
|
+
| Export | Kind | Description |
|
|
395
|
+
| ------------------------------------- | ---------------- | ----------------------------------------------------------------- |
|
|
396
|
+
| `defaultTheme` | `Theme` | The reference theme (`skanda-light`) |
|
|
397
|
+
| `createTheme(name, override?, base?)` | function | Deep-merge a partial override into a base theme |
|
|
398
|
+
| `themeToCssVars(theme)` | function | Theme → flat `--skdx-*` variable map |
|
|
399
|
+
| `themeToCss(theme, options?)` | function | Theme → CSS rule string (scoped to `[data-skdx-theme]` by default) |
|
|
400
|
+
| `applyTheme(theme, element?)` | function | Set variables inline on an element at runtime |
|
|
401
|
+
| `skandaLight` … `synthwaveDark` | `Theme` × 38 | Built-in brand themes (19 brands × light/dark) |
|
|
402
|
+
| `watchSystemMode(options?)` | function | Apply a brand's theme from `prefers-color-scheme`, and on change |
|
|
403
|
+
| `getThemeInitScript(options?)` | function | Pre-paint snippet that stamps `data-skdx-theme`/`-mode` (no FOUC) |
|
|
404
|
+
| `zIndex` | `ZIndexScale` | Non-themed overlay stacking-order scale (`base`…`max`) |
|
|
405
|
+
| `focusRing` | `FocusRingScale` | Non-themed focus-ring `width`/`offset` |
|
|
406
|
+
| `borderWidth` | `BorderWidthScale` | Non-themed `thin`/`thick`/`thicker` border thicknesses |
|
|
407
|
+
| `opacity` | `OpacityScale` | Non-themed `disabled` and `scrim` opacities |
|
|
408
|
+
| `breakpoints` | `BreakpointScale` | Viewport widths in px — TS only, never emitted as CSS vars |
|
|
409
|
+
| `typography` / `space` / `radii` / `shadows` / `motion` | constants | The shared scales every theme inherits — not per-theme |
|
|
410
|
+
| `foundationToCss()` | function | The shared scales + `zIndex`/`focusRing`/`borderWidth`/`opacity` → a `:root` CSS block, plus its reduced-motion override |
|
|
411
|
+
| `foundationToCssVars()` | function | The same, as a flat `--skdx-*` variable map |
|
|
412
|
+
| `contrastRatio(hexA, hexB)` | function | WCAG relative-luminance contrast ratio between two colors |
|
|
413
|
+
| `themes` | `Theme[]` | All built-in themes |
|
|
414
|
+
| `Theme`, `ThemeOverride`, … | types | The full theme contract |
|
|
415
|
+
|
|
416
|
+
## Package layout
|
|
417
|
+
|
|
418
|
+
```text
|
|
419
|
+
packages/tokens/
|
|
420
|
+
├── src/
|
|
421
|
+
│ ├── utils/
|
|
422
|
+
│ │ ├── theme.ts Theme contract (all interfaces)
|
|
423
|
+
│ │ └── toCss.ts themeToCssVars, themeToCss, applyTheme
|
|
424
|
+
│ ├── themes/
|
|
425
|
+
│ │ ├── DefaultTheme.ts defaultTheme + createTheme
|
|
426
|
+
│ │ ├── SkandaLight.ts one file per brand theme,
|
|
427
|
+
│ │ ├── … every value fully spelled out
|
|
428
|
+
│ │ └── index.ts barrel + `themes` array
|
|
429
|
+
│ └── index.ts public API
|
|
430
|
+
└── dist/ built ESM + CJS + .d.ts (tsup)
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
## Development
|
|
434
|
+
|
|
435
|
+
```sh
|
|
436
|
+
pnpm --filter @skdx/tokens build # tsup → dist/
|
|
437
|
+
pnpm --filter @skdx/tokens test # vitest
|
|
438
|
+
pnpm --filter @skdx/tokens typecheck # tsc --noEmit
|
|
439
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--skdx-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--skdx-font-family-mono: "SF Mono", SFMono-Regular, ui-monospace, Menlo, Consolas, monospace;--skdx-font-size-xs: .75rem;--skdx-font-size-sm: .875rem;--skdx-font-size-md: 1rem;--skdx-font-size-lg: 1.125rem;--skdx-font-size-xl: 1.25rem;--skdx-font-size-2xl: 1.5rem;--skdx-font-size-3xl: 1.875rem;--skdx-font-weight-regular: 400;--skdx-font-weight-medium: 500;--skdx-font-weight-semibold: 600;--skdx-font-weight-bold: 700;--skdx-font-line-height-tight: 1.25;--skdx-font-line-height-snug: 1.43;--skdx-font-line-height-normal: 1.5;--skdx-font-line-height-relaxed: 1.75;--skdx-font-letter-spacing-tight: -.015em;--skdx-font-letter-spacing-normal: 0em;--skdx-font-letter-spacing-wide: .025em;--skdx-font-letter-spacing-wider: .05em;--skdx-space-1: .25rem;--skdx-space-2: .5rem;--skdx-space-3: .75rem;--skdx-space-4: 1rem;--skdx-space-5: 1.25rem;--skdx-space-6: 1.5rem;--skdx-space-8: 2rem;--skdx-space-10: 2.5rem;--skdx-space-12: 3rem;--skdx-space-16: 4rem;--skdx-radius-sm: .25rem;--skdx-radius-inner: .375rem;--skdx-radius-md: .5rem;--skdx-radius-lg: .75rem;--skdx-radius-xl: 1rem;--skdx-radius-full: 9999px;--skdx-shadow-sm: 0 1px 2px 0 rgb(var(--skdx-shadow-color) / calc(.05 * var(--skdx-shadow-strength)));--skdx-shadow-md: 0 4px 6px -1px rgb(var(--skdx-shadow-color) / calc(.1 * var(--skdx-shadow-strength))), 0 2px 4px -2px rgb(var(--skdx-shadow-color) / calc(.1 * var(--skdx-shadow-strength)));--skdx-shadow-lg: 0 10px 15px -3px rgb(var(--skdx-shadow-color) / calc(.1 * var(--skdx-shadow-strength))), 0 4px 6px -4px rgb(var(--skdx-shadow-color) / calc(.1 * var(--skdx-shadow-strength)));--skdx-shadow-overlay: 0 25px 50px -12px rgb(var(--skdx-shadow-color) / calc(.25 * var(--skdx-shadow-strength)));--skdx-motion-duration-instant: 0ms;--skdx-motion-duration-fast: .1s;--skdx-motion-duration-normal: .2s;--skdx-motion-duration-slow: .3s;--skdx-motion-easing: cubic-bezier(.16, 1, .3, 1);--skdx-motion-easing-exit: cubic-bezier(.4, 0, 1, 1);--skdx-motion-easing-steady: cubic-bezier(.4, 0, .2, 1);--skdx-motion-easing-linear: linear;--skdx-motion-stagger-tight: 4ms;--skdx-motion-stagger-loose: 40ms;--skdx-z-index-base: 0;--skdx-z-index-dropdown: 10;--skdx-z-index-sticky: 20;--skdx-z-index-overlay: 30;--skdx-z-index-modal: 35;--skdx-z-index-popover: 40;--skdx-z-index-toast: 50;--skdx-z-index-max: 9999;--skdx-focus-ring-width: 2px;--skdx-focus-ring-offset: 2px;--skdx-focus-ring-offset-inset: calc(-1 * var(--skdx-focus-ring-width));--skdx-border-width-thin: 1px;--skdx-border-width-thick: 2px;--skdx-border-width-thicker: 4px;--skdx-opacity-disabled: .5;--skdx-opacity-scrim: .6;--skdx-control-height-sm: 1.875rem;--skdx-control-height-md: 2.25rem;--skdx-control-height-lg: 2.625rem;--skdx-control-height-compact: 2rem;--skdx-control-padding-sm: .625rem;--skdx-control-padding-md: var(--skdx-space-3);--skdx-control-padding-lg: var(--skdx-space-4);--skdx-control-gap-sm: var(--skdx-space-1);--skdx-control-gap-md: var(--skdx-space-2);--skdx-control-gap-lg: var(--skdx-space-2);--skdx-icon-size-sm: 1rem;--skdx-icon-size-md: 1.25rem;--skdx-icon-size-lg: 1.5rem;--skdx-indicator-size-sm: 1rem;--skdx-indicator-size-md: 1.25rem;--skdx-indicator-size-lg: 1.5rem;--skdx-item-height-sm: 1.75rem;--skdx-item-height-md: 2.25rem;--skdx-item-height-lg: 2.5rem;--skdx-item-gap: 2px;--skdx-overlay-padding: var(--skdx-space-1);--skdx-overlay-radius: var(--skdx-radius-lg);--skdx-overlay-min-width: 7.5rem;--skdx-field-gap: var(--skdx-space-1);--skdx-field-label-gap: var(--skdx-space-1);--skdx-target-min: 24px}@media(prefers-reduced-motion:reduce){:root{--skdx-motion-duration-instant: 0ms;--skdx-motion-duration-fast: 0ms;--skdx-motion-duration-normal: 0ms;--skdx-motion-duration-slow: 0ms;--skdx-motion-stagger-tight: 0ms;--skdx-motion-stagger-loose: 0ms}}@media(pointer:coarse){:root{--skdx-control-height-sm: 2.25rem;--skdx-control-height-md: 2.75rem;--skdx-control-height-lg: 3rem;--skdx-control-height-compact: 2.75rem;--skdx-item-height-sm: 2.25rem;--skdx-item-height-md: 2.75rem;--skdx-item-height-lg: 3rem;--skdx-target-min: 44px}}:root{--skdx-color-surface-inverse: var(--skdx-color-neutral-900);--skdx-color-text-on-inverse: var(--skdx-color-neutral-50);--skdx-color-surface-page: var(--skdx-color-semantic-background);--skdx-color-surface-default: var(--skdx-color-semantic-surface);--skdx-color-surface-hover: var(--skdx-color-semantic-surface-hover);--skdx-color-surface-raised: var(--skdx-color-semantic-background);--skdx-color-surface-sunken: var(--skdx-color-semantic-surface);--skdx-color-surface-pressed: var(--skdx-color-neutral-200);--skdx-color-surface-selected: var(--skdx-color-primary-50);--skdx-color-surface-disabled: var(--skdx-color-neutral-100);--skdx-color-surface-overlay: var(--skdx-color-semantic-overlay);--skdx-color-text-default: var(--skdx-color-semantic-text);--skdx-color-text-muted: var(--skdx-color-semantic-text-muted);--skdx-color-text-on-accent: var(--skdx-color-semantic-text-inverted);--skdx-color-text-accent: var(--skdx-color-primary-700);--skdx-color-text-disabled: var(--skdx-color-neutral-600);--skdx-color-text-placeholder: var(--skdx-color-semantic-text-muted);--skdx-color-text-danger: var(--skdx-color-danger-700);--skdx-color-text-success: var(--skdx-color-success-800);--skdx-color-text-warning: var(--skdx-color-warning-900);--skdx-color-text-info: var(--skdx-color-primary-700);--skdx-color-border-default: var(--skdx-color-semantic-border);--skdx-color-border-strong: var(--skdx-color-semantic-border-strong);--skdx-color-border-subtle: var(--skdx-color-neutral-200);--skdx-color-border-accent: var(--skdx-color-primary-600);--skdx-color-border-disabled: var(--skdx-color-neutral-200);--skdx-color-border-danger: var(--skdx-color-danger-600);--skdx-color-border-success: var(--skdx-color-success-600);--skdx-color-border-warning: var(--skdx-color-warning-600);--skdx-color-action-primary-bg: var(--skdx-color-primary-600);--skdx-color-action-primary-bg-hover: var(--skdx-color-primary-600);--skdx-color-action-primary-bg-pressed: var(--skdx-color-primary-600);--skdx-color-action-primary-border-hover: var(--skdx-color-primary-800);--skdx-color-action-primary-text: var(--skdx-color-semantic-text-inverted);--skdx-color-action-primary-border: var(--skdx-color-primary-600);--skdx-color-action-secondary-bg: var(--skdx-color-semantic-surface);--skdx-color-action-secondary-bg-hover: var(--skdx-color-semantic-surface-hover);--skdx-color-action-secondary-bg-pressed: var(--skdx-color-neutral-300);--skdx-color-action-secondary-text: var(--skdx-color-semantic-text);--skdx-color-action-secondary-border: var(--skdx-color-semantic-border);--skdx-color-action-outline-text: var(--skdx-color-semantic-text);--skdx-color-action-outline-border: var(--skdx-color-semantic-border-strong);--skdx-color-action-outline-bg-hover: var(--skdx-color-semantic-surface-hover);--skdx-color-action-outline-bg-pressed: var(--skdx-color-neutral-200);--skdx-color-action-ghost-text: var(--skdx-color-semantic-text);--skdx-color-action-ghost-bg-hover: var(--skdx-color-semantic-surface-hover);--skdx-color-action-ghost-bg-pressed: var(--skdx-color-neutral-200);--skdx-color-action-danger-bg: var(--skdx-color-danger-700);--skdx-color-action-danger-bg-hover: var(--skdx-color-danger-800);--skdx-color-action-danger-bg-pressed: var(--skdx-color-danger-900);--skdx-color-action-danger-text: var(--skdx-color-danger-50);--skdx-color-action-danger-border: var(--skdx-color-danger-700);--skdx-color-action-disabled-bg: var(--skdx-color-neutral-100);--skdx-color-action-disabled-text: var(--skdx-color-neutral-700);--skdx-color-action-disabled-border: var(--skdx-color-neutral-200);--skdx-color-field-bg: var(--skdx-color-semantic-background);--skdx-color-field-bg-hover: var(--skdx-color-semantic-surface-hover);--skdx-color-field-bg-disabled: var(--skdx-color-neutral-100);--skdx-color-field-bg-readonly: var(--skdx-color-neutral-50);--skdx-color-field-border: var(--skdx-color-semantic-border-strong);--skdx-color-field-border-hover: var(--skdx-color-neutral-500);--skdx-color-field-border-focus: var(--skdx-color-primary-600);--skdx-color-field-border-invalid: var(--skdx-color-danger-700);--skdx-color-field-text: var(--skdx-color-semantic-text);--skdx-color-selection-bg: var(--skdx-color-primary-600);--skdx-color-selection-bg-hover: var(--skdx-color-primary-600);--skdx-color-selection-mark: var(--skdx-color-semantic-text-inverted);--skdx-color-highlight-bg: var(--skdx-color-semantic-surface-hover);--skdx-color-highlight-text: var(--skdx-color-semantic-text);--skdx-color-status-info-bg: var(--skdx-color-primary-50);--skdx-color-status-info-border: var(--skdx-color-primary-200);--skdx-color-status-info-text: var(--skdx-color-primary-800);--skdx-color-status-info-icon: var(--skdx-color-primary-600);--skdx-color-status-success-bg: var(--skdx-color-success-50);--skdx-color-status-success-border: var(--skdx-color-success-200);--skdx-color-status-success-text: var(--skdx-color-success-800);--skdx-color-status-success-icon: var(--skdx-color-success-600);--skdx-color-status-warning-bg: var(--skdx-color-warning-50);--skdx-color-status-warning-border: var(--skdx-color-warning-200);--skdx-color-status-warning-text: var(--skdx-color-warning-800);--skdx-color-status-warning-icon: var(--skdx-color-warning-600);--skdx-color-status-danger-bg: var(--skdx-color-danger-50);--skdx-color-status-danger-border: var(--skdx-color-danger-200);--skdx-color-status-danger-text: var(--skdx-color-danger-800);--skdx-color-status-danger-icon: var(--skdx-color-danger-600);--skdx-color-status-neutral-bg: var(--skdx-color-semantic-surface);--skdx-color-status-neutral-border: var(--skdx-color-semantic-border);--skdx-color-status-neutral-text: var(--skdx-color-semantic-text);--skdx-color-status-neutral-icon: var(--skdx-color-semantic-text-muted);--skdx-color-focus-ring: var(--skdx-color-semantic-focus-ring);--skdx-color-focus-ring-offset: var(--skdx-color-semantic-background);--skdx-color-separator: var(--skdx-color-semantic-border);--skdx-color-track: var(--skdx-color-neutral-100);--skdx-color-track-fill: var(--skdx-color-primary-600);--skdx-color-skeleton: var(--skdx-color-neutral-200);--skdx-color-skeleton-sheen: var(--skdx-color-neutral-100)}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var m=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var g=(s,o)=>{for(var h in o)m(s,h,{get:o[h],enumerable:!0})},y=(s,o,h,d)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of T(o))!k.call(s,n)&&n!==h&&m(s,n,{get:()=>o[n],enumerable:!(d=l(o,n))||d.enumerable});return s};var D=s=>y(m({},"__esModule",{value:!0}),s);var C={};g(C,{BRAND_STORAGE_KEY:()=>t.BRAND_STORAGE_KEY,MODE_STORAGE_KEY:()=>t.MODE_STORAGE_KEY,aliasesToCss:()=>r.aliasesToCss,aliasesToCssVars:()=>r.aliasesToCssVars,antBrand:()=>e.antBrand,antDark:()=>e.antDark,applyTheme:()=>i.applyTheme,borderWidth:()=>a.borderWidth,brands:()=>e.brands,breakpoints:()=>a.breakpoints,catppuccinLatte:()=>e.catppuccinLatte,catppuccinMocha:()=>e.catppuccinMocha,chakraBrand:()=>e.chakraBrand,chakraDark:()=>e.chakraDark,coarsePointerToCssVars:()=>a.coarsePointerToCssVars,colorAliases:()=>r.colorAliases,contrastRatio:()=>c.contrastRatio,controls:()=>a.controls,controlsCoarse:()=>a.controlsCoarse,createTheme:()=>p.createTheme,cupcakeDark:()=>e.cupcakeDark,cupcakeLight:()=>e.cupcakeLight,darkAliasesToCss:()=>r.darkAliasesToCss,darkColorAliases:()=>r.darkColorAliases,defaultBrand:()=>e.defaultBrand,defaultTheme:()=>p.defaultTheme,draculaDark:()=>e.draculaDark,draculaLight:()=>e.draculaLight,emeraldBrand:()=>e.emeraldBrand,emeraldDark:()=>e.emeraldDark,everforestDark:()=>e.everforestDark,everforestLight:()=>e.everforestLight,fluentBrand:()=>e.fluentBrand,fluentDark:()=>e.fluentDark,focusRing:()=>a.focusRing,foundationToCss:()=>a.foundationToCss,foundationToCssVars:()=>a.foundationToCssVars,getBrand:()=>e.getBrand,getBrandByThemeName:()=>e.getBrandByThemeName,getThemeInitScript:()=>t.getThemeInitScript,graphiteBrand:()=>e.graphiteBrand,graphiteDark:()=>e.graphiteDark,gruvboxDark:()=>e.gruvboxDark,gruvboxLight:()=>e.gruvboxLight,materialBrand:()=>e.materialBrand,materialDark:()=>e.materialDark,midnightBrand:()=>e.midnightBrand,midnightLight:()=>e.midnightLight,motion:()=>a.motion,nordDark:()=>e.nordDark,nordLight:()=>e.nordLight,oneDark:()=>e.oneDark,oneLight:()=>e.oneLight,opacity:()=>a.opacity,primerDark:()=>e.primerDark,primerLight:()=>e.primerLight,radii:()=>a.radii,rosePine:()=>e.rosePine,rosePineDawn:()=>e.rosePineDawn,shadows:()=>a.shadows,skandaDark:()=>e.skandaDark,skandaLight:()=>e.skandaLight,solarizedDark:()=>e.solarizedDark,solarizedLight:()=>e.solarizedLight,space:()=>a.space,synthwaveDark:()=>e.synthwaveDark,synthwaveLight:()=>e.synthwaveLight,themeToCss:()=>i.themeToCss,themeToCssVars:()=>i.themeToCssVars,themes:()=>e.themes,typography:()=>a.typography,watchSystemMode:()=>t.watchSystemMode,zIndex:()=>a.zIndex});module.exports=D(C);var p=require("./themes/DefaultTheme.cjs"),i=require("./utils/toCss.cjs"),r=require("./utils/aliases.cjs"),a=require("./utils/foundation.cjs"),c=require("./utils/contrast.cjs"),t=require("./utils/mode.cjs"),e=require("./themes/index.cjs");0&&(module.exports={BRAND_STORAGE_KEY,MODE_STORAGE_KEY,aliasesToCss,aliasesToCssVars,antBrand,antDark,applyTheme,borderWidth,brands,breakpoints,catppuccinLatte,catppuccinMocha,chakraBrand,chakraDark,coarsePointerToCssVars,colorAliases,contrastRatio,controls,controlsCoarse,createTheme,cupcakeDark,cupcakeLight,darkAliasesToCss,darkColorAliases,defaultBrand,defaultTheme,draculaDark,draculaLight,emeraldBrand,emeraldDark,everforestDark,everforestLight,fluentBrand,fluentDark,focusRing,foundationToCss,foundationToCssVars,getBrand,getBrandByThemeName,getThemeInitScript,graphiteBrand,graphiteDark,gruvboxDark,gruvboxLight,materialBrand,materialDark,midnightBrand,midnightLight,motion,nordDark,nordLight,oneDark,oneLight,opacity,primerDark,primerLight,radii,rosePine,rosePineDawn,shadows,skandaDark,skandaLight,solarizedDark,solarizedLight,space,synthwaveDark,synthwaveLight,themeToCss,themeToCssVars,themes,typography,watchSystemMode,zIndex});
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { Theme, ThemeColorMode, ThemeOverride, ThemeColors, ColorScale, SemanticColors, ThemeTypography, ThemeSpace, ThemeRadii, ThemeControls, ThemeControlsCoarse, ThemeShadows, ThemeShadowColor, ThemeTypographyDeviation, ThemeMotionDeviation, ThemeMotion, } from './utils/theme.cjs';
|
|
2
|
+
export { defaultTheme, createTheme } from './themes/DefaultTheme.cjs';
|
|
3
|
+
export { themeToCss, themeToCssVars, applyTheme, type ThemeToCssOptions } from './utils/toCss.cjs';
|
|
4
|
+
export { aliasesToCss, aliasesToCssVars, colorAliases, darkAliasesToCss, darkColorAliases, } from './utils/aliases.cjs';
|
|
5
|
+
export { typography, space, radii, shadows, motion, zIndex, focusRing, borderWidth, opacity, breakpoints, controls, controlsCoarse, foundationToCss, foundationToCssVars, coarsePointerToCssVars, type ZIndexScale, type FocusRingScale, type BorderWidthScale, type OpacityScale, type BreakpointScale, } from './utils/foundation.cjs';
|
|
6
|
+
export { contrastRatio } from './utils/contrast.cjs';
|
|
7
|
+
export { watchSystemMode, getThemeInitScript, MODE_STORAGE_KEY, BRAND_STORAGE_KEY, type WatchSystemModeOptions, type ThemeInitScriptOptions, } from './utils/mode.cjs';
|
|
8
|
+
export { skandaLight, emeraldBrand, midnightBrand, graphiteBrand, materialBrand, antBrand, fluentBrand, chakraBrand, nordDark, draculaDark, catppuccinLatte, catppuccinMocha, solarizedLight, solarizedDark, gruvboxDark, rosePine, everforestDark, oneDark, primerLight, primerDark, cupcakeLight, synthwaveDark, skandaDark, emeraldDark, midnightLight, graphiteDark, materialDark, antDark, fluentDark, chakraDark, nordLight, draculaLight, gruvboxLight, rosePineDawn, everforestLight, oneLight, cupcakeDark, synthwaveLight, themes, brands, defaultBrand, getBrand, getBrandByThemeName, type Brand, } from './themes/index.cjs';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { Theme, ThemeColorMode, ThemeOverride, ThemeColors, ColorScale, SemanticColors, ThemeTypography, ThemeSpace, ThemeRadii, ThemeControls, ThemeControlsCoarse, ThemeShadows, ThemeShadowColor, ThemeTypographyDeviation, ThemeMotionDeviation, ThemeMotion, } from './utils/theme.js';
|
|
2
|
+
export { defaultTheme, createTheme } from './themes/DefaultTheme.js';
|
|
3
|
+
export { themeToCss, themeToCssVars, applyTheme, type ThemeToCssOptions } from './utils/toCss.js';
|
|
4
|
+
export { aliasesToCss, aliasesToCssVars, colorAliases, darkAliasesToCss, darkColorAliases, } from './utils/aliases.js';
|
|
5
|
+
export { typography, space, radii, shadows, motion, zIndex, focusRing, borderWidth, opacity, breakpoints, controls, controlsCoarse, foundationToCss, foundationToCssVars, coarsePointerToCssVars, type ZIndexScale, type FocusRingScale, type BorderWidthScale, type OpacityScale, type BreakpointScale, } from './utils/foundation.js';
|
|
6
|
+
export { contrastRatio } from './utils/contrast.js';
|
|
7
|
+
export { watchSystemMode, getThemeInitScript, MODE_STORAGE_KEY, BRAND_STORAGE_KEY, type WatchSystemModeOptions, type ThemeInitScriptOptions, } from './utils/mode.js';
|
|
8
|
+
export { skandaLight, emeraldBrand, midnightBrand, graphiteBrand, materialBrand, antBrand, fluentBrand, chakraBrand, nordDark, draculaDark, catppuccinLatte, catppuccinMocha, solarizedLight, solarizedDark, gruvboxDark, rosePine, everforestDark, oneDark, primerLight, primerDark, cupcakeLight, synthwaveDark, skandaDark, emeraldDark, midnightLight, graphiteDark, materialDark, antDark, fluentDark, chakraDark, nordLight, draculaLight, gruvboxLight, rosePineDawn, everforestLight, oneLight, cupcakeDark, synthwaveLight, themes, brands, defaultBrand, getBrand, getBrandByThemeName, type Brand, } from './themes/index.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defaultTheme as r,createTheme as o}from"./themes/DefaultTheme.js";import{themeToCss as s,themeToCssVars as i,applyTheme as n}from"./utils/toCss.js";import{aliasesToCss as p,aliasesToCssVars as m,colorAliases as d,darkAliasesToCss as c,darkColorAliases as l}from"./utils/aliases.js";import{typography as k,space as g,radii as y,shadows as D,motion as C,zIndex as f,focusRing as u,borderWidth as S,opacity as B,breakpoints as x,controls as L,controlsCoarse as v,foundationToCss as O,foundationToCssVars as w,coarsePointerToCssVars as M}from"./utils/foundation.js";import{contrastRatio as A}from"./utils/contrast.js";import{watchSystemMode as E,getThemeInitScript as I,MODE_STORAGE_KEY as V,BRAND_STORAGE_KEY as _}from"./utils/mode.js";import{skandaLight as P,emeraldBrand as W,midnightBrand as G,graphiteBrand as K,materialBrand as N,antBrand as Y,fluentBrand as F,chakraBrand as Z,nordDark as j,draculaDark as q,catppuccinLatte as H,catppuccinMocha as J,solarizedLight as Q,solarizedDark as U,gruvboxDark as X,rosePine as $,everforestDark as ee,oneDark as ae,primerLight as re,primerDark as oe,cupcakeLight as te,synthwaveDark as se,skandaDark as ie,emeraldDark as ne,midnightLight as he,graphiteDark as pe,materialDark as me,antDark as de,fluentDark as ce,chakraDark as le,nordLight as Te,draculaLight as ke,gruvboxLight as ge,rosePineDawn as ye,everforestLight as De,oneLight as Ce,cupcakeDark as fe,synthwaveLight as ue,themes as Se,brands as Be,defaultBrand as xe,getBrand as Le,getBrandByThemeName as ve}from"./themes/index.js";export{_ as BRAND_STORAGE_KEY,V as MODE_STORAGE_KEY,p as aliasesToCss,m as aliasesToCssVars,Y as antBrand,de as antDark,n as applyTheme,S as borderWidth,Be as brands,x as breakpoints,H as catppuccinLatte,J as catppuccinMocha,Z as chakraBrand,le as chakraDark,M as coarsePointerToCssVars,d as colorAliases,A as contrastRatio,L as controls,v as controlsCoarse,o as createTheme,fe as cupcakeDark,te as cupcakeLight,c as darkAliasesToCss,l as darkColorAliases,xe as defaultBrand,r as defaultTheme,q as draculaDark,ke as draculaLight,W as emeraldBrand,ne as emeraldDark,ee as everforestDark,De as everforestLight,F as fluentBrand,ce as fluentDark,u as focusRing,O as foundationToCss,w as foundationToCssVars,Le as getBrand,ve as getBrandByThemeName,I as getThemeInitScript,K as graphiteBrand,pe as graphiteDark,X as gruvboxDark,ge as gruvboxLight,N as materialBrand,me as materialDark,G as midnightBrand,he as midnightLight,C as motion,j as nordDark,Te as nordLight,ae as oneDark,Ce as oneLight,B as opacity,oe as primerDark,re as primerLight,y as radii,$ as rosePine,ye as rosePineDawn,D as shadows,ie as skandaDark,P as skandaLight,U as solarizedDark,Q as solarizedLight,g as space,se as synthwaveDark,ue as synthwaveLight,s as themeToCss,i as themeToCssVars,Se as themes,k as typography,E as watchSystemMode,f as zIndex};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var r=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var n=(e,f)=>{for(var d in f)r(e,d,{get:f[d],enumerable:!0})},s=(e,f,d,c)=>{if(f&&typeof f=="object"||typeof f=="function")for(let a of b(f))!o.call(e,a)&&a!==d&&r(e,a,{get:()=>f[a],enumerable:!(c=t(f,a))||c.enumerable});return e};var i=e=>s(r({},"__esModule",{value:!0}),e);var g={};n(g,{antBrand:()=>m});module.exports=i(g);var m={name:"ant-daybreak",mode:"light",colors:{primary:{50:"#e6f4ff",100:"#bae0ff",200:"#91caff",300:"#69b1ff",400:"#4096ff",500:"#1677ff",600:"#0958d9",700:"#003eb3",800:"#002c8c",900:"#001d66",950:"#001141"},neutral:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},success:{50:"#f6ffed",100:"#d9f7be",200:"#b7eb8f",300:"#95de64",400:"#73d13d",500:"#52c41a",600:"#389e0d",700:"#237804",800:"#135200",900:"#092b00",950:"#051f00"},warning:{50:"#fffbe6",100:"#fff1b8",200:"#ffe58f",300:"#ffd666",400:"#ffc53d",500:"#faad14",600:"#d48806",700:"#ad6800",800:"#874d00",900:"#613400",950:"#422400"},danger:{50:"#fff1f0",100:"#ffccc7",200:"#ffa39e",300:"#ff7875",400:"#ff4d4f",500:"#f5222d",600:"#cf1322",700:"#a8071a",800:"#820014",900:"#5c0011",950:"#3d000b"},semantic:{background:"#ffffff",surface:"#fafafa",surfaceHover:"#f5f5f5",overlay:"rgb(0 0 0 / 0.45)",text:"#1f1f1f",textMuted:"#737373",textInverted:"#ffffff",border:"#d9d9d9",borderStrong:"#919191",focusRing:"#1677ff"}},shadow:{color:"2 6 23",strength:"1"},motion:{easing:"cubic-bezier(0.645, 0.045, 0.355, 1)"}};0&&(module.exports={antBrand});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f={name:"ant-daybreak",mode:"light",colors:{primary:{50:"#e6f4ff",100:"#bae0ff",200:"#91caff",300:"#69b1ff",400:"#4096ff",500:"#1677ff",600:"#0958d9",700:"#003eb3",800:"#002c8c",900:"#001d66",950:"#001141"},neutral:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},success:{50:"#f6ffed",100:"#d9f7be",200:"#b7eb8f",300:"#95de64",400:"#73d13d",500:"#52c41a",600:"#389e0d",700:"#237804",800:"#135200",900:"#092b00",950:"#051f00"},warning:{50:"#fffbe6",100:"#fff1b8",200:"#ffe58f",300:"#ffd666",400:"#ffc53d",500:"#faad14",600:"#d48806",700:"#ad6800",800:"#874d00",900:"#613400",950:"#422400"},danger:{50:"#fff1f0",100:"#ffccc7",200:"#ffa39e",300:"#ff7875",400:"#ff4d4f",500:"#f5222d",600:"#cf1322",700:"#a8071a",800:"#820014",900:"#5c0011",950:"#3d000b"},semantic:{background:"#ffffff",surface:"#fafafa",surfaceHover:"#f5f5f5",overlay:"rgb(0 0 0 / 0.45)",text:"#1f1f1f",textMuted:"#737373",textInverted:"#ffffff",border:"#d9d9d9",borderStrong:"#919191",focusRing:"#1677ff"}},shadow:{color:"2 6 23",strength:"1"},motion:{easing:"cubic-bezier(0.645, 0.045, 0.355, 1)"}};export{f as antBrand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var s=(r,e)=>{for(var f in e)t(r,f,{get:e[f],enumerable:!0})},u=(r,e,f,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of b(e))!m.call(r,a)&&a!==f&&t(r,a,{get:()=>e[a],enumerable:!(c=n(e,a))||c.enumerable});return r};var g=r=>u(t({},"__esModule",{value:!0}),r);var k={};s(k,{antDark:()=>i});module.exports=g(k);var o=require("./AntBrand.cjs"),d=require("./DefaultTheme.cjs"),i=(0,d.createTheme)("ant-dark",{mode:"dark",colors:{primary:{50:"#f3f9fe",100:"#e4f1fc",200:"#c5e1f8",300:"#9ecdf4",400:"#7abaef",500:"#5baaec",600:"#3c9ae8",700:"#327dbd",800:"#2a669a",900:"#23527c",950:"#18324c"},neutral:{200:"#303030",300:"#424242",800:"#1f1f1f",900:"#141414",950:"#0a0a0a"},semantic:{background:"#141414",surface:"#1f1f1f",surfaceHover:"#262626",overlay:"rgb(0 0 0 / 0.65)",text:"#d9d9d9",textMuted:"#8c8c8c",textInverted:"#141414",border:"#303030",borderStrong:"#6b6b6b",focusRing:"#4096ff"}},shadow:{color:"0 0 0",strength:"4.7"}},o.antBrand);0&&(module.exports={antDark});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dark counterpart of `ant-daybreak`, following Ant Design's dark
|
|
3
|
+
* algorithm surfaces (#141414 / #1f1f1f) and daybreak-blue accents.
|
|
4
|
+
*
|
|
5
|
+
* The accent comes from Ant's *dark* daybreak ramp rather than the light
|
|
6
|
+
* one — Ant's dark algorithm re-derives the palette against #141414, and
|
|
7
|
+
* the light ramp's blue-7 lands at 2.99:1 there. This takes the dark ramp's
|
|
8
|
+
* seventh step, which clears the gate with dark ink on the filled state.
|
|
9
|
+
*
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const antDark: import("../index.cjs").Theme;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dark counterpart of `ant-daybreak`, following Ant Design's dark
|
|
3
|
+
* algorithm surfaces (#141414 / #1f1f1f) and daybreak-blue accents.
|
|
4
|
+
*
|
|
5
|
+
* The accent comes from Ant's *dark* daybreak ramp rather than the light
|
|
6
|
+
* one — Ant's dark algorithm re-derives the palette against #141414, and
|
|
7
|
+
* the light ramp's blue-7 lands at 2.99:1 there. This takes the dark ramp's
|
|
8
|
+
* seventh step, which clears the gate with dark ink on the filled state.
|
|
9
|
+
*
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const antDark: import("../index.js").Theme;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{antBrand as e}from"./AntBrand.js";import{createTheme as r}from"./DefaultTheme.js";var t=r("ant-dark",{mode:"dark",colors:{primary:{50:"#f3f9fe",100:"#e4f1fc",200:"#c5e1f8",300:"#9ecdf4",400:"#7abaef",500:"#5baaec",600:"#3c9ae8",700:"#327dbd",800:"#2a669a",900:"#23527c",950:"#18324c"},neutral:{200:"#303030",300:"#424242",800:"#1f1f1f",900:"#141414",950:"#0a0a0a"},semantic:{background:"#141414",surface:"#1f1f1f",surfaceHover:"#262626",overlay:"rgb(0 0 0 / 0.65)",text:"#d9d9d9",textMuted:"#8c8c8c",textInverted:"#141414",border:"#303030",borderStrong:"#6b6b6b",focusRing:"#4096ff"}},shadow:{color:"0 0 0",strength:"4.7"}},e);export{t as antDark};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var n=(f,e)=>{for(var d in e)a(f,d,{get:e[d],enumerable:!0})},s=(f,e,d,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of o(e))!b.call(f,c)&&c!==d&&a(f,c,{get:()=>e[c],enumerable:!(t=r(e,c))||t.enumerable});return f};var u=f=>s(a({},"__esModule",{value:!0}),f);var m={};n(m,{catppuccinLatte:()=>i});module.exports=u(m);var i={name:"catppuccin-latte",mode:"light",colors:{primary:{50:"#eef2fe",100:"#dde6fd",200:"#c1d2fb",300:"#96b4f9",400:"#648df7",500:"#3a70f6",600:"#1e66f5",700:"#1652cd",800:"#1543a4",900:"#163a82",950:"#12254f"},neutral:{50:"#f4f6fa",100:"#eff1f5",200:"#e6e9ef",300:"#ccd0da",400:"#acb0be",500:"#9ca0b0",600:"#7c7f93",700:"#6c6f85",800:"#5c5f77",900:"#4c4f69",950:"#3a3d52"},success:{50:"#f1faee",100:"#e0f4d9",200:"#c3e8b6",300:"#9cd688",400:"#6fbe55",500:"#4fae38",600:"#40a02b",700:"#357f25",800:"#2d6521",900:"#27531f",950:"#112d0c"},warning:{50:"#fdf7ec",100:"#f9ecd3",200:"#f3d7a5",300:"#ecbd6e",400:"#e5a340",500:"#df8e1d",600:"#c67916",700:"#a45e15",800:"#854a17",900:"#6d3d16",950:"#3e1f09"},danger:{50:"#fef1f4",100:"#fde0e7",200:"#fbc6d3",300:"#f79cb1",400:"#f16587",500:"#e63862",600:"#d20f39",700:"#b10d33",800:"#940e31",900:"#7f102f",950:"#470415"},semantic:{background:"#eff1f5",surface:"#e6e9ef",surfaceHover:"#dce0e8",overlay:"rgb(76 79 105 / 0.4)",text:"#4c4f69",textMuted:"#65687d",textInverted:"#ffffff",border:"#ccd0da",borderStrong:"#7c849c",focusRing:"#1e66f5"}},shadow:{color:"76 79 105",strength:"1.3"}};0&&(module.exports={catppuccinLatte});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Theme } from '../utils/theme.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* Catppuccin Latte inspired light theme: warm off-white surfaces, saturated
|
|
4
|
+
* blue actions, and the Latte green/yellow/red status hues.
|
|
5
|
+
* Palette source: catppuccin/catppuccin (MIT).
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare const catppuccinLatte: Theme;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Theme } from '../utils/theme.js';
|
|
2
|
+
/**
|
|
3
|
+
* Catppuccin Latte inspired light theme: warm off-white surfaces, saturated
|
|
4
|
+
* blue actions, and the Latte green/yellow/red status hues.
|
|
5
|
+
* Palette source: catppuccin/catppuccin (MIT).
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare const catppuccinLatte: Theme;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={name:"catppuccin-latte",mode:"light",colors:{primary:{50:"#eef2fe",100:"#dde6fd",200:"#c1d2fb",300:"#96b4f9",400:"#648df7",500:"#3a70f6",600:"#1e66f5",700:"#1652cd",800:"#1543a4",900:"#163a82",950:"#12254f"},neutral:{50:"#f4f6fa",100:"#eff1f5",200:"#e6e9ef",300:"#ccd0da",400:"#acb0be",500:"#9ca0b0",600:"#7c7f93",700:"#6c6f85",800:"#5c5f77",900:"#4c4f69",950:"#3a3d52"},success:{50:"#f1faee",100:"#e0f4d9",200:"#c3e8b6",300:"#9cd688",400:"#6fbe55",500:"#4fae38",600:"#40a02b",700:"#357f25",800:"#2d6521",900:"#27531f",950:"#112d0c"},warning:{50:"#fdf7ec",100:"#f9ecd3",200:"#f3d7a5",300:"#ecbd6e",400:"#e5a340",500:"#df8e1d",600:"#c67916",700:"#a45e15",800:"#854a17",900:"#6d3d16",950:"#3e1f09"},danger:{50:"#fef1f4",100:"#fde0e7",200:"#fbc6d3",300:"#f79cb1",400:"#f16587",500:"#e63862",600:"#d20f39",700:"#b10d33",800:"#940e31",900:"#7f102f",950:"#470415"},semantic:{background:"#eff1f5",surface:"#e6e9ef",surfaceHover:"#dce0e8",overlay:"rgb(76 79 105 / 0.4)",text:"#4c4f69",textMuted:"#65687d",textInverted:"#ffffff",border:"#ccd0da",borderStrong:"#7c849c",focusRing:"#1e66f5"}},shadow:{color:"76 79 105",strength:"1.3"}};export{e as catppuccinLatte};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var d=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var t=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var n=(f,e)=>{for(var c in e)d(f,c,{get:e[c],enumerable:!0})},s=(f,e,c,b)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of t(e))!o.call(f,a)&&a!==c&&d(f,a,{get:()=>e[a],enumerable:!(b=r(e,a))||b.enumerable});return f};var m=f=>s(d({},"__esModule",{value:!0}),f);var i={};n(i,{catppuccinMocha:()=>u});module.exports=m(i);var u={name:"catppuccin-mocha",mode:"dark",colors:{primary:{50:"#f8fbff",100:"#eef5fe",200:"#dce9fe",300:"#c4dafd",400:"#afccfc",500:"#9cc0fb",600:"#89b4fa",700:"#7092cb",800:"#5b77a5",900:"#4a5f85",950:"#2e3a51"},neutral:{50:"#f5f6fb",100:"#eaedf8",200:"#45475a",300:"#585b70",400:"#a6adc8",500:"#7f849c",600:"#6c7086",700:"#45475a",800:"#313244",900:"#11111b",950:"#11111b"},success:{50:"#f2fbf1",100:"#e2f6e0",200:"#c8edc4",300:"#a6e3a1",400:"#7ed177",500:"#5cb954",600:"#479c41",700:"#3a7c36",800:"#32632f",900:"#2b5229",950:"#122d11"},warning:{50:"#fefaf0",100:"#fdf3da",200:"#f9e2af",300:"#f5cd79",400:"#f0b34a",500:"#e99b2b",600:"#cd7d1f",700:"#aa5f1c",800:"#8a4b1d",900:"#713e1b",950:"#401f0c"},danger:{50:"#fef1f5",100:"#fde3ea",200:"#fbcbd9",300:"#f8a8bf",400:"#f38ba8",500:"#e75c85",600:"#d23a6c",700:"#b02b59",800:"#932750",900:"#7d2549",950:"#450f24"},semantic:{background:"#1e1e2e",surface:"#2a2b3d",surfaceHover:"#313244",overlay:"rgb(0 0 0 / 0.6)",text:"#cdd6f4",textMuted:"#a6adc8",textInverted:"#1e1e2e",border:"#45475a",borderStrong:"#71758f",focusRing:"#89b4fa"}},shadow:{color:"0 0 0",strength:"4.7"}};0&&(module.exports={catppuccinMocha});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Theme } from '../utils/theme.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* Catppuccin Mocha inspired dark theme: soothing pastel accents on the
|
|
4
|
+
* signature `#1e1e2e` base, with Mocha green/yellow/red status hues.
|
|
5
|
+
* Palette source: catppuccin/catppuccin (MIT).
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare const catppuccinMocha: Theme;
|