@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.
@@ -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).