elcrm 1.1.22 → 1.1.24
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/package.json
CHANGED
|
@@ -31,7 +31,8 @@ import type { PricingPlan, HealthmapData } from "@elcrm/components";
|
|
|
31
31
|
- **PageHead** — title + actions. `sup` — текст или Badge сразу после title (надстрочно; `0` скрыт). `sticky` — шапка прилипает к верху скролла (фон `--shell-bg`). `children` — фильтры/поиск под заголовком, отступ `--shell-gap`.
|
|
32
32
|
- **Section** — блок контента / auth.
|
|
33
33
|
- **Layout / Header** — оболочка приложения. `Layout sidebar={<Sidebar />}` — ряд: меню слева + контент. `fixed={["header", "footer", "sidebar"]}` (по умолчанию) — эти слоты не скроллятся, крутится только `children`. `fixed={[]}` — поток страницы. Высота каркаса: `--layout-height` (`100dvh`).
|
|
34
|
-
- **Sidebar** — левое меню. `variant="cards"` (карточки) или `"plain"` (плоский backoffice). `groups` + `value`.
|
|
34
|
+
- **Sidebar** — левое меню. `variant="cards"` (карточки) или `"plain"` (плоский backoffice). `groups` + `value`. Подменю: у пункта `items` + `defaultOpen` (открыто/скрыто при старте). Контроль: `open` / `onOpenChange` (массив `value` родителей). Клик по родителю только раскрывает; `onSelect` — у листьев. Если выбран потомок — ветка открывается. Слоты: `brand`, `extra`, `footer`. Меню аккаунта: `footerItems` + `onFooterSelect`. Отступ вложенных: `--sidebar-indent`.
|
|
35
|
+
- **NavSections** — сайдбар страницы + lazy-панель. Подменю как у Sidebar: `items` + `defaultOpen`, `open` / `onOpenChange`. Панель грузится по `value` листа (`resolveSection`). Клик по родителю только раскрывает.
|
|
35
36
|
- **Stack** — ряд/колонка/сетка (`direction="row"|"column"|"grid"`). Не `Block` / `Row` / `Column`. Сетка: `auto-fit` + `--stack-grid-min`, либо `columns={4}` / `columns={["1fr", "100px", "auto"]}`. С `columns` ряды `stretch` (карточки не наезжают); в одну линию — `style={{ alignItems: "center" }}`. Не `height: 100%` у детей сетки.
|
|
36
37
|
- **Card** — курсор: `--card-pointer` (`auto` / `pointer`). Сетка Stack: `--stack-grid-min`.
|
|
37
38
|
- **Stat** — метрика: `label` + `value`, `tone` как у Badge, `labelMuted`. Не собирать из `span` в приложении.
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
function EditModal({ id, onClose }: { id: number; onClose?: () => void }) {
|
|
11
11
|
return (
|
|
12
12
|
<Modal.Main title="Редактирование" onClose={onClose} size="m">
|
|
13
|
-
|
|
13
|
+
{/* scroll + padding по умолчанию — без Modal.Scroll */}
|
|
14
|
+
<p>…</p>
|
|
14
15
|
</Modal.Main>
|
|
15
16
|
);
|
|
16
17
|
}
|
|
@@ -25,12 +26,30 @@ Open({ id: 123 });
|
|
|
25
26
|
|
|
26
27
|
| API | Зачем |
|
|
27
28
|
| --- | --- |
|
|
28
|
-
| `Modal.Main` | окно + оверлей: `title`, `size`, `button`, `tabs`, `menu`, `shake`, `escape
|
|
29
|
-
| `Modal.Panel` | без оверлея |
|
|
30
|
-
| `Modal.Scroll`
|
|
29
|
+
| `Modal.Main` | окно + оверлей: `title`, `size`, `button`, `tabs`, `menu`, `shake`, `escape`, **`scroll`**, **`padding`** |
|
|
30
|
+
| `Modal.Panel` | без оверлея (те же props) |
|
|
31
|
+
| `Modal.Scroll` | редко: сырой layout или `padding={false}` внутри |
|
|
32
|
+
| `Center` / `Form` / `Column` / `List` | раскладка |
|
|
31
33
|
| `Modal.Close(name?)` | одно или все |
|
|
32
34
|
| `Modal.Shake` | тряска |
|
|
33
35
|
|
|
36
|
+
### Отступы (по умолчанию уже есть)
|
|
37
|
+
|
|
38
|
+
Один токен **`--modal-padding`** (default `30px`) — шапка, тело, футер, Form, List.
|
|
39
|
+
|
|
40
|
+
| Как | Пример |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| Тема на всё приложение | `--modal-padding: 24px` в `theme-*.css` |
|
|
43
|
+
| Одно окно | `<Modal.Main padding="20px">` |
|
|
44
|
+
| Без отступов тела | `padding={false}` |
|
|
45
|
+
| Выключить авто-Scroll | `scroll={false}` |
|
|
46
|
+
|
|
47
|
+
`Modal.Main` / `Panel` сами оборачивают children в `Modal.Scroll` с отступами.
|
|
48
|
+
|
|
49
|
+
- Обычный контент — **не** пишите `Modal.Scroll`.
|
|
50
|
+
- Единственный `Modal.List` или `Modal.Form` — без внешнего Scroll (свои отступы через тот же токен).
|
|
51
|
+
- Если единственный ребёнок уже `Modal.Scroll` — второй раз не оборачиваем.
|
|
52
|
+
|
|
34
53
|
`size`: `a` auto · `s` 400 · `m` 500 · `l` 800 · `x` 1000 · `f` full · `p` page (весь экран поверх страницы).
|
|
35
54
|
`escape` закрывает верхнее; клик по оверлею при `shake` (default true) трясёт, не закрывает; крестик закрывает всегда. Для `size="p"` обычно `shake={false}`.
|
|
36
55
|
|
|
@@ -58,3 +77,4 @@ Card.Open({ id: 1 }, { origin: event.currentTarget });
|
|
|
58
77
|
- `key={Date.now()}` на модалке.
|
|
59
78
|
- Без `Modal.Init`.
|
|
60
79
|
- Нативные input внутри модалки — `@elcrm/form`.
|
|
80
|
+
- Ручные `padding: 0` / пустой layout «в край» без нужды — дефолт уже с отступами.
|
|
@@ -16,9 +16,21 @@ import { Tooltip } from "@elcrm/tooltip";
|
|
|
16
16
|
|
|
17
17
|
- `placement`: `top` \| `bottom` \| `left` \| `right` (не `orientation` — deprecated).
|
|
18
18
|
- `delay` / `delayHide`, `disabled`, `textAlign`, `open` (отладка).
|
|
19
|
-
- Токены `--tooltip-*` в
|
|
19
|
+
- Токены `--tooltip-*` в теме (см. ниже).
|
|
20
20
|
- z-index сам: `acquireOverlayZIndex` вручную не нужен.
|
|
21
21
|
|
|
22
|
+
## Токены темы
|
|
23
|
+
|
|
24
|
+
Геометрия в `theme.css`: `--tooltip-radius`, `--tooltip-max-width`, `--tooltip-font-size`, `--tooltip-padding`, `--tooltip-gap`.
|
|
25
|
+
|
|
26
|
+
Цвета в `theme-light.css` / `theme-dark.css`:
|
|
27
|
+
|
|
28
|
+
- `--tooltip-bg` — фон пузыря **и стрелки**
|
|
29
|
+
- `--tooltip-fg` — текст
|
|
30
|
+
- `--tooltip-shadow`
|
|
31
|
+
|
|
32
|
+
Пакет читает именно `bg` / `fg`. Имена `--tooltip-background` и `--tooltip-color` не работают.
|
|
33
|
+
|
|
22
34
|
## Нельзя
|
|
23
35
|
|
|
24
36
|
- Атрибут `title` на контролах UI как единственная подсказка.
|
|
@@ -125,14 +125,14 @@
|
|
|
125
125
|
--dropdown-max-height: 20rem;
|
|
126
126
|
|
|
127
127
|
/* —— tooltip (@elcrm/tooltip: геометрия без цвета) —— */
|
|
128
|
-
--tooltip-radius:
|
|
128
|
+
--tooltip-radius: 8px;
|
|
129
129
|
--tooltip-max-width: 280px;
|
|
130
130
|
--tooltip-font-size: 13px;
|
|
131
|
-
--tooltip-padding:
|
|
132
|
-
--tooltip-
|
|
133
|
-
--tooltip-
|
|
134
|
-
--tooltip-
|
|
135
|
-
--tooltip-arrow-
|
|
131
|
+
--tooltip-padding-block: 6px;
|
|
132
|
+
--tooltip-padding-inline: 12px;
|
|
133
|
+
--tooltip-padding: var(--tooltip-padding-block) var(--tooltip-padding-inline);
|
|
134
|
+
--tooltip-gap: 10px;
|
|
135
|
+
--tooltip-arrow-offset: 0px;
|
|
136
136
|
|
|
137
137
|
--card-pointer: auto;
|
|
138
138
|
--stack-grid-min: 180px;
|
|
@@ -154,6 +154,7 @@
|
|
|
154
154
|
--sidebar-item-padding: 6px 10px;
|
|
155
155
|
--sidebar-icon-size: 16px;
|
|
156
156
|
--sidebar-group-font-size: 11px;
|
|
157
|
+
--sidebar-indent: 14px;
|
|
157
158
|
--pricing-card-min-width: 16rem;
|
|
158
159
|
--pricing-table-label-width: 10rem;
|
|
159
160
|
--chat-list-width: 340px;
|