@elcrm/components 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +130 -16
  2. package/dist/ActionGroup-ChKFW0mt.js +27 -0
  3. package/dist/ActionGroup.css +1 -0
  4. package/dist/ActionGroup.d.ts +42 -0
  5. package/dist/ActionGroup.js +4 -0
  6. package/dist/Avatar-loGgFt72.js +113 -0
  7. package/dist/Avatar.d.ts +11 -2
  8. package/dist/Avatar.js +3 -2
  9. package/dist/{AvatarGroup-BAWas4pU.js → AvatarGroup-D1gnT3Od.js} +1 -1
  10. package/dist/AvatarGroup.d.ts +2 -1
  11. package/dist/AvatarGroup.js +1 -1
  12. package/dist/AvatarName-0BzyfpMq.js +68 -0
  13. package/dist/AvatarName.css +1 -1
  14. package/dist/AvatarName.d.ts +8 -2
  15. package/dist/AvatarName.js +1 -1
  16. package/dist/Badge-jp-9iNNL.js +28 -0
  17. package/dist/Badge.css +1 -1
  18. package/dist/Badge.d.ts +33 -17
  19. package/dist/Badge.js +1 -1
  20. package/dist/{Block-BAXh0PPp.js → Block-Bu7NEA0g.js} +1 -1
  21. package/dist/Block.js +1 -1
  22. package/dist/Card.css +1 -1
  23. package/dist/Card.d.ts +8 -1
  24. package/dist/ChatFrame-BW2TmCkZ.js +37 -0
  25. package/dist/ChatFrame.css +1 -0
  26. package/dist/ChatList.d.ts +9 -0
  27. package/dist/ChatList.js +7 -0
  28. package/dist/ChatMessages-B8rdXiK-.js +19 -0
  29. package/dist/ChatMessages.d.ts +9 -0
  30. package/dist/ChatMessages.js +4 -0
  31. package/dist/ChatSplit-DNnu3TNq.js +21 -0
  32. package/dist/CheckIcon-FdB8fMEF.js +17 -0
  33. package/dist/CheckIcon.d.ts +8 -0
  34. package/dist/{Column-DDaqX-A7.js → Column-BiogBDf8.js} +1 -1
  35. package/dist/Column.js +1 -1
  36. package/dist/Dropdown-4yUB2tk1.js +142 -0
  37. package/dist/Dropdown.css +1 -1
  38. package/dist/Dropdown.d.ts +3 -3
  39. package/dist/Dropdown.js +1 -1
  40. package/dist/Footer.css +1 -1
  41. package/dist/Item-D4okhsfW.js +46 -0
  42. package/dist/Item.css +1 -1
  43. package/dist/Item.d.ts +8 -1
  44. package/dist/Item.js +1 -1
  45. package/dist/ItemColumn-M7a9L8CI.js +41 -0
  46. package/dist/ItemColumn.css +1 -0
  47. package/dist/ItemColumn.d.ts +62 -0
  48. package/dist/ItemColumn.js +4 -0
  49. package/dist/Layout-mi6Ghayv.js +31 -0
  50. package/dist/Layout.css +1 -1
  51. package/dist/Layout.d.ts +28 -6
  52. package/dist/Layout.js +1 -1
  53. package/dist/Loading-DkkG7RcE.js +16 -0
  54. package/dist/Loading.css +1 -1
  55. package/dist/Loading.d.ts +1 -1
  56. package/dist/Loading.js +1 -1
  57. package/dist/Menu-DuXQv-zT.js +66 -0
  58. package/dist/Menu.css +1 -1
  59. package/dist/Menu.d.ts +15 -3
  60. package/dist/Menu.js +1 -1
  61. package/dist/NavSections-BpyZPimZ.js +79 -0
  62. package/dist/NavSections.css +1 -1
  63. package/dist/NavSections.js +1 -1
  64. package/dist/PageHead-DgaJ1mXY.js +31 -0
  65. package/dist/PageHead.css +1 -1
  66. package/dist/PageHead.d.ts +28 -6
  67. package/dist/PageHead.js +1 -1
  68. package/dist/{PageShell-CghThHS3.js → PageShell-D9EZiO8o.js} +13 -11
  69. package/dist/PageShell.css +1 -1
  70. package/dist/PageShell.d.ts +11 -6
  71. package/dist/PageShell.js +1 -1
  72. package/dist/Popover-D0m5JWIt.js +142 -0
  73. package/dist/Popover.css +1 -0
  74. package/dist/Popover.d.ts +54 -0
  75. package/dist/Popover.js +4 -0
  76. package/dist/PricingGroup-Czuhe81Z.js +120 -0
  77. package/dist/PricingGroup.css +1 -1
  78. package/dist/PricingGroup.js +1 -1
  79. package/dist/{PricingTable-DALddSwM.js → PricingTable-BuLC0opK.js} +69 -75
  80. package/dist/PricingTable.css +1 -1
  81. package/dist/PricingTable.js +1 -1
  82. package/dist/RadioGroup-fcXzhvMu.js +129 -0
  83. package/dist/RadioGroup.css +1 -1
  84. package/dist/RadioGroup.js +1 -1
  85. package/dist/{Row--HIe6vb9.js → Row-DsQOVn18.js} +1 -1
  86. package/dist/Row.js +1 -1
  87. package/dist/Sidebar-CBYq1ad6.js +107 -0
  88. package/dist/Sidebar.css +1 -0
  89. package/dist/Sidebar.d.ts +99 -0
  90. package/dist/Sidebar.js +4 -0
  91. package/dist/Stack-XkmPSswj.js +53 -0
  92. package/dist/Stack.css +1 -1
  93. package/dist/Stack.d.ts +16 -4
  94. package/dist/Stack.js +3 -2
  95. package/dist/Stat-C5iZyEoo.js +27 -0
  96. package/dist/Stat.css +1 -0
  97. package/dist/Stat.d.ts +39 -0
  98. package/dist/Stat.js +4 -0
  99. package/dist/TabSections-DN7yVJoF.js +69 -0
  100. package/dist/TabSections.css +1 -1
  101. package/dist/TabSections.js +1 -1
  102. package/dist/TextGroup-DmhuyMR1.js +23 -0
  103. package/dist/TextGroup.css +1 -0
  104. package/dist/TextGroup.d.ts +36 -0
  105. package/dist/TextGroup.js +4 -0
  106. package/dist/badgeText-CRzlIzi3.js +8 -0
  107. package/dist/badgeText.d.ts +4 -0
  108. package/dist/dark.css +13 -0
  109. package/dist/index.css +31 -17
  110. package/dist/index.d.ts +27 -4
  111. package/dist/index.es.d.ts +82 -0
  112. package/dist/index.es.js +83 -59
  113. package/dist/light.css +13 -0
  114. package/dist/overlayZ.d.ts +9 -0
  115. package/dist/rovingKeys-CGlfTtNQ.js +15 -0
  116. package/dist/rovingKeys.d.ts +13 -0
  117. package/dist/tokens.css +44 -4
  118. package/dist/types.d.ts +2 -0
  119. package/dist/useControllableValue-CWqH1kpM.js +10 -0
  120. package/dist/useControllableValue.d.ts +4 -0
  121. package/package.json +6 -2
  122. package/dist/Avatar-CyNXYvsa.js +0 -101
  123. package/dist/AvatarName-DhD3TytF.js +0 -56
  124. package/dist/Badge-l6nUkl-H.js +0 -22
  125. package/dist/Dropdown-DQlDiWCR.js +0 -168
  126. package/dist/Item-CaU4RW2G.js +0 -38
  127. package/dist/Layout-Xb3-xsmA.js +0 -18
  128. package/dist/Loading-ChGq9peU.js +0 -15
  129. package/dist/Menu-DRBHvSdJ.js +0 -40
  130. package/dist/NavSections-NDcIDD6H.js +0 -59
  131. package/dist/PageHead-Baz9BLuA.js +0 -22
  132. package/dist/PricingGroup-DgcdVSq8.js +0 -126
  133. package/dist/RadioGroup-D2UUOTkY.js +0 -138
  134. package/dist/Stack-b0-XWwQ1.js +0 -31
  135. package/dist/TabSections-DL7DufKU.js +0 -50
@@ -0,0 +1,129 @@
1
+ import e from "react";
2
+ import { C as w } from "./CheckIcon-FdB8fMEF.js";
3
+ import { c as r } from "./cx-CcykAxZN.js";
4
+ import { u as C } from "./useControllableValue-CWqH1kpM.js";
5
+ import './RadioGroup.css';const z = "cqr", R = "cqi", D = "cqs", F = "cqp", I = "cqh", V = "cqn", A = "cqm", B = "cqf", G = "cqc", L = "cqt", M = "cqe", P = "cqd", T = "cqx", $ = "cqy", j = "cqz", H = "cqk", J = "cqo", K = "cqq", O = "cqw", l = {
6
+ r: z,
7
+ i: R,
8
+ s: D,
9
+ p: F,
10
+ h: I,
11
+ n: V,
12
+ m: A,
13
+ f: B,
14
+ c: G,
15
+ t: L,
16
+ e: M,
17
+ d: P,
18
+ x: T,
19
+ y: $,
20
+ z: j,
21
+ k: H,
22
+ o: J,
23
+ q: K,
24
+ w: O
25
+ };
26
+ function E({
27
+ kind: a,
28
+ selected: c
29
+ }) {
30
+ const t = a === "radio";
31
+ return /* @__PURE__ */ e.createElement(
32
+ "span",
33
+ {
34
+ className: r(l.k, t ? l.o : l.q),
35
+ "data-on": c ? "true" : void 0,
36
+ "aria-hidden": !0
37
+ },
38
+ !t && c ? /* @__PURE__ */ e.createElement(w, { className: l.w }) : null
39
+ );
40
+ }
41
+ function d({
42
+ title: a,
43
+ meta: c,
44
+ price: t,
45
+ badge: s
46
+ }) {
47
+ return a == null && c == null && t == null && s == null ? null : /* @__PURE__ */ e.createElement("div", { className: l.t }, t != null ? /* @__PURE__ */ e.createElement("span", { className: l.z }, t) : null, a ?? null, c != null ? /* @__PURE__ */ e.createElement("span", { className: l.e }, c) : null, s ?? null);
48
+ }
49
+ function q({ children: a }) {
50
+ return /* @__PURE__ */ e.createElement(
51
+ "div",
52
+ {
53
+ className: l.x,
54
+ onClick: (c) => c.stopPropagation(),
55
+ onMouseDown: (c) => c.preventDefault()
56
+ },
57
+ a
58
+ );
59
+ }
60
+ function X({
61
+ items: a,
62
+ value: c,
63
+ defaultValue: t,
64
+ name: s,
65
+ disabled: i = !1,
66
+ indicator: m = "check",
67
+ indicatorSide: v = "end",
68
+ onValueChange: f,
69
+ className: N,
70
+ ...k
71
+ }) {
72
+ const h = e.useId(), b = s ?? h, [g, x] = C(
73
+ c,
74
+ t,
75
+ f
76
+ );
77
+ return /* @__PURE__ */ e.createElement(
78
+ "div",
79
+ {
80
+ className: r(l.r, N),
81
+ role: "radiogroup",
82
+ "aria-disabled": i || void 0,
83
+ ...k
84
+ },
85
+ a.map((n) => {
86
+ const o = g === n.value, y = i || !!n.disabled, u = n.variant === "split", p = n.iconFramed !== !1;
87
+ return /* @__PURE__ */ e.createElement(
88
+ "label",
89
+ {
90
+ key: n.value,
91
+ className: r(l.i, o && l.s, u && l.p),
92
+ "data-selected": o ? "true" : void 0,
93
+ "data-indicator": u ? void 0 : v
94
+ },
95
+ /* @__PURE__ */ e.createElement(
96
+ "input",
97
+ {
98
+ className: l.n,
99
+ type: "radio",
100
+ name: b,
101
+ value: n.value,
102
+ checked: o,
103
+ disabled: y,
104
+ onChange: () => x(n.value)
105
+ }
106
+ ),
107
+ u ? /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement("div", { className: l.h }, n.icon != null ? /* @__PURE__ */ e.createElement("div", { className: r(l.m, p && l.f) }, n.icon) : null, /* @__PURE__ */ e.createElement(d, { title: n.title }), /* @__PURE__ */ e.createElement(E, { kind: m, selected: o })), /* @__PURE__ */ e.createElement("div", { className: l.y }, /* @__PURE__ */ e.createElement(
108
+ d,
109
+ {
110
+ price: n.price,
111
+ meta: n.meta,
112
+ badge: n.badge
113
+ }
114
+ ), n.description != null ? /* @__PURE__ */ e.createElement("p", { className: l.d }, n.description) : null, n.actions != null ? /* @__PURE__ */ e.createElement(q, null, n.actions) : null)) : /* @__PURE__ */ e.createElement(e.Fragment, null, n.icon != null ? /* @__PURE__ */ e.createElement("div", { className: r(l.m, p && l.f) }, n.icon) : null, /* @__PURE__ */ e.createElement("div", { className: l.c }, /* @__PURE__ */ e.createElement(
115
+ d,
116
+ {
117
+ title: n.title,
118
+ meta: n.meta,
119
+ price: n.price,
120
+ badge: n.badge
121
+ }
122
+ ), n.description != null ? /* @__PURE__ */ e.createElement("p", { className: l.d }, n.description) : null, n.actions != null ? /* @__PURE__ */ e.createElement(q, null, n.actions) : null), /* @__PURE__ */ e.createElement(E, { kind: m, selected: o }))
123
+ );
124
+ })
125
+ );
126
+ }
127
+ export {
128
+ X as R
129
+ };
@@ -1 +1 @@
1
- @layer elcrm-components{.cqr{display:flex;flex-direction:column;gap:var(--shell-gap)}.cqi{display:flex;align-items:flex-start;gap:var(--shell-gap);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.cqi:hover:not(:disabled){background:var(--shell-background-hover)}.cqi:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cqs,.cqi[data-selected=true]{border-color:var(--shell-color-accent);background:var(--shell-background-selected)}.cqp{flex-direction:column;align-items:stretch;padding:0;gap:0}.cqp.cqs .cqh,.cqp[data-selected=true] .cqh{border-bottom-color:var(--shell-color-accent)}.cqn{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cqm{display:flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden}.cqf{width:var(--shell-icon-size);height:var(--shell-icon-size);padding:var(--shell-gap-sm);box-sizing:content-box;color:var(--shell-color-muted);background:var(--shell-background-muted);border:1px solid var(--shell-border);border-radius:var(--shell-radius)}.cqc{display:flex;flex:1;flex-direction:column;gap:var(--shell-gap-sm);min-width:0}.cqt{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--shell-gap-sm);font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cqe{font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color-muted)}.cqd{margin:0;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);line-height:1.45}.cqx{display:flex;flex-wrap:wrap;gap:var(--shell-gap-sm);margin-top:var(--shell-gap-sm)}.cqh{display:flex;align-items:center;gap:var(--shell-gap);padding:var(--shell-padding);border-bottom:1px solid var(--shell-border)}.cqh .cqt{flex:1;min-width:0}.cqy{display:flex;flex-direction:column;gap:var(--shell-gap-sm);padding:var(--shell-padding)}.cqz{font-size:var(--shell-font-size-lg);font-weight:700;color:var(--shell-color);line-height:1.2}.cqk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-check-size);height:var(--shell-check-size);margin-left:auto;box-sizing:border-box;border:1px solid var(--shell-border);background:var(--shell-background);color:#fff}.cqi[data-indicator=start]>.cqk{margin-left:0;order:-1}.cqo{border-radius:50%}.cqo[data-on=true]{border-color:var(--shell-color-accent);background:var(--shell-color-accent);box-shadow:inset 0 0 0 3px var(--shell-background-selected)}.cqq{border-radius:calc(var(--shell-radius) * .4)}.cqq[data-on=true]{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.cqw{width:60%;height:60%;display:block}}
1
+ @layer elcrm-components{.cqr{display:flex;flex-direction:column;gap:var(--shell-gap)}.cqi{display:flex;align-items:flex-start;gap:var(--shell-gap);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.cqi:hover:not(:disabled){background:var(--shell-background-hover)}.cqi:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cqs,.cqi[data-selected=true]{border-color:var(--shell-color-accent);background:var(--shell-background-selected)}.cqp{flex-direction:column;align-items:stretch;padding:0;gap:0}.cqp.cqs .cqh,.cqp[data-selected=true] .cqh{border-bottom-color:var(--shell-color-accent)}.cqn{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cqm{display:flex;flex-shrink:0;align-items:center;justify-content:center;overflow:hidden}.cqf{width:var(--shell-icon-size);height:var(--shell-icon-size);padding:var(--shell-gap-sm);box-sizing:content-box;color:var(--shell-color-muted);background:var(--shell-background-muted);border:1px solid var(--shell-border);border-radius:var(--shell-radius)}.cqc{display:flex;flex:1;flex-direction:column;gap:var(--shell-gap-sm);min-width:0}.cqt{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--shell-gap-sm);font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cqe{font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color-muted)}.cqd{margin:0;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted);line-height:1.45}.cqx{display:flex;flex-wrap:wrap;gap:var(--shell-gap-sm);margin-top:var(--shell-gap-sm)}.cqh{display:flex;align-items:center;gap:var(--shell-gap);padding:var(--shell-padding);border-bottom:1px solid var(--shell-border)}.cqh .cqt{flex:1;min-width:0}.cqy{display:flex;flex-direction:column;gap:var(--shell-gap-sm);padding:var(--shell-padding)}.cqz{font-size:var(--shell-font-size-lg);font-weight:700;color:var(--shell-color);line-height:1.2}.cqk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-check-size);height:var(--shell-check-size);margin-left:auto;box-sizing:border-box;border:1px solid var(--shell-border);background:var(--shell-background);color:var(--avatar-color)}.cqi[data-indicator=start]>.cqk{margin-left:0;order:-1}.cqo{border-radius:50%}.cqo[data-on=true]{border-color:var(--shell-color-accent);background:var(--shell-color-accent);box-shadow:inset 0 0 0 3px var(--shell-background-selected)}.cqq{border-radius:calc(var(--shell-radius) * .4)}.cqq[data-on=true]{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.cqw{width:60%;height:60%;display:block}}
@@ -1,4 +1,4 @@
1
- import { R as a } from "./RadioGroup-D2UUOTkY.js";
1
+ import { R as a } from "./RadioGroup-fcXzhvMu.js";
2
2
  export {
3
3
  a as RadioGroup
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import t from "react";
2
- import { S as o } from "./Stack-b0-XWwQ1.js";
2
+ import { S as o } from "./Stack-XkmPSswj.js";
3
3
  function c(r) {
4
4
  return /* @__PURE__ */ t.createElement(o, { direction: "row", ...r });
5
5
  }
package/dist/Row.js CHANGED
@@ -1,4 +1,4 @@
1
- import { R } from "./Row--HIe6vb9.js";
1
+ import { R } from "./Row-DsQOVn18.js";
2
2
  export {
3
3
  R as Row
4
4
  };
@@ -0,0 +1,107 @@
1
+ import e from "react";
2
+ import { B as h } from "./Badge-jp-9iNNL.js";
3
+ import { D as w } from "./Dropdown-4yUB2tk1.js";
4
+ import { I as y } from "./Item-D4okhsfW.js";
5
+ import { b as C } from "./badgeText-CRzlIzi3.js";
6
+ import { c as u } from "./cx-CcykAxZN.js";
7
+ import './Sidebar.css';const q = "c2r", B = "c2b", D = "c2x", T = "c2g", z = "c2s", F = "c2p", I = "c2h", M = "c2n", R = "c2i", V = "c2a", $ = "c2o", j = "c2l", A = "c2d", G = "c2f", H = "c2q", J = "c2w", K = "c2u", L = "c2k", O = "c2v", l = {
8
+ r: q,
9
+ b: B,
10
+ x: D,
11
+ g: T,
12
+ s: z,
13
+ p: F,
14
+ h: I,
15
+ n: M,
16
+ i: R,
17
+ a: V,
18
+ o: $,
19
+ l: j,
20
+ d: A,
21
+ f: G,
22
+ q: H,
23
+ w: J,
24
+ u: K,
25
+ k: L,
26
+ v: O
27
+ };
28
+ function P({ className: c }) {
29
+ return /* @__PURE__ */ e.createElement("svg", { className: c, 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" }));
30
+ }
31
+ function Q({
32
+ footer: c,
33
+ className: E,
34
+ ...a
35
+ }) {
36
+ const r = /* @__PURE__ */ e.createElement(P, { className: l.k });
37
+ if (e.isValidElement(c) && typeof c.type != "string") {
38
+ const n = c.props;
39
+ return e.cloneElement(c, {
40
+ as: "button",
41
+ extra: n.extra ?? r,
42
+ className: u(n.className, E),
43
+ ...a,
44
+ onClick: (i) => {
45
+ var m, t;
46
+ (m = n.onClick) == null || m.call(n, i), (t = a.onClick) == null || t.call(a, i);
47
+ }
48
+ });
49
+ }
50
+ return /* @__PURE__ */ e.createElement("button", { type: "button", className: u(l.u, E), ...a }, /* @__PURE__ */ e.createElement("span", { className: l.w }, c), r);
51
+ }
52
+ function S({
53
+ groups: c,
54
+ items: E,
55
+ value: a,
56
+ onSelect: r,
57
+ variant: n = "cards",
58
+ brand: i,
59
+ extra: m,
60
+ footer: t,
61
+ footerItems: d,
62
+ onFooterSelect: v,
63
+ footerMenuLabel: g = "Меню аккаунта",
64
+ version: p,
65
+ className: k,
66
+ "aria-label": x = "Основное меню"
67
+ }) {
68
+ const f = c ?? E ?? [];
69
+ return /* @__PURE__ */ e.createElement(
70
+ "aside",
71
+ {
72
+ className: u(l.r, n === "plain" && l.p, k),
73
+ "aria-label": x
74
+ },
75
+ i != null || m != null ? /* @__PURE__ */ e.createElement("div", { className: l.b }, i, m != null ? /* @__PURE__ */ e.createElement("div", { className: l.x }, m) : null) : null,
76
+ /* @__PURE__ */ e.createElement("div", { className: l.g }, f.map((o) => /* @__PURE__ */ e.createElement("nav", { key: o.value, className: l.s, "aria-label": o.title ?? "Навигация" }, o.title ? /* @__PURE__ */ e.createElement("div", { className: l.h }, o.title) : null, /* @__PURE__ */ e.createElement("ul", { className: l.n }, (o.items ?? []).map((s) => {
77
+ const b = C(s.badge), N = a === s.value;
78
+ return /* @__PURE__ */ e.createElement("li", { key: s.value }, /* @__PURE__ */ e.createElement(
79
+ y,
80
+ {
81
+ as: "button",
82
+ active: N,
83
+ className: u(l.i, N && l.a),
84
+ "aria-current": N ? "page" : void 0,
85
+ onClick: () => r == null ? void 0 : r(s.value)
86
+ },
87
+ s.icon != null ? /* @__PURE__ */ e.createElement("span", { className: l.o, "aria-hidden": !0 }, s.icon) : null,
88
+ /* @__PURE__ */ e.createElement("span", { className: l.l }, s.label),
89
+ b != null ? /* @__PURE__ */ e.createElement(h, { className: l.d, tone: "accent", size: "s" }, b) : null
90
+ ));
91
+ }))))),
92
+ t != null || p != null ? /* @__PURE__ */ e.createElement("div", { className: u(l.s, l.f) }, t != null && d != null && d.length > 0 ? /* @__PURE__ */ e.createElement(
93
+ w,
94
+ {
95
+ className: l.q,
96
+ align: "start",
97
+ label: g,
98
+ trigger: /* @__PURE__ */ e.createElement(Q, { footer: t, className: l.w }),
99
+ items: d,
100
+ onSelect: v
101
+ }
102
+ ) : t, p != null ? /* @__PURE__ */ e.createElement("div", { className: l.v }, p) : null) : null
103
+ );
104
+ }
105
+ export {
106
+ S
107
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.c2r{box-sizing:border-box;display:flex;flex-direction:column;flex:0 0 var(--sidebar-width);width:var(--sidebar-width);min-height:0;height:100%;max-height:100%;padding:var(--sidebar-pad-y) var(--sidebar-pad-x);gap:var(--shell-gap-sm);color:var(--shell-color);align-self:stretch}.c2b{display:flex;flex-direction:row;align-items:center;gap:var(--shell-gap);padding:4px 8px;min-width:0}.c2x{flex-shrink:0;margin-left:auto}.c2g{flex:1;min-height:0;display:flex;flex-direction:column;gap:var(--shell-gap-sm);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin}.c2s{box-sizing:border-box;flex-shrink:0;padding:8px}.c2p{--sidebar-plain: 1}.c2r:not(.c2p) .c2s{background:var(--sidebar-block-bg);border:1px solid var(--sidebar-block-border);border-radius:var(--sidebar-block-radius);box-shadow:var(--sidebar-block-shadow)}.c2h{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)}.c2n{margin:0;padding:0;list-style:none}.c2n>li{list-style:none}.c2n .c2i:is(button){position:relative;display:flex;width:100%;box-sizing:border-box;flex-direction:row;align-items:center;gap:8px;margin:0 0 1px;padding:var(--sidebar-item-padding);border:0;border-radius:8px;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}.c2n .c2i:is(button):hover{color:var(--shell-color);background:var(--shell-background-hover)}.c2n .c2i:is(button).c2a,.c2n .c2i:is(button)[aria-current=page],.c2n .c2i:is(button)[data-active=true],.c2n .c2i:is(button).c2a:hover{color:var(--sidebar-item-active);background:var(--sidebar-item-active-bg)}.c2o{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--sidebar-icon-size);height:var(--sidebar-icon-size);color:inherit}.c2o :is(svg){display:block;width:var(--sidebar-icon-size);height:var(--sidebar-icon-size)}.c2a .c2o{color:var(--sidebar-icon-active)}.c2l{flex:1;min-width:0}.c2d{flex-shrink:0;min-width:16px;height:16px;padding:0 4px;font-size:10px}.c2f{margin-top:auto}.c2q{display:flex;width:100%;min-width:0}.c2q>*{display:flex;width:100%;min-width:0}.c2w{display:flex;width:100%;min-width:0;align-items:center}.c2u{display:flex;align-items:center;width:100%;min-width:0;gap:var(--shell-gap-sm);margin:0;padding:0;border:none;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.c2k{flex-shrink:0;width:var(--sidebar-icon-size);height:var(--sidebar-icon-size);color:var(--shell-color-muted)}.c2v{margin-top:var(--shell-gap-sm);font-size:11px;color:var(--shell-color-muted);text-align:center}@media (max-width: 900px){.c2r{flex:0 0 72px;width:72px;padding:12px 8px}.c2l,.c2h,.c2v{display:none}.c2b{flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:4px 0}.c2x{margin-left:0}.c2s{padding:6px}.c2n .c2i{justify-content:center;align-items:center;gap:0;width:100%;min-height:40px;padding:10px 0}.c2n .c2d{position:absolute;top:4px;right:4px;min-width:14px;height:14px;padding:0 4px;font-size:.625rem;line-height:14px;pointer-events:none}}}
@@ -0,0 +1,99 @@
1
+ import { default as React } from 'react';
2
+ import { DropdownItem } from './Dropdown';
3
+ /** Вид колонки: карточки (консоль) или плоский список (backoffice) */
4
+ export type SidebarVariant = "cards" | "plain";
5
+ /** Пункт бокового меню. Идентификатор — `value`. */
6
+ export type SidebarItem = {
7
+ value: string;
8
+ /** Подпись */
9
+ label: string;
10
+ /** Иконка (слот приложения) */
11
+ icon?: React.ReactNode;
12
+ /** Счётчик справа */
13
+ badge?: number | string | null;
14
+ };
15
+ /** Группа пунктов. `title` — «Аккаунт» / «Админ». */
16
+ export type SidebarGroup = {
17
+ value: string;
18
+ title?: string;
19
+ items: SidebarItem[];
20
+ };
21
+ /**
22
+ * Левая колонка приложения: бренд, группы меню, футер.
23
+ *
24
+ * Роли: Sidebar = навигация приложения; не путать с NavSections
25
+ * (сайдбар внутри страницы + lazy-панель).
26
+ *
27
+ * `variant="cards"` — секции-карточки (elWMS Console).
28
+ * `variant="plain"` — плоский список и заголовок группы (backoffice).
29
+ *
30
+ * Иконки, колокольчик, тема, выход — слоты приложения
31
+ * (`brand`, `extra`, `footer`). Роутер не подключаем.
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <Sidebar
36
+ * variant="cards"
37
+ * value={page}
38
+ * onSelect={setPage}
39
+ * brand={<Brand as="strong">App</Brand>}
40
+ * extra={<Notifications.Bell />}
41
+ * groups={[
42
+ * { value: "main", items: [{ value: "home", label: "Обзор", icon: <Icon /> }] },
43
+ * { value: "admin", title: "Админ", items: [{ value: "users", label: "Люди" }] },
44
+ * ]}
45
+ * footer={<AvatarName title="Паша" description="mail@…" />}
46
+ * footerItems={[
47
+ * { value: "home", label: "Главная", icon: <Icon /> },
48
+ * { value: "theme", label: "Тема", submenu: true },
49
+ * { value: "logout", label: "Выйти", danger: true },
50
+ * ]}
51
+ * onFooterSelect={(value) => console.log(value)}
52
+ * version="v 0.2.26"
53
+ * />
54
+ * ```
55
+ *
56
+ * Токены: `--sidebar-*`, цвета — `--shell-*`.
57
+ */
58
+ export type SidebarProps = {
59
+ /** Группы пунктов (`value` + `items`) */
60
+ groups?: SidebarGroup[];
61
+ /** То же, что `groups` (совместимость) */
62
+ items?: SidebarGroup[];
63
+ /** Текущий пункт */
64
+ value?: string;
65
+ /** Выбор пункта */
66
+ onSelect?: (value: string) => void;
67
+ /**
68
+ * `cards` — блоки-карточки.
69
+ * `plain` — плоский список.
70
+ * @default "cards"
71
+ */
72
+ variant?: SidebarVariant;
73
+ /** Логотип / название */
74
+ brand?: React.ReactNode;
75
+ /** Справа от бренда (колокольчик) */
76
+ extra?: React.ReactNode;
77
+ /** Низ: тема, выход или карточка пользователя */
78
+ footer?: React.ReactNode;
79
+ /**
80
+ * Меню по клику на `footer` (Dropdown).
81
+ * Есть пункты → футер становится триггером, справа ⋮.
82
+ */
83
+ footerItems?: DropdownItem[];
84
+ /** Выбор пункта меню аккаунта */
85
+ onFooterSelect?: (value: string, item: DropdownItem) => void;
86
+ /** `aria-label` панели меню аккаунта */
87
+ footerMenuLabel?: string;
88
+ /** Версия под футером */
89
+ version?: React.ReactNode;
90
+ /** Подпись колонки */
91
+ "aria-label"?: string;
92
+ className?: string;
93
+ };
94
+ /**
95
+ * Левая навигация приложения.
96
+ *
97
+ * @see Layout, Brand, Item, Badge, NavSections
98
+ */
99
+ export declare function Sidebar({ groups, items, value, onSelect, variant, brand, extra, footer, footerItems, onFooterSelect, footerMenuLabel, version, className, "aria-label": ariaLabel, }: SidebarProps): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { S as e } from "./Sidebar-CBYq1ad6.js";
2
+ export {
3
+ e as Sidebar
4
+ };
@@ -0,0 +1,53 @@
1
+ import m from "react";
2
+ import { c as f } from "./cx-CcykAxZN.js";
3
+ import './Stack.css';function l(t) {
4
+ if (t != null)
5
+ return { gap: typeof t == "number" ? `${t}px` : t };
6
+ }
7
+ const i = "c1r", p = "c1c", g = "c1g", h = "c1h", v = "c1n", r = {
8
+ r: i,
9
+ c: p,
10
+ g,
11
+ h,
12
+ n: v
13
+ };
14
+ function x(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 k({
21
+ direction: t = "column",
22
+ columns: n,
23
+ gap: c,
24
+ children: o,
25
+ className: a,
26
+ style: s,
27
+ ...u
28
+ }) {
29
+ const e = t === "grid" && n != null ? x(n) : void 0;
30
+ return /* @__PURE__ */ m.createElement(
31
+ "div",
32
+ {
33
+ className: f(
34
+ r.r,
35
+ t === "column" && r.c,
36
+ t === "row" && r.h,
37
+ t === "grid" && (e ? r.n : r.g),
38
+ a
39
+ ),
40
+ style: {
41
+ ...l(c),
42
+ ...e ? { "--stack-columns-template": e } : null,
43
+ ...s
44
+ },
45
+ ...u
46
+ },
47
+ o
48
+ );
49
+ }
50
+ export {
51
+ k as S,
52
+ x as s
53
+ };
package/dist/Stack.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.c1r{display:flex;flex-direction:column;gap:var(--shell-gap)}.c1h{flex-direction:row;flex-wrap:wrap;align-items:center}}
1
+ @layer elcrm-components{.c1r{box-sizing:border-box;min-width:0;gap:var(--shell-gap)}.c1c,.c1g{width:100%}.c1c{display:flex;flex-direction:column}.c1h{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;width:auto;max-width:100%}.c1g{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--stack-grid-min)),1fr))}.c1n{display:grid;width:100%;align-items:stretch;grid-template-columns:var(--stack-columns-template)}}
package/dist/Stack.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import { default as React } from 'react';
2
2
  /** Направление раскладки стека */
3
- export type StackDirection = "row" | "column";
3
+ export type StackDirection = "row" | "column" | "grid";
4
+ /** Сетка: число равных колонок или треки (`1fr`, `100px`, …). Число в массиве — px. */
5
+ export type StackColumns = number | Array<number | string>;
6
+ /** CSS `grid-template-columns` из пропа `columns`. */
7
+ export declare function stackColumnsTemplate(columns: StackColumns): string | undefined;
4
8
  /**
5
9
  * Универсальный стек (ряд / колонка) с отступами между детьми.
6
10
  *
@@ -13,13 +17,21 @@ export type StackDirection = "row" | "column";
13
17
  * <Button>Отмена</Button>
14
18
  * <Button>Сохранить</Button>
15
19
  * </Stack>
20
+ * <Stack direction="grid" columns={["1fr", "100px", "100px"]} gap={12} />
16
21
  * ```
17
22
  *
18
- * Токены: `--shell-gap` (если `gap` не задан); при `gap` inline-стиль.
23
+ * Токены: `--shell-gap` (если `gap` не задан); сетка`--stack-grid-min`.
24
+ * `columns` — число равных колонок или массив треков (`--stack-columns-template`).
25
+ * Явные колонки: `align-items: stretch` (несколько рядов). Центр в одном ряду — `style={{ alignItems: "center" }}`.
19
26
  */
20
27
  export type StackProps = React.HTMLAttributes<HTMLDivElement> & {
21
- /** Направление: по умолчанию `column` */
28
+ /** Направление: по умолчанию `column`. `grid` — сетка */
22
29
  direction?: StackDirection;
30
+ /**
31
+ * Сетка: `4` — четыре равные колонки;
32
+ * `["1fr", "100px", "auto"]` — свои треки (число в массиве = px).
33
+ */
34
+ columns?: StackColumns;
23
35
  /** Отступ между детьми: число (px) или CSS-строка */
24
36
  gap?: number | string;
25
37
  /** Дочерние элементы стека */
@@ -31,4 +43,4 @@ export type StackProps = React.HTMLAttributes<HTMLDivElement> & {
31
43
  *
32
44
  * @see Block, Row, Column
33
45
  */
34
- export declare function Stack({ direction, gap, children, className, style, ...rest }: StackProps): React.JSX.Element;
46
+ export declare function Stack({ direction, columns, gap, children, className, style, ...rest }: StackProps): React.JSX.Element;
package/dist/Stack.js CHANGED
@@ -1,4 +1,5 @@
1
- import { S as r } from "./Stack-b0-XWwQ1.js";
1
+ import { S as t, s as e } from "./Stack-XkmPSswj.js";
2
2
  export {
3
- r as Stack
3
+ t as Stack,
4
+ e as stackColumnsTemplate
4
5
  };
@@ -0,0 +1,27 @@
1
+ import a from "react";
2
+ import { C as u } from "./Card-hn37Opo3.js";
3
+ import { c as t } from "./cx-CcykAxZN.js";
4
+ import './Stat.css';const d = "c4r", p = "c4l", i = "c4le", w = "c4v", f = "c4a", v = "c4u", C = "c4w", E = "c4d", c = {
5
+ r: d,
6
+ l: p,
7
+ le: i,
8
+ v: w,
9
+ a: f,
10
+ u: v,
11
+ w: C,
12
+ d: E
13
+ };
14
+ function S({
15
+ label: e,
16
+ value: n,
17
+ tone: s = "neutral",
18
+ labelMuted: r = !0,
19
+ className: l,
20
+ ...o
21
+ }) {
22
+ const m = s === "accent" ? c.a : s === "success" ? c.u : s === "warning" ? c.w : s === "danger" ? c.d : c.n;
23
+ return /* @__PURE__ */ a.createElement(u, { className: t(c.r, m, l), ...o }, /* @__PURE__ */ a.createElement("span", { className: t(c.l, !r && c.le) }, e), /* @__PURE__ */ a.createElement("span", { className: c.v }, n));
24
+ }
25
+ export {
26
+ S
27
+ };
package/dist/Stat.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.c4r{display:flex;flex-direction:column;gap:6px}.c4l{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}.c4le{color:var(--shell-color)}.c4v{font-size:var(--stat-value-size);font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--shell-color)}.c4a .c4v{color:var(--shell-color-accent)}.c4u .c4v{color:var(--shell-color-success)}.c4w .c4v{color:var(--shell-color-warning)}.c4d .c4v{color:var(--shell-color-danger)}}
package/dist/Stat.d.ts ADDED
@@ -0,0 +1,39 @@
1
+ import { default as React } from 'react';
2
+ /** Тон числа — те же смыслы, что у Badge */
3
+ export type StatTone = "neutral" | "accent" | "success" | "warning" | "danger";
4
+ /**
5
+ * Карточка-метрика: подпись сверху, крупное число снизу.
6
+ *
7
+ * Роли: сводка на PageHead / над списком. Не заменяет Card с произвольным контентом.
8
+ *
9
+ * @param label подпись (обычно uppercase в CSS)
10
+ * @param value число или короткий текст
11
+ * @param tone цвет значения
12
+ * @param labelMuted приглушённая подпись (выключить для «всего»)
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <Stack direction="grid" gap={12}>
17
+ * <Stat label="Всего" value={10} labelMuted={false} />
18
+ * <Stat label="Admin" value={6} tone="accent" />
19
+ * </Stack>
20
+ * ```
21
+ *
22
+ * Токены: `--shell-*`, размер числа — `--stat-value-size`.
23
+ */
24
+ export type StatProps = React.HTMLAttributes<HTMLDivElement> & {
25
+ /** Подпись метрики */
26
+ label: React.ReactNode;
27
+ /** Значение */
28
+ value: React.ReactNode;
29
+ /** Цвет числа */
30
+ tone?: StatTone;
31
+ /** Приглушить подпись (по умолчанию да) */
32
+ labelMuted?: boolean;
33
+ };
34
+ /**
35
+ * Карточка-метрика (обёртка над Card).
36
+ *
37
+ * @see Card, Stack, Badge
38
+ */
39
+ export declare function Stat({ label, value, tone, labelMuted, className, ...rest }: StatProps): React.JSX.Element;
package/dist/Stat.js ADDED
@@ -0,0 +1,4 @@
1
+ import { S as o } from "./Stat-C5iZyEoo.js";
2
+ export {
3
+ o as Stat
4
+ };
@@ -0,0 +1,69 @@
1
+ import a, { useMemo as g, Suspense as k } from "react";
2
+ import { c as b } from "./cx-CcykAxZN.js";
3
+ import { h as y } from "./rovingKeys-CGlfTtNQ.js";
4
+ import { u as x } from "./useControllableValue-CWqH1kpM.js";
5
+ import './TabSections.css';const S = "ctr", h = "ctb", C = "ctn", K = "ctt", R = "cta", T = "cte", w = "cts", D = "ctm", l = {
6
+ r: S,
7
+ b: h,
8
+ n: C,
9
+ t: K,
10
+ a: R,
11
+ e: T,
12
+ s: w,
13
+ m: D
14
+ };
15
+ function j({
16
+ items: n = [],
17
+ resolveSection: m,
18
+ value: d,
19
+ defaultValue: s,
20
+ onValueChange: v,
21
+ loading: i = null,
22
+ actions: r,
23
+ className: p,
24
+ navLabel: E = "Вкладки"
25
+ }) {
26
+ const f = g(() => {
27
+ var e;
28
+ return s || (((e = n.find((t) => !t.disabled)) == null ? void 0 : e.value) ?? "");
29
+ }, [s, n]), [c, o] = x(
30
+ d,
31
+ f,
32
+ v
33
+ ), N = n.filter((e) => !e.disabled).map((e) => e.value), u = c ? m(c) : null;
34
+ return /* @__PURE__ */ a.createElement("div", { className: b(l.r, p) }, /* @__PURE__ */ a.createElement("div", { className: l.b }, /* @__PURE__ */ a.createElement(
35
+ "nav",
36
+ {
37
+ className: l.n,
38
+ "aria-label": E,
39
+ role: "tablist",
40
+ onKeyDown: (e) => y(e, {
41
+ values: N,
42
+ value: c,
43
+ onSelect: o
44
+ })
45
+ },
46
+ n.map((e) => {
47
+ const t = e.value === c;
48
+ return /* @__PURE__ */ a.createElement(
49
+ "button",
50
+ {
51
+ key: e.value,
52
+ type: "button",
53
+ role: "tab",
54
+ className: b(l.t, t && l.a),
55
+ "data-active": t ? "true" : void 0,
56
+ "aria-selected": t,
57
+ tabIndex: t ? 0 : -1,
58
+ disabled: e.disabled,
59
+ onClick: () => o(e.value)
60
+ },
61
+ /* @__PURE__ */ a.createElement("span", null, e.label),
62
+ e.badge != null && e.badge !== "" ? /* @__PURE__ */ a.createElement("em", { className: l.e }, e.badge) : null
63
+ );
64
+ })
65
+ ), r != null ? /* @__PURE__ */ a.createElement("div", { className: l.s }, r) : null), /* @__PURE__ */ a.createElement("div", { className: l.m, role: "tabpanel" }, u ? /* @__PURE__ */ a.createElement(k, { fallback: i }, a.createElement(u)) : null));
66
+ }
67
+ export {
68
+ j as T
69
+ };
@@ -1 +1 @@
1
- @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--shell-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:var(--shell-gap);border-bottom:1px solid var(--shell-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--shell-gap-lg);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ctt{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:var(--shell-gap-sm);flex:0 0 auto;margin:0 0 -1px;padding:var(--shell-padding-block) .15rem;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--shell-color-muted);font:inherit;font-size:var(--shell-font-size);font-weight:500;white-space:nowrap;cursor:pointer}.ctt:hover:not(:disabled){color:var(--shell-color)}.cta{color:var(--shell-color);border-bottom-color:var(--shell-color-accent)}.ctt:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cte{display:inline-flex;align-items:center;justify-content:center;min-width:1.15em;height:1.15em;padding:0 .35em;border-radius:999px;background:var(--shell-color-danger);color:#fff;font-size:11px;font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:var(--shell-gap-sm)}.ctm{min-width:0;width:100%}}
1
+ @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--shell-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:var(--shell-gap);border-bottom:1px solid var(--shell-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--shell-gap-lg);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ctt{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:var(--shell-gap-sm);flex:0 0 auto;margin:0 0 -1px;padding:var(--shell-padding-block) .15rem;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--shell-color-muted);font:inherit;font-size:var(--shell-font-size);font-weight:500;white-space:nowrap;cursor:pointer}.ctt:hover:not(:disabled){color:var(--shell-color)}.cta{color:var(--shell-color);border-bottom-color:var(--shell-color-accent)}.ctt:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cte{display:inline-flex;align-items:center;justify-content:center;min-width:1.15em;height:1.15em;padding:0 .35em;border-radius:999px;background:var(--shell-color-danger);color:var(--avatar-color);font-size:var(--sidebar-group-font-size);font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:var(--shell-gap-sm)}.ctm{min-width:0;width:100%}}
@@ -1,4 +1,4 @@
1
- import { T as e } from "./TabSections-DL7DufKU.js";
1
+ import { T as e } from "./TabSections-DN7yVJoF.js";
2
2
  export {
3
3
  e as TabSections
4
4
  };