@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.
Files changed (141) hide show
  1. package/dist/MotionConfigContext-C7MqlSdv.js +2713 -0
  2. package/dist/MotionConfigContext-C7MqlSdv.js.map +1 -0
  3. package/dist/autocomplete-Boida9R7.js +375 -0
  4. package/dist/autocomplete-Boida9R7.js.map +1 -0
  5. package/dist/calendar-BswV66Nx.js +1719 -0
  6. package/dist/calendar-BswV66Nx.js.map +1 -0
  7. package/dist/chevron-down-BBFYYzZq.js +6 -0
  8. package/dist/chevron-down-BBFYYzZq.js.map +1 -0
  9. package/dist/chevron-right-DvXGOiS_.js +6 -0
  10. package/dist/chevron-right-DvXGOiS_.js.map +1 -0
  11. package/dist/circle-check-big-3M5lhTxx.js +9 -0
  12. package/dist/circle-check-big-3M5lhTxx.js.map +1 -0
  13. package/dist/components/core/button.js +76 -0
  14. package/dist/components/core/button.js.map +1 -0
  15. package/dist/components/core/tag.js +67 -0
  16. package/dist/components/core/tag.js.map +1 -0
  17. package/dist/components/display/alert.js +94 -0
  18. package/dist/components/display/alert.js.map +1 -0
  19. package/dist/components/display/calendar.js +15 -0
  20. package/dist/components/display/calendar.js.map +1 -0
  21. package/dist/components/display/card.js +84 -0
  22. package/dist/components/display/card.js.map +1 -0
  23. package/dist/components/display/list.js +93 -0
  24. package/dist/components/display/list.js.map +1 -0
  25. package/dist/components/display/notifications.js +15 -0
  26. package/dist/components/display/notifications.js.map +1 -0
  27. package/dist/components/display/stats.js +16 -0
  28. package/dist/components/display/stats.js.map +1 -0
  29. package/dist/components/display/tabs.js +12 -0
  30. package/dist/components/display/tabs.js.map +1 -0
  31. package/dist/components/display/timeline.js +29 -0
  32. package/dist/components/display/timeline.js.map +1 -0
  33. package/dist/components/floating/dropdown.js +58 -0
  34. package/dist/components/floating/dropdown.js.map +1 -0
  35. package/dist/components/floating/expand.js +41 -0
  36. package/dist/components/floating/expand.js.map +1 -0
  37. package/dist/components/floating/menu.js +177 -0
  38. package/dist/components/floating/menu.js.map +1 -0
  39. package/dist/components/floating/modal.js +297 -0
  40. package/dist/components/floating/modal.js.map +1 -0
  41. package/dist/components/floating/tooltip.js +73 -0
  42. package/dist/components/floating/tooltip.js.map +1 -0
  43. package/dist/components/form/autocomplete.js +16 -0
  44. package/dist/components/form/autocomplete.js.map +1 -0
  45. package/dist/components/form/checkbox.js +44 -0
  46. package/dist/components/form/checkbox.js.map +1 -0
  47. package/dist/components/form/date-picker.js +12 -0
  48. package/dist/components/form/date-picker.js.map +1 -0
  49. package/dist/components/form/file-upload.js +11 -0
  50. package/dist/components/form/file-upload.js.map +1 -0
  51. package/dist/components/form/form.js +8 -0
  52. package/dist/components/form/form.js.map +1 -0
  53. package/dist/components/form/input.js +5 -0
  54. package/dist/components/form/input.js.map +1 -0
  55. package/dist/components/form/radiobox.js +30 -0
  56. package/dist/components/form/radiobox.js.map +1 -0
  57. package/dist/components/form/select.js +106 -0
  58. package/dist/components/form/select.js.map +1 -0
  59. package/dist/components/form/switch.js +65 -0
  60. package/dist/components/form/switch.js.map +1 -0
  61. package/dist/components/form/task-list.js +68 -0
  62. package/dist/components/form/task-list.js.map +1 -0
  63. package/dist/components/form/transfer-list.js +55 -0
  64. package/dist/components/form/transfer-list.js.map +1 -0
  65. package/dist/components/table/table.js +10 -0
  66. package/dist/components/table/table.js.map +1 -0
  67. package/dist/constants-r-AHn273.js +6 -0
  68. package/dist/constants-r-AHn273.js.map +1 -0
  69. package/dist/context-BFXNJVn2.js +161 -0
  70. package/dist/context-BFXNJVn2.js.map +1 -0
  71. package/dist/createLucideIcon-CP-mMPfa.js +76 -0
  72. package/dist/createLucideIcon-CP-mMPfa.js.map +1 -0
  73. package/dist/date-picker-BxPTdZPy.js +1598 -0
  74. package/dist/date-picker-BxPTdZPy.js.map +1 -0
  75. package/dist/dom-Dl8XH0CK.js +2833 -0
  76. package/dist/dom-Dl8XH0CK.js.map +1 -0
  77. package/dist/file-CBCP85VI.js +15 -0
  78. package/dist/file-CBCP85VI.js.map +1 -0
  79. package/dist/file-upload-BB6BdGcE.js +3118 -0
  80. package/dist/file-upload-BB6BdGcE.js.map +1 -0
  81. package/dist/floating-ui.react-DycKASR0.js +3706 -0
  82. package/dist/floating-ui.react-DycKASR0.js.map +1 -0
  83. package/dist/fns-D2eyJKd5.js +33 -0
  84. package/dist/fns-D2eyJKd5.js.map +1 -0
  85. package/dist/index-0YMC-_Lt.js +20 -0
  86. package/dist/index-0YMC-_Lt.js.map +1 -0
  87. package/dist/index-BJ1ayTam.js +126 -0
  88. package/dist/index-BJ1ayTam.js.map +1 -0
  89. package/dist/index-BtlhELJ3.js +3416 -0
  90. package/dist/index-BtlhELJ3.js.map +1 -0
  91. package/dist/index-ChfR6F8d.js +1590 -0
  92. package/dist/index-ChfR6F8d.js.map +1 -0
  93. package/dist/index-DE4shK8D.js +215 -0
  94. package/dist/index-DE4shK8D.js.map +1 -0
  95. package/dist/index-DJSMaZR4.js +35 -0
  96. package/dist/index-DJSMaZR4.js.map +1 -0
  97. package/dist/index-t1qLJTt5.js +351 -0
  98. package/dist/index-t1qLJTt5.js.map +1 -0
  99. package/dist/index.esm-BaIwleSE.js +343 -0
  100. package/dist/index.esm-BaIwleSE.js.map +1 -0
  101. package/dist/index.js +8049 -27
  102. package/dist/index.js.map +1 -1
  103. package/dist/info-N5jWZg2A.js +10 -0
  104. package/dist/info-N5jWZg2A.js.map +1 -0
  105. package/dist/input-CoJoHIhd.js +441 -0
  106. package/dist/input-CoJoHIhd.js.map +1 -0
  107. package/dist/input-field-DTeIrwpK.js +146 -0
  108. package/dist/input-field-DTeIrwpK.js.map +1 -0
  109. package/dist/notifications-NPuFDsBp.js +2550 -0
  110. package/dist/notifications-NPuFDsBp.js.map +1 -0
  111. package/dist/polymorph-B5n9fs_K.js +10 -0
  112. package/dist/polymorph-B5n9fs_K.js.map +1 -0
  113. package/dist/proxy-BZcQiBrp.js +2495 -0
  114. package/dist/proxy-BZcQiBrp.js.map +1 -0
  115. package/dist/skeleton-D75GFBV6.js +10 -0
  116. package/dist/skeleton-D75GFBV6.js.map +1 -0
  117. package/dist/slot-CQW8ZzBb.js +79 -0
  118. package/dist/slot-CQW8ZzBb.js.map +1 -0
  119. package/dist/styles/common.js +29 -0
  120. package/dist/styles/dark.js +214 -0
  121. package/dist/styles/design-tokens.js +98 -0
  122. package/dist/styles/light.js +214 -0
  123. package/dist/styles/theme.js +4 -0
  124. package/dist/styles/theme.types.js +1 -0
  125. package/dist/tabs-ccIA7vMo.js +106 -0
  126. package/dist/tabs-ccIA7vMo.js.map +1 -0
  127. package/dist/triangle-alert-CHMhQ6yd.js +16 -0
  128. package/dist/triangle-alert-CHMhQ6yd.js.map +1 -0
  129. package/dist/use-motion-value-eGwNuWuw.js +14 -0
  130. package/dist/use-motion-value-eGwNuWuw.js.map +1 -0
  131. package/dist/use-stable-ref-CYh-YkID.js +11 -0
  132. package/dist/use-stable-ref-CYh-YkID.js.map +1 -0
  133. package/dist/use-translations-BwLKTrZv.js +10 -0
  134. package/dist/use-translations-BwLKTrZv.js.map +1 -0
  135. package/dist/x-B9bYxG31.js +9 -0
  136. package/dist/x-B9bYxG31.js.map +1 -0
  137. package/package.json +3 -4
  138. package/dist/index.mjs +0 -37108
  139. package/dist/index.mjs.map +0 -1
  140. package/dist/index.umd.js +0 -28
  141. 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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"}