@sakaniui/react 0.8.9 → 0.8.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,8 +1,7 @@
1
1
  {
2
- "$schema": "https://www.sakaniui.com/manifest.schema.json",
3
- "schemaVersion": 3,
2
+ "schemaVersion": 5,
4
3
  "name": "@sakaniui/react",
5
- "version": "0.8.9",
4
+ "version": "0.8.11",
6
5
  "description": "Machine-readable contract of the SakaniUI React library, generated from its TypeScript source.",
7
6
  "docs": "https://www.sakaniui.com",
8
7
  "guide": "https://www.sakaniui.com/llms-full.txt",
@@ -24,14 +23,176 @@
24
23
  "@sakaniui/react/icons": "Tabler icons: IconName and IconNameFilled, one module each (5184 outline, 1054 filled)."
25
24
  },
26
25
  "conventions": {
27
- "version": "This manifest describes @sakaniui/react@0.8.9. Each component has `since`, the first release that contained it: if the project has an older version installed, a component or prop that is newer than that does not exist there.",
26
+ "version": "This manifest describes @sakaniui/react@0.8.11. Each component has `since`, the first release that contained it; a prop added later has its own `since`, and a value added later is listed in the prop's `valuesSince`. If the project has an older version installed, anything newer than that does not exist there.",
28
27
  "acceptsNativeProps": "Components forward native HTML attributes (className, style, aria-*, event handlers) to their root element unless a prop says otherwise; only the props that are specific to SakaniUI are listed here.",
29
28
  "accessibleName": "When `contract.requiresAccessibleName` is true, a required prop (aria-label, aria-labelledby or an alt text) is the only thing that names the control or image. Do not omit it.",
30
29
  "tokens": "Use only the token names listed under `tokens`. Colour tokens follow the theme (the `.dark` class flips them); do not hard-code colours.",
31
30
  "icons": "Icon props take the component itself (IconSettings), not an element (<IconSettings />). Only names in icon-index.json exist; search them (MCP: search_icons) instead of guessing.",
32
31
  "examples": "Each component has `example`: its imports and the element with every required prop filled in, type-checked against this build. Start from it.",
32
+ "shapes": "A prop with a `shape` takes an object (collection \"object\") or an array of objects (collection \"array\") with exactly those fields; `required` fields must be present. In a generic shape (`typeParameters: [\"T\"]`) T is the type of your own data: `key: keyof T & string` means the key must be a field of your row type. `recipes` hold patterns the types alone do not teach.",
33
33
  "literals": "Prop `values` keep their real type: a number is a number (columns: 2), a string is a string (\"md\")."
34
34
  },
35
+ "nativeAttributes": [
36
+ "about",
37
+ "accept",
38
+ "acceptCharset",
39
+ "accessKey",
40
+ "action",
41
+ "allowFullScreen",
42
+ "allowTransparency",
43
+ "alt",
44
+ "as",
45
+ "async",
46
+ "autoCapitalize",
47
+ "autoComplete",
48
+ "autoCorrect",
49
+ "autoFocus",
50
+ "autoPlay",
51
+ "autoSave",
52
+ "capture",
53
+ "cellPadding",
54
+ "cellSpacing",
55
+ "challenge",
56
+ "charSet",
57
+ "checked",
58
+ "children",
59
+ "cite",
60
+ "classID",
61
+ "className",
62
+ "colSpan",
63
+ "color",
64
+ "cols",
65
+ "content",
66
+ "contentEditable",
67
+ "contextMenu",
68
+ "controls",
69
+ "coords",
70
+ "crossOrigin",
71
+ "dangerouslySetInnerHTML",
72
+ "data",
73
+ "datatype",
74
+ "dateTime",
75
+ "default",
76
+ "defaultChecked",
77
+ "defaultValue",
78
+ "defer",
79
+ "dir",
80
+ "disabled",
81
+ "download",
82
+ "draggable",
83
+ "encType",
84
+ "enterKeyHint",
85
+ "exportparts",
86
+ "form",
87
+ "formAction",
88
+ "formEncType",
89
+ "formMethod",
90
+ "formNoValidate",
91
+ "formTarget",
92
+ "frameBorder",
93
+ "headers",
94
+ "height",
95
+ "hidden",
96
+ "high",
97
+ "href",
98
+ "hrefLang",
99
+ "htmlFor",
100
+ "httpEquiv",
101
+ "id",
102
+ "inert",
103
+ "inlist",
104
+ "inputMode",
105
+ "integrity",
106
+ "is",
107
+ "itemID",
108
+ "itemProp",
109
+ "itemRef",
110
+ "itemScope",
111
+ "itemType",
112
+ "keyParams",
113
+ "keyType",
114
+ "kind",
115
+ "label",
116
+ "lang",
117
+ "list",
118
+ "loop",
119
+ "low",
120
+ "manifest",
121
+ "marginHeight",
122
+ "marginWidth",
123
+ "max",
124
+ "maxLength",
125
+ "media",
126
+ "mediaGroup",
127
+ "method",
128
+ "min",
129
+ "minLength",
130
+ "multiple",
131
+ "muted",
132
+ "name",
133
+ "noValidate",
134
+ "nonce",
135
+ "open",
136
+ "optimum",
137
+ "part",
138
+ "pattern",
139
+ "placeholder",
140
+ "playsInline",
141
+ "popover",
142
+ "popoverTarget",
143
+ "popoverTargetAction",
144
+ "poster",
145
+ "prefix",
146
+ "preload",
147
+ "property",
148
+ "radioGroup",
149
+ "readOnly",
150
+ "rel",
151
+ "required",
152
+ "resource",
153
+ "results",
154
+ "rev",
155
+ "reversed",
156
+ "role",
157
+ "rowSpan",
158
+ "rows",
159
+ "sandbox",
160
+ "scope",
161
+ "scoped",
162
+ "scrolling",
163
+ "seamless",
164
+ "security",
165
+ "selected",
166
+ "shape",
167
+ "size",
168
+ "sizes",
169
+ "slot",
170
+ "span",
171
+ "spellCheck",
172
+ "src",
173
+ "srcDoc",
174
+ "srcLang",
175
+ "srcSet",
176
+ "start",
177
+ "step",
178
+ "style",
179
+ "summary",
180
+ "suppressContentEditableWarning",
181
+ "suppressHydrationWarning",
182
+ "tabIndex",
183
+ "target",
184
+ "title",
185
+ "translate",
186
+ "type",
187
+ "typeof",
188
+ "unselectable",
189
+ "useMap",
190
+ "value",
191
+ "vocab",
192
+ "width",
193
+ "wmode",
194
+ "wrap"
195
+ ],
35
196
  "tokens": {
36
197
  "count": 231,
37
198
  "groups": {
@@ -372,7 +533,52 @@
372
533
  {
373
534
  "name": "items",
374
535
  "type": "ActivityFeedItem[]",
375
- "required": true
536
+ "required": true,
537
+ "shape": {
538
+ "type": "ActivityFeedItem",
539
+ "collection": "array",
540
+ "fields": [
541
+ {
542
+ "name": "id",
543
+ "type": "string | number",
544
+ "required": false
545
+ },
546
+ {
547
+ "name": "actor",
548
+ "type": "string",
549
+ "required": true,
550
+ "description": "Who performed the action — rendered in fg/default, the rest in fg/muted."
551
+ },
552
+ {
553
+ "name": "description",
554
+ "type": "ReactNode",
555
+ "required": true,
556
+ "description": "Rest of the sentence, e.g. \"commented on Design Review\". Wrap the object/target span in `ActivityFeedHighlight` to color it fg/default."
557
+ },
558
+ {
559
+ "name": "timestamp",
560
+ "type": "string",
561
+ "required": true
562
+ },
563
+ {
564
+ "name": "icon",
565
+ "type": "ReactNode",
566
+ "required": false,
567
+ "description": "Rail dot icon (variant=\"default\"). Rendered at 16px, colored fg/muted."
568
+ },
569
+ {
570
+ "name": "avatarSrc",
571
+ "type": "string",
572
+ "required": false,
573
+ "description": "Avatar image (variant=\"compact\")."
574
+ },
575
+ {
576
+ "name": "avatarAlt",
577
+ "type": "string",
578
+ "required": false
579
+ }
580
+ ]
581
+ }
376
582
  },
377
583
  {
378
584
  "name": "variant",
@@ -531,7 +737,29 @@
531
737
  {
532
738
  "name": "data",
533
739
  "type": "AreaChartDatum[]",
534
- "required": true
740
+ "required": true,
741
+ "shape": {
742
+ "type": "AreaChartDatum",
743
+ "collection": "array",
744
+ "fields": [
745
+ {
746
+ "name": "label",
747
+ "type": "string",
748
+ "required": true
749
+ },
750
+ {
751
+ "name": "value",
752
+ "type": "number",
753
+ "required": true
754
+ },
755
+ {
756
+ "name": "value2",
757
+ "type": "number",
758
+ "required": false,
759
+ "description": "Renders a second area, stacked on top of `value` when `variant=\"stacked\"`."
760
+ }
761
+ ]
762
+ }
535
763
  },
536
764
  {
537
765
  "name": "variant",
@@ -672,7 +900,28 @@
672
900
  "name": "avatars",
673
901
  "type": "{ src?: string | undefined; initials?: string | undefined; alt?: string | undefined; }[]",
674
902
  "required": true,
675
- "description": "Avatar definitions."
903
+ "description": "Avatar definitions.",
904
+ "shape": {
905
+ "type": "{ src?: string | undefined; initials?: string | undefined; alt?: string | undefined; }",
906
+ "collection": "array",
907
+ "fields": [
908
+ {
909
+ "name": "src",
910
+ "type": "string",
911
+ "required": false
912
+ },
913
+ {
914
+ "name": "initials",
915
+ "type": "string",
916
+ "required": false
917
+ },
918
+ {
919
+ "name": "alt",
920
+ "type": "string",
921
+ "required": false
922
+ }
923
+ ]
924
+ }
676
925
  },
677
926
  {
678
927
  "name": "className",
@@ -838,7 +1087,30 @@
838
1087
  {
839
1088
  "name": "change",
840
1089
  "type": "BalanceChangeInfo",
841
- "required": false
1090
+ "required": false,
1091
+ "shape": {
1092
+ "type": "BalanceChangeInfo",
1093
+ "collection": "object",
1094
+ "fields": [
1095
+ {
1096
+ "name": "value",
1097
+ "type": "string",
1098
+ "required": true,
1099
+ "description": "e.g. \"+$1,240.50\" -- sign/formatting is the caller's responsibility."
1100
+ },
1101
+ {
1102
+ "name": "label",
1103
+ "type": "string",
1104
+ "required": false,
1105
+ "description": "Defaults to \"this month\"."
1106
+ },
1107
+ {
1108
+ "name": "direction",
1109
+ "type": "\"up\" | \"down\"",
1110
+ "required": false
1111
+ }
1112
+ ]
1113
+ }
842
1114
  },
843
1115
  {
844
1116
  "name": "progress",
@@ -882,7 +1154,28 @@
882
1154
  {
883
1155
  "name": "data",
884
1156
  "type": "BarChartDatum[]",
885
- "required": true
1157
+ "required": true,
1158
+ "shape": {
1159
+ "type": "BarChartDatum",
1160
+ "collection": "array",
1161
+ "fields": [
1162
+ {
1163
+ "name": "label",
1164
+ "type": "string",
1165
+ "required": true
1166
+ },
1167
+ {
1168
+ "name": "value",
1169
+ "type": "number",
1170
+ "required": true
1171
+ },
1172
+ {
1173
+ "name": "value2",
1174
+ "type": "number",
1175
+ "required": false
1176
+ }
1177
+ ]
1178
+ }
886
1179
  },
887
1180
  {
888
1181
  "name": "variant",
@@ -948,7 +1241,34 @@
948
1241
  "name": "author",
949
1242
  "type": "BlogBlockquoteAuthor",
950
1243
  "required": false,
951
- "description": "Presence switches to the card + quote-mark-glyphs + attribution-row treatment."
1244
+ "description": "Presence switches to the card + quote-mark-glyphs + attribution-row treatment.",
1245
+ "shape": {
1246
+ "type": "BlogBlockquoteAuthor",
1247
+ "collection": "object",
1248
+ "fields": [
1249
+ {
1250
+ "name": "name",
1251
+ "type": "string",
1252
+ "required": true
1253
+ },
1254
+ {
1255
+ "name": "role",
1256
+ "type": "string",
1257
+ "required": true,
1258
+ "description": "e.g. \"Founder at Loopline\" -- rendered after the name as \", {role}\"."
1259
+ },
1260
+ {
1261
+ "name": "avatarSrc",
1262
+ "type": "string",
1263
+ "required": false
1264
+ },
1265
+ {
1266
+ "name": "avatarAlt",
1267
+ "type": "string",
1268
+ "required": false
1269
+ }
1270
+ ]
1271
+ }
952
1272
  },
953
1273
  {
954
1274
  "name": "className",
@@ -1092,7 +1412,34 @@
1092
1412
  {
1093
1413
  "name": "author",
1094
1414
  "type": "BlogListingCardAuthor",
1095
- "required": true
1415
+ "required": true,
1416
+ "shape": {
1417
+ "type": "BlogListingCardAuthor",
1418
+ "collection": "object",
1419
+ "fields": [
1420
+ {
1421
+ "name": "name",
1422
+ "type": "string",
1423
+ "required": true
1424
+ },
1425
+ {
1426
+ "name": "date",
1427
+ "type": "string",
1428
+ "required": true,
1429
+ "description": "e.g. \"Aug 12, 2026\" -- rendered after the name as \" · {date}\"."
1430
+ },
1431
+ {
1432
+ "name": "avatarSrc",
1433
+ "type": "string",
1434
+ "required": false
1435
+ },
1436
+ {
1437
+ "name": "avatarAlt",
1438
+ "type": "string",
1439
+ "required": false
1440
+ }
1441
+ ]
1442
+ }
1096
1443
  },
1097
1444
  {
1098
1445
  "name": "layout",
@@ -1160,7 +1507,39 @@
1160
1507
  {
1161
1508
  "name": "author",
1162
1509
  "type": "BlogListingFeaturedCardAuthor",
1163
- "required": true
1510
+ "required": true,
1511
+ "shape": {
1512
+ "type": "BlogListingFeaturedCardAuthor",
1513
+ "collection": "object",
1514
+ "fields": [
1515
+ {
1516
+ "name": "name",
1517
+ "type": "string",
1518
+ "required": true
1519
+ },
1520
+ {
1521
+ "name": "date",
1522
+ "type": "string",
1523
+ "required": true,
1524
+ "description": "e.g. \"Aug 12, 2026\" -- rendered after the name as \" · {date}\"."
1525
+ },
1526
+ {
1527
+ "name": "avatarSrc",
1528
+ "type": "string",
1529
+ "required": false
1530
+ },
1531
+ {
1532
+ "name": "avatarAlt",
1533
+ "type": "string",
1534
+ "required": false
1535
+ },
1536
+ {
1537
+ "name": "initials",
1538
+ "type": "string",
1539
+ "required": false
1540
+ }
1541
+ ]
1542
+ }
1164
1543
  },
1165
1544
  {
1166
1545
  "name": "ctaLabel",
@@ -1376,7 +1755,23 @@
1376
1755
  {
1377
1756
  "name": "items",
1378
1757
  "type": "BreadcrumbItem[]",
1379
- "required": true
1758
+ "required": true,
1759
+ "shape": {
1760
+ "type": "BreadcrumbItem",
1761
+ "collection": "array",
1762
+ "fields": [
1763
+ {
1764
+ "name": "label",
1765
+ "type": "string",
1766
+ "required": true
1767
+ },
1768
+ {
1769
+ "name": "href",
1770
+ "type": "string",
1771
+ "required": false
1772
+ }
1773
+ ]
1774
+ }
1380
1775
  },
1381
1776
  {
1382
1777
  "name": "variant",
@@ -1504,7 +1899,23 @@
1504
1899
  "name": "range",
1505
1900
  "type": "DateRange",
1506
1901
  "required": false,
1507
- "description": "Selected range (range mode)."
1902
+ "description": "Selected range (range mode).",
1903
+ "shape": {
1904
+ "type": "DateRange",
1905
+ "collection": "object",
1906
+ "fields": [
1907
+ {
1908
+ "name": "from",
1909
+ "type": "Date",
1910
+ "required": false
1911
+ },
1912
+ {
1913
+ "name": "to",
1914
+ "type": "Date",
1915
+ "required": false
1916
+ }
1917
+ ]
1918
+ }
1508
1919
  },
1509
1920
  {
1510
1921
  "name": "onRangeChange",
@@ -1576,7 +1987,8 @@
1576
1987
  {
1577
1988
  "name": "leadingAction",
1578
1989
  "type": "ReactNode",
1579
- "required": false
1990
+ "required": false,
1991
+ "since": "0.3.16"
1580
1992
  },
1581
1993
  {
1582
1994
  "name": "interactive",
@@ -1972,7 +2384,33 @@
1972
2384
  {
1973
2385
  "name": "options",
1974
2386
  "type": "ComboboxOption[]",
1975
- "required": true
2387
+ "required": true,
2388
+ "shape": {
2389
+ "type": "ComboboxOption",
2390
+ "collection": "array",
2391
+ "fields": [
2392
+ {
2393
+ "name": "value",
2394
+ "type": "string",
2395
+ "required": true
2396
+ },
2397
+ {
2398
+ "name": "label",
2399
+ "type": "string",
2400
+ "required": true
2401
+ },
2402
+ {
2403
+ "name": "icon",
2404
+ "type": "ReactNode",
2405
+ "required": false
2406
+ },
2407
+ {
2408
+ "name": "disabled",
2409
+ "type": "boolean",
2410
+ "required": false
2411
+ }
2412
+ ]
2413
+ }
1976
2414
  },
1977
2415
  {
1978
2416
  "name": "mode",
@@ -2169,7 +2607,23 @@
2169
2607
  {
2170
2608
  "name": "data",
2171
2609
  "type": "DonutDatum[]",
2172
- "required": true
2610
+ "required": true,
2611
+ "shape": {
2612
+ "type": "DonutDatum",
2613
+ "collection": "array",
2614
+ "fields": [
2615
+ {
2616
+ "name": "label",
2617
+ "type": "string",
2618
+ "required": true
2619
+ },
2620
+ {
2621
+ "name": "value",
2622
+ "type": "number",
2623
+ "required": true
2624
+ }
2625
+ ]
2626
+ }
2173
2627
  },
2174
2628
  {
2175
2629
  "name": "size",
@@ -2282,7 +2736,34 @@
2282
2736
  {
2283
2737
  "name": "categories",
2284
2738
  "type": "ExpenseCategory[]",
2285
- "required": true
2739
+ "required": true,
2740
+ "shape": {
2741
+ "type": "ExpenseCategory",
2742
+ "collection": "array",
2743
+ "fields": [
2744
+ {
2745
+ "name": "id",
2746
+ "type": "string | number",
2747
+ "required": false
2748
+ },
2749
+ {
2750
+ "name": "icon",
2751
+ "type": "ReactNode",
2752
+ "required": true
2753
+ },
2754
+ {
2755
+ "name": "label",
2756
+ "type": "string",
2757
+ "required": true
2758
+ },
2759
+ {
2760
+ "name": "amount",
2761
+ "type": "number",
2762
+ "required": true,
2763
+ "description": "Raw amount -- formatted for display via `formatAmount`."
2764
+ }
2765
+ ]
2766
+ }
2286
2767
  },
2287
2768
  {
2288
2769
  "name": "variant",
@@ -2333,7 +2814,7 @@
2333
2814
  "requiredProps": [],
2334
2815
  "requiresAccessibleName": false
2335
2816
  },
2336
- "since": "0.3.0",
2817
+ "since": "0.8.6",
2337
2818
  "example": "import { FacebookIcon } from '@sakaniui/react';\n\n<FacebookIcon />"
2338
2819
  },
2339
2820
  {
@@ -2500,18 +2981,71 @@
2500
2981
  {
2501
2982
  "name": "primaryCta",
2502
2983
  "type": "FirstPageHeadingCta",
2503
- "required": false
2984
+ "required": false,
2985
+ "shape": {
2986
+ "type": "FirstPageHeadingCta",
2987
+ "collection": "object",
2988
+ "fields": [
2989
+ {
2990
+ "name": "label",
2991
+ "type": "string",
2992
+ "required": true
2993
+ },
2994
+ {
2995
+ "name": "onClick",
2996
+ "type": "(() => void)",
2997
+ "required": false
2998
+ }
2999
+ ]
3000
+ }
2504
3001
  },
2505
3002
  {
2506
3003
  "name": "secondaryCta",
2507
3004
  "type": "FirstPageHeadingCta",
2508
- "required": false
3005
+ "required": false,
3006
+ "shape": {
3007
+ "type": "FirstPageHeadingCta",
3008
+ "collection": "object",
3009
+ "fields": [
3010
+ {
3011
+ "name": "label",
3012
+ "type": "string",
3013
+ "required": true
3014
+ },
3015
+ {
3016
+ "name": "onClick",
3017
+ "type": "(() => void)",
3018
+ "required": false
3019
+ }
3020
+ ]
3021
+ }
2509
3022
  },
2510
3023
  {
2511
3024
  "name": "avatars",
2512
3025
  "type": "{ src?: string; initials?: string; alt?: string | undefined; }[] | undefined",
2513
3026
  "required": false,
2514
- "description": "Presence (non-empty) renders the overlapping avatar stack."
3027
+ "description": "Presence (non-empty) renders the overlapping avatar stack.",
3028
+ "shape": {
3029
+ "type": "{ src?: string | undefined; initials?: string | undefined; alt?: string | undefined; }",
3030
+ "collection": "array",
3031
+ "fields": [
3032
+ {
3033
+ "name": "src",
3034
+ "type": "string",
3035
+ "required": false
3036
+ },
3037
+ {
3038
+ "name": "initials",
3039
+ "type": "string",
3040
+ "required": false
3041
+ },
3042
+ {
3043
+ "name": "alt",
3044
+ "type": "string",
3045
+ "required": false
3046
+ }
3047
+ ]
3048
+ }
2515
3049
  },
2516
3050
  {
2517
3051
  "name": "avatarsCaption",
@@ -2554,7 +3088,23 @@
2554
3088
  {
2555
3089
  "name": "data",
2556
3090
  "type": "FunnelDatum[]",
2557
- "required": true
3091
+ "required": true,
3092
+ "shape": {
3093
+ "type": "FunnelDatum",
3094
+ "collection": "array",
3095
+ "fields": [
3096
+ {
3097
+ "name": "label",
3098
+ "type": "string",
3099
+ "required": true
3100
+ },
3101
+ {
3102
+ "name": "value",
3103
+ "type": "number",
3104
+ "required": true
3105
+ }
3106
+ ]
3107
+ }
2558
3108
  },
2559
3109
  {
2560
3110
  "name": "size",
@@ -2601,7 +3151,7 @@
2601
3151
  "requiredProps": [],
2602
3152
  "requiresAccessibleName": false
2603
3153
  },
2604
- "since": "0.3.0",
3154
+ "since": "0.8.6",
2605
3155
  "example": "import { GithubIcon } from '@sakaniui/react';\n\n<GithubIcon />"
2606
3156
  },
2607
3157
  {
@@ -2672,7 +3222,7 @@
2672
3222
  "requiresAccessibleName": false
2673
3223
  },
2674
3224
  "since": "0.3.21",
2675
- "example": "import { HoverGroup } from '@sakaniui/react';\n\n<HoverGroup />"
3225
+ "example": "import { HoverGroup } from '@sakaniui/react';\n\n<HoverGroup>Label</HoverGroup>"
2676
3226
  },
2677
3227
  {
2678
3228
  "name": "IconButton",
@@ -2841,7 +3391,7 @@
2841
3391
  "requiredProps": [],
2842
3392
  "requiresAccessibleName": false
2843
3393
  },
2844
- "since": "0.3.0",
3394
+ "since": "0.8.6",
2845
3395
  "example": "import { InstagramIcon } from '@sakaniui/react';\n\n<InstagramIcon />"
2846
3396
  },
2847
3397
  {
@@ -3095,7 +3645,7 @@
3095
3645
  "requiredProps": [],
3096
3646
  "requiresAccessibleName": false
3097
3647
  },
3098
- "since": "0.3.0",
3648
+ "since": "0.8.6",
3099
3649
  "example": "import { LinkedinIcon } from '@sakaniui/react';\n\n<LinkedinIcon />"
3100
3650
  },
3101
3651
  {
@@ -3131,8 +3681,8 @@
3131
3681
  ],
3132
3682
  "requiresAccessibleName": false
3133
3683
  },
3134
- "since": "0.4.0",
3135
- "example": "import { LiquidBackdrop } from '@sakaniui/react';\n\n<LiquidBackdrop />"
3684
+ "since": "0.4.3",
3685
+ "example": "import { LiquidBackdrop } from '@sakaniui/react';\n\n<LiquidBackdrop src=\"/images/example.jpg\" />"
3136
3686
  },
3137
3687
  {
3138
3688
  "name": "LiquidGlass",
@@ -3164,7 +3714,8 @@
3164
3714
  "clear"
3165
3715
  ],
3166
3716
  "default": "auto",
3167
- "description": "How much of the backdrop shows through. Default 'auto' (follows `variant`)."
3717
+ "description": "How much of the backdrop shows through. Default 'auto' (follows `variant`).",
3718
+ "since": "0.4.1"
3168
3719
  },
3169
3720
  {
3170
3721
  "name": "radius",
@@ -3188,21 +3739,24 @@
3188
3739
  "name": "effect",
3189
3740
  "type": "Partial<LiquidGlassEffect>",
3190
3741
  "required": false,
3191
- "description": "Defaults come from the variant's --liquid-* tokens."
3742
+ "description": "Defaults come from the variant's --liquid-* tokens.",
3743
+ "since": "0.4.3"
3192
3744
  },
3193
3745
  {
3194
3746
  "name": "source",
3195
3747
  "type": "boolean",
3196
3748
  "required": false,
3197
3749
  "default": true,
3198
- "description": "Inside a <LiquidBackdrop>: true (default) refracts the backdrop image; false bends whatever is painted below instead (UI under a slider knob)."
3750
+ "description": "Inside a <LiquidBackdrop>: true (default) refracts the backdrop image; false bends whatever is painted below instead (UI under a slider knob).",
3751
+ "since": "0.4.3"
3199
3752
  },
3200
3753
  {
3201
3754
  "name": "bake",
3202
3755
  "type": "boolean | \"auto\"",
3203
3756
  "required": false,
3204
3757
  "default": "auto",
3205
- "description": "'auto' (default): inside a LiquidBackdrop, lenses over 300×300 bake their glass once (fast; for surfaces that stay put). false: always live (a big lens that moves)."
3758
+ "description": "'auto' (default): inside a LiquidBackdrop, lenses over 300×300 bake their glass once (fast; for surfaces that stay put). false: always live (a big lens that moves).",
3759
+ "since": "0.4.3"
3206
3760
  },
3207
3761
  {
3208
3762
  "name": "interactive",
@@ -3635,7 +4189,28 @@
3635
4189
  {
3636
4190
  "name": "links",
3637
4191
  "type": "MobileNavLink[]",
3638
- "required": true
4192
+ "required": true,
4193
+ "shape": {
4194
+ "type": "MobileNavLink",
4195
+ "collection": "array",
4196
+ "fields": [
4197
+ {
4198
+ "name": "label",
4199
+ "type": "string",
4200
+ "required": true
4201
+ },
4202
+ {
4203
+ "name": "href",
4204
+ "type": "string",
4205
+ "required": false
4206
+ },
4207
+ {
4208
+ "name": "onClick",
4209
+ "type": "(() => void)",
4210
+ "required": false
4211
+ }
4212
+ ]
4213
+ }
3639
4214
  },
3640
4215
  {
3641
4216
  "name": "ctaLabel",
@@ -3940,7 +4515,23 @@
3940
4515
  {
3941
4516
  "name": "data",
3942
4517
  "type": "PieDatum[]",
3943
- "required": true
4518
+ "required": true,
4519
+ "shape": {
4520
+ "type": "PieDatum",
4521
+ "collection": "array",
4522
+ "fields": [
4523
+ {
4524
+ "name": "label",
4525
+ "type": "string",
4526
+ "required": true
4527
+ },
4528
+ {
4529
+ "name": "value",
4530
+ "type": "number",
4531
+ "required": true
4532
+ }
4533
+ ]
4534
+ }
3944
4535
  },
3945
4536
  {
3946
4537
  "name": "variant",
@@ -4194,7 +4785,47 @@
4194
4785
  "name": "colors",
4195
4786
  "type": "ProductCardColor[]",
4196
4787
  "required": false,
4197
- "default": "[]"
4788
+ "default": "[]",
4789
+ "shape": {
4790
+ "type": "ProductCardColor",
4791
+ "collection": "array",
4792
+ "fields": [
4793
+ {
4794
+ "name": "id",
4795
+ "type": "string",
4796
+ "required": false,
4797
+ "description": "Unique key for selection -- defaults to `label` if omitted."
4798
+ },
4799
+ {
4800
+ "name": "selected",
4801
+ "type": "boolean",
4802
+ "required": false
4803
+ },
4804
+ {
4805
+ "name": "className",
4806
+ "type": "string",
4807
+ "required": false
4808
+ },
4809
+ {
4810
+ "name": "color",
4811
+ "type": "string",
4812
+ "required": true,
4813
+ "description": "CSS color value for the swatch fill."
4814
+ },
4815
+ {
4816
+ "name": "label",
4817
+ "type": "string",
4818
+ "required": true,
4819
+ "description": "Accessible name, e.g. \"Navy\"."
4820
+ },
4821
+ {
4822
+ "name": "available",
4823
+ "type": "boolean",
4824
+ "required": false,
4825
+ "description": "Defaults to true. False renders a disabled, unclickable swatch."
4826
+ }
4827
+ ]
4828
+ }
4198
4829
  },
4199
4830
  {
4200
4831
  "name": "onColorSelect",
@@ -4261,7 +4892,23 @@
4261
4892
  {
4262
4893
  "name": "images",
4263
4894
  "type": "ProductGalleryImage[]",
4264
- "required": true
4895
+ "required": true,
4896
+ "shape": {
4897
+ "type": "ProductGalleryImage",
4898
+ "collection": "array",
4899
+ "fields": [
4900
+ {
4901
+ "name": "src",
4902
+ "type": "string",
4903
+ "required": true
4904
+ },
4905
+ {
4906
+ "name": "alt",
4907
+ "type": "string",
4908
+ "required": false
4909
+ }
4910
+ ]
4911
+ }
4265
4912
  },
4266
4913
  {
4267
4914
  "name": "thumbsPosition",
@@ -4342,7 +4989,34 @@
4342
4989
  "name": "socialLinks",
4343
4990
  "type": "ProfileCardSocialLink[]",
4344
4991
  "required": false,
4345
- "default": "[]"
4992
+ "default": "[]",
4993
+ "shape": {
4994
+ "type": "ProfileCardSocialLink",
4995
+ "collection": "array",
4996
+ "fields": [
4997
+ {
4998
+ "name": "icon",
4999
+ "type": "ReactNode",
5000
+ "required": true
5001
+ },
5002
+ {
5003
+ "name": "label",
5004
+ "type": "string",
5005
+ "required": true,
5006
+ "description": "Accessible name, e.g. \"X (Twitter)\"."
5007
+ },
5008
+ {
5009
+ "name": "href",
5010
+ "type": "string",
5011
+ "required": false
5012
+ },
5013
+ {
5014
+ "name": "onClick",
5015
+ "type": "(() => void)",
5016
+ "required": false
5017
+ }
5018
+ ]
5019
+ }
4346
5020
  },
4347
5021
  {
4348
5022
  "name": "className",
@@ -4567,7 +5241,29 @@
4567
5241
  {
4568
5242
  "name": "data",
4569
5243
  "type": "RadarDatum[]",
4570
- "required": true
5244
+ "required": true,
5245
+ "shape": {
5246
+ "type": "RadarDatum",
5247
+ "collection": "array",
5248
+ "fields": [
5249
+ {
5250
+ "name": "label",
5251
+ "type": "string",
5252
+ "required": true
5253
+ },
5254
+ {
5255
+ "name": "value",
5256
+ "type": "number",
5257
+ "required": true
5258
+ },
5259
+ {
5260
+ "name": "value2",
5261
+ "type": "number",
5262
+ "required": false,
5263
+ "description": "Second series (variant=\"multiple\")."
5264
+ }
5265
+ ]
5266
+ }
4571
5267
  },
4572
5268
  {
4573
5269
  "name": "variant",
@@ -4632,7 +5328,28 @@
4632
5328
  {
4633
5329
  "name": "data",
4634
5330
  "type": "RadialDatum[]",
4635
- "required": true
5331
+ "required": true,
5332
+ "shape": {
5333
+ "type": "RadialDatum",
5334
+ "collection": "array",
5335
+ "fields": [
5336
+ {
5337
+ "name": "label",
5338
+ "type": "string",
5339
+ "required": true
5340
+ },
5341
+ {
5342
+ "name": "value",
5343
+ "type": "number",
5344
+ "required": true
5345
+ },
5346
+ {
5347
+ "name": "max",
5348
+ "type": "number",
5349
+ "required": false
5350
+ }
5351
+ ]
5352
+ }
4636
5353
  },
4637
5354
  {
4638
5355
  "name": "variant",
@@ -4865,7 +5582,23 @@
4865
5582
  {
4866
5583
  "name": "options",
4867
5584
  "type": "SegmentedOption[]",
4868
- "required": true
5585
+ "required": true,
5586
+ "shape": {
5587
+ "type": "SegmentedOption",
5588
+ "collection": "array",
5589
+ "fields": [
5590
+ {
5591
+ "name": "value",
5592
+ "type": "string",
5593
+ "required": true
5594
+ },
5595
+ {
5596
+ "name": "label",
5597
+ "type": "string",
5598
+ "required": true
5599
+ }
5600
+ ]
5601
+ }
4869
5602
  },
4870
5603
  {
4871
5604
  "name": "value",
@@ -4945,7 +5678,28 @@
4945
5678
  {
4946
5679
  "name": "options",
4947
5680
  "type": "SelectOption[]",
4948
- "required": true
5681
+ "required": true,
5682
+ "shape": {
5683
+ "type": "SelectOption",
5684
+ "collection": "array",
5685
+ "fields": [
5686
+ {
5687
+ "name": "label",
5688
+ "type": "string",
5689
+ "required": true
5690
+ },
5691
+ {
5692
+ "name": "value",
5693
+ "type": "string",
5694
+ "required": true
5695
+ },
5696
+ {
5697
+ "name": "disabled",
5698
+ "type": "boolean",
5699
+ "required": false
5700
+ }
5701
+ ]
5702
+ }
4949
5703
  },
4950
5704
  {
4951
5705
  "name": "value",
@@ -5219,7 +5973,8 @@
5219
5973
  "name": "expanded",
5220
5974
  "type": "boolean",
5221
5975
  "required": false,
5222
- "description": "Only matters when `hasSubmenu`. Not a navigation disclosure like `active` — the caller owns the open/closed state and toggles this alongside conditionally rendering the children."
5976
+ "description": "Only matters when `hasSubmenu`. Not a navigation disclosure like `active` — the caller owns the open/closed state and toggles this alongside conditionally rendering the children.",
5977
+ "since": "0.3.27"
5223
5978
  },
5224
5979
  {
5225
5980
  "name": "onClick",
@@ -5777,7 +6532,23 @@
5777
6532
  {
5778
6533
  "name": "steps",
5779
6534
  "type": "Step[]",
5780
- "required": true
6535
+ "required": true,
6536
+ "shape": {
6537
+ "type": "Step",
6538
+ "collection": "array",
6539
+ "fields": [
6540
+ {
6541
+ "name": "label",
6542
+ "type": "string",
6543
+ "required": true
6544
+ },
6545
+ {
6546
+ "name": "description",
6547
+ "type": "string",
6548
+ "required": false
6549
+ }
6550
+ ]
6551
+ }
5781
6552
  },
5782
6553
  {
5783
6554
  "name": "current",
@@ -5859,13 +6630,15 @@
5859
6630
  "type": "number",
5860
6631
  "required": false,
5861
6632
  "default": 0,
5862
- "description": "ms to wait before this step's state change plays (the stepper uses it to sequence a multi-step move)."
6633
+ "description": "ms to wait before this step's state change plays (the stepper uses it to sequence a multi-step move).",
6634
+ "since": "0.4.4"
5863
6635
  },
5864
6636
  {
5865
6637
  "name": "fresh",
5866
6638
  "type": "boolean",
5867
6639
  "required": false,
5868
- "description": "True while this step has just changed state: plays the check-draw / arrival ripple."
6640
+ "description": "True while this step has just changed state: plays the check-draw / arrival ripple.",
6641
+ "since": "0.4.4"
5869
6642
  }
5870
6643
  ],
5871
6644
  "contract": {
@@ -5909,7 +6682,23 @@
5909
6682
  {
5910
6683
  "name": "change",
5911
6684
  "type": "StockMarketChange",
5912
- "required": true
6685
+ "required": true,
6686
+ "shape": {
6687
+ "type": "StockMarketChange",
6688
+ "collection": "object",
6689
+ "fields": [
6690
+ {
6691
+ "name": "amount",
6692
+ "type": "number",
6693
+ "required": true
6694
+ },
6695
+ {
6696
+ "name": "percent",
6697
+ "type": "number",
6698
+ "required": true
6699
+ }
6700
+ ]
6701
+ }
5913
6702
  },
5914
6703
  {
5915
6704
  "name": "formatAmount",
@@ -5920,7 +6709,28 @@
5920
6709
  "name": "chart",
5921
6710
  "type": "BarChartDatum[]",
5922
6711
  "required": false,
5923
- "description": "Presence switches to the expanded Full card with a bar chart."
6712
+ "description": "Presence switches to the expanded Full card with a bar chart.",
6713
+ "shape": {
6714
+ "type": "BarChartDatum",
6715
+ "collection": "array",
6716
+ "fields": [
6717
+ {
6718
+ "name": "label",
6719
+ "type": "string",
6720
+ "required": true
6721
+ },
6722
+ {
6723
+ "name": "value",
6724
+ "type": "number",
6725
+ "required": true
6726
+ },
6727
+ {
6728
+ "name": "value2",
6729
+ "type": "number",
6730
+ "required": false
6731
+ }
6732
+ ]
6733
+ }
5924
6734
  },
5925
6735
  {
5926
6736
  "name": "periodLabel",
@@ -6064,7 +6874,8 @@
6064
6874
  "name": "description",
6065
6875
  "type": "ReactNode",
6066
6876
  "required": false,
6067
- "description": "Help text under the label, left-aligned with it (not with the track), e.g. the current state of a controlled switch. Same pattern as Checkbox's description."
6877
+ "description": "Help text under the label, left-aligned with it (not with the track), e.g. the current state of a controlled switch. Same pattern as Checkbox's description.",
6878
+ "since": "0.3.28"
6068
6879
  },
6069
6880
  {
6070
6881
  "name": "variant",
@@ -6075,7 +6886,8 @@
6075
6886
  "stretch"
6076
6887
  ],
6077
6888
  "default": "default",
6078
- "description": "`stretch` adds a liquid motion: the thumb stretches as it travels, then settles to a circle. `default` is the plain switch."
6889
+ "description": "`stretch` adds a liquid motion: the thumb stretches as it travels, then settles to a circle. `default` is the plain switch.",
6890
+ "since": "0.8.4"
6079
6891
  }
6080
6892
  ],
6081
6893
  "contract": {
@@ -6095,7 +6907,41 @@
6095
6907
  {
6096
6908
  "name": "columns",
6097
6909
  "type": "TableColumn<T>[]",
6098
- "required": true
6910
+ "required": true,
6911
+ "shape": {
6912
+ "type": "TableColumn<T>",
6913
+ "collection": "array",
6914
+ "fields": [
6915
+ {
6916
+ "name": "key",
6917
+ "type": "keyof T & string",
6918
+ "required": true
6919
+ },
6920
+ {
6921
+ "name": "header",
6922
+ "type": "string",
6923
+ "required": true
6924
+ },
6925
+ {
6926
+ "name": "render",
6927
+ "type": "((row: T) => ReactNode)",
6928
+ "required": false
6929
+ },
6930
+ {
6931
+ "name": "align",
6932
+ "type": "\"left\" | \"center\" | \"right\"",
6933
+ "required": false
6934
+ },
6935
+ {
6936
+ "name": "width",
6937
+ "type": "string",
6938
+ "required": false
6939
+ }
6940
+ ],
6941
+ "typeParameters": [
6942
+ "T"
6943
+ ]
6944
+ }
6099
6945
  },
6100
6946
  {
6101
6947
  "name": "rows",
@@ -6149,7 +6995,8 @@
6149
6995
  "stacked",
6150
6996
  "auto"
6151
6997
  ],
6152
- "default": "auto"
6998
+ "default": "auto",
6999
+ "since": "0.3.4"
6153
7000
  },
6154
7001
  {
6155
7002
  "name": "className",
@@ -6165,7 +7012,14 @@
6165
7012
  "requiresAccessibleName": false
6166
7013
  },
6167
7014
  "since": "0.1.0",
6168
- "example": "import { Table } from '@sakaniui/react';\n\n<Table columns={[]} rows={[{}]} />"
7015
+ "example": "import { Table } from '@sakaniui/react';\n\n<Table columns={[]} rows={[{}]} />",
7016
+ "recipes": [
7017
+ {
7018
+ "title": "A column that is not data (a delete button, a menu)",
7019
+ "description": "Every column `key` must be a field of the row type (`keyof T & string`), so a button column needs a key too. Give the row type an optional `never` field for it and render the control; do not invent a key that is not on the row type, it will not compile.",
7020
+ "code": "import { Table, IconButton, type TableColumn } from '@sakaniui/react';\nimport { IconTrash } from '@sakaniui/react/icons';\n\ntype Row = { id: number; name: string; actions?: never };\n\nconst rows: Row[] = [{ id: 1, name: 'Olivia Carter' }];\n\nconst columns: TableColumn<Row>[] = [\n { key: 'name', header: 'Customer' },\n {\n key: 'actions',\n header: '',\n align: 'right',\n render: (row) => <IconButton icon={IconTrash} variant=\"destructive\" size=\"sm\" aria-label={`Delete ${row.name}`} />,\n },\n];\n\nexport const Example = () => <Table columns={columns} rows={rows} />;"
7021
+ }
7022
+ ]
6169
7023
  },
6170
7024
  {
6171
7025
  "name": "Tabs",
@@ -6177,7 +7031,35 @@
6177
7031
  {
6178
7032
  "name": "items",
6179
7033
  "type": "TabItem[]",
6180
- "required": true
7034
+ "required": true,
7035
+ "shape": {
7036
+ "type": "TabItem",
7037
+ "collection": "array",
7038
+ "fields": [
7039
+ {
7040
+ "name": "value",
7041
+ "type": "string",
7042
+ "required": true,
7043
+ "description": "Unique key/value for the tab."
7044
+ },
7045
+ {
7046
+ "name": "label",
7047
+ "type": "string",
7048
+ "required": true,
7049
+ "description": "Visible label."
7050
+ },
7051
+ {
7052
+ "name": "icon",
7053
+ "type": "IconComponent",
7054
+ "required": false
7055
+ },
7056
+ {
7057
+ "name": "disabled",
7058
+ "type": "boolean",
7059
+ "required": false
7060
+ }
7061
+ ]
7062
+ }
6181
7063
  },
6182
7064
  {
6183
7065
  "name": "value",
@@ -6310,7 +7192,34 @@
6310
7192
  "name": "socialLinks",
6311
7193
  "type": "TeamCardSocialLink[]",
6312
7194
  "required": false,
6313
- "default": "[]"
7195
+ "default": "[]",
7196
+ "shape": {
7197
+ "type": "TeamCardSocialLink",
7198
+ "collection": "array",
7199
+ "fields": [
7200
+ {
7201
+ "name": "icon",
7202
+ "type": "ReactNode",
7203
+ "required": true
7204
+ },
7205
+ {
7206
+ "name": "label",
7207
+ "type": "string",
7208
+ "required": true,
7209
+ "description": "Accessible name, e.g. \"Instagram\"."
7210
+ },
7211
+ {
7212
+ "name": "href",
7213
+ "type": "string",
7214
+ "required": false
7215
+ },
7216
+ {
7217
+ "name": "onClick",
7218
+ "type": "(() => void)",
7219
+ "required": false
7220
+ }
7221
+ ]
7222
+ }
6314
7223
  },
6315
7224
  {
6316
7225
  "name": "className",
@@ -6370,7 +7279,23 @@
6370
7279
  {
6371
7280
  "name": "items",
6372
7281
  "type": "TickerItem[]",
6373
- "required": true
7282
+ "required": true,
7283
+ "shape": {
7284
+ "type": "TickerItem",
7285
+ "collection": "array",
7286
+ "fields": [
7287
+ {
7288
+ "name": "symbol",
7289
+ "type": "string",
7290
+ "required": true
7291
+ },
7292
+ {
7293
+ "name": "changePercent",
7294
+ "type": "number",
7295
+ "required": true
7296
+ }
7297
+ ]
7298
+ }
6374
7299
  },
6375
7300
  {
6376
7301
  "name": "speed",
@@ -6706,7 +7631,39 @@
6706
7631
  {
6707
7632
  "name": "transactions",
6708
7633
  "type": "Transaction[]",
6709
- "required": true
7634
+ "required": true,
7635
+ "shape": {
7636
+ "type": "Transaction",
7637
+ "collection": "array",
7638
+ "fields": [
7639
+ {
7640
+ "name": "id",
7641
+ "type": "string | number",
7642
+ "required": false
7643
+ },
7644
+ {
7645
+ "name": "name",
7646
+ "type": "string",
7647
+ "required": true
7648
+ },
7649
+ {
7650
+ "name": "category",
7651
+ "type": "string",
7652
+ "required": true
7653
+ },
7654
+ {
7655
+ "name": "amount",
7656
+ "type": "number",
7657
+ "required": true,
7658
+ "description": "Positive = income (success), negative = expense (danger)."
7659
+ },
7660
+ {
7661
+ "name": "icon",
7662
+ "type": "ReactNode",
7663
+ "required": true
7664
+ }
7665
+ ]
7666
+ }
6710
7667
  },
6711
7668
  {
6712
7669
  "name": "formatAmount",
@@ -6796,7 +7753,7 @@
6796
7753
  "requiredProps": [],
6797
7754
  "requiresAccessibleName": false
6798
7755
  },
6799
- "since": "0.3.0",
7756
+ "since": "0.8.6",
6800
7757
  "example": "import { XIcon } from '@sakaniui/react';\n\n<XIcon />"
6801
7758
  },
6802
7759
  {
@@ -6912,7 +7869,23 @@
6912
7869
  {
6913
7870
  "name": "breadcrumbs",
6914
7871
  "type": "BreadcrumbItem[]",
6915
- "required": true
7872
+ "required": true,
7873
+ "shape": {
7874
+ "type": "BreadcrumbItem",
7875
+ "collection": "array",
7876
+ "fields": [
7877
+ {
7878
+ "name": "label",
7879
+ "type": "string",
7880
+ "required": true
7881
+ },
7882
+ {
7883
+ "name": "href",
7884
+ "type": "string",
7885
+ "required": false
7886
+ }
7887
+ ]
7888
+ }
6916
7889
  },
6917
7890
  {
6918
7891
  "name": "title",
@@ -6928,7 +7901,34 @@
6928
7901
  "name": "actions",
6929
7902
  "type": "AppHeaderBlockAction[]",
6930
7903
  "required": false,
6931
- "default": "[]"
7904
+ "default": "[]",
7905
+ "shape": {
7906
+ "type": "AppHeaderBlockAction",
7907
+ "collection": "array",
7908
+ "fields": [
7909
+ {
7910
+ "name": "label",
7911
+ "type": "string",
7912
+ "required": true
7913
+ },
7914
+ {
7915
+ "name": "icon",
7916
+ "type": "ReactNode",
7917
+ "required": false
7918
+ },
7919
+ {
7920
+ "name": "onClick",
7921
+ "type": "(() => void)",
7922
+ "required": false
7923
+ },
7924
+ {
7925
+ "name": "variant",
7926
+ "type": "ButtonVariant",
7927
+ "required": false,
7928
+ "description": "Overrides the position-derived default (last action = primary, rest = secondary)."
7929
+ }
7930
+ ]
7931
+ }
6932
7932
  },
6933
7933
  {
6934
7934
  "name": "className",
@@ -6961,7 +7961,28 @@
6961
7961
  {
6962
7962
  "name": "countries",
6963
7963
  "type": "SelectOption[]",
6964
- "required": false
7964
+ "required": false,
7965
+ "shape": {
7966
+ "type": "SelectOption",
7967
+ "collection": "array",
7968
+ "fields": [
7969
+ {
7970
+ "name": "label",
7971
+ "type": "string",
7972
+ "required": true
7973
+ },
7974
+ {
7975
+ "name": "value",
7976
+ "type": "string",
7977
+ "required": true
7978
+ },
7979
+ {
7980
+ "name": "disabled",
7981
+ "type": "boolean",
7982
+ "required": false
7983
+ }
7984
+ ]
7985
+ }
6965
7986
  },
6966
7987
  {
6967
7988
  "name": "initialStatus",
@@ -7005,7 +8026,47 @@
7005
8026
  "name": "invoices",
7006
8027
  "type": "BillingHistoryInvoice[]",
7007
8028
  "required": false,
7008
- "default": "[]"
8029
+ "default": "[]",
8030
+ "shape": {
8031
+ "type": "BillingHistoryInvoice",
8032
+ "collection": "array",
8033
+ "fields": [
8034
+ {
8035
+ "name": "id",
8036
+ "type": "string",
8037
+ "required": false,
8038
+ "description": "Unique key for the list -- defaults to index if omitted."
8039
+ },
8040
+ {
8041
+ "name": "planLabel",
8042
+ "type": "string",
8043
+ "required": true,
8044
+ "description": "e.g. \"Pro plan — Monthly\""
8045
+ },
8046
+ {
8047
+ "name": "date",
8048
+ "type": "string",
8049
+ "required": true,
8050
+ "description": "e.g. \"Aug 1, 2026\""
8051
+ },
8052
+ {
8053
+ "name": "amount",
8054
+ "type": "string",
8055
+ "required": true,
8056
+ "description": "e.g. \"$29.00\""
8057
+ },
8058
+ {
8059
+ "name": "status",
8060
+ "type": "BillingHistoryStatus",
8061
+ "required": true
8062
+ },
8063
+ {
8064
+ "name": "onDownload",
8065
+ "type": "(() => void)",
8066
+ "required": false
8067
+ }
8068
+ ]
8069
+ }
7009
8070
  },
7010
8071
  {
7011
8072
  "name": "loading",
@@ -7054,12 +8115,99 @@
7054
8115
  {
7055
8116
  "name": "featuredPost",
7056
8117
  "type": "BlogListingFeaturedPost",
7057
- "required": true
8118
+ "required": true,
8119
+ "shape": {
8120
+ "type": "BlogListingFeaturedPost",
8121
+ "collection": "object",
8122
+ "fields": [
8123
+ {
8124
+ "name": "image",
8125
+ "type": "string",
8126
+ "required": true
8127
+ },
8128
+ {
8129
+ "name": "imageAlt",
8130
+ "type": "string",
8131
+ "required": false
8132
+ },
8133
+ {
8134
+ "name": "title",
8135
+ "type": "string",
8136
+ "required": true
8137
+ },
8138
+ {
8139
+ "name": "excerpt",
8140
+ "type": "string",
8141
+ "required": true
8142
+ },
8143
+ {
8144
+ "name": "author",
8145
+ "type": "BlogListingFeaturedCardAuthor",
8146
+ "required": true
8147
+ },
8148
+ {
8149
+ "name": "ctaLabel",
8150
+ "type": "string",
8151
+ "required": false
8152
+ },
8153
+ {
8154
+ "name": "onCtaClick",
8155
+ "type": "(() => void)",
8156
+ "required": false
8157
+ }
8158
+ ]
8159
+ }
7058
8160
  },
7059
8161
  {
7060
8162
  "name": "posts",
7061
8163
  "type": "BlogListingPost[]",
7062
- "required": true
8164
+ "required": true,
8165
+ "shape": {
8166
+ "type": "BlogListingPost",
8167
+ "collection": "array",
8168
+ "fields": [
8169
+ {
8170
+ "name": "id",
8171
+ "type": "string",
8172
+ "required": false
8173
+ },
8174
+ {
8175
+ "name": "image",
8176
+ "type": "string",
8177
+ "required": true
8178
+ },
8179
+ {
8180
+ "name": "imageAlt",
8181
+ "type": "string",
8182
+ "required": false
8183
+ },
8184
+ {
8185
+ "name": "category",
8186
+ "type": "string",
8187
+ "required": true
8188
+ },
8189
+ {
8190
+ "name": "readTime",
8191
+ "type": "string",
8192
+ "required": true
8193
+ },
8194
+ {
8195
+ "name": "title",
8196
+ "type": "string",
8197
+ "required": true
8198
+ },
8199
+ {
8200
+ "name": "excerpt",
8201
+ "type": "string",
8202
+ "required": true
8203
+ },
8204
+ {
8205
+ "name": "author",
8206
+ "type": "BlogListingCardAuthor",
8207
+ "required": true
8208
+ }
8209
+ ]
8210
+ }
7063
8211
  },
7064
8212
  {
7065
8213
  "name": "className",
@@ -7105,7 +8253,60 @@
7105
8253
  {
7106
8254
  "name": "jobs",
7107
8255
  "type": "CareersJob[]",
7108
- "required": true
8256
+ "required": true,
8257
+ "shape": {
8258
+ "type": "CareersJob",
8259
+ "collection": "array",
8260
+ "fields": [
8261
+ {
8262
+ "name": "id",
8263
+ "type": "string",
8264
+ "required": false,
8265
+ "description": "Unique key for the list -- defaults to `title` if omitted."
8266
+ },
8267
+ {
8268
+ "name": "description",
8269
+ "type": "string",
8270
+ "required": true
8271
+ },
8272
+ {
8273
+ "name": "location",
8274
+ "type": "string",
8275
+ "required": true
8276
+ },
8277
+ {
8278
+ "name": "title",
8279
+ "type": "string",
8280
+ "required": true
8281
+ },
8282
+ {
8283
+ "name": "department",
8284
+ "type": "string",
8285
+ "required": true
8286
+ },
8287
+ {
8288
+ "name": "employmentType",
8289
+ "type": "string",
8290
+ "required": true
8291
+ },
8292
+ {
8293
+ "name": "locationStatus",
8294
+ "type": "LocationDotStatus",
8295
+ "required": false,
8296
+ "description": "Drives LocationDot's color."
8297
+ },
8298
+ {
8299
+ "name": "onApply",
8300
+ "type": "(() => void)",
8301
+ "required": false
8302
+ },
8303
+ {
8304
+ "name": "applyLabel",
8305
+ "type": "string",
8306
+ "required": false
8307
+ }
8308
+ ]
8309
+ }
7109
8310
  },
7110
8311
  {
7111
8312
  "name": "className",
@@ -7164,7 +8365,48 @@
7164
8365
  {
7165
8366
  "name": "items",
7166
8367
  "type": "CheckoutFlowItem[]",
7167
- "required": true
8368
+ "required": true,
8369
+ "shape": {
8370
+ "type": "CheckoutFlowItem",
8371
+ "collection": "array",
8372
+ "fields": [
8373
+ {
8374
+ "name": "id",
8375
+ "type": "string",
8376
+ "required": false
8377
+ },
8378
+ {
8379
+ "name": "image",
8380
+ "type": "string",
8381
+ "required": true
8382
+ },
8383
+ {
8384
+ "name": "imageAlt",
8385
+ "type": "string",
8386
+ "required": false
8387
+ },
8388
+ {
8389
+ "name": "name",
8390
+ "type": "string",
8391
+ "required": true
8392
+ },
8393
+ {
8394
+ "name": "variant",
8395
+ "type": "string",
8396
+ "required": false
8397
+ },
8398
+ {
8399
+ "name": "price",
8400
+ "type": "number",
8401
+ "required": true
8402
+ },
8403
+ {
8404
+ "name": "quantity",
8405
+ "type": "number",
8406
+ "required": true
8407
+ }
8408
+ ]
8409
+ }
7168
8410
  },
7169
8411
  {
7170
8412
  "name": "shippingCost",
@@ -7223,7 +8465,8 @@
7223
8465
  "name": "fillPlaceholders",
7224
8466
  "type": "boolean",
7225
8467
  "required": false,
7226
- "description": "When the block is stretched taller than its real content (e.g. embedded in a fixed-height demo frame), extends the leads table with faint placeholder row dividers down to the bottom instead of leaving blank canvas below the footer. No-op at the block's natural height."
8468
+ "description": "When the block is stretched taller than its real content (e.g. embedded in a fixed-height demo frame), extends the leads table with faint placeholder row dividers down to the bottom instead of leaving blank canvas below the footer. No-op at the block's natural height.",
8469
+ "since": "0.3.3"
7227
8470
  }
7228
8471
  ],
7229
8472
  "contract": {
@@ -7253,12 +8496,44 @@
7253
8496
  {
7254
8497
  "name": "primaryAction",
7255
8498
  "type": "CtaBannerAction",
7256
- "required": true
8499
+ "required": true,
8500
+ "shape": {
8501
+ "type": "CtaBannerAction",
8502
+ "collection": "object",
8503
+ "fields": [
8504
+ {
8505
+ "name": "label",
8506
+ "type": "string",
8507
+ "required": true
8508
+ },
8509
+ {
8510
+ "name": "onClick",
8511
+ "type": "(() => void)",
8512
+ "required": false
8513
+ }
8514
+ ]
8515
+ }
7257
8516
  },
7258
8517
  {
7259
8518
  "name": "secondaryAction",
7260
8519
  "type": "CtaBannerAction",
7261
- "required": false
8520
+ "required": false,
8521
+ "shape": {
8522
+ "type": "CtaBannerAction",
8523
+ "collection": "object",
8524
+ "fields": [
8525
+ {
8526
+ "name": "label",
8527
+ "type": "string",
8528
+ "required": true
8529
+ },
8530
+ {
8531
+ "name": "onClick",
8532
+ "type": "(() => void)",
8533
+ "required": false
8534
+ }
8535
+ ]
8536
+ }
7262
8537
  },
7263
8538
  {
7264
8539
  "name": "secondaryActionIcon",
@@ -7434,7 +8709,8 @@
7434
8709
  "name": "fillPlaceholders",
7435
8710
  "type": "boolean",
7436
8711
  "required": false,
7437
- "description": "When the block is stretched taller than its real content (e.g. embedded in a fixed-height demo frame), extends the table with faint placeholder row dividers down to the bottom instead of leaving blank canvas below the footer. No-op at the block's natural height."
8712
+ "description": "When the block is stretched taller than its real content (e.g. embedded in a fixed-height demo frame), extends the table with faint placeholder row dividers down to the bottom instead of leaving blank canvas below the footer. No-op at the block's natural height.",
8713
+ "since": "0.3.3"
7438
8714
  }
7439
8715
  ],
7440
8716
  "contract": {
@@ -7516,7 +8792,29 @@
7516
8792
  {
7517
8793
  "name": "items",
7518
8794
  "type": "FaqItem[]",
7519
- "required": true
8795
+ "required": true,
8796
+ "shape": {
8797
+ "type": "FaqItem",
8798
+ "collection": "array",
8799
+ "fields": [
8800
+ {
8801
+ "name": "question",
8802
+ "type": "string",
8803
+ "required": true
8804
+ },
8805
+ {
8806
+ "name": "answer",
8807
+ "type": "string",
8808
+ "required": true
8809
+ },
8810
+ {
8811
+ "name": "defaultOpen",
8812
+ "type": "boolean",
8813
+ "required": false,
8814
+ "description": "Uncontrolled initial open state for this item."
8815
+ }
8816
+ ]
8817
+ }
7520
8818
  },
7521
8819
  {
7522
8820
  "name": "columns",
@@ -7554,7 +8852,33 @@
7554
8852
  {
7555
8853
  "name": "features",
7556
8854
  "type": "FeatureGridItem[]",
7557
- "required": true
8855
+ "required": true,
8856
+ "shape": {
8857
+ "type": "FeatureGridItem",
8858
+ "collection": "array",
8859
+ "fields": [
8860
+ {
8861
+ "name": "id",
8862
+ "type": "string",
8863
+ "required": false
8864
+ },
8865
+ {
8866
+ "name": "icon",
8867
+ "type": "ReactNode",
8868
+ "required": true
8869
+ },
8870
+ {
8871
+ "name": "title",
8872
+ "type": "string",
8873
+ "required": true
8874
+ },
8875
+ {
8876
+ "name": "description",
8877
+ "type": "string",
8878
+ "required": true
8879
+ }
8880
+ ]
8881
+ }
7558
8882
  },
7559
8883
  {
7560
8884
  "name": "columns",
@@ -7722,12 +9046,44 @@
7722
9046
  {
7723
9047
  "name": "primaryAction",
7724
9048
  "type": "HeroAction",
7725
- "required": true
9049
+ "required": true,
9050
+ "shape": {
9051
+ "type": "HeroAction",
9052
+ "collection": "object",
9053
+ "fields": [
9054
+ {
9055
+ "name": "label",
9056
+ "type": "string",
9057
+ "required": true
9058
+ },
9059
+ {
9060
+ "name": "onClick",
9061
+ "type": "(() => void)",
9062
+ "required": false
9063
+ }
9064
+ ]
9065
+ }
7726
9066
  },
7727
9067
  {
7728
9068
  "name": "secondaryAction",
7729
9069
  "type": "HeroAction",
7730
- "required": false
9070
+ "required": false,
9071
+ "shape": {
9072
+ "type": "HeroAction",
9073
+ "collection": "object",
9074
+ "fields": [
9075
+ {
9076
+ "name": "label",
9077
+ "type": "string",
9078
+ "required": true
9079
+ },
9080
+ {
9081
+ "name": "onClick",
9082
+ "type": "(() => void)",
9083
+ "required": false
9084
+ }
9085
+ ]
9086
+ }
7731
9087
  },
7732
9088
  {
7733
9089
  "name": "secondaryActionIcon",
@@ -7873,7 +9229,8 @@
7873
9229
  "name": "fillPlaceholders",
7874
9230
  "type": "boolean",
7875
9231
  "required": false,
7876
- "description": "When the board is stretched taller than its real content (e.g. embedded in a fixed-height demo frame), stretches every column to equal height and caps off its real cards with a dashed placeholder slot down to the bottom instead of leaving blank canvas. No-op at the board's natural height."
9232
+ "description": "When the board is stretched taller than its real content (e.g. embedded in a fixed-height demo frame), stretches every column to equal height and caps off its real cards with a dashed placeholder slot down to the bottom instead of leaving blank canvas. No-op at the board's natural height.",
9233
+ "since": "0.3.3"
7877
9234
  }
7878
9235
  ],
7879
9236
  "contract": {
@@ -7953,7 +9310,28 @@
7953
9310
  "name": "socialProviders",
7954
9311
  "type": "LoginSocialProvider[]",
7955
9312
  "required": false,
7956
- "default": "[]"
9313
+ "default": "[]",
9314
+ "shape": {
9315
+ "type": "LoginSocialProvider",
9316
+ "collection": "array",
9317
+ "fields": [
9318
+ {
9319
+ "name": "icon",
9320
+ "type": "ReactNode",
9321
+ "required": true
9322
+ },
9323
+ {
9324
+ "name": "label",
9325
+ "type": "string",
9326
+ "required": true
9327
+ },
9328
+ {
9329
+ "name": "onClick",
9330
+ "type": "(() => void)",
9331
+ "required": false
9332
+ }
9333
+ ]
9334
+ }
7957
9335
  },
7958
9336
  {
7959
9337
  "name": "onSubmit",
@@ -8074,7 +9452,38 @@
8074
9452
  {
8075
9453
  "name": "items",
8076
9454
  "type": "NotificationPanelItem[]",
8077
- "required": true
9455
+ "required": true,
9456
+ "shape": {
9457
+ "type": "NotificationPanelItem",
9458
+ "collection": "array",
9459
+ "fields": [
9460
+ {
9461
+ "name": "id",
9462
+ "type": "string",
9463
+ "required": true
9464
+ },
9465
+ {
9466
+ "name": "icon",
9467
+ "type": "ReactNode",
9468
+ "required": false
9469
+ },
9470
+ {
9471
+ "name": "title",
9472
+ "type": "string",
9473
+ "required": true
9474
+ },
9475
+ {
9476
+ "name": "timestamp",
9477
+ "type": "string",
9478
+ "required": true
9479
+ },
9480
+ {
9481
+ "name": "read",
9482
+ "type": "boolean",
9483
+ "required": false
9484
+ }
9485
+ ]
9486
+ }
8078
9487
  },
8079
9488
  {
8080
9489
  "name": "onMarkAllRead",
@@ -8112,7 +9521,24 @@
8112
9521
  {
8113
9522
  "name": "items",
8114
9523
  "type": "OnboardingProgressItem[]",
8115
- "required": true
9524
+ "required": true,
9525
+ "shape": {
9526
+ "type": "OnboardingProgressItem",
9527
+ "collection": "array",
9528
+ "fields": [
9529
+ {
9530
+ "name": "label",
9531
+ "type": "string",
9532
+ "required": true
9533
+ },
9534
+ {
9535
+ "name": "progress",
9536
+ "type": "number",
9537
+ "required": true,
9538
+ "description": "0-100."
9539
+ }
9540
+ ]
9541
+ }
8116
9542
  },
8117
9543
  {
8118
9544
  "name": "variant",
@@ -8154,7 +9580,43 @@
8154
9580
  {
8155
9581
  "name": "items",
8156
9582
  "type": "OrderConfirmationItem[]",
8157
- "required": true
9583
+ "required": true,
9584
+ "shape": {
9585
+ "type": "OrderConfirmationItem",
9586
+ "collection": "array",
9587
+ "fields": [
9588
+ {
9589
+ "name": "id",
9590
+ "type": "string",
9591
+ "required": false
9592
+ },
9593
+ {
9594
+ "name": "image",
9595
+ "type": "string",
9596
+ "required": true
9597
+ },
9598
+ {
9599
+ "name": "imageAlt",
9600
+ "type": "string",
9601
+ "required": false
9602
+ },
9603
+ {
9604
+ "name": "name",
9605
+ "type": "string",
9606
+ "required": true
9607
+ },
9608
+ {
9609
+ "name": "variant",
9610
+ "type": "string",
9611
+ "required": false
9612
+ },
9613
+ {
9614
+ "name": "price",
9615
+ "type": "number",
9616
+ "required": true
9617
+ }
9618
+ ]
9619
+ }
8158
9620
  },
8159
9621
  {
8160
9622
  "name": "total",
@@ -8210,7 +9672,35 @@
8210
9672
  "name": "card",
8211
9673
  "type": "PaymentMethodCard",
8212
9674
  "required": false,
8213
- "description": "Omit to show the Empty state."
9675
+ "description": "Omit to show the Empty state.",
9676
+ "shape": {
9677
+ "type": "PaymentMethodCard",
9678
+ "collection": "object",
9679
+ "fields": [
9680
+ {
9681
+ "name": "brand",
9682
+ "type": "PaymentMethodBrand",
9683
+ "required": true
9684
+ },
9685
+ {
9686
+ "name": "last4",
9687
+ "type": "string",
9688
+ "required": true,
9689
+ "description": "Last 4 digits, e.g. \"4242\"."
9690
+ },
9691
+ {
9692
+ "name": "expiry",
9693
+ "type": "string",
9694
+ "required": true,
9695
+ "description": "e.g. \"08/27\""
9696
+ },
9697
+ {
9698
+ "name": "status",
9699
+ "type": "PaymentMethodStatus",
9700
+ "required": false
9701
+ }
9702
+ ]
9703
+ }
8214
9704
  },
8215
9705
  {
8216
9706
  "name": "onUpdateCard",
@@ -8269,7 +9759,66 @@
8269
9759
  {
8270
9760
  "name": "plans",
8271
9761
  "type": "PricingPlan[]",
8272
- "required": true
9762
+ "required": true,
9763
+ "shape": {
9764
+ "type": "PricingPlan",
9765
+ "collection": "array",
9766
+ "fields": [
9767
+ {
9768
+ "name": "id",
9769
+ "type": "string",
9770
+ "required": false
9771
+ },
9772
+ {
9773
+ "name": "name",
9774
+ "type": "string",
9775
+ "required": true
9776
+ },
9777
+ {
9778
+ "name": "price",
9779
+ "type": "string",
9780
+ "required": true
9781
+ },
9782
+ {
9783
+ "name": "period",
9784
+ "type": "string",
9785
+ "required": false,
9786
+ "description": "Omit for a plan with no numeric period, e.g. \"Custom\"."
9787
+ },
9788
+ {
9789
+ "name": "description",
9790
+ "type": "string",
9791
+ "required": true
9792
+ },
9793
+ {
9794
+ "name": "ctaLabel",
9795
+ "type": "string",
9796
+ "required": true
9797
+ },
9798
+ {
9799
+ "name": "onCtaClick",
9800
+ "type": "(() => void)",
9801
+ "required": false
9802
+ },
9803
+ {
9804
+ "name": "features",
9805
+ "type": "string[]",
9806
+ "required": true
9807
+ },
9808
+ {
9809
+ "name": "highlighted",
9810
+ "type": "boolean",
9811
+ "required": false,
9812
+ "description": "Drives the \"Most popular\" badge, accent border/shadow, and primary CTA."
9813
+ },
9814
+ {
9815
+ "name": "badgeLabel",
9816
+ "type": "string",
9817
+ "required": false,
9818
+ "description": "Defaults to \"Most popular\" when highlighted."
9819
+ }
9820
+ ]
9821
+ }
8273
9822
  },
8274
9823
  {
8275
9824
  "name": "className",
@@ -8302,7 +9851,23 @@
8302
9851
  {
8303
9852
  "name": "images",
8304
9853
  "type": "ProductGalleryImage[]",
8305
- "required": true
9854
+ "required": true,
9855
+ "shape": {
9856
+ "type": "ProductGalleryImage",
9857
+ "collection": "array",
9858
+ "fields": [
9859
+ {
9860
+ "name": "src",
9861
+ "type": "string",
9862
+ "required": true
9863
+ },
9864
+ {
9865
+ "name": "alt",
9866
+ "type": "string",
9867
+ "required": false
9868
+ }
9869
+ ]
9870
+ }
8306
9871
  },
8307
9872
  {
8308
9873
  "name": "rating",
@@ -8339,13 +9904,50 @@
8339
9904
  "name": "colors",
8340
9905
  "type": "ProductDetailColorOption[]",
8341
9906
  "required": false,
8342
- "default": "[]"
9907
+ "default": "[]",
9908
+ "shape": {
9909
+ "type": "ProductDetailColorOption",
9910
+ "collection": "array",
9911
+ "fields": [
9912
+ {
9913
+ "name": "label",
9914
+ "type": "string",
9915
+ "required": true
9916
+ },
9917
+ {
9918
+ "name": "color",
9919
+ "type": "string",
9920
+ "required": true
9921
+ },
9922
+ {
9923
+ "name": "available",
9924
+ "type": "boolean",
9925
+ "required": false
9926
+ }
9927
+ ]
9928
+ }
8343
9929
  },
8344
9930
  {
8345
9931
  "name": "sizes",
8346
9932
  "type": "ProductDetailSizeOption[]",
8347
9933
  "required": false,
8348
- "default": "[]"
9934
+ "default": "[]",
9935
+ "shape": {
9936
+ "type": "ProductDetailSizeOption",
9937
+ "collection": "array",
9938
+ "fields": [
9939
+ {
9940
+ "name": "size",
9941
+ "type": "string",
9942
+ "required": true
9943
+ },
9944
+ {
9945
+ "name": "available",
9946
+ "type": "boolean",
9947
+ "required": false
9948
+ }
9949
+ ]
9950
+ }
8349
9951
  },
8350
9952
  {
8351
9953
  "name": "defaultColor",
@@ -8431,7 +10033,105 @@
8431
10033
  {
8432
10034
  "name": "products",
8433
10035
  "type": "ProductGridItem[]",
8434
- "required": true
10036
+ "required": true,
10037
+ "shape": {
10038
+ "type": "ProductGridItem",
10039
+ "collection": "array",
10040
+ "fields": [
10041
+ {
10042
+ "name": "id",
10043
+ "type": "string",
10044
+ "required": false,
10045
+ "description": "Unique key for the grid -- defaults to `name` if omitted."
10046
+ },
10047
+ {
10048
+ "name": "image",
10049
+ "type": "string",
10050
+ "required": true
10051
+ },
10052
+ {
10053
+ "name": "imageAlt",
10054
+ "type": "string",
10055
+ "required": false
10056
+ },
10057
+ {
10058
+ "name": "name",
10059
+ "type": "string",
10060
+ "required": true
10061
+ },
10062
+ {
10063
+ "name": "description",
10064
+ "type": "string",
10065
+ "required": false
10066
+ },
10067
+ {
10068
+ "name": "price",
10069
+ "type": "number",
10070
+ "required": true
10071
+ },
10072
+ {
10073
+ "name": "compareAtPrice",
10074
+ "type": "number",
10075
+ "required": false,
10076
+ "description": "Presence switches to the sale badge + struck-original/danger-current price."
10077
+ },
10078
+ {
10079
+ "name": "rating",
10080
+ "type": "number",
10081
+ "required": false
10082
+ },
10083
+ {
10084
+ "name": "reviewCount",
10085
+ "type": "number",
10086
+ "required": false
10087
+ },
10088
+ {
10089
+ "name": "colors",
10090
+ "type": "ProductCardColor[]",
10091
+ "required": false
10092
+ },
10093
+ {
10094
+ "name": "onColorSelect",
10095
+ "type": "((id: string) => void)",
10096
+ "required": false
10097
+ },
10098
+ {
10099
+ "name": "inStock",
10100
+ "type": "boolean",
10101
+ "required": false
10102
+ },
10103
+ {
10104
+ "name": "wishlisted",
10105
+ "type": "boolean",
10106
+ "required": false
10107
+ },
10108
+ {
10109
+ "name": "onWishlistToggle",
10110
+ "type": "((wishlisted: boolean) => void)",
10111
+ "required": false
10112
+ },
10113
+ {
10114
+ "name": "onAddItem",
10115
+ "type": "(() => void)",
10116
+ "required": false
10117
+ },
10118
+ {
10119
+ "name": "addItemLabel",
10120
+ "type": "string",
10121
+ "required": false
10122
+ },
10123
+ {
10124
+ "name": "formatPrice",
10125
+ "type": "((amount: number) => string)",
10126
+ "required": false
10127
+ },
10128
+ {
10129
+ "name": "className",
10130
+ "type": "string",
10131
+ "required": false
10132
+ }
10133
+ ]
10134
+ }
8435
10135
  },
8436
10136
  {
8437
10137
  "name": "showFilterBar",
@@ -8581,7 +10281,23 @@
8581
10281
  {
8582
10282
  "name": "links",
8583
10283
  "type": "SectionFooterLink[]",
8584
- "required": false
10284
+ "required": false,
10285
+ "shape": {
10286
+ "type": "SectionFooterLink",
10287
+ "collection": "array",
10288
+ "fields": [
10289
+ {
10290
+ "name": "label",
10291
+ "type": "string",
10292
+ "required": true
10293
+ },
10294
+ {
10295
+ "name": "href",
10296
+ "type": "string",
10297
+ "required": true
10298
+ }
10299
+ ]
10300
+ }
8585
10301
  },
8586
10302
  {
8587
10303
  "name": "variant",
@@ -8616,7 +10332,54 @@
8616
10332
  {
8617
10333
  "name": "items",
8618
10334
  "type": "ShoppingCartItemData[]",
8619
- "required": true
10335
+ "required": true,
10336
+ "shape": {
10337
+ "type": "ShoppingCartItemData",
10338
+ "collection": "array",
10339
+ "fields": [
10340
+ {
10341
+ "name": "id",
10342
+ "type": "string",
10343
+ "required": false
10344
+ },
10345
+ {
10346
+ "name": "image",
10347
+ "type": "string",
10348
+ "required": true
10349
+ },
10350
+ {
10351
+ "name": "imageAlt",
10352
+ "type": "string",
10353
+ "required": false
10354
+ },
10355
+ {
10356
+ "name": "name",
10357
+ "type": "string",
10358
+ "required": true
10359
+ },
10360
+ {
10361
+ "name": "variant",
10362
+ "type": "string",
10363
+ "required": false
10364
+ },
10365
+ {
10366
+ "name": "price",
10367
+ "type": "number",
10368
+ "required": true
10369
+ },
10370
+ {
10371
+ "name": "compareAtPrice",
10372
+ "type": "number",
10373
+ "required": false,
10374
+ "description": "Presence switches that row to CartItem's own struck-original + danger-current sale treatment."
10375
+ },
10376
+ {
10377
+ "name": "quantity",
10378
+ "type": "number",
10379
+ "required": true
10380
+ }
10381
+ ]
10382
+ }
8620
10383
  },
8621
10384
  {
8622
10385
  "name": "shippingCost",
@@ -8678,7 +10441,28 @@
8678
10441
  "name": "socialProviders",
8679
10442
  "type": "SignUpSocialProvider[]",
8680
10443
  "required": false,
8681
- "default": "[]"
10444
+ "default": "[]",
10445
+ "shape": {
10446
+ "type": "SignUpSocialProvider",
10447
+ "collection": "array",
10448
+ "fields": [
10449
+ {
10450
+ "name": "icon",
10451
+ "type": "ReactNode",
10452
+ "required": true
10453
+ },
10454
+ {
10455
+ "name": "label",
10456
+ "type": "string",
10457
+ "required": true
10458
+ },
10459
+ {
10460
+ "name": "onClick",
10461
+ "type": "(() => void)",
10462
+ "required": false
10463
+ }
10464
+ ]
10465
+ }
8682
10466
  },
8683
10467
  {
8684
10468
  "name": "onSubmit",
@@ -8730,7 +10514,60 @@
8730
10514
  {
8731
10515
  "name": "members",
8732
10516
  "type": "TeamSectionMember[]",
8733
- "required": true
10517
+ "required": true,
10518
+ "shape": {
10519
+ "type": "TeamSectionMember",
10520
+ "collection": "array",
10521
+ "fields": [
10522
+ {
10523
+ "name": "id",
10524
+ "type": "string",
10525
+ "required": false,
10526
+ "description": "Unique key for the grid -- defaults to `name` if omitted."
10527
+ },
10528
+ {
10529
+ "name": "location",
10530
+ "type": "string",
10531
+ "required": true
10532
+ },
10533
+ {
10534
+ "name": "name",
10535
+ "type": "string",
10536
+ "required": true
10537
+ },
10538
+ {
10539
+ "name": "role",
10540
+ "type": "string",
10541
+ "required": true
10542
+ },
10543
+ {
10544
+ "name": "image",
10545
+ "type": "string",
10546
+ "required": true
10547
+ },
10548
+ {
10549
+ "name": "locationStatus",
10550
+ "type": "LocationDotStatus",
10551
+ "required": false
10552
+ },
10553
+ {
10554
+ "name": "imageAlt",
10555
+ "type": "string",
10556
+ "required": false
10557
+ },
10558
+ {
10559
+ "name": "bio",
10560
+ "type": "string",
10561
+ "required": false,
10562
+ "description": "Presence switches to the \"Card details\" style (adds this paragraph below the meta row)."
10563
+ },
10564
+ {
10565
+ "name": "socialLinks",
10566
+ "type": "TeamCardSocialLink[]",
10567
+ "required": false
10568
+ }
10569
+ ]
10570
+ }
8734
10571
  },
8735
10572
  {
8736
10573
  "name": "className",
@@ -8758,7 +10595,33 @@
8758
10595
  {
8759
10596
  "name": "testimonials",
8760
10597
  "type": "Testimonial[]",
8761
- "required": true
10598
+ "required": true,
10599
+ "shape": {
10600
+ "type": "Testimonial",
10601
+ "collection": "array",
10602
+ "fields": [
10603
+ {
10604
+ "name": "quote",
10605
+ "type": "string",
10606
+ "required": true
10607
+ },
10608
+ {
10609
+ "name": "authorName",
10610
+ "type": "string",
10611
+ "required": true
10612
+ },
10613
+ {
10614
+ "name": "authorRole",
10615
+ "type": "string",
10616
+ "required": true
10617
+ },
10618
+ {
10619
+ "name": "authorAvatar",
10620
+ "type": "string",
10621
+ "required": false
10622
+ }
10623
+ ]
10624
+ }
8762
10625
  },
8763
10626
  {
8764
10627
  "name": "className",
@@ -8825,32 +10688,38 @@
8825
10688
  {
8826
10689
  "name": "DEFAULT_CHECKOUT_STEPS",
8827
10690
  "kind": "constant",
8828
- "import": "@sakaniui/react"
10691
+ "import": "@sakaniui/react",
10692
+ "since": "0.3.0"
8829
10693
  },
8830
10694
  {
8831
10695
  "name": "getContrastColor",
8832
10696
  "kind": "helper",
8833
- "import": "@sakaniui/react"
10697
+ "import": "@sakaniui/react",
10698
+ "since": "0.3.0"
8834
10699
  },
8835
10700
  {
8836
10701
  "name": "iconStrokeWidth",
8837
10702
  "kind": "helper",
8838
- "import": "@sakaniui/react"
10703
+ "import": "@sakaniui/react",
10704
+ "since": "0.3.0"
8839
10705
  },
8840
10706
  {
8841
10707
  "name": "syncLiquidBackdrop",
8842
10708
  "kind": "helper",
8843
- "import": "@sakaniui/react"
10709
+ "import": "@sakaniui/react",
10710
+ "since": "0.4.3"
8844
10711
  },
8845
10712
  {
8846
10713
  "name": "useHoverHighlight",
8847
10714
  "kind": "hook",
8848
- "import": "@sakaniui/react"
10715
+ "import": "@sakaniui/react",
10716
+ "since": "0.3.21"
8849
10717
  },
8850
10718
  {
8851
10719
  "name": "useLiquidGlass",
8852
10720
  "kind": "hook",
8853
- "import": "@sakaniui/react"
10721
+ "import": "@sakaniui/react",
10722
+ "since": "0.4.0"
8854
10723
  }
8855
10724
  ]
8856
10725
  }