@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
@@ -1,100 +0,0 @@
1
- "use client";
2
- import { jsxs as h, jsx as n } from "react/jsx-runtime";
3
- import { useState as N, useEffect as x, useMemo as b } from "react";
4
- import { I as s } from "./input-group-CMAvOKIV.js";
5
- import { CaretDoubleLeftIcon as v, CaretLeftIcon as I, CaretRightIcon as M, CaretDoubleRightIcon as g } from "@phosphor-icons/react";
6
- const w = {
7
- controls: "full"
8
- };
9
- function z({
10
- page: i = 1,
11
- perPage: t,
12
- totalCount: r,
13
- setPage: o,
14
- text: d,
15
- controls: c = w.controls
16
- }) {
17
- const [m, a] = N(1);
18
- x(() => {
19
- a(i);
20
- }, [i]);
21
- const f = b(() => {
22
- let e = i * (t ?? 1) - (t ?? 0) + 1, u = Math.min(i * (t ?? 0), r ?? 0);
23
- return Number.isNaN(e) && (e = 0), Number.isNaN(u) && (u = 0), `${e}-${u}`;
24
- }, [i, t, r]), l = b(() => Math.ceil((r ?? 1) / (t ?? 1)), [r, t]);
25
- return /* @__PURE__ */ h("div", { className: "flex items-center justify-between gap-2", children: [
26
- /* @__PURE__ */ n("div", { className: "grow text-sm text-kumo-strong", children: d ? d({ page: i, perPage: t, totalCount: r, pageShowingRange: f }) : r && r > 0 ? `Showing ${f} of ${r}` : null }),
27
- /* @__PURE__ */ n("div", { children: /* @__PURE__ */ h(s, { focusMode: "individual", children: [
28
- c === "full" && /* @__PURE__ */ n(
29
- s.Button,
30
- {
31
- variant: "secondary",
32
- "aria-label": "First page",
33
- disabled: i <= 1,
34
- onClick: () => {
35
- o(1), a(1);
36
- },
37
- children: /* @__PURE__ */ n(v, { size: 16 })
38
- }
39
- ),
40
- /* @__PURE__ */ n(
41
- s.Button,
42
- {
43
- variant: "secondary",
44
- "aria-label": "Previous page",
45
- disabled: i <= 1,
46
- onClick: () => {
47
- const e = Math.max(i - 1, 1);
48
- o(e), a(e);
49
- },
50
- children: /* @__PURE__ */ n(I, { size: 16 })
51
- }
52
- ),
53
- c === "full" && /* @__PURE__ */ n(
54
- s.Input,
55
- {
56
- style: { width: 50 },
57
- className: "text-center",
58
- "aria-label": "Page number",
59
- value: m,
60
- onValueChange: (e) => {
61
- a(Number(e));
62
- },
63
- onBlur: () => {
64
- let e = Math.max(m, 1);
65
- e = Math.min(e, l), o(e), a(e);
66
- }
67
- }
68
- ),
69
- /* @__PURE__ */ n(
70
- s.Button,
71
- {
72
- variant: "secondary",
73
- "aria-label": "Next page",
74
- disabled: i === l,
75
- onClick: () => {
76
- const e = Math.min(i + 1, l);
77
- o(e), a(e);
78
- },
79
- children: /* @__PURE__ */ n(M, { size: 16 })
80
- }
81
- ),
82
- c === "full" && /* @__PURE__ */ n(
83
- s.Button,
84
- {
85
- variant: "secondary",
86
- "aria-label": "Last page",
87
- disabled: i === l,
88
- onClick: () => {
89
- o(l), a(l);
90
- },
91
- children: /* @__PURE__ */ n(g, { size: 16 })
92
- }
93
- )
94
- ] }) })
95
- ] });
96
- }
97
- export {
98
- z as P
99
- };
100
- //# sourceMappingURL=pagination-dNzgZRjV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-dNzgZRjV.js","sources":["../src/components/pagination/pagination.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { InputGroup } from \"../input\";\nimport {\n CaretDoubleLeftIcon,\n CaretDoubleRightIcon,\n CaretLeftIcon,\n CaretRightIcon,\n} from \"@phosphor-icons/react\";\nimport { cn } from \"../../utils/cn\";\n\n/** Pagination controls variant definitions. */\nexport const KUMO_PAGINATION_VARIANTS = {\n controls: {\n full: {\n classes: \"\",\n description:\n \"Full pagination controls with first, previous, page input, next, and last buttons\",\n },\n simple: {\n classes: \"\",\n description:\n \"Simple pagination controls with only previous and next buttons\",\n },\n },\n} as const;\n\nexport type KumoPaginationControls =\n keyof typeof KUMO_PAGINATION_VARIANTS.controls;\n\nexport const KUMO_PAGINATION_DEFAULT_VARIANTS = {\n controls: \"full\",\n} as const;\n\nexport interface KumoPaginationVariantsProps {\n controls?: KumoPaginationControls;\n}\n\nexport function paginationVariants({\n controls = KUMO_PAGINATION_DEFAULT_VARIANTS.controls,\n}: KumoPaginationVariantsProps = {}) {\n return cn(\n \"flex items-center justify-between gap-2\",\n KUMO_PAGINATION_VARIANTS.controls[controls].classes,\n );\n}\n\n/**\n * Pagination component props.\n *\n * @example\n * ```tsx\n * <Pagination page={page} setPage={setPage} perPage={10} totalCount={100} />\n * <Pagination page={page} setPage={setPage} perPage={10} totalCount={100} controls=\"simple\" />\n * ```\n */\nexport interface PaginationProps extends KumoPaginationVariantsProps {\n /** Callback fired when the current page changes. */\n setPage: (page: number) => void;\n /**\n * Current page number (1-indexed).\n * @default 1\n */\n page?: number;\n /** Number of items displayed per page. */\n perPage?: number;\n /** Total number of items across all pages. */\n totalCount?: number;\n /** Method to provide custom pagination text */\n text?: (props: {\n page?: number;\n perPage?: number;\n totalCount?: number;\n pageShowingRange: string;\n }) => React.ReactNode;\n}\n\n/**\n * Page navigation controls with page count display.\n *\n * @example\n * ```tsx\n * <Pagination page={page} setPage={setPage} perPage={10} totalCount={100} />\n * ```\n */\nexport function Pagination({\n page = 1,\n perPage,\n totalCount,\n setPage,\n text,\n controls = KUMO_PAGINATION_DEFAULT_VARIANTS.controls,\n}: PaginationProps) {\n const [editingPage, setEditingPage] = useState<number>(1);\n\n // Value of the input as its being modified to display in the input, eventually syncs with `pagination.page`\n useEffect(() => {\n setEditingPage(page);\n }, [page]);\n\n const pageShowingRange = useMemo(() => {\n let lower = page * (perPage ?? 1) - (perPage ?? 0) + 1;\n let upper = Math.min(page * (perPage ?? 0), totalCount ?? 0);\n\n if (Number.isNaN(lower)) lower = 0;\n if (Number.isNaN(upper)) upper = 0;\n\n return `${lower}-${upper}`;\n }, [page, perPage, totalCount]);\n\n const maxPage = useMemo(() => {\n return Math.ceil((totalCount ?? 1) / (perPage ?? 1));\n }, [totalCount, perPage]);\n\n const getPaginationText = () => {\n if (text) {\n return text({ page, perPage, totalCount, pageShowingRange });\n } else if (totalCount && totalCount > 0) {\n return `Showing ${pageShowingRange} of ${totalCount}`;\n }\n return null;\n };\n\n return (\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"grow text-sm text-kumo-strong\">{getPaginationText()}</div>\n <div>\n <InputGroup focusMode=\"individual\">\n {controls === \"full\" && (\n <InputGroup.Button\n variant=\"secondary\"\n aria-label=\"First page\"\n disabled={page <= 1}\n onClick={() => {\n setPage(1);\n setEditingPage(1);\n }}\n >\n <CaretDoubleLeftIcon size={16} />\n </InputGroup.Button>\n )}\n <InputGroup.Button\n variant=\"secondary\"\n aria-label=\"Previous page\"\n disabled={page <= 1}\n onClick={() => {\n const previousPage = Math.max(page - 1, 1);\n setPage(previousPage);\n setEditingPage(previousPage);\n }}\n >\n <CaretLeftIcon size={16} />\n </InputGroup.Button>\n {controls === \"full\" && (\n <InputGroup.Input\n style={{ width: 50 }}\n className=\"text-center\"\n aria-label=\"Page number\"\n value={editingPage}\n onValueChange={(value: string) => {\n setEditingPage(Number(value));\n }}\n onBlur={() => {\n let number = Math.max(editingPage, 1);\n number = Math.min(number, maxPage);\n setPage(number);\n setEditingPage(number);\n }}\n />\n )}\n <InputGroup.Button\n variant=\"secondary\"\n aria-label=\"Next page\"\n disabled={page === maxPage}\n onClick={() => {\n const nextPage = Math.min(page + 1, maxPage);\n setPage(nextPage);\n setEditingPage(nextPage);\n }}\n >\n <CaretRightIcon size={16} />\n </InputGroup.Button>\n {controls === \"full\" && (\n <InputGroup.Button\n variant=\"secondary\"\n aria-label=\"Last page\"\n disabled={page === maxPage}\n onClick={() => {\n setPage(maxPage);\n setEditingPage(maxPage);\n }}\n >\n <CaretDoubleRightIcon size={16} />\n </InputGroup.Button>\n )}\n </InputGroup>\n </div>\n </div>\n );\n}\n"],"names":["KUMO_PAGINATION_DEFAULT_VARIANTS","Pagination","page","perPage","totalCount","setPage","text","controls","editingPage","setEditingPage","useState","useEffect","pageShowingRange","useMemo","lower","upper","maxPage","jsxs","jsx","InputGroup","CaretDoubleLeftIcon","previousPage","CaretLeftIcon","value","number","nextPage","CaretRightIcon","CaretDoubleRightIcon"],"mappings":"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"}