@elcrm/components 0.0.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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +352 -0
  3. package/dist/Avatar-DHNPaIjZ.js +64 -0
  4. package/dist/Avatar.css +1 -0
  5. package/dist/Avatar.d.ts +2 -0
  6. package/dist/Avatar.js +5 -0
  7. package/dist/Badge-l6nUkl-H.js +22 -0
  8. package/dist/Badge.css +1 -0
  9. package/dist/Badge.d.ts +2 -0
  10. package/dist/Badge.js +4 -0
  11. package/dist/Block-CVKukh1e.js +28 -0
  12. package/dist/Block.css +1 -0
  13. package/dist/Block.d.ts +2 -0
  14. package/dist/Block.js +4 -0
  15. package/dist/Brand-Zq-Idks4.js +34 -0
  16. package/dist/Brand.css +1 -0
  17. package/dist/Brand.d.ts +2 -0
  18. package/dist/Brand.js +4 -0
  19. package/dist/Card-hn37Opo3.js +12 -0
  20. package/dist/Card.css +1 -0
  21. package/dist/Card.d.ts +2 -0
  22. package/dist/Card.js +4 -0
  23. package/dist/Column-DlNrvFq1.js +26 -0
  24. package/dist/Column.css +1 -0
  25. package/dist/Column.d.ts +2 -0
  26. package/dist/Column.js +4 -0
  27. package/dist/EmptyState-mBiWtMIM.js +23 -0
  28. package/dist/EmptyState.css +1 -0
  29. package/dist/EmptyState.d.ts +2 -0
  30. package/dist/EmptyState.js +4 -0
  31. package/dist/Footer-qxUlnPR9.js +11 -0
  32. package/dist/Footer.css +1 -0
  33. package/dist/Footer.d.ts +2 -0
  34. package/dist/Footer.js +4 -0
  35. package/dist/Header-Cf28eyjW.js +23 -0
  36. package/dist/Header.css +1 -0
  37. package/dist/Header.d.ts +2 -0
  38. package/dist/Header.js +4 -0
  39. package/dist/Item-CaU4RW2G.js +38 -0
  40. package/dist/Item.css +1 -0
  41. package/dist/Item.d.ts +2 -0
  42. package/dist/Item.js +4 -0
  43. package/dist/Layout-Xb3-xsmA.js +18 -0
  44. package/dist/Layout.css +1 -0
  45. package/dist/Layout.d.ts +2 -0
  46. package/dist/Layout.js +4 -0
  47. package/dist/List-BgKkYaGO.js +12 -0
  48. package/dist/List.css +1 -0
  49. package/dist/List.d.ts +2 -0
  50. package/dist/List.js +4 -0
  51. package/dist/Loading-ChGq9peU.js +15 -0
  52. package/dist/Loading.css +1 -0
  53. package/dist/Loading.d.ts +2 -0
  54. package/dist/Loading.js +4 -0
  55. package/dist/Menu-DS7zKQbY.js +40 -0
  56. package/dist/Menu.css +1 -0
  57. package/dist/Menu.d.ts +2 -0
  58. package/dist/Menu.js +4 -0
  59. package/dist/NavSections-CM-VPai2.js +59 -0
  60. package/dist/NavSections.css +1 -0
  61. package/dist/NavSections.d.ts +2 -0
  62. package/dist/NavSections.js +4 -0
  63. package/dist/Row-CnD7Q7pD.js +20 -0
  64. package/dist/Row.css +1 -0
  65. package/dist/Row.d.ts +2 -0
  66. package/dist/Row.js +4 -0
  67. package/dist/Section-Crxk2J-E.js +34 -0
  68. package/dist/Section.css +1 -0
  69. package/dist/Section.d.ts +2 -0
  70. package/dist/Section.js +4 -0
  71. package/dist/TabSections-oeEBx0nM.js +50 -0
  72. package/dist/TabSections.css +1 -0
  73. package/dist/TabSections.d.ts +2 -0
  74. package/dist/TabSections.js +4 -0
  75. package/dist/cx-CcykAxZN.js +6 -0
  76. package/dist/cx.d.ts +2 -0
  77. package/dist/index.css +35 -0
  78. package/dist/index.d.ts +39 -0
  79. package/dist/index.es.js +47 -0
  80. package/dist/lazyRoute.d.ts +10 -0
  81. package/dist/stackGap-CDsjER0g.js +7 -0
  82. package/dist/stackGap.d.ts +3 -0
  83. package/package.json +95 -0
@@ -0,0 +1,11 @@
1
+ import e from "react";
2
+ import { c } from "./cx-CcykAxZN.js";
3
+ import './Footer.css';const s = "cfr", a = {
4
+ r: s
5
+ };
6
+ function f({ children: r, className: o, ...t }) {
7
+ return /* @__PURE__ */ e.createElement("footer", { className: c(a.r, o), ...t }, r);
8
+ }
9
+ export {
10
+ f as F
11
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cfr{padding:var(--footer-padding);color:var(--footer-color);background:var(--footer-background);border-top:1px solid var(--footer-border);font-size:var(--footer-font-size)}}
@@ -0,0 +1,2 @@
1
+ export * from './Footer/index'
2
+ export {}
package/dist/Footer.js ADDED
@@ -0,0 +1,4 @@
1
+ import { F as e } from "./Footer-qxUlnPR9.js";
2
+ export {
3
+ e as Footer
4
+ };
@@ -0,0 +1,23 @@
1
+ import e from "react";
2
+ import { c as o } from "./cx-CcykAxZN.js";
3
+ import './Header.css';const u = "chr", i = "chb", d = "chn", h = "chs", E = "cha", l = {
4
+ r: u,
5
+ b: i,
6
+ n: d,
7
+ s: h,
8
+ a: E
9
+ };
10
+ function f({
11
+ brand: c,
12
+ nav: n,
13
+ search: s,
14
+ actions: t,
15
+ children: a,
16
+ className: r,
17
+ ...m
18
+ }) {
19
+ return /* @__PURE__ */ e.createElement("header", { className: o(l.r, r), ...m }, c != null ? /* @__PURE__ */ e.createElement("div", { className: l.b }, c) : null, n != null ? /* @__PURE__ */ e.createElement("div", { className: l.n }, n) : null, s != null ? /* @__PURE__ */ e.createElement("div", { className: l.s }, s) : null, t != null ? /* @__PURE__ */ e.createElement("div", { className: l.a }, t) : null, a);
20
+ }
21
+ export {
22
+ f as H
23
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.chr{display:flex;align-items:center;gap:var(--header-gap);min-height:var(--header-height);padding:var(--header-padding);color:var(--header-color);background:var(--header-background);border-bottom:1px solid var(--header-border);border-radius:var(--header-radius);box-shadow:var(--header-shadow);margin:var(--header-margin);position:sticky;top:0;z-index:var(--header-z)}.chb{flex-shrink:0}.chn{display:flex;align-items:center;min-width:0}.chs{flex:1;min-width:0;margin-left:auto;max-width:18rem}.cha{display:flex;align-items:center;gap:.5rem;flex-shrink:0}}
@@ -0,0 +1,2 @@
1
+ export * from './Header/index'
2
+ export {}
package/dist/Header.js ADDED
@@ -0,0 +1,4 @@
1
+ import { H as a } from "./Header-Cf28eyjW.js";
2
+ export {
3
+ a as Header
4
+ };
@@ -0,0 +1,38 @@
1
+ import r from "react";
2
+ import { c as m } from "./cx-CcykAxZN.js";
3
+ import './Item.css';const l = "cir", u = "cia", i = {
4
+ r: l,
5
+ a: u
6
+ };
7
+ function f(n) {
8
+ const { active: t, children: e, className: o, as: s = "button", ...a } = n, c = m(i.r, t && i.a, o);
9
+ return s === "a" ? /* @__PURE__ */ r.createElement(
10
+ "a",
11
+ {
12
+ className: c,
13
+ "data-active": t ? "true" : void 0,
14
+ ...a
15
+ },
16
+ e
17
+ ) : s === "li" ? /* @__PURE__ */ r.createElement(
18
+ "li",
19
+ {
20
+ className: c,
21
+ "data-active": t ? "true" : void 0,
22
+ ...a
23
+ },
24
+ e
25
+ ) : /* @__PURE__ */ r.createElement(
26
+ "button",
27
+ {
28
+ type: "button",
29
+ className: c,
30
+ "data-active": t ? "true" : void 0,
31
+ ...a
32
+ },
33
+ e
34
+ );
35
+ }
36
+ export {
37
+ f as I
38
+ };
package/dist/Item.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--item-gap);padding:var(--item-padding);color:var(--item-color);background:var(--item-background);border:1px solid var(--item-border);border-radius:var(--item-radius);cursor:default}.cir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.cir:hover{background:var(--item-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--item-background-active)}}
package/dist/Item.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './Item/index'
2
+ export {}
package/dist/Item.js ADDED
@@ -0,0 +1,4 @@
1
+ import { I as o } from "./Item-CaU4RW2G.js";
2
+ export {
3
+ o as Item
4
+ };
@@ -0,0 +1,18 @@
1
+ import t from "react";
2
+ import { c as s } from "./cx-CcykAxZN.js";
3
+ import './Layout.css';const n = "clr", l = "clm", c = {
4
+ r: n,
5
+ m: l
6
+ };
7
+ function p({
8
+ header: e,
9
+ footer: m,
10
+ children: r,
11
+ className: a,
12
+ ...o
13
+ }) {
14
+ return /* @__PURE__ */ t.createElement("div", { className: s(c.r, a), ...o }, e, /* @__PURE__ */ t.createElement("main", { className: c.m }, r), m);
15
+ }
16
+ export {
17
+ p as L
18
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.clr{display:flex;flex-direction:column;min-height:var(--layout-min-height);background:var(--layout-background);gap:var(--layout-gap)}.clm{flex:1;min-width:0}}
@@ -0,0 +1,2 @@
1
+ export * from './Layout/index'
2
+ export {}
package/dist/Layout.js ADDED
@@ -0,0 +1,4 @@
1
+ import { L as r } from "./Layout-Xb3-xsmA.js";
2
+ export {
3
+ r as Layout
4
+ };
@@ -0,0 +1,12 @@
1
+ import e from "react";
2
+ import { c as n } from "./cx-CcykAxZN.js";
3
+ import './List.css';const a = "csr", m = "csh", r = {
4
+ r: a,
5
+ h: m
6
+ };
7
+ function f({ row: t, children: c, className: s, ...o }) {
8
+ return /* @__PURE__ */ e.createElement("ul", { className: n(r.r, t && r.h, s), ...o }, c);
9
+ }
10
+ export {
11
+ f as L
12
+ };
package/dist/List.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.csr{display:flex;flex-direction:column;gap:var(--list-gap);padding:var(--list-padding);margin:0;list-style:none}.csh{flex-direction:row;flex-wrap:wrap}}
package/dist/List.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './List/index'
2
+ export {}
package/dist/List.js ADDED
@@ -0,0 +1,4 @@
1
+ import { L as s } from "./List-BgKkYaGO.js";
2
+ export {
3
+ s as List
4
+ };
@@ -0,0 +1,15 @@
1
+ import c from "react";
2
+ import { c as e } from "./cx-CcykAxZN.js";
3
+ import './Loading.css';const s = "cgr", a = {
4
+ r: s
5
+ };
6
+ function i({
7
+ children: r = "Загрузка…",
8
+ className: t,
9
+ ...o
10
+ }) {
11
+ return /* @__PURE__ */ c.createElement("div", { className: e(a.r, t), role: "status", ...o }, r);
12
+ }
13
+ export {
14
+ i as L
15
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cgr{display:flex;align-items:center;justify-content:center;padding:var(--loading-padding);color:var(--loading-color)}}
@@ -0,0 +1,2 @@
1
+ export * from './Loading/index'
2
+ export {}
@@ -0,0 +1,4 @@
1
+ import { L as r } from "./Loading-ChGq9peU.js";
2
+ export {
3
+ r as Loading
4
+ };
@@ -0,0 +1,40 @@
1
+ import u from "react";
2
+ import { c as v } from "./cx-CcykAxZN.js";
3
+ import './Menu.css';const b = "cmr", e = "cmv", y = "cmi", f = "cma", c = {
4
+ r: b,
5
+ v: e,
6
+ i: y,
7
+ a: f
8
+ };
9
+ function C({
10
+ items: r,
11
+ vertical: l,
12
+ activeKey: s,
13
+ onSelect: n,
14
+ children: d,
15
+ className: k,
16
+ ...p
17
+ }) {
18
+ return /* @__PURE__ */ u.createElement("nav", { className: v(c.r, l && c.v, k), ...p }, r == null ? void 0 : r.map((a) => {
19
+ const o = a.active ?? (s != null && a.key === s);
20
+ return /* @__PURE__ */ u.createElement(
21
+ "button",
22
+ {
23
+ key: a.key,
24
+ type: "button",
25
+ className: v(c.i, o && c.a),
26
+ "data-active": o ? "true" : void 0,
27
+ "aria-current": o ? "page" : void 0,
28
+ disabled: a.disabled,
29
+ onClick: () => {
30
+ var t;
31
+ (t = a.onClick) == null || t.call(a), n == null || n(a.key);
32
+ }
33
+ },
34
+ a.label
35
+ );
36
+ }), d);
37
+ }
38
+ export {
39
+ C as M
40
+ };
package/dist/Menu.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cmr{display:flex;align-items:center;gap:var(--menu-gap);margin:0;padding:0;list-style:none}.cmv{flex-direction:column;align-items:stretch}.cmi{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--menu-item-background);color:var(--menu-item-color);padding:var(--menu-item-padding);border-radius:var(--menu-item-radius);font:inherit;cursor:pointer;text-align:left}.cmi:hover{background:var(--menu-item-background-hover);color:var(--menu-item-color-active)}.cma,.cmi[aria-current=page],.cmi[data-active=true]{background:var(--menu-item-background-active);color:var(--menu-item-color-active)}}
package/dist/Menu.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './Menu/index'
2
+ export {}
package/dist/Menu.js ADDED
@@ -0,0 +1,4 @@
1
+ import { M as r } from "./Menu-DS7zKQbY.js";
2
+ export {
3
+ r as Menu
4
+ };
@@ -0,0 +1,59 @@
1
+ import e, { useMemo as S, useState as x, Suspense as I } from "react";
2
+ import { c as d } from "./cx-CcykAxZN.js";
3
+ import './NavSections.css';const M = "cvr", R = "cvn", j = "cvg", q = "cvl", w = "cvi", z = "cva", A = "cvc", B = "cvt", D = "cvf", F = "cvm", t = {
4
+ r: M,
5
+ n: R,
6
+ g: j,
7
+ l: q,
8
+ i: w,
9
+ a: z,
10
+ c: A,
11
+ t: B,
12
+ f: D,
13
+ m: F
14
+ };
15
+ function G(l) {
16
+ for (const r of l) {
17
+ const n = r.items.find((s) => !s.disabled);
18
+ if (n) return n.key;
19
+ }
20
+ return "";
21
+ }
22
+ function L({
23
+ groups: l,
24
+ resolveSection: r,
25
+ activeKey: n,
26
+ defaultActiveKey: s,
27
+ onChange: i,
28
+ loading: f = null,
29
+ footer: v,
30
+ className: b,
31
+ navLabel: E = "Разделы"
32
+ }) {
33
+ const N = S(
34
+ () => s || G(l),
35
+ [s, l]
36
+ ), [y, k] = x(N), m = n ?? y, p = (a) => {
37
+ n == null && k(a), i == null || i(a);
38
+ }, u = m ? r(m) : null;
39
+ return /* @__PURE__ */ e.createElement("div", { className: d(t.r, b) }, /* @__PURE__ */ e.createElement("nav", { className: t.n, "aria-label": E }, l.map((a, K) => /* @__PURE__ */ e.createElement("div", { key: K, className: t.g }, a.label != null ? /* @__PURE__ */ e.createElement("div", { className: t.l }, a.label) : null, a.items.map((c) => {
40
+ const o = c.key === m;
41
+ return /* @__PURE__ */ e.createElement(
42
+ "button",
43
+ {
44
+ key: c.key,
45
+ type: "button",
46
+ className: d(t.i, o && t.a),
47
+ "data-active": o ? "true" : void 0,
48
+ "aria-current": o ? "page" : void 0,
49
+ disabled: c.disabled,
50
+ onClick: () => p(c.key)
51
+ },
52
+ c.icon != null ? /* @__PURE__ */ e.createElement("span", { className: t.c, "aria-hidden": !0 }, c.icon) : null,
53
+ /* @__PURE__ */ e.createElement("span", { className: t.t }, c.label)
54
+ );
55
+ }))), v != null ? /* @__PURE__ */ e.createElement("div", { className: t.f }, v) : null), /* @__PURE__ */ e.createElement("div", { className: t.m }, u ? /* @__PURE__ */ e.createElement(I, { fallback: f }, e.createElement(u)) : null));
56
+ }
57
+ export {
58
+ L as N
59
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cvr{display:flex;align-items:stretch;gap:var(--nav-sections-gap);width:100%;flex:1 1 auto;min-height:0;box-sizing:border-box;padding:var(--nav-sections-padding)}.cvn{display:flex;flex-direction:column;gap:1rem;flex:0 0 var(--nav-sections-nav-width);width:var(--nav-sections-nav-width);min-width:var(--nav-sections-nav-width);box-sizing:border-box}.cvg{display:flex;flex-direction:column;gap:2px;padding-bottom:.75rem;border-bottom:1px solid var(--nav-sections-group-border)}.cvg:last-of-type{border-bottom:none;padding-bottom:0}.cvl{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--nav-sections-label-color);padding:0 10px 6px}.cvi{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;border-radius:var(--nav-sections-item-radius);background:transparent;color:var(--nav-sections-item-color);font:inherit;font-size:14px;padding:var(--nav-sections-item-padding);cursor:pointer;position:relative;transition:background .12s ease,color .12s ease}.cvi:hover:not(:disabled){background:var(--nav-sections-item-background-hover)}.cva{background:var(--nav-sections-item-background-active)}.cva:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 2px 2px 0;background:var(--nav-sections-accent)}.cvi:disabled{opacity:.45;cursor:not-allowed}.cvc{display:inline-flex;flex:0 0 auto;color:var(--nav-sections-icon-color);line-height:0}.cva .cvc{color:var(--nav-sections-item-color)}.cvt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cvf{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--nav-sections-footer-border)}.cvm{flex:1 1 auto;min-width:0;max-width:var(--nav-sections-main-max-width);width:100%;min-height:0;overflow:auto;--section-padding: 0}@media (max-width: 720px){.cvr{flex-direction:column}.cvn{flex:none;width:100%;min-width:0;max-width:none}}}
@@ -0,0 +1,2 @@
1
+ export * from './NavSections/index'
2
+ export {}
@@ -0,0 +1,4 @@
1
+ import { N as e } from "./NavSections-CM-VPai2.js";
2
+ export {
3
+ e as NavSections
4
+ };
@@ -0,0 +1,20 @@
1
+ import e from "react";
2
+ import { c as a } from "./cx-CcykAxZN.js";
3
+ import { s as m } from "./stackGap-CDsjER0g.js";
4
+ import './Row.css';const n = "cwr", i = {
5
+ r: n
6
+ };
7
+ function R({ gap: r, children: t, className: o, style: s, ...c }) {
8
+ return /* @__PURE__ */ e.createElement(
9
+ "div",
10
+ {
11
+ className: a(i.r, o),
12
+ style: { ...m(r), ...s },
13
+ ...c
14
+ },
15
+ t
16
+ );
17
+ }
18
+ export {
19
+ R
20
+ };
package/dist/Row.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cwr{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--row-gap)}}
package/dist/Row.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './Row/index'
2
+ export {}
package/dist/Row.js ADDED
@@ -0,0 +1,4 @@
1
+ import { R } from "./Row-CnD7Q7pD.js";
2
+ export {
3
+ R as Row
4
+ };
@@ -0,0 +1,34 @@
1
+ import c from "react";
2
+ import { c as t } from "./cx-CcykAxZN.js";
3
+ import './Section.css';const f = "cep", v = "ceu", S = "cek", x = "ceh", A = "cec", T = "cei", z = "cet", B = "ced", F = "cee", H = "ceb", R = "ces", $ = "cel", e = {
4
+ p: f,
5
+ u: v,
6
+ k: S,
7
+ h: x,
8
+ c: A,
9
+ i: T,
10
+ t: z,
11
+ d: B,
12
+ e: F,
13
+ b: H,
14
+ s: R,
15
+ l: $
16
+ };
17
+ function w({
18
+ title: n,
19
+ description: s,
20
+ icon: a,
21
+ children: o,
22
+ actions: r,
23
+ variant: u = "page",
24
+ align: h,
25
+ titleSize: N = "lg",
26
+ className: d,
27
+ as: g
28
+ }) {
29
+ const m = u === "auth", l = u === "block", p = h ?? (m ? "center" : "start"), i = g ?? (m || l ? "section" : "main"), k = l ? "h2" : "h1", b = N ?? (l ? "md" : "lg"), E = /* @__PURE__ */ c.createElement(c.Fragment, null, (a != null || n != null || s != null) && /* @__PURE__ */ c.createElement("header", { className: t(e.h, p === "center" && e.c) }, a != null ? /* @__PURE__ */ c.createElement("div", { className: e.i }, a) : null, n != null ? /* @__PURE__ */ c.createElement(k, { className: t(e.t, b === "md" && e.d) }, n) : null, s != null ? /* @__PURE__ */ c.createElement("p", { className: e.e }, s) : null), o != null ? /* @__PURE__ */ c.createElement("div", { className: e.b }, o) : null, r != null ? /* @__PURE__ */ c.createElement("div", { className: e.s }, r) : null);
30
+ return m ? /* @__PURE__ */ c.createElement("div", { className: t(e.u, d) }, /* @__PURE__ */ c.createElement(i, { className: e.k }, E)) : /* @__PURE__ */ c.createElement(i, { className: t(l ? e.l : e.p, d) }, E);
31
+ }
32
+ export {
33
+ w as S
34
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cep{display:flex;flex-direction:column;gap:var(--section-gap);padding:var(--section-padding);flex:1;min-width:0}.ceu{box-sizing:border-box;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--section-auth-padding)}.cek{box-sizing:border-box;width:100%;max-width:var(--section-auth-card-max-width);padding:var(--section-auth-card-padding);background:var(--section-auth-card-background);border:1px solid var(--section-auth-card-border);border-radius:var(--section-auth-card-radius);box-shadow:var(--section-auth-card-shadow);display:flex;flex-direction:column;gap:var(--section-gap)}.ceh{display:flex;flex-direction:column;gap:.35rem}.cec{text-align:center;align-items:center}.cei{display:flex;margin-bottom:var(--section-icon-gap)}.cec .cei{justify-content:center}.cet{margin:0;font-size:var(--section-title-size);font-weight:600;letter-spacing:-.02em;color:var(--section-title-color);line-height:1.25}.ced{font-size:var(--section-title-size-md)}.cee{margin:0;font-size:var(--section-description-size);color:var(--section-description-color);line-height:1.45}.ceb{display:flex;flex-direction:column;gap:var(--section-body-gap);width:100%;text-align:left}.ces{display:flex;flex-direction:column;gap:var(--section-actions-gap);width:100%}.cel{display:flex;flex-direction:column;gap:var(--section-gap);margin-bottom:var(--section-block-margin-bottom);padding-bottom:var(--section-block-padding-bottom);border-bottom:1px solid var(--section-block-border)}.cel:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.cel .cet{font-size:.95rem;font-weight:600}}
@@ -0,0 +1,2 @@
1
+ export * from './Section/index'
2
+ export {}
@@ -0,0 +1,4 @@
1
+ import { S as r } from "./Section-Crxk2J-E.js";
2
+ export {
3
+ r as Section
4
+ };
@@ -0,0 +1,50 @@
1
+ import t, { useMemo as f, useState as S, Suspense as x } from "react";
2
+ import { c as b } from "./cx-CcykAxZN.js";
3
+ import './TabSections.css';const K = "ctr", T = "ctb", I = "ctn", M = "ctt", R = "cta", $ = "cte", g = "cts", j = "ctm", a = {
4
+ r: K,
5
+ b: T,
6
+ n: I,
7
+ t: M,
8
+ a: R,
9
+ e: $,
10
+ s: g,
11
+ m: j
12
+ };
13
+ function z({
14
+ items: n,
15
+ resolveSection: d,
16
+ activeKey: o,
17
+ defaultActiveKey: l,
18
+ onChange: s,
19
+ loading: i = null,
20
+ actions: m,
21
+ className: E,
22
+ navLabel: v = "Вкладки"
23
+ }) {
24
+ const k = f(() => {
25
+ var e;
26
+ return l || (((e = n.find((c) => !c.disabled)) == null ? void 0 : e.key) ?? "");
27
+ }, [l, n]), [p, y] = S(k), r = o ?? p, N = (e) => {
28
+ o == null && y(e), s == null || s(e);
29
+ }, u = r ? d(r) : null;
30
+ return /* @__PURE__ */ t.createElement("div", { className: b(a.r, E) }, /* @__PURE__ */ t.createElement("div", { className: a.b }, /* @__PURE__ */ t.createElement("nav", { className: a.n, "aria-label": v }, n.map((e) => {
31
+ const c = e.key === r;
32
+ return /* @__PURE__ */ t.createElement(
33
+ "button",
34
+ {
35
+ key: e.key,
36
+ type: "button",
37
+ className: b(a.t, c && a.a),
38
+ "data-active": c ? "true" : void 0,
39
+ "aria-current": c ? "page" : void 0,
40
+ disabled: e.disabled,
41
+ onClick: () => N(e.key)
42
+ },
43
+ /* @__PURE__ */ t.createElement("span", null, e.label),
44
+ e.badge != null && e.badge !== "" ? /* @__PURE__ */ t.createElement("em", { className: a.e }, e.badge) : null
45
+ );
46
+ })), m != null ? /* @__PURE__ */ t.createElement("div", { className: a.s }, m) : null), /* @__PURE__ */ t.createElement("div", { className: a.m }, u ? /* @__PURE__ */ t.createElement(x, { fallback: i }, t.createElement(u)) : null));
47
+ }
48
+ export {
49
+ z as T
50
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--tab-sections-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:1rem;border-bottom:1px solid var(--tab-sections-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--tab-sections-tab-gap);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:.4rem;flex:0 0 auto;margin:0 0 -1px;padding:var(--tab-sections-tab-padding);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--tab-sections-color);font:inherit;font-size:.95rem;font-weight:500;white-space:nowrap;cursor:pointer;transition:color .12s ease,border-color .12s ease}.ctt:hover:not(:disabled){color:var(--tab-sections-color-active)}.cta{color:var(--tab-sections-color-active);border-bottom-color:var(--tab-sections-accent)}.ctt:disabled{opacity:.45;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(--tab-sections-badge-background);color:var(--tab-sections-badge-color);font-size:var(--tab-sections-badge-size);font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:.35rem}.ctm{min-width:0;width:100%}}
@@ -0,0 +1,2 @@
1
+ export * from './TabSections/index'
2
+ export {}
@@ -0,0 +1,4 @@
1
+ import { T as e } from "./TabSections-oeEBx0nM.js";
2
+ export {
3
+ e as TabSections
4
+ };
@@ -0,0 +1,6 @@
1
+ function o(...n) {
2
+ return n.filter(Boolean).join(" ");
3
+ }
4
+ export {
5
+ o as c
6
+ };
package/dist/cx.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ /** Склейка className без лишних пробелов */
2
+ export declare function cx(...parts: Array<string | false | null | undefined>): string;
package/dist/index.css ADDED
@@ -0,0 +1,35 @@
1
+ @layer elcrm-components{.car{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;border-radius:var(--avatar-radius);border:var(--avatar-border);background:var(--avatar-background);color:var(--avatar-color);font-weight:var(--avatar-font-weight);line-height:1;-webkit-user-select:none;user-select:none;vertical-align:middle}.car:is(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;font:inherit;font-weight:var(--avatar-font-weight);cursor:pointer}.cas{width:var(--avatar-size-s);height:var(--avatar-size-s);font-size:var(--avatar-font-size-s)}.cam{width:var(--avatar-size-m);height:var(--avatar-size-m);font-size:var(--avatar-font-size-m)}.cal{width:var(--avatar-size-l);height:var(--avatar-size-l);font-size:var(--avatar-font-size-l)}.caa,.car[data-active=true]{outline:var(--avatar-outline-active);outline-offset:var(--avatar-outline-offset)}.cai{width:100%;height:100%;object-fit:cover;display:block}}
2
+
3
+ @layer elcrm-components{.cjr{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:var(--badge-padding);border-radius:var(--badge-radius);border:var(--badge-border);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);line-height:1;white-space:nowrap}.cjn{background:var(--badge-neutral-background);color:var(--badge-neutral-color)}.cja{background:var(--badge-accent-background);color:var(--badge-accent-color)}.cju{background:var(--badge-success-background);color:var(--badge-success-color)}.cjw{background:var(--badge-warning-background);color:var(--badge-warning-color)}.cjd{background:var(--badge-danger-background);color:var(--badge-danger-color)}}
4
+
5
+ @layer elcrm-components{.cbr{display:flex;flex-direction:column;gap:var(--block-gap);padding:var(--block-padding)}.cbh{flex-direction:row;flex-wrap:wrap;align-items:center}}
6
+
7
+ @layer elcrm-components{.cnr{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:0;background:transparent;font:inherit;font-weight:var(--brand-font-weight);letter-spacing:var(--brand-letter-spacing);color:var(--brand-color);white-space:nowrap;cursor:pointer;text-decoration:none}.cnr:hover{color:var(--brand-color-hover)}}
8
+
9
+ @layer elcrm-components{.cdr{background:var(--card-background);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);box-shadow:var(--card-shadow)}.cdt{margin:0 0 .5rem;font-size:1.125rem;font-weight:600}}
10
+
11
+ @layer elcrm-components{.cor{display:flex;flex-direction:column;gap:var(--column-gap)}}
12
+
13
+ @layer elcrm-components{.cpr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--empty-state-gap);padding:var(--empty-state-padding);text-align:center;color:var(--empty-state-color)}.cpi{display:flex;margin-bottom:var(--empty-state-icon-gap);color:var(--empty-state-icon-color)}.cpt{margin:0;font-size:var(--empty-state-title-size);font-weight:600;color:var(--empty-state-title-color);line-height:1.3}.cpd{margin:0;max-width:var(--empty-state-max-width);font-size:var(--empty-state-description-size);color:var(--empty-state-description-color);line-height:1.45}.cpa{display:flex;flex-wrap:wrap;gap:var(--empty-state-actions-gap);justify-content:center;margin-top:var(--empty-state-actions-margin-top)}}
14
+
15
+ @layer elcrm-components{.cfr{padding:var(--footer-padding);color:var(--footer-color);background:var(--footer-background);border-top:1px solid var(--footer-border);font-size:var(--footer-font-size)}}
16
+
17
+ @layer elcrm-components{.chr{display:flex;align-items:center;gap:var(--header-gap);min-height:var(--header-height);padding:var(--header-padding);color:var(--header-color);background:var(--header-background);border-bottom:1px solid var(--header-border);border-radius:var(--header-radius);box-shadow:var(--header-shadow);margin:var(--header-margin);position:sticky;top:0;z-index:var(--header-z)}.chb{flex-shrink:0}.chn{display:flex;align-items:center;min-width:0}.chs{flex:1;min-width:0;margin-left:auto;max-width:18rem}.cha{display:flex;align-items:center;gap:.5rem;flex-shrink:0}}
18
+
19
+ @layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--item-gap);padding:var(--item-padding);color:var(--item-color);background:var(--item-background);border:1px solid var(--item-border);border-radius:var(--item-radius);cursor:default}.cir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.cir:hover{background:var(--item-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--item-background-active)}}
20
+
21
+ @layer elcrm-components{.clr{display:flex;flex-direction:column;min-height:var(--layout-min-height);background:var(--layout-background);gap:var(--layout-gap)}.clm{flex:1;min-width:0}}
22
+
23
+ @layer elcrm-components{.csr{display:flex;flex-direction:column;gap:var(--list-gap);padding:var(--list-padding);margin:0;list-style:none}.csh{flex-direction:row;flex-wrap:wrap}}
24
+
25
+ @layer elcrm-components{.cgr{display:flex;align-items:center;justify-content:center;padding:var(--loading-padding);color:var(--loading-color)}}
26
+
27
+ @layer elcrm-components{.cmr{display:flex;align-items:center;gap:var(--menu-gap);margin:0;padding:0;list-style:none}.cmv{flex-direction:column;align-items:stretch}.cmi{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--menu-item-background);color:var(--menu-item-color);padding:var(--menu-item-padding);border-radius:var(--menu-item-radius);font:inherit;cursor:pointer;text-align:left}.cmi:hover{background:var(--menu-item-background-hover);color:var(--menu-item-color-active)}.cma,.cmi[aria-current=page],.cmi[data-active=true]{background:var(--menu-item-background-active);color:var(--menu-item-color-active)}}
28
+
29
+ @layer elcrm-components{.cvr{display:flex;align-items:stretch;gap:var(--nav-sections-gap);width:100%;flex:1 1 auto;min-height:0;box-sizing:border-box;padding:var(--nav-sections-padding)}.cvn{display:flex;flex-direction:column;gap:1rem;flex:0 0 var(--nav-sections-nav-width);width:var(--nav-sections-nav-width);min-width:var(--nav-sections-nav-width);box-sizing:border-box}.cvg{display:flex;flex-direction:column;gap:2px;padding-bottom:.75rem;border-bottom:1px solid var(--nav-sections-group-border)}.cvg:last-of-type{border-bottom:none;padding-bottom:0}.cvl{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--nav-sections-label-color);padding:0 10px 6px}.cvi{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;border-radius:var(--nav-sections-item-radius);background:transparent;color:var(--nav-sections-item-color);font:inherit;font-size:14px;padding:var(--nav-sections-item-padding);cursor:pointer;position:relative;transition:background .12s ease,color .12s ease}.cvi:hover:not(:disabled){background:var(--nav-sections-item-background-hover)}.cva{background:var(--nav-sections-item-background-active)}.cva:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 2px 2px 0;background:var(--nav-sections-accent)}.cvi:disabled{opacity:.45;cursor:not-allowed}.cvc{display:inline-flex;flex:0 0 auto;color:var(--nav-sections-icon-color);line-height:0}.cva .cvc{color:var(--nav-sections-item-color)}.cvt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cvf{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--nav-sections-footer-border)}.cvm{flex:1 1 auto;min-width:0;max-width:var(--nav-sections-main-max-width);width:100%;min-height:0;overflow:auto;--section-padding: 0}@media (max-width: 720px){.cvr{flex-direction:column}.cvn{flex:none;width:100%;min-width:0;max-width:none}}}
30
+
31
+ @layer elcrm-components{.cwr{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--row-gap)}}
32
+
33
+ @layer elcrm-components{.cep{display:flex;flex-direction:column;gap:var(--section-gap);padding:var(--section-padding);flex:1;min-width:0}.ceu{box-sizing:border-box;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--section-auth-padding)}.cek{box-sizing:border-box;width:100%;max-width:var(--section-auth-card-max-width);padding:var(--section-auth-card-padding);background:var(--section-auth-card-background);border:1px solid var(--section-auth-card-border);border-radius:var(--section-auth-card-radius);box-shadow:var(--section-auth-card-shadow);display:flex;flex-direction:column;gap:var(--section-gap)}.ceh{display:flex;flex-direction:column;gap:.35rem}.cec{text-align:center;align-items:center}.cei{display:flex;margin-bottom:var(--section-icon-gap)}.cec .cei{justify-content:center}.cet{margin:0;font-size:var(--section-title-size);font-weight:600;letter-spacing:-.02em;color:var(--section-title-color);line-height:1.25}.ced{font-size:var(--section-title-size-md)}.cee{margin:0;font-size:var(--section-description-size);color:var(--section-description-color);line-height:1.45}.ceb{display:flex;flex-direction:column;gap:var(--section-body-gap);width:100%;text-align:left}.ces{display:flex;flex-direction:column;gap:var(--section-actions-gap);width:100%}.cel{display:flex;flex-direction:column;gap:var(--section-gap);margin-bottom:var(--section-block-margin-bottom);padding-bottom:var(--section-block-padding-bottom);border-bottom:1px solid var(--section-block-border)}.cel:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.cel .cet{font-size:.95rem;font-weight:600}}
34
+
35
+ @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--tab-sections-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:1rem;border-bottom:1px solid var(--tab-sections-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--tab-sections-tab-gap);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:.4rem;flex:0 0 auto;margin:0 0 -1px;padding:var(--tab-sections-tab-padding);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--tab-sections-color);font:inherit;font-size:.95rem;font-weight:500;white-space:nowrap;cursor:pointer;transition:color .12s ease,border-color .12s ease}.ctt:hover:not(:disabled){color:var(--tab-sections-color-active)}.cta{color:var(--tab-sections-color-active);border-bottom-color:var(--tab-sections-accent)}.ctt:disabled{opacity:.45;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(--tab-sections-badge-background);color:var(--tab-sections-badge-color);font-size:var(--tab-sections-badge-size);font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:.35rem}.ctm{min-width:0;width:100%}}
@@ -0,0 +1,39 @@
1
+ export { Layout } from './Layout';
2
+ export type { LayoutProps } from './Layout';
3
+ export { Header } from './Header';
4
+ export type { HeaderProps } from './Header';
5
+ export { Footer } from './Footer';
6
+ export type { FooterProps } from './Footer';
7
+ export { List } from './List';
8
+ export type { ListProps } from './List';
9
+ export { Item } from './Item';
10
+ export type { ItemProps } from './Item';
11
+ export { Card } from './Card';
12
+ export type { CardProps } from './Card';
13
+ export { Block } from './Block';
14
+ export type { BlockProps } from './Block';
15
+ export { Row } from './Row';
16
+ export type { RowProps } from './Row';
17
+ export { Column } from './Column';
18
+ export type { ColumnProps } from './Column';
19
+ export { Menu } from './Menu';
20
+ export type { MenuProps, MenuItem } from './Menu';
21
+ export { Loading } from './Loading';
22
+ export type { LoadingProps } from './Loading';
23
+ export { Section } from './Section';
24
+ export type { SectionProps } from './Section';
25
+ export { NavSections } from './NavSections';
26
+ export type { NavSectionsProps, NavSectionsGroup, NavSectionsItem, } from './NavSections';
27
+ export { TabSections } from './TabSections';
28
+ export type { TabSectionsProps, TabSectionsItem } from './TabSections';
29
+ export { Avatar, initialsFromName } from './Avatar';
30
+ export type { AvatarProps } from './Avatar';
31
+ export { Badge } from './Badge';
32
+ export type { BadgeProps } from './Badge';
33
+ export { Brand } from './Brand';
34
+ export type { BrandProps } from './Brand';
35
+ export { EmptyState } from './EmptyState';
36
+ export type { EmptyStateProps } from './EmptyState';
37
+ export { createLazyResolver } from './lazyRoute';
38
+ export type { LazyRouteChunk } from './lazyRoute';
39
+ export { cx } from './cx';