@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.
- package/LICENSE +21 -0
- package/README.md +352 -0
- package/dist/Avatar-DHNPaIjZ.js +64 -0
- package/dist/Avatar.css +1 -0
- package/dist/Avatar.d.ts +2 -0
- package/dist/Avatar.js +5 -0
- package/dist/Badge-l6nUkl-H.js +22 -0
- package/dist/Badge.css +1 -0
- package/dist/Badge.d.ts +2 -0
- package/dist/Badge.js +4 -0
- package/dist/Block-CVKukh1e.js +28 -0
- package/dist/Block.css +1 -0
- package/dist/Block.d.ts +2 -0
- package/dist/Block.js +4 -0
- package/dist/Brand-Zq-Idks4.js +34 -0
- package/dist/Brand.css +1 -0
- package/dist/Brand.d.ts +2 -0
- package/dist/Brand.js +4 -0
- package/dist/Card-hn37Opo3.js +12 -0
- package/dist/Card.css +1 -0
- package/dist/Card.d.ts +2 -0
- package/dist/Card.js +4 -0
- package/dist/Column-DlNrvFq1.js +26 -0
- package/dist/Column.css +1 -0
- package/dist/Column.d.ts +2 -0
- package/dist/Column.js +4 -0
- package/dist/EmptyState-mBiWtMIM.js +23 -0
- package/dist/EmptyState.css +1 -0
- package/dist/EmptyState.d.ts +2 -0
- package/dist/EmptyState.js +4 -0
- package/dist/Footer-qxUlnPR9.js +11 -0
- package/dist/Footer.css +1 -0
- package/dist/Footer.d.ts +2 -0
- package/dist/Footer.js +4 -0
- package/dist/Header-Cf28eyjW.js +23 -0
- package/dist/Header.css +1 -0
- package/dist/Header.d.ts +2 -0
- package/dist/Header.js +4 -0
- package/dist/Item-CaU4RW2G.js +38 -0
- package/dist/Item.css +1 -0
- package/dist/Item.d.ts +2 -0
- package/dist/Item.js +4 -0
- package/dist/Layout-Xb3-xsmA.js +18 -0
- package/dist/Layout.css +1 -0
- package/dist/Layout.d.ts +2 -0
- package/dist/Layout.js +4 -0
- package/dist/List-BgKkYaGO.js +12 -0
- package/dist/List.css +1 -0
- package/dist/List.d.ts +2 -0
- package/dist/List.js +4 -0
- package/dist/Loading-ChGq9peU.js +15 -0
- package/dist/Loading.css +1 -0
- package/dist/Loading.d.ts +2 -0
- package/dist/Loading.js +4 -0
- package/dist/Menu-DS7zKQbY.js +40 -0
- package/dist/Menu.css +1 -0
- package/dist/Menu.d.ts +2 -0
- package/dist/Menu.js +4 -0
- package/dist/NavSections-CM-VPai2.js +59 -0
- package/dist/NavSections.css +1 -0
- package/dist/NavSections.d.ts +2 -0
- package/dist/NavSections.js +4 -0
- package/dist/Row-CnD7Q7pD.js +20 -0
- package/dist/Row.css +1 -0
- package/dist/Row.d.ts +2 -0
- package/dist/Row.js +4 -0
- package/dist/Section-Crxk2J-E.js +34 -0
- package/dist/Section.css +1 -0
- package/dist/Section.d.ts +2 -0
- package/dist/Section.js +4 -0
- package/dist/TabSections-oeEBx0nM.js +50 -0
- package/dist/TabSections.css +1 -0
- package/dist/TabSections.d.ts +2 -0
- package/dist/TabSections.js +4 -0
- package/dist/cx-CcykAxZN.js +6 -0
- package/dist/cx.d.ts +2 -0
- package/dist/index.css +35 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.es.js +47 -0
- package/dist/lazyRoute.d.ts +10 -0
- package/dist/stackGap-CDsjER0g.js +7 -0
- package/dist/stackGap.d.ts +3 -0
- 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
|
+
};
|
package/dist/Avatar.css
ADDED
|
@@ -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}}
|
package/dist/Avatar.d.ts
ADDED
package/dist/Avatar.js
ADDED
|
@@ -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)}}
|
package/dist/Badge.d.ts
ADDED
package/dist/Badge.js
ADDED
|
@@ -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}}
|
package/dist/Block.d.ts
ADDED
package/dist/Block.js
ADDED
|
@@ -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)}}
|
package/dist/Brand.d.ts
ADDED
package/dist/Brand.js
ADDED
|
@@ -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
package/dist/Card.js
ADDED
|
@@ -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
|
+
};
|
package/dist/Column.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer elcrm-components{.cor{display:flex;flex-direction:column;gap:var(--column-gap)}}
|
package/dist/Column.d.ts
ADDED
package/dist/Column.js
ADDED
|
@@ -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)}}
|