@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,359 @@
1
+ import t, { useState as H, useMemo as Y, useEffect as z } from "react";
2
+ import { c as G } from "./cx-CcykAxZN.js";
3
+ import { createPortal as Z } from "react-dom";
4
+ import { p as J } from "./overlayZ-BvHbYC1x.js";
5
+ import './Healthmap.css';function L(e) {
6
+ const [a, l, u] = e.split("-").map(Number);
7
+ return new Date(Date.UTC(a, l - 1, u));
8
+ }
9
+ function Q(e, a) {
10
+ if (e <= 0) return 0;
11
+ if (a <= 1) return 4;
12
+ const l = e / a;
13
+ return l > 0.75 ? 4 : l > 0.5 ? 3 : l > 0.25 ? 2 : 1;
14
+ }
15
+ function X(e) {
16
+ let a = 0;
17
+ for (let l = e.length - 1; l >= 0; l--) {
18
+ if (e[l].count <= 0) {
19
+ if (a === 0) continue;
20
+ break;
21
+ }
22
+ a++;
23
+ }
24
+ return a;
25
+ }
26
+ function I(e, a) {
27
+ var D;
28
+ if (!((D = e == null ? void 0 : e.days) != null && D.length))
29
+ return {
30
+ weeks: [],
31
+ months: [],
32
+ streak: 0,
33
+ activeDays: 0,
34
+ bestDay: 0
35
+ };
36
+ const l = Math.max(1, ...e.days.map((s) => s.count)), u = new Map(e.days.map((s) => [s.date, s.count])), y = L(e.from), d = L(e.to), f = y.getUTCDay(), c = f === 0 ? -6 : 1 - f, i = new Date(y);
37
+ i.setUTCDate(i.getUTCDate() + c);
38
+ const p = [], N = [];
39
+ let k = -1;
40
+ for (; i.getTime() <= d.getTime() || p.length === 0; ) {
41
+ const s = [];
42
+ for (let r = 0; r < 7; r++) {
43
+ const o = i.getUTCFullYear(), m = i.getUTCMonth(), E = i.getUTCDate(), b = `${o}-${String(m + 1).padStart(2, "0")}-${String(E).padStart(2, "0")}`, g = i.getTime() >= y.getTime() && i.getTime() <= d.getTime(), w = g ? u.get(b) ?? 0 : 0;
44
+ r === 0 && g && m !== k && (N.push({ label: a[m], col: p.length }), k = m), s.push({
45
+ date: b,
46
+ count: g ? w : 0,
47
+ level: g ? Q(w, l) : 0
48
+ }), i.setUTCDate(i.getUTCDate() + 1);
49
+ }
50
+ if (p.push(s), i.getTime() > d.getTime() && p.length >= 52 || p.length > 60) break;
51
+ }
52
+ return {
53
+ weeks: p,
54
+ months: N,
55
+ streak: X(e.days),
56
+ activeDays: e.days.filter((s) => s.count > 0).length,
57
+ bestDay: Math.max(0, ...e.days.map((s) => s.count))
58
+ };
59
+ }
60
+ const U = 5, j = [
61
+ "янв",
62
+ "фев",
63
+ "мар",
64
+ "апр",
65
+ "май",
66
+ "июн",
67
+ "июл",
68
+ "авг",
69
+ "сен",
70
+ "окт",
71
+ "ноя",
72
+ "дек"
73
+ ], _ = ["Пн", "", "Ср", "", "Пт", "", ""], ee = {
74
+ one: "действие",
75
+ few: "действия",
76
+ many: "действий"
77
+ };
78
+ function S(e, a) {
79
+ const l = e % 10, u = e % 100;
80
+ return l === 1 && u !== 11 ? a.one : l >= 2 && l <= 4 && (u < 10 || u >= 20) ? a.few : a.many;
81
+ }
82
+ function te(e) {
83
+ return S(e, { one: "день", few: "дня", many: "дней" });
84
+ }
85
+ function K(e, a) {
86
+ return L(e).toLocaleDateString(a, {
87
+ weekday: "long",
88
+ day: "numeric",
89
+ month: "long",
90
+ year: "numeric",
91
+ timeZone: "UTC"
92
+ });
93
+ }
94
+ const ne = "hhr", ae = "hhc", le = "hha", se = "hhh", re = "hht", oe = "hhm", ce = "hho", ie = "hhn", me = "hhd", ue = "hhw", he = "hhk", pe = "hhe", de = "hhf", fe = "hhi", ge = "hhg", ye = "hhb", Ee = "hhp", be = "hhq", we = "hhv", ve = "hhl", Ne = "hhz", ke = "hhj", Te = "hhu", De = "hhx", xe = "hhs", Me = "hhy", n = {
95
+ root: ne,
96
+ calendar: ae,
97
+ aside: le,
98
+ header: se,
99
+ title: re,
100
+ main: oe,
101
+ omonth: ce,
102
+ nest: ie,
103
+ dow: me,
104
+ weeks: ue,
105
+ krow: he,
106
+ entry: pe,
107
+ footer: de,
108
+ ihint: fe,
109
+ gleg: ge,
110
+ brand: ye,
111
+ plist: Ee,
112
+ qkpi: be,
113
+ value: we,
114
+ label: ve,
115
+ zyears: Ne,
116
+ jump: ke,
117
+ up: Te,
118
+ xbtn: De,
119
+ selected: xe,
120
+ ytip: Me
121
+ };
122
+ function Ue({
123
+ weeks: e,
124
+ months: a,
125
+ cell: l,
126
+ gap: u,
127
+ step: y,
128
+ weekdays: d,
129
+ focusDate: f,
130
+ locale: c,
131
+ unit: i,
132
+ onFocusDate: p,
133
+ onShowTip: N,
134
+ onHideTip: k
135
+ }) {
136
+ function D(s) {
137
+ const { key: r } = s;
138
+ if (r !== "ArrowLeft" && r !== "ArrowRight" && r !== "ArrowUp" && r !== "ArrowDown" || !e.length) return;
139
+ let o = -1, m = -1;
140
+ for (let x = 0; x < e.length; x++) {
141
+ const $ = e[x].findIndex((A) => A.date === f);
142
+ if ($ >= 0) {
143
+ o = x, m = $;
144
+ break;
145
+ }
146
+ }
147
+ if (o < 0) return;
148
+ s.preventDefault();
149
+ let E = o, b = m;
150
+ r === "ArrowDown" ? b = Math.min(6, m + 1) : r === "ArrowUp" ? b = Math.max(0, m - 1) : r === "ArrowRight" ? E = Math.min(e.length - 1, o + 1) : r === "ArrowLeft" && (E = Math.max(0, o - 1));
151
+ const g = e[E][b];
152
+ p(g.date);
153
+ const w = s.currentTarget.querySelector(
154
+ `[data-date="${g.date}"]`
155
+ );
156
+ w == null || w.focus();
157
+ }
158
+ return /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement(
159
+ "div",
160
+ {
161
+ className: n.main,
162
+ "aria-hidden": !0,
163
+ style: {
164
+ width: e.length ? e.length * y - u : void 0
165
+ }
166
+ },
167
+ a.map((s) => /* @__PURE__ */ t.createElement(
168
+ "span",
169
+ {
170
+ key: `${s.label}-${s.col}`,
171
+ className: n.omonth,
172
+ style: { left: s.col * y }
173
+ },
174
+ s.label
175
+ ))
176
+ ), /* @__PURE__ */ t.createElement("div", { className: n.nest }, /* @__PURE__ */ t.createElement("div", { className: n.dow, "aria-hidden": !0 }, (d.length >= 7 ? d : _).slice(0, 7).map(
177
+ (s, r) => s ? /* @__PURE__ */ t.createElement("span", { key: r }, s) : /* @__PURE__ */ t.createElement("span", { key: r })
178
+ )), /* @__PURE__ */ t.createElement(
179
+ "div",
180
+ {
181
+ className: n.weeks,
182
+ style: {
183
+ gridTemplateColumns: `repeat(${e.length}, ${l}px)`
184
+ },
185
+ role: "grid",
186
+ "aria-label": "График активности",
187
+ onKeyDown: D
188
+ },
189
+ e.map((s, r) => /* @__PURE__ */ t.createElement("div", { key: r, className: n.krow, role: "row" }, s.map((o) => /* @__PURE__ */ t.createElement(
190
+ "button",
191
+ {
192
+ key: o.date,
193
+ type: "button",
194
+ className: n.entry,
195
+ "data-level": o.level,
196
+ "data-date": o.date,
197
+ role: "gridcell",
198
+ tabIndex: o.date === f ? 0 : -1,
199
+ "aria-label": `${K(o.date, c)}: ${o.count} ${S(o.count, i)}`,
200
+ onMouseEnter: (m) => N(o, m.currentTarget),
201
+ onMouseLeave: k,
202
+ onFocus: (m) => {
203
+ p(o.date), N(o, m.currentTarget);
204
+ },
205
+ onBlur: k
206
+ }
207
+ ))))
208
+ )));
209
+ }
210
+ function $e({ tip: e, locale: a, unit: l }) {
211
+ return e ? Z(
212
+ /* @__PURE__ */ t.createElement(
213
+ "div",
214
+ {
215
+ className: n.ytip,
216
+ style: {
217
+ left: e.x,
218
+ top: e.y,
219
+ zIndex: J() + 10
220
+ },
221
+ role: "tooltip"
222
+ },
223
+ /* @__PURE__ */ t.createElement("div", null, K(e.date, a)),
224
+ /* @__PURE__ */ t.createElement("div", null, e.count, " ", S(e.count, l))
225
+ ),
226
+ document.body
227
+ ) : null;
228
+ }
229
+ function Ae({
230
+ yearPage: e,
231
+ yearPageCount: a,
232
+ visibleYears: l,
233
+ activeYear: u,
234
+ currentYear: y,
235
+ onYearPageChange: d,
236
+ onYearChange: f
237
+ }) {
238
+ return /* @__PURE__ */ t.createElement("nav", { className: n.zyears, "aria-label": "Год" }, a > 1 ? /* @__PURE__ */ t.createElement(
239
+ "button",
240
+ {
241
+ type: "button",
242
+ className: n.up,
243
+ "aria-label": "Предыдущие годы",
244
+ disabled: e <= 0,
245
+ onClick: () => d((c) => Math.max(0, c - 1))
246
+ },
247
+ "‹"
248
+ ) : null, /* @__PURE__ */ t.createElement("div", { className: n.jump, role: "group" }, l.map((c) => /* @__PURE__ */ t.createElement(
249
+ "button",
250
+ {
251
+ key: c,
252
+ type: "button",
253
+ "aria-pressed": c === u,
254
+ className: G(n.xbtn, c === u && n.selected),
255
+ onClick: () => f == null ? void 0 : f(c === y ? null : c)
256
+ },
257
+ c
258
+ ))), a > 1 ? /* @__PURE__ */ t.createElement(
259
+ "button",
260
+ {
261
+ type: "button",
262
+ className: n.up,
263
+ "aria-label": "Следующие годы",
264
+ disabled: e >= a - 1,
265
+ onClick: () => d((c) => Math.min(a - 1, c + 1))
266
+ },
267
+ "›"
268
+ ) : null);
269
+ }
270
+ function Ce() {
271
+ if (typeof document > "u")
272
+ return { cell: 12, gap: 3, step: 15 };
273
+ const e = getComputedStyle(document.documentElement), a = parseFloat(e.getPropertyValue("--healthmap-cell").trim()) || 12, l = parseFloat(e.getPropertyValue("--healthmap-gap").trim()) || 3;
274
+ return { cell: a, gap: l, step: a + l };
275
+ }
276
+ function Le({
277
+ data: e,
278
+ loading: a = !1,
279
+ year: l = null,
280
+ onYearChange: u,
281
+ hint: y,
282
+ brandName: d = "Активность",
283
+ brandSub: f = "сводка",
284
+ unit: c = ee,
285
+ months: i = j,
286
+ locale: p = "ru-RU",
287
+ loadingLabel: N = "Загрузка…",
288
+ lastYearLabel: k = "последний год",
289
+ weekdays: D = _,
290
+ className: s
291
+ }) {
292
+ const [r, o] = H(0), [m, E] = H(null), [b, g] = H(""), { cell: w, gap: x, step: $ } = Ce(), A = i.length >= 12 ? i : j, v = Y(
293
+ () => I(e, A),
294
+ [e, A]
295
+ );
296
+ z(() => {
297
+ const h = v.weeks.flat();
298
+ if (!h.length) {
299
+ g("");
300
+ return;
301
+ }
302
+ const M = h.find((T) => T.count > 0);
303
+ g((M ?? h[0]).date);
304
+ }, [v.weeks]);
305
+ const C = Y(() => {
306
+ var M;
307
+ const h = (M = e == null ? void 0 : e.years) != null && M.length ? [...e.years] : [(/* @__PURE__ */ new Date()).getUTCFullYear(), (/* @__PURE__ */ new Date()).getUTCFullYear() - 1];
308
+ return [...new Set(h)].sort((T, W) => W - T);
309
+ }, [e == null ? void 0 : e.years]), F = (/* @__PURE__ */ new Date()).getUTCFullYear(), R = l ?? (e == null ? void 0 : e.year) ?? F, q = (e == null ? void 0 : e.total) ?? 0, O = Math.max(1, Math.ceil(C.length / U));
310
+ z(() => {
311
+ const h = C.indexOf(R);
312
+ h < 0 || o(Math.floor(h / U));
313
+ }, [R, C]);
314
+ const P = C.slice(
315
+ r * U,
316
+ r * U + U
317
+ );
318
+ function B(h, M) {
319
+ const T = M.getBoundingClientRect();
320
+ E({
321
+ date: h.date,
322
+ count: h.count,
323
+ x: T.left + T.width / 2,
324
+ y: T.top
325
+ });
326
+ }
327
+ const V = a ? N : `${q} ${S(q, c)} за ${l == null || l === F ? k : `${l} год`}`;
328
+ return /* @__PURE__ */ t.createElement("div", { className: G(n.root, s) }, /* @__PURE__ */ t.createElement("section", { className: n.calendar, "aria-label": "Календарь активности" }, /* @__PURE__ */ t.createElement("div", { className: n.header }, /* @__PURE__ */ t.createElement("h3", { className: n.title }, V)), /* @__PURE__ */ t.createElement(
329
+ Ue,
330
+ {
331
+ weeks: v.weeks,
332
+ months: v.months,
333
+ cell: w,
334
+ gap: x,
335
+ step: $,
336
+ weekdays: D,
337
+ focusDate: b,
338
+ locale: p,
339
+ unit: c,
340
+ onFocusDate: g,
341
+ onShowTip: B,
342
+ onHideTip: () => E(null)
343
+ }
344
+ ), /* @__PURE__ */ t.createElement("div", { className: n.footer }, /* @__PURE__ */ t.createElement("span", { className: n.ihint }, y ?? ""), /* @__PURE__ */ t.createElement(
345
+ Ae,
346
+ {
347
+ yearPage: r,
348
+ yearPageCount: O,
349
+ visibleYears: P,
350
+ activeYear: R,
351
+ currentYear: F,
352
+ onYearPageChange: o,
353
+ onYearChange: u
354
+ }
355
+ ), /* @__PURE__ */ t.createElement("div", { className: n.gleg, "aria-hidden": !0 }, /* @__PURE__ */ t.createElement("span", null, "Меньше"), [0, 1, 2, 3, 4].map((h) => /* @__PURE__ */ t.createElement("span", { key: h, className: n.entry, "data-level": h })), /* @__PURE__ */ t.createElement("span", null, "Больше")))), /* @__PURE__ */ t.createElement("aside", { className: n.aside, "aria-label": "Сводка" }, /* @__PURE__ */ t.createElement("div", { className: n.brand }, /* @__PURE__ */ t.createElement("span", null, d), /* @__PURE__ */ t.createElement("span", null, f)), /* @__PURE__ */ t.createElement("div", { className: n.plist }, /* @__PURE__ */ t.createElement("div", { className: n.qkpi }, /* @__PURE__ */ t.createElement("span", { className: n.value }, a ? "—" : v.streak), /* @__PURE__ */ t.createElement("span", { className: n.label }, "серия, ", te(v.streak))), /* @__PURE__ */ t.createElement("div", { className: n.qkpi }, /* @__PURE__ */ t.createElement("span", { className: n.value }, a ? "—" : v.activeDays), /* @__PURE__ */ t.createElement("span", { className: n.label }, "активных дней")), /* @__PURE__ */ t.createElement("div", { className: n.qkpi }, /* @__PURE__ */ t.createElement("span", { className: n.value }, a ? "—" : v.bestDay), /* @__PURE__ */ t.createElement("span", { className: n.label }, "макс. за день")))), /* @__PURE__ */ t.createElement($e, { tip: m, locale: p, unit: c }));
356
+ }
357
+ export {
358
+ Le as H
359
+ };
@@ -1 +1 @@
1
- @layer elcrm-components{.hAr{display:flex;gap:var(--shell-gap);align-items:stretch;width:100%}.hAc,.hAa{border:1px solid var(--shell-border);border-radius:var(--shell-radius);background:var(--shell-background);box-sizing:border-box}.hAc{flex:1;min-width:0;display:flex;flex-direction:column;padding:var(--shell-gap-lg) var(--shell-padding-inline);overflow-x:auto}.hAh{margin-bottom:var(--shell-gap-sm)}.hAt{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color)}.hAm{position:relative;margin:0 0 4px 26px;height:16px;font-size:11px;color:var(--shell-color-muted)}.hAo{position:absolute;top:0;white-space:nowrap}.hAn{display:flex;gap:4px;align-items:flex-start;flex:1}.hAd{display:grid;grid-template-rows:repeat(7,var(--healthmap-cell));gap:var(--healthmap-gap);width:22px;font-size:10px;line-height:var(--healthmap-cell);color:var(--shell-color-muted);flex-shrink:0;align-content:center}.hAw{display:grid;gap:var(--healthmap-gap);align-content:center}.hAk{display:grid;grid-template-rows:repeat(7,var(--healthmap-cell));gap:var(--healthmap-gap)}.hAe{width:var(--healthmap-cell);height:var(--healthmap-cell);padding:0;border:0;border-radius:2px;background:var(--healthmap-l0);box-sizing:border-box;cursor:default;display:block}.hAe:focus-visible{outline:2px solid var(--shell-color-accent);outline-offset:1px}.hAe[data-level="1"]{background:var(--healthmap-l1)}.hAe[data-level="2"]{background:var(--healthmap-l2)}.hAe[data-level="3"]{background:var(--healthmap-l3)}.hAe[data-level="4"]{background:var(--healthmap-l4)}.hAf{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;margin-top:auto;padding-top:10px;margin-left:26px;font-size:11px;color:var(--shell-color-muted)}.hAi{min-width:0}.hAg{display:flex;align-items:center;gap:4px;justify-self:end}.hAa{flex:0 0 180px;display:flex;flex-direction:column;gap:var(--shell-gap-lg);padding:var(--shell-gap-lg) 18px}.hAb{display:flex;flex-direction:column;gap:2px;line-height:1.2}.hAb>span:first-child{font-size:var(--shell-font-size-lg);font-weight:700;letter-spacing:-.02em;color:var(--shell-color)}.hAb>span:last-child{font-size:11px;color:var(--shell-color-muted);text-transform:uppercase;letter-spacing:.04em}.hAp{display:flex;flex-direction:column;gap:var(--shell-gap-sm);flex:1;justify-content:center}.hAq{display:flex;flex-direction:column;gap:2px}.hAv{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--shell-color);line-height:1.1}.hAl{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.hAz{display:flex;align-items:center;justify-content:center;gap:4px;justify-self:center}.hAj{display:flex;align-items:center;gap:4px}.hAu{width:28px;height:28px;border:0;border-radius:var(--shell-radius);background:transparent;color:var(--shell-color-muted);font-size:18px;line-height:1;cursor:pointer}.hAu:hover:not(:disabled){color:var(--shell-color);background:var(--shell-background-muted)}.hAu:disabled{opacity:var(--shell-disabled-opacity);cursor:default}.hAx{border:0;background:transparent;color:var(--shell-color-muted);font-size:var(--shell-font-size-sm);padding:5px 11px;border-radius:999px;cursor:pointer}.hAx:hover{color:var(--shell-color)}.hAs{background:var(--shell-color-accent);color:var(--shell-background)}.hAy{position:fixed;z-index:calc(var(--shell-z) + 50);transform:translate(-50%,calc(-100% - 10px));min-width:160px;max-width:280px;padding:var(--shell-gap-sm) var(--shell-gap);border-radius:var(--shell-radius);background:var(--shell-background);border:1px solid var(--shell-border);box-shadow:var(--popup-shadow);pointer-events:none;color:var(--shell-color)}.hAy>:first-child{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.hAy>:last-child{font-size:var(--shell-font-size);font-weight:600}@media (max-width: 720px){.hAr{flex-direction:column}.hAa{flex:none;width:100%}.hAf{grid-template-columns:1fr;margin-left:0;justify-items:start}.hAg,.hAz{justify-self:start}}}
1
+ @layer elcrm-components{.hhr{display:flex;gap:var(--shell-gap);align-items:stretch;width:100%}.hhc,.hha{border:1px solid var(--shell-border);border-radius:var(--shell-radius);background:var(--shell-background);box-sizing:border-box}.hhc{flex:1;min-width:0;display:flex;flex-direction:column;padding:var(--shell-gap-lg) var(--shell-padding-inline);overflow-x:auto}.hhh{margin-bottom:var(--shell-gap-sm)}.hht{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color)}.hhm{position:relative;margin:0 0 var(--shell-gap-sm, .25rem) 26px;height:16px;font-size:var(--shell-font-size-sm, .6875rem);color:var(--shell-color-muted)}.hho{position:absolute;top:0;white-space:nowrap}.hhn{display:flex;gap:var(--shell-gap-sm, .25rem);align-items:flex-start;flex:1}.hhd{display:grid;grid-template-rows:repeat(7,var(--healthmap-cell));gap:var(--healthmap-gap);width:22px;font-size:var(--shell-font-size-sm, .6875rem);line-height:var(--healthmap-cell);color:var(--shell-color-muted);flex-shrink:0;align-content:center}.hhw{display:grid;gap:var(--healthmap-gap);align-content:center}.hhk{display:grid;grid-template-rows:repeat(7,var(--healthmap-cell));gap:var(--healthmap-gap)}.hhe{width:var(--healthmap-cell);height:var(--healthmap-cell);padding:0;border:0;border-radius:2px;background:var(--healthmap-l0);box-sizing:border-box;cursor:default;display:block}.hhe:focus-visible{outline:2px solid var(--shell-color-accent);outline-offset:1px}.hhe[data-level="1"]{background:var(--healthmap-l1)}.hhe[data-level="2"]{background:var(--healthmap-l2)}.hhe[data-level="3"]{background:var(--healthmap-l3)}.hhe[data-level="4"]{background:var(--healthmap-l4)}.hhf{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:var(--shell-gap-sm);margin-top:auto;padding-top:var(--shell-gap-sm);margin-left:26px;font-size:var(--shell-font-size-sm, .6875rem);color:var(--shell-color-muted)}.hhi{min-width:0}.hhg{display:flex;align-items:center;gap:var(--shell-gap-sm, .25rem);justify-self:end}.hha{flex:0 0 180px;display:flex;flex-direction:column;gap:var(--shell-gap-lg);padding:var(--shell-gap-lg) 18px}.hhb{display:flex;flex-direction:column;gap:2px;line-height:1.2}.hhb>span:first-child{font-size:var(--shell-font-size-lg);font-weight:700;letter-spacing:-.02em;color:var(--shell-color)}.hhb>span:last-child{font-size:var(--shell-font-size-sm, .6875rem);color:var(--shell-color-muted);text-transform:uppercase;letter-spacing:.04em}.hhp{display:flex;flex-direction:column;gap:var(--shell-gap-sm);flex:1;justify-content:center}.hhq{display:flex;flex-direction:column;gap:2px}.hhv{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--shell-color);line-height:1.1}.hhl{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.hhz{display:flex;align-items:center;justify-content:center;gap:var(--shell-gap-sm, .25rem);justify-self:center}.hhj{display:flex;align-items:center;gap:var(--shell-gap-sm, .25rem)}.hhu{width:28px;height:28px;border:0;border-radius:var(--shell-radius);background:transparent;color:var(--shell-color-muted);font-size:18px;line-height:1;cursor:pointer}.hhu:hover:not(:disabled){color:var(--shell-color);background:var(--shell-background-muted)}.hhu:disabled{opacity:var(--shell-disabled-opacity);cursor:default}.hhx{border:0;background:transparent;color:var(--shell-color-muted);font-size:var(--shell-font-size-sm);padding:5px 11px;border-radius:999px;cursor:pointer}.hhx:hover{color:var(--shell-color)}.hhs{background:var(--shell-color-accent);color:var(--shell-background)}.hhy{position:fixed;z-index:calc(var(--shell-z) + 50);transform:translate(-50%,calc(-100% - 10px));min-width:160px;max-width:280px;padding:var(--shell-gap-sm) var(--shell-gap);border-radius:var(--shell-radius);background:var(--shell-background);border:1px solid var(--shell-border);box-shadow:var(--popup-shadow);pointer-events:none;color:var(--shell-color)}.hhy>:first-child{font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.hhy>:last-child{font-size:var(--shell-font-size);font-weight:600}@media (max-width: 720px){.hhr{flex-direction:column}.hha{flex:none;width:100%}.hhf{grid-template-columns:1fr;margin-left:0;justify-items:start}.hhg,.hhz{justify-self:start}}}
@@ -28,8 +28,10 @@ export type HealthmapProps = {
28
28
  /** Показать «Загрузка…» в заголовке. */
29
29
  loading?: boolean;
30
30
  /**
31
- * Выбранный год. `null` — «последний год» (как в ответе сервера).
32
- * Контролируемый режим: вместе с `onYearChange`.
31
+ * Выбранный год.
32
+ * - `undefined` uncontrolled (внутри берётся последний из `data.years`);
33
+ * - `null` — controlled «последний год» (как в ответе сервера);
34
+ * - число — конкретный год.
33
35
  */
34
36
  year?: number | null;
35
37
  /** Смена года (клик по вкладке). */
@@ -42,6 +44,26 @@ export type HealthmapProps = {
42
44
  brandSub?: string;
43
45
  /** Единицы для склонения счётчиков. */
44
46
  unit?: HealthmapUnit;
47
+ /**
48
+ * 12 коротких названий месяцев (янв…дек).
49
+ * По умолчанию — русские.
50
+ */
51
+ months?: readonly string[];
52
+ /**
53
+ * Locale для длинной даты в tooltip (`toLocaleDateString`).
54
+ * @default "ru-RU"
55
+ */
56
+ locale?: string;
57
+ /** Текст «Загрузка…» в заголовке. */
58
+ loadingLabel?: string;
59
+ /** Фраза «последний год» в заголовке. */
60
+ lastYearLabel?: string;
61
+ /**
62
+ * 7 подписей дней недели (Пн…Вс). Пустая строка — слот без текста
63
+ * (компактная колонка как у GitHub).
64
+ * @default ["Пн","","Ср","","Пт","",""]
65
+ */
66
+ weekdays?: readonly string[];
45
67
  /** Доп. CSS-класс. */
46
68
  className?: string;
47
69
  };
@@ -66,4 +88,4 @@ export type HealthmapProps = {
66
88
  *
67
89
  * Токены: `--shell-*`, `--healthmap-cell`, `--healthmap-gap`, `--healthmap-l0`…`--healthmap-l4`.
68
90
  */
69
- export declare function Healthmap({ data, loading, year, onYearChange, hint, brandName, brandSub, unit, className, }: HealthmapProps): React.JSX.Element;
91
+ export declare function Healthmap({ data, loading, year, onYearChange, hint, brandName, brandSub, unit, months, locale, loadingLabel, lastYearLabel, weekdays, className, }: HealthmapProps): React.JSX.Element;
package/dist/Healthmap.js CHANGED
@@ -1,4 +1,4 @@
1
- import { H as m } from "./Healthmap-B6cdiLUl.js";
1
+ import { H as m } from "./Healthmap-Z-LLfGW0.js";
2
2
  export {
3
3
  m as Healthmap
4
4
  };
@@ -1,20 +1,20 @@
1
1
  import r from "react";
2
2
  import { c as m } from "./cx-CcykAxZN.js";
3
- import './Item.css';const u = "cir", d = "cia", v = "cic", i = {
4
- r: u,
5
- a: d,
6
- c: v
3
+ import './Item.css';const d = "lir", v = "lia", u = "lic", o = {
4
+ root: d,
5
+ active: v,
6
+ card: u
7
7
  };
8
- function N(s) {
8
+ function N(n) {
9
9
  const {
10
10
  active: t,
11
- variant: o = "plain",
11
+ variant: s = "plain",
12
12
  children: a,
13
13
  className: l,
14
- as: n = "button",
14
+ as: i = "li",
15
15
  ...e
16
- } = s, c = m(i.r, o === "card" && i.c, t && i.a, l);
17
- return n === "a" ? /* @__PURE__ */ r.createElement(
16
+ } = n, c = m(o.root, s === "card" && o.card, t && o.active, l);
17
+ return i === "a" ? /* @__PURE__ */ r.createElement(
18
18
  "a",
19
19
  {
20
20
  className: c,
@@ -22,18 +22,18 @@ function N(s) {
22
22
  ...e
23
23
  },
24
24
  a
25
- ) : n === "li" ? /* @__PURE__ */ r.createElement(
26
- "li",
25
+ ) : i === "button" ? /* @__PURE__ */ r.createElement(
26
+ "button",
27
27
  {
28
+ type: "button",
28
29
  className: c,
29
30
  "data-active": t ? "true" : void 0,
30
31
  ...e
31
32
  },
32
33
  a
33
34
  ) : /* @__PURE__ */ r.createElement(
34
- "button",
35
+ "li",
35
36
  {
36
- type: "button",
37
37
  className: c,
38
38
  "data-active": t ? "true" : void 0,
39
39
  ...e
package/dist/Item.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--shell-gap-sm);padding:var(--shell-padding);color:var(--shell-color);background:transparent;border:1px solid transparent;border-radius:var(--shell-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(--shell-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--shell-background-selected)}.cic{align-items:flex-start;gap:var(--shell-gap);padding:var(--shell-padding);border:1px solid var(--shell-border);border-radius:var(--shell-radius);background:var(--shell-background-muted);flex-shrink:0}.cic:hover,.cic.cia,.cic[data-active=true]{background:color-mix(in srgb,var(--shell-color-accent) 12%,var(--shell-background-muted));border-color:color-mix(in srgb,var(--shell-color-accent) 35%,transparent)}}
1
+ @layer elcrm-components{.lir{display:flex;align-items:center;gap:var(--shell-gap-sm);padding:var(--shell-padding);color:var(--shell-color);background:transparent;border:1px solid transparent;border-radius:var(--shell-radius);cursor:default}.lir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.lir:hover{background:var(--shell-background-hover)}.lia,.lir[aria-current=true],.lir[data-active=true]{background:var(--shell-background-selected)}.lic{align-items:flex-start;gap:var(--shell-gap);padding:var(--shell-padding);border:1px solid var(--shell-border);border-radius:var(--shell-radius);background:var(--shell-background-muted);flex-shrink:0}.lic:hover,.lic.lia,.lic[data-active=true]{background:color-mix(in srgb,var(--shell-color-accent) 12%,var(--shell-background-muted));border-color:color-mix(in srgb,var(--shell-color-accent) 35%,transparent)}}
package/dist/Item.d.ts CHANGED
@@ -23,22 +23,22 @@ type Common = {
23
23
  * @example
24
24
  * ```tsx
25
25
  * <List>
26
- * <Item as="li" active>Текущий</Item>
26
+ * <Item active>Текущий</Item>
27
27
  * <Item as="button" variant="card" active>Карточка</Item>
28
28
  * </List>
29
29
  * ```
30
30
  *
31
31
  * Токены: `--shell-*`.
32
32
  */
33
- export type ItemProps = (Common & React.ButtonHTMLAttributes<HTMLButtonElement> & {
34
- /** Тег: кнопка (по умолчанию) */
35
- as?: "button";
33
+ export type ItemProps = (Common & React.LiHTMLAttributes<HTMLLIElement> & {
34
+ /** Тег: элемент списка (по умолчанию; внутри `<List>` / `<ul>`) */
35
+ as?: "li";
36
+ }) | (Common & React.ButtonHTMLAttributes<HTMLButtonElement> & {
37
+ /** Тег: кнопка */
38
+ as: "button";
36
39
  }) | (Common & React.AnchorHTMLAttributes<HTMLAnchorElement> & {
37
40
  /** Тег: ссылка */
38
41
  as: "a";
39
- }) | (Common & React.LiHTMLAttributes<HTMLLIElement> & {
40
- /** Тег: элемент списка */
41
- as: "li";
42
42
  });
43
43
  /**
44
44
  * Элемент списка / строки.
package/dist/Item.js CHANGED
@@ -1,4 +1,4 @@
1
- import { I as o } from "./Item-D4okhsfW.js";
1
+ import { I as o } from "./Item-CGpkMJu0.js";
2
2
  export {
3
3
  o as Item
4
4
  };
@@ -0,0 +1,41 @@
1
+ import e from "react";
2
+ import { c as N } from "./cx-CcykAxZN.js";
3
+ import './ItemColumn.css';const h = "lcr", v = "lci", g = "lcb", k = "lch", b = "lct", x = "lcx", y = "lcd", C = "lcf", F = "lcp", I = "lca", L = "lcs", M = "lcl", R = "lck", l = {
4
+ root: h,
5
+ ico: v,
6
+ body: g,
7
+ head: k,
8
+ title: b,
9
+ xtra: x,
10
+ desc: y,
11
+ footer: C,
12
+ pipe: F,
13
+ aside: I,
14
+ small: L,
15
+ large: M,
16
+ kread: R
17
+ };
18
+ function j({ items: c }) {
19
+ const a = c.filter((t) => t != null && t !== !1 && t !== "");
20
+ return a.length === 0 ? null : /* @__PURE__ */ e.createElement(e.Fragment, null, a.map((t, n) => /* @__PURE__ */ e.createElement(e.Fragment, { key: n }, n > 0 ? /* @__PURE__ */ e.createElement("span", { className: l.pipe, "aria-hidden": !0 }, "·") : null, /* @__PURE__ */ e.createElement("span", null, t))));
21
+ }
22
+ function z({
23
+ icon: c,
24
+ title: a,
25
+ extra: t,
26
+ aside: n,
27
+ description: s,
28
+ footer: u,
29
+ meta: r,
30
+ size: o = "m",
31
+ unread: d,
32
+ children: i,
33
+ className: p,
34
+ ...E
35
+ }) {
36
+ const f = o === "s" ? l.small : o === "l" ? l.large : void 0, m = u ?? (r != null ? /* @__PURE__ */ e.createElement(j, { items: r }) : null);
37
+ return /* @__PURE__ */ e.createElement("div", { className: N(l.root, f, d && l.kread, p), ...E }, c != null ? /* @__PURE__ */ e.createElement("span", { className: l.ico, "aria-hidden": !0 }, c) : null, /* @__PURE__ */ e.createElement("div", { className: l.body }, a != null || t != null ? /* @__PURE__ */ e.createElement("div", { className: l.head }, a != null ? /* @__PURE__ */ e.createElement("span", { className: l.title }, a) : null, t != null ? /* @__PURE__ */ e.createElement("span", { className: l.xtra }, t) : null) : null, s != null ? /* @__PURE__ */ e.createElement("div", { className: l.desc }, s) : null, m != null ? /* @__PURE__ */ e.createElement("div", { className: l.footer }, m) : null, i), n != null ? /* @__PURE__ */ e.createElement("div", { className: l.aside }, n) : null);
38
+ }
39
+ export {
40
+ z as I
41
+ };
@@ -1 +1 @@
1
- @layer elcrm-components{.c7r{display:flex;align-items:flex-start;gap:var(--item-column-gap);min-width:0;width:100%;text-align:left}.c7i{flex-shrink:0;box-sizing:border-box;width:var(--item-column-icon-size);height:var(--item-column-icon-size);border-radius:var(--item-column-icon-radius);display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--shell-color-accent) 14%,transparent);color:var(--shell-color-accent)}.c7b{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.c7h{display:flex;align-items:center;gap:8px;min-width:0}.c7t{flex:1;min-width:0;margin:0;font-size:var(--item-column-title-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:var(--item-column-title-line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c7x{flex-shrink:0;display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.c7d{margin:0;font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.c7f{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;font-size:12px;color:var(--shell-color-muted);line-height:1.35}.c7p{opacity:.5;-webkit-user-select:none;user-select:none}.c7a{flex-shrink:0;display:inline-flex;align-items:flex-start}.c7s .c7t{font-size:var(--shell-font-size-sm)}.c7s .c7d{font-size:12px}.c7l .c7t{font-size:var(--shell-font-size-lg)}.c7l .c7d{font-size:var(--shell-font-size)}.c7k .c7t{font-weight:700}}
1
+ @layer elcrm-components{.lcr{display:flex;align-items:flex-start;gap:var(--item-column-gap);min-width:0;width:100%;text-align:left}.lci{flex-shrink:0;box-sizing:border-box;width:var(--item-column-icon-size);height:var(--item-column-icon-size);border-radius:var(--item-column-icon-radius);display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--shell-color-accent) 14%,transparent);color:var(--shell-color-accent)}.lcb{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--shell-gap-sm)}.lch{display:flex;align-items:center;gap:var(--shell-gap-sm);min-width:0}.lct{flex:1;min-width:0;margin:0;font-size:var(--item-column-title-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:var(--item-column-title-line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lcx{flex-shrink:0;display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--shell-gap-sm)}.lcd{margin:0;font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lcf{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--shell-gap-sm);font-size:var(--item-column-meta-size);color:var(--shell-color-muted);line-height:1.35}.lcp{opacity:.5;-webkit-user-select:none;user-select:none}.lca{flex-shrink:0;display:inline-flex;align-items:flex-start}.lcs .lct{font-size:var(--shell-font-size-sm)}.lcs .lcd{font-size:var(--item-column-meta-size)}.lcl .lct{font-size:var(--shell-font-size-lg)}.lcl .lcd{font-size:var(--shell-font-size)}.lck .lct{font-weight:700}}
@@ -1,4 +1,4 @@
1
- import { I as e } from "./ItemColumn-M7a9L8CI.js";
1
+ import { I as e } from "./ItemColumn-Ch61LqE0.js";
2
2
  export {
3
3
  e as ItemColumn
4
4
  };
@@ -0,0 +1,31 @@
1
+ import l from "react";
2
+ import { c as a } from "./cx-CcykAxZN.js";
3
+ import './Layout.css';const N = "slr", f = "slx", y = "slm", k = "sls", x = "slb", F = "sla", L = "slk", g = "slh", D = "slf", e = {
4
+ root: N,
5
+ xshell: f,
6
+ main: y,
7
+ sidebar: k,
8
+ body: x,
9
+ aside: F,
10
+ kept: L,
11
+ header: g,
12
+ footer: D
13
+ }, E = ["header", "footer", "sidebar"];
14
+ function c(t, n) {
15
+ return (t ?? E).includes(n);
16
+ }
17
+ function I({
18
+ sidebar: t,
19
+ header: n,
20
+ footer: s,
21
+ fixed: o,
22
+ children: b,
23
+ className: r,
24
+ ...i
25
+ }) {
26
+ const m = n != null && c(o, "header"), d = s != null && c(o, "footer"), h = t != null && c(o, "sidebar"), u = (o ?? E).length > 0, v = /* @__PURE__ */ l.createElement("main", { className: e.main }, n != null && !m ? n : null, b, s != null && !d ? s : null), p = /* @__PURE__ */ l.createElement(l.Fragment, null, m ? /* @__PURE__ */ l.createElement("div", { className: e.header }, n) : null, v, d ? /* @__PURE__ */ l.createElement("div", { className: e.footer }, s) : null);
27
+ return t != null ? /* @__PURE__ */ l.createElement("div", { className: a(e.root, e.sidebar, u && e.xshell, r), ...i }, /* @__PURE__ */ l.createElement("div", { className: a(e.aside, h && e.kept) }, t), /* @__PURE__ */ l.createElement("div", { className: e.body }, p)) : /* @__PURE__ */ l.createElement("div", { className: a(e.root, u && e.xshell, r), ...i }, p);
28
+ }
29
+ export {
30
+ I as L
31
+ };
package/dist/Layout.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.clr{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;box-sizing:border-box;background:var(--shell-background-muted);margin:var(--layout-margin);padding:var(--layout-padding);max-width:var(--layout-max-width);gap:0}.clx{height:var(--layout-height, 100dvh);max-height:var(--layout-height, 100dvh);overflow:hidden}.clm{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain}.clr:not(.clx){height:auto;max-height:none;overflow:visible}.clr:not(.clx) .clm{overflow:visible;flex:0 1 auto;min-height:auto}.cls{flex-direction:row;align-items:stretch;gap:var(--layout-gap, 0)}.clb{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden;background:var(--layout-main-background, transparent);border-radius:var(--layout-main-radius, 0);box-shadow:var(--layout-main-shadow, none);border:var(--layout-main-border, none)}.clr:not(.clx) .clb{overflow:visible}.cla{display:flex;flex-direction:column;flex:0 0 var(--sidebar-width, 248px);width:var(--sidebar-width, 248px);min-width:0;min-height:0;align-self:stretch}.clk{overflow:hidden}.cla:not(.clk){overflow:auto}.cla>*{flex:1 1 auto;min-height:0;width:100%;height:100%;max-height:100%}@media (max-width: 900px){.cla{flex-basis:72px;width:72px}}.clh,.clf{flex:0 0 auto;min-width:0}}
1
+ @layer elcrm-components{.slr{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;box-sizing:border-box;background:var(--shell-background-muted);margin:var(--layout-margin);padding:var(--layout-padding);max-width:var(--layout-max-width);gap:0}.slx{height:var(--layout-height);max-height:var(--layout-height);overflow:hidden}.slm{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain}.slr:not(.slx){height:auto;max-height:none;overflow:visible}.slr:not(.slx) .slm{overflow:visible;flex:0 1 auto;min-height:auto}.sls{flex-direction:row;align-items:stretch;gap:var(--layout-gap)}.slb{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;overflow:hidden;background:var(--layout-main-background);border-radius:var(--layout-main-radius);box-shadow:var(--layout-main-shadow);border:var(--layout-main-border)}.slr:not(.slx) .slb{overflow:visible}.sla{display:flex;flex-direction:column;flex:0 0 var(--sidebar-width);width:var(--sidebar-width);min-width:0;min-height:0;align-self:stretch}.slk{overflow:hidden}.sla:not(.slk){overflow:auto}.sla>*{flex:1 1 auto;min-height:0;width:100%;height:100%;max-height:100%}@media (max-width: 900px){.sla{flex-basis:72px;width:72px}}.slh,.slf{flex:0 0 auto;min-width:0}}
package/dist/Layout.d.ts CHANGED
@@ -18,7 +18,7 @@ export type LayoutFixedSlot = "header" | "footer" | "sidebar";
18
18
  * ```tsx
19
19
  * <Layout
20
20
  * fixed={["header", "footer", "sidebar"]}
21
- * sidebar={<Sidebar groups={groups} value={page} onSelect={setPage} />}
21
+ * sidebar={<Sidebar groups={groups} value={page} onValueChange={setPage} />}
22
22
  * header={<Header brand="App" />}
23
23
  * footer={<Footer>© elCRM</Footer>}
24
24
  * >
package/dist/Layout.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as r } from "./Layout-mi6Ghayv.js";
1
+ import { L as r } from "./Layout-CzEGKl9s.js";
2
2
  export {
3
3
  r as Layout
4
4
  };