@cloudflare/kumo 1.8.0 → 1.9.0

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 (162) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/ai/component-registry.json +117 -42
  3. package/ai/component-registry.md +124 -17
  4. package/ai/schemas.ts +7 -6
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +43 -41
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/catalog.js +1 -1
  9. package/dist/{checkbox-BUV90tNU.js → checkbox-CfFoTNFI.js} +8 -8
  10. package/dist/{checkbox-BUV90tNU.js.map → checkbox-CfFoTNFI.js.map} +1 -1
  11. package/dist/{clipboard-text-BVKGunue.js → clipboard-text-1d0rHIhb.js} +24 -24
  12. package/dist/{clipboard-text-BVKGunue.js.map → clipboard-text-1d0rHIhb.js.map} +1 -1
  13. package/dist/{combobox-DyTgHki4.js → combobox-vnvi22pn.js} +4 -4
  14. package/dist/{combobox-DyTgHki4.js.map → combobox-vnvi22pn.js.map} +1 -1
  15. package/dist/{command-palette-B2hkPSQm.js → command-palette-B80cqB7K.js} +2 -2
  16. package/dist/{command-palette-B2hkPSQm.js.map → command-palette-B80cqB7K.js.map} +1 -1
  17. package/dist/components/checkbox.js +1 -1
  18. package/dist/components/clipboard-text.js +1 -1
  19. package/dist/components/combobox.js +1 -1
  20. package/dist/components/command-palette.js +1 -1
  21. package/dist/components/dialog.js +1 -1
  22. package/dist/components/dropdown.js +1 -1
  23. package/dist/components/field.js +1 -1
  24. package/dist/components/flow.js +1472 -1412
  25. package/dist/components/flow.js.map +1 -1
  26. package/dist/components/input.js +3 -3
  27. package/dist/components/label.js +1 -1
  28. package/dist/components/link.js +1 -1
  29. package/dist/components/menubar.js +1 -1
  30. package/dist/components/meter.js +1 -1
  31. package/dist/components/pagination.js +1 -1
  32. package/dist/components/popover.js +1 -1
  33. package/dist/components/radio.js +1 -1
  34. package/dist/components/select.js +1 -1
  35. package/dist/components/sensitive-input.js +1 -1
  36. package/dist/components/switch.js +1 -1
  37. package/dist/components/table.js +1 -1
  38. package/dist/components/tabs.js +1 -1
  39. package/dist/components/toast.js +2 -2
  40. package/dist/components/tooltip.js +1 -1
  41. package/dist/{dialog-B2EHaSoL.js → dialog-C4BIM-74.js} +6 -6
  42. package/dist/{dialog-B2EHaSoL.js.map → dialog-C4BIM-74.js.map} +1 -1
  43. package/dist/dropdown-CfS4QcSR.js +295 -0
  44. package/dist/dropdown-CfS4QcSR.js.map +1 -0
  45. package/dist/{field-Bkh5pJay.js → field-B8xISAuX.js} +5 -5
  46. package/dist/{field-Bkh5pJay.js.map → field-B8xISAuX.js.map} +1 -1
  47. package/dist/index.js +27 -27
  48. package/dist/{input-DjItb3_k.js → input-DCzpefuq.js} +3 -3
  49. package/dist/{input-DjItb3_k.js.map → input-DCzpefuq.js.map} +1 -1
  50. package/dist/{input-area-BcidmGaO.js → input-area-DCaAN9nG.js} +3 -3
  51. package/dist/{input-area-BcidmGaO.js.map → input-area-DCaAN9nG.js.map} +1 -1
  52. package/dist/{input-group-CMAvOKIV.js → input-group-BbaVpJnA.js} +2 -2
  53. package/dist/{input-group-CMAvOKIV.js.map → input-group-BbaVpJnA.js.map} +1 -1
  54. package/dist/{label-Cjpb7l1F.js → label-Cd6nCDWj.js} +2 -2
  55. package/dist/{label-Cjpb7l1F.js.map → label-Cd6nCDWj.js.map} +1 -1
  56. package/dist/{link-DUqZGMVk.js → link-DJq9RWpK.js} +11 -11
  57. package/dist/{link-DUqZGMVk.js.map → link-DJq9RWpK.js.map} +1 -1
  58. package/dist/{menubar-bgBP3EJi.js → menubar-Chchzst0.js} +2 -2
  59. package/dist/{menubar-bgBP3EJi.js.map → menubar-Chchzst0.js.map} +1 -1
  60. package/dist/{meter-BziPAH9D.js → meter-Wk7_EhaO.js} +4 -4
  61. package/dist/{meter-BziPAH9D.js.map → meter-Wk7_EhaO.js.map} +1 -1
  62. package/dist/pagination-DFHoZwPJ.js +208 -0
  63. package/dist/pagination-DFHoZwPJ.js.map +1 -0
  64. package/dist/{popover-C2w2uRlu.js → popover-D20xpmdk.js} +22 -20
  65. package/dist/{popover-C2w2uRlu.js.map → popover-D20xpmdk.js.map} +1 -1
  66. package/dist/primitives/accordion.js +1 -1
  67. package/dist/primitives/alert-dialog.js +1 -1
  68. package/dist/primitives/autocomplete.js +1 -1
  69. package/dist/primitives/avatar.js +1 -1
  70. package/dist/primitives/button.js +1 -1
  71. package/dist/primitives/checkbox-group.js +1 -1
  72. package/dist/primitives/checkbox.js +1 -1
  73. package/dist/primitives/collapsible.js +1 -1
  74. package/dist/primitives/combobox.js +1 -1
  75. package/dist/primitives/context-menu.js +1 -1
  76. package/dist/primitives/csp-provider.js +6 -0
  77. package/dist/primitives/csp-provider.js.map +1 -0
  78. package/dist/primitives/dialog.js +1 -1
  79. package/dist/primitives/direction-provider.js +1 -1
  80. package/dist/primitives/drawer.js +6 -0
  81. package/dist/primitives/drawer.js.map +1 -0
  82. package/dist/primitives/field.js +1 -1
  83. package/dist/primitives/fieldset.js +2 -2
  84. package/dist/primitives/form.js +1 -1
  85. package/dist/primitives/input.js +1 -1
  86. package/dist/primitives/menu.js +1 -1
  87. package/dist/primitives/menubar.js +1 -1
  88. package/dist/primitives/meter.js +1 -1
  89. package/dist/primitives/navigation-menu.js +2 -2
  90. package/dist/primitives/number-field.js +1 -1
  91. package/dist/primitives/popover.js +1 -1
  92. package/dist/primitives/preview-card.js +2 -2
  93. package/dist/primitives/progress.js +2 -2
  94. package/dist/primitives/radio-group.js +1 -1
  95. package/dist/primitives/radio.js +2 -2
  96. package/dist/primitives/scroll-area.js +1 -1
  97. package/dist/primitives/select.js +1 -1
  98. package/dist/primitives/separator.js +1 -1
  99. package/dist/primitives/slider.js +1 -1
  100. package/dist/primitives/switch.js +1 -1
  101. package/dist/primitives/tabs.js +1 -1
  102. package/dist/primitives/toast.js +1 -1
  103. package/dist/primitives/toggle-group.js +1 -1
  104. package/dist/primitives/toggle.js +1 -1
  105. package/dist/primitives/toolbar.js +1 -1
  106. package/dist/primitives/tooltip.js +1 -1
  107. package/dist/primitives.js +31 -29
  108. package/dist/{radio-B8Jk1PFe.js → radio-ibVa4Y8a.js} +18 -18
  109. package/dist/{radio-B8Jk1PFe.js.map → radio-ibVa4Y8a.js.map} +1 -1
  110. package/dist/{schemas-DKFFjjzb.js → schemas-CdpAeJKO.js} +183 -183
  111. package/dist/{schemas-DKFFjjzb.js.map → schemas-CdpAeJKO.js.map} +1 -1
  112. package/dist/{select-BWTULnCR.js → select-DtcT1zGm.js} +21 -21
  113. package/dist/{select-BWTULnCR.js.map → select-DtcT1zGm.js.map} +1 -1
  114. package/dist/{sensitive-input-CgjTfZLO.js → sensitive-input-DHDRZRC7.js} +4 -4
  115. package/dist/{sensitive-input-CgjTfZLO.js.map → sensitive-input-DHDRZRC7.js.map} +1 -1
  116. package/dist/src/components/dropdown/dropdown.d.ts +26 -16
  117. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  118. package/dist/src/components/flow/connectors.d.ts +3 -1
  119. package/dist/src/components/flow/connectors.d.ts.map +1 -1
  120. package/dist/src/components/flow/diagram.d.ts +1 -0
  121. package/dist/src/components/flow/diagram.d.ts.map +1 -1
  122. package/dist/src/components/flow/node.d.ts +5 -1
  123. package/dist/src/components/flow/node.d.ts.map +1 -1
  124. package/dist/src/components/flow/parallel.d.ts +10 -2
  125. package/dist/src/components/flow/parallel.d.ts.map +1 -1
  126. package/dist/src/components/pagination/pagination.d.ts +134 -13
  127. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  128. package/dist/src/components/popover/popover.d.ts +7 -1
  129. package/dist/src/components/popover/popover.d.ts.map +1 -1
  130. package/dist/src/components/toast/toast.d.ts +4 -4
  131. package/dist/src/components/toast/toast.d.ts.map +1 -1
  132. package/dist/src/components/tooltip/tooltip.d.ts +1 -1
  133. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  134. package/dist/src/primitives/csp-provider.d.ts +13 -0
  135. package/dist/src/primitives/csp-provider.d.ts.map +1 -0
  136. package/dist/src/primitives/drawer.d.ts +13 -0
  137. package/dist/src/primitives/drawer.d.ts.map +1 -0
  138. package/dist/src/primitives/index.d.ts +2 -0
  139. package/dist/src/primitives/index.d.ts.map +1 -1
  140. package/dist/styles/kumo-standalone.css +1 -1
  141. package/dist/{switch-DdjM7eh6.js → switch-DrbaX2iC.js} +15 -15
  142. package/dist/{switch-DdjM7eh6.js.map → switch-DrbaX2iC.js.map} +1 -1
  143. package/dist/{table-D1EXUDHL.js → table-CH9KC36S.js} +2 -2
  144. package/dist/{table-D1EXUDHL.js.map → table-CH9KC36S.js.map} +1 -1
  145. package/dist/{tabs-Bs43O3E4.js → tabs-B-Fxc6Zo.js} +2 -2
  146. package/dist/{tabs-Bs43O3E4.js.map → tabs-B-Fxc6Zo.js.map} +1 -1
  147. package/dist/{toast-BqZw7a2p.js → toast-DUYp3EtH.js} +6 -6
  148. package/dist/{toast-BqZw7a2p.js.map → toast-DUYp3EtH.js.map} +1 -1
  149. package/dist/{tooltip-BwOFPK5h.js → tooltip-D-KwZQDV.js} +2 -2
  150. package/dist/{tooltip-BwOFPK5h.js.map → tooltip-D-KwZQDV.js.map} +1 -1
  151. package/dist/vendor-base-ui-Bsg5ebHI.js +22806 -0
  152. package/dist/vendor-base-ui-Bsg5ebHI.js.map +1 -0
  153. package/dist/{vendor-utils-DD8jNJwD.js → vendor-utils-DKXfkDYu.js} +100 -101
  154. package/dist/vendor-utils-DKXfkDYu.js.map +1 -0
  155. package/package.json +10 -2
  156. package/dist/dropdown-mGDt95gv.js +0 -263
  157. package/dist/dropdown-mGDt95gv.js.map +0 -1
  158. package/dist/pagination-dNzgZRjV.js +0 -100
  159. package/dist/pagination-dNzgZRjV.js.map +0 -1
  160. package/dist/vendor-base-ui-B61LL9jT.js +0 -20448
  161. package/dist/vendor-base-ui-B61LL9jT.js.map +0 -1
  162. package/dist/vendor-utils-DD8jNJwD.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # @cloudflare/kumo
2
2
 
3
+ ## 1.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 23865db: feat(dropdown): add LinkItem for navigation links and fix icon rendering
8
+
9
+ **New Features:**
10
+ - Add `DropdownMenu.LinkItem` for navigation links (semantic `<a>` element with proper menu item behavior)
11
+ - Upgrade `@base-ui/react` from 1.0.0 to 1.2.0
12
+ - Add new primitives: `csp-provider` and `drawer` from Base UI 1.2.0
13
+
14
+ **Bug Fixes:**
15
+ - Fix `icon` prop not rendering on `DropdownMenu.Item` when no `href` is provided
16
+
17
+ **Deprecations:**
18
+ - `href` prop on `DropdownMenu.Item` is deprecated. Use `DropdownMenu.LinkItem` instead.
19
+
20
+ **Migration:**
21
+
22
+ ```tsx
23
+ // Before (deprecated)
24
+ <DropdownMenu.Item href="https://example.com">Link</DropdownMenu.Item>
25
+
26
+ // After (recommended)
27
+ <DropdownMenu.LinkItem href="https://example.com" target="_blank">
28
+ Link
29
+ </DropdownMenu.LinkItem>
30
+ ```
31
+
32
+ `DropdownMenu.LinkItem` gives you full control over link attributes (`target`, `rel`, etc.) without the component making assumptions about your intent.
33
+
34
+ - 68c2f0d: Add `positionMethod` prop to `Popover.Content` to control CSS positioning strategy. Use `"fixed"` when the popover needs to escape stacking contexts (e.g., inside sticky headers). Defaults to `"absolute"`.
35
+
36
+ ### Patch Changes
37
+
38
+ - 89cb5ec: Improve Flow diagram components with disabled node support and better connector rendering:
39
+ - Add `disabled` prop to FlowNode for greying out connectors
40
+ - Add `align` prop to FlowParallelNode for start/end alignment
41
+ - Improve connector path rendering with smarter junction detection
42
+ - Fix panning behavior to not interfere with node interactions
43
+
3
44
  ## 1.8.0
4
45
 
5
46
  ### Minor Changes
@@ -2558,7 +2558,7 @@
2558
2558
  "DropdownMenu": {
2559
2559
  "name": "DropdownMenu",
2560
2560
  "type": "component",
2561
- "description": "DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.",
2561
+ "description": "DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.LinkItem`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.",
2562
2562
  "importPath": "@cloudflare/kumo",
2563
2563
  "category": "Overlay",
2564
2564
  "props": {
@@ -2631,6 +2631,11 @@
2631
2631
  "description": "Item sub-component",
2632
2632
  "props": {}
2633
2633
  },
2634
+ "LinkItem": {
2635
+ "name": "LinkItem",
2636
+ "description": "LinkItem sub-component",
2637
+ "props": {}
2638
+ },
2634
2639
  "CheckboxItem": {
2635
2640
  "name": "CheckboxItem",
2636
2641
  "description": "CheckboxItem sub-component",
@@ -3451,23 +3456,10 @@
3451
3456
  "Pagination": {
3452
3457
  "name": "Pagination",
3453
3458
  "type": "component",
3454
- "description": "Page navigation controls with page count display.",
3459
+ "description": "Pagination component",
3455
3460
  "importPath": "@cloudflare/kumo",
3456
3461
  "category": "Navigation",
3457
3462
  "props": {
3458
- "controls": {
3459
- "type": "enum",
3460
- "optional": true,
3461
- "values": [
3462
- "full",
3463
- "simple"
3464
- ],
3465
- "descriptions": {
3466
- "full": "Full pagination controls with first, previous, page input, next, and last buttons",
3467
- "simple": "Simple pagination controls with only previous and next buttons"
3468
- },
3469
- "default": "full"
3470
- },
3471
3463
  "setPage": {
3472
3464
  "type": "(page: number) => void",
3473
3465
  "required": true,
@@ -3488,10 +3480,32 @@
3488
3480
  "optional": true,
3489
3481
  "description": "Total number of items across all pages."
3490
3482
  },
3483
+ "className": {
3484
+ "type": "string",
3485
+ "optional": true,
3486
+ "description": "Additional CSS classes for the container"
3487
+ },
3488
+ "children": {
3489
+ "type": "ReactNode",
3490
+ "optional": true,
3491
+ "description": "Compound component children for custom layouts. Use Pagination.Info, Pagination.PageSize, Pagination.Controls, and Pagination.Separator."
3492
+ },
3493
+ "controls": {
3494
+ "type": "enum",
3495
+ "optional": true,
3496
+ "values": [
3497
+ "full",
3498
+ "simple"
3499
+ ],
3500
+ "descriptions": {
3501
+ "full": "Full pagination controls with first, previous, page input, next, and last buttons",
3502
+ "simple": "Simple pagination controls with only previous and next buttons"
3503
+ },
3504
+ "default": "full"
3505
+ },
3491
3506
  "text": {
3492
3507
  "type": "object",
3493
- "optional": true,
3494
- "description": "Method to provide custom pagination text"
3508
+ "optional": true
3495
3509
  }
3496
3510
  },
3497
3511
  "examples": [
@@ -3500,11 +3514,86 @@
3500
3514
  "<Pagination\n page={page}\n setPage={setPage}\n perPage={10}\n totalCount={100}\n controls=\"full\"\n />",
3501
3515
  "<Pagination page={page} setPage={setPage} perPage={10} totalCount={100} />",
3502
3516
  "<Pagination page={page} setPage={setPage} perPage={25} totalCount={1250} />",
3503
- "<Pagination\n text={({ perPage }) => `Page ${page} - showing ${perPage} per page`}\n page={page}\n setPage={setPage}\n perPage={25}\n totalCount={100}\n />"
3517
+ "<Pagination\n text={({ perPage }: { perPage?: number }) =>\n `Page ${page} - showing ${perPage} per page`\n }\n page={page}\n setPage={setPage}\n perPage={25}\n totalCount={100}\n />",
3518
+ "<Pagination\n page={page}\n setPage={setPage}\n perPage={perPage}\n totalCount={500}\n >\n <Pagination.Info />\n <Pagination.Separator />\n <Pagination.PageSize\n value={perPage}\n onChange={(size) => {\n setPerPage(size);\n setPage(1);\n }}\n />\n <Pagination.Controls />\n </Pagination>",
3519
+ "<Pagination\n page={page}\n setPage={setPage}\n perPage={perPage}\n totalCount={200}\n >\n <Pagination.Info />\n <Pagination.Separator />\n <Pagination.PageSize\n value={perPage}\n onChange={(size) => {\n setPerPage(size);\n setPage(1);\n }}\n options={[10, 20, 50]}\n />\n <Pagination.Controls />\n </Pagination>",
3520
+ "<Pagination page={page} setPage={setPage} perPage={25} totalCount={100}>\n <Pagination.Info>\n {({ page, totalCount }) =>\n `Page ${page} of ${Math.ceil((totalCount ?? 1) / 25)}`\n }\n </Pagination.Info>\n <Pagination.Controls />\n </Pagination>",
3521
+ "<Pagination\n page={page}\n setPage={setPage}\n perPage={perPage}\n totalCount={500}\n >\n <Pagination.Info />\n <div className=\"flex items-center gap-2\">\n <Pagination.Controls />\n <Pagination.Separator />\n <Pagination.PageSize\n value={perPage}\n onChange={(size) => {\n setPerPage(size);\n setPage(1);\n }}\n />\n </div>\n </Pagination>"
3504
3522
  ],
3505
3523
  "colors": [
3524
+ "border-kumo-line",
3506
3525
  "text-kumo-strong"
3507
3526
  ],
3527
+ "subComponents": {
3528
+ "Info": {
3529
+ "name": "Info",
3530
+ "description": "Info sub-component",
3531
+ "props": {
3532
+ "children": {
3533
+ "type": "(props: {",
3534
+ "optional": true
3535
+ },
3536
+ "page": {
3537
+ "type": "number",
3538
+ "required": true
3539
+ },
3540
+ "perPage": {
3541
+ "type": "number",
3542
+ "optional": true
3543
+ },
3544
+ "totalCount": {
3545
+ "type": "number",
3546
+ "optional": true
3547
+ },
3548
+ "pageShowingRange": {
3549
+ "type": "string",
3550
+ "required": true
3551
+ }
3552
+ }
3553
+ },
3554
+ "PageSize": {
3555
+ "name": "PageSize",
3556
+ "description": "PageSize sub-component",
3557
+ "props": {
3558
+ "value": {
3559
+ "type": "number",
3560
+ "required": true
3561
+ },
3562
+ "options": {
3563
+ "type": "number[]",
3564
+ "optional": true
3565
+ },
3566
+ "label": {
3567
+ "type": "ReactNode",
3568
+ "optional": true
3569
+ },
3570
+ "className": {
3571
+ "type": "string",
3572
+ "optional": true
3573
+ }
3574
+ }
3575
+ },
3576
+ "Controls": {
3577
+ "name": "Controls",
3578
+ "description": "Controls sub-component",
3579
+ "props": {
3580
+ "className": {
3581
+ "type": "string",
3582
+ "optional": true
3583
+ }
3584
+ }
3585
+ },
3586
+ "Separator": {
3587
+ "name": "Separator",
3588
+ "description": "Separator sub-component",
3589
+ "props": {
3590
+ "className": {
3591
+ "type": "string",
3592
+ "optional": true
3593
+ }
3594
+ }
3595
+ }
3596
+ },
3508
3597
  "styling": {
3509
3598
  "layout": {
3510
3599
  "height": 36,
@@ -4565,43 +4654,29 @@
4565
4654
  "importPath": "@cloudflare/kumo",
4566
4655
  "category": "Overlay",
4567
4656
  "props": {
4568
- "align": {
4569
- "type": "enum",
4570
- "optional": true,
4571
- "description": "Alignment on the axis perpendicular to `side`.\n- `\"start\"` — Align to the start edge\n- `\"center\"` — Center-aligned\n- `\"end\"` — Align to the end edge",
4572
- "values": [
4573
- "start",
4574
- "center",
4575
- "end"
4576
- ]
4577
- },
4578
- "asChild": {
4579
- "type": "boolean",
4580
- "optional": true,
4581
- "description": "When `true`, the trigger wraps the child element instead of adding a wrapper."
4582
- },
4583
- "className": {
4584
- "type": "string",
4585
- "optional": true,
4586
- "description": "Additional CSS classes merged via `cn()`."
4587
- },
4588
4657
  "side": {
4589
4658
  "type": "enum",
4590
- "optional": true,
4591
- "description": "Preferred side of the trigger to render the tooltip.\n- `\"top\"` — Tooltip appears above the trigger\n- `\"bottom\"` — Tooltip appears below the trigger\n- `\"left\"` — Tooltip appears to the left of the trigger\n- `\"right\"` — Tooltip appears to the right of the trigger",
4592
4659
  "values": [
4593
4660
  "top",
4594
4661
  "bottom",
4595
4662
  "left",
4596
4663
  "right"
4597
4664
  ],
4665
+ "default": "top",
4598
4666
  "descriptions": {
4599
4667
  "top": "Tooltip appears above the trigger",
4600
4668
  "bottom": "Tooltip appears below the trigger",
4601
4669
  "left": "Tooltip appears to the left of the trigger",
4602
4670
  "right": "Tooltip appears to the right of the trigger"
4603
- },
4604
- "default": "top"
4671
+ }
4672
+ },
4673
+ "className": {
4674
+ "type": "string",
4675
+ "description": "Additional CSS classes"
4676
+ },
4677
+ "children": {
4678
+ "type": "ReactNode",
4679
+ "description": "Child elements"
4605
4680
  },
4606
4681
  "content": {
4607
4682
  "type": "ReactNode",
@@ -2201,7 +2201,7 @@ Close sub-component
2201
2201
 
2202
2202
  ### DropdownMenu
2203
2203
 
2204
- DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.
2204
+ DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.LinkItem`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.
2205
2205
 
2206
2206
  **Type:** component
2207
2207
 
@@ -2251,6 +2251,10 @@ Content sub-component
2251
2251
 
2252
2252
  Item sub-component
2253
2253
 
2254
+ #### DropdownMenu.LinkItem
2255
+
2256
+ LinkItem sub-component
2257
+
2254
2258
  #### DropdownMenu.CheckboxItem
2255
2259
 
2256
2260
  CheckboxItem sub-component
@@ -3295,7 +3299,7 @@ Progress bar showing a measured value within a known range (e.g. quota usage).
3295
3299
 
3296
3300
  ### Pagination
3297
3301
 
3298
- Page navigation controls with page count display.
3302
+ Pagination component
3299
3303
 
3300
3304
  **Type:** component
3301
3305
 
@@ -3305,9 +3309,6 @@ Page navigation controls with page count display.
3305
3309
 
3306
3310
  **Props:**
3307
3311
 
3308
- - `controls`: enum [default: full]
3309
- - `"full"`: Full pagination controls with first, previous, page input, next, and last buttons
3310
- - `"simple"`: Simple pagination controls with only previous and next buttons
3311
3312
  - `setPage`: (page: number) => void (required)
3312
3313
  Callback when page changes
3313
3314
  - `page`: number
@@ -3316,16 +3317,62 @@ Page navigation controls with page count display.
3316
3317
  Number of items displayed per page.
3317
3318
  - `totalCount`: number
3318
3319
  Total number of items across all pages.
3320
+ - `className`: string
3321
+ Additional CSS classes for the container
3322
+ - `children`: ReactNode
3323
+ Compound component children for custom layouts. Use Pagination.Info, Pagination.PageSize, Pagination.Controls, and Pagination.Separator.
3324
+ - `controls`: enum [default: full]
3325
+ - `"full"`: Full pagination controls with first, previous, page input, next, and last buttons
3326
+ - `"simple"`: Simple pagination controls with only previous and next buttons
3319
3327
  - `text`: object
3320
- Method to provide custom pagination text
3321
3328
 
3322
3329
  **Colors (kumo tokens used):**
3323
3330
 
3324
- `text-kumo-strong`
3331
+ `border-kumo-line`, `text-kumo-strong`
3325
3332
 
3326
3333
  **Styling:**
3327
3334
 
3328
3335
 
3336
+ **Sub-Components:**
3337
+
3338
+ This is a compound component. Use these sub-components:
3339
+
3340
+ #### Pagination.Info
3341
+
3342
+ Info sub-component
3343
+
3344
+ Props:
3345
+ - `children`: (props: {
3346
+ - `page`: number (required)
3347
+ - `perPage`: number
3348
+ - `totalCount`: number
3349
+ - `pageShowingRange`: string (required)
3350
+
3351
+ #### Pagination.PageSize
3352
+
3353
+ PageSize sub-component
3354
+
3355
+ Props:
3356
+ - `value`: number (required)
3357
+ - `options`: number[]
3358
+ - `label`: ReactNode
3359
+ - `className`: string
3360
+
3361
+ #### Pagination.Controls
3362
+
3363
+ Controls sub-component
3364
+
3365
+ Props:
3366
+ - `className`: string
3367
+
3368
+ #### Pagination.Separator
3369
+
3370
+ Separator sub-component
3371
+
3372
+ Props:
3373
+ - `className`: string
3374
+
3375
+
3329
3376
  **Examples:**
3330
3377
 
3331
3378
  ```tsx
@@ -3344,7 +3391,9 @@ Page navigation controls with page count display.
3344
3391
 
3345
3392
  ```tsx
3346
3393
  <Pagination
3347
- text={({ perPage }) => `Page ${page} - showing ${perPage} per page`}
3394
+ text={({ perPage }: { perPage?: number }) =>
3395
+ `Page ${page} - showing ${perPage} per page`
3396
+ }
3348
3397
  page={page}
3349
3398
  setPage={setPage}
3350
3399
  perPage={25}
@@ -3352,6 +3401,69 @@ Page navigation controls with page count display.
3352
3401
  />
3353
3402
  ```
3354
3403
 
3404
+ ```tsx
3405
+ <Pagination
3406
+ page={page}
3407
+ setPage={setPage}
3408
+ perPage={perPage}
3409
+ totalCount={500}
3410
+ >
3411
+ <Pagination.Info />
3412
+ <Pagination.Separator />
3413
+ <Pagination.PageSize
3414
+ value={perPage}
3415
+ onChange={(size) => {
3416
+ setPerPage(size);
3417
+ setPage(1);
3418
+ }}
3419
+ />
3420
+ <Pagination.Controls />
3421
+ </Pagination>
3422
+ ```
3423
+
3424
+ ```tsx
3425
+ <Pagination
3426
+ page={page}
3427
+ setPage={setPage}
3428
+ perPage={perPage}
3429
+ totalCount={200}
3430
+ >
3431
+ <Pagination.Info />
3432
+ <Pagination.Separator />
3433
+ <Pagination.PageSize
3434
+ value={perPage}
3435
+ onChange={(size) => {
3436
+ setPerPage(size);
3437
+ setPage(1);
3438
+ }}
3439
+ options={[10, 20, 50]}
3440
+ />
3441
+ <Pagination.Controls />
3442
+ </Pagination>
3443
+ ```
3444
+
3445
+ ```tsx
3446
+ <Pagination
3447
+ page={page}
3448
+ setPage={setPage}
3449
+ perPage={perPage}
3450
+ totalCount={500}
3451
+ >
3452
+ <Pagination.Info />
3453
+ <div className="flex items-center gap-2">
3454
+ <Pagination.Controls />
3455
+ <Pagination.Separator />
3456
+ <Pagination.PageSize
3457
+ value={perPage}
3458
+ onChange={(size) => {
3459
+ setPerPage(size);
3460
+ setPage(1);
3461
+ }}
3462
+ />
3463
+ </div>
3464
+ </Pagination>
3465
+ ```
3466
+
3355
3467
 
3356
3468
  ---
3357
3469
 
@@ -4681,20 +4793,15 @@ Accessible popup that shows additional information on hover/focus. Wrap your app
4681
4793
 
4682
4794
  **Props:**
4683
4795
 
4684
- - `align`: enum
4685
- Alignment on the axis perpendicular to `side`.
4686
- - `"start"` — Align to the start edge
4687
- - `"center"` — Center-aligned
4688
- - `"end"` — Align to the end edge
4689
- - `asChild`: boolean
4690
- When `true`, the trigger wraps the child element instead of adding a wrapper.
4691
- - `className`: string
4692
- Additional CSS classes merged via `cn()`.
4693
4796
  - `side`: enum [default: top]
4694
4797
  - `"top"`: Tooltip appears above the trigger
4695
4798
  - `"bottom"`: Tooltip appears below the trigger
4696
4799
  - `"left"`: Tooltip appears to the left of the trigger
4697
4800
  - `"right"`: Tooltip appears to the right of the trigger
4801
+ - `className`: string
4802
+ Additional CSS classes
4803
+ - `children`: ReactNode
4804
+ Child elements
4698
4805
  - `content`: ReactNode (required)
4699
4806
  Content to display in the tooltip
4700
4807
 
package/ai/schemas.ts CHANGED
@@ -587,12 +587,14 @@ export const MeterPropsSchema = z.object({
587
587
  });
588
588
 
589
589
  export const PaginationPropsSchema = z.object({
590
- controls: z.enum(["full", "simple"]).optional(),
591
590
  setPage: z.unknown(), // Callback when page changes
592
591
  page: z.number().optional(), // Current page number (1-indexed).
593
592
  perPage: z.number().optional(), // Number of items displayed per page.
594
593
  totalCount: z.number().optional(), // Total number of items across all pages.
595
- text: z.unknown().optional(), // Method to provide custom pagination text
594
+ className: z.string().optional(), // Additional CSS classes for the container
595
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Compound component children for custom layouts. Use Pagination.Info, Pagination.PageSize, Pagination.Controls, and Pagination.Separator.
596
+ controls: z.enum(["full", "simple"]).optional(),
597
+ text: z.unknown().optional(),
596
598
  });
597
599
 
598
600
  export const PopoverPropsSchema = z.object({
@@ -715,10 +717,9 @@ export const ToastyPropsSchema = z.object({
715
717
  });
716
718
 
717
719
  export const TooltipPropsSchema = z.object({
718
- align: z.enum(["start", "center", "end"]).optional(), // Alignment on the axis perpendicular to `side`. - `"start"` — Align to the start edge - `"center"` — Center-aligned - `"end"` — Align to the end edge
719
- asChild: z.boolean().optional(), // When `true`, the trigger wraps the child element instead of adding a wrapper.
720
- className: z.string().optional(), // Additional CSS classes merged via `cn()`.
721
- side: z.enum(["top", "bottom", "left", "right"]).optional(), // Preferred side of the trigger to render the tooltip. - `"top"` — Tooltip appears above the trigger - `"bottom"` — Tooltip appears below the trigger - `"left"` — Tooltip appears to the left of the trigger - `"right"` — Tooltip appears to the right of the trigger
720
+ side: z.enum(["top", "bottom", "left", "right"]).optional(),
721
+ className: z.string().optional(), // Additional CSS classes
722
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
722
723
  content: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]), // Content to display in the tooltip
723
724
  });
724
725
 
@@ -1 +1 @@
1
- 1771946430289
1
+ 1772046030470