@g4rcez/components 3.0.1 → 3.0.2
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.
- package/dist/MotionConfigContext-C7MqlSdv.js +2713 -0
- package/dist/MotionConfigContext-C7MqlSdv.js.map +1 -0
- package/dist/autocomplete-Boida9R7.js +375 -0
- package/dist/autocomplete-Boida9R7.js.map +1 -0
- package/dist/calendar-BswV66Nx.js +1719 -0
- package/dist/calendar-BswV66Nx.js.map +1 -0
- package/dist/chevron-down-BBFYYzZq.js +6 -0
- package/dist/chevron-down-BBFYYzZq.js.map +1 -0
- package/dist/chevron-right-DvXGOiS_.js +6 -0
- package/dist/chevron-right-DvXGOiS_.js.map +1 -0
- package/dist/circle-check-big-3M5lhTxx.js +9 -0
- package/dist/circle-check-big-3M5lhTxx.js.map +1 -0
- package/dist/components/core/button.js +76 -0
- package/dist/components/core/button.js.map +1 -0
- package/dist/components/core/tag.js +67 -0
- package/dist/components/core/tag.js.map +1 -0
- package/dist/components/display/alert.js +94 -0
- package/dist/components/display/alert.js.map +1 -0
- package/dist/components/display/calendar.js +15 -0
- package/dist/components/display/calendar.js.map +1 -0
- package/dist/components/display/card.js +84 -0
- package/dist/components/display/card.js.map +1 -0
- package/dist/components/display/list.js +93 -0
- package/dist/components/display/list.js.map +1 -0
- package/dist/components/display/notifications.js +15 -0
- package/dist/components/display/notifications.js.map +1 -0
- package/dist/components/display/stats.js +16 -0
- package/dist/components/display/stats.js.map +1 -0
- package/dist/components/display/tabs.js +12 -0
- package/dist/components/display/tabs.js.map +1 -0
- package/dist/components/display/timeline.js +29 -0
- package/dist/components/display/timeline.js.map +1 -0
- package/dist/components/floating/dropdown.js +58 -0
- package/dist/components/floating/dropdown.js.map +1 -0
- package/dist/components/floating/expand.js +41 -0
- package/dist/components/floating/expand.js.map +1 -0
- package/dist/components/floating/menu.js +177 -0
- package/dist/components/floating/menu.js.map +1 -0
- package/dist/components/floating/modal.js +297 -0
- package/dist/components/floating/modal.js.map +1 -0
- package/dist/components/floating/tooltip.js +73 -0
- package/dist/components/floating/tooltip.js.map +1 -0
- package/dist/components/form/autocomplete.js +16 -0
- package/dist/components/form/autocomplete.js.map +1 -0
- package/dist/components/form/checkbox.js +44 -0
- package/dist/components/form/checkbox.js.map +1 -0
- package/dist/components/form/date-picker.js +12 -0
- package/dist/components/form/date-picker.js.map +1 -0
- package/dist/components/form/file-upload.js +11 -0
- package/dist/components/form/file-upload.js.map +1 -0
- package/dist/components/form/form.js +8 -0
- package/dist/components/form/form.js.map +1 -0
- package/dist/components/form/input.js +5 -0
- package/dist/components/form/input.js.map +1 -0
- package/dist/components/form/radiobox.js +30 -0
- package/dist/components/form/radiobox.js.map +1 -0
- package/dist/components/form/select.js +106 -0
- package/dist/components/form/select.js.map +1 -0
- package/dist/components/form/switch.js +65 -0
- package/dist/components/form/switch.js.map +1 -0
- package/dist/components/form/task-list.js +68 -0
- package/dist/components/form/task-list.js.map +1 -0
- package/dist/components/form/transfer-list.js +55 -0
- package/dist/components/form/transfer-list.js.map +1 -0
- package/dist/components/table/table.js +10 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/constants-r-AHn273.js +6 -0
- package/dist/constants-r-AHn273.js.map +1 -0
- package/dist/context-BFXNJVn2.js +161 -0
- package/dist/context-BFXNJVn2.js.map +1 -0
- package/dist/createLucideIcon-CP-mMPfa.js +76 -0
- package/dist/createLucideIcon-CP-mMPfa.js.map +1 -0
- package/dist/date-picker-BxPTdZPy.js +1598 -0
- package/dist/date-picker-BxPTdZPy.js.map +1 -0
- package/dist/dom-Dl8XH0CK.js +2833 -0
- package/dist/dom-Dl8XH0CK.js.map +1 -0
- package/dist/file-CBCP85VI.js +15 -0
- package/dist/file-CBCP85VI.js.map +1 -0
- package/dist/file-upload-BB6BdGcE.js +3118 -0
- package/dist/file-upload-BB6BdGcE.js.map +1 -0
- package/dist/floating-ui.react-DycKASR0.js +3706 -0
- package/dist/floating-ui.react-DycKASR0.js.map +1 -0
- package/dist/fns-D2eyJKd5.js +33 -0
- package/dist/fns-D2eyJKd5.js.map +1 -0
- package/dist/index-0YMC-_Lt.js +20 -0
- package/dist/index-0YMC-_Lt.js.map +1 -0
- package/dist/index-BJ1ayTam.js +126 -0
- package/dist/index-BJ1ayTam.js.map +1 -0
- package/dist/index-BtlhELJ3.js +3416 -0
- package/dist/index-BtlhELJ3.js.map +1 -0
- package/dist/index-ChfR6F8d.js +1590 -0
- package/dist/index-ChfR6F8d.js.map +1 -0
- package/dist/index-DE4shK8D.js +215 -0
- package/dist/index-DE4shK8D.js.map +1 -0
- package/dist/index-DJSMaZR4.js +35 -0
- package/dist/index-DJSMaZR4.js.map +1 -0
- package/dist/index-t1qLJTt5.js +351 -0
- package/dist/index-t1qLJTt5.js.map +1 -0
- package/dist/index.esm-BaIwleSE.js +343 -0
- package/dist/index.esm-BaIwleSE.js.map +1 -0
- package/dist/index.js +8049 -27
- package/dist/index.js.map +1 -1
- package/dist/info-N5jWZg2A.js +10 -0
- package/dist/info-N5jWZg2A.js.map +1 -0
- package/dist/input-CoJoHIhd.js +441 -0
- package/dist/input-CoJoHIhd.js.map +1 -0
- package/dist/input-field-DTeIrwpK.js +146 -0
- package/dist/input-field-DTeIrwpK.js.map +1 -0
- package/dist/notifications-NPuFDsBp.js +2550 -0
- package/dist/notifications-NPuFDsBp.js.map +1 -0
- package/dist/polymorph-B5n9fs_K.js +10 -0
- package/dist/polymorph-B5n9fs_K.js.map +1 -0
- package/dist/proxy-BZcQiBrp.js +2495 -0
- package/dist/proxy-BZcQiBrp.js.map +1 -0
- package/dist/skeleton-D75GFBV6.js +10 -0
- package/dist/skeleton-D75GFBV6.js.map +1 -0
- package/dist/slot-CQW8ZzBb.js +79 -0
- package/dist/slot-CQW8ZzBb.js.map +1 -0
- package/dist/styles/common.js +29 -0
- package/dist/styles/dark.js +214 -0
- package/dist/styles/design-tokens.js +98 -0
- package/dist/styles/light.js +214 -0
- package/dist/styles/theme.js +4 -0
- package/dist/styles/theme.types.js +1 -0
- package/dist/tabs-ccIA7vMo.js +106 -0
- package/dist/tabs-ccIA7vMo.js.map +1 -0
- package/dist/triangle-alert-CHMhQ6yd.js +16 -0
- package/dist/triangle-alert-CHMhQ6yd.js.map +1 -0
- package/dist/use-motion-value-eGwNuWuw.js +14 -0
- package/dist/use-motion-value-eGwNuWuw.js.map +1 -0
- package/dist/use-stable-ref-CYh-YkID.js +11 -0
- package/dist/use-stable-ref-CYh-YkID.js.map +1 -0
- package/dist/use-translations-BwLKTrZv.js +10 -0
- package/dist/use-translations-BwLKTrZv.js.map +1 -0
- package/dist/x-B9bYxG31.js +9 -0
- package/dist/x-B9bYxG31.js.map +1 -0
- package/package.json +3 -4
- package/dist/index.mjs +0 -37108
- package/dist/index.mjs.map +0 -1
- package/dist/index.umd.js +0 -28
- package/dist/index.umd.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsxs as a, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { c as n } from "../../dom-Dl8XH0CK.js";
|
|
3
|
+
import { P as r } from "../../polymorph-B5n9fs_K.js";
|
|
4
|
+
const l = (t) => /* @__PURE__ */ a("li", { "data-component": "timeline-item", className: "relative pb-12", role: "listitem", children: [
|
|
5
|
+
/* @__PURE__ */ i("span", { "aria-hidden": "true", className: "absolute left-6 top-8 -ml-px h-full w-0.5 bg-card-border" }),
|
|
6
|
+
/* @__PURE__ */ i("div", { className: "relative flex items-stretch justify-start space-x-3", children: t.children })
|
|
7
|
+
] });
|
|
8
|
+
l.Icon = function(e) {
|
|
9
|
+
return /* @__PURE__ */ i(
|
|
10
|
+
"header",
|
|
11
|
+
{
|
|
12
|
+
...e,
|
|
13
|
+
className: n("flex size-12 items-center justify-center rounded-full bg-primary p-2 text-warn-foreground", e.className),
|
|
14
|
+
children: e.children
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
l.Body = function(e) {
|
|
19
|
+
return /* @__PURE__ */ i(r, { ...e, className: n("min-w-0 flex-1", e.className), children: e.children });
|
|
20
|
+
};
|
|
21
|
+
l.Right = function(e) {
|
|
22
|
+
return /* @__PURE__ */ i("footer", { className: "flex gap-6 self-stretch px-4 align-baseline", children: /* @__PURE__ */ i(r, { ...e, type: "button" }) });
|
|
23
|
+
};
|
|
24
|
+
const o = (t) => /* @__PURE__ */ i("ul", { "data-component": "timeline", role: "list", className: "flow-root [&>li:last-child>span[aria-hidden=true]]:hidden", children: t.children });
|
|
25
|
+
export {
|
|
26
|
+
o as Timeline,
|
|
27
|
+
l as TimelineItem
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sources":["../../../src/components/display/timeline.tsx"],"sourcesContent":["import React, { ComponentProps, ElementType, PropsWithChildren } from \"react\";\nimport { css } from \"../../lib/dom\";\nimport { Polymorph, PolymorphicProps } from \"../core/polymorph\";\n\nexport const TimelineItem = (props: PropsWithChildren) => (\n <li data-component=\"timeline-item\" className=\"relative pb-12\" role=\"listitem\">\n <span aria-hidden=\"true\" className=\"absolute left-6 top-8 -ml-px h-full w-0.5 bg-card-border\" />\n <div className=\"relative flex items-stretch justify-start space-x-3\">{props.children}</div>\n </li>\n);\n\nTimelineItem.Icon = function TimelineIcon(props: PropsWithChildren<ComponentProps<\"header\">>) {\n return (\n <header\n {...props}\n className={css(\"flex size-12 items-center justify-center rounded-full bg-primary p-2 text-warn-foreground\", props.className)}\n >\n {props.children}\n </header>\n );\n};\n\nTimelineItem.Body = function TimelineItemBody<T extends ElementType = \"section\">(props: PropsWithChildren<PolymorphicProps<object, T>>) {\n return (\n <Polymorph {...props} className={css(\"min-w-0 flex-1\", props.className)}>\n {props.children}\n </Polymorph>\n );\n};\n\nTimelineItem.Right = function TimelineItemRight<T extends ElementType = \"button\">(props: PolymorphicProps<object, T>) {\n return (\n <footer className=\"flex gap-6 self-stretch px-4 align-baseline\">\n <Polymorph {...props} type=\"button\" />\n </footer>\n );\n};\n\nexport const Timeline = (props: PropsWithChildren) => (\n <ul data-component=\"timeline\" role=\"list\" className=\"flow-root [&>li:last-child>span[aria-hidden=true]]:hidden\">\n {props.children}\n </ul>\n);\n"],"names":["TimelineItem","props","jsxs","jsx","css","Polymorph","Timeline"],"mappings":";;;AAIO,MAAMA,IAAe,CAACC,MACzB,gBAAAC,EAAC,MAAA,EAAG,kBAAe,iBAAgB,WAAU,kBAAiB,MAAK,YAC/D,UAAA;AAAA,EAAA,gBAAAC,EAAC,QAAA,EAAK,eAAY,QAAO,WAAU,4DAA2D;AAAA,EAC9F,gBAAAA,EAAC,OAAA,EAAI,WAAU,uDAAuD,YAAM,SAAA,CAAS;AAAA,EAAA,CACzF;AAGJH,EAAa,OAAO,SAAsBC,GAAoD;AAC1F,SACI,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGF;AAAA,MACJ,WAAWG,EAAI,6FAA6FH,EAAM,SAAS;AAAA,MAE1H,UAAAA,EAAM;AAAA,IAAA;AAAA,EAAA;AAGnB;AAEAD,EAAa,OAAO,SAA6DC,GAAuD;AACpI,SACI,gBAAAE,EAACE,GAAA,EAAW,GAAGJ,GAAO,WAAWG,EAAI,kBAAkBH,EAAM,SAAS,GACjE,UAAAA,EAAM,SAAA,CACX;AAER;AAEAD,EAAa,QAAQ,SAA6DC,GAAoC;AAClH,SACI,gBAAAE,EAAC,UAAA,EAAO,WAAU,+CACd,UAAA,gBAAAA,EAACE,KAAW,GAAGJ,GAAO,MAAK,SAAA,CAAS,EAAA,CACxC;AAER;AAEO,MAAMK,IAAW,CAACL,MACrB,gBAAAE,EAAC,MAAA,EAAG,kBAAe,YAAW,MAAK,QAAO,WAAU,6DAC/C,UAAAF,EAAM,SAAA,CACX;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsxs as c, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { o as v, f as x, s as y, a as R, u as p, b as D, n as N, v as P, i as C, d as I, c as M, F as O, l as S, e as j } from "../../floating-ui.react-DycKASR0.js";
|
|
3
|
+
import { useId as A, useState as E, useEffect as H, useRef as T, useMemo as z, Fragment as U } from "react";
|
|
4
|
+
const B = (e) => {
|
|
5
|
+
const r = A(), [a, n] = E(e.open);
|
|
6
|
+
H(() => n(e.open), [e.open]);
|
|
7
|
+
const l = T(null), u = z(
|
|
8
|
+
() => [
|
|
9
|
+
v(10),
|
|
10
|
+
x({ fallbackAxisSideDirection: "end" }),
|
|
11
|
+
y(),
|
|
12
|
+
R({
|
|
13
|
+
padding: 5,
|
|
14
|
+
element: l
|
|
15
|
+
})
|
|
16
|
+
],
|
|
17
|
+
[e.arrow]
|
|
18
|
+
), { refs: i, floatingStyles: f, context: t } = p({
|
|
19
|
+
open: a,
|
|
20
|
+
middleware: u,
|
|
21
|
+
transform: !0,
|
|
22
|
+
whileElementsMounted: D,
|
|
23
|
+
onOpenChange: (o, k) => {
|
|
24
|
+
const d = k?.relatedTarget;
|
|
25
|
+
d && d.dataset.floating === "true" && !o || (n(o), e.onChange?.(o));
|
|
26
|
+
}
|
|
27
|
+
}), g = N(t), m = P(t, { enabled: e.hover ?? !1 }), h = C(t), b = I(t, { role: "tooltip" }), { getReferenceProps: F, getFloatingProps: w } = M([g, h, b, m]);
|
|
28
|
+
return /* @__PURE__ */ c(U, { children: [
|
|
29
|
+
/* @__PURE__ */ s("button", { ref: i.setReference, ...F(e.buttonProps), type: "button", children: e.trigger }),
|
|
30
|
+
a && /* @__PURE__ */ s(O, { preserveTabOrder: !0, id: `${r}-portal`, children: /* @__PURE__ */ s(S, { guards: !0, restoreFocus: !0, returnFocus: !0, visuallyHiddenDismiss: !0, context: t, modal: !1, children: /* @__PURE__ */ c(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: "relative isolate z-floating rounded-lg border border-floating-border bg-floating-background p-4 shadow-shadow-floating",
|
|
34
|
+
ref: i.setFloating,
|
|
35
|
+
"aria-labelledby": r,
|
|
36
|
+
style: f,
|
|
37
|
+
...w(),
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ s(
|
|
40
|
+
j,
|
|
41
|
+
{
|
|
42
|
+
ref: l,
|
|
43
|
+
context: t,
|
|
44
|
+
strokeWidth: 0.1,
|
|
45
|
+
className: "fill-floating-background stroke-floating-border"
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
/* @__PURE__ */ s("header", { className: "mb-2", children: /* @__PURE__ */ s("h3", { className: "text-left text-2xl font-medium leading-snug tracking-wide", children: e.title }) }),
|
|
49
|
+
e.children
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
) }) })
|
|
53
|
+
] });
|
|
54
|
+
};
|
|
55
|
+
export {
|
|
56
|
+
B as Dropdown
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.js","sources":["../../../src/components/floating/dropdown.tsx"],"sourcesContent":["\"use client\";\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useHover,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport React, { Fragment, PropsWithChildren, useEffect, useId, useMemo, useRef, useState } from \"react\";\n\ntype DropdownProps = {\n open?: boolean;\n arrow?: boolean;\n hover?: boolean;\n returnFocus?: boolean;\n restoreFocus?: boolean;\n buttonProps?: React.HTMLProps<\"button\">;\n onChange?: (nextValue: boolean) => void;\n trigger: React.ReactElement | React.ReactNode;\n title?: React.ReactNode | React.ReactElement | string;\n};\n\nexport const Dropdown = (props: PropsWithChildren<DropdownProps>) => {\n const headingId = useId();\n const [open, setOpen] = useState(props.open);\n useEffect(() => setOpen(props.open), [props.open]);\n const arrowRef = useRef(null);\n const middleware = useMemo(\n () => [\n offset(10),\n flip({ fallbackAxisSideDirection: \"end\" }),\n shift(),\n arrow({\n padding: 5,\n element: arrowRef,\n }),\n ],\n [props.arrow]\n );\n const { refs, floatingStyles, context } = useFloating({\n open,\n middleware,\n transform: true,\n whileElementsMounted: autoUpdate,\n onOpenChange: (nextValue, event) => {\n const element = (event as any)?.relatedTarget as HTMLElement;\n if (element) {\n if (element.dataset.floating === \"true\" && !nextValue) return;\n }\n setOpen(nextValue);\n props.onChange?.(nextValue);\n },\n });\n\n const click = useClick(context);\n const hover = useHover(context, { enabled: props.hover ?? false });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"tooltip\" });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([click, dismiss, role, hover]);\n\n return (\n <Fragment>\n <button ref={refs.setReference} {...(getReferenceProps(props.buttonProps as any) as any)} type=\"button\">\n {props.trigger}\n </button>\n {open && (\n <FloatingPortal preserveTabOrder id={`${headingId}-portal`}>\n <FloatingFocusManager guards restoreFocus={true} returnFocus={true} visuallyHiddenDismiss context={context} modal={false}>\n <div\n className=\"relative isolate z-floating rounded-lg border border-floating-border bg-floating-background p-4 shadow-shadow-floating\"\n ref={refs.setFloating}\n aria-labelledby={headingId}\n style={floatingStyles as unknown as React.CSSProperties}\n {...getFloatingProps()}\n >\n <FloatingArrow\n ref={arrowRef}\n context={context}\n strokeWidth={0.1}\n className=\"fill-floating-background stroke-floating-border\"\n />\n <header className=\"mb-2\">\n <h3 className=\"text-left text-2xl font-medium leading-snug tracking-wide\">{props.title}</h3>\n </header>\n {props.children}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </Fragment>\n );\n};\n"],"names":["Dropdown","props","headingId","useId","open","setOpen","useState","useEffect","arrowRef","useRef","middleware","useMemo","offset","flip","shift","arrow","refs","floatingStyles","context","useFloating","autoUpdate","nextValue","event","element","click","useClick","hover","useHover","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","Fragment","jsx","FloatingPortal","FloatingFocusManager","jsxs","FloatingArrow"],"mappings":";;;AA+BO,MAAMA,IAAW,CAACC,MAA4C;AACjE,QAAMC,IAAYC,EAAA,GACZ,CAACC,GAAMC,CAAO,IAAIC,EAASL,EAAM,IAAI;AAC3C,EAAAM,EAAU,MAAMF,EAAQJ,EAAM,IAAI,GAAG,CAACA,EAAM,IAAI,CAAC;AACjD,QAAMO,IAAWC,EAAO,IAAI,GACtBC,IAAaC;AAAA,IACf,MAAM;AAAA,MACFC,EAAO,EAAE;AAAA,MACTC,EAAK,EAAE,2BAA2B,OAAO;AAAA,MACzCC,EAAA;AAAA,MACAC,EAAM;AAAA,QACF,SAAS;AAAA,QACT,SAASP;AAAA,MAAA,CACZ;AAAA,IAAA;AAAA,IAEL,CAACP,EAAM,KAAK;AAAA,EAAA,GAEV,EAAE,MAAAe,GAAM,gBAAAC,GAAgB,SAAAC,EAAA,IAAYC,EAAY;AAAA,IAClD,MAAAf;AAAA,IACA,YAAAM;AAAA,IACA,WAAW;AAAA,IACX,sBAAsBU;AAAA,IACtB,cAAc,CAACC,GAAWC,MAAU;AAChC,YAAMC,IAAWD,GAAe;AAChC,MAAIC,KACIA,EAAQ,QAAQ,aAAa,UAAU,CAACF,MAEhDhB,EAAQgB,CAAS,GACjBpB,EAAM,WAAWoB,CAAS;AAAA,IAAA;AAAA,EAC9B,CACH,GAEKG,IAAQC,EAASP,CAAO,GACxBQ,IAAQC,EAAST,GAAS,EAAE,SAASjB,EAAM,SAAS,IAAO,GAC3D2B,IAAUC,EAAWX,CAAO,GAC5BY,IAAOC,EAAQb,GAAS,EAAE,MAAM,WAAW,GAE3C,EAAE,mBAAAc,GAAmB,kBAAAC,EAAA,IAAqBC,EAAgB,CAACV,GAAOI,GAASE,GAAMJ,CAAK,CAAC;AAE7F,2BACKS,GAAA,EACG,UAAA;AAAA,IAAA,gBAAAC,EAAC,UAAA,EAAO,KAAKpB,EAAK,cAAe,GAAIgB,EAAkB/B,EAAM,WAAkB,GAAW,MAAK,UAC1F,UAAAA,EAAM,SACX;AAAA,IACCG,uBACIiC,GAAA,EAAe,kBAAgB,IAAC,IAAI,GAAGnC,CAAS,WAC7C,UAAA,gBAAAkC,EAACE,KAAqB,QAAM,IAAC,cAAc,IAAM,aAAa,IAAM,uBAAqB,IAAC,SAAApB,GAAkB,OAAO,IAC/G,UAAA,gBAAAqB;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAU;AAAA,QACV,KAAKvB,EAAK;AAAA,QACV,mBAAiBd;AAAA,QACjB,OAAOe;AAAA,QACN,GAAGgB,EAAA;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAG;AAAA,YAACI;AAAA,YAAA;AAAA,cACG,KAAKhC;AAAA,cACL,SAAAU;AAAA,cACA,aAAa;AAAA,cACb,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAkB,EAAC,UAAA,EAAO,WAAU,QACd,UAAA,gBAAAA,EAAC,QAAG,WAAU,6DAA6D,UAAAnC,EAAM,MAAA,CAAM,EAAA,CAC3F;AAAA,UACCA,EAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEf,EAAA,CACJ;AAAA,EAAA,GAER;AAER;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsxs as h, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { u as F, n as I, d as y, i as x, c as P, F as b, l as v } from "../../floating-ui.react-DycKASR0.js";
|
|
3
|
+
import { useRef as O, useId as R, useState as j, useEffect as k } from "react";
|
|
4
|
+
import { Button as C } from "../core/button.js";
|
|
5
|
+
import { m as r, A as w } from "../../proxy-BZcQiBrp.js";
|
|
6
|
+
const z = (e) => {
|
|
7
|
+
const l = O(null), n = R(), i = `${n}:wrapper`, u = `${n}:title`, [a, o] = j(e.open ?? !1);
|
|
8
|
+
k(() => {
|
|
9
|
+
o(e.open ?? !1);
|
|
10
|
+
}, [e.open]);
|
|
11
|
+
const { context: s, refs: c } = F({
|
|
12
|
+
transform: !0,
|
|
13
|
+
open: a !== null,
|
|
14
|
+
nodeId: n,
|
|
15
|
+
onOpenChange: o,
|
|
16
|
+
strategy: "absolute"
|
|
17
|
+
}), d = I(s, { enabled: e.disabled ?? !0 }), m = y(s, { role: "tooltip" }), f = x(s, {
|
|
18
|
+
escapeKey: !0,
|
|
19
|
+
referencePress: !0,
|
|
20
|
+
outsidePress: !0
|
|
21
|
+
}), { getFloatingProps: g, getReferenceProps: p } = P([d, m, f]);
|
|
22
|
+
return /* @__PURE__ */ h("div", { className: "relative inline-flex items-center justify-center", ref: l, children: [
|
|
23
|
+
/* @__PURE__ */ t(
|
|
24
|
+
C,
|
|
25
|
+
{
|
|
26
|
+
...p(e),
|
|
27
|
+
as: r.button,
|
|
28
|
+
layoutId: i,
|
|
29
|
+
ref: c.setReference,
|
|
30
|
+
size: "small",
|
|
31
|
+
onClick: () => o(!0),
|
|
32
|
+
children: /* @__PURE__ */ t(r.span, { layoutId: u, children: e.trigger })
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
/* @__PURE__ */ t(w, { children: a ? /* @__PURE__ */ t(b, { root: l, children: /* @__PURE__ */ t(v, { visuallyHiddenDismiss: !0, modal: !0, closeOnFocusOut: !0, context: s, children: /* @__PURE__ */ t(r.div, { ...g(), ref: c.setFloating, layoutId: i, className: "absolute -left-1/4 -top-3/4", children: e.children }) }) }) : null })
|
|
36
|
+
] });
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
z as Expand
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sources":["../../../src/components/floating/expand.tsx"],"sourcesContent":["\"use client\";\nimport { FloatingFocusManager, FloatingPortal, useClick, useDismiss, useFloating, useInteractions, useRole } from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { PropsWithChildren, useEffect, useId, useRef, useState } from \"react\";\nimport { Label, Override } from \"../../types\";\nimport { Button, ButtonProps } from \"../core/button\";\n\nexport type ExpandProps = Override<\n ButtonProps<typeof motion.button>,\n {\n trigger: Label;\n open?: boolean;\n disabled?: boolean;\n }\n>;\n\nexport const Expand = (props: PropsWithChildren<ExpandProps>) => {\n const root = useRef<HTMLDivElement | null>(null);\n const id = useId();\n const wrapperId = `${id}:wrapper`;\n const titleId = `${id}:title`;\n\n const [open, setOpen] = useState(props.open ?? false);\n useEffect(() => {\n setOpen(props.open ?? false);\n }, [props.open]);\n const { context, refs } = useFloating({\n transform: true,\n open: open !== null,\n nodeId: id,\n onOpenChange: setOpen,\n strategy: \"absolute\",\n });\n const click = useClick(context, { enabled: props.disabled ?? true });\n const role = useRole(context, { role: \"tooltip\" });\n const dismiss = useDismiss(context, {\n escapeKey: true,\n referencePress: true,\n outsidePress: true,\n });\n const { getFloatingProps, getReferenceProps } = useInteractions([click, role, dismiss]);\n\n return (\n <div className=\"relative inline-flex items-center justify-center\" ref={root}>\n <Button\n {...getReferenceProps(props as never)}\n as={motion.button}\n layoutId={wrapperId}\n ref={refs.setReference}\n size=\"small\"\n onClick={() => setOpen(true)}\n >\n <motion.span layoutId={titleId}>{props.trigger}</motion.span>\n </Button>\n <AnimatePresence>\n {open ? (\n <FloatingPortal root={root}>\n <FloatingFocusManager visuallyHiddenDismiss modal closeOnFocusOut context={context}>\n <motion.div {...getFloatingProps()} ref={refs.setFloating} layoutId={wrapperId} className=\"absolute -left-1/4 -top-3/4\">\n {props.children}\n </motion.div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null}\n </AnimatePresence>\n </div>\n );\n};\n"],"names":["Expand","props","root","useRef","id","useId","wrapperId","titleId","open","setOpen","useState","useEffect","context","refs","useFloating","click","useClick","role","useRole","dismiss","useDismiss","getFloatingProps","getReferenceProps","useInteractions","jsxs","jsx","Button","motion","AnimatePresence","FloatingPortal","FloatingFocusManager"],"mappings":";;;;;AAgBO,MAAMA,IAAS,CAACC,MAA0C;AAC7D,QAAMC,IAAOC,EAA8B,IAAI,GACzCC,IAAKC,EAAA,GACLC,IAAY,GAAGF,CAAE,YACjBG,IAAU,GAAGH,CAAE,UAEf,CAACI,GAAMC,CAAO,IAAIC,EAAST,EAAM,QAAQ,EAAK;AACpD,EAAAU,EAAU,MAAM;AACZ,IAAAF,EAAQR,EAAM,QAAQ,EAAK;AAAA,EAAA,GAC5B,CAACA,EAAM,IAAI,CAAC;AACf,QAAM,EAAE,SAAAW,GAAS,MAAAC,EAAA,IAASC,EAAY;AAAA,IAClC,WAAW;AAAA,IACX,MAAMN,MAAS;AAAA,IACf,QAAQJ;AAAA,IACR,cAAcK;AAAA,IACd,UAAU;AAAA,EAAA,CACb,GACKM,IAAQC,EAASJ,GAAS,EAAE,SAASX,EAAM,YAAY,IAAM,GAC7DgB,IAAOC,EAAQN,GAAS,EAAE,MAAM,WAAW,GAC3CO,IAAUC,EAAWR,GAAS;AAAA,IAChC,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,cAAc;AAAA,EAAA,CACjB,GACK,EAAE,kBAAAS,GAAkB,mBAAAC,MAAsBC,EAAgB,CAACR,GAAOE,GAAME,CAAO,CAAC;AAEtF,SACI,gBAAAK,EAAC,OAAA,EAAI,WAAU,oDAAmD,KAAKtB,GACnE,UAAA;AAAA,IAAA,gBAAAuB;AAAA,MAACC;AAAA,MAAA;AAAA,QACI,GAAGJ,EAAkBrB,CAAc;AAAA,QACpC,IAAI0B,EAAO;AAAA,QACX,UAAUrB;AAAA,QACV,KAAKO,EAAK;AAAA,QACV,MAAK;AAAA,QACL,SAAS,MAAMJ,EAAQ,EAAI;AAAA,QAE3B,4BAACkB,EAAO,MAAP,EAAY,UAAUpB,GAAU,YAAM,QAAA,CAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,IAEnD,gBAAAkB,EAACG,GAAA,EACI,UAAApB,IACG,gBAAAiB,EAACI,KAAe,MAAA3B,GACZ,UAAA,gBAAAuB,EAACK,GAAA,EAAqB,uBAAqB,IAAC,OAAK,IAAC,iBAAe,IAAC,SAAAlB,GAC9D,UAAA,gBAAAa,EAACE,EAAO,KAAP,EAAY,GAAGN,EAAA,GAAoB,KAAKR,EAAK,aAAa,UAAUP,GAAW,WAAU,+BACrF,UAAAL,EAAM,SAAA,CACX,EAAA,CACJ,GACJ,IACA,KAAA,CACR;AAAA,EAAA,GACJ;AAER;"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { jsxs as x, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { p as Y, q, r as te, t as $, u as se, o as ne, f as oe, s as ae, b as ie, d as re, i as le, v as de, w as ce, n as ue, j as fe, x as me, c as ge, y as ve, z as pe, F as Ie, l as xe, A as he } from "../../floating-ui.react-DycKASR0.js";
|
|
3
|
+
import { S as Fe } from "../../slot-CQW8ZzBb.js";
|
|
4
|
+
import M, { createContext as be, useState as R, useRef as _, useContext as G, useEffect as j, Fragment as ye } from "react";
|
|
5
|
+
import { F as Ne, T as Ce } from "../../constants-r-AHn273.js";
|
|
6
|
+
import { c as w, m as k } from "../../dom-Dl8XH0CK.js";
|
|
7
|
+
import { C as Pe } from "../../chevron-right-DvXGOiS_.js";
|
|
8
|
+
const U = (o = "") => w(
|
|
9
|
+
"w-full min-w-36 outline-none p-2.5 items-center flex justify-between text-left",
|
|
10
|
+
"hover:bg-primary focus:bg-primary aria-expanded:opacity-80",
|
|
11
|
+
"focus:text-primary-foreground hover:text-primary-foreground",
|
|
12
|
+
"first-of-type:rounded-t-lg last-of-type:rounded-b-lg",
|
|
13
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
14
|
+
o
|
|
15
|
+
), A = be({
|
|
16
|
+
isOpen: !1,
|
|
17
|
+
activeIndex: null,
|
|
18
|
+
getItemProps: () => ({}),
|
|
19
|
+
setActiveIndex: () => {
|
|
20
|
+
},
|
|
21
|
+
setHasFocusInside: () => {
|
|
22
|
+
}
|
|
23
|
+
}), D = M.forwardRef(
|
|
24
|
+
({ children: o, FloatingComponent: i = "div", hover: g = !0, open: h, isParent: r = !1, restoreFocus: F = !1, floatingClassName: d = "", label: v, ...n }, c) => {
|
|
25
|
+
const [s, b] = R(h ?? !1), [E, y] = R(!1), [N, C] = R(null), H = _([]), T = _([]), u = G(A), p = Y(), a = q(), f = te(), I = $(), e = p !== null, { floatingStyles: B, refs: P, context: l } = se({
|
|
26
|
+
nodeId: f,
|
|
27
|
+
open: s,
|
|
28
|
+
transform: !0,
|
|
29
|
+
strategy: "absolute",
|
|
30
|
+
onOpenChange: b,
|
|
31
|
+
whileElementsMounted: ie,
|
|
32
|
+
placement: e ? "right" : "bottom-start",
|
|
33
|
+
middleware: [ne({ mainAxis: e ? 0 : 4, alignmentAxis: e ? -4 : 0 }), oe(), ae()]
|
|
34
|
+
}), J = re(l, { role: "menu" }), K = le(l, { bubbles: !0 }), Q = de(l, {
|
|
35
|
+
move: !1,
|
|
36
|
+
enabled: g,
|
|
37
|
+
delay: { open: Ne },
|
|
38
|
+
handleClose: ce({ blockPointerEvents: !0, requireIntent: !1 })
|
|
39
|
+
}), V = ue(l, {
|
|
40
|
+
toggle: !e,
|
|
41
|
+
event: "mousedown",
|
|
42
|
+
ignoreMouse: e,
|
|
43
|
+
keyboardHandlers: !0
|
|
44
|
+
}), W = fe(l, {
|
|
45
|
+
loop: !0,
|
|
46
|
+
activeIndex: N,
|
|
47
|
+
nested: e,
|
|
48
|
+
listRef: H,
|
|
49
|
+
onNavigate: C
|
|
50
|
+
}), X = me(l, {
|
|
51
|
+
activeIndex: N,
|
|
52
|
+
listRef: T,
|
|
53
|
+
resetMs: Ce,
|
|
54
|
+
onMatch: s ? C : void 0
|
|
55
|
+
}), { getReferenceProps: L, getFloatingProps: Z, getItemProps: ee } = ge([Q, V, J, K, W, X]);
|
|
56
|
+
j(() => {
|
|
57
|
+
if (!a) return;
|
|
58
|
+
const m = () => b(!1), S = (z) => {
|
|
59
|
+
z.nodeId !== f && z.parentId === p && b(!1);
|
|
60
|
+
};
|
|
61
|
+
return a.events.on("click", m), a.events.on("menuopen", S), () => {
|
|
62
|
+
a.events.off("click", m), a.events.off("menuopen", S);
|
|
63
|
+
};
|
|
64
|
+
}, [a, f, p]), j(() => {
|
|
65
|
+
s && a && a.events.emit("menuopen", { parentId: p, nodeId: f });
|
|
66
|
+
}, [a, s, f, p]);
|
|
67
|
+
const O = r ? n.className : w(U(n.className));
|
|
68
|
+
return /* @__PURE__ */ x(ve, { id: f, children: [
|
|
69
|
+
/* @__PURE__ */ t(ye, { children: n.asChild ? /* @__PURE__ */ t(
|
|
70
|
+
Fe,
|
|
71
|
+
{
|
|
72
|
+
...L(
|
|
73
|
+
u.getItemProps({
|
|
74
|
+
...n,
|
|
75
|
+
onFocus(m) {
|
|
76
|
+
n.onFocus?.(m), y(!1), u.setHasFocusInside(!0);
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
),
|
|
80
|
+
children: v,
|
|
81
|
+
className: O,
|
|
82
|
+
"data-open": s ? "" : void 0,
|
|
83
|
+
"data-nested": e ? "" : void 0,
|
|
84
|
+
role: e ? "menuitem" : void 0,
|
|
85
|
+
"data-focus-inside": E ? "" : void 0,
|
|
86
|
+
ref: k(P.setReference, I.ref, c),
|
|
87
|
+
tabIndex: e ? u.activeIndex === I.index ? 0 : -1 : void 0
|
|
88
|
+
}
|
|
89
|
+
) : /* @__PURE__ */ x(
|
|
90
|
+
"button",
|
|
91
|
+
{
|
|
92
|
+
type: "button",
|
|
93
|
+
className: O,
|
|
94
|
+
"data-open": s ? "" : void 0,
|
|
95
|
+
"data-nested": e ? "" : void 0,
|
|
96
|
+
role: e ? "menuitem" : void 0,
|
|
97
|
+
"data-focus-inside": E ? "" : void 0,
|
|
98
|
+
ref: k(P.setReference, I.ref, c),
|
|
99
|
+
tabIndex: e ? u.activeIndex === I.index ? 0 : -1 : void 0,
|
|
100
|
+
...L(
|
|
101
|
+
u.getItemProps({
|
|
102
|
+
...n,
|
|
103
|
+
onFocus(m) {
|
|
104
|
+
n.onFocus?.(m), y(!1), u.setHasFocusInside(!0);
|
|
105
|
+
}
|
|
106
|
+
})
|
|
107
|
+
),
|
|
108
|
+
children: [
|
|
109
|
+
v,
|
|
110
|
+
e && /* @__PURE__ */ x("span", { style: { marginLeft: 10, fontSize: 10 }, children: [
|
|
111
|
+
/* @__PURE__ */ t("span", { className: "sr-only", children: "Next menu" }),
|
|
112
|
+
/* @__PURE__ */ t(Pe, { size: 14 })
|
|
113
|
+
] })
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
) }),
|
|
117
|
+
/* @__PURE__ */ t(A.Provider, { value: { activeIndex: N, setActiveIndex: C, getItemProps: ee, setHasFocusInside: y, isOpen: s }, children: /* @__PURE__ */ t(pe, { elementsRef: H, labelsRef: T, children: s && /* @__PURE__ */ t(Ie, { children: /* @__PURE__ */ t(
|
|
118
|
+
xe,
|
|
119
|
+
{
|
|
120
|
+
context: l,
|
|
121
|
+
modal: !1,
|
|
122
|
+
initialFocus: e ? -1 : 0,
|
|
123
|
+
returnFocus: r ? F : !e,
|
|
124
|
+
children: /* @__PURE__ */ t(
|
|
125
|
+
i,
|
|
126
|
+
{
|
|
127
|
+
...Z(),
|
|
128
|
+
ref: P.setFloating,
|
|
129
|
+
style: { ...n.style, ...B },
|
|
130
|
+
className: w(
|
|
131
|
+
"isolate z-tooltip flex max-h-80 flex-col items-start overflow-y-auto rounded-lg border border-floating-border bg-floating-background text-left shadow-shadow-floating outline-none",
|
|
132
|
+
d
|
|
133
|
+
),
|
|
134
|
+
children: o
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
) }) }) })
|
|
139
|
+
] });
|
|
140
|
+
}
|
|
141
|
+
), Te = M.forwardRef(
|
|
142
|
+
({ title: o, Right: i, disabled: g, children: h, ...r }, F) => {
|
|
143
|
+
const d = G(A), v = $({ label: g ? null : o }), n = q(), c = v.index === d.activeIndex;
|
|
144
|
+
return /* @__PURE__ */ x(
|
|
145
|
+
"button",
|
|
146
|
+
{
|
|
147
|
+
...r,
|
|
148
|
+
title: o,
|
|
149
|
+
type: "button",
|
|
150
|
+
role: "menuitem",
|
|
151
|
+
disabled: g,
|
|
152
|
+
"data-active": c,
|
|
153
|
+
"data-open": d.isOpen,
|
|
154
|
+
tabIndex: c ? 0 : -1,
|
|
155
|
+
ref: k(v.ref, F),
|
|
156
|
+
className: U(`${r.className ?? ""} ${c ? "bg-primary text-primary-foreground" : ""}`),
|
|
157
|
+
...d.getItemProps({
|
|
158
|
+
onClick(s) {
|
|
159
|
+
r.onClick?.(s), n?.events.emit("click");
|
|
160
|
+
},
|
|
161
|
+
onFocus(s) {
|
|
162
|
+
r.onFocus?.(s), d.setHasFocusInside(!0);
|
|
163
|
+
}
|
|
164
|
+
}),
|
|
165
|
+
children: [
|
|
166
|
+
h,
|
|
167
|
+
i ? /* @__PURE__ */ t(i, { size: 16 }) : null
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
), Le = M.forwardRef((o, i) => Y() === null ? /* @__PURE__ */ t(he, { children: /* @__PURE__ */ t(D, { ...o, isParent: !0, ref: i }) }) : /* @__PURE__ */ t(D, { ...o, isParent: !1, ref: i }));
|
|
173
|
+
export {
|
|
174
|
+
Le as Menu,
|
|
175
|
+
Te as MenuItem
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sources":["../../../src/components/floating/menu.tsx"],"sourcesContent":["\"use client\";\nimport {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useHover,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n} from \"@floating-ui/react\";\nimport { Slot } from \"../core/slot\";\nimport { ChevronRightIcon, LucideProps } from \"lucide-react\";\nimport React, { createContext, Fragment, useContext, useEffect, useRef, useState } from \"react\";\nimport { FLOATING_DELAY, TYPEAHEAD_RESET_DELAY } from \"../../constants\";\nimport { css, mergeRefs } from \"../../lib/dom\";\nimport { Override } from \"../../types\";\n\nconst menuItemClassName = (highlight: string = \"\") =>\n css(\n \"w-full min-w-36 outline-none p-2.5 items-center flex justify-between text-left\",\n \"hover:bg-primary focus:bg-primary aria-expanded:opacity-80\",\n \"focus:text-primary-foreground hover:text-primary-foreground\",\n \"first-of-type:rounded-t-lg last-of-type:rounded-b-lg\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n highlight\n );\n\nconst MenuContext = createContext<{\n activeIndex: number | null;\n getItemProps: (props?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;\n isOpen: boolean;\n setActiveIndex: React.Dispatch<React.SetStateAction<number | null>>;\n setHasFocusInside: React.Dispatch<React.SetStateAction<boolean>>;\n}>({\n isOpen: false,\n activeIndex: null,\n getItemProps: () => ({}),\n setActiveIndex: () => {},\n setHasFocusInside: () => {},\n});\n\nexport type MenuProps = Partial<\n {\n hover: boolean;\n open?: boolean;\n nested: boolean;\n asChild: boolean;\n isParent: boolean;\n restoreFocus: boolean;\n children: React.ReactNode;\n floatingClassName: string;\n FloatingComponent: React.ElementType;\n } & ({ label: string } | { label: React.ReactElement; title: string })\n>;\n\nconst MenuComponent = React.forwardRef<HTMLButtonElement, Override<React.HTMLProps<HTMLButtonElement>, MenuProps>>(\n (\n { children, FloatingComponent = \"div\", hover = true, open, isParent = false, restoreFocus = false, floatingClassName = \"\", label, ...props },\n forwardedRef\n ) => {\n const [isOpen, setIsOpen] = useState<boolean>(open ?? false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuContext);\n\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const item = useListItem();\n\n const isNested = parentId !== null;\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n transform: true,\n strategy: \"absolute\",\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n placement: isNested ? \"right\" : \"bottom-start\",\n middleware: [offset({ mainAxis: isNested ? 0 : 4, alignmentAxis: isNested ? -4 : 0 }), flip(), shift()],\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const hoverModule = useHover(context, {\n move: false,\n enabled: hover,\n delay: { open: FLOATING_DELAY },\n handleClose: safePolygon({ blockPointerEvents: true, requireIntent: false }),\n });\n\n const click = useClick(context, {\n toggle: !isNested,\n event: \"mousedown\",\n ignoreMouse: isNested,\n keyboardHandlers: true,\n });\n\n const listNavigation = useListNavigation(context, {\n loop: true,\n activeIndex,\n nested: isNested,\n listRef: elementsRef,\n onNavigate: setActiveIndex,\n });\n\n const typeahead = useTypeahead(context, {\n activeIndex,\n listRef: labelsRef,\n resetMs: TYPEAHEAD_RESET_DELAY,\n onMatch: isOpen ? setActiveIndex : undefined,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([hoverModule, click, role, dismiss, listNavigation, typeahead]);\n\n useEffect(() => {\n if (!tree) return;\n const handleTreeClick = () => setIsOpen(false);\n const onSubMenuOpen = (event: { nodeId: string; parentId: string }) => {\n if (event.nodeId !== nodeId && event.parentId === parentId) setIsOpen(false);\n };\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuOpen);\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuOpen);\n };\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (isOpen && tree) tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const className = isParent ? props.className : css(menuItemClassName(props.className));\n\n return (\n <FloatingNode id={nodeId}>\n <Fragment>\n {props.asChild ? (\n <Slot\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: React.FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside(true);\n },\n })\n )}\n children={label}\n className={className}\n data-open={isOpen ? \"\" : undefined}\n data-nested={isNested ? \"\" : undefined}\n role={isNested ? \"menuitem\" : undefined}\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n ref={mergeRefs(refs.setReference, item.ref, forwardedRef) as any}\n tabIndex={!isNested ? undefined : parent.activeIndex === item.index ? 0 : -1}\n />\n ) : (\n <button\n type=\"button\"\n className={className}\n data-open={isOpen ? \"\" : undefined}\n data-nested={isNested ? \"\" : undefined}\n role={isNested ? \"menuitem\" : undefined}\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n ref={mergeRefs(refs.setReference, item.ref, forwardedRef)}\n tabIndex={!isNested ? undefined : parent.activeIndex === item.index ? 0 : -1}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: React.FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside(true);\n },\n })\n )}\n >\n {label}\n {isNested && (\n <span style={{ marginLeft: 10, fontSize: 10 }}>\n <span className=\"sr-only\">Next menu</span>\n <ChevronRightIcon size={14} />\n </span>\n )}\n </button>\n )}\n </Fragment>\n <MenuContext.Provider value={{ activeIndex, setActiveIndex, getItemProps, setHasFocusInside, isOpen } as any}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={isParent ? restoreFocus : !isNested}\n >\n <FloatingComponent\n {...getFloatingProps()}\n ref={refs.setFloating}\n style={{ ...props.style, ...floatingStyles }}\n className={css(\n \"isolate z-tooltip flex max-h-80 flex-col items-start overflow-y-auto rounded-lg border border-floating-border bg-floating-background text-left shadow-shadow-floating outline-none\",\n floatingClassName\n )}\n >\n {children}\n </FloatingComponent>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuContext.Provider>\n </FloatingNode>\n );\n }\n);\n\ntype MenuItemProps = { title: string; disabled?: boolean; Right?: React.FC<LucideProps> };\n\nexport const MenuItem = React.forwardRef<HTMLButtonElement, Override<React.ButtonHTMLAttributes<HTMLButtonElement>, MenuItemProps>>(\n ({ title, Right, disabled, children, ...props }, forwardedRef) => {\n const menu = useContext(MenuContext);\n const item = useListItem({ label: disabled ? null : title });\n const tree = useFloatingTree();\n const isActive = item.index === menu.activeIndex;\n return (\n <button\n {...props}\n title={title}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n data-active={isActive}\n data-open={menu.isOpen}\n tabIndex={isActive ? 0 : -1}\n ref={mergeRefs(item.ref, forwardedRef)}\n className={menuItemClassName(`${props.className ?? \"\"} ${isActive ? \"bg-primary text-primary-foreground\" : \"\"}`)}\n {...menu.getItemProps({\n onClick(event: React.MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: React.FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n menu.setHasFocusInside(true);\n },\n })}\n >\n {children}\n {Right ? <Right size={16} /> : null}\n </button>\n );\n }\n);\n\nexport const Menu = React.forwardRef<HTMLButtonElement, Override<React.ComponentProps<\"button\">, MenuProps>>((props, ref) => {\n const parentId = useFloatingParentNodeId();\n return parentId === null ? (\n <FloatingTree>\n <MenuComponent {...props} isParent ref={ref} />\n </FloatingTree>\n ) : (\n <MenuComponent {...props} isParent={false} ref={ref} />\n );\n});\n"],"names":["menuItemClassName","highlight","css","MenuContext","createContext","MenuComponent","React","children","FloatingComponent","hover","open","isParent","restoreFocus","floatingClassName","label","props","forwardedRef","isOpen","setIsOpen","useState","hasFocusInside","setHasFocusInside","activeIndex","setActiveIndex","elementsRef","useRef","labelsRef","parent","useContext","parentId","useFloatingParentNodeId","tree","useFloatingTree","nodeId","useFloatingNodeId","item","useListItem","isNested","floatingStyles","refs","context","useFloating","autoUpdate","offset","flip","shift","role","useRole","dismiss","useDismiss","hoverModule","useHover","FLOATING_DELAY","safePolygon","click","useClick","listNavigation","useListNavigation","typeahead","useTypeahead","TYPEAHEAD_RESET_DELAY","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useEffect","handleTreeClick","onSubMenuOpen","event","className","jsxs","FloatingNode","jsx","Fragment","Slot","mergeRefs","ChevronRightIcon","FloatingList","FloatingPortal","FloatingFocusManager","MenuItem","title","Right","disabled","menu","isActive","Menu","ref","FloatingTree"],"mappings":"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"}
|