elcrm 1.1.36 → 1.1.39
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/README.md +1 -0
- package/dist/index.js +503 -137
- package/dist/vite/check-tokens.js +2 -2
- package/package.json +1 -1
- package/templates/elcrm-cursor/rules/elcrm-lib.mdc +9 -0
- package/templates/elcrm-cursor/rules/elcrm-packages.mdc +2 -0
- package/templates/elcrm-docs/ALERT.elCRM.md +26 -0
- package/templates/elcrm-docs/API.elCRM.md +7 -0
- package/templates/elcrm-docs/BUTTON.elCRM.md +7 -0
- package/templates/elcrm-docs/CLI.elCRM.md +23 -2
- package/templates/elcrm-docs/COMPONENTS.elCRM.md +216 -1
- package/templates/elcrm-docs/FORM.elCRM.md +140 -0
- package/templates/elcrm-docs/ICONS.elCRM.md +7 -0
- package/templates/elcrm-docs/MODAL.elCRM.md +7 -0
- package/templates/elcrm-docs/NOTICE.elCRM.md +73 -0
- package/templates/elcrm-docs/NOTIFICATIONS.elCRM.md +35 -0
- package/templates/elcrm-docs/PASSKEY.elCRM.md +7 -0
- package/templates/elcrm-docs/ROUTER.elCRM.md +7 -0
- package/templates/elcrm-docs/SEARCH.elCRM.md +88 -0
- package/templates/elcrm-docs/SERVER.elCRM.md +7 -0
- package/templates/elcrm-docs/SOCKET.elCRM.md +7 -0
- package/templates/elcrm-docs/TOOLTIP.elCRM.md +7 -0
- package/templates/elcrm-docs/generated/tokens.json +3429 -0
- package/templates/orbit/web/package.json +4 -2
- package/templates/orbit/web/src/style/theme.css +3 -0
- package/templates/panel/web/package.json +4 -2
- package/templates/panel/web/src/style/theme.css +3 -0
|
@@ -37,3 +37,38 @@ bindRouterNavigate((url) => { /* Router / pathname */ });
|
|
|
37
37
|
- Пакет `web-push` на сервере — `@elcrm/server/notifications`.
|
|
38
38
|
- Забывать Service Worker URL (`worker?url`).
|
|
39
39
|
- FCM/APNs SDK — этого пакета нет, свой VAPID + сервер elCRM.
|
|
40
|
+
|
|
41
|
+
<!-- elcrm-hub-tokens:start -->
|
|
42
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/notifications@0.3.3**. Не править руками.
|
|
43
|
+
|
|
44
|
+
| Токен | Слой | Значение |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| `--notifications-badge-bg` | dark | `#ef5350` |
|
|
47
|
+
| `--notifications-badge-color` | dark | `#ffffff` |
|
|
48
|
+
| `--notifications-bell-color` | dark | `currentColor` |
|
|
49
|
+
| `--notifications-bell-hover` | dark | `rgba(255, 255, 255, 0.08)` |
|
|
50
|
+
| `--notifications-bg` | dark | `rgba(36, 36, 36, 0.98)` |
|
|
51
|
+
| `--notifications-border` | dark | `rgba(255, 255, 255, 0.1)` |
|
|
52
|
+
| `--notifications-fg` | dark | `#f0f0f0` |
|
|
53
|
+
| `--notifications-item-hover` | dark | `rgba(255, 255, 255, 0.06)` |
|
|
54
|
+
| `--notifications-muted` | dark | `#a0a0a0` |
|
|
55
|
+
| `--notifications-unread-bg` | dark | `rgba(100, 181, 246, 0.12)` |
|
|
56
|
+
| `--elcrm-z-notifications` | geometry | `1100` |
|
|
57
|
+
| `--notifications-bell-radius` | geometry | `8px` |
|
|
58
|
+
| `--notifications-bell-size` | geometry | `40px` |
|
|
59
|
+
| `--notifications-family` | geometry | `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif` |
|
|
60
|
+
| `--notifications-panel-max-height` | geometry | `420px` |
|
|
61
|
+
| `--notifications-panel-width` | geometry | `min(360px, 92vw)` |
|
|
62
|
+
| `--notifications-radius` | geometry | `10px` |
|
|
63
|
+
| `--notifications-badge-bg` | light | `#c62828` |
|
|
64
|
+
| `--notifications-badge-color` | light | `#ffffff` |
|
|
65
|
+
| `--notifications-bell-color` | light | `currentColor` |
|
|
66
|
+
| `--notifications-bell-hover` | light | `rgba(0, 0, 0, 0.06)` |
|
|
67
|
+
| `--notifications-bg` | light | `rgba(255, 255, 255, 0.98)` |
|
|
68
|
+
| `--notifications-border` | light | `rgba(0, 0, 0, 0.08)` |
|
|
69
|
+
| `--notifications-fg` | light | `#1a1a1a` |
|
|
70
|
+
| `--notifications-item-hover` | light | `rgba(0, 0, 0, 0.04)` |
|
|
71
|
+
| `--notifications-muted` | light | `#666666` |
|
|
72
|
+
| `--notifications-unread-bg` | light | `rgba(25, 118, 210, 0.06)` |
|
|
73
|
+
|
|
74
|
+
<!-- elcrm-hub-tokens:end -->
|
|
@@ -26,3 +26,10 @@ await passkey.remove({ userId, credentialId });
|
|
|
26
26
|
- `createPasskey` / `authenticateWithPasskey` — **не экспортируются** (`elcrm test` error).
|
|
27
27
|
- Импорт серверного passkey на фронт.
|
|
28
28
|
- Свой fetch на `/passkey/*` в обход клиента, если нет причины.
|
|
29
|
+
|
|
30
|
+
<!-- elcrm-hub-tokens:start -->
|
|
31
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/passkey@0.2.3**. Не править руками.
|
|
32
|
+
|
|
33
|
+
_В пакете нет CSS-токенов (или только runtime var)._
|
|
34
|
+
|
|
35
|
+
<!-- elcrm-hub-tokens:end -->
|
|
@@ -36,3 +36,10 @@ Router.createRouter({
|
|
|
36
36
|
- `resolveLazyPage` и заглушка `<span aria-hidden />` «чтобы завелось».
|
|
37
37
|
- Смешивать ключи вкладок разных модулей (после смены таба откроется чужая lazy-секция).
|
|
38
38
|
- Нормализовать регистр сегментов самостоятельно, если URL-слой включён — библиотека не нижний регистр.
|
|
39
|
+
|
|
40
|
+
<!-- elcrm-hub-tokens:start -->
|
|
41
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/router@0.0.60**. Не править руками.
|
|
42
|
+
|
|
43
|
+
_В пакете нет CSS-токенов (или только runtime var)._
|
|
44
|
+
|
|
45
|
+
<!-- elcrm-hub-tokens:end -->
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<!-- Сгенерировано `elcrm docs`. Пакет: @elcrm/search. -->
|
|
2
|
+
|
|
3
|
+
# `@elcrm/search`
|
|
4
|
+
|
|
5
|
+
Поиск с выпадающим списком. Стили: `@elcrm/search/style.css` + `tokens.css` / `light.css` / `dark.css` через `elcrm css`.
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Search } from "@elcrm/search";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Токены `--search-*` подтягивает `elcrm hub collect` (таблица ниже). Не импортировать `themes.css`.
|
|
12
|
+
|
|
13
|
+
<!-- elcrm-hub-tokens:start -->
|
|
14
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/search@0.2.4**. Не править руками.
|
|
15
|
+
|
|
16
|
+
| Токен | Слой | Значение |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| `--accent` | dark | `#5b8cff` |
|
|
19
|
+
| `--field-background` | dark | `#12161e` |
|
|
20
|
+
| `--field-background-active` | dark | `var(--accent)` |
|
|
21
|
+
| `--field-background-disabled` | dark | `#1a1f29` |
|
|
22
|
+
| `--field-background-focus` | dark | `#12161e` |
|
|
23
|
+
| `--field-border` | dark | `1px solid var(--line)` |
|
|
24
|
+
| `--field-border-disabled` | dark | `var(--line)` |
|
|
25
|
+
| `--field-border-focus` | dark | `var(--accent)` |
|
|
26
|
+
| `--field-border-hover` | dark | `#3a4558` |
|
|
27
|
+
| `--field-color` | dark | `var(--text)` |
|
|
28
|
+
| `--field-color-disabled` | dark | `#5c6575` |
|
|
29
|
+
| `--field-focus-ring` | dark | `rgba(91, 140, 255, 0.28)` |
|
|
30
|
+
| `--field-focus-shadow` | dark | `0 0 0 3px var(--field-focus-ring)` |
|
|
31
|
+
| `--field-icon-color` | dark | `var(--muted)` |
|
|
32
|
+
| `--field-label-color` | dark | `var(--muted)` |
|
|
33
|
+
| `--field-placeholder` | dark | `var(--muted)` |
|
|
34
|
+
| `--line` | dark | `#2a3140` |
|
|
35
|
+
| `--muted` | dark | `#9aa3af` |
|
|
36
|
+
| `--panel` | dark | `#0c0f14` |
|
|
37
|
+
| `--popup-shadow` | dark | `0 10px 28px rgba(0, 0, 0, 0.45)` |
|
|
38
|
+
| `--select-background` | dark | `#1a1f29` |
|
|
39
|
+
| `--select-color` | dark | `var(--text)` |
|
|
40
|
+
| `--select-li-hover-bg` | dark | `rgba(255, 255, 255, 0.06)` |
|
|
41
|
+
| `--select-li-selected-bg` | dark | `rgba(91, 140, 255, 0.18)` |
|
|
42
|
+
| `--text` | dark | `#e8eaed` |
|
|
43
|
+
| `--control-font-size` | geometry | `15px` |
|
|
44
|
+
| `--control-height` | geometry | `44px` |
|
|
45
|
+
| `--control-height-l` | geometry | `48px` |
|
|
46
|
+
| `--control-height-m` | geometry | `var(--control-height)` |
|
|
47
|
+
| `--control-height-s` | geometry | `32px` |
|
|
48
|
+
| `--control-radius` | geometry | `10px` |
|
|
49
|
+
| `--elcrm-z-popover` | geometry | `1000` |
|
|
50
|
+
| `--field-height` | geometry | `var(--control-height)` |
|
|
51
|
+
| `--field-icon-gap` | geometry | `10px` |
|
|
52
|
+
| `--field-icon-size` | geometry | `20px` |
|
|
53
|
+
| `--field-padding` | geometry | `var(--field-padding-block) var(--field-padding-inline)` |
|
|
54
|
+
| `--field-padding-block` | geometry | `calc(var(--field-height) * 0.18)` |
|
|
55
|
+
| `--field-padding-inline` | geometry | `calc(var(--field-height) * 0.32)` |
|
|
56
|
+
| `--field-radius` | geometry | `var(--control-radius)` |
|
|
57
|
+
| `--field-search-expand-min` | geometry | `180px` |
|
|
58
|
+
| `--field-search-list-max-height` | geometry | `240px` |
|
|
59
|
+
| `--field-search-min-width` | geometry | `200px` |
|
|
60
|
+
| `--select-radius` | geometry | `var(--control-radius)` |
|
|
61
|
+
| `--select-separator` | geometry | `1px solid var(--line)` |
|
|
62
|
+
| `--accent` | light | `#3b6ef5` |
|
|
63
|
+
| `--field-background` | light | `#ffffff` |
|
|
64
|
+
| `--field-background-active` | light | `var(--accent)` |
|
|
65
|
+
| `--field-background-disabled` | light | `#eef1f6` |
|
|
66
|
+
| `--field-background-focus` | light | `#ffffff` |
|
|
67
|
+
| `--field-border` | light | `1px solid var(--line)` |
|
|
68
|
+
| `--field-border-disabled` | light | `var(--line)` |
|
|
69
|
+
| `--field-border-focus` | light | `var(--accent)` |
|
|
70
|
+
| `--field-border-hover` | light | `#b8c0ce` |
|
|
71
|
+
| `--field-color` | light | `var(--text)` |
|
|
72
|
+
| `--field-color-disabled` | light | `#9aa3af` |
|
|
73
|
+
| `--field-focus-ring` | light | `rgba(59, 110, 245, 0.22)` |
|
|
74
|
+
| `--field-focus-shadow` | light | `0 0 0 3px var(--field-focus-ring)` |
|
|
75
|
+
| `--field-icon-color` | light | `var(--muted)` |
|
|
76
|
+
| `--field-label-color` | light | `var(--muted)` |
|
|
77
|
+
| `--field-placeholder` | light | `var(--muted)` |
|
|
78
|
+
| `--line` | light | `#d8dee8` |
|
|
79
|
+
| `--muted` | light | `#6b7380` |
|
|
80
|
+
| `--panel` | light | `#ffffff` |
|
|
81
|
+
| `--popup-shadow` | light | `0 8px 24px rgba(15, 18, 22, 0.14)` |
|
|
82
|
+
| `--select-background` | light | `#ffffff` |
|
|
83
|
+
| `--select-color` | light | `var(--text)` |
|
|
84
|
+
| `--select-li-hover-bg` | light | `rgba(26, 31, 41, 0.05)` |
|
|
85
|
+
| `--select-li-selected-bg` | light | `rgba(59, 110, 245, 0.12)` |
|
|
86
|
+
| `--text` | light | `#1a1f29` |
|
|
87
|
+
|
|
88
|
+
<!-- elcrm-hub-tokens:end -->
|
|
@@ -53,3 +53,10 @@ Env: `TOKEN` / `JWT_SECRET`, `CORS_ORIGINS` (origins **без path**, через
|
|
|
53
53
|
Не светить `err.message` клиенту — throw даёт `{ status:"error", data:"internal" }` + 500; детали только в лог.
|
|
54
54
|
|
|
55
55
|
Структура API (panel): `src/index.ts` (createServer) · `src/routes/*.ts` (createRouter) · `src/lib/db.ts` · `jwt.ts` · `cron.ts` · `config.ts`.
|
|
56
|
+
|
|
57
|
+
<!-- elcrm-hub-tokens:start -->
|
|
58
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/server@0.6.8**. Не править руками.
|
|
59
|
+
|
|
60
|
+
_В пакете нет CSS-токенов (или только runtime var)._
|
|
61
|
+
|
|
62
|
+
<!-- elcrm-hub-tokens:end -->
|
|
@@ -32,3 +32,10 @@ React: `useConnect` из `@elcrm/socket/react` — сначала `create`/`crea
|
|
|
32
32
|
- `serverConnect` / `createWsHub` / `from "@elcrm/socket/server"` / `@elcrm/socket-server` — `elcrm migrate socket-server`.
|
|
33
33
|
- На сервере импортировать `@elcrm/socket` для hub.
|
|
34
34
|
- Другой path WS, чем у `createSocket` на API (часто `/ws`).
|
|
35
|
+
|
|
36
|
+
<!-- elcrm-hub-tokens:start -->
|
|
37
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/socket@0.6.0**. Не править руками.
|
|
38
|
+
|
|
39
|
+
_В пакете нет CSS-токенов (или только runtime var)._
|
|
40
|
+
|
|
41
|
+
<!-- elcrm-hub-tokens:end -->
|
|
@@ -35,3 +35,10 @@ import { Tooltip } from "@elcrm/tooltip";
|
|
|
35
35
|
|
|
36
36
|
- Атрибут `title` на контролах UI как единственная подсказка.
|
|
37
37
|
- Свой `z-index: 99999` на оверлеях — конфликт с modal/form/alert/notice.
|
|
38
|
+
|
|
39
|
+
<!-- elcrm-hub-tokens:start -->
|
|
40
|
+
Автотаблица: `elcrm hub collect` · **@elcrm/tooltip@0.1.4**. Не править руками.
|
|
41
|
+
|
|
42
|
+
_В пакете нет CSS-токенов (или только runtime var)._
|
|
43
|
+
|
|
44
|
+
<!-- elcrm-hub-tokens:end -->
|