@stevegreco/design-system 0.0.1 → 0.0.3

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.
@@ -214,104 +214,104 @@
214
214
  */
215
215
 
216
216
  :root {
217
- --component-button-secondary-bg: rgba(0, 0, 0, 0);
218
- --component-button-ghost-bg: rgba(0, 0, 0, 0);
217
+ --component-alert-radius: 10px;
218
+ --component-alert-padding: 16px;
219
+ --component-alert-gap: 12px;
220
+ --component-alert-font-size: 14px;
221
+ --component-alert-title-font-weight: 600;
222
+ --component-alert-success-background: #e3ecd9;
223
+ --component-alert-success-foreground: #4a6b3d;
224
+ --component-alert-success-icon-color: #6b8e5a;
225
+ --component-alert-success-border: #e3ecd9;
226
+ --component-alert-danger-background: #f5dbd0;
227
+ --component-alert-danger-foreground: #84301c;
228
+ --component-alert-danger-icon-color: #b8472a;
229
+ --component-alert-danger-border: #f5dbd0;
230
+ --component-alert-warning-background: #f7edce;
231
+ --component-alert-warning-foreground: #823f1e;
232
+ --component-alert-warning-icon-color: #c06d1f;
233
+ --component-alert-warning-border: #f7edce;
234
+ --component-alert-info-background: #d6e1ea;
235
+ --component-alert-info-foreground: #2f5973;
236
+ --component-alert-info-icon-color: #4a7896;
237
+ --component-alert-info-border: #d6e1ea;
238
+ --component-badge-radius: 9999px;
239
+ --component-badge-padding-x: 8px;
240
+ --component-badge-padding-y: 1px;
241
+ --component-badge-font-size: 12px;
242
+ --component-badge-font-weight: 500;
243
+ --component-badge-default-background: #e0e7e3;
244
+ --component-badge-default-foreground: #3b4a43;
245
+ --component-badge-default-border: #c1cec7;
246
+ --component-badge-accent-background: #f7edce;
247
+ --component-badge-accent-foreground: #a0501d;
248
+ --component-badge-accent-border: #efda98;
249
+ --component-badge-success-background: #e3ecd9;
250
+ --component-badge-success-foreground: #4a6b3d;
251
+ --component-badge-success-border: #e3ecd9;
252
+ --component-badge-danger-background: #f5dbd0;
253
+ --component-badge-danger-foreground: #84301c;
254
+ --component-badge-danger-border: #f5dbd0;
255
+ --component-badge-warning-background: #f7edce;
256
+ --component-badge-warning-foreground: #823f1e;
257
+ --component-badge-warning-border: #f7edce;
258
+ --component-badge-info-background: #d6e1ea;
259
+ --component-badge-info-foreground: #2f5973;
260
+ --component-badge-info-border: #d6e1ea;
261
+ --component-button-radius-md: 10px;
262
+ --component-button-radius-full: 9999px;
263
+ --component-button-padding-x: 16px;
264
+ --component-button-padding-y: 12px;
265
+ --component-button-padding-x-sm: 12px;
266
+ --component-button-padding-y-sm: 8px;
267
+ --component-button-font-family: 'Source Sans 3', system-ui, -apple-system, sans-serif;
268
+ --component-button-font-weight: 500;
269
+ --component-button-font-size: 14px;
270
+ --component-button-transition: 140ms;
271
+ --component-button-primary-background: #a0501d;
272
+ --component-button-primary-background-hover: #823f1e;
273
+ --component-button-primary-background-press: #6b341c;
274
+ --component-button-primary-foreground: #faf6f0;
275
+ --component-button-primary-border: #a0501d;
276
+ --component-button-secondary-background: rgba(0, 0, 0, 0);
277
+ --component-button-secondary-background-hover: #e0e7e3;
278
+ --component-button-secondary-background-press: #e0e7e3;
279
+ --component-button-secondary-foreground: #3b4a43;
280
+ --component-button-secondary-border: #c1cec7;
281
+ --component-button-ghost-background: rgba(0, 0, 0, 0);
282
+ --component-button-ghost-background-hover: #e0e7e3;
283
+ --component-button-ghost-foreground: #171c1a;
219
284
  --component-button-ghost-border: rgba(0, 0, 0, 0);
220
- --component-alert-radius: var(--radius-md);
221
- --component-alert-padding: var(--space-4);
222
- --component-alert-gap: var(--space-3);
223
- --component-alert-font-size: var(--text-sm);
224
- --component-alert-title-font-weight: var(--weight-semibold);
225
- --component-badge-radius: var(--radius-full);
226
- --component-badge-padding-x: var(--space-2);
227
- --component-badge-padding-y: var(--space-px);
228
- --component-badge-font-size: var(--text-xs);
229
- --component-badge-font-weight: var(--weight-medium);
230
- --component-button-radius-md: var(--radius-md);
231
- --component-button-radius-full: var(--radius-full);
232
- --component-button-padding-x: var(--space-4);
233
- --component-button-padding-y: var(--space-3);
234
- --component-button-padding-x-sm: var(--space-3);
235
- --component-button-padding-y-sm: var(--space-2);
236
- --component-button-font-family: var(--font-sans);
237
- --component-button-font-weight: var(--weight-medium);
238
- --component-button-font-size: var(--text-sm);
239
- --component-button-transition: var(--duration-fast);
240
- --component-button-danger-fg: var(--color-white);
241
- --component-card-radius: var(--radius-lg);
242
- --component-card-shadow: var(--shadow-sm);
243
- --component-card-shadow-hover: var(--shadow-md);
244
- --component-card-padding: var(--space-6);
245
- --component-card-gap: var(--space-4);
246
- --component-input-radius: var(--radius-sm);
247
- --component-input-padding-x: var(--space-3);
248
- --component-input-padding-y: var(--space-2);
249
- --component-input-shadow: var(--shadow-inset);
250
- --component-input-shadow-focus: var(--shadow-xs);
251
- --component-input-font-family: var(--font-sans);
252
- --component-input-font-size: var(--text-sm);
253
- --component-alert-success-bg: var(--semantic-color-status-success-background);
254
- --component-alert-success-fg: var(--semantic-color-status-success-foreground);
255
- --component-alert-success-icon-color: var(--semantic-color-status-success-default);
256
- --component-alert-success-border: var(--semantic-color-status-success-background);
257
- --component-alert-danger-bg: var(--semantic-color-status-danger-background);
258
- --component-alert-danger-fg: var(--semantic-color-status-danger-foreground);
259
- --component-alert-danger-icon-color: var(--semantic-color-status-danger-default);
260
- --component-alert-danger-border: var(--semantic-color-status-danger-background);
261
- --component-alert-warning-bg: var(--semantic-color-status-warning-background);
262
- --component-alert-warning-fg: var(--semantic-color-status-warning-foreground);
263
- --component-alert-warning-icon-color: var(--semantic-color-status-warning-default);
264
- --component-alert-warning-border: var(--semantic-color-status-warning-background);
265
- --component-alert-info-bg: var(--semantic-color-status-info-background);
266
- --component-alert-info-fg: var(--semantic-color-status-info-foreground);
267
- --component-alert-info-icon-color: var(--semantic-color-status-info-default);
268
- --component-alert-info-border: var(--semantic-color-status-info-background);
269
- --component-badge-default-bg: var(--semantic-color-background-muted);
270
- --component-badge-default-fg: var(--semantic-color-foreground-muted);
271
- --component-badge-default-border: var(--semantic-color-border-default);
272
- --component-badge-accent-bg: var(--semantic-color-accent-soft);
273
- --component-badge-accent-fg: var(--semantic-color-accent-default);
274
- --component-badge-accent-border: var(--semantic-color-border-warm);
275
- --component-badge-success-bg: var(--semantic-color-status-success-background);
276
- --component-badge-success-fg: var(--semantic-color-status-success-foreground);
277
- --component-badge-success-border: var(--semantic-color-status-success-background);
278
- --component-badge-danger-bg: var(--semantic-color-status-danger-background);
279
- --component-badge-danger-fg: var(--semantic-color-status-danger-foreground);
280
- --component-badge-danger-border: var(--semantic-color-status-danger-background);
281
- --component-badge-warning-bg: var(--semantic-color-status-warning-background);
282
- --component-badge-warning-fg: var(--semantic-color-status-warning-foreground);
283
- --component-badge-warning-border: var(--semantic-color-status-warning-background);
284
- --component-badge-info-bg: var(--semantic-color-status-info-background);
285
- --component-badge-info-fg: var(--semantic-color-status-info-foreground);
286
- --component-badge-info-border: var(--semantic-color-status-info-background);
287
- --component-button-primary-bg: var(--semantic-color-accent-default);
288
- --component-button-primary-bg-hover: var(--semantic-color-accent-hover);
289
- --component-button-primary-bg-press: var(--semantic-color-accent-press);
290
- --component-button-primary-fg: var(--semantic-color-accent-foreground);
291
- --component-button-primary-border: var(--semantic-color-accent-default);
292
- --component-button-secondary-bg-hover: var(--semantic-color-secondary-soft);
293
- --component-button-secondary-bg-press: var(--semantic-color-secondary-soft);
294
- --component-button-secondary-fg: var(--semantic-color-secondary-default);
295
- --component-button-secondary-border: var(--semantic-color-border-default);
296
- --component-button-ghost-bg-hover: var(--semantic-color-secondary-soft);
297
- --component-button-ghost-fg: var(--semantic-color-foreground-default);
298
- --component-button-danger-bg: var(--semantic-color-status-danger-default);
299
- --component-button-danger-bg-hover: var(--semantic-color-status-danger-foreground);
300
- --component-button-danger-border: var(--semantic-color-status-danger-default);
301
- --component-card-bg: var(--semantic-color-background-raised);
302
- --component-card-border: var(--semantic-color-border-default);
303
- --component-card-warm-bg: var(--semantic-color-accent-soft);
304
- --component-card-warm-border: var(--semantic-color-border-warm);
305
- --component-input-bg: var(--semantic-color-background-raised);
306
- --component-input-bg-disabled: var(--semantic-color-background-muted);
307
- --component-input-border: var(--semantic-color-border-default);
308
- --component-input-border-hover: var(--semantic-color-border-strong);
309
- --component-input-border-focus: var(--semantic-color-accent-default);
310
- --component-input-border-error: var(--semantic-color-status-danger-default);
311
- --component-input-fg: var(--semantic-color-foreground-default);
312
- --component-input-fg-placeholder: var(--semantic-color-foreground-faint);
313
- --component-input-fg-disabled: var(--semantic-color-foreground-subtle);
314
- --component-input-label-fg: var(--semantic-color-foreground-muted);
315
- --component-input-hint-fg: var(--semantic-color-foreground-subtle);
316
- --component-input-error-fg: var(--semantic-color-status-danger-foreground);
285
+ --component-button-danger-background: #b8472a;
286
+ --component-button-danger-background-hover: #84301c;
287
+ --component-button-danger-foreground: #ffffff;
288
+ --component-button-danger-border: #b8472a;
289
+ --component-card-background: #ffffff;
290
+ --component-card-border: #c1cec7;
291
+ --component-card-radius: 14px;
292
+ --component-card-shadow: 0 1px 2px rgba(61, 26, 11, 0.05), 0 2px 4px rgba(61, 26, 11, 0.04);
293
+ --component-card-shadow-hover: 0 2px 4px rgba(61, 26, 11, 0.05), 0 6px 14px rgba(61, 26, 11, 0.07);
294
+ --component-card-padding: 24px;
295
+ --component-card-gap: 16px;
296
+ --component-card-warm-background: #f7edce;
297
+ --component-card-warm-border: #efda98;
298
+ --component-input-background: #ffffff;
299
+ --component-input-background-disabled: #e0e7e3;
300
+ --component-input-border: #c1cec7;
301
+ --component-input-border-hover: #9aaea4;
302
+ --component-input-border-focus: #a0501d;
303
+ --component-input-border-error: #b8472a;
304
+ --component-input-foreground: #171c1a;
305
+ --component-input-foreground-placeholder: #7a9086;
306
+ --component-input-foreground-disabled: #5b7168;
307
+ --component-input-label-foreground: #3b4a43;
308
+ --component-input-hint-foreground: #5b7168;
309
+ --component-input-error-foreground: #84301c;
310
+ --component-input-radius: 6px;
311
+ --component-input-padding-x: 12px;
312
+ --component-input-padding-y: 8px;
313
+ --component-input-shadow: inset 0 1px 2px rgba(61, 26, 11, 0.08);
314
+ --component-input-shadow-focus: 0 1px 2px rgba(61, 26, 11, 0.06);
315
+ --component-input-font-family: 'Source Sans 3', system-ui, -apple-system, sans-serif;
316
+ --component-input-font-size: 14px;
317
317
  }
@@ -0,0 +1,144 @@
1
+ {
2
+ "component": {
3
+ "alert": {
4
+ "radius": "10px",
5
+ "padding": "16px",
6
+ "gap": "12px",
7
+ "fontSize": "14px",
8
+ "titleFontWeight": 600,
9
+ "success": {
10
+ "background": "#e3ecd9",
11
+ "foreground": "#4a6b3d",
12
+ "iconColor": "#6b8e5a",
13
+ "border": "#e3ecd9"
14
+ },
15
+ "danger": {
16
+ "background": "#f5dbd0",
17
+ "foreground": "#84301c",
18
+ "iconColor": "#b8472a",
19
+ "border": "#f5dbd0"
20
+ },
21
+ "warning": {
22
+ "background": "#f7edce",
23
+ "foreground": "#823f1e",
24
+ "iconColor": "#c06d1f",
25
+ "border": "#f7edce"
26
+ },
27
+ "info": {
28
+ "background": "#d6e1ea",
29
+ "foreground": "#2f5973",
30
+ "iconColor": "#4a7896",
31
+ "border": "#d6e1ea"
32
+ }
33
+ },
34
+ "badge": {
35
+ "radius": "9999px",
36
+ "paddingX": "8px",
37
+ "paddingY": "1px",
38
+ "fontSize": "12px",
39
+ "fontWeight": 500,
40
+ "default": {
41
+ "background": "#e0e7e3",
42
+ "foreground": "#3b4a43",
43
+ "border": "#c1cec7"
44
+ },
45
+ "accent": {
46
+ "background": "#f7edce",
47
+ "foreground": "#a0501d",
48
+ "border": "#efda98"
49
+ },
50
+ "success": {
51
+ "background": "#e3ecd9",
52
+ "foreground": "#4a6b3d",
53
+ "border": "#e3ecd9"
54
+ },
55
+ "danger": {
56
+ "background": "#f5dbd0",
57
+ "foreground": "#84301c",
58
+ "border": "#f5dbd0"
59
+ },
60
+ "warning": {
61
+ "background": "#f7edce",
62
+ "foreground": "#823f1e",
63
+ "border": "#f7edce"
64
+ },
65
+ "info": {
66
+ "background": "#d6e1ea",
67
+ "foreground": "#2f5973",
68
+ "border": "#d6e1ea"
69
+ }
70
+ },
71
+ "button": {
72
+ "radiusMd": "10px",
73
+ "radiusFull": "9999px",
74
+ "paddingX": "16px",
75
+ "paddingY": "12px",
76
+ "paddingXSm": "12px",
77
+ "paddingYSm": "8px",
78
+ "fontFamily": "'Source Sans 3', system-ui, -apple-system, sans-serif",
79
+ "fontWeight": 500,
80
+ "fontSize": "14px",
81
+ "transition": "140ms",
82
+ "primary": {
83
+ "background": "#a0501d",
84
+ "backgroundHover": "#823f1e",
85
+ "backgroundPress": "#6b341c",
86
+ "foreground": "#faf6f0",
87
+ "border": "#a0501d"
88
+ },
89
+ "secondary": {
90
+ "background": "#00000000",
91
+ "backgroundHover": "#e0e7e3",
92
+ "backgroundPress": "#e0e7e3",
93
+ "foreground": "#3b4a43",
94
+ "border": "#c1cec7"
95
+ },
96
+ "ghost": {
97
+ "background": "#00000000",
98
+ "backgroundHover": "#e0e7e3",
99
+ "foreground": "#171c1a",
100
+ "border": "#00000000"
101
+ },
102
+ "danger": {
103
+ "background": "#b8472a",
104
+ "backgroundHover": "#84301c",
105
+ "foreground": "#ffffff",
106
+ "border": "#b8472a"
107
+ }
108
+ },
109
+ "card": {
110
+ "background": "#ffffff",
111
+ "border": "#c1cec7",
112
+ "radius": "14px",
113
+ "shadow": "0 1px 2px rgba(61, 26, 11, 0.05), 0 2px 4px rgba(61, 26, 11, 0.04)",
114
+ "shadowHover": "0 2px 4px rgba(61, 26, 11, 0.05), 0 6px 14px rgba(61, 26, 11, 0.07)",
115
+ "padding": "24px",
116
+ "gap": "16px",
117
+ "warm": {
118
+ "background": "#f7edce",
119
+ "border": "#efda98"
120
+ }
121
+ },
122
+ "input": {
123
+ "background": "#ffffff",
124
+ "backgroundDisabled": "#e0e7e3",
125
+ "border": "#c1cec7",
126
+ "borderHover": "#9aaea4",
127
+ "borderFocus": "#a0501d",
128
+ "borderError": "#b8472a",
129
+ "foreground": "#171c1a",
130
+ "foregroundPlaceholder": "#7a9086",
131
+ "foregroundDisabled": "#5b7168",
132
+ "labelForeground": "#3b4a43",
133
+ "hintForeground": "#5b7168",
134
+ "errorForeground": "#84301c",
135
+ "radius": "6px",
136
+ "paddingX": "12px",
137
+ "paddingY": "8px",
138
+ "shadow": "inset 0 1px 2px rgba(61, 26, 11, 0.08)",
139
+ "shadowFocus": "0 1px 2px rgba(61, 26, 11, 0.06)",
140
+ "fontFamily": "'Source Sans 3', system-ui, -apple-system, sans-serif",
141
+ "fontSize": "14px"
142
+ }
143
+ }
144
+ }
@@ -1,162 +1,164 @@
1
1
  {
2
- "color": {
3
- "white": "#ffffff",
4
- "black": "#000000",
5
- "robRoy": {
6
- "50": "#fdf9ed",
7
- "100": "#f7edce",
8
- "200": "#efda98",
9
- "300": "#e8c468",
10
- "400": "#e1ac3e",
11
- "500": "#d98f27",
12
- "600": "#c06d1f",
13
- "700": "#a0501d",
14
- "800": "#823f1e",
15
- "900": "#6b341c",
16
- "950": "#3d1a0b"
2
+ "primitives": {
3
+ "color": {
4
+ "white": "#ffffff",
5
+ "black": "#000000",
6
+ "robRoy": {
7
+ "50": "#fdf9ed",
8
+ "100": "#f7edce",
9
+ "200": "#efda98",
10
+ "300": "#e8c468",
11
+ "400": "#e1ac3e",
12
+ "500": "#d98f27",
13
+ "600": "#c06d1f",
14
+ "700": "#a0501d",
15
+ "800": "#823f1e",
16
+ "900": "#6b341c",
17
+ "950": "#3d1a0b"
18
+ },
19
+ "blueSmoke": {
20
+ "50": "#f6f7f7",
21
+ "100": "#e0e7e3",
22
+ "200": "#c1cec7",
23
+ "300": "#9aaea4",
24
+ "400": "#7a9086",
25
+ "500": "#5b7168",
26
+ "600": "#475a52",
27
+ "700": "#3b4a43",
28
+ "800": "#323d38",
29
+ "900": "#2c3531",
30
+ "950": "#171c1a"
31
+ },
32
+ "clay": {
33
+ "50": "#faf6f0",
34
+ "100": "#f2ebdf",
35
+ "200": "#e6d8c3",
36
+ "300": "#d4bea0",
37
+ "400": "#b89977",
38
+ "500": "#9a7a58",
39
+ "600": "#7c6044",
40
+ "700": "#5e4733",
41
+ "800": "#3f2f22",
42
+ "900": "#221a13"
43
+ },
44
+ "moss": {
45
+ "100": "#e3ecd9",
46
+ "500": "#6b8e5a",
47
+ "700": "#4a6b3d",
48
+ "900": "#394739"
49
+ },
50
+ "rust": {
51
+ "100": "#f5dbd0",
52
+ "500": "#b8472a",
53
+ "700": "#84301c",
54
+ "900": "#483930"
55
+ },
56
+ "sky": {
57
+ "100": "#d6e1ea",
58
+ "500": "#4a7896",
59
+ "700": "#2f5973",
60
+ "900": "#34464a"
61
+ }
17
62
  },
18
- "blueSmoke": {
19
- "50": "#f6f7f7",
20
- "100": "#e0e7e3",
21
- "200": "#c1cec7",
22
- "300": "#9aaea4",
23
- "400": "#7a9086",
24
- "500": "#5b7168",
25
- "600": "#475a52",
26
- "700": "#3b4a43",
27
- "800": "#323d38",
28
- "900": "#2c3531",
29
- "950": "#171c1a"
63
+ "font": {
64
+ "display": "'Lora', Georgia, serif",
65
+ "sans": "'Source Sans 3', system-ui, -apple-system, sans-serif",
66
+ "mono": "'JetBrains Mono', 'SF Mono', Menlo, monospace"
30
67
  },
31
- "clay": {
32
- "50": "#faf6f0",
33
- "100": "#f2ebdf",
34
- "200": "#e6d8c3",
35
- "300": "#d4bea0",
36
- "400": "#b89977",
37
- "500": "#9a7a58",
38
- "600": "#7c6044",
39
- "700": "#5e4733",
40
- "800": "#3f2f22",
41
- "900": "#221a13"
68
+ "text": {
69
+ "2xs": "11px",
70
+ "xs": "12px",
71
+ "sm": "14px",
72
+ "base": "16px",
73
+ "md": "18px",
74
+ "lg": "20px",
75
+ "xl": "24px",
76
+ "2xl": "30px",
77
+ "3xl": "38px",
78
+ "4xl": "48px",
79
+ "5xl": "60px",
80
+ "6xl": "76px"
42
81
  },
43
- "moss": {
44
- "100": "#e3ecd9",
45
- "500": "#6b8e5a",
46
- "700": "#4a6b3d",
47
- "900": "#394739"
82
+ "weight": {
83
+ "light": 300,
84
+ "regular": 400,
85
+ "medium": 500,
86
+ "semibold": 600,
87
+ "bold": 700
48
88
  },
49
- "rust": {
50
- "100": "#f5dbd0",
51
- "500": "#b8472a",
52
- "700": "#84301c",
53
- "900": "#483930"
89
+ "leading": {
90
+ "tight": "1.15",
91
+ "snug": "1.25",
92
+ "normal": "1.5",
93
+ "relaxed": "1.65"
54
94
  },
55
- "sky": {
56
- "100": "#d6e1ea",
57
- "500": "#4a7896",
58
- "700": "#2f5973",
59
- "900": "#34464a"
95
+ "tracking": {
96
+ "tight": "-0.02em",
97
+ "snug": "-0.01em",
98
+ "normal": "0em",
99
+ "wide": "0.04em",
100
+ "caps": "0.08em"
101
+ },
102
+ "space": {
103
+ "0": 0,
104
+ "1": "4px",
105
+ "2": "8px",
106
+ "3": "12px",
107
+ "4": "16px",
108
+ "5": "20px",
109
+ "6": "24px",
110
+ "8": "32px",
111
+ "10": "40px",
112
+ "12": "48px",
113
+ "16": "64px",
114
+ "20": "80px",
115
+ "24": "96px",
116
+ "32": "128px",
117
+ "px": "1px"
118
+ },
119
+ "radius": {
120
+ "none": 0,
121
+ "xs": "3px",
122
+ "sm": "6px",
123
+ "md": "10px",
124
+ "lg": "14px",
125
+ "xl": "20px",
126
+ "2xl": "28px",
127
+ "full": "9999px"
128
+ },
129
+ "shadow": {
130
+ "xs": "0 1px 2px rgba(61, 26, 11, 0.06)",
131
+ "sm": "0 1px 2px rgba(61, 26, 11, 0.05), 0 2px 4px rgba(61, 26, 11, 0.04)",
132
+ "md": "0 2px 4px rgba(61, 26, 11, 0.05), 0 6px 14px rgba(61, 26, 11, 0.07)",
133
+ "lg": "0 4px 8px rgba(61, 26, 11, 0.06), 0 16px 32px rgba(61, 26, 11, 0.10)",
134
+ "xl": "0 8px 16px rgba(61, 26, 11, 0.08), 0 32px 64px rgba(61, 26, 11, 0.14)",
135
+ "inset": "inset 0 1px 2px rgba(61, 26, 11, 0.08)",
136
+ "insetLg": "inset 0 2px 6px rgba(61, 26, 11, 0.10)",
137
+ "none": "0 0 #0000"
138
+ },
139
+ "ease": {
140
+ "out": "cubic-bezier(0.22, 0.61, 0.36, 1)",
141
+ "in": "cubic-bezier(0.55, 0.06, 0.68, 0.19)",
142
+ "inout": "cubic-bezier(0.65, 0.05, 0.36, 1)",
143
+ "soft": "cubic-bezier(0.4, 0, 0.2, 1)"
144
+ },
145
+ "duration": {
146
+ "fast": "140ms",
147
+ "base": "220ms",
148
+ "slow": "360ms",
149
+ "xslow": "600ms"
150
+ },
151
+ "layout": {
152
+ "narrow": "640px",
153
+ "prose": "720px",
154
+ "wide": "960px",
155
+ "xwide": "1200px",
156
+ "max": "1440px"
157
+ },
158
+ "border": {
159
+ "none": "0px",
160
+ "thin": "1px",
161
+ "thick": "2px"
60
162
  }
61
- },
62
- "font": {
63
- "display": "'Lora', Georgia, serif",
64
- "sans": "'Source Sans 3', system-ui, -apple-system, sans-serif",
65
- "mono": "'JetBrains Mono', 'SF Mono', Menlo, monospace"
66
- },
67
- "text": {
68
- "2xs": "11px",
69
- "xs": "12px",
70
- "sm": "14px",
71
- "base": "16px",
72
- "md": "18px",
73
- "lg": "20px",
74
- "xl": "24px",
75
- "2xl": "30px",
76
- "3xl": "38px",
77
- "4xl": "48px",
78
- "5xl": "60px",
79
- "6xl": "76px"
80
- },
81
- "weight": {
82
- "light": 300,
83
- "regular": 400,
84
- "medium": 500,
85
- "semibold": 600,
86
- "bold": 700
87
- },
88
- "leading": {
89
- "tight": "1.15",
90
- "snug": "1.25",
91
- "normal": "1.5",
92
- "relaxed": "1.65"
93
- },
94
- "tracking": {
95
- "tight": "-0.02em",
96
- "snug": "-0.01em",
97
- "normal": "0em",
98
- "wide": "0.04em",
99
- "caps": "0.08em"
100
- },
101
- "space": {
102
- "0": "0",
103
- "1": "4px",
104
- "2": "8px",
105
- "3": "12px",
106
- "4": "16px",
107
- "5": "20px",
108
- "6": "24px",
109
- "8": "32px",
110
- "10": "40px",
111
- "12": "48px",
112
- "16": "64px",
113
- "20": "80px",
114
- "24": "96px",
115
- "32": "128px",
116
- "px": "1px"
117
- },
118
- "radius": {
119
- "none": "0",
120
- "xs": "3px",
121
- "sm": "6px",
122
- "md": "10px",
123
- "lg": "14px",
124
- "xl": "20px",
125
- "2xl": "28px",
126
- "full": "9999px"
127
- },
128
- "shadow": {
129
- "xs": "0 1px 2px rgba(61, 26, 11, 0.06)",
130
- "sm": "0 1px 2px rgba(61, 26, 11, 0.05), 0 2px 4px rgba(61, 26, 11, 0.04)",
131
- "md": "0 2px 4px rgba(61, 26, 11, 0.05), 0 6px 14px rgba(61, 26, 11, 0.07)",
132
- "lg": "0 4px 8px rgba(61, 26, 11, 0.06), 0 16px 32px rgba(61, 26, 11, 0.10)",
133
- "xl": "0 8px 16px rgba(61, 26, 11, 0.08), 0 32px 64px rgba(61, 26, 11, 0.14)",
134
- "inset": "inset 0 1px 2px rgba(61, 26, 11, 0.08)",
135
- "insetLg": "inset 0 2px 6px rgba(61, 26, 11, 0.10)",
136
- "none": "0 0 #0000"
137
- },
138
- "ease": {
139
- "out": "cubic-bezier(0.22, 0.61, 0.36, 1)",
140
- "in": "cubic-bezier(0.55, 0.06, 0.68, 0.19)",
141
- "inout": "cubic-bezier(0.65, 0.05, 0.36, 1)",
142
- "soft": "cubic-bezier(0.4, 0, 0.2, 1)"
143
- },
144
- "duration": {
145
- "fast": "140ms",
146
- "base": "220ms",
147
- "slow": "360ms",
148
- "xslow": "600ms"
149
- },
150
- "layout": {
151
- "narrow": "640px",
152
- "prose": "720px",
153
- "wide": "960px",
154
- "xwide": "1200px",
155
- "max": "1440px"
156
- },
157
- "border": {
158
- "none": "0px",
159
- "thin": "1px",
160
- "thick": "2px"
161
163
  }
162
164
  }
@@ -0,0 +1,60 @@
1
+ {
2
+ "semantic": {
3
+ "color": {
4
+ "background": {
5
+ "default": "#171c1a",
6
+ "raised": "#2c3531",
7
+ "sunken": "#0e1211",
8
+ "muted": "#323d38"
9
+ },
10
+ "foreground": {
11
+ "default": "#faf6f0",
12
+ "muted": "#c1cec7",
13
+ "subtle": "#9aaea4",
14
+ "faint": "#5b7168",
15
+ "onAccent": "#171c1a",
16
+ "inverse": "#171c1a"
17
+ },
18
+ "border": {
19
+ "default": "#323d38",
20
+ "strong": "#3b4a43",
21
+ "subtle": "#2c3531",
22
+ "warm": "#823f1e"
23
+ },
24
+ "accent": {
25
+ "default": "#e1ac3e",
26
+ "hover": "#e8c468",
27
+ "press": "#d98f27",
28
+ "soft": "#3a2e1e",
29
+ "foreground": "#171c1a"
30
+ },
31
+ "secondary": {
32
+ "default": "#c1cec7",
33
+ "hover": "#faf6f0",
34
+ "soft": "#323d38"
35
+ },
36
+ "status": {
37
+ "success": {
38
+ "default": "#6b8e5a",
39
+ "foreground": "#e3ecd9",
40
+ "background": "#394739"
41
+ },
42
+ "danger": {
43
+ "default": "#b8472a",
44
+ "foreground": "#f5dbd0",
45
+ "background": "#483930"
46
+ },
47
+ "warning": {
48
+ "default": "#d98f27",
49
+ "foreground": "#f7edce",
50
+ "background": "#51432d"
51
+ },
52
+ "info": {
53
+ "default": "#4a7896",
54
+ "foreground": "#d6e1ea",
55
+ "background": "#34464a"
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "semantic": {
3
+ "color": {
4
+ "background": {
5
+ "default": "#faf6f0",
6
+ "raised": "#ffffff",
7
+ "sunken": "#f2ebdf",
8
+ "muted": "#e0e7e3"
9
+ },
10
+ "foreground": {
11
+ "default": "#171c1a",
12
+ "muted": "#3b4a43",
13
+ "subtle": "#5b7168",
14
+ "faint": "#7a9086",
15
+ "onAccent": "#faf6f0",
16
+ "inverse": "#faf6f0"
17
+ },
18
+ "border": {
19
+ "default": "#c1cec7",
20
+ "strong": "#9aaea4",
21
+ "subtle": "#e6d8c3",
22
+ "warm": "#efda98"
23
+ },
24
+ "accent": {
25
+ "default": "#a0501d",
26
+ "hover": "#823f1e",
27
+ "press": "#6b341c",
28
+ "soft": "#f7edce",
29
+ "foreground": "#faf6f0"
30
+ },
31
+ "secondary": {
32
+ "default": "#3b4a43",
33
+ "hover": "#323d38",
34
+ "soft": "#e0e7e3"
35
+ },
36
+ "status": {
37
+ "success": {
38
+ "default": "#6b8e5a",
39
+ "foreground": "#4a6b3d",
40
+ "background": "#e3ecd9"
41
+ },
42
+ "danger": {
43
+ "default": "#b8472a",
44
+ "foreground": "#84301c",
45
+ "background": "#f5dbd0"
46
+ },
47
+ "warning": {
48
+ "default": "#c06d1f",
49
+ "foreground": "#823f1e",
50
+ "background": "#f7edce"
51
+ },
52
+ "info": {
53
+ "default": "#4a7896",
54
+ "foreground": "#2f5973",
55
+ "background": "#d6e1ea"
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stevegreco/design-system",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Design tokens distributed as CSS and JSON artifacts.",
5
5
  "type": "module",
6
6
  "main": "./dist/tokens/primitives.json",
@@ -8,7 +8,10 @@
8
8
  "exports": {
9
9
  ".": "./dist/tokens/primitives.json",
10
10
  "./css": "./dist/css/tokens.css",
11
- "./tokens": "./dist/tokens/primitives.json"
11
+ "./tokens/primitives": "./dist/tokens/primitives.json",
12
+ "./tokens/semantic-light": "./dist/tokens/semantic.light.json",
13
+ "./tokens/semantic-dark": "./dist/tokens/semantic.dark.json",
14
+ "./tokens/components": "./dist/tokens/components.json"
12
15
  },
13
16
  "files": [
14
17
  "dist"
@@ -26,11 +29,16 @@
26
29
  "devDependencies": {
27
30
  "style-dictionary": "latest"
28
31
  },
32
+ "dependencies": {
33
+ "@modelcontextprotocol/sdk": "^1.29.0",
34
+ "zod": "^4.4.3"
35
+ },
29
36
  "scripts": {
30
37
  "clean": "rm -rf dist",
31
38
  "build": "pnpm run clean && node build-tokens.js && node build-css.js",
32
39
  "showcase": "node generate-showcase.js",
33
40
  "dashboard": "open examples/dashboard.html",
34
- "food": "open examples/food-order.html"
41
+ "food": "open examples/food-order.html",
42
+ "mcp": "node mcp/index.js"
35
43
  }
36
44
  }
package/README.md DELETED
@@ -1,64 +0,0 @@
1
- # design-system
2
-
3
- Design token package with DTCG-style source tokens and generated distribution artifacts.
4
-
5
- ## Source of truth
6
-
7
- - DTCG-style tokens: `tokens/primitives.tokens.json`
8
- - Semantic token examples:
9
- - `tokens/semantic/light.tokens.json`
10
- - `tokens/semantic/dark.tokens.json`
11
-
12
- ## Build outputs
13
-
14
- - CSS variables (single file): `dist/css/tokens.css`
15
- - JSON tokens: `dist/tokens/primitives.json`
16
- - The CSS file contains:
17
- - primitives in `:root` with `--primitives-*` names
18
- - semantic light tokens in `:root`
19
- - semantic dark overrides in `:root[data-theme="dark"]`
20
-
21
- ## Install
22
-
23
- ```bash
24
- pnpm install
25
- ```
26
-
27
- ## Build
28
-
29
- ```bash
30
- pnpm run build
31
- ```
32
-
33
- ## Consume in CSS projects
34
-
35
- ```css
36
- @import "design-system/css";
37
- ```
38
-
39
- Or via JS:
40
-
41
- ```js
42
- import "design-system/css";
43
- ```
44
-
45
- Semantic layers:
46
- The single CSS entry already includes both light and dark semantic layers.
47
- The sample semantic token is `--semantic-color-background-brand`.
48
-
49
- ## Consume JSON tokens
50
-
51
- ```js
52
- import tokens from "design-system/tokens";
53
- ```
54
-
55
- ## Publish checklist
56
-
57
- 1. Run `pnpm run build`
58
- 2. Bump version in `package.json`
59
- 3. Publish with `pnpm publish`
60
-
61
- ## Notes
62
-
63
- - The package uses Style Dictionary to generate platform outputs.
64
- - Keep editing tokens in `tokens/primitives.tokens.json` rather than editing `dist/*` files directly.