@elcrm/components 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +130 -16
  2. package/dist/ActionGroup-ChKFW0mt.js +27 -0
  3. package/dist/ActionGroup.css +1 -0
  4. package/dist/ActionGroup.d.ts +42 -0
  5. package/dist/ActionGroup.js +4 -0
  6. package/dist/Avatar-loGgFt72.js +113 -0
  7. package/dist/Avatar.d.ts +11 -2
  8. package/dist/Avatar.js +3 -2
  9. package/dist/{AvatarGroup-BAWas4pU.js → AvatarGroup-D1gnT3Od.js} +1 -1
  10. package/dist/AvatarGroup.d.ts +2 -1
  11. package/dist/AvatarGroup.js +1 -1
  12. package/dist/AvatarName-0BzyfpMq.js +68 -0
  13. package/dist/AvatarName.css +1 -1
  14. package/dist/AvatarName.d.ts +8 -2
  15. package/dist/AvatarName.js +1 -1
  16. package/dist/Badge-jp-9iNNL.js +28 -0
  17. package/dist/Badge.css +1 -1
  18. package/dist/Badge.d.ts +33 -17
  19. package/dist/Badge.js +1 -1
  20. package/dist/{Block-BAXh0PPp.js → Block-Bu7NEA0g.js} +1 -1
  21. package/dist/Block.js +1 -1
  22. package/dist/Card.css +1 -1
  23. package/dist/Card.d.ts +8 -1
  24. package/dist/ChatFrame-BW2TmCkZ.js +37 -0
  25. package/dist/ChatFrame.css +1 -0
  26. package/dist/ChatList.d.ts +9 -0
  27. package/dist/ChatList.js +7 -0
  28. package/dist/ChatMessages-B8rdXiK-.js +19 -0
  29. package/dist/ChatMessages.d.ts +9 -0
  30. package/dist/ChatMessages.js +4 -0
  31. package/dist/ChatSplit-DNnu3TNq.js +21 -0
  32. package/dist/CheckIcon-FdB8fMEF.js +17 -0
  33. package/dist/CheckIcon.d.ts +8 -0
  34. package/dist/{Column-DDaqX-A7.js → Column-BiogBDf8.js} +1 -1
  35. package/dist/Column.js +1 -1
  36. package/dist/Dropdown-4yUB2tk1.js +142 -0
  37. package/dist/Dropdown.css +1 -1
  38. package/dist/Dropdown.d.ts +3 -3
  39. package/dist/Dropdown.js +1 -1
  40. package/dist/Footer.css +1 -1
  41. package/dist/Item-D4okhsfW.js +46 -0
  42. package/dist/Item.css +1 -1
  43. package/dist/Item.d.ts +8 -1
  44. package/dist/Item.js +1 -1
  45. package/dist/ItemColumn-M7a9L8CI.js +41 -0
  46. package/dist/ItemColumn.css +1 -0
  47. package/dist/ItemColumn.d.ts +62 -0
  48. package/dist/ItemColumn.js +4 -0
  49. package/dist/Layout-mi6Ghayv.js +31 -0
  50. package/dist/Layout.css +1 -1
  51. package/dist/Layout.d.ts +28 -6
  52. package/dist/Layout.js +1 -1
  53. package/dist/Loading-DkkG7RcE.js +16 -0
  54. package/dist/Loading.css +1 -1
  55. package/dist/Loading.d.ts +1 -1
  56. package/dist/Loading.js +1 -1
  57. package/dist/Menu-DuXQv-zT.js +66 -0
  58. package/dist/Menu.css +1 -1
  59. package/dist/Menu.d.ts +15 -3
  60. package/dist/Menu.js +1 -1
  61. package/dist/NavSections-BpyZPimZ.js +79 -0
  62. package/dist/NavSections.css +1 -1
  63. package/dist/NavSections.js +1 -1
  64. package/dist/PageHead-DgaJ1mXY.js +31 -0
  65. package/dist/PageHead.css +1 -1
  66. package/dist/PageHead.d.ts +28 -6
  67. package/dist/PageHead.js +1 -1
  68. package/dist/{PageShell-CghThHS3.js → PageShell-D9EZiO8o.js} +13 -11
  69. package/dist/PageShell.css +1 -1
  70. package/dist/PageShell.d.ts +11 -6
  71. package/dist/PageShell.js +1 -1
  72. package/dist/Popover-D0m5JWIt.js +142 -0
  73. package/dist/Popover.css +1 -0
  74. package/dist/Popover.d.ts +54 -0
  75. package/dist/Popover.js +4 -0
  76. package/dist/PricingGroup-Czuhe81Z.js +120 -0
  77. package/dist/PricingGroup.css +1 -1
  78. package/dist/PricingGroup.js +1 -1
  79. package/dist/{PricingTable-DALddSwM.js → PricingTable-BuLC0opK.js} +69 -75
  80. package/dist/PricingTable.css +1 -1
  81. package/dist/PricingTable.js +1 -1
  82. package/dist/RadioGroup-fcXzhvMu.js +129 -0
  83. package/dist/RadioGroup.css +1 -1
  84. package/dist/RadioGroup.js +1 -1
  85. package/dist/{Row--HIe6vb9.js → Row-DsQOVn18.js} +1 -1
  86. package/dist/Row.js +1 -1
  87. package/dist/Sidebar-CBYq1ad6.js +107 -0
  88. package/dist/Sidebar.css +1 -0
  89. package/dist/Sidebar.d.ts +99 -0
  90. package/dist/Sidebar.js +4 -0
  91. package/dist/Stack-XkmPSswj.js +53 -0
  92. package/dist/Stack.css +1 -1
  93. package/dist/Stack.d.ts +16 -4
  94. package/dist/Stack.js +3 -2
  95. package/dist/Stat-C5iZyEoo.js +27 -0
  96. package/dist/Stat.css +1 -0
  97. package/dist/Stat.d.ts +39 -0
  98. package/dist/Stat.js +4 -0
  99. package/dist/TabSections-DN7yVJoF.js +69 -0
  100. package/dist/TabSections.css +1 -1
  101. package/dist/TabSections.js +1 -1
  102. package/dist/TextGroup-DmhuyMR1.js +23 -0
  103. package/dist/TextGroup.css +1 -0
  104. package/dist/TextGroup.d.ts +36 -0
  105. package/dist/TextGroup.js +4 -0
  106. package/dist/badgeText-CRzlIzi3.js +8 -0
  107. package/dist/badgeText.d.ts +4 -0
  108. package/dist/dark.css +13 -0
  109. package/dist/index.css +31 -17
  110. package/dist/index.d.ts +27 -4
  111. package/dist/index.es.d.ts +82 -0
  112. package/dist/index.es.js +83 -59
  113. package/dist/light.css +13 -0
  114. package/dist/overlayZ.d.ts +9 -0
  115. package/dist/rovingKeys-CGlfTtNQ.js +15 -0
  116. package/dist/rovingKeys.d.ts +13 -0
  117. package/dist/tokens.css +44 -4
  118. package/dist/types.d.ts +2 -0
  119. package/dist/useControllableValue-CWqH1kpM.js +10 -0
  120. package/dist/useControllableValue.d.ts +4 -0
  121. package/package.json +6 -2
  122. package/dist/Avatar-CyNXYvsa.js +0 -101
  123. package/dist/AvatarName-DhD3TytF.js +0 -56
  124. package/dist/Badge-l6nUkl-H.js +0 -22
  125. package/dist/Dropdown-DQlDiWCR.js +0 -168
  126. package/dist/Item-CaU4RW2G.js +0 -38
  127. package/dist/Layout-Xb3-xsmA.js +0 -18
  128. package/dist/Loading-ChGq9peU.js +0 -15
  129. package/dist/Menu-DRBHvSdJ.js +0 -40
  130. package/dist/NavSections-NDcIDD6H.js +0 -59
  131. package/dist/PageHead-Baz9BLuA.js +0 -22
  132. package/dist/PricingGroup-DgcdVSq8.js +0 -126
  133. package/dist/RadioGroup-D2UUOTkY.js +0 -138
  134. package/dist/Stack-b0-XWwQ1.js +0 -31
  135. package/dist/TabSections-DL7DufKU.js +0 -50
package/dist/index.es.js CHANGED
@@ -1,67 +1,91 @@
1
- import { L as f } from "./Layout-Xb3-xsmA.js";
1
+ import { L as x } from "./Layout-mi6Ghayv.js";
2
2
  import { H as i } from "./Header-Cf28eyjW.js";
3
- import { F as n } from "./Footer-qxUlnPR9.js";
4
- import { L as d } from "./List-BgKkYaGO.js";
5
- import { I as B } from "./Item-CaU4RW2G.js";
6
- import { C as S } from "./Card-hn37Opo3.js";
7
- import { B as A } from "./Block-BAXh0PPp.js";
8
- import { R } from "./Row--HIe6vb9.js";
9
- import { C } from "./Column-DDaqX-A7.js";
10
- import { S as b } from "./Stack-b0-XWwQ1.js";
11
- import { M as F } from "./Menu-DRBHvSdJ.js";
12
- import { D as H } from "./Dropdown-DQlDiWCR.js";
13
- import { B as h } from "./Breadcrumb-CAM_e9LN.js";
14
- import { L as w } from "./Loading-ChGq9peU.js";
15
- import { S as D } from "./Section-Crxk2J-E.js";
16
- import { N as I } from "./NavSections-NDcIDD6H.js";
17
- import { T as j } from "./TabSections-DL7DufKU.js";
18
- import { A as J, i as K } from "./Avatar-CyNXYvsa.js";
19
- import { A as Q } from "./AvatarGroup-BAWas4pU.js";
20
- import { A as V } from "./AvatarName-DhD3TytF.js";
21
- import { B as X } from "./Badge-l6nUkl-H.js";
22
- import { B as Z } from "./Brand-Zq-Idks4.js";
23
- import { E as $ } from "./EmptyState-mBiWtMIM.js";
24
- import { R as or } from "./RadioGroup-D2UUOTkY.js";
25
- import { P as er } from "./PricingGroup-DgcdVSq8.js";
26
- import { P as pr } from "./PricingTable-DALddSwM.js";
27
- import { P as sr } from "./PageHead-Baz9BLuA.js";
28
- import { P as xr } from "./PageShell-CghThHS3.js";
3
+ import { F as c } from "./Footer-qxUlnPR9.js";
4
+ import { L as u } from "./List-BgKkYaGO.js";
5
+ import { I as S } from "./Item-D4okhsfW.js";
6
+ import { I as v } from "./ItemColumn-M7a9L8CI.js";
7
+ import { C as y } from "./Card-hn37Opo3.js";
8
+ import { A as B } from "./ActionGroup-ChKFW0mt.js";
9
+ import { T as I } from "./TextGroup-DmhuyMR1.js";
10
+ import { S as R } from "./Stat-C5iZyEoo.js";
11
+ import { B as G } from "./Block-Bu7NEA0g.js";
12
+ import { R as g } from "./Row-DsQOVn18.js";
13
+ import { C as F } from "./Column-BiogBDf8.js";
14
+ import { S as H, s as M } from "./Stack-XkmPSswj.js";
15
+ import { M as Z } from "./Menu-DuXQv-zT.js";
16
+ import { D as z } from "./Dropdown-4yUB2tk1.js";
17
+ import { B as E } from "./Breadcrumb-CAM_e9LN.js";
18
+ import { L as j } from "./Loading-DkkG7RcE.js";
19
+ import { S as K } from "./Section-Crxk2J-E.js";
20
+ import { N as U } from "./NavSections-BpyZPimZ.js";
21
+ import { T as W } from "./TabSections-DN7yVJoF.js";
22
+ import { A as Y, a as _, i as $ } from "./Avatar-loGgFt72.js";
23
+ import { A as or } from "./AvatarGroup-D1gnT3Od.js";
24
+ import { A as er } from "./AvatarName-0BzyfpMq.js";
25
+ import { B as sr } from "./Badge-jp-9iNNL.js";
26
+ import { B as mr } from "./Brand-Zq-Idks4.js";
27
+ import { E as fr } from "./EmptyState-mBiWtMIM.js";
28
+ import { R as nr } from "./RadioGroup-fcXzhvMu.js";
29
+ import { P as lr } from "./PricingGroup-Czuhe81Z.js";
30
+ import { P as dr } from "./PricingTable-BuLC0opK.js";
31
+ import { P as Cr } from "./PageHead-DgaJ1mXY.js";
32
+ import { P as Pr } from "./PageShell-D9EZiO8o.js";
33
+ import { C as Ar, a as Br } from "./ChatSplit-DNnu3TNq.js";
34
+ import { C as Ir } from "./ChatFrame-BW2TmCkZ.js";
35
+ import { C as Rr } from "./ChatMessages-B8rdXiK-.js";
36
+ import { S as Gr } from "./Sidebar-CBYq1ad6.js";
37
+ import { P as gr, a as kr, p as Fr, r as Nr } from "./Popover-D0m5JWIt.js";
29
38
  import { lazy as e } from "react";
30
- import { c as cr } from "./cx-CcykAxZN.js";
31
- function p(a) {
39
+ import { c as Mr } from "./cx-CcykAxZN.js";
40
+ function s(a) {
32
41
  const o = {};
33
42
  return (r) => (o[r] || (o[r] = e(() => a(r))), o[r]);
34
43
  }
35
44
  export {
36
- J as Avatar,
37
- Q as AvatarGroup,
38
- V as AvatarName,
39
- X as Badge,
40
- A as Block,
41
- Z as Brand,
42
- h as Breadcrumb,
43
- S as Card,
44
- C as Column,
45
- H as Dropdown,
46
- $ as EmptyState,
47
- n as Footer,
45
+ B as ActionGroup,
46
+ Y as Avatar,
47
+ or as AvatarGroup,
48
+ er as AvatarName,
49
+ sr as Badge,
50
+ G as Block,
51
+ mr as Brand,
52
+ E as Breadcrumb,
53
+ y as Card,
54
+ Ir as ChatFrame,
55
+ Ar as ChatList,
56
+ Rr as ChatMessages,
57
+ Br as ChatSplit,
58
+ F as Column,
59
+ z as Dropdown,
60
+ fr as EmptyState,
61
+ c as Footer,
48
62
  i as Header,
49
- B as Item,
50
- f as Layout,
51
- d as List,
52
- w as Loading,
53
- F as Menu,
54
- I as NavSections,
55
- sr as PageHead,
56
- xr as PageShell,
57
- er as PricingGroup,
58
- pr as PricingTable,
59
- or as RadioGroup,
60
- R as Row,
61
- D as Section,
62
- b as Stack,
63
- j as TabSections,
64
- p as createLazyResolver,
65
- cr as cx,
66
- K as initialsFromName
63
+ S as Item,
64
+ v as ItemColumn,
65
+ x as Layout,
66
+ u as List,
67
+ j as Loading,
68
+ Z as Menu,
69
+ U as NavSections,
70
+ Cr as PageHead,
71
+ Pr as PageShell,
72
+ gr as Popover,
73
+ lr as PricingGroup,
74
+ dr as PricingTable,
75
+ nr as RadioGroup,
76
+ g as Row,
77
+ K as Section,
78
+ Gr as Sidebar,
79
+ H as Stack,
80
+ R as Stat,
81
+ W as TabSections,
82
+ I as TextGroup,
83
+ kr as acquireOverlayZIndex,
84
+ _ as avatarRadiusStyle,
85
+ s as createLazyResolver,
86
+ Mr as cx,
87
+ $ as initialsFromName,
88
+ Fr as peekOverlayZIndex,
89
+ Nr as releaseOverlayZIndex,
90
+ M as stackColumnsTemplate
67
91
  };
package/dist/light.css CHANGED
@@ -13,13 +13,26 @@ body[data-theme="light"] {
13
13
  --shell-border: var(--line);
14
14
  --shell-background: var(--panel);
15
15
  --shell-background-muted: var(--bg);
16
+ --shell-bg: var(--shell-background-muted);
16
17
  --shell-background-hover: color-mix(in srgb, var(--text) 6%, transparent);
17
18
  --shell-background-selected: color-mix(in srgb, var(--accent) 10%, transparent);
18
19
  --shell-shadow: var(--shadow);
19
20
 
21
+ --sidebar-block-bg: var(--shell-background);
22
+ --sidebar-block-border: var(--shell-border);
23
+ --sidebar-block-shadow: none;
24
+ --sidebar-item-active: var(--shell-color);
25
+ --sidebar-item-active-bg: var(--shell-background-selected);
26
+ --sidebar-icon-active: var(--shell-color-accent);
27
+
20
28
  --avatar-background: var(--shell-color-accent);
21
29
  --avatar-color: var(--button-primary-fg);
30
+ --avatar-name-title-color: var(--shell-color);
31
+ --avatar-name-description-color: var(--shell-color-muted);
22
32
  --avatar-border: 1px solid var(--shell-border);
23
33
  --avatar-outline-active: 2px solid
24
34
  color-mix(in srgb, var(--accent) 70%, white);
35
+
36
+ --chat-background: var(--shell-background);
37
+ --chat-border: 1px solid var(--shell-border);
25
38
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Счётчик z-index оверлеев — тот же `globalThis.elcrm.overlayZ`, что у `@elcrm/form`.
3
+ */
4
+ /** Выделить z-index поверх текущего стека оверлеев */
5
+ export declare function acquireOverlayZIndex(): number;
6
+ /** Освободить слой; при пустом стеке сброс счётчика */
7
+ export declare function releaseOverlayZIndex(z: number): void;
8
+ /** Текущий верхний активный слой (или FLOOR, если стек пуст) */
9
+ export declare function peekOverlayZIndex(): number;
@@ -0,0 +1,15 @@
1
+ function x(r, { values: n, value: f, onSelect: i, vertical: e }) {
2
+ if (n.length === 0) return;
3
+ const h = e ? "ArrowUp" : "ArrowLeft", o = e ? "ArrowDown" : "ArrowRight";
4
+ let t;
5
+ if (r.key === "Home") t = n[0];
6
+ else if (r.key === "End") t = n[n.length - 1];
7
+ else if (r.key === h || r.key === o) {
8
+ const g = Math.max(0, n.indexOf(f ?? "")), l = r.key === o ? 1 : -1;
9
+ t = n[(g + l + n.length) % n.length];
10
+ } else return;
11
+ t != null && (r.preventDefault(), i(t));
12
+ }
13
+ export {
14
+ x as h
15
+ };
@@ -0,0 +1,13 @@
1
+ import { KeyboardEvent } from 'react';
2
+ type Opts = {
3
+ values: string[];
4
+ value?: string;
5
+ onSelect: (value: string) => void;
6
+ /** `true` — стрелки вверх/вниз, иначе влево/вправо */
7
+ vertical?: boolean;
8
+ };
9
+ /**
10
+ * Перемещение выбора по списку `value` (меню, вкладки).
11
+ */
12
+ export declare function handleRovingKeys(event: KeyboardEvent, { values, value, onSelect, vertical }: Opts): void;
13
+ export {};
package/dist/tokens.css CHANGED
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * Дефолты геометрии @elcrm/components для `elcrm css`.
3
- * Цвета — light.css / dark.css. Не импортируй в runtime приложения как themes.css.
3
+ * Цвета — light.css / dark.css. Не импортируй в runtime как themes.css.
4
+ *
5
+ * Слой 1: `--shell-*` (всё общее).
6
+ * Слой 2: узкие токены = алиас на shell, если значение то же.
7
+ * Переопределяй узкий токен только когда компонент реально отличается.
4
8
  */
5
9
  :root {
6
10
  /* —— shell —— */
@@ -20,23 +24,25 @@
20
24
  --shell-status-size: 10px;
21
25
  --shell-disabled-opacity: 0.55;
22
26
  --shell-z: var(--elcrm-z-popover, 1000);
27
+ --layout-height: 100dvh;
23
28
 
24
- /* —— узкие —— */
29
+ /* —— header —— */
25
30
  --header-radius: var(--shell-radius);
26
31
  --header-height: 52px;
27
32
  --header-shadow: none;
28
33
  --header-margin: 0;
29
34
  --header-z: 20;
30
35
 
36
+ /* —— section / nav-sections —— */
31
37
  --section-padding: 1.5rem 1.75rem 2.5rem;
32
38
  --section-title-size: 1.5rem;
33
39
  --section-title-size-md: 1.25rem;
34
40
  --section-auth-card-max-width: 22rem;
35
-
36
- --nav-sections-padding: 1.5rem 1.75rem 2.5rem;
41
+ --nav-sections-padding: var(--section-padding);
37
42
  --nav-sections-nav-width: 220px;
38
43
  --nav-sections-main-max-width: 720px;
39
44
 
45
+ /* —— avatar —— */
40
46
  --avatar-size-s: 1.5rem;
41
47
  --avatar-size-m: 2rem;
42
48
  --avatar-size-l: 2.75rem;
@@ -49,9 +55,43 @@
49
55
  --avatar-group-overlap: -0.4rem;
50
56
  --avatar-group-ring: 2px;
51
57
 
58
+ /* —— overlay / pricing / stack —— */
52
59
  --dropdown-min-width: 12rem;
53
60
  --dropdown-max-width: 20rem;
54
61
  --dropdown-max-height: 20rem;
55
62
  --pricing-card-min-width: 16rem;
56
63
  --pricing-table-label-width: 10rem;
64
+ --card-pointer: auto;
65
+ --stack-grid-min: 180px;
66
+ --stack-columns-template: minmax(0, 1fr);
67
+ --stat-value-size: 1.75rem;
68
+ --action-group-gap: var(--shell-gap-sm);
69
+
70
+ /* —— item-column —— */
71
+ --item-column-gap: var(--shell-gap);
72
+ --item-column-icon-size: 40px;
73
+ --item-column-icon-radius: var(--avatar-radius);
74
+ --item-column-title-size: var(--shell-font-size);
75
+ --item-column-title-line: 1.3;
76
+
77
+ /* —— sidebar —— */
78
+ --sidebar-width: 248px;
79
+ --sidebar-pad-x: var(--shell-gap);
80
+ --sidebar-pad-y: var(--shell-gap-lg);
81
+ --sidebar-block-radius: var(--shell-radius);
82
+ --sidebar-item-font-size: var(--shell-font-size-sm);
83
+ --sidebar-item-padding: 6px 10px;
84
+ --sidebar-icon-size: 16px;
85
+ --sidebar-group-font-size: 11px;
86
+
87
+ /* —— chat —— */
88
+ --chat-list-width: 340px;
89
+ --chat-split-gap: var(--shell-gap-lg);
90
+ --chat-radius: var(--shell-radius);
91
+ --chat-header-padding: var(--shell-gap);
92
+ --chat-body-padding: 0;
93
+ --chat-footer-padding: var(--shell-gap);
94
+ --chat-messages-header-padding: 14px 16px;
95
+ --chat-messages-body-padding: 16px 16px 20px;
96
+ --chat-messages-footer-padding: 10px 12px 12px;
57
97
  }
@@ -0,0 +1,2 @@
1
+ /** Размер UI elCRM: compact / default / large. */
2
+ export type UiSize = "s" | "m" | "l";
@@ -0,0 +1,10 @@
1
+ import { useState as l } from "react";
2
+ function V(r, o, t) {
3
+ const [u, c] = l(o), e = r !== void 0;
4
+ return [e ? r : u, (s) => {
5
+ e || c(s), t == null || t(s);
6
+ }];
7
+ }
8
+ export {
9
+ V as u
10
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Controlled / uncontrolled значение (как `value` + `defaultValue` у групп).
3
+ */
4
+ export declare function useControllableValue<T>(value: T | undefined, defaultValue: T | undefined, onChange?: (next: T) => void): [T | undefined, (next: T) => void];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elcrm/components",
3
- "version": "0.1.1",
4
- "description": "Shell UI elCRM: Layout, Header, PageHead, PageShell, Section, Stack, RadioGroup, Avatar и др.",
3
+ "version": "0.2.0",
4
+ "description": "Shell UI elCRM: Layout, Header, Sidebar, Popover, PageHead, PageShell, Section, Stack, Stat, ActionGroup, TextGroup, ItemColumn и др.",
5
5
  "type": "module",
6
6
  "author": "MaSkal <dev@elcrm.online>",
7
7
  "license": "MIT",
@@ -85,11 +85,14 @@
85
85
  "./package.json": "./package.json"
86
86
  },
87
87
  "scripts": {
88
+ "dev": "vite --config test/vite.config.ts",
88
89
  "build": "vite build",
89
90
  "postbuild": "node scripts/postbuild.mjs",
90
91
  "check:css": "node scripts/check-css-scoped.mjs",
91
92
  "check:tokens": "node scripts/check-tokens.mjs",
92
93
  "test": "vitest run",
94
+ "test:build": "vite build --config test/vite.config.ts",
95
+ "test:preview": "vite preview --config test/vite.config.ts",
93
96
  "prepublishOnly": "npm run check:css && npm run check:tokens && npm run test && npm run build",
94
97
  "pack:check": "npm pack --dry-run"
95
98
  },
@@ -104,6 +107,7 @@
104
107
  }
105
108
  },
106
109
  "devDependencies": {
110
+ "@elcrm/storybook": "file:../elCRM.storybook",
107
111
  "@testing-library/react": "^16.2.0",
108
112
  "@types/node": "^22.13.10",
109
113
  "@types/react": "^18.2.66",
@@ -1,101 +0,0 @@
1
- import a from "react";
2
- import { c as f } from "./cx-CcykAxZN.js";
3
- import './Avatar.css';const N = "car", g = "cav", h = "cas", y = "cam", A = "cal", C = "caa", x = "cai", z = "cab", B = "cao", F = "caf", e = {
4
- r: N,
5
- v: g,
6
- s: h,
7
- m: y,
8
- l: A,
9
- a: C,
10
- i: x,
11
- b: z,
12
- o: B,
13
- f: F
14
- };
15
- function U(t) {
16
- const s = t.trim();
17
- if (!s) return "?";
18
- const n = s.split(/\s+/).filter(Boolean);
19
- return n.length >= 2 ? (n[0][0] + n[1][0]).toUpperCase() : s.slice(0, 2).toUpperCase();
20
- }
21
- function D({ status: t }) {
22
- return /* @__PURE__ */ a.createElement(
23
- "span",
24
- {
25
- className: f(e.b, t === "online" ? e.o : e.f),
26
- "data-status": t,
27
- "aria-hidden": !0
28
- }
29
- );
30
- }
31
- function R({
32
- src: t,
33
- label: s,
34
- children: n,
35
- name: l,
36
- status: o
37
- }) {
38
- const c = t != null && t !== "" ? /* @__PURE__ */ a.createElement("img", { className: e.i, src: t, alt: s ?? "", draggable: !1 }) : n ?? (l != null ? U(l) : "?");
39
- return /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement("span", { className: e.v }, c), o != null ? /* @__PURE__ */ a.createElement(D, { status: o }) : null);
40
- }
41
- function j(t) {
42
- const {
43
- src: s,
44
- alt: n,
45
- name: l,
46
- size: o = "m",
47
- status: c,
48
- active: i,
49
- children: p,
50
- className: b,
51
- as: v = "span",
52
- ...m
53
- } = t, E = o === "s" ? e.s : o === "l" ? e.l : e.m, u = f(e.r, E, i && e.a, b), r = n ?? l, d = /* @__PURE__ */ a.createElement(
54
- R,
55
- {
56
- src: s,
57
- label: r,
58
- name: l,
59
- status: c,
60
- children: p
61
- }
62
- );
63
- return v === "button" ? /* @__PURE__ */ a.createElement(
64
- "button",
65
- {
66
- type: "button",
67
- className: u,
68
- "aria-label": r,
69
- "data-active": i ? "true" : void 0,
70
- "data-status": c,
71
- ...m
72
- },
73
- d
74
- ) : v === "div" ? /* @__PURE__ */ a.createElement(
75
- "div",
76
- {
77
- className: u,
78
- role: r ? "img" : void 0,
79
- "aria-label": r,
80
- "data-active": i ? "true" : void 0,
81
- "data-status": c,
82
- ...m
83
- },
84
- d
85
- ) : /* @__PURE__ */ a.createElement(
86
- "span",
87
- {
88
- className: u,
89
- role: r ? "img" : void 0,
90
- "aria-label": r,
91
- "data-active": i ? "true" : void 0,
92
- "data-status": c,
93
- ...m
94
- },
95
- d
96
- );
97
- }
98
- export {
99
- j as A,
100
- U as i
101
- };
@@ -1,56 +0,0 @@
1
- import t from "react";
2
- import { A as v } from "./Avatar-CyNXYvsa.js";
3
- import { c as b } from "./cx-CcykAxZN.js";
4
- import './AvatarName.css';const g = "czr", y = "czc", A = "czt", h = "czd", x = "czs", C = "czm", F = "czl", e = {
5
- r: g,
6
- c: y,
7
- t: A,
8
- d: h,
9
- s: x,
10
- m: C,
11
- l: F
12
- };
13
- function I(s, n) {
14
- if (s != null && s !== "") return s;
15
- if (typeof n == "string") return n;
16
- }
17
- function j(s) {
18
- const {
19
- src: n,
20
- name: c,
21
- title: m,
22
- description: i,
23
- size: a = "m",
24
- status: f,
25
- className: p,
26
- children: z,
27
- as: u = "div",
28
- ...r
29
- } = s, E = a === "s" ? e.s : a === "l" ? e.l : e.m, l = b(e.r, E, p), d = m ?? (typeof c == "string" ? c : void 0), N = I(c, m), o = /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement(v, { src: n, name: N, size: a, status: f }), /* @__PURE__ */ t.createElement("span", { className: e.c }, d != null ? /* @__PURE__ */ t.createElement("span", { className: e.t }, d) : null, i != null ? /* @__PURE__ */ t.createElement("span", { className: e.d }, i) : null, z));
30
- return u === "button" ? /* @__PURE__ */ t.createElement(
31
- "button",
32
- {
33
- type: "button",
34
- className: l,
35
- ...r
36
- },
37
- o
38
- ) : u === "a" ? /* @__PURE__ */ t.createElement(
39
- "a",
40
- {
41
- className: l,
42
- ...r
43
- },
44
- o
45
- ) : /* @__PURE__ */ t.createElement(
46
- "div",
47
- {
48
- className: l,
49
- ...r
50
- },
51
- o
52
- );
53
- }
54
- export {
55
- j as A
56
- };
@@ -1,22 +0,0 @@
1
- import o from "react";
2
- import { c as e } from "./cx-CcykAxZN.js";
3
- import './Badge.css';const u = "cjr", d = "cjn", j = "cja", m = "cju", w = "cjw", i = "cjd", c = {
4
- r: u,
5
- n: d,
6
- a: j,
7
- u: m,
8
- w,
9
- d: i
10
- };
11
- function f({
12
- tone: n = "neutral",
13
- children: s,
14
- className: a,
15
- ...t
16
- }) {
17
- const r = n === "accent" ? c.a : n === "success" ? c.u : n === "warning" ? c.w : n === "danger" ? c.d : c.n;
18
- return /* @__PURE__ */ o.createElement("span", { className: e(c.r, r, a), ...t }, s);
19
- }
20
- export {
21
- f as B
22
- };