@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.
Files changed (216) hide show
  1. package/README.md +76 -38
  2. package/dist/ActionGroup-DcApj_Mz.js +27 -0
  3. package/dist/ActionGroup.css +1 -1
  4. package/dist/ActionGroup.d.ts +19 -19
  5. package/dist/ActionGroup.js +1 -1
  6. package/dist/Avatar-eGdLrMCv.js +113 -0
  7. package/dist/Avatar.css +1 -1
  8. package/dist/Avatar.d.ts +4 -4
  9. package/dist/Avatar.js +1 -1
  10. package/dist/AvatarGroup-Dq-UrOaC.js +81 -0
  11. package/dist/AvatarGroup.css +1 -1
  12. package/dist/AvatarGroup.d.ts +8 -28
  13. package/dist/AvatarGroup.js +1 -1
  14. package/dist/AvatarName-3B4yCxHn.js +68 -0
  15. package/dist/AvatarName.css +1 -1
  16. package/dist/AvatarName.js +1 -1
  17. package/dist/Badge-BjScAXGy.js +28 -0
  18. package/dist/Badge.css +1 -1
  19. package/dist/Badge.js +1 -1
  20. package/dist/Banner-DAY18FWO.js +34 -0
  21. package/dist/Banner.css +1 -1
  22. package/dist/Banner.js +1 -1
  23. package/dist/Brand-BfCuiyf7.js +34 -0
  24. package/dist/Brand.css +1 -1
  25. package/dist/Brand.d.ts +8 -10
  26. package/dist/Brand.js +1 -1
  27. package/dist/Breadcrumb-DM_hWw5n.js +98 -0
  28. package/dist/Breadcrumb.css +1 -1
  29. package/dist/Breadcrumb.d.ts +8 -5
  30. package/dist/Breadcrumb.js +1 -1
  31. package/dist/Card-a7N8Uh_H.js +12 -0
  32. package/dist/Card.css +1 -1
  33. package/dist/Card.js +1 -1
  34. package/dist/ChatFrame-BdSYRF-B.js +37 -0
  35. package/dist/ChatFrame.css +1 -1
  36. package/dist/ChatList.js +2 -2
  37. package/dist/{ChatMessages-B8rdXiK-.js → ChatMessages-CLxwRGIa.js} +1 -1
  38. package/dist/ChatMessages.js +1 -1
  39. package/dist/ChatSplit-8iw_1Shp.js +21 -0
  40. package/dist/CodeBlock-B3wvMejv.js +34 -0
  41. package/dist/CodeBlock.css +1 -1
  42. package/dist/CodeBlock.js +1 -1
  43. package/dist/Dropdown-CR_XxNak.js +185 -0
  44. package/dist/Dropdown.css +1 -1
  45. package/dist/Dropdown.d.ts +4 -94
  46. package/dist/Dropdown.js +1 -1
  47. package/dist/EmptyState-B_wWPjUu.js +23 -0
  48. package/dist/EmptyState.css +1 -1
  49. package/dist/EmptyState.d.ts +1 -1
  50. package/dist/EmptyState.js +1 -1
  51. package/dist/{Footer-qxUlnPR9.js → Footer-Bgh_JCUe.js} +4 -4
  52. package/dist/Footer.css +1 -1
  53. package/dist/Footer.js +1 -1
  54. package/dist/Header-BMDIi3u2.js +21 -0
  55. package/dist/Header.css +1 -1
  56. package/dist/Header.js +1 -1
  57. package/dist/Healthmap-Z-LLfGW0.js +359 -0
  58. package/dist/Healthmap.css +1 -1
  59. package/dist/Healthmap.d.ts +25 -3
  60. package/dist/Healthmap.js +1 -1
  61. package/dist/{Item-D4okhsfW.js → Item-CGpkMJu0.js} +13 -13
  62. package/dist/Item.css +1 -1
  63. package/dist/Item.d.ts +7 -7
  64. package/dist/Item.js +1 -1
  65. package/dist/ItemColumn-Ch61LqE0.js +41 -0
  66. package/dist/ItemColumn.css +1 -1
  67. package/dist/ItemColumn.js +1 -1
  68. package/dist/Layout-CzEGKl9s.js +31 -0
  69. package/dist/Layout.css +1 -1
  70. package/dist/Layout.d.ts +1 -1
  71. package/dist/Layout.js +1 -1
  72. package/dist/List-D13pqaUY.js +12 -0
  73. package/dist/List.css +1 -1
  74. package/dist/List.js +1 -1
  75. package/dist/Loading-C_CKD-zt.js +16 -0
  76. package/dist/Loading.css +1 -1
  77. package/dist/Loading.d.ts +1 -1
  78. package/dist/Loading.js +1 -1
  79. package/dist/Menu-D2kf7fN_.js +72 -0
  80. package/dist/Menu.css +1 -1
  81. package/dist/Menu.d.ts +7 -25
  82. package/dist/Menu.js +1 -1
  83. package/dist/NavSections-CNxxBMPT.js +154 -0
  84. package/dist/NavSections.css +1 -1
  85. package/dist/NavSections.d.ts +16 -28
  86. package/dist/NavSections.js +1 -1
  87. package/dist/PageHead-BfClTLrF.js +31 -0
  88. package/dist/PageHead.css +1 -1
  89. package/dist/PageHead.d.ts +1 -1
  90. package/dist/PageHead.js +1 -1
  91. package/dist/PageShell-BAJges-G.js +30 -0
  92. package/dist/PageShell.css +1 -1
  93. package/dist/PageShell.js +1 -1
  94. package/dist/PanelInfo-Db5GCr-c.js +137 -0
  95. package/dist/PanelInfo.css +1 -1
  96. package/dist/PanelInfo.d.ts +16 -9
  97. package/dist/PanelInfo.js +1 -1
  98. package/dist/Popover-xEZoMY-h.js +143 -0
  99. package/dist/Popover.css +1 -1
  100. package/dist/Popover.d.ts +40 -11
  101. package/dist/Popover.js +1 -1
  102. package/dist/PricingGroup-CWy47MlE.js +138 -0
  103. package/dist/PricingGroup.css +1 -1
  104. package/dist/PricingGroup.d.ts +0 -2
  105. package/dist/PricingGroup.js +1 -1
  106. package/dist/PricingTable-BjpGVAhi.js +157 -0
  107. package/dist/PricingTable.css +1 -1
  108. package/dist/PricingTable.d.ts +4 -7
  109. package/dist/PricingTable.js +1 -1
  110. package/dist/RadioGroup-DI4KKUvZ.js +121 -0
  111. package/dist/RadioGroup.css +1 -1
  112. package/dist/RadioGroup.js +1 -1
  113. package/dist/Section-PprWjOvt.js +47 -0
  114. package/dist/Section.css +1 -1
  115. package/dist/Section.d.ts +29 -9
  116. package/dist/Section.js +1 -1
  117. package/dist/Sidebar-Bouhd5SS.js +205 -0
  118. package/dist/Sidebar.css +1 -1
  119. package/dist/Sidebar.d.ts +18 -26
  120. package/dist/Sidebar.js +1 -1
  121. package/dist/SplitPane-DBa-g9td.js +92 -0
  122. package/dist/SplitPane.css +1 -1
  123. package/dist/SplitPane.d.ts +8 -7
  124. package/dist/SplitPane.js +1 -1
  125. package/dist/Stack-BPTehVYc.js +53 -0
  126. package/dist/Stack.css +1 -1
  127. package/dist/Stack.d.ts +2 -1
  128. package/dist/Stack.js +1 -1
  129. package/dist/Stat-p8j4PjrC.js +28 -0
  130. package/dist/Stat.css +1 -1
  131. package/dist/Stat.js +1 -1
  132. package/dist/TabSections-Dppe9wiz.js +84 -0
  133. package/dist/TabSections.css +1 -1
  134. package/dist/TabSections.d.ts +7 -2
  135. package/dist/TabSections.js +1 -1
  136. package/dist/Table-DqrDUUtb.js +27 -0
  137. package/dist/Table.css +1 -1
  138. package/dist/Table.d.ts +10 -2
  139. package/dist/Table.js +1 -1
  140. package/dist/Text-Bo1u7gVC.js +25 -0
  141. package/dist/Text.css +1 -0
  142. package/dist/Text.d.ts +19 -0
  143. package/dist/Text.js +4 -0
  144. package/dist/TextGroup-236jHxdT.js +23 -0
  145. package/dist/TextGroup.css +1 -1
  146. package/dist/TextGroup.js +1 -1
  147. package/dist/Toolbar-Bl9-5Mis.js +35 -0
  148. package/dist/Toolbar.css +1 -1
  149. package/dist/Toolbar.d.ts +7 -12
  150. package/dist/Toolbar.js +1 -2
  151. package/dist/cx.d.ts +1 -1
  152. package/dist/dark.css +12 -0
  153. package/dist/index.css +41 -39
  154. package/dist/index.d.ts +7 -12
  155. package/dist/index.es.d.ts +7 -12
  156. package/dist/index.es.js +110 -107
  157. package/dist/kit-manifest.json +1646 -0
  158. package/dist/lazyRoute.d.ts +12 -6
  159. package/dist/light.css +12 -0
  160. package/dist/navTree.d.ts +13 -1
  161. package/dist/rovingKeys-Di9N1Nct.js +23 -0
  162. package/dist/rovingKeys.d.ts +7 -1
  163. package/dist/stackGap.d.ts +1 -1
  164. package/dist/tokens.css +20 -2
  165. package/dist/useControllableValue-BaE0VR5d.js +13 -0
  166. package/dist/useControllableValue.d.ts +3 -0
  167. package/package.json +48 -4
  168. package/dist/ActionGroup-ChKFW0mt.js +0 -27
  169. package/dist/Avatar-loGgFt72.js +0 -113
  170. package/dist/AvatarGroup-D1gnT3Od.js +0 -81
  171. package/dist/AvatarName-0BzyfpMq.js +0 -68
  172. package/dist/Badge-jp-9iNNL.js +0 -28
  173. package/dist/Banner-B72lcEMo.js +0 -34
  174. package/dist/Block-Bu7NEA0g.js +0 -8
  175. package/dist/Block.d.ts +0 -30
  176. package/dist/Block.js +0 -4
  177. package/dist/Brand-Zq-Idks4.js +0 -34
  178. package/dist/Breadcrumb-CAM_e9LN.js +0 -98
  179. package/dist/Card-hn37Opo3.js +0 -12
  180. package/dist/ChatFrame-BW2TmCkZ.js +0 -37
  181. package/dist/ChatSplit-DNnu3TNq.js +0 -21
  182. package/dist/CodeBlock-CRzVopIv.js +0 -25
  183. package/dist/Column-BiogBDf8.js +0 -8
  184. package/dist/Column.d.ts +0 -24
  185. package/dist/Column.js +0 -4
  186. package/dist/Dropdown-DosvDR13.js +0 -147
  187. package/dist/EmptyState-mBiWtMIM.js +0 -23
  188. package/dist/Header-DZQopVNy.js +0 -21
  189. package/dist/Healthmap-B6cdiLUl.js +0 -243
  190. package/dist/ItemColumn-M7a9L8CI.js +0 -41
  191. package/dist/Layout-mi6Ghayv.js +0 -31
  192. package/dist/List-BgKkYaGO.js +0 -12
  193. package/dist/Loading-DkkG7RcE.js +0 -16
  194. package/dist/Menu-DuXQv-zT.js +0 -66
  195. package/dist/NavSections-D6rDEtT1.js +0 -142
  196. package/dist/PageHead-DgaJ1mXY.js +0 -31
  197. package/dist/PageShell-D9EZiO8o.js +0 -30
  198. package/dist/PanelInfo-A5y5ysH8.js +0 -81
  199. package/dist/Popover-DWdvZTuA.js +0 -135
  200. package/dist/PricingGroup-Czuhe81Z.js +0 -120
  201. package/dist/PricingTable-BuLC0opK.js +0 -152
  202. package/dist/RadioGroup-fcXzhvMu.js +0 -129
  203. package/dist/Row-DsQOVn18.js +0 -8
  204. package/dist/Row.d.ts +0 -24
  205. package/dist/Row.js +0 -4
  206. package/dist/Section-Crxk2J-E.js +0 -34
  207. package/dist/Sidebar-CYFaPqdC.js +0 -178
  208. package/dist/SplitPane-DR7PCZ8f.js +0 -74
  209. package/dist/Stack-XkmPSswj.js +0 -53
  210. package/dist/Stat-sKXJwz5L.js +0 -27
  211. package/dist/TabSections-DN7yVJoF.js +0 -69
  212. package/dist/Table-BoDr3X2d.js +0 -25
  213. package/dist/TextGroup-DmhuyMR1.js +0 -23
  214. package/dist/Toolbar-C1zAk9ak.js +0 -42
  215. package/dist/rovingKeys-CGlfTtNQ.js +0 -15
  216. package/dist/useControllableValue-CWqH1kpM.js +0 -10
@@ -0,0 +1,185 @@
1
+ import n, { useRef as A, useEffect as K } from "react";
2
+ import { c as u } from "./cx-CcykAxZN.js";
3
+ import { P as T } from "./Popover-xEZoMY-h.js";
4
+ import { h as W } from "./rovingKeys-Di9N1Nct.js";
5
+ import { u as G } from "./Toolbar-Bl9-5Mis.js";
6
+ import { u as H } from "./useControllableValue-BaE0VR5d.js";
7
+ import { C as S } from "./CheckIcon-FdB8fMEF.js";
8
+ import './Dropdown.css';const $ = "ldr", J = "lda", Q = "ldt", U = "ldc", X = "ldp", Y = "ldh", Z = "ldg", _ = "ldd", V = "ldi", ee = "ldn", ne = "ldm", te = "ldk", le = "ldl", ae = "ldu", ce = "ldb", oe = "ldo", re = "ldf", se = "ldx", ue = "ldy", de = "ldv", ie = "lde", fe = "lds", l = {
9
+ root: $,
10
+ anchor: J,
11
+ trigger: Q,
12
+ chevron: U,
13
+ panel: X,
14
+ heading: Y,
15
+ group: Z,
16
+ divider: _,
17
+ item: V,
18
+ none: ee,
19
+ more: ne,
20
+ kcheck: te,
21
+ label: le,
22
+ ushort: ae,
23
+ bead: ce,
24
+ online: oe,
25
+ foff: re,
26
+ xbox: se,
27
+ yes: ue,
28
+ vtick: de,
29
+ elevated: ie,
30
+ surface: fe
31
+ };
32
+ function he() {
33
+ return /* @__PURE__ */ n.createElement("svg", { className: l.chevron, viewBox: "0 0 12 12", "aria-hidden": !0 }, /* @__PURE__ */ n.createElement(
34
+ "path",
35
+ {
36
+ d: "M2.5 4.5 6 8l3.5-3.5",
37
+ fill: "none",
38
+ stroke: "currentColor",
39
+ strokeWidth: "1.5",
40
+ strokeLinecap: "round",
41
+ strokeLinejoin: "round"
42
+ }
43
+ ));
44
+ }
45
+ function me() {
46
+ return /* @__PURE__ */ n.createElement("svg", { className: l.more, viewBox: "0 0 12 12", "aria-hidden": !0 }, /* @__PURE__ */ n.createElement(
47
+ "path",
48
+ {
49
+ d: "M4.5 2.5 8 6l-3.5 3.5",
50
+ fill: "none",
51
+ stroke: "currentColor",
52
+ strokeWidth: "1.5",
53
+ strokeLinecap: "round",
54
+ strokeLinejoin: "round"
55
+ }
56
+ ));
57
+ }
58
+ function ke({ item: a }) {
59
+ return a.checkbox ? /* @__PURE__ */ n.createElement("span", { className: u(l.xbox, a.checked && l.yes), "aria-hidden": !0 }, a.checked ? /* @__PURE__ */ n.createElement(S, { className: l.vtick }) : null) : a.checked ? /* @__PURE__ */ n.createElement("span", { className: l.kcheck, "aria-hidden": !0 }, /* @__PURE__ */ n.createElement(S, { className: l.vtick })) : a.status != null ? /* @__PURE__ */ n.createElement(
60
+ "span",
61
+ {
62
+ className: u(l.bead, a.status === "online" ? l.online : l.foff),
63
+ "aria-hidden": !0
64
+ }
65
+ ) : a.icon != null ? /* @__PURE__ */ n.createElement("span", { className: l.none }, a.icon) : null;
66
+ }
67
+ function ve(a, o, c) {
68
+ return o != null && o.length > 0 ? c != null && o[0] && o[0].title == null ? [{ ...o[0], title: c }, ...o.slice(1)] : o : a != null && a.length > 0 ? [{ title: c, items: a }] : c != null ? [{ title: c, items: [] }] : [];
69
+ }
70
+ function Se({
71
+ items: a,
72
+ groups: o,
73
+ trigger: c,
74
+ label: d,
75
+ hideChevron: g = !1,
76
+ title: L,
77
+ align: E = "end",
78
+ placement: R = "auto",
79
+ open: w,
80
+ defaultOpen: z = !1,
81
+ onOpenChange: D,
82
+ closeOnSelect: M = !0,
83
+ disabled: i = !1,
84
+ size: O,
85
+ tone: N = "default",
86
+ onValueChange: f,
87
+ className: P
88
+ }) {
89
+ const h = G(), B = O ?? (h == null ? void 0 : h.size), [m = !1, x] = H(
90
+ w,
91
+ z,
92
+ D
93
+ ), y = ve(a, o, L), k = A(null), v = y.flatMap((e) => e.items).filter((e) => !e.disabled).map((e) => e.value), [C, p] = n.useState(v[0] ?? ""), b = N === "account";
94
+ K(() => {
95
+ if (!m) return;
96
+ const e = v[0];
97
+ e && (p(e), requestAnimationFrame(() => {
98
+ var t;
99
+ const r = (t = k.current) == null ? void 0 : t.querySelector(
100
+ `[data-value="${typeof CSS < "u" && CSS.escape ? CSS.escape(e) : e.replace(/"/g, '\\"')}"]`
101
+ );
102
+ r instanceof HTMLElement && r.focus();
103
+ }));
104
+ }, [m]);
105
+ const F = (e) => {
106
+ var t;
107
+ if (e.disabled) return;
108
+ (t = e.onClick) == null || t.call(e), f == null || f(e.value, e), e.checkbox || e.submenu || !M || x(!1);
109
+ };
110
+ return /* @__PURE__ */ n.createElement(
111
+ T,
112
+ {
113
+ className: u(l.root, P),
114
+ open: m,
115
+ onOpenChange: (e) => {
116
+ i || x(e);
117
+ },
118
+ align: E,
119
+ placement: R,
120
+ label: typeof d == "string" ? d : void 0,
121
+ disabled: i,
122
+ role: "menu",
123
+ panelClassName: b ? l.elevated : void 0,
124
+ fitContent: b,
125
+ trigger: (e) => typeof c == "function" ? c(e) : c != null ? /* @__PURE__ */ n.createElement("span", { className: l.anchor, ...e.anchorProps }, c) : /* @__PURE__ */ n.createElement(
126
+ "button",
127
+ {
128
+ type: "button",
129
+ className: l.trigger,
130
+ "data-size": B,
131
+ "data-open": e.open ? "true" : void 0,
132
+ disabled: i,
133
+ ...e.anchorProps
134
+ },
135
+ d,
136
+ g ? null : /* @__PURE__ */ n.createElement(he, null)
137
+ )
138
+ },
139
+ /* @__PURE__ */ n.createElement(
140
+ "div",
141
+ {
142
+ ref: k,
143
+ className: u(l.panel, b && l.surface),
144
+ "data-align": E,
145
+ "data-tone": N,
146
+ onKeyDown: (e) => W(e, {
147
+ values: v,
148
+ value: C,
149
+ vertical: !0,
150
+ focusRoot: k.current,
151
+ onSelect: p
152
+ })
153
+ },
154
+ y.map((e, r) => /* @__PURE__ */ n.createElement(n.Fragment, { key: e.value ?? e.title ?? r }, r > 0 ? /* @__PURE__ */ n.createElement("hr", { className: l.divider }) : null, /* @__PURE__ */ n.createElement("div", { className: l.group, role: "group" }, e.title != null ? /* @__PURE__ */ n.createElement("p", { className: l.heading }, e.title) : null, e.items.map((t) => {
155
+ const I = e.items.some(
156
+ (s) => s.checked || s.checkbox || s.status != null || s.icon != null
157
+ ), j = /* @__PURE__ */ n.createElement(ke, { item: t }), q = t.checkbox === !0 || t.checked != null;
158
+ return /* @__PURE__ */ n.createElement(
159
+ "button",
160
+ {
161
+ key: t.value,
162
+ type: "button",
163
+ role: t.checkbox ? "menuitemcheckbox" : "menuitem",
164
+ className: l.item,
165
+ "data-value": t.value,
166
+ "data-checked": (t.checked || t.checkbox) && t.checked ? "true" : void 0,
167
+ "data-danger": t.danger ? "true" : void 0,
168
+ tabIndex: t.value === C ? 0 : -1,
169
+ disabled: t.disabled,
170
+ "aria-checked": q ? !!t.checked : void 0,
171
+ onClick: () => F(t),
172
+ onFocus: () => p(t.value)
173
+ },
174
+ I ? j ?? /* @__PURE__ */ n.createElement("span", { className: l.none, "aria-hidden": !0 }) : null,
175
+ t.label != null ? /* @__PURE__ */ n.createElement("span", { className: l.label }, t.label) : null,
176
+ t.shortcut != null ? /* @__PURE__ */ n.createElement("span", { className: l.ushort }, t.shortcut) : null,
177
+ t.submenu ? /* @__PURE__ */ n.createElement(me, null) : null
178
+ );
179
+ }))))
180
+ )
181
+ );
182
+ }
183
+ export {
184
+ Se as D
185
+ };
package/dist/Dropdown.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.crr{position:relative;display:inline-flex;vertical-align:middle}.crt{display:inline-flex;align-items:center;gap:var(--shell-gap-sm);margin:0;padding:var(--shell-padding);box-sizing:border-box;font:inherit;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);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;line-height:1.2}.crt[data-size]{height:var(--control-height);min-height:var(--control-height);padding-block:0;box-sizing:border-box}.crt:hover{background:var(--shell-background-hover)}.crt[data-open=true]{border-color:var(--shell-color-accent);color:var(--shell-color-accent)}.crc{display:inline-flex;width:var(--shell-icon-size);height:var(--shell-icon-size);flex-shrink:0;color:var(--shell-color-muted)}.crt[data-open=true] .crc{color:var(--shell-color-accent)}.crp{min-width:0}.crh{margin:0;padding:var(--shell-padding);font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);color:var(--shell-color-muted);line-height:1.3}.crg{display:flex;flex-direction:column;gap:2px}.crd{height:0;margin:var(--shell-gap-sm) 0;border:0;border-top:1px solid var(--shell-border)}.cri{display:flex;align-items:center;gap:var(--shell-gap-sm);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;font-size:var(--shell-font-size);font-weight:500;color:var(--shell-color);background:transparent;border:none;border-radius:calc(var(--shell-radius) * .7);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.35}.cri:hover:not(:disabled),.cri:focus-visible:not(:disabled){background:var(--shell-background-hover);outline:none}.cri[data-checked=true]{background:var(--shell-background-selected)}.cri[data-danger=true]{color:var(--shell-color-danger)}.cri[data-danger=true] .crn,.cri[data-danger=true] .crm{color:inherit}.cri:disabled,.cri[aria-disabled=true]{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.crn,.crk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.crk{color:var(--shell-color-accent)}.crl{flex:1;min-width:0}.cru{flex-shrink:0;margin-left:auto;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.crm{display:inline-flex;flex-shrink:0;margin-left:auto;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.crb{display:inline-flex;flex-shrink:0;width:var(--shell-status-size);height:var(--shell-status-size);border-radius:50%}.cro{background:var(--shell-color-success)}.crf{background:var(--shell-color-muted)}.crx{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:var(--shell-check-size);height:var(--shell-check-size);border:1px solid var(--shell-border);border-radius:calc(var(--shell-radius) * .4);background:var(--shell-background);color:var(--avatar-color)}.cry{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.crv{width:70%;height:70%;display:block}}
1
+ @layer elcrm-components{.ldr{position:relative;display:inline-flex;vertical-align:middle}.lda{display:inline-flex;align-items:center;min-width:0;cursor:pointer}.ldt{display:inline-flex;align-items:center;gap:var(--shell-gap-sm);margin:0;padding:var(--shell-padding);box-sizing:border-box;font:inherit;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);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;line-height:1.2}.ldt[data-size]{height:var(--control-height);min-height:var(--control-height);padding-block:0;box-sizing:border-box}.ldt:hover{background:var(--shell-background-hover)}.ldt[data-open=true]{border-color:var(--shell-color-accent);color:var(--shell-color-accent)}.ldc{display:inline-flex;width:var(--shell-icon-size);height:var(--shell-icon-size);flex-shrink:0;color:var(--shell-color-muted)}.ldt[data-open=true] .ldc{color:var(--shell-color-accent)}.ldp{min-width:0}.ldh{margin:0;padding:var(--shell-padding);font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);color:var(--shell-color-muted);line-height:1.3}.ldg{display:flex;flex-direction:column;gap:2px}.ldd{height:0;margin:var(--shell-gap-sm) 0;border:0;border-top:1px solid var(--shell-border)}.ldi{display:flex;align-items:center;gap:var(--shell-gap-sm);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;font-size:var(--shell-font-size);font-weight:500;color:var(--shell-color);background:transparent;border:none;border-radius:calc(var(--shell-radius) * .7);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.35}.ldi:hover:not(:disabled),.ldi:focus-visible:not(:disabled){background:var(--shell-background-hover);outline:none}.ldi[data-checked=true]{background:var(--shell-background-selected)}.ldi[data-danger=true]{color:var(--shell-color-danger)}.ldi[data-danger=true] .ldn,.ldi[data-danger=true] .ldm{color:inherit}.ldi:disabled,.ldi[aria-disabled=true]{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.ldn,.ldk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.ldk{color:var(--shell-color-accent)}.ldl{flex:1;min-width:0}.ldu{flex-shrink:0;margin-left:auto;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.ldm{display:inline-flex;flex-shrink:0;margin-left:auto;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.ldb{display:inline-flex;flex-shrink:0;width:var(--shell-status-size);height:var(--shell-status-size);border-radius:50%}.ldo{background:var(--shell-color-success)}.ldf{background:var(--shell-color-muted)}.ldx{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:var(--shell-check-size);height:var(--shell-check-size);border:1px solid var(--shell-border);border-radius:calc(var(--shell-radius) * .4);background:var(--shell-background);color:var(--avatar-color)}.ldy{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.ldv{width:70%;height:70%;display:block}.lde{padding:var(--sidebar-account-menu-padding);background:var(--sidebar-account-menu-bg);border:1px solid var(--sidebar-account-menu-border);border-radius:var(--sidebar-account-menu-radius);box-shadow:var(--sidebar-account-menu-shadow);color:var(--sidebar-account-menu-color);max-width:none;max-height:none;overflow:visible;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);animation:ldz .16s ease-out}.lds{min-width:0;max-width:none;max-height:none;padding:0;background:transparent;border:none;box-shadow:none;color:inherit}.lds .ldi{gap:var(--sidebar-account-item-gap);padding:var(--sidebar-account-item-padding);border-radius:var(--sidebar-account-item-radius);font-size:var(--shell-font-size);font-weight:500;color:var(--sidebar-account-menu-color)}.lds .ldi:hover:not(:disabled),.lds .ldi:focus-visible:not(:disabled){background:var(--sidebar-account-item-hover)}.lds .ldi[data-danger=true]{color:var(--shell-color-danger)}.lds .ldi[data-danger=true]:hover:not(:disabled){background:var(--sidebar-account-danger-hover)}.lds .ldn,.lds .ldm,.lds .ldu{color:var(--sidebar-account-item-icon)}.lds .ldi[data-danger=true] .ldn,.lds .ldi[data-danger=true] .ldm{color:inherit}.lds .ldd{margin:4px 8px;border-top-color:var(--sidebar-account-menu-border)}}@keyframes ldz{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@@ -1,96 +1,6 @@
1
1
  import { default as React } from 'react';
2
- import { UiSize } from './types';
3
- /**
4
- * Пункт выпадающего меню {@link Dropdown}.
5
- *
6
- * Идентификатор — всегда `value` (не `key`).
7
- * Опциональные поля (`icon`, `shortcut`, …): есть → рисуем, нет → пропускаем.
8
- */
9
- export type DropdownItem = {
10
- /** Уникальный идентификатор пункта (не `key`). */
11
- value: string;
12
- /** Подпись пункта. */
13
- label?: React.ReactNode;
14
- /** Иконка слева. */
15
- icon?: React.ReactNode;
16
- /** Горячая клавиша справа (например «⌘X»). */
17
- shortcut?: React.ReactNode;
18
- /** Галочка слева (выбор / toggle). */
19
- checked?: boolean;
20
- /** Режим чекбокса (колонки списка и т.п.). */
21
- checkbox?: boolean;
22
- /** Точка статуса вместо icon. */
23
- status?: "online" | "offline";
24
- /** Стрелка submenu справа (визуальный намёк; логика submenu — снаружи). */
25
- submenu?: boolean;
26
- /** Недоступный пункт. */
27
- disabled?: boolean;
28
- /** Опасное действие (Delete) — красный акцент. */
29
- danger?: boolean;
30
- /** Локальный обработчик клика (дополнительно к `onSelect`). */
31
- onClick?: () => void;
32
- };
33
- /**
34
- * Секция панели dropdown: опциональный заголовок + `items`.
35
- *
36
- * Между секциями рисуется разделитель. Декларативный API, без compound-слотов.
37
- */
38
- export type DropdownGroup = {
39
- /** Заголовок секции / панели («Колонки в списке»). */
40
- title?: React.ReactNode;
41
- /** Пункты секции. */
42
- items: DropdownItem[];
43
- };
44
- /**
45
- * Props компонента {@link Dropdown}.
46
- *
47
- * Передавайте либо плоский `items`, либо структурированные `groups`.
48
- */
49
- export type DropdownProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "onSelect"> & {
50
- /**
51
- * Плоский декларативный список пунктов.
52
- * Для секций с разделителями используйте `groups`.
53
- */
54
- items?: DropdownItem[];
55
- /** Секции с разделителями между ними. */
56
- groups?: DropdownGroup[];
57
- /** Кастомный триггер; иначе кнопка из `label`. */
58
- trigger?: React.ReactNode;
59
- /** Текст встроенного триггера. */
60
- label?: React.ReactNode;
61
- /** Скрыть chevron у встроенного триггера. */
62
- hideChevron?: boolean;
63
- /** Заголовок панели (если не задан в `groups[].title`). */
64
- title?: React.ReactNode;
65
- /** Выравнивание панели относительно триггера. */
66
- align?: "start" | "end";
67
- /**
68
- * Куда открывать панель.
69
- * Футер Sidebar передаёт `top`.
70
- * @default "auto"
71
- */
72
- placement?: "auto" | "top" | "bottom";
73
- /** Контролируемое открытие. */
74
- open?: boolean;
75
- /** Начальное открытие (неконтролируемый режим). */
76
- defaultOpen?: boolean;
77
- /** Колбэк смены open. */
78
- onOpenChange?: (open: boolean) => void;
79
- /**
80
- * Закрывать панель после выбора.
81
- * Для checkbox обычно `false`.
82
- */
83
- closeOnSelect?: boolean;
84
- /** Заблокировать триггер. */
85
- disabled?: boolean;
86
- /**
87
- * Высота встроенного триггера (`--control-height`).
88
- * Внутри {@link Toolbar} берётся из тулбара, если не задан.
89
- */
90
- size?: UiSize;
91
- /** Выбор пункта: `value` + сам item. */
92
- onSelect?: (value: string, item: DropdownItem) => void;
93
- };
2
+ import { DropdownProps } from './Dropdown.types';
3
+ export type { DropdownGroup, DropdownItem, DropdownProps, } from './Dropdown.types';
94
4
  /**
95
5
  * Выпадающее меню: триггер + панель с `groups` / `items` (portal, {@link Popover}).
96
6
  *
@@ -129,8 +39,8 @@ export type DropdownProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onChange
129
39
  * label="Действия"
130
40
  * groups={groups}
131
41
  * closeOnSelect={false}
132
- * onSelect={(value) => console.log(value)}
42
+ * onValueChange={(value) => console.log(value)}
133
43
  * />
134
44
  * ```
135
45
  */
136
- export declare function Dropdown({ items, groups, trigger, label, hideChevron, title, align, placement, open: openProp, defaultOpen, onOpenChange, closeOnSelect, disabled, size: sizeProp, onSelect, className, }: DropdownProps): React.JSX.Element;
46
+ export declare function Dropdown({ items, groups, trigger, label, hideChevron, title, align, placement, open: openProp, defaultOpen, onOpenChange, closeOnSelect, disabled, size: sizeProp, tone, onValueChange, className, }: DropdownProps): React.JSX.Element;
package/dist/Dropdown.js CHANGED
@@ -1,4 +1,4 @@
1
- import { D as p } from "./Dropdown-DosvDR13.js";
1
+ import { D as p } from "./Dropdown-CR_XxNak.js";
2
2
  export {
3
3
  p as Dropdown
4
4
  };
@@ -0,0 +1,23 @@
1
+ import t from "react";
2
+ import { c as r } from "./cx-CcykAxZN.js";
3
+ import './EmptyState.css';const i = "smr", u = "smi", E = "smt", d = "smd", N = "sma", e = {
4
+ root: i,
5
+ icon: u,
6
+ title: E,
7
+ desc: d,
8
+ actions: N
9
+ };
10
+ function v({
11
+ title: s,
12
+ description: l,
13
+ icon: c,
14
+ actions: n,
15
+ children: a,
16
+ className: o,
17
+ ...m
18
+ }) {
19
+ return /* @__PURE__ */ t.createElement("div", { className: r(e.root, o), role: "status", ...m }, c != null ? /* @__PURE__ */ t.createElement("div", { className: e.icon }, c) : null, s != null ? /* @__PURE__ */ t.createElement("h3", { className: e.title }, s) : null, l != null ? /* @__PURE__ */ t.createElement("p", { className: e.desc }, l) : null, a, n != null ? /* @__PURE__ */ t.createElement("div", { className: e.actions }, n) : null);
20
+ }
21
+ export {
22
+ v as E
23
+ };
@@ -1 +1 @@
1
- @layer elcrm-components{.cpr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--shell-gap);padding:var(--shell-padding);text-align:center;color:var(--shell-color-muted)}.cpi{display:flex;margin-bottom:var(--shell-gap-sm);color:var(--shell-color-muted)}.cpt{margin:0;font-size:var(--shell-font-size-lg);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.cpd{margin:0;max-width:22rem;font-size:var(--shell-font-size);color:var(--shell-color-muted);line-height:1.45}.cpa{display:flex;flex-wrap:wrap;gap:var(--shell-gap-sm);justify-content:center;margin-top:var(--shell-gap)}}
1
+ @layer elcrm-components{.smr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--shell-gap);padding:var(--empty-padding);max-width:var(--empty-max-width);margin-inline:auto;text-align:center;color:var(--shell-color-muted)}.smi{display:flex;margin-bottom:var(--shell-gap-sm);color:var(--shell-color-muted)}.smt{margin:0;font-size:var(--shell-font-size-lg);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3}.smd{margin:0;max-width:22rem;font-size:var(--shell-font-size);color:var(--shell-color-muted);line-height:1.45}.sma{display:flex;flex-wrap:wrap;gap:var(--shell-gap-sm);justify-content:center;margin-top:var(--shell-gap)}}
@@ -14,7 +14,7 @@ import { default as React } from 'react';
14
14
  * />
15
15
  * ```
16
16
  *
17
- * Токены: `--shell-*`.
17
+ * Токены: `--shell-*`, `--empty-max-width`, `--empty-padding`.
18
18
  */
19
19
  export type EmptyStateProps = React.HTMLAttributes<HTMLDivElement> & {
20
20
  /** Заголовок заглушки */
@@ -1,4 +1,4 @@
1
- import { E as e } from "./EmptyState-mBiWtMIM.js";
1
+ import { E as e } from "./EmptyState-B_wWPjUu.js";
2
2
  export {
3
3
  e as EmptyState
4
4
  };
@@ -1,10 +1,10 @@
1
1
  import e from "react";
2
2
  import { c } from "./cx-CcykAxZN.js";
3
- import './Footer.css';const s = "cfr", a = {
4
- r: s
3
+ import './Footer.css';const s = "sfr", a = {
4
+ root: s
5
5
  };
6
- function f({ children: r, className: o, ...t }) {
7
- return /* @__PURE__ */ e.createElement("footer", { className: c(a.r, o), ...t }, r);
6
+ function f({ children: o, className: t, ...r }) {
7
+ return /* @__PURE__ */ e.createElement("footer", { className: c(a.root, t), ...r }, o);
8
8
  }
9
9
  export {
10
10
  f as F
package/dist/Footer.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.cfr{flex-shrink:0;padding:var(--shell-padding);color:var(--shell-color-muted);background:transparent;border-top:1px solid var(--shell-border);font-size:var(--shell-font-size-sm)}}
1
+ @layer elcrm-components{.sfr{flex-shrink:0;padding:var(--shell-padding);color:var(--shell-color-muted);background:transparent;border-top:1px solid var(--shell-border);font-size:var(--shell-font-size-sm)}}
package/dist/Footer.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as e } from "./Footer-qxUlnPR9.js";
1
+ import { F as e } from "./Footer-Bgh_JCUe.js";
2
2
  export {
3
3
  e as Footer
4
4
  };
@@ -0,0 +1,21 @@
1
+ import l from "react";
2
+ import { c as m } from "./cx-CcykAxZN.js";
3
+ import './Header.css';const u = "shr", i = "shn", v = "sha", n = {
4
+ root: u,
5
+ nav: i,
6
+ actions: v
7
+ };
8
+ function h({
9
+ brand: e,
10
+ nav: t,
11
+ search: o,
12
+ actions: a,
13
+ children: s,
14
+ className: c,
15
+ ...r
16
+ }) {
17
+ return /* @__PURE__ */ l.createElement("header", { className: m(n.root, c), ...r }, e ?? null, t != null ? /* @__PURE__ */ l.createElement("div", { className: n.nav }, t) : null, o ?? null, a != null ? /* @__PURE__ */ l.createElement("div", { className: n.actions }, a) : null, s);
18
+ }
19
+ export {
20
+ h as H
21
+ };
package/dist/Header.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.chr{display:flex;align-items:center;gap:var(--shell-gap);flex-shrink:0;min-height:var(--header-height);padding:var(--shell-padding);color:var(--shell-color);background:var(--shell-background);border:var(--header-border);border-radius:var(--header-radius);box-shadow:var(--header-shadow);margin:var(--header-margin);position:relative;z-index:var(--header-z)}.chn{display:flex;flex:1;align-items:center;min-width:0;justify-content:var(--header-nav-justify)}.cha{display:flex;align-items:center;gap:var(--shell-gap-sm);flex-shrink:0;margin:auto}}
1
+ @layer elcrm-components{.shr{display:flex;align-items:center;gap:var(--shell-gap);flex-shrink:0;min-height:var(--header-height);padding:var(--shell-padding);color:var(--shell-color);background:var(--shell-background);border:var(--header-border);border-radius:var(--header-radius);box-shadow:var(--header-shadow);margin:var(--header-margin);position:relative;z-index:var(--header-z)}.shn{display:flex;flex:1;align-items:center;min-width:0;justify-content:var(--header-nav-justify)}.sha{display:flex;align-items:center;gap:var(--shell-gap-sm);flex-shrink:0;margin:auto}}
package/dist/Header.js CHANGED
@@ -1,4 +1,4 @@
1
- import { H as a } from "./Header-DZQopVNy.js";
1
+ import { H as a } from "./Header-BMDIi3u2.js";
2
2
  export {
3
3
  a as Header
4
4
  };