@acronis-platform/ui-react 0.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +72 -0
- package/dist/components/ui/breadcrumb/breadcrumb.js +116 -0
- package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/ui/button/button.js +50 -0
- package/dist/components/ui/button/button.js.map +1 -0
- package/dist/components/ui/button-dropdown/button-dropdown.js +52 -0
- package/dist/components/ui/button-dropdown/button-dropdown.js.map +1 -0
- package/dist/components/ui/button-icon/button-icon.js +35 -0
- package/dist/components/ui/button-icon/button-icon.js.map +1 -0
- package/dist/components/ui/checkbox/checkbox.js +68 -0
- package/dist/components/ui/checkbox/checkbox.js.map +1 -0
- package/dist/components/ui/input/input.js +22 -0
- package/dist/components/ui/input/input.js.map +1 -0
- package/dist/components/ui/input-text-area/input-text-area.js +21 -0
- package/dist/components/ui/input-text-area/input-text-area.js.map +1 -0
- package/dist/components/ui/radio/radio.js +44 -0
- package/dist/components/ui/radio/radio.js.map +1 -0
- package/dist/components/ui/search/search.js +93 -0
- package/dist/components/ui/search/search.js.map +1 -0
- package/dist/components/ui/select/select.js +105 -0
- package/dist/components/ui/select/select.js.map +1 -0
- package/dist/components/ui/sidebar-primary/sidebar-primary.js +242 -0
- package/dist/components/ui/sidebar-primary/sidebar-primary.js.map +1 -0
- package/dist/components/ui/sidebar-secondary/sidebar-secondary.js +372 -0
- package/dist/components/ui/sidebar-secondary/sidebar-secondary.js.map +1 -0
- package/dist/components/ui/switch/switch.js +41 -0
- package/dist/components/ui/switch/switch.js.map +1 -0
- package/dist/components/ui/tag/tag.js +47 -0
- package/dist/components/ui/tag/tag.js.map +1 -0
- package/dist/components/ui/tooltip/tooltip.js +49 -0
- package/dist/components/ui/tooltip/tooltip.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js +36 -0
- package/dist/node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js +17 -0
- package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/.pnpm/tailwind-merge@3.6.0/node_modules/tailwind-merge/dist/bundle-mjs.js +2996 -0
- package/dist/node_modules/.pnpm/tailwind-merge@3.6.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/react.d.ts +2 -0
- package/dist/react.js +79 -0
- package/dist/react.js.map +1 -0
- package/dist/src/components/ui/breadcrumb/breadcrumb.d.ts +30 -0
- package/dist/src/components/ui/breadcrumb/index.d.ts +1 -0
- package/dist/src/components/ui/button/button.d.ts +16 -0
- package/dist/src/components/ui/button/index.d.ts +1 -0
- package/dist/src/components/ui/button-dropdown/button-dropdown.d.ts +29 -0
- package/dist/src/components/ui/button-dropdown/index.d.ts +1 -0
- package/dist/src/components/ui/button-icon/button-icon.d.ts +20 -0
- package/dist/src/components/ui/button-icon/index.d.ts +1 -0
- package/dist/src/components/ui/checkbox/checkbox.d.ts +10 -0
- package/dist/src/components/ui/checkbox/index.d.ts +1 -0
- package/dist/src/components/ui/input/index.d.ts +1 -0
- package/dist/src/components/ui/input/input.d.ts +4 -0
- package/dist/src/components/ui/input-text-area/index.d.ts +1 -0
- package/dist/src/components/ui/input-text-area/input-text-area.d.ts +4 -0
- package/dist/src/components/ui/radio/index.d.ts +1 -0
- package/dist/src/components/ui/radio/radio.d.ts +8 -0
- package/dist/src/components/ui/search/index.d.ts +1 -0
- package/dist/src/components/ui/search/search.d.ts +7 -0
- package/dist/src/components/ui/select/index.d.ts +1 -0
- package/dist/src/components/ui/select/select.d.ts +14 -0
- package/dist/src/components/ui/sidebar-primary/index.d.ts +1 -0
- package/dist/src/components/ui/sidebar-primary/sidebar-primary.d.ts +54 -0
- package/dist/src/components/ui/sidebar-secondary/index.d.ts +1 -0
- package/dist/src/components/ui/sidebar-secondary/sidebar-secondary.d.ts +85 -0
- package/dist/src/components/ui/switch/index.d.ts +1 -0
- package/dist/src/components/ui/switch/switch.d.ts +8 -0
- package/dist/src/components/ui/tag/index.d.ts +1 -0
- package/dist/src/components/ui/tag/tag.d.ts +12 -0
- package/dist/src/components/ui/tooltip/index.d.ts +1 -0
- package/dist/src/components/ui/tooltip/tooltip.d.ts +13 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/react.d.ts +1 -0
- package/dist/styles.d.ts +1 -0
- package/dist/ui-react.css +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { jsx as n, jsxs as m, Fragment as w } from "react/jsx-runtime";
|
|
2
|
+
import * as d from "react";
|
|
3
|
+
import { mergeProps as x } from "@base-ui/react/merge-props";
|
|
4
|
+
import { useRender as f } from "@base-ui/react/use-render";
|
|
5
|
+
import { Collapsible as v } from "@base-ui/react/collapsible";
|
|
6
|
+
import { ChevronRightIcon as R, ChevronDownIcon as M, SquareArrowUpRightIcon as C } from "@acronis-platform/icons-react/stroke-mono";
|
|
7
|
+
import { cva as z } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
|
|
8
|
+
import { cn as o } from "../../../lib/utils.js";
|
|
9
|
+
const S = d.createContext(null);
|
|
10
|
+
function p() {
|
|
11
|
+
return d.useContext(S) ?? {
|
|
12
|
+
expanded: !0,
|
|
13
|
+
toggleExpanded: () => {
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function I(r, e, a) {
|
|
18
|
+
const [i, s] = d.useState(e), t = r !== void 0, c = t ? r : i, l = d.useCallback(
|
|
19
|
+
(u) => {
|
|
20
|
+
t || s(u), a == null || a(u);
|
|
21
|
+
},
|
|
22
|
+
[t, a]
|
|
23
|
+
);
|
|
24
|
+
return [c, l];
|
|
25
|
+
}
|
|
26
|
+
const k = d.forwardRef(
|
|
27
|
+
({
|
|
28
|
+
className: r,
|
|
29
|
+
expanded: e,
|
|
30
|
+
defaultExpanded: a = !0,
|
|
31
|
+
onExpandedChange: i,
|
|
32
|
+
"aria-label": s = "Section navigation",
|
|
33
|
+
render: t,
|
|
34
|
+
children: c,
|
|
35
|
+
...l
|
|
36
|
+
}, u) => {
|
|
37
|
+
const [b, y] = I(
|
|
38
|
+
e,
|
|
39
|
+
a,
|
|
40
|
+
i
|
|
41
|
+
), h = d.useMemo(
|
|
42
|
+
() => ({ expanded: b, toggleExpanded: () => y(!b) }),
|
|
43
|
+
[b, y]
|
|
44
|
+
), N = f({
|
|
45
|
+
render: t,
|
|
46
|
+
ref: u,
|
|
47
|
+
defaultTagName: "nav",
|
|
48
|
+
props: x(
|
|
49
|
+
{
|
|
50
|
+
"aria-label": s,
|
|
51
|
+
"data-state": b ? "expanded" : "collapsed",
|
|
52
|
+
className: o(
|
|
53
|
+
"group/sidebar flex h-full flex-col bg-[var(--ui-sidebar-secondary-global-container-color)] border-r border-[var(--ui-sidebar-secondary-global-container-border-color)] [border-right-width:var(--ui-sidebar-secondary-global-container-border-width)] w-[var(--ui-sidebar-secondary-collapsed-container-width)] data-[state=expanded]:w-[var(--ui-sidebar-secondary-expanded-container-width)] transition-[width]",
|
|
54
|
+
r
|
|
55
|
+
),
|
|
56
|
+
children: c
|
|
57
|
+
},
|
|
58
|
+
l
|
|
59
|
+
)
|
|
60
|
+
});
|
|
61
|
+
return /* @__PURE__ */ n(S.Provider, { value: h, children: N });
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
k.displayName = "SidebarSecondary";
|
|
65
|
+
const T = d.forwardRef(({ className: r, label: e, children: a, ...i }, s) => /* @__PURE__ */ n(
|
|
66
|
+
"div",
|
|
67
|
+
{
|
|
68
|
+
ref: s,
|
|
69
|
+
className: o(
|
|
70
|
+
"flex items-center shrink-0",
|
|
71
|
+
"px-[var(--ui-sidebar-secondary-collapsed-container-header-padding-x)] py-[var(--ui-sidebar-secondary-collapsed-container-header-padding-y)]",
|
|
72
|
+
"group-data-[state=expanded]/sidebar:px-[var(--ui-sidebar-secondary-expanded-container-header-padding-x)] group-data-[state=expanded]/sidebar:py-[var(--ui-sidebar-secondary-expanded-container-header-padding-y)]",
|
|
73
|
+
r
|
|
74
|
+
),
|
|
75
|
+
...i,
|
|
76
|
+
children: /* @__PURE__ */ n("h2", { className: "ui-sidebar-secondary-global-header-label-text-style truncate text-[var(--ui-sidebar-secondary-global-header-label-color)]", children: e ?? a })
|
|
77
|
+
}
|
|
78
|
+
));
|
|
79
|
+
T.displayName = "SidebarSecondaryHeader";
|
|
80
|
+
const E = d.forwardRef(({ className: r, ...e }, a) => (
|
|
81
|
+
// Expanded: the section list. Hidden in collapsed mode, where the
|
|
82
|
+
// CollapsedBreadcrumb sibling takes over.
|
|
83
|
+
/* @__PURE__ */ n(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
ref: a,
|
|
87
|
+
className: o(
|
|
88
|
+
"flex flex-1 flex-col overflow-y-auto gap-[var(--ui-sidebar-secondary-global-section-list-gap)]",
|
|
89
|
+
"hidden group-data-[state=expanded]/sidebar:flex",
|
|
90
|
+
r
|
|
91
|
+
),
|
|
92
|
+
...e
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
));
|
|
96
|
+
E.displayName = "SidebarSecondaryContent";
|
|
97
|
+
const L = d.forwardRef(({ className: r, parentLabel: e, currentLabel: a, separator: i, ...s }, t) => (
|
|
98
|
+
// Shown only in collapsed mode — toggled by the same data-[state] selector so
|
|
99
|
+
// it stays in the DOM (SSR-present) with no JS branch. Laid out vertically:
|
|
100
|
+
// parent → separator → current page.
|
|
101
|
+
/* @__PURE__ */ m(
|
|
102
|
+
"div",
|
|
103
|
+
{
|
|
104
|
+
ref: t,
|
|
105
|
+
className: o(
|
|
106
|
+
"flex flex-col items-center shrink-0",
|
|
107
|
+
"gap-[var(--ui-sidebar-secondary-collapsed-container-content-gap)] py-[var(--ui-sidebar-secondary-collapsed-container-content-padding-y)]",
|
|
108
|
+
"flex group-data-[state=expanded]/sidebar:hidden",
|
|
109
|
+
r
|
|
110
|
+
),
|
|
111
|
+
...s,
|
|
112
|
+
children: [
|
|
113
|
+
/* @__PURE__ */ n("span", { className: "ui-sidebar-secondary-collapsed-breadcrumb-label-text-style text-[var(--ui-sidebar-secondary-collapsed-breadcrumb-label-color)]", children: e }),
|
|
114
|
+
/* @__PURE__ */ n(
|
|
115
|
+
"span",
|
|
116
|
+
{
|
|
117
|
+
"aria-hidden": "true",
|
|
118
|
+
className: "inline-flex items-center text-[var(--ui-sidebar-secondary-collapsed-icon-separator-color)] [&>svg]:size-[var(--ui-sidebar-secondary-collapsed-icon-separator-size)]",
|
|
119
|
+
children: i ?? /* @__PURE__ */ n(R, { size: 16 })
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
/* @__PURE__ */ n("span", { className: "ui-sidebar-secondary-collapsed-label-current-page-text-style text-[var(--ui-sidebar-secondary-collapsed-label-current-page-color)]", children: a })
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
));
|
|
127
|
+
L.displayName = "SidebarSecondaryCollapsedBreadcrumb";
|
|
128
|
+
const P = d.forwardRef(({ className: r, ...e }, a) => /* @__PURE__ */ n(
|
|
129
|
+
"div",
|
|
130
|
+
{
|
|
131
|
+
ref: a,
|
|
132
|
+
className: o(
|
|
133
|
+
"flex flex-col shrink-0",
|
|
134
|
+
"border-t border-[var(--ui-sidebar-secondary-global-container-footer-border-color)] [border-top-width:var(--ui-sidebar-secondary-global-container-footer-border-width)]",
|
|
135
|
+
"py-[var(--ui-sidebar-secondary-section-container-padding-y)]",
|
|
136
|
+
r
|
|
137
|
+
),
|
|
138
|
+
...e
|
|
139
|
+
}
|
|
140
|
+
));
|
|
141
|
+
P.displayName = "SidebarSecondaryFooter";
|
|
142
|
+
const B = d.forwardRef(({ className: r, ...e }, a) => (
|
|
143
|
+
// Sections are separated by vertical padding + the section label; the next-gen
|
|
144
|
+
// token sync removed the inter-section divider (no
|
|
145
|
+
// `--ui-sidebar-secondary-section-container-border-*` token survives).
|
|
146
|
+
/* @__PURE__ */ n(
|
|
147
|
+
"div",
|
|
148
|
+
{
|
|
149
|
+
ref: a,
|
|
150
|
+
className: o(
|
|
151
|
+
"flex flex-col py-[var(--ui-sidebar-secondary-section-container-padding-y)]",
|
|
152
|
+
r
|
|
153
|
+
),
|
|
154
|
+
...e
|
|
155
|
+
}
|
|
156
|
+
)
|
|
157
|
+
));
|
|
158
|
+
B.displayName = "SidebarSecondarySection";
|
|
159
|
+
const F = d.forwardRef(({ className: r, ...e }, a) => /* @__PURE__ */ n(
|
|
160
|
+
"div",
|
|
161
|
+
{
|
|
162
|
+
ref: a,
|
|
163
|
+
className: o(
|
|
164
|
+
"ui-sidebar-secondary-section-label-section-text-style text-[var(--ui-sidebar-secondary-section-label-section-color)]",
|
|
165
|
+
"pb-[var(--ui-sidebar-secondary-section-container-header-padding-y)] px-[var(--ui-sidebar-secondary-section-container-header-padding-x)]",
|
|
166
|
+
r
|
|
167
|
+
),
|
|
168
|
+
...e
|
|
169
|
+
}
|
|
170
|
+
));
|
|
171
|
+
F.displayName = "SidebarSecondarySectionLabel";
|
|
172
|
+
const V = d.forwardRef(({ className: r, ...e }, a) => /* @__PURE__ */ n(
|
|
173
|
+
"ul",
|
|
174
|
+
{
|
|
175
|
+
ref: a,
|
|
176
|
+
className: o(
|
|
177
|
+
"flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]",
|
|
178
|
+
r
|
|
179
|
+
),
|
|
180
|
+
...e
|
|
181
|
+
}
|
|
182
|
+
));
|
|
183
|
+
V.displayName = "SidebarSecondaryMenu";
|
|
184
|
+
const _ = "group/row flex w-full items-center gap-[var(--ui-sidebar-secondary-menu-item-global-container-gap)] min-h-[var(--ui-sidebar-secondary-menu-item-global-container-height-min)] px-[var(--ui-sidebar-secondary-menu-item-global-container-padding-x)] py-[var(--ui-sidebar-secondary-menu-item-global-container-padding-y)] no-underline ui-sidebar-secondary-menu-item-global-label-text-style transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset text-[var(--ui-sidebar-secondary-menu-item-global-label-color-color)] [&_svg]:shrink-0 [&_svg]:size-[var(--ui-sidebar-secondary-menu-item-global-icon-size)] [&_svg]:text-[var(--ui-sidebar-secondary-menu-item-global-icon-color-color)]", g = z(_, {
|
|
185
|
+
variants: {
|
|
186
|
+
variant: {
|
|
187
|
+
unselected: "bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-active)]",
|
|
188
|
+
selected: "bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-active)]"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
defaultVariants: {
|
|
192
|
+
variant: "unselected"
|
|
193
|
+
}
|
|
194
|
+
}), j = d.forwardRef(({ className: r, selected: e = !1, icon: a, render: i, children: s, ...t }, c) => {
|
|
195
|
+
const { expanded: l } = p(), u = f({
|
|
196
|
+
render: i,
|
|
197
|
+
ref: c,
|
|
198
|
+
defaultTagName: "a",
|
|
199
|
+
props: x(
|
|
200
|
+
{
|
|
201
|
+
className: o(
|
|
202
|
+
g({
|
|
203
|
+
variant: e ? "selected" : "unselected"
|
|
204
|
+
}),
|
|
205
|
+
r
|
|
206
|
+
),
|
|
207
|
+
"aria-current": e ? "page" : void 0,
|
|
208
|
+
children: /* @__PURE__ */ m(w, { children: [
|
|
209
|
+
a != null && /* @__PURE__ */ n("span", { className: "flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]", children: a }),
|
|
210
|
+
/* @__PURE__ */ n(
|
|
211
|
+
"span",
|
|
212
|
+
{
|
|
213
|
+
className: o("flex-1 truncate text-left", !l && "sr-only"),
|
|
214
|
+
children: s
|
|
215
|
+
}
|
|
216
|
+
)
|
|
217
|
+
] })
|
|
218
|
+
},
|
|
219
|
+
t
|
|
220
|
+
)
|
|
221
|
+
});
|
|
222
|
+
return /* @__PURE__ */ n("li", { className: "contents", children: u });
|
|
223
|
+
});
|
|
224
|
+
j.displayName = "SidebarSecondaryMenuItem";
|
|
225
|
+
const H = d.forwardRef(({ className: r, render: e, ...a }, i) => (
|
|
226
|
+
// Disclosure row: Base UI Collapsible gives per-row open state +
|
|
227
|
+
// aria-expanded/aria-controls. Rendered as the list `<li>` wrapper.
|
|
228
|
+
/* @__PURE__ */ n(
|
|
229
|
+
v.Root,
|
|
230
|
+
{
|
|
231
|
+
ref: i,
|
|
232
|
+
render: e ?? /* @__PURE__ */ n("li", {}),
|
|
233
|
+
className: o("contents", r),
|
|
234
|
+
...a
|
|
235
|
+
}
|
|
236
|
+
)
|
|
237
|
+
));
|
|
238
|
+
H.displayName = "SidebarSecondaryMenuSub";
|
|
239
|
+
const U = d.forwardRef(({ className: r, selected: e = !1, icon: a, children: i, ...s }, t) => {
|
|
240
|
+
const { expanded: c } = p();
|
|
241
|
+
return /* @__PURE__ */ m(
|
|
242
|
+
v.Trigger,
|
|
243
|
+
{
|
|
244
|
+
ref: t,
|
|
245
|
+
"aria-current": e ? "page" : void 0,
|
|
246
|
+
className: o(
|
|
247
|
+
g({
|
|
248
|
+
variant: e ? "selected" : "unselected"
|
|
249
|
+
}),
|
|
250
|
+
"text-left",
|
|
251
|
+
r
|
|
252
|
+
),
|
|
253
|
+
...s,
|
|
254
|
+
children: [
|
|
255
|
+
a != null && /* @__PURE__ */ n("span", { className: "flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]", children: a }),
|
|
256
|
+
/* @__PURE__ */ n("span", { className: o("flex-1 truncate", !c && "sr-only"), children: i }),
|
|
257
|
+
/* @__PURE__ */ n(
|
|
258
|
+
M,
|
|
259
|
+
{
|
|
260
|
+
size: 16,
|
|
261
|
+
"aria-hidden": "true",
|
|
262
|
+
className: o(
|
|
263
|
+
"shrink-0 transition-transform group-data-[panel-open]/row:rotate-180",
|
|
264
|
+
!c && "hidden"
|
|
265
|
+
)
|
|
266
|
+
}
|
|
267
|
+
)
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
);
|
|
271
|
+
});
|
|
272
|
+
U.displayName = "SidebarSecondaryMenuSubTrigger";
|
|
273
|
+
const q = d.forwardRef(({ className: r, children: e, ...a }, i) => /* @__PURE__ */ n(v.Panel, { ref: i, className: o(r), ...a, children: /* @__PURE__ */ n("ul", { className: "flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]", children: e }) }));
|
|
274
|
+
q.displayName = "SidebarSecondaryMenuSubContent";
|
|
275
|
+
const A = d.forwardRef(({ className: r, selected: e = !1, render: a, children: i, ...s }, t) => {
|
|
276
|
+
const { expanded: c } = p(), l = f({
|
|
277
|
+
render: a,
|
|
278
|
+
ref: t,
|
|
279
|
+
defaultTagName: "a",
|
|
280
|
+
props: x(
|
|
281
|
+
{
|
|
282
|
+
className: o(
|
|
283
|
+
g({
|
|
284
|
+
variant: e ? "selected" : "unselected"
|
|
285
|
+
}),
|
|
286
|
+
// Level-2 left indent (no icon column). The dedicated level-2 padding
|
|
287
|
+
// token was removed in the next-gen sync; reconstruct the indent from
|
|
288
|
+
// surviving tokens so the label aligns under level-1 labels (row
|
|
289
|
+
// padding + icon column + gap).
|
|
290
|
+
"pl-[calc(var(--ui-sidebar-secondary-menu-item-global-container-padding-x)+var(--ui-sidebar-secondary-menu-item-global-icon-size)+var(--ui-sidebar-secondary-menu-item-global-container-gap))]",
|
|
291
|
+
r
|
|
292
|
+
),
|
|
293
|
+
"aria-current": e ? "page" : void 0,
|
|
294
|
+
children: /* @__PURE__ */ n("span", { className: o("flex-1 truncate text-left", !c && "sr-only"), children: i })
|
|
295
|
+
},
|
|
296
|
+
s
|
|
297
|
+
)
|
|
298
|
+
});
|
|
299
|
+
return /* @__PURE__ */ n("li", { className: "contents", children: l });
|
|
300
|
+
});
|
|
301
|
+
A.displayName = "SidebarSecondaryMenuSubItem";
|
|
302
|
+
const D = d.forwardRef(({ className: r, variant: e, shortcut: a, tag: i, children: s, ...t }, c) => {
|
|
303
|
+
const { expanded: l } = p(), u = e === "tag" || e === "tag-externalLink", b = e === "externalLink" || e === "tag-externalLink", y = e === "shortcut";
|
|
304
|
+
return /* @__PURE__ */ m(
|
|
305
|
+
"span",
|
|
306
|
+
{
|
|
307
|
+
ref: c,
|
|
308
|
+
className: o(
|
|
309
|
+
"inline-flex items-center gap-[var(--ui-sidebar-secondary-menu-item-extras-global-container-gap)]",
|
|
310
|
+
!l && "hidden",
|
|
311
|
+
r
|
|
312
|
+
),
|
|
313
|
+
...t,
|
|
314
|
+
children: [
|
|
315
|
+
u && (i ?? s),
|
|
316
|
+
y && /* @__PURE__ */ n("span", { className: "ui-sidebar-secondary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-secondary-menu-item-extras-global-shortcut-color)]", children: a ?? s }),
|
|
317
|
+
b && /* @__PURE__ */ n(
|
|
318
|
+
C,
|
|
319
|
+
{
|
|
320
|
+
size: 16,
|
|
321
|
+
className: "text-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-color)] size-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-size)]"
|
|
322
|
+
}
|
|
323
|
+
)
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
);
|
|
327
|
+
});
|
|
328
|
+
D.displayName = "SidebarSecondaryMenuItemExtras";
|
|
329
|
+
const G = d.forwardRef(({ className: r, icon: e, children: a, onClick: i, ...s }, t) => {
|
|
330
|
+
const { expanded: c, toggleExpanded: l } = p();
|
|
331
|
+
return /* @__PURE__ */ n("li", { className: "contents", children: /* @__PURE__ */ m(
|
|
332
|
+
"button",
|
|
333
|
+
{
|
|
334
|
+
ref: t,
|
|
335
|
+
type: "button",
|
|
336
|
+
"aria-expanded": c,
|
|
337
|
+
className: o(
|
|
338
|
+
g({ variant: "unselected" }),
|
|
339
|
+
"text-left",
|
|
340
|
+
r
|
|
341
|
+
),
|
|
342
|
+
onClick: (u) => {
|
|
343
|
+
i == null || i(u), u.defaultPrevented || l();
|
|
344
|
+
},
|
|
345
|
+
...s,
|
|
346
|
+
children: [
|
|
347
|
+
e != null && /* @__PURE__ */ n("span", { className: "flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]", children: e }),
|
|
348
|
+
/* @__PURE__ */ n("span", { className: o("flex-1 truncate", !c && "sr-only"), children: a })
|
|
349
|
+
]
|
|
350
|
+
}
|
|
351
|
+
) });
|
|
352
|
+
});
|
|
353
|
+
G.displayName = "SidebarSecondaryCollapseTrigger";
|
|
354
|
+
export {
|
|
355
|
+
k as SidebarSecondary,
|
|
356
|
+
G as SidebarSecondaryCollapseTrigger,
|
|
357
|
+
L as SidebarSecondaryCollapsedBreadcrumb,
|
|
358
|
+
E as SidebarSecondaryContent,
|
|
359
|
+
P as SidebarSecondaryFooter,
|
|
360
|
+
T as SidebarSecondaryHeader,
|
|
361
|
+
V as SidebarSecondaryMenu,
|
|
362
|
+
j as SidebarSecondaryMenuItem,
|
|
363
|
+
D as SidebarSecondaryMenuItemExtras,
|
|
364
|
+
H as SidebarSecondaryMenuSub,
|
|
365
|
+
q as SidebarSecondaryMenuSubContent,
|
|
366
|
+
A as SidebarSecondaryMenuSubItem,
|
|
367
|
+
U as SidebarSecondaryMenuSubTrigger,
|
|
368
|
+
B as SidebarSecondarySection,
|
|
369
|
+
F as SidebarSecondarySectionLabel,
|
|
370
|
+
g as sidebarSecondaryMenuItemVariants
|
|
371
|
+
};
|
|
372
|
+
//# sourceMappingURL=sidebar-secondary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-secondary.js","sources":["../../../../src/components/ui/sidebar-secondary/sidebar-secondary.tsx"],"sourcesContent":["import * as React from 'react';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { useRender } from '@base-ui/react/use-render';\nimport { Collapsible } from '@base-ui/react/collapsible';\nimport {\n ChevronDownIcon,\n ChevronRightIcon,\n SquareArrowUpRightIcon,\n} from '@acronis-platform/icons-react/stroke-mono';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// Composable SidebarSecondary primitives mirroring the Figma \"SidebarSecondary\"\n// component set (node 2468:59502, variant expanded|collapsed). Every color and\n// metric is wired to a next-gen `--ui-sidebar-secondary-*` token from\n// @acronis-platform/tokens-pd — no hex, no invented tokens.\n//\n// Like SidebarPrimary, expanded/collapsed is a width-reflow state (not a panel\n// show/hide), modelled as a controlled/uncontrolled `expanded` prop (default\n// true) that sets `data-state=\"expanded|collapsed\"` on the root and is shared to\n// descendants via context. The collapsed rail replaces the section list with a\n// vertical breadcrumb (parent → separator → current page), toggled purely by the\n// `data-[state]` selectors so it is SSR-present and needs no JS branch.\n//\n// Menu-item color wiring DIVERGES from Primary (DESIGN §6.2): Secondary recolors\n// only the CONTAINER per selected/unselected; the icon and label use the shared\n// `--ui-sidebar-secondary-menu-item-global-{icon,label}-color-color` tokens\n// across both variants and every interaction state (the next-gen token sync\n// collapsed the former per-state idle/hover/active icon+label colors into a\n// single value each). So the cva base carries the global icon/label colors and\n// the two variants only swap the container fill.\n//\n// The Level-1 expandable disclosure (SidebarSecondaryMenuSub) is the canonical\n// Base UI Collapsible use — it gives `aria-expanded`/`aria-controls` for free and\n// per-row open state. The trigger gets `data-panel-open` when open, which rotates\n// the chevron.\n//\n// R6 (collapsed separator icon): resolved from the Figma node metadata — the\n// collapsed `iconSeparator` instance's mainComponent is \"ChevronRight\", so the\n// separator defaults to `ChevronRightIcon` (16px), tinted by\n// `--ui-sidebar-secondary-collapsed-icon-separator-color`. The disclosure chevron\n// uses `ChevronDownIcon` rotated via `data-panel-open`. The focus ring reuses the\n// shared `--ui-focus-brand` (no sidebar focus token exists — R1).\n\ninterface SidebarSecondaryContextValue {\n expanded: boolean;\n /** Flip the panel width — drives the controlled/uncontrolled `expanded` state. */\n toggleExpanded: () => void;\n}\n\nconst SidebarSecondaryContext =\n React.createContext<SidebarSecondaryContextValue | null>(null);\n\nfunction useSidebarSecondaryContext(): SidebarSecondaryContextValue {\n // Default to expanded so parts render standalone (in isolation tests /\n // stories) without a wrapping root; the toggle is a no-op outside a root.\n return (\n React.useContext(SidebarSecondaryContext) ?? {\n expanded: true,\n toggleExpanded: () => {},\n }\n );\n}\n\n/**\n * Controlled + uncontrolled boolean state (the Base UI idiom). When `controlled`\n * is provided it wins and the setter only emits the change callback; otherwise\n * the setter updates internal state. `onChange` is ALWAYS invoked with the next\n * value so a consumer can react in either mode.\n */\nfunction useControllableBoolean(\n controlled: boolean | undefined,\n defaultValue: boolean,\n onChange?: (next: boolean) => void\n): [boolean, (next: boolean) => void] {\n const [uncontrolled, setUncontrolled] = React.useState(defaultValue);\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : uncontrolled;\n const setValue = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolled(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n return [value, setValue];\n}\n\nexport interface SidebarSecondaryProps\n extends React.ComponentPropsWithoutRef<'nav'> {\n /** Controlled expanded (rail width) state. */\n expanded?: boolean;\n /** Uncontrolled initial expanded state. Defaults to `true` (full width). */\n defaultExpanded?: boolean;\n /** Fires when the expanded state changes (e.g. a consumer toggle). */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Replace the rendered `<nav>` with another element or component\n * (Base UI composition). Accepts a React element or a render function.\n */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondary = React.forwardRef<HTMLElement, SidebarSecondaryProps>(\n (\n {\n className,\n expanded: expandedProp,\n defaultExpanded = true,\n onExpandedChange,\n 'aria-label': ariaLabel = 'Section navigation',\n render,\n children,\n ...props\n },\n ref\n ) => {\n const [expanded, setExpanded] = useControllableBoolean(\n expandedProp,\n defaultExpanded,\n onExpandedChange\n );\n\n // Collapse is driven by the consumer through the layout context — the\n // `SidebarSecondaryCollapseTrigger` calls `toggleExpanded`, which updates\n // uncontrolled state and always emits `onExpandedChange`. Controlled\n // consumers ignore the internal state and react to the callback.\n const context = React.useMemo<SidebarSecondaryContextValue>(\n () => ({ expanded, toggleExpanded: () => setExpanded(!expanded) }),\n [expanded, setExpanded]\n );\n\n const element = useRender({\n render,\n ref,\n defaultTagName: 'nav',\n props: mergeProps<'nav'>(\n {\n 'aria-label': ariaLabel,\n // `data-state` drives every collapsed/expanded token switch via\n // attribute selectors; typed loosely because React's nav attribute\n // map doesn't include arbitrary data-* keys as literals.\n ...({ 'data-state': expanded ? 'expanded' : 'collapsed' } as Record<\n string,\n string\n >),\n className: cn(\n 'group/sidebar flex h-full flex-col bg-[var(--ui-sidebar-secondary-global-container-color)] border-r border-[var(--ui-sidebar-secondary-global-container-border-color)] [border-right-width:var(--ui-sidebar-secondary-global-container-border-width)] w-[var(--ui-sidebar-secondary-collapsed-container-width)] data-[state=expanded]:w-[var(--ui-sidebar-secondary-expanded-container-width)] transition-[width]',\n className\n ),\n children,\n },\n props\n ),\n });\n\n return (\n <SidebarSecondaryContext.Provider value={context}>\n {element}\n </SidebarSecondaryContext.Provider>\n );\n }\n);\nSidebarSecondary.displayName = 'SidebarSecondary';\n\nexport interface SidebarSecondaryHeaderProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** Heading text (or pass as children). */\n label?: React.ReactNode;\n}\n\nconst SidebarSecondaryHeader = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryHeaderProps\n>(({ className, label, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex items-center shrink-0',\n 'px-[var(--ui-sidebar-secondary-collapsed-container-header-padding-x)] py-[var(--ui-sidebar-secondary-collapsed-container-header-padding-y)]',\n 'group-data-[state=expanded]/sidebar:px-[var(--ui-sidebar-secondary-expanded-container-header-padding-x)] group-data-[state=expanded]/sidebar:py-[var(--ui-sidebar-secondary-expanded-container-header-padding-y)]',\n className\n )}\n {...props}\n >\n <h2 className=\"ui-sidebar-secondary-global-header-label-text-style truncate text-[var(--ui-sidebar-secondary-global-header-label-color)]\">\n {label ?? children}\n </h2>\n </div>\n));\nSidebarSecondaryHeader.displayName = 'SidebarSecondaryHeader';\n\nconst SidebarSecondaryContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n // Expanded: the section list. Hidden in collapsed mode, where the\n // CollapsedBreadcrumb sibling takes over.\n <div\n ref={ref}\n className={cn(\n 'flex flex-1 flex-col overflow-y-auto gap-[var(--ui-sidebar-secondary-global-section-list-gap)]',\n 'hidden group-data-[state=expanded]/sidebar:flex',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryContent.displayName = 'SidebarSecondaryContent';\n\nexport interface SidebarSecondaryCollapsedBreadcrumbProps\n extends React.ComponentPropsWithoutRef<'div'> {\n /** The parent section label (breadcrumbLabel). */\n parentLabel: React.ReactNode;\n /** The current page label (labelCurrentPage). */\n currentLabel: React.ReactNode;\n /** Separator between the two; defaults to a 16px ChevronRightIcon (R6). */\n separator?: React.ReactNode;\n}\n\nconst SidebarSecondaryCollapsedBreadcrumb = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryCollapsedBreadcrumbProps\n>(({ className, parentLabel, currentLabel, separator, ...props }, ref) => (\n // Shown only in collapsed mode — toggled by the same data-[state] selector so\n // it stays in the DOM (SSR-present) with no JS branch. Laid out vertically:\n // parent → separator → current page.\n <div\n ref={ref}\n className={cn(\n 'flex flex-col items-center shrink-0',\n 'gap-[var(--ui-sidebar-secondary-collapsed-container-content-gap)] py-[var(--ui-sidebar-secondary-collapsed-container-content-padding-y)]',\n 'flex group-data-[state=expanded]/sidebar:hidden',\n className\n )}\n {...props}\n >\n <span className=\"ui-sidebar-secondary-collapsed-breadcrumb-label-text-style text-[var(--ui-sidebar-secondary-collapsed-breadcrumb-label-color)]\">\n {parentLabel}\n </span>\n <span\n aria-hidden=\"true\"\n className=\"inline-flex items-center text-[var(--ui-sidebar-secondary-collapsed-icon-separator-color)] [&>svg]:size-[var(--ui-sidebar-secondary-collapsed-icon-separator-size)]\"\n >\n {separator ?? <ChevronRightIcon size={16} />}\n </span>\n <span className=\"ui-sidebar-secondary-collapsed-label-current-page-text-style text-[var(--ui-sidebar-secondary-collapsed-label-current-page-color)]\">\n {currentLabel}\n </span>\n </div>\n));\nSidebarSecondaryCollapsedBreadcrumb.displayName =\n 'SidebarSecondaryCollapsedBreadcrumb';\n\nconst SidebarSecondaryFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col shrink-0',\n 'border-t border-[var(--ui-sidebar-secondary-global-container-footer-border-color)] [border-top-width:var(--ui-sidebar-secondary-global-container-footer-border-width)]',\n 'py-[var(--ui-sidebar-secondary-section-container-padding-y)]',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryFooter.displayName = 'SidebarSecondaryFooter';\n\nconst SidebarSecondarySection = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n // Sections are separated by vertical padding + the section label; the next-gen\n // token sync removed the inter-section divider (no\n // `--ui-sidebar-secondary-section-container-border-*` token survives).\n <div\n ref={ref}\n className={cn(\n 'flex flex-col py-[var(--ui-sidebar-secondary-section-container-padding-y)]',\n className\n )}\n {...props}\n />\n));\nSidebarSecondarySection.displayName = 'SidebarSecondarySection';\n\nconst SidebarSecondarySectionLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'ui-sidebar-secondary-section-label-section-text-style text-[var(--ui-sidebar-secondary-section-label-section-color)]',\n 'pb-[var(--ui-sidebar-secondary-section-container-header-padding-y)] px-[var(--ui-sidebar-secondary-section-container-header-padding-x)]',\n className\n )}\n {...props}\n />\n));\nSidebarSecondarySectionLabel.displayName = 'SidebarSecondarySectionLabel';\n\nconst SidebarSecondaryMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<'ul'>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\n 'flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]',\n className\n )}\n {...props}\n />\n));\nSidebarSecondaryMenu.displayName = 'SidebarSecondaryMenu';\n\n// Shared row geometry + the GLOBAL icon/label state colors (shared across\n// selected/unselected — DESIGN §6.2). The cva `variant` only swaps the container\n// fill. Each interaction state is wired to its own token even where acronis's\n// value is unchanged (runtime var() references honor brand overrides only on the\n// referenced token).\nconst sidebarSecondaryRowClasses =\n 'group/row flex w-full items-center gap-[var(--ui-sidebar-secondary-menu-item-global-container-gap)] min-h-[var(--ui-sidebar-secondary-menu-item-global-container-height-min)] px-[var(--ui-sidebar-secondary-menu-item-global-container-padding-x)] py-[var(--ui-sidebar-secondary-menu-item-global-container-padding-y)] no-underline ui-sidebar-secondary-menu-item-global-label-text-style transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-brand)] focus-visible:ring-inset text-[var(--ui-sidebar-secondary-menu-item-global-label-color-color)] [&_svg]:shrink-0 [&_svg]:size-[var(--ui-sidebar-secondary-menu-item-global-icon-size)] [&_svg]:text-[var(--ui-sidebar-secondary-menu-item-global-icon-color-color)]';\n\nconst sidebarSecondaryMenuItemVariants = cva(sidebarSecondaryRowClasses, {\n variants: {\n variant: {\n unselected:\n 'bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-unselected-container-color-active)]',\n selected:\n 'bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-idle)] hover:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-hover)] active:bg-[var(--ui-sidebar-secondary-menu-item-selected-container-color-active)]',\n },\n },\n defaultVariants: {\n variant: 'unselected',\n },\n});\n\nexport interface SidebarSecondaryMenuItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'>,\n Omit<VariantProps<typeof sidebarSecondaryMenuItemVariants>, 'variant'> {\n /** Marks the current route: sets the `selected` variant + `aria-current=\"page\"`. */\n selected?: boolean;\n /** Optional leading 16px icon (Level-1 only; `hasIcon` in Figma). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n /** Replace the rendered `<a>` (e.g. a router `Link` or a `<button>`). */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondaryMenuItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarSecondaryMenuItemProps\n>(({ className, selected = false, icon, render, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <>\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n {/* Keep the label in the DOM as `sr-only` in collapsed/rail mode so\n an icon-only row keeps an accessible name (a11y §7). */}\n <span\n className={cn('flex-1 truncate text-left', !expanded && 'sr-only')}\n >\n {children}\n </span>\n </>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n});\nSidebarSecondaryMenuItem.displayName = 'SidebarSecondaryMenuItem';\n\nexport type SidebarSecondaryMenuSubProps = React.ComponentPropsWithoutRef<\n typeof Collapsible.Root\n>;\n\nconst SidebarSecondaryMenuSub = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryMenuSubProps\n>(({ className, render, ...props }, ref) => (\n // Disclosure row: Base UI Collapsible gives per-row open state +\n // aria-expanded/aria-controls. Rendered as the list `<li>` wrapper.\n <Collapsible.Root\n ref={ref}\n render={render ?? <li />}\n className={cn('contents', className)}\n {...props}\n />\n));\nSidebarSecondaryMenuSub.displayName = 'SidebarSecondaryMenuSub';\n\nexport interface SidebarSecondaryMenuSubTriggerProps\n extends React.ComponentPropsWithoutRef<typeof Collapsible.Trigger> {\n /** Marks the parent row as selected. */\n selected?: boolean;\n /** Optional leading 16px icon. */\n icon?: React.ReactNode;\n}\n\nconst SidebarSecondaryMenuSubTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarSecondaryMenuSubTriggerProps\n>(({ className, selected = false, icon, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n return (\n <Collapsible.Trigger\n ref={ref}\n aria-current={selected ? 'page' : undefined}\n className={cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n 'text-left',\n className\n )}\n {...props}\n >\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n <span className={cn('flex-1 truncate', !expanded && 'sr-only')}>\n {children}\n </span>\n {/* Chevron rotates when the panel is open (Base UI sets data-panel-open\n on the trigger). Hidden in collapsed rail mode. */}\n <ChevronDownIcon\n size={16}\n aria-hidden=\"true\"\n className={cn(\n 'shrink-0 transition-transform group-data-[panel-open]/row:rotate-180',\n !expanded && 'hidden'\n )}\n />\n </Collapsible.Trigger>\n );\n});\nSidebarSecondaryMenuSubTrigger.displayName = 'SidebarSecondaryMenuSubTrigger';\n\nexport type SidebarSecondaryMenuSubContentProps =\n React.ComponentPropsWithoutRef<typeof Collapsible.Panel>;\n\nconst SidebarSecondaryMenuSubContent = React.forwardRef<\n HTMLDivElement,\n SidebarSecondaryMenuSubContentProps\n>(({ className, children, ...props }, ref) => (\n <Collapsible.Panel ref={ref} className={cn(className)} {...props}>\n <ul className=\"flex flex-col gap-[var(--ui-sidebar-secondary-section-menu-item-list-gap)]\">\n {children}\n </ul>\n </Collapsible.Panel>\n));\nSidebarSecondaryMenuSubContent.displayName = 'SidebarSecondaryMenuSubContent';\n\nexport interface SidebarSecondaryMenuSubItemProps\n extends Omit<React.ComponentPropsWithoutRef<'a'>, 'children'> {\n /** Marks the current route (Level-2 — no icon). */\n selected?: boolean;\n children?: React.ReactNode;\n /** Replace the rendered `<a>` (e.g. a router `Link`). */\n render?: useRender.RenderProp;\n}\n\nconst SidebarSecondaryMenuSubItem = React.forwardRef<\n HTMLAnchorElement,\n SidebarSecondaryMenuSubItemProps\n>(({ className, selected = false, render, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n\n const inner = useRender({\n render,\n ref,\n defaultTagName: 'a',\n props: mergeProps<'a'>(\n {\n className: cn(\n sidebarSecondaryMenuItemVariants({\n variant: selected ? 'selected' : 'unselected',\n }),\n // Level-2 left indent (no icon column). The dedicated level-2 padding\n // token was removed in the next-gen sync; reconstruct the indent from\n // surviving tokens so the label aligns under level-1 labels (row\n // padding + icon column + gap).\n 'pl-[calc(var(--ui-sidebar-secondary-menu-item-global-container-padding-x)+var(--ui-sidebar-secondary-menu-item-global-icon-size)+var(--ui-sidebar-secondary-menu-item-global-container-gap))]',\n className\n ),\n 'aria-current': selected ? 'page' : undefined,\n children: (\n <span className={cn('flex-1 truncate text-left', !expanded && 'sr-only')}>\n {children}\n </span>\n ),\n },\n props\n ),\n });\n\n return <li className=\"contents\">{inner}</li>;\n});\nSidebarSecondaryMenuSubItem.displayName = 'SidebarSecondaryMenuSubItem';\n\nexport interface SidebarSecondaryMenuItemExtrasProps\n extends React.ComponentPropsWithoutRef<'span'> {\n /** Which trailing affordance to render. */\n variant: 'tag' | 'externalLink' | 'shortcut' | 'tag-externalLink';\n /** Shortcut text for the `shortcut` variant. */\n shortcut?: string;\n /** Tag content for the `tag` / `tag-externalLink` variants. */\n tag?: React.ReactNode;\n}\n\nconst SidebarSecondaryMenuItemExtras = React.forwardRef<\n HTMLSpanElement,\n SidebarSecondaryMenuItemExtrasProps\n>(({ className, variant, shortcut, tag, children, ...props }, ref) => {\n const { expanded } = useSidebarSecondaryContext();\n const showTag = variant === 'tag' || variant === 'tag-externalLink';\n const showExternal =\n variant === 'externalLink' || variant === 'tag-externalLink';\n const showShortcut = variant === 'shortcut';\n\n return (\n <span\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-[var(--ui-sidebar-secondary-menu-item-extras-global-container-gap)]',\n !expanded && 'hidden',\n className\n )}\n {...props}\n >\n {showTag && (tag ?? children)}\n {showShortcut && (\n <span className=\"ui-sidebar-secondary-menu-item-extras-global-shortcut-text-style text-[var(--ui-sidebar-secondary-menu-item-extras-global-shortcut-color)]\">\n {shortcut ?? children}\n </span>\n )}\n {showExternal && (\n <SquareArrowUpRightIcon\n size={16}\n className=\"text-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-color)] size-[var(--ui-sidebar-secondary-menu-item-extras-global-external-icon-size)]\"\n />\n )}\n </span>\n );\n});\nSidebarSecondaryMenuItemExtras.displayName = 'SidebarSecondaryMenuItemExtras';\n\nexport interface SidebarSecondaryCollapseTriggerProps\n extends Omit<React.ComponentPropsWithoutRef<'button'>, 'children'> {\n /** Leading 16px icon (e.g. a panel-left glyph). */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n// The footer \"Collapse menu\" affordance. A row-styled `<button>` that flips the\n// panel width via the layout context — the live wiring for the controllable\n// `expanded` state (B1). Keeps its label as `sr-only` in collapsed mode.\nconst SidebarSecondaryCollapseTrigger = React.forwardRef<\n HTMLButtonElement,\n SidebarSecondaryCollapseTriggerProps\n>(({ className, icon, children, onClick, ...props }, ref) => {\n const { expanded, toggleExpanded } = useSidebarSecondaryContext();\n\n return (\n <li className=\"contents\">\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={expanded}\n className={cn(\n sidebarSecondaryMenuItemVariants({ variant: 'unselected' }),\n 'text-left',\n className\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleExpanded();\n }}\n {...props}\n >\n {icon != null && (\n <span className=\"flex shrink-0 items-center self-start mt-[var(--ui-sidebar-secondary-menu-item-global-icon-margin-t)]\">\n {icon}\n </span>\n )}\n <span className={cn('flex-1 truncate', !expanded && 'sr-only')}>\n {children}\n </span>\n </button>\n </li>\n );\n});\nSidebarSecondaryCollapseTrigger.displayName = 'SidebarSecondaryCollapseTrigger';\n\nexport {\n SidebarSecondary,\n SidebarSecondaryHeader,\n SidebarSecondaryContent,\n SidebarSecondaryCollapsedBreadcrumb,\n SidebarSecondaryFooter,\n SidebarSecondarySection,\n SidebarSecondarySectionLabel,\n SidebarSecondaryMenu,\n SidebarSecondaryMenuItem,\n SidebarSecondaryMenuSub,\n SidebarSecondaryMenuSubTrigger,\n SidebarSecondaryMenuSubContent,\n SidebarSecondaryMenuSubItem,\n SidebarSecondaryMenuItemExtras,\n SidebarSecondaryCollapseTrigger,\n sidebarSecondaryMenuItemVariants,\n};\n"],"names":["SidebarSecondaryContext","React","useSidebarSecondaryContext","useControllableBoolean","controlled","defaultValue","onChange","uncontrolled","setUncontrolled","isControlled","value","setValue","next","SidebarSecondary","className","expandedProp","defaultExpanded","onExpandedChange","ariaLabel","render","children","props","ref","expanded","setExpanded","context","element","useRender","mergeProps","cn","SidebarSecondaryHeader","label","jsx","SidebarSecondaryContent","SidebarSecondaryCollapsedBreadcrumb","parentLabel","currentLabel","separator","jsxs","ChevronRightIcon","SidebarSecondaryFooter","SidebarSecondarySection","SidebarSecondarySectionLabel","SidebarSecondaryMenu","sidebarSecondaryRowClasses","sidebarSecondaryMenuItemVariants","cva","SidebarSecondaryMenuItem","selected","icon","inner","Fragment","SidebarSecondaryMenuSub","Collapsible","SidebarSecondaryMenuSubTrigger","ChevronDownIcon","SidebarSecondaryMenuSubContent","SidebarSecondaryMenuSubItem","SidebarSecondaryMenuItemExtras","variant","shortcut","tag","showTag","showExternal","showShortcut","SquareArrowUpRightIcon","SidebarSecondaryCollapseTrigger","onClick","toggleExpanded","event"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as o, jsxs as b } from "react/jsx-runtime";
|
|
2
|
+
import * as r from "react";
|
|
3
|
+
import { Switch as s } from "@base-ui/react/switch";
|
|
4
|
+
import { cn as i } from "../../../lib/utils.js";
|
|
5
|
+
const u = i(
|
|
6
|
+
"group inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full p-0.5 outline-none transition-colors",
|
|
7
|
+
"data-[unchecked]:bg-[var(--ui-switch-off-box-color-idle)] data-[checked]:bg-[var(--ui-switch-on-box-color-idle)]",
|
|
8
|
+
"focus-visible:ring-[3px] focus-visible:ring-[var(--ui-focus-primary)]",
|
|
9
|
+
"data-[disabled]:cursor-not-allowed data-[disabled]:data-[unchecked]:bg-[var(--ui-switch-off-box-color-disabled)] data-[disabled]:data-[checked]:bg-[var(--ui-switch-on-box-color-disabled)] data-[disabled]:shadow-[inset_0_0_0_1px_var(--ui-switch-global-box-border-color-disabled)]"
|
|
10
|
+
), h = i(
|
|
11
|
+
"block size-3 rounded-full bg-[var(--ui-switch-global-tick-color-idle)] transition-transform",
|
|
12
|
+
"data-[checked]:translate-x-4",
|
|
13
|
+
"group-data-[disabled]:bg-[var(--ui-switch-global-tick-color-disabled)]"
|
|
14
|
+
), m = r.forwardRef(({ className: t, label: a, ...c }, d) => {
|
|
15
|
+
const n = r.useId(), e = a != null ? `${n}-label` : void 0, l = /* @__PURE__ */ o(
|
|
16
|
+
s.Root,
|
|
17
|
+
{
|
|
18
|
+
ref: d,
|
|
19
|
+
"aria-labelledby": e,
|
|
20
|
+
className: i(u, t),
|
|
21
|
+
...c,
|
|
22
|
+
children: /* @__PURE__ */ o(s.Thumb, { className: h })
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
return a == null ? l : /* @__PURE__ */ b("label", { className: "inline-flex cursor-pointer items-center gap-[var(--ui-switch-global-container-gap)]", children: [
|
|
26
|
+
l,
|
|
27
|
+
/* @__PURE__ */ o(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
id: e,
|
|
31
|
+
className: "text-sm leading-6 font-normal text-[var(--ui-switch-global-label-color)]",
|
|
32
|
+
children: a
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
] });
|
|
36
|
+
});
|
|
37
|
+
m.displayName = "Switch";
|
|
38
|
+
export {
|
|
39
|
+
m as Switch
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sources":["../../../../src/components/ui/switch/switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Switch as SwitchPrimitive } from '@base-ui/react/switch';\n\nimport { cn } from '@/lib/utils';\n\n// A binary on/off toggle: a Base UI Switch themed with the next-gen `--ui-switch-*`\n// `box`/`tick` token tier. A 32×16 track with a 12px thumb; the track fill is wired\n// per checked-state — off (`--ui-switch-off-box-color-idle`) / on\n// (`--ui-switch-on-box-color-idle`, green) — and disabled swaps to the muted box\n// fill + a light `tick`, plus a 1px inset border\n// (`--ui-switch-global-box-border-color-disabled`). Keyboard focus paints a 3px\n// `--ui-focus-primary` ring. The design has no hover/active color change (those token\n// stops equal idle). The disabled border is an inset box-shadow so it doesn't shrink\n// the 12px thumb's box (the Figma stroke is drawn inside).\n//\n// An optional `label` composes the full Figma field: the toggle plus its label in a\n// clickable `<label>` row (a Base UI switch renders a labelable <button>, so clicking\n// the text toggles it), wired via aria-labelledby and tinted with\n// `--ui-switch-global-label-color`. With no label, the bare toggle renders — name it\n// with `aria-label`.\nconst trackClasses = cn(\n 'group inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full p-0.5 outline-none transition-colors',\n 'data-[unchecked]:bg-[var(--ui-switch-off-box-color-idle)] data-[checked]:bg-[var(--ui-switch-on-box-color-idle)]',\n 'focus-visible:ring-[3px] focus-visible:ring-[var(--ui-focus-primary)]',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:data-[unchecked]:bg-[var(--ui-switch-off-box-color-disabled)] data-[disabled]:data-[checked]:bg-[var(--ui-switch-on-box-color-disabled)] data-[disabled]:shadow-[inset_0_0_0_1px_var(--ui-switch-global-box-border-color-disabled)]'\n);\n\nconst thumbClasses = cn(\n 'block size-3 rounded-full bg-[var(--ui-switch-global-tick-color-idle)] transition-transform',\n 'data-[checked]:translate-x-4',\n 'group-data-[disabled]:bg-[var(--ui-switch-global-tick-color-disabled)]'\n);\n\nexport interface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n /** Optional label rendered beside the toggle; names the control. */\n label?: React.ReactNode;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, label, ...props }, ref) => {\n const reactId = React.useId();\n const labelId = label != null ? `${reactId}-label` : undefined;\n\n const root = (\n <SwitchPrimitive.Root\n ref={ref}\n aria-labelledby={labelId}\n className={cn(trackClasses, className)}\n {...props}\n >\n <SwitchPrimitive.Thumb className={thumbClasses} />\n </SwitchPrimitive.Root>\n );\n\n if (label == null) return root;\n\n return (\n <label className=\"inline-flex cursor-pointer items-center gap-[var(--ui-switch-global-container-gap)]\">\n {root}\n <span\n id={labelId}\n className=\"text-sm leading-6 font-normal text-[var(--ui-switch-global-label-color)]\"\n >\n {label}\n </span>\n </label>\n );\n});\nSwitch.displayName = 'Switch';\n\nexport { Switch };\n"],"names":["trackClasses","cn","thumbClasses","Switch","React","className","label","props","ref","reactId","labelId","root","jsx","SwitchPrimitive","jsxs"],"mappings":";;;;AAoBA,MAAMA,IAAeC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEMC,IAAeD;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AACF,GAQME,IAASC,EAAM,WAGnB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GAASC,MAAQ;AACzC,QAAMC,IAAUL,EAAM,MAAA,GAChBM,IAAUJ,KAAS,OAAO,GAAGG,CAAO,WAAW,QAE/CE,IACJ,gBAAAC;AAAA,IAACC,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAL;AAAA,MACA,mBAAiBE;AAAA,MACjB,WAAWT,EAAGD,GAAcK,CAAS;AAAA,MACpC,GAAGE;AAAA,MAEJ,UAAA,gBAAAK,EAACC,EAAgB,OAAhB,EAAsB,WAAWX,EAAA,CAAc;AAAA,IAAA;AAAA,EAAA;AAIpD,SAAII,KAAS,OAAaK,IAGxB,gBAAAG,EAAC,SAAA,EAAM,WAAU,uFACd,UAAA;AAAA,IAAAH;AAAA,IACD,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIF;AAAA,QACJ,WAAU;AAAA,QAET,UAAAJ;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ,CAAC;AACDH,EAAO,cAAc;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsxs as c, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import * as g from "react";
|
|
3
|
+
import { cva as u } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
|
|
4
|
+
import { cn as s } from "../../../lib/utils.js";
|
|
5
|
+
const v = u(
|
|
6
|
+
"inline-flex min-w-[var(--ui-tag-global-container-width-min)] max-w-[var(--ui-tag-global-container-width-max)] items-center gap-[var(--ui-tag-global-container-gap)] overflow-hidden rounded-[var(--ui-tag-global-container-border-radius)] border-[length:var(--ui-tag-global-container-border-width)] border-solid border-transparent px-[var(--ui-tag-global-container-padding-x)] align-middle text-xs font-semibold leading-4 [&_svg]:size-[var(--ui-tag-global-md-icon-size)] [&_svg]:shrink-0",
|
|
7
|
+
{
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
info: "bg-[var(--ui-tag-info-container-color)] border-[var(--ui-tag-info-container-border-color)] text-[var(--ui-tag-info-label-color)] [&_svg]:text-[var(--ui-tag-info-icon-color)]",
|
|
11
|
+
success: "bg-[var(--ui-tag-success-container-color)] border-[var(--ui-tag-success-container-border-color)] text-[var(--ui-tag-success-label-color)] [&_svg]:text-[var(--ui-tag-success-icon-color)]",
|
|
12
|
+
warning: "bg-[var(--ui-tag-warning-container-color)] border-[var(--ui-tag-warning-container-border-color)] text-[var(--ui-tag-warning-label-color)] [&_svg]:text-[var(--ui-tag-warning-icon-color)]",
|
|
13
|
+
critical: "bg-[var(--ui-tag-critical-container-color)] border-[var(--ui-tag-critical-container-border-color)] text-[var(--ui-tag-critical-label-color)] [&_svg]:text-[var(--ui-tag-critical-icon-color)]",
|
|
14
|
+
danger: "bg-[var(--ui-tag-danger-container-color)] border-[var(--ui-tag-danger-container-border-color)] text-[var(--ui-tag-danger-label-color)] [&_svg]:text-[var(--ui-tag-danger-icon-color)]",
|
|
15
|
+
neutral: "bg-[var(--ui-tag-neutral-container-color)] border-[var(--ui-tag-neutral-container-border-color)] text-[var(--ui-tag-neutral-label-color)] [&_svg]:text-[var(--ui-tag-neutral-icon-color)]",
|
|
16
|
+
ai: "text-[var(--ui-tag-ai-label-color)] [&_svg]:text-[var(--ui-tag-ai-icon-color)] [background:linear-gradient(var(--ui-tag-ai-container-color),var(--ui-tag-ai-container-color))_padding-box,var(--ui-tag-ai-container-border-color)_border-box]"
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
default: "h-[var(--ui-tag-global-md-container-height)]",
|
|
20
|
+
sm: "h-[var(--ui-tag-global-sm-container-height)]"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: {
|
|
24
|
+
variant: "neutral",
|
|
25
|
+
size: "default"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
), d = g.forwardRef(
|
|
29
|
+
({ className: a, variant: r, size: o, icon: i, children: t, ...e }, n) => /* @__PURE__ */ c(
|
|
30
|
+
"span",
|
|
31
|
+
{
|
|
32
|
+
ref: n,
|
|
33
|
+
className: s(v({ variant: r, size: o }), a),
|
|
34
|
+
...e,
|
|
35
|
+
children: [
|
|
36
|
+
i,
|
|
37
|
+
/* @__PURE__ */ l("span", { className: "min-w-0 truncate", children: t })
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
d.displayName = "Tag";
|
|
43
|
+
export {
|
|
44
|
+
d as Tag,
|
|
45
|
+
v as tagVariants
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.js","sources":["../../../../src/components/ui/tag/tag.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// A compact label for a status, category, or keyword. `variant` wires the\n// container fill, border, label, and icon to the dedicated `--ui-tag-*`\n// component tier from @acronis-platform/tokens-pd (one token per part, per\n// variant). Geometry — radius, border width, gap, padding, max/min width, icon\n// size — comes from `--ui-tag-global-*`; `size` only changes the height (24px\n// `default` / 20px `sm`), padding is uniform. The `ai` variant paints a gradient\n// border (`--ui-tag-ai-container-border-color`) over its solid tinted fill via\n// the padding-box / border-box background-clip trick (the border stays\n// transparent so the border-box gradient shows through). The fill is wrapped in\n// a `linear-gradient(color, color)` so it's a background *image* layer — a plain\n// background-color is only valid in the final layer of the `background`\n// shorthand, and as a non-final layer would invalidate the whole declaration.\nconst tagVariants = cva(\n 'inline-flex min-w-[var(--ui-tag-global-container-width-min)] max-w-[var(--ui-tag-global-container-width-max)] items-center gap-[var(--ui-tag-global-container-gap)] overflow-hidden rounded-[var(--ui-tag-global-container-border-radius)] border-[length:var(--ui-tag-global-container-border-width)] border-solid border-transparent px-[var(--ui-tag-global-container-padding-x)] align-middle text-xs font-semibold leading-4 [&_svg]:size-[var(--ui-tag-global-md-icon-size)] [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n info: 'bg-[var(--ui-tag-info-container-color)] border-[var(--ui-tag-info-container-border-color)] text-[var(--ui-tag-info-label-color)] [&_svg]:text-[var(--ui-tag-info-icon-color)]',\n success:\n 'bg-[var(--ui-tag-success-container-color)] border-[var(--ui-tag-success-container-border-color)] text-[var(--ui-tag-success-label-color)] [&_svg]:text-[var(--ui-tag-success-icon-color)]',\n warning:\n 'bg-[var(--ui-tag-warning-container-color)] border-[var(--ui-tag-warning-container-border-color)] text-[var(--ui-tag-warning-label-color)] [&_svg]:text-[var(--ui-tag-warning-icon-color)]',\n critical:\n 'bg-[var(--ui-tag-critical-container-color)] border-[var(--ui-tag-critical-container-border-color)] text-[var(--ui-tag-critical-label-color)] [&_svg]:text-[var(--ui-tag-critical-icon-color)]',\n danger:\n 'bg-[var(--ui-tag-danger-container-color)] border-[var(--ui-tag-danger-container-border-color)] text-[var(--ui-tag-danger-label-color)] [&_svg]:text-[var(--ui-tag-danger-icon-color)]',\n neutral:\n 'bg-[var(--ui-tag-neutral-container-color)] border-[var(--ui-tag-neutral-container-border-color)] text-[var(--ui-tag-neutral-label-color)] [&_svg]:text-[var(--ui-tag-neutral-icon-color)]',\n ai: 'text-[var(--ui-tag-ai-label-color)] [&_svg]:text-[var(--ui-tag-ai-icon-color)] [background:linear-gradient(var(--ui-tag-ai-container-color),var(--ui-tag-ai-container-color))_padding-box,var(--ui-tag-ai-container-border-color)_border-box]',\n },\n size: {\n default: 'h-[var(--ui-tag-global-md-container-height)]',\n sm: 'h-[var(--ui-tag-global-sm-container-height)]',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'default',\n },\n }\n);\n\nexport interface TagProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tagVariants> {\n /** Optional leading icon, rendered at 16px before the label. */\n icon?: React.ReactNode;\n}\n\nconst Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n ({ className, variant, size, icon, children, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n >\n {icon}\n <span className=\"min-w-0 truncate\">{children}</span>\n </span>\n )\n);\nTag.displayName = 'Tag';\n\nexport { Tag, tagVariants };\n"],"names":["tagVariants","cva","Tag","React","className","variant","size","icon","children","props","ref","jsxs","cn","jsx"],"mappings":";;;;AAiBA,MAAMA,IAAcC;AAAA,EAClB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SACE;AAAA,QACF,SACE;AAAA,QACF,UACE;AAAA,QACF,QACE;AAAA,QACF,SACE;AAAA,QACF,IAAI;AAAA,MAAA;AAAA,MAEN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAUMC,IAAMC,EAAM;AAAA,EAChB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,MAAAC,GAAM,UAAAC,GAAU,GAAGC,KAASC,MACvD,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE,EAAGZ,EAAY,EAAE,SAAAK,GAAS,MAAAC,EAAA,CAAM,GAAGF,CAAS;AAAA,MACtD,GAAGK;AAAA,MAEH,UAAA;AAAA,QAAAF;AAAA,QACD,gBAAAM,EAAC,QAAA,EAAK,WAAU,oBAAoB,UAAAL,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnD;AACAN,EAAI,cAAc;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import * as d from "react";
|
|
3
|
+
import { Tooltip as o } from "@base-ui/react/tooltip";
|
|
4
|
+
import { cn as m } from "../../../lib/utils.js";
|
|
5
|
+
const T = o.Provider, g = o.Root, f = o.Trigger, s = d.forwardRef(
|
|
6
|
+
({
|
|
7
|
+
className: i,
|
|
8
|
+
sideOffset: r = 6,
|
|
9
|
+
side: n = "top",
|
|
10
|
+
align: a = "center",
|
|
11
|
+
portalContainer: e,
|
|
12
|
+
keepMounted: p,
|
|
13
|
+
...l
|
|
14
|
+
}, c) => /* @__PURE__ */ t(
|
|
15
|
+
o.Portal,
|
|
16
|
+
{
|
|
17
|
+
container: e,
|
|
18
|
+
keepMounted: p,
|
|
19
|
+
children: /* @__PURE__ */ t(
|
|
20
|
+
o.Positioner,
|
|
21
|
+
{
|
|
22
|
+
sideOffset: r,
|
|
23
|
+
side: n,
|
|
24
|
+
align: a,
|
|
25
|
+
className: "z-50",
|
|
26
|
+
children: /* @__PURE__ */ t(
|
|
27
|
+
o.Popup,
|
|
28
|
+
{
|
|
29
|
+
ref: c,
|
|
30
|
+
className: m(
|
|
31
|
+
"max-w-[var(--ui-tooltip-container-width-max)] min-w-[var(--ui-tooltip-container-width-min)] rounded-[var(--ui-tooltip-container-border-radius)] bg-[var(--ui-tooltip-container-color)] px-[var(--ui-tooltip-container-padding-x)] py-[var(--ui-tooltip-container-padding-y)] text-xs font-medium leading-4 text-[var(--ui-tooltip-label-color)]",
|
|
32
|
+
i
|
|
33
|
+
),
|
|
34
|
+
...l
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
s.displayName = "TooltipContent";
|
|
43
|
+
export {
|
|
44
|
+
g as Tooltip,
|
|
45
|
+
s as TooltipContent,
|
|
46
|
+
T as TooltipProvider,
|
|
47
|
+
f as TooltipTrigger
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sources":["../../../../src/components/ui/tooltip/tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\n\nimport { cn } from '@/lib/utils';\n\n// A contextual hint shown on hover/focus of its trigger. Wraps the Base UI\n// Tooltip primitive; the popup is themed with the `--ui-tooltip-*` token tier\n// (a dark, ~90%-opaque bubble with a light label, 12/8px padding, 4px radius,\n// 48–256px width). No arrow — matching the Figma design. Wrap the whole app (or\n// a region) in `TooltipProvider` to share open/close delays across tooltips.\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Popup>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Popup> & {\n sideOffset?: number;\n side?: TooltipPrimitive.Positioner.Props['side'];\n align?: TooltipPrimitive.Positioner.Props['align'];\n portalContainer?: TooltipPrimitive.Portal.Props['container'];\n keepMounted?: TooltipPrimitive.Portal.Props['keepMounted'];\n }\n>(\n (\n {\n className,\n sideOffset = 6,\n side = 'top',\n align = 'center',\n portalContainer,\n keepMounted,\n ...props\n },\n ref\n ) => (\n <TooltipPrimitive.Portal\n container={portalContainer}\n keepMounted={keepMounted}\n >\n <TooltipPrimitive.Positioner\n sideOffset={sideOffset}\n side={side}\n align={align}\n className=\"z-50\"\n >\n <TooltipPrimitive.Popup\n ref={ref}\n className={cn(\n 'max-w-[var(--ui-tooltip-container-width-max)] min-w-[var(--ui-tooltip-container-width-min)] rounded-[var(--ui-tooltip-container-border-radius)] bg-[var(--ui-tooltip-container-color)] px-[var(--ui-tooltip-container-padding-x)] py-[var(--ui-tooltip-container-padding-y)] text-xs font-medium leading-4 text-[var(--ui-tooltip-label-color)]',\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n);\nTooltipContent.displayName = 'TooltipContent';\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"names":["TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","React","className","sideOffset","side","align","portalContainer","keepMounted","props","ref","jsx","cn"],"mappings":";;;;AAWA,MAAMA,IAAkBC,EAAiB,UAEnCC,IAAUD,EAAiB,MAE3BE,IAAiBF,EAAiB,SAElCG,IAAiBC,EAAM;AAAA,EAU3B,CACE;AAAA,IACE,WAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MAEA,gBAAAC;AAAA,IAACb,EAAiB;AAAA,IAAjB;AAAA,MACC,WAAWS;AAAA,MACX,aAAAC;AAAA,MAEA,UAAA,gBAAAG;AAAA,QAACb,EAAiB;AAAA,QAAjB;AAAA,UACC,YAAAM;AAAA,UACA,MAAAC;AAAA,UACA,OAAAC;AAAA,UACA,WAAU;AAAA,UAEV,UAAA,gBAAAK;AAAA,YAACb,EAAiB;AAAA,YAAjB;AAAA,cACC,KAAAY;AAAA,cACA,WAAWE;AAAA,gBACT;AAAA,gBACAT;AAAA,cAAA;AAAA,cAED,GAAGM;AAAA,YAAA;AAAA,UAAA;AAAA,QACN;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AACAR,EAAe,cAAc;"}
|
package/dist/index.d.ts
ADDED