@elcrm/components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +352 -0
  3. package/dist/Avatar-DHNPaIjZ.js +64 -0
  4. package/dist/Avatar.css +1 -0
  5. package/dist/Avatar.d.ts +2 -0
  6. package/dist/Avatar.js +5 -0
  7. package/dist/Badge-l6nUkl-H.js +22 -0
  8. package/dist/Badge.css +1 -0
  9. package/dist/Badge.d.ts +2 -0
  10. package/dist/Badge.js +4 -0
  11. package/dist/Block-CVKukh1e.js +28 -0
  12. package/dist/Block.css +1 -0
  13. package/dist/Block.d.ts +2 -0
  14. package/dist/Block.js +4 -0
  15. package/dist/Brand-Zq-Idks4.js +34 -0
  16. package/dist/Brand.css +1 -0
  17. package/dist/Brand.d.ts +2 -0
  18. package/dist/Brand.js +4 -0
  19. package/dist/Card-hn37Opo3.js +12 -0
  20. package/dist/Card.css +1 -0
  21. package/dist/Card.d.ts +2 -0
  22. package/dist/Card.js +4 -0
  23. package/dist/Column-DlNrvFq1.js +26 -0
  24. package/dist/Column.css +1 -0
  25. package/dist/Column.d.ts +2 -0
  26. package/dist/Column.js +4 -0
  27. package/dist/EmptyState-mBiWtMIM.js +23 -0
  28. package/dist/EmptyState.css +1 -0
  29. package/dist/EmptyState.d.ts +2 -0
  30. package/dist/EmptyState.js +4 -0
  31. package/dist/Footer-qxUlnPR9.js +11 -0
  32. package/dist/Footer.css +1 -0
  33. package/dist/Footer.d.ts +2 -0
  34. package/dist/Footer.js +4 -0
  35. package/dist/Header-Cf28eyjW.js +23 -0
  36. package/dist/Header.css +1 -0
  37. package/dist/Header.d.ts +2 -0
  38. package/dist/Header.js +4 -0
  39. package/dist/Item-CaU4RW2G.js +38 -0
  40. package/dist/Item.css +1 -0
  41. package/dist/Item.d.ts +2 -0
  42. package/dist/Item.js +4 -0
  43. package/dist/Layout-Xb3-xsmA.js +18 -0
  44. package/dist/Layout.css +1 -0
  45. package/dist/Layout.d.ts +2 -0
  46. package/dist/Layout.js +4 -0
  47. package/dist/List-BgKkYaGO.js +12 -0
  48. package/dist/List.css +1 -0
  49. package/dist/List.d.ts +2 -0
  50. package/dist/List.js +4 -0
  51. package/dist/Loading-ChGq9peU.js +15 -0
  52. package/dist/Loading.css +1 -0
  53. package/dist/Loading.d.ts +2 -0
  54. package/dist/Loading.js +4 -0
  55. package/dist/Menu-DS7zKQbY.js +40 -0
  56. package/dist/Menu.css +1 -0
  57. package/dist/Menu.d.ts +2 -0
  58. package/dist/Menu.js +4 -0
  59. package/dist/NavSections-CM-VPai2.js +59 -0
  60. package/dist/NavSections.css +1 -0
  61. package/dist/NavSections.d.ts +2 -0
  62. package/dist/NavSections.js +4 -0
  63. package/dist/Row-CnD7Q7pD.js +20 -0
  64. package/dist/Row.css +1 -0
  65. package/dist/Row.d.ts +2 -0
  66. package/dist/Row.js +4 -0
  67. package/dist/Section-Crxk2J-E.js +34 -0
  68. package/dist/Section.css +1 -0
  69. package/dist/Section.d.ts +2 -0
  70. package/dist/Section.js +4 -0
  71. package/dist/TabSections-oeEBx0nM.js +50 -0
  72. package/dist/TabSections.css +1 -0
  73. package/dist/TabSections.d.ts +2 -0
  74. package/dist/TabSections.js +4 -0
  75. package/dist/cx-CcykAxZN.js +6 -0
  76. package/dist/cx.d.ts +2 -0
  77. package/dist/index.css +35 -0
  78. package/dist/index.d.ts +39 -0
  79. package/dist/index.es.js +47 -0
  80. package/dist/lazyRoute.d.ts +10 -0
  81. package/dist/stackGap-CDsjER0g.js +7 -0
  82. package/dist/stackGap.d.ts +3 -0
  83. package/package.json +95 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MaSkal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,352 @@
1
+ # @elcrm/components
2
+
3
+ Shell UI для elCRM: `Layout`, `Header`, `Section`, `NavSections`, `TabSections`, `Row`, `Column` и др.
4
+
5
+ Стили — CSS Modules с короткими уникальными классами; значения токенов задаёт приложение (`theme-dark.css` / `theme-light.css`). Fallback в пакете нет.
6
+
7
+ ## Установка
8
+
9
+ ```bash
10
+ bun i @elcrm/components
11
+ ```
12
+
13
+ ```ts
14
+ import {
15
+ Layout,
16
+ Header,
17
+ Footer,
18
+ List,
19
+ Item,
20
+ Card,
21
+ Block,
22
+ Row,
23
+ Column,
24
+ Menu,
25
+ Loading,
26
+ Section,
27
+ NavSections,
28
+ TabSections,
29
+ Avatar,
30
+ Badge,
31
+ Brand,
32
+ EmptyState,
33
+ createLazyResolver,
34
+ } from "@elcrm/components";
35
+ // CSS подтягивается с чанками; при необходимости единый файл:
36
+ // import "@elcrm/components/style.css";
37
+ ```
38
+
39
+ Точечный импорт:
40
+
41
+ ```ts
42
+ import { Header } from "@elcrm/components/Header";
43
+ import { Avatar } from "@elcrm/components/Avatar";
44
+ ```
45
+
46
+ ## Компоненты
47
+
48
+ | | Назначение | Ключевые props |
49
+ | -------------------------------- | -------------------------------- | ---------------------------------------------------- |
50
+ | **Layout** | Оболочка страницы | `header`, `footer`, `children` |
51
+ | **Header** | Шапка со слотами | `brand`, `nav`, `search`, `actions` |
52
+ | **Footer** | Подвал | `children` |
53
+ | **Brand** | Название / логотип | `as`, `children`, `onClick` |
54
+ | **Avatar** | Фото или инициалы | `src`, `name`, `size`, `active`, `as` |
55
+ | **Badge** | Метка / статус | `tone`, `children` |
56
+ | **Menu** | Навигация (не overlay) | `items`, `activeKey`, `vertical`, `onSelect` |
57
+ | **Section** | Блок страницы / auth / подраздел | `title`, `description`, `icon`, `actions`, `variant` |
58
+ | **NavSections** | Сайдбар + lazy-панель | `groups`, `resolveSection`, `defaultActiveKey` |
59
+ | **TabSections** | Горизонтальные вкладки + lazy | `items` (+ `badge`), `resolveSection` |
60
+ | **Card** | Карточка | `title`, `children` |
61
+ | **List** / **Item** | Список и строка | List: `row`; Item: `as`, `active` |
62
+ | **Block** / **Row** / **Column** | Стеки | `gap`; Block ещё `row` |
63
+ | **Loading** | Плейсхолдер загрузки | `children` |
64
+ | **EmptyState** | Заглушка «нет данных» | `title`, `description`, `icon`, `actions` |
65
+ | **createLazyResolver** | Кэш `import()` секций | `(key) => import(…)` |
66
+
67
+ Слоты `Header` заполняет приложение: поиск — `@elcrm/search`, кнопки — `@elcrm/button`, и т.д.
68
+
69
+ ## Пример
70
+
71
+ ```tsx
72
+ <Layout
73
+ header={
74
+ <Header
75
+ brand={<Brand onClick={() => {}}>App</Brand>}
76
+ nav={<Menu items={[{ key: "home", label: "Главная", active: true }]} />}
77
+ actions={
78
+ <>
79
+ <Avatar as="button" name="Admin" />
80
+ <button type="button">Выйти</button>
81
+ </>
82
+ }
83
+ />
84
+ }
85
+ footer={<Footer>© elCRM</Footer>}>
86
+ <Section title="Профиль" description="Данные аккаунта">
87
+ <Card>
88
+ <List>
89
+ <li>
90
+ <Item as="li">Строка</Item>
91
+ </li>
92
+ </List>
93
+ </Card>
94
+ </Section>
95
+ </Layout>;
96
+
97
+ {
98
+ /* Экран входа */
99
+ }
100
+ <Section
101
+ variant="auth"
102
+ title="Вход"
103
+ description="Демо: admin / admin"
104
+ actions={<button type="button">Войти</button>}>
105
+ {/* поля формы */}
106
+ </Section>;
107
+
108
+ {
109
+ /* Настройки: меню слева + sections/*.tsx справа */
110
+ }
111
+ const resolve = createLazyResolver((key) => import(`./sections/${key}.tsx`));
112
+
113
+ <NavSections
114
+ defaultActiveKey="Profile"
115
+ resolveSection={resolve}
116
+ groups={[
117
+ {
118
+ label: "Личное",
119
+ items: [
120
+ { key: "Profile", label: "Профиль" },
121
+ { key: "Appearance", label: "Оформление" },
122
+ ],
123
+ },
124
+ ]}
125
+ />;
126
+ ```
127
+
128
+ Файлы секций: `sections/Profile.tsx`, `sections/Appearance.tsx` — `export default`.
129
+
130
+ Горизонтальные вкладки (без своего заголовка — используйте `Section`):
131
+
132
+ ```tsx
133
+ <Section title="Дети" description="Список">
134
+ <TabSections
135
+ defaultActiveKey="News"
136
+ resolveSection={createLazyResolver((k) => import(`./sections/${k}.tsx`))}
137
+ items={[
138
+ { key: "News", label: "Новые", badge: 1 },
139
+ { key: "Active", label: "Активные" },
140
+ ]}
141
+ />
142
+ </Section>
143
+ ```
144
+
145
+ ## CSS-токены
146
+
147
+ Тема приложения объявляет **все** переменные (fallback в пакете нет).
148
+ Эталон: panel `theme.css` (геометрия) + `theme-light` / `theme-dark` (цвета).
149
+
150
+ **layout** · Loading
151
+
152
+ ```
153
+ --layout-background
154
+ --layout-gap
155
+ --layout-min-height
156
+ --loading-color
157
+ --loading-padding
158
+ ```
159
+
160
+ **header**
161
+
162
+ ```
163
+ --header-background
164
+ --header-border
165
+ --header-color
166
+ --header-gap
167
+ --header-height
168
+ --header-margin
169
+ --header-padding
170
+ --header-radius
171
+ --header-shadow
172
+ --header-z
173
+ ```
174
+
175
+ **footer**
176
+
177
+ ```
178
+ --footer-background
179
+ --footer-border
180
+ --footer-color
181
+ --footer-font-size
182
+ --footer-padding
183
+ ```
184
+
185
+ **list** · Item
186
+
187
+ ```
188
+ --list-gap
189
+ --list-padding
190
+ --item-background
191
+ --item-background-active
192
+ --item-background-hover
193
+ --item-border
194
+ --item-color
195
+ --item-gap
196
+ --item-padding
197
+ --item-radius
198
+ ```
199
+
200
+ **card** · Block · Row · Column
201
+
202
+ ```
203
+ --card-background
204
+ --card-border
205
+ --card-padding
206
+ --card-radius
207
+ --card-shadow
208
+ --block-gap
209
+ --block-padding
210
+ --row-gap
211
+ --column-gap
212
+ ```
213
+
214
+ **menu**
215
+
216
+ ```
217
+ --menu-gap
218
+ --menu-item-background
219
+ --menu-item-background-active
220
+ --menu-item-background-hover
221
+ --menu-item-color
222
+ --menu-item-color-active
223
+ --menu-item-padding
224
+ --menu-item-radius
225
+ ```
226
+
227
+ **section**
228
+
229
+ ```
230
+ --section-padding
231
+ --section-gap
232
+ --section-title-color
233
+ --section-title-size
234
+ --section-title-size-md
235
+ --section-description-color
236
+ --section-description-size
237
+ --section-icon-gap
238
+ --section-body-gap
239
+ --section-actions-gap
240
+ --section-auth-padding
241
+ --section-auth-card-background
242
+ --section-auth-card-border
243
+ --section-auth-card-max-width
244
+ --section-auth-card-padding
245
+ --section-auth-card-radius
246
+ --section-auth-card-shadow
247
+ --section-block-border
248
+ --section-block-margin-bottom
249
+ --section-block-padding-bottom
250
+ ```
251
+
252
+ **nav-sections**
253
+
254
+ ```
255
+ --nav-sections-padding
256
+ --nav-sections-gap
257
+ --nav-sections-nav-width
258
+ --nav-sections-main-max-width
259
+ --nav-sections-label-color
260
+ --nav-sections-item-color
261
+ --nav-sections-item-background-hover
262
+ --nav-sections-item-background-active
263
+ --nav-sections-item-padding
264
+ --nav-sections-item-radius
265
+ --nav-sections-accent
266
+ --nav-sections-icon-color
267
+ --nav-sections-group-border
268
+ --nav-sections-footer-border
269
+ ```
270
+
271
+ **tab-sections**
272
+
273
+ ```
274
+ --tab-sections-gap
275
+ --tab-sections-border
276
+ --tab-sections-color
277
+ --tab-sections-color-active
278
+ --tab-sections-accent
279
+ --tab-sections-tab-gap
280
+ --tab-sections-tab-padding
281
+ --tab-sections-badge-background
282
+ --tab-sections-badge-color
283
+ --tab-sections-badge-size
284
+ ```
285
+
286
+ **avatar**
287
+
288
+ ```
289
+ --avatar-size-s
290
+ --avatar-size-m
291
+ --avatar-size-l
292
+ --avatar-radius
293
+ --avatar-font-size-s
294
+ --avatar-font-size-m
295
+ --avatar-font-size-l
296
+ --avatar-font-weight
297
+ --avatar-background
298
+ --avatar-color
299
+ --avatar-border
300
+ --avatar-outline-active
301
+ --avatar-outline-offset
302
+ ```
303
+
304
+ **badge**
305
+
306
+ ```
307
+ --badge-padding
308
+ --badge-radius
309
+ --badge-font-size
310
+ --badge-font-weight
311
+ --badge-border
312
+ --badge-neutral-background
313
+ --badge-neutral-color
314
+ --badge-accent-background
315
+ --badge-accent-color
316
+ --badge-success-background
317
+ --badge-success-color
318
+ --badge-warning-background
319
+ --badge-warning-color
320
+ --badge-danger-background
321
+ --badge-danger-color
322
+ ```
323
+
324
+ **brand**
325
+
326
+ ```
327
+ --brand-font-weight
328
+ --brand-letter-spacing
329
+ --brand-color
330
+ --brand-color-hover
331
+ ```
332
+
333
+ **empty-state**
334
+
335
+ ```
336
+ --empty-state-gap
337
+ --empty-state-padding
338
+ --empty-state-icon-gap
339
+ --empty-state-title-size
340
+ --empty-state-description-size
341
+ --empty-state-max-width
342
+ --empty-state-actions-gap
343
+ --empty-state-actions-margin-top
344
+ --empty-state-color
345
+ --empty-state-icon-color
346
+ --empty-state-title-color
347
+ --empty-state-description-color
348
+ ```
349
+
350
+ ## Лицензия
351
+
352
+ MIT © MaSkal
@@ -0,0 +1,64 @@
1
+ import c from "react";
2
+ import { c as b } from "./cx-CcykAxZN.js";
3
+ import './Avatar.css';const g = "car", N = "cas", E = "cam", C = "cal", h = "caa", x = "cai", e = {
4
+ r: g,
5
+ s: N,
6
+ m: E,
7
+ l: C,
8
+ a: h,
9
+ i: x
10
+ };
11
+ function z(n) {
12
+ const a = n.trim();
13
+ if (!a) return "?";
14
+ const s = a.split(/\s+/).filter(Boolean);
15
+ return s.length >= 2 ? (s[0][0] + s[1][0]).toUpperCase() : a.slice(0, 2).toUpperCase();
16
+ }
17
+ function y(n) {
18
+ const {
19
+ src: a,
20
+ alt: s,
21
+ name: l,
22
+ size: u = "m",
23
+ active: r,
24
+ children: p,
25
+ className: v,
26
+ as: d = "span",
27
+ ...i
28
+ } = n, f = u === "s" ? e.s : u === "l" ? e.l : e.m, o = b(e.r, f, r && e.a, v), t = s ?? l, m = a != null && a !== "" ? /* @__PURE__ */ c.createElement("img", { className: e.i, src: a, alt: t ?? "", draggable: !1 }) : p ?? (l != null ? z(l) : "?");
29
+ return d === "button" ? /* @__PURE__ */ c.createElement(
30
+ "button",
31
+ {
32
+ type: "button",
33
+ className: o,
34
+ "aria-label": t,
35
+ "data-active": r ? "true" : void 0,
36
+ ...i
37
+ },
38
+ m
39
+ ) : d === "div" ? /* @__PURE__ */ c.createElement(
40
+ "div",
41
+ {
42
+ className: o,
43
+ role: t ? "img" : void 0,
44
+ "aria-label": t,
45
+ "data-active": r ? "true" : void 0,
46
+ ...i
47
+ },
48
+ m
49
+ ) : /* @__PURE__ */ c.createElement(
50
+ "span",
51
+ {
52
+ className: o,
53
+ role: t ? "img" : void 0,
54
+ "aria-label": t,
55
+ "data-active": r ? "true" : void 0,
56
+ ...i
57
+ },
58
+ m
59
+ );
60
+ }
61
+ export {
62
+ y as A,
63
+ z as i
64
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.car{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;border-radius:var(--avatar-radius);border:var(--avatar-border);background:var(--avatar-background);color:var(--avatar-color);font-weight:var(--avatar-font-weight);line-height:1;-webkit-user-select:none;user-select:none;vertical-align:middle}.car:is(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;font:inherit;font-weight:var(--avatar-font-weight);cursor:pointer}.cas{width:var(--avatar-size-s);height:var(--avatar-size-s);font-size:var(--avatar-font-size-s)}.cam{width:var(--avatar-size-m);height:var(--avatar-size-m);font-size:var(--avatar-font-size-m)}.cal{width:var(--avatar-size-l);height:var(--avatar-size-l);font-size:var(--avatar-font-size-l)}.caa,.car[data-active=true]{outline:var(--avatar-outline-active);outline-offset:var(--avatar-outline-offset)}.cai{width:100%;height:100%;object-fit:cover;display:block}}
@@ -0,0 +1,2 @@
1
+ export * from './Avatar/index'
2
+ export {}
package/dist/Avatar.js ADDED
@@ -0,0 +1,5 @@
1
+ import { A as r, i as m } from "./Avatar-DHNPaIjZ.js";
2
+ export {
3
+ r as Avatar,
4
+ m as initialsFromName
5
+ };
@@ -0,0 +1,22 @@
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
+ };
package/dist/Badge.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cjr{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:var(--badge-padding);border-radius:var(--badge-radius);border:var(--badge-border);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);line-height:1;white-space:nowrap}.cjn{background:var(--badge-neutral-background);color:var(--badge-neutral-color)}.cja{background:var(--badge-accent-background);color:var(--badge-accent-color)}.cju{background:var(--badge-success-background);color:var(--badge-success-color)}.cjw{background:var(--badge-warning-background);color:var(--badge-warning-color)}.cjd{background:var(--badge-danger-background);color:var(--badge-danger-color)}}
@@ -0,0 +1,2 @@
1
+ export * from './Badge/index'
2
+ export {}
package/dist/Badge.js ADDED
@@ -0,0 +1,4 @@
1
+ import { B as o } from "./Badge-l6nUkl-H.js";
2
+ export {
3
+ o as Badge
4
+ };
@@ -0,0 +1,28 @@
1
+ import m from "react";
2
+ import { c as n } from "./cx-CcykAxZN.js";
3
+ import { s as i } from "./stackGap-CDsjER0g.js";
4
+ import './Block.css';const l = "cbr", p = "cbh", t = {
5
+ r: l,
6
+ h: p
7
+ };
8
+ function k({
9
+ row: r,
10
+ gap: c,
11
+ children: o,
12
+ className: s,
13
+ style: e,
14
+ ...a
15
+ }) {
16
+ return /* @__PURE__ */ m.createElement(
17
+ "div",
18
+ {
19
+ className: n(t.r, r && t.h, s),
20
+ style: { ...i(c), ...e },
21
+ ...a
22
+ },
23
+ o
24
+ );
25
+ }
26
+ export {
27
+ k as B
28
+ };
package/dist/Block.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cbr{display:flex;flex-direction:column;gap:var(--block-gap);padding:var(--block-padding)}.cbh{flex-direction:row;flex-wrap:wrap;align-items:center}}
@@ -0,0 +1,2 @@
1
+ export * from './Block/index'
2
+ export {}
package/dist/Block.js ADDED
@@ -0,0 +1,4 @@
1
+ import { B } from "./Block-CVKukh1e.js";
2
+ export {
3
+ B as Block
4
+ };
@@ -0,0 +1,34 @@
1
+ import n from "react";
2
+ import { c as o } from "./cx-CcykAxZN.js";
3
+ import './Brand.css';const m = "cnr", l = {
4
+ r: m
5
+ };
6
+ function f(a) {
7
+ const { as: s = "button", children: t, className: c, ...e } = a, r = o(l.r, c);
8
+ return s === "a" ? /* @__PURE__ */ n.createElement(
9
+ "a",
10
+ {
11
+ className: r,
12
+ ...e
13
+ },
14
+ t
15
+ ) : s === "strong" ? /* @__PURE__ */ n.createElement(
16
+ "strong",
17
+ {
18
+ className: r,
19
+ ...e
20
+ },
21
+ t
22
+ ) : /* @__PURE__ */ n.createElement(
23
+ "button",
24
+ {
25
+ type: "button",
26
+ className: r,
27
+ ...e
28
+ },
29
+ t
30
+ );
31
+ }
32
+ export {
33
+ f as B
34
+ };
package/dist/Brand.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cnr{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:0;background:transparent;font:inherit;font-weight:var(--brand-font-weight);letter-spacing:var(--brand-letter-spacing);color:var(--brand-color);white-space:nowrap;cursor:pointer;text-decoration:none}.cnr:hover{color:var(--brand-color-hover)}}
@@ -0,0 +1,2 @@
1
+ export * from './Brand/index'
2
+ export {}
package/dist/Brand.js ADDED
@@ -0,0 +1,4 @@
1
+ import { B as o } from "./Brand-Zq-Idks4.js";
2
+ export {
3
+ o as Brand
4
+ };
@@ -0,0 +1,12 @@
1
+ import r from "react";
2
+ import { c as s } from "./cx-CcykAxZN.js";
3
+ import './Card.css';const o = "cdr", m = "cdt", c = {
4
+ r: o,
5
+ t: m
6
+ };
7
+ function i({ title: t, children: e, className: a, ...n }) {
8
+ return /* @__PURE__ */ r.createElement("div", { className: s(c.r, a), ...n }, t != null ? /* @__PURE__ */ r.createElement("div", { className: c.t }, t) : null, e);
9
+ }
10
+ export {
11
+ i as C
12
+ };
package/dist/Card.css ADDED
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cdr{background:var(--card-background);border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);box-shadow:var(--card-shadow)}.cdt{margin:0 0 .5rem;font-size:1.125rem;font-weight:600}}
package/dist/Card.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './Card/index'
2
+ export {}
package/dist/Card.js ADDED
@@ -0,0 +1,4 @@
1
+ import { C as o } from "./Card-hn37Opo3.js";
2
+ export {
3
+ o as Card
4
+ };
@@ -0,0 +1,26 @@
1
+ import e from "react";
2
+ import { c as a } from "./cx-CcykAxZN.js";
3
+ import { s as m } from "./stackGap-CDsjER0g.js";
4
+ import './Column.css';const n = "cor", i = {
5
+ r: n
6
+ };
7
+ function u({
8
+ gap: r,
9
+ children: t,
10
+ className: o,
11
+ style: s,
12
+ ...c
13
+ }) {
14
+ return /* @__PURE__ */ e.createElement(
15
+ "div",
16
+ {
17
+ className: a(i.r, o),
18
+ style: { ...m(r), ...s },
19
+ ...c
20
+ },
21
+ t
22
+ );
23
+ }
24
+ export {
25
+ u as C
26
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cor{display:flex;flex-direction:column;gap:var(--column-gap)}}
@@ -0,0 +1,2 @@
1
+ export * from './Column/index'
2
+ export {}
package/dist/Column.js ADDED
@@ -0,0 +1,4 @@
1
+ import { C as r } from "./Column-DlNrvFq1.js";
2
+ export {
3
+ r as Column
4
+ };
@@ -0,0 +1,23 @@
1
+ import e from "react";
2
+ import { c as u } from "./cx-CcykAxZN.js";
3
+ import './EmptyState.css';const o = "cpr", p = "cpi", E = "cpt", d = "cpd", i = "cpa", t = {
4
+ r: o,
5
+ i: p,
6
+ t: E,
7
+ d,
8
+ a: i
9
+ };
10
+ function v({
11
+ title: l,
12
+ description: a,
13
+ icon: c,
14
+ actions: n,
15
+ children: s,
16
+ className: r,
17
+ ...m
18
+ }) {
19
+ return /* @__PURE__ */ e.createElement("div", { className: u(t.r, r), role: "status", ...m }, c != null ? /* @__PURE__ */ e.createElement("div", { className: t.i }, c) : null, l != null ? /* @__PURE__ */ e.createElement("h3", { className: t.t }, l) : null, a != null ? /* @__PURE__ */ e.createElement("p", { className: t.d }, a) : null, s, n != null ? /* @__PURE__ */ e.createElement("div", { className: t.a }, n) : null);
20
+ }
21
+ export {
22
+ v as E
23
+ };
@@ -0,0 +1 @@
1
+ @layer elcrm-components{.cpr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--empty-state-gap);padding:var(--empty-state-padding);text-align:center;color:var(--empty-state-color)}.cpi{display:flex;margin-bottom:var(--empty-state-icon-gap);color:var(--empty-state-icon-color)}.cpt{margin:0;font-size:var(--empty-state-title-size);font-weight:600;color:var(--empty-state-title-color);line-height:1.3}.cpd{margin:0;max-width:var(--empty-state-max-width);font-size:var(--empty-state-description-size);color:var(--empty-state-description-color);line-height:1.45}.cpa{display:flex;flex-wrap:wrap;gap:var(--empty-state-actions-gap);justify-content:center;margin-top:var(--empty-state-actions-margin-top)}}
@@ -0,0 +1,2 @@
1
+ export * from './EmptyState/index'
2
+ export {}
@@ -0,0 +1,4 @@
1
+ import { E as e } from "./EmptyState-mBiWtMIM.js";
2
+ export {
3
+ e as EmptyState
4
+ };