@knkcs/anker 0.0.5 → 1.0.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/CLAUDE-ANKER.md +74 -0
- package/README.md +17 -6
- package/dist/{chunk-7WPKYUHP.js → chunk-QOLM5PLP.js} +139 -76
- package/dist/chunk-QOLM5PLP.js.map +1 -0
- package/dist/primitives/index.js +1 -1
- package/dist/theme/index.d.ts +121 -11
- package/dist/theme/index.js +1 -1
- package/package.json +5 -4
- package/dist/chunk-7WPKYUHP.js.map +0 -1
package/CLAUDE-ANKER.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# anker Design System — AI Rules
|
|
2
|
+
|
|
3
|
+
This file is designed to be `@`-imported into a consumer project's `CLAUDE.md` so Claude Code instances working on that project automatically follow the anker design system. Add this line to your root `CLAUDE.md`:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
@node_modules/@knkcs/anker/CLAUDE-ANKER.md
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The full human-facing spec lives at the anker GitHub Pages docs site (linked from the `@knkcs/anker` README).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Five design principles
|
|
14
|
+
|
|
15
|
+
1. **Refined Minimalism.** Surfaces are calm. Brand colors are the crown, not the carpet — primary action only.
|
|
16
|
+
2. **Density over air.** Power users spend hours here. Compact rows, tight spacing, small UI sizes — never cramped.
|
|
17
|
+
3. **Consistency over creativity.** If a pattern exists (status pill, empty state, filter toolbar), use it as-is. No per-product variants.
|
|
18
|
+
4. **Clear hierarchy.** Page title, primary action, content — answerable in under a second.
|
|
19
|
+
5. **Keyboard-first where it matters.** Search (`/`), command palette (`⌘K`), navigation must be keyboard-operable. Show shortcuts in tooltips.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Token quick reference
|
|
24
|
+
|
|
25
|
+
**Palette anchors** (the visually-load-bearing step in each scale):
|
|
26
|
+
- `primary.700` (`#134788`) — action color (buttons, links, focus rings, active states)
|
|
27
|
+
- `secondary.600` (`#e9580c`) — brand orange (use sparingly; not for standard CTAs)
|
|
28
|
+
- `gray.700` — body text
|
|
29
|
+
- `gray.900` — headings
|
|
30
|
+
|
|
31
|
+
**Brand colors** (`brand.*`) — exact knk Brand Guidelines values for logos, headers, about pages. Do **not** use for interactive UI.
|
|
32
|
+
|
|
33
|
+
**Semantic tokens** (prefer these over raw):
|
|
34
|
+
- `bg-canvas` (page frame), `bg-surface` (cards/modals), `bg-subtle` (toolbars), `bg-muted` (hover)
|
|
35
|
+
- `default` / `emphasized` / `muted` / `subtle` (text)
|
|
36
|
+
- `border` (standard 1px), `accent` (action), `success`, `error`
|
|
37
|
+
|
|
38
|
+
**Defaults:**
|
|
39
|
+
- Border radius: `md` = 6px (use this for buttons, inputs, small cards)
|
|
40
|
+
- Body font size: `md` = 14px
|
|
41
|
+
- Font stack assumes Inter Tight (UI) and JetBrains Mono (code) — consumer must load via Google Fonts
|
|
42
|
+
- Light + dark mode supported via `next-themes`
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Do
|
|
47
|
+
|
|
48
|
+
- **Use semantic tokens before raw tokens.** Reach for `accent` before `primary.700`. Why: semantic tokens are the contract, raw tokens are the implementation; raw use becomes a search-and-replace cost on the next visual update.
|
|
49
|
+
- **Use `<Button variant="solid">` (not `variant="primary"`).** The `primary` variant is deprecated in anker. Why: `solid` reads from `colorPalette` automatically, so the same component works for `colorPalette="primary"`, `colorPalette="secondary"`, `colorPalette="gray"`.
|
|
50
|
+
- **Use `brand.*` only for branding surfaces.** Logos, headers, about pages. Why: brand colors are print-aligned and not WCAG-tuned for interactive UI.
|
|
51
|
+
- **Use anker components instead of raw Chakra.** Import from `@knkcs/anker/{primitives,components,atoms,forms,feedback}`. Why: anker wraps Chakra with consistent defaults; consuming raw Chakra bypasses those defaults and creates visual drift.
|
|
52
|
+
- **Respect `prefers-reduced-motion`.** No per-component handling needed — anker's theme enforces this globally. Why: users who set this OS preference get a broken UI if components add their own motion.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Don't
|
|
57
|
+
|
|
58
|
+
- **No hex codes inline in components.** Always use tokens. Why: hex codes don't update when the design system evolves; tokens do.
|
|
59
|
+
- **No Material-style large shadows.** Anker shadows are deliberately dezent. Why: heavy shadows read as Material/Bootstrap-4-era and clash with the refined direction.
|
|
60
|
+
- **No `secondary.500` for standard CTAs.** The brand orange now lives at `secondary.600`; `secondary.500` is a lighter shade. Why: standard CTAs use `primary.700`, not orange — orange is for branded moments only.
|
|
61
|
+
- **No mixing radii within one component group.** A card with `lg` can hold inputs with `md`, but not a mix of `md` and `lg` siblings. Why: visual rhythm breaks when adjacent elements have different roundness.
|
|
62
|
+
- **No animations over 300ms.** Outside marketing/onboarding. Why: long animations slow down power users; the design language values immediacy.
|
|
63
|
+
- **No Chakra v2 patterns.** No `extendTheme`, `colorScheme`, `useColorMode` from `@chakra-ui/react`. Use `createSystem`, `colorPalette`, `next-themes`. Why: anker is built on Chakra v3 throughout; v2 patterns either error at build time or silently no-op.
|
|
64
|
+
- **No new color introductions.** If a color isn't in `colors.ts`, it doesn't exist. Why: the palette is closed by design — adding ad-hoc colors fragments the system.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Pointers
|
|
69
|
+
|
|
70
|
+
- Full spec: anker GitHub Pages docs site (`/design-system`)
|
|
71
|
+
- Components: `node_modules/@knkcs/anker/dist/{primitives,components,atoms,forms,feedback}`
|
|
72
|
+
- Theme entry: `import system from "@knkcs/anker/theme"`
|
|
73
|
+
- Provider entry: `import { Provider } from "@knkcs/anker/primitives"`
|
|
74
|
+
- Anker development rules (for working *on* anker, not consuming it): `node_modules/@knkcs/anker/CLAUDE.md` is **not** included in the package; see the anker GitHub repo
|
package/README.md
CHANGED
|
@@ -54,22 +54,33 @@ import { InputField, ArrayField, FormField } from "@knkcs/anker/forms";
|
|
|
54
54
|
import { ConfirmModalProvider, useConfirmModal } from "@knkcs/anker/feedback";
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
## Using with Claude Code
|
|
58
|
+
|
|
59
|
+
If your consumer project uses Claude Code, add this line to your root `CLAUDE.md` to import anker's design-system rules automatically:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
@node_modules/@knkcs/anker/CLAUDE-ANKER.md
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Claude will then follow anker's design principles, token rules, and component conventions when assisting with your code.
|
|
66
|
+
|
|
57
67
|
## Brand Colors
|
|
58
68
|
|
|
59
69
|
The theme includes both **UI-optimized color scales** (primary, secondary, gray) and **exact brand guideline colors** from the knk Brand Guidelines (October 2021).
|
|
60
70
|
|
|
61
71
|
| Token | HEX | Use |
|
|
62
72
|
|-------|-----|-----|
|
|
63
|
-
| `primary.
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `brand.
|
|
73
|
+
| `primary.700` | `#134788` | **Action anchor** — buttons, links, focus rings (via the `accent` semantic token) |
|
|
74
|
+
| `primary.800` | `#0f395d` | Hover on primary; equals `brand.navy` |
|
|
75
|
+
| `secondary.600` | `#e9580c` | Brand orange anchor — reserved for branded moments, not standard CTAs |
|
|
76
|
+
| `brand.blue` | `#004576` | Exact brand-guideline blue — logos, headers, branding |
|
|
77
|
+
| `brand.navy` | `#0f395d` | Dark blue variant — equals `primary.800` |
|
|
67
78
|
| `brand.light-blue` | `#6fa7d1` | Light blue variant |
|
|
68
|
-
| `brand.orange` | `#e9580c` | Brand orange (same as secondary.
|
|
79
|
+
| `brand.orange` | `#e9580c` | Brand orange (same as `secondary.600`) |
|
|
69
80
|
| `brand.gold` | `#f4b235` | Brand gold accent |
|
|
70
81
|
| `brand.light-gray` | `#f2f2f2` | Brand neutral background |
|
|
71
82
|
|
|
72
|
-
The UI primary
|
|
83
|
+
The UI primary anchor (`primary.700` = `#134788`) is intentionally one step lighter than the brand-guideline blue (`brand.blue` = `#004576`), which reads as too heavy as a CTA on white surfaces. The brand-guideline navy (`#0f395d`, `brand.navy`) lives at `primary.800` and is used for hover states on primary actions. See `docs/design-system.md` for the full palette and semantic-token reference.
|
|
73
84
|
|
|
74
85
|
## Notable Component Props
|
|
75
86
|
|
|
@@ -104,16 +104,16 @@ var buttonTheme = defineRecipe({
|
|
|
104
104
|
// colorPalette="primary". This variant will be removed in a future
|
|
105
105
|
// major release.
|
|
106
106
|
primary: {
|
|
107
|
-
bg: "primary.
|
|
107
|
+
bg: "primary.700",
|
|
108
108
|
color: "white",
|
|
109
109
|
_hover: {
|
|
110
|
-
bg: "primary.
|
|
110
|
+
bg: "primary.800",
|
|
111
111
|
_disabled: {
|
|
112
|
-
bg: "primary.
|
|
112
|
+
bg: "primary.700"
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
115
|
_active: {
|
|
116
|
-
bg: "primary.
|
|
116
|
+
bg: "primary.900"
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
119
|
// Secondary: outline style using gray color palette
|
|
@@ -150,7 +150,7 @@ var buttonTheme = defineRecipe({
|
|
|
150
150
|
ghost: {
|
|
151
151
|
_hover: {
|
|
152
152
|
bg: "transparent",
|
|
153
|
-
color: "primary.
|
|
153
|
+
color: "primary.700"
|
|
154
154
|
},
|
|
155
155
|
_active: {
|
|
156
156
|
bg: "gray.200"
|
|
@@ -399,8 +399,8 @@ var inputSlotRecipe = defineSlotRecipe({
|
|
|
399
399
|
bg: { base: "white", _dark: "gray.800" },
|
|
400
400
|
_hover: { borderColor: { base: "gray.300", _dark: "gray.600" } },
|
|
401
401
|
_focus: {
|
|
402
|
-
borderColor: { base: "primary.
|
|
403
|
-
boxShadow: "0px 0px 0px 1px var(--chakra-colors-primary-
|
|
402
|
+
borderColor: { base: "primary.700", _dark: "primary.300" },
|
|
403
|
+
boxShadow: "0px 0px 0px 1px var(--chakra-colors-primary-700)"
|
|
404
404
|
}
|
|
405
405
|
},
|
|
406
406
|
addon: {
|
|
@@ -447,16 +447,16 @@ var inputSlotRecipe = defineSlotRecipe({
|
|
|
447
447
|
boxShadow: "none",
|
|
448
448
|
padding: 0,
|
|
449
449
|
minHeight: "auto",
|
|
450
|
-
color: "primary.
|
|
450
|
+
color: "primary.700",
|
|
451
451
|
textDecoration: "underline",
|
|
452
452
|
cursor: "pointer",
|
|
453
453
|
_hover: {
|
|
454
|
-
color: "primary.
|
|
454
|
+
color: "primary.800",
|
|
455
455
|
textDecoration: "underline"
|
|
456
456
|
},
|
|
457
457
|
_focus: {
|
|
458
458
|
boxShadow: "none",
|
|
459
|
-
color: "primary.
|
|
459
|
+
color: "primary.800"
|
|
460
460
|
}
|
|
461
461
|
}
|
|
462
462
|
}
|
|
@@ -967,10 +967,10 @@ var radioCardTheme = defineRecipe({
|
|
|
967
967
|
borderColor: { base: "gray.300", _dark: "gray.600" }
|
|
968
968
|
},
|
|
969
969
|
_checked: {
|
|
970
|
-
borderColor: { base: "primary.
|
|
970
|
+
borderColor: { base: "primary.700", _dark: "primary.300" },
|
|
971
971
|
boxShadow: {
|
|
972
|
-
base: "0px 0px 0px 1px var(--chakra-colors-primary-
|
|
973
|
-
_dark: "0px 0px 0px 1px var(--chakra-colors-primary-
|
|
972
|
+
base: "0px 0px 0px 1px var(--chakra-colors-primary-700)",
|
|
973
|
+
_dark: "0px 0px 0px 1px var(--chakra-colors-primary-300)"
|
|
974
974
|
}
|
|
975
975
|
}
|
|
976
976
|
}
|
|
@@ -1290,7 +1290,7 @@ var tagTheme = defineRecipe({
|
|
|
1290
1290
|
outlineOffset: "2px",
|
|
1291
1291
|
outlineWidth: "2px",
|
|
1292
1292
|
outlineStyle: "solid",
|
|
1293
|
-
outlineColor: "primary.
|
|
1293
|
+
outlineColor: "primary.700"
|
|
1294
1294
|
},
|
|
1295
1295
|
_disabled: {
|
|
1296
1296
|
opacity: 0.4,
|
|
@@ -1333,7 +1333,7 @@ var tagTheme = defineRecipe({
|
|
|
1333
1333
|
ghost: {
|
|
1334
1334
|
_hover: {
|
|
1335
1335
|
bg: "transparent",
|
|
1336
|
-
color: "primary.
|
|
1336
|
+
color: "primary.700"
|
|
1337
1337
|
},
|
|
1338
1338
|
_active: {
|
|
1339
1339
|
bg: "transparent"
|
|
@@ -1411,10 +1411,10 @@ var textarea_default = defineRecipe({
|
|
|
1411
1411
|
bg: { base: "white", _dark: "gray.800" },
|
|
1412
1412
|
_hover: { borderColor: { base: "gray.300", _dark: "gray.600" } },
|
|
1413
1413
|
_focus: {
|
|
1414
|
-
borderColor: { base: "primary.
|
|
1414
|
+
borderColor: { base: "primary.700", _dark: "primary.300" },
|
|
1415
1415
|
boxShadow: {
|
|
1416
|
-
base: "0px 0px 0px 1px var(--chakra-colors-primary-
|
|
1417
|
-
_dark: "0px 0px 0px 1px var(--chakra-colors-primary-
|
|
1416
|
+
base: "0px 0px 0px 1px var(--chakra-colors-primary-700)",
|
|
1417
|
+
_dark: "0px 0px 0px 1px var(--chakra-colors-primary-300)"
|
|
1418
1418
|
}
|
|
1419
1419
|
}
|
|
1420
1420
|
}
|
|
@@ -1487,7 +1487,7 @@ var tree_item_default = defineSlotRecipe({
|
|
|
1487
1487
|
treeItemIcon: {
|
|
1488
1488
|
width: "45px",
|
|
1489
1489
|
height: "22px",
|
|
1490
|
-
color: "primary.
|
|
1490
|
+
color: "primary.700",
|
|
1491
1491
|
"&[aria-leaf=true],&[data-leaf]": {
|
|
1492
1492
|
color: "gray.400"
|
|
1493
1493
|
}
|
|
@@ -1556,29 +1556,30 @@ var keyframes = {
|
|
|
1556
1556
|
// src/theme/tokens/colors.ts
|
|
1557
1557
|
var colors = {
|
|
1558
1558
|
primary: {
|
|
1559
|
-
"50": { value: "#
|
|
1560
|
-
"100": { value: "#
|
|
1561
|
-
"200": { value: "#
|
|
1562
|
-
"300": { value: "#
|
|
1563
|
-
"400": { value: "#
|
|
1564
|
-
"500": { value: "#
|
|
1565
|
-
"600": { value: "#
|
|
1566
|
-
"700": { value: "#
|
|
1567
|
-
"800": { value: "#
|
|
1568
|
-
"900": { value: "#
|
|
1569
|
-
"950": { value: "#
|
|
1559
|
+
"50": { value: "#eff6fc" },
|
|
1560
|
+
"100": { value: "#d9eafa" },
|
|
1561
|
+
"200": { value: "#b8d6f5" },
|
|
1562
|
+
"300": { value: "#88baeb" },
|
|
1563
|
+
"400": { value: "#5995dc" },
|
|
1564
|
+
"500": { value: "#2f6fbf" },
|
|
1565
|
+
"600": { value: "#1c5aa8" },
|
|
1566
|
+
"700": { value: "#134788" },
|
|
1567
|
+
"800": { value: "#0f395d" },
|
|
1568
|
+
"900": { value: "#0a2740" },
|
|
1569
|
+
"950": { value: "#061a2c" }
|
|
1570
1570
|
},
|
|
1571
1571
|
secondary: {
|
|
1572
|
-
"50": { value: "#
|
|
1573
|
-
"100": { value: "#
|
|
1574
|
-
"200": { value: "#
|
|
1575
|
-
"300": { value: "#
|
|
1576
|
-
"400": { value: "#
|
|
1577
|
-
"500": { value: "#
|
|
1578
|
-
"600": { value: "#
|
|
1579
|
-
"700": { value: "#
|
|
1580
|
-
"800": { value: "#
|
|
1581
|
-
"900": { value: "#
|
|
1572
|
+
"50": { value: "#fff5ed" },
|
|
1573
|
+
"100": { value: "#ffe6d4" },
|
|
1574
|
+
"200": { value: "#ffc8a8" },
|
|
1575
|
+
"300": { value: "#ffa170" },
|
|
1576
|
+
"400": { value: "#ff7c41" },
|
|
1577
|
+
"500": { value: "#f25f1c" },
|
|
1578
|
+
"600": { value: "#e9580c" },
|
|
1579
|
+
"700": { value: "#b73806" },
|
|
1580
|
+
"800": { value: "#912e0d" },
|
|
1581
|
+
"900": { value: "#762a0e" },
|
|
1582
|
+
"950": { value: "#411208" }
|
|
1582
1583
|
},
|
|
1583
1584
|
// Exact brand guideline colors for branding elements (headers, logos, about pages).
|
|
1584
1585
|
// See: knk Brand Guidelines, October 2021
|
|
@@ -1601,18 +1602,47 @@ var colors = {
|
|
|
1601
1602
|
"600": { value: "#475569" },
|
|
1602
1603
|
"700": { value: "#334155" },
|
|
1603
1604
|
"800": { value: "#1e293b" },
|
|
1604
|
-
"900": { value: "#0f172a" }
|
|
1605
|
+
"900": { value: "#0f172a" },
|
|
1606
|
+
"950": { value: "#020617" }
|
|
1607
|
+
},
|
|
1608
|
+
success: {
|
|
1609
|
+
"50": { value: "#ecfdf5" },
|
|
1610
|
+
"100": { value: "#d1fae5" },
|
|
1611
|
+
"500": { value: "#10b981" },
|
|
1612
|
+
"600": { value: "#059669" },
|
|
1613
|
+
"700": { value: "#047857" }
|
|
1614
|
+
},
|
|
1615
|
+
warning: {
|
|
1616
|
+
"50": { value: "#fffbeb" },
|
|
1617
|
+
"100": { value: "#fef3c7" },
|
|
1618
|
+
"500": { value: "#f59e0b" },
|
|
1619
|
+
"600": { value: "#d97706" },
|
|
1620
|
+
"700": { value: "#b45309" }
|
|
1621
|
+
},
|
|
1622
|
+
danger: {
|
|
1623
|
+
"50": { value: "#fef2f2" },
|
|
1624
|
+
"100": { value: "#fee2e2" },
|
|
1625
|
+
"500": { value: "#ef4444" },
|
|
1626
|
+
"600": { value: "#dc2626" },
|
|
1627
|
+
"700": { value: "#b91c1c" }
|
|
1628
|
+
},
|
|
1629
|
+
info: {
|
|
1630
|
+
"50": { value: "#eff6fc" },
|
|
1631
|
+
"100": { value: "#d9eafa" },
|
|
1632
|
+
"500": { value: "#2f6fbf" },
|
|
1633
|
+
"600": { value: "#1c5aa8" },
|
|
1634
|
+
"700": { value: "#134788" }
|
|
1605
1635
|
}
|
|
1606
1636
|
};
|
|
1607
1637
|
var colors_default = colors;
|
|
1608
1638
|
|
|
1609
1639
|
// src/theme/tokens/radii.ts
|
|
1610
1640
|
var radii = {
|
|
1611
|
-
sm: "0.
|
|
1612
|
-
md: "0.
|
|
1613
|
-
lg: "0.
|
|
1614
|
-
xl: "
|
|
1615
|
-
"2xl": "
|
|
1641
|
+
sm: "0.25rem",
|
|
1642
|
+
md: "0.375rem",
|
|
1643
|
+
lg: "0.5rem",
|
|
1644
|
+
xl: "0.75rem",
|
|
1645
|
+
"2xl": "1rem"
|
|
1616
1646
|
};
|
|
1617
1647
|
var radii_default = radii;
|
|
1618
1648
|
|
|
@@ -1650,7 +1680,7 @@ var semanticTokens = {
|
|
|
1650
1680
|
value: { base: "gray.200", _dark: "gray.700" }
|
|
1651
1681
|
},
|
|
1652
1682
|
accent: {
|
|
1653
|
-
value: { base: "primary.
|
|
1683
|
+
value: { base: "primary.700", _dark: "primary.300" }
|
|
1654
1684
|
},
|
|
1655
1685
|
success: {
|
|
1656
1686
|
value: { base: "green.600", _dark: "green.200" }
|
|
@@ -1686,21 +1716,25 @@ var semanticTokens = {
|
|
|
1686
1716
|
_dark: "{colors.primary.700}"
|
|
1687
1717
|
}
|
|
1688
1718
|
},
|
|
1719
|
+
// solid + focusRing intentionally keep dark at step 500 (not 700)
|
|
1720
|
+
// so the action color stays visible on dark canvas. This breaks the
|
|
1721
|
+
// "same step both modes" pattern that held before the 1.0 anchor
|
|
1722
|
+
// shift. Do not "fix" the asymmetry — see design-system spec §5.2.
|
|
1689
1723
|
solid: {
|
|
1690
1724
|
value: {
|
|
1691
|
-
base: "{colors.primary.
|
|
1725
|
+
base: "{colors.primary.700}",
|
|
1692
1726
|
_dark: "{colors.primary.500}"
|
|
1693
1727
|
}
|
|
1694
1728
|
},
|
|
1695
1729
|
focusRing: {
|
|
1696
1730
|
value: {
|
|
1697
|
-
base: "{colors.primary.
|
|
1731
|
+
base: "{colors.primary.700}",
|
|
1698
1732
|
_dark: "{colors.primary.500}"
|
|
1699
1733
|
}
|
|
1700
1734
|
},
|
|
1701
1735
|
border: {
|
|
1702
1736
|
value: {
|
|
1703
|
-
base: "{colors.primary.
|
|
1737
|
+
base: "{colors.primary.700}",
|
|
1704
1738
|
_dark: "{colors.primary.400}"
|
|
1705
1739
|
}
|
|
1706
1740
|
}
|
|
@@ -1734,30 +1768,30 @@ var semanticTokens = {
|
|
|
1734
1768
|
},
|
|
1735
1769
|
solid: {
|
|
1736
1770
|
value: {
|
|
1737
|
-
base: "{colors.secondary.
|
|
1771
|
+
base: "{colors.secondary.600}",
|
|
1738
1772
|
_dark: "{colors.secondary.500}"
|
|
1739
1773
|
}
|
|
1740
1774
|
},
|
|
1741
1775
|
focusRing: {
|
|
1742
1776
|
value: {
|
|
1743
|
-
base: "{colors.secondary.
|
|
1777
|
+
base: "{colors.secondary.600}",
|
|
1744
1778
|
_dark: "{colors.secondary.500}"
|
|
1745
1779
|
}
|
|
1746
1780
|
},
|
|
1747
1781
|
border: {
|
|
1748
1782
|
value: {
|
|
1749
|
-
base: "{colors.secondary.
|
|
1783
|
+
base: "{colors.secondary.600}",
|
|
1750
1784
|
_dark: "{colors.secondary.400}"
|
|
1751
1785
|
}
|
|
1752
1786
|
}
|
|
1753
1787
|
},
|
|
1754
1788
|
// Accent surface tokens
|
|
1755
|
-
"bg-accent": { value: { base: "primary.
|
|
1789
|
+
"bg-accent": { value: { base: "primary.700", _dark: "primary.400" } },
|
|
1756
1790
|
"bg-accent-subtle": {
|
|
1757
|
-
value: { base: "primary.
|
|
1791
|
+
value: { base: "primary.700", _dark: "primary.500" }
|
|
1758
1792
|
},
|
|
1759
1793
|
"bg-accent-muted": {
|
|
1760
|
-
value: { base: "primary.
|
|
1794
|
+
value: { base: "primary.500", _dark: "primary.600" }
|
|
1761
1795
|
},
|
|
1762
1796
|
"on-accent": { value: { base: "white", _dark: "white" } },
|
|
1763
1797
|
"on-accent-muted": {
|
|
@@ -1770,44 +1804,44 @@ var semanticTokens = {
|
|
|
1770
1804
|
shadows: {
|
|
1771
1805
|
xs: {
|
|
1772
1806
|
value: {
|
|
1773
|
-
base: "
|
|
1774
|
-
_dark: "
|
|
1807
|
+
base: "0 1px 2px rgba(0, 0, 0, 0.04)",
|
|
1808
|
+
_dark: "0 1px 2px rgba(0, 0, 0, 0.4)"
|
|
1775
1809
|
}
|
|
1776
1810
|
},
|
|
1777
1811
|
sm: {
|
|
1778
1812
|
value: {
|
|
1779
|
-
base: "
|
|
1780
|
-
_dark: "
|
|
1813
|
+
base: "0 1px 2px rgba(0, 0, 0, 0.06)",
|
|
1814
|
+
_dark: "0 1px 2px rgba(0, 0, 0, 0.5)"
|
|
1781
1815
|
}
|
|
1782
1816
|
},
|
|
1783
1817
|
md: {
|
|
1784
1818
|
value: {
|
|
1785
|
-
base: "
|
|
1786
|
-
_dark: "
|
|
1819
|
+
base: "0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.04)",
|
|
1820
|
+
_dark: "0 4px 6px -1px rgba(0, 0, 0, 0.5), 0 2px 4px -2px rgba(0, 0, 0, 0.3)"
|
|
1787
1821
|
}
|
|
1788
1822
|
},
|
|
1789
1823
|
lg: {
|
|
1790
1824
|
value: {
|
|
1791
|
-
base: "
|
|
1792
|
-
_dark: "
|
|
1825
|
+
base: "0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04)",
|
|
1826
|
+
_dark: "0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.3)"
|
|
1793
1827
|
}
|
|
1794
1828
|
},
|
|
1795
1829
|
xl: {
|
|
1796
1830
|
value: {
|
|
1797
|
-
base: "
|
|
1798
|
-
_dark: "
|
|
1831
|
+
base: "0 20px 25px -5px rgba(0, 0, 0, 0.10), 0 8px 10px -6px rgba(0, 0, 0, 0.04)",
|
|
1832
|
+
_dark: "0 20px 25px -5px rgba(0, 0, 0, 0.6), 0 8px 10px -6px rgba(0, 0, 0, 0.3)"
|
|
1799
1833
|
}
|
|
1800
1834
|
},
|
|
1801
1835
|
"2xl": {
|
|
1802
1836
|
value: {
|
|
1803
|
-
base: "
|
|
1804
|
-
_dark: "
|
|
1837
|
+
base: "0 25px 50px -12px rgba(0, 0, 0, 0.18)",
|
|
1838
|
+
_dark: "0 25px 50px -12px rgba(0, 0, 0, 0.7)"
|
|
1805
1839
|
}
|
|
1806
1840
|
},
|
|
1807
1841
|
"focus-ring": {
|
|
1808
1842
|
value: {
|
|
1809
|
-
base: "0 0 0 3px rgba(
|
|
1810
|
-
_dark: "0 0 0 3px rgba(
|
|
1843
|
+
base: "0 0 0 3px rgba(19, 71, 136, 0.18)",
|
|
1844
|
+
_dark: "0 0 0 3px rgba(47, 111, 191, 0.4)"
|
|
1811
1845
|
}
|
|
1812
1846
|
}
|
|
1813
1847
|
},
|
|
@@ -1829,8 +1863,9 @@ var spacing_default = space;
|
|
|
1829
1863
|
|
|
1830
1864
|
// src/theme/tokens/typography.ts
|
|
1831
1865
|
var fonts = {
|
|
1832
|
-
heading: "
|
|
1833
|
-
body: "
|
|
1866
|
+
heading: "'Inter Tight', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
1867
|
+
body: "'Inter Tight', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
1868
|
+
mono: "'JetBrains Mono', ui-monospace, SFMono-Regular, monospace"
|
|
1834
1869
|
};
|
|
1835
1870
|
var textStyles = {
|
|
1836
1871
|
"7xl": {
|
|
@@ -1911,6 +1946,32 @@ var textStyles = {
|
|
|
1911
1946
|
letterSpacing: "0.08em",
|
|
1912
1947
|
fontWeight: "semibold",
|
|
1913
1948
|
textTransform: "uppercase"
|
|
1949
|
+
},
|
|
1950
|
+
bodyLg: {
|
|
1951
|
+
fontSize: "lg",
|
|
1952
|
+
fontWeight: "normal",
|
|
1953
|
+
lineHeight: "1.5"
|
|
1954
|
+
// unitless multiplier — scales with fontSize
|
|
1955
|
+
},
|
|
1956
|
+
body: {
|
|
1957
|
+
fontSize: "md",
|
|
1958
|
+
fontWeight: "normal",
|
|
1959
|
+
lineHeight: "1.5"
|
|
1960
|
+
},
|
|
1961
|
+
bodySm: {
|
|
1962
|
+
fontSize: "sm",
|
|
1963
|
+
fontWeight: "normal",
|
|
1964
|
+
lineHeight: "1.45"
|
|
1965
|
+
},
|
|
1966
|
+
mono: {
|
|
1967
|
+
fontFamily: "mono",
|
|
1968
|
+
fontSize: "md",
|
|
1969
|
+
lineHeight: "1.5"
|
|
1970
|
+
},
|
|
1971
|
+
monoSm: {
|
|
1972
|
+
fontFamily: "mono",
|
|
1973
|
+
fontSize: "xs",
|
|
1974
|
+
lineHeight: "1.45"
|
|
1914
1975
|
}
|
|
1915
1976
|
};
|
|
1916
1977
|
|
|
@@ -1929,7 +1990,8 @@ var z_index_default = zIndex;
|
|
|
1929
1990
|
function createAnkerTheme(preset) {
|
|
1930
1991
|
const fonts2 = {
|
|
1931
1992
|
heading: preset?.fonts?.heading ?? fonts.heading,
|
|
1932
|
-
body: preset?.fonts?.body ?? fonts.body
|
|
1993
|
+
body: preset?.fonts?.body ?? fonts.body,
|
|
1994
|
+
mono: preset?.fonts?.mono ?? fonts.mono
|
|
1933
1995
|
};
|
|
1934
1996
|
const colors2 = preset?.colors ? { ...colors_default, ...preset.colors } : colors_default;
|
|
1935
1997
|
const durations2 = preset?.durations ? { ...durations, ...preset.durations } : durations;
|
|
@@ -1985,7 +2047,8 @@ function createAnkerTheme(preset) {
|
|
|
1985
2047
|
easings: easings2,
|
|
1986
2048
|
fonts: {
|
|
1987
2049
|
heading: { value: fonts2.heading },
|
|
1988
|
-
body: { value: fonts2.body }
|
|
2050
|
+
body: { value: fonts2.body },
|
|
2051
|
+
mono: { value: fonts2.mono }
|
|
1989
2052
|
},
|
|
1990
2053
|
spacing: Object.fromEntries(
|
|
1991
2054
|
Object.entries(spacing_default).map(([k, v]) => [k, { value: v }])
|
|
@@ -2094,5 +2157,5 @@ var system = createAnkerTheme();
|
|
|
2094
2157
|
var theme_default = system;
|
|
2095
2158
|
|
|
2096
2159
|
export { colors_default, createAnkerTheme, defaultPreset, durations, easings, fonts, getColor, keyframes, radii_default, semantic_default, spacing_default, textStyles, theme_default, transparentize, z_index_default };
|
|
2097
|
-
//# sourceMappingURL=chunk-
|
|
2098
|
-
//# sourceMappingURL=chunk-
|
|
2160
|
+
//# sourceMappingURL=chunk-QOLM5PLP.js.map
|
|
2161
|
+
//# sourceMappingURL=chunk-QOLM5PLP.js.map
|