@campxdev/react-native-blueprint 0.1.15 → 0.1.16
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/global.css +672 -0
- package/lib/module/assets/Success-Tick.json +1 -0
- package/lib/module/assets/lotties/index.js +2 -1
- package/lib/module/assets/lotties/index.js.map +1 -1
- package/lib/module/components/DataDisplay/Banner/Banner.figma.js +25 -0
- package/lib/module/components/DataDisplay/Banner/Banner.figma.js.map +1 -0
- package/lib/module/components/DataDisplay/Banner/Banner.js +101 -0
- package/lib/module/components/DataDisplay/Banner/Banner.js.map +1 -0
- package/lib/module/components/DataDisplay/Greeting/Greeting.figma.js +15 -0
- package/lib/module/components/DataDisplay/Greeting/Greeting.figma.js.map +1 -0
- package/lib/module/components/DataDisplay/Greeting/Greeting.js +121 -0
- package/lib/module/components/DataDisplay/Greeting/Greeting.js.map +1 -0
- package/lib/module/components/DataDisplay/MonthCalendar/MonthCalendar.figma.js +5 -7
- package/lib/module/components/DataDisplay/MonthCalendar/MonthCalendar.figma.js.map +1 -1
- package/lib/module/components/Input/TextField/Textfield.js +77 -21
- package/lib/module/components/Input/TextField/Textfield.js.map +1 -1
- package/lib/module/components/ui/index.js +2 -1
- package/lib/module/components/ui/index.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/patterns/pattern-components/BottomSheetPattern/index.js +4 -0
- package/lib/module/patterns/pattern-components/BottomSheetPattern/index.js.map +1 -0
- package/lib/module/patterns/pattern-components/CalendarPattern/index.js +4 -0
- package/lib/module/patterns/pattern-components/CalendarPattern/index.js.map +1 -0
- package/lib/module/patterns/pattern-components/DashboardPattern/index.js +4 -0
- package/lib/module/patterns/pattern-components/DashboardPattern/index.js.map +1 -0
- package/lib/module/patterns/pattern-components/EntityPatternGuided/index.js +4 -0
- package/lib/module/patterns/pattern-components/EntityPatternGuided/index.js.map +1 -0
- package/lib/module/patterns/pattern-components/SuccessPattern/SuccessPattern.figma.js +38 -0
- package/lib/module/patterns/pattern-components/SuccessPattern/SuccessPattern.figma.js.map +1 -0
- package/lib/module/patterns/pattern-components/SuccessPattern/SuccessPattern.js +91 -0
- package/lib/module/patterns/pattern-components/SuccessPattern/SuccessPattern.js.map +1 -0
- package/lib/module/patterns/pattern-components/SuccessPattern/index.js +4 -0
- package/lib/module/patterns/pattern-components/SuccessPattern/index.js.map +1 -0
- package/lib/module/patterns/pattern-components/index.js +4 -3
- package/lib/module/patterns/pattern-components/index.js.map +1 -1
- package/package.json +3 -2
- package/src/assets/Success-Tick.json +1 -0
- package/src/assets/lotties/index.ts +1 -0
- package/src/components/DataDisplay/Banner/Banner.figma.tsx +26 -0
- package/src/components/DataDisplay/Banner/Banner.tsx +108 -0
- package/src/components/DataDisplay/Greeting/Greeting.figma.tsx +12 -0
- package/src/components/DataDisplay/Greeting/Greeting.tsx +154 -0
- package/src/components/DataDisplay/MonthCalendar/MonthCalendar.figma.tsx +7 -11
- package/src/components/Input/TextField/Textfield.tsx +118 -33
- package/src/components/ui/index.ts +3 -1
- package/src/index.tsx +3 -0
- package/src/patterns/pattern-components/BottomSheetPattern/index.ts +1 -0
- package/src/patterns/pattern-components/CalendarPattern/index.ts +1 -0
- package/src/patterns/pattern-components/DashboardPattern/index.ts +1 -0
- package/src/patterns/pattern-components/EntityPatternGuided/index.ts +1 -0
- package/src/patterns/pattern-components/SuccessPattern/SuccessPattern.figma.tsx +38 -0
- package/src/patterns/pattern-components/SuccessPattern/SuccessPattern.tsx +119 -0
- package/src/patterns/pattern-components/SuccessPattern/index.ts +2 -0
- package/src/patterns/pattern-components/index.ts +2 -1
- package/lib/module/components/ui/Greeting-Card.js +0 -393
- package/lib/module/components/ui/Greeting-Card.js.map +0 -1
- package/src/components/ui/Greeting-Card.tsx +0 -472
package/global.css
ADDED
|
@@ -0,0 +1,672 @@
|
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
/* ===================================== */
|
|
6
|
+
/* PRIMITIVES - BASE VALUES */
|
|
7
|
+
/* These are the foundational design */
|
|
8
|
+
/* tokens from your design system */
|
|
9
|
+
/* ===================================== */
|
|
10
|
+
:root {
|
|
11
|
+
/* === SPACING TOKENS (S0-S8) === */
|
|
12
|
+
/* Base spacing values used throughout */
|
|
13
|
+
--Spacing-S0: 0px;
|
|
14
|
+
--Spacing-S1: 2px;
|
|
15
|
+
--Spacing-S2: 4px;
|
|
16
|
+
--Spacing-S3: 8px;
|
|
17
|
+
--Spacing-S4: 12px;
|
|
18
|
+
--Spacing-S5: 16px;
|
|
19
|
+
--Spacing-S6: 20px;
|
|
20
|
+
--Spacing-S7: 24px;
|
|
21
|
+
--Spacing-S8: 32px;
|
|
22
|
+
|
|
23
|
+
/* === BRAND COLORS === */
|
|
24
|
+
--Colors-Campx-Black-Default: #121212ff;
|
|
25
|
+
--Colors-Campx-White-Default: #ffffffff;
|
|
26
|
+
|
|
27
|
+
/* === ACCENT COLORS === */
|
|
28
|
+
--Colors-Winnify-Violet-Default: #5b4bdbff;
|
|
29
|
+
--Colors-Winnify-Violet-Soft: #7a6ff0ff;
|
|
30
|
+
--Colors-Winnify-Violet-Strong: #4a38b8ff;
|
|
31
|
+
--Colors-Winnify-Orange-Soft: #ffc04dff;
|
|
32
|
+
--Colors-Winnify-Orange-Default: #f6a623ff;
|
|
33
|
+
--Colors-Winnify-Orange-Strong: #e69500ff;
|
|
34
|
+
|
|
35
|
+
/* === TEXT COLORS === */
|
|
36
|
+
--Colors-Text-White-50: #ffffff80; /* White at 50% opacity */
|
|
37
|
+
--Colors-Text-White-70: #ffffffb2; /* White at 70% opacity */
|
|
38
|
+
--Colors-Text-White: #ffffffff; /* Pure white */
|
|
39
|
+
--Colors-Text-Black-50: #b4b8c1ff; /* Black at 50% opacity */
|
|
40
|
+
--Colors-Text-Black-70: #6a7282ff; /* Black at 70% opacity */
|
|
41
|
+
--Colors-Text-Black: #121212ff; /* Pure black */
|
|
42
|
+
|
|
43
|
+
/* === GREY COLORS === */
|
|
44
|
+
--Colors-Greys-Violet-50: #f8f8feff; /* Very light violet-grey */
|
|
45
|
+
--Colors-Greys-Violet-80: #ebe9fbff; /* Light violet-grey */
|
|
46
|
+
--Colors-Greys-Blue-50: #f7f8faff; /* Very light blue-grey */
|
|
47
|
+
--Colors-Greys-Grey-100: #f3f4f6ff; /* Extra light grey */
|
|
48
|
+
--Colors-Greys-Grey-200: #cbd5e1ff; /* Light grey */
|
|
49
|
+
--Colors-Greys-Grey-400: #293640ff; /* Medium grey */
|
|
50
|
+
--Colors-Greys-Grey-500: #333333ff; /* Medium-dark grey */
|
|
51
|
+
--Colors-Greys-Grey-700: #1d2127ff; /* Dark grey */
|
|
52
|
+
--Colors-Greys-Grey-800: #161a1dff; /* Very dark grey */
|
|
53
|
+
|
|
54
|
+
/* === HIGHLIGHT COLORS (Full opacity) === */
|
|
55
|
+
--Colors-Highlights-Green: #88b053ff; /* Success/positive */
|
|
56
|
+
--Colors-Highlights-Blue: #4baabeff; /* Info/primary */
|
|
57
|
+
--Colors-Highlights-Red: #f2353cff; /* Alert/destructive */
|
|
58
|
+
--Colors-Highlights-Orange: #ed9035ff; /* Warning */
|
|
59
|
+
--Colors-Highlights-Purple: #573dabff; /* Highlight */
|
|
60
|
+
--Colors-Highlights-Pink: #ea4a6bff; /* Highlight */
|
|
61
|
+
|
|
62
|
+
/* === HIGHLIGHT COLORS (Muted - 20% opacity) === */
|
|
63
|
+
--Colors-Highlights-Green-muted: #88b05333;
|
|
64
|
+
--Colors-Highlights-Blue-muted: #4baabe33;
|
|
65
|
+
--Colors-Highlights-Red-muted: #f2353c33;
|
|
66
|
+
--Colors-Highlights-Orange-muted: #ed903533;
|
|
67
|
+
--Colors-Highlights-Purple-muted: #573dab33;
|
|
68
|
+
--Colors-Highlights-Pink-muted: #ea4a6b33;
|
|
69
|
+
|
|
70
|
+
/* === BORDER RADIUS (R0-R6) === */
|
|
71
|
+
/* Used for rounded corners throughout */
|
|
72
|
+
--Radii-R0: 0px; /* Sharp corners */
|
|
73
|
+
--Radii-R1: 2px; /* Subtle rounding */
|
|
74
|
+
--Radii-R2: 4px; /* Light rounding */
|
|
75
|
+
--Radii-R3: 8px; /* Standard rounding */
|
|
76
|
+
--Radii-R4: 12px; /* Medium rounding */
|
|
77
|
+
--Radii-R5: 20px; /* Large rounding */
|
|
78
|
+
--Radii-R6: 48px; /* Full pill shape */
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* ===================================== */
|
|
82
|
+
/* LIGHT MODE - Default Theme */
|
|
83
|
+
/* Applied by default in light mode */
|
|
84
|
+
/* ===================================== */
|
|
85
|
+
:root {
|
|
86
|
+
/* ===== NEW SYSTEM ===== */
|
|
87
|
+
/* === 1. BRAND COLORS === */
|
|
88
|
+
--colors-brand-primary: #121212ff;
|
|
89
|
+
--colors-brand-secondary: #ffffffff;
|
|
90
|
+
|
|
91
|
+
/* === 2. TEXT COLORS === */
|
|
92
|
+
--colors-text-primary: #121212ff;
|
|
93
|
+
--colors-text-secondary: #6a7282ff;
|
|
94
|
+
--colors-text-muted: #b4b8c1ff;
|
|
95
|
+
--colors-text-inverse: #ffffffff;
|
|
96
|
+
|
|
97
|
+
/* === 3. BASE COLORS === */
|
|
98
|
+
--colors-base-black: #121212ff;
|
|
99
|
+
--colors-base-white: #ffffffff;
|
|
100
|
+
|
|
101
|
+
/* === 4. SURFACE COLORS === */
|
|
102
|
+
--colors-surface-page: #f7f8faff;
|
|
103
|
+
--colors-surface-default: #ffffffff;
|
|
104
|
+
--colors-surface-subtle: #e6eaf1;
|
|
105
|
+
|
|
106
|
+
/* === 5. BORDER & INPUT === */
|
|
107
|
+
--colors-border-default: #cbd5e1ff;
|
|
108
|
+
|
|
109
|
+
/* === 6. ALERT COLORS === */
|
|
110
|
+
--colors-highlight-alert-red: #f2353cff;
|
|
111
|
+
--colors-highlight-alert-red-muted: #f2353c33;
|
|
112
|
+
|
|
113
|
+
/* === 7. SUCCESS COLORS === */
|
|
114
|
+
--colors-highlight-success-green: #88b053ff;
|
|
115
|
+
--colors-highlight-success-green-muted: #88b05333;
|
|
116
|
+
|
|
117
|
+
/* === 8. INFO COLORS === */
|
|
118
|
+
--colors-highlight-info-blue: #4baabeff;
|
|
119
|
+
--colors-highlight-info-blue-muted: #4baabe33;
|
|
120
|
+
|
|
121
|
+
/* === 9. WARNING COLORS === */
|
|
122
|
+
--colors-highlight-warning-orange: #ed9035ff;
|
|
123
|
+
--colors-highlight-warning-orange-muted: #ed903533;
|
|
124
|
+
|
|
125
|
+
/* === 10. HIGHLIGHT COLORS === */
|
|
126
|
+
--colors-highlight-highlight-purple: #573dabff;
|
|
127
|
+
--colors-highlight-highlight-purple-muted: #573dab33;
|
|
128
|
+
--colors-highlight-highlight-pink: #ea4a6bff;
|
|
129
|
+
--colors-highlight-highlight-pink-muted: #ea4a6b33;
|
|
130
|
+
|
|
131
|
+
/* === 11. SEMANTIC SPACING === */
|
|
132
|
+
--spacing-none: 0px;
|
|
133
|
+
--spacing-xxs: 2px;
|
|
134
|
+
--spacing-xs: 4px;
|
|
135
|
+
--spacing-sm: 8px;
|
|
136
|
+
--spacing-md: 12px;
|
|
137
|
+
--spacing-lg: 16px;
|
|
138
|
+
--spacing-xl: 20px;
|
|
139
|
+
--spacing-xxl: 24px;
|
|
140
|
+
|
|
141
|
+
/* === 12. SEMANTIC RADIUS === */
|
|
142
|
+
--radius-none: 0px;
|
|
143
|
+
--radius-xs: 2px;
|
|
144
|
+
--radius-sm: 4px;
|
|
145
|
+
--radius-md: 8px;
|
|
146
|
+
--radius-lg: 12px;
|
|
147
|
+
--radius-xl: 20px;
|
|
148
|
+
--radius-rounded: 48px;
|
|
149
|
+
|
|
150
|
+
/* ===== OLD SYSTEM (TO BE REPLACED) ===== */
|
|
151
|
+
/* === 1. SURFACES === */
|
|
152
|
+
--background: 210 17% 97%; /* #F7F8FA */
|
|
153
|
+
--card: 0 0% 100%; /* #FFFFFF */
|
|
154
|
+
--popover: 0 0% 100%; /* #FFFFFF */
|
|
155
|
+
--muted: 0 0% 100%; /* #FFFFFF - Same as card for consistency */
|
|
156
|
+
|
|
157
|
+
/* === 2. TEXT === */
|
|
158
|
+
--foreground: 0 0% 7%; /* #121212 */
|
|
159
|
+
--card-foreground: 0 0% 7%; /* #121212 */
|
|
160
|
+
--popover-foreground: 0 0% 7%; /* #121212 */
|
|
161
|
+
--muted-foreground: 0 0% 7% / 0.7; /* #121212 at 70% opacity */
|
|
162
|
+
|
|
163
|
+
/* === 3. PRIMARY (Main buttons, CTAs) === */
|
|
164
|
+
--primary: 200 13% 11%; /* #161A1D - Near black */
|
|
165
|
+
--primary-foreground: 0 0% 100%; /* #FFFFFF */
|
|
166
|
+
|
|
167
|
+
/* === 4. SECONDARY (Secondary buttons) === */
|
|
168
|
+
--secondary: 218 14% 53%; /* #64748B */
|
|
169
|
+
--secondary-foreground: 0 0% 100%; /* #FFFFFF */
|
|
170
|
+
|
|
171
|
+
/* === 5. TERTIARY/ACCENT (Highlights, selections) === */
|
|
172
|
+
--accent: 356 76% 57%; /* #E43341 - Crimson */
|
|
173
|
+
--accent-foreground: 0 0% 100%; /* #FFFFFF */
|
|
174
|
+
|
|
175
|
+
/* === 6. BORDERS === */
|
|
176
|
+
--border: 214 32% 84%; /* #CBD5E1 */
|
|
177
|
+
--input: 214 32% 84%; /* #CBD5E1 */
|
|
178
|
+
--ring: 200 13% 11%; /* #161A1D - Same as primary */
|
|
179
|
+
|
|
180
|
+
/* === 7. HIGHLIGHTS === */
|
|
181
|
+
--destructive: 356 87% 57%; /* #F2353C - Red */
|
|
182
|
+
--destructive-foreground: 0 0% 100%;
|
|
183
|
+
--success: 88 37% 52%; /* #88B053 - Green */
|
|
184
|
+
--info: 189 45% 51%; /* #4BAABE - Blue */
|
|
185
|
+
--warning: 28 81% 57%; /* #ED9035 - Orange */
|
|
186
|
+
|
|
187
|
+
/* === 8. BRAND COLORS (Custom - use manually) === */
|
|
188
|
+
--brand-1: 252 97% 25%; /* #1E027F - Deep violet */
|
|
189
|
+
--brand-2: 356 76% 57%; /* #E43341 - Crimson */
|
|
190
|
+
--brand-3: 304 69% 33%; /* #931C88 - Magenta */
|
|
191
|
+
|
|
192
|
+
/* === CHART COLORS === */
|
|
193
|
+
--chart-1: 88 37% 52%; /* #88B053 - Green */
|
|
194
|
+
--chart-2: 189 45% 51%; /* #4BAABE - Blue */
|
|
195
|
+
--chart-3: 28 81% 57%; /* #ED9035 - Orange */
|
|
196
|
+
--chart-4: 254 46% 42%; /* #573DAB - Purple */
|
|
197
|
+
--chart-5: 348 78% 60%; /* #EA4A6B - Pink */
|
|
198
|
+
|
|
199
|
+
/* === SIDEBAR === */
|
|
200
|
+
--sidebar: 0 0% 100%; /* #FFFFFF */
|
|
201
|
+
--sidebar-foreground: 0 0% 7%; /* #121212 */
|
|
202
|
+
--sidebar-primary: 214 14% 64%; /* #94A3B8 */
|
|
203
|
+
--sidebar-primary-foreground: 0 0% 100%;
|
|
204
|
+
--sidebar-accent: 356 76% 57%; /* #E43341 */
|
|
205
|
+
--sidebar-accent-foreground: 0 0% 100%;
|
|
206
|
+
--sidebar-border: 214 32% 84%; /* #CBD5E1 */
|
|
207
|
+
--sidebar-ring: 214 14% 64%; /* #94A3B8 */
|
|
208
|
+
|
|
209
|
+
/* === FONTS === */
|
|
210
|
+
--font-poppins:
|
|
211
|
+
'Poppins', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
|
|
212
|
+
'Segoe UI', Roboto, sans-serif;
|
|
213
|
+
--font-heebo:
|
|
214
|
+
'Heebo', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
|
|
215
|
+
'Segoe UI', Roboto, sans-serif;
|
|
216
|
+
--font-sans:
|
|
217
|
+
ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
|
218
|
+
Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
|
|
219
|
+
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
|
220
|
+
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
|
|
221
|
+
--font-mono:
|
|
222
|
+
ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
|
|
223
|
+
'Courier New', monospace;
|
|
224
|
+
|
|
225
|
+
/* === FONT SIZES (From CampX Typography System) === */
|
|
226
|
+
--font-size-xs: 12px; /* Captions */
|
|
227
|
+
--font-size-sm: 14px; /* Body 2, Labels, Buttons */
|
|
228
|
+
--font-size-base: 16px; /* Body 1, Subtitle 2 */
|
|
229
|
+
--font-size-lg: 18px; /* Subtitle 1 */
|
|
230
|
+
--font-size-xl: 20px; /* Large text */
|
|
231
|
+
--font-size-2xl: 24px; /* H6 */
|
|
232
|
+
--font-size-3xl: 30px; /* H5 */
|
|
233
|
+
--font-size-4xl: 36px; /* H4 */
|
|
234
|
+
--font-size-5xl: 48px; /* H3, Display */
|
|
235
|
+
|
|
236
|
+
/* === FONT WEIGHTS === */
|
|
237
|
+
--font-weight-normal: 400; /* Regular/Medium - Body text, labels */
|
|
238
|
+
--font-weight-semibold: 600; /* Semi Bold - Subtitles, buttons, body emphasis */
|
|
239
|
+
--font-weight-bold: 800; /* Extra Bold - Headings */
|
|
240
|
+
|
|
241
|
+
/* === LINE HEIGHTS === */
|
|
242
|
+
--line-height-tight: 1.25; /* Headings */
|
|
243
|
+
--line-height-normal: 1.5; /* Body text */
|
|
244
|
+
--line-height-relaxed: 1.75; /* Long-form content */
|
|
245
|
+
|
|
246
|
+
/* === PRIMITIVE SPACING TOKENS (From Figma) === */
|
|
247
|
+
--space-0: 0px; /* S0 */
|
|
248
|
+
--space-1: 2px; /* S1 */
|
|
249
|
+
--space-2: 4px; /* S2 */
|
|
250
|
+
--space-3: 8px; /* S3 */
|
|
251
|
+
--space-4: 12px; /* S4 */
|
|
252
|
+
--space-5: 16px; /* S5 */
|
|
253
|
+
--space-6: 20px; /* S6 */
|
|
254
|
+
--space-7: 24px; /* S7 */
|
|
255
|
+
--space-8: 32px; /* S8 */
|
|
256
|
+
--space-9: 48px; /* S9 */
|
|
257
|
+
--space-10: 52px; /* S10 */
|
|
258
|
+
|
|
259
|
+
/* === SEMANTIC SPACING TOKENS === */
|
|
260
|
+
--spacing-none: 0px;
|
|
261
|
+
--spacing-xs: 4px;
|
|
262
|
+
--spacing-sm: 8px;
|
|
263
|
+
--spacing-md: 16px;
|
|
264
|
+
--spacing-lg: 24px;
|
|
265
|
+
--spacing-xl: 32px;
|
|
266
|
+
--spacing-2xl: 48px;
|
|
267
|
+
|
|
268
|
+
/* Component-specific spacing (can be changed independently) */
|
|
269
|
+
--spacing-button-x: 16px; /* Button horizontal padding */
|
|
270
|
+
--spacing-button-y: 12px; /* Button vertical padding */
|
|
271
|
+
--spacing-card: 16px; /* Card padding */
|
|
272
|
+
--spacing-input-x: 12px; /* Input horizontal padding */
|
|
273
|
+
--spacing-input-y: 8px; /* Input vertical padding */
|
|
274
|
+
|
|
275
|
+
/* === PRIMITIVE RADIUS TOKENS (From Your Design System) === */
|
|
276
|
+
--radius-0: 0px; /* R0 */
|
|
277
|
+
--radius-1: 2px; /* R1 */
|
|
278
|
+
--radius-2: 4px; /* R2 */
|
|
279
|
+
--radius-3: 8px; /* R3 */
|
|
280
|
+
--radius-4: 12px; /* R4 */
|
|
281
|
+
--radius-5: 20px; /* R5 */
|
|
282
|
+
--radius-6: 24px; /* R6 */
|
|
283
|
+
--radius-7: 32px; /* R7 */
|
|
284
|
+
--radius-8: 48px; /* R8 */
|
|
285
|
+
|
|
286
|
+
/* === SEMANTIC RADIUS TOKENS === */
|
|
287
|
+
--radius-none: 0px; /* 0px */
|
|
288
|
+
--radius-sm: 4px; /* 4px */
|
|
289
|
+
--radius-md: 8px; /* 12px */
|
|
290
|
+
--radius-lg: 20px; /* 20px */
|
|
291
|
+
--radius-xl: 24px; /* 24px */
|
|
292
|
+
--radius-2xl: 32px; /* 32px */
|
|
293
|
+
--radius-full: 9999px; /* Fully rounded - pills, avatars */
|
|
294
|
+
|
|
295
|
+
/* Corner smoothing value (0-1, where 1 = 100% smoothing) */
|
|
296
|
+
--corner-smoothing: 1; /* 100% Apple-style smoothing for all corners */
|
|
297
|
+
|
|
298
|
+
/* === ICON SIZES (From Figma) === */
|
|
299
|
+
--icon-sm: 16px; /* WH3 - Small icons */
|
|
300
|
+
--icon-md: 20px; /* WH2 - Medium icons */
|
|
301
|
+
--icon-lg: 24px; /* WH1 - Large icons */
|
|
302
|
+
|
|
303
|
+
/* === SHADOWS === */
|
|
304
|
+
--shadow-x: 0;
|
|
305
|
+
--shadow-y: 1px;
|
|
306
|
+
--shadow-blur: 3px;
|
|
307
|
+
--shadow-spread: 0px;
|
|
308
|
+
--shadow-opacity: 0.1;
|
|
309
|
+
--shadow-color: 0 0% 0%;
|
|
310
|
+
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
|
311
|
+
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
|
312
|
+
--shadow-sm:
|
|
313
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
|
|
314
|
+
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
|
|
315
|
+
--shadow-md:
|
|
316
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);
|
|
317
|
+
--shadow-lg:
|
|
318
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);
|
|
319
|
+
--shadow-xl:
|
|
320
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);
|
|
321
|
+
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
|
322
|
+
|
|
323
|
+
/* === LEGACY (kept for backwards compatibility) === */
|
|
324
|
+
--radius: 8px; /* Default radius - use semantic tokens instead */
|
|
325
|
+
--spacing: 4px; /* Default spacing - use semantic tokens instead */
|
|
326
|
+
--tracking-normal: 0em;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* ===================================== */
|
|
330
|
+
/* DARK MODE - Override Theme */
|
|
331
|
+
/* Applied when system prefers dark mode */
|
|
332
|
+
/* ===================================== */
|
|
333
|
+
@media (prefers-color-scheme: dark) {
|
|
334
|
+
:root {
|
|
335
|
+
/* ===== NEW SYSTEM ===== */
|
|
336
|
+
/* === 1. BRAND COLORS === */
|
|
337
|
+
--colors-brand-primary: #ffffffff;
|
|
338
|
+
--colors-brand-secondary: #121212ff;
|
|
339
|
+
|
|
340
|
+
/* === 2. TEXT COLORS === */
|
|
341
|
+
--colors-text-primary: #ffffffff;
|
|
342
|
+
--colors-text-secondary: #ffffffb2;
|
|
343
|
+
--colors-text-muted: #ffffff80;
|
|
344
|
+
--colors-text-inverse: #121212ff;
|
|
345
|
+
|
|
346
|
+
/* === 3. BASE COLORS === */
|
|
347
|
+
--colors-base-black: #121212ff;
|
|
348
|
+
--colors-base-white: #ffffffff;
|
|
349
|
+
|
|
350
|
+
/* === 4. SURFACE COLORS === */
|
|
351
|
+
--colors-surface-page: #1d2127ff;
|
|
352
|
+
--colors-surface-default: #161a1dff;
|
|
353
|
+
--colors-surface-subtle: #293640ff;
|
|
354
|
+
|
|
355
|
+
/* === 5. BORDER & INPUT === */
|
|
356
|
+
--colors-border-default: #333333ff;
|
|
357
|
+
|
|
358
|
+
/* === 6. ALERT COLORS === */
|
|
359
|
+
--colors-highlight-alert-red: #f2353cff;
|
|
360
|
+
--colors-highlight-alert-red-muted: #f2353c33;
|
|
361
|
+
|
|
362
|
+
/* === 7. SUCCESS COLORS === */
|
|
363
|
+
--colors-highlight-success-green: #88b053ff;
|
|
364
|
+
--colors-highlight-success-green-muted: #88b05333;
|
|
365
|
+
|
|
366
|
+
/* === 8. INFO COLORS === */
|
|
367
|
+
--colors-highlight-info-blue: #4baabeff;
|
|
368
|
+
--colors-highlight-info-blue-muted: #4baabe33;
|
|
369
|
+
|
|
370
|
+
/* === 9. WARNING COLORS === */
|
|
371
|
+
--colors-highlight-warning-orange: #ed9035ff;
|
|
372
|
+
--colors-highlight-warning-orange-muted: #ed903533;
|
|
373
|
+
|
|
374
|
+
/* === 10. HIGHLIGHT COLORS === */
|
|
375
|
+
--colors-highlight-highlight-purple: #573dabff;
|
|
376
|
+
--colors-highlight-highlight-purple-muted: #573dab33;
|
|
377
|
+
--colors-highlight-highlight-pink: #ea4a6bff;
|
|
378
|
+
--colors-highlight-highlight-pink-muted: #ea4a6b33;
|
|
379
|
+
|
|
380
|
+
/* === 11. SEMANTIC SPACING === */
|
|
381
|
+
--spacing-none: 0px;
|
|
382
|
+
--spacing-xxs: 2px;
|
|
383
|
+
--spacing-xs: 4px;
|
|
384
|
+
--spacing-sm: 8px;
|
|
385
|
+
--spacing-md: 12px;
|
|
386
|
+
--spacing-lg: 16px;
|
|
387
|
+
--spacing-xl: 20px;
|
|
388
|
+
--spacing-xxl: 24px;
|
|
389
|
+
|
|
390
|
+
/* === 12. SEMANTIC RADIUS === */
|
|
391
|
+
--radius-none: 0px;
|
|
392
|
+
--radius-xs: 2px;
|
|
393
|
+
--radius-sm: 4px;
|
|
394
|
+
--radius-md: 8px;
|
|
395
|
+
--radius-lg: 12px;
|
|
396
|
+
--radius-xl: 20px;
|
|
397
|
+
--radius-rounded: 48px;
|
|
398
|
+
|
|
399
|
+
/* ===== OLD SYSTEM (TO BE REPLACED) ===== */
|
|
400
|
+
/* === 1. SURFACES === */
|
|
401
|
+
--background: 200 13% 10%; /* #161A1D */
|
|
402
|
+
--card: 180 14% 13%; /* #1D2727 */
|
|
403
|
+
--popover: 180 14% 13%; /* #1D2727 */
|
|
404
|
+
--muted: 180 14% 13%; /* #1D2727 - Same as card for consistency */
|
|
405
|
+
|
|
406
|
+
/* === 2. TEXT === */
|
|
407
|
+
--foreground: 0 0% 100%; /* #FFFFFF */
|
|
408
|
+
--card-foreground: 0 0% 100%; /* #FFFFFF */
|
|
409
|
+
--popover-foreground: 0 0% 100%; /* #FFFFFF */
|
|
410
|
+
--muted-foreground: 0 0% 100% / 0.7; /* #FFFFFF at 70% opacity */
|
|
411
|
+
|
|
412
|
+
/* === 3. PRIMARY (Main buttons, CTAs) === */
|
|
413
|
+
--primary: 210 13% 85%; /* #D0D5D9 - Light grey (softer than white) */
|
|
414
|
+
--primary-foreground: 200 13% 11%; /* #161A1D - Dark text */
|
|
415
|
+
|
|
416
|
+
/* === 4. SECONDARY (Secondary buttons) === */
|
|
417
|
+
--secondary: 218 14% 53%; /* #64748B */
|
|
418
|
+
--secondary-foreground: 0 0% 100%; /* #FFFFFF */
|
|
419
|
+
|
|
420
|
+
/* === 5. TERTIARY/ACCENT (Highlights, selections) === */
|
|
421
|
+
--accent: 356 76% 57%; /* #E43341 - Crimson */
|
|
422
|
+
--accent-foreground: 0 0% 100%; /* #FFFFFF */
|
|
423
|
+
|
|
424
|
+
/* === 6. BORDERS === */
|
|
425
|
+
--border: 215 25% 27%; /* #334155 - Balanced slate-700 */
|
|
426
|
+
--input: 215 25% 27%; /* #334155 */
|
|
427
|
+
--ring: 210 13% 85%; /* #D0D5D9 - Same as primary */
|
|
428
|
+
|
|
429
|
+
/* === 7. HIGHLIGHTS === */
|
|
430
|
+
--destructive: 356 87% 57%; /* #F2353C - Red */
|
|
431
|
+
--destructive-foreground: 0 0% 100%;
|
|
432
|
+
--success: 88 37% 52%; /* #88B053 - Green */
|
|
433
|
+
--info: 189 45% 51%; /* #4BAABE - Blue */
|
|
434
|
+
--warning: 28 81% 57%; /* #ED9035 - Orange */
|
|
435
|
+
|
|
436
|
+
/* === 8. BRAND COLORS (Custom - use manually) === */
|
|
437
|
+
--brand-1: 244 100% 73%; /* #8075FF - Cool violet */
|
|
438
|
+
--brand-2: 356 76% 57%; /* #E43341 - Crimson */
|
|
439
|
+
--brand-3: 291 46% 61%; /* #C160D4 - Light magenta */
|
|
440
|
+
|
|
441
|
+
/* === CHART COLORS === */
|
|
442
|
+
--chart-1: 88 37% 52%; /* #88B053 - Green */
|
|
443
|
+
--chart-2: 189 45% 51%; /* #4BAABE - Blue */
|
|
444
|
+
--chart-3: 28 81% 57%; /* #ED9035 - Orange */
|
|
445
|
+
--chart-4: 254 46% 42%; /* #573DAB - Purple */
|
|
446
|
+
--chart-5: 348 78% 60%; /* #EA4A6B - Pink */
|
|
447
|
+
|
|
448
|
+
/* === SIDEBAR === */
|
|
449
|
+
--sidebar: 180 14% 13%; /* #1D2727 */
|
|
450
|
+
--sidebar-foreground: 0 0% 100%; /* #FFFFFF */
|
|
451
|
+
--sidebar-primary: 214 14% 64%; /* #94A3B8 */
|
|
452
|
+
--sidebar-primary-foreground: 200 13% 10%; /* #161A1D */
|
|
453
|
+
--sidebar-accent: 356 76% 57%; /* #E43341 */
|
|
454
|
+
--sidebar-accent-foreground: 0 0% 100%;
|
|
455
|
+
--sidebar-border: 215 25% 27%; /* #334155 */
|
|
456
|
+
--sidebar-ring: 214 14% 64%; /* #94A3B8 */
|
|
457
|
+
|
|
458
|
+
/* === FONTS === */
|
|
459
|
+
--font-sans:
|
|
460
|
+
ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
|
461
|
+
Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
|
|
462
|
+
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
|
|
463
|
+
'Noto Color Emoji';
|
|
464
|
+
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
|
|
465
|
+
--font-mono:
|
|
466
|
+
ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
|
|
467
|
+
'Courier New', monospace;
|
|
468
|
+
|
|
469
|
+
/* === PRIMITIVE SPACING TOKENS (From Figma) === */
|
|
470
|
+
--space-0: 0px; /* S0 */
|
|
471
|
+
--space-1: 2px; /* S1 */
|
|
472
|
+
--space-2: 4px; /* S2 */
|
|
473
|
+
--space-3: 8px; /* S3 */
|
|
474
|
+
--space-4: 12px; /* S4 */
|
|
475
|
+
--space-5: 16px; /* S5 */
|
|
476
|
+
--space-6: 20px; /* S6 */
|
|
477
|
+
--space-7: 24px; /* S7 */
|
|
478
|
+
--space-8: 32px; /* S8 */
|
|
479
|
+
--space-9: 48px; /* S9 */
|
|
480
|
+
--space-10: 52px; /* S10 */
|
|
481
|
+
|
|
482
|
+
/* === SEMANTIC SPACING TOKENS === */
|
|
483
|
+
--spacing-none: 0px;
|
|
484
|
+
--spacing-xs: 4px;
|
|
485
|
+
--spacing-sm: 8px;
|
|
486
|
+
--spacing-md: 16px;
|
|
487
|
+
--spacing-lg: 24px;
|
|
488
|
+
--spacing-xl: 32px;
|
|
489
|
+
--spacing-2xl: 48px;
|
|
490
|
+
|
|
491
|
+
/* Component-specific spacing */
|
|
492
|
+
--spacing-button-x: 16px;
|
|
493
|
+
--spacing-button-y: 12px;
|
|
494
|
+
--spacing-card: 16px;
|
|
495
|
+
--spacing-input-x: 12px;
|
|
496
|
+
--spacing-input-y: 8px;
|
|
497
|
+
|
|
498
|
+
/* === PRIMITIVE RADIUS TOKENS (From Your Design System) === */
|
|
499
|
+
--radius-0: 0px; /* R0 */
|
|
500
|
+
--radius-1: 2px; /* R1 */
|
|
501
|
+
--radius-2: 4px; /* R2 */
|
|
502
|
+
--radius-3: 8px; /* R3 */
|
|
503
|
+
--radius-4: 12px; /* R4 */
|
|
504
|
+
--radius-5: 20px; /* R5 */
|
|
505
|
+
--radius-6: 24px; /* R6 */
|
|
506
|
+
--radius-7: 32px; /* R7 */
|
|
507
|
+
--radius-8: 48px; /* R8 */
|
|
508
|
+
|
|
509
|
+
/* === SEMANTIC RADIUS TOKENS === */
|
|
510
|
+
--radius-none: 0px; /* 0px */
|
|
511
|
+
--radius-sm: 4px; /* 4px */
|
|
512
|
+
--radius-md: 8px; /* 12px */
|
|
513
|
+
--radius-lg: 20px; /* 20px */
|
|
514
|
+
--radius-xl: 24px; /* 24px */
|
|
515
|
+
--radius-2xl: 32px; /* 32px */
|
|
516
|
+
--radius-full: 9999px; /* Fully rounded */
|
|
517
|
+
|
|
518
|
+
/* Corner smoothing value */
|
|
519
|
+
--corner-smoothing: 1; /* 100% smoothing */
|
|
520
|
+
|
|
521
|
+
/* === ICON SIZES (From Figma) === */
|
|
522
|
+
--icon-sm: 16px; /* WH3 */
|
|
523
|
+
--icon-md: 20px; /* WH2 */
|
|
524
|
+
--icon-lg: 24px; /* WH1 */
|
|
525
|
+
|
|
526
|
+
/* === SHADOWS === */
|
|
527
|
+
--shadow-x: 0;
|
|
528
|
+
--shadow-y: 1px;
|
|
529
|
+
--shadow-blur: 3px;
|
|
530
|
+
--shadow-spread: 0px;
|
|
531
|
+
--shadow-opacity: 0.1;
|
|
532
|
+
--shadow-color: 0 0% 0%;
|
|
533
|
+
--shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
|
534
|
+
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
|
|
535
|
+
--shadow-sm:
|
|
536
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
|
|
537
|
+
--shadow:
|
|
538
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
|
|
539
|
+
--shadow-md:
|
|
540
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);
|
|
541
|
+
--shadow-lg:
|
|
542
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);
|
|
543
|
+
--shadow-xl:
|
|
544
|
+
0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);
|
|
545
|
+
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
|
546
|
+
|
|
547
|
+
/* === LEGACY (kept for backwards compatibility) === */
|
|
548
|
+
--radius: 8px;
|
|
549
|
+
--spacing: 4px;
|
|
550
|
+
--tracking-normal: 0em;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
@theme inline {
|
|
555
|
+
--color-background: var(--background);
|
|
556
|
+
--color-foreground: var(--foreground);
|
|
557
|
+
--color-card: var(--card);
|
|
558
|
+
--color-card-foreground: var(--card-foreground);
|
|
559
|
+
--color-popover: var(--popover);
|
|
560
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
561
|
+
--color-primary: var(--primary);
|
|
562
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
563
|
+
--color-secondary: var(--secondary);
|
|
564
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
565
|
+
--color-muted: var(--muted);
|
|
566
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
567
|
+
--color-accent: var(--accent);
|
|
568
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
569
|
+
--color-destructive: var(--destructive);
|
|
570
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
571
|
+
--color-border: var(--border);
|
|
572
|
+
--color-input: var(--input);
|
|
573
|
+
--color-ring: var(--ring);
|
|
574
|
+
|
|
575
|
+
/* Brand colors */
|
|
576
|
+
--color-brand-1: var(--brand-1);
|
|
577
|
+
--color-brand-2: var(--brand-2);
|
|
578
|
+
--color-brand-3: var(--brand-3);
|
|
579
|
+
|
|
580
|
+
/* Highlight colors */
|
|
581
|
+
--color-success: hsl(var(--success));
|
|
582
|
+
--color-info: hsl(var(--info));
|
|
583
|
+
--color-warning: hsl(var(--warning));
|
|
584
|
+
|
|
585
|
+
/* Chart colors */
|
|
586
|
+
--color-chart-1: var(--chart-1);
|
|
587
|
+
--color-chart-2: var(--chart-2);
|
|
588
|
+
--color-chart-3: var(--chart-3);
|
|
589
|
+
--color-chart-4: var(--chart-4);
|
|
590
|
+
--color-chart-5: var(--chart-5);
|
|
591
|
+
|
|
592
|
+
/* Sidebar colors */
|
|
593
|
+
--color-sidebar: var(--sidebar);
|
|
594
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
595
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
596
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
597
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
598
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
599
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
600
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
601
|
+
|
|
602
|
+
--font-sans: var(--font-sans);
|
|
603
|
+
--font-mono: var(--font-mono);
|
|
604
|
+
--font-serif: var(--font-serif);
|
|
605
|
+
|
|
606
|
+
/* Primitive spacing tokens (S0-S10 from Figma) */
|
|
607
|
+
--space-0: var(--space-0);
|
|
608
|
+
--space-1: var(--space-1);
|
|
609
|
+
--space-2: var(--space-2);
|
|
610
|
+
--space-3: var(--space-3);
|
|
611
|
+
--space-4: var(--space-4);
|
|
612
|
+
--space-5: var(--space-5);
|
|
613
|
+
--space-6: var(--space-6);
|
|
614
|
+
--space-7: var(--space-7);
|
|
615
|
+
--space-8: var(--space-8);
|
|
616
|
+
--space-9: var(--space-9);
|
|
617
|
+
--space-10: var(--space-10);
|
|
618
|
+
|
|
619
|
+
/* Semantic spacing tokens */
|
|
620
|
+
--spacing-none: var(--spacing-none);
|
|
621
|
+
--spacing-xs: var(--spacing-xs);
|
|
622
|
+
--spacing-sm: var(--spacing-sm);
|
|
623
|
+
--spacing-md: var(--spacing-md);
|
|
624
|
+
--spacing-lg: var(--spacing-lg);
|
|
625
|
+
--spacing-xl: var(--spacing-xl);
|
|
626
|
+
--spacing-2xl: var(--spacing-2xl);
|
|
627
|
+
|
|
628
|
+
/* Component-specific spacing */
|
|
629
|
+
--spacing-button-x: var(--spacing-button-x);
|
|
630
|
+
--spacing-button-y: var(--spacing-button-y);
|
|
631
|
+
--spacing-card: var(--spacing-card);
|
|
632
|
+
--spacing-input-x: var(--spacing-input-x);
|
|
633
|
+
--spacing-input-y: var(--spacing-input-y);
|
|
634
|
+
|
|
635
|
+
/* Primitive radius tokens (R0-R8) */
|
|
636
|
+
--radius-0: var(--radius-0);
|
|
637
|
+
--radius-1: var(--radius-1);
|
|
638
|
+
--radius-2: var(--radius-2);
|
|
639
|
+
--radius-3: var(--radius-3);
|
|
640
|
+
--radius-4: var(--radius-4);
|
|
641
|
+
--radius-5: var(--radius-5);
|
|
642
|
+
--radius-6: var(--radius-6);
|
|
643
|
+
--radius-7: var(--radius-7);
|
|
644
|
+
--radius-8: var(--radius-8);
|
|
645
|
+
|
|
646
|
+
/* Semantic radius tokens */
|
|
647
|
+
--radius-none: var(--radius-none);
|
|
648
|
+
--radius-sm: var(--radius-sm);
|
|
649
|
+
--radius-md: var(--radius-md);
|
|
650
|
+
--radius-lg: var(--radius-lg);
|
|
651
|
+
--radius-xl: var(--radius-xl);
|
|
652
|
+
--radius-2xl: var(--radius-2xl);
|
|
653
|
+
--radius-full: var(--radius-full);
|
|
654
|
+
|
|
655
|
+
/* Corner smoothing */
|
|
656
|
+
--corner-smoothing: var(--corner-smoothing);
|
|
657
|
+
|
|
658
|
+
/* Icon sizes */
|
|
659
|
+
--icon-sm: var(--icon-sm);
|
|
660
|
+
--icon-md: var(--icon-md);
|
|
661
|
+
--icon-lg: var(--icon-lg);
|
|
662
|
+
|
|
663
|
+
/* Shadows */
|
|
664
|
+
--shadow-2xs: var(--shadow-2xs);
|
|
665
|
+
--shadow-xs: var(--shadow-xs);
|
|
666
|
+
--shadow-sm: var(--shadow-sm);
|
|
667
|
+
--shadow: var(--shadow);
|
|
668
|
+
--shadow-md: var(--shadow-md);
|
|
669
|
+
--shadow-lg: var(--shadow-lg);
|
|
670
|
+
--shadow-xl: var(--shadow-xl);
|
|
671
|
+
--shadow-2xl: var(--shadow-2xl);
|
|
672
|
+
}
|