elcrm 1.1.27 → 1.1.28

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/dist/index.js CHANGED
@@ -1430,6 +1430,7 @@ function syncElcrmCss(options) {
1430
1430
  skippedPkgs.push(name);
1431
1431
  allDefs.push(...defs);
1432
1432
  }
1433
+ const pkgsWithTokens = new Set(cssExports.filter((e) => e.tokens).map((e) => e.name));
1433
1434
  const added = {
1434
1435
  "theme.css": [],
1435
1436
  "theme-light.css": [],
@@ -1445,7 +1446,7 @@ function syncElcrmCss(options) {
1445
1446
  continue;
1446
1447
  let css = readFileSync7(file, "utf8");
1447
1448
  const have = existingTokenNames(css);
1448
- const missing = allDefs.filter((d) => d.bucket === bucket && !have.has(d.name) && !d.name.startsWith("--search-") && !TOKEN_DEPRECATED.has(d.name) && !isButtonShadowNoise(d.name, d.value));
1449
+ const missing = allDefs.filter((d) => d.bucket === bucket && !have.has(d.name) && !d.name.startsWith("--search-") && !TOKEN_DEPRECATED.has(d.name) && !isButtonShadowNoise(d.name, d.value) && !(bucket === "geometry" && pkgsWithTokens.has(d.pkg)));
1449
1450
  const uniq = [];
1450
1451
  const seen = new Set;
1451
1452
  for (const d of missing) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elcrm",
3
- "version": "1.1.27",
3
+ "version": "1.1.28",
4
4
  "description": "CLI @elcrm/*: doctor --fix (порядок проекта), update, css, docs, cursor, kit, migrate",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -18,7 +18,7 @@ elcrm cursor
18
18
  | # | Команда | Что делает |
19
19
  | --- | --- | --- |
20
20
  | 1 | `elcrm update --fix --test` | Обновляет глобальный `elcrm` + все `@elcrm/*` в `package.json` → install → **migrate front** (API/токены/css-sanitize) → внутри `--fix` ещё раз **sync CSS** → `elcrm test` |
21
- | 2 | `elcrm css` | Недостающие CSS-токены → `theme.css` / `theme-light` / `theme-dark`. **Не дописывает** `--button-*-shadow: none` и снимает такие строки из `theme.css`. В `elcrm.css`: **добавляет** рабочие `@import`, **удаляет битые** (нет export/файла в установленном пакете). Затем css-sanitize |
21
+ | 2 | `elcrm css` | Недостающие **цвета** → `theme-light` / `theme-dark`. Геометрию из пакетов с `tokens.css` **не** дублирует в `theme.css` (дефолты через `@import …/tokens.css`). **Не дописывает** `--button-*-shadow: none` и снимает такие строки. В `elcrm.css`: **добавляет** рабочие `@import`, **удаляет битые**. Затем css-sanitize |
22
22
  | 3 | `elcrm docs` | Перезаписывает `docs/*.elCRM.md` (шпаргалки пакетов) |
23
23
  | 4 | `elcrm cursor` | `.cursor/rules` + `.cursor/docs` + `AGENTS.md` для агента |
24
24
 
@@ -17,7 +17,7 @@ import {
17
17
  Card, Stat, ActionGroup, Toolbar, TextGroup, ItemColumn, List, Item, PageHead, PageShell, ChatList, ChatMessages, ChatSplit, Sidebar, Popover,
18
18
  Healthmap, PanelInfo,
19
19
  Loading, EmptyState, RadioGroup, PricingGroup, PricingTable,
20
- Table, CodeBlock, SplitPane, Banner, IconButton,
20
+ Table, CodeBlock, SplitPane, Banner, IconButton, Text,
21
21
  createLazyResolver,
22
22
  } from "@elcrm/components";
23
23
  import type { PricingPlan, HealthmapData } from "@elcrm/components";
@@ -42,6 +42,9 @@ import type { PricingPlan, HealthmapData } from "@elcrm/components";
42
42
  - **ActionGroup** — ряд иконок в карточке / строке: `label` + `items` и/или `children`. Кнопки — `@elcrm/button`.
43
43
  - **Toolbar** — фильтры над списком. `size` (`s`/`m`/`l`, по умолчанию `s`) наследуют вложенные `*Field`, `Search`, `Button`, `Dropdown` (свой `size` важнее). `align`: `start` / `center` / `end` / `between`. `width`: `l` (100%, по умолчанию) или `s` (по контенту, не растягивать). Токены `--toolbar-gap`. Не `ActionGroup`.
44
44
  - **TextGroup** — две строки: `title` + `description` (без аватара; с аватаром — AvatarName).
45
+ - **Text** — короткий текст. `tone="muted"` → `--shell-color-muted`. `as` — тег (`p`/`span`/…). Не `className="muted"` в приложении.
46
+ - **Loading** — индикатор ожидания. Мин. высота: `--loading-min-height` (`min(50vh, 24rem)`).
47
+ - **EmptyState** — заглушка / ошибка страницы. `--empty-max-width`, `--empty-padding`.
45
48
  - **Item** — строка списка. `as` button/a/li, `active`. `variant="card"` — рамка и muted-фон (идеи / тикеты / inbox). Не дублировать `.desk-row` в приложении.
46
49
  - **ItemColumn** — внутри Item: `icon` слева, столбик `title` / `description` / `footer` или `meta`, `extra` — бейджи справа сверху, `aside` — колонка справа. `unread` — жирный title. Title: `--item-column-title-size` / `--item-column-title-line` (в console = `--button-size-s` / `--button-line-height`).
47
50
  - **Table** — `<table>` в обёртке со скроллом. `layout="fixed"` для фиксированной сетки. Токены `--table-*`.