@chekinapp/tokens 0.0.31 → 0.2.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 CHANGED
@@ -6,7 +6,7 @@ Design tokens for Chekin UI — CSS variables for colors, typography, spacing, a
6
6
 
7
7
  **One kit, surface-specific tokens**
8
8
 
9
- All UI components read from CSS variables. Different surfaces (dashboard, guest, marketing) load different token values, making the same component look appropriate for its context.
9
+ All UI components read from CSS variables. Different surfaces (dashboard, guestapp, marketing) load different token values, making the same component look appropriate for its context.
10
10
 
11
11
  ```
12
12
  @chekin/tokens
@@ -20,7 +20,7 @@ All UI components read from CSS variables. Different surfaces (dashboard, guest,
20
20
 
21
21
  surfaces/ ← surface-specific overrides
22
22
  dashboard.css Montserrat, radius=6px, compact sizing
23
- guest.css Poppins, radius=24px, larger touch targets
23
+ guestapp.css Poppins, radius=24px, larger touch targets
24
24
  ```
25
25
 
26
26
  **Philosophy:** Start minimal, add tokens on demand. Don't add tokens until they're actually used by a component.
@@ -39,7 +39,7 @@ import {Button} from '@chekinapp/ui';
39
39
  // Button automatically uses Montserrat, 6px radius, 40px height
40
40
 
41
41
  // apps/guestapp/src/main.tsx
42
- import '@chekinapp/tokens/surfaces/guest.css';
42
+ import '@chekinapp/tokens/surfaces/guestapp.css';
43
43
  import {Button} from '@chekinapp/ui';
44
44
 
45
45
  // Same Button component, now uses Poppins, 24px radius, 56px height
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chekinapp/tokens",
3
- "version": "0.0.31",
3
+ "version": "0.2.0",
4
4
  "description": "Chekin design tokens — CSS variables, JSON, and Tailwind preset",
5
5
  "private": false,
6
6
  "license": "UNLICENSED",
@@ -12,7 +12,7 @@
12
12
  "./tokens.json": "./src/tokens.json",
13
13
  "./tailwind-preset": "./src/tailwind-preset.js",
14
14
  "./surfaces/dashboard.css": "./src/surfaces/dashboard.css",
15
- "./surfaces/guest.css": "./src/surfaces/guest.css",
15
+ "./surfaces/guestapp.css": "./src/surfaces/guestapp.css",
16
16
  "./surfaces/host-sdk.css": "./src/surfaces/host-sdk.css"
17
17
  },
18
18
  "files": [
@@ -1,38 +1,210 @@
1
1
  /**
2
- * Base colorsessential brand and UI colors
3
- * Shared across all surfaces
2
+ * Chekin color system single source of truth
3
+ * Shared across all surfaces (dashboard / guest / host-sdk).
4
+ *
5
+ * Structure:
6
+ * 1. PRIMITIVES — raw hue scales, the only place hex literals live.
7
+ * 2. SEMANTIC — intent-based aliases that reference primitives.
8
+ * 3. LEGACY — historical variable names kept as aliases so existing
9
+ * components keep working. Do not add new ones here.
10
+ *
11
+ * Two intentionally separate primitive families exist:
12
+ * - Chekin brand (blue / lavender-neutral) — the product UI.
13
+ * - Airbnb-fields (warm sand / ink) — the Airbnb-styled field set.
4
14
  */
5
15
 
6
16
  :root {
17
+ /* ════════════════════════════════════════════════════════════════════
18
+ * 1. PRIMITIVES
19
+ * ════════════════════════════════════════════════════════════════════ */
20
+
21
+ /* ── Blue (brand hue) ──────────────────────────────────────────────── */
22
+ --chekin-blue-50: #eff6ff;
23
+ --chekin-blue-100: #dbeafe;
24
+ --chekin-blue-200: #abbafc;
25
+ --chekin-blue-300: #5975f5;
26
+ --chekin-blue-400: #5f5cf0;
27
+ --chekin-blue-500: #385bf8; /* brand DEFAULT */
28
+ --chekin-blue-600: #294df1;
29
+ --chekin-blue-700: #23235d;
30
+ --chekin-blue-900: #161643; /* navy ink */
31
+
32
+ /* Blue surface tints (near-white, hue-leaning) */
33
+ --chekin-blue-surface-50: #f4f4fd; /* promo lavender */
34
+ --chekin-blue-surface-100: #f0f3ff; /* pressed */
35
+ --chekin-blue-surface-200: #efefff; /* card */
36
+ --chekin-blue-tint-sky: #e0effe; /* sky hover */
37
+ --chekin-blue-tint-info: #e3efff; /* alert info */
38
+ --chekin-blue-tint-soft: #e9f5ff; /* carousel control */
39
+ --chekin-blue-tint-bright: #c4e6ff; /* signature / webcam */
40
+
41
+ /* ── Neutral (cool lavender gray) ──────────────────────────────────── */
42
+ --chekin-neutral-0: #ffffff;
43
+ --chekin-neutral-50: #f4f6f8; /* lightest surface (input-empty) */
44
+ --chekin-neutral-75: #f0f0f8; /* faint lavender surface */
45
+ --chekin-neutral-100: #ececf8; /* table head */
46
+ --chekin-neutral-150: #e5e6ee; /* border DEFAULT */
47
+ --chekin-neutral-200: #dedeeb; /* border subtle */
48
+ --chekin-neutral-300: #cecede; /* border strong / separator */
49
+ --chekin-neutral-400: #acacd5; /* lavender mid */
50
+ --chekin-neutral-500: #9696b9; /* tertiary text */
51
+ --chekin-neutral-600: #6b6b95; /* secondary text */
52
+ --chekin-neutral-900: #161643; /* ink (= blue-900) */
53
+
54
+ /* ── Gray (true neutral, Inbox / utility surfaces) ─────────────────── */
55
+ --chekin-gray-50: #f9fafb;
56
+ --chekin-gray-100: #f3f4f6;
57
+ --chekin-gray-200: #e5e7eb;
58
+ --chekin-gray-300: #d1d5db;
59
+ --chekin-gray-400: #9ca3af;
60
+ --chekin-gray-500: #6b7280;
61
+ --chekin-gray-600: #4b5563;
62
+
63
+ /* ── Green (success) ───────────────────────────────────────────────── */
64
+ --chekin-green-50: #e8fcf7;
65
+ --chekin-green-100: #e0fbf3;
66
+ --chekin-green-200: #cff9ef;
67
+ --chekin-green-300: #dcfce7;
68
+ --chekin-green-500: #35e5bc; /* success DEFAULT */
69
+ --chekin-green-600: #2bc29f;
70
+ --chekin-green-700: #0f9f80;
71
+ --chekin-green-800: #059669;
72
+
73
+ /* ── Amber (warning) ───────────────────────────────────────────────── */
74
+ --chekin-amber-50: #fff9db;
75
+ --chekin-amber-100: #ffeeb2;
76
+ --chekin-amber-200: #fff4e5;
77
+ --chekin-amber-star: #facc15;
78
+ --chekin-amber-400: #ffc400;
79
+ --chekin-amber-500: #ffb700; /* warning DEFAULT */
80
+ --chekin-amber-600: #ce8b0b;
81
+ --chekin-amber-700: #b86a00;
82
+
83
+ /* ── Red (danger / brand red) ──────────────────────────────────────── */
84
+ --chekin-red-50: #fff5f9;
85
+ --chekin-red-100: #ffe2ed;
86
+ --chekin-red-150: #ffe8ef;
87
+ --chekin-red-soft: #f84b7a; /* inline validation error */
88
+ --chekin-red-500: #df0044; /* brand red / danger DEFAULT */
89
+
90
+ /* ── Rating gradient (data viz, 7-step worst→best) ─────────────────── */
91
+ --chekin-rating-0: var(--chekin-red-500);
92
+ --chekin-rating-1: #ff673c;
93
+ --chekin-rating-2: #ffa514;
94
+ --chekin-rating-3: #ffc400;
95
+ --chekin-rating-4: #cdc326;
96
+ --chekin-rating-5: #78c366;
97
+ --chekin-rating-6: var(--chekin-green-500);
98
+
99
+ /* ── Avatar (categorical pastels) ──────────────────────────────────── */
100
+ --chekin-avatar-1: #e0e9fb;
101
+ --chekin-avatar-2: #e0fbf3;
102
+ --chekin-avatar-3: #fbf5e0;
103
+ --chekin-avatar-4: #fbede0;
104
+ --chekin-avatar-5: #fbe0f4;
105
+ --chekin-avatar-6: #ede0fb;
106
+
107
+ /* ── Airbnb family (warm sand / ink — separate system) ─────────────── */
108
+ --chekin-airbnb-ink: #1f1f1b;
109
+ --chekin-airbnb-ink-strong: #222222;
110
+ --chekin-airbnb-ink-black: #171717;
111
+ --chekin-airbnb-gray-text: #6c6c6c;
112
+ --chekin-airbnb-gray-muted: #8c8c8c;
113
+ --chekin-airbnb-gray-cool: #7a8399;
114
+ --chekin-airbnb-zinc: #3f3f46;
115
+ --chekin-airbnb-border: #dedad2;
116
+ --chekin-airbnb-border-soft: #e7e7e4;
117
+ --chekin-airbnb-surface: #f7f6f4;
118
+ --chekin-airbnb-surface-alt: #f4f4f2;
119
+ --chekin-airbnb-neutral-200: #e2e2e2;
120
+ --chekin-airbnb-pink: #fc98dd;
121
+ --chekin-airbnb-pink-surface: #ffe8ef;
122
+ --chekin-airbnb-pink-surface-soft: #fff5f3;
123
+
124
+ --chekin-white: var(--chekin-neutral-0);
125
+
126
+ /* ════════════════════════════════════════════════════════════════════
127
+ * 2. SEMANTIC
128
+ * ════════════════════════════════════════════════════════════════════ */
129
+
7
130
  /* ── Brand ─────────────────────────────────────────────────────────── */
8
- --chekin-color-brand-blue: #385bf8;
9
- --chekin-color-brand-navy: #161643;
10
- --chekin-color-brand-red: #df0044;
11
- --chekin-color-brand-blue-hover: #5975f5;
12
- --chekin-color-brand-blue-animation: #294df1;
13
- --chekin-color-brand-blue-divider: #5f5cf0;
14
- --chekin-color-brand-blue-dark: #23235d;
15
- --chekin-color-white: #ffffff;
131
+ --chekin-color-brand: var(--chekin-blue-500);
132
+ --chekin-color-brand-hover: var(--chekin-blue-300);
133
+ --chekin-color-brand-navy: var(--chekin-blue-900);
134
+ --chekin-color-brand-red: var(--chekin-red-500);
135
+ --primary: var(--chekin-color-brand);
136
+
137
+ /* ── Text ──────────────────────────────────────────────────────────── */
138
+ --chekin-text-primary: var(--chekin-neutral-900);
139
+ --chekin-text-secondary: var(--chekin-neutral-600);
140
+ --chekin-text-tertiary: var(--chekin-neutral-500);
141
+ --chekin-text-brand: var(--chekin-blue-500);
142
+ --chekin-text-danger: var(--chekin-red-500);
143
+ --chekin-text-inverse: var(--chekin-neutral-0);
144
+
145
+ /* ── Surface ───────────────────────────────────────────────────────── */
146
+ --chekin-surface-page: var(--chekin-neutral-0);
147
+ --chekin-surface-card: var(--chekin-blue-surface-200);
148
+ --chekin-surface-raised: var(--chekin-neutral-50);
149
+ --chekin-surface-input-empty: var(--chekin-neutral-50);
150
+ --chekin-surface-autocomplete: var(--chekin-blue-50);
151
+ --chekin-surface-promo: var(--chekin-blue-surface-50);
152
+ --chekin-surface-pressed: var(--chekin-blue-surface-100);
153
+
154
+ /* ── Border ────────────────────────────────────────────────────────── */
155
+ --chekin-border-default: var(--chekin-neutral-150);
156
+ --chekin-border-subtle: var(--chekin-neutral-200);
157
+ --chekin-border-strong: var(--chekin-neutral-300);
158
+ --chekin-border-brand: var(--chekin-blue-500);
159
+ --chekin-border-brand-soft: var(--chekin-blue-200);
160
+
161
+ /* ── State: success ────────────────────────────────────────────────── */
162
+ --chekin-success: var(--chekin-green-500);
163
+ --chekin-success-icon: var(--chekin-green-600);
164
+ --chekin-success-surface: var(--chekin-green-50);
165
+ --chekin-success-text: var(--chekin-green-800);
166
+
167
+ /* ── State: warning ────────────────────────────────────────────────── */
168
+ --chekin-warning: var(--chekin-amber-500);
169
+ --chekin-warning-icon: var(--chekin-amber-400);
170
+ --chekin-warning-surface: var(--chekin-amber-200);
171
+ --chekin-warning-text: var(--chekin-amber-600);
172
+
173
+ /* ── State: danger ─────────────────────────────────────────────────── */
174
+ --chekin-danger: var(--chekin-red-500);
175
+ --chekin-danger-soft: var(--chekin-red-soft);
176
+ --chekin-danger-surface: var(--chekin-red-100);
177
+
178
+ /* ── State: info ───────────────────────────────────────────────────── */
179
+ --chekin-info: var(--chekin-blue-500);
180
+ --chekin-info-surface: var(--chekin-blue-50);
181
+
182
+ --background-main: var(--chekin-surface-page);
183
+ --empty-field-background: var(--chekin-surface-input-empty);
184
+
185
+ /* ════════════════════════════════════════════════════════════════════
186
+ * 3. LEGACY ALIASES (kept for existing components — do not extend)
187
+ * ════════════════════════════════════════════════════════════════════ */
188
+ --chekin-color-brand-blue: var(--chekin-blue-500);
189
+ --chekin-color-brand-blue-hover: var(--chekin-blue-300);
190
+ --chekin-color-brand-blue-animation: var(--chekin-blue-600);
191
+ --chekin-color-brand-blue-divider: var(--chekin-blue-400);
192
+ --chekin-color-brand-blue-dark: var(--chekin-blue-700);
193
+ --chekin-color-white: var(--chekin-neutral-0);
16
194
  --chekin-host-sdk-color-brand: #505077;
17
- --primary: var(--chekin-color-brand-blue);
18
-
19
- /* ── Grays ─────────────────────────────────────────────────────────── */
20
- --chekin-color-gray-1: #6b6b95;
21
- --chekin-color-gray-2: #9696b9;
22
- --chekin-color-gray-3: #dedeeb;
23
- --chekin-color-gray-separator: #cecede;
24
- --chekin-color-guest-separator: #e6e8ec;
25
-
26
- /* ── Surfaces ──────────────────────────────────────────────────────── */
27
- --chekin-color-surface-input-empty: #f4f6f8;
28
- --chekin-color-surface-autocomplete: #eff6ff;
29
- --chekin-color-surface-promo: #f4f4fd;
30
- --chekin-color-surface-pressed: #f0f3ff;
31
- --chekin-color-surface-card: #efefff;
32
- --background-main: var(--chekin-color-white);
33
- --empty-field-background: var(--chekin-color-surface-input-empty);
34
-
35
- /* ── Text aliases used by existing components ─────────────────────── */
36
- --chekin-text-dark: var(--chekin-color-brand-navy);
37
- --chekin-text-gray-dark: var(--chekin-color-gray-1);
195
+
196
+ --chekin-color-gray-1: var(--chekin-neutral-600);
197
+ --chekin-color-gray-2: var(--chekin-neutral-500);
198
+ --chekin-color-gray-3: var(--chekin-neutral-200);
199
+ --chekin-color-gray-separator: var(--chekin-neutral-300);
200
+ --chekin-color-guest-separator: var(--chekin-neutral-150);
201
+
202
+ --chekin-color-surface-input-empty: var(--chekin-surface-input-empty);
203
+ --chekin-color-surface-autocomplete: var(--chekin-surface-autocomplete);
204
+ --chekin-color-surface-promo: var(--chekin-surface-promo);
205
+ --chekin-color-surface-pressed: var(--chekin-surface-pressed);
206
+ --chekin-color-surface-card: var(--chekin-surface-card);
207
+
208
+ --chekin-text-dark: var(--chekin-text-primary);
209
+ --chekin-text-gray-dark: var(--chekin-text-secondary);
38
210
  }
@@ -39,7 +39,7 @@
39
39
  /* Outline variant */
40
40
  --button-outline-border: hsl(240 19.5% 83.9%);
41
41
  --button-outline-bg: var(--chekin-color-white);
42
- --button-outline-text: #152946;
42
+ --button-outline-text: var(--chekin-text-primary);
43
43
  --button-outline-hover-bg: hsl(210 22.2% 96.5%);
44
44
 
45
45
  /* Destructive variant */
@@ -85,14 +85,14 @@
85
85
  /* ── Counter ──────────────────────────────────────────────────────── */
86
86
  --counter-button-border: var(--chekin-color-brand-blue);
87
87
  --counter-icon-color: var(--chekin-color-brand-blue);
88
- --counter-text: #152946;
89
- --counter-error-border: #f84b7a;
90
- --counter-error-text: #f84b7a;
88
+ --counter-text: var(--chekin-text-primary);
89
+ --counter-error-border: var(--chekin-red-soft);
90
+ --counter-error-text: var(--chekin-red-soft);
91
91
 
92
92
  /* ── Accordion ────────────────────────────────────────────────────── */
93
93
  --accordion-item-radius: 8px;
94
- --accordion-item-border: #e5e6ee;
95
- --accordion-item-divider: #e5e6ee;
94
+ --accordion-item-border: var(--chekin-border-default);
95
+ --accordion-item-divider: var(--chekin-border-default);
96
96
  --accordion-item-bg: transparent;
97
97
  --accordion-item-open-bg: transparent;
98
98
  --accordion-item-hover-bg: rgba(245, 245, 245, 0.5);
@@ -120,28 +120,28 @@
120
120
 
121
121
  /* ── AlertBox ──────────────────────────────────────────────────────── */
122
122
  --alert-box-radius: 10px;
123
- --alert-box-info-bg: #eff6ff;
123
+ --alert-box-info-bg: var(--chekin-blue-50);
124
124
  --alert-box-info-icon: #2563eb;
125
125
  --alert-box-warning-bg: rgba(250, 204, 21, 0.3);
126
- --alert-box-warning-icon: #ffb700;
127
- --alert-box-success-bg: #e8fcf7;
128
- --alert-box-success-icon: #2bc29f;
129
- --alert-box-success-text: #6b6b95;
130
- --alert-box-error-bg: #ffe2ed;
131
- --alert-box-error-icon: #ff2467;
126
+ --alert-box-warning-icon: var(--chekin-amber-500);
127
+ --alert-box-success-bg: var(--chekin-green-50);
128
+ --alert-box-success-icon: var(--chekin-green-600);
129
+ --alert-box-success-text: var(--chekin-neutral-600);
130
+ --alert-box-error-bg: var(--chekin-red-100);
131
+ --alert-box-error-icon: var(--chekin-red-500);
132
132
 
133
133
  /* ── AudioPlayer ─────────────────────────────────────────────────────── */
134
134
  --audio-player-button-bg: var(--chekin-color-brand-blue);
135
135
  --audio-player-button-hover-bg: var(--chekin-color-brand-blue-hover);
136
136
  --audio-player-button-radius: 8px;
137
137
  --audio-player-icon-color: var(--chekin-color-white);
138
- --audio-player-track-bg: #d1d5db;
138
+ --audio-player-track-bg: var(--chekin-gray-300);
139
139
  --audio-player-progress-bg: var(--chekin-color-brand-blue);
140
- --audio-player-time-color: #4b5563;
140
+ --audio-player-time-color: var(--chekin-gray-600);
141
141
 
142
142
  /* ── Avatar (dashboard-only, minimal tokens) ─────────────────────────── */
143
- --avatar-fallback-bg: #e5e7eb;
144
- --avatar-fallback-text: #4b5563;
143
+ --avatar-fallback-bg: var(--chekin-gray-200);
144
+ --avatar-fallback-text: var(--chekin-gray-600);
145
145
 
146
146
  /* ── BetaBadge (dashboard-only, minimal tokens) ──────────────────────── */
147
147
  --beta-badge-bg: color-mix(in srgb, var(--chekin-color-gray-1) 15%, transparent);
@@ -154,7 +154,7 @@
154
154
  --beta-badge-readonly-text: var(--chekin-color-brand-blue);
155
155
 
156
156
  /* ── BoxOptionSelector (dashboard-only, minimal tokens) ──────────────── */
157
- --box-option-border: #e5e6ee;
157
+ --box-option-border: var(--chekin-border-default);
158
158
  --box-option-bg: var(--chekin-color-white);
159
159
  --box-option-hover-bg: var(--chekin-color-surface-input-empty);
160
160
  --box-option-selected-border: var(--chekin-color-brand-blue);
@@ -195,37 +195,37 @@
195
195
  --rotate-arrow-color: var(--brand-color, var(--chekin-color-brand-blue));
196
196
 
197
197
  /* ── RatingRadioGroup ──────────────────────────────────────────────── */
198
- --rating-radio-group-star-selected-color: #facc15;
198
+ --rating-radio-group-star-selected-color: var(--chekin-amber-star);
199
199
  --rating-radio-group-star-unselected-color: #e6e6e6;
200
200
  --rating-radio-group-star-focus-color: var(--chekin-color-brand-blue);
201
201
 
202
202
  /* ── SectionGroup (dashboard-only, migrated from ui-kit-2) ──────────── */
203
203
  --section-group-bg: var(--chekin-color-white);
204
- --section-group-border: #e5e6ee;
205
- --section-group-divider-bg: #e5e6ee;
204
+ --section-group-border: var(--chekin-border-default);
205
+ --section-group-divider-bg: var(--chekin-border-default);
206
206
  --section-group-title-color: var(--chekin-color-brand-navy);
207
207
  --section-group-muted-text: var(--chekin-color-gray-1);
208
208
 
209
209
  /* ── SignatureCanvas (dashboard-only, migrated from ui-kit-2) ───────── */
210
210
  --signature-canvas-border: var(--chekin-color-brand-blue);
211
- --signature-canvas-placeholder-bg: #c4e6ff;
211
+ --signature-canvas-placeholder-bg: var(--chekin-blue-tint-bright);
212
212
  --signature-canvas-placeholder-text: var(--chekin-color-brand-blue);
213
213
  --signature-canvas-shadow: 0 16px 16px #2699fb12;
214
214
 
215
215
  /* ── Carousel (image carousel controls) ─────────────────────────────── */
216
- --carousel-control-bg: #e9f5ff;
216
+ --carousel-control-bg: var(--chekin-blue-tint-soft);
217
217
  --carousel-control-color: var(--chekin-color-brand-blue);
218
218
 
219
219
  /* ── Slider (range input) ─────────────────────────────────────────── */
220
220
  --slider-track-bg: color-mix(in srgb, var(--chekin-color-brand-blue) 20%, transparent);
221
221
  --slider-range-bg: var(--chekin-color-brand-blue);
222
- --slider-thumb-bg: #e5e7eb;
222
+ --slider-thumb-bg: var(--chekin-gray-200);
223
223
  --slider-thumb-border: var(--chekin-color-brand-blue);
224
224
  --slider-focus-ring: var(--chekin-color-brand-blue);
225
225
 
226
226
  /* ── Table (dashboard-only, minimal tokens) ──────────────────────────── */
227
- --table-border: #e5e6ee;
228
- --table-head-bg: #ececf8;
227
+ --table-border: var(--chekin-border-default);
228
+ --table-head-bg: var(--chekin-neutral-100);
229
229
  --table-head-text: var(--chekin-color-gray-1);
230
230
  --table-footer-bg: rgba(245, 245, 245, 0.5);
231
231
  --table-row-selected-bg: #f5f5f5;
@@ -236,14 +236,14 @@
236
236
  /* ── TableFilter (dashboard-only, migrated from ui-kit-2) ───────────── */
237
237
  --table-filter-bg: var(--chekin-color-white);
238
238
  --table-filter-text: var(--chekin-color-brand-navy);
239
- --table-filter-remove-bg: #9696b9;
239
+ --table-filter-remove-bg: var(--chekin-neutral-500);
240
240
  --table-filter-remove-color: #f8f8f8;
241
241
  --table-filter-remove-hover-shadow: 0 3px 3px #0f477734;
242
242
 
243
243
  /* ── TableLoader (dashboard-only, migrated from ui-kit-2) ───────────── */
244
244
  --table-loader-border: #f0f0f3;
245
245
  --table-loader-color: var(--chekin-color-brand-blue);
246
- --table-loader-label-color: #9696b9;
246
+ --table-loader-label-color: var(--chekin-neutral-500);
247
247
  --table-loader-row-hover-bg: var(--chekin-color-white);
248
248
 
249
249
  /* ── Timeline (dashboard-only, migrated from ui-kit-2) ──────────────── */
@@ -264,7 +264,7 @@
264
264
  --video-modal-close-color: var(--chekin-color-brand-blue);
265
265
 
266
266
  /* ── Webcam (dashboard-only, migrated from ui-kit-2) ───────────────── */
267
- --webcam-bg: #c4e6ff;
267
+ --webcam-bg: var(--chekin-blue-tint-bright);
268
268
  --webcam-permission-text: var(--chekin-color-gray-1);
269
269
 
270
270
  /* ── DefaultSelectTrigger (dashboard-only, minimal tokens) ──────────────── */
@@ -336,4 +336,8 @@
336
336
  --field-label-raised-font-weight: var(--chekin-font-weight-semibold);
337
337
  --field-top-label-font-size: 14px;
338
338
  --field-top-label-font-weight: var(--chekin-font-weight-medium);
339
+ --field-label-top: 12px;
340
+ --field-label-raised-top: -10px;
341
+ --field-placeholder-font-size: 16px;
342
+ --field-placeholder-font-weight: var(--chekin-font-weight-medium);
339
343
  }
@@ -45,17 +45,20 @@
45
45
  --button-link-text: var(--chekin-color-brand-blue);
46
46
  --button-outline-hover-bg: rgba(0, 0, 0, 0.04);
47
47
  --circular-loader-color: var(--chekin-color-brand-blue);
48
- --error-message-color: #f84b7a;
48
+ --error-message-color: var(--chekin-red-soft);
49
49
 
50
50
  /* Dialog: rounder corners and tighter footer for guest */
51
51
  --dialog-content-radius: 20px;
52
52
 
53
53
  --alert-default-text: hsl(222.2 84% 4.9%);
54
- --alert-box-info-bg: #e3efff;
54
+ --alert-box-info-bg: var(--chekin-blue-tint-info);
55
55
 
56
56
  /* ── Field (shared input/select/combobox/textarea/etc.) ─────────────── */
57
57
  --field-border: #777e91;
58
58
  --field-border-activated: #777e91;
59
- /*--field-label-font-size: 14px;*/
59
+ --field-label-font-size: 14px;
60
+ --field-label-top: 14px;
60
61
  --field-label-font-weight: var(--chekin-font-weight-regular);
62
+ --field-placeholder-font-size: 14px;
63
+ --field-placeholder-font-weight: var(--chekin-font-weight-regular);
61
64
  }
@@ -81,23 +81,119 @@ export default {
81
81
  5: 'hsl(var(--chart-5))',
82
82
  },
83
83
  chekin: {
84
- blue: '#385BF8',
85
- 'blue-animation': '#294DF1',
86
- 'blue-divider': '#5F5CF0',
87
- 'blue-hover': '#5975F5',
88
- 'blue-dark': '#23235D',
89
- navy: '#161643',
90
- red: '#FF2467',
91
- 'gray-1': '#6B6B95',
92
- 'gray-2': '#9696B9',
93
- 'gray-3': '#DEDEEB',
94
- 'gray-separator': '#CECEDE',
95
- separator: '#CECEDE',
96
- 'surface-input-empty': '#F4F6F8',
97
- 'surface-autocomplete': '#EFF6FF',
98
- 'surface-promo': '#F4F4FD',
99
- 'surface-pressed': '#F0F3FF',
100
- 'surface-card': '#EFEFFF',
84
+ blue: 'var(--chekin-blue-500)',
85
+ 'blue-animation': 'var(--chekin-blue-600)',
86
+ 'blue-divider': 'var(--chekin-blue-400)',
87
+ 'blue-hover': 'var(--chekin-blue-300)',
88
+ 'blue-dark': 'var(--chekin-blue-700)',
89
+ navy: 'var(--chekin-blue-900)',
90
+ red: 'var(--chekin-red-500)',
91
+ 'gray-1': 'var(--chekin-neutral-600)',
92
+ 'gray-2': 'var(--chekin-neutral-500)',
93
+ 'gray-3': 'var(--chekin-neutral-200)',
94
+ 'gray-separator': 'var(--chekin-neutral-300)',
95
+ separator: 'var(--chekin-neutral-300)',
96
+ 'surface-input-empty': 'var(--chekin-surface-input-empty)',
97
+ 'surface-autocomplete': 'var(--chekin-surface-autocomplete)',
98
+ 'surface-promo': 'var(--chekin-surface-promo)',
99
+ 'surface-pressed': 'var(--chekin-surface-pressed)',
100
+ 'surface-card': 'var(--chekin-surface-card)',
101
+ },
102
+
103
+ /* Primitive scales — single source of truth in tokens/base/colors.css */
104
+ blue: {
105
+ 50: 'var(--chekin-blue-50)',
106
+ 100: 'var(--chekin-blue-100)',
107
+ 200: 'var(--chekin-blue-200)',
108
+ 300: 'var(--chekin-blue-300)',
109
+ 400: 'var(--chekin-blue-400)',
110
+ 500: 'var(--chekin-blue-500)',
111
+ 600: 'var(--chekin-blue-600)',
112
+ 700: 'var(--chekin-blue-700)',
113
+ 900: 'var(--chekin-blue-900)',
114
+ },
115
+ green: {
116
+ 50: 'var(--chekin-green-50)',
117
+ 100: 'var(--chekin-green-100)',
118
+ 200: 'var(--chekin-green-200)',
119
+ 300: 'var(--chekin-green-300)',
120
+ 500: 'var(--chekin-green-500)',
121
+ 600: 'var(--chekin-green-600)',
122
+ 700: 'var(--chekin-green-700)',
123
+ 800: 'var(--chekin-green-800)',
124
+ },
125
+ amber: {
126
+ 50: 'var(--chekin-amber-50)',
127
+ 100: 'var(--chekin-amber-100)',
128
+ 200: 'var(--chekin-amber-200)',
129
+ 400: 'var(--chekin-amber-400)',
130
+ 500: 'var(--chekin-amber-500)',
131
+ 600: 'var(--chekin-amber-600)',
132
+ 700: 'var(--chekin-amber-700)',
133
+ },
134
+ red: {
135
+ 50: 'var(--chekin-red-50)',
136
+ 100: 'var(--chekin-red-100)',
137
+ 150: 'var(--chekin-red-150)',
138
+ soft: 'var(--chekin-red-soft)',
139
+ 500: 'var(--chekin-red-500)',
140
+ },
141
+ /* Semantic aliases */
142
+ 'text-primary': 'var(--chekin-text-primary)',
143
+ 'text-secondary': 'var(--chekin-text-secondary)',
144
+ 'text-tertiary': 'var(--chekin-text-tertiary)',
145
+ 'text-brand': 'var(--chekin-text-brand)',
146
+ 'text-danger': 'var(--chekin-text-danger)',
147
+ 'surface-page': 'var(--chekin-surface-page)',
148
+ 'surface-card': 'var(--chekin-surface-card)',
149
+ 'surface-raised': 'var(--chekin-surface-raised)',
150
+ 'border-default': 'var(--chekin-border-default)',
151
+ 'border-subtle': 'var(--chekin-border-subtle)',
152
+ 'border-strong': 'var(--chekin-border-strong)',
153
+ 'border-brand': 'var(--chekin-border-brand)',
154
+ 'border-brand-soft': 'var(--chekin-border-brand-soft)',
155
+ success: {
156
+ DEFAULT: 'var(--chekin-success)',
157
+ icon: 'var(--chekin-success-icon)',
158
+ surface: 'var(--chekin-success-surface)',
159
+ text: 'var(--chekin-success-text)',
160
+ },
161
+ warning: {
162
+ DEFAULT: 'var(--chekin-warning)',
163
+ icon: 'var(--chekin-warning-icon)',
164
+ surface: 'var(--chekin-warning-surface)',
165
+ text: 'var(--chekin-warning-text)',
166
+ },
167
+ danger: {
168
+ DEFAULT: 'var(--chekin-danger)',
169
+ soft: 'var(--chekin-danger-soft)',
170
+ surface: 'var(--chekin-danger-surface)',
171
+ },
172
+ info: {
173
+ DEFAULT: 'var(--chekin-info)',
174
+ surface: 'var(--chekin-info-surface)',
175
+ },
176
+ avatar: {
177
+ 1: 'var(--chekin-avatar-1)',
178
+ 2: 'var(--chekin-avatar-2)',
179
+ 3: 'var(--chekin-avatar-3)',
180
+ 4: 'var(--chekin-avatar-4)',
181
+ 5: 'var(--chekin-avatar-5)',
182
+ 6: 'var(--chekin-avatar-6)',
183
+ },
184
+ airbnb: {
185
+ ink: 'var(--chekin-airbnb-ink)',
186
+ 'ink-strong': 'var(--chekin-airbnb-ink-strong)',
187
+ 'ink-black': 'var(--chekin-airbnb-ink-black)',
188
+ 'gray-text': 'var(--chekin-airbnb-gray-text)',
189
+ 'gray-muted': 'var(--chekin-airbnb-gray-muted)',
190
+ 'gray-cool': 'var(--chekin-airbnb-gray-cool)',
191
+ zinc: 'var(--chekin-airbnb-zinc)',
192
+ border: 'var(--chekin-airbnb-border)',
193
+ 'border-soft': 'var(--chekin-airbnb-border-soft)',
194
+ surface: 'var(--chekin-airbnb-surface)',
195
+ 'surface-alt': 'var(--chekin-airbnb-surface-alt)',
196
+ pink: 'var(--chekin-airbnb-pink)',
101
197
  },
102
198
  },
103
199
  fontFamily: {
package/src/tokens.json CHANGED
@@ -1,53 +1,127 @@
1
1
  {
2
2
  "$schema": "https://schemas.tokens.studio/v1/tokens.json",
3
3
  "color": {
4
- "brand": {
5
- "main-blue": {"value": "#385BF8", "type": "color"},
6
- "dark": {"value": "#19194B", "type": "color"},
7
- "navy-blue": {"value": "#161643", "type": "color"},
8
- "gradient-start": {"value": "#002CFA", "type": "color"},
9
- "gradient-end": {"value": "#274BF0", "type": "color"},
10
- "red": {"value": "#FF2467", "type": "color"}
11
- },
12
- "blue-accent": {
13
- "animation": {"value": "#294DF1", "type": "color"},
14
- "divider": {"value": "#5F5CF0", "type": "color"},
15
- "hover": {"value": "#5975F5", "type": "color"},
16
- "dark-blue": {"value": "#23235D", "type": "color"}
4
+ "blue": {
5
+ "50": {"value": "#EFF6FF", "type": "color"},
6
+ "100": {"value": "#DBEAFE", "type": "color"},
7
+ "200": {"value": "#ABBAFC", "type": "color"},
8
+ "300": {"value": "#5975F5", "type": "color", "description": "Hover"},
9
+ "400": {"value": "#5F5CF0", "type": "color", "description": "Divider"},
10
+ "500": {"value": "#385BF8", "type": "color", "description": "Brand DEFAULT"},
11
+ "600": {"value": "#294DF1", "type": "color", "description": "Animation"},
12
+ "700": {"value": "#23235D", "type": "color", "description": "Dark accent"},
13
+ "900": {"value": "#161643", "type": "color", "description": "Navy ink"}
17
14
  },
18
- "gray": {
19
- "1": {
20
- "value": "#6B6B95",
15
+ "neutral": {
16
+ "0": {"value": "#FFFFFF", "type": "color"},
17
+ "50": {"value": "#F4F6F8", "type": "color", "description": "Lightest surface"},
18
+ "75": {"value": "#F0F0F8", "type": "color"},
19
+ "100": {"value": "#ECECF8", "type": "color"},
20
+ "150": {"value": "#E5E6EE", "type": "color", "description": "Border DEFAULT"},
21
+ "200": {"value": "#DEDEEB", "type": "color", "description": "Border subtle"},
22
+ "300": {
23
+ "value": "#CECEDE",
21
24
  "type": "color",
22
- "description": "Secondary text, body"
25
+ "description": "Border strong / separator"
23
26
  },
24
- "2": {
25
- "value": "#9696B9",
27
+ "400": {"value": "#ACACD5", "type": "color"},
28
+ "500": {"value": "#9696B9", "type": "color", "description": "Tertiary text"},
29
+ "600": {"value": "#6B6B95", "type": "color", "description": "Secondary text"},
30
+ "900": {"value": "#161643", "type": "color", "description": "Ink"}
31
+ },
32
+ "gray": {
33
+ "50": {"value": "#F9FAFB", "type": "color"},
34
+ "100": {"value": "#F3F4F6", "type": "color"},
35
+ "200": {"value": "#E5E7EB", "type": "color"},
36
+ "300": {"value": "#D1D5DB", "type": "color"},
37
+ "400": {"value": "#9CA3AF", "type": "color"},
38
+ "500": {"value": "#6B7280", "type": "color"},
39
+ "600": {"value": "#4B5563", "type": "color"}
40
+ },
41
+ "green": {
42
+ "50": {"value": "#E8FCF7", "type": "color"},
43
+ "100": {"value": "#E0FBF3", "type": "color"},
44
+ "200": {"value": "#CFF9EF", "type": "color"},
45
+ "300": {"value": "#DCFCE7", "type": "color"},
46
+ "500": {"value": "#35E5BC", "type": "color", "description": "Success DEFAULT"},
47
+ "600": {"value": "#2BC29F", "type": "color"},
48
+ "700": {"value": "#0F9F80", "type": "color"},
49
+ "800": {"value": "#059669", "type": "color"}
50
+ },
51
+ "amber": {
52
+ "50": {"value": "#FFF9DB", "type": "color"},
53
+ "100": {"value": "#FFEEB2", "type": "color"},
54
+ "200": {"value": "#FFF4E5", "type": "color"},
55
+ "star": {"value": "#FACC15", "type": "color"},
56
+ "400": {"value": "#FFC400", "type": "color"},
57
+ "500": {"value": "#FFB700", "type": "color", "description": "Warning DEFAULT"},
58
+ "600": {"value": "#CE8B0B", "type": "color"},
59
+ "700": {"value": "#B86A00", "type": "color"}
60
+ },
61
+ "red": {
62
+ "50": {"value": "#FFF5F9", "type": "color"},
63
+ "100": {"value": "#FFE2ED", "type": "color"},
64
+ "150": {"value": "#FFE8EF", "type": "color"},
65
+ "soft": {
66
+ "value": "#F84B7A",
26
67
  "type": "color",
27
- "description": "Tertiary text, captions"
68
+ "description": "Inline validation error"
28
69
  },
29
- "3": {
30
- "value": "#DEDEEB",
70
+ "500": {
71
+ "value": "#df0044",
31
72
  "type": "color",
32
- "description": "Borders, dividers"
33
- },
34
- "separator": {"value": "#CECEDE", "type": "color"},
35
- "white": {"value": "#FFFFFF", "type": "color"}
73
+ "description": "Brand red / danger DEFAULT"
74
+ }
75
+ },
76
+ "avatar": {
77
+ "1": {"value": "#E0E9FB", "type": "color"},
78
+ "2": {"value": "#E0FBF3", "type": "color"},
79
+ "3": {"value": "#FBF5E0", "type": "color"},
80
+ "4": {"value": "#FBEDE0", "type": "color"},
81
+ "5": {"value": "#FBE0F4", "type": "color"},
82
+ "6": {"value": "#EDE0FB", "type": "color"}
83
+ },
84
+ "airbnb": {
85
+ "ink": {"value": "#1F1F1B", "type": "color"},
86
+ "ink-strong": {"value": "#222222", "type": "color"},
87
+ "ink-black": {"value": "#171717", "type": "color"},
88
+ "gray-text": {"value": "#6C6C6C", "type": "color"},
89
+ "gray-muted": {"value": "#8C8C8C", "type": "color"},
90
+ "gray-cool": {"value": "#7A8399", "type": "color"},
91
+ "zinc": {"value": "#3F3F46", "type": "color"},
92
+ "border": {"value": "#DEDAD2", "type": "color"},
93
+ "border-soft": {"value": "#E7E7E4", "type": "color"},
94
+ "surface": {"value": "#F7F6F4", "type": "color"},
95
+ "surface-alt": {"value": "#F4F4F2", "type": "color"},
96
+ "pink": {"value": "#FC98DD", "type": "color"}
97
+ },
98
+ "brand": {
99
+ "main-blue": {"value": "{color.blue.500}", "type": "color"},
100
+ "navy-blue": {"value": "{color.blue.900}", "type": "color"},
101
+ "dark-blue": {"value": "{color.blue.700}", "type": "color"},
102
+ "red": {"value": "{color.red.500}", "type": "color"}
36
103
  },
37
104
  "surface": {
38
- "input-empty": {"value": "#F4F6F8", "type": "color"},
39
- "autocomplete": {"value": "#EFF6FF", "type": "color"},
105
+ "input-empty": {"value": "{color.neutral.50}", "type": "color"},
106
+ "autocomplete": {"value": "{color.blue.50}", "type": "color"},
40
107
  "promo-lavender": {"value": "#F4F4FD", "type": "color"},
41
108
  "pressed-blue": {"value": "#F0F3FF", "type": "color"},
42
109
  "card": {"value": "#EFEFFF", "type": "color"}
43
110
  },
44
111
  "text": {
45
- "dark": {"value": "{color.brand.navy-blue}", "type": "color"},
46
- "white": {"value": "{color.gray.white}", "type": "color"},
47
- "brand": {"value": "{color.brand.main-blue}", "type": "color"},
48
- "danger": {"value": "{color.brand.red}", "type": "color"},
49
- "gray-dark": {"value": "{color.gray.1}", "type": "color"},
50
- "gray-medium": {"value": "{color.gray.2}", "type": "color"}
112
+ "primary": {"value": "{color.neutral.900}", "type": "color"},
113
+ "secondary": {"value": "{color.neutral.600}", "type": "color"},
114
+ "tertiary": {"value": "{color.neutral.500}", "type": "color"},
115
+ "brand": {"value": "{color.blue.500}", "type": "color"},
116
+ "danger": {"value": "{color.red.500}", "type": "color"},
117
+ "inverse": {"value": "{color.neutral.0}", "type": "color"}
118
+ },
119
+ "border": {
120
+ "default": {"value": "{color.neutral.150}", "type": "color"},
121
+ "subtle": {"value": "{color.neutral.200}", "type": "color"},
122
+ "strong": {"value": "{color.neutral.300}", "type": "color"},
123
+ "brand": {"value": "{color.blue.500}", "type": "color"},
124
+ "brand-soft": {"value": "{color.blue.200}", "type": "color"}
51
125
  }
52
126
  },
53
127
  "font": {