@humain/ui 2.2.6 → 2.2.9
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/index101.js +2 -2
- package/dist/index101.js.map +1 -1
- package/dist/index103.js +3 -3
- package/dist/index103.js.map +1 -1
- package/dist/index108.js +1 -1
- package/dist/index108.js.map +1 -1
- package/dist/index117.js +1 -1
- package/dist/index117.js.map +1 -1
- package/dist/index122.js +6 -6
- package/dist/index122.js.map +1 -1
- package/dist/index126.js +1 -1
- package/dist/index126.js.map +1 -1
- package/dist/index130.js +2 -2
- package/dist/index130.js.map +1 -1
- package/dist/index146.js +4 -4
- package/dist/index146.js.map +1 -1
- package/dist/index152.js +1 -1
- package/dist/index152.js.map +1 -1
- package/dist/index154.js +2 -2
- package/dist/index154.js.map +1 -1
- package/dist/index166.js +1 -1
- package/dist/index166.js.map +1 -1
- package/dist/index168.js +1 -1
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +1 -1
- package/dist/index169.js.map +1 -1
- package/dist/index173.js +2 -2
- package/dist/index173.js.map +1 -1
- package/dist/index175.js +4 -4
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +2 -2
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +2 -2
- package/dist/index177.js.map +1 -1
- package/dist/index184.js +1 -1
- package/dist/index184.js.map +1 -1
- package/dist/index191.js +3 -3
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +2 -2
- package/dist/index192.js.map +1 -1
- package/dist/index201.js +2 -2
- package/dist/index201.js.map +1 -1
- package/dist/index204.js +4 -4
- package/dist/index204.js.map +1 -1
- package/dist/index228.js +1 -1
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +1 -1
- package/dist/index229.js.map +1 -1
- package/dist/index24.js +2 -2
- package/dist/index24.js.map +1 -1
- package/dist/index5.js +1 -1
- package/dist/index5.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/wc/AICodeBlock.js +41 -41
- package/dist/wc/AICodeBlock.js.map +1 -1
- package/dist/wc/AIMermaidDiagram.js +7 -7
- package/dist/wc/AIMermaidDiagram.js.map +1 -1
- package/dist/wc/AIMessage.js +6 -6
- package/dist/wc/AIMessage.js.map +1 -1
- package/dist/wc/AISource.js +2 -2
- package/dist/wc/AISource.js.map +1 -1
- package/dist/wc/AIToolCall.js +1 -1
- package/dist/wc/AIToolCall.js.map +1 -1
- package/dist/wc/Breadcrumb.js +43 -43
- package/dist/wc/Breadcrumb.js.map +1 -1
- package/dist/wc/DropdownMenu.js +9 -9
- package/dist/wc/DropdownMenu.js.map +1 -1
- package/dist/wc/Kbd.js +22 -22
- package/dist/wc/Kbd.js.map +1 -1
- package/dist/wc/button.js +7 -7
- package/dist/wc/button.js.map +1 -1
- package/dist/wc/close-button.js +19 -19
- package/dist/wc/close-button.js.map +1 -1
- package/dist/wc/hf-ai-prompt-suggestion.js +14 -14
- package/dist/wc/hf-ai-prompt-suggestion.js.map +1 -1
- package/dist/wc/hf-ai-reasoning-block.js +13 -13
- package/dist/wc/hf-ai-reasoning-block.js.map +1 -1
- package/dist/wc/hf-ai-steps.js +53 -53
- package/dist/wc/hf-ai-steps.js.map +1 -1
- package/dist/wc/hf-ai-system-message.js +26 -26
- package/dist/wc/hf-ai-system-message.js.map +1 -1
- package/dist/wc/hf-code-snippet.js +35 -35
- package/dist/wc/hf-code-snippet.js.map +1 -1
- package/dist/wc/hf-command-menu.js +39 -39
- package/dist/wc/hf-command-menu.js.map +1 -1
- package/dist/wc/hf-data-table.js +3 -3
- package/dist/wc/hf-data-table.js.map +1 -1
- package/dist/wc/hf-display-value.js +50 -50
- package/dist/wc/hf-display-value.js.map +1 -1
- package/dist/wc/hf-nav-account-menu.js +5 -5
- package/dist/wc/hf-nav-account-menu.js.map +1 -1
- package/dist/wc/hf-rich-textarea.js +1 -1
- package/dist/wc/hf-rich-textarea.js.map +1 -1
- package/dist/wc/hf-steps.js +8 -8
- package/dist/wc/hf-steps.js.map +1 -1
- package/dist/wc/markdown-renderer.js +1 -1
- package/dist/wc/markdown-renderer.js.map +1 -1
- package/dist/wc/selection-group.js +26 -26
- package/dist/wc/selection-group.js.map +1 -1
- package/dist/wc/syntax-highlight.js +4 -4
- package/dist/wc/syntax-highlight.js.map +1 -1
- package/dist/wc/workflow-step-renderer.js +51 -51
- package/dist/wc/workflow-step-renderer.js.map +1 -1
- package/dist/wc-react/AICodeBlock.js +17 -17
- package/dist/wc-react/AICodeBlock.js.map +1 -1
- package/dist/wc-react/AIMermaidDiagram.js +16 -16
- package/dist/wc-react/AIMermaidDiagram.js.map +1 -1
- package/dist/wc-react/AIMessage.js +7 -7
- package/dist/wc-react/AIMessage.js.map +1 -1
- package/dist/wc-react/AISource.js +41 -41
- package/dist/wc-react/AISource.js.map +1 -1
- package/dist/wc-react/AIToolCall.js +6 -6
- package/dist/wc-react/AIToolCall.js.map +1 -1
- package/dist/wc-react/Breadcrumb.js +18 -18
- package/dist/wc-react/Breadcrumb.js.map +1 -1
- package/dist/wc-react/DropdownMenu.js +27 -27
- package/dist/wc-react/DropdownMenu.js.map +1 -1
- package/dist/wc-react/Kbd.js +17 -17
- package/dist/wc-react/Kbd.js.map +1 -1
- package/dist/wc-react/button.js +12 -12
- package/dist/wc-react/button.js.map +1 -1
- package/dist/wc-react/close-button.js +19 -19
- package/dist/wc-react/close-button.js.map +1 -1
- package/dist/wc-react/hf-ai-prompt-suggestion.js +1 -1
- package/dist/wc-react/hf-ai-prompt-suggestion.js.map +1 -1
- package/dist/wc-react/hf-ai-reasoning-block.js +1 -1
- package/dist/wc-react/hf-ai-reasoning-block.js.map +1 -1
- package/dist/wc-react/hf-ai-steps.js +33 -33
- package/dist/wc-react/hf-ai-steps.js.map +1 -1
- package/dist/wc-react/hf-ai-system-message.js +9 -9
- package/dist/wc-react/hf-ai-system-message.js.map +1 -1
- package/dist/wc-react/hf-code-snippet.js +3 -3
- package/dist/wc-react/hf-code-snippet.js.map +1 -1
- package/dist/wc-react/hf-command-menu.js +56 -56
- package/dist/wc-react/hf-command-menu.js.map +1 -1
- package/dist/wc-react/hf-data-table.js +3 -3
- package/dist/wc-react/hf-data-table.js.map +1 -1
- package/dist/wc-react/hf-display-value.js +58 -58
- package/dist/wc-react/hf-display-value.js.map +1 -1
- package/dist/wc-react/hf-nav-account-menu.js +7 -7
- package/dist/wc-react/hf-nav-account-menu.js.map +1 -1
- package/dist/wc-react/hf-rich-textarea.js +5 -5
- package/dist/wc-react/hf-rich-textarea.js.map +1 -1
- package/dist/wc-react/hf-steps.js +2 -2
- package/dist/wc-react/hf-steps.js.map +1 -1
- package/dist/wc-react/markdown-renderer.js +1 -1
- package/dist/wc-react/markdown-renderer.js.map +1 -1
- package/dist/wc-react/selection-group.js +7 -7
- package/dist/wc-react/selection-group.js.map +1 -1
- package/dist/wc-react/syntax-highlight.js +4 -4
- package/dist/wc-react/syntax-highlight.js.map +1 -1
- package/dist/wc-react/workflow-step-renderer.js +44 -44
- package/dist/wc-react/workflow-step-renderer.js.map +1 -1
- package/package.json +1 -1
- package/skills/humain-ui/SKILL.md +1 -1
- package/skills/humain-ui-wc/SKILL.md +1 -1
- package/skills/humain-ui-wc.skill +0 -0
- package/skills/humain-ui.skill +0 -0
- package/src/tokens.css +4 -0
package/dist/wc/Breadcrumb.js
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
import { a as _ } from "./rolldown-runtime.js";
|
|
2
2
|
import { i as S, t as $ } from "./vendor/react.js";
|
|
3
|
-
import { n as
|
|
3
|
+
import { n as o } from "./utils.js";
|
|
4
4
|
import { t as I } from "./createLucideIcon.js";
|
|
5
|
-
import { t as
|
|
5
|
+
import { t as l } from "./chevron-right.js";
|
|
6
6
|
import { t as E } from "./ellipsis.js";
|
|
7
7
|
import { t as P } from "./house.js";
|
|
8
8
|
import { r as w } from "./useRenderElement.js";
|
|
9
|
-
import { t as
|
|
10
|
-
import { t as
|
|
11
|
-
var
|
|
9
|
+
import { t as z } from "./dist.js";
|
|
10
|
+
import { t as H } from "./useRender.js";
|
|
11
|
+
var M = [["path", {
|
|
12
12
|
d: "M22 2 2 22",
|
|
13
13
|
key: "y4kqgn"
|
|
14
|
-
}]],
|
|
14
|
+
}]], R = I("slash", M), u = /* @__PURE__ */ _(S(), 1), a = $();
|
|
15
15
|
function c({ className: r, ...e }) {
|
|
16
16
|
return /* @__PURE__ */ (0, a.jsx)("nav", {
|
|
17
17
|
"aria-label": "breadcrumb",
|
|
18
18
|
"data-slot": "breadcrumb",
|
|
19
|
-
className:
|
|
19
|
+
className: o(r),
|
|
20
20
|
...e
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
function b({ className: r, ...e }) {
|
|
24
24
|
return /* @__PURE__ */ (0, a.jsx)("ol", {
|
|
25
25
|
"data-slot": "breadcrumb-list",
|
|
26
|
-
className:
|
|
26
|
+
className: o("text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words", r),
|
|
27
27
|
...e
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
function p({ className: r, ...e }) {
|
|
31
31
|
return /* @__PURE__ */ (0, a.jsx)("li", {
|
|
32
32
|
"data-slot": "breadcrumb-item",
|
|
33
|
-
className:
|
|
33
|
+
className: o("gap-1.5 inline-flex items-center", r),
|
|
34
34
|
...e
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
function m({ className: r, render: e, ...t }) {
|
|
38
|
-
return
|
|
38
|
+
return H({
|
|
39
39
|
defaultTagName: "a",
|
|
40
|
-
props: w({ className:
|
|
40
|
+
props: w({ className: o("hover:text-foreground transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm", r) }, t),
|
|
41
41
|
render: e,
|
|
42
42
|
state: { slot: "breadcrumb-link" }
|
|
43
43
|
});
|
|
@@ -48,7 +48,7 @@ function f({ className: r, ...e }) {
|
|
|
48
48
|
role: "link",
|
|
49
49
|
"aria-disabled": "true",
|
|
50
50
|
"aria-current": "page",
|
|
51
|
-
className:
|
|
51
|
+
className: o("text-foreground font-normal", r),
|
|
52
52
|
...e
|
|
53
53
|
});
|
|
54
54
|
}
|
|
@@ -57,17 +57,17 @@ function x({ children: r, className: e, ...t }) {
|
|
|
57
57
|
"data-slot": "breadcrumb-separator",
|
|
58
58
|
role: "presentation",
|
|
59
59
|
"aria-hidden": "true",
|
|
60
|
-
className:
|
|
60
|
+
className: o("[&>svg]:size-3.5", e),
|
|
61
61
|
...t,
|
|
62
|
-
children: r ?? /* @__PURE__ */ (0, a.jsx)(
|
|
62
|
+
children: r ?? /* @__PURE__ */ (0, a.jsx)(l, { className: "rtl:rotate-180" })
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
function
|
|
65
|
+
function V({ className: r, ...e }) {
|
|
66
66
|
return /* @__PURE__ */ (0, a.jsxs)("span", {
|
|
67
67
|
"data-slot": "breadcrumb-ellipsis",
|
|
68
68
|
role: "presentation",
|
|
69
69
|
"aria-hidden": "true",
|
|
70
|
-
className:
|
|
70
|
+
className: o("size-5 [&>svg]:size-4 flex items-center justify-center", r),
|
|
71
71
|
...e,
|
|
72
72
|
children: [/* @__PURE__ */ (0, a.jsx)(E, {}), /* @__PURE__ */ (0, a.jsx)("span", {
|
|
73
73
|
className: "sr-only",
|
|
@@ -81,8 +81,8 @@ p.displayName = "BreadcrumbItem";
|
|
|
81
81
|
m.displayName = "BreadcrumbLink";
|
|
82
82
|
f.displayName = "BreadcrumbPage";
|
|
83
83
|
x.displayName = "BreadcrumbSeparator";
|
|
84
|
-
|
|
85
|
-
var g = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm",
|
|
84
|
+
V.displayName = "BreadcrumbEllipsis";
|
|
85
|
+
var g = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm", d = z('inline-flex items-center transition-[color,opacity,background-color,border-color,text-decoration-color] duration-200 ease-out whitespace-nowrap relative before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:min-h-11 before:content-[""] sm:before:content-none motion-reduce:transition-none', {
|
|
86
86
|
variants: {
|
|
87
87
|
variant: {
|
|
88
88
|
text: "text-sm font-normal text-muted-foreground hover:text-foreground underline decoration-transparent underline-offset-4 hover:decoration-current/30",
|
|
@@ -130,42 +130,42 @@ var g = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:ou
|
|
|
130
130
|
variant: "text",
|
|
131
131
|
isCurrent: !1
|
|
132
132
|
}
|
|
133
|
-
}), N = u.createContext({ separator: "chevron" }),
|
|
134
|
-
function i({ className: r, separator: e = "chevron", ring: t = !1, children:
|
|
133
|
+
}), N = u.createContext({ separator: "chevron" }), q = () => u.useContext(N);
|
|
134
|
+
function i({ className: r, separator: e = "chevron", ring: t = !1, children: s, ...n }) {
|
|
135
135
|
const L = u.useMemo(() => ({ separator: e }), [e]);
|
|
136
136
|
return /* @__PURE__ */ (0, a.jsx)(N.Provider, {
|
|
137
137
|
value: L,
|
|
138
138
|
children: /* @__PURE__ */ (0, a.jsx)(c, {
|
|
139
|
-
className:
|
|
139
|
+
className: o(t && "inline-flex border border-ring/50 rounded-full px-2.5 py-0.5", r),
|
|
140
140
|
...n,
|
|
141
|
-
children:
|
|
141
|
+
children: s
|
|
142
142
|
})
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
-
function
|
|
145
|
+
function v({ className: r, ...e }) {
|
|
146
146
|
return /* @__PURE__ */ (0, a.jsx)(b, {
|
|
147
|
-
className:
|
|
147
|
+
className: o("flex-nowrap gap-1", r),
|
|
148
148
|
...e
|
|
149
149
|
});
|
|
150
150
|
}
|
|
151
|
-
function
|
|
151
|
+
function y({ className: r, ...e }) {
|
|
152
152
|
return /* @__PURE__ */ (0, a.jsx)(p, {
|
|
153
|
-
className:
|
|
153
|
+
className: o("gap-1", r),
|
|
154
154
|
...e
|
|
155
155
|
});
|
|
156
156
|
}
|
|
157
|
-
function B({ className: r, variant: e = "text", isCurrent: t = !1, ...
|
|
157
|
+
function B({ className: r, variant: e = "text", isCurrent: t = !1, ...s }) {
|
|
158
158
|
return /* @__PURE__ */ (0, a.jsx)(m, {
|
|
159
|
-
className:
|
|
159
|
+
className: o(d({
|
|
160
160
|
variant: e,
|
|
161
161
|
isCurrent: t
|
|
162
162
|
}), r),
|
|
163
|
-
...
|
|
163
|
+
...s
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
function h({ className: r, variant: e = "text", ...t }) {
|
|
167
167
|
return /* @__PURE__ */ (0, a.jsx)(f, {
|
|
168
|
-
className:
|
|
168
|
+
className: o(d({
|
|
169
169
|
variant: e,
|
|
170
170
|
isCurrent: !0
|
|
171
171
|
}), r),
|
|
@@ -173,11 +173,11 @@ function h({ className: r, variant: e = "text", ...t }) {
|
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
175
|
function j({ className: r, type: e, ...t }) {
|
|
176
|
-
const { separator:
|
|
176
|
+
const { separator: s } = q(), n = e ?? s;
|
|
177
177
|
return /* @__PURE__ */ (0, a.jsx)(x, {
|
|
178
|
-
className:
|
|
178
|
+
className: o("[&>svg]:size-3.5 text-muted-foreground transition-opacity duration-200 ease-out motion-reduce:transition-none", r),
|
|
179
179
|
...t,
|
|
180
|
-
children: n === "slash" ? /* @__PURE__ */ (0, a.jsx)(
|
|
180
|
+
children: n === "slash" ? /* @__PURE__ */ (0, a.jsx)(R, {}) : /* @__PURE__ */ (0, a.jsx)(l, { className: "rtl:rotate-180" })
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
183
|
function C({ className: r, variant: e = "text", ...t }) {
|
|
@@ -185,7 +185,7 @@ function C({ className: r, variant: e = "text", ...t }) {
|
|
|
185
185
|
type: "button",
|
|
186
186
|
"data-slot": "breadcrumb-ellipsis",
|
|
187
187
|
"aria-label": "Show more breadcrumb items",
|
|
188
|
-
className:
|
|
188
|
+
className: o(d({
|
|
189
189
|
variant: e,
|
|
190
190
|
isCurrent: !1
|
|
191
191
|
}), `cursor-pointer hover:text-foreground ${g}`, r),
|
|
@@ -193,10 +193,10 @@ function C({ className: r, variant: e = "text", ...t }) {
|
|
|
193
193
|
children: "…"
|
|
194
194
|
});
|
|
195
195
|
}
|
|
196
|
-
function k({ className: r, variant: e = "text", srLabel: t = "Home", ...
|
|
196
|
+
function k({ className: r, variant: e = "text", srLabel: t = "Home", ...s }) {
|
|
197
197
|
return /* @__PURE__ */ (0, a.jsxs)(m, {
|
|
198
|
-
className:
|
|
199
|
-
...
|
|
198
|
+
className: o(`group inline-flex items-center text-muted-foreground hover:text-secondary-foreground transition-colors duration-200 ease-out motion-reduce:transition-none ${g}`, e === "soft-badge" && "rounded-full px-1.5 py-0.5 bg-primary/10 text-primary", e === "outline-badge" && "rounded-full px-1.5 py-0.5 border border-muted-foreground/50", r),
|
|
199
|
+
...s,
|
|
200
200
|
children: [/* @__PURE__ */ (0, a.jsx)(P, { className: "size-3.5 transition-transform duration-200 ease-out group-hover:scale-110 motion-reduce:transition-none" }), /* @__PURE__ */ (0, a.jsx)("span", {
|
|
201
201
|
className: "sr-only",
|
|
202
202
|
children: t
|
|
@@ -204,8 +204,8 @@ function k({ className: r, variant: e = "text", srLabel: t = "Home", ...o }) {
|
|
|
204
204
|
});
|
|
205
205
|
}
|
|
206
206
|
i.displayName = "Breadcrumb";
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
v.displayName = "BreadcrumbList";
|
|
208
|
+
y.displayName = "BreadcrumbItem";
|
|
209
209
|
B.displayName = "BreadcrumbLink";
|
|
210
210
|
h.displayName = "BreadcrumbPage";
|
|
211
211
|
j.displayName = "BreadcrumbSeparator";
|
|
@@ -213,8 +213,8 @@ C.displayName = "BreadcrumbEllipsis";
|
|
|
213
213
|
k.displayName = "BreadcrumbHomeLink";
|
|
214
214
|
var W = Object.assign(i, {
|
|
215
215
|
Root: i,
|
|
216
|
-
List:
|
|
217
|
-
Item:
|
|
216
|
+
List: v,
|
|
217
|
+
Item: y,
|
|
218
218
|
Link: B,
|
|
219
219
|
Page: h,
|
|
220
220
|
Separator: j,
|
|
@@ -224,9 +224,9 @@ var W = Object.assign(i, {
|
|
|
224
224
|
export {
|
|
225
225
|
B as a,
|
|
226
226
|
j as c,
|
|
227
|
-
|
|
227
|
+
y as i,
|
|
228
228
|
C as n,
|
|
229
|
-
|
|
229
|
+
v as o,
|
|
230
230
|
k as r,
|
|
231
231
|
h as s,
|
|
232
232
|
W as t
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumb.js","names":[],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/slash.mjs","../../src/components/ui/breadcrumb.tsx","../../src/components/molecules/navigation/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M22 2 2 22\", key: \"y4kqgn\" }]];\nconst Slash = createLucideIcon(\"slash\", __iconNode);\n\nexport { __iconNode, Slash as default };\n//# sourceMappingURL=slash.mjs.map\n","/** biome-ignore-all lint/a11y/useFocusableInteractive: BreadcrumbPage intentionally uses aria-disabled=\"true\" for current page, removing it from tab order */\n/** biome-ignore-all lint/a11y/useSemanticElements: BreadcrumbPage uses span with role=\"link\" for non-interactive current page indicator per WAI-ARIA breadcrumb pattern */\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport type * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('gap-1.5 inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<'a'> & { children?: React.ReactNode }) {\n return useRender({\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n 'hover:text-foreground transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm',\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: 'breadcrumb-link',\n },\n });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('text-foreground font-normal', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight className=\"rtl:rotate-180\" />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n 'size-5 [&>svg]:size-4 flex items-center justify-center',\n className,\n )}\n {...props}\n >\n <MoreHorizontal />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumbList.displayName = 'BreadcrumbList';\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbLink.displayName = 'BreadcrumbLink';\nBreadcrumbPage.displayName = 'BreadcrumbPage';\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","/** biome-ignore-all lint/a11y/useFocusableInteractive: BreadcrumbPage intentionally uses aria-disabled=\"true\" for current page, removing it from tab order */\n/** biome-ignore-all lint/a11y/useSemanticElements: BreadcrumbPage uses span with role=\"link\" for non-interactive current page indicator per WAI-ARIA breadcrumb pattern */\nimport { cva } from 'class-variance-authority';\nimport { ChevronRight, Home, Slash } from 'lucide-react';\nimport * as React from 'react';\nimport {\n Breadcrumb as BreadcrumbBase,\n BreadcrumbItem as BreadcrumbItemBase,\n BreadcrumbLink as BreadcrumbLinkBase,\n BreadcrumbList as BreadcrumbListBase,\n BreadcrumbPage as BreadcrumbPageBase,\n BreadcrumbSeparator as BreadcrumbSeparatorBase,\n} from '@/components/ui/breadcrumb';\nimport { cn } from '@/lib/utils';\n\nconst FOCUS_RING =\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm';\n\n/* -----------------------------------------------------------------------------\n * Breadcrumb Variants\n * -------------------------------------------------------------------------- */\n\nconst breadcrumbItemVariants = cva(\n 'inline-flex items-center transition-[color,opacity,background-color,border-color,text-decoration-color] duration-200 ease-out whitespace-nowrap relative before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:min-h-11 before:content-[\"\"] sm:before:content-none motion-reduce:transition-none',\n {\n variants: {\n variant: {\n text: 'text-sm font-normal text-muted-foreground hover:text-foreground underline decoration-transparent underline-offset-4 hover:decoration-current/30',\n 'soft-badge':\n 'text-xs font-normal text-primary rounded-full px-2 py-0.5 bg-primary/10 hover:bg-primary/15',\n 'outline-badge':\n 'text-xs font-normal text-foreground rounded-full px-2 py-0.5 border border-muted-foreground/50 hover:border-muted-foreground',\n },\n isCurrent: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n variant: 'text',\n isCurrent: true,\n className: 'text-foreground no-underline',\n },\n {\n variant: 'text',\n isCurrent: false,\n className: 'text-muted-foreground',\n },\n {\n variant: 'soft-badge',\n isCurrent: true,\n className: 'bg-primary/10',\n },\n {\n variant: 'soft-badge',\n isCurrent: false,\n className: 'bg-primary/10 opacity-50',\n },\n {\n variant: 'outline-badge',\n isCurrent: true,\n className: 'border-primary text-foreground',\n },\n {\n variant: 'outline-badge',\n isCurrent: false,\n className: 'border-muted-foreground/50 opacity-50',\n },\n ],\n defaultVariants: {\n variant: 'text',\n isCurrent: false,\n },\n },\n);\n\n/* -----------------------------------------------------------------------------\n * Context for sharing separator type\n * -------------------------------------------------------------------------- */\n\ntype SeparatorType = 'chevron' | 'slash';\n\ntype BreadcrumbContextValue = {\n separator: SeparatorType;\n};\n\nconst BreadcrumbContext = React.createContext<BreadcrumbContextValue>({\n separator: 'chevron',\n});\n\nconst useBreadcrumbContext = () => React.useContext(BreadcrumbContext);\n\n/* -----------------------------------------------------------------------------\n * Breadcrumb Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbProps\n extends React.ComponentProps<typeof BreadcrumbBase> {\n separator?: SeparatorType;\n ring?: boolean;\n}\n\nfunction Breadcrumb({\n className,\n separator = 'chevron',\n ring = false,\n children,\n ...props\n}: BreadcrumbProps) {\n const contextValue = React.useMemo(() => ({ separator }), [separator]);\n\n return (\n <BreadcrumbContext.Provider value={contextValue}>\n <BreadcrumbBase\n className={cn(\n ring &&\n 'inline-flex border border-ring/50 rounded-full px-2.5 py-0.5',\n className,\n )}\n {...props}\n >\n {children}\n </BreadcrumbBase>\n </BreadcrumbContext.Provider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbList Component\n * -------------------------------------------------------------------------- */\n\nexport type BreadcrumbListProps = React.ComponentProps<\n typeof BreadcrumbListBase\n>;\n\nfunction BreadcrumbList({ className, ...props }: BreadcrumbListProps) {\n return (\n <BreadcrumbListBase\n className={cn('flex-nowrap gap-1', className)}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbItem Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbItemProps\n extends Omit<React.ComponentProps<typeof BreadcrumbItemBase>, 'className'> {\n className?: string;\n}\n\nfunction BreadcrumbItem({ className, ...props }: BreadcrumbItemProps) {\n return <BreadcrumbItemBase className={cn('gap-1', className)} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbLink Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbLinkProps\n extends React.ComponentProps<typeof BreadcrumbLinkBase> {\n variant?: 'text' | 'soft-badge' | 'outline-badge';\n isCurrent?: boolean;\n}\n\nfunction BreadcrumbLink({\n className,\n variant = 'text',\n isCurrent = false,\n ...props\n}: BreadcrumbLinkProps) {\n return (\n <BreadcrumbLinkBase\n className={cn(breadcrumbItemVariants({ variant, isCurrent }), className)}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbPage Component (Current Page)\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbPageProps\n extends React.ComponentProps<typeof BreadcrumbPageBase> {\n variant?: 'text' | 'soft-badge' | 'outline-badge';\n}\n\nfunction BreadcrumbPage({\n className,\n variant = 'text',\n ...props\n}: BreadcrumbPageProps) {\n return (\n <BreadcrumbPageBase\n className={cn(\n breadcrumbItemVariants({ variant, isCurrent: true }),\n className,\n )}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbSeparator Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbSeparatorProps\n extends Omit<\n React.ComponentProps<typeof BreadcrumbSeparatorBase>,\n 'children'\n > {\n type?: SeparatorType;\n}\n\nfunction BreadcrumbSeparator({\n className,\n type,\n ...props\n}: BreadcrumbSeparatorProps) {\n const { separator } = useBreadcrumbContext();\n const separatorType = type ?? separator;\n\n return (\n <BreadcrumbSeparatorBase\n className={cn(\n '[&>svg]:size-3.5 text-text-quaternary transition-opacity duration-200 ease-out motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {separatorType === 'slash' ? (\n <Slash />\n ) : (\n <ChevronRight className=\"rtl:rotate-180\" />\n )}\n </BreadcrumbSeparatorBase>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbEllipsis Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbEllipsisProps\n extends React.ComponentProps<'button'> {\n variant?: 'text' | 'soft-badge' | 'outline-badge';\n}\n\nfunction BreadcrumbEllipsis({\n className,\n variant = 'text',\n ...props\n}: BreadcrumbEllipsisProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"breadcrumb-ellipsis\"\n aria-label=\"Show more breadcrumb items\"\n className={cn(\n breadcrumbItemVariants({ variant, isCurrent: false }),\n `cursor-pointer hover:text-foreground ${FOCUS_RING}`,\n className,\n )}\n {...props}\n >\n …\n </button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbHomeLink Component (Home Icon)\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbHomeLinkProps\n extends Omit<BreadcrumbLinkProps, 'children'> {\n srLabel?: string;\n}\n\nfunction BreadcrumbHomeLink({\n className,\n variant = 'text',\n srLabel = 'Home',\n ...props\n}: BreadcrumbHomeLinkProps) {\n return (\n <BreadcrumbLinkBase\n className={cn(\n `group inline-flex items-center text-text-quaternary hover:text-secondary-foreground transition-colors duration-200 ease-out motion-reduce:transition-none ${FOCUS_RING}`,\n variant === 'soft-badge' &&\n 'rounded-full px-1.5 py-0.5 bg-primary/10 text-primary',\n variant === 'outline-badge' &&\n 'rounded-full px-1.5 py-0.5 border border-muted-foreground/50',\n className,\n )}\n {...props}\n >\n <Home className=\"size-3.5 transition-transform duration-200 ease-out group-hover:scale-110 motion-reduce:transition-none\" />\n <span className=\"sr-only\">{srLabel}</span>\n </BreadcrumbLinkBase>\n );\n}\n\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumbList.displayName = 'BreadcrumbList';\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbLink.displayName = 'BreadcrumbLink';\nBreadcrumbPage.displayName = 'BreadcrumbPage';\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\nBreadcrumbHomeLink.displayName = 'BreadcrumbHomeLink';\n\n/**\n * Breadcrumb component with dot notation for compound parts.\n *\n * @example\n * ```tsx\n * <Breadcrumb>\n * <Breadcrumb.List>\n * <Breadcrumb.Item>\n * <Breadcrumb.Link href=\"/\">Home</Breadcrumb.Link>\n * </Breadcrumb.Item>\n * <Breadcrumb.Separator />\n * <Breadcrumb.Item>\n * <Breadcrumb.Page>Current</Breadcrumb.Page>\n * </Breadcrumb.Item>\n * </Breadcrumb.List>\n * </Breadcrumb>\n * ```\n */\nconst BreadcrumbCompound = Object.assign(Breadcrumb, {\n Root: Breadcrumb,\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n HomeLink: BreadcrumbHomeLink,\n});\n\nexport {\n BreadcrumbCompound as Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbHomeLink,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n breadcrumbItemVariants,\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","names":[],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/slash.mjs","../../src/components/ui/breadcrumb.tsx","../../src/components/molecules/navigation/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M22 2 2 22\", key: \"y4kqgn\" }]];\nconst Slash = createLucideIcon(\"slash\", __iconNode);\n\nexport { __iconNode, Slash as default };\n//# sourceMappingURL=slash.mjs.map\n","/** biome-ignore-all lint/a11y/useFocusableInteractive: BreadcrumbPage intentionally uses aria-disabled=\"true\" for current page, removing it from tab order */\n/** biome-ignore-all lint/a11y/useSemanticElements: BreadcrumbPage uses span with role=\"link\" for non-interactive current page indicator per WAI-ARIA breadcrumb pattern */\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport type * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'text-muted-foreground gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('gap-1.5 inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<'a'> & { children?: React.ReactNode }) {\n return useRender({\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n 'hover:text-foreground transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm',\n className,\n ),\n },\n props,\n ),\n render,\n state: {\n slot: 'breadcrumb-link',\n },\n });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('text-foreground font-normal', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight className=\"rtl:rotate-180\" />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n 'size-5 [&>svg]:size-4 flex items-center justify-center',\n className,\n )}\n {...props}\n >\n <MoreHorizontal />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumbList.displayName = 'BreadcrumbList';\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbLink.displayName = 'BreadcrumbLink';\nBreadcrumbPage.displayName = 'BreadcrumbPage';\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","/** biome-ignore-all lint/a11y/useFocusableInteractive: BreadcrumbPage intentionally uses aria-disabled=\"true\" for current page, removing it from tab order */\n/** biome-ignore-all lint/a11y/useSemanticElements: BreadcrumbPage uses span with role=\"link\" for non-interactive current page indicator per WAI-ARIA breadcrumb pattern */\nimport { cva } from 'class-variance-authority';\nimport { ChevronRight, Home, Slash } from 'lucide-react';\nimport * as React from 'react';\nimport {\n Breadcrumb as BreadcrumbBase,\n BreadcrumbItem as BreadcrumbItemBase,\n BreadcrumbLink as BreadcrumbLinkBase,\n BreadcrumbList as BreadcrumbListBase,\n BreadcrumbPage as BreadcrumbPageBase,\n BreadcrumbSeparator as BreadcrumbSeparatorBase,\n} from '@/components/ui/breadcrumb';\nimport { cn } from '@/lib/utils';\n\nconst FOCUS_RING =\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring rounded-sm';\n\n/* -----------------------------------------------------------------------------\n * Breadcrumb Variants\n * -------------------------------------------------------------------------- */\n\nconst breadcrumbItemVariants = cva(\n 'inline-flex items-center transition-[color,opacity,background-color,border-color,text-decoration-color] duration-200 ease-out whitespace-nowrap relative before:absolute before:inset-x-0 before:top-1/2 before:-translate-y-1/2 before:min-h-11 before:content-[\"\"] sm:before:content-none motion-reduce:transition-none',\n {\n variants: {\n variant: {\n text: 'text-sm font-normal text-muted-foreground hover:text-foreground underline decoration-transparent underline-offset-4 hover:decoration-current/30',\n 'soft-badge':\n 'text-xs font-normal text-primary rounded-full px-2 py-0.5 bg-primary/10 hover:bg-primary/15',\n 'outline-badge':\n 'text-xs font-normal text-foreground rounded-full px-2 py-0.5 border border-muted-foreground/50 hover:border-muted-foreground',\n },\n isCurrent: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n variant: 'text',\n isCurrent: true,\n className: 'text-foreground no-underline',\n },\n {\n variant: 'text',\n isCurrent: false,\n className: 'text-muted-foreground',\n },\n {\n variant: 'soft-badge',\n isCurrent: true,\n className: 'bg-primary/10',\n },\n {\n variant: 'soft-badge',\n isCurrent: false,\n className: 'bg-primary/10 opacity-50',\n },\n {\n variant: 'outline-badge',\n isCurrent: true,\n className: 'border-primary text-foreground',\n },\n {\n variant: 'outline-badge',\n isCurrent: false,\n className: 'border-muted-foreground/50 opacity-50',\n },\n ],\n defaultVariants: {\n variant: 'text',\n isCurrent: false,\n },\n },\n);\n\n/* -----------------------------------------------------------------------------\n * Context for sharing separator type\n * -------------------------------------------------------------------------- */\n\ntype SeparatorType = 'chevron' | 'slash';\n\ntype BreadcrumbContextValue = {\n separator: SeparatorType;\n};\n\nconst BreadcrumbContext = React.createContext<BreadcrumbContextValue>({\n separator: 'chevron',\n});\n\nconst useBreadcrumbContext = () => React.useContext(BreadcrumbContext);\n\n/* -----------------------------------------------------------------------------\n * Breadcrumb Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbProps\n extends React.ComponentProps<typeof BreadcrumbBase> {\n separator?: SeparatorType;\n ring?: boolean;\n}\n\nfunction Breadcrumb({\n className,\n separator = 'chevron',\n ring = false,\n children,\n ...props\n}: BreadcrumbProps) {\n const contextValue = React.useMemo(() => ({ separator }), [separator]);\n\n return (\n <BreadcrumbContext.Provider value={contextValue}>\n <BreadcrumbBase\n className={cn(\n ring &&\n 'inline-flex border border-ring/50 rounded-full px-2.5 py-0.5',\n className,\n )}\n {...props}\n >\n {children}\n </BreadcrumbBase>\n </BreadcrumbContext.Provider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbList Component\n * -------------------------------------------------------------------------- */\n\nexport type BreadcrumbListProps = React.ComponentProps<\n typeof BreadcrumbListBase\n>;\n\nfunction BreadcrumbList({ className, ...props }: BreadcrumbListProps) {\n return (\n <BreadcrumbListBase\n className={cn('flex-nowrap gap-1', className)}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbItem Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbItemProps\n extends Omit<React.ComponentProps<typeof BreadcrumbItemBase>, 'className'> {\n className?: string;\n}\n\nfunction BreadcrumbItem({ className, ...props }: BreadcrumbItemProps) {\n return <BreadcrumbItemBase className={cn('gap-1', className)} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbLink Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbLinkProps\n extends React.ComponentProps<typeof BreadcrumbLinkBase> {\n variant?: 'text' | 'soft-badge' | 'outline-badge';\n isCurrent?: boolean;\n}\n\nfunction BreadcrumbLink({\n className,\n variant = 'text',\n isCurrent = false,\n ...props\n}: BreadcrumbLinkProps) {\n return (\n <BreadcrumbLinkBase\n className={cn(breadcrumbItemVariants({ variant, isCurrent }), className)}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbPage Component (Current Page)\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbPageProps\n extends React.ComponentProps<typeof BreadcrumbPageBase> {\n variant?: 'text' | 'soft-badge' | 'outline-badge';\n}\n\nfunction BreadcrumbPage({\n className,\n variant = 'text',\n ...props\n}: BreadcrumbPageProps) {\n return (\n <BreadcrumbPageBase\n className={cn(\n breadcrumbItemVariants({ variant, isCurrent: true }),\n className,\n )}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbSeparator Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbSeparatorProps\n extends Omit<\n React.ComponentProps<typeof BreadcrumbSeparatorBase>,\n 'children'\n > {\n type?: SeparatorType;\n}\n\nfunction BreadcrumbSeparator({\n className,\n type,\n ...props\n}: BreadcrumbSeparatorProps) {\n const { separator } = useBreadcrumbContext();\n const separatorType = type ?? separator;\n\n return (\n <BreadcrumbSeparatorBase\n className={cn(\n '[&>svg]:size-3.5 text-muted-foreground transition-opacity duration-200 ease-out motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {separatorType === 'slash' ? (\n <Slash />\n ) : (\n <ChevronRight className=\"rtl:rotate-180\" />\n )}\n </BreadcrumbSeparatorBase>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbEllipsis Component\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbEllipsisProps\n extends React.ComponentProps<'button'> {\n variant?: 'text' | 'soft-badge' | 'outline-badge';\n}\n\nfunction BreadcrumbEllipsis({\n className,\n variant = 'text',\n ...props\n}: BreadcrumbEllipsisProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"breadcrumb-ellipsis\"\n aria-label=\"Show more breadcrumb items\"\n className={cn(\n breadcrumbItemVariants({ variant, isCurrent: false }),\n `cursor-pointer hover:text-foreground ${FOCUS_RING}`,\n className,\n )}\n {...props}\n >\n …\n </button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * BreadcrumbHomeLink Component (Home Icon)\n * -------------------------------------------------------------------------- */\n\nexport interface BreadcrumbHomeLinkProps\n extends Omit<BreadcrumbLinkProps, 'children'> {\n srLabel?: string;\n}\n\nfunction BreadcrumbHomeLink({\n className,\n variant = 'text',\n srLabel = 'Home',\n ...props\n}: BreadcrumbHomeLinkProps) {\n return (\n <BreadcrumbLinkBase\n className={cn(\n `group inline-flex items-center text-muted-foreground hover:text-secondary-foreground transition-colors duration-200 ease-out motion-reduce:transition-none ${FOCUS_RING}`,\n variant === 'soft-badge' &&\n 'rounded-full px-1.5 py-0.5 bg-primary/10 text-primary',\n variant === 'outline-badge' &&\n 'rounded-full px-1.5 py-0.5 border border-muted-foreground/50',\n className,\n )}\n {...props}\n >\n <Home className=\"size-3.5 transition-transform duration-200 ease-out group-hover:scale-110 motion-reduce:transition-none\" />\n <span className=\"sr-only\">{srLabel}</span>\n </BreadcrumbLinkBase>\n );\n}\n\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumbList.displayName = 'BreadcrumbList';\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbLink.displayName = 'BreadcrumbLink';\nBreadcrumbPage.displayName = 'BreadcrumbPage';\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\nBreadcrumbHomeLink.displayName = 'BreadcrumbHomeLink';\n\n/**\n * Breadcrumb component with dot notation for compound parts.\n *\n * @example\n * ```tsx\n * <Breadcrumb>\n * <Breadcrumb.List>\n * <Breadcrumb.Item>\n * <Breadcrumb.Link href=\"/\">Home</Breadcrumb.Link>\n * </Breadcrumb.Item>\n * <Breadcrumb.Separator />\n * <Breadcrumb.Item>\n * <Breadcrumb.Page>Current</Breadcrumb.Page>\n * </Breadcrumb.Item>\n * </Breadcrumb.List>\n * </Breadcrumb>\n * ```\n */\nconst BreadcrumbCompound = Object.assign(Breadcrumb, {\n Root: Breadcrumb,\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n HomeLink: BreadcrumbHomeLink,\n});\n\nexport {\n BreadcrumbCompound as Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbHomeLink,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n breadcrumbItemVariants,\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/wc/DropdownMenu.js
CHANGED
|
@@ -4,7 +4,7 @@ import { n as d } from "./utils.js";
|
|
|
4
4
|
import { t as X } from "./check.js";
|
|
5
5
|
import { t as Ee } from "./chevron-right.js";
|
|
6
6
|
import { c as $, r as Be, t as Ge, u as He } from "./useRenderElement.js";
|
|
7
|
-
import { A as Ae, M as Le, N as Ue, Q as
|
|
7
|
+
import { A as Ae, M as Le, N as Ue, Q as Y, i as q, j as Ye, tt as qe, v as Ke } from "./popupStateMapping.js";
|
|
8
8
|
import { r as Xe, t as $e } from "./useStableCallback.js";
|
|
9
9
|
import { n as J } from "./useTimeout.js";
|
|
10
10
|
import { c as Je, f as Qe, p as We } from "./floating-ui.utils.dom.js";
|
|
@@ -45,7 +45,7 @@ function Tt(e) {
|
|
|
45
45
|
r
|
|
46
46
|
]);
|
|
47
47
|
}
|
|
48
|
-
var t = ze(), N = 2, Rt =
|
|
48
|
+
var t = ze(), N = 2, Rt = qe(function(o, n) {
|
|
49
49
|
const { render: r, className: a, style: i, disabled: g = !1, nativeButton: j = !0, id: T, openOnHover: b, delay: fe = 100, closeDelay: F = 0, handle: ge, payload: xe, ...be } = o, we = Q(!0), s = ge?.store ?? we?.store;
|
|
50
50
|
if (!s) throw new Error(He(85));
|
|
51
51
|
const p = ot(T), Me = s.useState("isTriggerActive", p), R = s.useState("floatingRootContext"), l = s.useState("isOpenedByTrigger", p), ve = s.useState("triggerPopupId", p), v = u.useRef(null), c = St(), he = rt(!0), O = Le(), h = u.useMemo(() => O ?? new Ue(), [O]), { registerTrigger: ye, isMountedByThisTrigger: z } = Ke(p, v, s, {
|
|
@@ -54,7 +54,7 @@ var t = ze(), N = 2, Rt = Ye(function(o, n) {
|
|
|
54
54
|
parent: c,
|
|
55
55
|
floatingTreeRoot: h,
|
|
56
56
|
floatingNodeId: Ae(h),
|
|
57
|
-
floatingParentNodeId:
|
|
57
|
+
floatingParentNodeId: Ye(),
|
|
58
58
|
keyboardEventRelay: he?.relayKeyboardEvent
|
|
59
59
|
}), m = c.type === "menubar", Ne = s.useState("disabled"), w = g || Ne || m && c.context.disabled, { getButtonProps: De, buttonRef: je } = st({
|
|
60
60
|
disabled: w,
|
|
@@ -135,7 +135,7 @@ var t = ze(), N = 2, Rt = Ye(function(o, n) {
|
|
|
135
135
|
De
|
|
136
136
|
], U = Ge("button", o, {
|
|
137
137
|
enabled: !m,
|
|
138
|
-
stateAttributesMapping:
|
|
138
|
+
stateAttributesMapping: q,
|
|
139
139
|
state: H,
|
|
140
140
|
ref: A,
|
|
141
141
|
props: L
|
|
@@ -148,14 +148,14 @@ var t = ze(), N = 2, Rt = Ye(function(o, n) {
|
|
|
148
148
|
state: H,
|
|
149
149
|
refs: A,
|
|
150
150
|
props: L,
|
|
151
|
-
stateAttributesMapping:
|
|
151
|
+
stateAttributesMapping: q
|
|
152
152
|
}) : l ? /* @__PURE__ */ (0, t.jsxs)(u.Fragment, { children: [
|
|
153
|
-
/* @__PURE__ */ (0, t.jsx)(
|
|
153
|
+
/* @__PURE__ */ (0, t.jsx)(Y, {
|
|
154
154
|
ref: ke,
|
|
155
155
|
onFocus: Pe
|
|
156
156
|
}, `${p}-pre-focus-guard`),
|
|
157
157
|
/* @__PURE__ */ (0, t.jsx)(u.Fragment, { children: U }, p),
|
|
158
|
-
/* @__PURE__ */ (0, t.jsx)(
|
|
158
|
+
/* @__PURE__ */ (0, t.jsx)(Y, {
|
|
159
159
|
ref: s.context.triggerFocusTargetRef,
|
|
160
160
|
onFocus: _e
|
|
161
161
|
}, `${p}-post-focus-guard`)
|
|
@@ -343,7 +343,7 @@ function de({ className: e, inset: o, ...n }) {
|
|
|
343
343
|
return /* @__PURE__ */ (0, t.jsx)(ft, {
|
|
344
344
|
"data-slot": "dropdown-menu-label",
|
|
345
345
|
"data-inset": o,
|
|
346
|
-
className: d("px-4 py-2 text-xs font-medium text-
|
|
346
|
+
className: d("px-4 py-2 text-xs font-medium text-secondary-foreground uppercase tracking-wider", "data-[inset]:ps-8", e),
|
|
347
347
|
...n
|
|
348
348
|
});
|
|
349
349
|
}
|
|
@@ -359,7 +359,7 @@ function ce({ className: e, icon: o, shortcut: n, destructive: r = !1, render: a
|
|
|
359
359
|
...T,
|
|
360
360
|
children: [
|
|
361
361
|
o && /* @__PURE__ */ (0, t.jsx)("span", {
|
|
362
|
-
className: d("size-4 shrink-0 transition-colors duration-150", b ? "text-destructive" : "text-
|
|
362
|
+
className: d("size-4 shrink-0 transition-colors duration-150", b ? "text-destructive" : "text-current"),
|
|
363
363
|
children: o
|
|
364
364
|
}),
|
|
365
365
|
/* @__PURE__ */ (0, t.jsx)("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.js","names":["_formatErrorMessage","REASONS.cancelOpen"],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/menu/utils/findRootOwnerId.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/utils/useMixedToggleClickHandler.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs","../../src/components/organisms/menus/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import { getParentNode, isHTMLElement, isLastTraversableNode } from '@floating-ui/utils/dom';\nexport function findRootOwnerId(node) {\n if (isHTMLElement(node) && node.hasAttribute('data-rootownerid')) {\n return node.getAttribute('data-rootownerid') ?? undefined;\n }\n if (isLastTraversableNode(node)) {\n return undefined;\n }\n return findRootOwnerId(getParentNode(node));\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\n/**\n * Returns `click` and `mousedown` handlers that fix the behavior of triggers of popups that are toggled by different events.\n * For example, a button that opens a popup on mousedown and closes it on click.\n * This hook prevents the popup from closing immediately after the mouse button is released.\n */\nexport function useMixedToggleClickHandler(params) {\n const {\n enabled = true,\n mouseDownAction,\n open\n } = params;\n const ignoreClickRef = React.useRef(false);\n return React.useMemo(() => {\n if (!enabled) {\n return EMPTY_OBJECT;\n }\n return {\n onMouseDown: event => {\n if (mouseDownAction === 'open' && !open || mouseDownAction === 'close' && open) {\n ignoreClickRef.current = true;\n ownerDocument(event.currentTarget).addEventListener('click', () => {\n ignoreClickRef.current = false;\n }, {\n once: true\n });\n }\n },\n onClick: event => {\n if (ignoreClickRef.current) {\n ignoreClickRef.current = false;\n event.preventBaseUIHandler();\n }\n }\n };\n }, [enabled, mouseDownAction, open]);\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { fastComponentRef } from '@base-ui/utils/fastHooks';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { safePolygon, useClick, useFloatingTree, useFocus, useHoverReferenceInteraction, useFloatingNodeId, useFloatingParentNodeId } from \"../../floating-ui-react/index.mjs\";\nimport { FloatingTreeStore } from \"../../floating-ui-react/components/FloatingTreeStore.mjs\";\nimport { contains } from \"../../floating-ui-react/utils.mjs\";\nimport { useMenuRootContext } from \"../root/MenuRootContext.mjs\";\nimport { pressableTriggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useButton } from \"../../internals/use-button/useButton.mjs\";\nimport { getPseudoElementBounds } from \"../../utils/getPseudoElementBounds.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\nimport { useCompositeRootContext } from \"../../internals/composite/root/CompositeRootContext.mjs\";\nimport { findRootOwnerId } from \"../utils/findRootOwnerId.mjs\";\nimport { useTriggerDataForwarding } from \"../../utils/popups/index.mjs\";\nimport { useTriggerFocusGuards } from \"../../utils/popups/useTriggerFocusGuards.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useMixedToggleClickHandler } from \"../../utils/useMixedToggleClickHandler.mjs\";\nimport { useContextMenuRootContext } from \"../../context-menu/root/ContextMenuRootContext.mjs\";\nimport { useMenubarContext } from \"../../menubar/MenubarContext.mjs\";\nimport { PATIENT_CLICK_THRESHOLD } from \"../../internals/constants.mjs\";\nimport { FocusGuard } from \"../../utils/FocusGuard.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst BOUNDARY_OFFSET = 2;\n\n/**\n * A button that opens the menu.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Menu](https://base-ui.com/react/components/menu)\n */\nexport const MenuTrigger = fastComponentRef(function MenuTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n nativeButton = true,\n id: idProp,\n openOnHover: openOnHoverProp,\n delay = 100,\n closeDelay = 0,\n handle,\n payload,\n ...elementProps\n } = componentProps;\n const rootContext = useMenuRootContext(true);\n const store = handle?.store ?? rootContext?.store;\n if (!store) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Menu.Trigger> must be either used within a <Menu.Root> component or provided with a handle.' : _formatErrorMessage(85));\n }\n const thisTriggerId = useBaseUiId(idProp);\n const isTriggerActive = store.useState('isTriggerActive', thisTriggerId);\n const floatingRootContext = store.useState('floatingRootContext');\n const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);\n const popupId = store.useState('triggerPopupId', thisTriggerId);\n const triggerElementRef = React.useRef(null);\n const parent = useMenuParent();\n const compositeRootContext = useCompositeRootContext(true);\n const floatingTreeRootFromContext = useFloatingTree();\n const floatingTreeRoot = React.useMemo(() => {\n return floatingTreeRootFromContext ?? new FloatingTreeStore();\n }, [floatingTreeRootFromContext]);\n const floatingNodeId = useFloatingNodeId(floatingTreeRoot);\n const floatingParentNodeId = useFloatingParentNodeId();\n const {\n registerTrigger,\n isMountedByThisTrigger\n } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {\n payload,\n closeDelay,\n parent,\n floatingTreeRoot,\n floatingNodeId,\n floatingParentNodeId,\n keyboardEventRelay: compositeRootContext?.relayKeyboardEvent\n });\n const isInMenubar = parent.type === 'menubar';\n const rootDisabled = store.useState('disabled');\n const disabled = disabledProp || rootDisabled || isInMenubar && parent.context.disabled;\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n React.useEffect(() => {\n if (!isOpenedByThisTrigger && parent.type === undefined) {\n store.context.allowMouseUpTriggerRef.current = false;\n }\n }, [store, isOpenedByThisTrigger, parent.type]);\n const triggerRef = React.useRef(null);\n const allowMouseUpTriggerTimeout = useTimeout();\n const handleDocumentMouseUp = useStableCallback(mouseEvent => {\n if (!triggerRef.current) {\n return;\n }\n allowMouseUpTriggerTimeout.clear();\n store.context.allowMouseUpTriggerRef.current = false;\n const mouseUpTarget = mouseEvent.target;\n if (contains(triggerRef.current, mouseUpTarget) || contains(store.select('positionerElement'), mouseUpTarget) || mouseUpTarget === triggerRef.current) {\n return;\n }\n if (mouseUpTarget != null && findRootOwnerId(mouseUpTarget) === store.select('rootId')) {\n return;\n }\n const bounds = getPseudoElementBounds(triggerRef.current);\n if (mouseEvent.clientX >= bounds.left - BOUNDARY_OFFSET && mouseEvent.clientX <= bounds.right + BOUNDARY_OFFSET && mouseEvent.clientY >= bounds.top - BOUNDARY_OFFSET && mouseEvent.clientY <= bounds.bottom + BOUNDARY_OFFSET) {\n return;\n }\n floatingTreeRoot.events.emit('close', {\n domEvent: mouseEvent,\n reason: REASONS.cancelOpen\n });\n });\n React.useEffect(() => {\n if (isOpenedByThisTrigger && store.select('lastOpenChangeReason') === REASONS.triggerHover) {\n const doc = ownerDocument(triggerRef.current);\n doc.addEventListener('mouseup', handleDocumentMouseUp, {\n once: true\n });\n }\n }, [isOpenedByThisTrigger, handleDocumentMouseUp, store]);\n const parentMenubarHasSubmenuOpen = isInMenubar && parent.context.hasSubmenuOpen;\n const openOnHover = openOnHoverProp ?? parentMenubarHasSubmenuOpen;\n const hoverProps = useHoverReferenceInteraction(floatingRootContext, {\n enabled: openOnHover && !disabled && parent.type !== 'context-menu' && (!isInMenubar || parentMenubarHasSubmenuOpen && !isMountedByThisTrigger),\n handleClose: safePolygon({\n blockPointerEvents: !isInMenubar\n }),\n mouseOnly: true,\n move: false,\n restMs: parent.type === undefined ? delay : undefined,\n delay: {\n close: closeDelay\n },\n triggerElementRef,\n externalTree: floatingTreeRoot,\n isActiveTrigger: isTriggerActive,\n isClosing: () => store.select('transitionStatus') === 'ending'\n });\n\n // Whether to ignore clicks to open the menu.\n // `lastOpenChangeReason` doesn't need to be reactive here, as we need to run this\n // only when `isOpenedByThisTrigger` changes.\n const stickIfOpen = useStickIfOpen(isOpenedByThisTrigger, store.select('lastOpenChangeReason'));\n const click = useClick(floatingRootContext, {\n enabled: !disabled && parent.type !== 'context-menu',\n event: isOpenedByThisTrigger && isInMenubar ? 'click' : 'mousedown',\n toggle: true,\n ignoreMouse: false,\n stickIfOpen: parent.type === undefined ? stickIfOpen : false\n });\n const focus = useFocus(floatingRootContext, {\n enabled: !disabled && parentMenubarHasSubmenuOpen\n });\n const mixedToggleHandlers = useMixedToggleClickHandler({\n open: isOpenedByThisTrigger,\n enabled: isInMenubar,\n mouseDownAction: 'open'\n });\n const localInteractionProps = React.useMemo(() => mergeProps(focus.reference, click.reference), [focus.reference, click.reference]);\n const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);\n const {\n preFocusGuardRef,\n handlePreFocusGuardFocus,\n handleFocusTargetFocus\n } = useTriggerFocusGuards(store, triggerElementRef);\n const state = {\n disabled,\n open: isOpenedByThisTrigger\n };\n const ref = [triggerRef, forwardedRef, buttonRef, registerTrigger, triggerElementRef];\n const props = [localInteractionProps, hoverProps ?? EMPTY_OBJECT, rootTriggerProps, {\n 'aria-haspopup': 'menu',\n 'aria-controls': popupId,\n id: thisTriggerId,\n onMouseDown: event => {\n if (store.select('open')) {\n return;\n }\n\n // mousedown -> mouseup on menu item should not trigger it within 200ms.\n allowMouseUpTriggerTimeout.start(200, () => {\n store.context.allowMouseUpTriggerRef.current = true;\n });\n const doc = ownerDocument(event.currentTarget);\n doc.addEventListener('mouseup', handleDocumentMouseUp, {\n once: true\n });\n }\n }, isInMenubar ? {\n role: 'menuitem'\n } : {}, mixedToggleHandlers, elementProps, getButtonProps];\n const element = useRenderElement('button', componentProps, {\n enabled: !isInMenubar,\n stateAttributesMapping: pressableTriggerOpenStateMapping,\n state,\n ref,\n props\n });\n if (isInMenubar) {\n return /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"button\",\n render: render,\n className: className,\n style: style,\n state: state,\n refs: ref,\n props: props,\n stateAttributesMapping: pressableTriggerOpenStateMapping\n });\n }\n\n // A fragment with key is required to ensure that the `element` is mounted to the same DOM node\n // regardless of whether the focus guards are rendered or not.\n\n if (isOpenedByThisTrigger) {\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(FocusGuard, {\n ref: preFocusGuardRef,\n onFocus: handlePreFocusGuardFocus\n }, `${thisTriggerId}-pre-focus-guard`), /*#__PURE__*/_jsx(React.Fragment, {\n children: element\n }, thisTriggerId), /*#__PURE__*/_jsx(FocusGuard, {\n ref: store.context.triggerFocusTargetRef,\n onFocus: handleFocusTargetFocus\n }, `${thisTriggerId}-post-focus-guard`)]\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: element\n }, thisTriggerId);\n});\nif (process.env.NODE_ENV !== \"production\") MenuTrigger.displayName = \"MenuTrigger\";\n/**\n * Determines whether to ignore clicks after a hover-open.\n */\nfunction useStickIfOpen(open, openReason) {\n const stickIfOpenTimeout = useTimeout();\n const [stickIfOpen, setStickIfOpen] = React.useState(false);\n useIsoLayoutEffect(() => {\n if (open && openReason === 'trigger-hover') {\n // Only allow \"patient\" clicks to close the menu if it's open.\n // If they clicked within 500ms of the menu opening, keep it open.\n setStickIfOpen(true);\n stickIfOpenTimeout.start(PATIENT_CLICK_THRESHOLD, () => {\n setStickIfOpen(false);\n });\n } else if (!open) {\n stickIfOpenTimeout.clear();\n setStickIfOpen(false);\n }\n }, [open, openReason, stickIfOpenTimeout]);\n return stickIfOpen;\n}\nfunction useMenuParent() {\n const contextMenuContext = useContextMenuRootContext(true);\n const parentContext = useMenuRootContext(true);\n const menubarContext = useMenubarContext(true);\n const parent = React.useMemo(() => {\n if (menubarContext) {\n return {\n type: 'menubar',\n context: menubarContext\n };\n }\n\n // Ensure this is not a Menu nested inside ContextMenu.Trigger.\n // ContextMenu parentContext is always undefined as ContextMenu.Root is instantiated with\n // <MenuRootContext.Provider value={undefined}>\n if (contextMenuContext && !parentContext) {\n return {\n type: 'context-menu',\n context: contextMenuContext\n };\n }\n return {\n type: undefined\n };\n }, [contextMenuContext, parentContext, menubarContext]);\n return parent;\n}","'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { Check, ChevronRight } from 'lucide-react';\nimport type * as React from 'react';\nimport { Kbd } from '@/components/molecules/data/Kbd';\nimport { cn } from '@/lib/utils';\n\n// ============================================================================\n// Base Primitives\n// ============================================================================\n\nfunction DropdownMenuRoot({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu-root\" {...props} />;\n}\nDropdownMenuRoot.displayName = 'DropdownMenu.Root';\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\nDropdownMenuPortal.displayName = 'DropdownMenu.Portal';\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\nDropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\nDropdownMenuGroup.displayName = 'DropdownMenu.Group';\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\nDropdownMenuSub.displayName = 'DropdownMenu.Sub';\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dd-sub flex cursor-default items-center outline-hidden select-none data-[inset]:ps-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 transition-[color,background-color,transform] duration-150 active:scale-[0.99]\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ms-auto rtl:rotate-180 transition-transform duration-150 group-data-open/dd-sub:translate-x-0.5\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\nDropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\nDropdownMenuRadioGroup.displayName = 'DropdownMenu.RadioGroup';\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-2 pe-8 ps-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 transition-colors duration-150\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator className=\"animate-in zoom-in-75 duration-150 motion-reduce:animate-none\">\n <Check />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\nDropdownMenuRadioItem.displayName = 'DropdownMenu.RadioItem';\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-2 pe-8 ps-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 transition-colors duration-150\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator className=\"animate-in zoom-in-75 duration-150 motion-reduce:animate-none\">\n <Check />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\nDropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ms-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenu.Shortcut';\n\n// ============================================================================\n// Enhanced Components\n// ============================================================================\n\n// Width variant classes for popup\nconst popupWidthClasses = {\n auto: '',\n sm: 'w-48',\n md: 'w-56',\n lg: 'w-64',\n};\n\n/**\n * Enhanced DropdownMenuPopup with HumainOS styling\n */\nexport interface DropdownMenuPopupProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Menu content */\n children?: React.ReactNode;\n /** Width of the dropdown menu */\n width?: 'auto' | 'sm' | 'md' | 'lg';\n /** Side offset from the trigger */\n sideOffset?: number;\n /** Side to show the menu on */\n side?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the menu */\n align?: 'start' | 'center' | 'end';\n /** Align offset */\n alignOffset?: number;\n}\n\nfunction DropdownMenuPopup({\n align = 'start',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n width = 'auto',\n className,\n ...props\n}: DropdownMenuPopupProps) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-popup\"\n className={cn(\n 'data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n 'border border-border bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-sm z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden',\n 'duration-200 motion-reduce:animate-none',\n popupWidthClasses[width],\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\nDropdownMenuPopup.displayName = 'DropdownMenu.Popup';\n\nfunction DropdownMenuSubPopup({\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n className,\n ...props\n}: DropdownMenuPopupProps) {\n return (\n <DropdownMenuPopup\n data-slot=\"dropdown-menu-sub-popup\"\n className={cn('min-w-[96px] w-auto', className)}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\nDropdownMenuSubPopup.displayName = 'DropdownMenu.SubPopup';\n\n/**\n * Header section for dropdown menu with avatar and user info\n */\nexport interface DropdownMenuHeaderProps extends React.ComponentProps<'div'> {\n /** Avatar element to display */\n avatar?: React.ReactNode;\n /** Primary text (e.g., user name) */\n title?: string;\n /** Secondary text (e.g., email) */\n subtitle?: string;\n}\n\nfunction DropdownMenuHeader({\n className,\n avatar,\n title,\n subtitle,\n children,\n ...props\n}: DropdownMenuHeaderProps) {\n if (children) {\n return (\n <div\n data-slot=\"dropdown-menu-header\"\n className={cn('border-b border-border px-4 py-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n return (\n <div\n data-slot=\"dropdown-menu-header\"\n className={cn('border-b border-border px-4 py-3', className)}\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n {avatar}\n <div className=\"flex flex-col min-w-0\">\n {title && (\n <span className=\"text-sm font-semibold text-foreground truncate\">\n {title}\n </span>\n )}\n {subtitle && (\n <span className=\"text-sm text-muted-foreground truncate\">\n {subtitle}\n </span>\n )}\n </div>\n </div>\n </div>\n );\n}\nDropdownMenuHeader.displayName = 'DropdownMenu.Header';\n\nexport interface DropdownMenuLabelProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the label is inset */\n inset?: boolean;\n}\n\n/**\n * Enhanced DropdownMenuLabel\n */\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: DropdownMenuLabelProps) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-4 py-2 text-xs font-medium text-text-quaternary uppercase tracking-wider',\n 'data-[inset]:ps-8',\n className,\n )}\n {...props}\n />\n );\n}\nDropdownMenuLabel.displayName = 'DropdownMenu.Label';\n\n/**\n * Enhanced DropdownMenuItem with icon and shortcut support\n */\nexport interface DropdownMenuItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n /** Item content */\n children?: React.ReactNode;\n /** Icon displayed before the label */\n icon?: React.ReactNode;\n /** Keyboard shortcut displayed on the right */\n shortcut?: string;\n /** Makes the item destructive (red text) */\n destructive?: boolean;\n /** Whether the item is disabled */\n disabled?: boolean;\n /**\n * Render as a different element (Base UI pattern).\n * Use this to render as a custom component like Link or anchor.\n * @example render={<Link to=\"/profile\" />}\n */\n render?: React.ReactElement;\n /** Whether the item is inset */\n inset?: boolean;\n /** Variant for styling */\n variant?: 'default' | 'destructive';\n}\n\nfunction DropdownMenuItem({\n className,\n icon,\n shortcut,\n destructive = false,\n render,\n inset,\n variant = 'default',\n children,\n ...props\n}: DropdownMenuItemProps) {\n const isDestructive = destructive || variant === 'destructive';\n\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={isDestructive ? 'destructive' : variant}\n className={cn(\n 'group/dropdown-menu-item relative flex items-center gap-2 mx-1.5 px-2.5 py-2 rounded-md cursor-pointer outline-none',\n 'text-sm font-semibold text-secondary-foreground',\n 'focus:bg-muted focus:text-secondary-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'data-[inset]:ps-8',\n \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n 'transition-[color,background-color,transform] duration-150 active:scale-[0.99]',\n isDestructive &&\n 'text-destructive focus:text-destructive focus:bg-destructive/10',\n className,\n )}\n render={render}\n {...props}\n >\n {icon && (\n <span\n className={cn(\n 'size-4 shrink-0 transition-colors duration-150',\n isDestructive\n ? 'text-destructive'\n : 'text-text-quaternary group-focus/dropdown-menu-item:text-secondary-foreground',\n )}\n >\n {icon}\n </span>\n )}\n <span className=\"flex-1\">{children}</span>\n {shortcut && (\n <DropdownMenuShortcutBadge className=\"transition-colors duration-150 group-focus/dropdown-menu-item:bg-primary/10 group-focus/dropdown-menu-item:text-primary\">\n {shortcut}\n </DropdownMenuShortcutBadge>\n )}\n </MenuPrimitive.Item>\n );\n}\nDropdownMenuItem.displayName = 'DropdownMenu.Item';\n\nexport interface DropdownMenuSeparatorProps\n extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Enhanced DropdownMenuSeparator\n */\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: DropdownMenuSeparatorProps) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('my-1 h-px bg-surface-2', className)}\n {...props}\n />\n );\n}\nDropdownMenuSeparator.displayName = 'DropdownMenu.Separator';\n\nexport interface DropdownMenuItemsProps\n extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Container for menu items with proper padding\n */\nfunction DropdownMenuItems({\n className,\n children,\n ...props\n}: DropdownMenuItemsProps) {\n return (\n <div\n data-slot=\"dropdown-menu-items\"\n className={cn('py-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\nDropdownMenuItems.displayName = 'DropdownMenu.Items';\n\n/**\n * Styled shortcut badge that matches Figma design (uses Kbd wrapper)\n */\nfunction DropdownMenuShortcutBadge({\n className,\n children,\n ...props\n}: React.ComponentProps<'kbd'>) {\n return (\n <Kbd variant=\"outline\" size=\"xs\" className={className} {...props}>\n {children}\n </Kbd>\n );\n}\nDropdownMenuShortcutBadge.displayName = 'DropdownMenu.ShortcutBadge';\n\n// ============================================================================\n// SimpleDropdownMenu (with trigger prop pattern)\n// ============================================================================\n\nexport interface SimpleDropdownMenuProps {\n /** The element that triggers the dropdown (required) */\n trigger: React.ReactElement;\n /** Dropdown content (typically DropdownMenu.Popup component) */\n children?: React.ReactNode;\n /** Controlled open state. When provided, component is controlled. */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * Simplified DropdownMenu component with explicit trigger prop.\n * Prevents nested button hydration errors by using base-ui's render prop.\n *\n * @example\n * <SimpleDropdownMenu trigger={<Button>Menu</Button>}>\n * <DropdownMenu.Popup>\n * <DropdownMenu.Items>\n * <DropdownMenu.Item>Option 1</DropdownMenu.Item>\n * </DropdownMenu.Items>\n * </DropdownMenu.Popup>\n * </SimpleDropdownMenu>\n */\nfunction SimpleDropdownMenu({\n trigger,\n open,\n onOpenChange,\n children,\n}: SimpleDropdownMenuProps) {\n return (\n <DropdownMenuRoot open={open} onOpenChange={onOpenChange}>\n <DropdownMenuTrigger render={trigger} />\n {children}\n </DropdownMenuRoot>\n );\n}\nSimpleDropdownMenu.displayName = 'DropdownMenu.Simple';\n\n// ============================================================================\n// Compound Export (Dot Notation Pattern)\n// ============================================================================\n\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n Root: DropdownMenuRoot,\n Portal: DropdownMenuPortal,\n Trigger: DropdownMenuTrigger,\n Popup: DropdownMenuPopup,\n Group: DropdownMenuGroup,\n Label: DropdownMenuLabel,\n Item: DropdownMenuItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioGroup: DropdownMenuRadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n ShortcutBadge: DropdownMenuShortcutBadge,\n Sub: DropdownMenuSub,\n SubTrigger: DropdownMenuSubTrigger,\n SubPopup: DropdownMenuSubPopup,\n Header: DropdownMenuHeader,\n Items: DropdownMenuItems,\n Simple: SimpleDropdownMenu,\n});\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type DropdownMenuPopupWrapperProps = DropdownMenuPopupProps;\nexport type DropdownMenuItemWrapperProps = DropdownMenuItemProps;\nexport type DropdownMenuHeaderWrapperProps = DropdownMenuHeaderProps;\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","names":["_formatErrorMessage","REASONS.cancelOpen"],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/menu/utils/findRootOwnerId.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/utils/useMixedToggleClickHandler.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/@base-ui+react@1.6.0+1c528c44af60ea5b/node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs","../../src/components/organisms/menus/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import { getParentNode, isHTMLElement, isLastTraversableNode } from '@floating-ui/utils/dom';\nexport function findRootOwnerId(node) {\n if (isHTMLElement(node) && node.hasAttribute('data-rootownerid')) {\n return node.getAttribute('data-rootownerid') ?? undefined;\n }\n if (isLastTraversableNode(node)) {\n return undefined;\n }\n return findRootOwnerId(getParentNode(node));\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\n/**\n * Returns `click` and `mousedown` handlers that fix the behavior of triggers of popups that are toggled by different events.\n * For example, a button that opens a popup on mousedown and closes it on click.\n * This hook prevents the popup from closing immediately after the mouse button is released.\n */\nexport function useMixedToggleClickHandler(params) {\n const {\n enabled = true,\n mouseDownAction,\n open\n } = params;\n const ignoreClickRef = React.useRef(false);\n return React.useMemo(() => {\n if (!enabled) {\n return EMPTY_OBJECT;\n }\n return {\n onMouseDown: event => {\n if (mouseDownAction === 'open' && !open || mouseDownAction === 'close' && open) {\n ignoreClickRef.current = true;\n ownerDocument(event.currentTarget).addEventListener('click', () => {\n ignoreClickRef.current = false;\n }, {\n once: true\n });\n }\n },\n onClick: event => {\n if (ignoreClickRef.current) {\n ignoreClickRef.current = false;\n event.preventBaseUIHandler();\n }\n }\n };\n }, [enabled, mouseDownAction, open]);\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { fastComponentRef } from '@base-ui/utils/fastHooks';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { safePolygon, useClick, useFloatingTree, useFocus, useHoverReferenceInteraction, useFloatingNodeId, useFloatingParentNodeId } from \"../../floating-ui-react/index.mjs\";\nimport { FloatingTreeStore } from \"../../floating-ui-react/components/FloatingTreeStore.mjs\";\nimport { contains } from \"../../floating-ui-react/utils.mjs\";\nimport { useMenuRootContext } from \"../root/MenuRootContext.mjs\";\nimport { pressableTriggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useButton } from \"../../internals/use-button/useButton.mjs\";\nimport { getPseudoElementBounds } from \"../../utils/getPseudoElementBounds.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\nimport { useCompositeRootContext } from \"../../internals/composite/root/CompositeRootContext.mjs\";\nimport { findRootOwnerId } from \"../utils/findRootOwnerId.mjs\";\nimport { useTriggerDataForwarding } from \"../../utils/popups/index.mjs\";\nimport { useTriggerFocusGuards } from \"../../utils/popups/useTriggerFocusGuards.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useMixedToggleClickHandler } from \"../../utils/useMixedToggleClickHandler.mjs\";\nimport { useContextMenuRootContext } from \"../../context-menu/root/ContextMenuRootContext.mjs\";\nimport { useMenubarContext } from \"../../menubar/MenubarContext.mjs\";\nimport { PATIENT_CLICK_THRESHOLD } from \"../../internals/constants.mjs\";\nimport { FocusGuard } from \"../../utils/FocusGuard.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst BOUNDARY_OFFSET = 2;\n\n/**\n * A button that opens the menu.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Menu](https://base-ui.com/react/components/menu)\n */\nexport const MenuTrigger = fastComponentRef(function MenuTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n nativeButton = true,\n id: idProp,\n openOnHover: openOnHoverProp,\n delay = 100,\n closeDelay = 0,\n handle,\n payload,\n ...elementProps\n } = componentProps;\n const rootContext = useMenuRootContext(true);\n const store = handle?.store ?? rootContext?.store;\n if (!store) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Menu.Trigger> must be either used within a <Menu.Root> component or provided with a handle.' : _formatErrorMessage(85));\n }\n const thisTriggerId = useBaseUiId(idProp);\n const isTriggerActive = store.useState('isTriggerActive', thisTriggerId);\n const floatingRootContext = store.useState('floatingRootContext');\n const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);\n const popupId = store.useState('triggerPopupId', thisTriggerId);\n const triggerElementRef = React.useRef(null);\n const parent = useMenuParent();\n const compositeRootContext = useCompositeRootContext(true);\n const floatingTreeRootFromContext = useFloatingTree();\n const floatingTreeRoot = React.useMemo(() => {\n return floatingTreeRootFromContext ?? new FloatingTreeStore();\n }, [floatingTreeRootFromContext]);\n const floatingNodeId = useFloatingNodeId(floatingTreeRoot);\n const floatingParentNodeId = useFloatingParentNodeId();\n const {\n registerTrigger,\n isMountedByThisTrigger\n } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {\n payload,\n closeDelay,\n parent,\n floatingTreeRoot,\n floatingNodeId,\n floatingParentNodeId,\n keyboardEventRelay: compositeRootContext?.relayKeyboardEvent\n });\n const isInMenubar = parent.type === 'menubar';\n const rootDisabled = store.useState('disabled');\n const disabled = disabledProp || rootDisabled || isInMenubar && parent.context.disabled;\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n React.useEffect(() => {\n if (!isOpenedByThisTrigger && parent.type === undefined) {\n store.context.allowMouseUpTriggerRef.current = false;\n }\n }, [store, isOpenedByThisTrigger, parent.type]);\n const triggerRef = React.useRef(null);\n const allowMouseUpTriggerTimeout = useTimeout();\n const handleDocumentMouseUp = useStableCallback(mouseEvent => {\n if (!triggerRef.current) {\n return;\n }\n allowMouseUpTriggerTimeout.clear();\n store.context.allowMouseUpTriggerRef.current = false;\n const mouseUpTarget = mouseEvent.target;\n if (contains(triggerRef.current, mouseUpTarget) || contains(store.select('positionerElement'), mouseUpTarget) || mouseUpTarget === triggerRef.current) {\n return;\n }\n if (mouseUpTarget != null && findRootOwnerId(mouseUpTarget) === store.select('rootId')) {\n return;\n }\n const bounds = getPseudoElementBounds(triggerRef.current);\n if (mouseEvent.clientX >= bounds.left - BOUNDARY_OFFSET && mouseEvent.clientX <= bounds.right + BOUNDARY_OFFSET && mouseEvent.clientY >= bounds.top - BOUNDARY_OFFSET && mouseEvent.clientY <= bounds.bottom + BOUNDARY_OFFSET) {\n return;\n }\n floatingTreeRoot.events.emit('close', {\n domEvent: mouseEvent,\n reason: REASONS.cancelOpen\n });\n });\n React.useEffect(() => {\n if (isOpenedByThisTrigger && store.select('lastOpenChangeReason') === REASONS.triggerHover) {\n const doc = ownerDocument(triggerRef.current);\n doc.addEventListener('mouseup', handleDocumentMouseUp, {\n once: true\n });\n }\n }, [isOpenedByThisTrigger, handleDocumentMouseUp, store]);\n const parentMenubarHasSubmenuOpen = isInMenubar && parent.context.hasSubmenuOpen;\n const openOnHover = openOnHoverProp ?? parentMenubarHasSubmenuOpen;\n const hoverProps = useHoverReferenceInteraction(floatingRootContext, {\n enabled: openOnHover && !disabled && parent.type !== 'context-menu' && (!isInMenubar || parentMenubarHasSubmenuOpen && !isMountedByThisTrigger),\n handleClose: safePolygon({\n blockPointerEvents: !isInMenubar\n }),\n mouseOnly: true,\n move: false,\n restMs: parent.type === undefined ? delay : undefined,\n delay: {\n close: closeDelay\n },\n triggerElementRef,\n externalTree: floatingTreeRoot,\n isActiveTrigger: isTriggerActive,\n isClosing: () => store.select('transitionStatus') === 'ending'\n });\n\n // Whether to ignore clicks to open the menu.\n // `lastOpenChangeReason` doesn't need to be reactive here, as we need to run this\n // only when `isOpenedByThisTrigger` changes.\n const stickIfOpen = useStickIfOpen(isOpenedByThisTrigger, store.select('lastOpenChangeReason'));\n const click = useClick(floatingRootContext, {\n enabled: !disabled && parent.type !== 'context-menu',\n event: isOpenedByThisTrigger && isInMenubar ? 'click' : 'mousedown',\n toggle: true,\n ignoreMouse: false,\n stickIfOpen: parent.type === undefined ? stickIfOpen : false\n });\n const focus = useFocus(floatingRootContext, {\n enabled: !disabled && parentMenubarHasSubmenuOpen\n });\n const mixedToggleHandlers = useMixedToggleClickHandler({\n open: isOpenedByThisTrigger,\n enabled: isInMenubar,\n mouseDownAction: 'open'\n });\n const localInteractionProps = React.useMemo(() => mergeProps(focus.reference, click.reference), [focus.reference, click.reference]);\n const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);\n const {\n preFocusGuardRef,\n handlePreFocusGuardFocus,\n handleFocusTargetFocus\n } = useTriggerFocusGuards(store, triggerElementRef);\n const state = {\n disabled,\n open: isOpenedByThisTrigger\n };\n const ref = [triggerRef, forwardedRef, buttonRef, registerTrigger, triggerElementRef];\n const props = [localInteractionProps, hoverProps ?? EMPTY_OBJECT, rootTriggerProps, {\n 'aria-haspopup': 'menu',\n 'aria-controls': popupId,\n id: thisTriggerId,\n onMouseDown: event => {\n if (store.select('open')) {\n return;\n }\n\n // mousedown -> mouseup on menu item should not trigger it within 200ms.\n allowMouseUpTriggerTimeout.start(200, () => {\n store.context.allowMouseUpTriggerRef.current = true;\n });\n const doc = ownerDocument(event.currentTarget);\n doc.addEventListener('mouseup', handleDocumentMouseUp, {\n once: true\n });\n }\n }, isInMenubar ? {\n role: 'menuitem'\n } : {}, mixedToggleHandlers, elementProps, getButtonProps];\n const element = useRenderElement('button', componentProps, {\n enabled: !isInMenubar,\n stateAttributesMapping: pressableTriggerOpenStateMapping,\n state,\n ref,\n props\n });\n if (isInMenubar) {\n return /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"button\",\n render: render,\n className: className,\n style: style,\n state: state,\n refs: ref,\n props: props,\n stateAttributesMapping: pressableTriggerOpenStateMapping\n });\n }\n\n // A fragment with key is required to ensure that the `element` is mounted to the same DOM node\n // regardless of whether the focus guards are rendered or not.\n\n if (isOpenedByThisTrigger) {\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(FocusGuard, {\n ref: preFocusGuardRef,\n onFocus: handlePreFocusGuardFocus\n }, `${thisTriggerId}-pre-focus-guard`), /*#__PURE__*/_jsx(React.Fragment, {\n children: element\n }, thisTriggerId), /*#__PURE__*/_jsx(FocusGuard, {\n ref: store.context.triggerFocusTargetRef,\n onFocus: handleFocusTargetFocus\n }, `${thisTriggerId}-post-focus-guard`)]\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: element\n }, thisTriggerId);\n});\nif (process.env.NODE_ENV !== \"production\") MenuTrigger.displayName = \"MenuTrigger\";\n/**\n * Determines whether to ignore clicks after a hover-open.\n */\nfunction useStickIfOpen(open, openReason) {\n const stickIfOpenTimeout = useTimeout();\n const [stickIfOpen, setStickIfOpen] = React.useState(false);\n useIsoLayoutEffect(() => {\n if (open && openReason === 'trigger-hover') {\n // Only allow \"patient\" clicks to close the menu if it's open.\n // If they clicked within 500ms of the menu opening, keep it open.\n setStickIfOpen(true);\n stickIfOpenTimeout.start(PATIENT_CLICK_THRESHOLD, () => {\n setStickIfOpen(false);\n });\n } else if (!open) {\n stickIfOpenTimeout.clear();\n setStickIfOpen(false);\n }\n }, [open, openReason, stickIfOpenTimeout]);\n return stickIfOpen;\n}\nfunction useMenuParent() {\n const contextMenuContext = useContextMenuRootContext(true);\n const parentContext = useMenuRootContext(true);\n const menubarContext = useMenubarContext(true);\n const parent = React.useMemo(() => {\n if (menubarContext) {\n return {\n type: 'menubar',\n context: menubarContext\n };\n }\n\n // Ensure this is not a Menu nested inside ContextMenu.Trigger.\n // ContextMenu parentContext is always undefined as ContextMenu.Root is instantiated with\n // <MenuRootContext.Provider value={undefined}>\n if (contextMenuContext && !parentContext) {\n return {\n type: 'context-menu',\n context: contextMenuContext\n };\n }\n return {\n type: undefined\n };\n }, [contextMenuContext, parentContext, menubarContext]);\n return parent;\n}","'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { Check, ChevronRight } from 'lucide-react';\nimport type * as React from 'react';\nimport { Kbd } from '@/components/molecules/data/Kbd';\nimport { cn } from '@/lib/utils';\n\n// ============================================================================\n// Base Primitives\n// ============================================================================\n\nfunction DropdownMenuRoot({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu-root\" {...props} />;\n}\nDropdownMenuRoot.displayName = 'DropdownMenu.Root';\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\nDropdownMenuPortal.displayName = 'DropdownMenu.Portal';\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\nDropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\nDropdownMenuGroup.displayName = 'DropdownMenu.Group';\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\nDropdownMenuSub.displayName = 'DropdownMenu.Sub';\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dd-sub flex cursor-default items-center outline-hidden select-none data-[inset]:ps-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 transition-[color,background-color,transform] duration-150 active:scale-[0.99]\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ms-auto rtl:rotate-180 transition-transform duration-150 group-data-open/dd-sub:translate-x-0.5\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\nDropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\nDropdownMenuRadioGroup.displayName = 'DropdownMenu.RadioGroup';\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-2 pe-8 ps-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 transition-colors duration-150\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator className=\"animate-in zoom-in-75 duration-150 motion-reduce:animate-none\">\n <Check />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\nDropdownMenuRadioItem.displayName = 'DropdownMenu.RadioItem';\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-2 pe-8 ps-2 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 transition-colors duration-150\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator className=\"animate-in zoom-in-75 duration-150 motion-reduce:animate-none\">\n <Check />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\nDropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ms-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenu.Shortcut';\n\n// ============================================================================\n// Enhanced Components\n// ============================================================================\n\n// Width variant classes for popup\nconst popupWidthClasses = {\n auto: '',\n sm: 'w-48',\n md: 'w-56',\n lg: 'w-64',\n};\n\n/**\n * Enhanced DropdownMenuPopup with HumainOS styling\n */\nexport interface DropdownMenuPopupProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Menu content */\n children?: React.ReactNode;\n /** Width of the dropdown menu */\n width?: 'auto' | 'sm' | 'md' | 'lg';\n /** Side offset from the trigger */\n sideOffset?: number;\n /** Side to show the menu on */\n side?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the menu */\n align?: 'start' | 'center' | 'end';\n /** Align offset */\n alignOffset?: number;\n}\n\nfunction DropdownMenuPopup({\n align = 'start',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n width = 'auto',\n className,\n ...props\n}: DropdownMenuPopupProps) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-popup\"\n className={cn(\n 'data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n 'border border-border bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-sm z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden',\n 'duration-200 motion-reduce:animate-none',\n popupWidthClasses[width],\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\nDropdownMenuPopup.displayName = 'DropdownMenu.Popup';\n\nfunction DropdownMenuSubPopup({\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n className,\n ...props\n}: DropdownMenuPopupProps) {\n return (\n <DropdownMenuPopup\n data-slot=\"dropdown-menu-sub-popup\"\n className={cn('min-w-[96px] w-auto', className)}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\nDropdownMenuSubPopup.displayName = 'DropdownMenu.SubPopup';\n\n/**\n * Header section for dropdown menu with avatar and user info\n */\nexport interface DropdownMenuHeaderProps extends React.ComponentProps<'div'> {\n /** Avatar element to display */\n avatar?: React.ReactNode;\n /** Primary text (e.g., user name) */\n title?: string;\n /** Secondary text (e.g., email) */\n subtitle?: string;\n}\n\nfunction DropdownMenuHeader({\n className,\n avatar,\n title,\n subtitle,\n children,\n ...props\n}: DropdownMenuHeaderProps) {\n if (children) {\n return (\n <div\n data-slot=\"dropdown-menu-header\"\n className={cn('border-b border-border px-4 py-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n return (\n <div\n data-slot=\"dropdown-menu-header\"\n className={cn('border-b border-border px-4 py-3', className)}\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n {avatar}\n <div className=\"flex flex-col min-w-0\">\n {title && (\n <span className=\"text-sm font-semibold text-foreground truncate\">\n {title}\n </span>\n )}\n {subtitle && (\n <span className=\"text-sm text-muted-foreground truncate\">\n {subtitle}\n </span>\n )}\n </div>\n </div>\n </div>\n );\n}\nDropdownMenuHeader.displayName = 'DropdownMenu.Header';\n\nexport interface DropdownMenuLabelProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the label is inset */\n inset?: boolean;\n}\n\n/**\n * Enhanced DropdownMenuLabel\n */\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: DropdownMenuLabelProps) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-4 py-2 text-xs font-medium text-secondary-foreground uppercase tracking-wider',\n 'data-[inset]:ps-8',\n className,\n )}\n {...props}\n />\n );\n}\nDropdownMenuLabel.displayName = 'DropdownMenu.Label';\n\n/**\n * Enhanced DropdownMenuItem with icon and shortcut support\n */\nexport interface DropdownMenuItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n /** Item content */\n children?: React.ReactNode;\n /** Icon displayed before the label */\n icon?: React.ReactNode;\n /** Keyboard shortcut displayed on the right */\n shortcut?: string;\n /** Makes the item destructive (red text) */\n destructive?: boolean;\n /** Whether the item is disabled */\n disabled?: boolean;\n /**\n * Render as a different element (Base UI pattern).\n * Use this to render as a custom component like Link or anchor.\n * @example render={<Link to=\"/profile\" />}\n */\n render?: React.ReactElement;\n /** Whether the item is inset */\n inset?: boolean;\n /** Variant for styling */\n variant?: 'default' | 'destructive';\n}\n\nfunction DropdownMenuItem({\n className,\n icon,\n shortcut,\n destructive = false,\n render,\n inset,\n variant = 'default',\n children,\n ...props\n}: DropdownMenuItemProps) {\n const isDestructive = destructive || variant === 'destructive';\n\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={isDestructive ? 'destructive' : variant}\n className={cn(\n 'group/dropdown-menu-item relative flex items-center gap-2 mx-1.5 px-2.5 py-2 rounded-md cursor-pointer outline-none',\n 'text-sm font-semibold text-secondary-foreground',\n 'focus:bg-muted focus:text-secondary-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n 'data-[inset]:ps-8',\n \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n 'transition-[color,background-color,transform] duration-150 active:scale-[0.99]',\n isDestructive &&\n 'text-destructive focus:text-destructive focus:bg-destructive/10',\n className,\n )}\n render={render}\n {...props}\n >\n {icon && (\n <span\n className={cn(\n 'size-4 shrink-0 transition-colors duration-150',\n isDestructive ? 'text-destructive' : 'text-current',\n )}\n >\n {icon}\n </span>\n )}\n <span className=\"flex-1\">{children}</span>\n {shortcut && (\n <DropdownMenuShortcutBadge className=\"transition-colors duration-150 group-focus/dropdown-menu-item:bg-primary/10 group-focus/dropdown-menu-item:text-primary\">\n {shortcut}\n </DropdownMenuShortcutBadge>\n )}\n </MenuPrimitive.Item>\n );\n}\nDropdownMenuItem.displayName = 'DropdownMenu.Item';\n\nexport interface DropdownMenuSeparatorProps\n extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Enhanced DropdownMenuSeparator\n */\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: DropdownMenuSeparatorProps) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('my-1 h-px bg-surface-2', className)}\n {...props}\n />\n );\n}\nDropdownMenuSeparator.displayName = 'DropdownMenu.Separator';\n\nexport interface DropdownMenuItemsProps\n extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Container for menu items with proper padding\n */\nfunction DropdownMenuItems({\n className,\n children,\n ...props\n}: DropdownMenuItemsProps) {\n return (\n <div\n data-slot=\"dropdown-menu-items\"\n className={cn('py-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\nDropdownMenuItems.displayName = 'DropdownMenu.Items';\n\n/**\n * Styled shortcut badge that matches Figma design (uses Kbd wrapper)\n */\nfunction DropdownMenuShortcutBadge({\n className,\n children,\n ...props\n}: React.ComponentProps<'kbd'>) {\n return (\n <Kbd variant=\"outline\" size=\"xs\" className={className} {...props}>\n {children}\n </Kbd>\n );\n}\nDropdownMenuShortcutBadge.displayName = 'DropdownMenu.ShortcutBadge';\n\n// ============================================================================\n// SimpleDropdownMenu (with trigger prop pattern)\n// ============================================================================\n\nexport interface SimpleDropdownMenuProps {\n /** The element that triggers the dropdown (required) */\n trigger: React.ReactElement;\n /** Dropdown content (typically DropdownMenu.Popup component) */\n children?: React.ReactNode;\n /** Controlled open state. When provided, component is controlled. */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * Simplified DropdownMenu component with explicit trigger prop.\n * Prevents nested button hydration errors by using base-ui's render prop.\n *\n * @example\n * <SimpleDropdownMenu trigger={<Button>Menu</Button>}>\n * <DropdownMenu.Popup>\n * <DropdownMenu.Items>\n * <DropdownMenu.Item>Option 1</DropdownMenu.Item>\n * </DropdownMenu.Items>\n * </DropdownMenu.Popup>\n * </SimpleDropdownMenu>\n */\nfunction SimpleDropdownMenu({\n trigger,\n open,\n onOpenChange,\n children,\n}: SimpleDropdownMenuProps) {\n return (\n <DropdownMenuRoot open={open} onOpenChange={onOpenChange}>\n <DropdownMenuTrigger render={trigger} />\n {children}\n </DropdownMenuRoot>\n );\n}\nSimpleDropdownMenu.displayName = 'DropdownMenu.Simple';\n\n// ============================================================================\n// Compound Export (Dot Notation Pattern)\n// ============================================================================\n\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n Root: DropdownMenuRoot,\n Portal: DropdownMenuPortal,\n Trigger: DropdownMenuTrigger,\n Popup: DropdownMenuPopup,\n Group: DropdownMenuGroup,\n Label: DropdownMenuLabel,\n Item: DropdownMenuItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioGroup: DropdownMenuRadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Separator: DropdownMenuSeparator,\n Shortcut: DropdownMenuShortcut,\n ShortcutBadge: DropdownMenuShortcutBadge,\n Sub: DropdownMenuSub,\n SubTrigger: DropdownMenuSubTrigger,\n SubPopup: DropdownMenuSubPopup,\n Header: DropdownMenuHeader,\n Items: DropdownMenuItems,\n Simple: SimpleDropdownMenu,\n});\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type DropdownMenuPopupWrapperProps = DropdownMenuPopupProps;\nexport type DropdownMenuItemWrapperProps = DropdownMenuItemProps;\nexport type DropdownMenuHeaderWrapperProps = DropdownMenuHeaderProps;\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|