@cloudflare/kumo 1.10.0 → 1.11.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 (179) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/ai/component-registry.json +21 -32
  3. package/ai/component-registry.md +66 -60
  4. package/ai/schemas.ts +2 -2
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.js +1 -2
  7. package/dist/ai/schemas.js.map +1 -1
  8. package/dist/checkbox-ZiHzIOCx.js +220 -0
  9. package/dist/checkbox-ZiHzIOCx.js.map +1 -0
  10. package/dist/{clipboard-text-DbvIaZ3g.js → clipboard-text-DXs1GdOt.js} +3 -3
  11. package/dist/{clipboard-text-DbvIaZ3g.js.map → clipboard-text-DXs1GdOt.js.map} +1 -1
  12. package/dist/code.js +62 -62
  13. package/dist/code.js.map +1 -1
  14. package/dist/{collapsible-OBNkTO48.js → collapsible-C3LJ1dfZ.js} +13 -11
  15. package/dist/collapsible-C3LJ1dfZ.js.map +1 -0
  16. package/dist/{combobox-CJqgoue6.js → combobox--ec3iibR.js} +63 -63
  17. package/dist/combobox--ec3iibR.js.map +1 -0
  18. package/dist/{command-palette-xctZ--ZT.js → command-palette-B_J7o7P-.js} +8 -8
  19. package/dist/{command-palette-xctZ--ZT.js.map → command-palette-B_J7o7P-.js.map} +1 -1
  20. package/dist/components/checkbox.js +1 -1
  21. package/dist/components/clipboard-text.js +1 -1
  22. package/dist/components/collapsible.js +1 -1
  23. package/dist/components/combobox.js +1 -1
  24. package/dist/components/command-palette.js +1 -1
  25. package/dist/components/dialog.js +1 -1
  26. package/dist/components/dropdown.js +1 -1
  27. package/dist/components/field.js +1 -1
  28. package/dist/components/flow.js +1857 -1803
  29. package/dist/components/flow.js.map +1 -1
  30. package/dist/components/input.js +3 -3
  31. package/dist/components/label.js +1 -1
  32. package/dist/components/link.js +1 -1
  33. package/dist/components/menubar.js +1 -1
  34. package/dist/components/meter.js +1 -1
  35. package/dist/components/pagination.js +1 -1
  36. package/dist/components/popover.js +1 -1
  37. package/dist/components/radio.js +1 -1
  38. package/dist/components/select.js +1 -1
  39. package/dist/components/sensitive-input.js +1 -1
  40. package/dist/components/switch.js +1 -1
  41. package/dist/components/table.js +1 -1
  42. package/dist/components/tabs.js +1 -1
  43. package/dist/components/toast.js +2 -2
  44. package/dist/components/tooltip.js +1 -1
  45. package/dist/{dialog-1pa-ezdL.js → dialog-DGaQTZVR.js} +2 -2
  46. package/dist/{dialog-1pa-ezdL.js.map → dialog-DGaQTZVR.js.map} +1 -1
  47. package/dist/{dropdown-BXg01-8j.js → dropdown-DBfVqi0v.js} +74 -75
  48. package/dist/dropdown-DBfVqi0v.js.map +1 -0
  49. package/dist/{field-BYaOyOtJ.js → field-CQmGKOVZ.js} +7 -7
  50. package/dist/{field-BYaOyOtJ.js.map → field-CQmGKOVZ.js.map} +1 -1
  51. package/dist/index.js +28 -28
  52. package/dist/{input-area-C3ddZhEo.js → input-area-BgpN8siO.js} +3 -3
  53. package/dist/{input-area-C3ddZhEo.js.map → input-area-BgpN8siO.js.map} +1 -1
  54. package/dist/{input-BXn3ElmF.js → input-gGpJCiT7.js} +3 -3
  55. package/dist/{input-BXn3ElmF.js.map → input-gGpJCiT7.js.map} +1 -1
  56. package/dist/{input-group-BiUKE2TR.js → input-group-DwPPwJEW.js} +2 -2
  57. package/dist/{input-group-BiUKE2TR.js.map → input-group-DwPPwJEW.js.map} +1 -1
  58. package/dist/label-hoE9-Nzo.js +62 -0
  59. package/dist/label-hoE9-Nzo.js.map +1 -0
  60. package/dist/{link-CfCaX9Ks.js → link-BFszrye7.js} +20 -14
  61. package/dist/link-BFszrye7.js.map +1 -0
  62. package/dist/{menubar-be9R8bE-.js → menubar-DF-6twXU.js} +2 -2
  63. package/dist/{menubar-be9R8bE-.js.map → menubar-DF-6twXU.js.map} +1 -1
  64. package/dist/{meter-CCpXrH8B.js → meter-CP6NBKRN.js} +2 -2
  65. package/dist/{meter-CCpXrH8B.js.map → meter-CP6NBKRN.js.map} +1 -1
  66. package/dist/{pagination-CaHm6TKa.js → pagination-BWkeDEqb.js} +44 -40
  67. package/dist/pagination-BWkeDEqb.js.map +1 -0
  68. package/dist/{popover-CHafAVT6.js → popover-B5CWcu7v.js} +2 -2
  69. package/dist/{popover-CHafAVT6.js.map → popover-B5CWcu7v.js.map} +1 -1
  70. package/dist/primitives/accordion.js +1 -1
  71. package/dist/primitives/alert-dialog.js +1 -1
  72. package/dist/primitives/autocomplete.js +1 -1
  73. package/dist/primitives/avatar.js +1 -1
  74. package/dist/primitives/button.js +1 -1
  75. package/dist/primitives/checkbox-group.js +1 -1
  76. package/dist/primitives/checkbox.js +1 -1
  77. package/dist/primitives/collapsible.js +1 -1
  78. package/dist/primitives/combobox.js +1 -1
  79. package/dist/primitives/context-menu.js +1 -1
  80. package/dist/primitives/csp-provider.js +1 -1
  81. package/dist/primitives/dialog.js +1 -1
  82. package/dist/primitives/direction-provider.js +1 -1
  83. package/dist/primitives/drawer.js +1 -1
  84. package/dist/primitives/field.js +1 -1
  85. package/dist/primitives/fieldset.js +1 -1
  86. package/dist/primitives/form.js +1 -1
  87. package/dist/primitives/input.js +1 -1
  88. package/dist/primitives/menu.js +1 -1
  89. package/dist/primitives/menubar.js +1 -1
  90. package/dist/primitives/meter.js +1 -1
  91. package/dist/primitives/navigation-menu.js +1 -1
  92. package/dist/primitives/number-field.js +1 -1
  93. package/dist/primitives/popover.js +1 -1
  94. package/dist/primitives/preview-card.js +1 -1
  95. package/dist/primitives/progress.js +1 -1
  96. package/dist/primitives/radio-group.js +1 -1
  97. package/dist/primitives/radio.js +1 -1
  98. package/dist/primitives/scroll-area.js +1 -1
  99. package/dist/primitives/select.js +1 -1
  100. package/dist/primitives/separator.js +1 -1
  101. package/dist/primitives/slider.js +1 -1
  102. package/dist/primitives/switch.js +1 -1
  103. package/dist/primitives/tabs.js +1 -1
  104. package/dist/primitives/toast.js +1 -1
  105. package/dist/primitives/toggle-group.js +1 -1
  106. package/dist/primitives/toggle.js +1 -1
  107. package/dist/primitives/toolbar.js +1 -1
  108. package/dist/primitives/tooltip.js +1 -1
  109. package/dist/primitives.js +1 -1
  110. package/dist/{radio-DZ1uS-zK.js → radio-BQTXNBkS.js} +6 -6
  111. package/dist/radio-BQTXNBkS.js.map +1 -0
  112. package/dist/scripts/theme-generator/config.js +1 -1
  113. package/dist/scripts/theme-generator/config.js.map +1 -1
  114. package/dist/scripts/theme-generator/generate-css.d.ts.map +1 -1
  115. package/dist/select-BWUNPPHQ.js +123 -0
  116. package/dist/select-BWUNPPHQ.js.map +1 -0
  117. package/dist/{sensitive-input-CI-gtdfw.js → sensitive-input-A6Kw7URa.js} +4 -4
  118. package/dist/{sensitive-input-CI-gtdfw.js.map → sensitive-input-A6Kw7URa.js.map} +1 -1
  119. package/dist/src/code/code-highlighted.d.ts.map +1 -1
  120. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
  121. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  122. package/dist/src/components/flow/connectors.d.ts +4 -0
  123. package/dist/src/components/flow/connectors.d.ts.map +1 -1
  124. package/dist/src/components/flow/diagram.d.ts +27 -2
  125. package/dist/src/components/flow/diagram.d.ts.map +1 -1
  126. package/dist/src/components/flow/node.d.ts +6 -1
  127. package/dist/src/components/flow/node.d.ts.map +1 -1
  128. package/dist/src/components/flow/parallel.d.ts.map +1 -1
  129. package/dist/src/components/flow/use-children.d.ts +12 -1
  130. package/dist/src/components/flow/use-children.d.ts.map +1 -1
  131. package/dist/src/components/label/label.d.ts.map +1 -1
  132. package/dist/src/components/link/link.d.ts +2 -2
  133. package/dist/src/components/link/link.d.ts.map +1 -1
  134. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  135. package/dist/src/components/radio/radio.d.ts.map +1 -1
  136. package/dist/src/components/select/select.d.ts +29 -6
  137. package/dist/src/components/select/select.d.ts.map +1 -1
  138. package/dist/src/components/switch/switch.d.ts.map +1 -1
  139. package/dist/src/components/tabs/tabs.d.ts +6 -2
  140. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  141. package/dist/src/components/toast/toast.d.ts +1 -0
  142. package/dist/src/components/toast/toast.d.ts.map +1 -1
  143. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  144. package/dist/styles/kumo-binding.css +19 -0
  145. package/dist/styles/kumo-standalone.css +1 -1
  146. package/dist/styles/theme-fedramp.css +13 -0
  147. package/dist/styles/theme-kumo.css +77 -1
  148. package/dist/{switch-BxnAwAse.js → switch-CmUFBiJv.js} +4 -4
  149. package/dist/switch-CmUFBiJv.js.map +1 -0
  150. package/dist/{table-CdcsAm5X.js → table-CbU4Oe3o.js} +2 -2
  151. package/dist/{table-CdcsAm5X.js.map → table-CbU4Oe3o.js.map} +1 -1
  152. package/dist/{tabs-Cf12PXHz.js → tabs-uLzHh6SR.js} +14 -13
  153. package/dist/tabs-uLzHh6SR.js.map +1 -0
  154. package/dist/{toast-BzvG5cpW.js → toast-B-d56fkl.js} +124 -92
  155. package/dist/toast-B-d56fkl.js.map +1 -0
  156. package/dist/{tooltip-2KqOpTj0.js → tooltip-C7p2iJ0y.js} +24 -18
  157. package/dist/tooltip-C7p2iJ0y.js.map +1 -0
  158. package/dist/{vendor-base-ui-DvXlzG7n.js → vendor-base-ui-DN1j_aJS.js} +50 -49
  159. package/dist/{vendor-base-ui-DvXlzG7n.js.map → vendor-base-ui-DN1j_aJS.js.map} +1 -1
  160. package/package.json +3 -1
  161. package/scripts/theme-generator/config.ts +1 -1
  162. package/scripts/theme-generator/generate-css.test.ts +30 -0
  163. package/scripts/theme-generator/generate-css.ts +104 -6
  164. package/dist/checkbox-z5gO1lL8.js +0 -224
  165. package/dist/checkbox-z5gO1lL8.js.map +0 -1
  166. package/dist/collapsible-OBNkTO48.js.map +0 -1
  167. package/dist/combobox-CJqgoue6.js.map +0 -1
  168. package/dist/dropdown-BXg01-8j.js.map +0 -1
  169. package/dist/label-ByOtGj7z.js +0 -58
  170. package/dist/label-ByOtGj7z.js.map +0 -1
  171. package/dist/link-CfCaX9Ks.js.map +0 -1
  172. package/dist/pagination-CaHm6TKa.js.map +0 -1
  173. package/dist/radio-DZ1uS-zK.js.map +0 -1
  174. package/dist/select-BXZAlFAV.js +0 -113
  175. package/dist/select-BXZAlFAV.js.map +0 -1
  176. package/dist/switch-BxnAwAse.js.map +0 -1
  177. package/dist/tabs-Cf12PXHz.js.map +0 -1
  178. package/dist/toast-BzvG5cpW.js.map +0 -1
  179. package/dist/tooltip-2KqOpTj0.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { I as t, i as e } from "../input-BXn3ElmF.js";
3
- import { I as o, T as s } from "../input-area-C3ddZhEo.js";
4
- import { I as u } from "../input-group-BiUKE2TR.js";
2
+ import { I as t, i as e } from "../input-gGpJCiT7.js";
3
+ import { I as o, T as s } from "../input-area-BgpN8siO.js";
4
+ import { I as u } from "../input-group-DwPPwJEW.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-ByOtGj7z.js";
2
+ import { b as e, K as l, L as A, a as L, l as t } from "../label-hoE9-Nzo.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-CfCaX9Ks.js";
2
+ import { a as A, K, L, l as _ } from "../link-BFszrye7.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-be9R8bE-.js";
2
+ import { M as u, u as n } from "../menubar-DF-6twXU.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-CCpXrH8B.js";
2
+ import { M as t } from "../meter-CP6NBKRN.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-CaHm6TKa.js";
2
+ import { P as i } from "../pagination-BWkeDEqb.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-CHafAVT6.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-B5CWcu7v.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-DZ1uS-zK.js";
2
+ import { b as A, K as R, R as o, a as r, r as i } from "../radio-BQTXNBkS.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-BXZAlFAV.js";
2
+ import { S as c } from "../select-BWUNPPHQ.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-CI-gtdfw.js";
2
+ import { a as T, K as _, S as N } from "../sensitive-input-A6Kw7URa.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-BxnAwAse.js";
2
+ import { a as T, K as _, S as a } from "../switch-CmUFBiJv.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-CdcsAm5X.js";
2
+ import { K as a, a as _, T as e } from "../table-CbU4Oe3o.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-Cf12PXHz.js";
2
+ import { T as a } from "../tabs-uLzHh6SR.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-BzvG5cpW.js";
3
- import { i as u } from "../vendor-base-ui-DvXlzG7n.js";
2
+ import { a as s, T as e, c as r, u as t } from "../toast-B-d56fkl.js";
3
+ import { i as u } from "../vendor-base-ui-DN1j_aJS.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-2KqOpTj0.js";
2
+ import { T as i, a as r } from "../tooltip-C7p2iJ0y.js";
3
3
  export {
4
4
  i as Tooltip,
5
5
  r as TooltipProvider
@@ -3,7 +3,7 @@ import { jsx as e, jsxs as R } from "react/jsx-runtime";
3
3
  import { createContext as b, useContext as v } from "react";
4
4
  import { S as C } from "./surface-BIC6CXiz.js";
5
5
  import { c as D } from "./cn-Bhsu1vx2.js";
6
- import { ao as N, ap as A, aq as n, ar as c, as as g, at as d, au as p, av as m, aw as u } from "./vendor-base-ui-DvXlzG7n.js";
6
+ import { ao as N, ap as A, aq as n, ar as c, as as g, at as d, au as p, av as m, aw as u } from "./vendor-base-ui-DN1j_aJS.js";
7
7
  const P = {
8
8
  size: {
9
9
  base: {
@@ -109,4 +109,4 @@ export {
109
109
  B as d,
110
110
  T as e
111
111
  };
112
- //# sourceMappingURL=dialog-1pa-ezdL.js.map
112
+ //# sourceMappingURL=dialog-DGaQTZVR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-1pa-ezdL.js","sources":["../src/components/dialog/dialog.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport { AlertDialog as AlertDialogBase } from \"@base-ui/react/alert-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 role: {\n dialog: {\n classes: \"\",\n description: \"Standard dialog for general-purpose modals\",\n },\n alertdialog: {\n classes: \"\",\n description:\n \"Alert dialog for confirmation flows requiring explicit user acknowledgment\",\n },\n },\n} as const;\n\nexport const KUMO_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n role: \"dialog\",\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;\nexport type KumoDialogRole = keyof typeof KUMO_DIALOG_VARIANTS.role;\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\n// ============================================================================\n// Dialog Role Context\n// ============================================================================\n\nconst DialogRoleContext = createContext<KumoDialogRole>(\"dialog\");\n\nfunction useDialogRole() {\n return useContext(DialogRoleContext);\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 *\n * @example Alert Dialog for destructive actions\n * ```tsx\n * <Dialog.Root role=\"alertdialog\">\n * <Dialog.Trigger render={(p) => <Button variant=\"destructive\" {...p}>Delete Project</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Delete Project?</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"secondary\" {...p}>Cancel</Button>} />\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 const role = useDialogRole();\n const BasePortal =\n role === \"alertdialog\" ? AlertDialogBase.Portal : DialogBase.Portal;\n const BaseBackdrop =\n role === \"alertdialog\" ? AlertDialogBase.Backdrop : DialogBase.Backdrop;\n const BasePopup =\n role === \"alertdialog\" ? AlertDialogBase.Popup : DialogBase.Popup;\n\n return (\n <BasePortal>\n <BaseBackdrop 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={BasePopup}\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 </BasePortal>\n );\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ntype BaseDialogRootProps = ComponentPropsWithoutRef<typeof DialogBase.Root>;\n\nexport type DialogRootProps = BaseDialogRootProps & {\n /**\n * The ARIA role for the dialog.\n * - `\"dialog\"` — Standard dialog for general-purpose modals. Dismissible via outside click by default.\n * - `\"alertdialog\"` — Alert dialog for destructive or confirmation flows. Not dismissible via outside click.\n *\n * Use `role=\"alertdialog\"` for:\n * - Destructive actions (delete, discard, remove)\n * - Confirmation dialogs requiring explicit user acknowledgment\n * - Actions that cannot be undone\n *\n * @default \"dialog\"\n */\n role?: KumoDialogRole;\n};\n\nfunction DialogRoot({\n children,\n role = KUMO_DIALOG_DEFAULT_VARIANTS.role,\n ...props\n}: DialogRootProps) {\n const BaseRoot =\n role === \"alertdialog\" ? AlertDialogBase.Root : DialogBase.Root;\n return (\n <DialogRoleContext.Provider value={role}>\n <BaseRoot {...props}>{children}</BaseRoot>\n </DialogRoleContext.Provider>\n );\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 const role = useDialogRole();\n const BaseTrigger =\n role === \"alertdialog\" ? AlertDialogBase.Trigger : DialogBase.Trigger;\n return <BaseTrigger {...props}>{children}</BaseTrigger>;\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 const role = useDialogRole();\n const BaseTitle =\n role === \"alertdialog\" ? AlertDialogBase.Title : DialogBase.Title;\n return <BaseTitle 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 const role = useDialogRole();\n const BaseDescription =\n role === \"alertdialog\"\n ? AlertDialogBase.Description\n : DialogBase.Description;\n return <BaseDescription 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 const role = useDialogRole();\n const BaseClose =\n role === \"alertdialog\" ? AlertDialogBase.Close : DialogBase.Close;\n return <BaseClose {...props}>{children}</BaseClose>;\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","DialogRoleContext","createContext","useDialogRole","useContext","dialogVariants","size","cn","DialogContent","className","children","style","role","AlertDialogBase.Portal","DialogBase.Portal","jsx","AlertDialogBase.Backdrop","DialogBase.Backdrop","Surface","AlertDialogBase.Popup","DialogBase.Popup","DialogRoot","props","BaseRoot","AlertDialogBase.Root","DialogBase.Root","DialogTrigger","BaseTrigger","AlertDialogBase.Trigger","DialogBase.Trigger","DialogTitle","BaseTitle","AlertDialogBase.Title","DialogBase.Title","DialogDescription","BaseDescription","AlertDialogBase.Description","DialogBase.Description","DialogClose","BaseClose","AlertDialogBase.Close","DialogBase.Close","Dialog"],"mappings":"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"}
1
+ {"version":3,"file":"dialog-DGaQTZVR.js","sources":["../src/components/dialog/dialog.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport { AlertDialog as AlertDialogBase } from \"@base-ui/react/alert-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 role: {\n dialog: {\n classes: \"\",\n description: \"Standard dialog for general-purpose modals\",\n },\n alertdialog: {\n classes: \"\",\n description:\n \"Alert dialog for confirmation flows requiring explicit user acknowledgment\",\n },\n },\n} as const;\n\nexport const KUMO_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n role: \"dialog\",\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;\nexport type KumoDialogRole = keyof typeof KUMO_DIALOG_VARIANTS.role;\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\n// ============================================================================\n// Dialog Role Context\n// ============================================================================\n\nconst DialogRoleContext = createContext<KumoDialogRole>(\"dialog\");\n\nfunction useDialogRole() {\n return useContext(DialogRoleContext);\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 *\n * @example Alert Dialog for destructive actions\n * ```tsx\n * <Dialog.Root role=\"alertdialog\">\n * <Dialog.Trigger render={(p) => <Button variant=\"destructive\" {...p}>Delete Project</Button>} />\n * <Dialog className=\"p-8\">\n * <Dialog.Title>Delete Project?</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"secondary\" {...p}>Cancel</Button>} />\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 const role = useDialogRole();\n const BasePortal =\n role === \"alertdialog\" ? AlertDialogBase.Portal : DialogBase.Portal;\n const BaseBackdrop =\n role === \"alertdialog\" ? AlertDialogBase.Backdrop : DialogBase.Backdrop;\n const BasePopup =\n role === \"alertdialog\" ? AlertDialogBase.Popup : DialogBase.Popup;\n\n return (\n <BasePortal>\n <BaseBackdrop 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={BasePopup}\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 </BasePortal>\n );\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ntype BaseDialogRootProps = ComponentPropsWithoutRef<typeof DialogBase.Root>;\n\nexport type DialogRootProps = BaseDialogRootProps & {\n /**\n * The ARIA role for the dialog.\n * - `\"dialog\"` — Standard dialog for general-purpose modals. Dismissible via outside click by default.\n * - `\"alertdialog\"` — Alert dialog for destructive or confirmation flows. Not dismissible via outside click.\n *\n * Use `role=\"alertdialog\"` for:\n * - Destructive actions (delete, discard, remove)\n * - Confirmation dialogs requiring explicit user acknowledgment\n * - Actions that cannot be undone\n *\n * @default \"dialog\"\n */\n role?: KumoDialogRole;\n};\n\nfunction DialogRoot({\n children,\n role = KUMO_DIALOG_DEFAULT_VARIANTS.role,\n ...props\n}: DialogRootProps) {\n const BaseRoot =\n role === \"alertdialog\" ? AlertDialogBase.Root : DialogBase.Root;\n return (\n <DialogRoleContext.Provider value={role}>\n <BaseRoot {...props}>{children}</BaseRoot>\n </DialogRoleContext.Provider>\n );\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 const role = useDialogRole();\n const BaseTrigger =\n role === \"alertdialog\" ? AlertDialogBase.Trigger : DialogBase.Trigger;\n return <BaseTrigger {...props}>{children}</BaseTrigger>;\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 const role = useDialogRole();\n const BaseTitle =\n role === \"alertdialog\" ? AlertDialogBase.Title : DialogBase.Title;\n return <BaseTitle 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 const role = useDialogRole();\n const BaseDescription =\n role === \"alertdialog\"\n ? AlertDialogBase.Description\n : DialogBase.Description;\n return <BaseDescription 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 const role = useDialogRole();\n const BaseClose =\n role === \"alertdialog\" ? AlertDialogBase.Close : DialogBase.Close;\n return <BaseClose {...props}>{children}</BaseClose>;\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","DialogRoleContext","createContext","useDialogRole","useContext","dialogVariants","size","cn","DialogContent","className","children","style","role","AlertDialogBase.Portal","DialogBase.Portal","jsx","AlertDialogBase.Backdrop","DialogBase.Backdrop","Surface","AlertDialogBase.Popup","DialogBase.Popup","DialogRoot","props","BaseRoot","AlertDialogBase.Root","DialogBase.Root","DialogTrigger","BaseTrigger","AlertDialogBase.Trigger","DialogBase.Trigger","DialogTitle","BaseTitle","AlertDialogBase.Title","DialogBase.Title","DialogDescription","BaseDescription","AlertDialogBase.Description","DialogBase.Description","DialogClose","BaseClose","AlertDialogBase.Close","DialogBase.Close","Dialog"],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  "use client";
2
2
  import { jsx as o, jsxs as u, Fragment as F } from "react/jsx-runtime";
3
- import * as s from "react";
3
+ import * as d from "react";
4
4
  import { c as i } from "./cn-Bhsu1vx2.js";
5
5
  import { u as K } from "./link-provider-DPBGo-0n.js";
6
- import { C as U } from "./checkbox-z5gO1lL8.js";
7
- import { CheckIcon as b, CaretRightIcon as W } from "@phosphor-icons/react";
8
- import { ax as B, ay as H, az as J, aA as q, aB as w, S as N, aC as M, aD as Q, aE as X, aF as k, aG as Y, aH as y, aI as Z, aJ as $, aK as R, aL as ee } from "./vendor-base-ui-DvXlzG7n.js";
6
+ import { CheckIcon as f, CaretRightIcon as U } from "@phosphor-icons/react";
7
+ import { ax as W, ay as B, az as H, aA as J, aB as w, S as M, aC as N, aD as q, aE as Q, aF as k, aG as X, aH as Y, aI as y, aJ as Z, aK as $, aL as R, aM as ee } from "./vendor-base-ui-DN1j_aJS.js";
9
8
  const te = {
10
9
  variant: {
11
10
  default: {
@@ -25,10 +24,10 @@ function D({
25
24
  } = {}) {
26
25
  return i(te.variant[e].classes);
27
26
  }
28
- const I = s.forwardRef(({ className: e, inset: a, children: t, icon: n, ...r }, d) => /* @__PURE__ */ u(
27
+ const I = d.forwardRef(({ className: e, inset: t, children: a, icon: n, ...r }, s) => /* @__PURE__ */ u(
29
28
  R,
30
29
  {
31
- ref: d,
30
+ ref: s,
32
31
  className: i(
33
32
  "flex cursor-default items-center rounded-sm text-base outline-hidden select-none",
34
33
  // base styles
@@ -38,24 +37,24 @@ const I = s.forwardRef(({ className: e, inset: a, children: t, icon: n, ...r },
38
37
  // focus state
39
38
  "data-[state=open]:bg-kumo-tint",
40
39
  // open state
41
- a && "pl-8",
40
+ t && "pl-8",
42
41
  // conditional inset
43
42
  e
44
43
  ),
45
44
  ...r,
46
45
  children: [
47
46
  n && /* @__PURE__ */ o(n, { className: "mr-2 h-4 w-4" }),
48
- t,
49
- /* @__PURE__ */ o(W, { className: "ml-auto h-4 w-4" })
47
+ a,
48
+ /* @__PURE__ */ o(U, { className: "ml-auto h-4 w-4" })
50
49
  ]
51
50
  }
52
51
  ));
53
52
  I.displayName = R.displayName;
54
- const x = s.forwardRef(({ className: e, sideOffset: a = 8, children: t, ...n }, r) => /* @__PURE__ */ o(w, { children: /* @__PURE__ */ o(
53
+ const x = d.forwardRef(({ className: e, sideOffset: t = 8, children: a, ...n }, r) => /* @__PURE__ */ o(w, { children: /* @__PURE__ */ o(
55
54
  Z,
56
55
  {
57
56
  ref: r,
58
- sideOffset: a,
57
+ sideOffset: t,
59
58
  ...n,
60
59
  children: /* @__PURE__ */ o(
61
60
  $,
@@ -81,39 +80,39 @@ const x = s.forwardRef(({ className: e, sideOffset: a = 8, children: t, ...n },
81
80
  // close animation
82
81
  e
83
82
  ),
84
- children: t
83
+ children: a
85
84
  }
86
85
  )
87
86
  }
88
- ) })), f = (e) => e ? s.isValidElement(e) ? e : /* @__PURE__ */ o(e, { className: "mr-2 h-4 w-4" }) : null, v = s.forwardRef(
87
+ ) })), g = (e) => e ? d.isValidElement(e) ? e : /* @__PURE__ */ o(e, { className: "mr-2 h-4 w-4" }) : null, v = d.forwardRef(
89
88
  ({
90
89
  className: e,
91
- inset: a,
92
- icon: t,
90
+ inset: t,
91
+ icon: a,
93
92
  children: n,
94
93
  selected: r,
95
- render: d,
94
+ render: s,
96
95
  href: l,
97
96
  variant: c = "default",
98
97
  ...G
99
98
  }, _) => {
100
- const g = K(), m = s.useMemo(
99
+ const h = K(), m = d.useMemo(
101
100
  () => /* @__PURE__ */ u(F, { children: [
102
- t && f(t),
101
+ a && g(a),
103
102
  n,
104
- r && /* @__PURE__ */ o("span", { className: "inline-flex", children: /* @__PURE__ */ o(b, {}) })
103
+ r && /* @__PURE__ */ o("span", { className: "inline-flex", children: /* @__PURE__ */ o(f, {}) })
105
104
  ] }),
106
- [t, n, r]
107
- ), V = s.useMemo(() => {
105
+ [a, n, r]
106
+ ), V = d.useMemo(() => {
108
107
  if (!l) return;
109
- const z = /^(https?:)?\/\//.test(l), h = i(
108
+ const z = /^(https?:)?\/\//.test(l), b = i(
110
109
  "flex items-center",
111
110
  c === "danger" && "text-kumo-danger data-highlighted:bg-kumo-danger/5 data-highlighted:text-kumo-danger"
112
111
  );
113
112
  return z ? /* @__PURE__ */ o(
114
113
  "a",
115
114
  {
116
- className: i(h, "w-full text-inherit! no-underline!"),
115
+ className: i(b, "w-full text-inherit! no-underline!"),
117
116
  href: l,
118
117
  target: "_blank",
119
118
  rel: "noreferrer",
@@ -121,27 +120,27 @@ const x = s.forwardRef(({ className: e, sideOffset: a = 8, children: t, ...n },
121
120
  children: m
122
121
  }
123
122
  ) : /* @__PURE__ */ o(
124
- g,
123
+ h,
125
124
  {
126
- className: i(h, "w-full text-inherit! no-underline!"),
125
+ className: i(b, "w-full text-inherit! no-underline!"),
127
126
  href: l,
128
127
  to: l,
129
128
  onClick: (p) => p.stopPropagation(),
130
129
  children: m
131
130
  }
132
131
  );
133
- }, [l, m, c, g]), j = l || d;
132
+ }, [l, m, c, h]), j = l || s;
134
133
  return /* @__PURE__ */ o(
135
134
  y,
136
135
  {
137
136
  ref: _,
138
137
  className: i(
139
138
  "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",
139
+ t && "pl-8",
141
140
  D({ variant: c }),
142
141
  e
143
142
  ),
144
- render: l ? V : d,
143
+ render: l ? V : s,
145
144
  ...G,
146
145
  children: j ? void 0 : m
147
146
  }
@@ -149,14 +148,14 @@ const x = s.forwardRef(({ className: e, sideOffset: a = 8, children: t, ...n },
149
148
  }
150
149
  );
151
150
  v.displayName = y.displayName;
152
- const S = s.forwardRef(
151
+ const S = d.forwardRef(
153
152
  ({
154
153
  className: e,
155
- inset: a,
156
- icon: t,
154
+ inset: t,
155
+ icon: a,
157
156
  children: n,
158
157
  variant: r = "default",
159
- ...d
158
+ ...s
160
159
  }, l) => /* @__PURE__ */ u(
161
160
  Y,
162
161
  {
@@ -165,20 +164,20 @@ const S = s.forwardRef(
165
164
  "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none",
166
165
  "focus:text-kumo-default data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-overlay",
167
166
  "text-inherit no-underline",
168
- a && "pl-8",
167
+ t && "pl-8",
169
168
  D({ variant: r }),
170
169
  e
171
170
  ),
172
- ...d,
171
+ ...s,
173
172
  children: [
174
- t && f(t),
173
+ a && g(a),
175
174
  n
176
175
  ]
177
176
  }
178
177
  )
179
178
  );
180
179
  S.displayName = "DropdownMenuLinkItem";
181
- const C = s.forwardRef(({ className: e, children: a, checked: t, ...n }, r) => /* @__PURE__ */ u(
180
+ const L = d.forwardRef(({ className: e, children: t, checked: a, ...n }, r) => /* @__PURE__ */ u(
182
181
  k,
183
182
  {
184
183
  ref: r,
@@ -186,110 +185,110 @@ const C = s.forwardRef(({ className: e, children: a, checked: t, ...n }, r) => /
186
185
  "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
186
  e
188
187
  ),
189
- checked: t,
188
+ checked: a,
190
189
  ...n,
191
190
  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
191
+ /* @__PURE__ */ o(X, { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit", children: /* @__PURE__ */ o(f, { weight: "bold", size: 12 }) }),
192
+ t
194
193
  ]
195
194
  }
196
195
  ));
197
- C.displayName = k.displayName;
198
- const L = s.forwardRef(({ className: e, inset: a, ...t }, n) => /* @__PURE__ */ o(
199
- M,
196
+ L.displayName = k.displayName;
197
+ const C = d.forwardRef(({ className: e, inset: t, ...a }, n) => /* @__PURE__ */ o(
198
+ N,
200
199
  {
201
200
  ref: n,
202
201
  className: i(
203
202
  "px-2 py-1.5 text-base font-semibold",
204
- a && "pl-8",
203
+ t && "pl-8",
205
204
  e
206
205
  ),
207
- ...t
206
+ ...a
208
207
  }
209
208
  ));
210
- L.displayName = M.displayName;
211
- const T = s.forwardRef(({ className: e, ...a }, t) => /* @__PURE__ */ o(
212
- N,
209
+ C.displayName = N.displayName;
210
+ const T = d.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ o(
211
+ M,
213
212
  {
214
- ref: t,
213
+ ref: a,
215
214
  className: i("-mx-1 my-1 h-px bg-kumo-line", e),
216
- ...a
215
+ ...t
217
216
  }
218
217
  ));
219
- T.displayName = N.displayName;
218
+ T.displayName = M.displayName;
220
219
  const P = ({
221
220
  className: e,
222
- ...a
221
+ ...t
223
222
  }) => /* @__PURE__ */ o(
224
223
  "span",
225
224
  {
226
225
  className: i("ml-auto text-xs tracking-widest opacity-60", e),
227
- ...a
226
+ ...t
228
227
  }
229
228
  );
230
229
  P.displayName = "DropdownMenuShortcut";
231
- const O = s.forwardRef(({ className: e, children: a, inset: t, icon: n, ...r }, d) => /* @__PURE__ */ u(
232
- X,
230
+ const O = d.forwardRef(({ className: e, children: t, inset: a, icon: n, ...r }, s) => /* @__PURE__ */ u(
231
+ Q,
233
232
  {
234
- ref: d,
233
+ ref: s,
235
234
  className: i(
236
235
  "relative flex cursor-default items-center rounded-md px-2 py-1.5 text-base outline-hidden select-none",
237
236
  "data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-kumo-tint",
238
- t && "pl-8",
237
+ a && "pl-8",
239
238
  e
240
239
  ),
241
240
  ...r,
242
241
  children: [
243
- n && f(n),
244
- a
242
+ n && g(n),
243
+ t
245
244
  ]
246
245
  }
247
246
  ));
248
247
  O.displayName = "DropdownMenuRadioItem";
249
- const A = s.forwardRef(({ className: e, children: a, ...t }, n) => /* @__PURE__ */ o(
250
- Q,
248
+ const A = d.forwardRef(({ className: e, children: t, ...a }, n) => /* @__PURE__ */ o(
249
+ q,
251
250
  {
252
251
  ref: n,
253
252
  className: i("ml-auto", e),
254
- ...t,
255
- children: a ?? /* @__PURE__ */ o(b, { className: "h-4 w-4" })
253
+ ...a,
254
+ children: t ?? /* @__PURE__ */ o(f, { className: "h-4 w-4" })
256
255
  }
257
256
  ));
258
257
  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;
258
+ const E = d.forwardRef(({ children: e, render: t, ...a }, n) => {
259
+ const r = d.isValidElement(e) ? e : null, s = t ?? r;
261
260
  return /* @__PURE__ */ o(
262
261
  ee,
263
262
  {
264
263
  ref: n,
265
- ...t,
266
- ...d && {
267
- render: d
264
+ ...a,
265
+ ...s && {
266
+ render: s
268
267
  },
269
268
  children: r ? void 0 : e
270
269
  }
271
270
  );
272
271
  });
273
272
  E.displayName = "DropdownMenuTrigger";
274
- const le = Object.assign(B, {
273
+ const se = Object.assign(W, {
275
274
  Trigger: E,
276
275
  Portal: w,
277
- Sub: q,
276
+ Sub: J,
278
277
  SubTrigger: I,
279
278
  SubContent: x,
280
279
  Content: x,
281
280
  Item: v,
282
281
  LinkItem: S,
283
- CheckboxItem: C,
284
- RadioGroup: J,
282
+ CheckboxItem: L,
283
+ RadioGroup: H,
285
284
  RadioItem: O,
286
285
  RadioItemIndicator: A,
287
- Label: L,
286
+ Label: C,
288
287
  Separator: T,
289
288
  Shortcut: P,
290
- Group: H
289
+ Group: B
291
290
  });
292
291
  export {
293
- le as D
292
+ se as D
294
293
  };
295
- //# sourceMappingURL=dropdown-BXg01-8j.js.map
294
+ //# sourceMappingURL=dropdown-DBfVqi0v.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-DBfVqi0v.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 {\n CaretRightIcon as CaretRight,\n CheckIcon,\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 <DropdownMenuPrimitive.CheckboxItemIndicator className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center text-inherit\">\n <CheckIcon weight=\"bold\" size={12} />\n </DropdownMenuPrimitive.CheckboxItemIndicator>\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","DropdownMenuPrimitive.CheckboxItemIndicator","CheckIcon","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":"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"}