@symbo.ls/mcp 1.0.10 → 1.0.11
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/package.json +5 -2
- package/symbols_mcp/skills/COMPONENTS.md +421 -0
- package/symbols_mcp/skills/DESIGN_SYSTEM.md +430 -0
- package/symbols_mcp/skills/MIGRATION.md +520 -0
- package/symbols_mcp/skills/PATTERNS.md +509 -0
- package/symbols_mcp/skills/PROJECT_STRUCTURE.md +400 -0
- package/symbols_mcp/skills/RULES.md +488 -0
- package/symbols_mcp/skills/SEO-METADATA.md +41 -1
- package/symbols_mcp/skills/SYNTAX.md +777 -0
- package/symbols_mcp/skills/ACCESSIBILITY.md +0 -471
- package/symbols_mcp/skills/ACCESSIBILITY_AUDITORY.md +0 -70
- package/symbols_mcp/skills/AGENT_INSTRUCTIONS.md +0 -265
- package/symbols_mcp/skills/BUILT_IN_COMPONENTS.md +0 -304
- package/symbols_mcp/skills/CLAUDE.md +0 -2158
- package/symbols_mcp/skills/CLI_QUICK_START.md +0 -205
- package/symbols_mcp/skills/DEFAULT_COMPONENTS.md +0 -2002
- package/symbols_mcp/skills/DEFAULT_DESIGN_SYSTEM.md +0 -496
- package/symbols_mcp/skills/DESIGN_SYSTEM_CONFIG.md +0 -487
- package/symbols_mcp/skills/DESIGN_SYSTEM_IN_PROPS.md +0 -136
- package/symbols_mcp/skills/DOMQL_v2-v3_MIGRATION.md +0 -236
- package/symbols_mcp/skills/MIGRATE_TO_SYMBOLS.md +0 -634
- package/symbols_mcp/skills/OPTIMIZATIONS_FOR_AGENT.md +0 -253
- package/symbols_mcp/skills/PROJECT_SETUP.md +0 -217
- package/symbols_mcp/skills/QUICKSTART.md +0 -79
- package/symbols_mcp/skills/REMOTE_PREVIEW.md +0 -144
- package/symbols_mcp/skills/SYMBOLS_LOCAL_INSTRUCTIONS.md +0 -1405
- package/symbols_mcp/skills/UI_UX_PATTERNS.md +0 -68
|
@@ -1,2002 +0,0 @@
|
|
|
1
|
-
# Default components and property usage
|
|
2
|
-
|
|
3
|
-
This document lists the default components in `smbls/components` and how their properties are commonly used in Symbols.app.
|
|
4
|
-
|
|
5
|
-
## Component groups
|
|
6
|
-
|
|
7
|
-
- [Typography](#typography)
|
|
8
|
-
- [Dividers](#dividers)
|
|
9
|
-
- [Buttons](#buttons)
|
|
10
|
-
- [Avatar](#avatar)
|
|
11
|
-
- [Badge & Notification](#badge--notification)
|
|
12
|
-
- [Form & Input](#form--input)
|
|
13
|
-
- [Composition](#composition)
|
|
14
|
-
- [Selection](#selection)
|
|
15
|
-
- [Progress & Status](#progress--status)
|
|
16
|
-
- [Navigation & Links](#navigation--links)
|
|
17
|
-
- [Overlay & Disclosure](#overlay--disclosure)
|
|
18
|
-
- [Data display](#data-display)
|
|
19
|
-
- [Misc](#misc)
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Typography
|
|
24
|
-
|
|
25
|
-
- `H1` → `<h1>`
|
|
26
|
-
- `H2` → `<h2>`
|
|
27
|
-
- `H3` → `<h3>`
|
|
28
|
-
- `H4` → `<h4>`
|
|
29
|
-
- `H5` → `<h5>`
|
|
30
|
-
- `H6` → `<h6>`
|
|
31
|
-
- `P` → `<p>`
|
|
32
|
-
- `Caption` → `<span>` (small label text)
|
|
33
|
-
- `Headline` → `<span>` (large emphasis text)
|
|
34
|
-
- `Subhead` → `<span>` (subheading text)
|
|
35
|
-
- `Footnote` → `<span>` (footer reference text)
|
|
36
|
-
- `Strong` → `<strong>`
|
|
37
|
-
- `Italic` → `<em>`
|
|
38
|
-
- `U` → `<u>`
|
|
39
|
-
|
|
40
|
-
All typography components accept a `text` prop.
|
|
41
|
-
|
|
42
|
-
### H1–H6
|
|
43
|
-
|
|
44
|
-
Primary use: semantic section headings.
|
|
45
|
-
|
|
46
|
-
Common props:
|
|
47
|
-
|
|
48
|
-
- `text`
|
|
49
|
-
- `color`, `fontSize`, `fontWeight`, `lineHeight`
|
|
50
|
-
|
|
51
|
-
Example:
|
|
52
|
-
|
|
53
|
-
```js
|
|
54
|
-
H2: {
|
|
55
|
-
text: "Section title";
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### P
|
|
60
|
-
|
|
61
|
-
Primary use: body paragraph text.
|
|
62
|
-
|
|
63
|
-
Common props:
|
|
64
|
-
|
|
65
|
-
- `text`
|
|
66
|
-
- `color`, `fontSize`, `lineHeight`, `maxWidth`
|
|
67
|
-
|
|
68
|
-
Example:
|
|
69
|
-
|
|
70
|
-
```js
|
|
71
|
-
P: {
|
|
72
|
-
text: "A short description goes here.";
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Caption
|
|
77
|
-
|
|
78
|
-
Primary use: small labels, hints, and metadata text.
|
|
79
|
-
|
|
80
|
-
Common props:
|
|
81
|
-
|
|
82
|
-
- `text`
|
|
83
|
-
- `color`, `fontSize`, `opacity`
|
|
84
|
-
|
|
85
|
-
Example:
|
|
86
|
-
|
|
87
|
-
```js
|
|
88
|
-
Caption: {
|
|
89
|
-
text: "Updated 3 days ago";
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Headline / Subhead / Footnote
|
|
94
|
-
|
|
95
|
-
Primary use: display-size headings, sub-sections, and footnotes.
|
|
96
|
-
|
|
97
|
-
Common props:
|
|
98
|
-
|
|
99
|
-
- `text`
|
|
100
|
-
- `color`, `fontSize`
|
|
101
|
-
|
|
102
|
-
Example:
|
|
103
|
-
|
|
104
|
-
```js
|
|
105
|
-
Headline: {
|
|
106
|
-
text: "Welcome back";
|
|
107
|
-
}
|
|
108
|
-
Subhead: {
|
|
109
|
-
text: "Manage your workspace";
|
|
110
|
-
}
|
|
111
|
-
Footnote: {
|
|
112
|
-
text: "* Prices are subject to change";
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Strong / Italic / U
|
|
117
|
-
|
|
118
|
-
Primary use: inline text emphasis.
|
|
119
|
-
|
|
120
|
-
Common props:
|
|
121
|
-
|
|
122
|
-
- `text`
|
|
123
|
-
|
|
124
|
-
Example:
|
|
125
|
-
|
|
126
|
-
```js
|
|
127
|
-
Strong: {
|
|
128
|
-
text: "Important";
|
|
129
|
-
}
|
|
130
|
-
Italic: {
|
|
131
|
-
text: "Note:";
|
|
132
|
-
}
|
|
133
|
-
U: {
|
|
134
|
-
text: "Terms of service";
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Dividers
|
|
141
|
-
|
|
142
|
-
- `Hr` → `<hr>`
|
|
143
|
-
- `HrLegend` → `<div>` (line with centered text)
|
|
144
|
-
|
|
145
|
-
### Hr
|
|
146
|
-
|
|
147
|
-
Primary use: visual horizontal rule between sections.
|
|
148
|
-
|
|
149
|
-
Common props:
|
|
150
|
-
|
|
151
|
-
- `minWidth`
|
|
152
|
-
- `color`, `margin`
|
|
153
|
-
|
|
154
|
-
Example:
|
|
155
|
-
|
|
156
|
-
```js
|
|
157
|
-
Hr: {
|
|
158
|
-
minWidth: "F";
|
|
159
|
-
}
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### HrLegend
|
|
163
|
-
|
|
164
|
-
Primary use: divider with a centered label, commonly used between form sections.
|
|
165
|
-
|
|
166
|
-
Common props:
|
|
167
|
-
|
|
168
|
-
- `text` (shown in the middle)
|
|
169
|
-
|
|
170
|
-
Example:
|
|
171
|
-
|
|
172
|
-
```js
|
|
173
|
-
HrLegend: {
|
|
174
|
-
text: "Or";
|
|
175
|
-
}
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Buttons
|
|
181
|
-
|
|
182
|
-
- `IconButton` — icon-only circular button
|
|
183
|
-
- `IconButtonSet` — group of icon buttons
|
|
184
|
-
- `CounterButton` — button with notification badge
|
|
185
|
-
- `CounterIconButton` — icon button with positioned badge
|
|
186
|
-
- `IconCounterButton` — button with icon and counter side-by-side
|
|
187
|
-
- `UploadButton` — text button that opens file picker
|
|
188
|
-
- `UploadIconButton` — icon button that opens file picker
|
|
189
|
-
- `SubmitButton` — form submit button
|
|
190
|
-
- `ButtonSet` — group of buttons
|
|
191
|
-
- `ConfirmationButtons` — yes/no pair
|
|
192
|
-
- `ImgButton` — image as button
|
|
193
|
-
- `ImgHeadingButton` — image and heading as button
|
|
194
|
-
- `InputButton` — email input with action button
|
|
195
|
-
|
|
196
|
-
### IconButton
|
|
197
|
-
|
|
198
|
-
Primary use: compact circular button that shows only an icon.
|
|
199
|
-
|
|
200
|
-
Common props:
|
|
201
|
-
|
|
202
|
-
- `Icon.name`
|
|
203
|
-
- `theme` (default: `'dialog'`)
|
|
204
|
-
- `fontSize`, `padding`, `round`
|
|
205
|
-
|
|
206
|
-
Example:
|
|
207
|
-
|
|
208
|
-
```js
|
|
209
|
-
IconButton: { Icon: { name: 'plus' }, theme: 'dialog' }
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
### IconButtonSet
|
|
213
|
-
|
|
214
|
-
Primary use: row of icon buttons.
|
|
215
|
-
|
|
216
|
-
Common props:
|
|
217
|
-
|
|
218
|
-
- `childExtend: 'IconButton'`
|
|
219
|
-
- `children` (array of `{ Icon: { name } }`)
|
|
220
|
-
- `gap`
|
|
221
|
-
|
|
222
|
-
Example:
|
|
223
|
-
|
|
224
|
-
```js
|
|
225
|
-
IconButtonSet: {
|
|
226
|
-
childExtend: 'IconButton',
|
|
227
|
-
children: [
|
|
228
|
-
{ Icon: { name: 'edit' } },
|
|
229
|
-
{ Icon: { name: 'trash' } }
|
|
230
|
-
]
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### CounterButton
|
|
235
|
-
|
|
236
|
-
Primary use: button that shows a notification count badge.
|
|
237
|
-
|
|
238
|
-
Common props:
|
|
239
|
-
|
|
240
|
-
- `Span.text` (button label)
|
|
241
|
-
- `NotificationCounter.text` (count)
|
|
242
|
-
- `theme` (default: `'field'`)
|
|
243
|
-
|
|
244
|
-
Example:
|
|
245
|
-
|
|
246
|
-
```js
|
|
247
|
-
CounterButton: {
|
|
248
|
-
Span: { text: 'Messages' },
|
|
249
|
-
NotificationCounter: { text: '7' }
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### CounterIconButton
|
|
254
|
-
|
|
255
|
-
Primary use: icon button with an absolutely positioned counter badge.
|
|
256
|
-
|
|
257
|
-
Common props:
|
|
258
|
-
|
|
259
|
-
- `Icon.name`
|
|
260
|
-
- `NotificationCounter.text`
|
|
261
|
-
|
|
262
|
-
Example:
|
|
263
|
-
|
|
264
|
-
```js
|
|
265
|
-
CounterIconButton: {
|
|
266
|
-
Icon: { name: 'bell' },
|
|
267
|
-
NotificationCounter: { text: '3' }
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### IconCounterButton
|
|
272
|
-
|
|
273
|
-
Primary use: button combining an icon, label, and counter.
|
|
274
|
-
|
|
275
|
-
Common props:
|
|
276
|
-
|
|
277
|
-
- `Icon.name`
|
|
278
|
-
- `Span.text`
|
|
279
|
-
- `NotificationCounter.text`
|
|
280
|
-
|
|
281
|
-
Example:
|
|
282
|
-
|
|
283
|
-
```js
|
|
284
|
-
IconCounterButton: {
|
|
285
|
-
Icon: { name: 'inbox' },
|
|
286
|
-
Span: { text: 'Inbox' },
|
|
287
|
-
NotificationCounter: { text: '12' }
|
|
288
|
-
}
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### UploadButton / UploadIconButton
|
|
292
|
-
|
|
293
|
-
Primary use: trigger file upload via button or icon.
|
|
294
|
-
|
|
295
|
-
Common props:
|
|
296
|
-
|
|
297
|
-
- `text` (UploadButton only)
|
|
298
|
-
- `Icon.name` (UploadIconButton only, default: `'upload'`)
|
|
299
|
-
|
|
300
|
-
Example:
|
|
301
|
-
|
|
302
|
-
```js
|
|
303
|
-
UploadButton: {
|
|
304
|
-
text: "Choose file";
|
|
305
|
-
}
|
|
306
|
-
UploadIconButton: {
|
|
307
|
-
Icon: {
|
|
308
|
-
name: "upload";
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### SubmitButton
|
|
314
|
-
|
|
315
|
-
Primary use: form submit control.
|
|
316
|
-
|
|
317
|
-
Common props:
|
|
318
|
-
|
|
319
|
-
- `value` (label, default: `'Submit'`)
|
|
320
|
-
- `type: 'submit'`
|
|
321
|
-
- `padding`
|
|
322
|
-
|
|
323
|
-
Example:
|
|
324
|
-
|
|
325
|
-
```js
|
|
326
|
-
SubmitButton: {
|
|
327
|
-
value: "Create account";
|
|
328
|
-
}
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
### ButtonSet
|
|
332
|
-
|
|
333
|
-
Primary use: evenly spaced row of buttons.
|
|
334
|
-
|
|
335
|
-
Common props:
|
|
336
|
-
|
|
337
|
-
- `childExtend: 'Button'`
|
|
338
|
-
- `children` (array of button objects)
|
|
339
|
-
- `gap`
|
|
340
|
-
|
|
341
|
-
Example:
|
|
342
|
-
|
|
343
|
-
```js
|
|
344
|
-
ButtonSet: {
|
|
345
|
-
children: [{ text: "Cancel" }, { text: "Save", theme: "primary" }];
|
|
346
|
-
}
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### ConfirmationButtons
|
|
350
|
-
|
|
351
|
-
Primary use: two-button confirm/cancel pair.
|
|
352
|
-
|
|
353
|
-
Common props:
|
|
354
|
-
|
|
355
|
-
- `children[0].text` (cancel label, default: `'No'`)
|
|
356
|
-
- `children[1].text` (confirm label, default: `'YES'`)
|
|
357
|
-
|
|
358
|
-
Example:
|
|
359
|
-
|
|
360
|
-
```js
|
|
361
|
-
ConfirmationButtons: {
|
|
362
|
-
children: [{ text: "Cancel" }, { text: "Delete", theme: "danger" }];
|
|
363
|
-
}
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
### InputButton
|
|
367
|
-
|
|
368
|
-
Primary use: inline email or text input with a submit button.
|
|
369
|
-
|
|
370
|
-
Common props:
|
|
371
|
-
|
|
372
|
-
- `Input.placeholder`
|
|
373
|
-
- `Button.text`
|
|
374
|
-
- `gap`, `height`
|
|
375
|
-
|
|
376
|
-
Example:
|
|
377
|
-
|
|
378
|
-
```js
|
|
379
|
-
InputButton: {
|
|
380
|
-
Input: { placeholder: 'Enter your email' },
|
|
381
|
-
Button: { text: 'Sign up' }
|
|
382
|
-
}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
---
|
|
386
|
-
|
|
387
|
-
## Avatar
|
|
388
|
-
|
|
389
|
-
- `Avatar` — single avatar image
|
|
390
|
-
- `AvatarSet` — overlapping group of avatars
|
|
391
|
-
- `AvatarStatus` — avatar with online/offline dot
|
|
392
|
-
- `AvatarParagraph` — avatar + paragraph
|
|
393
|
-
- `AvatarHeading` — avatar + heading
|
|
394
|
-
- `AvatarHgroup` — avatar + heading group
|
|
395
|
-
- `AvatarBadgeHgroup` — avatar + heading + badge
|
|
396
|
-
- `AvatarHgroupIconButton` — avatar + heading + icon button
|
|
397
|
-
- `AvatarHgroupSelect` — avatar + heading + select
|
|
398
|
-
- `AvatarSelectPicker` — avatar inside label with select
|
|
399
|
-
- `AvatarChatPreview` — avatar + message preview
|
|
400
|
-
- `AvatarStatusChatPreview` — avatar with status + message preview
|
|
401
|
-
- `AvatarSetChatPreview` — avatar group + message preview
|
|
402
|
-
|
|
403
|
-
### Avatar
|
|
404
|
-
|
|
405
|
-
Primary use: user or entity profile image.
|
|
406
|
-
|
|
407
|
-
Common props:
|
|
408
|
-
|
|
409
|
-
- `boxSize` (default: `'C2'`)
|
|
410
|
-
- `src`, `alt`
|
|
411
|
-
|
|
412
|
-
Example:
|
|
413
|
-
|
|
414
|
-
```js
|
|
415
|
-
Avatar: {
|
|
416
|
-
boxSize: "C2";
|
|
417
|
-
}
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
### AvatarSet
|
|
421
|
-
|
|
422
|
-
Primary use: stacked group of overlapping avatars.
|
|
423
|
-
|
|
424
|
-
Common props:
|
|
425
|
-
|
|
426
|
-
- `childExtend: 'Avatar'`
|
|
427
|
-
- `children` (array of avatar objects)
|
|
428
|
-
|
|
429
|
-
Example:
|
|
430
|
-
|
|
431
|
-
```js
|
|
432
|
-
AvatarSet: {
|
|
433
|
-
children: [{}, {}, {}];
|
|
434
|
-
}
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
### AvatarStatus
|
|
438
|
-
|
|
439
|
-
Primary use: avatar with a status indicator dot.
|
|
440
|
-
|
|
441
|
-
Common props:
|
|
442
|
-
|
|
443
|
-
- `Avatar.boxSize`
|
|
444
|
-
- `StatusDot.theme` (`'success'`, `'error'`, etc.)
|
|
445
|
-
|
|
446
|
-
Example:
|
|
447
|
-
|
|
448
|
-
```js
|
|
449
|
-
AvatarStatus: {
|
|
450
|
-
Avatar: { boxSize: 'C' },
|
|
451
|
-
StatusDot: { theme: 'success' }
|
|
452
|
-
}
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
### AvatarParagraph
|
|
456
|
-
|
|
457
|
-
Primary use: avatar paired with a short text description.
|
|
458
|
-
|
|
459
|
-
Common props:
|
|
460
|
-
|
|
461
|
-
- `Avatar.boxSize`
|
|
462
|
-
- `P.text`
|
|
463
|
-
|
|
464
|
-
Example:
|
|
465
|
-
|
|
466
|
-
```js
|
|
467
|
-
AvatarParagraph: {
|
|
468
|
-
Avatar: {},
|
|
469
|
-
P: { text: 'Can you join us today?' }
|
|
470
|
-
}
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
### AvatarHeading
|
|
474
|
-
|
|
475
|
-
Primary use: avatar with a single heading line.
|
|
476
|
-
|
|
477
|
-
Common props:
|
|
478
|
-
|
|
479
|
-
- `Avatar`
|
|
480
|
-
- `H.tag` (default: `'h6'`), `H.text`
|
|
481
|
-
|
|
482
|
-
Example:
|
|
483
|
-
|
|
484
|
-
```js
|
|
485
|
-
AvatarHeading: {
|
|
486
|
-
H: { tag: 'h6', text: 'Nika Tomadze' }
|
|
487
|
-
}
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
### AvatarHgroup
|
|
491
|
-
|
|
492
|
-
Primary use: avatar with a two-line heading group (name + subtitle).
|
|
493
|
-
|
|
494
|
-
Common props:
|
|
495
|
-
|
|
496
|
-
- `Avatar.margin`
|
|
497
|
-
- `Hgroup.gap`
|
|
498
|
-
- `H.text`, `P.text`
|
|
499
|
-
|
|
500
|
-
Example:
|
|
501
|
-
|
|
502
|
-
```js
|
|
503
|
-
AvatarHgroup: {
|
|
504
|
-
H: { text: 'Nika Tomadze' },
|
|
505
|
-
P: { text: 'Product Designer' }
|
|
506
|
-
}
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
### AvatarBadgeHgroup
|
|
510
|
-
|
|
511
|
-
Primary use: avatar with heading group and a badge label.
|
|
512
|
-
|
|
513
|
-
Common props:
|
|
514
|
-
|
|
515
|
-
- `H.text`, `P.text`
|
|
516
|
-
- `Badge.text`, `Badge.theme`
|
|
517
|
-
|
|
518
|
-
Example:
|
|
519
|
-
|
|
520
|
-
```js
|
|
521
|
-
AvatarBadgeHgroup: {
|
|
522
|
-
H: { text: 'Nika Tomadze' },
|
|
523
|
-
Badge: { text: 'Admin', theme: 'primary' }
|
|
524
|
-
}
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
### AvatarHgroupIconButton
|
|
528
|
-
|
|
529
|
-
Primary use: avatar with heading and a copy/action icon button.
|
|
530
|
-
|
|
531
|
-
Common props:
|
|
532
|
-
|
|
533
|
-
- `H.text`, `P.text`
|
|
534
|
-
- `IconButton.Icon.name` (default: `'copy'`)
|
|
535
|
-
|
|
536
|
-
Example:
|
|
537
|
-
|
|
538
|
-
```js
|
|
539
|
-
AvatarHgroupIconButton: {
|
|
540
|
-
H: { text: 'Nika Tomadze' },
|
|
541
|
-
IconButton: { Icon: { name: 'copy' } }
|
|
542
|
-
}
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
### AvatarHgroupSelect
|
|
546
|
-
|
|
547
|
-
Primary use: avatar with heading and a dropdown selector.
|
|
548
|
-
|
|
549
|
-
Common props:
|
|
550
|
-
|
|
551
|
-
- `H.text`, `P.text`
|
|
552
|
-
- `SelectPicker.Select.children` (option list)
|
|
553
|
-
|
|
554
|
-
Example:
|
|
555
|
-
|
|
556
|
-
```js
|
|
557
|
-
AvatarHgroupSelect: {
|
|
558
|
-
H: { text: 'Nika Tomadze' },
|
|
559
|
-
SelectPicker: {
|
|
560
|
-
Select: { children: [{ text: 'Admin' }, { text: 'Editor' }] }
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
### AvatarChatPreview / AvatarStatusChatPreview / AvatarSetChatPreview
|
|
566
|
-
|
|
567
|
-
Primary use: chat list item showing an avatar with the latest message summary.
|
|
568
|
-
|
|
569
|
-
Common props:
|
|
570
|
-
|
|
571
|
-
- `Avatar` / `AvatarStatus` / `AvatarSet`
|
|
572
|
-
- `H.text` (conversation name)
|
|
573
|
-
- `P.text` (message preview)
|
|
574
|
-
- `Value.text` (timestamp)
|
|
575
|
-
- `NotificationCounter.text` (unread count)
|
|
576
|
-
|
|
577
|
-
Example:
|
|
578
|
-
|
|
579
|
-
```js
|
|
580
|
-
AvatarChatPreview: {
|
|
581
|
-
H: { text: 'Design Team' },
|
|
582
|
-
P: { text: 'Can you join us today?' },
|
|
583
|
-
Value: { text: '2:20' }
|
|
584
|
-
}
|
|
585
|
-
```
|
|
586
|
-
|
|
587
|
-
---
|
|
588
|
-
|
|
589
|
-
## Badge & Notification
|
|
590
|
-
|
|
591
|
-
- `Badge` — colored label badge
|
|
592
|
-
- `BadgeCaption` — caption + badge
|
|
593
|
-
- `BadgeParagraph` — paragraph + badge
|
|
594
|
-
- `NotificationCounter` — circular number badge
|
|
595
|
-
- `NotCounterParagraph` — paragraph + counter
|
|
596
|
-
|
|
597
|
-
### Badge
|
|
598
|
-
|
|
599
|
-
Primary use: small colored label, typically used for status or categories.
|
|
600
|
-
|
|
601
|
-
Common props:
|
|
602
|
-
|
|
603
|
-
- `text`
|
|
604
|
-
- `theme` (default: `'warning'`)
|
|
605
|
-
- `round`, `padding`
|
|
606
|
-
|
|
607
|
-
Example:
|
|
608
|
-
|
|
609
|
-
```js
|
|
610
|
-
Badge: { text: 'New', theme: 'primary' }
|
|
611
|
-
```
|
|
612
|
-
|
|
613
|
-
### BadgeCaption
|
|
614
|
-
|
|
615
|
-
Primary use: caption label paired with a badge.
|
|
616
|
-
|
|
617
|
-
Common props:
|
|
618
|
-
|
|
619
|
-
- `Caption.text`
|
|
620
|
-
- `Badge.text`, `Badge.theme`
|
|
621
|
-
|
|
622
|
-
Example:
|
|
623
|
-
|
|
624
|
-
```js
|
|
625
|
-
BadgeCaption: {
|
|
626
|
-
Caption: { text: 'Status' },
|
|
627
|
-
Badge: { text: 'Active', theme: 'success' }
|
|
628
|
-
}
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
### BadgeParagraph
|
|
632
|
-
|
|
633
|
-
Primary use: list item or message row with badge on the trailing edge.
|
|
634
|
-
|
|
635
|
-
Common props:
|
|
636
|
-
|
|
637
|
-
- `P.text`
|
|
638
|
-
- `Badge.text`, `Badge.theme`
|
|
639
|
-
|
|
640
|
-
Example:
|
|
641
|
-
|
|
642
|
-
```js
|
|
643
|
-
BadgeParagraph: {
|
|
644
|
-
P: { text: 'Hey team, I finished the review.' },
|
|
645
|
-
Badge: { text: 'Unread', theme: 'primary' }
|
|
646
|
-
}
|
|
647
|
-
```
|
|
648
|
-
|
|
649
|
-
### NotificationCounter
|
|
650
|
-
|
|
651
|
-
Primary use: circular badge showing an unread count.
|
|
652
|
-
|
|
653
|
-
Common props:
|
|
654
|
-
|
|
655
|
-
- `text` (number)
|
|
656
|
-
- `theme` (default: `'primary'`)
|
|
657
|
-
- `widthRange`
|
|
658
|
-
|
|
659
|
-
Example:
|
|
660
|
-
|
|
661
|
-
```js
|
|
662
|
-
NotificationCounter: { text: '5', theme: 'primary' }
|
|
663
|
-
```
|
|
664
|
-
|
|
665
|
-
### NotCounterParagraph
|
|
666
|
-
|
|
667
|
-
Primary use: message row with paragraph text and unread count on the right.
|
|
668
|
-
|
|
669
|
-
Common props:
|
|
670
|
-
|
|
671
|
-
- `P.text`
|
|
672
|
-
- `NotificationCounter.text`
|
|
673
|
-
|
|
674
|
-
Example:
|
|
675
|
-
|
|
676
|
-
```js
|
|
677
|
-
NotCounterParagraph: {
|
|
678
|
-
P: { text: 'New messages arrived' },
|
|
679
|
-
NotificationCounter: { text: '3' }
|
|
680
|
-
}
|
|
681
|
-
```
|
|
682
|
-
|
|
683
|
-
---
|
|
684
|
-
|
|
685
|
-
## Form & Input
|
|
686
|
-
|
|
687
|
-
- `Field` — input with optional icon
|
|
688
|
-
- `FieldCaption` — labeled field with caption
|
|
689
|
-
- `IconInput` — input with icon overlay
|
|
690
|
-
- `FixedNumberField` — 4-digit code input
|
|
691
|
-
- `CardNumberField` — 4×4-digit card number entry
|
|
692
|
-
- `Group` — form section with title
|
|
693
|
-
- `GroupField` — labeled form fieldset
|
|
694
|
-
- `Select` — native select
|
|
695
|
-
- `SelectPicker` — styled select with chevron icon
|
|
696
|
-
- `SelectField` — field-styled select
|
|
697
|
-
- `SelectHgroup` — select with heading description
|
|
698
|
-
- `NumberPicker` — increment/decrement number input
|
|
699
|
-
- `Search` — search input with icon
|
|
700
|
-
- `SearchDropdown` — searchable filterable dropdown
|
|
701
|
-
- `TextareaIconButton` — textarea with send button
|
|
702
|
-
|
|
703
|
-
### Field
|
|
704
|
-
|
|
705
|
-
Primary use: styled text input, optionally decorated with an icon.
|
|
706
|
-
|
|
707
|
-
Common props:
|
|
708
|
-
|
|
709
|
-
- `Input.placeholder`, `Input.type`, `Input.round`
|
|
710
|
-
- `Icon.icon` (trailing icon)
|
|
711
|
-
- `theme` (default: `'field'`)
|
|
712
|
-
|
|
713
|
-
Example:
|
|
714
|
-
|
|
715
|
-
```js
|
|
716
|
-
Field: {
|
|
717
|
-
Input: { placeholder: 'Enter your name' },
|
|
718
|
-
Icon: { icon: 'user' }
|
|
719
|
-
}
|
|
720
|
-
```
|
|
721
|
-
|
|
722
|
-
### FieldCaption
|
|
723
|
-
|
|
724
|
-
Primary use: a field with a small label above it.
|
|
725
|
-
|
|
726
|
-
Common props:
|
|
727
|
-
|
|
728
|
-
- `Caption.text`
|
|
729
|
-
- `Field` props
|
|
730
|
-
|
|
731
|
-
Example:
|
|
732
|
-
|
|
733
|
-
```js
|
|
734
|
-
FieldCaption: {
|
|
735
|
-
Caption: { text: 'Email address' },
|
|
736
|
-
Field: { Input: { placeholder: 'you@example.com' } }
|
|
737
|
-
}
|
|
738
|
-
```
|
|
739
|
-
|
|
740
|
-
### IconInput
|
|
741
|
-
|
|
742
|
-
Primary use: input with an absolutely positioned icon.
|
|
743
|
-
|
|
744
|
-
Common props:
|
|
745
|
-
|
|
746
|
-
- `Input.placeholder`
|
|
747
|
-
- `Icon.name` (trailing icon)
|
|
748
|
-
|
|
749
|
-
Example:
|
|
750
|
-
|
|
751
|
-
```js
|
|
752
|
-
IconInput: {
|
|
753
|
-
Input: { placeholder: 'Search…' },
|
|
754
|
-
Icon: { name: 'search' }
|
|
755
|
-
}
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
### FixedNumberField
|
|
759
|
-
|
|
760
|
-
Primary use: single 4-digit code cell (e.g. OTP, PIN).
|
|
761
|
-
|
|
762
|
-
Common props:
|
|
763
|
-
|
|
764
|
-
- `Input.maxlength` (default: `4`)
|
|
765
|
-
- `Input.letterSpacing`
|
|
766
|
-
|
|
767
|
-
Example:
|
|
768
|
-
|
|
769
|
-
```js
|
|
770
|
-
FixedNumberField: {
|
|
771
|
-
Input: {
|
|
772
|
-
placeholder: "0000";
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
```
|
|
776
|
-
|
|
777
|
-
### CardNumberField
|
|
778
|
-
|
|
779
|
-
Primary use: full credit card number entry split into four groups.
|
|
780
|
-
|
|
781
|
-
Common props:
|
|
782
|
-
|
|
783
|
-
- `children` (array of 4 `FixedNumberField` objects)
|
|
784
|
-
|
|
785
|
-
Example:
|
|
786
|
-
|
|
787
|
-
```js
|
|
788
|
-
CardNumberField: {
|
|
789
|
-
children: [{}, {}, {}, {}];
|
|
790
|
-
}
|
|
791
|
-
```
|
|
792
|
-
|
|
793
|
-
### Group / GroupField
|
|
794
|
-
|
|
795
|
-
Primary use: form section grouping related fields under a title.
|
|
796
|
-
|
|
797
|
-
Common props:
|
|
798
|
-
|
|
799
|
-
- `Title.text`
|
|
800
|
-
- `flow: 'y'`, `gap`
|
|
801
|
-
- `minWidth`
|
|
802
|
-
|
|
803
|
-
Example:
|
|
804
|
-
|
|
805
|
-
```js
|
|
806
|
-
Group: {
|
|
807
|
-
Title: { text: 'Personal info' },
|
|
808
|
-
flow: 'y',
|
|
809
|
-
gap: 'A'
|
|
810
|
-
}
|
|
811
|
-
```
|
|
812
|
-
|
|
813
|
-
### Select / SelectPicker / SelectField
|
|
814
|
-
|
|
815
|
-
Primary use: option selection via native or styled dropdowns.
|
|
816
|
-
|
|
817
|
-
Common props:
|
|
818
|
-
|
|
819
|
-
- `Select.children` (array of `{ text, value }` option objects)
|
|
820
|
-
- `Icon.name` (`'chevronDown'` for SelectPicker)
|
|
821
|
-
- `theme` (default: `'field'` for SelectField)
|
|
822
|
-
|
|
823
|
-
Example:
|
|
824
|
-
|
|
825
|
-
```js
|
|
826
|
-
SelectPicker: {
|
|
827
|
-
Select: {
|
|
828
|
-
children: [
|
|
829
|
-
{ text: "Option A", value: "a" },
|
|
830
|
-
{ text: "Option B", value: "b" },
|
|
831
|
-
];
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
```
|
|
835
|
-
|
|
836
|
-
### SelectHgroup
|
|
837
|
-
|
|
838
|
-
Primary use: select control with a heading and description beside it.
|
|
839
|
-
|
|
840
|
-
Common props:
|
|
841
|
-
|
|
842
|
-
- `H.text`, `P.text`
|
|
843
|
-
- `SelectPicker`
|
|
844
|
-
|
|
845
|
-
Example:
|
|
846
|
-
|
|
847
|
-
```js
|
|
848
|
-
SelectHgroup: {
|
|
849
|
-
H: { text: 'Language' },
|
|
850
|
-
P: { text: 'Choose your preferred language' },
|
|
851
|
-
SelectPicker: {}
|
|
852
|
-
}
|
|
853
|
-
```
|
|
854
|
-
|
|
855
|
-
### NumberPicker
|
|
856
|
-
|
|
857
|
-
Primary use: increment/decrement control for numeric values.
|
|
858
|
-
|
|
859
|
-
Common props:
|
|
860
|
-
|
|
861
|
-
- `Value.text` (current value)
|
|
862
|
-
- `Minus.Icon.name` (`'minus'`)
|
|
863
|
-
- `Plus.Icon.name` (`'plus'`)
|
|
864
|
-
|
|
865
|
-
Example:
|
|
866
|
-
|
|
867
|
-
```js
|
|
868
|
-
NumberPicker: {
|
|
869
|
-
Value: {
|
|
870
|
-
text: "{{ currentValue }}";
|
|
871
|
-
}
|
|
872
|
-
}
|
|
873
|
-
```
|
|
874
|
-
|
|
875
|
-
### Search
|
|
876
|
-
|
|
877
|
-
Primary use: search input with an icon.
|
|
878
|
-
|
|
879
|
-
Common props:
|
|
880
|
-
|
|
881
|
-
- `Input.placeholder`
|
|
882
|
-
- `Input.type: 'search'`
|
|
883
|
-
- `Icon.name` (default: `'search'`)
|
|
884
|
-
|
|
885
|
-
Example:
|
|
886
|
-
|
|
887
|
-
```js
|
|
888
|
-
Search: {
|
|
889
|
-
Input: {
|
|
890
|
-
placeholder: "Search…";
|
|
891
|
-
}
|
|
892
|
-
}
|
|
893
|
-
```
|
|
894
|
-
|
|
895
|
-
### SearchDropdown
|
|
896
|
-
|
|
897
|
-
Primary use: filterable dropdown with a search input inside.
|
|
898
|
-
|
|
899
|
-
Common props:
|
|
900
|
-
|
|
901
|
-
- `state.data` (array of option strings or objects)
|
|
902
|
-
- `state.selected`, `state.searchValue`
|
|
903
|
-
|
|
904
|
-
Example:
|
|
905
|
-
|
|
906
|
-
```js
|
|
907
|
-
SearchDropdown: {
|
|
908
|
-
state: {
|
|
909
|
-
data: ["New York", "Los Angeles", "Chicago"];
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
```
|
|
913
|
-
|
|
914
|
-
### TextareaIconButton
|
|
915
|
-
|
|
916
|
-
Primary use: multi-line text entry with an inline send/submit button.
|
|
917
|
-
|
|
918
|
-
Common props:
|
|
919
|
-
|
|
920
|
-
- `Textarea.minHeight`, `Textarea.maxHeight`, `Textarea.placeholder`
|
|
921
|
-
- `IconButton.Icon.name` (default: `'send'`)
|
|
922
|
-
|
|
923
|
-
Example:
|
|
924
|
-
|
|
925
|
-
```js
|
|
926
|
-
TextareaIconButton: {
|
|
927
|
-
Textarea: { placeholder: 'Write a message…' },
|
|
928
|
-
IconButton: { Icon: { name: 'send' } }
|
|
929
|
-
}
|
|
930
|
-
```
|
|
931
|
-
|
|
932
|
-
---
|
|
933
|
-
|
|
934
|
-
## Composition
|
|
935
|
-
|
|
936
|
-
Composition components pair a primary element (heading, icon, image) with text content or controls.
|
|
937
|
-
|
|
938
|
-
- `ButtonHeading` — heading + button
|
|
939
|
-
- `ButtonHgroup` — heading group + button
|
|
940
|
-
- `ButtonParagraph` — paragraph + button
|
|
941
|
-
- `IconHeading` — icon + heading
|
|
942
|
-
- `IconButtonHeading` — heading + icon button
|
|
943
|
-
- `IconButtonHgroup` — heading group + icon button
|
|
944
|
-
- `IconHgroup` — icon + heading group
|
|
945
|
-
- `ImgHeading` — image + heading
|
|
946
|
-
- `ImgHgroup` — image + heading group
|
|
947
|
-
- `ImgHeadingButton` — image + heading as button
|
|
948
|
-
- `ValueHeading` — heading + unit/value on right
|
|
949
|
-
- `IcontextLink` — icon + text as link
|
|
950
|
-
- `IconTextSet` — list of icon + text pairs
|
|
951
|
-
- `SectionHeader` — section header with icon buttons
|
|
952
|
-
|
|
953
|
-
### ButtonHeading
|
|
954
|
-
|
|
955
|
-
Primary use: heading row with an action button on the trailing edge.
|
|
956
|
-
|
|
957
|
-
Common props:
|
|
958
|
-
|
|
959
|
-
- `H.tag` (default: `'h6'`), `H.text`
|
|
960
|
-
- `Button.text`, `Button.theme`
|
|
961
|
-
|
|
962
|
-
Example:
|
|
963
|
-
|
|
964
|
-
```js
|
|
965
|
-
ButtonHeading: {
|
|
966
|
-
H: { tag: 'h5', text: 'Team members' },
|
|
967
|
-
Button: { text: 'Invite', theme: 'primary' }
|
|
968
|
-
}
|
|
969
|
-
```
|
|
970
|
-
|
|
971
|
-
### ButtonHgroup
|
|
972
|
-
|
|
973
|
-
Primary use: heading group with an action button below or beside it.
|
|
974
|
-
|
|
975
|
-
Common props:
|
|
976
|
-
|
|
977
|
-
- `H.text`, `P.text`
|
|
978
|
-
- `Button.text`, `Button.theme`
|
|
979
|
-
|
|
980
|
-
Example:
|
|
981
|
-
|
|
982
|
-
```js
|
|
983
|
-
ButtonHgroup: {
|
|
984
|
-
H: { text: 'Upgrade plan' },
|
|
985
|
-
P: { text: 'Get access to all features' },
|
|
986
|
-
Button: { text: 'Upgrade' }
|
|
987
|
-
}
|
|
988
|
-
```
|
|
989
|
-
|
|
990
|
-
### ButtonParagraph
|
|
991
|
-
|
|
992
|
-
Primary use: paragraph with an inline text button (e.g. "Resend code").
|
|
993
|
-
|
|
994
|
-
Common props:
|
|
995
|
-
|
|
996
|
-
- `P.text`
|
|
997
|
-
- `Button.text`, `Button.theme` (default: `'transparent'`)
|
|
998
|
-
|
|
999
|
-
Example:
|
|
1000
|
-
|
|
1001
|
-
```js
|
|
1002
|
-
ButtonParagraph: {
|
|
1003
|
-
P: { text: "Didn't receive the code?" },
|
|
1004
|
-
Button: { text: 'Resend' }
|
|
1005
|
-
}
|
|
1006
|
-
```
|
|
1007
|
-
|
|
1008
|
-
### IconHeading
|
|
1009
|
-
|
|
1010
|
-
Primary use: icon above or beside a heading.
|
|
1011
|
-
|
|
1012
|
-
Common props:
|
|
1013
|
-
|
|
1014
|
-
- `Icon.name`, `Icon.fontSize`
|
|
1015
|
-
- `H.tag` (default: `'h5'`), `H.text`
|
|
1016
|
-
|
|
1017
|
-
Example:
|
|
1018
|
-
|
|
1019
|
-
```js
|
|
1020
|
-
IconHeading: {
|
|
1021
|
-
Icon: { name: 'star', fontSize: 'C' },
|
|
1022
|
-
H: { tag: 'h5', text: 'Featured' }
|
|
1023
|
-
}
|
|
1024
|
-
```
|
|
1025
|
-
|
|
1026
|
-
### IconButtonHeading
|
|
1027
|
-
|
|
1028
|
-
Primary use: heading with an icon button on the trailing edge.
|
|
1029
|
-
|
|
1030
|
-
Common props:
|
|
1031
|
-
|
|
1032
|
-
- `H.tag` (default: `'h5'`), `H.text`
|
|
1033
|
-
- `IconButton.Icon.name`
|
|
1034
|
-
|
|
1035
|
-
Example:
|
|
1036
|
-
|
|
1037
|
-
```js
|
|
1038
|
-
IconButtonHeading: {
|
|
1039
|
-
H: { tag: 'h5', text: 'Settings' },
|
|
1040
|
-
IconButton: { Icon: { name: 'edit' } }
|
|
1041
|
-
}
|
|
1042
|
-
```
|
|
1043
|
-
|
|
1044
|
-
### IconButtonHgroup
|
|
1045
|
-
|
|
1046
|
-
Primary use: heading group with a trailing icon button.
|
|
1047
|
-
|
|
1048
|
-
Common props:
|
|
1049
|
-
|
|
1050
|
-
- `H.text`, `P.text`
|
|
1051
|
-
- `IconButton.Icon.name`
|
|
1052
|
-
|
|
1053
|
-
Example:
|
|
1054
|
-
|
|
1055
|
-
```js
|
|
1056
|
-
IconButtonHgroup: {
|
|
1057
|
-
H: { text: 'Notifications' },
|
|
1058
|
-
P: { text: 'Manage your notification preferences' },
|
|
1059
|
-
IconButton: { Icon: { name: 'settings' } }
|
|
1060
|
-
}
|
|
1061
|
-
```
|
|
1062
|
-
|
|
1063
|
-
### IconHgroup
|
|
1064
|
-
|
|
1065
|
-
Primary use: large icon with a heading group beside it.
|
|
1066
|
-
|
|
1067
|
-
Common props:
|
|
1068
|
-
|
|
1069
|
-
- `Icon.name`, `Icon.display: 'block'`
|
|
1070
|
-
- `H.text`, `P.text`
|
|
1071
|
-
|
|
1072
|
-
Example:
|
|
1073
|
-
|
|
1074
|
-
```js
|
|
1075
|
-
IconHgroup: {
|
|
1076
|
-
Icon: { name: 'logo', display: 'block' },
|
|
1077
|
-
H: { text: 'Symbols' },
|
|
1078
|
-
P: { text: 'Design system toolkit' }
|
|
1079
|
-
}
|
|
1080
|
-
```
|
|
1081
|
-
|
|
1082
|
-
### ImgHeading
|
|
1083
|
-
|
|
1084
|
-
Primary use: image followed by a heading.
|
|
1085
|
-
|
|
1086
|
-
Common props:
|
|
1087
|
-
|
|
1088
|
-
- `Img.src`, `Img.maxWidth`, `Img.maxHeight`
|
|
1089
|
-
- `H.tag` (default: `'h4'`), `H.text`
|
|
1090
|
-
|
|
1091
|
-
Example:
|
|
1092
|
-
|
|
1093
|
-
```js
|
|
1094
|
-
ImgHeading: {
|
|
1095
|
-
Img: { src: '/logo.png', maxWidth: 'C' },
|
|
1096
|
-
H: { tag: 'h4', text: 'Our product' }
|
|
1097
|
-
}
|
|
1098
|
-
```
|
|
1099
|
-
|
|
1100
|
-
### ImgHgroup
|
|
1101
|
-
|
|
1102
|
-
Primary use: image alongside a heading group.
|
|
1103
|
-
|
|
1104
|
-
Common props:
|
|
1105
|
-
|
|
1106
|
-
- `Img.src`, `Img.boxSize`
|
|
1107
|
-
- `H.text`, `P.text`
|
|
1108
|
-
|
|
1109
|
-
Example:
|
|
1110
|
-
|
|
1111
|
-
```js
|
|
1112
|
-
ImgHgroup: {
|
|
1113
|
-
Img: { src: '/icon.png', boxSize: 'C' },
|
|
1114
|
-
H: { text: 'Product name' },
|
|
1115
|
-
P: { text: 'A short tagline' }
|
|
1116
|
-
}
|
|
1117
|
-
```
|
|
1118
|
-
|
|
1119
|
-
### ValueHeading
|
|
1120
|
-
|
|
1121
|
-
Primary use: heading with a unit/value on the right (e.g. price, stat, time).
|
|
1122
|
-
|
|
1123
|
-
Common props:
|
|
1124
|
-
|
|
1125
|
-
- `H.tag` (default: `'h6'`), `H.text`
|
|
1126
|
-
- `UnitValue.Value.text`, `UnitValue.Unit.text`
|
|
1127
|
-
|
|
1128
|
-
Example:
|
|
1129
|
-
|
|
1130
|
-
```js
|
|
1131
|
-
ValueHeading: {
|
|
1132
|
-
H: { tag: 'h6', text: 'Revenue' },
|
|
1133
|
-
UnitValue: { Unit: { text: '$' }, Value: { text: '1,200' } }
|
|
1134
|
-
}
|
|
1135
|
-
```
|
|
1136
|
-
|
|
1137
|
-
### IcontextLink
|
|
1138
|
-
|
|
1139
|
-
Primary use: icon + text as a clickable link.
|
|
1140
|
-
|
|
1141
|
-
Common props:
|
|
1142
|
-
|
|
1143
|
-
- `Icon.name`, `Icon.fontSize`
|
|
1144
|
-
- `text`
|
|
1145
|
-
- `href`
|
|
1146
|
-
|
|
1147
|
-
Example:
|
|
1148
|
-
|
|
1149
|
-
```js
|
|
1150
|
-
IcontextLink: {
|
|
1151
|
-
Icon: { name: 'twitter', fontSize: 'B' },
|
|
1152
|
-
text: 'Follow on Twitter'
|
|
1153
|
-
}
|
|
1154
|
-
```
|
|
1155
|
-
|
|
1156
|
-
### IconTextSet
|
|
1157
|
-
|
|
1158
|
-
Primary use: list of icon + text contact info or feature rows.
|
|
1159
|
-
|
|
1160
|
-
Common props:
|
|
1161
|
-
|
|
1162
|
-
- `children` (each with `Icon.name` and `text`)
|
|
1163
|
-
|
|
1164
|
-
Example:
|
|
1165
|
-
|
|
1166
|
-
```js
|
|
1167
|
-
IconTextSet: {
|
|
1168
|
-
children: [
|
|
1169
|
-
{ Icon: { name: "phone" }, text: "+1 (555) 123-4567" },
|
|
1170
|
-
{ Icon: { name: "mail" }, text: "hello@example.com" },
|
|
1171
|
-
];
|
|
1172
|
-
}
|
|
1173
|
-
```
|
|
1174
|
-
|
|
1175
|
-
### SectionHeader
|
|
1176
|
-
|
|
1177
|
-
Primary use: section header with a title and icon buttons for actions.
|
|
1178
|
-
|
|
1179
|
-
Common props:
|
|
1180
|
-
|
|
1181
|
-
- `Hgroup.H.text`, `Hgroup.P.text`
|
|
1182
|
-
- `IconButtonSet` (action buttons)
|
|
1183
|
-
|
|
1184
|
-
Example:
|
|
1185
|
-
|
|
1186
|
-
```js
|
|
1187
|
-
SectionHeader: {
|
|
1188
|
-
Hgroup: { H: { text: 'Recent activity' } },
|
|
1189
|
-
IconButtonSet: {
|
|
1190
|
-
children: [{ Icon: { name: 'filter' } }]
|
|
1191
|
-
}
|
|
1192
|
-
}
|
|
1193
|
-
```
|
|
1194
|
-
|
|
1195
|
-
---
|
|
1196
|
-
|
|
1197
|
-
## Selection
|
|
1198
|
-
|
|
1199
|
-
Selection components come in three flavors — **Check**, **Radio**, **Toggle** — each available in caption, heading group, and list variants.
|
|
1200
|
-
|
|
1201
|
-
- `CheckCaption` — checkbox + caption
|
|
1202
|
-
- `CheckCaptionList` — list of `CheckCaption`
|
|
1203
|
-
- `CheckHgroup` — checkbox + heading group
|
|
1204
|
-
- `CheckHgroupList` — list of `CheckHgroup`
|
|
1205
|
-
- `CheckStep` — step with checkmark and progress
|
|
1206
|
-
- `CheckStepSet` — list of `CheckStep`
|
|
1207
|
-
- `RadioMark` — custom visual radio circle
|
|
1208
|
-
- `RadioCaption` — radio + caption
|
|
1209
|
-
- `RadioCaptionList` — list of `RadioCaption`
|
|
1210
|
-
- `RadioHgroup` — radio + heading group
|
|
1211
|
-
- `RadioHgroupList` — list of `RadioHgroup`
|
|
1212
|
-
- `RadioStep` — radio step with progress
|
|
1213
|
-
- `RadioSteps` — list of `RadioStep`
|
|
1214
|
-
- `ToggleCaption` — toggle switch + caption
|
|
1215
|
-
- `ToggleCaptionList` — list of `ToggleCaption`
|
|
1216
|
-
- `ToggleHgroup` — toggle switch + heading group
|
|
1217
|
-
- `ToggleHgroupList` — list of `ToggleHgroup`
|
|
1218
|
-
|
|
1219
|
-
### CheckCaption / RadioCaption / ToggleCaption
|
|
1220
|
-
|
|
1221
|
-
Primary use: single selectable item with a short label.
|
|
1222
|
-
|
|
1223
|
-
Common props:
|
|
1224
|
-
|
|
1225
|
-
- `Caption.text`
|
|
1226
|
-
|
|
1227
|
-
Example:
|
|
1228
|
-
|
|
1229
|
-
```js
|
|
1230
|
-
CheckCaption: {
|
|
1231
|
-
Caption: {
|
|
1232
|
-
text: "Accept terms";
|
|
1233
|
-
}
|
|
1234
|
-
}
|
|
1235
|
-
RadioCaption: {
|
|
1236
|
-
Caption: {
|
|
1237
|
-
text: "Option A";
|
|
1238
|
-
}
|
|
1239
|
-
}
|
|
1240
|
-
ToggleCaption: {
|
|
1241
|
-
Caption: {
|
|
1242
|
-
text: "Enable notifications";
|
|
1243
|
-
}
|
|
1244
|
-
}
|
|
1245
|
-
```
|
|
1246
|
-
|
|
1247
|
-
### CheckCaptionList / RadioCaptionList / ToggleCaptionList
|
|
1248
|
-
|
|
1249
|
-
Primary use: vertically stacked list of caption-labeled inputs.
|
|
1250
|
-
|
|
1251
|
-
Common props:
|
|
1252
|
-
|
|
1253
|
-
- `children` (array of caption objects)
|
|
1254
|
-
|
|
1255
|
-
Example:
|
|
1256
|
-
|
|
1257
|
-
```js
|
|
1258
|
-
CheckCaptionList: {
|
|
1259
|
-
children: [
|
|
1260
|
-
{ Caption: { text: "Option 1" } },
|
|
1261
|
-
{ Caption: { text: "Option 2" } },
|
|
1262
|
-
];
|
|
1263
|
-
}
|
|
1264
|
-
```
|
|
1265
|
-
|
|
1266
|
-
### CheckHgroup / RadioHgroup / ToggleHgroup
|
|
1267
|
-
|
|
1268
|
-
Primary use: selectable item with a title and description.
|
|
1269
|
-
|
|
1270
|
-
Common props:
|
|
1271
|
-
|
|
1272
|
-
- `H.tag` (default: `'h6'`), `H.text`
|
|
1273
|
-
- `P.text`
|
|
1274
|
-
|
|
1275
|
-
Example:
|
|
1276
|
-
|
|
1277
|
-
```js
|
|
1278
|
-
CheckHgroup: {
|
|
1279
|
-
H: { text: 'Weekly digest' },
|
|
1280
|
-
P: { text: 'Receive a summary every Monday' }
|
|
1281
|
-
}
|
|
1282
|
-
```
|
|
1283
|
-
|
|
1284
|
-
### CheckHgroupList / RadioHgroupList / ToggleHgroupList
|
|
1285
|
-
|
|
1286
|
-
Primary use: vertically stacked list of heading-group inputs.
|
|
1287
|
-
|
|
1288
|
-
Common props:
|
|
1289
|
-
|
|
1290
|
-
- `children` (array of hgroup objects)
|
|
1291
|
-
|
|
1292
|
-
Example:
|
|
1293
|
-
|
|
1294
|
-
```js
|
|
1295
|
-
ToggleHgroupList: {
|
|
1296
|
-
children: [
|
|
1297
|
-
{ H: { text: "Email alerts" }, P: { text: "Sent daily" } },
|
|
1298
|
-
{ H: { text: "Push notifications" }, P: { text: "Instant" } },
|
|
1299
|
-
];
|
|
1300
|
-
}
|
|
1301
|
-
```
|
|
1302
|
-
|
|
1303
|
-
### CheckStep / RadioStep
|
|
1304
|
-
|
|
1305
|
-
Primary use: single step in a stepper flow, showing completion state.
|
|
1306
|
-
|
|
1307
|
-
Common props:
|
|
1308
|
-
|
|
1309
|
-
- `H6.text` (step label)
|
|
1310
|
-
- `Progress.value` (0 = incomplete, 1 = complete)
|
|
1311
|
-
- `Icon.name` (`'check'` for CheckStep)
|
|
1312
|
-
- `RadioMark.theme` (`'field'` or `'primary'`)
|
|
1313
|
-
|
|
1314
|
-
Example:
|
|
1315
|
-
|
|
1316
|
-
```js
|
|
1317
|
-
CheckStep: {
|
|
1318
|
-
H6: { text: 'Verify email' },
|
|
1319
|
-
Progress: { value: 1 }
|
|
1320
|
-
}
|
|
1321
|
-
```
|
|
1322
|
-
|
|
1323
|
-
### CheckStepSet / RadioSteps
|
|
1324
|
-
|
|
1325
|
-
Primary use: a full stepper with multiple labeled steps.
|
|
1326
|
-
|
|
1327
|
-
Common props:
|
|
1328
|
-
|
|
1329
|
-
- `children` (array of step objects)
|
|
1330
|
-
|
|
1331
|
-
Example:
|
|
1332
|
-
|
|
1333
|
-
```js
|
|
1334
|
-
RadioSteps: {
|
|
1335
|
-
children: [
|
|
1336
|
-
{ H6: { text: "Account info" }, RadioMark: { isActive: true } },
|
|
1337
|
-
{ H6: { text: "Payment" } },
|
|
1338
|
-
{ H6: { text: "Confirm" } },
|
|
1339
|
-
];
|
|
1340
|
-
}
|
|
1341
|
-
```
|
|
1342
|
-
|
|
1343
|
-
### RadioMark
|
|
1344
|
-
|
|
1345
|
-
Primary use: standalone custom radio circle visual.
|
|
1346
|
-
|
|
1347
|
-
Common props:
|
|
1348
|
-
|
|
1349
|
-
- `theme` (default: `'primary'`)
|
|
1350
|
-
- `padding`, `round`
|
|
1351
|
-
|
|
1352
|
-
Example:
|
|
1353
|
-
|
|
1354
|
-
```js
|
|
1355
|
-
RadioMark: {
|
|
1356
|
-
theme: "primary";
|
|
1357
|
-
}
|
|
1358
|
-
```
|
|
1359
|
-
|
|
1360
|
-
---
|
|
1361
|
-
|
|
1362
|
-
## Progress & Status
|
|
1363
|
-
|
|
1364
|
-
- `Progress` — linear progress bar
|
|
1365
|
-
- `CircleProgress` — circular progress indicator
|
|
1366
|
-
- `ValueProgress` — progress bar + unit/value
|
|
1367
|
-
- `ValueCircleProgress` — circular progress + centered value
|
|
1368
|
-
- `ProgressStepSet` — multiple progress bars for steps
|
|
1369
|
-
- `HgroupSteps` — heading group with step progress bars
|
|
1370
|
-
- `StatusDot` — small colored status dot
|
|
1371
|
-
- `Stars` — 5-star rating
|
|
1372
|
-
|
|
1373
|
-
### Progress
|
|
1374
|
-
|
|
1375
|
-
Primary use: linear progress bar showing task or load completion.
|
|
1376
|
-
|
|
1377
|
-
Common props:
|
|
1378
|
-
|
|
1379
|
-
- `value` (0–1)
|
|
1380
|
-
- `height`, `minWidth`, `round`
|
|
1381
|
-
- `theme`
|
|
1382
|
-
|
|
1383
|
-
Example:
|
|
1384
|
-
|
|
1385
|
-
```js
|
|
1386
|
-
Progress: { value: 0.6, height: 'X', round: 'Y' }
|
|
1387
|
-
```
|
|
1388
|
-
|
|
1389
|
-
### CircleProgress
|
|
1390
|
-
|
|
1391
|
-
Primary use: circular progress ring.
|
|
1392
|
-
|
|
1393
|
-
Common props:
|
|
1394
|
-
|
|
1395
|
-
- `value` (0–1)
|
|
1396
|
-
- `round: '100%'`
|
|
1397
|
-
- `boxSize`
|
|
1398
|
-
|
|
1399
|
-
Example:
|
|
1400
|
-
|
|
1401
|
-
```js
|
|
1402
|
-
CircleProgress: { value: 0.73, boxSize: 'D' }
|
|
1403
|
-
```
|
|
1404
|
-
|
|
1405
|
-
### ValueProgress
|
|
1406
|
-
|
|
1407
|
-
Primary use: progress bar with a readable label showing the current value.
|
|
1408
|
-
|
|
1409
|
-
Common props:
|
|
1410
|
-
|
|
1411
|
-
- `Progress.value`
|
|
1412
|
-
- `UnitValue.Value.text`, `UnitValue.Unit.text`
|
|
1413
|
-
|
|
1414
|
-
Example:
|
|
1415
|
-
|
|
1416
|
-
```js
|
|
1417
|
-
ValueProgress: {
|
|
1418
|
-
Progress: { value: 0.73 },
|
|
1419
|
-
UnitValue: { Value: { text: '73' }, Unit: { text: '%' } }
|
|
1420
|
-
}
|
|
1421
|
-
```
|
|
1422
|
-
|
|
1423
|
-
### ValueCircleProgress
|
|
1424
|
-
|
|
1425
|
-
Primary use: circular progress with value displayed in the center.
|
|
1426
|
-
|
|
1427
|
-
Common props:
|
|
1428
|
-
|
|
1429
|
-
- `CircleProgress.value`
|
|
1430
|
-
- `UnitValue.Value.text`, `UnitValue.Unit.text`
|
|
1431
|
-
|
|
1432
|
-
Example:
|
|
1433
|
-
|
|
1434
|
-
```js
|
|
1435
|
-
ValueCircleProgress: {
|
|
1436
|
-
CircleProgress: { value: 0.5 },
|
|
1437
|
-
UnitValue: { Value: { text: '50' }, Unit: { text: '%' } }
|
|
1438
|
-
}
|
|
1439
|
-
```
|
|
1440
|
-
|
|
1441
|
-
### ProgressStepSet
|
|
1442
|
-
|
|
1443
|
-
Primary use: row of progress bars visualizing multi-step completion.
|
|
1444
|
-
|
|
1445
|
-
Common props:
|
|
1446
|
-
|
|
1447
|
-
- `children` (array of `{ value }`)
|
|
1448
|
-
|
|
1449
|
-
Example:
|
|
1450
|
-
|
|
1451
|
-
```js
|
|
1452
|
-
ProgressStepSet: {
|
|
1453
|
-
children: [{ value: 1 }, { value: 0.4 }, { value: 0 }];
|
|
1454
|
-
}
|
|
1455
|
-
```
|
|
1456
|
-
|
|
1457
|
-
### HgroupSteps
|
|
1458
|
-
|
|
1459
|
-
Primary use: heading group above a step progress bar set.
|
|
1460
|
-
|
|
1461
|
-
Common props:
|
|
1462
|
-
|
|
1463
|
-
- `H.text`, `P.text`
|
|
1464
|
-
- `ProgressStepSet.children`
|
|
1465
|
-
|
|
1466
|
-
Example:
|
|
1467
|
-
|
|
1468
|
-
```js
|
|
1469
|
-
HgroupSteps: {
|
|
1470
|
-
H: { text: 'Getting started' },
|
|
1471
|
-
P: { text: 'Complete these steps' },
|
|
1472
|
-
ProgressStepSet: {
|
|
1473
|
-
children: [{ value: 1 }, { value: 0.5 }, { value: 0 }]
|
|
1474
|
-
}
|
|
1475
|
-
}
|
|
1476
|
-
```
|
|
1477
|
-
|
|
1478
|
-
### StatusDot
|
|
1479
|
-
|
|
1480
|
-
Primary use: small indicator dot for online/offline or state.
|
|
1481
|
-
|
|
1482
|
-
Common props:
|
|
1483
|
-
|
|
1484
|
-
- `theme` (default: `'success'`)
|
|
1485
|
-
- `widthRange`, `round: '100%'`
|
|
1486
|
-
|
|
1487
|
-
Example:
|
|
1488
|
-
|
|
1489
|
-
```js
|
|
1490
|
-
StatusDot: {
|
|
1491
|
-
theme: "success";
|
|
1492
|
-
}
|
|
1493
|
-
```
|
|
1494
|
-
|
|
1495
|
-
### Stars
|
|
1496
|
-
|
|
1497
|
-
Primary use: read-only 5-star rating display.
|
|
1498
|
-
|
|
1499
|
-
Common props:
|
|
1500
|
-
|
|
1501
|
-
- `children` (5 `Icon` objects with `name: 'star'`)
|
|
1502
|
-
|
|
1503
|
-
Example:
|
|
1504
|
-
|
|
1505
|
-
```js
|
|
1506
|
-
Stars: {
|
|
1507
|
-
children: [
|
|
1508
|
-
{ name: "star" },
|
|
1509
|
-
{ name: "star" },
|
|
1510
|
-
{ name: "star" },
|
|
1511
|
-
{ name: "star" },
|
|
1512
|
-
{ name: "star" },
|
|
1513
|
-
];
|
|
1514
|
-
}
|
|
1515
|
-
```
|
|
1516
|
-
|
|
1517
|
-
---
|
|
1518
|
-
|
|
1519
|
-
## Navigation & Links
|
|
1520
|
-
|
|
1521
|
-
- `Link` — hyperlink
|
|
1522
|
-
- `LinkSet` — navigation list of links
|
|
1523
|
-
- `LinkHgroup` — heading group + link
|
|
1524
|
-
- `LinkParagraph` — paragraph + inline link
|
|
1525
|
-
- `IcontextLink` — icon + text link (see [Composition](#composition))
|
|
1526
|
-
- `Breadcrumb` — breadcrumb path
|
|
1527
|
-
- `NavigationDots` — dot-based carousel indicator
|
|
1528
|
-
- `NavigationArrows` — previous/next arrow buttons
|
|
1529
|
-
- `Pagination` — numbered page controls
|
|
1530
|
-
- `TabSet` — tab bar navigation
|
|
1531
|
-
- `ScrollableList` — scrollable menu list
|
|
1532
|
-
|
|
1533
|
-
### Link
|
|
1534
|
-
|
|
1535
|
-
Primary use: plain hyperlink.
|
|
1536
|
-
|
|
1537
|
-
Common props:
|
|
1538
|
-
|
|
1539
|
-
- `text`
|
|
1540
|
-
- `href`, `target`, `rel`
|
|
1541
|
-
- `color`, `textDecoration`
|
|
1542
|
-
|
|
1543
|
-
Example:
|
|
1544
|
-
|
|
1545
|
-
```js
|
|
1546
|
-
Link: { text: 'Read more', href: '/article' }
|
|
1547
|
-
```
|
|
1548
|
-
|
|
1549
|
-
### LinkSet
|
|
1550
|
-
|
|
1551
|
-
Primary use: nav menu of links.
|
|
1552
|
-
|
|
1553
|
-
Common props:
|
|
1554
|
-
|
|
1555
|
-
- `tag: 'nav'`
|
|
1556
|
-
- `childExtend: 'Link'`
|
|
1557
|
-
- `children` (array of link objects)
|
|
1558
|
-
|
|
1559
|
-
Example:
|
|
1560
|
-
|
|
1561
|
-
```js
|
|
1562
|
-
LinkSet: {
|
|
1563
|
-
tag: 'nav',
|
|
1564
|
-
children: [
|
|
1565
|
-
{ text: 'Home', href: '/' },
|
|
1566
|
-
{ text: 'Docs', href: '/docs' }
|
|
1567
|
-
]
|
|
1568
|
-
}
|
|
1569
|
-
```
|
|
1570
|
-
|
|
1571
|
-
### LinkHgroup
|
|
1572
|
-
|
|
1573
|
-
Primary use: heading group with a descriptive link below.
|
|
1574
|
-
|
|
1575
|
-
Common props:
|
|
1576
|
-
|
|
1577
|
-
- `H.text`, `P.text`
|
|
1578
|
-
- `Link.text`, `Link.href`
|
|
1579
|
-
|
|
1580
|
-
Example:
|
|
1581
|
-
|
|
1582
|
-
```js
|
|
1583
|
-
LinkHgroup: {
|
|
1584
|
-
H: { text: 'Tbilisi' },
|
|
1585
|
-
P: { text: 'Georgia' },
|
|
1586
|
-
Link: { text: 'Get directions', href: '#' }
|
|
1587
|
-
}
|
|
1588
|
-
```
|
|
1589
|
-
|
|
1590
|
-
### LinkParagraph
|
|
1591
|
-
|
|
1592
|
-
Primary use: paragraph with an inline clickable link.
|
|
1593
|
-
|
|
1594
|
-
Common props:
|
|
1595
|
-
|
|
1596
|
-
- `P.text`
|
|
1597
|
-
- `Link.text`, `Link.href`, `Link.textDecoration`
|
|
1598
|
-
|
|
1599
|
-
Example:
|
|
1600
|
-
|
|
1601
|
-
```js
|
|
1602
|
-
LinkParagraph: {
|
|
1603
|
-
P: { text: 'By continuing you agree to our' },
|
|
1604
|
-
Link: { text: 'Privacy Policy', href: '/privacy', textDecoration: 'underline' }
|
|
1605
|
-
}
|
|
1606
|
-
```
|
|
1607
|
-
|
|
1608
|
-
### Breadcrumb
|
|
1609
|
-
|
|
1610
|
-
Primary use: path navigation for hierarchical pages.
|
|
1611
|
-
|
|
1612
|
-
Common props:
|
|
1613
|
-
|
|
1614
|
-
- `tag: 'nav'`
|
|
1615
|
-
- `childExtend: 'Link'`
|
|
1616
|
-
- children are typically derived from route state
|
|
1617
|
-
|
|
1618
|
-
Example:
|
|
1619
|
-
|
|
1620
|
-
```js
|
|
1621
|
-
Breadcrumb: {
|
|
1622
|
-
tag: "nav";
|
|
1623
|
-
}
|
|
1624
|
-
```
|
|
1625
|
-
|
|
1626
|
-
### NavigationDots
|
|
1627
|
-
|
|
1628
|
-
Primary use: dot indicators for carousels or sliders.
|
|
1629
|
-
|
|
1630
|
-
Common props:
|
|
1631
|
-
|
|
1632
|
-
- `children` (each dot object, active one has `isActive: true`)
|
|
1633
|
-
|
|
1634
|
-
Example:
|
|
1635
|
-
|
|
1636
|
-
```js
|
|
1637
|
-
NavigationDots: {
|
|
1638
|
-
children: [{}, { isActive: true }, {}];
|
|
1639
|
-
}
|
|
1640
|
-
```
|
|
1641
|
-
|
|
1642
|
-
### NavigationArrows
|
|
1643
|
-
|
|
1644
|
-
Primary use: left/right arrow buttons for carousels.
|
|
1645
|
-
|
|
1646
|
-
Common props:
|
|
1647
|
-
|
|
1648
|
-
- `childExtend: 'IconButton'`
|
|
1649
|
-
- `children` (chevron left/right icons)
|
|
1650
|
-
|
|
1651
|
-
Example:
|
|
1652
|
-
|
|
1653
|
-
```js
|
|
1654
|
-
NavigationArrows: {
|
|
1655
|
-
children: [
|
|
1656
|
-
{ Icon: { name: "chevronLeft" } },
|
|
1657
|
-
{ Icon: { name: "chevronRight" } },
|
|
1658
|
-
];
|
|
1659
|
-
}
|
|
1660
|
-
```
|
|
1661
|
-
|
|
1662
|
-
### Pagination
|
|
1663
|
-
|
|
1664
|
-
Primary use: numbered page navigation.
|
|
1665
|
-
|
|
1666
|
-
Common props:
|
|
1667
|
-
|
|
1668
|
-
- `Left.Icon.name`, `Right.Icon.name`
|
|
1669
|
-
- `Flex.children` (numbered buttons, active one has `isActive: true`)
|
|
1670
|
-
|
|
1671
|
-
Example:
|
|
1672
|
-
|
|
1673
|
-
```js
|
|
1674
|
-
Pagination: {
|
|
1675
|
-
Flex: {
|
|
1676
|
-
children: [{ text: "1", isActive: true }, { text: "2" }, { text: "3" }];
|
|
1677
|
-
}
|
|
1678
|
-
}
|
|
1679
|
-
```
|
|
1680
|
-
|
|
1681
|
-
### TabSet
|
|
1682
|
-
|
|
1683
|
-
Primary use: horizontal tab bar.
|
|
1684
|
-
|
|
1685
|
-
Common props:
|
|
1686
|
-
|
|
1687
|
-
- `childExtend: 'Button'`
|
|
1688
|
-
- `children` (tab label objects, active one has `isActive: true`)
|
|
1689
|
-
|
|
1690
|
-
Example:
|
|
1691
|
-
|
|
1692
|
-
```js
|
|
1693
|
-
TabSet: {
|
|
1694
|
-
children: [
|
|
1695
|
-
{ text: "Overview", isActive: true },
|
|
1696
|
-
{ text: "Details" },
|
|
1697
|
-
{ text: "Reviews" },
|
|
1698
|
-
];
|
|
1699
|
-
}
|
|
1700
|
-
```
|
|
1701
|
-
|
|
1702
|
-
### ScrollableList
|
|
1703
|
-
|
|
1704
|
-
Primary use: vertically scrollable menu or option list.
|
|
1705
|
-
|
|
1706
|
-
Common props:
|
|
1707
|
-
|
|
1708
|
-
- `tag: 'nav'`
|
|
1709
|
-
- `Flex.maxHeight`
|
|
1710
|
-
- `Flex.children` (list of button items)
|
|
1711
|
-
|
|
1712
|
-
Example:
|
|
1713
|
-
|
|
1714
|
-
```js
|
|
1715
|
-
ScrollableList: {
|
|
1716
|
-
Flex: {
|
|
1717
|
-
maxHeight: 'D2',
|
|
1718
|
-
children: [
|
|
1719
|
-
{ text: 'Item One' },
|
|
1720
|
-
{ text: 'Item Two' }
|
|
1721
|
-
]
|
|
1722
|
-
}
|
|
1723
|
-
}
|
|
1724
|
-
```
|
|
1725
|
-
|
|
1726
|
-
---
|
|
1727
|
-
|
|
1728
|
-
## Overlay & Disclosure
|
|
1729
|
-
|
|
1730
|
-
- `Modal` — modal dialog container
|
|
1731
|
-
- `MessageModal` — modal with a message heading and body
|
|
1732
|
-
- `Accordion` — expandable/collapsible section
|
|
1733
|
-
|
|
1734
|
-
### Modal
|
|
1735
|
-
|
|
1736
|
-
Primary use: dialog overlay container.
|
|
1737
|
-
|
|
1738
|
-
Common props:
|
|
1739
|
-
|
|
1740
|
-
- `Hgroup.H.text` (title), `Hgroup.P.text` (subtitle)
|
|
1741
|
-
- `IconButton.Icon.name` (`'x'` for close button)
|
|
1742
|
-
- `theme: 'dialog'`
|
|
1743
|
-
|
|
1744
|
-
Example:
|
|
1745
|
-
|
|
1746
|
-
```js
|
|
1747
|
-
Modal: {
|
|
1748
|
-
Hgroup: { H: { text: 'Confirm action' } },
|
|
1749
|
-
IconButton: { Icon: { name: 'x' } }
|
|
1750
|
-
}
|
|
1751
|
-
```
|
|
1752
|
-
|
|
1753
|
-
### MessageModal
|
|
1754
|
-
|
|
1755
|
-
Primary use: simple informational modal with a title and body text.
|
|
1756
|
-
|
|
1757
|
-
Common props:
|
|
1758
|
-
|
|
1759
|
-
- `Hgroup.H.text`
|
|
1760
|
-
- `Hgroup.P.text` (message body)
|
|
1761
|
-
|
|
1762
|
-
Example:
|
|
1763
|
-
|
|
1764
|
-
```js
|
|
1765
|
-
MessageModal: {
|
|
1766
|
-
Hgroup: {
|
|
1767
|
-
H: { text: 'Account deleted' },
|
|
1768
|
-
P: { text: 'Your account has been permanently removed.' }
|
|
1769
|
-
}
|
|
1770
|
-
}
|
|
1771
|
-
```
|
|
1772
|
-
|
|
1773
|
-
### Accordion
|
|
1774
|
-
|
|
1775
|
-
Primary use: expandable section that toggles body content visibility.
|
|
1776
|
-
|
|
1777
|
-
Common props:
|
|
1778
|
-
|
|
1779
|
-
- `ButtonParagraph.P.text` (header label)
|
|
1780
|
-
- `P.text` (body content, shown when expanded)
|
|
1781
|
-
- `state.activeAccordion` (boolean)
|
|
1782
|
-
|
|
1783
|
-
Example:
|
|
1784
|
-
|
|
1785
|
-
```js
|
|
1786
|
-
Accordion: {
|
|
1787
|
-
ButtonParagraph: { P: { text: 'How does billing work?' } },
|
|
1788
|
-
P: { text: 'You are billed monthly…' }
|
|
1789
|
-
}
|
|
1790
|
-
```
|
|
1791
|
-
|
|
1792
|
-
---
|
|
1793
|
-
|
|
1794
|
-
## Data display
|
|
1795
|
-
|
|
1796
|
-
- `UnitValue` — unit + value pair (price, stat, etc.)
|
|
1797
|
-
- `ValueHeading` — heading with trailing unit/value (see [Composition](#composition))
|
|
1798
|
-
- `BulletCaption` — caption with colored bullet dot
|
|
1799
|
-
- `StoryCard` — large image card with overlaid content
|
|
1800
|
-
- `ListingItem` — post/listing row item
|
|
1801
|
-
- `PackageFeatureItem` — feature row in a pricing card
|
|
1802
|
-
- `UserNavbar` — user profile row in navbar
|
|
1803
|
-
- `LayerSimple` — card with title and checklist
|
|
1804
|
-
- `LoadingGif` — animated loading indicator
|
|
1805
|
-
|
|
1806
|
-
### UnitValue
|
|
1807
|
-
|
|
1808
|
-
Primary use: display a numeric value with its unit (price, percentage, stat).
|
|
1809
|
-
|
|
1810
|
-
Common props:
|
|
1811
|
-
|
|
1812
|
-
- `Unit.text` (e.g. `'$'`, `'%'`, `'km'`)
|
|
1813
|
-
- `Value.text`
|
|
1814
|
-
- `flow` (`'row'` or `'row-reverse'`)
|
|
1815
|
-
|
|
1816
|
-
Example:
|
|
1817
|
-
|
|
1818
|
-
```js
|
|
1819
|
-
UnitValue: {
|
|
1820
|
-
Unit: { text: '$' },
|
|
1821
|
-
Value: { text: '99' }
|
|
1822
|
-
}
|
|
1823
|
-
```
|
|
1824
|
-
|
|
1825
|
-
### BulletCaption
|
|
1826
|
-
|
|
1827
|
-
Primary use: caption with a colored dot, used for legends and labels.
|
|
1828
|
-
|
|
1829
|
-
Common props:
|
|
1830
|
-
|
|
1831
|
-
- `text`
|
|
1832
|
-
- `:before.background` (dot color)
|
|
1833
|
-
|
|
1834
|
-
Example:
|
|
1835
|
-
|
|
1836
|
-
```js
|
|
1837
|
-
BulletCaption: {
|
|
1838
|
-
text: 'Orders',
|
|
1839
|
-
':before': { background: 'blue' }
|
|
1840
|
-
}
|
|
1841
|
-
```
|
|
1842
|
-
|
|
1843
|
-
### StoryCard
|
|
1844
|
-
|
|
1845
|
-
Primary use: full-bleed image card with an overlaid title and step progress.
|
|
1846
|
-
|
|
1847
|
-
Common props:
|
|
1848
|
-
|
|
1849
|
-
- `Img.src`, `Img.boxSize`
|
|
1850
|
-
- `Icon.icon`
|
|
1851
|
-
- `HgroupSteps` (overlay content)
|
|
1852
|
-
|
|
1853
|
-
Example:
|
|
1854
|
-
|
|
1855
|
-
```js
|
|
1856
|
-
StoryCard: {
|
|
1857
|
-
Img: { src: '/story.jpg', boxSize: '100%' },
|
|
1858
|
-
HgroupSteps: {
|
|
1859
|
-
H: { text: 'Chapter 1' }
|
|
1860
|
-
}
|
|
1861
|
-
}
|
|
1862
|
-
```
|
|
1863
|
-
|
|
1864
|
-
### ListingItem
|
|
1865
|
-
|
|
1866
|
-
Primary use: upvotable post or listing row.
|
|
1867
|
-
|
|
1868
|
-
Common props:
|
|
1869
|
-
|
|
1870
|
-
- `IconText.Icon.name` (vote icon)
|
|
1871
|
-
- `H.text` (title)
|
|
1872
|
-
- `P.text` (metadata)
|
|
1873
|
-
|
|
1874
|
-
Example:
|
|
1875
|
-
|
|
1876
|
-
```js
|
|
1877
|
-
ListingItem: {
|
|
1878
|
-
H: { text: 'Flexbox in the editor' },
|
|
1879
|
-
P: { text: '42 comments · 3 hours ago' }
|
|
1880
|
-
}
|
|
1881
|
-
```
|
|
1882
|
-
|
|
1883
|
-
### PackageFeatureItem
|
|
1884
|
-
|
|
1885
|
-
Primary use: single checkbox row inside a pricing/package card.
|
|
1886
|
-
|
|
1887
|
-
Common props:
|
|
1888
|
-
|
|
1889
|
-
- `Input.type: 'checkbox'`
|
|
1890
|
-
- `Icon.name` (feature icon)
|
|
1891
|
-
- `H.text`, `P.text`
|
|
1892
|
-
|
|
1893
|
-
Example:
|
|
1894
|
-
|
|
1895
|
-
```js
|
|
1896
|
-
PackageFeatureItem: {
|
|
1897
|
-
Icon: { name: 'check' },
|
|
1898
|
-
H: { text: 'Unlimited exports' }
|
|
1899
|
-
}
|
|
1900
|
-
```
|
|
1901
|
-
|
|
1902
|
-
### UserNavbar
|
|
1903
|
-
|
|
1904
|
-
Primary use: user identity row in a sidebar or top navbar.
|
|
1905
|
-
|
|
1906
|
-
Common props:
|
|
1907
|
-
|
|
1908
|
-
- `AvatarStatus` (avatar with status dot)
|
|
1909
|
-
- `H.text` (user name)
|
|
1910
|
-
- `P.text` (role or status)
|
|
1911
|
-
- `IconButtonSet` (action buttons)
|
|
1912
|
-
|
|
1913
|
-
Example:
|
|
1914
|
-
|
|
1915
|
-
```js
|
|
1916
|
-
UserNavbar: {
|
|
1917
|
-
H: { text: 'Nika Tomadze' },
|
|
1918
|
-
P: { text: 'Product Designer' }
|
|
1919
|
-
}
|
|
1920
|
-
```
|
|
1921
|
-
|
|
1922
|
-
### LayerSimple
|
|
1923
|
-
|
|
1924
|
-
Primary use: card with a title and a bulleted checklist.
|
|
1925
|
-
|
|
1926
|
-
Common props:
|
|
1927
|
-
|
|
1928
|
-
- `Title.text`
|
|
1929
|
-
- `Flex.children` (each with `Icon.icon` and `Span.text`)
|
|
1930
|
-
|
|
1931
|
-
Example:
|
|
1932
|
-
|
|
1933
|
-
```js
|
|
1934
|
-
LayerSimple: {
|
|
1935
|
-
Title: { text: 'Today' },
|
|
1936
|
-
Flex: {
|
|
1937
|
-
children: [
|
|
1938
|
-
{ Icon: { icon: 'check' }, Span: { text: 'Morning standup' } }
|
|
1939
|
-
]
|
|
1940
|
-
}
|
|
1941
|
-
}
|
|
1942
|
-
```
|
|
1943
|
-
|
|
1944
|
-
### LoadingGif
|
|
1945
|
-
|
|
1946
|
-
Primary use: animated loading spinner.
|
|
1947
|
-
|
|
1948
|
-
Common props:
|
|
1949
|
-
|
|
1950
|
-
- `src` (default: Symbols loading asset)
|
|
1951
|
-
- `opacity`, `boxSize`
|
|
1952
|
-
|
|
1953
|
-
Example:
|
|
1954
|
-
|
|
1955
|
-
```js
|
|
1956
|
-
LoadingGif: { opacity: '.5', boxSize: 'B' }
|
|
1957
|
-
```
|
|
1958
|
-
|
|
1959
|
-
---
|
|
1960
|
-
|
|
1961
|
-
## Misc
|
|
1962
|
-
|
|
1963
|
-
- `Scrollbar` — custom scrollbar track with navigation
|
|
1964
|
-
- `NotificationCounter` (see [Badge & Notification](#badge--notification))
|
|
1965
|
-
|
|
1966
|
-
### Scrollbar
|
|
1967
|
-
|
|
1968
|
-
Primary use: custom scrollbar track with optional arrow navigation.
|
|
1969
|
-
|
|
1970
|
-
Common props:
|
|
1971
|
-
|
|
1972
|
-
- `TrackContainer.Track` (scroll thumb)
|
|
1973
|
-
- `NavigationArrows`
|
|
1974
|
-
|
|
1975
|
-
Example:
|
|
1976
|
-
|
|
1977
|
-
```js
|
|
1978
|
-
Scrollbar: {
|
|
1979
|
-
NavigationArrows: {
|
|
1980
|
-
}
|
|
1981
|
-
}
|
|
1982
|
-
```
|
|
1983
|
-
|
|
1984
|
-
---
|
|
1985
|
-
|
|
1986
|
-
## Cross-cutting props
|
|
1987
|
-
|
|
1988
|
-
All default components inherit the same cross-cutting capabilities as built-in atoms:
|
|
1989
|
-
|
|
1990
|
-
- `@media` keys (e.g. `@mobile`)
|
|
1991
|
-
- pseudo selectors (e.g. `:hover`, `:focus`)
|
|
1992
|
-
- conditional cases (e.g. `.isActive`, `!isDisabled`)
|
|
1993
|
-
- `childProps` for one-level child overrides
|
|
1994
|
-
- `children` arrays or nested object trees
|
|
1995
|
-
- `onInit`, `onRender`, `onUpdate`, `onStateUpdate`
|
|
1996
|
-
- `state` for local component state
|
|
1997
|
-
|
|
1998
|
-
---
|
|
1999
|
-
|
|
2000
|
-
## Supplemental
|
|
2001
|
-
|
|
2002
|
-
Conventions are merged into [CLAUDE.md](CLAUDE.md). Built-in atoms are documented in [BUILT_IN_COMPONENTS.md](BUILT_IN_COMPONENTS.md).
|