@symbo.ls/mcp 1.0.6 → 1.0.8

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.
@@ -1,26 +1,26 @@
1
1
  # Default design system
2
2
 
3
- This document describes every token defined in `smbls/designSystem/` and how they are used in Symbols/DOMQL v3.
3
+ This document describes every token defined in `smbls/designSystem/` and how they are used in Symbols.app.
4
4
 
5
5
  ## Files
6
6
 
7
- | File | Purpose |
8
- |------|---------|
9
- | `COLOR.js` | Named color palette |
10
- | `GRADIENT.js` | Gradient definitions (empty by default) |
11
- | `THEME.js` | Semantic surface themes (document, dialog, field, primary…) |
12
- | `FONT.js` | Custom font faces |
13
- | `FONT_FAMILY.js` | Font family stacks |
14
- | `TYPOGRAPHY.js` | Type scale configuration |
15
- | `SPACING.js` | Spacing scale configuration |
16
- | `TIMING.js` | Easing curves |
17
- | `CLASS.js` | Utility CSS class overrides (empty by default) |
18
- | `GRID.js` | Grid presets (empty by default) |
19
- | `SHAPE.js` | Shape/border-radius presets (empty by default) |
20
- | `ANIMATION.js` | Named keyframe animations |
21
- | `MEDIA.js` | Custom media query breakpoints |
22
- | `CASES.js` | Conditional cases (environment flags) |
23
- | `RESET.js` | Global CSS reset overrides (empty by default) |
7
+ | File | Purpose |
8
+ | ---------------- | ----------------------------------------------------------- |
9
+ | `COLOR.js` | Named color palette |
10
+ | `GRADIENT.js` | Gradient definitions (empty by default) |
11
+ | `THEME.js` | Semantic surface themes (document, dialog, field, primary…) |
12
+ | `FONT.js` | Custom font faces |
13
+ | `FONT_FAMILY.js` | Font family stacks |
14
+ | `TYPOGRAPHY.js` | Type scale configuration |
15
+ | `SPACING.js` | Spacing scale configuration |
16
+ | `TIMING.js` | Easing curves |
17
+ | `CLASS.js` | Utility CSS class overrides (empty by default) |
18
+ | `GRID.js` | Grid presets (empty by default) |
19
+ | `SHAPE.js` | Shape/border-radius presets (empty by default) |
20
+ | `ANIMATION.js` | Named keyframe animations |
21
+ | `MEDIA.js` | Custom media query breakpoints |
22
+ | `CASES.js` | Conditional cases (environment flags) |
23
+ | `RESET.js` | Global CSS reset overrides (empty by default) |
24
24
 
25
25
  ---
26
26
 
@@ -32,34 +32,34 @@ Named hex values and semantic adaptive colors used everywhere via `color`, `back
32
32
 
33
33
  ### Static colors
34
34
 
35
- | Token | Value | Usage |
36
- |-------|-------|-------|
37
- | `green` | `#389d34` | Success states |
38
- | `red` | `#e15c55` | Warning/error states |
39
- | `yellow` | `#EDCB38` | Attention states |
40
- | `orange` | `#e97c16` | Accent states |
41
- | `blue` | `#0474f2` | Primary interactive color |
42
- | `phosphorus` | `#4db852` | Alternate success |
43
- | `black` | `black` | Pure black |
44
- | `white` | `#ffffff` | Pure white |
45
- | `gray` | `#4e4e50` | Neutral mid-tone base |
46
- | `codGray` | `#171717` | Near-black page background |
47
- | `solitude` | `#e5f1ff` | Light blue tint |
48
- | `anakiwa` | `#a3cdfd` | Light blue accent |
49
- | `concrete` | `#f2f2f2` | Light neutral |
50
- | `transparent` | `rgba(0,0,0,0)` | Fully transparent |
35
+ | Token | Value | Usage |
36
+ | ------------- | --------------- | -------------------------- |
37
+ | `green` | `#389d34` | Success states |
38
+ | `red` | `#e15c55` | Warning/error states |
39
+ | `yellow` | `#EDCB38` | Attention states |
40
+ | `orange` | `#e97c16` | Accent states |
41
+ | `blue` | `#0474f2` | Primary interactive color |
42
+ | `phosphorus` | `#4db852` | Alternate success |
43
+ | `black` | `black` | Pure black |
44
+ | `white` | `#ffffff` | Pure white |
45
+ | `gray` | `#4e4e50` | Neutral mid-tone base |
46
+ | `codGray` | `#171717` | Near-black page background |
47
+ | `solitude` | `#e5f1ff` | Light blue tint |
48
+ | `anakiwa` | `#a3cdfd` | Light blue accent |
49
+ | `concrete` | `#f2f2f2` | Light neutral |
50
+ | `transparent` | `rgba(0,0,0,0)` | Fully transparent |
51
51
 
52
52
  ### Adaptive semantic colors
53
53
 
54
54
  These tokens resolve to different values in dark and light mode. The `[dark, light]` tuple is applied automatically via the theme system.
55
55
 
56
- | Token | Dark value | Light value | Usage |
57
- |-------|-----------|-------------|-------|
58
- | `title` | `gray 1 −168` (near-white) | `gray 1 +168` (near-black) | Primary text |
59
- | `caption` | `gray 1 −68` | `gray 1 +68` | Secondary/meta text |
60
- | `paragraph` | `gray 1 −42` | `gray 1 +42` | Body copy |
61
- | `disabled` | `gray 1 −26` | `gray 1 +26` | Disabled state text |
62
- | `line` | `gray 1 −16` | `gray 1 +16` | Dividers and borders |
56
+ | Token | Dark value | Light value | Usage |
57
+ | ----------- | -------------------------- | -------------------------- | -------------------- |
58
+ | `title` | `gray 1 −168` (near-white) | `gray 1 +168` (near-black) | Primary text |
59
+ | `caption` | `gray 1 −68` | `gray 1 +68` | Secondary/meta text |
60
+ | `paragraph` | `gray 1 −42` | `gray 1 +42` | Body copy |
61
+ | `disabled` | `gray 1 −26` | `gray 1 +26` | Disabled state text |
62
+ | `line` | `gray 1 −16` | `gray 1 +16` | Dividers and borders |
63
63
 
64
64
  The `gray X ±Y` notation is a Symbols color function: start from `gray` at opacity `X`, then lighten or darken by `Y` steps.
65
65
 
@@ -67,13 +67,19 @@ The `gray X ±Y` notation is a Symbols color function: start from `gray` at opac
67
67
 
68
68
  ```js
69
69
  // Static color
70
- Text: { color: 'blue' }
70
+ Text: {
71
+ color: "blue";
72
+ }
71
73
 
72
74
  // Adaptive semantic color
73
- Caption: { color: 'caption' }
75
+ Caption: {
76
+ color: "caption";
77
+ }
74
78
 
75
79
  // Inline tint/shade
76
- Box: { background: 'gray 0.1' }
80
+ Box: {
81
+ background: "gray 0.1";
82
+ }
77
83
  ```
78
84
 
79
85
  ---
@@ -90,9 +96,9 @@ Themes define paired `background` + `color` (and optional effects) for dark and
90
96
 
91
97
  The page root surface.
92
98
 
93
- | Mode | Background | Text |
94
- |------|-----------|------|
95
- | dark | `codGray` (`#171717`) | `title` |
99
+ | Mode | Background | Text |
100
+ | ----- | -------------------------- | ------- |
101
+ | dark | `codGray` (`#171717`) | `title` |
96
102
  | light | `gray 1 +168` (near-white) | `title` |
97
103
 
98
104
  ```js
@@ -103,9 +109,9 @@ Page: { extends: 'Flex', theme: 'document', minHeight: '100dvh' }
103
109
 
104
110
  Elevated card or panel surface, with glass blur.
105
111
 
106
- | Mode | Background | Text | Blur |
107
- |------|-----------|------|------|
108
- | dark | `gray 0.95 −68` | `title` | `blur(3px)` |
112
+ | Mode | Background | Text | Blur |
113
+ | ----- | --------------- | ------- | ----------- |
114
+ | dark | `gray 0.95 −68` | `title` | `blur(3px)` |
109
115
  | light | `gray .95 +150` | `title` | `blur(3px)` |
110
116
 
111
117
  ```js
@@ -116,9 +122,9 @@ Card: { extends: 'Flex', theme: 'dialog', round: 'A', padding: 'A' }
116
122
 
117
123
  Higher elevation than `dialog`, used for active/selected states in tab bars.
118
124
 
119
- | Mode | Background | Text |
120
- |------|-----------|------|
121
- | dark | `gray 1 +68` | `title` |
125
+ | Mode | Background | Text |
126
+ | ----- | ---------------- | ------- |
127
+ | dark | `gray 1 +68` | `title` |
122
128
  | light | `gray 0.95 +140` | `title` |
123
129
 
124
130
  ```js
@@ -129,32 +135,34 @@ Tab: { '.isActive': { theme: 'dialog-elevated' } }
129
135
 
130
136
  Input control surface.
131
137
 
132
- | Mode | Background | Text | Placeholder |
133
- |------|-----------|------|-------------|
134
- | dark | `gray 0.95 −65` | `white` | `white 1 −78` |
135
- | light | transparent | `black` | `gray 1 −68` |
138
+ | Mode | Background | Text | Placeholder |
139
+ | ----- | --------------- | ------- | ------------- |
140
+ | dark | `gray 0.95 −65` | `white` | `white 1 −78` |
141
+ | light | transparent | `black` | `gray 1 −68` |
136
142
 
137
143
  ```js
138
- Input: { theme: 'field' }
144
+ Input: {
145
+ theme: "field";
146
+ }
139
147
  ```
140
148
 
141
149
  #### `field-dialog`
142
150
 
143
151
  Slightly elevated input variant, used inside dialog panels.
144
152
 
145
- | Mode | Background | Text |
146
- |------|-----------|------|
147
- | dark | `gray 1 −16` | `title` |
153
+ | Mode | Background | Text |
154
+ | ----- | ------------ | ------- |
155
+ | dark | `gray 1 −16` | `title` |
148
156
  | light | `gray 1 −96` | `title` |
149
157
 
150
158
  #### `primary`
151
159
 
152
160
  Main call-to-action color (blue background, white text).
153
161
 
154
- | Mode | Background | Text |
155
- |------|-----------|------|
156
- | dark | `blue` | `white` |
157
- | light | `blue` | `white` |
162
+ | Mode | Background | Text |
163
+ | ----- | ---------- | ------- |
164
+ | dark | `blue` | `white` |
165
+ | light | `blue` | `white` |
158
166
 
159
167
  ```js
160
168
  Button: { theme: 'primary', text: 'Save' }
@@ -164,10 +172,10 @@ Button: { theme: 'primary', text: 'Save' }
164
172
 
165
173
  Destructive or alert state (red background, white text).
166
174
 
167
- | Mode | Background | Text |
168
- |------|-----------|------|
169
- | dark | `red` | `white` |
170
- | light | `red` | `white` |
175
+ | Mode | Background | Text |
176
+ | ----- | ---------- | ------- |
177
+ | dark | `red` | `white` |
178
+ | light | `red` | `white` |
171
179
 
172
180
  ```js
173
181
  Badge: { theme: 'warning', text: 'Error' }
@@ -177,10 +185,10 @@ Badge: { theme: 'warning', text: 'Error' }
177
185
 
178
186
  Positive confirmation state (green background, white text).
179
187
 
180
- | Mode | Background | Text |
181
- |------|-----------|------|
182
- | dark | `green` | `white` |
183
- | light | `green` | `white` |
188
+ | Mode | Background | Text |
189
+ | ----- | ---------- | ------- |
190
+ | dark | `green` | `white` |
191
+ | light | `green` | `white` |
184
192
 
185
193
  #### `transparent`
186
194
 
@@ -194,13 +202,15 @@ Button: { theme: 'transparent', text: 'Cancel' }
194
202
 
195
203
  Transparent background with a 1 px border.
196
204
 
197
- | Mode | Border |
198
- |------|--------|
199
- | dark | `1px solid #4e4e50` |
205
+ | Mode | Border |
206
+ | ----- | ------------------- |
207
+ | dark | `1px solid #4e4e50` |
200
208
  | light | `1px solid #a3cdfd` |
201
209
 
202
210
  ```js
203
- Card: { theme: 'bordered' }
211
+ Card: {
212
+ theme: "bordered";
213
+ }
204
214
  ```
205
215
 
206
216
  #### `none`
@@ -215,15 +225,17 @@ File: `smbls/designSystem/FONT.js`
215
225
 
216
226
  Declares custom font faces loaded via the design system's `useFontImport` option.
217
227
 
218
- | Font | URL | Weight | Variable |
219
- |------|-----|--------|---------|
220
- | `AvenirNext_Variable` | Symbols CDN | 400 | yes |
228
+ | Font | URL | Weight | Variable |
229
+ | --------------------- | ----------- | ------ | -------- |
230
+ | `AvenirNext_Variable` | Symbols CDN | 400 | yes |
221
231
 
222
232
  The variable font covers all weights from a single file. It is used as the default UI font across the design system.
223
233
 
224
234
  ```js
225
235
  // In component
226
- Text: { fontFamily: 'AvenirNext_Variable' }
236
+ Text: {
237
+ fontFamily: "AvenirNext_Variable";
238
+ }
227
239
  ```
228
240
 
229
241
  ---
@@ -234,14 +246,16 @@ File: `smbls/designSystem/FONT_FAMILY.js`
234
246
 
235
247
  Defines font stack aliases.
236
248
 
237
- | Token | Stack | Type | Default |
238
- |-------|-------|------|---------|
239
- | `Default` | `San Francisco, Helvetica Neue, Helvetica, Arial` | `sans-serif` | yes |
249
+ | Token | Stack | Type | Default |
250
+ | --------- | ------------------------------------------------- | ------------ | ------- |
251
+ | `Default` | `San Francisco, Helvetica Neue, Helvetica, Arial` | `sans-serif` | yes |
240
252
 
241
253
  The `Default` stack is the system UI fallback used before `AvenirNext_Variable` loads.
242
254
 
243
255
  ```js
244
- Text: { fontFamily: 'Default' }
256
+ Text: {
257
+ fontFamily: "Default";
258
+ }
245
259
  ```
246
260
 
247
261
  ---
@@ -265,21 +279,25 @@ Controls the font-size scale used for all typographic tokens (`A`, `B`, `C`, `Z1
265
279
 
266
280
  The scale generates tokens from `W4` (smallest) to `C2` (largest) using the Fibonacci-like progression:
267
281
 
268
- | Token | Approx size |
269
- |-------|------------|
270
- | `W4`–`W1` | ~8–10 px |
271
- | `W`–`Z4` | ~10–11 px |
272
- | `Z3`–`Z` | ~11–12 px |
273
- | `Y4`–`A` | ~12–16 px |
274
- | `A1`–`B` | ~18–24 px |
275
- | `B1`–`C` | ~28–40 px |
276
- | `C1`–`C2` | ~48–64 px |
282
+ | Token | Approx size |
283
+ | --------- | ----------- |
284
+ | `W4`–`W1` | ~8–10 px |
285
+ | `W`–`Z4` | ~10–11 px |
286
+ | `Z3`–`Z` | ~11–12 px |
287
+ | `Y4`–`A` | ~12–16 px |
288
+ | `A1`–`B` | ~18–24 px |
289
+ | `B1`–`C` | ~28–40 px |
290
+ | `C1`–`C2` | ~48–64 px |
277
291
 
278
292
  Use these tokens as `fontSize` values on any text element.
279
293
 
280
294
  ```js
281
- Heading: { fontSize: 'C' }
282
- Caption: { fontSize: 'Z2' }
295
+ Heading: {
296
+ fontSize: "C";
297
+ }
298
+ Caption: {
299
+ fontSize: "Z2";
300
+ }
283
301
  ```
284
302
 
285
303
  ---
@@ -302,25 +320,31 @@ Controls the spacing scale used for all layout tokens (`padding`, `margin`, `gap
302
320
 
303
321
  The Golden Ratio produces a wider scale than typography. Common tokens:
304
322
 
305
- | Token | Approx value | Common use |
306
- |-------|-------------|-----------|
307
- | `W2`–`W` | 2–4 px | Micro gaps, offsets |
308
- | `X4`–`X` | 4–6 px | Icon padding, tight gaps |
309
- | `Y4`–`Y` | 6–10 px | Small gaps |
310
- | `Z4`–`Z` | 10–16 px | Compact padding |
311
- | `A`–`A4` | 16–26 px | Default padding, gutters |
312
- | `B`–`B4` | 26–42 px | Section padding |
313
- | `C`–`C4` | 42–68 px | Container padding, avatar sizes |
314
- | `D`–`D4` | 68–110 px | Large sections |
315
- | `E`–`F` | 110–178 px | Hero padding, max-widths |
316
- | `G`–`H` | 178–288 px | Wide containers |
323
+ | Token | Approx value | Common use |
324
+ | -------- | ------------ | ------------------------------- |
325
+ | `W2`–`W` | 2–4 px | Micro gaps, offsets |
326
+ | `X4`–`X` | 4–6 px | Icon padding, tight gaps |
327
+ | `Y4`–`Y` | 6–10 px | Small gaps |
328
+ | `Z4`–`Z` | 10–16 px | Compact padding |
329
+ | `A`–`A4` | 16–26 px | Default padding, gutters |
330
+ | `B`–`B4` | 26–42 px | Section padding |
331
+ | `C`–`C4` | 42–68 px | Container padding, avatar sizes |
332
+ | `D`–`D4` | 68–110 px | Large sections |
333
+ | `E`–`F` | 110–178 px | Hero padding, max-widths |
334
+ | `G`–`H` | 178–288 px | Wide containers |
317
335
 
318
336
  Compound tokens are written with `+` (e.g., `A+W2` means A plus the W2 step).
319
337
 
320
338
  ```js
321
- Box: { padding: 'A B2' } // top/bottom A, left/right B2
322
- Flex: { gap: 'Z' } // gap = ~16 px
323
- Avatar: { boxSize: 'C2' } // ~68 px square
339
+ Box: {
340
+ padding: "A B2";
341
+ } // top/bottom A, left/right B2
342
+ Flex: {
343
+ gap: "Z";
344
+ } // gap = ~16 px
345
+ Avatar: {
346
+ boxSize: "C2";
347
+ } // ~68 px square
324
348
  ```
325
349
 
326
350
  ---
@@ -331,8 +355,8 @@ File: `smbls/designSystem/TIMING.js`
331
355
 
332
356
  Named easing curves for CSS transitions and animations.
333
357
 
334
- | Token | Value | Character |
335
- |-------|-------|-----------|
358
+ | Token | Value | Character |
359
+ | --------------- | ---------------------------------- | --------------- |
336
360
  | `defaultBezier` | `cubic-bezier(.29, .67, .51, .97)` | Smooth ease-out |
337
361
 
338
362
  ```js
@@ -347,15 +371,19 @@ File: `smbls/designSystem/ANIMATION.js`
347
371
 
348
372
  Named keyframe animations available via `animation` prop.
349
373
 
350
- | Name | From | To | Use |
351
- |------|------|----|-----|
352
- | `fadeInUp` | `opacity: 0, translateY(12.5%)` | `opacity: 1, translateY(0)` | Entrance |
353
- | `fadeOutDown` | `opacity: 1, translateY(0)` | `opacity: 0, translateY(12.5%)` | Exit |
354
- | `marquee` | `translateX(0)` | `translateX(-50%)` | Scrolling ticker |
374
+ | Name | From | To | Use |
375
+ | ------------- | ------------------------------- | ------------------------------- | ---------------- |
376
+ | `fadeInUp` | `opacity: 0, translateY(12.5%)` | `opacity: 1, translateY(0)` | Entrance |
377
+ | `fadeOutDown` | `opacity: 1, translateY(0)` | `opacity: 0, translateY(12.5%)` | Exit |
378
+ | `marquee` | `translateX(0)` | `translateX(-50%)` | Scrolling ticker |
355
379
 
356
380
  ```js
357
- Modal: { animation: 'fadeInUp B defaultBezier' }
358
- Ticker: { animation: 'marquee 8s linear infinite' }
381
+ Modal: {
382
+ animation: "fadeInUp B defaultBezier";
383
+ }
384
+ Ticker: {
385
+ animation: "marquee 8s linear infinite";
386
+ }
359
387
  ```
360
388
 
361
389
  ---
@@ -366,9 +394,9 @@ File: `smbls/designSystem/MEDIA.js`
366
394
 
367
395
  Custom named breakpoints that extend the built-in set.
368
396
 
369
- | Token | Query |
370
- |-------|-------|
371
- | `mobileL` | `min-width: 480px` |
397
+ | Token | Query |
398
+ | ---------- | ------------------ |
399
+ | `mobileL` | `min-width: 480px` |
372
400
  | `tabletSm` | `min-width: 728px` |
373
401
 
374
402
  Use with `@` prefix in any element:
@@ -391,8 +419,8 @@ File: `smbls/designSystem/CASES.js`
391
419
 
392
420
  Conditional environment flags evaluated at runtime. Used as boolean props (`.caseName`) or state conditionals.
393
421
 
394
- | Case | Condition |
395
- |------|-----------|
422
+ | Case | Condition |
423
+ | ---------- | ------------------------------------------------------ |
396
424
  | `isSafari` | `true` when the browser is Safari (not Chrome/Android) |
397
425
 
398
426
  ```js
@@ -407,16 +435,16 @@ Element: {
407
435
 
408
436
  Set in `smbls/designSystem/index.js`:
409
437
 
410
- | Flag | Default | Effect |
411
- |------|---------|--------|
412
- | `useReset` | `true` | Apply a CSS reset |
413
- | `useVariable` | `true` | Emit CSS custom properties for all tokens |
414
- | `useFontImport` | `true` | Load `FONT` entries via `@font-face` |
415
- | `useIconSprite` | `true` | Inline the `ICONS` SVG sprite into the DOM |
416
- | `useSvgSprite` | `true` | Inline any SVG sprite definitions |
417
- | `useDefaultConfig` | `true` | Merge the smbls default design system config |
418
- | `useDocumentTheme` | `true` | Apply `document` theme to `<html>` |
419
- | `verbose` | `false` | Suppress design system debug output |
438
+ | Flag | Default | Effect |
439
+ | ------------------ | ------- | -------------------------------------------- |
440
+ | `useReset` | `true` | Apply a CSS reset |
441
+ | `useVariable` | `true` | Emit CSS custom properties for all tokens |
442
+ | `useFontImport` | `true` | Load `FONT` entries via `@font-face` |
443
+ | `useIconSprite` | `true` | Inline the `ICONS` SVG sprite into the DOM |
444
+ | `useSvgSprite` | `true` | Inline any SVG sprite definitions |
445
+ | `useDefaultConfig` | `true` | Merge the smbls default design system config |
446
+ | `useDocumentTheme` | `true` | Apply `document` theme to `<html>` |
447
+ | `verbose` | `false` | Suppress design system debug output |
420
448
 
421
449
  ---
422
450
 
@@ -427,11 +455,11 @@ Set in `smbls/designSystem/index.js`:
427
455
  Spacing props accept 1–4 tokens just like CSS shorthand:
428
456
 
429
457
  ```js
430
- padding: 'A' // all sides
431
- padding: 'A B' // vertical | horizontal
432
- padding: 'A B C' // top | horizontal | bottom
433
- padding: 'A B C D' // top | right | bottom | left
434
- margin: '- - - auto' // use '-' to skip a side (no-op)
458
+ padding: "A"; // all sides
459
+ padding: "A B"; // vertical | horizontal
460
+ padding: "A B C"; // top | horizontal | bottom
461
+ padding: "A B C D"; // top | right | bottom | left
462
+ margin: "- - - auto"; // use '-' to skip a side (no-op)
435
463
  ```
436
464
 
437
465
  ### Color modifier syntax