@instruments/materia-ui 0.4.6 → 0.4.8

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.
Files changed (123) hide show
  1. package/dist/components/accordion/accordion-variants.js +1 -0
  2. package/dist/components/alert/alert-root.js +1 -0
  3. package/dist/components/anchor/anchor-root.js +1 -0
  4. package/dist/components/avatar/avatar-badge.d.ts +1 -1
  5. package/dist/components/avatar/avatar-fallback.d.ts +1 -1
  6. package/dist/components/avatar/avatar-root.d.ts +1 -1
  7. package/dist/components/avatar/avatar-status.d.ts +2 -1
  8. package/dist/components/badge/badge-button.d.ts +1 -0
  9. package/dist/components/badge/badge-button.js +1 -0
  10. package/dist/components/badge/badge-root.d.ts +4 -1
  11. package/dist/components/breadcrumb/breadcrumb-root.d.ts +1 -0
  12. package/dist/components/button/button-variants.js +7 -0
  13. package/dist/components/button-group/button-group-root.js +4 -0
  14. package/dist/components/card/card-root.d.ts +1 -0
  15. package/dist/components/card/card-root.js +1 -0
  16. package/dist/components/checkbox-card/checkbox-card-root.d.ts +1 -1
  17. package/dist/components/checkbox-field/checkbox-field-root.d.ts +4 -1
  18. package/dist/components/context-menu/context-menu-checkbox-item.d.ts +1 -1
  19. package/dist/components/context-menu/context-menu-content.d.ts +1 -1
  20. package/dist/components/context-menu/context-menu-item.d.ts +1 -1
  21. package/dist/components/context-menu/context-menu-radio-item.d.ts +1 -1
  22. package/dist/components/context-menu/context-menu-separator.d.ts +2 -2
  23. package/dist/components/context-menu/context-menu-separator.js +1 -1
  24. package/dist/components/context-menu/context-menu-sub-trigger.d.ts +1 -1
  25. package/dist/components/country-combobox/country-combobox-root.d.ts +1 -1
  26. package/dist/components/dot/dot-root.js +1 -0
  27. package/dist/components/drawer/drawer-root.d.ts +1 -0
  28. package/dist/components/dropdown-menu/dropdown-menu-checkbox-item.d.ts +1 -1
  29. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +1 -1
  30. package/dist/components/dropdown-menu/dropdown-menu-item.d.ts +1 -1
  31. package/dist/components/dropdown-menu/dropdown-menu-radio-item.d.ts +1 -1
  32. package/dist/components/dropdown-menu/dropdown-menu-separator.d.ts +2 -2
  33. package/dist/components/dropdown-menu/dropdown-menu-separator.js +1 -1
  34. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
  35. package/dist/components/empty/empty-root.js +1 -0
  36. package/dist/components/expand-button/expand-button-root.js +1 -0
  37. package/dist/components/field/field-error.d.ts +1 -0
  38. package/dist/components/field/field-variants.js +1 -0
  39. package/dist/components/icon-box/icon-box-root.js +4 -0
  40. package/dist/components/identified-surface.d.ts +5 -0
  41. package/dist/components/input/input-variants.js +1 -0
  42. package/dist/components/input-card/input-card-root.d.ts +3 -0
  43. package/dist/components/input-group/input-group-button.d.ts +9 -5
  44. package/dist/components/item/item-group.js +1 -0
  45. package/dist/components/item/item-media.d.ts +8 -0
  46. package/dist/components/item/item-media.js +1 -0
  47. package/dist/components/item/item-root.d.ts +1 -0
  48. package/dist/components/item/item-root.js +1 -0
  49. package/dist/components/kbd/kbd-root.js +2 -0
  50. package/dist/components/menu-item/menu-item-variants.js +5 -0
  51. package/dist/components/menu-parts-types.d.ts +82 -0
  52. package/dist/components/menu-parts-types.js +1 -0
  53. package/dist/components/menu-parts.d.ts +3 -66
  54. package/dist/components/menubar/menubar-checkbox-item.d.ts +1 -1
  55. package/dist/components/menubar/menubar-content.d.ts +1 -1
  56. package/dist/components/menubar/menubar-item.d.ts +1 -1
  57. package/dist/components/menubar/menubar-radio-item.d.ts +1 -1
  58. package/dist/components/menubar/menubar-separator.d.ts +2 -2
  59. package/dist/components/menubar/menubar-separator.js +1 -1
  60. package/dist/components/menubar/menubar-sub-trigger.d.ts +1 -1
  61. package/dist/components/phone-input/phone-input-root.js +2 -0
  62. package/dist/components/pill/pill-root.d.ts +1 -0
  63. package/dist/components/pill/pill-variants.js +3 -0
  64. package/dist/components/popover/popover-root.d.ts +2 -0
  65. package/dist/components/progress/progress-root.d.ts +2 -0
  66. package/dist/components/scroll-frame/scroll-frame-root.d.ts +8 -2
  67. package/dist/components/segmented-control/segmented-control-root.d.ts +8 -2
  68. package/dist/components/select/select-content.d.ts +1 -0
  69. package/dist/components/select/select-trigger.d.ts +10 -2
  70. package/dist/components/select/select-trigger.js +1 -1
  71. package/dist/components/sidepanel/sidepanel-header.d.ts +4 -0
  72. package/dist/components/sub-navigation/sub-navigation-link.d.ts +1 -0
  73. package/dist/components/swatch/swatch-tile.d.ts +2 -1
  74. package/dist/components/swatch/swatch-tile.js +1 -1
  75. package/dist/components/swatch-group/swatch-group-item.d.ts +1 -1
  76. package/dist/components/swatch-selector/swatch-selector-item.d.ts +1 -1
  77. package/dist/components/tab-navigation/tab-navigation-link.d.ts +1 -0
  78. package/dist/components/tabs/tabs-panel.d.ts +4 -0
  79. package/dist/components/tabs/tabs-variants.js +4 -0
  80. package/dist/components/thinking-loader/thinking-loader-counter.d.ts +2 -0
  81. package/dist/components/thinking-loader/thinking-loader-icon.d.ts +2 -0
  82. package/dist/components/thinking-loader/thinking-loader-step.d.ts +2 -0
  83. package/dist/components/toggle/toggle-root.js +2 -0
  84. package/dist/components/voice/voice-error-popover.d.ts +2 -0
  85. package/dist/components/voice/voice-pill.d.ts +2 -0
  86. package/dist/compositions/attribute-card.d.ts +1 -0
  87. package/dist/compositions/card-grid/card-grid-rows.d.ts +13 -0
  88. package/dist/compositions/data-grid/data-grid-checkbox.d.ts +8 -0
  89. package/dist/compositions/data-grid/data-grid-expand.d.ts +1 -0
  90. package/dist/compositions/data-grid/data-grid-filterable-header.d.ts +1 -0
  91. package/dist/compositions/data-grid/data-grid-types.d.ts +6 -0
  92. package/dist/compositions/data-grid-column-header/data-grid-column-header-root.d.ts +5 -0
  93. package/dist/compositions/data-grid-table/data-grid-table-body.d.ts +13 -1
  94. package/dist/compositions/data-grid-table/data-grid-table-body.js +1 -1
  95. package/dist/compositions/data-grid-table/data-grid-table-header.d.ts +5 -0
  96. package/dist/compositions/document-list/document-list-icon.d.ts +1 -0
  97. package/dist/compositions/document-list/document-list-root.js +4 -0
  98. package/dist/compositions/editorial-card/editorial-card-content.d.ts +2 -0
  99. package/dist/compositions/file-upload/file-upload-dropzone.d.ts +3 -0
  100. package/dist/compositions/folder-tile/folder-tile-types.d.ts +2 -0
  101. package/dist/compositions/mobile-navigation/mobile-navigation-header.d.ts +5 -2
  102. package/dist/compositions/mobile-navigation/mobile-navigation-header.js +0 -1
  103. package/dist/compositions/mobile-navigation/mobile-navigation-item.d.ts +2 -0
  104. package/dist/compositions/mobile-navigation/mobile-navigation-profile.d.ts +1 -0
  105. package/dist/compositions/mobile-navigation/mobile-navigation-root.d.ts +1 -0
  106. package/dist/compositions/page-toolbar/page-toolbar-applied.d.ts +4 -1
  107. package/dist/compositions/page-toolbar/page-toolbar-sort.d.ts +3 -0
  108. package/dist/compositions/product-card/product-card-content.d.ts +1 -0
  109. package/dist/compositions/product-card/product-card-image-types.d.ts +8 -2
  110. package/dist/compositions/product-card/product-card-provider-types.d.ts +47 -2
  111. package/dist/compositions/product-card/product-card-root.d.ts +1 -0
  112. package/dist/compositions/product-card/product-card-swatch.d.ts +2 -0
  113. package/dist/compositions/product-card/product-card-tools-types.d.ts +6 -0
  114. package/dist/compositions/product-specifications-selector/product-specifications-selector.d.ts +14 -0
  115. package/dist/compositions/quick-view/quick-view-body.d.ts +1 -1
  116. package/dist/compositions/sidebar/sidebar-group.d.ts +5 -1
  117. package/dist/compositions/sidebar/sidebar-menu-button.d.ts +11 -0
  118. package/dist/compositions/sidebar/sidebar-menu-sub.d.ts +5 -1
  119. package/dist/compositions/sidebar/sidebar-trigger.d.ts +3 -1
  120. package/dist/compositions/variant-selector/variant-selector-item.d.ts +1 -0
  121. package/dist/data/docs-manifest.js +727 -203
  122. package/dist/utils/with-test-id.d.ts +1 -0
  123. package/package.json +1 -1
@@ -19,6 +19,8 @@ export const docsManifest = {
19
19
  name: "variant",
20
20
  type: '"default" | "outline" | "solid" | null | undefined',
21
21
  required: false,
22
+ defaultValue: '"default"',
23
+ description: "Item styling, inherited by every item: `default` is ruled rows divided by bottom borders, `outline` bordered cards, `solid` filled cards. `outline` and `solid` space the items apart.",
22
24
  },
23
25
  {
24
26
  name: "className",
@@ -127,6 +129,8 @@ export const docsManifest = {
127
129
  name: "tone",
128
130
  type: '"neutral" | "danger" | null | undefined',
129
131
  required: false,
132
+ defaultValue: '"neutral"',
133
+ description: "Semantic colour: `neutral` for information, `danger` for an error or a destructive warning.",
130
134
  },
131
135
  ],
132
136
  },
@@ -319,6 +323,8 @@ export const docsManifest = {
319
323
  name: "variant",
320
324
  type: '"default" | "muted" | "plain" | null | undefined',
321
325
  required: false,
326
+ defaultValue: '"default"',
327
+ description: "Link treatment: `default` is a medium-weight underlined link, `muted` reads as body text until hovered, `plain` has no underline until hovered.",
322
328
  },
323
329
  ],
324
330
  },
@@ -506,6 +512,7 @@ export const docsManifest = {
506
512
  type: "AvatarSize | undefined",
507
513
  required: false,
508
514
  defaultValue: '"base"',
515
+ description: "Avatar width and height, `2xs` (20px) to `6xl` (128px). Inside an `AvatarGroup`, the group's `size` wins.",
509
516
  },
510
517
  {
511
518
  name: "radius",
@@ -574,6 +581,7 @@ export const docsManifest = {
574
581
  type: '"bottom-right" | "top-right" | "bottom-left" | "top-left"',
575
582
  required: false,
576
583
  defaultValue: '"top-right"',
584
+ description: "Which corner of the avatar the badge overlaps.",
577
585
  },
578
586
  {
579
587
  name: "size",
@@ -610,6 +618,7 @@ export const docsManifest = {
610
618
  type: "AvatarSize | undefined",
611
619
  required: false,
612
620
  defaultValue: '"base"',
621
+ description: "Initials text size; set it to the same `size` as the parent `AvatarRoot`, as it does not inherit it. At `2xs` and `xs` only one initial shows.",
613
622
  },
614
623
  {
615
624
  name: "name",
@@ -735,6 +744,7 @@ export const docsManifest = {
735
744
  type: '"bottom-right" | "top-right" | "bottom-left" | "top-left"',
736
745
  required: false,
737
746
  defaultValue: '"bottom-right"',
747
+ description: "Which corner of the avatar the dot sits in.",
738
748
  },
739
749
  {
740
750
  name: "size",
@@ -746,6 +756,7 @@ export const docsManifest = {
746
756
  name: "status",
747
757
  type: "AvatarStatusType",
748
758
  required: true,
759
+ description: "Presence shown by the dot colour: `online` green, `away` and `busy` amber (the same colour), `dnd` red, `offline` muted grey.",
749
760
  },
750
761
  {
751
762
  name: "withBorder",
@@ -800,6 +811,7 @@ export const docsManifest = {
800
811
  name: "disabled",
801
812
  type: "boolean",
802
813
  required: false,
814
+ description: "Dims the badge to half opacity and stops it receiving pointer events.",
803
815
  },
804
816
  {
805
817
  name: "focused",
@@ -817,12 +829,14 @@ export const docsManifest = {
817
829
  name: "icon",
818
830
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
819
831
  required: false,
832
+ description: "Icon component (not an element) drawn beside the text, sized to match the badge. Replaced by a spinner while `loading`.",
820
833
  },
821
834
  {
822
835
  name: "iconPlacement",
823
836
  type: '"end" | "start"',
824
837
  required: false,
825
838
  defaultValue: '"start"',
839
+ description: "Which side of the text `icon` sits on.",
826
840
  },
827
841
  {
828
842
  name: "label",
@@ -846,6 +860,7 @@ export const docsManifest = {
846
860
  name: "testid",
847
861
  type: "string",
848
862
  required: false,
863
+ description: "Sets `data-testid` on the badge. Lower-case `testid`, unlike the `testId` prop on other components.",
849
864
  },
850
865
  {
851
866
  name: "value",
@@ -877,16 +892,22 @@ export const docsManifest = {
877
892
  name: "tone",
878
893
  type: '"neutral" | "brand" | "danger" | "warning" | "success" | "info" | null | undefined',
879
894
  required: false,
895
+ defaultValue: '"neutral"',
896
+ description: "Semantic colour: `neutral` for plain labels, `brand` for the house yellow, `success` / `warning` / `info` / `danger` for status.",
880
897
  },
881
898
  {
882
899
  name: "radius",
883
900
  type: '"rounded" | "square" | "full" | null | undefined',
884
901
  required: false,
902
+ defaultValue: '"full"',
903
+ description: "Corner shape: `full` is a capsule, `rounded` a soft rectangle, `square` has sharp corners. Overrides the size's own corner radius.",
885
904
  },
886
905
  {
887
906
  name: "emphasis",
888
907
  type: '"outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
889
908
  required: false,
909
+ defaultValue: '"solid"',
910
+ description: "Visual weight: `solid` is a filled pill, `soft` a pale tint, `outline` a border, `ghost` text only, `transparent` frosted glass for use over images only.",
890
911
  },
891
912
  {
892
913
  name: "asInput",
@@ -904,11 +925,14 @@ export const docsManifest = {
904
925
  name: "icon",
905
926
  type: "React.ReactNode",
906
927
  required: false,
928
+ description: "Element shown when no `children` are given, an X icon unless replaced; an icon-only button needs an `aria-label`.",
907
929
  },
908
930
  {
909
931
  name: "variant",
910
932
  type: '"default" | null | undefined',
911
933
  required: false,
934
+ defaultValue: '"default"',
935
+ description: "Button style; `default` is the only one, so leave it unset.",
912
936
  },
913
937
  ],
914
938
  },
@@ -1107,6 +1131,7 @@ export const docsManifest = {
1107
1131
  name: "separator",
1108
1132
  type: "React.ReactNode",
1109
1133
  required: false,
1134
+ description: "Not used by `Breadcrumb`: set the divider by passing children to each `BreadcrumbSeparator` instead.",
1110
1135
  },
1111
1136
  ],
1112
1137
  },
@@ -1211,36 +1236,50 @@ export const docsManifest = {
1211
1236
  name: "tone",
1212
1237
  type: '"neutral" | "brand" | "danger" | null | undefined',
1213
1238
  required: false,
1239
+ defaultValue: '"neutral"',
1240
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
1214
1241
  },
1215
1242
  {
1216
1243
  name: "radius",
1217
1244
  type: '"rounded" | "square" | "full" | null | undefined',
1218
1245
  required: false,
1246
+ defaultValue: '"full"',
1247
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
1219
1248
  },
1220
1249
  {
1221
1250
  name: "square",
1222
1251
  type: "boolean | null | undefined",
1223
1252
  required: false,
1253
+ defaultValue: "false",
1254
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
1224
1255
  },
1225
1256
  {
1226
1257
  name: "emphasis",
1227
1258
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
1228
1259
  required: false,
1260
+ defaultValue: '"solid"',
1261
+ description: "Visual weight, paired with `tone`: `solid` and `soft` are filled, `outline` and `ghost` lighter, `transparent` a blurred translucent fill, `link` plain text.",
1229
1262
  },
1230
1263
  {
1231
1264
  name: "asInput",
1232
1265
  type: "boolean | null | undefined",
1233
1266
  required: false,
1267
+ defaultValue: "false",
1268
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
1234
1269
  },
1235
1270
  {
1236
1271
  name: "align",
1237
1272
  type: '"center" | "end" | "start" | null | undefined',
1238
1273
  required: false,
1274
+ defaultValue: '"center"',
1275
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
1239
1276
  },
1240
1277
  {
1241
1278
  name: "pressed",
1242
1279
  type: "boolean | null | undefined",
1243
1280
  required: false,
1281
+ defaultValue: "true",
1282
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
1244
1283
  },
1245
1284
  {
1246
1285
  name: "size",
@@ -1328,6 +1367,7 @@ export const docsManifest = {
1328
1367
  name: "testId",
1329
1368
  type: "string",
1330
1369
  required: false,
1370
+ description: "Rendered as `data-testid`, for Playwright selectors.",
1331
1371
  },
1332
1372
  ],
1333
1373
  },
@@ -1426,21 +1466,28 @@ export const docsManifest = {
1426
1466
  name: "orientation",
1427
1467
  type: '"horizontal" | "vertical" | null | undefined',
1428
1468
  required: false,
1469
+ defaultValue: '"horizontal"',
1470
+ description: "Direction the children are laid out: `horizontal` in a row, `vertical` in a column.",
1429
1471
  },
1430
1472
  {
1431
1473
  name: "variant",
1432
1474
  type: '"segmented" | "joined" | null | undefined',
1433
1475
  required: false,
1476
+ defaultValue: '"joined"',
1477
+ description: "Group style: `joined` lets each child draw its own border and merges the shared edges; `segmented` draws one bordered, shadowed container around the children.",
1434
1478
  },
1435
1479
  {
1436
1480
  name: "radius",
1437
1481
  type: '"rounded" | "square" | "full" | null | undefined',
1438
1482
  required: false,
1483
+ defaultValue: '"full"',
1484
+ description: "Outer corners of the group: only the first and last child are rounded, the inner edges stay square. `segmented` rounds the container too.",
1439
1485
  },
1440
1486
  {
1441
1487
  name: "dividers",
1442
1488
  type: "boolean | null | undefined",
1443
1489
  required: false,
1490
+ description: "Draw a line between children. Defaults on for the `segmented` variant and off for `joined`.",
1444
1491
  },
1445
1492
  ],
1446
1493
  },
@@ -1518,6 +1565,8 @@ export const docsManifest = {
1518
1565
  name: "border",
1519
1566
  type: "BorderStyle",
1520
1567
  required: false,
1568
+ defaultValue: '"none"',
1569
+ description: "Outline: `none` draws no border, `solid` a 1px border, `dashed` a faint dashed one for placeholder or drop areas.",
1521
1570
  },
1522
1571
  {
1523
1572
  name: "inset",
@@ -1543,11 +1592,14 @@ export const docsManifest = {
1543
1592
  name: "testId",
1544
1593
  type: "string",
1545
1594
  required: false,
1595
+ description: "Rendered as `data-testid`, for Playwright selectors.",
1546
1596
  },
1547
1597
  {
1548
1598
  name: "variant",
1549
1599
  type: '"muted" | "ghost" | "accent" | "card" | null | undefined',
1550
1600
  required: false,
1601
+ defaultValue: '"card"',
1602
+ description: "Surface: `card` is the standard card fill, `muted` and `accent` are tinted fills, `ghost` has no fill or shadow.",
1551
1603
  },
1552
1604
  ],
1553
1605
  },
@@ -2199,6 +2251,7 @@ export const docsManifest = {
2199
2251
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
2200
2252
  required: false,
2201
2253
  defaultValue: '"base"',
2254
+ description: "Padding, corner radius and icon size of every card in the group; items read it from context.",
2202
2255
  },
2203
2256
  ],
2204
2257
  },
@@ -2297,21 +2350,25 @@ export const docsManifest = {
2297
2350
  type: '"xs" | "sm"',
2298
2351
  required: false,
2299
2352
  defaultValue: '"xs"',
2353
+ description: "Checkbox size; only `xs` and `sm` are allowed.",
2300
2354
  },
2301
2355
  {
2302
2356
  name: "checkboxClassName",
2303
2357
  type: "string",
2304
2358
  required: false,
2359
+ description: "Extra classes for the checkbox itself; `className` styles the outer field row.",
2305
2360
  },
2306
2361
  {
2307
2362
  name: "labelClassName",
2308
2363
  type: "string",
2309
2364
  required: false,
2365
+ description: "Extra classes for the label text.",
2310
2366
  },
2311
2367
  {
2312
2368
  name: "descriptionClassName",
2313
2369
  type: "string",
2314
2370
  required: false,
2371
+ description: "Extra classes for the description text; only applied when `description` is set.",
2315
2372
  },
2316
2373
  ],
2317
2374
  },
@@ -2939,7 +2996,7 @@ export const docsManifest = {
2939
2996
  },
2940
2997
  {
2941
2998
  name: "render",
2942
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
2999
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
2943
3000
  required: false,
2944
3001
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
2945
3002
  },
@@ -2964,6 +3021,8 @@ export const docsManifest = {
2964
3021
  name: "size",
2965
3022
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
2966
3023
  required: false,
3024
+ defaultValue: '"sm"',
3025
+ description: "Size of every item, label and shortcut inside, which read it from context. Submenus inherit it.",
2967
3026
  },
2968
3027
  {
2969
3028
  name: "itemRadius",
@@ -3009,16 +3068,20 @@ export const docsManifest = {
3009
3068
  name: "inset",
3010
3069
  type: "boolean",
3011
3070
  required: false,
3071
+ description: "Pads the start so a row with no leading glyph lines up with rows that have an icon, dot or avatar.",
3012
3072
  },
3013
3073
  {
3014
3074
  name: "tone",
3015
3075
  type: '"neutral" | "danger"',
3016
3076
  required: false,
3077
+ defaultValue: '"neutral"',
3078
+ description: "`danger` marks a destructive action with red text and a red highlight.",
3017
3079
  },
3018
3080
  {
3019
3081
  name: "avatar",
3020
3082
  type: "React.ReactNode",
3021
3083
  required: false,
3084
+ description: "Custom leading element, such as an `Avatar`. Takes precedence over `dot` and `icon`.",
3022
3085
  },
3023
3086
  {
3024
3087
  name: "dot",
@@ -3030,21 +3093,25 @@ export const docsManifest = {
3030
3093
  name: "icon",
3031
3094
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
3032
3095
  required: false,
3096
+ description: "Leading icon, passed as a component (such as a Lucide icon) rather than an element. Hidden when `avatar` or `dot` is set.",
3033
3097
  },
3034
3098
  {
3035
3099
  name: "suffixIcon",
3036
3100
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
3037
3101
  required: false,
3102
+ description: "Trailing icon, passed as a component. Replaces `kbd` when both are set.",
3038
3103
  },
3039
3104
  {
3040
3105
  name: "kbd",
3041
3106
  type: "string[]",
3042
3107
  required: false,
3108
+ description: 'Keyboard shortcut keys shown as keycaps at the end, for example `["⌘", "C"]`. Ignored when `suffixIcon` is set.',
3043
3109
  },
3044
3110
  {
3045
3111
  name: "suffix",
3046
3112
  type: "React.ReactNode",
3047
3113
  required: false,
3114
+ description: "Custom trailing content, rendered after `suffixIcon` or `kbd`.",
3048
3115
  },
3049
3116
  {
3050
3117
  name: "active",
@@ -3060,7 +3127,7 @@ export const docsManifest = {
3060
3127
  },
3061
3128
  {
3062
3129
  name: "render",
3063
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
3130
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
3064
3131
  required: false,
3065
3132
  description: "Replace the default `<button>` row (e.g. with a link); glyph props render inside it, around `children`.",
3066
3133
  },
@@ -3085,6 +3152,7 @@ export const docsManifest = {
3085
3152
  name: "inset",
3086
3153
  type: "boolean",
3087
3154
  required: false,
3155
+ description: "Pads the start so the label lines up with items that have a leading icon.",
3088
3156
  },
3089
3157
  ],
3090
3158
  },
@@ -3109,7 +3177,7 @@ export const docsManifest = {
3109
3177
  },
3110
3178
  {
3111
3179
  name: "render",
3112
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
3180
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
3113
3181
  required: false,
3114
3182
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
3115
3183
  },
@@ -3134,6 +3202,8 @@ export const docsManifest = {
3134
3202
  name: "spacing",
3135
3203
  type: '"default" | "compact"',
3136
3204
  required: false,
3205
+ defaultValue: '"default"',
3206
+ description: "`default` is a 1px rule with 4px margins. `compact` centres the same rule in a taller transparent band, leaving more room around it.",
3137
3207
  },
3138
3208
  ],
3139
3209
  },
@@ -3160,6 +3230,7 @@ export const docsManifest = {
3160
3230
  name: "size",
3161
3231
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
3162
3232
  required: false,
3233
+ description: "Item size for this submenu only. Omit to inherit the parent menu's `size`.",
3163
3234
  },
3164
3235
  ],
3165
3236
  },
@@ -3174,7 +3245,7 @@ export const docsManifest = {
3174
3245
  },
3175
3246
  {
3176
3247
  name: "render",
3177
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
3248
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
3178
3249
  required: false,
3179
3250
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
3180
3251
  },
@@ -3188,11 +3259,13 @@ export const docsManifest = {
3188
3259
  name: "inset",
3189
3260
  type: "boolean",
3190
3261
  required: false,
3262
+ description: "Pads the start so a row with no leading icon lines up with rows that have one.",
3191
3263
  },
3192
3264
  {
3193
3265
  name: "icon",
3194
3266
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
3195
3267
  required: false,
3268
+ description: "Leading icon, passed as a component (such as a Lucide icon) rather than an element. The trailing chevron is added for you.",
3196
3269
  },
3197
3270
  ],
3198
3271
  },
@@ -3298,12 +3371,6 @@ export const docsManifest = {
3298
3371
  required: false,
3299
3372
  description: "Whether disabled",
3300
3373
  },
3301
- {
3302
- name: "onValueChange",
3303
- type: "((value: string) => void) & ((countryCode: string) => void)",
3304
- required: false,
3305
- description: 'Called with the selected value, or `""` when the selection is toggled off.\nValue change handler - receives ISO country code',
3306
- },
3307
3374
  {
3308
3375
  name: "size",
3309
3376
  type: "ResponsiveSize",
@@ -3348,6 +3415,12 @@ export const docsManifest = {
3348
3415
  required: false,
3349
3416
  description: "Current country code (ISO 3166-1 alpha-2) or country name",
3350
3417
  },
3418
+ {
3419
+ name: "onValueChange",
3420
+ type: "(countryCode: string) => void",
3421
+ required: false,
3422
+ description: "Value change handler - receives ISO country code",
3423
+ },
3351
3424
  ],
3352
3425
  },
3353
3426
  ],
@@ -3690,6 +3763,8 @@ export const docsManifest = {
3690
3763
  name: "tone",
3691
3764
  type: '"neutral" | "brand" | "danger" | "warning" | "success" | "info" | null | undefined',
3692
3765
  required: false,
3766
+ defaultValue: '"neutral"',
3767
+ description: "Semantic colour: `success`, `warning`, `danger` and `info` for status, `brand` for the accent, `neutral` for a muted grey. Ignored when `color` is set.",
3693
3768
  },
3694
3769
  ],
3695
3770
  },
@@ -3807,6 +3882,7 @@ export const docsManifest = {
3807
3882
  name: "container",
3808
3883
  type: "HTMLElement | null",
3809
3884
  required: false,
3885
+ description: "Element the drawer and its scrim portal into, bounding them to that element instead of the page. Omit to portal to the document body.",
3810
3886
  },
3811
3887
  ],
3812
3888
  },
@@ -3930,7 +4006,7 @@ export const docsManifest = {
3930
4006
  },
3931
4007
  {
3932
4008
  name: "render",
3933
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
4009
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
3934
4010
  required: false,
3935
4011
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
3936
4012
  },
@@ -3955,6 +4031,8 @@ export const docsManifest = {
3955
4031
  name: "size",
3956
4032
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
3957
4033
  required: false,
4034
+ defaultValue: '"sm"',
4035
+ description: "Size of every item, label and shortcut inside, which read it from context. Submenus inherit it.",
3958
4036
  },
3959
4037
  {
3960
4038
  name: "itemRadius",
@@ -4000,16 +4078,20 @@ export const docsManifest = {
4000
4078
  name: "inset",
4001
4079
  type: "boolean",
4002
4080
  required: false,
4081
+ description: "Pads the start so a row with no leading glyph lines up with rows that have an icon, dot or avatar.",
4003
4082
  },
4004
4083
  {
4005
4084
  name: "tone",
4006
4085
  type: '"neutral" | "danger"',
4007
4086
  required: false,
4087
+ defaultValue: '"neutral"',
4088
+ description: "`danger` marks a destructive action with red text and a red highlight.",
4008
4089
  },
4009
4090
  {
4010
4091
  name: "avatar",
4011
4092
  type: "React.ReactNode",
4012
4093
  required: false,
4094
+ description: "Custom leading element, such as an `Avatar`. Takes precedence over `dot` and `icon`.",
4013
4095
  },
4014
4096
  {
4015
4097
  name: "dot",
@@ -4021,21 +4103,25 @@ export const docsManifest = {
4021
4103
  name: "icon",
4022
4104
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
4023
4105
  required: false,
4106
+ description: "Leading icon, passed as a component (such as a Lucide icon) rather than an element. Hidden when `avatar` or `dot` is set.",
4024
4107
  },
4025
4108
  {
4026
4109
  name: "suffixIcon",
4027
4110
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
4028
4111
  required: false,
4112
+ description: "Trailing icon, passed as a component. Replaces `kbd` when both are set.",
4029
4113
  },
4030
4114
  {
4031
4115
  name: "kbd",
4032
4116
  type: "string[]",
4033
4117
  required: false,
4118
+ description: 'Keyboard shortcut keys shown as keycaps at the end, for example `["⌘", "C"]`. Ignored when `suffixIcon` is set.',
4034
4119
  },
4035
4120
  {
4036
4121
  name: "suffix",
4037
4122
  type: "React.ReactNode",
4038
4123
  required: false,
4124
+ description: "Custom trailing content, rendered after `suffixIcon` or `kbd`.",
4039
4125
  },
4040
4126
  {
4041
4127
  name: "active",
@@ -4051,7 +4137,7 @@ export const docsManifest = {
4051
4137
  },
4052
4138
  {
4053
4139
  name: "render",
4054
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
4140
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
4055
4141
  required: false,
4056
4142
  description: "Replace the default `<button>` row (e.g. with a link); glyph props render inside it, around `children`.",
4057
4143
  },
@@ -4076,6 +4162,7 @@ export const docsManifest = {
4076
4162
  name: "inset",
4077
4163
  type: "boolean",
4078
4164
  required: false,
4165
+ description: "Pads the start so the label lines up with items that have a leading icon.",
4079
4166
  },
4080
4167
  ],
4081
4168
  },
@@ -4100,7 +4187,7 @@ export const docsManifest = {
4100
4187
  },
4101
4188
  {
4102
4189
  name: "render",
4103
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
4190
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
4104
4191
  required: false,
4105
4192
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
4106
4193
  },
@@ -4125,6 +4212,8 @@ export const docsManifest = {
4125
4212
  name: "spacing",
4126
4213
  type: '"default" | "compact"',
4127
4214
  required: false,
4215
+ defaultValue: '"default"',
4216
+ description: "`default` is a 1px rule with 4px margins. `compact` centres the same rule in a taller transparent band, leaving more room around it.",
4128
4217
  },
4129
4218
  ],
4130
4219
  },
@@ -4151,6 +4240,7 @@ export const docsManifest = {
4151
4240
  name: "size",
4152
4241
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
4153
4242
  required: false,
4243
+ description: "Item size for this submenu only. Omit to inherit the parent menu's `size`.",
4154
4244
  },
4155
4245
  ],
4156
4246
  },
@@ -4165,7 +4255,7 @@ export const docsManifest = {
4165
4255
  },
4166
4256
  {
4167
4257
  name: "render",
4168
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
4258
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
4169
4259
  required: false,
4170
4260
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
4171
4261
  },
@@ -4179,11 +4269,13 @@ export const docsManifest = {
4179
4269
  name: "inset",
4180
4270
  type: "boolean",
4181
4271
  required: false,
4272
+ description: "Pads the start so a row with no leading icon lines up with rows that have one.",
4182
4273
  },
4183
4274
  {
4184
4275
  name: "icon",
4185
4276
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
4186
4277
  required: false,
4278
+ description: "Leading icon, passed as a component (such as a Lucide icon) rather than an element. The trailing chevron is added for you.",
4187
4279
  },
4188
4280
  ],
4189
4281
  },
@@ -4359,6 +4451,8 @@ export const docsManifest = {
4359
4451
  name: "size",
4360
4452
  type: '"base" | "sm" | "lg" | null | undefined',
4361
4453
  required: false,
4454
+ defaultValue: '"base"',
4455
+ description: "Scale of the whole empty state: the title, description and icon sizes, the gaps, and the vertical padding in the `card` layouts.",
4362
4456
  },
4363
4457
  ],
4364
4458
  },
@@ -4505,6 +4599,8 @@ export const docsManifest = {
4505
4599
  name: "size",
4506
4600
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
4507
4601
  required: false,
4602
+ defaultValue: '"sm"',
4603
+ description: "Square button edge and icon size, `2xs` (14px) to `3xl` (32px). Smaller than a `Button` of the same size, so it suits dense rows.",
4508
4604
  },
4509
4605
  {
4510
4606
  name: "expanded",
@@ -4690,6 +4786,8 @@ export const docsManifest = {
4690
4786
  name: "orientation",
4691
4787
  type: '"horizontal" | "vertical" | "responsive" | null | undefined',
4692
4788
  required: false,
4789
+ defaultValue: '"vertical"',
4790
+ description: "How label and control are arranged: `vertical` stacks them, `horizontal` puts them in a row, `responsive` stacks until the enclosing `FieldGroup` reaches its `md` container width, then switches to a row (needs a `FieldGroup` ancestor).",
4693
4791
  },
4694
4792
  {
4695
4793
  name: "className",
@@ -4728,6 +4826,7 @@ export const docsManifest = {
4728
4826
  name: "errors",
4729
4827
  type: "({ message?: string; } | undefined)[]",
4730
4828
  required: false,
4829
+ description: "Validation errors to show: one renders as plain text, several as a bulleted list. Duplicate messages collapse; ignored when `children` is set.",
4731
4830
  },
4732
4831
  ],
4733
4832
  },
@@ -5589,21 +5688,29 @@ export const docsManifest = {
5589
5688
  name: "tone",
5590
5689
  type: '"neutral" | "brand" | "danger" | "warning" | "success" | "info" | null | undefined',
5591
5690
  required: false,
5691
+ defaultValue: '"neutral"',
5692
+ description: "Semantic colour of the icon and its tinted surface: `brand` for the accent, `danger`, `warning`, `success` and `info` for status, `neutral` for everything else.",
5592
5693
  },
5593
5694
  {
5594
5695
  name: "radius",
5595
5696
  type: '"rounded" | "square" | "full" | null | undefined',
5596
5697
  required: false,
5698
+ defaultValue: '"rounded"',
5699
+ description: "Corner shape: `rounded` scales with `size`, `square` has sharp corners, `full` is a circle.",
5597
5700
  },
5598
5701
  {
5599
5702
  name: "size",
5600
5703
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
5601
5704
  required: false,
5705
+ defaultValue: '"base"',
5706
+ description: "Box width and height, `2xs` (16px) to `3xl` (96px); the icon and corner radius scale with it.",
5602
5707
  },
5603
5708
  {
5604
5709
  name: "emphasis",
5605
5710
  type: '"outline" | "solid" | "ghost" | "soft" | null | undefined',
5606
5711
  required: false,
5712
+ defaultValue: '"solid"',
5713
+ description: "Surface fill: `solid` is the tinted fill, `soft` the same except `neutral` takes the muted fill, `outline` a border with no fill, `ghost` neither. The icon keeps the tone's colour in every case.",
5607
5714
  },
5608
5715
  ],
5609
5716
  },
@@ -5655,6 +5762,7 @@ export const docsManifest = {
5655
5762
  name: "testId",
5656
5763
  type: "string",
5657
5764
  required: false,
5765
+ description: "Rendered as `data-testid`, for Playwright selectors.",
5658
5766
  },
5659
5767
  ],
5660
5768
  },
@@ -5775,16 +5883,21 @@ export const docsManifest = {
5775
5883
  name: "label",
5776
5884
  type: "string",
5777
5885
  required: true,
5886
+ description: "Name of the identified object, shown in the label pill. The label appears only while `highlighted` or `active`.",
5778
5887
  },
5779
5888
  {
5780
5889
  name: "labelAlign",
5781
5890
  type: '"center" | "end" | "start"',
5782
5891
  required: false,
5892
+ defaultValue: '"center"',
5893
+ description: "Which edge of the frame the label lines up with: `start` the left, `end` the right, `center` centred.",
5783
5894
  },
5784
5895
  {
5785
5896
  name: "labelPlacement",
5786
5897
  type: '"above" | "below"',
5787
5898
  required: false,
5899
+ defaultValue: '"above"',
5900
+ description: "Whether the label sits above or below the frame.",
5788
5901
  },
5789
5902
  {
5790
5903
  name: "persistentFrame",
@@ -5796,11 +5909,13 @@ export const docsManifest = {
5796
5909
  name: "secondaryLabel",
5797
5910
  type: "string | undefined",
5798
5911
  required: false,
5912
+ description: "Smaller grey text after `label`, such as a code or category; truncated to a short width.",
5799
5913
  },
5800
5914
  {
5801
5915
  name: "thumbnailUrl",
5802
5916
  type: "string | null | undefined",
5803
5917
  required: false,
5918
+ description: "Image URL for a small round thumbnail at the start of the label. Decorative, so it carries empty alt text.",
5804
5919
  },
5805
5920
  ],
5806
5921
  },
@@ -5833,11 +5948,14 @@ export const docsManifest = {
5833
5948
  name: "testId",
5834
5949
  type: "string",
5835
5950
  required: false,
5951
+ description: "Rendered as `data-testid`, for Playwright selectors.",
5836
5952
  },
5837
5953
  {
5838
5954
  name: "radius",
5839
5955
  type: '"rounded" | "square" | "full" | null | undefined',
5840
5956
  required: false,
5957
+ defaultValue: '"rounded"',
5958
+ description: "Corner shape: `rounded` is the standard 8px radius, `square` has sharp corners, `full` is a pill.",
5841
5959
  },
5842
5960
  {
5843
5961
  name: "size",
@@ -5945,16 +6063,19 @@ export const docsManifest = {
5945
6063
  name: "icon",
5946
6064
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
5947
6065
  required: true,
6066
+ description: "Icon component (not an element) to draw.",
5948
6067
  },
5949
6068
  {
5950
6069
  name: "selected",
5951
6070
  type: "boolean",
5952
6071
  required: false,
6072
+ description: "Tints the icon with the primary colour instead of muted.",
5953
6073
  },
5954
6074
  {
5955
6075
  name: "size",
5956
6076
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
5957
6077
  required: true,
6078
+ description: "Size of the parent card, not of the icon: the icon renders smaller than the card (`xs` at `base`).",
5958
6079
  },
5959
6080
  ],
5960
6081
  },
@@ -6069,17 +6190,6 @@ export const docsManifest = {
6069
6190
  required: false,
6070
6191
  description: 'Replace the rendered `<button>` with another element or component\n(e.g. `<Link href="…" />`); styling, decorations and props are applied to it.',
6071
6192
  },
6072
- {
6073
- name: "tone",
6074
- type: '"neutral" | "brand" | "danger"',
6075
- required: false,
6076
- description: "Button tone.",
6077
- },
6078
- {
6079
- name: "radius",
6080
- type: '"rounded" | "square" | "full" | null | undefined',
6081
- required: false,
6082
- },
6083
6193
  {
6084
6194
  name: "dot",
6085
6195
  type: "string | undefined",
@@ -6093,42 +6203,32 @@ export const docsManifest = {
6093
6203
  defaultValue: "false",
6094
6204
  description: "Show a spinner and block presses. The button stays focusable (it is\n`aria-disabled`, not natively disabled) so keyboard focus is kept.",
6095
6205
  },
6096
- {
6097
- name: "square",
6098
- type: "boolean | null | undefined",
6099
- required: false,
6100
- },
6101
- {
6102
- name: "icon",
6103
- type: 'import("../../tokens/icon-component").IconComponent & (LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>)',
6104
- required: false,
6105
- description: "Leading icon (Lucide or SVG component); with no children it becomes an icon-only button.\nIcon to display.",
6106
- },
6107
- {
6108
- name: "emphasis",
6109
- type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent"',
6110
- required: false,
6111
- description: "Button emphasis.",
6112
- },
6113
6206
  {
6114
6207
  name: "asInput",
6115
6208
  type: "boolean | null | undefined",
6116
6209
  required: false,
6210
+ defaultValue: "false",
6211
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
6117
6212
  },
6118
6213
  {
6119
6214
  name: "align",
6120
6215
  type: '"center" | "end" | "start" | null | undefined',
6121
6216
  required: false,
6217
+ defaultValue: '"center"',
6218
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
6122
6219
  },
6123
6220
  {
6124
6221
  name: "pressed",
6125
6222
  type: "boolean | null | undefined",
6126
6223
  required: false,
6224
+ defaultValue: "true",
6225
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
6127
6226
  },
6128
6227
  {
6129
6228
  name: "testId",
6130
6229
  type: "string",
6131
6230
  required: false,
6231
+ description: "Rendered as `data-testid`, for Playwright selectors.",
6132
6232
  },
6133
6233
  {
6134
6234
  name: "suffixIcon",
@@ -6180,6 +6280,39 @@ export const docsManifest = {
6180
6280
  defaultValue: '"start"',
6181
6281
  description: "Dot position relative to content.",
6182
6282
  },
6283
+ {
6284
+ name: "icon",
6285
+ type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
6286
+ required: false,
6287
+ description: "Icon shown in the button, passed as a component (such as a Lucide icon); with no children the button is icon-only.",
6288
+ },
6289
+ {
6290
+ name: "tone",
6291
+ type: "ButtonTone",
6292
+ required: false,
6293
+ defaultValue: '"neutral"',
6294
+ description: "Semantic colour, as on Button.",
6295
+ },
6296
+ {
6297
+ name: "emphasis",
6298
+ type: "ButtonEmphasis",
6299
+ required: false,
6300
+ defaultValue: '"ghost"',
6301
+ description: "Visual weight, as on Button; ghost keeps the button quiet inside the field.",
6302
+ },
6303
+ {
6304
+ name: "radius",
6305
+ type: '"rounded" | "square" | "full" | null | undefined',
6306
+ required: false,
6307
+ description: "Corner shape; leave unset - the corners follow the InputGroup's `radius`, tighter inside the field.",
6308
+ },
6309
+ {
6310
+ name: "square",
6311
+ type: "boolean | null | undefined",
6312
+ required: false,
6313
+ defaultValue: "true",
6314
+ description: "Square by default, as an icon button sized from the InputGroup.",
6315
+ },
6183
6316
  ],
6184
6317
  },
6185
6318
  {
@@ -6348,11 +6481,15 @@ export const docsManifest = {
6348
6481
  name: "size",
6349
6482
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
6350
6483
  required: false,
6484
+ defaultValue: '"base"',
6485
+ description: "Padding and gap between the item's parts, `2xs` (tightest) to `3xl` (roomiest).",
6351
6486
  },
6352
6487
  {
6353
6488
  name: "variant",
6354
6489
  type: '"default" | "outline" | "muted" | "card" | null | undefined',
6355
6490
  required: false,
6491
+ defaultValue: '"default"',
6492
+ description: "Surface: `default` is transparent, `outline` adds a border, `muted` a faint fill, `card` a bordered rounded card. Inside an `ItemGroup` the group's variant overrides most of this.",
6356
6493
  },
6357
6494
  ],
6358
6495
  },
@@ -6396,6 +6533,8 @@ export const docsManifest = {
6396
6533
  name: "variant",
6397
6534
  type: '"divided" | "separated" | "grouped" | null | undefined',
6398
6535
  required: false,
6536
+ defaultValue: '"divided"',
6537
+ description: "List style: `divided` is plain rows with lines between, `separated` makes each item its own card with a gap, `grouped` joins the items inside one bordered card.",
6399
6538
  },
6400
6539
  ],
6401
6540
  },
@@ -6422,27 +6561,35 @@ export const docsManifest = {
6422
6561
  name: "tone",
6423
6562
  type: '"neutral" | "brand" | "danger" | "warning" | "success" | "info" | null | undefined',
6424
6563
  required: false,
6564
+ defaultValue: '"neutral"',
6565
+ description: "Has no effect: the `icon` variant always renders a `neutral` icon box.",
6425
6566
  },
6426
6567
  {
6427
6568
  name: "radius",
6428
6569
  type: '"rounded" | "square" | "full" | null | undefined',
6429
6570
  required: false,
6571
+ defaultValue: '"rounded"',
6572
+ description: "Has no effect: the `icon` variant always renders the default icon box corners.",
6430
6573
  },
6431
6574
  {
6432
6575
  name: "size",
6433
6576
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
6434
6577
  required: false,
6578
+ defaultValue: '"base"',
6579
+ description: "Has no effect: the `icon` variant always renders a `sm` (32px) icon box.",
6435
6580
  },
6436
6581
  {
6437
- name: "icon",
6438
- type: 'import("../../tokens/icon-component").IconComponent',
6582
+ name: "emphasis",
6583
+ type: '"outline" | "solid" | "ghost" | "soft" | null | undefined',
6439
6584
  required: false,
6440
- description: "Icon component from lucide-react or any SVG React component.",
6585
+ defaultValue: '"solid"',
6586
+ description: "Has no effect: the `icon` variant always renders the default solid icon box.",
6441
6587
  },
6442
6588
  {
6443
- name: "emphasis",
6444
- type: '"outline" | "solid" | "ghost" | "soft" | null | undefined',
6589
+ name: "icon",
6590
+ type: 'import("../../tokens/icon-component").IconComponent',
6445
6591
  required: false,
6592
+ description: "Icon component from lucide-react or any SVG React component.",
6446
6593
  },
6447
6594
  {
6448
6595
  name: "iconSize",
@@ -6460,6 +6607,8 @@ export const docsManifest = {
6460
6607
  name: "variant",
6461
6608
  type: '"image" | "default" | "icon" | null | undefined',
6462
6609
  required: false,
6610
+ defaultValue: '"default"',
6611
+ description: "Media type: `icon` renders the `icon` prop in a small neutral `IconBox`, `image` crops its child `<img>` to a 40px square, `default` wraps any children as they are.",
6463
6612
  },
6464
6613
  ],
6465
6614
  },
@@ -6561,11 +6710,15 @@ export const docsManifest = {
6561
6710
  name: "tone",
6562
6711
  type: '"neutral" | "brand" | "danger" | null | undefined',
6563
6712
  required: false,
6713
+ defaultValue: '"neutral"',
6714
+ description: 'Semantic colour: `neutral` for ordinary keys, `brand` to highlight one, `danger` for a destructive shortcut. `brand` and `danger` are only styled with `emphasis="solid"`.',
6564
6715
  },
6565
6716
  {
6566
6717
  name: "emphasis",
6567
6718
  type: '"outline" | "solid" | "ghost" | "soft" | null | undefined',
6568
6719
  required: false,
6720
+ defaultValue: '"solid"',
6721
+ description: "Fill treatment: `solid` is a muted chip, `soft` a secondary-coloured fill, `outline` a bordered key on the page background, `ghost` bare text.",
6569
6722
  },
6570
6723
  {
6571
6724
  name: "size",
@@ -6730,6 +6883,7 @@ export const docsManifest = {
6730
6883
  name: "testId",
6731
6884
  type: "string",
6732
6885
  required: false,
6886
+ description: "Rendered as `data-testid`, for Playwright selectors.",
6733
6887
  },
6734
6888
  ],
6735
6889
  },
@@ -7016,26 +7170,36 @@ export const docsManifest = {
7016
7170
  name: "variant",
7017
7171
  type: '"input" | "default" | "outline" | null | undefined',
7018
7172
  required: false,
7173
+ defaultValue: '"default"',
7174
+ description: "Surface treatment: `default` tints on hover, `input` uses the input fill, `outline` adds a ring.",
7019
7175
  },
7020
7176
  {
7021
7177
  name: "tone",
7022
7178
  type: '"neutral" | "danger" | null | undefined',
7023
7179
  required: false,
7180
+ defaultValue: '"neutral"',
7181
+ description: "`danger` marks a destructive action with red text and a red hover and active tint.",
7024
7182
  },
7025
7183
  {
7026
7184
  name: "inset",
7027
7185
  type: "boolean | null | undefined",
7028
7186
  required: false,
7187
+ defaultValue: "false",
7188
+ description: "Pads the start so a row with no leading glyph lines up with rows that have an icon, dot or avatar. Switched on automatically when `indicator` is set.",
7029
7189
  },
7030
7190
  {
7031
7191
  name: "radius",
7032
7192
  type: '"rounded" | "square" | "full" | null | undefined',
7033
7193
  required: false,
7194
+ defaultValue: '"full"',
7195
+ description: "Corner shape: `full` is a pill, `rounded` a soft rectangle, `square` has sharp corners.",
7034
7196
  },
7035
7197
  {
7036
7198
  name: "size",
7037
7199
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
7038
7200
  required: false,
7201
+ defaultValue: '"sm"',
7202
+ description: "Row height, padding and text size, on the shared component scale. Match the surrounding menu's `size`.",
7039
7203
  },
7040
7204
  {
7041
7205
  name: "render",
@@ -7203,7 +7367,7 @@ export const docsManifest = {
7203
7367
  },
7204
7368
  {
7205
7369
  name: "render",
7206
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
7370
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
7207
7371
  required: false,
7208
7372
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
7209
7373
  },
@@ -7228,6 +7392,8 @@ export const docsManifest = {
7228
7392
  name: "size",
7229
7393
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
7230
7394
  required: false,
7395
+ defaultValue: '"sm"',
7396
+ description: "Size of every item, label and shortcut inside, which read it from context. Submenus inherit it.",
7231
7397
  },
7232
7398
  {
7233
7399
  name: "itemRadius",
@@ -7273,16 +7439,20 @@ export const docsManifest = {
7273
7439
  name: "inset",
7274
7440
  type: "boolean",
7275
7441
  required: false,
7442
+ description: "Pads the start so a row with no leading glyph lines up with rows that have an icon, dot or avatar.",
7276
7443
  },
7277
7444
  {
7278
7445
  name: "tone",
7279
7446
  type: '"neutral" | "danger"',
7280
7447
  required: false,
7448
+ defaultValue: '"neutral"',
7449
+ description: "`danger` marks a destructive action with red text and a red highlight.",
7281
7450
  },
7282
7451
  {
7283
7452
  name: "avatar",
7284
7453
  type: "React.ReactNode",
7285
7454
  required: false,
7455
+ description: "Custom leading element, such as an `Avatar`. Takes precedence over `dot` and `icon`.",
7286
7456
  },
7287
7457
  {
7288
7458
  name: "dot",
@@ -7294,21 +7464,25 @@ export const docsManifest = {
7294
7464
  name: "icon",
7295
7465
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
7296
7466
  required: false,
7467
+ description: "Leading icon, passed as a component (such as a Lucide icon) rather than an element. Hidden when `avatar` or `dot` is set.",
7297
7468
  },
7298
7469
  {
7299
7470
  name: "suffixIcon",
7300
7471
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
7301
7472
  required: false,
7473
+ description: "Trailing icon, passed as a component. Replaces `kbd` when both are set.",
7302
7474
  },
7303
7475
  {
7304
7476
  name: "kbd",
7305
7477
  type: "string[]",
7306
7478
  required: false,
7479
+ description: 'Keyboard shortcut keys shown as keycaps at the end, for example `["⌘", "C"]`. Ignored when `suffixIcon` is set.',
7307
7480
  },
7308
7481
  {
7309
7482
  name: "suffix",
7310
7483
  type: "React.ReactNode",
7311
7484
  required: false,
7485
+ description: "Custom trailing content, rendered after `suffixIcon` or `kbd`.",
7312
7486
  },
7313
7487
  {
7314
7488
  name: "active",
@@ -7324,7 +7498,7 @@ export const docsManifest = {
7324
7498
  },
7325
7499
  {
7326
7500
  name: "render",
7327
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
7501
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
7328
7502
  required: false,
7329
7503
  description: "Replace the default `<button>` row (e.g. with a link); glyph props render inside it, around `children`.",
7330
7504
  },
@@ -7349,6 +7523,7 @@ export const docsManifest = {
7349
7523
  name: "inset",
7350
7524
  type: "boolean",
7351
7525
  required: false,
7526
+ description: "Pads the start so the label lines up with items that have a leading icon.",
7352
7527
  },
7353
7528
  ],
7354
7529
  },
@@ -7378,7 +7553,7 @@ export const docsManifest = {
7378
7553
  },
7379
7554
  {
7380
7555
  name: "render",
7381
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
7556
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
7382
7557
  required: false,
7383
7558
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
7384
7559
  },
@@ -7403,6 +7578,8 @@ export const docsManifest = {
7403
7578
  name: "spacing",
7404
7579
  type: '"default" | "compact"',
7405
7580
  required: false,
7581
+ defaultValue: '"default"',
7582
+ description: "`default` is a 1px rule with 4px margins. `compact` centres the same rule in a taller transparent band, leaving more room around it.",
7406
7583
  },
7407
7584
  ],
7408
7585
  },
@@ -7429,6 +7606,7 @@ export const docsManifest = {
7429
7606
  name: "size",
7430
7607
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
7431
7608
  required: false,
7609
+ description: "Item size for this submenu only. Omit to inherit the parent menu's `size`.",
7432
7610
  },
7433
7611
  ],
7434
7612
  },
@@ -7443,7 +7621,7 @@ export const docsManifest = {
7443
7621
  },
7444
7622
  {
7445
7623
  name: "render",
7446
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
7624
+ type: 'import("@base-ui/react").useRender.RenderProp<Record<string, unknown>> | undefined',
7447
7625
  required: false,
7448
7626
  description: "Replace the default `<button>` row; glyph props render inside it, around `children`.",
7449
7627
  },
@@ -7457,11 +7635,13 @@ export const docsManifest = {
7457
7635
  name: "inset",
7458
7636
  type: "boolean",
7459
7637
  required: false,
7638
+ description: "Pads the start so a row with no leading icon lines up with rows that have one.",
7460
7639
  },
7461
7640
  {
7462
7641
  name: "icon",
7463
7642
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
7464
7643
  required: false,
7644
+ description: "Leading icon, passed as a component (such as a Lucide icon) rather than an element. The trailing chevron is added for you.",
7465
7645
  },
7466
7646
  ],
7467
7647
  },
@@ -8142,11 +8322,15 @@ export const docsManifest = {
8142
8322
  name: "radius",
8143
8323
  type: '"rounded" | "full" | null | undefined',
8144
8324
  required: false,
8325
+ defaultValue: '"rounded"',
8326
+ description: "Corner shape: `rounded` for a soft rectangle, `full` for a capsule.",
8145
8327
  },
8146
8328
  {
8147
8329
  name: "size",
8148
8330
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
8149
8331
  required: false,
8332
+ defaultValue: '"xl"',
8333
+ description: "Control height and text size, matching Button and Input at the same size. Also sizes the country selector.",
8150
8334
  },
8151
8335
  {
8152
8336
  name: "value",
@@ -8194,6 +8378,7 @@ export const docsManifest = {
8194
8378
  name: "testId",
8195
8379
  type: "string",
8196
8380
  required: false,
8381
+ description: "Rendered as `data-testid`, for Playwright selectors.",
8197
8382
  },
8198
8383
  ],
8199
8384
  },
@@ -8234,6 +8419,7 @@ export const docsManifest = {
8234
8419
  name: "disabled",
8235
8420
  type: "boolean",
8236
8421
  required: false,
8422
+ description: "Dims the pill and blocks pointer events. Styling only: no `disabled` attribute reaches the element.",
8237
8423
  },
8238
8424
  {
8239
8425
  name: "render",
@@ -8258,16 +8444,22 @@ export const docsManifest = {
8258
8444
  name: "tone",
8259
8445
  type: '"neutral" | "brand" | "danger" | "warning" | "success" | "info" | null | undefined',
8260
8446
  required: false,
8447
+ defaultValue: '"neutral"',
8448
+ description: "Semantic colour: `neutral` for plain labels, `brand` for the house yellow, `success` / `warning` / `info` / `danger` for status.",
8261
8449
  },
8262
8450
  {
8263
8451
  name: "radius",
8264
8452
  type: '"rounded" | "square" | "full" | null | undefined',
8265
8453
  required: false,
8454
+ defaultValue: '"full"',
8455
+ description: "Corner shape: `full` is a capsule, `rounded` a soft rectangle, `square` has sharp corners. Overrides the size's own corner radius.",
8266
8456
  },
8267
8457
  {
8268
8458
  name: "emphasis",
8269
8459
  type: '"outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
8270
8460
  required: false,
8461
+ defaultValue: '"solid"',
8462
+ description: "Visual weight: `solid` is a filled pill, `soft` a pale tint, `outline` a border, `ghost` text only, `transparent` frosted glass for use over images only.",
8271
8463
  },
8272
8464
  {
8273
8465
  name: "asInput",
@@ -8442,11 +8634,14 @@ export const docsManifest = {
8442
8634
  name: "positionerClassName",
8443
8635
  type: "string",
8444
8636
  required: false,
8637
+ description: "Classes for the positioning layer around the content, such as a lower `z-*` for a panel that sits beneath fixed chrome. Defaults to `z-50`.",
8445
8638
  },
8446
8639
  {
8447
8640
  name: "size",
8448
8641
  type: "PopoverSize",
8449
8642
  required: false,
8643
+ defaultValue: '"lg"',
8644
+ description: "Padding and corner radius: `sm` is compact (8px), `base` is 16px, `lg` is roomy (24px).",
8450
8645
  },
8451
8646
  ],
8452
8647
  },
@@ -8513,6 +8708,7 @@ export const docsManifest = {
8513
8708
  name: "indicatorClassName",
8514
8709
  type: "string",
8515
8710
  required: false,
8711
+ description: "Classes for the filled arc, for example a stroke colour such as `stroke-brand`. Defaults to `stroke-primary`.",
8516
8712
  },
8517
8713
  {
8518
8714
  name: "label",
@@ -8545,6 +8741,7 @@ export const docsManifest = {
8545
8741
  name: "trackClassName",
8546
8742
  type: "string",
8547
8743
  required: false,
8744
+ description: "Classes for the unfilled ring behind the arc, for example a stroke colour such as `stroke-border`. Defaults to `stroke-muted`.",
8548
8745
  },
8549
8746
  {
8550
8747
  name: "value",
@@ -9302,6 +9499,7 @@ export const docsManifest = {
9302
9499
  type: "ScrollFrameFadeMode | undefined",
9303
9500
  required: false,
9304
9501
  defaultValue: '"color"',
9502
+ description: "How the fades are drawn: `color` blends a gradient of `fadeTheme` into a solid surface, `mask` fades the content itself to transparent, for use over images or blurs.",
9305
9503
  },
9306
9504
  {
9307
9505
  name: "fades",
@@ -9336,6 +9534,7 @@ export const docsManifest = {
9336
9534
  type: "Orientation | undefined",
9337
9535
  required: false,
9338
9536
  defaultValue: '"vertical"',
9537
+ description: "Scroll axis: `vertical` scrolls up and down, `horizontal` left and right, as for a row of chips.",
9339
9538
  },
9340
9539
  {
9341
9540
  name: "viewportClassName",
@@ -9571,12 +9770,14 @@ export const docsManifest = {
9571
9770
  type: 'ResponsiveValue<"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl">',
9572
9771
  required: false,
9573
9772
  defaultValue: '"sm"',
9773
+ description: 'Size of every segment (text and padding), or an object per breakpoint like `{ base: "sm", md: "lg" }`.',
9574
9774
  },
9575
9775
  {
9576
9776
  name: "fullWidth",
9577
9777
  type: "boolean",
9578
9778
  required: false,
9579
9779
  defaultValue: "false",
9780
+ description: "Stretches the control to its container's width, with the segments sharing the space equally; otherwise it hugs its content.",
9580
9781
  },
9581
9782
  ],
9582
9783
  },
@@ -9674,6 +9875,7 @@ export const docsManifest = {
9674
9875
  name: "testId",
9675
9876
  type: "string",
9676
9877
  required: false,
9878
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9677
9879
  },
9678
9880
  ],
9679
9881
  },
@@ -9695,11 +9897,14 @@ export const docsManifest = {
9695
9897
  name: "size",
9696
9898
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
9697
9899
  required: false,
9900
+ defaultValue: '"sm"',
9901
+ description: "Size of every SelectItem, label and group inside, which read it from context. Match the trigger's `size`.",
9698
9902
  },
9699
9903
  {
9700
9904
  name: "testId",
9701
9905
  type: "string",
9702
9906
  required: false,
9907
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9703
9908
  },
9704
9909
  ],
9705
9910
  },
@@ -9711,6 +9916,7 @@ export const docsManifest = {
9711
9916
  name: "testId",
9712
9917
  type: "string",
9713
9918
  required: false,
9919
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9714
9920
  },
9715
9921
  ],
9716
9922
  },
@@ -9727,6 +9933,7 @@ export const docsManifest = {
9727
9933
  name: "testId",
9728
9934
  type: "string",
9729
9935
  required: false,
9936
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9730
9937
  },
9731
9938
  ],
9732
9939
  },
@@ -9743,6 +9950,7 @@ export const docsManifest = {
9743
9950
  name: "testId",
9744
9951
  type: "string",
9745
9952
  required: false,
9953
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9746
9954
  },
9747
9955
  ],
9748
9956
  },
@@ -9759,6 +9967,7 @@ export const docsManifest = {
9759
9967
  name: "testId",
9760
9968
  type: "string",
9761
9969
  required: false,
9970
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9762
9971
  },
9763
9972
  ],
9764
9973
  },
@@ -9767,29 +9976,37 @@ export const docsManifest = {
9767
9976
  kind: "component",
9768
9977
  props: [
9769
9978
  {
9770
- name: "tone",
9771
- type: '"neutral" | "brand" | "danger" | null | undefined',
9979
+ name: "className",
9980
+ type: "string",
9772
9981
  required: false,
9773
9982
  },
9774
9983
  {
9775
- name: "radius",
9776
- type: '"rounded" | "square" | "full" | null | undefined',
9984
+ name: "tone",
9985
+ type: '"neutral" | "brand" | "danger" | null | undefined',
9777
9986
  required: false,
9987
+ defaultValue: '"neutral"',
9988
+ description: "Semantic colour of the trigger, as on Button.",
9778
9989
  },
9779
9990
  {
9780
9991
  name: "emphasis",
9781
9992
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
9782
9993
  required: false,
9994
+ defaultValue: '"outline"',
9995
+ description: "Visual weight, as on Button; the outline reads as a form field.",
9783
9996
  },
9784
9997
  {
9785
- name: "pressed",
9786
- type: "boolean | null | undefined",
9998
+ name: "radius",
9999
+ type: '"rounded" | "square" | "full" | null | undefined',
9787
10000
  required: false,
10001
+ defaultValue: '"rounded"',
10002
+ description: "Corner shape, as on Button.",
9788
10003
  },
9789
10004
  {
9790
- name: "className",
9791
- type: "string",
10005
+ name: "pressed",
10006
+ type: "boolean | null | undefined",
9792
10007
  required: false,
10008
+ defaultValue: "false",
10009
+ description: "Shrink while held down, as on Button, but off by default here.",
9793
10010
  },
9794
10011
  {
9795
10012
  name: "size",
@@ -9802,6 +10019,7 @@ export const docsManifest = {
9802
10019
  name: "testId",
9803
10020
  type: "string",
9804
10021
  required: false,
10022
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9805
10023
  },
9806
10024
  ],
9807
10025
  },
@@ -9813,6 +10031,7 @@ export const docsManifest = {
9813
10031
  name: "testId",
9814
10032
  type: "string",
9815
10033
  required: false,
10034
+ description: "Rendered as `data-testid`, for Playwright selectors.",
9816
10035
  },
9817
10036
  ],
9818
10037
  },
@@ -10272,11 +10491,15 @@ export const docsManifest = {
10272
10491
  name: "tone",
10273
10492
  type: '"neutral" | "brand" | "danger" | null | undefined',
10274
10493
  required: false,
10494
+ defaultValue: '"neutral"',
10495
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
10275
10496
  },
10276
10497
  {
10277
10498
  name: "radius",
10278
10499
  type: '"rounded" | "square" | "full" | null | undefined',
10279
10500
  required: false,
10501
+ defaultValue: '"full"',
10502
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
10280
10503
  },
10281
10504
  {
10282
10505
  name: "dot",
@@ -10295,26 +10518,35 @@ export const docsManifest = {
10295
10518
  name: "square",
10296
10519
  type: "boolean | null | undefined",
10297
10520
  required: false,
10521
+ defaultValue: "false",
10522
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
10298
10523
  },
10299
10524
  {
10300
10525
  name: "asInput",
10301
10526
  type: "boolean | null | undefined",
10302
10527
  required: false,
10528
+ defaultValue: "false",
10529
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
10303
10530
  },
10304
10531
  {
10305
10532
  name: "align",
10306
10533
  type: '"center" | "end" | "start" | null | undefined',
10307
10534
  required: false,
10535
+ defaultValue: '"center"',
10536
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
10308
10537
  },
10309
10538
  {
10310
10539
  name: "pressed",
10311
10540
  type: "boolean | null | undefined",
10312
10541
  required: false,
10542
+ defaultValue: "true",
10543
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
10313
10544
  },
10314
10545
  {
10315
10546
  name: "testId",
10316
10547
  type: "string",
10317
10548
  required: false,
10549
+ description: "Rendered as `data-testid`, for Playwright selectors.",
10318
10550
  },
10319
10551
  {
10320
10552
  name: "suffixIcon",
@@ -10465,6 +10697,8 @@ export const docsManifest = {
10465
10697
  name: "variant",
10466
10698
  type: "SidepanelHeaderVariant",
10467
10699
  required: false,
10700
+ defaultValue: '"default"',
10701
+ description: "`default` is a stacked title and description with a bottom border. `bar` is a transparent toolbar pinned over the top of the panel, for two `SidepanelControls` groups.",
10468
10702
  },
10469
10703
  ],
10470
10704
  },
@@ -11438,6 +11672,7 @@ export const docsManifest = {
11438
11672
  name: "href",
11439
11673
  type: "string",
11440
11674
  required: false,
11675
+ description: "Destination of the default `<a>`. Not used when `render` supplies its own element.",
11441
11676
  },
11442
11677
  {
11443
11678
  name: "icon",
@@ -11695,6 +11930,7 @@ export const docsManifest = {
11695
11930
  name: "radius",
11696
11931
  type: "string",
11697
11932
  required: true,
11933
+ description: "Tailwind rounding class (such as `rounded-xl`) matching the framed container's corners, so the ring follows them.",
11698
11934
  },
11699
11935
  ],
11700
11936
  },
@@ -11761,16 +11997,16 @@ export const docsManifest = {
11761
11997
  kind: "component",
11762
11998
  props: [
11763
11999
  {
11764
- name: "aria-label",
12000
+ name: "color",
11765
12001
  type: "string",
11766
12002
  required: false,
11767
- description: "Defines a string value that labels the current element.\nAccessible label for screen readers.",
12003
+ description: "CSS colour value (hex, rgb, hsl, etc.).\nIf provided along with children, children render on top.",
11768
12004
  },
11769
12005
  {
11770
- name: "color",
12006
+ name: "aria-label",
11771
12007
  type: "string",
11772
12008
  required: false,
11773
- description: "CSS colour value (hex, rgb, hsl, etc.).\nIf provided along with children, children render on top.",
12009
+ description: "Accessible label for screen readers.",
11774
12010
  },
11775
12011
  {
11776
12012
  name: "children",
@@ -11813,18 +12049,18 @@ export const docsManifest = {
11813
12049
  required: false,
11814
12050
  description: "CSS colour value (hex, rgb, hsl, etc.).\nIf provided along with children, children render on top.",
11815
12051
  },
11816
- {
11817
- name: "aria-label",
11818
- type: "string",
11819
- required: false,
11820
- description: "Defines a string value that labels the current element.\nAccessible label for screen readers.",
11821
- },
11822
12052
  {
11823
12053
  name: "value",
11824
12054
  type: "string",
11825
12055
  required: true,
11826
12056
  description: "Unique value for this swatch",
11827
12057
  },
12058
+ {
12059
+ name: "aria-label",
12060
+ type: "string",
12061
+ required: false,
12062
+ description: "Accessible label for screen readers.",
12063
+ },
11828
12064
  {
11829
12065
  name: "children",
11830
12066
  type: 'import("react").ReactNode',
@@ -11891,18 +12127,18 @@ export const docsManifest = {
11891
12127
  required: false,
11892
12128
  description: "CSS colour value (hex, rgb, hsl, etc.).\nIf provided along with children, children render on top.",
11893
12129
  },
11894
- {
11895
- name: "aria-label",
11896
- type: "string",
11897
- required: false,
11898
- description: "Defines a string value that labels the current element.\nAccessible label for screen readers.",
11899
- },
11900
12130
  {
11901
12131
  name: "value",
11902
12132
  type: "string",
11903
12133
  required: true,
11904
12134
  description: "Unique value for this swatch",
11905
12135
  },
12136
+ {
12137
+ name: "aria-label",
12138
+ type: "string",
12139
+ required: false,
12140
+ description: "Accessible label for screen readers.",
12141
+ },
11906
12142
  {
11907
12143
  name: "children",
11908
12144
  type: 'import("react").ReactNode',
@@ -12018,6 +12254,7 @@ export const docsManifest = {
12018
12254
  name: "href",
12019
12255
  type: "string",
12020
12256
  required: true,
12257
+ description: "Destination of the link. Also forwarded to the element given in `render`, such as a router `Link`.",
12021
12258
  },
12022
12259
  {
12023
12260
  name: "icon",
@@ -12036,11 +12273,13 @@ export const docsManifest = {
12036
12273
  name: "variant",
12037
12274
  type: '"line" | "pill" | null | undefined',
12038
12275
  required: false,
12276
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the style for every part, so set `variant` there.",
12039
12277
  },
12040
12278
  {
12041
12279
  name: "size",
12042
12280
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
12043
12281
  required: false,
12282
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the size for every part, so set `size` there.",
12044
12283
  },
12045
12284
  ],
12046
12285
  },
@@ -12052,11 +12291,13 @@ export const docsManifest = {
12052
12291
  name: "variant",
12053
12292
  type: '"line" | "pill" | null | undefined',
12054
12293
  required: false,
12294
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the style for every part, so set `variant` there.",
12055
12295
  },
12056
12296
  {
12057
12297
  name: "size",
12058
12298
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
12059
12299
  required: false,
12300
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the size for every part, so set `size` there.",
12060
12301
  },
12061
12302
  ],
12062
12303
  },
@@ -12230,11 +12471,13 @@ export const docsManifest = {
12230
12471
  name: "variant",
12231
12472
  type: '"line" | "pill" | null | undefined',
12232
12473
  required: false,
12474
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the style for every part, so set `variant` there.",
12233
12475
  },
12234
12476
  {
12235
12477
  name: "size",
12236
12478
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
12237
12479
  required: false,
12480
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the size for every part, so set `size` there.",
12238
12481
  },
12239
12482
  ],
12240
12483
  },
@@ -12256,6 +12499,8 @@ export const docsManifest = {
12256
12499
  name: "layout",
12257
12500
  type: 'boolean | "position" | "size" | "preserve-aspect"',
12258
12501
  required: false,
12502
+ defaultValue: "true",
12503
+ description: 'Motion `layout` value for the height animation when the active tab\'s content changes size: `false` switches it off, `"size"` or `"position"` animates only that, `"preserve-aspect"` keeps the aspect ratio.',
12259
12504
  },
12260
12505
  ],
12261
12506
  },
@@ -12267,11 +12512,13 @@ export const docsManifest = {
12267
12512
  name: "variant",
12268
12513
  type: '"line" | "pill" | null | undefined',
12269
12514
  required: false,
12515
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the style for every part, so set `variant` there.",
12270
12516
  },
12271
12517
  {
12272
12518
  name: "size",
12273
12519
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
12274
12520
  required: false,
12521
+ description: "Ignored on its own: the parent `Tabs` or `TabNavigation` sets the size for every part, so set `size` there.",
12275
12522
  },
12276
12523
  {
12277
12524
  name: "className",
@@ -12418,16 +12665,22 @@ export const docsManifest = {
12418
12665
  name: "tone",
12419
12666
  type: '"neutral" | "brand" | "danger" | "warning" | "success" | "info" | null | undefined',
12420
12667
  required: false,
12668
+ defaultValue: '"neutral"',
12669
+ description: "Semantic colour: `neutral` for plain labels, `brand` for the house yellow, `success` / `warning` / `info` / `danger` for status.",
12421
12670
  },
12422
12671
  {
12423
12672
  name: "radius",
12424
12673
  type: '"rounded" | "square" | "full" | null | undefined',
12425
12674
  required: false,
12675
+ defaultValue: '"full"',
12676
+ description: "Corner shape: `full` is a capsule, `rounded` a soft rectangle, `square` has sharp corners. Overrides the size's own corner radius.",
12426
12677
  },
12427
12678
  {
12428
12679
  name: "emphasis",
12429
12680
  type: '"outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
12430
12681
  required: false,
12682
+ defaultValue: '"solid"',
12683
+ description: "Visual weight: `solid` is a filled pill, `soft` a pale tint, `outline` a border, `ghost` text only, `transparent` frosted glass for use over images only.",
12431
12684
  },
12432
12685
  {
12433
12686
  name: "asInput",
@@ -12579,6 +12832,7 @@ export const docsManifest = {
12579
12832
  name: "testId",
12580
12833
  type: "string",
12581
12834
  required: false,
12835
+ description: "Rendered as `data-testid`, for Playwright selectors.",
12582
12836
  },
12583
12837
  ],
12584
12838
  },
@@ -12694,11 +12948,13 @@ export const docsManifest = {
12694
12948
  name: "current",
12695
12949
  type: "number",
12696
12950
  required: true,
12951
+ description: "Number shown before the slash, counted from one (the first step is `1`).",
12697
12952
  },
12698
12953
  {
12699
12954
  name: "total",
12700
12955
  type: "number",
12701
12956
  required: true,
12957
+ description: "Number shown after the slash.",
12702
12958
  },
12703
12959
  ],
12704
12960
  },
@@ -12710,11 +12966,13 @@ export const docsManifest = {
12710
12966
  name: "icon",
12711
12967
  type: "LucideIcon | undefined",
12712
12968
  required: true,
12969
+ description: "Icon to show. Renders nothing when `undefined`.",
12713
12970
  },
12714
12971
  {
12715
12972
  name: "stepId",
12716
12973
  type: "string",
12717
12974
  required: true,
12975
+ description: "Id of the current step. A new id makes the previous icon crossfade into this one.",
12718
12976
  },
12719
12977
  ],
12720
12978
  },
@@ -12753,6 +13011,8 @@ export const docsManifest = {
12753
13011
  name: "shimmer",
12754
13012
  type: "boolean",
12755
13013
  required: false,
13014
+ defaultValue: "true",
13015
+ description: "Sweeps a highlight across the label; `false` renders it as plain text.",
12756
13016
  },
12757
13017
  {
12758
13018
  name: "shimmerVariant",
@@ -12764,6 +13024,7 @@ export const docsManifest = {
12764
13024
  name: "step",
12765
13025
  type: "ThinkingStep",
12766
13026
  required: true,
13027
+ description: "The step to show: its `label` is the text, and its `icon` leads it unless `hideIcon` is set.",
12767
13028
  },
12768
13029
  ],
12769
13030
  },
@@ -13069,11 +13330,15 @@ export const docsManifest = {
13069
13330
  name: "variant",
13070
13331
  type: '"default" | "secondary" | null | undefined',
13071
13332
  required: false,
13333
+ defaultValue: '"default"',
13334
+ description: "How a pressed toggle shows it is on: `default` greys the fill and border, `secondary` darkens the border only. Inside a `ToggleGroup` the group's value wins.",
13072
13335
  },
13073
13336
  {
13074
13337
  name: "radius",
13075
13338
  type: '"rounded" | "full" | null | undefined',
13076
13339
  required: false,
13340
+ defaultValue: '"rounded"',
13341
+ description: "Corner shape: `rounded` for soft corners, `full` for a pill. There is no sharp option. Inside a `ToggleGroup` the group's value wins.",
13077
13342
  },
13078
13343
  {
13079
13344
  name: "icon",
@@ -13418,11 +13683,13 @@ export const docsManifest = {
13418
13683
  name: "onAction",
13419
13684
  type: "() => void",
13420
13685
  required: false,
13686
+ description: "Called when the action button is clicked. The button only appears when `actionLabel` is set.",
13421
13687
  },
13422
13688
  {
13423
13689
  name: "onDismiss",
13424
13690
  type: "() => void",
13425
13691
  required: false,
13692
+ description: "Called when the dismiss button is clicked. The parent should then set `open` to `false`.",
13426
13693
  },
13427
13694
  {
13428
13695
  name: "dismissLabel",
@@ -13477,11 +13744,14 @@ export const docsManifest = {
13477
13744
  name: "onClick",
13478
13745
  type: "() => void",
13479
13746
  required: false,
13747
+ description: "Called when the pill is pressed. The parent decides what the press does in each `state`, such as starting or stopping capture.",
13480
13748
  },
13481
13749
  {
13482
13750
  name: "disabled",
13483
13751
  type: "boolean",
13484
13752
  required: false,
13753
+ defaultValue: "false",
13754
+ description: "Block presses and dim the pill.",
13485
13755
  },
13486
13756
  {
13487
13757
  name: "label",
@@ -13551,6 +13821,7 @@ export const docsManifest = {
13551
13821
  name: "icon",
13552
13822
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
13553
13823
  required: false,
13824
+ description: "Icon component (e.g. a Lucide icon), not a rendered element; shown small and muted at the top right.",
13554
13825
  },
13555
13826
  {
13556
13827
  name: "valueLabel",
@@ -13678,31 +13949,37 @@ export const docsManifest = {
13678
13949
  name: "getItemKey",
13679
13950
  type: "(item: T) => string",
13680
13951
  required: true,
13952
+ description: "Stable unique key for an item, such as its id; never the array index.",
13681
13953
  },
13682
13954
  {
13683
13955
  name: "getRowKey",
13684
13956
  type: "(row: T[], rowIndex: number) => string",
13685
13957
  required: false,
13958
+ description: "Stable key for a row. Defaults to `row-<rowIndex>`; supply one when rows can reorder or be re-chunked.",
13686
13959
  },
13687
13960
  {
13688
13961
  name: "metrics",
13689
13962
  type: 'Omit<CardGridRowMetrics, "rowWidth">',
13690
13963
  required: true,
13964
+ description: "Pixel `cardWidth` and `gap` the rows were chunked with (e.g. from\n`calculateColumns`). They only size `renderAfterRow`'s `rowWidth`; they do\nnot lay the cards out.",
13691
13965
  },
13692
13966
  {
13693
13967
  name: "renderAfterRow",
13694
13968
  type: "(props: { metrics: CardGridRowMetrics; row: T[]; rowIndex: number; }) => ReactNode",
13695
13969
  required: false,
13970
+ description: "Content rendered beneath a row, such as an expanded detail panel. Receives\n`metrics` with `rowWidth`, the row's pixel width, so the panel can align to it.",
13696
13971
  },
13697
13972
  {
13698
13973
  name: "renderItem",
13699
13974
  type: "(props: { index: number; item: T; row: T[]; rowIndex: number; }) => ReactNode",
13700
13975
  required: true,
13976
+ description: "Renders one item's card; each result is wrapped in a `CardGridItem`. `index` is the position within its row.",
13701
13977
  },
13702
13978
  {
13703
13979
  name: "rows",
13704
13980
  type: "T[][]",
13705
13981
  required: true,
13982
+ description: "Items already chunked into rows, e.g. with `chunkIntoRows`; one `CardGrid` is rendered per row.",
13706
13983
  },
13707
13984
  ],
13708
13985
  },
@@ -14048,11 +14325,13 @@ export const docsManifest = {
14048
14325
  name: "loading",
14049
14326
  type: "boolean",
14050
14327
  required: false,
14328
+ description: "Set while the application fetches rows. The body shows placeholder rows or\na spinner per `loadingMode`, and the select-all checkbox and\n`DataGridColumnHeader` buttons are disabled.",
14051
14329
  },
14052
14330
  {
14053
14331
  name: "loadingMessage",
14054
14332
  type: "ReactNode",
14055
14333
  required: false,
14334
+ description: 'Text beside the spinner while loading; only shown when `loadingMode` is `"spinner"`. Defaults to "Loading...".',
14056
14335
  },
14057
14336
  {
14058
14337
  name: "loadingMode",
@@ -14128,6 +14407,8 @@ export const docsManifest = {
14128
14407
  name: "size",
14129
14408
  type: "DataGridControlSize",
14130
14409
  required: false,
14410
+ defaultValue: '"xs"',
14411
+ description: "Checkbox size; the grid only uses the two compact steps.",
14131
14412
  },
14132
14413
  ],
14133
14414
  },
@@ -14167,6 +14448,7 @@ export const docsManifest = {
14167
14448
  name: "row",
14168
14449
  type: "Row<TData>",
14169
14450
  required: true,
14451
+ description: "The TanStack row to expand or collapse. The toggle renders nothing unless `row.getCanExpand()` is true.",
14170
14452
  },
14171
14453
  ],
14172
14454
  },
@@ -14188,6 +14470,7 @@ export const docsManifest = {
14188
14470
  name: "column",
14189
14471
  type: "Column<TData, TValue>",
14190
14472
  required: true,
14473
+ description: "The TanStack column this header sorts and filters.",
14191
14474
  },
14192
14475
  {
14193
14476
  name: "options",
@@ -14244,11 +14527,13 @@ export const docsManifest = {
14244
14527
  name: "loading",
14245
14528
  type: "boolean",
14246
14529
  required: false,
14530
+ description: "Set while the application fetches rows. The body shows placeholder rows or\na spinner per `loadingMode`, and the select-all checkbox and\n`DataGridColumnHeader` buttons are disabled.",
14247
14531
  },
14248
14532
  {
14249
14533
  name: "loadingMessage",
14250
14534
  type: "ReactNode",
14251
14535
  required: false,
14536
+ description: 'Text beside the spinner while loading; only shown when `loadingMode` is `"spinner"`. Defaults to "Loading...".',
14252
14537
  },
14253
14538
  {
14254
14539
  name: "loadingMode",
@@ -14310,11 +14595,13 @@ export const docsManifest = {
14310
14595
  name: "disabled",
14311
14596
  type: "boolean",
14312
14597
  required: false,
14598
+ description: "Disable the checkbox; `createSelectionColumn` sets it when the row cannot be selected.",
14313
14599
  },
14314
14600
  {
14315
14601
  name: "row",
14316
14602
  type: "Row<TData>",
14317
14603
  required: true,
14604
+ description: "The TanStack row this checkbox selects.",
14318
14605
  },
14319
14606
  ],
14320
14607
  },
@@ -14326,11 +14613,13 @@ export const docsManifest = {
14326
14613
  name: "disabled",
14327
14614
  type: "boolean",
14328
14615
  required: false,
14616
+ description: "Disable the checkbox, e.g. while loading or when the page has no rows.",
14329
14617
  },
14330
14618
  {
14331
14619
  name: "table",
14332
14620
  type: "Table<TData>",
14333
14621
  required: true,
14622
+ description: "The TanStack table whose current-page rows this checkbox selects.",
14334
14623
  },
14335
14624
  ],
14336
14625
  },
@@ -14552,11 +14841,13 @@ export const docsManifest = {
14552
14841
  name: "icon",
14553
14842
  type: "ReactNode",
14554
14843
  required: false,
14844
+ description: "Leading glyph shown before the title.",
14555
14845
  },
14556
14846
  {
14557
14847
  name: "pinnable",
14558
14848
  type: "boolean",
14559
14849
  required: false,
14850
+ description: "Not read by the header. Pinning is controlled by `tableLayout.columnsPinnable`\non `DataGrid` and the column's own `enablePinning`.",
14560
14851
  },
14561
14852
  {
14562
14853
  name: "title",
@@ -14771,21 +15062,25 @@ export const docsManifest = {
14771
15062
  name: "row",
14772
15063
  type: "Row<TData>",
14773
15064
  required: true,
15065
+ description: 'The TanStack row to render; its selection state sets `data-state="selected"` and its original data goes to `onRowClick`.',
14774
15066
  },
14775
15067
  {
14776
15068
  name: "dndRef",
14777
15069
  type: "React.Ref<HTMLTableRowElement>",
14778
15070
  required: false,
15071
+ description: "Ref attached to the `<tr>`; the virtualiser passes its row-measuring ref here, a drag library can pass its node ref.",
14779
15072
  },
14780
15073
  {
14781
15074
  name: "dndStyle",
14782
15075
  type: "React.CSSProperties",
14783
15076
  required: false,
15077
+ description: "Inline style merged over the row height, e.g. a drag library's transform.",
14784
15078
  },
14785
15079
  {
14786
15080
  name: "dataIndex",
14787
15081
  type: "number",
14788
15082
  required: false,
15083
+ description: "Row position in the full row model, written to `data-index` so the virtualiser can find the row when measuring.",
14789
15084
  },
14790
15085
  ],
14791
15086
  },
@@ -14802,16 +15097,19 @@ export const docsManifest = {
14802
15097
  name: "cell",
14803
15098
  type: "Cell<TData>",
14804
15099
  required: true,
15100
+ description: "The TanStack cell to render; its column sets pinning, edge and `meta.cellClassName` styling.",
14805
15101
  },
14806
15102
  {
14807
15103
  name: "dndRef",
14808
15104
  type: "React.Ref<HTMLTableCellElement>",
14809
15105
  required: false,
15106
+ description: "Ref attached to the `<td>`, for a drag library's node ref.",
14810
15107
  },
14811
15108
  {
14812
15109
  name: "dndStyle",
14813
15110
  type: "React.CSSProperties",
14814
15111
  required: false,
15112
+ description: "Inline style merged over the pinning styles, e.g. a drag library's transform.",
14815
15113
  },
14816
15114
  ],
14817
15115
  },
@@ -14823,6 +15121,7 @@ export const docsManifest = {
14823
15121
  name: "row",
14824
15122
  type: "Row<TData>",
14825
15123
  required: true,
15124
+ description: "The expanded row; its `original` data is passed to the first column's `meta.expandedContent`.",
14826
15125
  },
14827
15126
  ],
14828
15127
  },
@@ -14850,6 +15149,7 @@ export const docsManifest = {
14850
15149
  name: "column",
14851
15150
  type: "Column<TData>",
14852
15151
  required: true,
15152
+ description: "The column this placeholder cell sits in; supplies pinning, edge and `meta.cellClassName` styling.",
14853
15153
  },
14854
15154
  ],
14855
15155
  },
@@ -14882,6 +15182,7 @@ export const docsManifest = {
14882
15182
  name: "headerGroup",
14883
15183
  type: "HeaderGroup<TData>",
14884
15184
  required: true,
15185
+ description: "The TanStack header group this row renders; it supplies the row's React key.",
14885
15186
  },
14886
15187
  ],
14887
15188
  },
@@ -14898,16 +15199,19 @@ export const docsManifest = {
14898
15199
  name: "header",
14899
15200
  type: "Header<TData>",
14900
15201
  required: true,
15202
+ description: "The TanStack header this `<th>` renders; its column sets size, pinning and `meta.headerClassName`.",
14901
15203
  },
14902
15204
  {
14903
15205
  name: "dndRef",
14904
15206
  type: "React.Ref<HTMLTableCellElement>",
14905
15207
  required: false,
15208
+ description: "Ref attached to the `<th>`, for a drag library's node ref.",
14906
15209
  },
14907
15210
  {
14908
15211
  name: "dndStyle",
14909
15212
  type: "React.CSSProperties",
14910
15213
  required: false,
15214
+ description: "Inline style merged over width and pinning styles, e.g. a drag library's transform.",
14911
15215
  },
14912
15216
  ],
14913
15217
  },
@@ -14919,6 +15223,7 @@ export const docsManifest = {
14919
15223
  name: "header",
14920
15224
  type: "Header<TData>",
14921
15225
  required: true,
15226
+ description: "The header whose column this handle resizes.",
14922
15227
  },
14923
15228
  ],
14924
15229
  },
@@ -14935,11 +15240,13 @@ export const docsManifest = {
14935
15240
  name: "row",
14936
15241
  type: "Row<TData>",
14937
15242
  required: true,
15243
+ description: "The TanStack row this checkbox selects.",
14938
15244
  },
14939
15245
  {
14940
15246
  name: "size",
14941
15247
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
14942
15248
  required: false,
15249
+ description: 'Mirrors the table\'s size: `"2xs"` and `"xs"` (or omitted) give the `"xs"` checkbox, anything larger the `"sm"` one.',
14943
15250
  },
14944
15251
  ],
14945
15252
  },
@@ -14951,6 +15258,7 @@ export const docsManifest = {
14951
15258
  name: "size",
14952
15259
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
14953
15260
  required: false,
15261
+ description: 'Mirrors the table\'s size: `"2xs"` and `"xs"` (or omitted) give the `"xs"` checkbox, anything larger the `"sm"` one.',
14954
15262
  },
14955
15263
  ],
14956
15264
  },
@@ -15101,6 +15409,8 @@ export const docsManifest = {
15101
15409
  name: "variant",
15102
15410
  type: '"divided" | "separated" | "grouped" | null | undefined',
15103
15411
  required: false,
15412
+ defaultValue: '"grouped"',
15413
+ description: 'Container treatment: `"grouped"` is one bordered, rounded card with the rows inside, `"divided"` separates rows with hairlines and no frame, `"separated"` leaves a gap between rows so each can carry its own surface.',
15104
15414
  },
15105
15415
  ],
15106
15416
  },
@@ -15151,6 +15461,7 @@ export const docsManifest = {
15151
15461
  name: "icon",
15152
15462
  type: "LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>",
15153
15463
  required: true,
15464
+ description: "Icon component (a Lucide icon), not a rendered element; sized from the list's `size`.",
15154
15465
  },
15155
15466
  ],
15156
15467
  },
@@ -15312,11 +15623,13 @@ export const docsManifest = {
15312
15623
  name: "subtitle",
15313
15624
  type: "string",
15314
15625
  required: false,
15626
+ description: "Small muted line above the title, such as a category or date. Omitted when empty.",
15315
15627
  },
15316
15628
  {
15317
15629
  name: "title",
15318
15630
  type: "string",
15319
15631
  required: true,
15632
+ description: "Main line, shown larger and medium weight.",
15320
15633
  },
15321
15634
  ],
15322
15635
  },
@@ -15533,6 +15846,8 @@ export const docsManifest = {
15533
15846
  name: "size",
15534
15847
  type: '"base" | "sm" | "lg" | null | undefined',
15535
15848
  required: false,
15849
+ defaultValue: '"base"',
15850
+ description: "Scale of the whole empty state: the title, description and icon sizes, the gaps, and the vertical padding in the `card` layouts.",
15536
15851
  },
15537
15852
  ],
15538
15853
  },
@@ -15627,6 +15942,8 @@ export const docsManifest = {
15627
15942
  name: "size",
15628
15943
  type: '"base" | "sm" | "lg" | null | undefined',
15629
15944
  required: false,
15945
+ defaultValue: '"base"',
15946
+ description: "Scale of the whole empty state: the title, description and icon sizes, the gaps, and the vertical padding in the `card` layouts.",
15630
15947
  },
15631
15948
  ],
15632
15949
  },
@@ -15722,16 +16039,19 @@ export const docsManifest = {
15722
16039
  name: "onDragLeave",
15723
16040
  type: "(e: DragEvent<HTMLElement>) => void",
15724
16041
  required: false,
16042
+ description: "Fires when a drag leaves the zone; pass `handleDragLeave` to clear the drag state.",
15725
16043
  },
15726
16044
  {
15727
16045
  name: "onDragOver",
15728
16046
  type: "(e: DragEvent<HTMLElement>) => void",
15729
16047
  required: false,
16048
+ description: "Fires continuously while a drag is over the zone; pass `handleDragOver`, which cancels the default so the zone accepts a drop.",
15730
16049
  },
15731
16050
  {
15732
16051
  name: "onDrop",
15733
16052
  type: "(e: DragEvent<HTMLElement>) => void",
15734
16053
  required: false,
16054
+ description: "Fires when files are dropped; pass `handleDrop` to validate and add them.",
15735
16055
  },
15736
16056
  {
15737
16057
  name: "ref",
@@ -15921,11 +16241,15 @@ export const docsManifest = {
15921
16241
  name: "tone",
15922
16242
  type: '"neutral" | "brand" | "danger" | null | undefined',
15923
16243
  required: false,
16244
+ defaultValue: '"neutral"',
16245
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
15924
16246
  },
15925
16247
  {
15926
16248
  name: "radius",
15927
16249
  type: '"rounded" | "square" | "full" | null | undefined',
15928
16250
  required: false,
16251
+ defaultValue: '"full"',
16252
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
15929
16253
  },
15930
16254
  {
15931
16255
  name: "size",
@@ -15951,6 +16275,8 @@ export const docsManifest = {
15951
16275
  name: "square",
15952
16276
  type: "boolean | null | undefined",
15953
16277
  required: false,
16278
+ defaultValue: "false",
16279
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
15954
16280
  },
15955
16281
  {
15956
16282
  name: "icon",
@@ -15962,26 +16288,35 @@ export const docsManifest = {
15962
16288
  name: "emphasis",
15963
16289
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
15964
16290
  required: false,
16291
+ defaultValue: '"solid"',
16292
+ description: "Visual weight, paired with `tone`: `solid` and `soft` are filled, `outline` and `ghost` lighter, `transparent` a blurred translucent fill, `link` plain text.",
15965
16293
  },
15966
16294
  {
15967
16295
  name: "asInput",
15968
16296
  type: "boolean | null | undefined",
15969
16297
  required: false,
16298
+ defaultValue: "false",
16299
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
15970
16300
  },
15971
16301
  {
15972
16302
  name: "align",
15973
16303
  type: '"center" | "end" | "start" | null | undefined',
15974
16304
  required: false,
16305
+ defaultValue: '"center"',
16306
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
15975
16307
  },
15976
16308
  {
15977
16309
  name: "pressed",
15978
16310
  type: "boolean | null | undefined",
15979
16311
  required: false,
16312
+ defaultValue: "true",
16313
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
15980
16314
  },
15981
16315
  {
15982
16316
  name: "testId",
15983
16317
  type: "string",
15984
16318
  required: false,
16319
+ description: "Rendered as `data-testid`, for Playwright selectors.",
15985
16320
  },
15986
16321
  {
15987
16322
  name: "suffixIcon",
@@ -16134,6 +16469,7 @@ export const docsManifest = {
16134
16469
  name: "selected",
16135
16470
  type: "boolean",
16136
16471
  required: false,
16472
+ description: 'Marks the folder as chosen: selected styling and `aria-pressed="true"`. Has no effect while `showSelectedState` is false.',
16137
16473
  },
16138
16474
  {
16139
16475
  name: "showSelectedState",
@@ -16151,6 +16487,7 @@ export const docsManifest = {
16151
16487
  name: "testId",
16152
16488
  type: "string",
16153
16489
  required: false,
16490
+ description: "Rendered as `data-testid` on the outer wrapper (not the button), for Playwright targeting.",
16154
16491
  },
16155
16492
  ],
16156
16493
  },
@@ -16271,6 +16608,7 @@ export const docsManifest = {
16271
16608
  name: "positionerClassName",
16272
16609
  type: "string",
16273
16610
  required: false,
16611
+ description: "Classes for the positioning layer around the content, such as a lower `z-*` for a panel that sits beneath fixed chrome. Defaults to `z-50`.",
16274
16612
  },
16275
16613
  ],
16276
16614
  },
@@ -16517,11 +16855,15 @@ export const docsManifest = {
16517
16855
  name: "tone",
16518
16856
  type: '"neutral" | "brand" | "danger" | null | undefined',
16519
16857
  required: false,
16858
+ defaultValue: '"neutral"',
16859
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
16520
16860
  },
16521
16861
  {
16522
16862
  name: "radius",
16523
16863
  type: '"rounded" | "square" | "full" | null | undefined',
16524
16864
  required: false,
16865
+ defaultValue: '"full"',
16866
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
16525
16867
  },
16526
16868
  {
16527
16869
  name: "size",
@@ -16547,31 +16889,42 @@ export const docsManifest = {
16547
16889
  name: "square",
16548
16890
  type: "boolean | null | undefined",
16549
16891
  required: false,
16892
+ defaultValue: "false",
16893
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
16550
16894
  },
16551
16895
  {
16552
16896
  name: "emphasis",
16553
16897
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
16554
16898
  required: false,
16899
+ defaultValue: '"solid"',
16900
+ description: "Visual weight, paired with `tone`: `solid` and `soft` are filled, `outline` and `ghost` lighter, `transparent` a blurred translucent fill, `link` plain text.",
16555
16901
  },
16556
16902
  {
16557
16903
  name: "asInput",
16558
16904
  type: "boolean | null | undefined",
16559
16905
  required: false,
16906
+ defaultValue: "false",
16907
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
16560
16908
  },
16561
16909
  {
16562
16910
  name: "align",
16563
16911
  type: '"center" | "end" | "start" | null | undefined',
16564
16912
  required: false,
16913
+ defaultValue: '"center"',
16914
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
16565
16915
  },
16566
16916
  {
16567
16917
  name: "pressed",
16568
16918
  type: "boolean | null | undefined",
16569
16919
  required: false,
16920
+ defaultValue: "true",
16921
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
16570
16922
  },
16571
16923
  {
16572
16924
  name: "testId",
16573
16925
  type: "string",
16574
16926
  required: false,
16927
+ description: "Rendered as `data-testid`, for Playwright selectors.",
16575
16928
  },
16576
16929
  {
16577
16930
  name: "suffixIcon",
@@ -16741,6 +17094,7 @@ export const docsManifest = {
16741
17094
  name: "displayName",
16742
17095
  type: "string",
16743
17096
  required: true,
17097
+ description: "The user's name, shown in medium weight; also the avatar image's alt text.",
16744
17098
  },
16745
17099
  {
16746
17100
  name: "email",
@@ -16934,36 +17288,50 @@ export const docsManifest = {
16934
17288
  name: "tone",
16935
17289
  type: '"neutral" | "brand" | "danger" | null | undefined',
16936
17290
  required: false,
17291
+ defaultValue: '"neutral"',
17292
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
16937
17293
  },
16938
17294
  {
16939
17295
  name: "radius",
16940
17296
  type: '"rounded" | "square" | "full" | null | undefined',
16941
17297
  required: false,
17298
+ defaultValue: '"full"',
17299
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
16942
17300
  },
16943
17301
  {
16944
17302
  name: "square",
16945
17303
  type: "boolean | null | undefined",
16946
17304
  required: false,
17305
+ defaultValue: "false",
17306
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
16947
17307
  },
16948
17308
  {
16949
17309
  name: "emphasis",
16950
17310
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
16951
17311
  required: false,
17312
+ defaultValue: '"solid"',
17313
+ description: "Visual weight, paired with `tone`: `solid` and `soft` are filled, `outline` and `ghost` lighter, `transparent` a blurred translucent fill, `link` plain text.",
16952
17314
  },
16953
17315
  {
16954
17316
  name: "asInput",
16955
17317
  type: "boolean | null | undefined",
16956
17318
  required: false,
17319
+ defaultValue: "false",
17320
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
16957
17321
  },
16958
17322
  {
16959
17323
  name: "align",
16960
17324
  type: '"center" | "end" | "start" | null | undefined',
16961
17325
  required: false,
17326
+ defaultValue: '"center"',
17327
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
16962
17328
  },
16963
17329
  {
16964
17330
  name: "pressed",
16965
17331
  type: "boolean | null | undefined",
16966
17332
  required: false,
17333
+ defaultValue: "true",
17334
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
16967
17335
  },
16968
17336
  {
16969
17337
  name: "size",
@@ -17051,6 +17419,7 @@ export const docsManifest = {
17051
17419
  name: "testId",
17052
17420
  type: "string",
17053
17421
  required: false,
17422
+ description: "Rendered as `data-testid`, for Playwright selectors.",
17054
17423
  },
17055
17424
  ],
17056
17425
  },
@@ -17129,6 +17498,7 @@ export const docsManifest = {
17129
17498
  name: "onClose",
17130
17499
  type: "() => void",
17131
17500
  required: true,
17501
+ description: "Called when the close button is pressed; set your open state to false here.",
17132
17502
  },
17133
17503
  ],
17134
17504
  },
@@ -17136,40 +17506,25 @@ export const docsManifest = {
17136
17506
  name: "MobileNavigationHeaderAction",
17137
17507
  kind: "component",
17138
17508
  props: [
17509
+ {
17510
+ name: "render",
17511
+ type: "useRender.RenderProp<Record<string, unknown>> | undefined",
17512
+ required: false,
17513
+ description: 'Replace the rendered `<button>` with another element or component\n(e.g. `<Link href="…" />`); styling, decorations and props are applied to it.',
17514
+ },
17139
17515
  {
17140
17516
  name: "tone",
17141
17517
  type: '"neutral" | "brand" | "danger" | null | undefined',
17142
17518
  required: false,
17519
+ defaultValue: '"neutral"',
17520
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
17143
17521
  },
17144
17522
  {
17145
17523
  name: "radius",
17146
17524
  type: '"rounded" | "square" | "full" | null | undefined',
17147
17525
  required: false,
17148
- },
17149
- {
17150
- name: "square",
17151
- type: "boolean | null | undefined",
17152
- required: false,
17153
- },
17154
- {
17155
- name: "emphasis",
17156
- type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
17157
- required: false,
17158
- },
17159
- {
17160
- name: "asInput",
17161
- type: "boolean | null | undefined",
17162
- required: false,
17163
- },
17164
- {
17165
- name: "align",
17166
- type: '"center" | "end" | "start" | null | undefined',
17167
- required: false,
17168
- },
17169
- {
17170
- name: "pressed",
17171
- type: "boolean | null | undefined",
17172
- required: false,
17526
+ defaultValue: '"full"',
17527
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
17173
17528
  },
17174
17529
  {
17175
17530
  name: "size",
@@ -17179,10 +17534,10 @@ export const docsManifest = {
17179
17534
  description: 'Size token; `icon-*` variants produce a square icon-only button. Also\naccepts a responsive object keyed by viewport breakpoints and/or `@`-prefixed\ncontainer queries - e.g. `{ base: "sm", md: "base", "@sm": "lg" }`.',
17180
17535
  },
17181
17536
  {
17182
- name: "render",
17183
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
17537
+ name: "dot",
17538
+ type: "string | undefined",
17184
17539
  required: false,
17185
- description: 'Replace the rendered `<button>` with another element or component\n(e.g. `<Link href="…" />`); styling, decorations and props are applied to it.',
17540
+ description: "CSS colour for a status dot; empty/undefined renders no dot.",
17186
17541
  },
17187
17542
  {
17188
17543
  name: "loading",
@@ -17192,10 +17547,11 @@ export const docsManifest = {
17192
17547
  description: "Show a spinner and block presses. The button stays focusable (it is\n`aria-disabled`, not natively disabled) so keyboard focus is kept.",
17193
17548
  },
17194
17549
  {
17195
- name: "loadingLabel",
17196
- type: "string | undefined",
17550
+ name: "square",
17551
+ type: "boolean | null | undefined",
17197
17552
  required: false,
17198
- description: "Label shown in place of `children` while `loading`.",
17553
+ defaultValue: "false",
17554
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
17199
17555
  },
17200
17556
  {
17201
17557
  name: "icon",
@@ -17204,35 +17560,37 @@ export const docsManifest = {
17204
17560
  description: "Leading icon (Lucide or SVG component); with no children it becomes an icon-only button.",
17205
17561
  },
17206
17562
  {
17207
- name: "iconClassName",
17208
- type: "string | undefined",
17563
+ name: "asInput",
17564
+ type: "boolean | null | undefined",
17209
17565
  required: false,
17210
- description: "Extra classes for the leading icon.",
17566
+ defaultValue: "false",
17567
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
17211
17568
  },
17212
17569
  {
17213
- name: "suffixIcon",
17214
- type: "IconComponent | undefined",
17570
+ name: "align",
17571
+ type: '"center" | "end" | "start" | null | undefined',
17215
17572
  required: false,
17216
- description: "Trailing icon (Lucide or SVG component) rendered at the end.",
17573
+ defaultValue: '"center"',
17574
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
17217
17575
  },
17218
17576
  {
17219
- name: "suffixIconClassName",
17220
- type: "string | undefined",
17577
+ name: "pressed",
17578
+ type: "boolean | null | undefined",
17221
17579
  required: false,
17222
- description: "Extra classes for the trailing icon.",
17580
+ defaultValue: "true",
17581
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
17223
17582
  },
17224
17583
  {
17225
- name: "dot",
17226
- type: "string | undefined",
17584
+ name: "testId",
17585
+ type: "string",
17227
17586
  required: false,
17228
- description: "CSS colour for a status dot; empty/undefined renders no dot.",
17587
+ description: "Rendered as `data-testid`, for Playwright selectors.",
17229
17588
  },
17230
17589
  {
17231
- name: "dotPlacement",
17232
- type: '"end" | "start" | undefined',
17590
+ name: "suffixIcon",
17591
+ type: "IconComponent | undefined",
17233
17592
  required: false,
17234
- defaultValue: '"start"',
17235
- description: "Dot position relative to content.",
17593
+ description: "Trailing icon (Lucide or SVG component) rendered at the end.",
17236
17594
  },
17237
17595
  {
17238
17596
  name: "expandable",
@@ -17254,9 +17612,36 @@ export const docsManifest = {
17254
17612
  description: "Force the hover state on - for documentation/testing only.",
17255
17613
  },
17256
17614
  {
17257
- name: "testId",
17258
- type: "string",
17615
+ name: "loadingLabel",
17616
+ type: "string | undefined",
17259
17617
  required: false,
17618
+ description: "Label shown in place of `children` while `loading`.",
17619
+ },
17620
+ {
17621
+ name: "iconClassName",
17622
+ type: "string | undefined",
17623
+ required: false,
17624
+ description: "Extra classes for the leading icon.",
17625
+ },
17626
+ {
17627
+ name: "suffixIconClassName",
17628
+ type: "string | undefined",
17629
+ required: false,
17630
+ description: "Extra classes for the trailing icon.",
17631
+ },
17632
+ {
17633
+ name: "dotPlacement",
17634
+ type: '"end" | "start" | undefined',
17635
+ required: false,
17636
+ defaultValue: '"start"',
17637
+ description: "Dot position relative to content.",
17638
+ },
17639
+ {
17640
+ name: "emphasis",
17641
+ type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
17642
+ required: false,
17643
+ defaultValue: '"soft"',
17644
+ description: "Visual weight, as on Button.",
17260
17645
  },
17261
17646
  ],
17262
17647
  },
@@ -17315,11 +17700,15 @@ export const docsManifest = {
17315
17700
  name: "tone",
17316
17701
  type: '"neutral" | "brand" | "danger" | null | undefined',
17317
17702
  required: false,
17703
+ defaultValue: '"neutral"',
17704
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
17318
17705
  },
17319
17706
  {
17320
17707
  name: "radius",
17321
17708
  type: '"rounded" | "square" | "full" | null | undefined',
17322
17709
  required: false,
17710
+ defaultValue: '"full"',
17711
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
17323
17712
  },
17324
17713
  {
17325
17714
  name: "size",
@@ -17339,31 +17728,42 @@ export const docsManifest = {
17339
17728
  name: "square",
17340
17729
  type: "boolean | null | undefined",
17341
17730
  required: false,
17731
+ defaultValue: "false",
17732
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
17342
17733
  },
17343
17734
  {
17344
17735
  name: "emphasis",
17345
17736
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
17346
17737
  required: false,
17738
+ defaultValue: '"solid"',
17739
+ description: "Visual weight, paired with `tone`: `solid` and `soft` are filled, `outline` and `ghost` lighter, `transparent` a blurred translucent fill, `link` plain text.",
17347
17740
  },
17348
17741
  {
17349
17742
  name: "asInput",
17350
17743
  type: "boolean | null | undefined",
17351
17744
  required: false,
17745
+ defaultValue: "false",
17746
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
17352
17747
  },
17353
17748
  {
17354
17749
  name: "align",
17355
17750
  type: '"center" | "end" | "start" | null | undefined',
17356
17751
  required: false,
17752
+ defaultValue: '"center"',
17753
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
17357
17754
  },
17358
17755
  {
17359
17756
  name: "pressed",
17360
17757
  type: "boolean | null | undefined",
17361
17758
  required: false,
17759
+ defaultValue: "true",
17760
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
17362
17761
  },
17363
17762
  {
17364
17763
  name: "testId",
17365
17764
  type: "string",
17366
17765
  required: false,
17766
+ description: "Rendered as `data-testid`, for Playwright selectors.",
17367
17767
  },
17368
17768
  {
17369
17769
  name: "expandable",
@@ -17508,11 +17908,15 @@ export const docsManifest = {
17508
17908
  name: "tone",
17509
17909
  type: '"neutral" | "brand" | "danger" | null | undefined',
17510
17910
  required: false,
17911
+ defaultValue: '"neutral"',
17912
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
17511
17913
  },
17512
17914
  {
17513
17915
  name: "radius",
17514
17916
  type: '"rounded" | "square" | "full" | null | undefined',
17515
17917
  required: false,
17918
+ defaultValue: '"full"',
17919
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
17516
17920
  },
17517
17921
  {
17518
17922
  name: "size",
@@ -17531,6 +17935,8 @@ export const docsManifest = {
17531
17935
  name: "square",
17532
17936
  type: "boolean | null | undefined",
17533
17937
  required: false,
17938
+ defaultValue: "false",
17939
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
17534
17940
  },
17535
17941
  {
17536
17942
  name: "icon",
@@ -17542,26 +17948,35 @@ export const docsManifest = {
17542
17948
  name: "emphasis",
17543
17949
  type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
17544
17950
  required: false,
17951
+ defaultValue: '"solid"',
17952
+ description: "Visual weight, paired with `tone`: `solid` and `soft` are filled, `outline` and `ghost` lighter, `transparent` a blurred translucent fill, `link` plain text.",
17545
17953
  },
17546
17954
  {
17547
17955
  name: "asInput",
17548
17956
  type: "boolean | null | undefined",
17549
17957
  required: false,
17958
+ defaultValue: "false",
17959
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
17550
17960
  },
17551
17961
  {
17552
17962
  name: "align",
17553
17963
  type: '"center" | "end" | "start" | null | undefined',
17554
17964
  required: false,
17965
+ defaultValue: '"center"',
17966
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
17555
17967
  },
17556
17968
  {
17557
17969
  name: "pressed",
17558
17970
  type: "boolean | null | undefined",
17559
17971
  required: false,
17972
+ defaultValue: "true",
17973
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
17560
17974
  },
17561
17975
  {
17562
17976
  name: "testId",
17563
17977
  type: "string",
17564
17978
  required: false,
17979
+ description: "Rendered as `data-testid`, for Playwright selectors.",
17565
17980
  },
17566
17981
  {
17567
17982
  name: "suffixIcon",
@@ -17640,6 +18055,7 @@ export const docsManifest = {
17640
18055
  name: "label",
17641
18056
  type: "React.ReactNode",
17642
18057
  required: true,
18058
+ description: "Project name; truncates to one line.",
17643
18059
  },
17644
18060
  {
17645
18061
  name: "onAction",
@@ -17651,6 +18067,7 @@ export const docsManifest = {
17651
18067
  name: "actionIcon",
17652
18068
  type: 'import("../../tokens/icon-component").IconComponent',
17653
18069
  required: true,
18070
+ description: "Icon for the trailing action button, such as an ellipsis for project options.",
17654
18071
  },
17655
18072
  {
17656
18073
  name: "actionLabel",
@@ -17684,6 +18101,7 @@ export const docsManifest = {
17684
18101
  name: "onClose",
17685
18102
  type: "() => void",
17686
18103
  required: false,
18104
+ description: "Called when Escape is pressed. The overlay never unmounts itself, so set your open state to false here.",
17687
18105
  },
17688
18106
  ],
17689
18107
  },
@@ -18126,6 +18544,7 @@ export const docsManifest = {
18126
18544
  type: "string",
18127
18545
  required: false,
18128
18546
  defaultValue: '"Clear all"',
18547
+ description: "Text of the button that calls `onClear`.",
18129
18548
  },
18130
18549
  {
18131
18550
  name: "separator",
@@ -18228,6 +18647,8 @@ export const docsManifest = {
18228
18647
  name: "variant",
18229
18648
  type: '"default" | "secondary" | null | undefined',
18230
18649
  required: false,
18650
+ defaultValue: '"default"',
18651
+ description: "How a pressed toggle shows it is on: `default` greys the fill and border, `secondary` darkens the border only. Inside a `ToggleGroup` the group's value wins.",
18231
18652
  },
18232
18653
  {
18233
18654
  name: "size",
@@ -18348,6 +18769,8 @@ export const docsManifest = {
18348
18769
  name: "radius",
18349
18770
  type: '"rounded" | "square" | "full" | null | undefined',
18350
18771
  required: false,
18772
+ defaultValue: '"full"',
18773
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
18351
18774
  },
18352
18775
  {
18353
18776
  name: "size",
@@ -18373,26 +18796,35 @@ export const docsManifest = {
18373
18796
  name: "square",
18374
18797
  type: "boolean | null | undefined",
18375
18798
  required: false,
18799
+ defaultValue: "false",
18800
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
18376
18801
  },
18377
18802
  {
18378
18803
  name: "asInput",
18379
18804
  type: "boolean | null | undefined",
18380
18805
  required: false,
18806
+ defaultValue: "false",
18807
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
18381
18808
  },
18382
18809
  {
18383
18810
  name: "align",
18384
18811
  type: '"center" | "end" | "start" | null | undefined',
18385
18812
  required: false,
18813
+ defaultValue: '"center"',
18814
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
18386
18815
  },
18387
18816
  {
18388
18817
  name: "pressed",
18389
18818
  type: "boolean | null | undefined",
18390
18819
  required: false,
18820
+ defaultValue: "true",
18821
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
18391
18822
  },
18392
18823
  {
18393
18824
  name: "testId",
18394
18825
  type: "string",
18395
18826
  required: false,
18827
+ description: "Rendered as `data-testid`, for Playwright selectors.",
18396
18828
  },
18397
18829
  {
18398
18830
  name: "suffixIcon",
@@ -18482,16 +18914,19 @@ export const docsManifest = {
18482
18914
  name: "onDirectionChange",
18483
18915
  type: "(direction: PageToolbarSortDirection) => void",
18484
18916
  required: false,
18917
+ description: 'Called with `"asc"` or `"desc"` when the user picks a direction. The Ascending and Descending choices only appear when both this and `direction` are set.',
18485
18918
  },
18486
18919
  {
18487
18920
  name: "onValueChange",
18488
18921
  type: "(value: string) => void",
18489
18922
  required: true,
18923
+ description: "Called with the chosen option's `value` when the user picks an order.",
18490
18924
  },
18491
18925
  {
18492
18926
  name: "options",
18493
18927
  type: "readonly PageToolbarSortOption[]",
18494
18928
  required: true,
18929
+ description: "The orders to offer, each a `value` and a `label`; the label of the current one shows on the button.",
18495
18930
  },
18496
18931
  {
18497
18932
  name: "value",
@@ -18728,6 +19163,7 @@ export const docsManifest = {
18728
19163
  name: "product",
18729
19164
  type: "ProductCardProduct",
18730
19165
  required: true,
19166
+ description: 'The material to show. In `"group"` mode its `variants` become the colourway\nswatches (the card falls back to the product itself when there are none),\nand `images[0]` of the selected variant is the photograph. A product whose\nselected variant has no images renders a "no photography" placeholder.',
18731
19167
  },
18732
19168
  {
18733
19169
  name: "productUrl",
@@ -18769,13 +19205,13 @@ export const docsManifest = {
18769
19205
  name: "overrideImageUrl",
18770
19206
  type: "string | undefined",
18771
19207
  required: false,
18772
- description: "Override image URL - used for visual search to show the matched image",
19208
+ description: 'Image URL shown in place of the product\'s own first image, e.g. the\nmatched crop in a visual search. Honoured in `"single"` and `"swatch"`\nmodes only.',
18773
19209
  },
18774
19210
  {
18775
19211
  name: "priority",
18776
19212
  type: "boolean | undefined",
18777
19213
  required: false,
18778
- description: 'Prioritise loading images (sets loading="eager" and adds preload link)',
19214
+ description: 'Load the main image eagerly (`loading="eager"`, high fetch priority in the\ndefault renderer, and forwarded to `renderImage`). Set it on above-the-fold\ncards, not the whole grid.',
18779
19215
  },
18780
19216
  {
18781
19217
  name: "productBrandLines",
@@ -18787,21 +19223,29 @@ export const docsManifest = {
18787
19223
  name: "productNameLines",
18788
19224
  type: "1 | 2 | undefined",
18789
19225
  required: false,
19226
+ defaultValue: "1",
19227
+ description: "How many lines the product name may take before it clamps. Choose `2`\nwhere names differ only at the end; rows stay level because the clamp is\na maximum, not a reserved height.",
18790
19228
  },
18791
19229
  {
18792
19230
  name: "showAddToCart",
18793
19231
  type: "boolean | undefined",
18794
19232
  required: false,
19233
+ defaultValue: "true",
19234
+ description: "Show the cart control. It only ever appears when `renderAddToCart` is also\nsupplied, and `primaryAction` can replace it with another action.",
18795
19235
  },
18796
19236
  {
18797
19237
  name: "showProductBrand",
18798
19238
  type: "boolean | undefined",
18799
19239
  required: false,
19240
+ defaultValue: "true",
19241
+ description: "Show the brand name above the product name. Cards without a brand name\nomit the line either way.",
18800
19242
  },
18801
19243
  {
18802
19244
  name: "showProductName",
18803
19245
  type: "boolean | undefined",
18804
19246
  required: false,
19247
+ defaultValue: "true",
19248
+ description: "Show the product name.",
18805
19249
  },
18806
19250
  {
18807
19251
  name: "showSwatches",
@@ -18814,6 +19258,7 @@ export const docsManifest = {
18814
19258
  name: "similarityScore",
18815
19259
  type: "number | undefined",
18816
19260
  required: false,
19261
+ description: 'Visual-search match from `0` to `1` (not a percentage), shown as a\nrounded percentage pill over the image: `0.87` reads `87%`. Only\n`"single"` and `"inspiration"` modes show it; omit it for no pill.',
18817
19262
  },
18818
19263
  ],
18819
19264
  },
@@ -18995,13 +19440,13 @@ export const docsManifest = {
18995
19440
  name: "overrideImageUrl",
18996
19441
  type: "string | undefined",
18997
19442
  required: false,
18998
- description: "Override image URL - used for visual search to show the matched image",
19443
+ description: 'Image URL shown in place of the product\'s own first image, e.g. the\nmatched crop in a visual search. Honoured in `"single"` and `"swatch"`\nmodes only.',
18999
19444
  },
19000
19445
  {
19001
19446
  name: "priority",
19002
19447
  type: "boolean | undefined",
19003
19448
  required: false,
19004
- description: 'Prioritise loading images (sets loading="eager" and adds preload link)',
19449
+ description: 'Load the main image eagerly (`loading="eager"`, high fetch priority in the\ndefault renderer, and forwarded to `renderImage`). Set it on above-the-fold\ncards, not the whole grid.',
19005
19450
  },
19006
19451
  {
19007
19452
  name: "productBrandLines",
@@ -19013,31 +19458,41 @@ export const docsManifest = {
19013
19458
  name: "productNameLines",
19014
19459
  type: "1 | 2 | undefined",
19015
19460
  required: false,
19461
+ defaultValue: "1",
19462
+ description: "How many lines the product name may take before it clamps. Choose `2`\nwhere names differ only at the end; rows stay level because the clamp is\na maximum, not a reserved height.",
19016
19463
  },
19017
19464
  {
19018
19465
  name: "showAddToCart",
19019
19466
  type: "boolean | undefined",
19020
19467
  required: false,
19468
+ defaultValue: "true",
19469
+ description: "Show the cart control. It only ever appears when `renderAddToCart` is also\nsupplied, and `primaryAction` can replace it with another action.",
19021
19470
  },
19022
19471
  {
19023
19472
  name: "showProductBrand",
19024
19473
  type: "boolean | undefined",
19025
19474
  required: false,
19475
+ defaultValue: "true",
19476
+ description: "Show the brand name above the product name. Cards without a brand name\nomit the line either way.",
19026
19477
  },
19027
19478
  {
19028
19479
  name: "showProductName",
19029
19480
  type: "boolean | undefined",
19030
19481
  required: false,
19482
+ defaultValue: "true",
19483
+ description: "Show the product name.",
19031
19484
  },
19032
19485
  {
19033
19486
  name: "similarityScore",
19034
19487
  type: "number | undefined",
19035
19488
  required: false,
19489
+ description: 'Visual-search match from `0` to `1` (not a percentage), shown as a\nrounded percentage pill over the image: `0.87` reads `87%`. Only\n`"single"` and `"inspiration"` modes show it; omit it for no pill.',
19036
19490
  },
19037
19491
  {
19038
19492
  name: "onAddToCartSuccess",
19039
19493
  type: "(() => void) | undefined",
19040
19494
  required: false,
19495
+ description: "Called when the `renderAddToCart` slot reports a successful add, via the `onAdded` it receives.",
19041
19496
  },
19042
19497
  ],
19043
19498
  },
@@ -19101,23 +19556,26 @@ export const docsManifest = {
19101
19556
  name: "overrideImageUrl",
19102
19557
  type: "string | undefined",
19103
19558
  required: false,
19104
- description: "Override image URL - used for visual search to show the matched image",
19559
+ description: "Image URL shown in place of the variant's first image, e.g. the matched crop in a visual search.",
19105
19560
  },
19106
19561
  {
19107
19562
  name: "priority",
19108
19563
  type: "boolean | undefined",
19109
19564
  required: false,
19110
- description: 'Prioritise loading this image (sets loading="eager" and adds preload link)',
19565
+ description: 'Load this image eagerly (`loading="eager"`, high fetch priority in the default renderer); forwarded to `renderImage`.',
19111
19566
  },
19112
19567
  {
19113
19568
  name: "showSimilarityScore",
19114
19569
  type: "boolean | undefined",
19115
19570
  required: false,
19571
+ defaultValue: "false",
19572
+ description: 'Show the `similarityScore` pill. Needs `similarityScore` too, and is\nignored outside `"single"` and `"inspiration"` modes.',
19116
19573
  },
19117
19574
  {
19118
19575
  name: "similarityScore",
19119
19576
  type: "number | undefined",
19120
19577
  required: false,
19578
+ description: "Match from `0` to `1`, shown as a rounded percentage (`0.87` reads `87%`).",
19121
19579
  },
19122
19580
  ],
19123
19581
  },
@@ -19243,6 +19701,7 @@ export const docsManifest = {
19243
19701
  name: "display",
19244
19702
  type: "ProductCardDisplayOptions | undefined",
19245
19703
  required: false,
19704
+ description: "Which parts of the card show: brand, name, line clamps, swatches, add to\ncart. `ProductCard` takes the same switches as flat props (`showProductBrand`\nand so on) and builds this for you; pass `display` only when using\n`ProductCardProvider` directly. Each key falls back to its own default.",
19246
19705
  },
19247
19706
  {
19248
19707
  name: "dragAdapter",
@@ -19365,6 +19824,7 @@ export const docsManifest = {
19365
19824
  name: "product",
19366
19825
  type: "ProductCardProduct",
19367
19826
  required: true,
19827
+ description: 'The material to show. In `"group"` mode its `variants` become the colourway\nswatches (the card falls back to the product itself when there are none),\nand `images[0]` of the selected variant is the photograph. A product whose\nselected variant has no images renders a "no photography" placeholder.',
19368
19828
  },
19369
19829
  {
19370
19830
  name: "productUrl",
@@ -19556,11 +20016,13 @@ export const docsManifest = {
19556
20016
  name: "overrideImageUrl",
19557
20017
  type: "string | undefined",
19558
20018
  required: false,
20019
+ description: "Image URL shown in place of the variant's first image.",
19559
20020
  },
19560
20021
  {
19561
20022
  name: "priority",
19562
20023
  type: "boolean | undefined",
19563
20024
  required: false,
20025
+ description: "Load the tile's image eagerly; forwarded to `renderImage`.",
19564
20026
  },
19565
20027
  ],
19566
20028
  },
@@ -19641,6 +20103,8 @@ export const docsManifest = {
19641
20103
  name: "active",
19642
20104
  type: "boolean",
19643
20105
  required: false,
20106
+ defaultValue: "true",
20107
+ description: "Whether the `renderTools` buttons are mounted. `ProductCard` sets it while\nthe pointer or keyboard focus is inside the card, so a large grid does not\nrender every hidden action.",
19644
20108
  },
19645
20109
  {
19646
20110
  name: "className",
@@ -19721,11 +20185,13 @@ export const docsManifest = {
19721
20185
  name: "filters",
19722
20186
  type: "Record<string, string | null>",
19723
20187
  required: true,
20188
+ description: 'The current selection, keyed by filter key (`"color"` for `colorName`, otherwise the\ndimension name such as `"finish"`) to the selected option\'s `value`, or `null` for none.',
19724
20189
  },
19725
20190
  {
19726
20191
  name: "onFilterChange",
19727
20192
  type: "(key: string, value: string | null) => void",
19728
20193
  required: true,
20194
+ description: "Called when an option is picked, with the filter key and the option's `value`;\npicking the selected option again sends `null` to clear it. When `onSiblingSelect` and\n`siblingsWithAttributes` find a matching sibling, that fires instead.",
19729
20195
  },
19730
20196
  {
19731
20197
  name: "onSiblingSelect",
@@ -19761,6 +20227,7 @@ export const docsManifest = {
19761
20227
  name: "variantOptions",
19762
20228
  type: 'Partial<Record<"pattern" | "length" | "width" | "size" | "colorName" | "finish" | "substrate" | "finishType", import("./product-specifications-types").VariantOption[]>>',
19763
20229
  required: true,
20230
+ description: "The options on offer per dimension (`colorName`, `pattern`, `finish`, `size`, `width`,\n`length`, `substrate`, `finishType`). Each present dimension becomes one field, ordered\nwith colourways first; an option with `available: false` is shown as unavailable.",
19764
20231
  },
19765
20232
  ],
19766
20233
  },
@@ -19794,6 +20261,7 @@ export const docsManifest = {
19794
20261
  name: "testId",
19795
20262
  type: "string",
19796
20263
  required: false,
20264
+ description: "Rendered as `data-testid`, for Playwright selectors.",
19797
20265
  },
19798
20266
  ],
19799
20267
  },
@@ -20145,12 +20613,6 @@ export const docsManifest = {
20145
20613
  type: "string",
20146
20614
  required: false,
20147
20615
  },
20148
- {
20149
- name: "aria-label",
20150
- type: "string",
20151
- required: true,
20152
- description: 'Defines a string value that labels the current element.\nNames the scrolling region for assistive tech, e.g. "Product details".',
20153
- },
20154
20616
  {
20155
20617
  name: "allowOverflow",
20156
20618
  type: "boolean",
@@ -20169,6 +20631,12 @@ export const docsManifest = {
20169
20631
  required: false,
20170
20632
  description: "Additional classes for the viewport (scrolling container)",
20171
20633
  },
20634
+ {
20635
+ name: "aria-label",
20636
+ type: "string",
20637
+ required: true,
20638
+ description: 'Names the scrolling region for assistive tech, e.g. "Product details".',
20639
+ },
20172
20640
  ],
20173
20641
  },
20174
20642
  {
@@ -20649,6 +21117,8 @@ export const docsManifest = {
20649
21117
  name: "border",
20650
21118
  type: "BorderStyle",
20651
21119
  required: false,
21120
+ defaultValue: '"none"',
21121
+ description: "Outline: `none` draws no border, `solid` a 1px border, `dashed` a faint dashed one for placeholder or drop areas.",
20652
21122
  },
20653
21123
  {
20654
21124
  name: "inset",
@@ -20674,11 +21144,14 @@ export const docsManifest = {
20674
21144
  name: "testId",
20675
21145
  type: "string",
20676
21146
  required: false,
21147
+ description: "Rendered as `data-testid`, for Playwright selectors.",
20677
21148
  },
20678
21149
  {
20679
21150
  name: "variant",
20680
21151
  type: '"muted" | "ghost" | "accent" | "card" | null | undefined',
20681
21152
  required: false,
21153
+ defaultValue: '"card"',
21154
+ description: "Surface: `card` is the standard card fill, `muted` and `accent` are tinted fills, `ghost` has no fill or shadow.",
20682
21155
  },
20683
21156
  ],
20684
21157
  },
@@ -20934,84 +21407,115 @@ export const docsManifest = {
20934
21407
  name: "SidebarGroupAction",
20935
21408
  kind: "component",
20936
21409
  props: [
21410
+ {
21411
+ name: "render",
21412
+ type: "useRender.RenderProp<Record<string, unknown>> | undefined",
21413
+ required: false,
21414
+ description: 'Replace the rendered `<button>` with another element or component\n(e.g. `<Link href="…" />`); styling, decorations and props are applied to it.',
21415
+ },
20937
21416
  {
20938
21417
  name: "tone",
20939
21418
  type: '"neutral" | "brand" | "danger" | null | undefined',
20940
21419
  required: false,
21420
+ defaultValue: '"neutral"',
21421
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
20941
21422
  },
20942
21423
  {
20943
21424
  name: "radius",
20944
21425
  type: '"rounded" | "square" | "full" | null | undefined',
20945
21426
  required: false,
21427
+ defaultValue: '"full"',
21428
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
21429
+ },
21430
+ {
21431
+ name: "dot",
21432
+ type: "string | undefined",
21433
+ required: false,
21434
+ description: "CSS colour for a status dot; empty/undefined renders no dot.",
21435
+ },
21436
+ {
21437
+ name: "loading",
21438
+ type: "boolean | undefined",
21439
+ required: false,
21440
+ defaultValue: "false",
21441
+ description: "Show a spinner and block presses. The button stays focusable (it is\n`aria-disabled`, not natively disabled) so keyboard focus is kept.",
20946
21442
  },
20947
21443
  {
20948
21444
  name: "square",
20949
21445
  type: "boolean | null | undefined",
20950
21446
  required: false,
21447
+ defaultValue: "false",
21448
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
20951
21449
  },
20952
21450
  {
20953
- name: "emphasis",
20954
- type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
21451
+ name: "icon",
21452
+ type: "IconComponent | undefined",
20955
21453
  required: false,
21454
+ description: "Leading icon (Lucide or SVG component); with no children it becomes an icon-only button.",
20956
21455
  },
20957
21456
  {
20958
21457
  name: "asInput",
20959
21458
  type: "boolean | null | undefined",
20960
21459
  required: false,
21460
+ defaultValue: "false",
21461
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
20961
21462
  },
20962
21463
  {
20963
21464
  name: "align",
20964
21465
  type: '"center" | "end" | "start" | null | undefined',
20965
21466
  required: false,
21467
+ defaultValue: '"center"',
21468
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
20966
21469
  },
20967
21470
  {
20968
21471
  name: "pressed",
20969
21472
  type: "boolean | null | undefined",
20970
21473
  required: false,
21474
+ defaultValue: "true",
21475
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
20971
21476
  },
20972
21477
  {
20973
- name: "size",
20974
- type: "ButtonSizeProp",
21478
+ name: "testId",
21479
+ type: "string",
20975
21480
  required: false,
20976
- defaultValue: '"base"',
20977
- description: 'Size token; `icon-*` variants produce a square icon-only button. Also\naccepts a responsive object keyed by viewport breakpoints and/or `@`-prefixed\ncontainer queries - e.g. `{ base: "sm", md: "base", "@sm": "lg" }`.',
21481
+ description: "Rendered as `data-testid`, for Playwright selectors.",
20978
21482
  },
20979
21483
  {
20980
- name: "render",
20981
- type: "useRender.RenderProp<Record<string, unknown>> | undefined",
21484
+ name: "suffixIcon",
21485
+ type: "IconComponent | undefined",
20982
21486
  required: false,
20983
- description: 'Replace the rendered `<button>` with another element or component\n(e.g. `<Link href="…" />`); styling, decorations and props are applied to it.',
21487
+ description: "Trailing icon (Lucide or SVG component) rendered at the end.",
20984
21488
  },
20985
21489
  {
20986
- name: "loading",
21490
+ name: "expandable",
20987
21491
  type: "boolean | undefined",
20988
21492
  required: false,
20989
21493
  defaultValue: "false",
20990
- description: "Show a spinner and block presses. The button stays focusable (it is\n`aria-disabled`, not natively disabled) so keyboard focus is kept.",
21494
+ description: "Icon-only at rest; expands on hover/focus-visible to reveal the label\nto the right of the icon. Collapsed geometry equals the matching icon-*\nsize, expanded equals the text button of that size - so pass a text\nsize (`sm`/`base`/`lg`) OR its icon twin (`icon-sm` …); both resolve\nidentically. Requires both `icon` and children; ignored with `square`. The label stays in the DOM in both states (stable\naccessible name).",
20991
21495
  },
20992
21496
  {
20993
- name: "loadingLabel",
20994
- type: "string | undefined",
21497
+ name: "focused",
21498
+ type: "boolean | undefined",
20995
21499
  required: false,
20996
- description: "Label shown in place of `children` while `loading`.",
21500
+ description: "Force the focus ring on - for documentation/testing only.",
20997
21501
  },
20998
21502
  {
20999
- name: "icon",
21000
- type: "IconComponent | undefined",
21503
+ name: "hovered",
21504
+ type: "boolean | undefined",
21001
21505
  required: false,
21002
- description: "Leading icon (Lucide or SVG component); with no children it becomes an icon-only button.",
21506
+ description: "Force the hover state on - for documentation/testing only.",
21003
21507
  },
21004
21508
  {
21005
- name: "iconClassName",
21509
+ name: "loadingLabel",
21006
21510
  type: "string | undefined",
21007
21511
  required: false,
21008
- description: "Extra classes for the leading icon.",
21512
+ description: "Label shown in place of `children` while `loading`.",
21009
21513
  },
21010
21514
  {
21011
- name: "suffixIcon",
21012
- type: "IconComponent | undefined",
21515
+ name: "iconClassName",
21516
+ type: "string | undefined",
21013
21517
  required: false,
21014
- description: "Trailing icon (Lucide or SVG component) rendered at the end.",
21518
+ description: "Extra classes for the leading icon.",
21015
21519
  },
21016
21520
  {
21017
21521
  name: "suffixIconClassName",
@@ -21019,12 +21523,6 @@ export const docsManifest = {
21019
21523
  required: false,
21020
21524
  description: "Extra classes for the trailing icon.",
21021
21525
  },
21022
- {
21023
- name: "dot",
21024
- type: "string | undefined",
21025
- required: false,
21026
- description: "CSS colour for a status dot; empty/undefined renders no dot.",
21027
- },
21028
21526
  {
21029
21527
  name: "dotPlacement",
21030
21528
  type: '"end" | "start" | undefined',
@@ -21033,28 +21531,18 @@ export const docsManifest = {
21033
21531
  description: "Dot position relative to content.",
21034
21532
  },
21035
21533
  {
21036
- name: "expandable",
21037
- type: "boolean | undefined",
21038
- required: false,
21039
- defaultValue: "false",
21040
- description: "Icon-only at rest; expands on hover/focus-visible to reveal the label\nto the right of the icon. Collapsed geometry equals the matching icon-*\nsize, expanded equals the text button of that size - so pass a text\nsize (`sm`/`base`/`lg`) OR its icon twin (`icon-sm` …); both resolve\nidentically. Requires both `icon` and children; ignored with `square`. The label stays in the DOM in both states (stable\naccessible name).",
21041
- },
21042
- {
21043
- name: "focused",
21044
- type: "boolean | undefined",
21045
- required: false,
21046
- description: "Force the focus ring on - for documentation/testing only.",
21047
- },
21048
- {
21049
- name: "hovered",
21050
- type: "boolean | undefined",
21534
+ name: "size",
21535
+ type: 'import("../../components/button/button-types").ButtonSizeProp | undefined',
21051
21536
  required: false,
21052
- description: "Force the hover state on - for documentation/testing only.",
21537
+ defaultValue: '"icon-sm"',
21538
+ description: "Size token, as on Button.",
21053
21539
  },
21054
21540
  {
21055
- name: "testId",
21056
- type: "string",
21541
+ name: "emphasis",
21542
+ type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
21057
21543
  required: false,
21544
+ defaultValue: '"ghost"',
21545
+ description: "Visual weight, as on Button.",
21058
21546
  },
21059
21547
  {
21060
21548
  name: "showWhenCollapsed",
@@ -21087,11 +21575,14 @@ export const docsManifest = {
21087
21575
  name: "testId",
21088
21576
  type: "string",
21089
21577
  required: false,
21578
+ description: "Rendered as `data-testid`, for Playwright selectors.",
21090
21579
  },
21091
21580
  {
21092
21581
  name: "radius",
21093
21582
  type: '"rounded" | "square" | "full" | null | undefined',
21094
21583
  required: false,
21584
+ defaultValue: '"rounded"',
21585
+ description: "Corner shape: `rounded` is the standard 8px radius, `square` has sharp corners, `full` is a pill.",
21095
21586
  },
21096
21587
  {
21097
21588
  name: "size",
@@ -21220,16 +21711,21 @@ export const docsManifest = {
21220
21711
  name: "size",
21221
21712
  type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl"',
21222
21713
  required: false,
21714
+ defaultValue: '"base"',
21715
+ description: 'Row height and text size. Use `"xl"` in an icon-collapsible sidebar so the collapsed square centres on the rail.',
21223
21716
  },
21224
21717
  {
21225
21718
  name: "variant",
21226
21719
  type: '"input" | "default" | "outline"',
21227
21720
  required: false,
21721
+ defaultValue: '"input"',
21722
+ description: 'Surface treatment: `"input"` uses the sidebar\'s accent fill on hover and when active, `"default"` the standard accent tint, `"outline"` adds a ring.',
21228
21723
  },
21229
21724
  {
21230
21725
  name: "icon",
21231
21726
  type: "IconComponent",
21232
21727
  required: false,
21728
+ description: "Leading icon component. When the sidebar collapses to the rail it is the only thing shown, unless `collapsedIcon` or `collapsedContent` replaces it.",
21233
21729
  },
21234
21730
  {
21235
21731
  name: "collapsedIcon",
@@ -21247,6 +21743,7 @@ export const docsManifest = {
21247
21743
  name: "suffixIcon",
21248
21744
  type: "IconComponent",
21249
21745
  required: false,
21746
+ description: "Trailing icon component, such as a chevron for a submenu. Replaces the `kbd` hint when both are set, and hides when the sidebar collapses.",
21250
21747
  },
21251
21748
  {
21252
21749
  name: "forceExpanded",
@@ -21258,6 +21755,7 @@ export const docsManifest = {
21258
21755
  name: "kbd",
21259
21756
  type: "string[]",
21260
21757
  required: false,
21758
+ description: 'Keyboard shortcut keys shown as keycaps at the end of the row, one string per key (e.g. `["⌘", "K"]`). Hidden when collapsed or when `suffixIcon` is set.',
21261
21759
  },
21262
21760
  {
21263
21761
  name: "children",
@@ -21330,11 +21828,6 @@ export const docsManifest = {
21330
21828
  required: false,
21331
21829
  description: "Replace the default `<button>` with another element or component. Glyph props render inside it, around `children`; the element should carry no children of its own.",
21332
21830
  },
21333
- {
21334
- name: "variant",
21335
- type: '"input" | "default" | "outline" | null | undefined',
21336
- required: false,
21337
- },
21338
21831
  {
21339
21832
  name: "indicator",
21340
21833
  type: "React.ReactNode",
@@ -21345,21 +21838,22 @@ export const docsManifest = {
21345
21838
  name: "tone",
21346
21839
  type: '"neutral" | "danger" | null | undefined',
21347
21840
  required: false,
21841
+ defaultValue: '"neutral"',
21842
+ description: "`danger` marks a destructive action with red text and a red hover and active tint.",
21348
21843
  },
21349
21844
  {
21350
21845
  name: "inset",
21351
21846
  type: "boolean | null | undefined",
21352
21847
  required: false,
21848
+ defaultValue: "false",
21849
+ description: "Pads the start so a row with no leading glyph lines up with rows that have an icon, dot or avatar. Switched on automatically when `indicator` is set.",
21353
21850
  },
21354
21851
  {
21355
21852
  name: "radius",
21356
21853
  type: '"rounded" | "square" | "full" | null | undefined',
21357
21854
  required: false,
21358
- },
21359
- {
21360
- name: "size",
21361
- type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
21362
- required: false,
21855
+ defaultValue: '"full"',
21856
+ description: "Corner shape: `full` is a pill, `rounded` a soft rectangle, `square` has sharp corners.",
21363
21857
  },
21364
21858
  {
21365
21859
  name: "loading",
@@ -21391,12 +21885,6 @@ export const docsManifest = {
21391
21885
  required: false,
21392
21886
  description: 'Selection visual: "checkbox" renders Checkbox, "radio" renders radio circle. Defaults to "checkbox" when `checked` is set.',
21393
21887
  },
21394
- {
21395
- name: "iconClassName",
21396
- type: "string",
21397
- required: false,
21398
- description: "Additional className for the icon",
21399
- },
21400
21888
  {
21401
21889
  name: "avatar",
21402
21890
  type: "React.ReactNode",
@@ -21439,6 +21927,26 @@ export const docsManifest = {
21439
21927
  required: false,
21440
21928
  description: "Icon to display in the left icon column",
21441
21929
  },
21930
+ {
21931
+ name: "iconClassName",
21932
+ type: "string",
21933
+ required: false,
21934
+ description: "Additional className for the icon",
21935
+ },
21936
+ {
21937
+ name: "size",
21938
+ type: '"base" | "2xs" | "xs" | "sm" | "lg" | "xl" | "2xl" | "3xl" | null | undefined',
21939
+ required: false,
21940
+ defaultValue: '"xl"',
21941
+ description: "Row size, as on MenuItem.",
21942
+ },
21943
+ {
21944
+ name: "variant",
21945
+ type: '"input" | "default" | "outline" | null | undefined',
21946
+ required: false,
21947
+ defaultValue: '"input"',
21948
+ description: "Row style, as on MenuItem.",
21949
+ },
21442
21950
  ],
21443
21951
  },
21444
21952
  {
@@ -21615,11 +22123,15 @@ export const docsManifest = {
21615
22123
  name: "tone",
21616
22124
  type: '"neutral" | "brand" | "danger" | null | undefined',
21617
22125
  required: false,
22126
+ defaultValue: '"neutral"',
22127
+ description: "Semantic colour: `brand` for the primary action, `danger` for a destructive one.",
21618
22128
  },
21619
22129
  {
21620
22130
  name: "radius",
21621
22131
  type: '"rounded" | "square" | "full" | null | undefined',
21622
22132
  required: false,
22133
+ defaultValue: '"full"',
22134
+ description: "Corner shape: `full` is a pill (or circle when square), `rounded` a soft corner, `square` sharp.",
21623
22135
  },
21624
22136
  {
21625
22137
  name: "size",
@@ -21645,31 +22157,35 @@ export const docsManifest = {
21645
22157
  name: "square",
21646
22158
  type: "boolean | null | undefined",
21647
22159
  required: false,
21648
- },
21649
- {
21650
- name: "emphasis",
21651
- type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
21652
- required: false,
22160
+ defaultValue: "false",
22161
+ description: "Lock width to height so an `icon-*` size draws a square or circle; ignored with `expandable`.",
21653
22162
  },
21654
22163
  {
21655
22164
  name: "asInput",
21656
22165
  type: "boolean | null | undefined",
21657
22166
  required: false,
22167
+ defaultValue: "false",
22168
+ description: "Style the button as a form field (input background and border), for a trigger that opens a picker.",
21658
22169
  },
21659
22170
  {
21660
22171
  name: "align",
21661
22172
  type: '"center" | "end" | "start" | null | undefined',
21662
22173
  required: false,
22174
+ defaultValue: '"center"',
22175
+ description: "Where the content sits along the button; `start` or `end` only shows on a button wider than its content.",
21663
22176
  },
21664
22177
  {
21665
22178
  name: "pressed",
21666
22179
  type: "boolean | null | undefined",
21667
22180
  required: false,
22181
+ defaultValue: "true",
22182
+ description: "Shrink slightly while held down (`:active`); `false` keeps the button still.",
21668
22183
  },
21669
22184
  {
21670
22185
  name: "testId",
21671
22186
  type: "string",
21672
22187
  required: false,
22188
+ description: "Rendered as `data-testid`, for Playwright selectors.",
21673
22189
  },
21674
22190
  {
21675
22191
  name: "suffixIcon",
@@ -21727,6 +22243,13 @@ export const docsManifest = {
21727
22243
  required: false,
21728
22244
  description: "Icon to display. Defaults to PanelLeftCloseIcon.",
21729
22245
  },
22246
+ {
22247
+ name: "emphasis",
22248
+ type: '"link" | "outline" | "solid" | "ghost" | "soft" | "transparent" | null | undefined',
22249
+ required: false,
22250
+ defaultValue: '"ghost"',
22251
+ description: "Visual weight, as on Button.",
22252
+ },
21730
22253
  ],
21731
22254
  },
21732
22255
  {
@@ -22914,6 +23437,7 @@ export const docsManifest = {
22914
23437
  name: "image",
22915
23438
  type: "ReactNode",
22916
23439
  required: false,
23440
+ description: "Picture shown inside the tile, such as an `<img>` of the variant; omit it for a plain `color` tile.",
22917
23441
  },
22918
23442
  {
22919
23443
  name: "label",