@sakaniui/react 0.8.10 → 0.8.12

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,7 +1,7 @@
1
1
  {
2
- "schemaVersion": 4,
2
+ "schemaVersion": 6,
3
3
  "name": "@sakaniui/react",
4
- "version": "0.8.10",
4
+ "version": "0.8.12",
5
5
  "description": "Machine-readable contract of the SakaniUI React library, generated from its TypeScript source.",
6
6
  "docs": "https://www.sakaniui.com",
7
7
  "guide": "https://www.sakaniui.com/llms-full.txt",
@@ -23,12 +23,13 @@
23
23
  "@sakaniui/react/icons": "Tabler icons: IconName and IconNameFilled, one module each (5184 outline, 1054 filled)."
24
24
  },
25
25
  "conventions": {
26
- "version": "This manifest describes @sakaniui/react@0.8.10. 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.",
26
+ "version": "This manifest describes @sakaniui/react@0.8.12. 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.",
27
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.",
28
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.",
29
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.",
30
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.",
31
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.",
32
33
  "literals": "Prop `values` keep their real type: a number is a number (columns: 2), a string is a string (\"md\")."
33
34
  },
34
35
  "nativeAttributes": [
@@ -480,7 +481,14 @@
480
481
  "requiresAccessibleName": false
481
482
  },
482
483
  "since": "0.1.0",
483
- "example": "import { Accordion } from '@sakaniui/react';\n\n<Accordion>Label</Accordion>"
484
+ "example": "import { Accordion } from '@sakaniui/react';\n\n<Accordion>Label</Accordion>",
485
+ "aliases": [
486
+ "collapse",
487
+ "collapsible",
488
+ "expandable",
489
+ "disclosure",
490
+ "expand collapse"
491
+ ]
484
492
  },
485
493
  {
486
494
  "name": "AccordionItem",
@@ -532,7 +540,52 @@
532
540
  {
533
541
  "name": "items",
534
542
  "type": "ActivityFeedItem[]",
535
- "required": true
543
+ "required": true,
544
+ "shape": {
545
+ "type": "ActivityFeedItem",
546
+ "collection": "array",
547
+ "fields": [
548
+ {
549
+ "name": "id",
550
+ "type": "string | number",
551
+ "required": false
552
+ },
553
+ {
554
+ "name": "actor",
555
+ "type": "string",
556
+ "required": true,
557
+ "description": "Who performed the action — rendered in fg/default, the rest in fg/muted."
558
+ },
559
+ {
560
+ "name": "description",
561
+ "type": "ReactNode",
562
+ "required": true,
563
+ "description": "Rest of the sentence, e.g. \"commented on Design Review\". Wrap the object/target span in `ActivityFeedHighlight` to color it fg/default."
564
+ },
565
+ {
566
+ "name": "timestamp",
567
+ "type": "string",
568
+ "required": true
569
+ },
570
+ {
571
+ "name": "icon",
572
+ "type": "ReactNode",
573
+ "required": false,
574
+ "description": "Rail dot icon (variant=\"default\"). Rendered at 16px, colored fg/muted."
575
+ },
576
+ {
577
+ "name": "avatarSrc",
578
+ "type": "string",
579
+ "required": false,
580
+ "description": "Avatar image (variant=\"compact\")."
581
+ },
582
+ {
583
+ "name": "avatarAlt",
584
+ "type": "string",
585
+ "required": false
586
+ }
587
+ ]
588
+ }
536
589
  },
537
590
  {
538
591
  "name": "variant",
@@ -620,7 +673,15 @@
620
673
  "requiresAccessibleName": false
621
674
  },
622
675
  "since": "0.1.0",
623
- "example": "import { Alert } from '@sakaniui/react';\n\n<Alert />"
676
+ "example": "import { Alert } from '@sakaniui/react';\n\n<Alert />",
677
+ "aliases": [
678
+ "callout",
679
+ "notice",
680
+ "inline message",
681
+ "inline alert",
682
+ "status message",
683
+ "message box"
684
+ ]
624
685
  },
625
686
  {
626
687
  "name": "Announcement",
@@ -679,7 +740,13 @@
679
740
  "requiresAccessibleName": false
680
741
  },
681
742
  "since": "0.1.0",
682
- "example": "import { Announcement } from '@sakaniui/react';\n\n<Announcement message=\"Message\" />"
743
+ "example": "import { Announcement } from '@sakaniui/react';\n\n<Announcement message=\"Message\" />",
744
+ "aliases": [
745
+ "banner",
746
+ "announcement bar",
747
+ "top banner",
748
+ "promo bar"
749
+ ]
683
750
  },
684
751
  {
685
752
  "name": "AreaChart",
@@ -691,7 +758,29 @@
691
758
  {
692
759
  "name": "data",
693
760
  "type": "AreaChartDatum[]",
694
- "required": true
761
+ "required": true,
762
+ "shape": {
763
+ "type": "AreaChartDatum",
764
+ "collection": "array",
765
+ "fields": [
766
+ {
767
+ "name": "label",
768
+ "type": "string",
769
+ "required": true
770
+ },
771
+ {
772
+ "name": "value",
773
+ "type": "number",
774
+ "required": true
775
+ },
776
+ {
777
+ "name": "value2",
778
+ "type": "number",
779
+ "required": false,
780
+ "description": "Renders a second area, stacked on top of `value` when `variant=\"stacked\"`."
781
+ }
782
+ ]
783
+ }
695
784
  },
696
785
  {
697
786
  "name": "variant",
@@ -799,7 +888,12 @@
799
888
  "requiresAccessibleName": false
800
889
  },
801
890
  "since": "0.1.0",
802
- "example": "import { Avatar } from '@sakaniui/react';\n\n<Avatar />"
891
+ "example": "import { Avatar } from '@sakaniui/react';\n\n<Avatar />",
892
+ "aliases": [
893
+ "profile picture",
894
+ "user avatar",
895
+ "profile image"
896
+ ]
803
897
  },
804
898
  {
805
899
  "name": "AvatarGroup",
@@ -832,7 +926,28 @@
832
926
  "name": "avatars",
833
927
  "type": "{ src?: string | undefined; initials?: string | undefined; alt?: string | undefined; }[]",
834
928
  "required": true,
835
- "description": "Avatar definitions."
929
+ "description": "Avatar definitions.",
930
+ "shape": {
931
+ "type": "{ src?: string | undefined; initials?: string | undefined; alt?: string | undefined; }",
932
+ "collection": "array",
933
+ "fields": [
934
+ {
935
+ "name": "src",
936
+ "type": "string",
937
+ "required": false
938
+ },
939
+ {
940
+ "name": "initials",
941
+ "type": "string",
942
+ "required": false
943
+ },
944
+ {
945
+ "name": "alt",
946
+ "type": "string",
947
+ "required": false
948
+ }
949
+ ]
950
+ }
836
951
  },
837
952
  {
838
953
  "name": "className",
@@ -975,7 +1090,13 @@
975
1090
  "requiresAccessibleName": false
976
1091
  },
977
1092
  "since": "0.1.0",
978
- "example": "import { Badge } from '@sakaniui/react';\n\n<Badge>Label</Badge>"
1093
+ "example": "import { Badge } from '@sakaniui/react';\n\n<Badge>Label</Badge>",
1094
+ "aliases": [
1095
+ "pill",
1096
+ "status pill",
1097
+ "status badge",
1098
+ "lozenge"
1099
+ ]
979
1100
  },
980
1101
  {
981
1102
  "name": "Balance",
@@ -998,7 +1119,30 @@
998
1119
  {
999
1120
  "name": "change",
1000
1121
  "type": "BalanceChangeInfo",
1001
- "required": false
1122
+ "required": false,
1123
+ "shape": {
1124
+ "type": "BalanceChangeInfo",
1125
+ "collection": "object",
1126
+ "fields": [
1127
+ {
1128
+ "name": "value",
1129
+ "type": "string",
1130
+ "required": true,
1131
+ "description": "e.g. \"+$1,240.50\" -- sign/formatting is the caller's responsibility."
1132
+ },
1133
+ {
1134
+ "name": "label",
1135
+ "type": "string",
1136
+ "required": false,
1137
+ "description": "Defaults to \"this month\"."
1138
+ },
1139
+ {
1140
+ "name": "direction",
1141
+ "type": "\"up\" | \"down\"",
1142
+ "required": false
1143
+ }
1144
+ ]
1145
+ }
1002
1146
  },
1003
1147
  {
1004
1148
  "name": "progress",
@@ -1042,7 +1186,28 @@
1042
1186
  {
1043
1187
  "name": "data",
1044
1188
  "type": "BarChartDatum[]",
1045
- "required": true
1189
+ "required": true,
1190
+ "shape": {
1191
+ "type": "BarChartDatum",
1192
+ "collection": "array",
1193
+ "fields": [
1194
+ {
1195
+ "name": "label",
1196
+ "type": "string",
1197
+ "required": true
1198
+ },
1199
+ {
1200
+ "name": "value",
1201
+ "type": "number",
1202
+ "required": true
1203
+ },
1204
+ {
1205
+ "name": "value2",
1206
+ "type": "number",
1207
+ "required": false
1208
+ }
1209
+ ]
1210
+ }
1046
1211
  },
1047
1212
  {
1048
1213
  "name": "variant",
@@ -1108,7 +1273,34 @@
1108
1273
  "name": "author",
1109
1274
  "type": "BlogBlockquoteAuthor",
1110
1275
  "required": false,
1111
- "description": "Presence switches to the card + quote-mark-glyphs + attribution-row treatment."
1276
+ "description": "Presence switches to the card + quote-mark-glyphs + attribution-row treatment.",
1277
+ "shape": {
1278
+ "type": "BlogBlockquoteAuthor",
1279
+ "collection": "object",
1280
+ "fields": [
1281
+ {
1282
+ "name": "name",
1283
+ "type": "string",
1284
+ "required": true
1285
+ },
1286
+ {
1287
+ "name": "role",
1288
+ "type": "string",
1289
+ "required": true,
1290
+ "description": "e.g. \"Founder at Loopline\" -- rendered after the name as \", {role}\"."
1291
+ },
1292
+ {
1293
+ "name": "avatarSrc",
1294
+ "type": "string",
1295
+ "required": false
1296
+ },
1297
+ {
1298
+ "name": "avatarAlt",
1299
+ "type": "string",
1300
+ "required": false
1301
+ }
1302
+ ]
1303
+ }
1112
1304
  },
1113
1305
  {
1114
1306
  "name": "className",
@@ -1252,7 +1444,34 @@
1252
1444
  {
1253
1445
  "name": "author",
1254
1446
  "type": "BlogListingCardAuthor",
1255
- "required": true
1447
+ "required": true,
1448
+ "shape": {
1449
+ "type": "BlogListingCardAuthor",
1450
+ "collection": "object",
1451
+ "fields": [
1452
+ {
1453
+ "name": "name",
1454
+ "type": "string",
1455
+ "required": true
1456
+ },
1457
+ {
1458
+ "name": "date",
1459
+ "type": "string",
1460
+ "required": true,
1461
+ "description": "e.g. \"Aug 12, 2026\" -- rendered after the name as \" · {date}\"."
1462
+ },
1463
+ {
1464
+ "name": "avatarSrc",
1465
+ "type": "string",
1466
+ "required": false
1467
+ },
1468
+ {
1469
+ "name": "avatarAlt",
1470
+ "type": "string",
1471
+ "required": false
1472
+ }
1473
+ ]
1474
+ }
1256
1475
  },
1257
1476
  {
1258
1477
  "name": "layout",
@@ -1320,7 +1539,39 @@
1320
1539
  {
1321
1540
  "name": "author",
1322
1541
  "type": "BlogListingFeaturedCardAuthor",
1323
- "required": true
1542
+ "required": true,
1543
+ "shape": {
1544
+ "type": "BlogListingFeaturedCardAuthor",
1545
+ "collection": "object",
1546
+ "fields": [
1547
+ {
1548
+ "name": "name",
1549
+ "type": "string",
1550
+ "required": true
1551
+ },
1552
+ {
1553
+ "name": "date",
1554
+ "type": "string",
1555
+ "required": true,
1556
+ "description": "e.g. \"Aug 12, 2026\" -- rendered after the name as \" · {date}\"."
1557
+ },
1558
+ {
1559
+ "name": "avatarSrc",
1560
+ "type": "string",
1561
+ "required": false
1562
+ },
1563
+ {
1564
+ "name": "avatarAlt",
1565
+ "type": "string",
1566
+ "required": false
1567
+ },
1568
+ {
1569
+ "name": "initials",
1570
+ "type": "string",
1571
+ "required": false
1572
+ }
1573
+ ]
1574
+ }
1324
1575
  },
1325
1576
  {
1326
1577
  "name": "ctaLabel",
@@ -1536,7 +1787,23 @@
1536
1787
  {
1537
1788
  "name": "items",
1538
1789
  "type": "BreadcrumbItem[]",
1539
- "required": true
1790
+ "required": true,
1791
+ "shape": {
1792
+ "type": "BreadcrumbItem",
1793
+ "collection": "array",
1794
+ "fields": [
1795
+ {
1796
+ "name": "label",
1797
+ "type": "string",
1798
+ "required": true
1799
+ },
1800
+ {
1801
+ "name": "href",
1802
+ "type": "string",
1803
+ "required": false
1804
+ }
1805
+ ]
1806
+ }
1540
1807
  },
1541
1808
  {
1542
1809
  "name": "variant",
@@ -1561,7 +1828,12 @@
1561
1828
  "requiresAccessibleName": false
1562
1829
  },
1563
1830
  "since": "0.1.0",
1564
- "example": "import { Breadcrumb } from '@sakaniui/react';\n\n<Breadcrumb items={[{ label: \"Label\" }]} />"
1831
+ "example": "import { Breadcrumb } from '@sakaniui/react';\n\n<Breadcrumb items={[{ label: \"Label\" }]} />",
1832
+ "aliases": [
1833
+ "breadcrumbs",
1834
+ "bread crumbs",
1835
+ "path trail"
1836
+ ]
1565
1837
  },
1566
1838
  {
1567
1839
  "name": "Button",
@@ -1664,7 +1936,23 @@
1664
1936
  "name": "range",
1665
1937
  "type": "DateRange",
1666
1938
  "required": false,
1667
- "description": "Selected range (range mode)."
1939
+ "description": "Selected range (range mode).",
1940
+ "shape": {
1941
+ "type": "DateRange",
1942
+ "collection": "object",
1943
+ "fields": [
1944
+ {
1945
+ "name": "from",
1946
+ "type": "Date",
1947
+ "required": false
1948
+ },
1949
+ {
1950
+ "name": "to",
1951
+ "type": "Date",
1952
+ "required": false
1953
+ }
1954
+ ]
1955
+ }
1668
1956
  },
1669
1957
  {
1670
1958
  "name": "onRangeChange",
@@ -1708,7 +1996,13 @@
1708
1996
  "requiresAccessibleName": false
1709
1997
  },
1710
1998
  "since": "0.1.0",
1711
- "example": "import { Calendar } from '@sakaniui/react';\n\n<Calendar />"
1999
+ "example": "import { Calendar } from '@sakaniui/react';\n\n<Calendar />",
2000
+ "aliases": [
2001
+ "date picker",
2002
+ "datepicker",
2003
+ "date selector",
2004
+ "calendar picker"
2005
+ ]
1712
2006
  },
1713
2007
  {
1714
2008
  "name": "Card",
@@ -1946,7 +2240,13 @@
1946
2240
  "requiresAccessibleName": false
1947
2241
  },
1948
2242
  "since": "0.1.0",
1949
- "example": "import { ChatComposer } from '@sakaniui/react';\n\n<ChatComposer />"
2243
+ "example": "import { ChatComposer } from '@sakaniui/react';\n\n<ChatComposer />",
2244
+ "aliases": [
2245
+ "message input",
2246
+ "chat input",
2247
+ "message box",
2248
+ "composer"
2249
+ ]
1950
2250
  },
1951
2251
  {
1952
2252
  "name": "Checkbox",
@@ -1977,7 +2277,10 @@
1977
2277
  "requiresAccessibleName": false
1978
2278
  },
1979
2279
  "since": "0.1.0",
1980
- "example": "import { Checkbox } from '@sakaniui/react';\n\n<Checkbox />"
2280
+ "example": "import { Checkbox } from '@sakaniui/react';\n\n<Checkbox />",
2281
+ "aliases": [
2282
+ "tickbox"
2283
+ ]
1981
2284
  },
1982
2285
  {
1983
2286
  "name": "CheckoutSteps",
@@ -2068,7 +2371,12 @@
2068
2371
  "requiresAccessibleName": false
2069
2372
  },
2070
2373
  "since": "0.1.0",
2071
- "example": "import { CodeSnippet } from '@sakaniui/react';\n\n<CodeSnippet code=\"Code\" />"
2374
+ "example": "import { CodeSnippet } from '@sakaniui/react';\n\n<CodeSnippet code=\"Code\" />",
2375
+ "aliases": [
2376
+ "code block",
2377
+ "code sample",
2378
+ "code viewer"
2379
+ ]
2072
2380
  },
2073
2381
  {
2074
2382
  "name": "ColorSwatch",
@@ -2133,7 +2441,33 @@
2133
2441
  {
2134
2442
  "name": "options",
2135
2443
  "type": "ComboboxOption[]",
2136
- "required": true
2444
+ "required": true,
2445
+ "shape": {
2446
+ "type": "ComboboxOption",
2447
+ "collection": "array",
2448
+ "fields": [
2449
+ {
2450
+ "name": "value",
2451
+ "type": "string",
2452
+ "required": true
2453
+ },
2454
+ {
2455
+ "name": "label",
2456
+ "type": "string",
2457
+ "required": true
2458
+ },
2459
+ {
2460
+ "name": "icon",
2461
+ "type": "ReactNode",
2462
+ "required": false
2463
+ },
2464
+ {
2465
+ "name": "disabled",
2466
+ "type": "boolean",
2467
+ "required": false
2468
+ }
2469
+ ]
2470
+ }
2137
2471
  },
2138
2472
  {
2139
2473
  "name": "mode",
@@ -2211,7 +2545,15 @@
2211
2545
  "requiresAccessibleName": false
2212
2546
  },
2213
2547
  "since": "0.1.0",
2214
- "example": "import { Combobox } from '@sakaniui/react';\n\n<Combobox options={[{ value: \"Value\", label: \"Label\" }]} />"
2548
+ "example": "import { Combobox } from '@sakaniui/react';\n\n<Combobox options={[{ value: \"Value\", label: \"Label\" }]} />",
2549
+ "aliases": [
2550
+ "autocomplete",
2551
+ "typeahead",
2552
+ "searchable select",
2553
+ "multi select",
2554
+ "multiselect",
2555
+ "tag input"
2556
+ ]
2215
2557
  },
2216
2558
  {
2217
2559
  "name": "ConversationItem",
@@ -2318,7 +2660,13 @@
2318
2660
  "requiresAccessibleName": false
2319
2661
  },
2320
2662
  "since": "0.1.0",
2321
- "example": "import { Divider } from '@sakaniui/react';\n\n<Divider />"
2663
+ "example": "import { Divider } from '@sakaniui/react';\n\n<Divider />",
2664
+ "aliases": [
2665
+ "separator",
2666
+ "horizontal rule",
2667
+ "hr",
2668
+ "rule"
2669
+ ]
2322
2670
  },
2323
2671
  {
2324
2672
  "name": "DonutChart",
@@ -2330,7 +2678,23 @@
2330
2678
  {
2331
2679
  "name": "data",
2332
2680
  "type": "DonutDatum[]",
2333
- "required": true
2681
+ "required": true,
2682
+ "shape": {
2683
+ "type": "DonutDatum",
2684
+ "collection": "array",
2685
+ "fields": [
2686
+ {
2687
+ "name": "label",
2688
+ "type": "string",
2689
+ "required": true
2690
+ },
2691
+ {
2692
+ "name": "value",
2693
+ "type": "number",
2694
+ "required": true
2695
+ }
2696
+ ]
2697
+ }
2334
2698
  },
2335
2699
  {
2336
2700
  "name": "size",
@@ -2431,7 +2795,14 @@
2431
2795
  "requiresAccessibleName": false
2432
2796
  },
2433
2797
  "since": "0.1.0",
2434
- "example": "import { EmptyState } from '@sakaniui/react';\n\n<EmptyState />"
2798
+ "example": "import { EmptyState } from '@sakaniui/react';\n\n<EmptyState />",
2799
+ "aliases": [
2800
+ "no data",
2801
+ "blank state",
2802
+ "zero state",
2803
+ "empty view",
2804
+ "no results"
2805
+ ]
2435
2806
  },
2436
2807
  {
2437
2808
  "name": "Expenses",
@@ -2443,7 +2814,34 @@
2443
2814
  {
2444
2815
  "name": "categories",
2445
2816
  "type": "ExpenseCategory[]",
2446
- "required": true
2817
+ "required": true,
2818
+ "shape": {
2819
+ "type": "ExpenseCategory",
2820
+ "collection": "array",
2821
+ "fields": [
2822
+ {
2823
+ "name": "id",
2824
+ "type": "string | number",
2825
+ "required": false
2826
+ },
2827
+ {
2828
+ "name": "icon",
2829
+ "type": "ReactNode",
2830
+ "required": true
2831
+ },
2832
+ {
2833
+ "name": "label",
2834
+ "type": "string",
2835
+ "required": true
2836
+ },
2837
+ {
2838
+ "name": "amount",
2839
+ "type": "number",
2840
+ "required": true,
2841
+ "description": "Raw amount -- formatted for display via `formatAmount`."
2842
+ }
2843
+ ]
2844
+ }
2447
2845
  },
2448
2846
  {
2449
2847
  "name": "variant",
@@ -2590,7 +2988,15 @@
2590
2988
  "requiresAccessibleName": false
2591
2989
  },
2592
2990
  "since": "0.1.0",
2593
- "example": "import { FileUpload } from '@sakaniui/react';\n\n<FileUpload />"
2991
+ "example": "import { FileUpload } from '@sakaniui/react';\n\n<FileUpload />",
2992
+ "aliases": [
2993
+ "file picker",
2994
+ "dropzone",
2995
+ "drop zone",
2996
+ "file input",
2997
+ "uploader",
2998
+ "upload area"
2999
+ ]
2594
3000
  },
2595
3001
  {
2596
3002
  "name": "FilterChip",
@@ -2661,18 +3067,71 @@
2661
3067
  {
2662
3068
  "name": "primaryCta",
2663
3069
  "type": "FirstPageHeadingCta",
2664
- "required": false
3070
+ "required": false,
3071
+ "shape": {
3072
+ "type": "FirstPageHeadingCta",
3073
+ "collection": "object",
3074
+ "fields": [
3075
+ {
3076
+ "name": "label",
3077
+ "type": "string",
3078
+ "required": true
3079
+ },
3080
+ {
3081
+ "name": "onClick",
3082
+ "type": "(() => void)",
3083
+ "required": false
3084
+ }
3085
+ ]
3086
+ }
2665
3087
  },
2666
3088
  {
2667
3089
  "name": "secondaryCta",
2668
3090
  "type": "FirstPageHeadingCta",
2669
- "required": false
3091
+ "required": false,
3092
+ "shape": {
3093
+ "type": "FirstPageHeadingCta",
3094
+ "collection": "object",
3095
+ "fields": [
3096
+ {
3097
+ "name": "label",
3098
+ "type": "string",
3099
+ "required": true
3100
+ },
3101
+ {
3102
+ "name": "onClick",
3103
+ "type": "(() => void)",
3104
+ "required": false
3105
+ }
3106
+ ]
3107
+ }
2670
3108
  },
2671
3109
  {
2672
3110
  "name": "avatars",
2673
3111
  "type": "{ src?: string; initials?: string; alt?: string | undefined; }[] | undefined",
2674
3112
  "required": false,
2675
- "description": "Presence (non-empty) renders the overlapping avatar stack."
3113
+ "description": "Presence (non-empty) renders the overlapping avatar stack.",
3114
+ "shape": {
3115
+ "type": "{ src?: string | undefined; initials?: string | undefined; alt?: string | undefined; }",
3116
+ "collection": "array",
3117
+ "fields": [
3118
+ {
3119
+ "name": "src",
3120
+ "type": "string",
3121
+ "required": false
3122
+ },
3123
+ {
3124
+ "name": "initials",
3125
+ "type": "string",
3126
+ "required": false
3127
+ },
3128
+ {
3129
+ "name": "alt",
3130
+ "type": "string",
3131
+ "required": false
3132
+ }
3133
+ ]
3134
+ }
2676
3135
  },
2677
3136
  {
2678
3137
  "name": "avatarsCaption",
@@ -2715,7 +3174,23 @@
2715
3174
  {
2716
3175
  "name": "data",
2717
3176
  "type": "FunnelDatum[]",
2718
- "required": true
3177
+ "required": true,
3178
+ "shape": {
3179
+ "type": "FunnelDatum",
3180
+ "collection": "array",
3181
+ "fields": [
3182
+ {
3183
+ "name": "label",
3184
+ "type": "string",
3185
+ "required": true
3186
+ },
3187
+ {
3188
+ "name": "value",
3189
+ "type": "number",
3190
+ "required": true
3191
+ }
3192
+ ]
3193
+ }
2719
3194
  },
2720
3195
  {
2721
3196
  "name": "size",
@@ -2887,7 +3362,13 @@
2887
3362
  "requiresAccessibleName": true
2888
3363
  },
2889
3364
  "since": "0.1.0",
2890
- "example": "import { IconButton } from '@sakaniui/react';\nimport { IconStar } from '@sakaniui/react/icons';\n\n<IconButton icon={IconStar} aria-label=\"Describe the action\" />"
3365
+ "example": "import { IconButton } from '@sakaniui/react';\nimport { IconStar } from '@sakaniui/react/icons';\n\n<IconButton icon={IconStar} aria-label=\"Describe the action\" />",
3366
+ "aliases": [
3367
+ "icon only button",
3368
+ "icon-only button",
3369
+ "icon btn",
3370
+ "round button"
3371
+ ]
2891
3372
  },
2892
3373
  {
2893
3374
  "name": "InlineHint",
@@ -2982,7 +3463,14 @@
2982
3463
  "requiresAccessibleName": false
2983
3464
  },
2984
3465
  "since": "0.1.0",
2985
- "example": "import { Input } from '@sakaniui/react';\n\n<Input />"
3466
+ "example": "import { Input } from '@sakaniui/react';\n\n<Input />",
3467
+ "aliases": [
3468
+ "text field",
3469
+ "textfield",
3470
+ "text input",
3471
+ "input field",
3472
+ "form field"
3473
+ ]
2986
3474
  },
2987
3475
  {
2988
3476
  "name": "InstagramIcon",
@@ -3106,7 +3594,13 @@
3106
3594
  "requiresAccessibleName": false
3107
3595
  },
3108
3596
  "since": "0.1.0",
3109
- "example": "import { Kbd } from '@sakaniui/react';\n\n<Kbd>Label</Kbd>"
3597
+ "example": "import { Kbd } from '@sakaniui/react';\n\n<Kbd>Label</Kbd>",
3598
+ "aliases": [
3599
+ "keyboard shortcut",
3600
+ "key cap",
3601
+ "keycap",
3602
+ "shortcut key"
3603
+ ]
3110
3604
  },
3111
3605
  {
3112
3606
  "name": "Label",
@@ -3236,7 +3730,12 @@
3236
3730
  "requiresAccessibleName": false
3237
3731
  },
3238
3732
  "since": "0.1.0",
3239
- "example": "import { Link } from '@sakaniui/react';\n\n<Link>Label</Link>"
3733
+ "example": "import { Link } from '@sakaniui/react';\n\n<Link>Label</Link>",
3734
+ "aliases": [
3735
+ "anchor",
3736
+ "hyperlink",
3737
+ "text link"
3738
+ ]
3240
3739
  },
3241
3740
  {
3242
3741
  "name": "LinkedinIcon",
@@ -3587,7 +4086,14 @@
3587
4086
  "requiresAccessibleName": false
3588
4087
  },
3589
4088
  "since": "0.1.0",
3590
- "example": "import { Menu } from '@sakaniui/react';\n\n<Menu>Label</Menu>"
4089
+ "example": "import { Menu } from '@sakaniui/react';\n\n<Menu>Label</Menu>",
4090
+ "aliases": [
4091
+ "dropdown",
4092
+ "dropdown menu",
4093
+ "context menu",
4094
+ "actions menu",
4095
+ "kebab menu"
4096
+ ]
3591
4097
  },
3592
4098
  {
3593
4099
  "name": "MenuDivider",
@@ -3744,7 +4250,12 @@
3744
4250
  "requiresAccessibleName": false
3745
4251
  },
3746
4252
  "since": "0.1.0",
3747
- "example": "import { MessageBubble } from '@sakaniui/react';\n\n<MessageBubble />"
4253
+ "example": "import { MessageBubble } from '@sakaniui/react';\n\n<MessageBubble />",
4254
+ "aliases": [
4255
+ "chat bubble",
4256
+ "chat message",
4257
+ "message"
4258
+ ]
3748
4259
  },
3749
4260
  {
3750
4261
  "name": "Metric",
@@ -3800,7 +4311,28 @@
3800
4311
  {
3801
4312
  "name": "links",
3802
4313
  "type": "MobileNavLink[]",
3803
- "required": true
4314
+ "required": true,
4315
+ "shape": {
4316
+ "type": "MobileNavLink",
4317
+ "collection": "array",
4318
+ "fields": [
4319
+ {
4320
+ "name": "label",
4321
+ "type": "string",
4322
+ "required": true
4323
+ },
4324
+ {
4325
+ "name": "href",
4326
+ "type": "string",
4327
+ "required": false
4328
+ },
4329
+ {
4330
+ "name": "onClick",
4331
+ "type": "(() => void)",
4332
+ "required": false
4333
+ }
4334
+ ]
4335
+ }
3804
4336
  },
3805
4337
  {
3806
4338
  "name": "ctaLabel",
@@ -3844,7 +4376,13 @@
3844
4376
  "requiresAccessibleName": false
3845
4377
  },
3846
4378
  "since": "0.3.0",
3847
- "example": "import { MobileNavigationMenu } from '@sakaniui/react';\n\n<MobileNavigationMenu label=\"Label\" links={[{ label: \"Label\" }]} />"
4379
+ "example": "import { MobileNavigationMenu } from '@sakaniui/react';\n\n<MobileNavigationMenu label=\"Label\" links={[{ label: \"Label\" }]} />",
4380
+ "aliases": [
4381
+ "mobile nav",
4382
+ "mobile menu",
4383
+ "hamburger menu",
4384
+ "burger menu"
4385
+ ]
3848
4386
  },
3849
4387
  {
3850
4388
  "name": "Modal",
@@ -3972,7 +4510,18 @@
3972
4510
  "requiresAccessibleName": false
3973
4511
  },
3974
4512
  "since": "0.1.0",
3975
- "example": "import { Modal } from '@sakaniui/react';\n\n<Modal open={true} onClose={() => {}} title=\"Title\" />"
4513
+ "example": "import { Modal } from '@sakaniui/react';\n\n<Modal open={true} onClose={() => {}} title=\"Title\" />",
4514
+ "aliases": [
4515
+ "dialog",
4516
+ "alert dialog",
4517
+ "alertdialog",
4518
+ "confirm dialog",
4519
+ "confirmation dialog",
4520
+ "confirmation",
4521
+ "modal window",
4522
+ "popup dialog",
4523
+ "lightbox"
4524
+ ]
3976
4525
  },
3977
4526
  {
3978
4527
  "name": "NotificationItem",
@@ -4093,7 +4642,12 @@
4093
4642
  "requiresAccessibleName": false
4094
4643
  },
4095
4644
  "since": "0.1.0",
4096
- "example": "import { Pagination } from '@sakaniui/react';\n\n<Pagination total={49} page={1} onPageChange={() => {}} />"
4645
+ "example": "import { Pagination } from '@sakaniui/react';\n\n<Pagination total={49} page={1} onPageChange={() => {}} />",
4646
+ "aliases": [
4647
+ "pager",
4648
+ "paginator",
4649
+ "page numbers"
4650
+ ]
4097
4651
  },
4098
4652
  {
4099
4653
  "name": "PieChart",
@@ -4105,7 +4659,23 @@
4105
4659
  {
4106
4660
  "name": "data",
4107
4661
  "type": "PieDatum[]",
4108
- "required": true
4662
+ "required": true,
4663
+ "shape": {
4664
+ "type": "PieDatum",
4665
+ "collection": "array",
4666
+ "fields": [
4667
+ {
4668
+ "name": "label",
4669
+ "type": "string",
4670
+ "required": true
4671
+ },
4672
+ {
4673
+ "name": "value",
4674
+ "type": "number",
4675
+ "required": true
4676
+ }
4677
+ ]
4678
+ }
4109
4679
  },
4110
4680
  {
4111
4681
  "name": "variant",
@@ -4260,7 +4830,13 @@
4260
4830
  "requiresAccessibleName": false
4261
4831
  },
4262
4832
  "since": "0.1.0",
4263
- "example": "import { Popover } from '@sakaniui/react';\n\n<Popover trigger=\"Trigger\" />"
4833
+ "example": "import { Popover } from '@sakaniui/react';\n\n<Popover trigger=\"Trigger\" />",
4834
+ "aliases": [
4835
+ "popup",
4836
+ "flyout",
4837
+ "floating panel",
4838
+ "popup panel"
4839
+ ]
4264
4840
  },
4265
4841
  {
4266
4842
  "name": "PriceDisplay",
@@ -4359,7 +4935,47 @@
4359
4935
  "name": "colors",
4360
4936
  "type": "ProductCardColor[]",
4361
4937
  "required": false,
4362
- "default": "[]"
4938
+ "default": "[]",
4939
+ "shape": {
4940
+ "type": "ProductCardColor",
4941
+ "collection": "array",
4942
+ "fields": [
4943
+ {
4944
+ "name": "id",
4945
+ "type": "string",
4946
+ "required": false,
4947
+ "description": "Unique key for selection -- defaults to `label` if omitted."
4948
+ },
4949
+ {
4950
+ "name": "selected",
4951
+ "type": "boolean",
4952
+ "required": false
4953
+ },
4954
+ {
4955
+ "name": "className",
4956
+ "type": "string",
4957
+ "required": false
4958
+ },
4959
+ {
4960
+ "name": "color",
4961
+ "type": "string",
4962
+ "required": true,
4963
+ "description": "CSS color value for the swatch fill."
4964
+ },
4965
+ {
4966
+ "name": "label",
4967
+ "type": "string",
4968
+ "required": true,
4969
+ "description": "Accessible name, e.g. \"Navy\"."
4970
+ },
4971
+ {
4972
+ "name": "available",
4973
+ "type": "boolean",
4974
+ "required": false,
4975
+ "description": "Defaults to true. False renders a disabled, unclickable swatch."
4976
+ }
4977
+ ]
4978
+ }
4363
4979
  },
4364
4980
  {
4365
4981
  "name": "onColorSelect",
@@ -4426,7 +5042,23 @@
4426
5042
  {
4427
5043
  "name": "images",
4428
5044
  "type": "ProductGalleryImage[]",
4429
- "required": true
5045
+ "required": true,
5046
+ "shape": {
5047
+ "type": "ProductGalleryImage",
5048
+ "collection": "array",
5049
+ "fields": [
5050
+ {
5051
+ "name": "src",
5052
+ "type": "string",
5053
+ "required": true
5054
+ },
5055
+ {
5056
+ "name": "alt",
5057
+ "type": "string",
5058
+ "required": false
5059
+ }
5060
+ ]
5061
+ }
4430
5062
  },
4431
5063
  {
4432
5064
  "name": "thumbsPosition",
@@ -4507,7 +5139,34 @@
4507
5139
  "name": "socialLinks",
4508
5140
  "type": "ProfileCardSocialLink[]",
4509
5141
  "required": false,
4510
- "default": "[]"
5142
+ "default": "[]",
5143
+ "shape": {
5144
+ "type": "ProfileCardSocialLink",
5145
+ "collection": "array",
5146
+ "fields": [
5147
+ {
5148
+ "name": "icon",
5149
+ "type": "ReactNode",
5150
+ "required": true
5151
+ },
5152
+ {
5153
+ "name": "label",
5154
+ "type": "string",
5155
+ "required": true,
5156
+ "description": "Accessible name, e.g. \"X (Twitter)\"."
5157
+ },
5158
+ {
5159
+ "name": "href",
5160
+ "type": "string",
5161
+ "required": false
5162
+ },
5163
+ {
5164
+ "name": "onClick",
5165
+ "type": "(() => void)",
5166
+ "required": false
5167
+ }
5168
+ ]
5169
+ }
4511
5170
  },
4512
5171
  {
4513
5172
  "name": "className",
@@ -4567,7 +5226,13 @@
4567
5226
  "requiresAccessibleName": false
4568
5227
  },
4569
5228
  "since": "0.1.0",
4570
- "example": "import { Progress } from '@sakaniui/react';\n\n<Progress />"
5229
+ "example": "import { Progress } from '@sakaniui/react';\n\n<Progress />",
5230
+ "aliases": [
5231
+ "progress bar",
5232
+ "progressbar",
5233
+ "meter",
5234
+ "loading bar"
5235
+ ]
4571
5236
  },
4572
5237
  {
4573
5238
  "name": "ProgressItem",
@@ -4732,7 +5397,29 @@
4732
5397
  {
4733
5398
  "name": "data",
4734
5399
  "type": "RadarDatum[]",
4735
- "required": true
5400
+ "required": true,
5401
+ "shape": {
5402
+ "type": "RadarDatum",
5403
+ "collection": "array",
5404
+ "fields": [
5405
+ {
5406
+ "name": "label",
5407
+ "type": "string",
5408
+ "required": true
5409
+ },
5410
+ {
5411
+ "name": "value",
5412
+ "type": "number",
5413
+ "required": true
5414
+ },
5415
+ {
5416
+ "name": "value2",
5417
+ "type": "number",
5418
+ "required": false,
5419
+ "description": "Second series (variant=\"multiple\")."
5420
+ }
5421
+ ]
5422
+ }
4736
5423
  },
4737
5424
  {
4738
5425
  "name": "variant",
@@ -4797,7 +5484,28 @@
4797
5484
  {
4798
5485
  "name": "data",
4799
5486
  "type": "RadialDatum[]",
4800
- "required": true
5487
+ "required": true,
5488
+ "shape": {
5489
+ "type": "RadialDatum",
5490
+ "collection": "array",
5491
+ "fields": [
5492
+ {
5493
+ "name": "label",
5494
+ "type": "string",
5495
+ "required": true
5496
+ },
5497
+ {
5498
+ "name": "value",
5499
+ "type": "number",
5500
+ "required": true
5501
+ },
5502
+ {
5503
+ "name": "max",
5504
+ "type": "number",
5505
+ "required": false
5506
+ }
5507
+ ]
5508
+ }
4801
5509
  },
4802
5510
  {
4803
5511
  "name": "variant",
@@ -4875,7 +5583,12 @@
4875
5583
  "requiresAccessibleName": false
4876
5584
  },
4877
5585
  "since": "0.1.0",
4878
- "example": "import { Radio } from '@sakaniui/react';\n\n<Radio />"
5586
+ "example": "import { Radio } from '@sakaniui/react';\n\n<Radio />",
5587
+ "aliases": [
5588
+ "radio button",
5589
+ "radio group",
5590
+ "radio input"
5591
+ ]
4879
5592
  },
4880
5593
  {
4881
5594
  "name": "RichSeparator",
@@ -5030,7 +5743,23 @@
5030
5743
  {
5031
5744
  "name": "options",
5032
5745
  "type": "SegmentedOption[]",
5033
- "required": true
5746
+ "required": true,
5747
+ "shape": {
5748
+ "type": "SegmentedOption",
5749
+ "collection": "array",
5750
+ "fields": [
5751
+ {
5752
+ "name": "value",
5753
+ "type": "string",
5754
+ "required": true
5755
+ },
5756
+ {
5757
+ "name": "label",
5758
+ "type": "string",
5759
+ "required": true
5760
+ }
5761
+ ]
5762
+ }
5034
5763
  },
5035
5764
  {
5036
5765
  "name": "value",
@@ -5110,7 +5839,28 @@
5110
5839
  {
5111
5840
  "name": "options",
5112
5841
  "type": "SelectOption[]",
5113
- "required": true
5842
+ "required": true,
5843
+ "shape": {
5844
+ "type": "SelectOption",
5845
+ "collection": "array",
5846
+ "fields": [
5847
+ {
5848
+ "name": "label",
5849
+ "type": "string",
5850
+ "required": true
5851
+ },
5852
+ {
5853
+ "name": "value",
5854
+ "type": "string",
5855
+ "required": true
5856
+ },
5857
+ {
5858
+ "name": "disabled",
5859
+ "type": "boolean",
5860
+ "required": false
5861
+ }
5862
+ ]
5863
+ }
5114
5864
  },
5115
5865
  {
5116
5866
  "name": "value",
@@ -5152,7 +5902,14 @@
5152
5902
  "requiresAccessibleName": false
5153
5903
  },
5154
5904
  "since": "0.1.0",
5155
- "example": "import { Select } from '@sakaniui/react';\n\n<Select options={[{ label: \"Label\", value: \"Value\" }]} />"
5905
+ "example": "import { Select } from '@sakaniui/react';\n\n<Select options={[{ label: \"Label\", value: \"Value\" }]} />",
5906
+ "aliases": [
5907
+ "select box",
5908
+ "selectbox",
5909
+ "dropdown select",
5910
+ "picker",
5911
+ "dropdown list"
5912
+ ]
5156
5913
  },
5157
5914
  {
5158
5915
  "name": "Sidebar",
@@ -5178,7 +5935,14 @@
5178
5935
  "requiresAccessibleName": false
5179
5936
  },
5180
5937
  "since": "0.1.0",
5181
- "example": "import { Sidebar } from '@sakaniui/react';\n\n<Sidebar>Label</Sidebar>"
5938
+ "example": "import { Sidebar } from '@sakaniui/react';\n\n<Sidebar>Label</Sidebar>",
5939
+ "aliases": [
5940
+ "side nav",
5941
+ "sidenav",
5942
+ "side navigation",
5943
+ "left nav",
5944
+ "navigation sidebar"
5945
+ ]
5182
5946
  },
5183
5947
  {
5184
5948
  "name": "SidebarDivider",
@@ -5652,7 +6416,13 @@
5652
6416
  "requiresAccessibleName": false
5653
6417
  },
5654
6418
  "since": "0.1.0",
5655
- "example": "import { Skeleton } from '@sakaniui/react';\n\n<Skeleton />"
6419
+ "example": "import { Skeleton } from '@sakaniui/react';\n\n<Skeleton />",
6420
+ "aliases": [
6421
+ "shimmer",
6422
+ "loading skeleton",
6423
+ "content placeholder",
6424
+ "skeleton loader"
6425
+ ]
5656
6426
  },
5657
6427
  {
5658
6428
  "name": "Slider",
@@ -5690,7 +6460,12 @@
5690
6460
  "requiresAccessibleName": false
5691
6461
  },
5692
6462
  "since": "0.1.0",
5693
- "example": "import { Slider } from '@sakaniui/react';\n\n<Slider />"
6463
+ "example": "import { Slider } from '@sakaniui/react';\n\n<Slider />",
6464
+ "aliases": [
6465
+ "range",
6466
+ "range slider",
6467
+ "range input"
6468
+ ]
5694
6469
  },
5695
6470
  {
5696
6471
  "name": "SpendingBalance",
@@ -5773,7 +6548,14 @@
5773
6548
  "requiresAccessibleName": false
5774
6549
  },
5775
6550
  "since": "0.1.0",
5776
- "example": "import { Spinner } from '@sakaniui/react';\n\n<Spinner />"
6551
+ "example": "import { Spinner } from '@sakaniui/react';\n\n<Spinner />",
6552
+ "aliases": [
6553
+ "loader",
6554
+ "loading",
6555
+ "loading spinner",
6556
+ "activity indicator",
6557
+ "busy indicator"
6558
+ ]
5777
6559
  },
5778
6560
  {
5779
6561
  "name": "StarRating",
@@ -5830,7 +6612,13 @@
5830
6612
  "requiresAccessibleName": false
5831
6613
  },
5832
6614
  "since": "0.3.0",
5833
- "example": "import { StarRating } from '@sakaniui/react';\n\n<StarRating rating={4} />"
6615
+ "example": "import { StarRating } from '@sakaniui/react';\n\n<StarRating rating={4} />",
6616
+ "aliases": [
6617
+ "rating",
6618
+ "stars",
6619
+ "review stars",
6620
+ "star reviews"
6621
+ ]
5834
6622
  },
5835
6623
  {
5836
6624
  "name": "StatCard",
@@ -5931,7 +6719,14 @@
5931
6719
  "requiresAccessibleName": false
5932
6720
  },
5933
6721
  "since": "0.1.0",
5934
- "example": "import { StatCard } from '@sakaniui/react';\n\n<StatCard title=\"Title\" value=\"Value\" />"
6722
+ "example": "import { StatCard } from '@sakaniui/react';\n\n<StatCard title=\"Title\" value=\"Value\" />",
6723
+ "aliases": [
6724
+ "metric card",
6725
+ "kpi",
6726
+ "kpi card",
6727
+ "stat tile",
6728
+ "stats card"
6729
+ ]
5935
6730
  },
5936
6731
  {
5937
6732
  "name": "Stepper",
@@ -5943,7 +6738,23 @@
5943
6738
  {
5944
6739
  "name": "steps",
5945
6740
  "type": "Step[]",
5946
- "required": true
6741
+ "required": true,
6742
+ "shape": {
6743
+ "type": "Step",
6744
+ "collection": "array",
6745
+ "fields": [
6746
+ {
6747
+ "name": "label",
6748
+ "type": "string",
6749
+ "required": true
6750
+ },
6751
+ {
6752
+ "name": "description",
6753
+ "type": "string",
6754
+ "required": false
6755
+ }
6756
+ ]
6757
+ }
5947
6758
  },
5948
6759
  {
5949
6760
  "name": "current",
@@ -5976,7 +6787,13 @@
5976
6787
  "requiresAccessibleName": false
5977
6788
  },
5978
6789
  "since": "0.1.0",
5979
- "example": "import { Stepper } from '@sakaniui/react';\n\n<Stepper steps={[{ label: \"Label\" }]} current={1} />"
6790
+ "example": "import { Stepper } from '@sakaniui/react';\n\n<Stepper steps={[{ label: \"Label\" }]} current={1} />",
6791
+ "aliases": [
6792
+ "wizard",
6793
+ "step indicator",
6794
+ "steps",
6795
+ "multi step"
6796
+ ]
5980
6797
  },
5981
6798
  {
5982
6799
  "name": "StepperStep",
@@ -6077,7 +6894,23 @@
6077
6894
  {
6078
6895
  "name": "change",
6079
6896
  "type": "StockMarketChange",
6080
- "required": true
6897
+ "required": true,
6898
+ "shape": {
6899
+ "type": "StockMarketChange",
6900
+ "collection": "object",
6901
+ "fields": [
6902
+ {
6903
+ "name": "amount",
6904
+ "type": "number",
6905
+ "required": true
6906
+ },
6907
+ {
6908
+ "name": "percent",
6909
+ "type": "number",
6910
+ "required": true
6911
+ }
6912
+ ]
6913
+ }
6081
6914
  },
6082
6915
  {
6083
6916
  "name": "formatAmount",
@@ -6088,7 +6921,28 @@
6088
6921
  "name": "chart",
6089
6922
  "type": "BarChartDatum[]",
6090
6923
  "required": false,
6091
- "description": "Presence switches to the expanded Full card with a bar chart."
6924
+ "description": "Presence switches to the expanded Full card with a bar chart.",
6925
+ "shape": {
6926
+ "type": "BarChartDatum",
6927
+ "collection": "array",
6928
+ "fields": [
6929
+ {
6930
+ "name": "label",
6931
+ "type": "string",
6932
+ "required": true
6933
+ },
6934
+ {
6935
+ "name": "value",
6936
+ "type": "number",
6937
+ "required": true
6938
+ },
6939
+ {
6940
+ "name": "value2",
6941
+ "type": "number",
6942
+ "required": false
6943
+ }
6944
+ ]
6945
+ }
6092
6946
  },
6093
6947
  {
6094
6948
  "name": "periodLabel",
@@ -6253,7 +7107,12 @@
6253
7107
  "requiresAccessibleName": false
6254
7108
  },
6255
7109
  "since": "0.1.0",
6256
- "example": "import { Switch } from '@sakaniui/react';\n\n<Switch />"
7110
+ "example": "import { Switch } from '@sakaniui/react';\n\n<Switch />",
7111
+ "aliases": [
7112
+ "toggle",
7113
+ "toggle switch",
7114
+ "on off switch"
7115
+ ]
6257
7116
  },
6258
7117
  {
6259
7118
  "name": "Table",
@@ -6265,7 +7124,41 @@
6265
7124
  {
6266
7125
  "name": "columns",
6267
7126
  "type": "TableColumn<T>[]",
6268
- "required": true
7127
+ "required": true,
7128
+ "shape": {
7129
+ "type": "TableColumn<T>",
7130
+ "collection": "array",
7131
+ "fields": [
7132
+ {
7133
+ "name": "key",
7134
+ "type": "keyof T & string",
7135
+ "required": true
7136
+ },
7137
+ {
7138
+ "name": "header",
7139
+ "type": "string",
7140
+ "required": true
7141
+ },
7142
+ {
7143
+ "name": "render",
7144
+ "type": "((row: T) => ReactNode)",
7145
+ "required": false
7146
+ },
7147
+ {
7148
+ "name": "align",
7149
+ "type": "\"left\" | \"center\" | \"right\"",
7150
+ "required": false
7151
+ },
7152
+ {
7153
+ "name": "width",
7154
+ "type": "string",
7155
+ "required": false
7156
+ }
7157
+ ],
7158
+ "typeParameters": [
7159
+ "T"
7160
+ ]
7161
+ }
6269
7162
  },
6270
7163
  {
6271
7164
  "name": "rows",
@@ -6336,7 +7229,21 @@
6336
7229
  "requiresAccessibleName": false
6337
7230
  },
6338
7231
  "since": "0.1.0",
6339
- "example": "import { Table } from '@sakaniui/react';\n\n<Table columns={[]} rows={[{}]} />"
7232
+ "example": "import { Table } from '@sakaniui/react';\n\n<Table columns={[]} rows={[{}]} />",
7233
+ "recipes": [
7234
+ {
7235
+ "title": "A column that is not data (a delete button, a menu)",
7236
+ "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.",
7237
+ "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} />;"
7238
+ }
7239
+ ],
7240
+ "aliases": [
7241
+ "datagrid",
7242
+ "data grid",
7243
+ "data table",
7244
+ "grid",
7245
+ "list view"
7246
+ ]
6340
7247
  },
6341
7248
  {
6342
7249
  "name": "Tabs",
@@ -6348,7 +7255,35 @@
6348
7255
  {
6349
7256
  "name": "items",
6350
7257
  "type": "TabItem[]",
6351
- "required": true
7258
+ "required": true,
7259
+ "shape": {
7260
+ "type": "TabItem",
7261
+ "collection": "array",
7262
+ "fields": [
7263
+ {
7264
+ "name": "value",
7265
+ "type": "string",
7266
+ "required": true,
7267
+ "description": "Unique key/value for the tab."
7268
+ },
7269
+ {
7270
+ "name": "label",
7271
+ "type": "string",
7272
+ "required": true,
7273
+ "description": "Visible label."
7274
+ },
7275
+ {
7276
+ "name": "icon",
7277
+ "type": "IconComponent",
7278
+ "required": false
7279
+ },
7280
+ {
7281
+ "name": "disabled",
7282
+ "type": "boolean",
7283
+ "required": false
7284
+ }
7285
+ ]
7286
+ }
6352
7287
  },
6353
7288
  {
6354
7289
  "name": "value",
@@ -6394,7 +7329,13 @@
6394
7329
  "requiresAccessibleName": false
6395
7330
  },
6396
7331
  "since": "0.1.0",
6397
- "example": "import { Tabs } from '@sakaniui/react';\n\n<Tabs items={[{ value: \"Value\", label: \"Label\" }]} />"
7332
+ "example": "import { Tabs } from '@sakaniui/react';\n\n<Tabs items={[{ value: \"Value\", label: \"Label\" }]} />",
7333
+ "aliases": [
7334
+ "tab bar",
7335
+ "tabbar",
7336
+ "tab navigation",
7337
+ "tabbed"
7338
+ ]
6398
7339
  },
6399
7340
  {
6400
7341
  "name": "Tags",
@@ -6427,7 +7368,13 @@
6427
7368
  "requiresAccessibleName": false
6428
7369
  },
6429
7370
  "since": "0.1.0",
6430
- "example": "import { Tags } from '@sakaniui/react';\n\n<Tags tags={[\"Tag\"]} />"
7371
+ "example": "import { Tags } from '@sakaniui/react';\n\n<Tags tags={[\"Tag\"]} />",
7372
+ "aliases": [
7373
+ "tag list",
7374
+ "chips",
7375
+ "chip list",
7376
+ "labels list"
7377
+ ]
6431
7378
  },
6432
7379
  {
6433
7380
  "name": "TeamCard",
@@ -6481,7 +7428,34 @@
6481
7428
  "name": "socialLinks",
6482
7429
  "type": "TeamCardSocialLink[]",
6483
7430
  "required": false,
6484
- "default": "[]"
7431
+ "default": "[]",
7432
+ "shape": {
7433
+ "type": "TeamCardSocialLink",
7434
+ "collection": "array",
7435
+ "fields": [
7436
+ {
7437
+ "name": "icon",
7438
+ "type": "ReactNode",
7439
+ "required": true
7440
+ },
7441
+ {
7442
+ "name": "label",
7443
+ "type": "string",
7444
+ "required": true,
7445
+ "description": "Accessible name, e.g. \"Instagram\"."
7446
+ },
7447
+ {
7448
+ "name": "href",
7449
+ "type": "string",
7450
+ "required": false
7451
+ },
7452
+ {
7453
+ "name": "onClick",
7454
+ "type": "(() => void)",
7455
+ "required": false
7456
+ }
7457
+ ]
7458
+ }
6485
7459
  },
6486
7460
  {
6487
7461
  "name": "className",
@@ -6529,7 +7503,12 @@
6529
7503
  "requiresAccessibleName": false
6530
7504
  },
6531
7505
  "since": "0.1.0",
6532
- "example": "import { Textarea } from '@sakaniui/react';\n\n<Textarea />"
7506
+ "example": "import { Textarea } from '@sakaniui/react';\n\n<Textarea />",
7507
+ "aliases": [
7508
+ "multiline input",
7509
+ "multi line input",
7510
+ "comment box"
7511
+ ]
6533
7512
  },
6534
7513
  {
6535
7514
  "name": "Ticker",
@@ -6541,7 +7520,23 @@
6541
7520
  {
6542
7521
  "name": "items",
6543
7522
  "type": "TickerItem[]",
6544
- "required": true
7523
+ "required": true,
7524
+ "shape": {
7525
+ "type": "TickerItem",
7526
+ "collection": "array",
7527
+ "fields": [
7528
+ {
7529
+ "name": "symbol",
7530
+ "type": "string",
7531
+ "required": true
7532
+ },
7533
+ {
7534
+ "name": "changePercent",
7535
+ "type": "number",
7536
+ "required": true
7537
+ }
7538
+ ]
7539
+ }
6545
7540
  },
6546
7541
  {
6547
7542
  "name": "speed",
@@ -6615,7 +7610,14 @@
6615
7610
  "requiresAccessibleName": false
6616
7611
  },
6617
7612
  "since": "0.1.0",
6618
- "example": "import { Toast } from '@sakaniui/react';\n\n<Toast />"
7613
+ "example": "import { Toast } from '@sakaniui/react';\n\n<Toast />",
7614
+ "aliases": [
7615
+ "snackbar",
7616
+ "toaster",
7617
+ "toast notification",
7618
+ "flash message",
7619
+ "transient notification"
7620
+ ]
6619
7621
  },
6620
7622
  {
6621
7623
  "name": "Tooltip",
@@ -6671,7 +7673,12 @@
6671
7673
  "requiresAccessibleName": false
6672
7674
  },
6673
7675
  "since": "0.1.0",
6674
- "example": "import { Tooltip } from '@sakaniui/react';\n\n<Tooltip title=\"Title\">Label</Tooltip>"
7676
+ "example": "import { Tooltip } from '@sakaniui/react';\n\n<Tooltip title=\"Title\">Label</Tooltip>",
7677
+ "aliases": [
7678
+ "hovercard",
7679
+ "hover card",
7680
+ "hint on hover"
7681
+ ]
6675
7682
  },
6676
7683
  {
6677
7684
  "name": "TopBar",
@@ -6801,7 +7808,16 @@
6801
7808
  "requiresAccessibleName": false
6802
7809
  },
6803
7810
  "since": "0.1.0",
6804
- "example": "import { TopBar } from '@sakaniui/react';\n\n<TopBar />"
7811
+ "example": "import { TopBar } from '@sakaniui/react';\n\n<TopBar />",
7812
+ "aliases": [
7813
+ "navbar",
7814
+ "nav bar",
7815
+ "app bar",
7816
+ "appbar",
7817
+ "top navigation",
7818
+ "top nav",
7819
+ "header bar"
7820
+ ]
6805
7821
  },
6806
7822
  {
6807
7823
  "name": "TopBarMobile",
@@ -6877,7 +7893,39 @@
6877
7893
  {
6878
7894
  "name": "transactions",
6879
7895
  "type": "Transaction[]",
6880
- "required": true
7896
+ "required": true,
7897
+ "shape": {
7898
+ "type": "Transaction",
7899
+ "collection": "array",
7900
+ "fields": [
7901
+ {
7902
+ "name": "id",
7903
+ "type": "string | number",
7904
+ "required": false
7905
+ },
7906
+ {
7907
+ "name": "name",
7908
+ "type": "string",
7909
+ "required": true
7910
+ },
7911
+ {
7912
+ "name": "category",
7913
+ "type": "string",
7914
+ "required": true
7915
+ },
7916
+ {
7917
+ "name": "amount",
7918
+ "type": "number",
7919
+ "required": true,
7920
+ "description": "Positive = income (success), negative = expense (danger)."
7921
+ },
7922
+ {
7923
+ "name": "icon",
7924
+ "type": "ReactNode",
7925
+ "required": true
7926
+ }
7927
+ ]
7928
+ }
6881
7929
  },
6882
7930
  {
6883
7931
  "name": "formatAmount",
@@ -7083,7 +8131,23 @@
7083
8131
  {
7084
8132
  "name": "breadcrumbs",
7085
8133
  "type": "BreadcrumbItem[]",
7086
- "required": true
8134
+ "required": true,
8135
+ "shape": {
8136
+ "type": "BreadcrumbItem",
8137
+ "collection": "array",
8138
+ "fields": [
8139
+ {
8140
+ "name": "label",
8141
+ "type": "string",
8142
+ "required": true
8143
+ },
8144
+ {
8145
+ "name": "href",
8146
+ "type": "string",
8147
+ "required": false
8148
+ }
8149
+ ]
8150
+ }
7087
8151
  },
7088
8152
  {
7089
8153
  "name": "title",
@@ -7099,7 +8163,34 @@
7099
8163
  "name": "actions",
7100
8164
  "type": "AppHeaderBlockAction[]",
7101
8165
  "required": false,
7102
- "default": "[]"
8166
+ "default": "[]",
8167
+ "shape": {
8168
+ "type": "AppHeaderBlockAction",
8169
+ "collection": "array",
8170
+ "fields": [
8171
+ {
8172
+ "name": "label",
8173
+ "type": "string",
8174
+ "required": true
8175
+ },
8176
+ {
8177
+ "name": "icon",
8178
+ "type": "ReactNode",
8179
+ "required": false
8180
+ },
8181
+ {
8182
+ "name": "onClick",
8183
+ "type": "(() => void)",
8184
+ "required": false
8185
+ },
8186
+ {
8187
+ "name": "variant",
8188
+ "type": "ButtonVariant",
8189
+ "required": false,
8190
+ "description": "Overrides the position-derived default (last action = primary, rest = secondary)."
8191
+ }
8192
+ ]
8193
+ }
7103
8194
  },
7104
8195
  {
7105
8196
  "name": "className",
@@ -7132,7 +8223,28 @@
7132
8223
  {
7133
8224
  "name": "countries",
7134
8225
  "type": "SelectOption[]",
7135
- "required": false
8226
+ "required": false,
8227
+ "shape": {
8228
+ "type": "SelectOption",
8229
+ "collection": "array",
8230
+ "fields": [
8231
+ {
8232
+ "name": "label",
8233
+ "type": "string",
8234
+ "required": true
8235
+ },
8236
+ {
8237
+ "name": "value",
8238
+ "type": "string",
8239
+ "required": true
8240
+ },
8241
+ {
8242
+ "name": "disabled",
8243
+ "type": "boolean",
8244
+ "required": false
8245
+ }
8246
+ ]
8247
+ }
7136
8248
  },
7137
8249
  {
7138
8250
  "name": "initialStatus",
@@ -7176,7 +8288,47 @@
7176
8288
  "name": "invoices",
7177
8289
  "type": "BillingHistoryInvoice[]",
7178
8290
  "required": false,
7179
- "default": "[]"
8291
+ "default": "[]",
8292
+ "shape": {
8293
+ "type": "BillingHistoryInvoice",
8294
+ "collection": "array",
8295
+ "fields": [
8296
+ {
8297
+ "name": "id",
8298
+ "type": "string",
8299
+ "required": false,
8300
+ "description": "Unique key for the list -- defaults to index if omitted."
8301
+ },
8302
+ {
8303
+ "name": "planLabel",
8304
+ "type": "string",
8305
+ "required": true,
8306
+ "description": "e.g. \"Pro plan — Monthly\""
8307
+ },
8308
+ {
8309
+ "name": "date",
8310
+ "type": "string",
8311
+ "required": true,
8312
+ "description": "e.g. \"Aug 1, 2026\""
8313
+ },
8314
+ {
8315
+ "name": "amount",
8316
+ "type": "string",
8317
+ "required": true,
8318
+ "description": "e.g. \"$29.00\""
8319
+ },
8320
+ {
8321
+ "name": "status",
8322
+ "type": "BillingHistoryStatus",
8323
+ "required": true
8324
+ },
8325
+ {
8326
+ "name": "onDownload",
8327
+ "type": "(() => void)",
8328
+ "required": false
8329
+ }
8330
+ ]
8331
+ }
7180
8332
  },
7181
8333
  {
7182
8334
  "name": "loading",
@@ -7225,12 +8377,99 @@
7225
8377
  {
7226
8378
  "name": "featuredPost",
7227
8379
  "type": "BlogListingFeaturedPost",
7228
- "required": true
8380
+ "required": true,
8381
+ "shape": {
8382
+ "type": "BlogListingFeaturedPost",
8383
+ "collection": "object",
8384
+ "fields": [
8385
+ {
8386
+ "name": "image",
8387
+ "type": "string",
8388
+ "required": true
8389
+ },
8390
+ {
8391
+ "name": "imageAlt",
8392
+ "type": "string",
8393
+ "required": false
8394
+ },
8395
+ {
8396
+ "name": "title",
8397
+ "type": "string",
8398
+ "required": true
8399
+ },
8400
+ {
8401
+ "name": "excerpt",
8402
+ "type": "string",
8403
+ "required": true
8404
+ },
8405
+ {
8406
+ "name": "author",
8407
+ "type": "BlogListingFeaturedCardAuthor",
8408
+ "required": true
8409
+ },
8410
+ {
8411
+ "name": "ctaLabel",
8412
+ "type": "string",
8413
+ "required": false
8414
+ },
8415
+ {
8416
+ "name": "onCtaClick",
8417
+ "type": "(() => void)",
8418
+ "required": false
8419
+ }
8420
+ ]
8421
+ }
7229
8422
  },
7230
8423
  {
7231
8424
  "name": "posts",
7232
8425
  "type": "BlogListingPost[]",
7233
- "required": true
8426
+ "required": true,
8427
+ "shape": {
8428
+ "type": "BlogListingPost",
8429
+ "collection": "array",
8430
+ "fields": [
8431
+ {
8432
+ "name": "id",
8433
+ "type": "string",
8434
+ "required": false
8435
+ },
8436
+ {
8437
+ "name": "image",
8438
+ "type": "string",
8439
+ "required": true
8440
+ },
8441
+ {
8442
+ "name": "imageAlt",
8443
+ "type": "string",
8444
+ "required": false
8445
+ },
8446
+ {
8447
+ "name": "category",
8448
+ "type": "string",
8449
+ "required": true
8450
+ },
8451
+ {
8452
+ "name": "readTime",
8453
+ "type": "string",
8454
+ "required": true
8455
+ },
8456
+ {
8457
+ "name": "title",
8458
+ "type": "string",
8459
+ "required": true
8460
+ },
8461
+ {
8462
+ "name": "excerpt",
8463
+ "type": "string",
8464
+ "required": true
8465
+ },
8466
+ {
8467
+ "name": "author",
8468
+ "type": "BlogListingCardAuthor",
8469
+ "required": true
8470
+ }
8471
+ ]
8472
+ }
7234
8473
  },
7235
8474
  {
7236
8475
  "name": "className",
@@ -7276,7 +8515,60 @@
7276
8515
  {
7277
8516
  "name": "jobs",
7278
8517
  "type": "CareersJob[]",
7279
- "required": true
8518
+ "required": true,
8519
+ "shape": {
8520
+ "type": "CareersJob",
8521
+ "collection": "array",
8522
+ "fields": [
8523
+ {
8524
+ "name": "id",
8525
+ "type": "string",
8526
+ "required": false,
8527
+ "description": "Unique key for the list -- defaults to `title` if omitted."
8528
+ },
8529
+ {
8530
+ "name": "description",
8531
+ "type": "string",
8532
+ "required": true
8533
+ },
8534
+ {
8535
+ "name": "location",
8536
+ "type": "string",
8537
+ "required": true
8538
+ },
8539
+ {
8540
+ "name": "title",
8541
+ "type": "string",
8542
+ "required": true
8543
+ },
8544
+ {
8545
+ "name": "department",
8546
+ "type": "string",
8547
+ "required": true
8548
+ },
8549
+ {
8550
+ "name": "employmentType",
8551
+ "type": "string",
8552
+ "required": true
8553
+ },
8554
+ {
8555
+ "name": "locationStatus",
8556
+ "type": "LocationDotStatus",
8557
+ "required": false,
8558
+ "description": "Drives LocationDot's color."
8559
+ },
8560
+ {
8561
+ "name": "onApply",
8562
+ "type": "(() => void)",
8563
+ "required": false
8564
+ },
8565
+ {
8566
+ "name": "applyLabel",
8567
+ "type": "string",
8568
+ "required": false
8569
+ }
8570
+ ]
8571
+ }
7280
8572
  },
7281
8573
  {
7282
8574
  "name": "className",
@@ -7335,7 +8627,48 @@
7335
8627
  {
7336
8628
  "name": "items",
7337
8629
  "type": "CheckoutFlowItem[]",
7338
- "required": true
8630
+ "required": true,
8631
+ "shape": {
8632
+ "type": "CheckoutFlowItem",
8633
+ "collection": "array",
8634
+ "fields": [
8635
+ {
8636
+ "name": "id",
8637
+ "type": "string",
8638
+ "required": false
8639
+ },
8640
+ {
8641
+ "name": "image",
8642
+ "type": "string",
8643
+ "required": true
8644
+ },
8645
+ {
8646
+ "name": "imageAlt",
8647
+ "type": "string",
8648
+ "required": false
8649
+ },
8650
+ {
8651
+ "name": "name",
8652
+ "type": "string",
8653
+ "required": true
8654
+ },
8655
+ {
8656
+ "name": "variant",
8657
+ "type": "string",
8658
+ "required": false
8659
+ },
8660
+ {
8661
+ "name": "price",
8662
+ "type": "number",
8663
+ "required": true
8664
+ },
8665
+ {
8666
+ "name": "quantity",
8667
+ "type": "number",
8668
+ "required": true
8669
+ }
8670
+ ]
8671
+ }
7339
8672
  },
7340
8673
  {
7341
8674
  "name": "shippingCost",
@@ -7376,7 +8709,12 @@
7376
8709
  "requiresAccessibleName": false
7377
8710
  },
7378
8711
  "since": "0.3.0",
7379
- "example": "import { CheckoutFlowBlock } from '@sakaniui/react/blocks';\n\n<CheckoutFlowBlock items={[{ image: \"/images/example.jpg\", name: \"Name\", price: 49, quantity: 1 }]} />"
8712
+ "example": "import { CheckoutFlowBlock } from '@sakaniui/react/blocks';\n\n<CheckoutFlowBlock items={[{ image: \"/images/example.jpg\", name: \"Name\", price: 49, quantity: 1 }]} />",
8713
+ "aliases": [
8714
+ "checkout",
8715
+ "checkout flow",
8716
+ "checkout page"
8717
+ ]
7380
8718
  },
7381
8719
  {
7382
8720
  "name": "CRMDashboardBlock",
@@ -7425,12 +8763,44 @@
7425
8763
  {
7426
8764
  "name": "primaryAction",
7427
8765
  "type": "CtaBannerAction",
7428
- "required": true
8766
+ "required": true,
8767
+ "shape": {
8768
+ "type": "CtaBannerAction",
8769
+ "collection": "object",
8770
+ "fields": [
8771
+ {
8772
+ "name": "label",
8773
+ "type": "string",
8774
+ "required": true
8775
+ },
8776
+ {
8777
+ "name": "onClick",
8778
+ "type": "(() => void)",
8779
+ "required": false
8780
+ }
8781
+ ]
8782
+ }
7429
8783
  },
7430
8784
  {
7431
8785
  "name": "secondaryAction",
7432
8786
  "type": "CtaBannerAction",
7433
- "required": false
8787
+ "required": false,
8788
+ "shape": {
8789
+ "type": "CtaBannerAction",
8790
+ "collection": "object",
8791
+ "fields": [
8792
+ {
8793
+ "name": "label",
8794
+ "type": "string",
8795
+ "required": true
8796
+ },
8797
+ {
8798
+ "name": "onClick",
8799
+ "type": "(() => void)",
8800
+ "required": false
8801
+ }
8802
+ ]
8803
+ }
7434
8804
  },
7435
8805
  {
7436
8806
  "name": "secondaryActionIcon",
@@ -7464,7 +8834,13 @@
7464
8834
  "requiresAccessibleName": false
7465
8835
  },
7466
8836
  "since": "0.3.0",
7467
- "example": "import { CtaBannerBlock } from '@sakaniui/react/blocks';\n\n<CtaBannerBlock title=\"Title\" description=\"Description\" primaryAction={{ label: \"Label\" }} />"
8837
+ "example": "import { CtaBannerBlock } from '@sakaniui/react/blocks';\n\n<CtaBannerBlock title=\"Title\" description=\"Description\" primaryAction={{ label: \"Label\" }} />",
8838
+ "aliases": [
8839
+ "cta",
8840
+ "cta banner",
8841
+ "call to action",
8842
+ "call to action banner"
8843
+ ]
7468
8844
  },
7469
8845
  {
7470
8846
  "name": "CurrentPlanBlock",
@@ -7615,7 +8991,12 @@
7615
8991
  "requiresAccessibleName": false
7616
8992
  },
7617
8993
  "since": "0.1.0",
7618
- "example": "import { DataTableBlock } from '@sakaniui/react/blocks';\n\n<DataTableBlock />"
8994
+ "example": "import { DataTableBlock } from '@sakaniui/react/blocks';\n\n<DataTableBlock />",
8995
+ "aliases": [
8996
+ "data table section",
8997
+ "table section",
8998
+ "records table"
8999
+ ]
7619
9000
  },
7620
9001
  {
7621
9002
  "name": "EmailVerificationBlock",
@@ -7666,7 +9047,12 @@
7666
9047
  "requiresAccessibleName": false
7667
9048
  },
7668
9049
  "since": "0.3.0",
7669
- "example": "import { EmailVerificationBlock } from '@sakaniui/react/blocks';\n\n<EmailVerificationBlock />"
9050
+ "example": "import { EmailVerificationBlock } from '@sakaniui/react/blocks';\n\n<EmailVerificationBlock />",
9051
+ "aliases": [
9052
+ "verify email",
9053
+ "email verification",
9054
+ "confirm email"
9055
+ ]
7670
9056
  },
7671
9057
  {
7672
9058
  "name": "FaqBlock",
@@ -7689,7 +9075,29 @@
7689
9075
  {
7690
9076
  "name": "items",
7691
9077
  "type": "FaqItem[]",
7692
- "required": true
9078
+ "required": true,
9079
+ "shape": {
9080
+ "type": "FaqItem",
9081
+ "collection": "array",
9082
+ "fields": [
9083
+ {
9084
+ "name": "question",
9085
+ "type": "string",
9086
+ "required": true
9087
+ },
9088
+ {
9089
+ "name": "answer",
9090
+ "type": "string",
9091
+ "required": true
9092
+ },
9093
+ {
9094
+ "name": "defaultOpen",
9095
+ "type": "boolean",
9096
+ "required": false,
9097
+ "description": "Uncontrolled initial open state for this item."
9098
+ }
9099
+ ]
9100
+ }
7693
9101
  },
7694
9102
  {
7695
9103
  "name": "columns",
@@ -7715,7 +9123,13 @@
7715
9123
  "requiresAccessibleName": false
7716
9124
  },
7717
9125
  "since": "0.3.0",
7718
- "example": "import { FaqBlock } from '@sakaniui/react/blocks';\n\n<FaqBlock title=\"Title\" items={[{ question: \"Question\", answer: \"Answer\" }]} />"
9126
+ "example": "import { FaqBlock } from '@sakaniui/react/blocks';\n\n<FaqBlock title=\"Title\" items={[{ question: \"Question\", answer: \"Answer\" }]} />",
9127
+ "aliases": [
9128
+ "faq",
9129
+ "faqs",
9130
+ "questions and answers",
9131
+ "frequently asked questions"
9132
+ ]
7719
9133
  },
7720
9134
  {
7721
9135
  "name": "FeatureGridBlock",
@@ -7727,7 +9141,33 @@
7727
9141
  {
7728
9142
  "name": "features",
7729
9143
  "type": "FeatureGridItem[]",
7730
- "required": true
9144
+ "required": true,
9145
+ "shape": {
9146
+ "type": "FeatureGridItem",
9147
+ "collection": "array",
9148
+ "fields": [
9149
+ {
9150
+ "name": "id",
9151
+ "type": "string",
9152
+ "required": false
9153
+ },
9154
+ {
9155
+ "name": "icon",
9156
+ "type": "ReactNode",
9157
+ "required": true
9158
+ },
9159
+ {
9160
+ "name": "title",
9161
+ "type": "string",
9162
+ "required": true
9163
+ },
9164
+ {
9165
+ "name": "description",
9166
+ "type": "string",
9167
+ "required": true
9168
+ }
9169
+ ]
9170
+ }
7731
9171
  },
7732
9172
  {
7733
9173
  "name": "columns",
@@ -7748,7 +9188,12 @@
7748
9188
  "requiresAccessibleName": false
7749
9189
  },
7750
9190
  "since": "0.3.0",
7751
- "example": "import { FeatureGridBlock } from '@sakaniui/react/blocks';\n\n<FeatureGridBlock features={[{ icon: \"Icon\", title: \"Title\", description: \"Description\" }]} />"
9191
+ "example": "import { FeatureGridBlock } from '@sakaniui/react/blocks';\n\n<FeatureGridBlock features={[{ icon: \"Icon\", title: \"Title\", description: \"Description\" }]} />",
9192
+ "aliases": [
9193
+ "features",
9194
+ "feature grid",
9195
+ "features section"
9196
+ ]
7752
9197
  },
7753
9198
  {
7754
9199
  "name": "FileUploadPanelBlock",
@@ -7834,7 +9279,12 @@
7834
9279
  "requiresAccessibleName": false
7835
9280
  },
7836
9281
  "since": "0.3.0",
7837
- "example": "import { ForgotPasswordBlock } from '@sakaniui/react/blocks';\n\n<ForgotPasswordBlock />"
9282
+ "example": "import { ForgotPasswordBlock } from '@sakaniui/react/blocks';\n\n<ForgotPasswordBlock />",
9283
+ "aliases": [
9284
+ "forgot password",
9285
+ "password reset request",
9286
+ "lost password"
9287
+ ]
7838
9288
  },
7839
9289
  {
7840
9290
  "name": "FormModalBlock",
@@ -7895,12 +9345,44 @@
7895
9345
  {
7896
9346
  "name": "primaryAction",
7897
9347
  "type": "HeroAction",
7898
- "required": true
9348
+ "required": true,
9349
+ "shape": {
9350
+ "type": "HeroAction",
9351
+ "collection": "object",
9352
+ "fields": [
9353
+ {
9354
+ "name": "label",
9355
+ "type": "string",
9356
+ "required": true
9357
+ },
9358
+ {
9359
+ "name": "onClick",
9360
+ "type": "(() => void)",
9361
+ "required": false
9362
+ }
9363
+ ]
9364
+ }
7899
9365
  },
7900
9366
  {
7901
9367
  "name": "secondaryAction",
7902
9368
  "type": "HeroAction",
7903
- "required": false
9369
+ "required": false,
9370
+ "shape": {
9371
+ "type": "HeroAction",
9372
+ "collection": "object",
9373
+ "fields": [
9374
+ {
9375
+ "name": "label",
9376
+ "type": "string",
9377
+ "required": true
9378
+ },
9379
+ {
9380
+ "name": "onClick",
9381
+ "type": "(() => void)",
9382
+ "required": false
9383
+ }
9384
+ ]
9385
+ }
7904
9386
  },
7905
9387
  {
7906
9388
  "name": "secondaryActionIcon",
@@ -7957,7 +9439,13 @@
7957
9439
  "requiresAccessibleName": false
7958
9440
  },
7959
9441
  "since": "0.3.0",
7960
- "example": "import { HeroBlock } from '@sakaniui/react/blocks';\n\n<HeroBlock title=\"Title\" description=\"Description\" primaryAction={{ label: \"Label\" }} image=\"/images/example.jpg\" />"
9442
+ "example": "import { HeroBlock } from '@sakaniui/react/blocks';\n\n<HeroBlock title=\"Title\" description=\"Description\" primaryAction={{ label: \"Label\" }} image=\"/images/example.jpg\" />",
9443
+ "aliases": [
9444
+ "hero",
9445
+ "hero section",
9446
+ "landing hero",
9447
+ "header section"
9448
+ ]
7961
9449
  },
7962
9450
  {
7963
9451
  "name": "InlineCtaBlock",
@@ -8055,7 +9543,13 @@
8055
9543
  "requiresAccessibleName": false
8056
9544
  },
8057
9545
  "since": "0.1.0",
8058
- "example": "import { KanbanBoardBlock } from '@sakaniui/react/blocks';\n\n<KanbanBoardBlock />"
9546
+ "example": "import { KanbanBoardBlock } from '@sakaniui/react/blocks';\n\n<KanbanBoardBlock />",
9547
+ "aliases": [
9548
+ "kanban",
9549
+ "kanban board",
9550
+ "task board",
9551
+ "board view"
9552
+ ]
8059
9553
  },
8060
9554
  {
8061
9555
  "name": "LiquidDashboardBlock",
@@ -8127,7 +9621,28 @@
8127
9621
  "name": "socialProviders",
8128
9622
  "type": "LoginSocialProvider[]",
8129
9623
  "required": false,
8130
- "default": "[]"
9624
+ "default": "[]",
9625
+ "shape": {
9626
+ "type": "LoginSocialProvider",
9627
+ "collection": "array",
9628
+ "fields": [
9629
+ {
9630
+ "name": "icon",
9631
+ "type": "ReactNode",
9632
+ "required": true
9633
+ },
9634
+ {
9635
+ "name": "label",
9636
+ "type": "string",
9637
+ "required": true
9638
+ },
9639
+ {
9640
+ "name": "onClick",
9641
+ "type": "(() => void)",
9642
+ "required": false
9643
+ }
9644
+ ]
9645
+ }
8131
9646
  },
8132
9647
  {
8133
9648
  "name": "onSubmit",
@@ -8155,7 +9670,14 @@
8155
9670
  "requiresAccessibleName": false
8156
9671
  },
8157
9672
  "since": "0.3.0",
8158
- "example": "import { LoginBlock } from '@sakaniui/react/blocks';\n\n<LoginBlock />"
9673
+ "example": "import { LoginBlock } from '@sakaniui/react/blocks';\n\n<LoginBlock />",
9674
+ "aliases": [
9675
+ "login",
9676
+ "login form",
9677
+ "sign in",
9678
+ "signin",
9679
+ "sign in form"
9680
+ ]
8159
9681
  },
8160
9682
  {
8161
9683
  "name": "LogoCloudBlock",
@@ -8196,7 +9718,13 @@
8196
9718
  "requiresAccessibleName": false
8197
9719
  },
8198
9720
  "since": "0.3.0",
8199
- "example": "import { LogoCloudBlock } from '@sakaniui/react/blocks';\n\n<LogoCloudBlock />"
9721
+ "example": "import { LogoCloudBlock } from '@sakaniui/react/blocks';\n\n<LogoCloudBlock />",
9722
+ "aliases": [
9723
+ "logo cloud",
9724
+ "logo wall",
9725
+ "customer logos",
9726
+ "trusted by"
9727
+ ]
8200
9728
  },
8201
9729
  {
8202
9730
  "name": "MultistepModalBlock",
@@ -8248,7 +9776,38 @@
8248
9776
  {
8249
9777
  "name": "items",
8250
9778
  "type": "NotificationPanelItem[]",
8251
- "required": true
9779
+ "required": true,
9780
+ "shape": {
9781
+ "type": "NotificationPanelItem",
9782
+ "collection": "array",
9783
+ "fields": [
9784
+ {
9785
+ "name": "id",
9786
+ "type": "string",
9787
+ "required": true
9788
+ },
9789
+ {
9790
+ "name": "icon",
9791
+ "type": "ReactNode",
9792
+ "required": false
9793
+ },
9794
+ {
9795
+ "name": "title",
9796
+ "type": "string",
9797
+ "required": true
9798
+ },
9799
+ {
9800
+ "name": "timestamp",
9801
+ "type": "string",
9802
+ "required": true
9803
+ },
9804
+ {
9805
+ "name": "read",
9806
+ "type": "boolean",
9807
+ "required": false
9808
+ }
9809
+ ]
9810
+ }
8252
9811
  },
8253
9812
  {
8254
9813
  "name": "onMarkAllRead",
@@ -8286,7 +9845,24 @@
8286
9845
  {
8287
9846
  "name": "items",
8288
9847
  "type": "OnboardingProgressItem[]",
8289
- "required": true
9848
+ "required": true,
9849
+ "shape": {
9850
+ "type": "OnboardingProgressItem",
9851
+ "collection": "array",
9852
+ "fields": [
9853
+ {
9854
+ "name": "label",
9855
+ "type": "string",
9856
+ "required": true
9857
+ },
9858
+ {
9859
+ "name": "progress",
9860
+ "type": "number",
9861
+ "required": true,
9862
+ "description": "0-100."
9863
+ }
9864
+ ]
9865
+ }
8290
9866
  },
8291
9867
  {
8292
9868
  "name": "variant",
@@ -8328,7 +9904,43 @@
8328
9904
  {
8329
9905
  "name": "items",
8330
9906
  "type": "OrderConfirmationItem[]",
8331
- "required": true
9907
+ "required": true,
9908
+ "shape": {
9909
+ "type": "OrderConfirmationItem",
9910
+ "collection": "array",
9911
+ "fields": [
9912
+ {
9913
+ "name": "id",
9914
+ "type": "string",
9915
+ "required": false
9916
+ },
9917
+ {
9918
+ "name": "image",
9919
+ "type": "string",
9920
+ "required": true
9921
+ },
9922
+ {
9923
+ "name": "imageAlt",
9924
+ "type": "string",
9925
+ "required": false
9926
+ },
9927
+ {
9928
+ "name": "name",
9929
+ "type": "string",
9930
+ "required": true
9931
+ },
9932
+ {
9933
+ "name": "variant",
9934
+ "type": "string",
9935
+ "required": false
9936
+ },
9937
+ {
9938
+ "name": "price",
9939
+ "type": "number",
9940
+ "required": true
9941
+ }
9942
+ ]
9943
+ }
8332
9944
  },
8333
9945
  {
8334
9946
  "name": "total",
@@ -8384,7 +9996,35 @@
8384
9996
  "name": "card",
8385
9997
  "type": "PaymentMethodCard",
8386
9998
  "required": false,
8387
- "description": "Omit to show the Empty state."
9999
+ "description": "Omit to show the Empty state.",
10000
+ "shape": {
10001
+ "type": "PaymentMethodCard",
10002
+ "collection": "object",
10003
+ "fields": [
10004
+ {
10005
+ "name": "brand",
10006
+ "type": "PaymentMethodBrand",
10007
+ "required": true
10008
+ },
10009
+ {
10010
+ "name": "last4",
10011
+ "type": "string",
10012
+ "required": true,
10013
+ "description": "Last 4 digits, e.g. \"4242\"."
10014
+ },
10015
+ {
10016
+ "name": "expiry",
10017
+ "type": "string",
10018
+ "required": true,
10019
+ "description": "e.g. \"08/27\""
10020
+ },
10021
+ {
10022
+ "name": "status",
10023
+ "type": "PaymentMethodStatus",
10024
+ "required": false
10025
+ }
10026
+ ]
10027
+ }
8388
10028
  },
8389
10029
  {
8390
10030
  "name": "onUpdateCard",
@@ -8443,7 +10083,66 @@
8443
10083
  {
8444
10084
  "name": "plans",
8445
10085
  "type": "PricingPlan[]",
8446
- "required": true
10086
+ "required": true,
10087
+ "shape": {
10088
+ "type": "PricingPlan",
10089
+ "collection": "array",
10090
+ "fields": [
10091
+ {
10092
+ "name": "id",
10093
+ "type": "string",
10094
+ "required": false
10095
+ },
10096
+ {
10097
+ "name": "name",
10098
+ "type": "string",
10099
+ "required": true
10100
+ },
10101
+ {
10102
+ "name": "price",
10103
+ "type": "string",
10104
+ "required": true
10105
+ },
10106
+ {
10107
+ "name": "period",
10108
+ "type": "string",
10109
+ "required": false,
10110
+ "description": "Omit for a plan with no numeric period, e.g. \"Custom\"."
10111
+ },
10112
+ {
10113
+ "name": "description",
10114
+ "type": "string",
10115
+ "required": true
10116
+ },
10117
+ {
10118
+ "name": "ctaLabel",
10119
+ "type": "string",
10120
+ "required": true
10121
+ },
10122
+ {
10123
+ "name": "onCtaClick",
10124
+ "type": "(() => void)",
10125
+ "required": false
10126
+ },
10127
+ {
10128
+ "name": "features",
10129
+ "type": "string[]",
10130
+ "required": true
10131
+ },
10132
+ {
10133
+ "name": "highlighted",
10134
+ "type": "boolean",
10135
+ "required": false,
10136
+ "description": "Drives the \"Most popular\" badge, accent border/shadow, and primary CTA."
10137
+ },
10138
+ {
10139
+ "name": "badgeLabel",
10140
+ "type": "string",
10141
+ "required": false,
10142
+ "description": "Defaults to \"Most popular\" when highlighted."
10143
+ }
10144
+ ]
10145
+ }
8447
10146
  },
8448
10147
  {
8449
10148
  "name": "className",
@@ -8459,7 +10158,14 @@
8459
10158
  "requiresAccessibleName": false
8460
10159
  },
8461
10160
  "since": "0.3.0",
8462
- "example": "import { PricingTableBlock } from '@sakaniui/react/blocks';\n\n<PricingTableBlock title=\"Title\" plans={[{ name: \"Name\", price: \"Price\", description: \"Description\", ctaLabel: \"Cta label\", features: [\"Feature\"] }]} />"
10161
+ "example": "import { PricingTableBlock } from '@sakaniui/react/blocks';\n\n<PricingTableBlock title=\"Title\" plans={[{ name: \"Name\", price: \"Price\", description: \"Description\", ctaLabel: \"Cta label\", features: [\"Feature\"] }]} />",
10162
+ "aliases": [
10163
+ "pricing",
10164
+ "pricing table",
10165
+ "pricing section",
10166
+ "pricing plans",
10167
+ "plans"
10168
+ ]
8463
10169
  },
8464
10170
  {
8465
10171
  "name": "ProductDetailBlock",
@@ -8476,7 +10182,23 @@
8476
10182
  {
8477
10183
  "name": "images",
8478
10184
  "type": "ProductGalleryImage[]",
8479
- "required": true
10185
+ "required": true,
10186
+ "shape": {
10187
+ "type": "ProductGalleryImage",
10188
+ "collection": "array",
10189
+ "fields": [
10190
+ {
10191
+ "name": "src",
10192
+ "type": "string",
10193
+ "required": true
10194
+ },
10195
+ {
10196
+ "name": "alt",
10197
+ "type": "string",
10198
+ "required": false
10199
+ }
10200
+ ]
10201
+ }
8480
10202
  },
8481
10203
  {
8482
10204
  "name": "rating",
@@ -8513,13 +10235,50 @@
8513
10235
  "name": "colors",
8514
10236
  "type": "ProductDetailColorOption[]",
8515
10237
  "required": false,
8516
- "default": "[]"
10238
+ "default": "[]",
10239
+ "shape": {
10240
+ "type": "ProductDetailColorOption",
10241
+ "collection": "array",
10242
+ "fields": [
10243
+ {
10244
+ "name": "label",
10245
+ "type": "string",
10246
+ "required": true
10247
+ },
10248
+ {
10249
+ "name": "color",
10250
+ "type": "string",
10251
+ "required": true
10252
+ },
10253
+ {
10254
+ "name": "available",
10255
+ "type": "boolean",
10256
+ "required": false
10257
+ }
10258
+ ]
10259
+ }
8517
10260
  },
8518
10261
  {
8519
10262
  "name": "sizes",
8520
10263
  "type": "ProductDetailSizeOption[]",
8521
10264
  "required": false,
8522
- "default": "[]"
10265
+ "default": "[]",
10266
+ "shape": {
10267
+ "type": "ProductDetailSizeOption",
10268
+ "collection": "array",
10269
+ "fields": [
10270
+ {
10271
+ "name": "size",
10272
+ "type": "string",
10273
+ "required": true
10274
+ },
10275
+ {
10276
+ "name": "available",
10277
+ "type": "boolean",
10278
+ "required": false
10279
+ }
10280
+ ]
10281
+ }
8523
10282
  },
8524
10283
  {
8525
10284
  "name": "defaultColor",
@@ -8605,7 +10364,105 @@
8605
10364
  {
8606
10365
  "name": "products",
8607
10366
  "type": "ProductGridItem[]",
8608
- "required": true
10367
+ "required": true,
10368
+ "shape": {
10369
+ "type": "ProductGridItem",
10370
+ "collection": "array",
10371
+ "fields": [
10372
+ {
10373
+ "name": "id",
10374
+ "type": "string",
10375
+ "required": false,
10376
+ "description": "Unique key for the grid -- defaults to `name` if omitted."
10377
+ },
10378
+ {
10379
+ "name": "image",
10380
+ "type": "string",
10381
+ "required": true
10382
+ },
10383
+ {
10384
+ "name": "imageAlt",
10385
+ "type": "string",
10386
+ "required": false
10387
+ },
10388
+ {
10389
+ "name": "name",
10390
+ "type": "string",
10391
+ "required": true
10392
+ },
10393
+ {
10394
+ "name": "description",
10395
+ "type": "string",
10396
+ "required": false
10397
+ },
10398
+ {
10399
+ "name": "price",
10400
+ "type": "number",
10401
+ "required": true
10402
+ },
10403
+ {
10404
+ "name": "compareAtPrice",
10405
+ "type": "number",
10406
+ "required": false,
10407
+ "description": "Presence switches to the sale badge + struck-original/danger-current price."
10408
+ },
10409
+ {
10410
+ "name": "rating",
10411
+ "type": "number",
10412
+ "required": false
10413
+ },
10414
+ {
10415
+ "name": "reviewCount",
10416
+ "type": "number",
10417
+ "required": false
10418
+ },
10419
+ {
10420
+ "name": "colors",
10421
+ "type": "ProductCardColor[]",
10422
+ "required": false
10423
+ },
10424
+ {
10425
+ "name": "onColorSelect",
10426
+ "type": "((id: string) => void)",
10427
+ "required": false
10428
+ },
10429
+ {
10430
+ "name": "inStock",
10431
+ "type": "boolean",
10432
+ "required": false
10433
+ },
10434
+ {
10435
+ "name": "wishlisted",
10436
+ "type": "boolean",
10437
+ "required": false
10438
+ },
10439
+ {
10440
+ "name": "onWishlistToggle",
10441
+ "type": "((wishlisted: boolean) => void)",
10442
+ "required": false
10443
+ },
10444
+ {
10445
+ "name": "onAddItem",
10446
+ "type": "(() => void)",
10447
+ "required": false
10448
+ },
10449
+ {
10450
+ "name": "addItemLabel",
10451
+ "type": "string",
10452
+ "required": false
10453
+ },
10454
+ {
10455
+ "name": "formatPrice",
10456
+ "type": "((amount: number) => string)",
10457
+ "required": false
10458
+ },
10459
+ {
10460
+ "name": "className",
10461
+ "type": "string",
10462
+ "required": false
10463
+ }
10464
+ ]
10465
+ }
8609
10466
  },
8610
10467
  {
8611
10468
  "name": "showFilterBar",
@@ -8688,7 +10545,12 @@
8688
10545
  "requiresAccessibleName": false
8689
10546
  },
8690
10547
  "since": "0.1.0",
8691
- "example": "import { ProfileSettingsBlock } from '@sakaniui/react/blocks';\n\n<ProfileSettingsBlock />"
10548
+ "example": "import { ProfileSettingsBlock } from '@sakaniui/react/blocks';\n\n<ProfileSettingsBlock />",
10549
+ "aliases": [
10550
+ "profile settings",
10551
+ "account settings",
10552
+ "settings page"
10553
+ ]
8692
10554
  },
8693
10555
  {
8694
10556
  "name": "ResetPasswordBlock",
@@ -8737,7 +10599,12 @@
8737
10599
  "requiresAccessibleName": false
8738
10600
  },
8739
10601
  "since": "0.3.0",
8740
- "example": "import { ResetPasswordBlock } from '@sakaniui/react/blocks';\n\n<ResetPasswordBlock />"
10602
+ "example": "import { ResetPasswordBlock } from '@sakaniui/react/blocks';\n\n<ResetPasswordBlock />",
10603
+ "aliases": [
10604
+ "reset password",
10605
+ "new password",
10606
+ "change password"
10607
+ ]
8741
10608
  },
8742
10609
  {
8743
10610
  "name": "SectionFooterBlock",
@@ -8755,7 +10622,23 @@
8755
10622
  {
8756
10623
  "name": "links",
8757
10624
  "type": "SectionFooterLink[]",
8758
- "required": false
10625
+ "required": false,
10626
+ "shape": {
10627
+ "type": "SectionFooterLink",
10628
+ "collection": "array",
10629
+ "fields": [
10630
+ {
10631
+ "name": "label",
10632
+ "type": "string",
10633
+ "required": true
10634
+ },
10635
+ {
10636
+ "name": "href",
10637
+ "type": "string",
10638
+ "required": true
10639
+ }
10640
+ ]
10641
+ }
8759
10642
  },
8760
10643
  {
8761
10644
  "name": "variant",
@@ -8790,7 +10673,54 @@
8790
10673
  {
8791
10674
  "name": "items",
8792
10675
  "type": "ShoppingCartItemData[]",
8793
- "required": true
10676
+ "required": true,
10677
+ "shape": {
10678
+ "type": "ShoppingCartItemData",
10679
+ "collection": "array",
10680
+ "fields": [
10681
+ {
10682
+ "name": "id",
10683
+ "type": "string",
10684
+ "required": false
10685
+ },
10686
+ {
10687
+ "name": "image",
10688
+ "type": "string",
10689
+ "required": true
10690
+ },
10691
+ {
10692
+ "name": "imageAlt",
10693
+ "type": "string",
10694
+ "required": false
10695
+ },
10696
+ {
10697
+ "name": "name",
10698
+ "type": "string",
10699
+ "required": true
10700
+ },
10701
+ {
10702
+ "name": "variant",
10703
+ "type": "string",
10704
+ "required": false
10705
+ },
10706
+ {
10707
+ "name": "price",
10708
+ "type": "number",
10709
+ "required": true
10710
+ },
10711
+ {
10712
+ "name": "compareAtPrice",
10713
+ "type": "number",
10714
+ "required": false,
10715
+ "description": "Presence switches that row to CartItem's own struck-original + danger-current sale treatment."
10716
+ },
10717
+ {
10718
+ "name": "quantity",
10719
+ "type": "number",
10720
+ "required": true
10721
+ }
10722
+ ]
10723
+ }
8794
10724
  },
8795
10725
  {
8796
10726
  "name": "shippingCost",
@@ -8826,7 +10756,12 @@
8826
10756
  "requiresAccessibleName": false
8827
10757
  },
8828
10758
  "since": "0.3.0",
8829
- "example": "import { ShoppingCartBlock } from '@sakaniui/react/blocks';\n\n<ShoppingCartBlock items={[{ image: \"/images/example.jpg\", name: \"Name\", price: 49, quantity: 1 }]} />"
10759
+ "example": "import { ShoppingCartBlock } from '@sakaniui/react/blocks';\n\n<ShoppingCartBlock items={[{ image: \"/images/example.jpg\", name: \"Name\", price: 49, quantity: 1 }]} />",
10760
+ "aliases": [
10761
+ "cart",
10762
+ "shopping cart",
10763
+ "basket"
10764
+ ]
8830
10765
  },
8831
10766
  {
8832
10767
  "name": "SignUpBlock",
@@ -8852,7 +10787,28 @@
8852
10787
  "name": "socialProviders",
8853
10788
  "type": "SignUpSocialProvider[]",
8854
10789
  "required": false,
8855
- "default": "[]"
10790
+ "default": "[]",
10791
+ "shape": {
10792
+ "type": "SignUpSocialProvider",
10793
+ "collection": "array",
10794
+ "fields": [
10795
+ {
10796
+ "name": "icon",
10797
+ "type": "ReactNode",
10798
+ "required": true
10799
+ },
10800
+ {
10801
+ "name": "label",
10802
+ "type": "string",
10803
+ "required": true
10804
+ },
10805
+ {
10806
+ "name": "onClick",
10807
+ "type": "(() => void)",
10808
+ "required": false
10809
+ }
10810
+ ]
10811
+ }
8856
10812
  },
8857
10813
  {
8858
10814
  "name": "onSubmit",
@@ -8875,7 +10831,14 @@
8875
10831
  "requiresAccessibleName": false
8876
10832
  },
8877
10833
  "since": "0.3.0",
8878
- "example": "import { SignUpBlock } from '@sakaniui/react/blocks';\n\n<SignUpBlock />"
10834
+ "example": "import { SignUpBlock } from '@sakaniui/react/blocks';\n\n<SignUpBlock />",
10835
+ "aliases": [
10836
+ "signup",
10837
+ "sign up",
10838
+ "register",
10839
+ "registration",
10840
+ "create account"
10841
+ ]
8879
10842
  },
8880
10843
  {
8881
10844
  "name": "TeamSectionBlock",
@@ -8904,7 +10867,60 @@
8904
10867
  {
8905
10868
  "name": "members",
8906
10869
  "type": "TeamSectionMember[]",
8907
- "required": true
10870
+ "required": true,
10871
+ "shape": {
10872
+ "type": "TeamSectionMember",
10873
+ "collection": "array",
10874
+ "fields": [
10875
+ {
10876
+ "name": "id",
10877
+ "type": "string",
10878
+ "required": false,
10879
+ "description": "Unique key for the grid -- defaults to `name` if omitted."
10880
+ },
10881
+ {
10882
+ "name": "location",
10883
+ "type": "string",
10884
+ "required": true
10885
+ },
10886
+ {
10887
+ "name": "name",
10888
+ "type": "string",
10889
+ "required": true
10890
+ },
10891
+ {
10892
+ "name": "role",
10893
+ "type": "string",
10894
+ "required": true
10895
+ },
10896
+ {
10897
+ "name": "image",
10898
+ "type": "string",
10899
+ "required": true
10900
+ },
10901
+ {
10902
+ "name": "locationStatus",
10903
+ "type": "LocationDotStatus",
10904
+ "required": false
10905
+ },
10906
+ {
10907
+ "name": "imageAlt",
10908
+ "type": "string",
10909
+ "required": false
10910
+ },
10911
+ {
10912
+ "name": "bio",
10913
+ "type": "string",
10914
+ "required": false,
10915
+ "description": "Presence switches to the \"Card details\" style (adds this paragraph below the meta row)."
10916
+ },
10917
+ {
10918
+ "name": "socialLinks",
10919
+ "type": "TeamCardSocialLink[]",
10920
+ "required": false
10921
+ }
10922
+ ]
10923
+ }
8908
10924
  },
8909
10925
  {
8910
10926
  "name": "className",
@@ -8920,7 +10936,12 @@
8920
10936
  "requiresAccessibleName": false
8921
10937
  },
8922
10938
  "since": "0.3.0",
8923
- "example": "import { TeamSectionBlock } from '@sakaniui/react/blocks';\n\n<TeamSectionBlock title=\"Title\" members={[{ name: \"Name\", role: \"Role\", location: \"Location\", image: \"/images/example.jpg\" }]} />"
10939
+ "example": "import { TeamSectionBlock } from '@sakaniui/react/blocks';\n\n<TeamSectionBlock title=\"Title\" members={[{ name: \"Name\", role: \"Role\", location: \"Location\", image: \"/images/example.jpg\" }]} />",
10940
+ "aliases": [
10941
+ "team",
10942
+ "team section",
10943
+ "meet the team"
10944
+ ]
8924
10945
  },
8925
10946
  {
8926
10947
  "name": "TestimonialBlock",
@@ -8932,7 +10953,33 @@
8932
10953
  {
8933
10954
  "name": "testimonials",
8934
10955
  "type": "Testimonial[]",
8935
- "required": true
10956
+ "required": true,
10957
+ "shape": {
10958
+ "type": "Testimonial",
10959
+ "collection": "array",
10960
+ "fields": [
10961
+ {
10962
+ "name": "quote",
10963
+ "type": "string",
10964
+ "required": true
10965
+ },
10966
+ {
10967
+ "name": "authorName",
10968
+ "type": "string",
10969
+ "required": true
10970
+ },
10971
+ {
10972
+ "name": "authorRole",
10973
+ "type": "string",
10974
+ "required": true
10975
+ },
10976
+ {
10977
+ "name": "authorAvatar",
10978
+ "type": "string",
10979
+ "required": false
10980
+ }
10981
+ ]
10982
+ }
8936
10983
  },
8937
10984
  {
8938
10985
  "name": "className",
@@ -8947,7 +10994,12 @@
8947
10994
  "requiresAccessibleName": false
8948
10995
  },
8949
10996
  "since": "0.3.0",
8950
- "example": "import { TestimonialBlock } from '@sakaniui/react/blocks';\n\n<TestimonialBlock testimonials={[{ quote: \"Quote\", authorName: \"Author name\", authorRole: \"Author role\" }]} />"
10997
+ "example": "import { TestimonialBlock } from '@sakaniui/react/blocks';\n\n<TestimonialBlock testimonials={[{ quote: \"Quote\", authorName: \"Author name\", authorRole: \"Author role\" }]} />",
10998
+ "aliases": [
10999
+ "testimonial",
11000
+ "testimonials",
11001
+ "customer quotes"
11002
+ ]
8951
11003
  },
8952
11004
  {
8953
11005
  "name": "TwoFactorAuthBlock",
@@ -8992,7 +11044,15 @@
8992
11044
  "requiresAccessibleName": false
8993
11045
  },
8994
11046
  "since": "0.3.0",
8995
- "example": "import { TwoFactorAuthBlock } from '@sakaniui/react/blocks';\n\n<TwoFactorAuthBlock />"
11047
+ "example": "import { TwoFactorAuthBlock } from '@sakaniui/react/blocks';\n\n<TwoFactorAuthBlock />",
11048
+ "aliases": [
11049
+ "2fa",
11050
+ "two factor",
11051
+ "two factor authentication",
11052
+ "otp",
11053
+ "mfa",
11054
+ "verification code"
11055
+ ]
8996
11056
  }
8997
11057
  ],
8998
11058
  "utilities": [