@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
@@ -1 +1 @@
1
- @layer elcrm-components{.ctr{display:flex;flex-direction:column;gap:var(--shell-gap);width:100%;min-width:0}.ctb{display:flex;align-items:flex-end;gap:var(--shell-gap);border-bottom:1px solid var(--shell-border);min-width:0}.ctn{display:flex;align-items:stretch;gap:var(--shell-gap-lg);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ctt{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:var(--shell-gap-sm);flex:0 0 auto;margin:0 0 -1px;padding:var(--shell-padding-block) .15rem;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--shell-color-muted);font:inherit;font-size:var(--shell-font-size);font-weight:500;white-space:nowrap;cursor:pointer}.ctt:hover:not(:disabled){color:var(--shell-color)}.cta{color:var(--shell-color);border-bottom-color:var(--shell-color-accent)}.ctt:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.cte{display:inline-flex;align-items:center;justify-content:center;min-width:1.15em;height:1.15em;padding:0 .35em;border-radius:999px;background:var(--shell-color-danger);color:var(--avatar-color);font-size:var(--sidebar-group-font-size);font-style:normal;font-weight:700;line-height:1}.cts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:var(--shell-gap-sm)}.ctm{min-width:0;width:100%}}
1
+ @layer elcrm-components{.ntr{display:flex;flex-direction:column;gap:var(--shell-gap);width:100%;min-width:0}.ntb{display:flex;align-items:flex-end;gap:var(--shell-gap);border-bottom:1px solid var(--shell-border);min-width:0}.ntn{display:flex;align-items:stretch;gap:var(--shell-gap-lg);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:thin}.ntt{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:var(--shell-gap-sm);flex:0 0 auto;margin:0 0 -1px;padding:var(--shell-padding-block) .15rem;border:none;border-bottom:2px solid transparent;background:transparent;color:var(--shell-color-muted);font:inherit;font-size:var(--shell-font-size);font-weight:500;white-space:nowrap;cursor:pointer}.ntt:hover:not(:disabled){color:var(--shell-color)}.nta{color:var(--shell-color);border-bottom-color:var(--shell-color-accent)}.ntt:disabled{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.nte{display:inline-flex;align-items:center;justify-content:center;min-width:1.15em;height:1.15em;padding:0 .35em;border-radius:999px;background:var(--shell-color-danger);color:var(--avatar-color);font-size:var(--sidebar-group-font-size);font-style:normal;font-weight:700;line-height:1}.nts{flex:0 0 auto;display:flex;align-items:center;padding-bottom:var(--shell-gap-sm)}.ntm{min-width:0;width:100%}}
@@ -29,8 +29,13 @@ export type TabSectionsProps = {
29
29
  /**
30
30
  * Резолвер панели по `value`.
31
31
  * Обычно: `createLazyResolver((v) => import(\`./sections/${v}.tsx\`))`.
32
+ * Не нужен, если передали `children`.
32
33
  */
33
- resolveSection: (value: string) => LazyRouteChunk | React.ComponentType;
34
+ resolveSection?: (value: string) => LazyRouteChunk | React.ComponentType;
35
+ /**
36
+ * Готовая панель без lazy (вместо `resolveSection`).
37
+ */
38
+ children?: React.ReactNode;
34
39
  /** Контролируемый активный `value`. */
35
40
  value?: string;
36
41
  /** Начальный `value` (неконтролируемый режим). */
@@ -84,4 +89,4 @@ export type TabSectionsProps = {
84
89
  * />
85
90
  * ```
86
91
  */
87
- export declare function TabSections({ items, resolveSection, value: valueProp, defaultValue, onValueChange, loading, actions, className, navLabel, }: TabSectionsProps): React.JSX.Element;
92
+ export declare function TabSections({ items, resolveSection, children, value: valueProp, defaultValue, onValueChange, loading, actions, className, navLabel, }: TabSectionsProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- import { T as e } from "./TabSections-DN7yVJoF.js";
1
+ import { T as e } from "./TabSections-Dppe9wiz.js";
2
2
  export {
3
3
  e as TabSections
4
4
  };
@@ -0,0 +1,27 @@
1
+ import e from "react";
2
+ import { c as a } from "./cx-CcykAxZN.js";
3
+ import './Table.css';const l = "dtw", n = "dtt", d = "dtf", f = "dts", t = {
4
+ wrap: l,
5
+ table: n,
6
+ fixed: d,
7
+ sticky: f
8
+ };
9
+ function x({
10
+ layout: s = "auto",
11
+ stickyHeader: c = !1,
12
+ className: o,
13
+ children: r,
14
+ ...i
15
+ }) {
16
+ return /* @__PURE__ */ e.createElement("div", { className: a(t.wrap, c && t.sticky) }, /* @__PURE__ */ e.createElement(
17
+ "table",
18
+ {
19
+ className: a(t.table, s === "fixed" && t.fixed, o),
20
+ ...i
21
+ },
22
+ r
23
+ ));
24
+ }
25
+ export {
26
+ x as T
27
+ };
package/dist/Table.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.cDw{overflow:auto}.cDt{width:100%;border-collapse:collapse;font-size:var(--table-font-size);color:var(--shell-color)}.cDf{table-layout:fixed}.cDt th,.cDt td{padding:var(--table-cell-padding);border-bottom:1px solid var(--shell-border);text-align:left;vertical-align:top}.cDt th{color:var(--shell-color-muted);font-weight:var(--shell-font-weight);font-size:var(--table-head-font-size);text-transform:uppercase;letter-spacing:.04em}.cDt code{font-size:var(--table-code-font-size)}}
1
+ @layer elcrm-components{.dtw{overflow:auto;max-height:var(--table-max-height, none)}.dtt{width:100%;border-collapse:collapse;font-size:var(--table-font-size);color:var(--shell-color)}.dtf{table-layout:fixed}.dtt th,.dtt td{padding:var(--table-cell-padding);border-bottom:1px solid var(--shell-border);text-align:left;vertical-align:top}.dtt th{color:var(--shell-color-muted);font-weight:var(--shell-font-weight);font-size:var(--table-head-font-size);text-transform:uppercase;letter-spacing:.04em}.dtt code{font-size:var(--table-code-font-size)}.dts .dtt thead th{position:sticky;top:0;z-index:1;background:var(--table-head-background, var(--shell-background));box-shadow:0 1px 0 var(--shell-border)}}
package/dist/Table.d.ts CHANGED
@@ -2,13 +2,21 @@ import { default as React } from 'react';
2
2
  export type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {
3
3
  /** `fixed` — равномерные колонки, ширины через col/colgroup в children. */
4
4
  layout?: "auto" | "fixed";
5
+ /**
6
+ * Липкий `<thead>` при скролле обёртки.
7
+ * Фон шапки: `--table-head-background` (иначе `--shell-background`).
8
+ */
9
+ stickyHeader?: boolean;
5
10
  };
6
11
  /**
7
12
  * Таблица данных: обёртка со скроллом + стили shell.
8
13
  *
14
+ * Подпись таблицы — нативный `<caption>` в `children` (a11y).
15
+ *
9
16
  * @example
10
17
  * ```tsx
11
- * <Table>
18
+ * <Table stickyHeader>
19
+ * <caption className="sr-only">Пользователи</caption>
12
20
  * <thead>
13
21
  * <tr>
14
22
  * <th>Имя</th>
@@ -26,4 +34,4 @@ export type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {
26
34
  *
27
35
  * Токены: `--table-*`, `--shell-border`, `--shell-color`.
28
36
  */
29
- export declare function Table({ layout, className, children, ...rest }: TableProps): React.JSX.Element;
37
+ export declare function Table({ layout, stickyHeader, className, children, ...rest }: TableProps): React.JSX.Element;
package/dist/Table.js CHANGED
@@ -1,4 +1,4 @@
1
- import { T as o } from "./Table-BoDr3X2d.js";
1
+ import { T as o } from "./Table-DqrDUUtb.js";
2
2
  export {
3
3
  o as Table
4
4
  };
@@ -0,0 +1,25 @@
1
+ import s from "react";
2
+ import { c as a } from "./cx-CcykAxZN.js";
3
+ import './Text.css';const n = "txr", u = "txm", t = {
4
+ root: n,
5
+ muted: u
6
+ };
7
+ function f({
8
+ tone: o = "default",
9
+ as: e = "p",
10
+ className: r,
11
+ children: m,
12
+ ...c
13
+ }) {
14
+ return /* @__PURE__ */ s.createElement(
15
+ e,
16
+ {
17
+ className: a(t.root, o === "muted" && t.muted, r),
18
+ ...c
19
+ },
20
+ m
21
+ );
22
+ }
23
+ export {
24
+ f as T
25
+ };
package/dist/Text.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.txr{margin:0;font-size:.9rem;line-height:1.45;color:var(--shell-color)}.txm{color:var(--shell-color-muted)}}
package/dist/Text.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { default as React } from 'react';
2
+ export type TextTone = "default" | "muted";
3
+ export type TextProps = React.HTMLAttributes<HTMLElement> & {
4
+ /** Семантика цвета: default = `--shell-color`, muted = `--shell-color-muted` */
5
+ tone?: TextTone;
6
+ /** HTML-тег */
7
+ as?: "p" | "span" | "div" | "label" | "strong" | "em";
8
+ };
9
+ /**
10
+ * Короткий текст с тоном. Для пары title+description — {@link TextGroup}.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <Text tone="muted">Ничего не найдено</Text>
15
+ * ```
16
+ *
17
+ * Токены: `--shell-color`, `--shell-color-muted`, `--shell-font-size`.
18
+ */
19
+ export declare function Text({ tone, as: Tag, className, children, ...rest }: TextProps): React.JSX.Element;
package/dist/Text.js ADDED
@@ -0,0 +1,4 @@
1
+ import { T as r } from "./Text-Bo1u7gVC.js";
2
+ export {
3
+ r as Text
4
+ };
@@ -0,0 +1,23 @@
1
+ import l from "react";
2
+ import { c as m } from "./cx-CcykAxZN.js";
3
+ import './TextGroup.css';const g = "tgr", u = "tgt", d = "tgd", i = "tgs", p = "tgl", t = {
4
+ root: g,
5
+ title: u,
6
+ desc: d,
7
+ small: i,
8
+ large: p
9
+ };
10
+ function E({
11
+ title: s,
12
+ description: e,
13
+ size: a = "m",
14
+ children: o,
15
+ className: c,
16
+ ...n
17
+ }) {
18
+ const r = a === "s" ? t.small : a === "l" ? t.large : void 0;
19
+ return /* @__PURE__ */ l.createElement("div", { className: m(t.root, r, c), ...n }, s != null ? /* @__PURE__ */ l.createElement("span", { className: t.title }, s) : null, e != null ? /* @__PURE__ */ l.createElement("span", { className: t.desc }, e) : null, o);
20
+ }
21
+ export {
22
+ E as T
23
+ };
@@ -1 +1 @@
1
- @layer elcrm-components{.c6r{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}.c6t{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c6d{margin:0;font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color-muted);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c6s .c6t{font-size:var(--shell-font-size-sm)}.c6l .c6t{font-size:var(--shell-font-size-lg)}.c6l .c6d{font-size:var(--shell-font-size)}}
1
+ @layer elcrm-components{.tgr{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}.tgt{margin:0;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tgd{margin:0;font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color-muted);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tgs .tgt{font-size:var(--shell-font-size-sm)}.tgl .tgt{font-size:var(--shell-font-size-lg)}.tgl .tgd{font-size:var(--shell-font-size)}}
package/dist/TextGroup.js CHANGED
@@ -1,4 +1,4 @@
1
- import { T as e } from "./TextGroup-DmhuyMR1.js";
1
+ import { T as e } from "./TextGroup-236jHxdT.js";
2
2
  export {
3
3
  e as TextGroup
4
4
  };
@@ -0,0 +1,35 @@
1
+ import t from "react";
2
+ import { c as i } from "./cx-CcykAxZN.js";
3
+ import './Toolbar.css';const u = "kwr", m = {
4
+ root: u
5
+ }, a = t.createContext(null);
6
+ function x() {
7
+ return t.useContext(a);
8
+ }
9
+ function f({
10
+ size: o = "s",
11
+ label: r = "Тулбар",
12
+ align: e = "start",
13
+ width: n = "l",
14
+ className: l,
15
+ children: s,
16
+ ...c
17
+ }) {
18
+ return /* @__PURE__ */ t.createElement(a.Provider, { value: { size: o } }, /* @__PURE__ */ t.createElement(
19
+ "div",
20
+ {
21
+ className: i(m.root, l),
22
+ role: "toolbar",
23
+ "aria-label": r,
24
+ "data-size": o,
25
+ "data-align": e,
26
+ "data-width": n,
27
+ ...c
28
+ },
29
+ s
30
+ ));
31
+ }
32
+ export {
33
+ f as T,
34
+ x as u
35
+ };
package/dist/Toolbar.css CHANGED
@@ -1 +1 @@
1
- @layer elcrm-components{.cCr{display:flex;flex-wrap:wrap;align-items:center;gap:var(--toolbar-gap);width:100%;min-width:0;box-sizing:border-box;--field-width: auto}.cCr>[data-field]{flex:0 1 auto;width:auto;min-width:0;max-width:100%}.cCr>[data-field=search]{flex:1 1 var(--field-search-min-width, 10rem);width:auto!important;max-width:none}.cCr[data-width=s]{display:inline-flex;width:auto;max-width:100%}.cCr[data-align=center]{justify-content:center}.cCr[data-align=end]{justify-content:flex-end}.cCr[data-align=between]{justify-content:space-between}.cCr[data-size=s]{--control-height: var(--control-height-s);--field-height: var(--control-height-s);--control-font-size: 13px;--button-height: var(--button-height-s);--button-height-m: var(--button-height-s);--button-padding: var(--button-padding-s);--button-size-m: var(--button-size-s)}.cCr[data-size=l]{--control-height: var(--control-height-l);--field-height: var(--control-height-l);--button-height: var(--button-height-l);--button-height-m: var(--button-height-l);--button-size-m: var(--button-size-l)}}
1
+ @layer elcrm-components{.kwr{display:flex;flex-wrap:wrap;align-items:center;gap:var(--toolbar-gap);width:100%;min-width:0;box-sizing:border-box;--field-width: auto}.kwr>[data-field]{flex:0 1 auto;width:auto;min-width:0;max-width:100%}.kwr>[data-field=search]{flex:1 1 var(--field-search-min-width, 10rem);width:auto;max-width:none}.kwr[data-width=s]{display:inline-flex;width:auto;max-width:100%}.kwr[data-align=center]{justify-content:center}.kwr[data-align=end]{justify-content:flex-end}.kwr[data-align=between]{justify-content:space-between}.kwr[data-size=s]{--control-height: var(--control-height-s);--field-height: var(--control-height-s);--control-font-size: var(--control-font-size-s, .8125rem);--button-height: var(--button-height-s)}.kwr[data-size=l]{--control-height: var(--control-height-l);--field-height: var(--control-height-l);--button-height: var(--button-height-l)}}
package/dist/Toolbar.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { UiSize } from './types';
3
- /** Контекст размера тулбара — дети без своего `size` его подхватывают. */
3
+ /** Контекст размера тулбара — дети читают через {@link useToolbar}. */
4
4
  export type ToolbarContextValue = {
5
5
  size: UiSize;
6
6
  };
@@ -11,8 +11,8 @@ export type ToolbarAlign = "start" | "center" | "end" | "between";
11
11
  export type ToolbarWidth = "s" | "l";
12
12
  export type ToolbarProps = Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & {
13
13
  /**
14
- * Общий размер вложенных Field / Search / Button / Dropdown / Badge.
15
- * Явный `size` у ребёнка важнее.
14
+ * Общий размер: токены `data-size` + {@link useToolbar}.
15
+ * Явный `size` у ребёнка важнее контекста.
16
16
  * @default "s"
17
17
  */
18
18
  size?: UiSize;
@@ -31,20 +31,19 @@ export type ToolbarProps = Omit<React.HTMLAttributes<HTMLDivElement>, "children"
31
31
  width?: ToolbarWidth;
32
32
  /**
33
33
  * Узлы тулбара (`*Field`, `Search`, `Button`, `Dropdown`, …).
34
- * Компонентам без `size` прокидывается размер тулбара.
34
+ * Размер через контекст / CSS, не через cloneElement.
35
35
  */
36
36
  children?: React.ReactNode;
37
37
  };
38
- /** Прокинуть `size` прямым детям-компонентам, если у них его ещё нет. */
39
- export declare function applyToolbarSize(node: React.ReactNode, size: UiSize): React.ReactNode;
40
38
  /**
41
39
  * Ряд контролов одной высоты: поиск, поля, кнопки, меню.
42
40
  *
43
41
  * Роли: Toolbar = фильтры / действия над списком (`PageHead.children`).
44
42
  * Иконки в карточке — `ActionGroup`.
45
43
  *
46
- * Пакет не зависит от `@elcrm/form` / `@elcrm/button`:
47
- * размер уходит пропом `size` и токенами `--field-height` / `--button-height-*`.
44
+ * Размер:
45
+ * - CSS: `data-size` `--control-height` / `--field-height` / `--button-height`;
46
+ * - JS: {@link useToolbar} (как {@link Dropdown}).
48
47
  *
49
48
  * @example
50
49
  * ```tsx
@@ -52,10 +51,6 @@ export declare function applyToolbarSize(node: React.ReactNode, size: UiSize): R
52
51
  * <Search value={q} onValue={setQ} />
53
52
  * <Button label="Создать" />
54
53
  * </Toolbar>
55
- * <Toolbar width="s" align="center">
56
- * <Button label="Отмена" />
57
- * <Button label="Сохранить" />
58
- * </Toolbar>
59
54
  * ```
60
55
  *
61
56
  * Токены: `--toolbar-gap`, `--control-height-*`, `--button-height-*`.
package/dist/Toolbar.js CHANGED
@@ -1,6 +1,5 @@
1
- import { T as r, a as l, u as s } from "./Toolbar-C1zAk9ak.js";
1
+ import { T as r, u as s } from "./Toolbar-Bl9-5Mis.js";
2
2
  export {
3
3
  r as Toolbar,
4
- l as applyToolbarSize,
5
4
  s as useToolbar
6
5
  };
package/dist/cx.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @example
5
5
  * ```ts
6
- * cx(s.r, active && s.a, className) // → "cr c a my"
6
+ * cx(s.root, active && s.active, className)
7
7
  * ```
8
8
  */
9
9
  export declare function cx(...parts: Array<string | false | null | undefined>): string;
package/dist/dark.css CHANGED
@@ -23,6 +23,18 @@ body[data-theme="dark"] {
23
23
  --sidebar-item-active: var(--shell-color);
24
24
  --sidebar-item-active-bg: var(--shell-background-selected);
25
25
  --sidebar-icon-active: var(--shell-color-accent);
26
+ /* панель аккаунта — цвета текущей темы */
27
+ --sidebar-account-menu-bg: var(--shell-background);
28
+ --sidebar-account-menu-color: var(--shell-color);
29
+ --sidebar-account-menu-border: var(--shell-border);
30
+ --sidebar-account-menu-shadow: var(--popup-shadow, var(--shell-shadow));
31
+ --sidebar-account-item-hover: var(--shell-background-hover);
32
+ --sidebar-account-item-icon: var(--shell-color-muted);
33
+ --sidebar-account-danger-hover: color-mix(
34
+ in srgb,
35
+ var(--shell-color-danger) 14%,
36
+ transparent
37
+ );
26
38
 
27
39
  --avatar-background: var(--shell-color-accent);
28
40
  --avatar-color: var(--button-primary-fg);