@cloudflare/kumo 2.4.1 → 2.5.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 (37) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/ai/component-registry.json +34 -4
  3. package/ai/component-registry.md +176 -3
  4. package/ai/schemas.ts +1 -0
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +2 -0
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +45 -43
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/{SankeyChart-npoyr1j06svoxsfe.js → SankeyChart-i1m7zv0lys3j0iq6.js} +74 -69
  11. package/dist/chunks/SankeyChart-i1m7zv0lys3j0iq6.js.map +1 -0
  12. package/dist/chunks/{dialog-my9fioafdstq50mi.js → dialog-3mpu1i1wssrsz8i6.js} +11 -11
  13. package/dist/chunks/dialog-3mpu1i1wssrsz8i6.js.map +1 -0
  14. package/dist/chunks/sidebar-nbdw4rgvuabxp5nj.js +1144 -0
  15. package/dist/chunks/sidebar-nbdw4rgvuabxp5nj.js.map +1 -0
  16. package/dist/chunks/{tabs-hice1yy5q2t889z8.js → tabs-ho9t1gkq22jb855l.js} +51 -28
  17. package/dist/chunks/tabs-ho9t1gkq22jb855l.js.map +1 -0
  18. package/dist/components/chart.js +1 -1
  19. package/dist/components/dialog.js +1 -1
  20. package/dist/components/flow.js +3 -2
  21. package/dist/components/flow.js.map +1 -1
  22. package/dist/components/sidebar.js +1 -1
  23. package/dist/components/tabs.js +1 -1
  24. package/dist/index.js +5 -5
  25. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  26. package/dist/src/components/flow/connectors.d.ts.map +1 -1
  27. package/dist/src/components/sidebar/sidebar.d.ts +14 -2
  28. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  29. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  30. package/dist/styles/kumo-binding.css +27 -20
  31. package/dist/styles/kumo-standalone.css +1 -1
  32. package/package.json +2 -2
  33. package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js.map +0 -1
  34. package/dist/chunks/dialog-my9fioafdstq50mi.js.map +0 -1
  35. package/dist/chunks/sidebar-hzio700cg85f7f31.js +0 -1014
  36. package/dist/chunks/sidebar-hzio700cg85f7f31.js.map +0 -1
  37. package/dist/chunks/tabs-hice1yy5q2t889z8.js.map +0 -1
@@ -1,1014 +0,0 @@
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