@pcoi/tokens 0.1.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/build/index.d.ts +308 -0
- package/build/index.js +310 -0
- package/build/index.mjs +309 -0
- package/build/tokens.css +473 -0
- package/build/tokens.json +1423 -0
- package/build/tokens.scss +270 -0
- package/package.json +29 -0
- package/src/color/light.json +52 -0
- package/src/color/primitives.json +130 -0
- package/src/color/semantics.json +90 -0
- package/src/effects/primitives.json +122 -0
- package/src/layout/primitives.json +101 -0
- package/src/radius/primitives.json +11 -0
- package/src/radius/semantics.json +31 -0
- package/src/sizing/primitives.json +15 -0
- package/src/sizing/semantics.json +14 -0
- package/src/spacing/primitives.json +29 -0
- package/src/spacing/semantics.json +83 -0
- package/src/typography/primitives.json +69 -0
- package/src/typography/semantics.json +220 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
// @pcoi/tokens — SCSS Variables
|
|
2
|
+
// Generated 2026-03-03
|
|
3
|
+
|
|
4
|
+
// Color Primitives
|
|
5
|
+
$pcoi-color-bg: #0C0C14;
|
|
6
|
+
$pcoi-color-bg-alt: #111120;
|
|
7
|
+
$pcoi-color-bg-card: #16162A;
|
|
8
|
+
$pcoi-color-bg-card-hover: #1C1C38;
|
|
9
|
+
$pcoi-color-surface: #1A1A2E;
|
|
10
|
+
$pcoi-color-accent: #D4A44C;
|
|
11
|
+
$pcoi-color-accent-hover: #E0B560;
|
|
12
|
+
$pcoi-color-text-primary: #E8E8F0;
|
|
13
|
+
$pcoi-color-text-secondary: #9595B0;
|
|
14
|
+
$pcoi-color-text-muted: #8585A0;
|
|
15
|
+
$pcoi-color-success: #3DA87A;
|
|
16
|
+
$pcoi-color-error: #E05252;
|
|
17
|
+
$pcoi-color-warning: #E8943A;
|
|
18
|
+
$pcoi-color-info: #5B8BD4;
|
|
19
|
+
$pcoi-color-white: #FFFFFF;
|
|
20
|
+
$pcoi-color-black: #000000;
|
|
21
|
+
$pcoi-color-border: rgba(255, 255, 255, 0.35);
|
|
22
|
+
$pcoi-color-border-hover: rgba(255, 255, 255, 0.45);
|
|
23
|
+
$pcoi-color-border-soft: rgba(255, 255, 255, 0.06);
|
|
24
|
+
$pcoi-color-border-soft-hover: rgba(255, 255, 255, 0.12);
|
|
25
|
+
$pcoi-color-accent-glow: rgba(212, 164, 76, 0.15);
|
|
26
|
+
$pcoi-color-accent-dim: rgba(212, 164, 76, 0.08);
|
|
27
|
+
$pcoi-color-highlight: rgba(212, 164, 76, 0.06);
|
|
28
|
+
$pcoi-color-nav-scrolled-bg: rgba(12, 12, 20, 0.92);
|
|
29
|
+
$pcoi-color-ghost-hover-bg: rgba(255, 255, 255, 0.03);
|
|
30
|
+
$pcoi-color-ghost-hover-border: rgba(255, 255, 255, 0.35);
|
|
31
|
+
$pcoi-color-focus-border: rgba(212, 164, 76, 0.55);
|
|
32
|
+
$pcoi-color-focus-glow: rgba(212, 164, 76, 0.08);
|
|
33
|
+
$pcoi-color-accent-border-subtle: rgba(212, 164, 76, 0.58);
|
|
34
|
+
$pcoi-color-accent-border-dim: rgba(212, 164, 76, 0.52);
|
|
35
|
+
$pcoi-color-grid-line: rgba(255, 255, 255, 0.02);
|
|
36
|
+
|
|
37
|
+
// Spacing
|
|
38
|
+
$pcoi-spacing-0: 0px;
|
|
39
|
+
$pcoi-spacing-4: 4px;
|
|
40
|
+
$pcoi-spacing-5: 5px;
|
|
41
|
+
$pcoi-spacing-6: 6px;
|
|
42
|
+
$pcoi-spacing-8: 8px;
|
|
43
|
+
$pcoi-spacing-10: 10px;
|
|
44
|
+
$pcoi-spacing-12: 12px;
|
|
45
|
+
$pcoi-spacing-14: 14px;
|
|
46
|
+
$pcoi-spacing-16: 16px;
|
|
47
|
+
$pcoi-spacing-20: 20px;
|
|
48
|
+
$pcoi-spacing-22: 22px;
|
|
49
|
+
$pcoi-spacing-24: 24px;
|
|
50
|
+
$pcoi-spacing-28: 28px;
|
|
51
|
+
$pcoi-spacing-32: 32px;
|
|
52
|
+
$pcoi-spacing-36: 36px;
|
|
53
|
+
$pcoi-spacing-40: 40px;
|
|
54
|
+
$pcoi-spacing-48: 48px;
|
|
55
|
+
$pcoi-spacing-60: 60px;
|
|
56
|
+
$pcoi-spacing-64: 64px;
|
|
57
|
+
$pcoi-spacing-72: 72px;
|
|
58
|
+
$pcoi-spacing-80: 80px;
|
|
59
|
+
$pcoi-spacing-100: 100px;
|
|
60
|
+
$pcoi-spacing-120: 120px;
|
|
61
|
+
|
|
62
|
+
// Radius
|
|
63
|
+
$pcoi-radius-sm: 6px;
|
|
64
|
+
$pcoi-radius-md: 12px;
|
|
65
|
+
$pcoi-radius-lg: 20px;
|
|
66
|
+
$pcoi-radius-xl: 28px;
|
|
67
|
+
$pcoi-radius-full: 9999px;
|
|
68
|
+
|
|
69
|
+
// Typography
|
|
70
|
+
$pcoi-font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
71
|
+
$pcoi-font-family-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
|
72
|
+
$pcoi-font-weight-light: 300;
|
|
73
|
+
$pcoi-font-weight-regular: 400;
|
|
74
|
+
$pcoi-font-weight-medium: 500;
|
|
75
|
+
$pcoi-font-weight-semibold: 600;
|
|
76
|
+
$pcoi-font-weight-bold: 700;
|
|
77
|
+
$pcoi-font-weight-extrabold: 800;
|
|
78
|
+
$pcoi-font-size-xs: 0.7rem;
|
|
79
|
+
$pcoi-font-size-sm: 0.75rem;
|
|
80
|
+
$pcoi-font-size-caption: 0.8rem;
|
|
81
|
+
$pcoi-font-size-body-sm: 0.85rem;
|
|
82
|
+
$pcoi-font-size-nav: 0.875rem;
|
|
83
|
+
$pcoi-font-size-body: 0.9rem;
|
|
84
|
+
$pcoi-font-size-body-default: 0.95rem;
|
|
85
|
+
$pcoi-font-size-body-lg: 1rem;
|
|
86
|
+
$pcoi-font-size-lead: 1.05rem;
|
|
87
|
+
$pcoi-font-size-sub: 1.1rem;
|
|
88
|
+
$pcoi-font-size-h3: 1.15rem;
|
|
89
|
+
$pcoi-font-size-h3-lg: 1.2rem;
|
|
90
|
+
$pcoi-font-size-logo: 1.35rem;
|
|
91
|
+
$pcoi-font-size-callout: 1.35rem;
|
|
92
|
+
$pcoi-font-size-close-sm: 1.25rem;
|
|
93
|
+
$pcoi-font-size-close-lg: 1.5rem;
|
|
94
|
+
$pcoi-font-size-h2-sm: 2.25rem;
|
|
95
|
+
$pcoi-font-size-h2: 2.5rem;
|
|
96
|
+
$pcoi-font-size-h1: 2.75rem;
|
|
97
|
+
$pcoi-font-size-display: 4rem;
|
|
98
|
+
$pcoi-font-lineHeight-none: 1;
|
|
99
|
+
$pcoi-font-lineHeight-tight: 1.1;
|
|
100
|
+
$pcoi-font-lineHeight-heading: 1.2;
|
|
101
|
+
$pcoi-font-lineHeight-snug: 1.3;
|
|
102
|
+
$pcoi-font-lineHeight-body-sm: 1.5;
|
|
103
|
+
$pcoi-font-lineHeight-body: 1.6;
|
|
104
|
+
$pcoi-font-lineHeight-step: 1.65;
|
|
105
|
+
$pcoi-font-lineHeight-relaxed: 1.7;
|
|
106
|
+
$pcoi-font-letterSpacing-tight: -0.03em;
|
|
107
|
+
$pcoi-font-letterSpacing-heading: -0.02em;
|
|
108
|
+
$pcoi-font-letterSpacing-normal: 0em;
|
|
109
|
+
$pcoi-font-letterSpacing-logo: 0.04em;
|
|
110
|
+
$pcoi-font-letterSpacing-label: 0.06em;
|
|
111
|
+
$pcoi-font-letterSpacing-badge: 0.08em;
|
|
112
|
+
$pcoi-font-letterSpacing-section: 0.1em;
|
|
113
|
+
|
|
114
|
+
// Effects
|
|
115
|
+
$pcoi-effect-shadow-btn-primary-hover: 0 8px 30px rgba(212, 164, 76, 0.25);
|
|
116
|
+
$pcoi-effect-shadow-nav-scrolled: 0 1px 0 rgba(255, 255, 255, 0.06);
|
|
117
|
+
$pcoi-effect-shadow-mobile-menu: 0 12px 40px rgba(0, 0, 0, 0.6);
|
|
118
|
+
$pcoi-effect-shadow-focus-ring: 0 0 0 3px rgba(212, 164, 76, 0.08);
|
|
119
|
+
$pcoi-effect-shadow-focus-ring-error: 0 0 0 3px rgba(224, 82, 82, 0.08);
|
|
120
|
+
$pcoi-effect-shadow-elevated: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
121
|
+
$pcoi-effect-blur-nav-backdrop: 20px;
|
|
122
|
+
$pcoi-effect-transition-fast: 0.2s ease;
|
|
123
|
+
$pcoi-effect-transition-medium: 0.3s ease;
|
|
124
|
+
$pcoi-effect-transition-slow: 0.6s ease;
|
|
125
|
+
$pcoi-effect-opacity-disabled: 0.5;
|
|
126
|
+
$pcoi-effect-transform-hover-lift: translateY(-2px);
|
|
127
|
+
$pcoi-effect-transform-hover-lift-sm: translateY(-1px);
|
|
128
|
+
$pcoi-effect-transform-fade-in-offset: translateY(24px);
|
|
129
|
+
$pcoi-effect-transform-parallax-factor: 0.15;
|
|
130
|
+
$pcoi-effect-transform-press-scale: scale(0.985);
|
|
131
|
+
$pcoi-effect-transform-press-scale-input: scale(0.99);
|
|
132
|
+
$pcoi-effect-transform-press-scale-control: scale(0.95);
|
|
133
|
+
$pcoi-effect-transform-press-scale-track: scale(0.975);
|
|
134
|
+
$pcoi-effect-transform-press-scale-icon: scale(0.925);
|
|
135
|
+
$pcoi-effect-transform-toggle-thumb-on: scale(1.15);
|
|
136
|
+
|
|
137
|
+
// Layout
|
|
138
|
+
$pcoi-layout-container-max: 1200px;
|
|
139
|
+
$pcoi-layout-container-narrow: 800px;
|
|
140
|
+
$pcoi-layout-container-cta: 680px;
|
|
141
|
+
$pcoi-layout-container-callout: 600px;
|
|
142
|
+
$pcoi-layout-container-chamath: 640px;
|
|
143
|
+
$pcoi-layout-container-hero-sub: 520px;
|
|
144
|
+
$pcoi-layout-container-compare: 900px;
|
|
145
|
+
$pcoi-layout-container-wide: 1100px;
|
|
146
|
+
$pcoi-layout-container-modal: 520px;
|
|
147
|
+
$pcoi-layout-container-toast-min: 280px;
|
|
148
|
+
$pcoi-layout-container-toast-max: 420px;
|
|
149
|
+
$pcoi-layout-container-compare-scroll: 500px;
|
|
150
|
+
$pcoi-layout-container-document: 900px;
|
|
151
|
+
$pcoi-layout-nav-height: 72px;
|
|
152
|
+
$pcoi-layout-breakpoint-desktop: 1025px;
|
|
153
|
+
$pcoi-layout-breakpoint-tablet: 1024px;
|
|
154
|
+
$pcoi-layout-breakpoint-mobile: 768px;
|
|
155
|
+
$pcoi-layout-breakpoint-small: 480px;
|
|
156
|
+
$pcoi-layout-zIndex-base: 1;
|
|
157
|
+
$pcoi-layout-zIndex-content: 1;
|
|
158
|
+
$pcoi-layout-zIndex-mobile-menu: 100;
|
|
159
|
+
$pcoi-layout-zIndex-nav: 1000;
|
|
160
|
+
$pcoi-layout-zIndex-dropdown: 200;
|
|
161
|
+
$pcoi-layout-zIndex-modal: 500;
|
|
162
|
+
$pcoi-layout-zIndex-toast: 600;
|
|
163
|
+
$pcoi-layout-component-control-box: 18px;
|
|
164
|
+
$pcoi-layout-component-radio-dot: 8px;
|
|
165
|
+
$pcoi-layout-component-toggle-track-w: 40px;
|
|
166
|
+
$pcoi-layout-component-toggle-track-h: 22px;
|
|
167
|
+
$pcoi-layout-component-toggle-thumb: 16px;
|
|
168
|
+
$pcoi-layout-component-toggle-thumb-inset: 3px;
|
|
169
|
+
$pcoi-layout-component-toggle-thumb-travel: 18px;
|
|
170
|
+
$pcoi-layout-component-toggle-check-w: 4px;
|
|
171
|
+
$pcoi-layout-component-toggle-check-h: 7px;
|
|
172
|
+
$pcoi-layout-component-toggle-check-stroke: 1.5px;
|
|
173
|
+
$pcoi-layout-component-icon-box: 52px;
|
|
174
|
+
$pcoi-layout-component-step-number: 48px;
|
|
175
|
+
$pcoi-layout-component-hamburger: 28px;
|
|
176
|
+
$pcoi-layout-component-hamburger-bar-offset: 7px;
|
|
177
|
+
$pcoi-layout-component-accent-line-w: 60px;
|
|
178
|
+
$pcoi-layout-component-accent-border-w: 3px;
|
|
179
|
+
$pcoi-layout-component-bullet: 8px;
|
|
180
|
+
|
|
181
|
+
// Sizing
|
|
182
|
+
$pcoi-sizing-height-xs: 24px;
|
|
183
|
+
$pcoi-sizing-height-sm: 32px;
|
|
184
|
+
$pcoi-sizing-height-md: 40px;
|
|
185
|
+
$pcoi-sizing-height-lg: 48px;
|
|
186
|
+
$pcoi-sizing-height-xl: 64px;
|
|
187
|
+
$pcoi-sizing-height-2xl: 80px;
|
|
188
|
+
|
|
189
|
+
// Semantic Spacing
|
|
190
|
+
$pcoi-semantic-spacing-section-y: {spacing.80};
|
|
191
|
+
$pcoi-semantic-spacing-section-y-lg: {spacing.120};
|
|
192
|
+
$pcoi-semantic-spacing-component-gap: {spacing.40};
|
|
193
|
+
$pcoi-semantic-spacing-card-padding: {spacing.36};
|
|
194
|
+
$pcoi-semantic-spacing-card-gap: {spacing.20};
|
|
195
|
+
$pcoi-semantic-spacing-form-gap: {spacing.20};
|
|
196
|
+
$pcoi-semantic-spacing-form-padding: {spacing.40};
|
|
197
|
+
$pcoi-semantic-spacing-input-x: {spacing.16};
|
|
198
|
+
$pcoi-semantic-spacing-input-y: {spacing.12};
|
|
199
|
+
$pcoi-semantic-spacing-btn-x: {spacing.24};
|
|
200
|
+
$pcoi-semantic-spacing-btn-y: {spacing.10};
|
|
201
|
+
$pcoi-semantic-spacing-btn-x-lg: {spacing.36};
|
|
202
|
+
$pcoi-semantic-spacing-btn-y-lg: {spacing.16};
|
|
203
|
+
$pcoi-semantic-spacing-nav-height: {spacing.72};
|
|
204
|
+
$pcoi-semantic-spacing-stack-sm: {spacing.8};
|
|
205
|
+
$pcoi-semantic-spacing-stack-md: {spacing.16};
|
|
206
|
+
$pcoi-semantic-spacing-stack-lg: {spacing.32};
|
|
207
|
+
$pcoi-semantic-spacing-inline-sm: {spacing.8};
|
|
208
|
+
$pcoi-semantic-spacing-inline-md: {spacing.16};
|
|
209
|
+
|
|
210
|
+
// Semantic Radius
|
|
211
|
+
$pcoi-semantic-radius-btn: {radius.sm};
|
|
212
|
+
$pcoi-semantic-radius-input: {radius.sm};
|
|
213
|
+
$pcoi-semantic-radius-card: {radius.md};
|
|
214
|
+
$pcoi-semantic-radius-panel: {radius.lg};
|
|
215
|
+
$pcoi-semantic-radius-badge: {radius.full};
|
|
216
|
+
$pcoi-semantic-radius-avatar: {radius.full};
|
|
217
|
+
|
|
218
|
+
// Semantic Sizing
|
|
219
|
+
$pcoi-semantic-sizing-input-height: {sizing.height.md};
|
|
220
|
+
$pcoi-semantic-sizing-btn-height: {sizing.height.md};
|
|
221
|
+
$pcoi-semantic-sizing-btn-height-lg: {sizing.height.lg};
|
|
222
|
+
$pcoi-semantic-sizing-btn-height-nav: {sizing.height.sm};
|
|
223
|
+
$pcoi-semantic-sizing-textarea-min-height: {sizing.height.2xl};
|
|
224
|
+
$pcoi-semantic-sizing-badge-height: {sizing.height.xs};
|
|
225
|
+
$pcoi-semantic-sizing-step-number: {sizing.height.lg};
|
|
226
|
+
$pcoi-semantic-sizing-icon-box: 52px;
|
|
227
|
+
|
|
228
|
+
// Semantic Typography
|
|
229
|
+
$pcoi-semantic-type-heading-font: {font.family.sans};
|
|
230
|
+
$pcoi-semantic-type-body-font: {font.family.sans};
|
|
231
|
+
$pcoi-semantic-type-mono-font: {font.family.mono};
|
|
232
|
+
$pcoi-semantic-type-display-size: clamp(2.5rem, 5vw, 4rem);
|
|
233
|
+
$pcoi-semantic-type-section-title-size: clamp(1.75rem, 3.5vw, 2.75rem);
|
|
234
|
+
$pcoi-semantic-type-section-title-sm-size: clamp(1.75rem, 3.5vw, 2.5rem);
|
|
235
|
+
$pcoi-semantic-type-section-title-xs-size: clamp(1.5rem, 3vw, 2.25rem);
|
|
236
|
+
$pcoi-semantic-type-heading-md-size: {font.size.h3};
|
|
237
|
+
$pcoi-semantic-type-heading-sm-size: {font.size.sub};
|
|
238
|
+
$pcoi-semantic-type-step-title-size: {font.size.h3-lg};
|
|
239
|
+
$pcoi-semantic-type-card-subtitle-size: {font.size.lead};
|
|
240
|
+
$pcoi-semantic-type-body-size: {font.size.body-default};
|
|
241
|
+
$pcoi-semantic-type-body-lg-size: {font.size.body-lg};
|
|
242
|
+
$pcoi-semantic-type-body-compact-size: {font.size.body};
|
|
243
|
+
$pcoi-semantic-type-body-sm-size: {font.size.body-sm};
|
|
244
|
+
$pcoi-semantic-type-nav-size: {font.size.nav};
|
|
245
|
+
$pcoi-semantic-type-label-size: {font.size.caption};
|
|
246
|
+
$pcoi-semantic-type-section-label-size: {font.size.sm};
|
|
247
|
+
$pcoi-semantic-type-badge-size: {font.size.xs};
|
|
248
|
+
$pcoi-semantic-type-callout-size: {font.size.callout};
|
|
249
|
+
$pcoi-semantic-type-logo-size: {font.size.logo};
|
|
250
|
+
$pcoi-semantic-type-close-sm-size: {font.size.close-sm};
|
|
251
|
+
$pcoi-semantic-type-close-lg-size: {font.size.close-lg};
|
|
252
|
+
$pcoi-semantic-type-display-weight: {font.weight.extrabold};
|
|
253
|
+
$pcoi-semantic-type-heading-weight: {font.weight.bold};
|
|
254
|
+
$pcoi-semantic-type-emphasis-weight: {font.weight.semibold};
|
|
255
|
+
$pcoi-semantic-type-label-weight: {font.weight.medium};
|
|
256
|
+
$pcoi-semantic-type-body-weight: {font.weight.regular};
|
|
257
|
+
$pcoi-semantic-type-callout-weight: {font.weight.light};
|
|
258
|
+
$pcoi-semantic-type-display-line-height: {font.lineHeight.tight};
|
|
259
|
+
$pcoi-semantic-type-heading-line-height: {font.lineHeight.heading};
|
|
260
|
+
$pcoi-semantic-type-body-line-height: {font.lineHeight.body};
|
|
261
|
+
$pcoi-semantic-type-body-compact-line-height: {font.lineHeight.body-sm};
|
|
262
|
+
$pcoi-semantic-type-step-line-height: {font.lineHeight.step};
|
|
263
|
+
$pcoi-semantic-type-relaxed-line-height: {font.lineHeight.relaxed};
|
|
264
|
+
$pcoi-semantic-type-none-line-height: {font.lineHeight.none};
|
|
265
|
+
$pcoi-semantic-type-display-letter-spacing: {font.letterSpacing.tight};
|
|
266
|
+
$pcoi-semantic-type-heading-letter-spacing: {font.letterSpacing.heading};
|
|
267
|
+
$pcoi-semantic-type-label-letter-spacing: {font.letterSpacing.label};
|
|
268
|
+
$pcoi-semantic-type-section-label-letter-spacing: {font.letterSpacing.section};
|
|
269
|
+
$pcoi-semantic-type-badge-letter-spacing: {font.letterSpacing.badge};
|
|
270
|
+
$pcoi-semantic-type-logo-letter-spacing: {font.letterSpacing.logo};
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pcoi/tokens",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "PCOI Design System — Foundation tokens (colors, spacing, typography, effects)",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"module": "build/index.mjs",
|
|
7
|
+
"types": "build/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"build/**/*",
|
|
10
|
+
"src/**/*"
|
|
11
|
+
],
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./build/index.mjs",
|
|
15
|
+
"require": "./build/index.js",
|
|
16
|
+
"types": "./build/index.d.ts"
|
|
17
|
+
},
|
|
18
|
+
"./css": "./build/tokens.css",
|
|
19
|
+
"./scss": "./build/tokens.scss",
|
|
20
|
+
"./json": "./build/tokens.json"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "node build-tokens.js",
|
|
24
|
+
"clean": "rm -rf build"
|
|
25
|
+
},
|
|
26
|
+
"keywords": ["design-tokens", "pcoi", "design-system"],
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"sideEffects": false
|
|
29
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Light theme overrides — only values that differ from the dark (default) theme.",
|
|
3
|
+
|
|
4
|
+
"color": {
|
|
5
|
+
"$type": "color",
|
|
6
|
+
"bg": { "$value": "#F5F5FA", "$description": "Page background — cool light grey" },
|
|
7
|
+
"bg-alt": { "$value": "#EEEEF6", "$description": "Alternating section background" },
|
|
8
|
+
"bg-card": { "$value": "#FFFFFF", "$description": "Card and panel background — pure white" },
|
|
9
|
+
"bg-card-hover": { "$value": "#F8F8FD", "$description": "Card background on hover" },
|
|
10
|
+
"surface": { "$value": "#FFFFFF", "$description": "Forms, callouts, elevated containers" },
|
|
11
|
+
"accent": { "$value": "#A8801E", "$description": "Brand gold — darkened for WCAG AA 3:1 toggle/4.5:1 button text on light" },
|
|
12
|
+
"accent-hover": { "$value": "#A07520", "$description": "Accent gold on hover — richer" },
|
|
13
|
+
"text-primary": { "$value": "#1A1A2E", "$description": "Primary text — dark navy" },
|
|
14
|
+
"text-secondary": { "$value": "#4A4A68", "$description": "Secondary text — medium grey-blue" },
|
|
15
|
+
"text-muted": { "$value": "#6A6A86", "$description": "Muted text — darkened for WCAG AA 4.5:1 on light backgrounds" },
|
|
16
|
+
"success": { "$value": "#1B6B4A", "$description": "Success green — darker for light bg" },
|
|
17
|
+
"error": { "$value": "#C03C3C", "$description": "Error red — darker for light bg" },
|
|
18
|
+
"warning": { "$value": "#C07828", "$description": "Warning amber — darker for light bg" },
|
|
19
|
+
"info": { "$value": "#4068B8", "$description": "Info blue — darker for light bg" },
|
|
20
|
+
"border": { "$value": "rgba(0, 0, 0, 0.45)", "$description": "Default border — black at 45% for WCAG AA 3:1 on light backgrounds" },
|
|
21
|
+
"border-hover": { "$value": "rgba(0, 0, 0, 0.55)", "$description": "Hovered border — black at 55% for WCAG AA 3:1+ on light backgrounds" },
|
|
22
|
+
"border-soft": { "$value": "rgba(0, 0, 0, 0.10)", "$description": "Soft decorative border — cards, panels (no WCAG contrast required)" },
|
|
23
|
+
"border-soft-hover":{ "$value": "rgba(0, 0, 0, 0.18)", "$description": "Soft decorative border on hover — cards, panels" },
|
|
24
|
+
"accent-glow": { "$value": "rgba(184, 137, 42, 0.15)", "$description": "Accent glow for shadows" },
|
|
25
|
+
"accent-dim": { "$value": "rgba(184, 137, 42, 0.06)", "$description": "Accent-tinted background" },
|
|
26
|
+
"highlight": { "$value": "rgba(184, 137, 42, 0.04)", "$description": "Subtle accent highlight" },
|
|
27
|
+
"nav-scrolled-bg": { "$value": "rgba(245, 245, 250, 0.92)", "$description": "Nav bg on scroll — semi-transparent light" },
|
|
28
|
+
"ghost-hover-bg": { "$value": "rgba(0, 0, 0, 0.04)", "$description": "Ghost button hover background" },
|
|
29
|
+
"ghost-hover-border": { "$value": "rgba(0, 0, 0, 0.45)", "$description": "Ghost button hover border — WCAG AA 3:1 on light backgrounds" },
|
|
30
|
+
"focus-border": { "$value": "rgba(120, 90, 10, 0.70)", "$description": "Input focus border — darker gold at 70% for WCAG AA 3:1+ on light backgrounds" },
|
|
31
|
+
"focus-glow": { "$value": "rgba(184, 137, 42, 0.12)", "$description": "Input focus outer ring glow" },
|
|
32
|
+
"accent-border-subtle": { "$value": "rgba(80, 60, 5, 0.65)", "$description": "Accent border — darker gold at 65% for WCAG AA 3:1 on light backgrounds" },
|
|
33
|
+
"accent-border-dim": { "$value": "rgba(80, 60, 5, 0.60)", "$description": "Accent border dim — darker gold at 60% for WCAG AA 3:1 on light backgrounds" },
|
|
34
|
+
"grid-line": { "$value": "rgba(0, 0, 0, 0.04)", "$description": "Background grid lines" }
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
"semantic-overrides": {
|
|
38
|
+
"$description": "Semantic tokens with hardcoded values that need light-theme adjustment",
|
|
39
|
+
"text-on-accent": { "$value": "#1A1A2E", "cssVar": "--pcoi-semantic-text-on-accent", "$description": "Dark text on accent backgrounds (buttons)" },
|
|
40
|
+
"action-primary-text":{ "$value": "#1A1A2E", "cssVar": "--pcoi-semantic-action-primary-text", "$description": "Primary button text stays dark on gold" },
|
|
41
|
+
"action-toggle-thumb":{ "$value": "#FFFFFF", "cssVar": "--pcoi-semantic-action-toggle-thumb", "$description": "Toggle thumb stays white" },
|
|
42
|
+
"text-accent": { "$value": "#7A5C1A", "cssVar": "--pcoi-semantic-text-accent", "$description": "Darker gold for WCAG AA 4.5:1 text on light backgrounds" },
|
|
43
|
+
"text-warning": { "$value": "#9A5E18", "cssVar": "--pcoi-semantic-text-warning", "$description": "Darker amber for WCAG AA 4.5:1 text on light backgrounds" }
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
"effect-overrides": {
|
|
47
|
+
"$description": "Effect tokens that need light-theme adjustment",
|
|
48
|
+
"shadow-nav-scrolled": { "$value": "0 1px 0 rgba(0, 0, 0, 0.08)", "cssVar": "--pcoi-effect-shadow-nav-scrolled", "$description": "Nav hairline — dark instead of light" },
|
|
49
|
+
"shadow-mobile-menu": { "$value": "0 12px 40px rgba(0, 0, 0, 0.12)", "cssVar": "--pcoi-effect-shadow-mobile-menu", "$description": "Lighter mobile menu shadow" },
|
|
50
|
+
"shadow-elevated": { "$value": "0 8px 32px rgba(0, 0, 0, 0.10)", "cssVar": "--pcoi-effect-shadow-elevated", "$description": "Lighter elevated shadow for modals" }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"color": {
|
|
3
|
+
"$type": "color",
|
|
4
|
+
"$description": "Tier 1: Primitive color values. Never apply directly to designs.",
|
|
5
|
+
"bg": {
|
|
6
|
+
"$value": "#0C0C14",
|
|
7
|
+
"$description": "Primary page background — deep navy-black"
|
|
8
|
+
},
|
|
9
|
+
"bg-alt": {
|
|
10
|
+
"$value": "#111120",
|
|
11
|
+
"$description": "Alternating section background — slightly lighter"
|
|
12
|
+
},
|
|
13
|
+
"bg-card": {
|
|
14
|
+
"$value": "#16162A",
|
|
15
|
+
"$description": "Card and panel background"
|
|
16
|
+
},
|
|
17
|
+
"bg-card-hover": {
|
|
18
|
+
"$value": "#1C1C38",
|
|
19
|
+
"$description": "Card background on hover state"
|
|
20
|
+
},
|
|
21
|
+
"surface": {
|
|
22
|
+
"$value": "#1A1A2E",
|
|
23
|
+
"$description": "Elevated surface — forms, callouts, input containers"
|
|
24
|
+
},
|
|
25
|
+
"accent": {
|
|
26
|
+
"$value": "#D4A44C",
|
|
27
|
+
"$description": "Brand gold — primary accent color"
|
|
28
|
+
},
|
|
29
|
+
"accent-hover": {
|
|
30
|
+
"$value": "#E0B560",
|
|
31
|
+
"$description": "Accent gold on hover — lighter/warmer"
|
|
32
|
+
},
|
|
33
|
+
"text-primary": {
|
|
34
|
+
"$value": "#E8E8F0",
|
|
35
|
+
"$description": "Primary text — off-white with slight blue tint"
|
|
36
|
+
},
|
|
37
|
+
"text-secondary": {
|
|
38
|
+
"$value": "#9595B0",
|
|
39
|
+
"$description": "Secondary text — muted lavender-grey"
|
|
40
|
+
},
|
|
41
|
+
"text-muted": {
|
|
42
|
+
"$value": "#8585A0",
|
|
43
|
+
"$description": "Muted text — placeholders, footnotes (WCAG AA compliant on surface)"
|
|
44
|
+
},
|
|
45
|
+
"success": {
|
|
46
|
+
"$value": "#3DA87A",
|
|
47
|
+
"$description": "Success/confirmation green — WCAG AA 4.5:1+ on dark backgrounds"
|
|
48
|
+
},
|
|
49
|
+
"error": {
|
|
50
|
+
"$value": "#E05252",
|
|
51
|
+
"$description": "Error/destructive red — validation errors, alerts"
|
|
52
|
+
},
|
|
53
|
+
"warning": {
|
|
54
|
+
"$value": "#E8943A",
|
|
55
|
+
"$description": "Warning amber — caution states, deprecation notices"
|
|
56
|
+
},
|
|
57
|
+
"info": {
|
|
58
|
+
"$value": "#5B8BD4",
|
|
59
|
+
"$description": "Informational blue — tips, help text, neutral alerts"
|
|
60
|
+
},
|
|
61
|
+
"white": {
|
|
62
|
+
"$value": "#FFFFFF",
|
|
63
|
+
"$description": "Pure white — used in alpha calculations"
|
|
64
|
+
},
|
|
65
|
+
"black": {
|
|
66
|
+
"$value": "#000000",
|
|
67
|
+
"$description": "Pure black — used in shadow calculations"
|
|
68
|
+
},
|
|
69
|
+
"border": {
|
|
70
|
+
"$value": "rgba(255, 255, 255, 0.35)",
|
|
71
|
+
"$description": "Default border — white at 35% for WCAG AA 3:1 on dark backgrounds"
|
|
72
|
+
},
|
|
73
|
+
"border-hover": {
|
|
74
|
+
"$value": "rgba(255, 255, 255, 0.45)",
|
|
75
|
+
"$description": "Hovered border — white at 45% for WCAG AA 3:1+ on dark backgrounds"
|
|
76
|
+
},
|
|
77
|
+
"border-soft": {
|
|
78
|
+
"$value": "rgba(255, 255, 255, 0.06)",
|
|
79
|
+
"$description": "Soft decorative border — cards, panels (no WCAG contrast required)"
|
|
80
|
+
},
|
|
81
|
+
"border-soft-hover": {
|
|
82
|
+
"$value": "rgba(255, 255, 255, 0.12)",
|
|
83
|
+
"$description": "Soft decorative border on hover — cards, panels"
|
|
84
|
+
},
|
|
85
|
+
"accent-glow": {
|
|
86
|
+
"$value": "rgba(212, 164, 76, 0.15)",
|
|
87
|
+
"$description": "Accent glow for shadows and overlays"
|
|
88
|
+
},
|
|
89
|
+
"accent-dim": {
|
|
90
|
+
"$value": "rgba(212, 164, 76, 0.08)",
|
|
91
|
+
"$description": "Accent-tinted background — badges, icon boxes, step numbers"
|
|
92
|
+
},
|
|
93
|
+
"highlight": {
|
|
94
|
+
"$value": "rgba(212, 164, 76, 0.06)",
|
|
95
|
+
"$description": "Subtle accent highlight — comparison column bg"
|
|
96
|
+
},
|
|
97
|
+
"nav-scrolled-bg": {
|
|
98
|
+
"$value": "rgba(12, 12, 20, 0.92)",
|
|
99
|
+
"$description": "Navigation background on scroll — semi-transparent dark"
|
|
100
|
+
},
|
|
101
|
+
"ghost-hover-bg": {
|
|
102
|
+
"$value": "rgba(255, 255, 255, 0.03)",
|
|
103
|
+
"$description": "Ghost button hover background"
|
|
104
|
+
},
|
|
105
|
+
"ghost-hover-border": {
|
|
106
|
+
"$value": "rgba(255, 255, 255, 0.35)",
|
|
107
|
+
"$description": "Ghost button hover border — WCAG AA 3:1 on dark backgrounds"
|
|
108
|
+
},
|
|
109
|
+
"focus-border": {
|
|
110
|
+
"$value": "rgba(212, 164, 76, 0.55)",
|
|
111
|
+
"$description": "Input focus border — accent at 55% for WCAG AA 3:1+ visibility"
|
|
112
|
+
},
|
|
113
|
+
"focus-glow": {
|
|
114
|
+
"$value": "rgba(212, 164, 76, 0.08)",
|
|
115
|
+
"$description": "Input focus outer ring glow"
|
|
116
|
+
},
|
|
117
|
+
"accent-border-subtle": {
|
|
118
|
+
"$value": "rgba(212, 164, 76, 0.58)",
|
|
119
|
+
"$description": "Accent border — badges, principle hover — WCAG AA 3:1"
|
|
120
|
+
},
|
|
121
|
+
"accent-border-dim": {
|
|
122
|
+
"$value": "rgba(212, 164, 76, 0.52)",
|
|
123
|
+
"$description": "Accent border dim — step number circles — WCAG AA 3:1"
|
|
124
|
+
},
|
|
125
|
+
"grid-line": {
|
|
126
|
+
"$value": "rgba(255, 255, 255, 0.02)",
|
|
127
|
+
"$description": "Hero background grid lines"
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"semantic": {
|
|
3
|
+
"$description": "Tier 2/3: Semantic tokens that reference primitives. Apply ONLY these to designs and code.",
|
|
4
|
+
|
|
5
|
+
"bg": {
|
|
6
|
+
"$type": "color",
|
|
7
|
+
"$description": "Background semantics",
|
|
8
|
+
"default": { "$value": "{color.bg}", "$description": "Page-level background" },
|
|
9
|
+
"alt": { "$value": "{color.bg-alt}", "$description": "Alternating dark sections (.section-dark)" },
|
|
10
|
+
"card": { "$value": "{color.bg-card}", "$description": "Card and panel fills" },
|
|
11
|
+
"card-hover": { "$value": "{color.bg-card-hover}", "$description": "Card fills on hover" },
|
|
12
|
+
"surface": { "$value": "{color.surface}", "$description": "Forms, callouts, elevated containers" },
|
|
13
|
+
"nav-scrolled": { "$value": "{color.nav-scrolled-bg}", "$description": "Navbar after scroll" },
|
|
14
|
+
"overlay": { "$value": "rgba(0, 0, 0, 0.6)", "$description": "Modal/dialog backdrop overlay" }
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
"text": {
|
|
18
|
+
"$type": "color",
|
|
19
|
+
"$description": "Text color semantics",
|
|
20
|
+
"primary": { "$value": "{color.text-primary}", "$description": "Headings, body, primary content" },
|
|
21
|
+
"secondary": { "$value": "{color.text-secondary}", "$description": "Descriptions, supporting text, nav links" },
|
|
22
|
+
"muted": { "$value": "{color.text-muted}", "$description": "Placeholders, footnotes, timestamps" },
|
|
23
|
+
"accent": { "$value": "{color.accent}", "$description": "Badges, labels, section labels, emphasis" },
|
|
24
|
+
"accent-hover": { "$value": "{color.accent-hover}", "$description": "Accent text on hover (links, interactive)" },
|
|
25
|
+
"on-accent": { "$value": "{color.bg}", "$description": "Text on accent-colored backgrounds" },
|
|
26
|
+
"success": { "$value": "{color.success}", "$description": "Success message text" },
|
|
27
|
+
"error": { "$value": "{color.error}", "$description": "Error message text and required indicators" },
|
|
28
|
+
"warning": { "$value": "{color.warning}", "$description": "Warning message text" },
|
|
29
|
+
"info": { "$value": "{color.info}", "$description": "Info message text" }
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
"action": {
|
|
33
|
+
"$type": "color",
|
|
34
|
+
"$description": "Interactive/button semantics",
|
|
35
|
+
"primary-bg": { "$value": "{color.accent}", "$description": "Primary button background" },
|
|
36
|
+
"primary-bg-hover": { "$value": "{color.accent-hover}", "$description": "Primary button hover background" },
|
|
37
|
+
"primary-text": { "$value": "{color.bg}", "$description": "Primary button text (dark on gold)" },
|
|
38
|
+
"ghost-bg": { "$value": "transparent", "$description": "Ghost button default background" },
|
|
39
|
+
"ghost-bg-hover": { "$value": "{color.ghost-hover-bg}", "$description": "Ghost button hover background" },
|
|
40
|
+
"ghost-border": { "$value": "{color.border-hover}", "$description": "Ghost button border" },
|
|
41
|
+
"ghost-border-hover": { "$value": "{color.ghost-hover-border}", "$description": "Ghost button hover border" },
|
|
42
|
+
"ghost-text": { "$value": "{color.text-secondary}", "$description": "Ghost button text" },
|
|
43
|
+
"ghost-text-hover": { "$value": "{color.text-primary}", "$description": "Ghost button hover text" },
|
|
44
|
+
"toggle-bg": { "$value": "{color.border-hover}", "$description": "Toggle track background in off state" },
|
|
45
|
+
"toggle-bg-on": { "$value": "{color.accent}", "$description": "Toggle track background in on state" },
|
|
46
|
+
"toggle-thumb": { "$value": "#FFFFFF", "$description": "Toggle thumb (circle) color" },
|
|
47
|
+
"success": { "$value": "{color.success}", "$description": "Form submission success state" },
|
|
48
|
+
"error": { "$value": "{color.error}", "$description": "Validation errors, destructive actions" },
|
|
49
|
+
"warning": { "$value": "{color.warning}", "$description": "Caution states, deprecation notices" },
|
|
50
|
+
"info": { "$value": "{color.info}", "$description": "Informational tips and neutral alerts" },
|
|
51
|
+
"success-bg": { "$value": "rgba(42, 125, 95, 0.08)", "$description": "Subtle success background tint for badges and status indicators" },
|
|
52
|
+
"error-bg": { "$value": "rgba(224, 82, 82, 0.08)", "$description": "Subtle error background tint for invalid form fields" },
|
|
53
|
+
"warning-bg": { "$value": "rgba(232, 148, 58, 0.08)", "$description": "Subtle warning background tint for badges and status indicators" },
|
|
54
|
+
"info-bg": { "$value": "rgba(91, 139, 212, 0.08)", "$description": "Subtle info background tint for badges and status indicators" }
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
"border": {
|
|
58
|
+
"$type": "color",
|
|
59
|
+
"$description": "Border semantics",
|
|
60
|
+
"default": { "$value": "{color.border}", "$description": "Default card/section borders" },
|
|
61
|
+
"hover": { "$value": "{color.border-hover}", "$description": "Borders on hover state" },
|
|
62
|
+
"card": { "$value": "{color.border-soft}", "$description": "Soft decorative card border — no WCAG requirement" },
|
|
63
|
+
"card-hover": { "$value": "{color.border-soft-hover}", "$description": "Soft decorative card border on hover" },
|
|
64
|
+
"accent-subtle": { "$value": "{color.accent-border-subtle}","$description": "Accent-tinted borders (principle hover)" },
|
|
65
|
+
"accent-dim": { "$value": "{color.accent-border-dim}", "$description": "Dim accent borders (step numbers)" },
|
|
66
|
+
"nav": { "$value": "{color.border}", "$description": "Nav scrolled bottom border" },
|
|
67
|
+
"input-hover": { "$value": "{color.border-hover}", "$description": "Form input border on hover" },
|
|
68
|
+
"success": { "$value": "{color.success}", "$description": "Success state border" },
|
|
69
|
+
"error": { "$value": "{color.error}", "$description": "Invalid form field border" },
|
|
70
|
+
"warning": { "$value": "{color.warning}", "$description": "Warning state border" },
|
|
71
|
+
"info": { "$value": "{color.info}", "$description": "Info state border" }
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
"surface": {
|
|
75
|
+
"$type": "color",
|
|
76
|
+
"$description": "Surface fill semantics",
|
|
77
|
+
"accent-dim": { "$value": "{color.accent-dim}", "$description": "Icon boxes, badges, step number bg, comparison highlight" },
|
|
78
|
+
"accent-glow": { "$value": "{color.accent-glow}", "$description": "Shadow glow on accent actions" },
|
|
79
|
+
"highlight": { "$value": "{color.highlight}", "$description": "Subtle highlight backgrounds" },
|
|
80
|
+
"elevated": { "$value": "{color.bg-card}", "$description": "Elevated surface for modals, dropdowns" }
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
"focus": {
|
|
84
|
+
"$type": "color",
|
|
85
|
+
"$description": "Focus state semantics",
|
|
86
|
+
"border": { "$value": "{color.focus-border}", "$description": "Input focus border color" },
|
|
87
|
+
"glow": { "$value": "{color.focus-glow}", "$description": "Input focus outer ring (box-shadow)" }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|