@cloudflare/kumo 2.3.1 → 2.4.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 (228) hide show
  1. package/CHANGELOG.md +82 -2
  2. package/ai/component-registry.json +166 -123
  3. package/ai/component-registry.md +349 -215
  4. package/ai/schemas.ts +7 -2
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +46 -34
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +12 -4
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js +770 -0
  11. package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js.map +1 -0
  12. package/dist/chunks/{autocomplete-bdjo7k4zep86bwh8.js → autocomplete-d0w42h1frdu03df6.js} +29 -25
  13. package/dist/chunks/{autocomplete-bdjo7k4zep86bwh8.js.map → autocomplete-d0w42h1frdu03df6.js.map} +1 -1
  14. package/dist/chunks/{badge-e9w8qrjmeu9nocf6.js → badge-c1th6h6ahz7eu49q.js} +2 -2
  15. package/dist/chunks/badge-c1th6h6ahz7eu49q.js.map +1 -0
  16. package/dist/chunks/banner-es5iwuk4pf25e29e.js +120 -0
  17. package/dist/chunks/banner-es5iwuk4pf25e29e.js.map +1 -0
  18. package/dist/chunks/{breadcrumbs-g4pyoikibpoxsgw4.js → breadcrumbs-j214mimk5zj4ffp4.js} +8 -6
  19. package/dist/chunks/breadcrumbs-j214mimk5zj4ffp4.js.map +1 -0
  20. package/dist/chunks/{button-fxdpoacmq5rv1adk.js → button-mnrxu6dud2x5js5b.js} +19 -17
  21. package/dist/chunks/{button-fxdpoacmq5rv1adk.js.map → button-mnrxu6dud2x5js5b.js.map} +1 -1
  22. package/dist/chunks/{checkbox-dtoq56ieijj9m6vr.js → checkbox-dqih8tzzt3vhp870.js} +25 -19
  23. package/dist/chunks/checkbox-dqih8tzzt3vhp870.js.map +1 -0
  24. package/dist/chunks/{clipboard-text-nvdsloomefwgcxat.js → clipboard-text-mrut8z3dt1w0efxz.js} +4 -4
  25. package/dist/chunks/{clipboard-text-nvdsloomefwgcxat.js.map → clipboard-text-mrut8z3dt1w0efxz.js.map} +1 -1
  26. package/dist/chunks/{collapsible-cnsxmp7dko87pgx0.js → collapsible-nzqcf9zwnjkxqzr6.js} +21 -17
  27. package/dist/chunks/collapsible-nzqcf9zwnjkxqzr6.js.map +1 -0
  28. package/dist/chunks/{combobox-kjmt3aoy4sia7g0o.js → combobox-msvukodjsqzlvpqc.js} +142 -130
  29. package/dist/chunks/combobox-msvukodjsqzlvpqc.js.map +1 -0
  30. package/dist/chunks/{command-palette-jrq7p16tff6n46nj.js → command-palette-fqhyacp33fhyf696.js} +5 -5
  31. package/dist/chunks/{command-palette-jrq7p16tff6n46nj.js.map → command-palette-fqhyacp33fhyf696.js.map} +1 -1
  32. package/dist/chunks/{dialog-gndju3sqg1lmpb3f.js → dialog-my9fioafdstq50mi.js} +49 -33
  33. package/dist/chunks/{dialog-gndju3sqg1lmpb3f.js.map → dialog-my9fioafdstq50mi.js.map} +1 -1
  34. package/dist/chunks/{dropdown-k6orz4j043xybf54.js → dropdown-g4sb4cw9ffqaw5gx.js} +54 -44
  35. package/dist/chunks/dropdown-g4sb4cw9ffqaw5gx.js.map +1 -0
  36. package/dist/chunks/{empty-ni12ufom1kkakbuc.js → empty-n17inn1z67bpohkw.js} +2 -2
  37. package/dist/chunks/{empty-ni12ufom1kkakbuc.js.map → empty-n17inn1z67bpohkw.js.map} +1 -1
  38. package/dist/chunks/{field-n16udu32tpyq5udz.js → field-c8o7h3rlam4c9pcx.js} +3 -3
  39. package/dist/chunks/{field-n16udu32tpyq5udz.js.map → field-c8o7h3rlam4c9pcx.js.map} +1 -1
  40. package/dist/chunks/{input-area-hhhpgg0ev8bowtrk.js → input-area-eurk3seud30ricwn.js} +4 -4
  41. package/dist/chunks/{input-area-hhhpgg0ev8bowtrk.js.map → input-area-eurk3seud30ricwn.js.map} +1 -1
  42. package/dist/chunks/{input-mv7giprcc6hfkpq3.js → input-en8hhb14mmt3tfwn.js} +3 -3
  43. package/dist/chunks/{input-mv7giprcc6hfkpq3.js.map → input-en8hhb14mmt3tfwn.js.map} +1 -1
  44. package/dist/chunks/{input-group-kkw5j7rwzhj66h10.js → input-group-d09ocmjcbdai0gze.js} +5 -5
  45. package/dist/chunks/{input-group-kkw5j7rwzhj66h10.js.map → input-group-d09ocmjcbdai0gze.js.map} +1 -1
  46. package/dist/chunks/{label-f6yvqca8qhbpvkq8.js → label-c8rz453pti66slki.js} +3 -3
  47. package/dist/chunks/{label-f6yvqca8qhbpvkq8.js.map → label-c8rz453pti66slki.js.map} +1 -1
  48. package/dist/chunks/{layer-card-gegkqhkjy65l1ueo.js → layer-card-er4flkcxmzfug8jw.js} +2 -2
  49. package/dist/chunks/{layer-card-gegkqhkjy65l1ueo.js.map → layer-card-er4flkcxmzfug8jw.js.map} +1 -1
  50. package/dist/chunks/{link-jjk7qolyol7s1jkk.js → link-i6vnwyjcwvjz5btm.js} +20 -19
  51. package/dist/chunks/{link-jjk7qolyol7s1jkk.js.map → link-i6vnwyjcwvjz5btm.js.map} +1 -1
  52. package/dist/chunks/menubar-ng5if56amh1tto4j.js +98 -0
  53. package/dist/chunks/menubar-ng5if56amh1tto4j.js.map +1 -0
  54. package/dist/chunks/{meter-kxn34sy6l2mz5dwq.js → meter-d5igshkjqttl1fdj.js} +2 -2
  55. package/dist/chunks/{meter-kxn34sy6l2mz5dwq.js.map → meter-d5igshkjqttl1fdj.js.map} +1 -1
  56. package/dist/chunks/{pagination-ixbq8ssuuo0jxaa4.js → pagination-bw7vwca4wrfjm8vb.js} +3 -3
  57. package/dist/chunks/{pagination-ixbq8ssuuo0jxaa4.js.map → pagination-bw7vwca4wrfjm8vb.js.map} +1 -1
  58. package/dist/chunks/{popover-js5ds3szd43kspja.js → popover-ozf1j7oi7pxiudyz.js} +4 -2
  59. package/dist/chunks/popover-ozf1j7oi7pxiudyz.js.map +1 -0
  60. package/dist/chunks/{radio-nyw89v4eafptepmz.js → radio-gpg6kmzonr2cayq1.js} +54 -46
  61. package/dist/chunks/radio-gpg6kmzonr2cayq1.js.map +1 -0
  62. package/dist/chunks/{select-o2i7aovnu8v1zv8t.js → select-dw9iw35ug7yer3o3.js} +101 -91
  63. package/dist/chunks/select-dw9iw35ug7yer3o3.js.map +1 -0
  64. package/dist/chunks/{sensitive-input-bjg6m791yz7g6bn3.js → sensitive-input-dgoxjtoxl4zqa51v.js} +50 -44
  65. package/dist/chunks/{sensitive-input-bjg6m791yz7g6bn3.js.map → sensitive-input-dgoxjtoxl4zqa51v.js.map} +1 -1
  66. package/dist/chunks/sidebar-hzio700cg85f7f31.js +1014 -0
  67. package/dist/chunks/sidebar-hzio700cg85f7f31.js.map +1 -0
  68. package/dist/chunks/{surface-lzwbh3f5t0gxc83t.js → surface-iyejjbqogjbo7ise.js} +2 -2
  69. package/dist/chunks/{surface-lzwbh3f5t0gxc83t.js.map → surface-iyejjbqogjbo7ise.js.map} +1 -1
  70. package/dist/chunks/{switch-d9cs31oj4rjtg717.js → switch-g8f77h69h34xld06.js} +50 -45
  71. package/dist/chunks/switch-g8f77h69h34xld06.js.map +1 -0
  72. package/dist/chunks/{table-c6qemc2jmv22cv3p.js → table-e1te1im2tt2ez05y.js} +2 -2
  73. package/dist/chunks/{table-c6qemc2jmv22cv3p.js.map → table-e1te1im2tt2ez05y.js.map} +1 -1
  74. package/dist/chunks/{table-of-contents-fzyv7uhnnyr13dqu.js → table-of-contents-jco9kvt48d34dwsw.js} +34 -30
  75. package/dist/chunks/table-of-contents-jco9kvt48d34dwsw.js.map +1 -0
  76. package/dist/chunks/{tabs-f0ztlooi91ko9g04.js → tabs-hice1yy5q2t889z8.js} +6 -4
  77. package/dist/chunks/tabs-hice1yy5q2t889z8.js.map +1 -0
  78. package/dist/chunks/{toast-ejfm5cbt9yulqhol.js → toast-kvbgct0jvfmn4mas.js} +29 -27
  79. package/dist/chunks/{toast-ejfm5cbt9yulqhol.js.map → toast-kvbgct0jvfmn4mas.js.map} +1 -1
  80. package/dist/chunks/{tooltip-o6xfw9jjclv9pxaj.js → tooltip-ken77ixya0qpidie.js} +6 -6
  81. package/dist/chunks/{tooltip-o6xfw9jjclv9pxaj.js.map → tooltip-ken77ixya0qpidie.js.map} +1 -1
  82. package/dist/chunks/{vendor-base-ui-mzjqwv5teijixz8h.js → vendor-base-ui-knphx7dts1vm1x37.js} +1726 -1719
  83. package/dist/chunks/{vendor-base-ui-mzjqwv5teijixz8h.js.map → vendor-base-ui-knphx7dts1vm1x37.js.map} +1 -1
  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/banner.js +1 -1
  88. package/dist/components/breadcrumbs.js +1 -1
  89. package/dist/components/button.js +1 -1
  90. package/dist/components/chart.js +1 -1
  91. package/dist/components/checkbox.js +1 -1
  92. package/dist/components/clipboard-text.js +1 -1
  93. package/dist/components/collapsible.js +1 -1
  94. package/dist/components/combobox.js +1 -1
  95. package/dist/components/command-palette.js +1 -1
  96. package/dist/components/dialog.js +1 -1
  97. package/dist/components/dropdown.js +1 -1
  98. package/dist/components/empty.js +1 -1
  99. package/dist/components/field.js +1 -1
  100. package/dist/components/input-group.js +1 -1
  101. package/dist/components/input.js +3 -3
  102. package/dist/components/label.js +1 -1
  103. package/dist/components/layer-card.js +1 -1
  104. package/dist/components/link.js +1 -1
  105. package/dist/components/menubar.js +1 -1
  106. package/dist/components/meter.js +1 -1
  107. package/dist/components/pagination.js +1 -1
  108. package/dist/components/popover.js +1 -1
  109. package/dist/components/radio.js +1 -1
  110. package/dist/components/select.js +1 -1
  111. package/dist/components/sensitive-input.js +1 -1
  112. package/dist/components/sidebar.js +22 -23
  113. package/dist/components/surface.js +1 -1
  114. package/dist/components/switch.js +1 -1
  115. package/dist/components/table-of-contents.js +1 -1
  116. package/dist/components/table.js +1 -1
  117. package/dist/components/tabs.js +1 -1
  118. package/dist/components/toast.js +2 -2
  119. package/dist/components/tooltip.js +1 -1
  120. package/dist/index.js +122 -123
  121. package/dist/primitives/accordion.js +1 -1
  122. package/dist/primitives/alert-dialog.js +1 -1
  123. package/dist/primitives/autocomplete.js +1 -1
  124. package/dist/primitives/avatar.js +1 -1
  125. package/dist/primitives/button.js +1 -1
  126. package/dist/primitives/checkbox-group.js +1 -1
  127. package/dist/primitives/checkbox.js +1 -1
  128. package/dist/primitives/collapsible.js +1 -1
  129. package/dist/primitives/combobox.js +1 -1
  130. package/dist/primitives/context-menu.js +1 -1
  131. package/dist/primitives/csp-provider.js +1 -1
  132. package/dist/primitives/dialog.js +1 -1
  133. package/dist/primitives/direction-provider.js +1 -1
  134. package/dist/primitives/drawer.js +1 -1
  135. package/dist/primitives/field.js +1 -1
  136. package/dist/primitives/fieldset.js +1 -1
  137. package/dist/primitives/form.js +1 -1
  138. package/dist/primitives/input.js +1 -1
  139. package/dist/primitives/menu.js +1 -1
  140. package/dist/primitives/menubar.js +1 -1
  141. package/dist/primitives/meter.js +1 -1
  142. package/dist/primitives/navigation-menu.js +1 -1
  143. package/dist/primitives/number-field.js +1 -1
  144. package/dist/primitives/otp-field.js +1 -1
  145. package/dist/primitives/popover.js +1 -1
  146. package/dist/primitives/preview-card.js +1 -1
  147. package/dist/primitives/progress.js +1 -1
  148. package/dist/primitives/radio-group.js +1 -1
  149. package/dist/primitives/radio.js +1 -1
  150. package/dist/primitives/scroll-area.js +1 -1
  151. package/dist/primitives/select.js +1 -1
  152. package/dist/primitives/separator.js +1 -1
  153. package/dist/primitives/slider.js +1 -1
  154. package/dist/primitives/switch.js +1 -1
  155. package/dist/primitives/tabs.js +1 -1
  156. package/dist/primitives/toast.js +1 -1
  157. package/dist/primitives/toggle-group.js +1 -1
  158. package/dist/primitives/toggle.js +1 -1
  159. package/dist/primitives/toolbar.js +1 -1
  160. package/dist/primitives/tooltip.js +1 -1
  161. package/dist/primitives.js +1 -1
  162. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  163. package/dist/scripts/theme-generator/config.js +36 -38
  164. package/dist/scripts/theme-generator/config.js.map +1 -1
  165. package/dist/scripts/theme-generator/generate-css.d.ts.map +1 -1
  166. package/dist/scripts/theme-generator/types.d.ts +8 -2
  167. package/dist/scripts/theme-generator/types.d.ts.map +1 -1
  168. package/dist/src/components/autocomplete/autocomplete.d.ts +1 -0
  169. package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -1
  170. package/dist/src/components/autocomplete/index.d.ts +1 -0
  171. package/dist/src/components/autocomplete/index.d.ts.map +1 -1
  172. package/dist/src/components/badge/badge.d.ts +1 -1
  173. package/dist/src/components/banner/banner.d.ts +14 -7
  174. package/dist/src/components/banner/banner.d.ts.map +1 -1
  175. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  176. package/dist/src/components/button/button.d.ts.map +1 -1
  177. package/dist/src/components/chart/TimeseriesChart.d.ts +43 -1
  178. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  179. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  180. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
  181. package/dist/src/components/combobox/combobox.d.ts +1 -0
  182. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  183. package/dist/src/components/combobox/index.d.ts +1 -0
  184. package/dist/src/components/combobox/index.d.ts.map +1 -1
  185. package/dist/src/components/dialog/dialog.d.ts.map +1 -1
  186. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  187. package/dist/src/components/link/link.d.ts.map +1 -1
  188. package/dist/src/components/menubar/menubar.d.ts.map +1 -1
  189. package/dist/src/components/popover/popover.d.ts.map +1 -1
  190. package/dist/src/components/radio/radio.d.ts.map +1 -1
  191. package/dist/src/components/select/select.d.ts.map +1 -1
  192. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -1
  193. package/dist/src/components/sidebar/index.d.ts +1 -1
  194. package/dist/src/components/sidebar/index.d.ts.map +1 -1
  195. package/dist/src/components/sidebar/sidebar.d.ts +159 -146
  196. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  197. package/dist/src/components/switch/switch.d.ts.map +1 -1
  198. package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -1
  199. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  200. package/dist/src/index.d.ts +1 -1
  201. package/dist/src/index.d.ts.map +1 -1
  202. package/dist/styles/kumo-standalone.css +1 -1
  203. package/dist/styles/kumo.css +37 -0
  204. package/dist/styles/theme-kumo.css +28 -35
  205. package/package.json +4 -1
  206. package/scripts/theme-generator/config.ts +37 -39
  207. package/scripts/theme-generator/generate-css.ts +4 -1
  208. package/scripts/theme-generator/types.ts +8 -2
  209. package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js +0 -651
  210. package/dist/chunks/SankeyChart-krkvltewpn3bbupw.js.map +0 -1
  211. package/dist/chunks/badge-e9w8qrjmeu9nocf6.js.map +0 -1
  212. package/dist/chunks/banner-ip2lm8r87hich557.js +0 -88
  213. package/dist/chunks/banner-ip2lm8r87hich557.js.map +0 -1
  214. package/dist/chunks/breadcrumbs-g4pyoikibpoxsgw4.js.map +0 -1
  215. package/dist/chunks/checkbox-dtoq56ieijj9m6vr.js.map +0 -1
  216. package/dist/chunks/collapsible-cnsxmp7dko87pgx0.js.map +0 -1
  217. package/dist/chunks/combobox-kjmt3aoy4sia7g0o.js.map +0 -1
  218. package/dist/chunks/dropdown-k6orz4j043xybf54.js.map +0 -1
  219. package/dist/chunks/menubar-d5s6h96nw8ggy04a.js +0 -96
  220. package/dist/chunks/menubar-d5s6h96nw8ggy04a.js.map +0 -1
  221. package/dist/chunks/popover-js5ds3szd43kspja.js.map +0 -1
  222. package/dist/chunks/radio-nyw89v4eafptepmz.js.map +0 -1
  223. package/dist/chunks/select-o2i7aovnu8v1zv8t.js.map +0 -1
  224. package/dist/chunks/sidebar-izcfqkrzt4vqn8ez.js +0 -875
  225. package/dist/chunks/sidebar-izcfqkrzt4vqn8ez.js.map +0 -1
  226. package/dist/chunks/switch-d9cs31oj4rjtg717.js.map +0 -1
  227. package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js.map +0 -1
  228. package/dist/chunks/tabs-f0ztlooi91ko9g04.js.map +0 -1
@@ -0,0 +1,1014 @@
1
+ "use client";
2
+ import { jsx as i, jsxs as B } from "react/jsx-runtime";
3
+ import D, { forwardRef as p, useState as E, useCallback as I, useMemo as $, createContext as V, useContext as P, useRef as W, useId as _e, useEffect as Te } from "react";
4
+ import { CaretRightIcon as Ee } from "@phosphor-icons/react";
5
+ import { c as r } from "./cn-ct4n7r74mh8y0f48.js";
6
+ import { u as j } from "./link-provider-mn2voeohon7cj9o4.js";
7
+ import { a as De, T as Pe } from "./tooltip-ken77ixya0qpidie.js";
8
+ import { ar as Be, ax as ze, ay as Le, az as Oe, bz as Ve, bA as We, bB as Fe, bC as He, bD as Xe } from "./vendor-base-ui-knphx7dts1vm1x37.js";
9
+ const ra = {
10
+ variant: {
11
+ sidebar: {
12
+ classes: "",
13
+ description: "Standard sidebar with border separator"
14
+ },
15
+ floating: {
16
+ classes: "",
17
+ description: "Floating sidebar with shadow and rounded corners"
18
+ },
19
+ inset: {
20
+ classes: "",
21
+ description: "Inset sidebar within the content area"
22
+ }
23
+ },
24
+ collapsible: {
25
+ icon: {
26
+ classes: "",
27
+ description: "Collapses to show icons only"
28
+ },
29
+ offcanvas: {
30
+ classes: "",
31
+ description: "Slides off screen when collapsed"
32
+ },
33
+ none: {
34
+ classes: "",
35
+ description: "Cannot be collapsed"
36
+ }
37
+ },
38
+ side: {
39
+ left: {
40
+ classes: "",
41
+ description: "Left-aligned sidebar"
42
+ },
43
+ right: {
44
+ classes: "",
45
+ description: "Right-aligned sidebar"
46
+ }
47
+ }
48
+ }, U = {
49
+ variant: "sidebar",
50
+ collapsible: "icon",
51
+ side: "left"
52
+ }, sa = {
53
+ width: {
54
+ expanded: "16.25rem",
55
+ icon: "57px"
56
+ },
57
+ mobile: {
58
+ breakpoint: 768
59
+ }
60
+ }, q = "16.25rem", Ke = "57px", Ge = "cubic-bezier(0.77, 0, 0.175, 1)", Ue = 250, $e = 768;
61
+ function je() {
62
+ const [a, t] = E(!1);
63
+ return Te(() => {
64
+ const e = window.matchMedia(`(max-width: ${$e - 1}px)`), n = () => t(e.matches);
65
+ return e.addEventListener("change", n), t(e.matches), () => e.removeEventListener("change", n);
66
+ }, []), a;
67
+ }
68
+ const Y = V(null);
69
+ function z() {
70
+ const a = P(Y);
71
+ if (!a)
72
+ throw new Error("useSidebar must be used within a Sidebar.Provider");
73
+ return a;
74
+ }
75
+ const qe = 256, Ye = 200, Je = 480;
76
+ function J({
77
+ defaultOpen: a = !0,
78
+ open: t,
79
+ onOpenChange: e,
80
+ variant: n = U.variant,
81
+ side: l = U.side,
82
+ collapsible: o = U.collapsible,
83
+ resizable: c = !1,
84
+ defaultWidth: u = qe,
85
+ minWidth: m = Ye,
86
+ maxWidth: s = Je,
87
+ onWidthChange: d,
88
+ contained: g = !1,
89
+ peekable: h = !1,
90
+ animationDuration: k = Ue,
91
+ children: x,
92
+ className: y,
93
+ style: b
94
+ }) {
95
+ const v = je(), [f, _] = E(!1), [N, C] = E(u), [A, L] = E(!1), [R, T] = E(!1), S = I(
96
+ (M) => {
97
+ const O = Math.min(s, Math.max(m, M));
98
+ C(O), d?.(O);
99
+ },
100
+ [m, s, d]
101
+ ), [H, X] = E(a), w = t ?? H, K = I(
102
+ (M) => {
103
+ const O = typeof M == "function" ? M(w) : M;
104
+ e?.(O), X(O);
105
+ },
106
+ [e, w]
107
+ ), Ce = I(() => {
108
+ v ? _((M) => !M) : (T(!1), K((M) => !M));
109
+ }, [v, K]), Me = I(() => {
110
+ h && !w && !v && T(!0);
111
+ }, [h, w, v]), Ie = I(() => {
112
+ T(!1);
113
+ }, []), G = R ? "peeking" : w ? "expanded" : "collapsed", Ae = c ? `${N}px` : q, Re = $(() => ({
114
+ state: G,
115
+ open: w,
116
+ setOpen: K,
117
+ openMobile: f,
118
+ setOpenMobile: _,
119
+ isMobile: v,
120
+ toggleSidebar: Ce,
121
+ variant: n,
122
+ side: l,
123
+ collapsible: o,
124
+ width: N,
125
+ resizable: c,
126
+ minWidth: m,
127
+ maxWidth: s,
128
+ isResizing: A,
129
+ setIsResizing: L,
130
+ setWidth: S,
131
+ isPeeking: R,
132
+ peekable: h,
133
+ startPeek: Me,
134
+ stopPeek: Ie,
135
+ contained: g,
136
+ animationDuration: k
137
+ }), [G, w, f, v, N, A, R]);
138
+ return /* @__PURE__ */ i(Y.Provider, { value: Re, children: /* @__PURE__ */ i(
139
+ "div",
140
+ {
141
+ "data-sidebar-wrapper": "",
142
+ "data-state": G,
143
+ "data-side": l,
144
+ style: {
145
+ "--sidebar-width": Ae,
146
+ "--sidebar-width-icon": Ke,
147
+ "--sidebar-animation-duration": `${k}ms`,
148
+ "--sidebar-easing": Ge,
149
+ "--sidebar-bg": "var(--color-kumo-base)",
150
+ ...b
151
+ },
152
+ className: r(
153
+ "group/sidebar-wrapper isolate flex w-full",
154
+ !g && "min-h-svh",
155
+ "has-data-[variant=inset]:bg-kumo-recessed",
156
+ A && "select-none",
157
+ y
158
+ ),
159
+ children: x
160
+ }
161
+ ) });
162
+ }
163
+ J.displayName = "Sidebar.Provider";
164
+ const Q = p(
165
+ ({ className: a, children: t, ...e }, n) => {
166
+ const {
167
+ state: l,
168
+ open: o,
169
+ isMobile: c,
170
+ openMobile: u,
171
+ setOpenMobile: m,
172
+ side: s,
173
+ variant: d,
174
+ collapsible: g,
175
+ isResizing: h,
176
+ resizable: k,
177
+ width: x,
178
+ isPeeking: y,
179
+ startPeek: b,
180
+ stopPeek: v,
181
+ contained: f
182
+ } = z();
183
+ if (g === "none")
184
+ return /* @__PURE__ */ i(
185
+ "aside",
186
+ {
187
+ ref: n,
188
+ "data-state": "expanded",
189
+ "data-side": s,
190
+ "data-variant": d,
191
+ "data-sidebar": "sidebar",
192
+ style: {
193
+ width: "var(--sidebar-width)",
194
+ minWidth: "var(--sidebar-width)",
195
+ maxWidth: "var(--sidebar-width)"
196
+ },
197
+ className: r(
198
+ "relative flex h-full shrink-0 grow-0 flex-col overflow-hidden bg-(--sidebar-bg) text-kumo-default",
199
+ d === "sidebar" && (s === "left" ? "border-r border-kumo-line" : "border-l border-kumo-line"),
200
+ d === "floating" && "m-2 rounded-lg border border-kumo-line shadow-lg",
201
+ a
202
+ ),
203
+ ...e,
204
+ children: t
205
+ }
206
+ );
207
+ if (c)
208
+ return /* @__PURE__ */ i(Be, { open: u, onOpenChange: m, children: /* @__PURE__ */ B(ze, { children: [
209
+ /* @__PURE__ */ i(Le, { "data-sidebar-backdrop": "", className: "fixed inset-0 bg-black/50 transition-opacity duration-200 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0" }),
210
+ /* @__PURE__ */ i(
211
+ Oe,
212
+ {
213
+ "data-sidebar-popup": "",
214
+ className: r(
215
+ "fixed inset-y-0 flex w-[--sidebar-width] flex-col bg-kumo-base p-0",
216
+ "duration-200 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0",
217
+ s === "left" && "left-0 data-[ending-style]:-translate-x-full data-[starting-style]:-translate-x-full",
218
+ s === "right" && "right-0 data-[ending-style]:translate-x-full data-[starting-style]:translate-x-full"
219
+ ),
220
+ style: {
221
+ "--sidebar-width": q,
222
+ transitionProperty: "transform, opacity",
223
+ transitionTimingFunction: "var(--default-transition-timing-function)"
224
+ },
225
+ children: /* @__PURE__ */ i(
226
+ "div",
227
+ {
228
+ "data-state": "expanded",
229
+ "data-side": s,
230
+ "data-variant": d,
231
+ "data-collapsible": g,
232
+ "data-sidebar": "sidebar",
233
+ "data-mobile": "true",
234
+ className: r(
235
+ "group/sidebar flex h-full w-full flex-col bg-kumo-base text-kumo-default",
236
+ a
237
+ ),
238
+ children: t
239
+ }
240
+ )
241
+ }
242
+ )
243
+ ] }) });
244
+ const _ = I(
245
+ (S) => {
246
+ S.currentTarget.contains(S.relatedTarget) || v();
247
+ },
248
+ [v]
249
+ ), N = g === "icon" ? "var(--sidebar-width-icon)" : "0px", C = k ? `${x}px` : "var(--sidebar-width)", A = o ? C : N, R = o || y ? C : N, T = d === "sidebar" ? s === "left" ? "border-r border-kumo-line" : "border-l border-kumo-line" : d === "floating" ? "border border-kumo-line" : "";
250
+ return /* @__PURE__ */ i(
251
+ "aside",
252
+ {
253
+ ref: n,
254
+ "data-state": l,
255
+ "data-side": s,
256
+ "data-variant": d,
257
+ "data-collapsible": g,
258
+ "data-sidebar": "sidebar",
259
+ style: { width: A },
260
+ className: r(
261
+ "group/sidebar relative h-full shrink-0 grow-0",
262
+ "overflow-visible",
263
+ // allow content container to overlay when peeking
264
+ "transition-[width] duration-(--sidebar-animation-duration) ease-(--sidebar-easing)",
265
+ "motion-reduce:transition-none",
266
+ h && "transition-none!",
267
+ d === "floating" && "m-2 rounded-lg shadow-lg",
268
+ a
269
+ ),
270
+ ...e,
271
+ children: /* @__PURE__ */ i(De, { children: (() => {
272
+ const S = D.Children.toArray(t), H = S.filter(
273
+ (w) => D.isValidElement(w) && w.type?.displayName === "Sidebar.Footer"
274
+ ), X = S.filter(
275
+ (w) => !D.isValidElement(w) || w.type?.displayName !== "Sidebar.Footer"
276
+ );
277
+ return /* @__PURE__ */ B(
278
+ "div",
279
+ {
280
+ "data-sidebar": "content-container",
281
+ style: { width: R },
282
+ className: r(
283
+ "flex h-full flex-col",
284
+ "min-w-0 overflow-hidden whitespace-nowrap",
285
+ "bg-(--sidebar-bg) text-kumo-default",
286
+ T,
287
+ "transition-[width] duration-(--sidebar-animation-duration) ease-(--sidebar-easing)",
288
+ "motion-reduce:transition-none",
289
+ h && "transition-none!",
290
+ !o && r(
291
+ f ? "absolute" : "fixed",
292
+ "inset-y-0 z-40",
293
+ s === "left" && "left-0",
294
+ s === "right" && "right-0"
295
+ ),
296
+ o && "relative"
297
+ ),
298
+ children: [
299
+ /* @__PURE__ */ i(
300
+ "div",
301
+ {
302
+ "data-sidebar": "peek-zone",
303
+ className: "flex flex-1 flex-col min-h-0",
304
+ onMouseEnter: b,
305
+ onMouseLeave: v,
306
+ onFocus: b,
307
+ onBlur: _,
308
+ children: X
309
+ }
310
+ ),
311
+ H
312
+ ]
313
+ }
314
+ );
315
+ })() })
316
+ }
317
+ );
318
+ }
319
+ );
320
+ Q.displayName = "Sidebar";
321
+ const Z = p(({ className: a, ...t }, e) => /* @__PURE__ */ i(
322
+ "div",
323
+ {
324
+ ref: e,
325
+ "data-sidebar": "header",
326
+ className: r(
327
+ "flex h-[58px] items-center gap-1 border-b border-kumo-line px-3.5",
328
+ "overflow-hidden",
329
+ a
330
+ ),
331
+ ...t
332
+ }
333
+ ));
334
+ Z.displayName = "Sidebar.Header";
335
+ const ee = p(({ className: a, children: t, ...e }, n) => /* @__PURE__ */ B(
336
+ Ve,
337
+ {
338
+ ref: n,
339
+ "data-sidebar": "content",
340
+ className: r("relative min-w-0 flex-1 overflow-hidden", a),
341
+ ...e,
342
+ children: [
343
+ /* @__PURE__ */ i(
344
+ We,
345
+ {
346
+ className: r(
347
+ "h-full px-[11px] py-[13px] group-not-data-[state=collapsed]/sidebar:px-3.5",
348
+ "transition-[padding] duration-(--sidebar-animation-duration)",
349
+ "group-data-[state=collapsed]/sidebar:overflow-x-hidden!",
350
+ // Scroll fade via CSS mask driven by Base UI overflow CSS variables
351
+ "[mask-image:linear-gradient(to_bottom,transparent_0,black_min(24px,var(--scroll-area-overflow-y-start,24px)),black_calc(100%-min(24px,var(--scroll-area-overflow-y-end,24px))),transparent_100%)]"
352
+ ),
353
+ children: /* @__PURE__ */ i(Fe, { className: "flex min-w-0 flex-col gap-2 group-data-[state=collapsed]/sidebar:min-w-0!", children: t })
354
+ }
355
+ ),
356
+ /* @__PURE__ */ i(
357
+ He,
358
+ {
359
+ orientation: "vertical",
360
+ className: r(
361
+ "flex w-1.5 touch-none select-none p-px",
362
+ "opacity-0 transition-opacity duration-150",
363
+ "data-[scrolling]:opacity-100 data-[hovering]:opacity-100"
364
+ ),
365
+ children: /* @__PURE__ */ i(
366
+ Xe,
367
+ {
368
+ className: "flex-1 rounded-full bg-kumo-line"
369
+ }
370
+ )
371
+ }
372
+ )
373
+ ]
374
+ }
375
+ ));
376
+ ee.displayName = "Sidebar.Content";
377
+ const ae = p(({ className: a, ...t }, e) => /* @__PURE__ */ i(
378
+ "div",
379
+ {
380
+ ref: e,
381
+ "data-sidebar": "footer",
382
+ className: r(
383
+ "flex h-12 shrink-0 items-center gap-4 overflow-hidden whitespace-nowrap border-t border-kumo-line",
384
+ "px-[11px] group-not-data-[state=collapsed]/sidebar:px-4",
385
+ "bg-(--sidebar-bg)",
386
+ "w-(--sidebar-width)",
387
+ "transition-[width,padding] duration-(--sidebar-animation-duration) ease-(--sidebar-easing)",
388
+ "motion-reduce:transition-none",
389
+ "sticky bottom-0",
390
+ "group-data-[state=collapsed]/sidebar:w-(--sidebar-width-icon) bg-clip-padding",
391
+ "group-data-[state=collapsed]/sidebar:border-r group-data-[state=collapsed]/sidebar:border-kumo-line",
392
+ a
393
+ ),
394
+ ...t
395
+ }
396
+ ));
397
+ ae.displayName = "Sidebar.Footer";
398
+ const te = p(
399
+ ({ className: a, children: t, ...e }, n) => /* @__PURE__ */ i(
400
+ "div",
401
+ {
402
+ ref: n,
403
+ "data-sidebar": "group",
404
+ className: r("flex min-w-0 flex-col gap-y-px", a),
405
+ ...e,
406
+ children: t
407
+ }
408
+ )
409
+ );
410
+ te.displayName = "Sidebar.Group";
411
+ const ie = p(({ className: a, children: t, ...e }, n) => /* @__PURE__ */ i(
412
+ "div",
413
+ {
414
+ ref: n,
415
+ "data-sidebar": "group-label",
416
+ className: r(
417
+ // Grid-rows for smooth collapse animation
418
+ "grid overflow-hidden",
419
+ "transition-[grid-template-rows,margin,border-color] duration-(--sidebar-animation-duration) ease-(--sidebar-easing)",
420
+ // Collapsed: spacer with divider line between icon groups
421
+ "grid-rows-[0fr] my-3 border-b border-kumo-line",
422
+ // First group: no spacer or divider needed
423
+ "[[data-sidebar=group]:first-child_&]:my-0 [[data-sidebar=group]:first-child_&]:border-transparent",
424
+ // Expanded: reveal the label text
425
+ "group-not-data-[state=collapsed]/sidebar:grid-rows-[1fr] group-not-data-[state=collapsed]/sidebar:my-0 group-not-data-[state=collapsed]/sidebar:border-transparent",
426
+ a
427
+ ),
428
+ ...e,
429
+ children: /* @__PURE__ */ i("div", { className: "min-h-0", children: /* @__PURE__ */ i(
430
+ "div",
431
+ {
432
+ className: r(
433
+ "truncate px-3 mt-4 mb-2 text-sm font-medium text-kumo-subtle",
434
+ // First group: less top margin
435
+ "[[data-sidebar=group]:first-child_&]:mt-2"
436
+ ),
437
+ children: t
438
+ }
439
+ ) })
440
+ }
441
+ ));
442
+ ie.displayName = "Sidebar.GroupLabel";
443
+ const ne = V(!1), re = V(!1), se = p(({ className: a, ...t }, e) => /* @__PURE__ */ i(
444
+ "ul",
445
+ {
446
+ ref: e,
447
+ "data-sidebar": "menu",
448
+ className: r(
449
+ "m-0 flex min-w-0 list-none flex-col items-stretch gap-y-px p-0",
450
+ a
451
+ ),
452
+ ...t
453
+ }
454
+ ));
455
+ se.displayName = "Sidebar.Menu";
456
+ const oe = p(({ className: a, children: t, ...e }, n) => /* @__PURE__ */ i(ne.Provider, { value: !0, children: /* @__PURE__ */ i(
457
+ "li",
458
+ {
459
+ ref: n,
460
+ "data-sidebar": "menu-item",
461
+ className: r("relative group-data-[state=collapsed]/sidebar:overflow-hidden", a),
462
+ ...e,
463
+ children: t
464
+ }
465
+ ) }));
466
+ oe.displayName = "Sidebar.MenuItem";
467
+ const de = p(
468
+ ({
469
+ className: a,
470
+ icon: t,
471
+ active: e = !1,
472
+ size: n = "base",
473
+ href: l,
474
+ tooltip: o,
475
+ children: c,
476
+ ...u
477
+ }, m) => {
478
+ const { state: s, peekable: d } = z(), g = j(), h = P(ne), k = t ? D.isValidElement(t) ? t : /* @__PURE__ */ i(
479
+ t,
480
+ {
481
+ className: r("shrink-0 opacity-50", n === "base" ? "size-4" : "size-3.5")
482
+ }
483
+ ) : null, x = /* @__PURE__ */ B(
484
+ "div",
485
+ {
486
+ className: r(
487
+ "flex flex-1 items-center min-w-0 gap-3",
488
+ "translate-x-[-3px] group-not-data-[state=collapsed]/sidebar:translate-x-0",
489
+ "transition-transform duration-(--sidebar-animation-duration)"
490
+ ),
491
+ children: [
492
+ k,
493
+ /* @__PURE__ */ i(
494
+ "span",
495
+ {
496
+ className: r(
497
+ "flex flex-1 items-center gap-2 min-w-0 text-left overflow-hidden"
498
+ ),
499
+ children: c
500
+ }
501
+ )
502
+ ]
503
+ }
504
+ ), y = r(
505
+ // Layout
506
+ "group/menu-button relative flex w-full min-w-0 items-center gap-2.5 rounded-lg outline-none cursor-pointer",
507
+ "before:absolute before:inset-x-0 before:-inset-y-px",
508
+ // Sizing
509
+ n === "base" && "min-h-8.5 px-3 py-0 text-sm font-medium",
510
+ n === "sm" && "min-h-7 px-2 py-0 text-sm",
511
+ "text-kumo-default",
512
+ "transition-[color,background-color,box-shadow,outline] duration-(--sidebar-animation-duration)",
513
+ !e && "hover:bg-kumo-tint",
514
+ // Active state
515
+ e && "bg-kumo-tint",
516
+ // When a child sub-button is active, don't show active styling on the parent trigger
517
+ "has-[[data-active]]:bg-transparent has-[[data-active]]:hover:bg-kumo-tint",
518
+ // Focus
519
+ "focus:outline-none focus-visible:text-kumo-strong focus-visible:bg-kumo-tint",
520
+ a
521
+ );
522
+ let b;
523
+ return l ? b = /* @__PURE__ */ i(
524
+ g,
525
+ {
526
+ ref: m,
527
+ className: r(y, "no-underline!"),
528
+ href: l,
529
+ to: l,
530
+ "data-active": e || void 0,
531
+ "data-sidebar": "menu-button",
532
+ "data-kumo-component": "Sidebar",
533
+ "data-kumo-part": "menu-button-link",
534
+ "data-size": n,
535
+ onClick: u.onClick,
536
+ children: x
537
+ }
538
+ ) : b = /* @__PURE__ */ i(
539
+ "button",
540
+ {
541
+ ref: m,
542
+ type: "button",
543
+ className: y,
544
+ "data-active": e || void 0,
545
+ "data-sidebar": "menu-button",
546
+ "data-kumo-component": "Sidebar",
547
+ "data-kumo-part": "menu-button",
548
+ "data-size": n,
549
+ ...u,
550
+ children: x
551
+ }
552
+ ), o && (b = /* @__PURE__ */ i(
553
+ Pe,
554
+ {
555
+ content: s === "collapsed" && !d ? o : null,
556
+ side: "right",
557
+ render: b
558
+ }
559
+ )), h ? b : /* @__PURE__ */ i("li", { "data-sidebar": "menu-item", className: "relative group-data-[state=collapsed]/sidebar:overflow-hidden", children: b });
560
+ }
561
+ );
562
+ de.displayName = "Sidebar.MenuButton";
563
+ const le = p(({ className: a, ...t }, e) => /* @__PURE__ */ i(
564
+ "span",
565
+ {
566
+ ref: e,
567
+ "data-sidebar": "menu-badge",
568
+ className: r(
569
+ "inline-flex shrink-0 items-center rounded-full border border-dashed border-kumo-line",
570
+ "select-none px-1.5 py-0.5 text-[11px]/none font-medium text-kumo-strong",
571
+ // Hidden when collapsed
572
+ "group-data-[state=collapsed]/sidebar:hidden",
573
+ a
574
+ ),
575
+ ...t
576
+ }
577
+ ));
578
+ le.displayName = "Sidebar.MenuBadge";
579
+ const ce = p(({ className: a, children: t, ...e }, n) => /* @__PURE__ */ B(
580
+ "ul",
581
+ {
582
+ ref: n,
583
+ "data-sidebar": "menu-sub",
584
+ className: r(
585
+ "relative m-0 flex min-w-0 list-none flex-col gap-y-px p-0 pl-7 pr-0 overflow-hidden",
586
+ // Hidden when collapsed
587
+ "group-data-[state=collapsed]/sidebar:hidden",
588
+ a
589
+ ),
590
+ ...e,
591
+ children: [
592
+ /* @__PURE__ */ i("div", { className: "absolute left-[19px] inset-y-px w-px bg-kumo-line z-10" }),
593
+ t
594
+ ]
595
+ }
596
+ ));
597
+ ce.displayName = "Sidebar.MenuSub";
598
+ const ue = p(({ className: a, children: t, ...e }, n) => /* @__PURE__ */ i(re.Provider, { value: !0, children: /* @__PURE__ */ i(
599
+ "li",
600
+ {
601
+ ref: n,
602
+ "data-sidebar": "menu-sub-item",
603
+ className: r("relative", a),
604
+ ...e,
605
+ children: t
606
+ }
607
+ ) }));
608
+ ue.displayName = "Sidebar.MenuSubItem";
609
+ const be = p(({ className: a, active: t = !1, href: e, children: n, ...l }, o) => {
610
+ const c = j(), u = P(re), m = r(
611
+ "relative flex w-full min-w-0 items-center gap-2 rounded-lg min-h-8.5 px-3 py-0 text-sm font-medium outline-none cursor-pointer",
612
+ "before:absolute before:inset-x-0 before:-inset-y-px",
613
+ "text-kumo-default transition-colors duration-150",
614
+ !t && "hover:bg-kumo-tint",
615
+ t && "bg-kumo-tint",
616
+ "focus:outline-none focus-visible:text-kumo-strong focus-visible:bg-kumo-tint",
617
+ a
618
+ ), s = /* @__PURE__ */ i("span", { className: "flex flex-1 items-center gap-2 truncate text-left", children: n });
619
+ let d;
620
+ return e ? d = /* @__PURE__ */ i(
621
+ c,
622
+ {
623
+ ref: o,
624
+ className: r(m, "no-underline!"),
625
+ href: e,
626
+ to: e,
627
+ "data-active": t || void 0,
628
+ "data-sidebar": "menu-sub-button",
629
+ "data-kumo-component": "Sidebar",
630
+ "data-kumo-part": "menu-sub-button-link",
631
+ onClick: l.onClick,
632
+ children: s
633
+ }
634
+ ) : d = /* @__PURE__ */ i(
635
+ "button",
636
+ {
637
+ ref: o,
638
+ type: "button",
639
+ className: m,
640
+ "data-active": t || void 0,
641
+ "data-sidebar": "menu-sub-button",
642
+ "data-kumo-component": "Sidebar",
643
+ "data-kumo-part": "menu-sub-button",
644
+ ...l,
645
+ children: s
646
+ }
647
+ ), u ? d : /* @__PURE__ */ i("li", { "data-sidebar": "menu-sub-item", className: "relative", children: d });
648
+ });
649
+ be.displayName = "Sidebar.MenuSubButton";
650
+ const pe = p(({ className: a, ...t }, e) => /* @__PURE__ */ i(
651
+ "div",
652
+ {
653
+ ref: e,
654
+ "data-sidebar": "separator",
655
+ className: r(
656
+ "my-3 px-2",
657
+ a
658
+ ),
659
+ ...t,
660
+ children: /* @__PURE__ */ i("div", { className: "border-b border-kumo-line" })
661
+ }
662
+ ));
663
+ pe.displayName = "Sidebar.Separator";
664
+ function me({ className: a }) {
665
+ const { open: t } = z();
666
+ return /* @__PURE__ */ B(
667
+ "svg",
668
+ {
669
+ width: "18",
670
+ height: "18",
671
+ viewBox: "0 0 24 24",
672
+ fill: "none",
673
+ "aria-hidden": "true",
674
+ focusable: "false",
675
+ stroke: "currentColor",
676
+ strokeWidth: "1.5",
677
+ strokeLinecap: "round",
678
+ className: r("shrink-0", a),
679
+ children: [
680
+ /* @__PURE__ */ i("path", { d: "M21.25 6.72v10.56a2.97 2.97 0 0 1-2.97 2.97H5.72a2.97 2.97 0 0 1-2.97-2.97V6.72a2.97 2.97 0 0 1 2.97-2.97h12.56a2.97 2.97 0 0 1 2.97 2.97" }),
681
+ /* @__PURE__ */ i(
682
+ "path",
683
+ {
684
+ d: "M6.25 7.25v9.5",
685
+ className: r(
686
+ "transition-transform duration-(--sidebar-animation-duration) ease-(--sidebar-easing)",
687
+ t ? "translate-x-px" : "translate-x-[10.5px]"
688
+ )
689
+ }
690
+ )
691
+ ]
692
+ }
693
+ );
694
+ }
695
+ me.displayName = "Sidebar.PanelIcon";
696
+ const fe = p(({ className: a, children: t, onClick: e, ...n }, l) => {
697
+ const { open: o, toggleSidebar: c } = z();
698
+ return /* @__PURE__ */ i(
699
+ "button",
700
+ {
701
+ ref: l,
702
+ type: "button",
703
+ "data-sidebar": "trigger",
704
+ "data-kumo-component": "Sidebar",
705
+ "data-kumo-part": "trigger",
706
+ "aria-expanded": o,
707
+ "aria-label": o ? "Collapse sidebar" : "Expand sidebar",
708
+ className: r(
709
+ "flex size-8.5 justify-center items-center rounded-lg cursor-pointer",
710
+ "text-kumo-subtle hover:text-kumo-default hover:bg-kumo-tint",
711
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-kumo-brand",
712
+ a
713
+ ),
714
+ onClick: (u) => {
715
+ e?.(u), c();
716
+ },
717
+ ...n,
718
+ children: t ?? /* @__PURE__ */ i(me, {})
719
+ }
720
+ );
721
+ });
722
+ fe.displayName = "Sidebar.Trigger";
723
+ const ge = p(({ className: a, ...t }, e) => {
724
+ const { toggleSidebar: n } = z();
725
+ return /* @__PURE__ */ i(
726
+ "button",
727
+ {
728
+ ref: e,
729
+ type: "button",
730
+ "data-sidebar": "rail",
731
+ "data-kumo-component": "Sidebar",
732
+ "data-kumo-part": "rail",
733
+ "aria-label": "Toggle sidebar",
734
+ tabIndex: -1,
735
+ className: r(
736
+ "absolute inset-y-0 z-1 hidden w-4 -translate-x-1/2 cursor-pointer transition-all",
737
+ "after:absolute after:inset-y-0 after:left-1/2 after:w-0.5",
738
+ "hover:after:bg-kumo-brand/20",
739
+ "group-data-[side=left]/sidebar-wrapper:right-0",
740
+ "group-data-[side=right]/sidebar-wrapper:left-0",
741
+ "sm:flex",
742
+ a
743
+ ),
744
+ onClick: n,
745
+ ...t
746
+ }
747
+ );
748
+ });
749
+ ge.displayName = "Sidebar.Rail";
750
+ const he = p(({ className: a, ...t }, e) => {
751
+ const { side: n, resizable: l, setIsResizing: o, setWidth: c, setOpen: u, open: m, minWidth: s, width: d, maxWidth: g } = z(), h = W(0), k = W(0), x = W(!1);
752
+ if (!l) return null;
753
+ const y = 10, b = (f) => {
754
+ f.preventDefault(), o(!0), h.current = f.clientX, x.current = !m;
755
+ const N = f.currentTarget.closest(
756
+ "[data-sidebar-wrapper]"
757
+ )?.querySelector("[data-sidebar='sidebar']");
758
+ k.current = N?.getBoundingClientRect().width ?? 0;
759
+ const C = () => {
760
+ o(!1), document.removeEventListener("pointermove", A), document.removeEventListener("pointerup", L);
761
+ }, A = (R) => {
762
+ const T = n === "left" ? R.clientX - h.current : h.current - R.clientX, S = k.current + T;
763
+ if (x.current) {
764
+ S >= s && (x.current = !1, u(!0), c(S));
765
+ return;
766
+ }
767
+ if (S < s) {
768
+ u(!1), x.current = !0;
769
+ return;
770
+ }
771
+ c(S);
772
+ }, L = () => {
773
+ C();
774
+ };
775
+ document.addEventListener("pointermove", A), document.addEventListener("pointerup", L);
776
+ }, v = (f) => {
777
+ const _ = n === "left" ? "ArrowRight" : "ArrowLeft", N = n === "left" ? "ArrowLeft" : "ArrowRight";
778
+ if (f.key === _)
779
+ f.preventDefault(), m ? c(Math.min(d + y, g)) : (u(!0), c(s));
780
+ else if (f.key === N) {
781
+ f.preventDefault();
782
+ const C = d - y;
783
+ C < s ? u(!1) : c(C);
784
+ } else f.key === "Home" ? (f.preventDefault(), u(!1)) : f.key === "End" && (f.preventDefault(), u(!0), c(g));
785
+ };
786
+ return /* @__PURE__ */ i(
787
+ "button",
788
+ {
789
+ ref: e,
790
+ type: "button",
791
+ "aria-label": "Resize sidebar",
792
+ tabIndex: 0,
793
+ "data-sidebar": "resize-handle",
794
+ className: r(
795
+ // Hit area inside the sidebar edge; thin visual line pinned to the edge via ::after
796
+ "absolute inset-y-0 z-2 hidden w-3 cursor-col-resize sm:block",
797
+ "after:absolute after:inset-y-0 after:w-0.5",
798
+ "after:bg-transparent after:transition-colors",
799
+ "hover:after:bg-kumo-hairline active:after:bg-kumo-hairline focus-visible:after:bg-kumo-hairline",
800
+ "focus:outline-none",
801
+ n === "left" && "right-0 after:right-0",
802
+ n === "right" && "left-0 after:left-0",
803
+ a
804
+ ),
805
+ onPointerDown: b,
806
+ onKeyDown: v,
807
+ ...t
808
+ }
809
+ );
810
+ });
811
+ he.displayName = "Sidebar.ResizeHandle";
812
+ const F = V({
813
+ contentId: "",
814
+ isOpen: !0,
815
+ isCollapsible: !1,
816
+ toggle: () => {
817
+ }
818
+ }), xe = p(
819
+ ({ defaultOpen: a = !1, open: t, onOpenChange: e, className: n, children: l, ...o }, c) => {
820
+ const [u, m] = E(a), s = t ?? u, d = _e(), g = W(!1), h = I(() => {
821
+ const b = !s;
822
+ m(b), e?.(b), g.current = !1;
823
+ }, [s, e]), k = $(
824
+ () => ({ contentId: d, isOpen: s, isCollapsible: !0, toggle: h }),
825
+ [d, s, h]
826
+ ), x = I(
827
+ (b) => {
828
+ !s && b.target.matches(":focus-visible") && (g.current = !0, m(!0), e?.(!0));
829
+ },
830
+ [s, e]
831
+ ), y = I(
832
+ (b) => {
833
+ g.current && !b.currentTarget.contains(b.relatedTarget) && !b.currentTarget.querySelector("[data-active]") && (g.current = !1, m(!1), e?.(!1));
834
+ },
835
+ [e]
836
+ );
837
+ return /* @__PURE__ */ i(F.Provider, { value: k, children: /* @__PURE__ */ i(
838
+ "div",
839
+ {
840
+ ref: c,
841
+ "data-open": s || void 0,
842
+ className: r("min-w-0", n),
843
+ onFocus: x,
844
+ onBlur: y,
845
+ ...o,
846
+ children: l
847
+ }
848
+ ) });
849
+ }
850
+ );
851
+ xe.displayName = "Sidebar.Collapsible";
852
+ function ve({ render: a }) {
853
+ const { contentId: t, isOpen: e, toggle: n } = P(F);
854
+ return D.cloneElement(a, {
855
+ "aria-expanded": e,
856
+ "aria-controls": t,
857
+ "data-open": e || void 0,
858
+ onClick: (l) => {
859
+ const o = a.props.onClick;
860
+ o?.(l), n();
861
+ }
862
+ });
863
+ }
864
+ ve.displayName = "Sidebar.CollapsibleTrigger";
865
+ const we = p(({ className: a, children: t, ...e }, n) => {
866
+ const { contentId: l, isOpen: o } = P(F);
867
+ return /* @__PURE__ */ i(
868
+ "div",
869
+ {
870
+ ref: n,
871
+ id: l,
872
+ role: "region",
873
+ "aria-hidden": !o,
874
+ inert: o ? void 0 : !0,
875
+ "data-open": o || void 0,
876
+ className: r(
877
+ "grid",
878
+ "transition-[grid-template-rows] duration-(--sidebar-animation-duration) ease-(--sidebar-easing)",
879
+ "motion-reduce:transition-none",
880
+ o ? "grid-rows-[1fr]" : "grid-rows-[0fr]",
881
+ a
882
+ ),
883
+ ...e,
884
+ children: /* @__PURE__ */ i("div", { className: "overflow-hidden", children: t })
885
+ }
886
+ );
887
+ });
888
+ we.displayName = "Sidebar.CollapsibleContent";
889
+ function Se({ className: a }) {
890
+ const { isOpen: t, isCollapsible: e } = P(F);
891
+ return /* @__PURE__ */ i(
892
+ Ee,
893
+ {
894
+ size: 12,
895
+ weight: "bold",
896
+ className: r(
897
+ "ml-auto shrink-0 text-kumo-subtle transition-transform duration-200",
898
+ e && t && "rotate-90",
899
+ // Hidden when sidebar is collapsed
900
+ "group-data-[state=collapsed]/sidebar:hidden",
901
+ a
902
+ )
903
+ }
904
+ );
905
+ }
906
+ Se.displayName = "Sidebar.MenuChevron";
907
+ const ke = V(""), ye = p(
908
+ ({ activeKey: a, direction: t = "left", className: e, children: n, ...l }, o) => {
909
+ const u = D.Children.toArray(n).findIndex(
910
+ (d) => D.isValidElement(d) && d.props.value === a
911
+ ), m = typeof window < "u" && window.matchMedia("(prefers-reduced-motion: reduce)").matches, s = u > 0 ? `-${u * 100}%` : "0%";
912
+ return /* @__PURE__ */ i(ke.Provider, { value: a, children: /* @__PURE__ */ i(
913
+ "div",
914
+ {
915
+ ref: o,
916
+ "data-sidebar": "sliding-views",
917
+ className: r("flex flex-1 min-h-0 overflow-hidden", e),
918
+ ...l,
919
+ children: /* @__PURE__ */ i(
920
+ "div",
921
+ {
922
+ className: "flex min-h-0 w-full shrink-0",
923
+ style: {
924
+ transform: `translateX(${s})`,
925
+ transition: m ? "none" : "transform var(--sidebar-animation-duration) var(--sidebar-easing)"
926
+ },
927
+ children: n
928
+ }
929
+ )
930
+ }
931
+ ) });
932
+ }
933
+ );
934
+ ye.displayName = "Sidebar.SlidingViews";
935
+ const Ne = p(
936
+ ({ value: a, className: t, children: e, ...n }, l) => {
937
+ const c = P(ke) === a;
938
+ return /* @__PURE__ */ i(
939
+ "div",
940
+ {
941
+ ref: l,
942
+ "data-sidebar": "sliding-view",
943
+ "data-value": a,
944
+ "aria-hidden": !c,
945
+ inert: c ? void 0 : !0,
946
+ className: r(
947
+ "flex w-full shrink-0 flex-col min-h-0",
948
+ !c && "pointer-events-none",
949
+ t
950
+ ),
951
+ ...n,
952
+ children: e
953
+ }
954
+ );
955
+ }
956
+ );
957
+ Ne.displayName = "Sidebar.SlidingView";
958
+ const oa = Object.assign(Q, {
959
+ Provider: J,
960
+ Header: Z,
961
+ Content: ee,
962
+ Footer: ae,
963
+ Group: te,
964
+ GroupLabel: ie,
965
+ Menu: se,
966
+ MenuItem: oe,
967
+ MenuButton: de,
968
+ MenuBadge: le,
969
+ MenuSub: ce,
970
+ MenuSubItem: ue,
971
+ MenuSubButton: be,
972
+ Separator: pe,
973
+ Trigger: fe,
974
+ Rail: ge,
975
+ ResizeHandle: he,
976
+ MenuChevron: Se,
977
+ Collapsible: xe,
978
+ CollapsibleTrigger: ve,
979
+ CollapsibleContent: we,
980
+ SlidingViews: ye,
981
+ SlidingView: Ne
982
+ });
983
+ export {
984
+ sa as A,
985
+ ra as K,
986
+ oa as S,
987
+ J as a,
988
+ Q as b,
989
+ Z as c,
990
+ ee as d,
991
+ ae as e,
992
+ te as f,
993
+ ie as g,
994
+ se as h,
995
+ oe as i,
996
+ de as j,
997
+ le as k,
998
+ ce as l,
999
+ ue as m,
1000
+ be as n,
1001
+ pe as o,
1002
+ fe as p,
1003
+ ge as q,
1004
+ he as r,
1005
+ Se as s,
1006
+ xe as t,
1007
+ ve as u,
1008
+ we as v,
1009
+ ye as w,
1010
+ Ne as x,
1011
+ z as y,
1012
+ U as z
1013
+ };
1014
+ //# sourceMappingURL=sidebar-hzio700cg85f7f31.js.map