@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,7 +1,7 @@
1
1
  "use client";
2
- import { I as t, i as e } from "../input-DjItb3_k.js";
3
- import { I as o, T as s } from "../input-area-BcidmGaO.js";
4
- import { I as u } from "../input-group-CMAvOKIV.js";
2
+ import { I as t, i as e } from "../input-DCzpefuq.js";
3
+ import { I as o, T as s } from "../input-area-DCaAN9nG.js";
4
+ import { I as u } from "../input-group-BbaVpJnA.js";
5
5
  export {
6
6
  t as Input,
7
7
  o as InputArea,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { b as e, K as l, L as A, a as L, l as t } from "../label-Cjpb7l1F.js";
2
+ import { b as e, K as l, L as A, a as L, l as t } from "../label-Cd6nCDWj.js";
3
3
  export {
4
4
  e as KUMO_LABEL_DEFAULT_VARIANTS,
5
5
  l as KUMO_LABEL_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { a as A, K, L, l as _ } from "../link-DUqZGMVk.js";
2
+ import { a as A, K, L, l as _ } from "../link-DJq9RWpK.js";
3
3
  export {
4
4
  A as KUMO_LINK_DEFAULT_VARIANTS,
5
5
  K as KUMO_LINK_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { M as u, u as n } from "../menubar-bgBP3EJi.js";
2
+ import { M as u, u as n } from "../menubar-Chchzst0.js";
3
3
  export {
4
4
  u as MenuBar,
5
5
  n as useMenuNavigation
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { M as t } from "../meter-BziPAH9D.js";
2
+ import { M as t } from "../meter-Wk7_EhaO.js";
3
3
  export {
4
4
  t as Meter
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { P as i } from "../pagination-dNzgZRjV.js";
2
+ import { P as i } from "../pagination-DFHoZwPJ.js";
3
3
  export {
4
4
  i as Pagination
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { g as r, K as s, P, f as a, c as p, e as t, a as v, d as O, b as i } from "../popover-C2w2uRlu.js";
2
+ import { g as r, K as s, P, f as a, c as p, e as t, a as v, d as O, b as i } from "../popover-D20xpmdk.js";
3
3
  export {
4
4
  r as KUMO_POPOVER_DEFAULT_VARIANTS,
5
5
  s as KUMO_POPOVER_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { b as A, K as R, R as o, a as r, r as i } from "../radio-B8Jk1PFe.js";
2
+ import { b as A, K as R, R as o, a as r, r as i } from "../radio-ibVa4Y8a.js";
3
3
  export {
4
4
  A as KUMO_RADIO_DEFAULT_VARIANTS,
5
5
  R as KUMO_RADIO_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { S as c } from "../select-BWTULnCR.js";
2
+ import { S as c } from "../select-DtcT1zGm.js";
3
3
  export {
4
4
  c as Select
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { a as T, K as _, S as N } from "../sensitive-input-CgjTfZLO.js";
2
+ import { a as T, K as _, S as N } from "../sensitive-input-DHDRZRC7.js";
3
3
  export {
4
4
  T as KUMO_SENSITIVE_INPUT_DEFAULT_VARIANTS,
5
5
  _ as KUMO_SENSITIVE_INPUT_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { a as T, K as _, S as a } from "../switch-DdjM7eh6.js";
2
+ import { a as T, K as _, S as a } from "../switch-DrbaX2iC.js";
3
3
  export {
4
4
  T as KUMO_SWITCH_DEFAULT_VARIANTS,
5
5
  _ as KUMO_SWITCH_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { K as a, a as _, T as e } from "../table-D1EXUDHL.js";
2
+ import { K as a, a as _, T as e } from "../table-CH9KC36S.js";
3
3
  export {
4
4
  a as KUMO_TABLE_DEFAULT_VARIANTS,
5
5
  _ as KUMO_TABLE_VARIANTS,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { T as a } from "../tabs-Bs43O3E4.js";
2
+ import { T as a } from "../tabs-B-Fxc6Zo.js";
3
3
  export {
4
4
  a as Tabs
5
5
  };
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { a as s, T as e, c as r, u as t } from "../toast-BqZw7a2p.js";
3
- import { i as u } from "../vendor-base-ui-B61LL9jT.js";
2
+ import { a as s, T as e, c as r, u as t } from "../toast-DUYp3EtH.js";
3
+ import { i as u } from "../vendor-base-ui-Bsg5ebHI.js";
4
4
  export {
5
5
  u as Toast,
6
6
  s as ToastProvider,
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { T as i, a as r } from "../tooltip-BwOFPK5h.js";
2
+ import { T as i, a as r } from "../tooltip-D-KwZQDV.js";
3
3
  export {
4
4
  i as Tooltip,
5
5
  r as TooltipProvider
@@ -2,7 +2,7 @@
2
2
  import { jsx as t, jsxs as m } from "react/jsx-runtime";
3
3
  import { S as p } from "./surface-BIC6CXiz.js";
4
4
  import { c as o } from "./cn-Bhsu1vx2.js";
5
- import { am as u, an as D, ao as f, ap as y, aq as x, ar as w, as as T, at as b } from "./vendor-base-ui-B61LL9jT.js";
5
+ import { ao as u, ap as D, aq as f, ar as y, as as x, at as w, au as T, av as b } from "./vendor-base-ui-Bsg5ebHI.js";
6
6
  const N = {
7
7
  size: {
8
8
  base: {
@@ -25,7 +25,7 @@ const N = {
25
25
  }, s = {
26
26
  size: "base"
27
27
  };
28
- function A({
28
+ function v({
29
29
  size: a = s.size
30
30
  } = {}) {
31
31
  return o(
@@ -35,7 +35,7 @@ function A({
35
35
  N.size[a].classes
36
36
  );
37
37
  }
38
- function v({
38
+ function A({
39
39
  className: a,
40
40
  children: i,
41
41
  style: g,
@@ -47,7 +47,7 @@ function v({
47
47
  p,
48
48
  {
49
49
  as: b,
50
- className: o(A({ size: d }), a),
50
+ className: o(v({ size: d }), a),
51
51
  style: {
52
52
  transitionProperty: "scale, opacity",
53
53
  transitionTimingFunction: "var(--default-transition-timing-function)",
@@ -79,7 +79,7 @@ function c({ children: a, ...i }) {
79
79
  return /* @__PURE__ */ t(x, { ...i, children: a });
80
80
  }
81
81
  c.displayName = "Dialog.Close";
82
- const O = Object.assign(v, {
82
+ const O = Object.assign(A, {
83
83
  Root: e,
84
84
  Trigger: l,
85
85
  Title: n,
@@ -94,4 +94,4 @@ export {
94
94
  r as d,
95
95
  c as e
96
96
  };
97
- //# sourceMappingURL=dialog-B2EHaSoL.js.map
97
+ //# sourceMappingURL=dialog-C4BIM-74.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-B2EHaSoL.js","sources":["../src/components/dialog/dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, CSSProperties, ReactNode } from \"react\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport { Surface } from \"../surface\";\nimport { cn } from \"../../utils/cn\";\n\n/** Dialog size variant definitions mapping sizes to their minimum widths. */\nexport const KUMO_DIALOG_VARIANTS = {\n size: {\n base: {\n classes: \"sm:min-w-96\",\n description: \"Default dialog width\",\n },\n sm: {\n classes: \"min-w-72\",\n description: \"Small dialog for simple confirmations\",\n },\n lg: {\n classes: \"min-w-[32rem]\",\n description: \"Large dialog for complex content\",\n },\n xl: {\n classes: \"min-w-[48rem]\",\n description: \"Extra large dialog for detailed views\",\n },\n },\n} as const;\n\nexport const KUMO_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport const KUMO_DIALOG_STYLING = {\n dimensions: {\n sm: {\n width: 350,\n titleSize: 20,\n descSize: 16,\n padding: 16,\n gap: 8,\n buttonSize: \"sm\",\n },\n base: {\n width: 384,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n lg: {\n width: 512,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n xl: {\n width: 768,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n },\n baseTokens: {\n background: \"color-surface\",\n text: \"text-color-surface\",\n borderRadius: 12,\n shadow: \"shadow-m\",\n },\n backdrop: {\n background: \"color-surface-secondary\",\n opacity: 0.8,\n },\n header: {\n title: { fontWeight: 600, color: \"text-color-surface\" },\n closeIcon: { name: \"ph-x\", size: 20, color: \"text-color-muted\" },\n },\n description: {\n fontWeight: 400,\n color: \"text-color-muted\",\n },\n buttons: {\n primary: { background: \"color-primary\", text: \"white\" },\n secondary: { ring: \"color-border\", text: \"text-color-surface\" },\n },\n} as const;\n\n// Derived types from KUMO_DIALOG_VARIANTS\nexport type KumoDialogSize = keyof typeof KUMO_DIALOG_VARIANTS.size;\n\nexport interface KumoDialogVariantsProps {\n /**\n * Dialog width.\n * - `\"sm\"` — Small (min 288px) for simple confirmations\n * - `\"base\"` — Default (min 384px)\n * - `\"lg\"` — Large (min 512px) for complex content\n * - `\"xl\"` — Extra large (min 768px) for detailed views\n * @default \"base\"\n */\n size?: KumoDialogSize;\n}\n\nexport function dialogVariants({\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: KumoDialogVariantsProps = {}) {\n return cn(\n // Base styles\n \"shadow-m fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\",\n // Apply size from KUMO_DIALOG_VARIANTS\n KUMO_DIALOG_VARIANTS.size[size].classes,\n );\n}\n\n/**\n * Dialog component props — the modal content panel.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Open</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Confirm Action</Dialog.Title>\n * <Dialog.Description>Are you sure?</Dialog.Description>\n * <Dialog.Close render={(p) => <Button {...p}>Cancel</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nexport type DialogProps = KumoDialogVariantsProps & {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Dialog content (typically Title, Description, Close, and action buttons). */\n children: ReactNode;\n /** Inline styles. */\n style?: CSSProperties;\n};\n\n/**\n * Modal dialog overlay with backdrop. Compound component with `Dialog.Root`,\n * `Dialog.Trigger`, `Dialog.Title`, `Dialog.Description`, and `Dialog.Close`.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Delete Item</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"destructive\" {...p}>Delete</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nfunction DialogContent({\n className,\n children,\n style,\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: DialogProps) {\n return (\n <DialogBase.Portal>\n <DialogBase.Backdrop className=\"fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0\" />\n <Surface\n as={DialogBase.Popup}\n className={cn(dialogVariants({ size }), className)}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n \"--tw-shadow\":\n \"0 20px 25px -5px rgb(0 0 0 / 0.03), 0 8px 10px -6px rgb(0 0 0 / 0.03)\",\n ...style,\n } as CSSProperties\n }\n >\n {children}\n </Surface>\n </DialogBase.Portal>\n );\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ntype BaseDialogRootProps = ComponentPropsWithoutRef<typeof DialogBase.Root>;\n\nexport type DialogRootProps = BaseDialogRootProps;\n\nfunction DialogRoot({ children, ...props }: DialogRootProps) {\n return <DialogBase.Root {...props}>{children}</DialogBase.Root>;\n}\n\nDialogRoot.displayName = \"Dialog.Root\";\n\n// ============================================================================\n// Dialog Trigger\n// ============================================================================\n\ntype BaseDialogTriggerProps = ComponentPropsWithoutRef<\n typeof DialogBase.Trigger\n>;\n\nexport type DialogTriggerProps = BaseDialogTriggerProps;\n\nfunction DialogTrigger({ children, ...props }: DialogTriggerProps) {\n return <DialogBase.Trigger {...props}>{children}</DialogBase.Trigger>;\n}\n\nDialogTrigger.displayName = \"Dialog.Trigger\";\n\n// ============================================================================\n// Dialog Title\n// ============================================================================\n\ntype BaseDialogTitleProps = ComponentPropsWithoutRef<typeof DialogBase.Title>;\n\nexport type DialogTitleProps = BaseDialogTitleProps;\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return <DialogBase.Title className={className} {...props} />;\n}\n\nDialogTitle.displayName = \"Dialog.Title\";\n\n// ============================================================================\n// Dialog Description\n// ============================================================================\n\ntype BaseDialogDescriptionProps = ComponentPropsWithoutRef<\n typeof DialogBase.Description\n>;\n\nexport type DialogDescriptionProps = BaseDialogDescriptionProps;\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return <DialogBase.Description className={className} {...props} />;\n}\n\nDialogDescription.displayName = \"Dialog.Description\";\n\n// ============================================================================\n// Dialog Close\n// ============================================================================\n\ntype BaseDialogCloseProps = ComponentPropsWithoutRef<typeof DialogBase.Close>;\n\nexport type DialogCloseProps = BaseDialogCloseProps;\n\nfunction DialogClose({ children, ...props }: DialogCloseProps) {\n return <DialogBase.Close {...props}>{children}</DialogBase.Close>;\n}\n\nDialogClose.displayName = \"Dialog.Close\";\n\n// ============================================================================\n// Compound Component Export\n// ============================================================================\n\nconst Dialog = Object.assign(DialogContent, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Title: DialogTitle,\n Description: DialogDescription,\n Close: DialogClose,\n});\n\nexport {\n Dialog,\n DialogRoot,\n DialogTrigger,\n DialogTitle,\n DialogDescription,\n DialogClose,\n};\n"],"names":["KUMO_DIALOG_VARIANTS","KUMO_DIALOG_DEFAULT_VARIANTS","dialogVariants","size","cn","DialogContent","className","children","style","jsxs","DialogBase.Portal","jsx","DialogBase.Backdrop","Surface","DialogBase.Popup","DialogRoot","props","DialogBase.Root","DialogTrigger","DialogBase.Trigger","DialogTitle","DialogBase.Title","DialogDescription","DialogBase.Description","DialogClose","DialogBase.Close","Dialog"],"mappings":";;;;;AAMO,MAAMA,IAAuB;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA+B;AAAA,EAC1C,MAAM;AACR;AA4EO,SAASC,EAAe;AAAA,EAC7B,MAAAC,IAAOF,EAA6B;AACtC,IAA6B,IAAI;AAC/B,SAAOG;AAAA;AAAA,IAEL;AAAA;AAAA,IAEAJ,EAAqB,KAAKG,CAAI,EAAE;AAAA,EAAA;AAEpC;AA0CA,SAASE,EAAc;AAAA,EACrB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAL,IAAOF,EAA6B;AACtC,GAAgB;AACd,SACE,gBAAAQ,EAACC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,WAAU,iIAAA,CAAiI;AAAA,IAChK,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,IAAIC;AAAAA,QACJ,WAAWV,EAAGF,EAAe,EAAE,MAAAC,EAAA,CAAM,GAAGG,CAAS;AAAA,QACjD,OACE;AAAA,UACE,oBAAoB;AAAA,UACpB,0BACE;AAAA,UACF,eACE;AAAA,UACF,GAAGE;AAAA,QAAA;AAAA,QAIN,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AAUA,SAASQ,EAAW,EAAE,UAAAR,GAAU,GAAGS,KAA0B;AAC3D,2BAAQC,GAAA,EAAiB,GAAGD,GAAQ,UAAAT,EAAA,CAAS;AAC/C;AAEAQ,EAAW,cAAc;AAYzB,SAASG,EAAc,EAAE,UAAAX,GAAU,GAAGS,KAA6B;AACjE,2BAAQG,GAAA,EAAoB,GAAGH,GAAQ,UAAAT,EAAA,CAAS;AAClD;AAEAW,EAAc,cAAc;AAU5B,SAASE,EAAY,EAAE,WAAAd,GAAW,GAAGU,KAA2B;AAC9D,2BAAQK,GAAA,EAAiB,WAAAf,GAAuB,GAAGU,EAAA,CAAO;AAC5D;AAEAI,EAAY,cAAc;AAY1B,SAASE,EAAkB,EAAE,WAAAhB,GAAW,GAAGU,KAAiC;AAC1E,2BAAQO,GAAA,EAAuB,WAAAjB,GAAuB,GAAGU,EAAA,CAAO;AAClE;AAEAM,EAAkB,cAAc;AAUhC,SAASE,EAAY,EAAE,UAAAjB,GAAU,GAAGS,KAA2B;AAC7D,2BAAQS,GAAA,EAAkB,GAAGT,GAAQ,UAAAT,EAAA,CAAS;AAChD;AAEAiB,EAAY,cAAc;AAM1B,MAAME,IAAS,OAAO,OAAOrB,GAAe;AAAA,EAC1C,MAAMU;AAAA,EACN,SAASG;AAAA,EACT,OAAOE;AAAA,EACP,aAAaE;AAAA,EACb,OAAOE;AACT,CAAC;"}
1
+ {"version":3,"file":"dialog-C4BIM-74.js","sources":["../src/components/dialog/dialog.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, CSSProperties, ReactNode } from \"react\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport { Surface } from \"../surface\";\nimport { cn } from \"../../utils/cn\";\n\n/** Dialog size variant definitions mapping sizes to their minimum widths. */\nexport const KUMO_DIALOG_VARIANTS = {\n size: {\n base: {\n classes: \"sm:min-w-96\",\n description: \"Default dialog width\",\n },\n sm: {\n classes: \"min-w-72\",\n description: \"Small dialog for simple confirmations\",\n },\n lg: {\n classes: \"min-w-[32rem]\",\n description: \"Large dialog for complex content\",\n },\n xl: {\n classes: \"min-w-[48rem]\",\n description: \"Extra large dialog for detailed views\",\n },\n },\n} as const;\n\nexport const KUMO_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport const KUMO_DIALOG_STYLING = {\n dimensions: {\n sm: {\n width: 350,\n titleSize: 20,\n descSize: 16,\n padding: 16,\n gap: 8,\n buttonSize: \"sm\",\n },\n base: {\n width: 384,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n lg: {\n width: 512,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n xl: {\n width: 768,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n },\n baseTokens: {\n background: \"color-surface\",\n text: \"text-color-surface\",\n borderRadius: 12,\n shadow: \"shadow-m\",\n },\n backdrop: {\n background: \"color-surface-secondary\",\n opacity: 0.8,\n },\n header: {\n title: { fontWeight: 600, color: \"text-color-surface\" },\n closeIcon: { name: \"ph-x\", size: 20, color: \"text-color-muted\" },\n },\n description: {\n fontWeight: 400,\n color: \"text-color-muted\",\n },\n buttons: {\n primary: { background: \"color-primary\", text: \"white\" },\n secondary: { ring: \"color-border\", text: \"text-color-surface\" },\n },\n} as const;\n\n// Derived types from KUMO_DIALOG_VARIANTS\nexport type KumoDialogSize = keyof typeof KUMO_DIALOG_VARIANTS.size;\n\nexport interface KumoDialogVariantsProps {\n /**\n * Dialog width.\n * - `\"sm\"` — Small (min 288px) for simple confirmations\n * - `\"base\"` — Default (min 384px)\n * - `\"lg\"` — Large (min 512px) for complex content\n * - `\"xl\"` — Extra large (min 768px) for detailed views\n * @default \"base\"\n */\n size?: KumoDialogSize;\n}\n\nexport function dialogVariants({\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: KumoDialogVariantsProps = {}) {\n return cn(\n // Base styles\n \"shadow-m fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-kumo-base text-kumo-default duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\",\n // Apply size from KUMO_DIALOG_VARIANTS\n KUMO_DIALOG_VARIANTS.size[size].classes,\n );\n}\n\n/**\n * Dialog component props — the modal content panel.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Open</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Confirm Action</Dialog.Title>\n * <Dialog.Description>Are you sure?</Dialog.Description>\n * <Dialog.Close render={(p) => <Button {...p}>Cancel</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nexport type DialogProps = KumoDialogVariantsProps & {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Dialog content (typically Title, Description, Close, and action buttons). */\n children: ReactNode;\n /** Inline styles. */\n style?: CSSProperties;\n};\n\n/**\n * Modal dialog overlay with backdrop. Compound component with `Dialog.Root`,\n * `Dialog.Trigger`, `Dialog.Title`, `Dialog.Description`, and `Dialog.Close`.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Delete Item</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"destructive\" {...p}>Delete</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nfunction DialogContent({\n className,\n children,\n style,\n size = KUMO_DIALOG_DEFAULT_VARIANTS.size,\n}: DialogProps) {\n return (\n <DialogBase.Portal>\n <DialogBase.Backdrop className=\"fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0\" />\n <Surface\n as={DialogBase.Popup}\n className={cn(dialogVariants({ size }), className)}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n \"--tw-shadow\":\n \"0 20px 25px -5px rgb(0 0 0 / 0.03), 0 8px 10px -6px rgb(0 0 0 / 0.03)\",\n ...style,\n } as CSSProperties\n }\n >\n {children}\n </Surface>\n </DialogBase.Portal>\n );\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ntype BaseDialogRootProps = ComponentPropsWithoutRef<typeof DialogBase.Root>;\n\nexport type DialogRootProps = BaseDialogRootProps;\n\nfunction DialogRoot({ children, ...props }: DialogRootProps) {\n return <DialogBase.Root {...props}>{children}</DialogBase.Root>;\n}\n\nDialogRoot.displayName = \"Dialog.Root\";\n\n// ============================================================================\n// Dialog Trigger\n// ============================================================================\n\ntype BaseDialogTriggerProps = ComponentPropsWithoutRef<\n typeof DialogBase.Trigger\n>;\n\nexport type DialogTriggerProps = BaseDialogTriggerProps;\n\nfunction DialogTrigger({ children, ...props }: DialogTriggerProps) {\n return <DialogBase.Trigger {...props}>{children}</DialogBase.Trigger>;\n}\n\nDialogTrigger.displayName = \"Dialog.Trigger\";\n\n// ============================================================================\n// Dialog Title\n// ============================================================================\n\ntype BaseDialogTitleProps = ComponentPropsWithoutRef<typeof DialogBase.Title>;\n\nexport type DialogTitleProps = BaseDialogTitleProps;\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return <DialogBase.Title className={className} {...props} />;\n}\n\nDialogTitle.displayName = \"Dialog.Title\";\n\n// ============================================================================\n// Dialog Description\n// ============================================================================\n\ntype BaseDialogDescriptionProps = ComponentPropsWithoutRef<\n typeof DialogBase.Description\n>;\n\nexport type DialogDescriptionProps = BaseDialogDescriptionProps;\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return <DialogBase.Description className={className} {...props} />;\n}\n\nDialogDescription.displayName = \"Dialog.Description\";\n\n// ============================================================================\n// Dialog Close\n// ============================================================================\n\ntype BaseDialogCloseProps = ComponentPropsWithoutRef<typeof DialogBase.Close>;\n\nexport type DialogCloseProps = BaseDialogCloseProps;\n\nfunction DialogClose({ children, ...props }: DialogCloseProps) {\n return <DialogBase.Close {...props}>{children}</DialogBase.Close>;\n}\n\nDialogClose.displayName = \"Dialog.Close\";\n\n// ============================================================================\n// Compound Component Export\n// ============================================================================\n\nconst Dialog = Object.assign(DialogContent, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Title: DialogTitle,\n Description: DialogDescription,\n Close: DialogClose,\n});\n\nexport {\n Dialog,\n DialogRoot,\n DialogTrigger,\n DialogTitle,\n DialogDescription,\n DialogClose,\n};\n"],"names":["KUMO_DIALOG_VARIANTS","KUMO_DIALOG_DEFAULT_VARIANTS","dialogVariants","size","cn","DialogContent","className","children","style","jsxs","DialogBase.Portal","jsx","DialogBase.Backdrop","Surface","DialogBase.Popup","DialogRoot","props","DialogBase.Root","DialogTrigger","DialogBase.Trigger","DialogTitle","DialogBase.Title","DialogDescription","DialogBase.Description","DialogClose","DialogBase.Close","Dialog"],"mappings":";;;;;AAMO,MAAMA,IAAuB;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,IAAI;AAAA,MACF,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,IAA+B;AAAA,EAC1C,MAAM;AACR;AA4EO,SAASC,EAAe;AAAA,EAC7B,MAAAC,IAAOF,EAA6B;AACtC,IAA6B,IAAI;AAC/B,SAAOG;AAAA;AAAA,IAEL;AAAA;AAAA,IAEAJ,EAAqB,KAAKG,CAAI,EAAE;AAAA,EAAA;AAEpC;AA0CA,SAASE,EAAc;AAAA,EACrB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAL,IAAOF,EAA6B;AACtC,GAAgB;AACd,SACE,gBAAAQ,EAACC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,WAAU,iIAAA,CAAiI;AAAA,IAChK,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,IAAIC;AAAAA,QACJ,WAAWV,EAAGF,EAAe,EAAE,MAAAC,EAAA,CAAM,GAAGG,CAAS;AAAA,QACjD,OACE;AAAA,UACE,oBAAoB;AAAA,UACpB,0BACE;AAAA,UACF,eACE;AAAA,UACF,GAAGE;AAAA,QAAA;AAAA,QAIN,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AAUA,SAASQ,EAAW,EAAE,UAAAR,GAAU,GAAGS,KAA0B;AAC3D,2BAAQC,GAAA,EAAiB,GAAGD,GAAQ,UAAAT,EAAA,CAAS;AAC/C;AAEAQ,EAAW,cAAc;AAYzB,SAASG,EAAc,EAAE,UAAAX,GAAU,GAAGS,KAA6B;AACjE,2BAAQG,GAAA,EAAoB,GAAGH,GAAQ,UAAAT,EAAA,CAAS;AAClD;AAEAW,EAAc,cAAc;AAU5B,SAASE,EAAY,EAAE,WAAAd,GAAW,GAAGU,KAA2B;AAC9D,2BAAQK,GAAA,EAAiB,WAAAf,GAAuB,GAAGU,EAAA,CAAO;AAC5D;AAEAI,EAAY,cAAc;AAY1B,SAASE,EAAkB,EAAE,WAAAhB,GAAW,GAAGU,KAAiC;AAC1E,2BAAQO,GAAA,EAAuB,WAAAjB,GAAuB,GAAGU,EAAA,CAAO;AAClE;AAEAM,EAAkB,cAAc;AAUhC,SAASE,EAAY,EAAE,UAAAjB,GAAU,GAAGS,KAA2B;AAC7D,2BAAQS,GAAA,EAAkB,GAAGT,GAAQ,UAAAT,EAAA,CAAS;AAChD;AAEAiB,EAAY,cAAc;AAM1B,MAAME,IAAS,OAAO,OAAOrB,GAAe;AAAA,EAC1C,MAAMU;AAAA,EACN,SAASG;AAAA,EACT,OAAOE;AAAA,EACP,aAAaE;AAAA,EACb,OAAOE;AACT,CAAC;"}
@@ -0,0 +1,295 @@
1
+ "use client";
2
+ import { jsx as o, jsxs as u, Fragment as F } from "react/jsx-runtime";
3
+ import * as s from "react";
4
+ import { c as i } from "./cn-Bhsu1vx2.js";
5
+ import { u as K } from "./link-provider-DPBGo-0n.js";
6
+ import { C as U } from "./checkbox-CfFoTNFI.js";
7
+ import { CheckIcon as b, CaretRightIcon as W } from "@phosphor-icons/react";
8
+ import { aw as B, ax as H, ay as J, az as q, aA as w, S as N, aB as M, aC as Q, aD as X, aE as k, aF as Y, aG as y, aH as Z, aI as $, aJ as R, aK as ee } from "./vendor-base-ui-Bsg5ebHI.js";
9
+ const te = {
10
+ variant: {
11
+ default: {
12
+ classes: "",
13
+ description: "Default dropdown item appearance"
14
+ },
15
+ danger: {
16
+ classes: "text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger",
17
+ description: "Destructive action item"
18
+ }
19
+ }
20
+ }, ae = {
21
+ variant: "default"
22
+ };
23
+ function D({
24
+ variant: e = ae.variant
25
+ } = {}) {
26
+ return i(te.variant[e].classes);
27
+ }
28
+ const I = s.forwardRef(({ className: e, inset: a, children: t, icon: n, ...r }, d) => /* @__PURE__ */ u(
29
+ R,
30
+ {
31
+ ref: d,
32
+ className: i(
33
+ "flex cursor-default items-center rounded-sm text-base outline-hidden select-none",
34
+ // base styles
35
+ "px-2 py-1.5",
36
+ // spacing
37
+ "focus:bg-kumo-tint",
38
+ // focus state
39
+ "data-[state=open]:bg-kumo-tint",
40
+ // open state
41
+ a && "pl-8",
42
+ // conditional inset
43
+ e
44
+ ),
45
+ ...r,
46
+ children: [
47
+ n && /* @__PURE__ */ o(n, { className: "mr-2 h-4 w-4" }),
48
+ t,
49
+ /* @__PURE__ */ o(W, { className: "ml-auto h-4 w-4" })
50
+ ]
51
+ }
52
+ ));
53
+ I.displayName = R.displayName;
54
+ const x = s.forwardRef(({ className: e, sideOffset: a = 8, children: t, ...n }, r) => /* @__PURE__ */ o(w, { children: /* @__PURE__ */ o(
55
+ Z,
56
+ {
57
+ ref: r,
58
+ sideOffset: a,
59
+ ...n,
60
+ children: /* @__PURE__ */ o(
61
+ $,
62
+ {
63
+ className: i(
64
+ "overflow-hidden bg-kumo-control text-kumo-default",
65
+ // background
66
+ "rounded-lg shadow-lg ring ring-kumo-line",
67
+ // border part
68
+ "min-w-36 p-1.5",
69
+ // spacing
70
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
71
+ // open animation
72
+ "data-[side=bottom]:slide-in-from-top-2",
73
+ // bottom side animation
74
+ "data-[side=left]:slide-in-from-right-2",
75
+ // left side animation
76
+ "data-[side=right]:slide-in-from-left-2",
77
+ // right side animation
78
+ "data-[side=top]:slide-in-from-bottom-2",
79
+ // top side animation
80
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
81
+ // close animation
82
+ e
83
+ ),
84
+ children: t
85
+ }
86
+ )
87
+ }
88
+ ) })), f = (e) => e ? s.isValidElement(e) ? e : /* @__PURE__ */ o(e, { className: "mr-2 h-4 w-4" }) : null, v = s.forwardRef(
89
+ ({
90
+ className: e,
91
+ inset: a,
92
+ icon: t,
93
+ children: n,
94
+ selected: r,
95
+ render: d,
96
+ href: l,
97
+ variant: c = "default",
98
+ ...G
99
+ }, _) => {
100
+ const g = K(), m = s.useMemo(
101
+ () => /* @__PURE__ */ u(F, { children: [
102
+ t && f(t),
103
+ n,
104
+ r && /* @__PURE__ */ o("span", { className: "inline-flex", children: /* @__PURE__ */ o(b, {}) })
105
+ ] }),
106
+ [t, n, r]
107
+ ), V = s.useMemo(() => {
108
+ if (!l) return;
109
+ const z = /^(https?:)?\/\//.test(l), h = i(
110
+ "flex items-center",
111
+ c === "danger" && "text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger"
112
+ );
113
+ return z ? /* @__PURE__ */ o(
114
+ "a",
115
+ {
116
+ className: i(h, "w-full text-inherit! no-underline!"),
117
+ href: l,
118
+ target: "_blank",
119
+ rel: "noreferrer",
120
+ onClick: (p) => p.stopPropagation(),
121
+ children: m
122
+ }
123
+ ) : /* @__PURE__ */ o(
124
+ g,
125
+ {
126
+ className: i(h, "w-full text-inherit! no-underline!"),
127
+ href: l,
128
+ to: l,
129
+ onClick: (p) => p.stopPropagation(),
130
+ children: m
131
+ }
132
+ );
133
+ }, [l, m, c, g]), j = l || d;
134
+ return /* @__PURE__ */ o(
135
+ y,
136
+ {
137
+ ref: _,
138
+ className: i(
139
+ "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay",
140
+ a && "pl-8",
141
+ D({ variant: c }),
142
+ e
143
+ ),
144
+ render: l ? V : d,
145
+ ...G,
146
+ children: j ? void 0 : m
147
+ }
148
+ );
149
+ }
150
+ );
151
+ v.displayName = y.displayName;
152
+ const S = s.forwardRef(
153
+ ({
154
+ className: e,
155
+ inset: a,
156
+ icon: t,
157
+ children: n,
158
+ variant: r = "default",
159
+ ...d
160
+ }, l) => /* @__PURE__ */ u(
161
+ Y,
162
+ {
163
+ ref: l,
164
+ className: i(
165
+ "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none",
166
+ "focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay",
167
+ "text-inherit no-underline",
168
+ a && "pl-8",
169
+ D({ variant: r }),
170
+ e
171
+ ),
172
+ ...d,
173
+ children: [
174
+ t && f(t),
175
+ n
176
+ ]
177
+ }
178
+ )
179
+ );
180
+ S.displayName = "DropdownMenuLinkItem";
181
+ const C = s.forwardRef(({ className: e, children: a, checked: t, ...n }, r) => /* @__PURE__ */ u(
182
+ k,
183
+ {
184
+ ref: r,
185
+ className: i(
186
+ "relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-base outline-hidden transition-colors select-none focus:bg-kumo-tint focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50",
187
+ e
188
+ ),
189
+ checked: t,
190
+ ...n,
191
+ children: [
192
+ /* @__PURE__ */ o("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit", children: /* @__PURE__ */ o(U, { checked: t }) }),
193
+ a
194
+ ]
195
+ }
196
+ ));
197
+ C.displayName = k.displayName;
198
+ const L = s.forwardRef(({ className: e, inset: a, ...t }, n) => /* @__PURE__ */ o(
199
+ M,
200
+ {
201
+ ref: n,
202
+ className: i(
203
+ "px-2 py-1.5 text-base font-semibold",
204
+ a && "pl-8",
205
+ e
206
+ ),
207
+ ...t
208
+ }
209
+ ));
210
+ L.displayName = M.displayName;
211
+ const T = s.forwardRef(({ className: e, ...a }, t) => /* @__PURE__ */ o(
212
+ N,
213
+ {
214
+ ref: t,
215
+ className: i("-mx-1 my-1 h-px bg-kumo-line", e),
216
+ ...a
217
+ }
218
+ ));
219
+ T.displayName = N.displayName;
220
+ const P = ({
221
+ className: e,
222
+ ...a
223
+ }) => /* @__PURE__ */ o(
224
+ "span",
225
+ {
226
+ className: i("ml-auto text-xs tracking-widest opacity-60", e),
227
+ ...a
228
+ }
229
+ );
230
+ P.displayName = "DropdownMenuShortcut";
231
+ const O = s.forwardRef(({ className: e, children: a, inset: t, icon: n, ...r }, d) => /* @__PURE__ */ u(
232
+ X,
233
+ {
234
+ ref: d,
235
+ className: i(
236
+ "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none",
237
+ "data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-tint",
238
+ t && "pl-8",
239
+ e
240
+ ),
241
+ ...r,
242
+ children: [
243
+ n && f(n),
244
+ a
245
+ ]
246
+ }
247
+ ));
248
+ O.displayName = "DropdownMenuRadioItem";
249
+ const A = s.forwardRef(({ className: e, children: a, ...t }, n) => /* @__PURE__ */ o(
250
+ Q,
251
+ {
252
+ ref: n,
253
+ className: i("ml-auto", e),
254
+ ...t,
255
+ children: a ?? /* @__PURE__ */ o(b, { className: "h-4 w-4" })
256
+ }
257
+ ));
258
+ A.displayName = "DropdownMenuRadioItemIndicator";
259
+ const E = s.forwardRef(({ children: e, render: a, ...t }, n) => {
260
+ const r = s.isValidElement(e) ? e : null, d = a ?? r;
261
+ return /* @__PURE__ */ o(
262
+ ee,
263
+ {
264
+ ref: n,
265
+ ...t,
266
+ ...d && {
267
+ render: d
268
+ },
269
+ children: r ? void 0 : e
270
+ }
271
+ );
272
+ });
273
+ E.displayName = "DropdownMenuTrigger";
274
+ const le = Object.assign(B, {
275
+ Trigger: E,
276
+ Portal: w,
277
+ Sub: q,
278
+ SubTrigger: I,
279
+ SubContent: x,
280
+ Content: x,
281
+ Item: v,
282
+ LinkItem: S,
283
+ CheckboxItem: C,
284
+ RadioGroup: J,
285
+ RadioItem: O,
286
+ RadioItemIndicator: A,
287
+ Label: L,
288
+ Separator: T,
289
+ Shortcut: P,
290
+ Group: H
291
+ });
292
+ export {
293
+ le as D
294
+ };
295
+ //# sourceMappingURL=dropdown-CfS4QcSR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-CfS4QcSR.js","sources":["../src/components/dropdown/dropdown.tsx"],"sourcesContent":["import { Menu as DropdownMenuPrimitive } from \"@base-ui/react/menu\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useLinkComponent } from \"../../utils/link-provider\";\nimport { Checkbox } from \"../checkbox\";\nimport {\n CaretRightIcon as CaretRight,\n CheckIcon as Check,\n type Icon,\n} from \"@phosphor-icons/react\";\n\n/** Dropdown item variant definitions (default and danger styles). */\nexport const KUMO_DROPDOWN_VARIANTS = {\n variant: {\n default: {\n classes: \"\",\n description: \"Default dropdown item appearance\",\n },\n danger: {\n classes:\n \"text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger\",\n description: \"Destructive action item\",\n },\n },\n} as const;\n\nexport const KUMO_DROPDOWN_DEFAULT_VARIANTS = {\n variant: \"default\",\n} as const;\n\n// Derived types from KUMO_DROPDOWN_VARIANTS\nexport type KumoDropdownVariant = keyof typeof KUMO_DROPDOWN_VARIANTS.variant;\n\nexport interface KumoDropdownVariantsProps {\n /**\n * Visual style of the dropdown item.\n * - `\"default\"` — Standard item appearance\n * - `\"danger\"` — Destructive action with red text\n * @default \"default\"\n */\n variant?: KumoDropdownVariant;\n}\n\nexport function dropdownVariants({\n variant = KUMO_DROPDOWN_DEFAULT_VARIANTS.variant,\n}: KumoDropdownVariantsProps = {}) {\n return cn(KUMO_DROPDOWN_VARIANTS.variant[variant].classes);\n}\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubmenuTrigger>,\n React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubmenuTrigger\n > & {\n inset?: boolean;\n icon?: Icon;\n }\n>(({ className, inset, children, icon: IconComponent, ...props }, ref) => (\n <DropdownMenuPrimitive.SubmenuTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default items-center rounded-sm text-base outline-hidden select-none\", // base styles\n \"px-2 py-1.5\", // spacing\n \"focus:bg-kumo-tint\", // focus state\n \"data-[state=open]:bg-kumo-tint\", // open state\n inset && \"pl-8\", // conditional inset\n className,\n )}\n {...props}\n >\n {IconComponent && <IconComponent className=\"mr-2 h-4 w-4\" />}\n {children}\n <CaretRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubmenuTrigger>\n));\n\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubmenuTrigger.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Positioner>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Positioner>\n>(({ className, sideOffset = 8, children, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Positioner\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n >\n <DropdownMenuPrimitive.Popup\n className={cn(\n \"overflow-hidden bg-kumo-control text-kumo-default\", // background\n \"rounded-lg shadow-lg ring ring-kumo-line\", // border part\n \"min-w-36 p-1.5\", // spacing\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\", // open animation\n \"data-[side=bottom]:slide-in-from-top-2\", // bottom side animation\n \"data-[side=left]:slide-in-from-right-2\", // left side animation\n \"data-[side=right]:slide-in-from-left-2\", // right side animation\n \"data-[side=top]:slide-in-from-bottom-2\", // top side animation\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\", // close animation\n className,\n )}\n >\n {children}\n </DropdownMenuPrimitive.Popup>\n </DropdownMenuPrimitive.Positioner>\n </DropdownMenuPrimitive.Portal>\n));\n\nconst renderIconNode = (IconComponent?: Icon | React.ReactNode) => {\n if (!IconComponent) return null;\n if (React.isValidElement(IconComponent)) return IconComponent;\n const Comp = IconComponent as React.ComponentType<Record<string, unknown>>;\n return <Comp className=\"mr-2 h-4 w-4\" />;\n};\n\n/**\n * DropdownMenuItem — a single actionable item within a dropdown menu.\n *\n * For navigation links, use `DropdownMenu.LinkItem` instead.\n *\n * @example\n * ```tsx\n * <DropdownMenu.Item>Edit</DropdownMenu.Item>\n * <DropdownMenu.Item icon={CopyIcon}>Duplicate</DropdownMenu.Item>\n * <DropdownMenu.Item variant=\"danger\">Delete</DropdownMenu.Item>\n * ```\n */\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n icon?: Icon | React.ReactNode;\n selected?: boolean;\n /**\n * @deprecated Use `DropdownMenu.LinkItem` instead for navigation links.\n * This prop will be removed in a future major version.\n */\n href?: string;\n variant?: \"default\" | \"danger\";\n }\n>(\n (\n {\n className,\n inset,\n icon: IconComponent,\n children,\n selected,\n render,\n href,\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n const LinkComponent = useLinkComponent();\n\n // Build the inner content with icon, children, and selected indicator\n const innerContent = React.useMemo(\n () => (\n <>\n {IconComponent && renderIconNode(IconComponent)}\n {children}\n {selected && (\n <span className=\"inline-flex\">\n <Check />\n </span>\n )}\n </>\n ),\n [IconComponent, children, selected],\n );\n\n // Legacy href support (deprecated)\n const linkContent = React.useMemo(() => {\n if (!href) return undefined;\n\n // Matches http://, https://, or protocol-relative //\n const isExternal = /^(https?:)?\\/\\//.test(href);\n const styles = cn(\n \"flex items-center\",\n variant === \"danger\" &&\n \"text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger\",\n );\n if (isExternal) {\n return (\n <a\n className={cn(styles, \"w-full text-inherit! no-underline!\")}\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={(e) => e.stopPropagation()}\n >\n {innerContent}\n </a>\n );\n }\n return (\n <LinkComponent\n className={cn(styles, \"w-full text-inherit! no-underline!\")}\n href={href}\n to={href}\n onClick={(e) => e.stopPropagation()}\n >\n {innerContent}\n </LinkComponent>\n );\n }, [href, innerContent, variant, LinkComponent]);\n\n // When href is provided, use linkContent as render prop\n // When render prop is provided, caller controls children rendering\n const useRenderProp = href || render;\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay\",\n inset && \"pl-8\",\n dropdownVariants({ variant }),\n className,\n )}\n render={href ? linkContent : render}\n {...props}\n >\n {useRenderProp ? undefined : innerContent}\n </DropdownMenuPrimitive.Item>\n );\n },\n);\n\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\n/**\n * DropdownMenuLinkItem — a menu item that navigates to a URL.\n *\n * Use this instead of `DropdownMenu.Item` with `href` for navigation links.\n * Provides full control over link attributes like `target` and `rel`.\n *\n * @example\n * ```tsx\n * // External link\n * <DropdownMenu.LinkItem href=\"https://example.com\" target=\"_blank\">\n * Documentation\n * </DropdownMenu.LinkItem>\n *\n * // Internal link\n * <DropdownMenu.LinkItem href=\"/settings\">\n * Settings\n * </DropdownMenu.LinkItem>\n *\n * // With icon\n * <DropdownMenu.LinkItem href=\"/profile\" icon={UserIcon}>\n * Profile\n * </DropdownMenu.LinkItem>\n * ```\n */\nconst DropdownMenuLinkItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.LinkItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.LinkItem> & {\n inset?: boolean;\n icon?: Icon | React.ReactNode;\n variant?: \"default\" | \"danger\";\n }\n>(\n (\n {\n className,\n inset,\n icon: IconComponent,\n children,\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n return (\n <DropdownMenuPrimitive.LinkItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none\",\n \"focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay\",\n \"text-inherit no-underline\",\n inset && \"pl-8\",\n dropdownVariants({ variant }),\n className,\n )}\n {...props}\n >\n {IconComponent && renderIconNode(IconComponent)}\n {children}\n </DropdownMenuPrimitive.LinkItem>\n );\n },\n);\n\nDropdownMenuLinkItem.displayName = \"DropdownMenuLinkItem\";\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-base outline-hidden transition-colors select-none focus:bg-kumo-tint focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit\">\n <Checkbox checked={checked} />\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.GroupLabel>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.GroupLabel> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.GroupLabel\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-base font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.GroupLabel.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-kumo-line\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n icon?: Icon | React.ReactNode;\n }\n>(({ className, children, inset, icon: IconComponent, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-tint\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {IconComponent && renderIconNode(IconComponent)}\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\n\nconst DropdownMenuRadioItemIndicator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItemIndicator>,\n React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.RadioItemIndicator\n >\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItemIndicator\n ref={ref}\n className={cn(\"ml-auto\", className)}\n {...props}\n >\n {children ?? <Check className=\"h-4 w-4\" />}\n </DropdownMenuPrimitive.RadioItemIndicator>\n));\nDropdownMenuRadioItemIndicator.displayName = \"DropdownMenuRadioItemIndicator\";\n\n/**\n * Custom Trigger that converts a single child element to the `render` prop\n * to avoid nested button issues with base-ui's Menu.Trigger.\n */\nconst DropdownMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\n>(({ children, render, ...props }, ref) => {\n // If render prop is provided, use it directly\n // Otherwise, convert single child element to render prop\n const childElement = React.isValidElement(children) ? children : null;\n const effectiveRender = render ?? childElement;\n\n return (\n <DropdownMenuPrimitive.Trigger\n ref={ref}\n {...props}\n {...(effectiveRender && {\n render: effectiveRender as React.ReactElement<Record<string, unknown>>,\n })}\n >\n {/* Only pass children if not using as render prop */}\n {childElement ? undefined : children}\n </DropdownMenuPrimitive.Trigger>\n );\n});\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\n/**\n * DropdownMenu — accessible dropdown menu anchored to a trigger.\n *\n * Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`,\n * `.LinkItem`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`,\n * `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`.\n *\n * Built on `@base-ui/react/menu`.\n *\n * @example\n * ```tsx\n * <DropdownMenu>\n * <DropdownMenu.Trigger>\n * <Button>Actions</Button>\n * </DropdownMenu.Trigger>\n * <DropdownMenu.Content>\n * <DropdownMenu.Item>Edit</DropdownMenu.Item>\n * <DropdownMenu.Item icon={CopyIcon}>Duplicate</DropdownMenu.Item>\n * <DropdownMenu.LinkItem href=\"/settings\" icon={GearIcon}>Settings</DropdownMenu.LinkItem>\n * <DropdownMenu.Separator />\n * <DropdownMenu.Item variant=\"danger\">Delete</DropdownMenu.Item>\n * </DropdownMenu.Content>\n * </DropdownMenu>\n * ```\n *\n * @see https://base-ui.com/react/components/menu\n */\nexport const DropdownMenu = Object.assign(DropdownMenuPrimitive.Root, {\n Trigger: DropdownMenuTrigger,\n Portal: DropdownMenuPrimitive.Portal,\n Sub: DropdownMenuPrimitive.SubmenuRoot,\n SubTrigger: DropdownMenuSubTrigger,\n SubContent: DropdownMenuContent,\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n LinkItem: DropdownMenuLinkItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioGroup: DropdownMenuPrimitive.RadioGroup,\n RadioItem: DropdownMenuRadioItem,\n RadioItemIndicator: DropdownMenuRadioItemIndicator,\n Label: DropdownMenuLabel,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n Group: DropdownMenuPrimitive.Group,\n});\n"],"names":["KUMO_DROPDOWN_VARIANTS","KUMO_DROPDOWN_DEFAULT_VARIANTS","dropdownVariants","variant","cn","DropdownMenuSubTrigger","React","className","inset","children","IconComponent","props","ref","jsxs","DropdownMenuPrimitive.SubmenuTrigger","jsx","CaretRight","DropdownMenuContent","sideOffset","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Positioner","DropdownMenuPrimitive.Popup","renderIconNode","DropdownMenuItem","selected","render","href","LinkComponent","useLinkComponent","innerContent","Fragment","Check","linkContent","isExternal","styles","e","useRenderProp","DropdownMenuPrimitive.Item","DropdownMenuLinkItem","DropdownMenuPrimitive.LinkItem","DropdownMenuCheckboxItem","checked","DropdownMenuPrimitive.CheckboxItem","Checkbox","DropdownMenuLabel","DropdownMenuPrimitive.GroupLabel","DropdownMenuSeparator","DropdownMenuPrimitive.Separator","DropdownMenuShortcut","DropdownMenuRadioItem","DropdownMenuPrimitive.RadioItem","DropdownMenuRadioItemIndicator","DropdownMenuPrimitive.RadioItemIndicator","DropdownMenuTrigger","childElement","effectiveRender","DropdownMenuPrimitive.Trigger","DropdownMenu","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.SubmenuRoot","DropdownMenuPrimitive.RadioGroup","DropdownMenuPrimitive.Group"],"mappings":";;;;;;;;AAYO,MAAMA,KAAyB;AAAA,EACpC,SAAS;AAAA,IACP,SAAS;AAAA,MACP,SAAS;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,IAEf,QAAQ;AAAA,MACN,SACE;AAAA,MACF,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaC,KAAiC;AAAA,EAC5C,SAAS;AACX;AAeO,SAASC,EAAiB;AAAA,EAC/B,SAAAC,IAAUF,GAA+B;AAC3C,IAA+B,IAAI;AACjC,SAAOG,EAAGJ,GAAuB,QAAQG,CAAO,EAAE,OAAO;AAC3D;AAEA,MAAME,IAAyBC,EAAM,WAQnC,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,UAAAC,GAAU,MAAMC,GAAe,GAAGC,EAAA,GAASC,MAChE,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWR;AAAA,MACT;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACAI,KAAS;AAAA;AAAA,MACTD;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,IAEH,UAAA;AAAA,MAAAD,KAAiB,gBAAAK,EAACL,GAAA,EAAc,WAAU,eAAA,CAAe;AAAA,MACzDD;AAAA,MACD,gBAAAM,EAACC,GAAA,EAAW,WAAU,kBAAA,CAAkB;AAAA,IAAA;AAAA,EAAA;AAC1C,CACD;AAEDX,EAAuB,cACrBS,EAAqC;AAEvC,MAAMG,IAAsBX,EAAM,WAGhC,CAAC,EAAE,WAAAC,GAAW,YAAAW,IAAa,GAAG,UAAAT,GAAU,GAAGE,KAASC,MACpD,gBAAAG,EAACI,GAAA,EACC,UAAA,gBAAAJ;AAAA,EAACK;AAAAA,EAAA;AAAA,IACC,KAAAR;AAAA,IACA,YAAAM;AAAA,IACC,GAAGP;AAAA,IAEJ,UAAA,gBAAAI;AAAA,MAACM;AAAAA,MAAA;AAAA,QACC,WAAWjB;AAAA,UACT;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACAG;AAAA,QAAA;AAAA,QAGD,UAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EACH;AACF,EAAA,CACF,CACD,GAEKa,IAAiB,CAACZ,MACjBA,IACDJ,EAAM,eAAeI,CAAa,IAAUA,IAEzC,gBAAAK,EADML,GACL,EAAK,WAAU,eAAA,CAAe,IAHX,MAkBvBa,IAAmBjB,EAAM;AAAA,EAc7B,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAME;AAAA,IACN,UAAAD;AAAA,IACA,UAAAe;AAAA,IACA,QAAAC;AAAA,IACA,MAAAC;AAAA,IACA,SAAAvB,IAAU;AAAA,IACV,GAAGQ;AAAA,EAAA,GAELC,MACG;AACH,UAAMe,IAAgBC,EAAA,GAGhBC,IAAevB,EAAM;AAAA,MACzB,MACE,gBAAAO,EAAAiB,GAAA,EACG,UAAA;AAAA,QAAApB,KAAiBY,EAAeZ,CAAa;AAAA,QAC7CD;AAAA,QACAe,KACC,gBAAAT,EAAC,QAAA,EAAK,WAAU,eACd,UAAA,gBAAAA,EAACgB,KAAM,EAAA,CACT;AAAA,MAAA,GAEJ;AAAA,MAEF,CAACrB,GAAeD,GAAUe,CAAQ;AAAA,IAAA,GAI9BQ,IAAc1B,EAAM,QAAQ,MAAM;AACtC,UAAI,CAACoB,EAAM;AAGX,YAAMO,IAAa,kBAAkB,KAAKP,CAAI,GACxCQ,IAAS9B;AAAA,QACb;AAAA,QACAD,MAAY,YACV;AAAA,MAAA;AAEJ,aAAI8B,IAEA,gBAAAlB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWX,EAAG8B,GAAQ,oCAAoC;AAAA,UAC1D,MAAAR;AAAA,UACA,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,SAAS,CAACS,MAAMA,EAAE,gBAAA;AAAA,UAEjB,UAAAN;AAAA,QAAA;AAAA,MAAA,IAKL,gBAAAd;AAAA,QAACY;AAAA,QAAA;AAAA,UACC,WAAWvB,EAAG8B,GAAQ,oCAAoC;AAAA,UAC1D,MAAAR;AAAA,UACA,IAAIA;AAAA,UACJ,SAAS,CAACS,MAAMA,EAAE,gBAAA;AAAA,UAEjB,UAAAN;AAAA,QAAA;AAAA,MAAA;AAAA,IAGP,GAAG,CAACH,GAAMG,GAAc1B,GAASwB,CAAa,CAAC,GAIzCS,IAAgBV,KAAQD;AAE9B,WACE,gBAAAV;AAAA,MAACsB;AAAAA,MAAA;AAAA,QACC,KAAAzB;AAAA,QACA,WAAWR;AAAA,UACT;AAAA,UACAI,KAAS;AAAA,UACTN,EAAiB,EAAE,SAAAC,GAAS;AAAA,UAC5BI;AAAA,QAAA;AAAA,QAEF,QAAQmB,IAAOM,IAAcP;AAAA,QAC5B,GAAGd;AAAA,QAEH,cAAgB,SAAYkB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnC;AACF;AAEAN,EAAiB,cAAcc,EAA2B;AA0B1D,MAAMC,IAAuBhC,EAAM;AAAA,EAQjC,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAME;AAAA,IACN,UAAAD;AAAA,IACA,SAAAN,IAAU;AAAA,IACV,GAAGQ;AAAA,EAAA,GAELC,MAGE,gBAAAC;AAAA,IAAC0B;AAAAA,IAAA;AAAA,MACC,KAAA3B;AAAA,MACA,WAAWR;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAI,KAAS;AAAA,QACTN,EAAiB,EAAE,SAAAC,GAAS;AAAA,QAC5BI;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,MAEH,UAAA;AAAA,QAAAD,KAAiBY,EAAeZ,CAAa;AAAA,QAC7CD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIT;AAEA6B,EAAqB,cAAc;AAEnC,MAAME,IAA2BlC,EAAM,WAGrC,CAAC,EAAE,WAAAC,GAAW,UAAAE,GAAU,SAAAgC,GAAS,GAAG9B,KAASC,MAC7C,gBAAAC;AAAA,EAAC6B;AAAAA,EAAA;AAAA,IACC,KAAA9B;AAAA,IACA,WAAWR;AAAA,MACT;AAAA,MACAG;AAAA,IAAA;AAAA,IAEF,SAAAkC;AAAA,IACC,GAAG9B;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAI,EAAC,UAAK,WAAU,6EACd,UAAA,gBAAAA,EAAC4B,GAAA,EAAS,SAAAF,GAAkB,GAC9B;AAAA,MACChC;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACD+B,EAAyB,cACvBE,EAAmC;AAErC,MAAME,IAAoBtC,EAAM,WAK9B,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,GAAGG,KAASC,MACjC,gBAAAG;AAAA,EAAC8B;AAAAA,EAAA;AAAA,IACC,KAAAjC;AAAA,IACA,WAAWR;AAAA,MACT;AAAA,MACAI,KAAS;AAAA,MACTD;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,EAAA;AACN,CACD;AACDiC,EAAkB,cAAcC,EAAiC;AAEjE,MAAMC,IAAwBxC,EAAM,WAGlC,CAAC,EAAE,WAAAC,GAAW,GAAGI,EAAA,GAASC,MAC1B,gBAAAG;AAAA,EAACgC;AAAAA,EAAA;AAAA,IACC,KAAAnC;AAAA,IACA,WAAWR,EAAG,gCAAgCG,CAAS;AAAA,IACtD,GAAGI;AAAA,EAAA;AACN,CACD;AACDmC,EAAsB,cAAcC,EAAgC;AAEpE,MAAMC,IAAuB,CAAC;AAAA,EAC5B,WAAAzC;AAAA,EACA,GAAGI;AACL,MAEI,gBAAAI;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWX,EAAG,8CAA8CG,CAAS;AAAA,IACpE,GAAGI;AAAA,EAAA;AAAA;AAIVqC,EAAqB,cAAc;AAEnC,MAAMC,IAAwB3C,EAAM,WAMlC,CAAC,EAAE,WAAAC,GAAW,UAAAE,GAAU,OAAAD,GAAO,MAAME,GAAe,GAAGC,EAAA,GAASC,MAChE,gBAAAC;AAAA,EAACqC;AAAAA,EAAA;AAAA,IACC,KAAAtC;AAAA,IACA,WAAWR;AAAA,MACT;AAAA,MACA;AAAA,MACAI,KAAS;AAAA,MACTD;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,IAEH,UAAA;AAAA,MAAAD,KAAiBY,EAAeZ,CAAa;AAAA,MAC7CD;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACDwC,EAAsB,cAAc;AAEpC,MAAME,IAAiC7C,EAAM,WAK3C,CAAC,EAAE,WAAAC,GAAW,UAAAE,GAAU,GAAGE,KAASC,MACpC,gBAAAG;AAAA,EAACqC;AAAAA,EAAA;AAAA,IACC,KAAAxC;AAAA,IACA,WAAWR,EAAG,WAAWG,CAAS;AAAA,IACjC,GAAGI;AAAA,IAEH,UAAAF,KAAY,gBAAAM,EAACgB,GAAA,EAAM,WAAU,UAAA,CAAU;AAAA,EAAA;AAC1C,CACD;AACDoB,EAA+B,cAAc;AAM7C,MAAME,IAAsB/C,EAAM,WAGhC,CAAC,EAAE,UAAAG,GAAU,QAAAgB,GAAQ,GAAGd,EAAA,GAASC,MAAQ;AAGzC,QAAM0C,IAAehD,EAAM,eAAeG,CAAQ,IAAIA,IAAW,MAC3D8C,IAAkB9B,KAAU6B;AAElC,SACE,gBAAAvC;AAAA,IAACyC;AAAAA,IAAA;AAAA,MACC,KAAA5C;AAAA,MACC,GAAGD;AAAA,MACH,GAAI4C,KAAmB;AAAA,QACtB,QAAQA;AAAA,MAAA;AAAA,MAIT,cAAe,SAAY9C;AAAA,IAAA;AAAA,EAAA;AAGlC,CAAC;AACD4C,EAAoB,cAAc;AA6B3B,MAAMI,KAAe,OAAO,OAAOC,GAA4B;AAAA,EACpE,SAASL;AAAA,EACT,QAAQlC;AAAAA,EACR,KAAKwC;AAAAA,EACL,YAAYtD;AAAA,EACZ,YAAYY;AAAA,EACZ,SAASA;AAAA,EACT,MAAMM;AAAA,EACN,UAAUe;AAAA,EACV,cAAcE;AAAA,EACd,YAAYoB;AAAAA,EACZ,WAAWX;AAAA,EACX,oBAAoBE;AAAA,EACpB,OAAOP;AAAA,EACP,WAAWE;AAAA,EACX,UAAUE;AAAA,EACV,OAAOa;AACT,CAAC;"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { jsxs as h, jsx as e } from "react/jsx-runtime";
3
3
  import { c as a } from "./cn-Bhsu1vx2.js";
4
- import { L as m } from "./label-Cjpb7l1F.js";
5
- import { K as f, L as p, aI as u, aJ as x } from "./vendor-base-ui-B61LL9jT.js";
4
+ import { L as m } from "./label-Cd6nCDWj.js";
5
+ import { N as f, O as p, aL as u, aM as x } from "./vendor-base-ui-Bsg5ebHI.js";
6
6
  const g = {
7
7
  // Field currently has no variant options but structure is ready for future additions
8
8
  }, L = {};
@@ -25,7 +25,7 @@ function d({
25
25
  ]
26
26
  );
27
27
  }
28
- function _({
28
+ function N({
29
29
  children: s,
30
30
  label: c,
31
31
  required: o,
@@ -63,9 +63,9 @@ function _({
63
63
  ] });
64
64
  }
65
65
  export {
66
- _ as F,
66
+ N as F,
67
67
  g as K,
68
68
  L as a,
69
69
  d as f
70
70
  };
71
- //# sourceMappingURL=field-Bkh5pJay.js.map
71
+ //# sourceMappingURL=field-B8xISAuX.js.map