@hemerson/design-system 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +91 -2
- package/dist/components/Badge/Badge.d.ts +14 -0
- package/dist/components/Button/Button.d.ts +17 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Card/Card.d.ts +19 -0
- package/dist/components/Checkbox/Checkbox.d.ts +8 -0
- package/dist/components/Container/Container.d.ts +9 -0
- package/dist/components/Dialog/Dialog.d.ts +18 -0
- package/dist/components/FloatingButton/FloatingButton.d.ts +9 -0
- package/dist/components/GlassPanel/GlassPanel.d.ts +13 -0
- package/dist/components/GlowAvatar/GlowAvatar.d.ts +10 -0
- package/dist/components/Input/Input.d.ts +12 -0
- package/dist/components/Loading/Loading.d.ts +11 -0
- package/dist/components/Menu/Menu.d.ts +25 -0
- package/dist/components/NavBar/NavBar.d.ts +20 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +8 -0
- package/dist/components/SectionTitle/SectionTitle.d.ts +12 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +21 -0
- package/dist/components/Select/Select.d.ts +16 -0
- package/dist/components/Separator/Separator.d.ts +8 -0
- package/dist/components/Sidebar/Sidebar.d.ts +21 -0
- package/dist/components/Table/Table.d.ts +26 -0
- package/dist/components/Toast/Toast.d.ts +16 -0
- package/dist/enableGlassRefraction-CgDeg-2E.js +88 -0
- package/dist/enableGlassRefraction-CgDeg-2E.js.map +1 -0
- package/dist/glass/enableGlassRefraction.d.ts +10 -0
- package/dist/glass/index.d.ts +1 -0
- package/dist/glass/lens.d.ts +15 -0
- package/dist/glass.js +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +680 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/Icon.d.ts +17 -0
- package/dist/internal/cx.d.ts +2 -0
- package/dist/internal/field.d.ts +16 -0
- package/dist/styles.css +1297 -0
- package/dist/tokens.css +190 -0
- package/dist/tokens.json +538 -0
- package/package.json +95 -4
package/dist/tokens.json
ADDED
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Hemerson Design System",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"meta": {
|
|
5
|
+
"source": "code",
|
|
6
|
+
"repo": "003-portfolio",
|
|
7
|
+
"paths": {
|
|
8
|
+
"tokens": [
|
|
9
|
+
"tailwind.config.js",
|
|
10
|
+
"src/styles/globals.css",
|
|
11
|
+
"src/app/layout.tsx"
|
|
12
|
+
],
|
|
13
|
+
"components": [
|
|
14
|
+
"src/app/components"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"synced": "2026-10-19"
|
|
18
|
+
},
|
|
19
|
+
"color": {
|
|
20
|
+
"themes": [
|
|
21
|
+
{
|
|
22
|
+
"id": "dark",
|
|
23
|
+
"name": "Dark"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "light",
|
|
27
|
+
"name": "Light"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"tokens": [
|
|
31
|
+
{
|
|
32
|
+
"name": "dark-900",
|
|
33
|
+
"value": "#1b1b1b",
|
|
34
|
+
"usage": "Brand ink. The page ground of the dark theme and the text color of the light theme; reach it through surface and ink in UI code."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "light-200",
|
|
38
|
+
"value": "#e4e3de",
|
|
39
|
+
"usage": "Brand paper. Body text of the dark theme (13.4:1 on dark-900) and the sunken ground of the light theme; reach it through ink and surface-sunken in UI code."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "light-400",
|
|
43
|
+
"value": "#c4c6bb",
|
|
44
|
+
"usage": "Brand sage-grey. Muted text of the dark theme (10.0:1 on dark-900); reach it through ink-muted in UI code."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "primary-500",
|
|
48
|
+
"value": "#7ea8a7",
|
|
49
|
+
"usage": "The brand accent, a sage teal. Fills, rings and glows; as text it reads on dark-900 (6.6:1) but not on light grounds (2.0:1 on light-200), so light-theme text uses accent instead. Light-200 text on it fails (2.0:1), as on the portfolio's primary button: pair it with on-accent."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "secondary-500",
|
|
53
|
+
"value": "#78718e",
|
|
54
|
+
"usage": "The brand's second hue, a muted violet-grey. Separators, scrollbar thumbs and secondary fills. As small text it falls short on dark-900 (3.7:1) and light-400 (2.7:1), so use secondary for text; light-200 on it fails (3.6:1): pair it with on-secondary."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "surface",
|
|
58
|
+
"value": {
|
|
59
|
+
"dark": "{dark-900}",
|
|
60
|
+
"light": "#f2f1ec"
|
|
61
|
+
},
|
|
62
|
+
"usage": "Page background in both themes."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "surface-raised",
|
|
66
|
+
"value": {
|
|
67
|
+
"dark": "#262626",
|
|
68
|
+
"light": "#faf9f6"
|
|
69
|
+
},
|
|
70
|
+
"usage": "Cards, dialogs, menus and table rows that sit above the page."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "surface-sunken",
|
|
74
|
+
"value": {
|
|
75
|
+
"dark": "#141414",
|
|
76
|
+
"light": "{light-200}"
|
|
77
|
+
},
|
|
78
|
+
"usage": "Recessed areas: filter bars, table headers, input wells, code blocks."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "ink",
|
|
82
|
+
"value": {
|
|
83
|
+
"dark": "{light-200}",
|
|
84
|
+
"light": "{dark-900}"
|
|
85
|
+
},
|
|
86
|
+
"usage": "Primary text and icons on surface, surface-raised and surface-sunken (11:1 or more in both themes)."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "ink-muted",
|
|
90
|
+
"value": {
|
|
91
|
+
"dark": "{light-400}",
|
|
92
|
+
"light": "#55574f"
|
|
93
|
+
},
|
|
94
|
+
"usage": "Secondary text, metadata, placeholders and inactive icons, on any surface (5.7:1 or more in both themes). Use it instead of lowering the opacity of ink."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "accent",
|
|
98
|
+
"value": {
|
|
99
|
+
"dark": "{primary-500}",
|
|
100
|
+
"light": "#3f6b6a"
|
|
101
|
+
},
|
|
102
|
+
"usage": "Accent as text, link, active icon, selected border and focus ring, on any surface (4.6:1 or more in both themes)."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "accent-fill",
|
|
106
|
+
"value": "{primary-500}",
|
|
107
|
+
"usage": "Background of the primary action and selected controls, in both themes; always with on-accent text."
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "on-accent",
|
|
111
|
+
"value": "{dark-900}",
|
|
112
|
+
"usage": "Text and icons on accent-fill (6.6:1)."
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "accent-soft",
|
|
116
|
+
"value": {
|
|
117
|
+
"dark": "#7ea8a71f",
|
|
118
|
+
"light": "#3f6b6a1f"
|
|
119
|
+
},
|
|
120
|
+
"usage": "Tinted background for hovered or selected rows, chips and toggles; ink stays 11:1 and accent 4.5:1 on it."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "secondary",
|
|
124
|
+
"value": {
|
|
125
|
+
"dark": "#a49dba",
|
|
126
|
+
"light": "#5a5374"
|
|
127
|
+
},
|
|
128
|
+
"usage": "The violet-grey as text: card eyebrows, tags and supporting labels, on any surface (5.6:1 or more in both themes)."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "secondary-fill",
|
|
132
|
+
"value": "{secondary-500}",
|
|
133
|
+
"usage": "Background of secondary buttons and badges, in both themes; always with on-secondary text."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "on-secondary",
|
|
137
|
+
"value": "#ffffff",
|
|
138
|
+
"usage": "Text and icons on secondary-fill (4.6:1)."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "line",
|
|
142
|
+
"value": {
|
|
143
|
+
"dark": "#ffffff26",
|
|
144
|
+
"light": "#1b1b1b26"
|
|
145
|
+
},
|
|
146
|
+
"usage": "Hairlines, dividers and the edge of glass panels. Decorative only: never the sole boundary of an input."
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "line-strong",
|
|
150
|
+
"value": "{secondary-500}",
|
|
151
|
+
"usage": "Input borders, separators that must stay visible, and checkbox outlines (3.3:1 or more on every surface in both themes)."
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "focus-ring",
|
|
155
|
+
"value": "{accent}",
|
|
156
|
+
"usage": "The 2px keyboard focus outline, offset 2px, on every interactive element."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "glass-regular-tint",
|
|
160
|
+
"value": {
|
|
161
|
+
"dark": "#1b1b1b4d",
|
|
162
|
+
"light": "#f2f1ec33"
|
|
163
|
+
},
|
|
164
|
+
"usage": "Regular glass, the default for bars, sidebars, menus, toasts and floating buttons: 30% in dark, 20% in light, so the content behind stays visible. Ink keeps 4.5:1 or more over mid-grey content; over imagery much brighter (dark theme) or darker (light theme) than mid-grey, give the glass the other theme with data-theme."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "glass-thick-tint",
|
|
168
|
+
"value": {
|
|
169
|
+
"dark": "#1b1b1bf0",
|
|
170
|
+
"light": "#f2f1ecf0"
|
|
171
|
+
},
|
|
172
|
+
"usage": "Thick glass for dialogs and sheets that hold forms and longer text; ink, ink-muted and accent all stay above 4.5:1 over any content."
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"name": "glass-solid",
|
|
176
|
+
"value": "{surface-raised}",
|
|
177
|
+
"usage": "What every glass surface becomes when transparency is reduced (system setting or data-transparency=\"reduced\") or backdrop-filter is unsupported."
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "glass-clear-tint",
|
|
181
|
+
"value": {
|
|
182
|
+
"dark": "#e4e3de12",
|
|
183
|
+
"light": "#ffffff8c"
|
|
184
|
+
},
|
|
185
|
+
"usage": "Clear glass, the portfolio's original tint: only for icon-only controls that float over the app's own surfaces. Text on it is not guaranteed legible over arbitrary content."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "glass-sheen",
|
|
189
|
+
"value": {
|
|
190
|
+
"dark": "#ffffff2e",
|
|
191
|
+
"light": "#ffffff66"
|
|
192
|
+
},
|
|
193
|
+
"usage": "Start of the 135deg sheen gradient on glass, fading to transparent at 42%."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "glass-rim",
|
|
197
|
+
"value": {
|
|
198
|
+
"dark": "#ffffffd9",
|
|
199
|
+
"light": "#ffffff"
|
|
200
|
+
},
|
|
201
|
+
"usage": "The lit rim at the top-left of glass surfaces, where the light catches the edge."
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "glass-rim-low",
|
|
205
|
+
"value": {
|
|
206
|
+
"dark": "#ffffff80",
|
|
207
|
+
"light": "#ffffffb3"
|
|
208
|
+
},
|
|
209
|
+
"usage": "The softer rim at the bottom-right of glass surfaces."
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "glass-edge",
|
|
213
|
+
"value": {
|
|
214
|
+
"dark": "#ffffff1f",
|
|
215
|
+
"light": "#1b1b1b29"
|
|
216
|
+
},
|
|
217
|
+
"usage": "A hairline around glass so its shape reads even where the rim fades, especially on light content."
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"name": "glass-accent-tint",
|
|
221
|
+
"value": "#7ea8a71f",
|
|
222
|
+
"usage": "Base fill of accent glass: the selected thumb of a glass toggle, under glass-accent-sheen."
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"name": "glass-accent-sheen",
|
|
226
|
+
"value": "#b9d8d759",
|
|
227
|
+
"usage": "Start of the sheen gradient on accent glass, fading to primary-500 at 12% alpha."
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "success",
|
|
231
|
+
"value": {
|
|
232
|
+
"dark": "#8ab4d8",
|
|
233
|
+
"light": "#2d5b86"
|
|
234
|
+
},
|
|
235
|
+
"usage": "Positive status as text or icon (paid, saved, done), on any surface. Blue rather than green so it stays distinct from danger without relying on red-green vision; always paired with a word or icon."
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "warning",
|
|
239
|
+
"value": {
|
|
240
|
+
"dark": "#e3c47b",
|
|
241
|
+
"light": "#765811"
|
|
242
|
+
},
|
|
243
|
+
"usage": "Needs-attention status as text or icon (due soon, unsaved), on any surface; always paired with a word or icon."
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "danger",
|
|
247
|
+
"value": {
|
|
248
|
+
"dark": "#f19b90",
|
|
249
|
+
"light": "#a1342a"
|
|
250
|
+
},
|
|
251
|
+
"usage": "Error and destructive status as text or icon (overdue, delete, failed), on any surface; always paired with a word or icon."
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "on-danger",
|
|
255
|
+
"value": {
|
|
256
|
+
"dark": "{dark-900}",
|
|
257
|
+
"light": "#ffffff"
|
|
258
|
+
},
|
|
259
|
+
"usage": "Text and icons on a danger fill, as in a destructive button (8.1:1 dark, 6.9:1 light)."
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "scrim",
|
|
263
|
+
"value": {
|
|
264
|
+
"dark": "#0000008c",
|
|
265
|
+
"light": "#1b1b1b59"
|
|
266
|
+
},
|
|
267
|
+
"usage": "Dims the page behind a dialog; the dialog itself is thick glass."
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
"type": {
|
|
272
|
+
"fonts": [],
|
|
273
|
+
"families": {
|
|
274
|
+
"sans": "Raleway, \"Segoe UI\", system-ui, sans-serif",
|
|
275
|
+
"mono": "\"JetBrains Mono\", ui-monospace, Consolas, monospace"
|
|
276
|
+
},
|
|
277
|
+
"groups": [
|
|
278
|
+
{
|
|
279
|
+
"name": "Headings",
|
|
280
|
+
"family": "sans",
|
|
281
|
+
"styles": [
|
|
282
|
+
{
|
|
283
|
+
"name": "title-xl",
|
|
284
|
+
"fontSize": "36px",
|
|
285
|
+
"lineHeight": "40px",
|
|
286
|
+
"fontWeight": 700,
|
|
287
|
+
"sample": "About me",
|
|
288
|
+
"usage": "Section titles, after a section-index numeral."
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"name": "title-lg",
|
|
292
|
+
"fontSize": "24px",
|
|
293
|
+
"lineHeight": "32px",
|
|
294
|
+
"fontWeight": 700,
|
|
295
|
+
"sample": "Featured projects",
|
|
296
|
+
"usage": "Page titles in apps and card titles in featured layouts."
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"name": "title-md",
|
|
300
|
+
"fontSize": "20px",
|
|
301
|
+
"lineHeight": "28px",
|
|
302
|
+
"fontWeight": 600,
|
|
303
|
+
"sample": "Ticket Manager",
|
|
304
|
+
"usage": "Dialog titles, card titles and app header titles."
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "Text",
|
|
310
|
+
"family": "sans",
|
|
311
|
+
"styles": [
|
|
312
|
+
{
|
|
313
|
+
"name": "body-lg",
|
|
314
|
+
"fontSize": "18px",
|
|
315
|
+
"lineHeight": "28px",
|
|
316
|
+
"fontWeight": 500,
|
|
317
|
+
"sample": "See my work",
|
|
318
|
+
"usage": "Lead paragraphs and prominent text links."
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"name": "body",
|
|
322
|
+
"fontSize": "16px",
|
|
323
|
+
"lineHeight": "24px",
|
|
324
|
+
"fontWeight": 400,
|
|
325
|
+
"sample": "Reliable, maintainable web applications.",
|
|
326
|
+
"usage": "Default running text and form inputs."
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"name": "body-sm",
|
|
330
|
+
"fontSize": "14px",
|
|
331
|
+
"lineHeight": "20px",
|
|
332
|
+
"fontWeight": 400,
|
|
333
|
+
"sample": "Updated 2 days ago",
|
|
334
|
+
"usage": "The workhorse size: table cells, card text, menus and helper text."
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"name": "caption",
|
|
338
|
+
"fontSize": "12px",
|
|
339
|
+
"lineHeight": "16px",
|
|
340
|
+
"fontWeight": 500,
|
|
341
|
+
"sample": "Due 10/10/2026",
|
|
342
|
+
"usage": "Badges, timestamps and dense metadata; never for running text."
|
|
343
|
+
}
|
|
344
|
+
]
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"name": "Labels",
|
|
348
|
+
"family": "sans",
|
|
349
|
+
"styles": [
|
|
350
|
+
{
|
|
351
|
+
"name": "button",
|
|
352
|
+
"fontSize": "16px",
|
|
353
|
+
"lineHeight": "24px",
|
|
354
|
+
"fontWeight": 700,
|
|
355
|
+
"sample": "DOWNLOAD RESUME",
|
|
356
|
+
"usage": "Button labels, set uppercase."
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "eyebrow",
|
|
360
|
+
"fontSize": "14px",
|
|
361
|
+
"lineHeight": "20px",
|
|
362
|
+
"fontWeight": 700,
|
|
363
|
+
"letterSpacing": "0.025em",
|
|
364
|
+
"sample": "TECH STACK",
|
|
365
|
+
"usage": "Uppercase labels above a group of content, in accent or ink-muted."
|
|
366
|
+
}
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "Numerals",
|
|
371
|
+
"family": "mono",
|
|
372
|
+
"styles": [
|
|
373
|
+
{
|
|
374
|
+
"name": "section-index",
|
|
375
|
+
"fontSize": "20px",
|
|
376
|
+
"lineHeight": "28px",
|
|
377
|
+
"fontWeight": 700,
|
|
378
|
+
"sample": "03",
|
|
379
|
+
"usage": "Zero-padded section numbers before title-xl, in accent at 30% opacity with shadow-glow."
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "mono-sm",
|
|
383
|
+
"fontSize": "14px",
|
|
384
|
+
"lineHeight": "20px",
|
|
385
|
+
"fontWeight": 500,
|
|
386
|
+
"sample": "R$ 1.234,56",
|
|
387
|
+
"usage": "Codes, amounts and identifiers that must line up; set tabular figures."
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
}
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
"spacing": {
|
|
394
|
+
"tokens": [
|
|
395
|
+
{
|
|
396
|
+
"name": "space-1",
|
|
397
|
+
"value": "4px",
|
|
398
|
+
"usage": "Icon-to-label gap in tight controls."
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"name": "space-2",
|
|
402
|
+
"value": "8px",
|
|
403
|
+
"usage": "The default gap: icon and text, chips in a row, button contents."
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"name": "space-3",
|
|
407
|
+
"value": "12px",
|
|
408
|
+
"usage": "Gap between items in a card footer or a list of links."
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"name": "space-4",
|
|
412
|
+
"value": "16px",
|
|
413
|
+
"usage": "Page side gutter, control padding and card padding in dense UI."
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"name": "space-6",
|
|
417
|
+
"value": "24px",
|
|
418
|
+
"usage": "Card padding and the gap between cards."
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"name": "space-8",
|
|
422
|
+
"value": "32px",
|
|
423
|
+
"usage": "Gap between groups inside a section."
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "space-10",
|
|
427
|
+
"value": "40px",
|
|
428
|
+
"usage": "Gap between a section title and its content."
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"name": "space-20",
|
|
432
|
+
"value": "80px",
|
|
433
|
+
"usage": "Vertical padding of a page section."
|
|
434
|
+
}
|
|
435
|
+
]
|
|
436
|
+
},
|
|
437
|
+
"radius": {
|
|
438
|
+
"tokens": [
|
|
439
|
+
{
|
|
440
|
+
"name": "radius-sm",
|
|
441
|
+
"value": "2px",
|
|
442
|
+
"usage": "Small chips, tags and checkboxes."
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"name": "radius-md",
|
|
446
|
+
"value": "6px",
|
|
447
|
+
"usage": "Buttons, inputs, menus and dropdown panels."
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"name": "radius-lg",
|
|
451
|
+
"value": "8px",
|
|
452
|
+
"usage": "Cards, dialogs and images."
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"name": "radius-xl",
|
|
456
|
+
"value": "12px",
|
|
457
|
+
"usage": "Large feature cards and media frames."
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"name": "radius-full",
|
|
461
|
+
"value": "9999px",
|
|
462
|
+
"usage": "Pills, avatars, floating buttons and glass toggles."
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"name": "radius-2xl",
|
|
466
|
+
"value": "24px",
|
|
467
|
+
"usage": "Dialogs, sheets and toasts: glass panels that float free of other edges."
|
|
468
|
+
}
|
|
469
|
+
]
|
|
470
|
+
},
|
|
471
|
+
"shadow": {
|
|
472
|
+
"tokens": [
|
|
473
|
+
{
|
|
474
|
+
"name": "shadow-glass",
|
|
475
|
+
"value": {
|
|
476
|
+
"dark": "inset 0 1px 1px rgba(255,255,255,0.45), inset 0 -1px 1px rgba(255,255,255,0.12), inset 0 0 20px rgba(255,255,255,0.08), 0 10px 30px -8px rgba(0,0,0,0.45)",
|
|
477
|
+
"light": "inset 0 1px 1px rgba(255,255,255,0.9), inset 0 -1px 1px rgba(255,255,255,0.4), inset 0 0 20px rgba(255,255,255,0.25), 0 10px 30px -8px rgba(27,27,27,0.25)"
|
|
478
|
+
},
|
|
479
|
+
"usage": "Glass surfaces: lit top and bottom inner edges, a soft inner glow and a drop shadow."
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"name": "shadow-glow",
|
|
483
|
+
"value": {
|
|
484
|
+
"dark": "0 0 14px rgba(126,168,167,0.55)",
|
|
485
|
+
"light": "0 0 14px rgba(63,107,106,0.35)"
|
|
486
|
+
},
|
|
487
|
+
"usage": "The accent glow, for one focal element at a time: the active toggle thumb, a section index, the avatar ring."
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "shadow-raised",
|
|
491
|
+
"value": "0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",
|
|
492
|
+
"usage": "Cards and menus lifted off the page."
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"name": "glass-text-shadow",
|
|
496
|
+
"value": {
|
|
497
|
+
"dark": "0 1px 2px rgba(0,0,0,0.35)",
|
|
498
|
+
"light": "0 1px 1px rgba(255,255,255,0.6)"
|
|
499
|
+
},
|
|
500
|
+
"usage": "Text shadow for words on glass, separating them from the moving backdrop."
|
|
501
|
+
}
|
|
502
|
+
]
|
|
503
|
+
},
|
|
504
|
+
"backdrop": {
|
|
505
|
+
"note": "Values for backdrop-filter.",
|
|
506
|
+
"tokens": [
|
|
507
|
+
{
|
|
508
|
+
"name": "glass-blur",
|
|
509
|
+
"value": "blur(6px) saturate(180%)",
|
|
510
|
+
"usage": "Regular and clear glass: a light blur keeps the shapes behind recognisable. With the edge lens in Chromium the blur drops to 4px."
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
"name": "glass-thick-blur",
|
|
514
|
+
"value": "blur(20px) saturate(150%)",
|
|
515
|
+
"usage": "Thick glass: dialogs and sheets. Kept at 20px because large blurred areas are expensive to repaint."
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"name": "glass-accent-blur",
|
|
519
|
+
"value": "blur(6px) saturate(200%)",
|
|
520
|
+
"usage": "Accent glass: a single prominent floating control."
|
|
521
|
+
}
|
|
522
|
+
]
|
|
523
|
+
},
|
|
524
|
+
"size": {
|
|
525
|
+
"tokens": [
|
|
526
|
+
{
|
|
527
|
+
"name": "content-max",
|
|
528
|
+
"value": "1152px",
|
|
529
|
+
"usage": "Maximum width of page content, centred."
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"name": "sidebar-width",
|
|
533
|
+
"value": "64px",
|
|
534
|
+
"usage": "Width of a collapsed icon sidebar; content beside it is padded by the same amount."
|
|
535
|
+
}
|
|
536
|
+
]
|
|
537
|
+
}
|
|
538
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,97 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hemerson/design-system",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Liquid-glass design system: tokens, styles and React components for Hemerson's projects.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Hemerson Oliveira",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/hemerson-git/hemerson-design-system.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/hemerson-git/hemerson-design-system#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/hemerson-git/hemerson-design-system/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"design-system",
|
|
17
|
+
"react",
|
|
18
|
+
"components",
|
|
19
|
+
"liquid-glass",
|
|
20
|
+
"glassmorphism",
|
|
21
|
+
"storybook",
|
|
22
|
+
"design-tokens",
|
|
23
|
+
"accessibility"
|
|
24
|
+
],
|
|
25
|
+
"type": "module",
|
|
26
|
+
"sideEffects": [
|
|
27
|
+
"**/*.css"
|
|
28
|
+
],
|
|
29
|
+
"files": [
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"main": "./dist/index.js",
|
|
33
|
+
"module": "./dist/index.js",
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"exports": {
|
|
36
|
+
".": {
|
|
37
|
+
"types": "./dist/index.d.ts",
|
|
38
|
+
"import": "./dist/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./glass": {
|
|
41
|
+
"types": "./dist/glass/index.d.ts",
|
|
42
|
+
"import": "./dist/glass.js"
|
|
43
|
+
},
|
|
44
|
+
"./styles.css": "./dist/styles.css",
|
|
45
|
+
"./tokens.css": "./dist/tokens.css",
|
|
46
|
+
"./tokens.json": "./dist/tokens.json"
|
|
47
|
+
},
|
|
48
|
+
"scripts": {
|
|
49
|
+
"tokens": "node scripts/build-tokens.mjs",
|
|
50
|
+
"dev": "npm run tokens && storybook dev -p 6006",
|
|
51
|
+
"build": "npm run tokens && vite build -c vite.lib.config.ts && tsc -p tsconfig.build.json && node scripts/build-styles.mjs",
|
|
52
|
+
"build-storybook": "npm run tokens && storybook build",
|
|
53
|
+
"test": "npm run tokens && vitest run",
|
|
54
|
+
"test:watch": "vitest",
|
|
55
|
+
"typecheck": "tsc --noEmit",
|
|
56
|
+
"lint": "eslint .",
|
|
57
|
+
"prepare": "husky",
|
|
58
|
+
"prepublishOnly": "npm run lint && npm run typecheck && npm test && npm run build",
|
|
59
|
+
"changeset": "changeset",
|
|
60
|
+
"version-packages": "changeset version",
|
|
61
|
+
"release": "changeset publish"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"react": ">=18.2 <20",
|
|
65
|
+
"react-dom": ">=18.2 <20"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@changesets/changelog-github": "^1.0.1",
|
|
69
|
+
"@changesets/cli": "^3.0.3",
|
|
70
|
+
"@eslint/js": "^10.0.1",
|
|
71
|
+
"@storybook/addon-a11y": "^10.6.2",
|
|
72
|
+
"@storybook/addon-docs": "^10.6.2",
|
|
73
|
+
"@storybook/react-vite": "^10.6.2",
|
|
74
|
+
"@testing-library/dom": "^10.4.2",
|
|
75
|
+
"@testing-library/react": "^16.3.3",
|
|
76
|
+
"@types/react": "^19.3.0",
|
|
77
|
+
"@types/react-dom": "^19.3.0",
|
|
78
|
+
"@vitejs/plugin-react": "^6.1.2",
|
|
79
|
+
"axe-core": "^4.14.0",
|
|
80
|
+
"eslint": "^10.13.0",
|
|
81
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
82
|
+
"globals": "^17.13.0",
|
|
83
|
+
"husky": "^9.1.7",
|
|
84
|
+
"jsdom": "^30.1.3",
|
|
85
|
+
"lucide-react": "^1.59.0",
|
|
86
|
+
"react": "^19.3.1",
|
|
87
|
+
"react-dom": "^19.3.1",
|
|
88
|
+
"storybook": "^10.6.2",
|
|
89
|
+
"typescript": "~6.0.3",
|
|
90
|
+
"typescript-eslint": "^8.72.0",
|
|
91
|
+
"vite": "^8.3.4",
|
|
92
|
+
"vitest": "^5.0.5"
|
|
93
|
+
},
|
|
94
|
+
"publishConfig": {
|
|
95
|
+
"access": "public"
|
|
96
|
+
}
|
|
97
|
+
}
|