@elcrm/components 0.2.13 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -38
- package/dist/ActionGroup-DcApj_Mz.js +27 -0
- package/dist/ActionGroup.css +1 -1
- package/dist/ActionGroup.d.ts +19 -19
- package/dist/ActionGroup.js +1 -1
- package/dist/Avatar-eGdLrMCv.js +113 -0
- package/dist/Avatar.css +1 -1
- package/dist/Avatar.d.ts +4 -4
- package/dist/Avatar.js +1 -1
- package/dist/AvatarGroup-Dq-UrOaC.js +81 -0
- package/dist/AvatarGroup.css +1 -1
- package/dist/AvatarGroup.d.ts +8 -28
- package/dist/AvatarGroup.js +1 -1
- package/dist/AvatarName-3B4yCxHn.js +68 -0
- package/dist/AvatarName.css +1 -1
- package/dist/AvatarName.js +1 -1
- package/dist/Badge-BjScAXGy.js +28 -0
- package/dist/Badge.css +1 -1
- package/dist/Badge.js +1 -1
- package/dist/Banner-DAY18FWO.js +34 -0
- package/dist/Banner.css +1 -1
- package/dist/Banner.js +1 -1
- package/dist/Brand-BfCuiyf7.js +34 -0
- package/dist/Brand.css +1 -1
- package/dist/Brand.d.ts +8 -10
- package/dist/Brand.js +1 -1
- package/dist/Breadcrumb-DM_hWw5n.js +98 -0
- package/dist/Breadcrumb.css +1 -1
- package/dist/Breadcrumb.d.ts +8 -5
- package/dist/Breadcrumb.js +1 -1
- package/dist/Card-a7N8Uh_H.js +12 -0
- package/dist/Card.css +1 -1
- package/dist/Card.js +1 -1
- package/dist/ChatFrame-BdSYRF-B.js +37 -0
- package/dist/ChatFrame.css +1 -1
- package/dist/ChatList.js +2 -2
- package/dist/{ChatMessages-B8rdXiK-.js → ChatMessages-CLxwRGIa.js} +1 -1
- package/dist/ChatMessages.js +1 -1
- package/dist/ChatSplit-8iw_1Shp.js +21 -0
- package/dist/CodeBlock-B3wvMejv.js +34 -0
- package/dist/CodeBlock.css +1 -1
- package/dist/CodeBlock.js +1 -1
- package/dist/Dropdown-CR_XxNak.js +185 -0
- package/dist/Dropdown.css +1 -1
- package/dist/Dropdown.d.ts +4 -94
- package/dist/Dropdown.js +1 -1
- package/dist/EmptyState-B_wWPjUu.js +23 -0
- package/dist/EmptyState.css +1 -1
- package/dist/EmptyState.d.ts +1 -1
- package/dist/EmptyState.js +1 -1
- package/dist/{Footer-qxUlnPR9.js → Footer-Bgh_JCUe.js} +4 -4
- package/dist/Footer.css +1 -1
- package/dist/Footer.js +1 -1
- package/dist/Header-BMDIi3u2.js +21 -0
- package/dist/Header.css +1 -1
- package/dist/Header.js +1 -1
- package/dist/Healthmap-Z-LLfGW0.js +359 -0
- package/dist/Healthmap.css +1 -1
- package/dist/Healthmap.d.ts +25 -3
- package/dist/Healthmap.js +1 -1
- package/dist/{Item-D4okhsfW.js → Item-CGpkMJu0.js} +13 -13
- package/dist/Item.css +1 -1
- package/dist/Item.d.ts +7 -7
- package/dist/Item.js +1 -1
- package/dist/ItemColumn-Ch61LqE0.js +41 -0
- package/dist/ItemColumn.css +1 -1
- package/dist/ItemColumn.js +1 -1
- package/dist/Layout-CzEGKl9s.js +31 -0
- package/dist/Layout.css +1 -1
- package/dist/Layout.d.ts +1 -1
- package/dist/Layout.js +1 -1
- package/dist/List-D13pqaUY.js +12 -0
- package/dist/List.css +1 -1
- package/dist/List.js +1 -1
- package/dist/Loading-C_CKD-zt.js +16 -0
- package/dist/Loading.css +1 -1
- package/dist/Loading.d.ts +1 -1
- package/dist/Loading.js +1 -1
- package/dist/Menu-D2kf7fN_.js +72 -0
- package/dist/Menu.css +1 -1
- package/dist/Menu.d.ts +7 -25
- package/dist/Menu.js +1 -1
- package/dist/NavSections-CNxxBMPT.js +154 -0
- package/dist/NavSections.css +1 -1
- package/dist/NavSections.d.ts +16 -28
- package/dist/NavSections.js +1 -1
- package/dist/PageHead-BfClTLrF.js +31 -0
- package/dist/PageHead.css +1 -1
- package/dist/PageHead.d.ts +1 -1
- package/dist/PageHead.js +1 -1
- package/dist/PageShell-BAJges-G.js +30 -0
- package/dist/PageShell.css +1 -1
- package/dist/PageShell.js +1 -1
- package/dist/PanelInfo-Db5GCr-c.js +137 -0
- package/dist/PanelInfo.css +1 -1
- package/dist/PanelInfo.d.ts +16 -9
- package/dist/PanelInfo.js +1 -1
- package/dist/Popover-xEZoMY-h.js +143 -0
- package/dist/Popover.css +1 -1
- package/dist/Popover.d.ts +40 -11
- package/dist/Popover.js +1 -1
- package/dist/PricingGroup-CWy47MlE.js +138 -0
- package/dist/PricingGroup.css +1 -1
- package/dist/PricingGroup.d.ts +0 -2
- package/dist/PricingGroup.js +1 -1
- package/dist/PricingTable-BjpGVAhi.js +157 -0
- package/dist/PricingTable.css +1 -1
- package/dist/PricingTable.d.ts +4 -7
- package/dist/PricingTable.js +1 -1
- package/dist/RadioGroup-DI4KKUvZ.js +121 -0
- package/dist/RadioGroup.css +1 -1
- package/dist/RadioGroup.js +1 -1
- package/dist/Section-PprWjOvt.js +47 -0
- package/dist/Section.css +1 -1
- package/dist/Section.d.ts +29 -9
- package/dist/Section.js +1 -1
- package/dist/Sidebar-Bouhd5SS.js +205 -0
- package/dist/Sidebar.css +1 -1
- package/dist/Sidebar.d.ts +18 -26
- package/dist/Sidebar.js +1 -1
- package/dist/SplitPane-DBa-g9td.js +92 -0
- package/dist/SplitPane.css +1 -1
- package/dist/SplitPane.d.ts +8 -7
- package/dist/SplitPane.js +1 -1
- package/dist/Stack-BPTehVYc.js +53 -0
- package/dist/Stack.css +1 -1
- package/dist/Stack.d.ts +2 -1
- package/dist/Stack.js +1 -1
- package/dist/Stat-p8j4PjrC.js +28 -0
- package/dist/Stat.css +1 -1
- package/dist/Stat.js +1 -1
- package/dist/TabSections-Dppe9wiz.js +84 -0
- package/dist/TabSections.css +1 -1
- package/dist/TabSections.d.ts +7 -2
- package/dist/TabSections.js +1 -1
- package/dist/Table-DqrDUUtb.js +27 -0
- package/dist/Table.css +1 -1
- package/dist/Table.d.ts +10 -2
- package/dist/Table.js +1 -1
- package/dist/Text-Bo1u7gVC.js +25 -0
- package/dist/Text.css +1 -0
- package/dist/Text.d.ts +19 -0
- package/dist/Text.js +4 -0
- package/dist/TextGroup-236jHxdT.js +23 -0
- package/dist/TextGroup.css +1 -1
- package/dist/TextGroup.js +1 -1
- package/dist/Toolbar-Bl9-5Mis.js +35 -0
- package/dist/Toolbar.css +1 -1
- package/dist/Toolbar.d.ts +7 -12
- package/dist/Toolbar.js +1 -2
- package/dist/cx.d.ts +1 -1
- package/dist/dark.css +12 -0
- package/dist/index.css +41 -39
- package/dist/index.d.ts +7 -12
- package/dist/index.es.d.ts +7 -12
- package/dist/index.es.js +110 -107
- package/dist/kit-manifest.json +1646 -0
- package/dist/lazyRoute.d.ts +12 -6
- package/dist/light.css +12 -0
- package/dist/navTree.d.ts +13 -1
- package/dist/rovingKeys-Di9N1Nct.js +23 -0
- package/dist/rovingKeys.d.ts +7 -1
- package/dist/stackGap.d.ts +1 -1
- package/dist/tokens.css +20 -2
- package/dist/useControllableValue-BaE0VR5d.js +13 -0
- package/dist/useControllableValue.d.ts +3 -0
- package/package.json +48 -4
- package/dist/ActionGroup-ChKFW0mt.js +0 -27
- package/dist/Avatar-loGgFt72.js +0 -113
- package/dist/AvatarGroup-D1gnT3Od.js +0 -81
- package/dist/AvatarName-0BzyfpMq.js +0 -68
- package/dist/Badge-jp-9iNNL.js +0 -28
- package/dist/Banner-B72lcEMo.js +0 -34
- package/dist/Block-Bu7NEA0g.js +0 -8
- package/dist/Block.d.ts +0 -30
- package/dist/Block.js +0 -4
- package/dist/Brand-Zq-Idks4.js +0 -34
- package/dist/Breadcrumb-CAM_e9LN.js +0 -98
- package/dist/Card-hn37Opo3.js +0 -12
- package/dist/ChatFrame-BW2TmCkZ.js +0 -37
- package/dist/ChatSplit-DNnu3TNq.js +0 -21
- package/dist/CodeBlock-CRzVopIv.js +0 -25
- package/dist/Column-BiogBDf8.js +0 -8
- package/dist/Column.d.ts +0 -24
- package/dist/Column.js +0 -4
- package/dist/Dropdown-DosvDR13.js +0 -147
- package/dist/EmptyState-mBiWtMIM.js +0 -23
- package/dist/Header-DZQopVNy.js +0 -21
- package/dist/Healthmap-B6cdiLUl.js +0 -243
- package/dist/ItemColumn-M7a9L8CI.js +0 -41
- package/dist/Layout-mi6Ghayv.js +0 -31
- package/dist/List-BgKkYaGO.js +0 -12
- package/dist/Loading-DkkG7RcE.js +0 -16
- package/dist/Menu-DuXQv-zT.js +0 -66
- package/dist/NavSections-D6rDEtT1.js +0 -142
- package/dist/PageHead-DgaJ1mXY.js +0 -31
- package/dist/PageShell-D9EZiO8o.js +0 -30
- package/dist/PanelInfo-A5y5ysH8.js +0 -81
- package/dist/Popover-DWdvZTuA.js +0 -135
- package/dist/PricingGroup-Czuhe81Z.js +0 -120
- package/dist/PricingTable-BuLC0opK.js +0 -152
- package/dist/RadioGroup-fcXzhvMu.js +0 -129
- package/dist/Row-DsQOVn18.js +0 -8
- package/dist/Row.d.ts +0 -24
- package/dist/Row.js +0 -4
- package/dist/Section-Crxk2J-E.js +0 -34
- package/dist/Sidebar-CYFaPqdC.js +0 -178
- package/dist/SplitPane-DR7PCZ8f.js +0 -74
- package/dist/Stack-XkmPSswj.js +0 -53
- package/dist/Stat-sKXJwz5L.js +0 -27
- package/dist/TabSections-DN7yVJoF.js +0 -69
- package/dist/Table-BoDr3X2d.js +0 -25
- package/dist/TextGroup-DmhuyMR1.js +0 -23
- package/dist/Toolbar-C1zAk9ak.js +0 -42
- package/dist/rovingKeys-CGlfTtNQ.js +0 -15
- package/dist/useControllableValue-CWqH1kpM.js +0 -10
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
import { D as M } from "./Dropdown-CR_XxNak.js";
|
|
3
|
+
import { c as x } from "./cx-CcykAxZN.js";
|
|
4
|
+
import { c as O, b as P, a as j, i as z } from "./navTree-BRyaILN9.js";
|
|
5
|
+
import { h as A } from "./rovingKeys-Di9N1Nct.js";
|
|
6
|
+
import { u as q } from "./useControllableValue-BaE0VR5d.js";
|
|
7
|
+
import { B as T } from "./Badge-BjScAXGy.js";
|
|
8
|
+
import { I as W } from "./Item-CGpkMJu0.js";
|
|
9
|
+
import { b as G } from "./badgeText-CRzlIzi3.js";
|
|
10
|
+
import './Sidebar.css';const H = "nsr", J = "nsb", Q = "nsx", U = "nsg", V = "nss", X = "nsp", Y = "nsh", Z = "nsn", _ = "nsi", $ = "nsa", ee = "nso", ne = "nsl", te = "nsd", ae = "nsc", le = "nsm", se = "nsf", ce = "nsq", re = "nsw", oe = "nsu", ie = "nsk", ue = "nsv", n = {
|
|
11
|
+
root: H,
|
|
12
|
+
brand: J,
|
|
13
|
+
xtra: Q,
|
|
14
|
+
groups: U,
|
|
15
|
+
section: V,
|
|
16
|
+
plain: X,
|
|
17
|
+
heading: Y,
|
|
18
|
+
nav: Z,
|
|
19
|
+
item: _,
|
|
20
|
+
active: $,
|
|
21
|
+
oico: ee,
|
|
22
|
+
label: ne,
|
|
23
|
+
dot: te,
|
|
24
|
+
chevron: ae,
|
|
25
|
+
menu: le,
|
|
26
|
+
footer: se,
|
|
27
|
+
qmenu: ce,
|
|
28
|
+
who: re,
|
|
29
|
+
userbtn: oe,
|
|
30
|
+
kebab: ie,
|
|
31
|
+
ver: ue
|
|
32
|
+
};
|
|
33
|
+
function me({ className: s }) {
|
|
34
|
+
return /* @__PURE__ */ e.createElement("svg", { className: s, viewBox: "0 0 16 16", "aria-hidden": !0 }, /* @__PURE__ */ e.createElement("circle", { cx: "8", cy: "3", r: "1.3", fill: "currentColor" }), /* @__PURE__ */ e.createElement("circle", { cx: "8", cy: "8", r: "1.3", fill: "currentColor" }), /* @__PURE__ */ e.createElement("circle", { cx: "8", cy: "13", r: "1.3", fill: "currentColor" }));
|
|
35
|
+
}
|
|
36
|
+
function de({ className: s }) {
|
|
37
|
+
return /* @__PURE__ */ e.createElement("svg", { className: s, viewBox: "0 0 12 12", "aria-hidden": !0 }, /* @__PURE__ */ e.createElement(
|
|
38
|
+
"path",
|
|
39
|
+
{
|
|
40
|
+
d: "M2.5 4.5 6 8l3.5-3.5",
|
|
41
|
+
fill: "none",
|
|
42
|
+
stroke: "currentColor",
|
|
43
|
+
strokeWidth: "1.5",
|
|
44
|
+
strokeLinecap: "round",
|
|
45
|
+
strokeLinejoin: "round"
|
|
46
|
+
}
|
|
47
|
+
));
|
|
48
|
+
}
|
|
49
|
+
function B({
|
|
50
|
+
items: s,
|
|
51
|
+
value: v,
|
|
52
|
+
focusValue: b,
|
|
53
|
+
open: p,
|
|
54
|
+
onValueChange: d,
|
|
55
|
+
onToggle: E
|
|
56
|
+
}) {
|
|
57
|
+
return /* @__PURE__ */ e.createElement(e.Fragment, null, s.map((a) => {
|
|
58
|
+
const f = a.items, c = f != null && f.length > 0, o = c && p.includes(a.value), i = G(a.badge), u = !c && v === a.value, N = a.value === (b ?? v);
|
|
59
|
+
return /* @__PURE__ */ e.createElement("li", { key: a.value }, /* @__PURE__ */ e.createElement(
|
|
60
|
+
W,
|
|
61
|
+
{
|
|
62
|
+
as: "button",
|
|
63
|
+
active: u,
|
|
64
|
+
className: x(n.item, u && n.active),
|
|
65
|
+
"data-value": a.value,
|
|
66
|
+
"aria-current": u ? "page" : void 0,
|
|
67
|
+
"aria-expanded": c ? o : void 0,
|
|
68
|
+
"data-open": o ? "true" : void 0,
|
|
69
|
+
tabIndex: N ? 0 : -1,
|
|
70
|
+
onClick: () => {
|
|
71
|
+
c ? E(a.value) : d == null || d(a.value);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
a.icon != null ? /* @__PURE__ */ e.createElement("span", { className: n.oico, "aria-hidden": !0 }, a.icon) : null,
|
|
75
|
+
/* @__PURE__ */ e.createElement("span", { className: n.label }, a.label),
|
|
76
|
+
i != null ? /* @__PURE__ */ e.createElement(T, { className: n.dot, tone: "accent", size: "s" }, i) : null,
|
|
77
|
+
c ? /* @__PURE__ */ e.createElement(de, { className: n.chevron }) : null
|
|
78
|
+
), c && o ? /* @__PURE__ */ e.createElement("ul", { className: n.menu }, /* @__PURE__ */ e.createElement(
|
|
79
|
+
B,
|
|
80
|
+
{
|
|
81
|
+
items: f,
|
|
82
|
+
value: v,
|
|
83
|
+
focusValue: b,
|
|
84
|
+
open: p,
|
|
85
|
+
onValueChange: d,
|
|
86
|
+
onToggle: E
|
|
87
|
+
}
|
|
88
|
+
)) : null);
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
function xe({
|
|
92
|
+
groups: s = [],
|
|
93
|
+
value: v,
|
|
94
|
+
defaultValue: b,
|
|
95
|
+
onValueChange: p,
|
|
96
|
+
open: d,
|
|
97
|
+
defaultOpen: E,
|
|
98
|
+
onOpenChange: a,
|
|
99
|
+
variant: f = "cards",
|
|
100
|
+
brand: c,
|
|
101
|
+
extra: o,
|
|
102
|
+
footer: i,
|
|
103
|
+
footerItems: u,
|
|
104
|
+
onFooterValueChange: N,
|
|
105
|
+
footerMenuLabel: C = "Меню аккаунта",
|
|
106
|
+
version: h,
|
|
107
|
+
className: D,
|
|
108
|
+
"aria-label": S = "Основное меню"
|
|
109
|
+
}) {
|
|
110
|
+
const [l, y] = q(
|
|
111
|
+
v,
|
|
112
|
+
b,
|
|
113
|
+
p
|
|
114
|
+
), [m = [], k] = q(
|
|
115
|
+
d,
|
|
116
|
+
O(s, E, l),
|
|
117
|
+
a
|
|
118
|
+
), g = e.useRef(l);
|
|
119
|
+
e.useEffect(() => {
|
|
120
|
+
if (l == null || l === g.current) {
|
|
121
|
+
g.current = l;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
g.current = l;
|
|
125
|
+
const r = P(s, l).filter((L) => !m.includes(L));
|
|
126
|
+
r.length && k([...m, ...r]);
|
|
127
|
+
}, [l, s, m, k]);
|
|
128
|
+
const I = (t) => {
|
|
129
|
+
k(
|
|
130
|
+
m.includes(t) ? m.filter((r) => r !== t) : [...m, t]
|
|
131
|
+
);
|
|
132
|
+
}, w = e.useRef(null), F = j(s).map((t) => t.value), [R, K] = e.useState(l);
|
|
133
|
+
return e.useEffect(() => {
|
|
134
|
+
l && K(l);
|
|
135
|
+
}, [l]), /* @__PURE__ */ e.createElement(
|
|
136
|
+
"aside",
|
|
137
|
+
{
|
|
138
|
+
className: x(n.root, f === "plain" && n.plain, D),
|
|
139
|
+
"aria-label": S
|
|
140
|
+
},
|
|
141
|
+
c != null || o != null ? /* @__PURE__ */ e.createElement("div", { className: n.brand }, c, o != null ? /* @__PURE__ */ e.createElement("div", { className: n.xtra }, o) : null) : null,
|
|
142
|
+
/* @__PURE__ */ e.createElement(
|
|
143
|
+
"div",
|
|
144
|
+
{
|
|
145
|
+
ref: w,
|
|
146
|
+
className: n.groups,
|
|
147
|
+
onKeyDown: (t) => A(t, {
|
|
148
|
+
values: F,
|
|
149
|
+
value: R,
|
|
150
|
+
vertical: !0,
|
|
151
|
+
focusRoot: w.current,
|
|
152
|
+
onSelect: (r) => {
|
|
153
|
+
K(r), z(s, r) || y(r);
|
|
154
|
+
}
|
|
155
|
+
})
|
|
156
|
+
},
|
|
157
|
+
s.map((t) => /* @__PURE__ */ e.createElement(
|
|
158
|
+
"nav",
|
|
159
|
+
{
|
|
160
|
+
key: t.value,
|
|
161
|
+
className: n.section,
|
|
162
|
+
"aria-label": t.title ?? "Навигация"
|
|
163
|
+
},
|
|
164
|
+
t.title ? /* @__PURE__ */ e.createElement("div", { className: n.heading }, t.title) : null,
|
|
165
|
+
/* @__PURE__ */ e.createElement("ul", { className: n.nav }, /* @__PURE__ */ e.createElement(
|
|
166
|
+
B,
|
|
167
|
+
{
|
|
168
|
+
items: t.items ?? [],
|
|
169
|
+
value: l,
|
|
170
|
+
focusValue: R,
|
|
171
|
+
open: m,
|
|
172
|
+
onValueChange: y,
|
|
173
|
+
onToggle: I
|
|
174
|
+
}
|
|
175
|
+
))
|
|
176
|
+
))
|
|
177
|
+
),
|
|
178
|
+
i != null || h != null ? /* @__PURE__ */ e.createElement("div", { className: x(n.section, n.footer) }, i != null && u != null && u.length > 0 ? /* @__PURE__ */ e.createElement(
|
|
179
|
+
M,
|
|
180
|
+
{
|
|
181
|
+
className: n.qmenu,
|
|
182
|
+
tone: "account",
|
|
183
|
+
align: "start",
|
|
184
|
+
placement: "top",
|
|
185
|
+
label: C,
|
|
186
|
+
trigger: (t) => /* @__PURE__ */ e.createElement(
|
|
187
|
+
"button",
|
|
188
|
+
{
|
|
189
|
+
type: "button",
|
|
190
|
+
className: n.userbtn,
|
|
191
|
+
"data-open": t.open ? "true" : void 0,
|
|
192
|
+
...t.anchorProps
|
|
193
|
+
},
|
|
194
|
+
/* @__PURE__ */ e.createElement("span", { className: n.who }, i),
|
|
195
|
+
/* @__PURE__ */ e.createElement(me, { className: n.kebab })
|
|
196
|
+
),
|
|
197
|
+
items: u,
|
|
198
|
+
onValueChange: N
|
|
199
|
+
}
|
|
200
|
+
) : i, h != null ? /* @__PURE__ */ e.createElement("div", { className: n.ver }, h) : null) : null
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
export {
|
|
204
|
+
xe as S
|
|
205
|
+
};
|
package/dist/Sidebar.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.
|
|
1
|
+
@layer elcrm-components{.nsr{box-sizing:border-box;display:flex;flex-direction:column;flex:1 1 auto;width:var(--sidebar-width);min-width:0;min-height:0;height:100%;max-height:100%;padding:var(--sidebar-pad-y) var(--sidebar-pad-x);gap:var(--shell-gap-sm, 8px);color:var(--shell-color);align-self:stretch}.nsb{display:flex;flex-direction:row;align-items:center;gap:var(--shell-gap);padding:4px var(--shell-gap-sm);min-width:0}.nsx{flex-shrink:0;margin-left:auto}.nsg{flex:1;min-height:0;display:flex;flex-direction:column;gap:var(--shell-gap-sm);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin}.nss{box-sizing:border-box;flex-shrink:0;padding:var(--shell-gap-sm)}.nsp{--sidebar-plain: 1}.nsr:not(.nsp) .nss{background:var(--sidebar-block-bg);border:1px solid var(--sidebar-block-border);border-radius:var(--sidebar-block-radius);box-shadow:var(--sidebar-block-shadow)}.nsh{margin:2px 10px 6px;font-size:var(--sidebar-group-font-size);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--shell-color-muted)}.nsn{margin:0;padding:0;list-style:none}.nsn>li{list-style:none}.nsn .nsi:is(button){position:relative;display:flex;width:100%;box-sizing:border-box;flex-direction:row;align-items:center;gap:var(--shell-gap-sm);margin:0 0 1px;padding:var(--sidebar-item-padding);border:0;border-radius:var(--shell-radius);background:transparent;color:var(--shell-color-muted);font-family:inherit;font-size:var(--sidebar-item-font-size);font-weight:500;line-height:1.25;letter-spacing:0;text-align:left;cursor:pointer}.nsn .nsi:is(button):hover{color:var(--shell-color);background:var(--shell-background-hover)}.nsn .nsi:is(button).nsa,.nsn .nsi:is(button)[aria-current=page],.nsn .nsi:is(button)[data-active=true],.nsn .nsi:is(button).nsa:hover{color:var(--sidebar-item-active);background:var(--sidebar-item-active-bg)}.nso{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--sidebar-icon-size);height:var(--sidebar-icon-size);color:inherit}.nso :is(svg){display:block;width:var(--sidebar-icon-size);height:var(--sidebar-icon-size)}.nsa .nso{color:var(--sidebar-icon-active)}.nsl{flex:1;min-width:0}.nsd{flex-shrink:0;min-width:var(--sidebar-icon-size);height:var(--sidebar-icon-size);padding:0 4px;font-size:10px}.nsc{flex-shrink:0;width:var(--shell-status-size);height:var(--shell-status-size);margin-left:auto;color:var(--shell-color-muted);transition:transform .15s ease}.nsn .nsi:is(button)[data-open=true] .nsc{transform:rotate(180deg);color:inherit}.nsm{margin:0;padding:0 0 0 var(--sidebar-indent);list-style:none}.nsm>li{list-style:none}.nsf{margin-top:auto}.nsq{position:relative;display:flex;width:100%;min-width:0;flex:0 0 auto;height:auto;align-items:stretch}.nsq>*{display:flex;width:100%;min-width:0;height:auto;align-items:stretch}.nsw{display:flex;flex:1 1 auto;width:100%;min-width:0;align-items:center}.nsw>*{flex:1 1 auto;min-width:0;max-width:100%}.nsu{display:flex;align-items:center;gap:var(--sidebar-account-chip-gap);width:100%;min-width:0;margin:0;padding:var(--sidebar-account-chip-padding);border:none;border-radius:var(--sidebar-account-chip-radius);background:transparent;font:inherit;color:var(--shell-color);cursor:pointer;text-align:left;transition:background .15s ease}.nsu:hover,.nsu[data-open=true]{background:var(--shell-background-hover)}.nsk{flex-shrink:0;width:var(--sidebar-icon-size);height:var(--sidebar-icon-size);color:var(--shell-color-muted)}.nsv{margin-top:2px;padding:4px 8px 2px;font-size:11px;line-height:1.2;color:var(--shell-color-muted);text-align:left;-webkit-user-select:text;user-select:text}@media (max-width: 900px){.nsr{width:72px;padding:var(--shell-gap) var(--shell-gap-sm)}.nsl,.nsh,.nsv,.nsc,.nsm{display:none}.nsb{flex-direction:column;justify-content:center;align-items:center;gap:var(--shell-gap-sm);padding:4px 0}.nsx{margin-left:0}.nss{padding:6px}.nsn .nsi{justify-content:center;align-items:center;gap:0;width:100%;min-height:40px;padding:10px 0}.nsn .nsd{position:absolute;top:4px;right:4px;min-width:14px;height:14px;padding:0 4px;font-size:.625rem;line-height:14px;pointer-events:none}}}
|
package/dist/Sidebar.d.ts
CHANGED
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { DropdownItem } from './Dropdown';
|
|
3
|
+
import { NavTreeItem } from './navTree';
|
|
3
4
|
/** Вид колонки: карточки (консоль) или плоский список (backoffice) */
|
|
4
5
|
export type SidebarVariant = "cards" | "plain";
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Пункт бокового меню. База — {@link NavTreeItem}; здесь `label: string` + `badge`.
|
|
8
|
+
*/
|
|
9
|
+
export type SidebarItem = Omit<NavTreeItem, "label" | "items"> & {
|
|
9
10
|
label: string;
|
|
10
|
-
/** Иконка (слот приложения) */
|
|
11
|
-
icon?: React.ReactNode;
|
|
12
11
|
/** Счётчик справа */
|
|
13
12
|
badge?: number | string | null;
|
|
14
|
-
/**
|
|
15
|
-
* Вложенные пункты — есть → шеврон и раскрытие.
|
|
16
|
-
* Клик по родителю только открывает/закрывает, `onSelect` не зовём.
|
|
17
|
-
*/
|
|
18
13
|
items?: SidebarItem[];
|
|
19
|
-
/**
|
|
20
|
-
* Подменю открыто при первом рендере.
|
|
21
|
-
* Если выбран потомок — ветка откроется сама.
|
|
22
|
-
* @default false
|
|
23
|
-
*/
|
|
24
|
-
defaultOpen?: boolean;
|
|
25
14
|
};
|
|
26
15
|
/** Группа пунктов. `title` — «Аккаунт» / «Админ». */
|
|
27
16
|
export type SidebarGroup = {
|
|
@@ -46,7 +35,7 @@ export type SidebarGroup = {
|
|
|
46
35
|
* <Sidebar
|
|
47
36
|
* variant="cards"
|
|
48
37
|
* value={page}
|
|
49
|
-
*
|
|
38
|
+
* onValueChange={setPage}
|
|
50
39
|
* brand={<Brand as="strong">App</Brand>}
|
|
51
40
|
* extra={<Notifications.Bell />}
|
|
52
41
|
* groups={[
|
|
@@ -74,22 +63,25 @@ export type SidebarGroup = {
|
|
|
74
63
|
* { value: "theme", label: "Тема", submenu: true },
|
|
75
64
|
* { value: "logout", label: "Выйти", danger: true },
|
|
76
65
|
* ]}
|
|
77
|
-
*
|
|
66
|
+
* onFooterValueChange={(value) => console.log(value)}
|
|
78
67
|
* version="v 0.2.26"
|
|
79
68
|
* />
|
|
80
69
|
* ```
|
|
81
70
|
*
|
|
71
|
+
* Меню аккаунта (`footerItems`): chip как elWMS SidebarUserMenu + `Dropdown tone="account"`
|
|
72
|
+
* (токены `--sidebar-account-*`).
|
|
73
|
+
*
|
|
82
74
|
* Токены: `--sidebar-*`, цвета — `--shell-*`.
|
|
83
75
|
*/
|
|
84
76
|
export type SidebarProps = {
|
|
85
|
-
/** Группы пунктов (`value` + `items`) */
|
|
77
|
+
/** Группы пунктов (`value` + `items`). Канон — только `groups`. */
|
|
86
78
|
groups?: SidebarGroup[];
|
|
87
|
-
/**
|
|
88
|
-
items?: SidebarGroup[];
|
|
89
|
-
/** Текущий пункт */
|
|
79
|
+
/** Текущий пункт (controlled). */
|
|
90
80
|
value?: string;
|
|
91
|
-
/**
|
|
92
|
-
|
|
81
|
+
/** Начальный пункт (uncontrolled). */
|
|
82
|
+
defaultValue?: string;
|
|
83
|
+
/** Выбор пункта (только листья, без вложенных `items`). */
|
|
84
|
+
onValueChange?: (value: string) => void;
|
|
93
85
|
/**
|
|
94
86
|
* Раскрытые родители (их `value`). Контролируемый режим.
|
|
95
87
|
* Вместе с `onOpenChange`.
|
|
@@ -119,7 +111,7 @@ export type SidebarProps = {
|
|
|
119
111
|
*/
|
|
120
112
|
footerItems?: DropdownItem[];
|
|
121
113
|
/** Выбор пункта меню аккаунта */
|
|
122
|
-
|
|
114
|
+
onFooterValueChange?: (value: string, item: DropdownItem) => void;
|
|
123
115
|
/** `aria-label` панели меню аккаунта */
|
|
124
116
|
footerMenuLabel?: string;
|
|
125
117
|
/** Версия под футером */
|
|
@@ -133,4 +125,4 @@ export type SidebarProps = {
|
|
|
133
125
|
*
|
|
134
126
|
* @see Layout, Brand, Item, Badge, NavSections
|
|
135
127
|
*/
|
|
136
|
-
export declare function Sidebar({ groups,
|
|
128
|
+
export declare function Sidebar({ groups, value: valueProp, defaultValue, onValueChange, open: openProp, defaultOpen, onOpenChange, variant, brand, extra, footer, footerItems, onFooterValueChange, footerMenuLabel, version, className, "aria-label": ariaLabel, }: SidebarProps): React.JSX.Element;
|
package/dist/Sidebar.js
CHANGED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import m from "react";
|
|
2
|
+
import { c as C } from "./cx-CcykAxZN.js";
|
|
3
|
+
import { u as P } from "./useControllableValue-BaE0VR5d.js";
|
|
4
|
+
import './SplitPane.css';function E(e, o, p, y) {
|
|
5
|
+
if (o <= 0) return e;
|
|
6
|
+
const l = p / o, c = 1 - y / o;
|
|
7
|
+
return c < l ? 0.5 : Math.max(l, Math.min(c, e));
|
|
8
|
+
}
|
|
9
|
+
const H = "dsr", K = "dsx", U = "dsy", V = "dsp", X = "dsh", i = {
|
|
10
|
+
root: H,
|
|
11
|
+
xaxis: K,
|
|
12
|
+
yaxis: U,
|
|
13
|
+
pane: V,
|
|
14
|
+
handle: X
|
|
15
|
+
}, g = 6;
|
|
16
|
+
function v() {
|
|
17
|
+
if (typeof document > "u") return g;
|
|
18
|
+
const e = getComputedStyle(document.documentElement).getPropertyValue("--split-handle-size").trim(), o = Number.parseFloat(e);
|
|
19
|
+
return Number.isFinite(o) && o > 0 ? o : g;
|
|
20
|
+
}
|
|
21
|
+
function q({
|
|
22
|
+
direction: e,
|
|
23
|
+
ratio: o,
|
|
24
|
+
defaultRatio: p = 0.5,
|
|
25
|
+
onRatioChange: y,
|
|
26
|
+
minFirst: l = 140,
|
|
27
|
+
minSecond: c = 140,
|
|
28
|
+
first: R,
|
|
29
|
+
second: S,
|
|
30
|
+
className: k,
|
|
31
|
+
...N
|
|
32
|
+
}) {
|
|
33
|
+
const x = m.useRef(null), D = e === "horizontal" ? "x" : "y", [r = p, z] = P(
|
|
34
|
+
o,
|
|
35
|
+
p,
|
|
36
|
+
y
|
|
37
|
+
), L = (t) => {
|
|
38
|
+
t.preventDefault();
|
|
39
|
+
const a = x.current;
|
|
40
|
+
if (!a) return;
|
|
41
|
+
const n = v(), s = a.getBoundingClientRect(), u = e === "horizontal" ? s.width - n : s.height - n, d = (h, A) => {
|
|
42
|
+
const B = e === "horizontal" ? h - s.left : A - s.top;
|
|
43
|
+
z(E(B / u, u, l, c));
|
|
44
|
+
};
|
|
45
|
+
d(t.clientX, t.clientY);
|
|
46
|
+
const f = (h) => {
|
|
47
|
+
d(h.clientX, h.clientY);
|
|
48
|
+
}, b = () => {
|
|
49
|
+
document.removeEventListener("pointermove", f), document.removeEventListener("pointerup", b), document.body.style.cursor = "", document.body.style.userSelect = "";
|
|
50
|
+
};
|
|
51
|
+
document.body.style.cursor = e === "horizontal" ? "col-resize" : "row-resize", document.body.style.userSelect = "none", document.addEventListener("pointermove", f), document.addEventListener("pointerup", b);
|
|
52
|
+
}, w = v(), M = `calc((100% - ${w}px) * ${r})`, $ = `calc((100% - ${w}px) * ${1 - r})`;
|
|
53
|
+
return /* @__PURE__ */ m.createElement(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
ref: x,
|
|
57
|
+
className: C(i.root, D === "x" ? i.xaxis : i.yaxis, k),
|
|
58
|
+
...N
|
|
59
|
+
},
|
|
60
|
+
/* @__PURE__ */ m.createElement("div", { className: i.pane, style: { flexBasis: M } }, R),
|
|
61
|
+
/* @__PURE__ */ m.createElement(
|
|
62
|
+
"button",
|
|
63
|
+
{
|
|
64
|
+
type: "button",
|
|
65
|
+
className: i.handle,
|
|
66
|
+
role: "separator",
|
|
67
|
+
"aria-label": "Разделитель панелей",
|
|
68
|
+
"aria-orientation": e === "horizontal" ? "vertical" : "horizontal",
|
|
69
|
+
"aria-valuenow": Math.round(r * 100),
|
|
70
|
+
"aria-valuemin": 0,
|
|
71
|
+
"aria-valuemax": 100,
|
|
72
|
+
"aria-valuetext": `${Math.round(r * 100)}%`,
|
|
73
|
+
onPointerDown: L,
|
|
74
|
+
onKeyDown: (t) => {
|
|
75
|
+
const a = t.shiftKey ? 0.1 : 0.02;
|
|
76
|
+
let n;
|
|
77
|
+
if (e === "horizontal" ? t.key === "ArrowLeft" ? n = r - a : t.key === "ArrowRight" && (n = r + a) : t.key === "ArrowUp" ? n = r - a : t.key === "ArrowDown" && (n = r + a), t.key === "Home" ? n = 0 : t.key === "End" && (n = 1), n == null) return;
|
|
78
|
+
t.preventDefault();
|
|
79
|
+
const s = x.current;
|
|
80
|
+
if (!s) return;
|
|
81
|
+
const u = v(), d = s.getBoundingClientRect(), f = e === "horizontal" ? d.width - u : d.height - u;
|
|
82
|
+
z(E(n, f, l, c));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
/* @__PURE__ */ m.createElement("div", { className: i.pane, style: { flexBasis: $ } }, S)
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
q as S,
|
|
91
|
+
E as c
|
|
92
|
+
};
|
package/dist/SplitPane.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.
|
|
1
|
+
@layer elcrm-components{.dsr{display:flex;min-height:0;min-width:0}.dsx{flex-direction:row}.dsy{flex-direction:column}.dsp{min-width:0;min-height:0;overflow:auto}.dsh{flex:0 0 var(--split-handle-size);margin:0;padding:0;border:0;background:var(--split-handle-bg);cursor:col-resize;touch-action:none}.dsy .dsh{cursor:row-resize}.dsh:hover,.dsh:focus-visible{background:var(--split-handle-bg-hover)}}
|
package/dist/SplitPane.d.ts
CHANGED
|
@@ -2,9 +2,11 @@ import { default as React } from 'react';
|
|
|
2
2
|
export type SplitPaneDirection = "horizontal" | "vertical";
|
|
3
3
|
export type SplitPaneProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
4
4
|
direction: SplitPaneDirection;
|
|
5
|
-
/** Доля первой панели 0…1 */
|
|
6
|
-
ratio
|
|
7
|
-
|
|
5
|
+
/** Доля первой панели 0…1 (controlled). */
|
|
6
|
+
ratio?: number;
|
|
7
|
+
/** Начальная доля (uncontrolled). @default 0.5 */
|
|
8
|
+
defaultRatio?: number;
|
|
9
|
+
onRatioChange?: (ratio: number) => void;
|
|
8
10
|
minFirst?: number;
|
|
9
11
|
minSecond?: number;
|
|
10
12
|
first: React.ReactNode;
|
|
@@ -17,13 +19,12 @@ export type SplitPaneProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
17
19
|
* ```tsx
|
|
18
20
|
* <SplitPane
|
|
19
21
|
* direction="horizontal"
|
|
20
|
-
* ratio={
|
|
22
|
+
* ratio={ratio}
|
|
21
23
|
* onRatioChange={setRatio}
|
|
22
24
|
* first={<Preview />}
|
|
23
25
|
* second={<Editor />}
|
|
24
26
|
* />
|
|
27
|
+
* <SplitPane direction="horizontal" defaultRatio={0.58} first={…} second={…} />
|
|
25
28
|
* ```
|
|
26
|
-
*
|
|
27
|
-
* Токены: `--split-handle-size`, `--split-handle-bg`.
|
|
28
29
|
*/
|
|
29
|
-
export declare function SplitPane({ direction, ratio, onRatioChange, minFirst, minSecond, first, second, className, ...rest }: SplitPaneProps): React.JSX.Element;
|
|
30
|
+
export declare function SplitPane({ direction, ratio: ratioProp, defaultRatio, onRatioChange, minFirst, minSecond, first, second, className, ...rest }: SplitPaneProps): React.JSX.Element;
|
package/dist/SplitPane.js
CHANGED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import i from "react";
|
|
2
|
+
import { c as u } from "./cx-CcykAxZN.js";
|
|
3
|
+
import './Stack.css';function c(t) {
|
|
4
|
+
if (t != null)
|
|
5
|
+
return { gap: typeof t == "number" ? `${t}px` : t };
|
|
6
|
+
}
|
|
7
|
+
const f = "ksr", p = "ksc", d = "ksg", k = "ksh", g = "ksn", o = {
|
|
8
|
+
root: f,
|
|
9
|
+
column: p,
|
|
10
|
+
grid: d,
|
|
11
|
+
horizontal: k,
|
|
12
|
+
named: g
|
|
13
|
+
};
|
|
14
|
+
function h(t) {
|
|
15
|
+
if (typeof t == "number")
|
|
16
|
+
return t <= 0 ? void 0 : `repeat(${t}, minmax(0, 1fr))`;
|
|
17
|
+
if (t.length !== 0)
|
|
18
|
+
return t.map((n) => typeof n == "number" ? `${n}px` : n).join(" ");
|
|
19
|
+
}
|
|
20
|
+
function y({
|
|
21
|
+
direction: t = "column",
|
|
22
|
+
columns: n,
|
|
23
|
+
gap: e,
|
|
24
|
+
children: a,
|
|
25
|
+
className: m,
|
|
26
|
+
style: s,
|
|
27
|
+
...l
|
|
28
|
+
}) {
|
|
29
|
+
const r = t === "grid" && n != null ? h(n) : void 0;
|
|
30
|
+
return /* @__PURE__ */ i.createElement(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: u(
|
|
34
|
+
o.root,
|
|
35
|
+
t === "column" && o.column,
|
|
36
|
+
t === "row" && o.horizontal,
|
|
37
|
+
t === "grid" && (r ? o.named : o.grid),
|
|
38
|
+
m
|
|
39
|
+
),
|
|
40
|
+
style: {
|
|
41
|
+
...c(e),
|
|
42
|
+
...r ? { "--stack-columns-template": r } : null,
|
|
43
|
+
...s
|
|
44
|
+
},
|
|
45
|
+
...l
|
|
46
|
+
},
|
|
47
|
+
a
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
y as S,
|
|
52
|
+
h as s
|
|
53
|
+
};
|
package/dist/Stack.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.
|
|
1
|
+
@layer elcrm-components{.ksr{box-sizing:border-box;min-width:0;gap:var(--shell-gap)}.ksc,.ksg{width:100%}.ksc{display:flex;flex-direction:column}.ksh{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;width:auto;max-width:100%}.ksg{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--stack-grid-min)),1fr))}.ksn{display:grid;width:100%;align-items:stretch;grid-template-columns:var(--stack-columns-template)}}
|
package/dist/Stack.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export declare function stackColumnsTemplate(columns: StackColumns): string | un
|
|
|
8
8
|
/**
|
|
9
9
|
* Универсальный стек (ряд / колонка) с отступами между детьми.
|
|
10
10
|
*
|
|
11
|
-
* Роли: Stack = базовая
|
|
11
|
+
* Роли: Stack = базовая раскладка (Block / Row / Column удалены —
|
|
12
|
+
* `elcrm migrate components`).
|
|
12
13
|
* Внутри Section, Card, форм и списков действий.
|
|
13
14
|
*
|
|
14
15
|
* @example
|
package/dist/Stack.js
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
import { C as u } from "./Card-a7N8Uh_H.js";
|
|
3
|
+
import { c as n } from "./cx-CcykAxZN.js";
|
|
4
|
+
import './Stat.css';const p = "ktr", k = "ktl", g = "kte", i = "ktv", d = "kta", w = "ktu", f = "ktw", v = "ktd", b = "ktn", t = {
|
|
5
|
+
root: p,
|
|
6
|
+
label: k,
|
|
7
|
+
emph: g,
|
|
8
|
+
value: i,
|
|
9
|
+
accent: d,
|
|
10
|
+
up: w,
|
|
11
|
+
warning: f,
|
|
12
|
+
danger: v,
|
|
13
|
+
neutral: b
|
|
14
|
+
};
|
|
15
|
+
function N({
|
|
16
|
+
label: c,
|
|
17
|
+
value: r,
|
|
18
|
+
tone: a = "neutral",
|
|
19
|
+
labelMuted: s = !0,
|
|
20
|
+
className: o,
|
|
21
|
+
...l
|
|
22
|
+
}) {
|
|
23
|
+
const m = a === "accent" ? t.accent : a === "success" ? t.up : a === "warning" ? t.warning : a === "danger" ? t.danger : t.neutral;
|
|
24
|
+
return /* @__PURE__ */ e.createElement(u, { className: n(t.root, m, o), ...l }, /* @__PURE__ */ e.createElement("span", { className: n(t.label, !s && t.emph) }, c), /* @__PURE__ */ e.createElement("span", { className: t.value }, r));
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
N as S
|
|
28
|
+
};
|
package/dist/Stat.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.
|
|
1
|
+
@layer elcrm-components{.ktr{display:flex;flex-direction:column;gap:6px}.ktl{font-size:var(--shell-font-size-sm);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--shell-color-muted);line-height:1.2}.kte{color:var(--shell-color)}.ktv{font-size:var(--stat-value-size);font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--shell-color)}.kta .ktv{color:var(--shell-color-accent)}.ktu .ktv{color:var(--shell-color-success)}.ktw .ktv{color:var(--shell-color-warning)}.ktd .ktv{color:var(--shell-color-danger)}.ktn .ktv{color:var(--shell-color)}}
|
package/dist/Stat.js
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import a, { useMemo as k, useId as x, useRef as C, Suspense as K } from "react";
|
|
2
|
+
import { c as p } from "./cx-CcykAxZN.js";
|
|
3
|
+
import { h as S } from "./rovingKeys-Di9N1Nct.js";
|
|
4
|
+
import { u as T } from "./useControllableValue-BaE0VR5d.js";
|
|
5
|
+
import './TabSections.css';const w = "ntr", D = "ntb", M = "ntn", P = "ntt", h = "nta", j = "nte", q = "nts", z = "ntm", l = {
|
|
6
|
+
root: w,
|
|
7
|
+
bar: D,
|
|
8
|
+
nav: M,
|
|
9
|
+
tab: P,
|
|
10
|
+
active: h,
|
|
11
|
+
ember: j,
|
|
12
|
+
slot: q,
|
|
13
|
+
main: z
|
|
14
|
+
};
|
|
15
|
+
function H({
|
|
16
|
+
items: s = [],
|
|
17
|
+
resolveSection: b,
|
|
18
|
+
children: o,
|
|
19
|
+
value: f,
|
|
20
|
+
defaultValue: c,
|
|
21
|
+
onValueChange: E,
|
|
22
|
+
loading: N = null,
|
|
23
|
+
actions: u,
|
|
24
|
+
className: y,
|
|
25
|
+
navLabel: I = "Вкладки"
|
|
26
|
+
}) {
|
|
27
|
+
const R = k(() => {
|
|
28
|
+
var e;
|
|
29
|
+
return c || (((e = s.find((n) => !n.disabled)) == null ? void 0 : e.value) ?? "");
|
|
30
|
+
}, [c, s]), [t, d] = T(
|
|
31
|
+
f,
|
|
32
|
+
R,
|
|
33
|
+
E
|
|
34
|
+
), $ = s.filter((e) => !e.disabled).map((e) => e.value), r = x(), v = C(null), m = `${r}-panel`, i = o == null && t && b ? b(t) : null;
|
|
35
|
+
return /* @__PURE__ */ a.createElement("div", { className: p(l.root, y) }, /* @__PURE__ */ a.createElement("div", { className: l.bar }, /* @__PURE__ */ a.createElement(
|
|
36
|
+
"nav",
|
|
37
|
+
{
|
|
38
|
+
ref: v,
|
|
39
|
+
className: l.nav,
|
|
40
|
+
"aria-label": I,
|
|
41
|
+
role: "tablist",
|
|
42
|
+
onKeyDown: (e) => S(e, {
|
|
43
|
+
values: $,
|
|
44
|
+
value: t,
|
|
45
|
+
onSelect: d,
|
|
46
|
+
focusRoot: v.current
|
|
47
|
+
})
|
|
48
|
+
},
|
|
49
|
+
s.map((e) => {
|
|
50
|
+
const n = e.value === t, g = `${r}-tab-${e.value}`;
|
|
51
|
+
return /* @__PURE__ */ a.createElement(
|
|
52
|
+
"button",
|
|
53
|
+
{
|
|
54
|
+
key: e.value,
|
|
55
|
+
id: g,
|
|
56
|
+
type: "button",
|
|
57
|
+
role: "tab",
|
|
58
|
+
className: p(l.tab, n && l.active),
|
|
59
|
+
"data-value": e.value,
|
|
60
|
+
"data-active": n ? "true" : void 0,
|
|
61
|
+
"aria-selected": n,
|
|
62
|
+
"aria-controls": m,
|
|
63
|
+
tabIndex: n ? 0 : -1,
|
|
64
|
+
disabled: e.disabled,
|
|
65
|
+
onClick: () => d(e.value)
|
|
66
|
+
},
|
|
67
|
+
/* @__PURE__ */ a.createElement("span", null, e.label),
|
|
68
|
+
e.badge != null && e.badge !== "" ? /* @__PURE__ */ a.createElement("em", { className: l.ember }, e.badge) : null
|
|
69
|
+
);
|
|
70
|
+
})
|
|
71
|
+
), u != null ? /* @__PURE__ */ a.createElement("div", { className: l.slot }, u) : null), /* @__PURE__ */ a.createElement(
|
|
72
|
+
"div",
|
|
73
|
+
{
|
|
74
|
+
id: m,
|
|
75
|
+
className: l.main,
|
|
76
|
+
role: "tabpanel",
|
|
77
|
+
"aria-labelledby": t ? `${r}-tab-${t}` : void 0
|
|
78
|
+
},
|
|
79
|
+
o ?? (i ? /* @__PURE__ */ a.createElement(K, { fallback: N }, a.createElement(i)) : null)
|
|
80
|
+
));
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
H as T
|
|
84
|
+
};
|