@cloudflare/kumo 2.2.2 → 2.3.1

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 (192) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/ai/component-registry.json +28 -5
  3. package/ai/component-registry.md +64 -7
  4. package/ai/schemas.ts +1 -0
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +12 -4
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +2 -0
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js +651 -0
  11. package/dist/chunks/{SankeyChart-dkq90770ad7hgzx3.js.map → SankeyChart-krkvltewpn3bbupw.js.map} +1 -1
  12. package/dist/chunks/{autocomplete-mhrvtq4y5n21vr0t.js → autocomplete-bdjo7k4zep86bwh8.js} +82 -68
  13. package/dist/chunks/autocomplete-bdjo7k4zep86bwh8.js.map +1 -0
  14. package/dist/chunks/{badge-kqox9toi0sygfbno.js → badge-e9w8qrjmeu9nocf6.js} +80 -19
  15. package/dist/chunks/badge-e9w8qrjmeu9nocf6.js.map +1 -0
  16. package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js → breadcrumbs-g4pyoikibpoxsgw4.js} +2 -2
  17. package/dist/chunks/{breadcrumbs-ohstavaqvycoremm.js.map → breadcrumbs-g4pyoikibpoxsgw4.js.map} +1 -1
  18. package/dist/chunks/{button-oevxukl0zmwoq4tb.js → button-fxdpoacmq5rv1adk.js} +2 -2
  19. package/dist/chunks/{button-oevxukl0zmwoq4tb.js.map → button-fxdpoacmq5rv1adk.js.map} +1 -1
  20. package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js → checkbox-dtoq56ieijj9m6vr.js} +3 -3
  21. package/dist/chunks/{checkbox-h6vkv17lnq854z2c.js.map → checkbox-dtoq56ieijj9m6vr.js.map} +1 -1
  22. package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js → clipboard-text-nvdsloomefwgcxat.js} +4 -4
  23. package/dist/chunks/{clipboard-text-kyy71jmx7umdh8k8.js.map → clipboard-text-nvdsloomefwgcxat.js.map} +1 -1
  24. package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js → collapsible-cnsxmp7dko87pgx0.js} +2 -2
  25. package/dist/chunks/{collapsible-ej6p2bq758sw30nk.js.map → collapsible-cnsxmp7dko87pgx0.js.map} +1 -1
  26. package/dist/chunks/{combobox-g3cudlfajecou4va.js → combobox-kjmt3aoy4sia7g0o.js} +124 -124
  27. package/dist/chunks/combobox-kjmt3aoy4sia7g0o.js.map +1 -0
  28. package/dist/chunks/{command-palette-eep807rf6iapoz8r.js → command-palette-jrq7p16tff6n46nj.js} +11 -11
  29. package/dist/chunks/{command-palette-eep807rf6iapoz8r.js.map → command-palette-jrq7p16tff6n46nj.js.map} +1 -1
  30. package/dist/chunks/dialog-gndju3sqg1lmpb3f.js +118 -0
  31. package/dist/chunks/{dialog-fo3qhv9fgiadq5gp.js.map → dialog-gndju3sqg1lmpb3f.js.map} +1 -1
  32. package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js → dropdown-k6orz4j043xybf54.js} +2 -2
  33. package/dist/chunks/{dropdown-cobpydatw4vlb3ov.js.map → dropdown-k6orz4j043xybf54.js.map} +1 -1
  34. package/dist/chunks/{empty-n3r7xutkb9sxjaso.js → empty-ni12ufom1kkakbuc.js} +2 -2
  35. package/dist/chunks/{empty-n3r7xutkb9sxjaso.js.map → empty-ni12ufom1kkakbuc.js.map} +1 -1
  36. package/dist/chunks/{field-l1oapopp6kjnephi.js → field-n16udu32tpyq5udz.js} +3 -3
  37. package/dist/chunks/{field-l1oapopp6kjnephi.js.map → field-n16udu32tpyq5udz.js.map} +1 -1
  38. package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js → input-area-hhhpgg0ev8bowtrk.js} +4 -4
  39. package/dist/chunks/{input-area-gudamx1ruz8rxiw2.js.map → input-area-hhhpgg0ev8bowtrk.js.map} +1 -1
  40. package/dist/chunks/{input-group-gy08vju7eoogil8k.js → input-group-kkw5j7rwzhj66h10.js} +70 -70
  41. package/dist/chunks/input-group-kkw5j7rwzhj66h10.js.map +1 -0
  42. package/dist/chunks/{input-i3os21puacqw4r75.js → input-mv7giprcc6hfkpq3.js} +3 -3
  43. package/dist/chunks/{input-i3os21puacqw4r75.js.map → input-mv7giprcc6hfkpq3.js.map} +1 -1
  44. package/dist/chunks/{label-i0bj94d43irz0k1x.js → label-f6yvqca8qhbpvkq8.js} +3 -3
  45. package/dist/chunks/{label-i0bj94d43irz0k1x.js.map → label-f6yvqca8qhbpvkq8.js.map} +1 -1
  46. package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js → layer-card-gegkqhkjy65l1ueo.js} +2 -2
  47. package/dist/chunks/{layer-card-hyz8lfxceudt05pv.js.map → layer-card-gegkqhkjy65l1ueo.js.map} +1 -1
  48. package/dist/chunks/{link-lkzjiitte3l29q87.js → link-jjk7qolyol7s1jkk.js} +2 -2
  49. package/dist/chunks/{link-lkzjiitte3l29q87.js.map → link-jjk7qolyol7s1jkk.js.map} +1 -1
  50. package/dist/chunks/{menubar-jalggrag4utvdpey.js → menubar-d5s6h96nw8ggy04a.js} +2 -2
  51. package/dist/chunks/{menubar-jalggrag4utvdpey.js.map → menubar-d5s6h96nw8ggy04a.js.map} +1 -1
  52. package/dist/chunks/{meter-jbxkh6gfggx1kjna.js → meter-kxn34sy6l2mz5dwq.js} +2 -2
  53. package/dist/chunks/{meter-jbxkh6gfggx1kjna.js.map → meter-kxn34sy6l2mz5dwq.js.map} +1 -1
  54. package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js → pagination-ixbq8ssuuo0jxaa4.js} +3 -3
  55. package/dist/chunks/{pagination-ceetno8sc1rd0wr2.js.map → pagination-ixbq8ssuuo0jxaa4.js.map} +1 -1
  56. package/dist/chunks/{popover-i4opvl9g0as52fyx.js → popover-js5ds3szd43kspja.js} +2 -2
  57. package/dist/chunks/{popover-i4opvl9g0as52fyx.js.map → popover-js5ds3szd43kspja.js.map} +1 -1
  58. package/dist/chunks/{radio-g56o5rftpu1qpxuv.js → radio-nyw89v4eafptepmz.js} +2 -2
  59. package/dist/chunks/{radio-g56o5rftpu1qpxuv.js.map → radio-nyw89v4eafptepmz.js.map} +1 -1
  60. package/dist/chunks/{select-g1xvti1k1hj7xe5t.js → select-o2i7aovnu8v1zv8t.js} +39 -38
  61. package/dist/chunks/{select-g1xvti1k1hj7xe5t.js.map → select-o2i7aovnu8v1zv8t.js.map} +1 -1
  62. package/dist/chunks/{sensitive-input-hokm527ollnz9dqc.js → sensitive-input-bjg6m791yz7g6bn3.js} +93 -90
  63. package/dist/chunks/sensitive-input-bjg6m791yz7g6bn3.js.map +1 -0
  64. package/dist/chunks/{sidebar-oan40ylmqkyui21w.js → sidebar-izcfqkrzt4vqn8ez.js} +37 -37
  65. package/dist/chunks/{sidebar-oan40ylmqkyui21w.js.map → sidebar-izcfqkrzt4vqn8ez.js.map} +1 -1
  66. package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js → surface-lzwbh3f5t0gxc83t.js} +2 -2
  67. package/dist/chunks/{surface-ck1nt2uqfzmod4sz.js.map → surface-lzwbh3f5t0gxc83t.js.map} +1 -1
  68. package/dist/chunks/{switch-fv0ttj24uhocvuh8.js → switch-d9cs31oj4rjtg717.js} +3 -3
  69. package/dist/chunks/{switch-fv0ttj24uhocvuh8.js.map → switch-d9cs31oj4rjtg717.js.map} +1 -1
  70. package/dist/chunks/{table-nsfcgpo93gfetrhh.js → table-c6qemc2jmv22cv3p.js} +2 -2
  71. package/dist/chunks/{table-nsfcgpo93gfetrhh.js.map → table-c6qemc2jmv22cv3p.js.map} +1 -1
  72. package/dist/chunks/{tabs-g8ier5pehjpfxauf.js → tabs-f0ztlooi91ko9g04.js} +2 -2
  73. package/dist/chunks/{tabs-g8ier5pehjpfxauf.js.map → tabs-f0ztlooi91ko9g04.js.map} +1 -1
  74. package/dist/chunks/{toast-ofqlfmddcyka091n.js → toast-ejfm5cbt9yulqhol.js} +3 -3
  75. package/dist/chunks/{toast-ofqlfmddcyka091n.js.map → toast-ejfm5cbt9yulqhol.js.map} +1 -1
  76. package/dist/chunks/{tooltip-icvb67awe1zolz61.js → tooltip-o6xfw9jjclv9pxaj.js} +16 -16
  77. package/dist/chunks/{tooltip-icvb67awe1zolz61.js.map → tooltip-o6xfw9jjclv9pxaj.js.map} +1 -1
  78. package/dist/chunks/vendor-base-ui-mzjqwv5teijixz8h.js +24703 -0
  79. package/dist/chunks/vendor-base-ui-mzjqwv5teijixz8h.js.map +1 -0
  80. package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js → vendor-floating-ui-c4mwmh0xmfzevy9l.js} +5 -5
  81. package/dist/chunks/{vendor-floating-ui-dwag5e88viikh2zs.js.map → vendor-floating-ui-c4mwmh0xmfzevy9l.js.map} +1 -1
  82. package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js +217 -0
  83. package/dist/chunks/vendor-utils-m5h2xu7s2rs3pgk5.js.map +1 -0
  84. package/dist/code.js +1 -1
  85. package/dist/components/autocomplete.js +1 -1
  86. package/dist/components/badge.js +1 -1
  87. package/dist/components/breadcrumbs.js +1 -1
  88. package/dist/components/button.js +1 -1
  89. package/dist/components/chart.js +1 -1
  90. package/dist/components/checkbox.js +1 -1
  91. package/dist/components/clipboard-text.js +1 -1
  92. package/dist/components/collapsible.js +1 -1
  93. package/dist/components/combobox.js +1 -1
  94. package/dist/components/command-palette.js +1 -1
  95. package/dist/components/dialog.js +1 -1
  96. package/dist/components/dropdown.js +1 -1
  97. package/dist/components/empty.js +1 -1
  98. package/dist/components/field.js +1 -1
  99. package/dist/components/input-group.js +1 -1
  100. package/dist/components/input.js +3 -3
  101. package/dist/components/label.js +1 -1
  102. package/dist/components/layer-card.js +1 -1
  103. package/dist/components/link.js +1 -1
  104. package/dist/components/menubar.js +1 -1
  105. package/dist/components/meter.js +1 -1
  106. package/dist/components/pagination.js +1 -1
  107. package/dist/components/popover.js +1 -1
  108. package/dist/components/radio.js +1 -1
  109. package/dist/components/select.js +1 -1
  110. package/dist/components/sensitive-input.js +1 -1
  111. package/dist/components/sidebar.js +1 -1
  112. package/dist/components/surface.js +1 -1
  113. package/dist/components/switch.js +1 -1
  114. package/dist/components/table.js +1 -1
  115. package/dist/components/tabs.js +1 -1
  116. package/dist/components/toast.js +2 -2
  117. package/dist/components/tooltip.js +1 -1
  118. package/dist/index.js +38 -38
  119. package/dist/primitives/accordion.js +1 -1
  120. package/dist/primitives/alert-dialog.js +1 -1
  121. package/dist/primitives/autocomplete.js +1 -1
  122. package/dist/primitives/avatar.js +1 -1
  123. package/dist/primitives/button.js +1 -1
  124. package/dist/primitives/checkbox-group.js +1 -1
  125. package/dist/primitives/checkbox.js +1 -1
  126. package/dist/primitives/collapsible.js +1 -1
  127. package/dist/primitives/combobox.js +1 -1
  128. package/dist/primitives/context-menu.js +1 -1
  129. package/dist/primitives/csp-provider.js +1 -1
  130. package/dist/primitives/dialog.js +1 -1
  131. package/dist/primitives/direction-provider.js +1 -1
  132. package/dist/primitives/drawer.js +1 -1
  133. package/dist/primitives/field.js +1 -1
  134. package/dist/primitives/fieldset.js +1 -1
  135. package/dist/primitives/form.js +1 -1
  136. package/dist/primitives/input.js +1 -1
  137. package/dist/primitives/menu.js +1 -1
  138. package/dist/primitives/menubar.js +1 -1
  139. package/dist/primitives/meter.js +1 -1
  140. package/dist/primitives/navigation-menu.js +1 -1
  141. package/dist/primitives/number-field.js +1 -1
  142. package/dist/primitives/otp-field.js +1 -1
  143. package/dist/primitives/popover.js +1 -1
  144. package/dist/primitives/preview-card.js +1 -1
  145. package/dist/primitives/progress.js +1 -1
  146. package/dist/primitives/radio-group.js +1 -1
  147. package/dist/primitives/radio.js +1 -1
  148. package/dist/primitives/scroll-area.js +1 -1
  149. package/dist/primitives/select.js +1 -1
  150. package/dist/primitives/separator.js +1 -1
  151. package/dist/primitives/slider.js +1 -1
  152. package/dist/primitives/switch.js +1 -1
  153. package/dist/primitives/tabs.js +1 -1
  154. package/dist/primitives/toast.js +1 -1
  155. package/dist/primitives/toggle-group.js +1 -1
  156. package/dist/primitives/toggle.js +1 -1
  157. package/dist/primitives/toolbar.js +1 -1
  158. package/dist/primitives/tooltip.js +1 -1
  159. package/dist/primitives.js +1 -1
  160. package/dist/scripts/theme-generator/config.js +3 -3
  161. package/dist/scripts/theme-generator/config.js.map +1 -1
  162. package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -1
  163. package/dist/src/components/badge/badge.d.ts +51 -3
  164. package/dist/src/components/badge/badge.d.ts.map +1 -1
  165. package/dist/src/components/chart/SankeyChart.d.ts +6 -1
  166. package/dist/src/components/chart/SankeyChart.d.ts.map +1 -1
  167. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  168. package/dist/src/components/dialog/dialog.d.ts +11 -4
  169. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  170. package/dist/src/components/input-group/input-group-button.d.ts.map +1 -1
  171. package/dist/src/components/input-group/input-group-input.d.ts.map +1 -1
  172. package/dist/src/components/input-group/input-group.d.ts.map +1 -1
  173. package/dist/src/components/select/select.d.ts.map +1 -1
  174. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  175. package/dist/src/components/toast/toast.d.ts.map +1 -1
  176. package/dist/styles/kumo-binding.css +0 -18
  177. package/dist/styles/kumo-standalone.css +1 -1
  178. package/dist/styles/theme-kumo.css +6 -6
  179. package/package.json +2 -2
  180. package/scripts/generate-primitives.ts +6 -1
  181. package/scripts/theme-generator/config.ts +3 -3
  182. package/dist/chunks/SankeyChart-dkq90770ad7hgzx3.js +0 -635
  183. package/dist/chunks/autocomplete-mhrvtq4y5n21vr0t.js.map +0 -1
  184. package/dist/chunks/badge-kqox9toi0sygfbno.js.map +0 -1
  185. package/dist/chunks/combobox-g3cudlfajecou4va.js.map +0 -1
  186. package/dist/chunks/dialog-fo3qhv9fgiadq5gp.js +0 -115
  187. package/dist/chunks/input-group-gy08vju7eoogil8k.js.map +0 -1
  188. package/dist/chunks/sensitive-input-hokm527ollnz9dqc.js.map +0 -1
  189. package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js +0 -24639
  190. package/dist/chunks/vendor-base-ui-nbyiqqi138hcoz52.js.map +0 -1
  191. package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js +0 -534
  192. package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js.map +0 -1
@@ -1,87 +1,90 @@
1
1
  "use client";
2
- import { jsxs as y, Fragment as ce, jsx as a } from "react/jsx-runtime";
2
+ import { jsxs as b, Fragment as ce, jsx as a } from "react/jsx-runtime";
3
3
  import { EyeSlash as ue, Eye as pe } from "@phosphor-icons/react";
4
- import { forwardRef as de, useState as C, useRef as N, useId as T, useCallback as c, useEffect as fe } from "react";
4
+ import { forwardRef as de, useState as C, useRef as N, useId as T, useCallback as c, useEffect as me } from "react";
5
5
  import { c as p } from "./cn-ct4n7r74mh8y0f48.js";
6
- import { K as me, i as he } from "./input-i3os21puacqw4r75.js";
7
- import { F as ge } from "./field-l1oapopp6kjnephi.js";
8
- import { I as ve } from "./vendor-base-ui-nbyiqqi138hcoz52.js";
9
- const Te = me, M = {
6
+ import { K as fe, i as he } from "./input-mv7giprcc6hfkpq3.js";
7
+ import { F as ve } from "./field-n16udu32tpyq5udz.js";
8
+ import { I as ge } from "./vendor-base-ui-mzjqwv5teijixz8h.js";
9
+ const Se = fe, ye = {
10
10
  size: "base",
11
11
  variant: "default"
12
12
  }, be = de(
13
13
  ({
14
- value: R,
14
+ value: S,
15
15
  defaultValue: B = "",
16
- onChange: S,
17
- onValueChange: E,
16
+ onChange: E,
17
+ onValueChange: R,
18
18
  onCopy: k,
19
- size: t = M.size,
20
- variant: j = M.variant,
21
- disabled: r = !1,
19
+ size: t = ye.size,
20
+ variant: V,
21
+ disabled: i = !1,
22
22
  readOnly: d = !1,
23
- id: $,
24
- autoComplete: H = "off",
25
- className: L,
26
- label: v,
27
- labelTooltip: X,
28
- description: Y,
29
- error: b,
30
- required: W,
31
- ...q
23
+ id: j,
24
+ autoComplete: $ = "off",
25
+ className: H,
26
+ label: y,
27
+ labelTooltip: L,
28
+ description: X,
29
+ error: m,
30
+ required: Y,
31
+ ...O
32
32
  }, f) => {
33
- const G = typeof v == "string" ? v : "Sensitive value", x = R !== void 0, [J, O] = C(B), m = x ? R : J, o = m.length > 0, [n, l] = C(
33
+ process.env.NODE_ENV !== "production" && V === "error" && console.warn(
34
+ '[Kumo SensitiveInput]: variant="error" is deprecated. Error styling is now automatically applied when the `error` prop is truthy. Simply remove the variant prop and pass an error message instead.'
35
+ );
36
+ const W = V ?? (m ? "error" : "default"), q = typeof y == "string" ? y : "Sensitive value", x = S !== void 0, [G, J] = C(B), h = x ? S : G, o = h.length > 0, [n, l] = C(
34
37
  () => o ? "masked" : "empty"
35
- ), [h, w] = C(!1), I = N(null), u = N(null), V = T(), Q = T(), Z = $ ?? Q, K = T(), z = c(
38
+ ), [v, w] = C(!1), I = N(null), u = N(null), K = T(), Q = T(), Z = j ?? Q, A = T(), z = c(
36
39
  (e) => {
37
40
  I.current = e, typeof f == "function" ? f(e) : f && (f.current = e);
38
41
  },
39
42
  [f]
40
43
  );
41
- fe(() => {
42
- if (h) {
44
+ me(() => {
45
+ if (v) {
43
46
  const e = setTimeout(() => w(!1), 2e3);
44
47
  return () => clearTimeout(e);
45
48
  }
46
- }, [h]);
49
+ }, [v]);
47
50
  const ee = c(
48
51
  async (e) => {
49
52
  e.stopPropagation();
50
53
  try {
51
54
  if (typeof navigator < "u" && navigator.clipboard && typeof navigator.clipboard.writeText == "function") {
52
- await navigator.clipboard.writeText(m), w(!0), k?.();
55
+ await navigator.clipboard.writeText(h), w(!0), k?.();
53
56
  return;
54
57
  }
55
58
  } catch {
56
59
  }
57
60
  if (typeof document < "u") {
58
- const i = document.createElement("textarea");
59
- i.value = m, i.setAttribute("readonly", ""), i.style.position = "absolute", i.style.left = "-9999px", document.body.appendChild(i);
60
- const g = document.getSelection(), F = g?.rangeCount ? g.getRangeAt(0) : null;
61
- i.select();
61
+ const r = document.createElement("textarea");
62
+ r.value = h, r.setAttribute("readonly", ""), r.style.position = "absolute", r.style.left = "-9999px", document.body.appendChild(r);
63
+ const g = document.getSelection(), M = g?.rangeCount ? g.getRangeAt(0) : null;
64
+ r.select();
62
65
  try {
63
66
  document.execCommand("copy"), w(!0), k?.();
64
67
  } catch (le) {
65
68
  console.warn("Clipboard copy failed", le);
66
69
  } finally {
67
- document.body.removeChild(i), F && (g?.removeAllRanges(), g?.addRange(F));
70
+ document.body.removeChild(r), M && (g?.removeAllRanges(), g?.addRange(M));
68
71
  }
69
72
  }
70
73
  },
71
- [m, k]
72
- ), A = N(o);
73
- A.current !== o && (A.current = o, !o && n === "masked" && l("empty"));
74
+ [h, k]
75
+ ), _ = N(o);
76
+ _.current !== o && (_.current = o, !o && n === "masked" && l("empty"));
74
77
  const te = c(
75
78
  (e) => {
76
- if (!r) {
79
+ if (!i) {
77
80
  if (u.current) {
78
- const i = u.current.getBoundingClientRect();
79
- if (!(e.clientX >= i.left && e.clientX <= i.right && e.clientY >= i.top && e.clientY <= i.bottom)) return;
81
+ const r = u.current.getBoundingClientRect();
82
+ if (!(e.clientX >= r.left && e.clientX <= r.right && e.clientY >= r.top && e.clientY <= r.bottom)) return;
80
83
  }
81
84
  n === "masked" && o && (l("revealed"), d || setTimeout(() => I.current?.focus(), 0));
82
85
  }
83
86
  },
84
- [n, o, r, d]
87
+ [n, o, i, d]
85
88
  ), ne = c(
86
89
  (e) => {
87
90
  e.stopPropagation(), n === "revealed" ? l("masked") : n === "empty" && o && l("revealed");
@@ -89,47 +92,47 @@ const Te = me, M = {
89
92
  [n, o]
90
93
  ), oe = c(
91
94
  (e) => {
92
- const i = e.target.value;
93
- x || O(i), n === "empty" && i.length > 0 && l("revealed"), S?.(e), E?.(i);
95
+ const r = e.target.value;
96
+ x || J(r), n === "empty" && r.length > 0 && l("revealed"), E?.(e), R?.(r);
94
97
  },
95
- [x, S, E, n]
96
- ), ie = c(
98
+ [x, E, R, n]
99
+ ), re = c(
97
100
  (e) => {
98
101
  u.current && e.relatedTarget instanceof Node && u.current.contains(e.relatedTarget) || o && l("masked");
99
102
  },
100
103
  [o]
101
- ), re = c(
104
+ ), ie = c(
102
105
  (e) => {
103
- r || n === "masked" && o && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), l("revealed"), d || setTimeout(() => I.current?.focus(), 0));
106
+ i || n === "masked" && o && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), l("revealed"), d || setTimeout(() => I.current?.focus(), 0));
104
107
  },
105
- [n, o, r, d]
108
+ [n, o, i, d]
106
109
  ), ae = c(
107
110
  (e) => {
108
111
  n === "revealed" && e.key === "Escape" && (l("masked"), setTimeout(() => u.current?.focus(), 0));
109
112
  },
110
113
  [n]
111
- ), s = n === "masked" && o, _ = !r && (n === "revealed" || n === "empty" && o), se = t === "xs" || t === "sm" ? "size-3" : "size-4", D = p(
112
- he({ size: t, variant: j, parentFocusIndicator: !0 }),
114
+ ), s = n === "masked" && o, D = !i && (n === "revealed" || n === "empty" && o), se = t === "xs" || t === "sm" ? "size-3" : "size-4", U = p(
115
+ he({ size: t, variant: W, parentFocusIndicator: !0 }),
113
116
  "group/container relative flex w-full items-center",
114
117
  // Show browser-native focus outline on container when child input is focused
115
118
  "focus-within:outline focus-within:outline-2 focus-within:outline-kumo-focus",
116
- s && !r && "cursor-pointer",
117
- r && "cursor-not-allowed",
118
- L
119
- ), P = /* @__PURE__ */ y(ce, { children: [
119
+ s && !i && "cursor-pointer",
120
+ i && "cursor-not-allowed",
121
+ H
122
+ ), F = /* @__PURE__ */ b(ce, { children: [
120
123
  /* @__PURE__ */ a(
121
- ve,
124
+ ge,
122
125
  {
123
126
  ref: z,
124
127
  id: Z,
125
128
  type: n === "revealed" ? "text" : "password",
126
- value: m,
129
+ value: h,
127
130
  onChange: oe,
128
- onBlur: ie,
131
+ onBlur: re,
129
132
  onKeyDown: ae,
130
- disabled: r,
133
+ disabled: i,
131
134
  readOnly: d || s,
132
- autoComplete: H,
135
+ autoComplete: $,
133
136
  tabIndex: s ? -1 : 0,
134
137
  className: p(
135
138
  "w-full border-0 bg-transparent p-0 text-kumo-default ring-0 outline-none kumo-input-placeholder disabled:cursor-not-allowed disabled:text-kumo-subtle",
@@ -140,7 +143,7 @@ const Te = me, M = {
140
143
  s && "pointer-events-none text-transparent"
141
144
  ),
142
145
  "aria-hidden": s,
143
- ...q
146
+ ...O
144
147
  }
145
148
  ),
146
149
  /* @__PURE__ */ a(
@@ -168,17 +171,17 @@ const Te = me, M = {
168
171
  "group/mask"
169
172
  ),
170
173
  "aria-hidden": "true",
171
- children: /* @__PURE__ */ y("span", { className: "relative", children: [
174
+ children: /* @__PURE__ */ b("span", { className: "relative", children: [
172
175
  /* @__PURE__ */ a(
173
176
  "span",
174
177
  {
175
178
  className: p(
176
- s && !r && "group-focus-within/container:invisible group-hover/mask:invisible"
179
+ s && !i && "group-focus-within/container:invisible group-hover/mask:invisible"
177
180
  ),
178
181
  children: "••••••••"
179
182
  }
180
183
  ),
181
- s && !r && /* @__PURE__ */ a("span", { className: "invisible absolute left-0 top-0 whitespace-nowrap text-kumo-subtle group-focus-within/container:visible group-hover/mask:visible", children: "Click to reveal" })
184
+ s && !i && /* @__PURE__ */ a("span", { className: "invisible absolute left-0 top-0 whitespace-nowrap text-kumo-subtle group-focus-within/container:visible group-hover/mask:visible", children: "Click to reveal" })
182
185
  ] })
183
186
  }
184
187
  ),
@@ -189,7 +192,7 @@ const Te = me, M = {
189
192
  onClick: ne,
190
193
  onKeyDown: (e) => e.stopPropagation(),
191
194
  "aria-label": n === "revealed" ? "Hide value" : "Reveal value",
192
- tabIndex: _ ? 0 : -1,
195
+ tabIndex: D ? 0 : -1,
193
196
  className: p(
194
197
  "absolute top-1/2 right-0 -translate-y-1/2 cursor-pointer text-kumo-subtle hover:text-kumo-default focus:text-kumo-default focus:ring-kumo-focus/50 focus-visible:ring-2 focus-visible:ring-kumo-brand focus-visible:rounded-sm",
195
198
  // Defensive styles to prevent global CSS pollution (e.g., button { background: gray })
@@ -200,65 +203,65 @@ const Te = me, M = {
200
203
  t === "base" && "right-3",
201
204
  t === "lg" && "right-4",
202
205
  se,
203
- !_ && "pointer-events-none opacity-0"
206
+ !D && "pointer-events-none opacity-0"
204
207
  ),
205
208
  children: n === "revealed" ? /* @__PURE__ */ a(ue, { className: "size-full" }) : /* @__PURE__ */ a(pe, { className: "size-full" })
206
209
  }
207
210
  ),
208
- o && !r && /* @__PURE__ */ a(
211
+ o && !i && /* @__PURE__ */ a(
209
212
  "button",
210
213
  {
211
214
  type: "button",
212
215
  onClick: ee,
213
216
  onKeyDown: (e) => e.stopPropagation(),
214
- "aria-label": h ? "Copied" : "Copy to clipboard",
217
+ "aria-label": v ? "Copied" : "Copy to clipboard",
215
218
  className: p(
216
219
  "absolute -top-px right-2 -translate-y-full cursor-pointer rounded-t-md bg-kumo-brand px-2 py-0.5 text-xs text-white opacity-0 transition-opacity group-focus-within/container:opacity-100 group-hover/container:opacity-100 hover:brightness-120 focus:outline-none focus:ring-kumo-focus/50 focus-visible:ring-2 focus-visible:ring-kumo-brand",
217
220
  // Defensive styles to prevent global CSS pollution
218
221
  "border-none shadow-none m-0 h-auto min-h-0"
219
222
  ),
220
- children: h ? "Copied" : "Copy"
223
+ children: v ? "Copied" : "Copy"
221
224
  }
222
225
  )
223
- ] }), U = /* @__PURE__ */ y("div", { children: [
226
+ ] }), P = /* @__PURE__ */ b("div", { children: [
224
227
  s ? /* @__PURE__ */ a(
225
228
  "div",
226
229
  {
227
230
  ref: u,
228
231
  role: "button",
229
- tabIndex: r ? -1 : 0,
230
- className: D,
232
+ tabIndex: i ? -1 : 0,
233
+ className: U,
231
234
  onClick: te,
232
- onKeyDown: re,
233
- "aria-label": `${G}, masked.`,
234
- "aria-describedby": `${K} ${V}`,
235
- "aria-disabled": r,
236
- children: P
235
+ onKeyDown: ie,
236
+ "aria-label": `${q}, masked.`,
237
+ "aria-describedby": `${A} ${K}`,
238
+ "aria-disabled": i,
239
+ children: F
237
240
  }
238
- ) : /* @__PURE__ */ a("div", { ref: u, className: D, children: P }),
239
- s && /* @__PURE__ */ a("span", { id: K, className: "sr-only", children: "Click or press Enter to reveal." }),
240
- /* @__PURE__ */ y("span", { id: V, className: "sr-only", "aria-live": "polite", children: [
241
+ ) : /* @__PURE__ */ a("div", { ref: u, className: U, children: F }),
242
+ s && /* @__PURE__ */ a("span", { id: A, className: "sr-only", children: "Click or press Enter to reveal." }),
243
+ /* @__PURE__ */ b("span", { id: K, className: "sr-only", "aria-live": "polite", children: [
241
244
  n === "masked" && o && "Value hidden",
242
- h && "Copied to clipboard"
245
+ v && "Copied to clipboard"
243
246
  ] })
244
247
  ] });
245
- return v ? /* @__PURE__ */ a(
246
- ge,
248
+ return y ? /* @__PURE__ */ a(
249
+ ve,
247
250
  {
248
- label: v,
249
- required: W,
250
- labelTooltip: X,
251
- description: Y,
252
- error: b ? typeof b == "string" ? { message: b, match: !0 } : b : void 0,
253
- children: U
251
+ label: y,
252
+ required: Y,
253
+ labelTooltip: L,
254
+ description: X,
255
+ error: m ? typeof m == "string" ? { message: m, match: !0 } : m : void 0,
256
+ children: P
254
257
  }
255
- ) : U;
258
+ ) : P;
256
259
  }
257
260
  );
258
261
  be.displayName = "SensitiveInput";
259
262
  export {
260
- Te as K,
263
+ Se as K,
261
264
  be as S,
262
- M as a
265
+ ye as a
263
266
  };
264
- //# sourceMappingURL=sensitive-input-hokm527ollnz9dqc.js.map
267
+ //# sourceMappingURL=sensitive-input-bjg6m791yz7g6bn3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensitive-input-bjg6m791yz7g6bn3.js","sources":["../../src/components/sensitive-input/sensitive-input.tsx"],"sourcesContent":["import { Eye, EyeSlash } from \"@phosphor-icons/react\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Input as BaseInput } from \"@base-ui/react/input\";\nimport {\n inputVariants,\n KUMO_INPUT_VARIANTS,\n type KumoInputSize,\n type KumoInputVariant,\n} from \"../input/input\";\nimport { Field, type FieldErrorMatch } from \"../field/field\";\n\nexport const KUMO_SENSITIVE_INPUT_VARIANTS = KUMO_INPUT_VARIANTS;\n\nexport const KUMO_SENSITIVE_INPUT_DEFAULT_VARIANTS = {\n size: \"base\",\n variant: \"default\",\n} as const;\n\ntype Mode = \"masked\" | \"revealed\" | \"empty\";\n\n/**\n * SensitiveInput component props.\n *\n * @example\n * ```tsx\n * <SensitiveInput label=\"API Key\" defaultValue=\"sk_live_abc123xyz789\" />\n * <SensitiveInput label=\"Secret\" value={secret} onValueChange={setSecret} />\n * ```\n */\nexport interface SensitiveInputProps\n extends Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"size\" | \"type\" | \"value\" | \"defaultValue\"\n > {\n /** Controlled value */\n value?: string;\n /** Uncontrolled default value */\n defaultValue?: string;\n /** Simplified change handler receiving just the value */\n onValueChange?: (value: string) => void;\n /** Callback fired after value is copied to clipboard */\n onCopy?: () => void;\n /**\n * Size of the input.\n * - `\"xs\"` — Extra small for compact UIs\n * - `\"sm\"` — Small for secondary fields\n * - `\"base\"` — Default input size\n * - `\"lg\"` — Large for prominent fields\n * @default \"base\"\n */\n size?: KumoInputSize;\n /**\n * Style variant of the input.\n * - `\"default\"` — Default input appearance\n * - `\"error\"` — Error state for validation failures\n * @default \"default\"\n */\n variant?: KumoInputVariant;\n /** Label content for the input (enables Field wrapper and sets masked state label) - can be a string or any React node */\n label?: ReactNode;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /** Helper text displayed below the input */\n description?: ReactNode;\n /** Error message or validation error object */\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n}\n\n/**\n * Password/secret input that masks its value by default and reveals on click.\n * Includes a built-in copy-to-clipboard button on hover.\n *\n * @example\n * ```tsx\n * <SensitiveInput label=\"API Key\" defaultValue=\"sk_live_abc123xyz789\" />\n * ```\n */\nexport const SensitiveInput = forwardRef<HTMLInputElement, SensitiveInputProps>(\n (\n {\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onValueChange,\n onCopy,\n size = KUMO_SENSITIVE_INPUT_DEFAULT_VARIANTS.size,\n variant: variantProp,\n disabled = false,\n readOnly = false,\n id,\n autoComplete = \"off\",\n className,\n label,\n labelTooltip,\n description,\n error,\n required,\n ...inputProps\n },\n ref,\n ) => {\n // Deprecation warning for variant=\"error\"\n if (process.env.NODE_ENV !== \"production\" && variantProp === \"error\") {\n console.warn(\n '[Kumo SensitiveInput]: variant=\"error\" is deprecated. ' +\n \"Error styling is now automatically applied when the `error` prop is truthy. \" +\n \"Simply remove the variant prop and pass an error message instead.\",\n );\n }\n\n // Auto-apply error styling when error prop is truthy\n // Explicit variant prop takes precedence for backwards compatibility\n const variant = variantProp ?? (error ? \"error\" : \"default\");\n // For aria-label, only use string labels (ReactNode labels can't be used for aria-label)\n const ariaLabelFallback =\n typeof label === \"string\" ? label : \"Sensitive value\";\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n const hasValue = value.length > 0;\n\n const [mode, setMode] = useState<Mode>(() =>\n hasValue ? \"masked\" : \"empty\",\n );\n\n const [copied, setCopied] = useState(false);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const liveRegionId = useId();\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const maskedInstructionId = useId();\n\n const mergedRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n // Reset copied state after 2 seconds\n useEffect(() => {\n if (copied) {\n const timeoutId = setTimeout(() => setCopied(false), 2000);\n return () => clearTimeout(timeoutId);\n }\n }, [copied]);\n\n const copyToClipboard = useCallback(\n async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.clipboard &&\n typeof navigator.clipboard.writeText === \"function\"\n ) {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n onCopy?.();\n return;\n }\n } catch {\n // Fall through to manual fallback\n }\n\n if (typeof document !== \"undefined\") {\n const textarea = document.createElement(\"textarea\");\n textarea.value = value;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.style.position = \"absolute\";\n textarea.style.left = \"-9999px\";\n document.body.appendChild(textarea);\n const selection = document.getSelection();\n const previousRange = selection?.rangeCount\n ? selection.getRangeAt(0)\n : null;\n textarea.select();\n try {\n document.execCommand(\"copy\");\n setCopied(true);\n onCopy?.();\n } catch (error) {\n console.warn(\"Clipboard copy failed\", error);\n } finally {\n document.body.removeChild(textarea);\n if (previousRange) {\n selection?.removeAllRanges();\n selection?.addRange(previousRange);\n }\n }\n }\n },\n [value, onCopy],\n );\n\n // Sync mode when value changes externally\n const prevHasValueRef = useRef(hasValue);\n if (prevHasValueRef.current !== hasValue) {\n prevHasValueRef.current = hasValue;\n if (!hasValue && mode === \"masked\") {\n setMode(\"empty\");\n }\n }\n\n const handleContainerClick = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return;\n // Ignore clicks that originated from outside (e.g., label click focusing input)\n // Label clicks trigger a click on the input, but the click coordinates are outside the container\n if (containerRef.current) {\n const rect = containerRef.current.getBoundingClientRect();\n const isClickInsideContainer =\n e.clientX >= rect.left &&\n e.clientX <= rect.right &&\n e.clientY >= rect.top &&\n e.clientY <= rect.bottom;\n if (!isClickInsideContainer) return;\n }\n if (mode === \"masked\" && hasValue) {\n setMode(\"revealed\");\n if (!readOnly) {\n setTimeout(() => inputRef.current?.focus(), 0);\n }\n }\n },\n [mode, hasValue, disabled, readOnly],\n );\n\n const handleToggleVisibility = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n if (mode === \"revealed\") {\n setMode(\"masked\");\n } else if (mode === \"empty\" && hasValue) {\n setMode(\"revealed\");\n }\n },\n [mode, hasValue],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (!isControlled) {\n setInternalValue(newValue);\n }\n // When typing into an empty field, switch to revealed mode\n // so the input shows as type=\"text\" instead of type=\"password\"\n if (mode === \"empty\" && newValue.length > 0) {\n setMode(\"revealed\");\n }\n onChange?.(e);\n onValueChange?.(newValue);\n },\n [isControlled, onChange, onValueChange, mode],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n // Don't mask if focus is moving to a button inside the container (copy/eye buttons)\n if (\n containerRef.current &&\n e.relatedTarget instanceof Node &&\n containerRef.current.contains(e.relatedTarget)\n ) {\n return;\n }\n if (hasValue) {\n setMode(\"masked\");\n }\n },\n [hasValue],\n );\n\n const handleContainerKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (mode === \"masked\" && hasValue) {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setMode(\"revealed\");\n if (!readOnly) {\n setTimeout(() => inputRef.current?.focus(), 0);\n }\n }\n }\n },\n [mode, hasValue, disabled, readOnly],\n );\n\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (mode === \"revealed\" && e.key === \"Escape\") {\n setMode(\"masked\");\n // Move focus to container to avoid focus trap (input becomes tabIndex={-1})\n setTimeout(() => containerRef.current?.focus(), 0);\n }\n },\n [mode],\n );\n\n const isMaskedWithValue = mode === \"masked\" && hasValue;\n const showEyeButton =\n !disabled && (mode === \"revealed\" || (mode === \"empty\" && hasValue));\n\n // Icon sizes matching input sizes\n const iconSize = size === \"xs\" || size === \"sm\" ? \"size-3\" : \"size-4\";\n\n const containerClassName = cn(\n inputVariants({ size, variant, parentFocusIndicator: true }),\n \"group/container relative flex w-full items-center\",\n // Show browser-native focus outline on container when child input is focused\n \"focus-within:outline focus-within:outline-2 focus-within:outline-kumo-focus\",\n isMaskedWithValue && !disabled && \"cursor-pointer\",\n disabled && \"cursor-not-allowed\",\n className,\n );\n\n const containerContent = (\n <>\n {/* Input - defines the width, always rendered */}\n <BaseInput\n ref={mergedRef}\n id={inputId}\n type={mode === \"revealed\" ? \"text\" : \"password\"}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleInputKeyDown}\n disabled={disabled}\n readOnly={readOnly || isMaskedWithValue}\n autoComplete={autoComplete}\n tabIndex={isMaskedWithValue ? -1 : 0}\n className={cn(\n \"w-full border-0 bg-transparent p-0 text-kumo-default ring-0 outline-none kumo-input-placeholder disabled:cursor-not-allowed disabled:text-kumo-subtle\",\n size === \"xs\" && \"pr-5\",\n size === \"sm\" && \"pr-6\",\n size === \"base\" && \"pr-8\",\n size === \"lg\" && \"pr-10\",\n isMaskedWithValue && \"pointer-events-none text-transparent\",\n )}\n aria-hidden={isMaskedWithValue}\n {...inputProps}\n />\n\n {/* Mask overlay - absolutely positioned, doesn't affect layout */}\n <span\n className={cn(\n \"pointer-events-none absolute inset-y-0 left-0 flex items-center overflow-hidden select-none\",\n // Match input pr padding (space for icon)\n size === \"xs\" && \"right-5\",\n size === \"sm\" && \"right-6\",\n size === \"base\" && \"right-8\",\n size === \"lg\" && \"right-10\",\n // Match the padding from inputVariants\n size === \"xs\" && \"px-1.5\",\n size === \"sm\" && \"px-2\",\n size === \"base\" && \"px-3\",\n size === \"lg\" && \"px-4\",\n // Hidden when not masked\n !isMaskedWithValue && \"invisible\",\n // When masked: enable pointer events\n isMaskedWithValue && \"pointer-events-auto\",\n // Text color - use text-kumo-default to contrast with bg-kumo-control input background\n \"text-kumo-default\",\n // Hover state - pure CSS, no React state (group for children)\n \"group/mask\",\n )}\n aria-hidden=\"true\"\n >\n {/* Both texts rendered, stacked. Visibility toggled on hover to prevent layout shift */}\n <span className=\"relative\">\n <span\n className={cn(\n isMaskedWithValue &&\n !disabled &&\n \"group-focus-within/container:invisible group-hover/mask:invisible\",\n )}\n >\n ••••••••\n </span>\n {isMaskedWithValue && !disabled && (\n <span className=\"invisible absolute left-0 top-0 whitespace-nowrap text-kumo-subtle group-focus-within/container:visible group-hover/mask:visible\">\n Click to reveal\n </span>\n )}\n </span>\n </span>\n\n {/* Eye button - absolutely positioned to the right */}\n <button\n type=\"button\"\n onClick={handleToggleVisibility}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={mode === \"revealed\" ? \"Hide value\" : \"Reveal value\"}\n tabIndex={showEyeButton ? 0 : -1}\n className={cn(\n \"absolute top-1/2 right-0 -translate-y-1/2 cursor-pointer text-kumo-subtle hover:text-kumo-default focus:text-kumo-default focus:ring-kumo-focus/50 focus-visible:ring-2 focus-visible:ring-kumo-brand focus-visible:rounded-sm\",\n // Defensive styles to prevent global CSS pollution (e.g., button { background: gray })\n \"bg-transparent border-none shadow-none p-0 m-0 h-auto min-h-0 inline-flex items-center justify-center\",\n // Match right padding from inputVariants\n size === \"xs\" && \"right-1.5\",\n size === \"sm\" && \"right-2\",\n size === \"base\" && \"right-3\",\n size === \"lg\" && \"right-4\",\n iconSize,\n !showEyeButton && \"pointer-events-none opacity-0\",\n )}\n >\n {mode === \"revealed\" ? (\n <EyeSlash className=\"size-full\" />\n ) : (\n <Eye className=\"size-full\" />\n )}\n </button>\n\n {/* Copy tab - appears on hover/focus at top right (hidden when disabled) */}\n {hasValue && !disabled && (\n <button\n type=\"button\"\n onClick={copyToClipboard}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n className={cn(\n \"absolute -top-px right-2 -translate-y-full cursor-pointer rounded-t-md bg-kumo-brand px-2 py-0.5 text-xs text-white opacity-0 transition-opacity group-focus-within/container:opacity-100 group-hover/container:opacity-100 hover:brightness-120 focus:outline-none focus:ring-kumo-focus/50 focus-visible:ring-2 focus-visible:ring-kumo-brand\",\n // Defensive styles to prevent global CSS pollution\n \"border-none shadow-none m-0 h-auto min-h-0\",\n )}\n >\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n )}\n </>\n );\n\n const input = (\n <div>\n {isMaskedWithValue ? (\n <div\n ref={containerRef}\n // Cannot use <button> here because containerContent contains interactive button elements (Copy, Reveal).\n // Using role=\"button\" with proper keyboard handling instead.\n // oxlint-disable-next-line prefer-tag-over-role\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n className={containerClassName}\n onClick={handleContainerClick}\n onKeyDown={handleContainerKeyDown}\n aria-label={`${ariaLabelFallback}, masked.`}\n aria-describedby={`${maskedInstructionId} ${liveRegionId}`}\n aria-disabled={disabled}\n >\n {containerContent}\n </div>\n ) : (\n <div ref={containerRef} className={containerClassName}>\n {containerContent}\n </div>\n )}\n {isMaskedWithValue && (\n <span id={maskedInstructionId} className=\"sr-only\">\n Click or press Enter to reveal.\n </span>\n )}\n <span id={liveRegionId} className=\"sr-only\" aria-live=\"polite\">\n {mode === \"masked\" && hasValue && \"Value hidden\"}\n {copied && \"Copied to clipboard\"}\n </span>\n </div>\n );\n\n // Render with Field wrapper if label is provided\n if (label) {\n return (\n <Field\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n description={description}\n error={\n error\n ? typeof error === \"string\"\n ? { message: error, match: true }\n : error\n : undefined\n }\n >\n {input}\n </Field>\n );\n }\n\n // Render bare input without Field wrapper\n return input;\n },\n);\n\nSensitiveInput.displayName = \"SensitiveInput\";\n"],"names":["KUMO_SENSITIVE_INPUT_VARIANTS","KUMO_INPUT_VARIANTS","KUMO_SENSITIVE_INPUT_DEFAULT_VARIANTS","SensitiveInput","forwardRef","controlledValue","defaultValue","onChange","onValueChange","onCopy","size","variantProp","disabled","readOnly","id","autoComplete","className","label","labelTooltip","description","error","required","inputProps","ref","variant","ariaLabelFallback","isControlled","internalValue","setInternalValue","useState","value","hasValue","mode","setMode","copied","setCopied","inputRef","useRef","containerRef","liveRegionId","useId","generatedId","inputId","maskedInstructionId","mergedRef","useCallback","node","useEffect","timeoutId","copyToClipboard","textarea","selection","previousRange","prevHasValueRef","handleContainerClick","rect","handleToggleVisibility","handleChange","newValue","handleBlur","handleContainerKeyDown","handleInputKeyDown","isMaskedWithValue","showEyeButton","iconSize","containerClassName","cn","inputVariants","containerContent","jsxs","Fragment","jsx","BaseInput","EyeSlash","Eye","input","Field"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { jsx as s, jsxs as P, Fragment as ke } from "react/jsx-runtime";
3
- import ye, { forwardRef as u, useState as y, useCallback as D, useMemo as W, createContext as A, useContext as R, useRef as L, useEffect as Ne } from "react";
2
+ import { jsx as s, jsxs as A, Fragment as ye } from "react/jsx-runtime";
3
+ import ke, { forwardRef as u, useState as k, useCallback as D, useMemo as W, createContext as E, useContext as R, useRef as O, useEffect as Ne } from "react";
4
4
  import { CaretRightIcon as F, MagnifyingGlassIcon as Ce, SidebarSimpleIcon as Me } from "@phosphor-icons/react";
5
5
  import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
6
6
  import { u as X } from "./link-provider-mn2voeohon7cj9o4.js";
7
- import { a as Ie, T as Re } from "./tooltip-icvb67awe1zolz61.js";
8
- import { aO as U, aQ as V, aq as Te, av as ze, aw as _e, ax as Be, aP as De } from "./vendor-base-ui-nbyiqqi138hcoz52.js";
7
+ import { a as Ie, T as Re } from "./tooltip-o6xfw9jjclv9pxaj.js";
8
+ import { aP as U, aR as V, aq as Te, aw as ze, ax as _e, ay as Be, aQ as De } from "./vendor-base-ui-mzjqwv5teijixz8h.js";
9
9
  const $e = {
10
10
  variant: {
11
11
  sidebar: {
@@ -57,22 +57,22 @@ const $e = {
57
57
  mobile: {
58
58
  breakpoint: 768
59
59
  }
60
- }, j = "16rem", Oe = "3rem", Pe = 768;
61
- function Ae() {
62
- const [t, a] = y(!1);
60
+ }, j = "16rem", Pe = "3rem", Ae = 768;
61
+ function Ee() {
62
+ const [t, a] = k(!1);
63
63
  return Ne(() => {
64
- const e = window.matchMedia(`(max-width: ${Pe - 1}px)`), i = () => a(e.matches);
64
+ const e = window.matchMedia(`(max-width: ${Ae - 1}px)`), i = () => a(e.matches);
65
65
  return e.addEventListener("change", i), a(e.matches), () => e.removeEventListener("change", i);
66
66
  }, []), t;
67
67
  }
68
- const K = A(null);
68
+ const K = E(null);
69
69
  function T() {
70
70
  const t = R(K);
71
71
  if (!t)
72
72
  throw new Error("useSidebar must be used within a Sidebar.Provider");
73
73
  return t;
74
74
  }
75
- const Ee = 256, Le = 200, Ge = 480;
75
+ const Le = 256, Oe = 200, Ge = 480;
76
76
  function q({
77
77
  defaultOpen: t = !0,
78
78
  open: a,
@@ -81,21 +81,21 @@ function q({
81
81
  side: n = G.side,
82
82
  collapsible: o = G.collapsible,
83
83
  resizable: b = !1,
84
- defaultWidth: m = Ee,
85
- minWidth: d = Le,
84
+ defaultWidth: m = Le,
85
+ minWidth: d = Oe,
86
86
  maxWidth: l = Ge,
87
87
  onWidthChange: c,
88
88
  children: x,
89
89
  className: g,
90
90
  style: h
91
91
  }) {
92
- const p = Ae(), [f, S] = y(!1), [N, z] = y(m), [w, C] = y(!1), _ = D(
92
+ const p = Ee(), [f, S] = k(!1), [N, z] = k(m), [w, C] = k(!1), _ = D(
93
93
  (v) => {
94
94
  const I = Math.min(l, Math.max(d, v));
95
95
  z(I), c?.(I);
96
96
  },
97
97
  [d, l, c]
98
- ), [k, ve] = y(t), M = a ?? k, B = D(
98
+ ), [y, ve] = k(t), M = a ?? y, B = D(
99
99
  (v) => {
100
100
  const I = typeof v == "function" ? v(M) : v;
101
101
  e?.(I), ve(I);
@@ -103,9 +103,9 @@ function q({
103
103
  [e, M]
104
104
  ), H = D(() => {
105
105
  p ? S((v) => !v) : B((v) => !v);
106
- }, [p, B]), E = M ? "expanded" : "collapsed", Se = b ? `${N}px` : j, we = W(
106
+ }, [p, B]), L = M ? "expanded" : "collapsed", Se = b ? `${N}px` : j, we = W(
107
107
  () => ({
108
- state: E,
108
+ state: L,
109
109
  open: M,
110
110
  setOpen: B,
111
111
  openMobile: f,
@@ -124,7 +124,7 @@ function q({
124
124
  setWidth: _
125
125
  }),
126
126
  [
127
- E,
127
+ L,
128
128
  M,
129
129
  B,
130
130
  f,
@@ -147,11 +147,11 @@ function q({
147
147
  "div",
148
148
  {
149
149
  "data-sidebar-wrapper": "",
150
- "data-state": E,
150
+ "data-state": L,
151
151
  "data-side": n,
152
152
  style: {
153
153
  "--sidebar-width": Se,
154
- "--sidebar-width-icon": Oe,
154
+ "--sidebar-width-icon": Pe,
155
155
  ...h
156
156
  },
157
157
  className: r(
@@ -204,7 +204,7 @@ const $ = u(
204
204
  }
205
205
  );
206
206
  if (o)
207
- return /* @__PURE__ */ s(Te, { open: b, onOpenChange: m, children: /* @__PURE__ */ P(ze, { children: [
207
+ return /* @__PURE__ */ s(Te, { open: b, onOpenChange: m, children: /* @__PURE__ */ A(ze, { children: [
208
208
  /* @__PURE__ */ s(_e, { "data-sidebar-backdrop": "", className: "fixed inset-0 bg-black/50 transition-opacity duration-200 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0" }),
209
209
  /* @__PURE__ */ s(
210
210
  Be,
@@ -316,7 +316,7 @@ const J = u(({ className: t, ...a }, e) => /* @__PURE__ */ s(
316
316
  }
317
317
  ));
318
318
  J.displayName = "Sidebar.Footer";
319
- const O = A({
319
+ const P = E({
320
320
  isCollapsible: !1,
321
321
  isOpen: !0
322
322
  }), Z = u(
@@ -329,7 +329,7 @@ const O = A({
329
329
  children: o,
330
330
  ...b
331
331
  }, m) => {
332
- const [d, l] = y(e), c = i ?? d, x = D(
332
+ const [d, l] = k(e), c = i ?? d, x = D(
333
333
  (p) => {
334
334
  l(p), n?.(p);
335
335
  },
@@ -352,7 +352,7 @@ const O = A({
352
352
  children: o
353
353
  }
354
354
  );
355
- return a ? /* @__PURE__ */ s(O.Provider, { value: g, children: /* @__PURE__ */ s(
355
+ return a ? /* @__PURE__ */ s(P.Provider, { value: g, children: /* @__PURE__ */ s(
356
356
  U,
357
357
  {
358
358
  defaultOpen: e,
@@ -361,13 +361,13 @@ const O = A({
361
361
  className: "min-w-0",
362
362
  children: h
363
363
  }
364
- ) }) : /* @__PURE__ */ s(O.Provider, { value: g, children: h });
364
+ ) }) : /* @__PURE__ */ s(P.Provider, { value: g, children: h });
365
365
  }
366
366
  );
367
367
  Z.displayName = "Sidebar.Group";
368
368
  const ee = u(({ className: t, children: a, ...e }, i) => {
369
- const { isCollapsible: n } = R(O);
370
- return n ? /* @__PURE__ */ P(
369
+ const { isCollapsible: n } = R(P);
370
+ return n ? /* @__PURE__ */ A(
371
371
  V,
372
372
  {
373
373
  ref: i,
@@ -408,7 +408,7 @@ const ee = u(({ className: t, children: a, ...e }, i) => {
408
408
  });
409
409
  ee.displayName = "Sidebar.GroupLabel";
410
410
  const ae = u(({ className: t, children: a, ...e }, i) => {
411
- const { isCollapsible: n, isOpen: o } = R(O);
411
+ const { isCollapsible: n, isOpen: o } = R(P);
412
412
  return n ? /* @__PURE__ */ s(
413
413
  "div",
414
414
  {
@@ -440,7 +440,7 @@ const ae = u(({ className: t, children: a, ...e }, i) => {
440
440
  );
441
441
  });
442
442
  ae.displayName = "Sidebar.GroupContent";
443
- const te = A(!1), se = A(!1), ie = u(({ className: t, ...a }, e) => /* @__PURE__ */ s(
443
+ const te = E(!1), se = E(!1), ie = u(({ className: t, ...a }, e) => /* @__PURE__ */ s(
444
444
  "ul",
445
445
  {
446
446
  ref: e,
@@ -476,12 +476,12 @@ const ne = u(
476
476
  children: b,
477
477
  ...m
478
478
  }, d) => {
479
- const { state: l } = T(), c = X(), x = R(te), g = a ? ye.isValidElement(a) ? a : /* @__PURE__ */ s(
479
+ const { state: l } = T(), c = X(), x = R(te), g = a ? ke.isValidElement(a) ? a : /* @__PURE__ */ s(
480
480
  a,
481
481
  {
482
482
  className: r("shrink-0", i === "base" ? "size-4" : "size-3.5")
483
483
  }
484
- ) : null, h = /* @__PURE__ */ P(ke, { children: [
484
+ ) : null, h = /* @__PURE__ */ A(ye, { children: [
485
485
  g,
486
486
  /* @__PURE__ */ s(
487
487
  "span",
@@ -653,7 +653,7 @@ const be = u(({ className: t, ...a }, e) => /* @__PURE__ */ s(
653
653
  ));
654
654
  be.displayName = "Sidebar.Separator";
655
655
  const pe = u(
656
- ({ className: t, placeholder: a = "Search...", shortcut: e, children: i, ...n }, o) => /* @__PURE__ */ P(
656
+ ({ className: t, placeholder: a = "Search...", shortcut: e, children: i, ...n }, o) => /* @__PURE__ */ A(
657
657
  "button",
658
658
  {
659
659
  ref: o,
@@ -730,7 +730,7 @@ const ge = u(({ className: t, ...a }, e) => {
730
730
  });
731
731
  ge.displayName = "Sidebar.Rail";
732
732
  const fe = u(({ className: t, ...a }, e) => {
733
- const { side: i, resizable: n, setIsResizing: o, setWidth: b, setOpen: m, open: d, minWidth: l } = T(), c = L(0), x = L(0), g = L(!1);
733
+ const { side: i, resizable: n, setIsResizing: o, setWidth: b, setOpen: m, open: d, minWidth: l } = T(), c = O(0), x = O(0), g = O(!1);
734
734
  if (!n) return null;
735
735
  const h = (p) => {
736
736
  p.preventDefault(), o(!0), c.current = p.clientX, g.current = !d;
@@ -741,16 +741,16 @@ const fe = u(({ className: t, ...a }, e) => {
741
741
  const N = () => {
742
742
  o(!1), document.removeEventListener("pointermove", z), document.removeEventListener("pointerup", w);
743
743
  }, z = (C) => {
744
- const _ = i === "left" ? C.clientX - c.current : c.current - C.clientX, k = x.current + _;
744
+ const _ = i === "left" ? C.clientX - c.current : c.current - C.clientX, y = x.current + _;
745
745
  if (g.current) {
746
- k >= l && (g.current = !1, m(!0), b(k));
746
+ y >= l && (g.current = !1, m(!0), b(y));
747
747
  return;
748
748
  }
749
- if (k < l) {
749
+ if (y < l) {
750
750
  m(!1), g.current = !0;
751
751
  return;
752
752
  }
753
- b(k);
753
+ b(y);
754
754
  }, w = () => {
755
755
  N();
756
756
  };
@@ -872,4 +872,4 @@ export {
872
872
  xe as y,
873
873
  T as z
874
874
  };
875
- //# sourceMappingURL=sidebar-oan40ylmqkyui21w.js.map
875
+ //# sourceMappingURL=sidebar-izcfqkrzt4vqn8ez.js.map