@web-my-money/tokens 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/bin/doctor.mjs +189 -0
- package/dist/chunk-2IXFKPNU.mjs +72 -0
- package/dist/chunk-4FF2FHY6.mjs +265 -0
- package/dist/font-size-runtime-DlvZXy2n.d.mts +48 -0
- package/dist/font-size-runtime-DlvZXy2n.d.ts +48 -0
- package/dist/fonts/satoshi-black.woff2 +0 -0
- package/dist/fonts.css +16 -0
- package/dist/index.d.mts +264 -0
- package/dist/index.d.ts +264 -0
- package/dist/index.js +464 -0
- package/dist/index.mjs +137 -0
- package/dist/react.d.mts +61 -0
- package/dist/react.d.ts +61 -0
- package/dist/react.js +232 -0
- package/dist/react.mjs +155 -0
- package/dist/tailwind-preset.d.mts +14 -0
- package/dist/tailwind-preset.d.ts +14 -0
- package/dist/tailwind-preset.js +225 -0
- package/dist/tailwind-preset.mjs +6 -0
- package/dist/themes/app-theme.css +140 -0
- package/dist/themes/clients/acme.css +50 -0
- package/dist/themes/extended.css +453 -0
- package/dist/themes/palette.mjs +121 -0
- package/dist/themes/shadcn-theme.css +169 -0
- package/dist/themes/theme.css +12 -0
- package/dist/themes/themes.json +31 -0
- package/dist/themes/wmm.css +29 -0
- package/dist/tokens.css +82 -0
- package/package.json +68 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Single source of truth for WMM's 3 themes — light, dark, wmm.
|
|
2
|
+
//
|
|
3
|
+
// Each theme is a flat set of SEMANTIC keys (vocabulary-neutral). The generator
|
|
4
|
+
// (scripts/gen-theme-css.mjs) maps these to TWO CSS files so apps on either
|
|
5
|
+
// variable vocabulary stay in sync from this one palette:
|
|
6
|
+
// - app-theme.css → wmm-native names (--bg/--surface/--fg/--muted/…) [wmm-tasks vocab]
|
|
7
|
+
// - shadcn-theme.css → shadcn names (--background/--card/--muted/…) [wmm-os / DS vocab]
|
|
8
|
+
//
|
|
9
|
+
// Edit values HERE, then `npm run build` (runs the generator). Never hand-edit
|
|
10
|
+
// the generated *.css.
|
|
11
|
+
//
|
|
12
|
+
// light/dark = the tuned app OKLCH set (from wmm-tasks/wmm-os).
|
|
13
|
+
// wmm = the marketing/dark brand palette on deep navy.
|
|
14
|
+
//
|
|
15
|
+
// BRAND (2026-07, aligned to production wmm-os + wmm-tasks + wmm-website):
|
|
16
|
+
// Pearl Aqua #8fccb6 = primary (was teal #00c4b4)
|
|
17
|
+
// Periwinkle #869ce2 = accent (was violet #7c3aed); blue-lift #7388cf
|
|
18
|
+
// Space Cadet #1f2d56 = logo ink on light (no longer the light-mode primary)
|
|
19
|
+
// dark + wmm run aqua-on-navy (app + marketing); light runs Pearl-Aqua-darkened-for-AA
|
|
20
|
+
// (#4f8a72, confirmed canonical by Fran 2026-07-13 — matches wmm-tasks' light primary).
|
|
21
|
+
|
|
22
|
+
export const themes = {
|
|
23
|
+
light: {
|
|
24
|
+
scheme: "light",
|
|
25
|
+
bg: "oklch(0.985 0.003 250)",
|
|
26
|
+
surface: "oklch(1 0 0)",
|
|
27
|
+
card: "oklch(1 0 0)",
|
|
28
|
+
overlay: "oklch(0.965 0.004 250)",
|
|
29
|
+
fg: "oklch(0.22 0.012 260)",
|
|
30
|
+
mutedText: "oklch(0.42 0.012 260)",
|
|
31
|
+
faint: "oklch(0.58 0.01 260)",
|
|
32
|
+
border: "oklch(0 0 0 / 8%)",
|
|
33
|
+
borderStrong: "oklch(0 0 0 / 14%)",
|
|
34
|
+
primary: "#4f8a72",
|
|
35
|
+
primaryDim: "rgba(79, 138, 114, 0.10)",
|
|
36
|
+
primaryFg: "#ffffff",
|
|
37
|
+
accent: "#4a5fb0",
|
|
38
|
+
accentFg: "#ffffff",
|
|
39
|
+
danger: "oklch(0.56 0.22 25)",
|
|
40
|
+
warn: "oklch(0.62 0.16 65)",
|
|
41
|
+
ok: "oklch(0.55 0.16 150)",
|
|
42
|
+
ring: "#4f8a72",
|
|
43
|
+
input: "oklch(0 0 0 / 14%)",
|
|
44
|
+
// Categorical chart/badge palette (8-way, AA-darkened) — exact parity with
|
|
45
|
+
// wmm-tasks' light theme (reports-charts.tsx, capacity-grid.tsx).
|
|
46
|
+
chart1: "#0284c7", chart2: "#16a34a", chart3: "#b45309", chart4: "#7c3aed",
|
|
47
|
+
chart5: "#dc2626", chart6: "#0d9488", chart7: "#db2777", chart8: "#475569",
|
|
48
|
+
},
|
|
49
|
+
dark: {
|
|
50
|
+
scheme: "dark",
|
|
51
|
+
bg: "oklch(0.13 0.005 260)",
|
|
52
|
+
surface: "oklch(0.16 0.006 260)",
|
|
53
|
+
card: "oklch(0.18 0.006 260)",
|
|
54
|
+
overlay: "oklch(0.21 0.008 260)",
|
|
55
|
+
fg: "oklch(0.97 0 0)",
|
|
56
|
+
mutedText: "oklch(0.74 0.012 260)",
|
|
57
|
+
faint: "oklch(0.58 0.011 260)",
|
|
58
|
+
border: "oklch(1 0 0 / 9%)",
|
|
59
|
+
borderStrong: "oklch(1 0 0 / 16%)",
|
|
60
|
+
primary: "#8fccb6",
|
|
61
|
+
primaryDim: "rgba(143, 204, 182, 0.16)",
|
|
62
|
+
primaryFg: "#04201c",
|
|
63
|
+
accent: "#869ce2",
|
|
64
|
+
accentFg: "#0a1222",
|
|
65
|
+
danger: "oklch(0.66 0.22 25)",
|
|
66
|
+
warn: "oklch(0.80 0.16 75)",
|
|
67
|
+
ok: "oklch(0.78 0.17 150)",
|
|
68
|
+
ring: "#8fccb6",
|
|
69
|
+
input: "oklch(1 0 0 / 16%)",
|
|
70
|
+
// Categorical chart/badge palette (8-way) — exact parity with wmm-tasks' dark theme.
|
|
71
|
+
chart1: "#38bdf8", chart2: "#4ade80", chart3: "#fbbf24", chart4: "#a78bfa",
|
|
72
|
+
chart5: "#f87171", chart6: "#2dd4bf", chart7: "#f472b6", chart8: "#94a3b8",
|
|
73
|
+
},
|
|
74
|
+
wmm: {
|
|
75
|
+
scheme: "dark",
|
|
76
|
+
bg: "#080b14",
|
|
77
|
+
surface: "#0b1322",
|
|
78
|
+
card: "#0f172a",
|
|
79
|
+
overlay: "#16203a",
|
|
80
|
+
fg: "#f8fafc",
|
|
81
|
+
mutedText: "#94a3b8",
|
|
82
|
+
faint: "#64748b",
|
|
83
|
+
border: "rgba(255, 255, 255, 0.08)",
|
|
84
|
+
borderStrong: "rgba(255, 255, 255, 0.14)",
|
|
85
|
+
primary: "#8fccb6",
|
|
86
|
+
primaryDim: "rgba(143, 204, 182, 0.16)",
|
|
87
|
+
primaryFg: "#04201c",
|
|
88
|
+
accent: "#869ce2",
|
|
89
|
+
accentFg: "#0a1222",
|
|
90
|
+
danger: "#ef4444",
|
|
91
|
+
warn: "#f59e0b",
|
|
92
|
+
ok: "#22c55e",
|
|
93
|
+
ring: "#8fccb6",
|
|
94
|
+
input: "rgba(255, 255, 255, 0.14)",
|
|
95
|
+
// Same categorical set as `dark` — reused for consistency on marketing pages.
|
|
96
|
+
chart1: "#38bdf8", chart2: "#4ade80", chart3: "#fbbf24", chart4: "#a78bfa",
|
|
97
|
+
chart5: "#f87171", chart6: "#2dd4bf", chart7: "#f472b6", chart8: "#94a3b8",
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// Brand accents — always available regardless of active theme.
|
|
102
|
+
// Aligned 2026-07 to production (aqua/periwinkle/navy). Legacy teal/violet/sky
|
|
103
|
+
// keys retained as aliases pointing at the new palette so existing --wmm-* refs work.
|
|
104
|
+
export const brand = {
|
|
105
|
+
"wmm-aqua": "#8fccb6",
|
|
106
|
+
"wmm-periwinkle": "#869ce2",
|
|
107
|
+
"wmm-blue-lift": "#7388cf",
|
|
108
|
+
"wmm-navy": "#1f2d56",
|
|
109
|
+
"wmm-glow": "rgba(143, 204, 182, 0.15)",
|
|
110
|
+
// legacy aliases (deprecated — map to the current brand)
|
|
111
|
+
"wmm-teal": "#8fccb6",
|
|
112
|
+
"wmm-violet": "#869ce2",
|
|
113
|
+
"wmm-sky": "#7388cf",
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// Per-theme metadata — lets the OS / app shells label + offer the switcher.
|
|
117
|
+
export const themeMeta = {
|
|
118
|
+
light: { name: "light", label: "Light", channel: "app", platforms: ["desktop", "mobile"] },
|
|
119
|
+
dark: { name: "dark", label: "Dark", channel: "app", platforms: ["desktop", "mobile"] },
|
|
120
|
+
wmm: { name: "wmm", label: "WMM", channel: "landing", platforms: ["desktop", "mobile"] },
|
|
121
|
+
};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/* GENERATED by scripts/gen-theme-css.mjs — DO NOT EDIT.
|
|
2
|
+
Source of truth: src/themes/palette.mjs · variant: shadcn vocab
|
|
3
|
+
Themes: light (default), dark, wmm — switch via [data-theme]. */
|
|
4
|
+
|
|
5
|
+
@theme inline {
|
|
6
|
+
--color-background: var(--background);
|
|
7
|
+
--color-foreground: var(--foreground);
|
|
8
|
+
--color-card: var(--card);
|
|
9
|
+
--color-card-foreground: var(--card-foreground);
|
|
10
|
+
--color-popover: var(--popover);
|
|
11
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
12
|
+
--color-primary: var(--primary);
|
|
13
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
14
|
+
--color-secondary: var(--secondary);
|
|
15
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
16
|
+
--color-muted: var(--muted);
|
|
17
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
18
|
+
--color-accent: var(--accent);
|
|
19
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
20
|
+
--color-destructive: var(--destructive);
|
|
21
|
+
--color-danger: var(--destructive);
|
|
22
|
+
--color-border: var(--border);
|
|
23
|
+
--color-input: var(--input);
|
|
24
|
+
--color-ring: var(--ring);
|
|
25
|
+
--color-chart-1: var(--chart-1);
|
|
26
|
+
--color-chart-2: var(--chart-2);
|
|
27
|
+
--color-chart-3: var(--chart-3);
|
|
28
|
+
--color-chart-4: var(--chart-4);
|
|
29
|
+
--color-chart-5: var(--chart-5);
|
|
30
|
+
--color-sidebar: var(--sidebar);
|
|
31
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
32
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
33
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
34
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
35
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
36
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
37
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
38
|
+
--radius-sm: var(--radius-sm);
|
|
39
|
+
--radius-md: var(--radius-md);
|
|
40
|
+
--radius-lg: var(--radius-lg);
|
|
41
|
+
--radius-xl: var(--radius-xl);
|
|
42
|
+
--radius-2xl: var(--radius-2xl);
|
|
43
|
+
--radius-3xl: var(--radius-3xl);
|
|
44
|
+
--radius-4xl: var(--radius-4xl);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:root {
|
|
48
|
+
--radius: 0.625rem;
|
|
49
|
+
--radius-sm: calc(var(--radius) * 0.6);
|
|
50
|
+
--radius-md: calc(var(--radius) * 0.8);
|
|
51
|
+
--radius-lg: var(--radius);
|
|
52
|
+
--radius-xl: calc(var(--radius) * 1.4);
|
|
53
|
+
--radius-2xl: calc(var(--radius) * 1.8);
|
|
54
|
+
--radius-3xl: calc(var(--radius) * 2.2);
|
|
55
|
+
--radius-4xl: calc(var(--radius) * 2.6);
|
|
56
|
+
--wmm-aqua: #8fccb6;
|
|
57
|
+
--wmm-periwinkle: #869ce2;
|
|
58
|
+
--wmm-blue-lift: #7388cf;
|
|
59
|
+
--wmm-navy: #1f2d56;
|
|
60
|
+
--wmm-glow: rgba(143, 204, 182, 0.15);
|
|
61
|
+
--wmm-teal: #8fccb6;
|
|
62
|
+
--wmm-violet: #869ce2;
|
|
63
|
+
--wmm-sky: #7388cf;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:root, [data-theme="light"] {
|
|
67
|
+
color-scheme: light;
|
|
68
|
+
--background: oklch(0.985 0.003 250);
|
|
69
|
+
--foreground: oklch(0.22 0.012 260);
|
|
70
|
+
--card: oklch(1 0 0);
|
|
71
|
+
--card-foreground: oklch(0.22 0.012 260);
|
|
72
|
+
--popover: oklch(0.965 0.004 250);
|
|
73
|
+
--popover-foreground: oklch(0.22 0.012 260);
|
|
74
|
+
--primary: #4f8a72;
|
|
75
|
+
--primary-foreground: #ffffff;
|
|
76
|
+
--secondary: oklch(1 0 0);
|
|
77
|
+
--secondary-foreground: oklch(0.22 0.012 260);
|
|
78
|
+
--muted: oklch(1 0 0);
|
|
79
|
+
--muted-foreground: oklch(0.42 0.012 260);
|
|
80
|
+
--accent: oklch(0.965 0.004 250);
|
|
81
|
+
--accent-foreground: oklch(0.22 0.012 260);
|
|
82
|
+
--destructive: oklch(0.56 0.22 25);
|
|
83
|
+
--border: oklch(0 0 0 / 8%);
|
|
84
|
+
--input: oklch(0 0 0 / 14%);
|
|
85
|
+
--ring: #4f8a72;
|
|
86
|
+
--chart-1: #4f8a72;
|
|
87
|
+
--chart-2: #4a5fb0;
|
|
88
|
+
--chart-3: #7388cf;
|
|
89
|
+
--chart-4: oklch(0.62 0.16 65);
|
|
90
|
+
--chart-5: oklch(0.55 0.16 150);
|
|
91
|
+
--sidebar: oklch(1 0 0);
|
|
92
|
+
--sidebar-foreground: oklch(0.22 0.012 260);
|
|
93
|
+
--sidebar-primary: #4f8a72;
|
|
94
|
+
--sidebar-primary-foreground: #ffffff;
|
|
95
|
+
--sidebar-accent: oklch(0.965 0.004 250);
|
|
96
|
+
--sidebar-accent-foreground: oklch(0.22 0.012 260);
|
|
97
|
+
--sidebar-border: oklch(0 0 0 / 8%);
|
|
98
|
+
--sidebar-ring: #4f8a72;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
[data-theme="dark"] {
|
|
102
|
+
color-scheme: dark;
|
|
103
|
+
--background: oklch(0.13 0.005 260);
|
|
104
|
+
--foreground: oklch(0.97 0 0);
|
|
105
|
+
--card: oklch(0.18 0.006 260);
|
|
106
|
+
--card-foreground: oklch(0.97 0 0);
|
|
107
|
+
--popover: oklch(0.21 0.008 260);
|
|
108
|
+
--popover-foreground: oklch(0.97 0 0);
|
|
109
|
+
--primary: #8fccb6;
|
|
110
|
+
--primary-foreground: #04201c;
|
|
111
|
+
--secondary: oklch(0.16 0.006 260);
|
|
112
|
+
--secondary-foreground: oklch(0.97 0 0);
|
|
113
|
+
--muted: oklch(0.16 0.006 260);
|
|
114
|
+
--muted-foreground: oklch(0.74 0.012 260);
|
|
115
|
+
--accent: oklch(0.21 0.008 260);
|
|
116
|
+
--accent-foreground: oklch(0.97 0 0);
|
|
117
|
+
--destructive: oklch(0.66 0.22 25);
|
|
118
|
+
--border: oklch(1 0 0 / 9%);
|
|
119
|
+
--input: oklch(1 0 0 / 16%);
|
|
120
|
+
--ring: #8fccb6;
|
|
121
|
+
--chart-1: #8fccb6;
|
|
122
|
+
--chart-2: #869ce2;
|
|
123
|
+
--chart-3: #7388cf;
|
|
124
|
+
--chart-4: oklch(0.80 0.16 75);
|
|
125
|
+
--chart-5: oklch(0.78 0.17 150);
|
|
126
|
+
--sidebar: oklch(0.16 0.006 260);
|
|
127
|
+
--sidebar-foreground: oklch(0.97 0 0);
|
|
128
|
+
--sidebar-primary: #8fccb6;
|
|
129
|
+
--sidebar-primary-foreground: #04201c;
|
|
130
|
+
--sidebar-accent: oklch(0.21 0.008 260);
|
|
131
|
+
--sidebar-accent-foreground: oklch(0.97 0 0);
|
|
132
|
+
--sidebar-border: oklch(1 0 0 / 9%);
|
|
133
|
+
--sidebar-ring: #8fccb6;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
[data-theme="wmm"] {
|
|
137
|
+
color-scheme: dark;
|
|
138
|
+
--background: #080b14;
|
|
139
|
+
--foreground: #f8fafc;
|
|
140
|
+
--card: #0f172a;
|
|
141
|
+
--card-foreground: #f8fafc;
|
|
142
|
+
--popover: #16203a;
|
|
143
|
+
--popover-foreground: #f8fafc;
|
|
144
|
+
--primary: #8fccb6;
|
|
145
|
+
--primary-foreground: #04201c;
|
|
146
|
+
--secondary: #0b1322;
|
|
147
|
+
--secondary-foreground: #f8fafc;
|
|
148
|
+
--muted: #0b1322;
|
|
149
|
+
--muted-foreground: #94a3b8;
|
|
150
|
+
--accent: #16203a;
|
|
151
|
+
--accent-foreground: #f8fafc;
|
|
152
|
+
--destructive: #ef4444;
|
|
153
|
+
--border: rgba(255, 255, 255, 0.08);
|
|
154
|
+
--input: rgba(255, 255, 255, 0.14);
|
|
155
|
+
--ring: #8fccb6;
|
|
156
|
+
--chart-1: #8fccb6;
|
|
157
|
+
--chart-2: #869ce2;
|
|
158
|
+
--chart-3: #7388cf;
|
|
159
|
+
--chart-4: #f59e0b;
|
|
160
|
+
--chart-5: #22c55e;
|
|
161
|
+
--sidebar: #0b1322;
|
|
162
|
+
--sidebar-foreground: #f8fafc;
|
|
163
|
+
--sidebar-primary: #8fccb6;
|
|
164
|
+
--sidebar-primary-foreground: #04201c;
|
|
165
|
+
--sidebar-accent: #16203a;
|
|
166
|
+
--sidebar-accent-foreground: #f8fafc;
|
|
167
|
+
--sidebar-border: rgba(255, 255, 255, 0.08);
|
|
168
|
+
--sidebar-ring: #8fccb6;
|
|
169
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* @web-my-money/tokens/theme — default full theme bundle.
|
|
2
|
+
Import this once in globals.css — gives you light, dark, and wmm themes,
|
|
3
|
+
plus the WMM brand accent constants (--wmm-teal, --wmm-violet, --wmm-sky).
|
|
4
|
+
|
|
5
|
+
@import "@web-my-money/tokens/theme";
|
|
6
|
+
|
|
7
|
+
CSS vocab: shadcn-compatible (--background, --foreground, --primary …).
|
|
8
|
+
For apps using wmm-native vocab (--bg, --fg …) use ./app-theme.css instead.
|
|
9
|
+
For brand logo ink, also add: @import "@web-my-money/brand/brand.css"; */
|
|
10
|
+
|
|
11
|
+
@import "./shadcn-theme.css";
|
|
12
|
+
@import "./extended.css";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"themes": [
|
|
3
|
+
{
|
|
4
|
+
"name": "light",
|
|
5
|
+
"label": "Light",
|
|
6
|
+
"channel": "app",
|
|
7
|
+
"platforms": [
|
|
8
|
+
"desktop",
|
|
9
|
+
"mobile"
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "dark",
|
|
14
|
+
"label": "Dark",
|
|
15
|
+
"channel": "app",
|
|
16
|
+
"platforms": [
|
|
17
|
+
"desktop",
|
|
18
|
+
"mobile"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "wmm",
|
|
23
|
+
"label": "WMM",
|
|
24
|
+
"channel": "landing",
|
|
25
|
+
"platforms": [
|
|
26
|
+
"desktop",
|
|
27
|
+
"mobile"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WMM Brand Theme CSS — import this in dark-mode marketing sites.
|
|
3
|
+
* Usage: @import "@web-my-money/tokens/themes/wmm.css";
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--background: #080b14;
|
|
8
|
+
--foreground: #f8fafc;
|
|
9
|
+
--muted: #94a3b8;
|
|
10
|
+
--card: #0f172a;
|
|
11
|
+
--border: rgba(255, 255, 255, 0.08);
|
|
12
|
+
--teal: #8fccb6;
|
|
13
|
+
--violet: #869ce2;
|
|
14
|
+
--sky: #7388cf;
|
|
15
|
+
--glow: rgba(143, 204, 182, 0.15);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
body {
|
|
19
|
+
background:
|
|
20
|
+
radial-gradient(circle at 50% -2%, rgba(115, 136, 207, 0.10), transparent 30%),
|
|
21
|
+
radial-gradient(circle at 84% 6%, rgba(31, 45, 86, 0.45), transparent 36%),
|
|
22
|
+
linear-gradient(180deg, #070b13 0%, #080c14 46%, #0a1220 100%);
|
|
23
|
+
color: var(--foreground);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
::selection {
|
|
27
|
+
background: rgba(143, 204, 182, 0.25);
|
|
28
|
+
color: var(--foreground);
|
|
29
|
+
}
|
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core design tokens as CSS custom properties.
|
|
3
|
+
* Usage: @import "@web-my-money/tokens/css";
|
|
4
|
+
*
|
|
5
|
+
* Then apply a theme CSS on top for brand colors.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
/* ── Semantic Colors (light) ─────────────────────── */
|
|
10
|
+
--background: oklch(1 0 0);
|
|
11
|
+
--foreground: oklch(0.145 0 0);
|
|
12
|
+
--card: oklch(1 0 0);
|
|
13
|
+
--card-foreground: oklch(0.145 0 0);
|
|
14
|
+
--popover: oklch(1 0 0);
|
|
15
|
+
--popover-foreground: oklch(0.145 0 0);
|
|
16
|
+
--primary: oklch(0.205 0 0);
|
|
17
|
+
--primary-foreground: oklch(0.985 0 0);
|
|
18
|
+
--secondary: oklch(0.97 0 0);
|
|
19
|
+
--secondary-foreground: oklch(0.205 0 0);
|
|
20
|
+
--muted: oklch(0.97 0 0);
|
|
21
|
+
--muted-foreground: oklch(0.556 0 0);
|
|
22
|
+
--accent: oklch(0.97 0 0);
|
|
23
|
+
--accent-foreground: oklch(0.205 0 0);
|
|
24
|
+
--destructive: oklch(0.577 0.245 27.325);
|
|
25
|
+
--border: oklch(0.922 0 0);
|
|
26
|
+
--input: oklch(0.922 0 0);
|
|
27
|
+
--ring: oklch(0.708 0 0);
|
|
28
|
+
|
|
29
|
+
/* ── Charts ──────────────────────────────────────── */
|
|
30
|
+
--chart-1: oklch(0.87 0 0);
|
|
31
|
+
--chart-2: oklch(0.556 0 0);
|
|
32
|
+
--chart-3: oklch(0.439 0 0);
|
|
33
|
+
--chart-4: oklch(0.371 0 0);
|
|
34
|
+
--chart-5: oklch(0.269 0 0);
|
|
35
|
+
|
|
36
|
+
/* ── Sidebar ─────────────────────────────────────── */
|
|
37
|
+
--sidebar: oklch(0.985 0 0);
|
|
38
|
+
--sidebar-foreground: oklch(0.145 0 0);
|
|
39
|
+
--sidebar-primary: oklch(0.205 0 0);
|
|
40
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
41
|
+
--sidebar-accent: oklch(0.97 0 0);
|
|
42
|
+
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
43
|
+
--sidebar-border: oklch(0.922 0 0);
|
|
44
|
+
--sidebar-ring: oklch(0.708 0 0);
|
|
45
|
+
|
|
46
|
+
/* ── Radius ──────────────────────────────────────── */
|
|
47
|
+
--radius: 0.625rem;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.dark {
|
|
51
|
+
--background: oklch(0.145 0 0);
|
|
52
|
+
--foreground: oklch(0.985 0 0);
|
|
53
|
+
--card: oklch(0.205 0 0);
|
|
54
|
+
--card-foreground: oklch(0.985 0 0);
|
|
55
|
+
--popover: oklch(0.205 0 0);
|
|
56
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
57
|
+
--primary: oklch(0.922 0 0);
|
|
58
|
+
--primary-foreground: oklch(0.205 0 0);
|
|
59
|
+
--secondary: oklch(0.269 0 0);
|
|
60
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
61
|
+
--muted: oklch(0.269 0 0);
|
|
62
|
+
--muted-foreground: oklch(0.708 0 0);
|
|
63
|
+
--accent: oklch(0.269 0 0);
|
|
64
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
65
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
66
|
+
--border: oklch(1 0 0 / 10%);
|
|
67
|
+
--input: oklch(1 0 0 / 15%);
|
|
68
|
+
--ring: oklch(0.556 0 0);
|
|
69
|
+
--chart-1: oklch(0.87 0 0);
|
|
70
|
+
--chart-2: oklch(0.556 0 0);
|
|
71
|
+
--chart-3: oklch(0.439 0 0);
|
|
72
|
+
--chart-4: oklch(0.371 0 0);
|
|
73
|
+
--chart-5: oklch(0.269 0 0);
|
|
74
|
+
--sidebar: oklch(0.205 0 0);
|
|
75
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
76
|
+
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
77
|
+
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
78
|
+
--sidebar-accent: oklch(0.269 0 0);
|
|
79
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
80
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
81
|
+
--sidebar-ring: oklch(0.556 0 0);
|
|
82
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@web-my-money/tokens",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Design tokens for WMM Design System — colors, typography, spacing, shadows, themes, fonts, React theme helpers",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./theme": "./dist/themes/theme.css",
|
|
15
|
+
"./css": "./dist/tokens.css",
|
|
16
|
+
"./themes/*": "./dist/themes/*.css",
|
|
17
|
+
"./themes.json": "./dist/themes/themes.json",
|
|
18
|
+
"./fonts.css": "./dist/fonts.css",
|
|
19
|
+
"./fonts/*": "./dist/fonts/*",
|
|
20
|
+
"./tailwind-preset": {
|
|
21
|
+
"types": "./dist/tailwind-preset.d.ts",
|
|
22
|
+
"import": "./dist/tailwind-preset.mjs",
|
|
23
|
+
"require": "./dist/tailwind-preset.js"
|
|
24
|
+
},
|
|
25
|
+
"./react": {
|
|
26
|
+
"types": "./dist/react.d.ts",
|
|
27
|
+
"import": "./dist/react.mjs",
|
|
28
|
+
"require": "./dist/react.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"bin"
|
|
34
|
+
],
|
|
35
|
+
"bin": {
|
|
36
|
+
"wmm-doctor": "./bin/doctor.mjs"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"registry": "https://registry.npmjs.org",
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"gen:themes": "node scripts/gen-theme-css.mjs",
|
|
44
|
+
"gen:client-theme": "node scripts/gen-client-theme.mjs",
|
|
45
|
+
"build": "node scripts/gen-theme-css.mjs && tsup src/index.ts src/tailwind-preset.ts src/react.tsx --format cjs,esm --dts --external react --external react-dom && node scripts/copy-assets.mjs",
|
|
46
|
+
"typecheck": "tsc --noEmit"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
50
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
51
|
+
},
|
|
52
|
+
"peerDependenciesMeta": {
|
|
53
|
+
"react": {
|
|
54
|
+
"optional": true
|
|
55
|
+
},
|
|
56
|
+
"react-dom": {
|
|
57
|
+
"optional": true
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/react": "^19.0.0",
|
|
62
|
+
"@types/react-dom": "^19.0.0",
|
|
63
|
+
"tailwindcss": "^3.4.0",
|
|
64
|
+
"tsup": "^8.4.0",
|
|
65
|
+
"typescript": "^5.8.0"
|
|
66
|
+
},
|
|
67
|
+
"license": "UNLICENSED"
|
|
68
|
+
}
|