endfield-vision 2.1.1 → 2.2.0

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 (56) hide show
  1. package/README.md +29 -7
  2. package/README.ru.md +29 -7
  3. package/dist/components/CommandPalette.d.ts +24 -1
  4. package/dist/components/CommandPalette.d.ts.map +1 -1
  5. package/dist/components/CommandPalette.js +22 -10
  6. package/dist/components/CommandPalette.js.map +1 -1
  7. package/dist/components/DataTable.d.ts +38 -1
  8. package/dist/components/DataTable.d.ts.map +1 -1
  9. package/dist/components/DataTable.js +135 -25
  10. package/dist/components/DataTable.js.map +1 -1
  11. package/dist/components/Modal.d.ts +26 -0
  12. package/dist/components/Modal.d.ts.map +1 -1
  13. package/dist/components/Modal.js +92 -0
  14. package/dist/components/Modal.js.map +1 -1
  15. package/dist/components/Toast.d.ts +3 -0
  16. package/dist/components/Toast.d.ts.map +1 -1
  17. package/dist/components/Toast.js +5 -1
  18. package/dist/components/Toast.js.map +1 -1
  19. package/dist/index.d.ts +4 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/accent-preset.d.ts +40 -0
  24. package/dist/lib/accent-preset.d.ts.map +1 -0
  25. package/dist/lib/accent-preset.js +71 -0
  26. package/dist/lib/accent-preset.js.map +1 -0
  27. package/dist/lib/i18n-messages.d.ts +7 -0
  28. package/dist/lib/i18n-messages.d.ts.map +1 -1
  29. package/dist/lib/i18n-messages.js +10 -2
  30. package/dist/lib/i18n-messages.js.map +1 -1
  31. package/dist/lib/theme-script.d.ts +10 -4
  32. package/dist/lib/theme-script.d.ts.map +1 -1
  33. package/dist/lib/theme-script.js +8 -3
  34. package/dist/lib/theme-script.js.map +1 -1
  35. package/dist/lib/theme.d.ts +10 -6
  36. package/dist/lib/theme.d.ts.map +1 -1
  37. package/dist/lib/theme.js +1 -1
  38. package/dist/lib/theme.js.map +1 -1
  39. package/dist/styles/components/data.css +120 -0
  40. package/dist/styles/components/navigation.css +6 -0
  41. package/dist/styles/components/overlay.css +43 -0
  42. package/dist/styles/shell.css +2 -0
  43. package/package.json +1 -1
  44. package/src/components/CommandPalette.tsx +68 -10
  45. package/src/components/DataTable.tsx +258 -41
  46. package/src/components/Modal.tsx +148 -1
  47. package/src/components/Toast.tsx +21 -1
  48. package/src/index.ts +4 -0
  49. package/src/lib/accent-preset.tsx +109 -0
  50. package/src/lib/i18n-messages.ts +17 -3
  51. package/src/lib/theme-script.tsx +19 -5
  52. package/src/lib/theme.ts +13 -8
  53. package/src/styles/components/data.css +120 -0
  54. package/src/styles/components/navigation.css +6 -0
  55. package/src/styles/components/overlay.css +43 -0
  56. package/src/styles/shell.css +2 -0
package/README.md CHANGED
@@ -15,7 +15,7 @@ npm i endfield-vision
15
15
  Without the npm registry: every GitHub release has the same build attached as an archive.
16
16
 
17
17
  ```bash
18
- npm i https://github.com/RetentionSoftware/endfield-vision/releases/download/v2.1.1/endfield-vision-2.1.1.tgz
18
+ npm i https://github.com/RetentionSoftware/endfield-vision/releases/download/v2.2.0/endfield-vision-2.2.0.tgz
19
19
  ```
20
20
 
21
21
  Requires `react` and `react-dom` 19.
@@ -97,7 +97,7 @@ Three independent settings on `<html>`:
97
97
  - `slim` - flat and calm: soft neutrals, nothing glows, selection is a neutral tone, outlined secondary and danger buttons, sentence-case labels, a crisp focus line instead of a soft halo.
98
98
  - **Accent** - `data-accent="amber|emerald|cyan|rose|violet|ink"` (no attribute means indigo). `ink` is a neutral accent: the primary button is ink-colored and color stays in statuses only. Each preset has its own values for each style and theme; contrast is checked by tests.
99
99
 
100
- `ThemeScript` sets all three before rendering. Options: `defaultTheme` (`'dark' | 'light' | 'system'`), `defaultStyle`, `defaultAccent`, `themeKey`, `styleKey`, `accentKey`, `nonce` (for CSP).
100
+ `ThemeScript` sets all three before rendering. Options: `defaultTheme` (`'dark' | 'light' | 'system'`), `defaultStyle`, `defaultAccent`, `accents` (your own presets), `themeKey`, `styleKey`, `accentKey`, `nonce` (for CSP).
101
101
 
102
102
  ```tsx
103
103
  <ThemeScript defaultTheme="system" defaultStyle="slim" defaultAccent="ink" />
@@ -108,7 +108,29 @@ const { theme, preference, style, accent, setTheme, setStyle, setAccent } = useT
108
108
 
109
109
  `STYLES` and `ACCENTS` list the available values; `setTheme`, `setStyle` and `setAccent` also work outside React.
110
110
 
111
- Your own accent: override the tokens in your app styles (unlayered styles always win):
111
+ Your own accent preset: a name plus values for the dark and light themes (and, optionally, for Slim). Registered in `ThemeScript`, it works like a built-in one: in `data-accent`, `defaultAccent`, `setAccent` and `useTheme`, with a `--ev-accent-swatch-<name>` swatch for pickers.
112
+
113
+ ```tsx
114
+ // lib/accents.ts - no 'use client': the server layout reads it
115
+ import type { AccentPreset } from 'endfield-vision'
116
+
117
+ export const BRAND: AccentPreset = {
118
+ name: 'brand',
119
+ dark: { accent: '#2dd4bf', text: '#5eead4', strong: '#0f766e', strongHover: '#118479', onStrong: '#ffffff' },
120
+ light: { accent: '#0d9488', text: '#0f766e', strong: '#0f766e', strongHover: '#0b5f59', onStrong: '#ffffff' },
121
+ slim: { dark: { /* ... */ } }, // optional; without it Slim reuses the values above
122
+ }
123
+
124
+ // app/layout.tsx
125
+ <ThemeScript accents={[BRAND]} defaultAccent="brand" />
126
+
127
+ // client code: the accent type includes your preset
128
+ const { accent, setAccent } = useTheme<Accent | 'brand'>()
129
+ ```
130
+
131
+ Contrast is on you, as with the built-in presets: `text` against `--ev-surface-1` and `onStrong` against `strong` at least 4.5:1 in every theme and style. `accentPresetCss()` returns the same CSS as a string, `AccentStyles` renders it as a `<style>` on its own.
132
+
133
+ A one-off alternative without a preset: override the tokens in your app styles (unlayered styles always win):
112
134
 
113
135
  ```css
114
136
  :root {
@@ -178,10 +200,10 @@ Component tone (`Badge`, `StatusPill`, `Callout`, `StatTile`, `Avatar`, `Progres
178
200
  - **Actions:** `Button` (`primary | secondary | ghost | danger | danger-ghost | link`, `sm | md | lg`, `loading`, `icon`, `iconRight`, `block`), `LinkButton`, `IconButton` (required `label` = aria-label + tooltip), `Menu`, `Popover`.
179
201
  - **Forms:** `Field` (label, hint, error; wires up `id`, `aria-invalid` and `aria-describedby` itself), `FormSection`, `Input`, `SearchInput`, `PasswordInput`, `Textarea` (`autoResize`), `NumberInput` (`min/max/step`, `decimals`, `unit`, `stepper`), `MoneyInput` (value in minor units), `PhoneInput` (22 countries with a picker, country code detection on paste, E.164), `SnilsInput`, `PlateInput`, `DigitsInput`, `MaskedDigitsInput`, `TimeInput` (`HH:MM`, `min/max`), `ColorField`.
180
202
  - **Choice:** `Select` (search with more than 7 options, groups, `clearable`, server search via `onSearch`), `MultiSelect`, `DateField` (`YYYY-MM-DD`), `DateRangePicker`, `Calendar`, `Checkbox` (`indeterminate`), `Switch`, `RadioGroup` (`variant="card"`), `SegmentedControl`, `Tabs` (buttons or `href` links), `TabPanel`.
181
- - **Data:** `DataTable` (column config, sorting, row selection, `loading`, `fetching`, `error` + `onRetry`, `empty`, `maxHeight`, cards on narrow screens), `Pagination`, `FilterBar`, `KeyValueList`, `StatTile`, `Badge`, `StatusPill`, `Avatar` (initials or photo), `Progress` (including overrun), `Timeline` (event feed, upcoming steps, "show more"), `UptimeBar` (daily availability with tooltips), `CopyButton`, `CopyValue`.
203
+ - **Data:** `DataTable` (column config, sorting, row selection, `loading`, `fetching`, `error` + `onRetry`, `empty`, `maxHeight`, cards on narrow screens; per row - `rowTone`, `rowAttributes` (your own `data-*` and `aria-*`, for example for `ContextMenuProvider`), `rowClassName`, `rowMuted`; expandable rows `renderExpanded` with `expanded` / `onExpandedChange`; a totals row from `footerCell` on columns; `stickyHeader` keeps the header at the top of the page without `maxHeight`), `Pagination`, `FilterBar`, `KeyValueList`, `StatTile`, `Badge`, `StatusPill`, `Avatar` (initials or photo), `Progress` (including overrun), `Timeline` (event feed, upcoming steps, "show more"), `UptimeBar` (daily availability with tooltips), `CopyButton`, `CopyValue`.
182
204
  - **Charts:** `BarChart` (grouped or `stacked`), `LineChart`, `AreaChart`, `Sparkline`, `DonutChart` (shares, "Other", legend), `Heatmap` (activity calendar) and `HeatmapMatrix` ("row x column" matrix), `RingProgress` (ring, segments, overrun), `Gauge` (half-circle scale with zones). Tooltips on hover and arrow keys, a legend for 2+ series, a hidden table for screen readers.
183
- - **Feedback and overlays:** `Callout`, `EmptyState`, `ErrorState`, `Skeleton`, `SkeletonText`, `Spinner`, `LoadingBlock`, `Modal`, `useModals()` (`open`, `confirm`, `alert`), `Drawer`, `toast.*` / `useToast()` (callable outside React too), `FileDrop`.
184
- - **Navigation and structure:** `CommandPalette` (Ctrl+K, groups, word search), `Steps` (wizard steps, horizontal and vertical), `Accordion` and `Disclosure`, `TreeView` (single or multiple selection with a partial state, WAI-ARIA keyboard).
205
+ - **Feedback and overlays:** `Callout`, `EmptyState`, `ErrorState`, `Skeleton`, `SkeletonText`, `Spinner`, `LoadingBlock`, `Modal`, `useModals()` (`open`, `confirm`, `alert`, `prompt` - a dialog with a text field and validation), `Drawer`, `toast.*` / `useToast()` (callable outside React too; `onClick` makes the whole card clickable), `FileDrop`.
206
+ - **Navigation and structure:** `CommandPalette` (Ctrl+K, groups, word search; server search: `query` / `onQueryChange`, `loading`, `alwaysShow` on items or `filter={false}`, `highlight`), `Steps` (wizard steps, horizontal and vertical), `Accordion` and `Disclosure`, `TreeView` (single or multiple selection with a partial state, WAI-ARIA keyboard).
185
207
  - **More inputs:** `Slider` (value and range, marks), `TagInput` (tags, suggestions, limit, validation), `Chip` and `ChipGroup` (filters and tags), `OtpInput` (verification code, paste as a whole), `InlineEdit` (edit in place with async save).
186
208
  - **Content:** `Banner` (full-width announcement, dismissal is remembered), `CodeBlock` and `InlineCode` (line numbers, line and syntax highlighting with no dependencies, collapsing), `Highlight` (search matches), `RelativeTime` ("5 minutes ago" in both languages), `ExpandableText` ("Show more").
187
209
  - **App shell:** `AppShell` (`statusBar` slot), `Topbar`, `Sidebar`, `SidebarSection`, `SidebarItem`, `SidebarCollapseButton`, `useAppShell()`, `PageHeader`, `Breadcrumbs`, `SectionTitle`, `Card`, `Panel`, `Divider`, `Kbd`, `StatusBar` (`StatusBarItem`, `StatusBarClock`), `WorkspaceSwitcher`, `ScreenOverlay` (maintenance, new version), `ContextMenu` and `ContextMenuProvider` (right click, registry by `data-ctx-kind`).
@@ -190,7 +212,7 @@ Component tone (`Badge`, `StatusPill`, `Callout`, `StatTile`, `Avatar`, `Progres
190
212
  - **CRM, communication:** `NotificationCenter` and `NotificationList` (history, read state, actions), `toast` with several actions, `ChatThread`, `ChatMessage`, `Composer` (attachments, pasted screenshots, drag and drop), `Lightbox`, `ConnectionStatus`.
191
213
  - **Filters in the URL:** `useUrlFilters` syncs filters with the address and remembers them per scope.
192
214
  - **Language:** `LocaleProvider`, `useMessages`, `useLocale`, `useNumberFormat`, dictionaries `ru`, `en`.
193
- - **Theme:** `ThemeScript` (`nonce` for CSP), `themeBootstrap`, `useTheme`, `setTheme`, `setAccent`, `ACCENTS`.
215
+ - **Theme:** `ThemeScript` (`nonce` for CSP, `accents`), `themeBootstrap`, `useTheme`, `setTheme`, `setStyle`, `setAccent`, `ACCENTS`, `STYLES`, `AccentPreset`, `accentPresetCss`, `AccentStyles`.
194
216
  - **Utilities:** `cx`, `normalizeSearch`, `formatPhone`, `isCompletePhone`, `normalizePlate`, `normalizeHexColor`, `useMediaQuery`, `useDebouncedValue`, `useControllable`, `LinkProvider`. Layout classes: `ev-stack`, `ev-row`, `ev-grid` (`--ev-gap`, `--ev-grid-min`), `ev-mono`, `ev-num`, `ev-muted`, `ev-truncate`, `ev-link`, `ev-visually-hidden`.
195
217
 
196
218
  ## Making it yours
package/README.ru.md CHANGED
@@ -15,7 +15,7 @@ npm i endfield-vision
15
15
  Без реестра npm: к каждому релизу на GitHub приложена та же сборка архивом.
16
16
 
17
17
  ```bash
18
- npm i https://github.com/RetentionSoftware/endfield-vision/releases/download/v2.1.1/endfield-vision-2.1.1.tgz
18
+ npm i https://github.com/RetentionSoftware/endfield-vision/releases/download/v2.2.0/endfield-vision-2.2.0.tgz
19
19
  ```
20
20
 
21
21
  Нужны `react` и `react-dom` 19.
@@ -97,7 +97,7 @@ import { LocaleProvider } from 'endfield-vision'
97
97
  - `slim` («Утончённый») - плоский и спокойный: мягкие нейтрали, ничего не светится, выбранное - нейтральным тоном, вторичная и опасная кнопки контуром, подписи без капса, фокус - чёткая линия вместо мягкого ореола.
98
98
  - **Акцент** - `data-accent="amber|emerald|cyan|rose|violet|ink"` (без атрибута - indigo). `ink` («Чернила») - нейтральный акцент: основная кнопка чернильная, цвет остаётся только в статусах. У каждого пресета свои значения для каждого стиля и темы; контраст проверяют тесты.
99
99
 
100
- `ThemeScript` ставит все три до отрисовки. Опции: `defaultTheme` (`'dark' | 'light' | 'system'`), `defaultStyle`, `defaultAccent`, `themeKey`, `styleKey`, `accentKey`, `nonce` (для CSP).
100
+ `ThemeScript` ставит все три до отрисовки. Опции: `defaultTheme` (`'dark' | 'light' | 'system'`), `defaultStyle`, `defaultAccent`, `accents` (свои пресеты), `themeKey`, `styleKey`, `accentKey`, `nonce` (для CSP).
101
101
 
102
102
  ```tsx
103
103
  <ThemeScript defaultTheme="system" defaultStyle="slim" defaultAccent="ink" />
@@ -108,7 +108,29 @@ const { theme, preference, style, accent, setTheme, setStyle, setAccent } = useT
108
108
 
109
109
  `STYLES` и `ACCENTS` - списки доступных значений; `setTheme`, `setStyle` и `setAccent` работают и вне React.
110
110
 
111
- Свой акцент - переопределите токены в стилях приложения (вне слоёв они сильнее):
111
+ Свой пресет акцента: имя и значения для тёмной и светлой темы (и, по желанию, для Slim). После регистрации в `ThemeScript` он работает как встроенный: в `data-accent`, `defaultAccent`, `setAccent` и `useTheme`, а образец для переключателей - `--ev-accent-swatch-<имя>`.
112
+
113
+ ```tsx
114
+ // lib/accents.ts - без 'use client': его читает серверный layout
115
+ import type { AccentPreset } from 'endfield-vision'
116
+
117
+ export const BRAND: AccentPreset = {
118
+ name: 'brand',
119
+ dark: { accent: '#2dd4bf', text: '#5eead4', strong: '#0f766e', strongHover: '#118479', onStrong: '#ffffff' },
120
+ light: { accent: '#0d9488', text: '#0f766e', strong: '#0f766e', strongHover: '#0b5f59', onStrong: '#ffffff' },
121
+ slim: { dark: { /* ... */ } }, // по желанию; без него в Slim те же значения
122
+ }
123
+
124
+ // app/layout.tsx
125
+ <ThemeScript accents={[BRAND]} defaultAccent="brand" />
126
+
127
+ // в клиентском коде: тип акцента включает свой пресет
128
+ const { accent, setAccent } = useTheme<Accent | 'brand'>()
129
+ ```
130
+
131
+ Контраст - на вас, как у встроенных пресетов: `text` к `--ev-surface-1` и `onStrong` к `strong` - не ниже 4.5:1 в каждой теме и стиле. `accentPresetCss()` отдаёт тот же CSS строкой, `AccentStyles` - отдельным `<style>`.
132
+
133
+ Разовый вариант без пресета - переопределите токены в стилях приложения (вне слоёв они сильнее):
112
134
 
113
135
  ```css
114
136
  :root {
@@ -178,10 +200,10 @@ import { MotionProvider, StatTile, BarChart } from 'endfield-vision'
178
200
  - **Действия:** `Button` (`primary | secondary | ghost | danger | danger-ghost | link`, `sm | md | lg`, `loading`, `icon`, `iconRight`, `block`), `LinkButton`, `IconButton` (обязательный `label` = aria-label + подсказка), `Menu`, `Popover`.
179
201
  - **Формы:** `Field` (подпись, подсказка, ошибка; сам связывает `id`, `aria-invalid`, `aria-describedby`), `FormSection`, `Input`, `SearchInput`, `PasswordInput`, `Textarea` (`autoResize`), `NumberInput` (`min/max/step`, `decimals`, `unit`, `stepper`), `MoneyInput` (значение в копейках), `PhoneInput` (22 страны с выбором из списка, распознавание кода при вставке, E.164), `SnilsInput`, `PlateInput`, `DigitsInput`, `MaskedDigitsInput`, `TimeInput` (`ЧЧ:ММ`, `min/max`), `ColorField`.
180
202
  - **Выбор:** `Select` (поиск при > 7 опций, группы, `clearable`, серверный поиск `onSearch`), `MultiSelect`, `DateField` (`YYYY-MM-DD`), `DateRangePicker`, `Calendar`, `Checkbox` (`indeterminate`), `Switch`, `RadioGroup` (`variant="card"`), `SegmentedControl`, `Tabs` (кнопки или ссылки `href`), `TabPanel`.
181
- - **Данные:** `DataTable` (колонки конфигом, сортировка, выбор строк, `loading`, `fetching`, `error` + `onRetry`, `empty`, `maxHeight`, на узком экране - карточки), `Pagination`, `FilterBar`, `KeyValueList`, `StatTile`, `Badge`, `StatusPill`, `Avatar` (инициалы или фото), `Progress` (в том числе перерасход), `Timeline` (лента событий, будущие шаги, «показать ещё»), `UptimeBar` (доступность по дням с подсказками), `CopyButton`, `CopyValue`.
203
+ - **Данные:** `DataTable` (колонки конфигом, сортировка, выбор строк, `loading`, `fetching`, `error` + `onRetry`, `empty`, `maxHeight`, на узком экране - карточки; у строки - `rowTone`, `rowAttributes` (свои `data-*` и `aria-*`, например для `ContextMenuProvider`), `rowClassName`, `rowMuted`; раскрывающиеся строки `renderExpanded` с `expanded` / `onExpandedChange`; итоговая строка из `footerCell` колонок; `stickyHeader` - шапка липнет к верху страницы без `maxHeight`), `Pagination`, `FilterBar`, `KeyValueList`, `StatTile`, `Badge`, `StatusPill`, `Avatar` (инициалы или фото), `Progress` (в том числе перерасход), `Timeline` (лента событий, будущие шаги, «показать ещё»), `UptimeBar` (доступность по дням с подсказками), `CopyButton`, `CopyValue`.
182
204
  - **Графики:** `BarChart` (рядом или `stacked`), `LineChart`, `AreaChart`, `Sparkline`, `DonutChart` (доли, «Прочее», легенда), `Heatmap` (календарь активности) и `HeatmapMatrix` (матрица «строка x столбец»), `RingProgress` (кольцо, секции, перерасход), `Gauge` (шкала-полукруг с зонами). Подсказка по наведению и стрелками, легенда при 2+ сериях, скрытая таблица для скринридера.
183
- - **Состояния и окна:** `Callout`, `EmptyState`, `ErrorState`, `Skeleton`, `SkeletonText`, `Spinner`, `LoadingBlock`, `Modal`, `useModals()` (`open`, `confirm`, `alert`), `Drawer`, `toast.*` / `useToast()` (вызов и вне React), `FileDrop`.
184
- - **Навигация и структура:** `CommandPalette` (Ctrl+K, группы, поиск по словам), `Steps` (шаги мастера, горизонтально и вертикально), `Accordion` и `Disclosure`, `TreeView` (выбор одного или нескольких с частичным состоянием, клавиатура WAI-ARIA).
205
+ - **Состояния и окна:** `Callout`, `EmptyState`, `ErrorState`, `Skeleton`, `SkeletonText`, `Spinner`, `LoadingBlock`, `Modal`, `useModals()` (`open`, `confirm`, `alert`, `prompt` - окно с полем ввода и проверкой), `Drawer`, `toast.*` / `useToast()` (вызов и вне React; `onClick` - клик по всей карточке), `FileDrop`.
206
+ - **Навигация и структура:** `CommandPalette` (Ctrl+K, группы, поиск по словам; поиск с сервера: `query` / `onQueryChange`, `loading`, `alwaysShow` у пунктов или `filter={false}`, `highlight`), `Steps` (шаги мастера, горизонтально и вертикально), `Accordion` и `Disclosure`, `TreeView` (выбор одного или нескольких с частичным состоянием, клавиатура WAI-ARIA).
185
207
  - **Ввод (дополнительно):** `Slider` (значение и диапазон, метки), `TagInput` (метки, подсказки, лимит, проверка), `Chip` и `ChipGroup` (фильтры и метки), `OtpInput` (код подтверждения, вставка целиком), `InlineEdit` (правка на месте с асинхронным сохранением).
186
208
  - **Контент:** `Banner` (объявление на всю ширину, скрытие запоминается), `CodeBlock` и `InlineCode` (номера строк, подсветка строк и синтаксиса без зависимостей, сворачивание), `Highlight` (совпадения поиска, ё = е), `RelativeTime` («5 минут назад» на обоих языках), `ExpandableText` («Показать полностью»).
187
209
  - **Каркас:** `AppShell` (слот `statusBar`), `Topbar`, `Sidebar`, `SidebarSection`, `SidebarItem`, `SidebarCollapseButton`, `useAppShell()`, `PageHeader`, `Breadcrumbs`, `SectionTitle`, `Card`, `Panel`, `Divider`, `Kbd`, `StatusBar` (`StatusBarItem`, `StatusBarClock`), `WorkspaceSwitcher`, `ScreenOverlay` (техработы, новая версия), `ContextMenu` и `ContextMenuProvider` (правый клик, реестр по `data-ctx-kind`).
@@ -190,7 +212,7 @@ import { MotionProvider, StatTile, BarChart } from 'endfield-vision'
190
212
  - **CRM - коммуникации:** `NotificationCenter` и `NotificationList` (история, прочитано, действия), `toast` с несколькими действиями, `ChatThread`, `ChatMessage`, `Composer` (вложения, вставка скриншотов, перетаскивание), `Lightbox`, `ConnectionStatus`.
191
213
  - **Фильтры в адресе:** `useUrlFilters` - синхронизация с URL и память по области.
192
214
  - **Язык:** `LocaleProvider`, `useMessages`, `useLocale`, `useNumberFormat`, словари `ru`, `en`.
193
- - **Тема:** `ThemeScript` (`nonce` для CSP), `themeBootstrap`, `useTheme`, `setTheme`, `setAccent`, `ACCENTS`.
215
+ - **Тема:** `ThemeScript` (`nonce` для CSP, `accents`), `themeBootstrap`, `useTheme`, `setTheme`, `setStyle`, `setAccent`, `ACCENTS`, `STYLES`, `AccentPreset`, `accentPresetCss`, `AccentStyles`.
194
216
  - **Утилиты:** `cx`, `normalizeSearch`, `formatPhone`, `isCompletePhone`, `normalizePlate`, `normalizeHexColor`, `useMediaQuery`, `useDebouncedValue`, `useControllable`, `LinkProvider`. Классы раскладки: `ev-stack`, `ev-row`, `ev-grid` (`--ev-gap`, `--ev-grid-min`), `ev-mono`, `ev-num`, `ev-muted`, `ev-truncate`, `ev-link`, `ev-visually-hidden`.
195
217
 
196
218
  ## Доработка под себя
@@ -11,6 +11,11 @@ export interface CommandItem {
11
11
  /** Дополнительные слова для поиска (синонимы, коды, английские названия). */
12
12
  keywords?: string[];
13
13
  disabled?: boolean;
14
+ /**
15
+ * Показывать при любом запросе: пункт уже отобран снаружи (результат поиска
16
+ * с сервера, совпадение по ИНН или телефону, которого нет в подписи).
17
+ */
18
+ alwaysShow?: boolean;
14
19
  /** Выполнить команду. Палитра закрывается перед вызовом. */
15
20
  onSelect: () => void;
16
21
  }
@@ -23,6 +28,21 @@ export interface CommandPaletteProps {
23
28
  open: boolean;
24
29
  onOpenChange: (open: boolean) => void;
25
30
  items: CommandItem[];
31
+ /** Текст поиска (управляемо). Без него палитра хранит запрос сама и сбрасывает при открытии. */
32
+ query?: string;
33
+ /** Начальный запрос при открытии (неуправляемый режим). */
34
+ defaultQuery?: string;
35
+ /** Запрос изменился: поиск с сервера. Задержку (debounce) выдерживает приложение. */
36
+ onQueryChange?: (query: string) => void;
37
+ /**
38
+ * Отбирать пункты по запросу (по умолчанию да). false - список показывается
39
+ * как есть: приложение фильтрует само. Для отдельных пунктов - alwaysShow.
40
+ */
41
+ filter?: boolean;
42
+ /** Ждём результатов: индикатор в поле, при пустом списке - «Поиск...». */
43
+ loading?: boolean;
44
+ /** Подсветить совпадения с запросом в названии и строковой подсказке. */
45
+ highlight?: boolean;
26
46
  /** Плейсхолдер поля. По умолчанию - из словаря. */
27
47
  placeholder?: string;
28
48
  /** Текст при пустом результате. По умолчанию - «Ничего не найдено». */
@@ -40,7 +60,10 @@ export interface CommandPaletteProps {
40
60
  }
41
61
  /** Совпадение команды с запросом: каждое слово запроса есть в названии, группе или ключевых словах. */
42
62
  export declare function commandMatches(item: CommandItem, query: string): boolean;
43
- /** Отбор команд по запросу (без учёта регистра и «ё/е»), порядок сохраняется. */
63
+ /**
64
+ * Отбор команд по запросу (без учёта регистра и «ё/е»), порядок сохраняется.
65
+ * Пункты с alwaysShow остаются при любом запросе.
66
+ */
44
67
  export declare function filterCommands(items: CommandItem[], query: string): CommandItem[];
45
68
  /**
46
69
  * Группировка: группы в порядке первого появления, команды одной группы
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAevG,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACvB,uFAAuF;IACvF,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKxE;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAEjF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAalE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAO1F;AAED,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKvE;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAY,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,sCAoBhG"}
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAmE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAqBvG,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qFAAqF;IACrF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACvB,uFAAuF;IACvF,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAEjF;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAalE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAO1F;AAED,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKvE;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAY,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,sCAoBhG"}
@@ -3,10 +3,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Search, X } from 'lucide-react';
4
4
  import { useEffect, useId, useMemo, useRef, useState } from 'react';
5
5
  import { cx, normalizeSearch } from '../lib/cx.js';
6
- import { useEventCallback, useIsoLayoutEffect } from '../lib/hooks.js';
6
+ import { useControllable, useEventCallback, useIsoLayoutEffect } from '../lib/hooks.js';
7
7
  import { useMessages } from '../lib/i18n.js';
8
8
  import { Portal, useEscapeLayer, useFocusTrap, useScrollLock } from '../lib/overlay.js';
9
9
  import { Kbd } from './Display.js';
10
+ import { Highlight } from './Highlight.js';
11
+ import { Spinner } from './Spinner.js';
10
12
  /** Совпадение команды с запросом: каждое слово запроса есть в названии, группе или ключевых словах. */
11
13
  export function commandMatches(item, query) {
12
14
  const words = normalizeSearch(query).split(/\s+/).filter(Boolean);
@@ -15,9 +17,16 @@ export function commandMatches(item, query) {
15
17
  const hay = normalizeSearch([item.label, item.group ?? '', ...(item.keywords ?? [])].join(' '));
16
18
  return words.every((w) => hay.includes(w));
17
19
  }
18
- /** Отбор команд по запросу (без учёта регистра и «ё/е»), порядок сохраняется. */
20
+ /**
21
+ * Отбор команд по запросу (без учёта регистра и «ё/е»), порядок сохраняется.
22
+ * Пункты с alwaysShow остаются при любом запросе.
23
+ */
19
24
  export function filterCommands(items, query) {
20
- return items.filter((it) => commandMatches(it, query));
25
+ return items.filter((it) => it.alwaysShow || commandMatches(it, query));
26
+ }
27
+ /** Слова запроса для подсветки совпадений. */
28
+ function queryWords(query) {
29
+ return query.split(/\s+/).filter(Boolean);
21
30
  }
22
31
  /**
23
32
  * Группировка: группы в порядке первого появления, команды одной группы
@@ -86,12 +95,13 @@ function optionDomId(listId, index) {
86
95
  return `${listId}-o${index}`;
87
96
  }
88
97
  /** Тело окна. Монтируется при открытии - запрос и активная команда сбрасываются сами. */
89
- function PalettePanel({ onOpenChange, items, placeholder, emptyText, footer, 'aria-label': ariaLabel, className, }) {
98
+ function PalettePanel({ onOpenChange, items, query: queryProp, defaultQuery = '', onQueryChange, filter = true, loading = false, highlight = false, placeholder, emptyText, footer, 'aria-label': ariaLabel, className, }) {
90
99
  const t = useMessages();
91
100
  const listId = useId();
92
101
  const ref = useRef(null);
93
- const [query, setQuery] = useState('');
94
- const groups = useMemo(() => groupCommands(filterCommands(items, query)), [items, query]);
102
+ const [query, setQuery] = useControllable(queryProp, defaultQuery, onQueryChange);
103
+ const groups = useMemo(() => groupCommands(filter ? filterCommands(items, query) : items), [items, query, filter]);
104
+ const marks = highlight ? queryWords(query) : [];
95
105
  const flat = useMemo(() => groups.flatMap((g) => g.items), [groups]);
96
106
  const [activeId, setActiveId] = useState(null);
97
107
  // Активная команда - выбранная пользователем, если она ещё в списке, иначе первая доступная.
@@ -153,16 +163,18 @@ function PalettePanel({ onOpenChange, items, placeholder, emptyText, footer, 'ar
153
163
  return (_jsx("div", { className: "ev-modal-backdrop ev-cmdk-backdrop", "data-ev-layer": "", onMouseDown: (e) => {
154
164
  if (e.target === e.currentTarget)
155
165
  close();
156
- }, children: _jsxs("div", { ref: ref, role: "dialog", "aria-modal": "true", "aria-label": ariaLabel ?? t.commandPalette.label, tabIndex: -1, className: cx('ev-cmdk', className), children: [_jsxs("div", { className: "ev-cmdk-head", children: [_jsx(Search, { size: 17, className: "ev-cmdk-search-icon", "aria-hidden": "true" }), _jsx("input", { className: "ev-cmdk-input", type: "text", role: "combobox", "aria-expanded": "true", "aria-controls": listId, "aria-autocomplete": "list", "aria-activedescendant": active ? optionDomId(listId, activeIndex) : undefined, "aria-label": ariaLabel ?? t.commandPalette.label, placeholder: placeholder ?? t.commandPalette.placeholder, autoComplete: "off", autoCorrect: "off", spellCheck: false, "data-autofocus": "", value: query, onChange: (e) => {
166
+ }, children: _jsxs("div", { ref: ref, role: "dialog", "aria-modal": "true", "aria-label": ariaLabel ?? t.commandPalette.label, tabIndex: -1, className: cx('ev-cmdk', className), children: [_jsxs("div", { className: "ev-cmdk-head", children: [loading ? (
167
+ // Ожидание объявляет строка состояния под списком; индикатор - только для глаз.
168
+ _jsx("span", { className: "ev-cmdk-search-icon ev-cmdk-spinner", "aria-hidden": "true", children: _jsx(Spinner, { size: 16 }) })) : (_jsx(Search, { size: 17, className: "ev-cmdk-search-icon", "aria-hidden": "true" })), _jsx("input", { className: "ev-cmdk-input", type: "text", role: "combobox", "aria-expanded": "true", "aria-controls": listId, "aria-autocomplete": "list", "aria-activedescendant": active ? optionDomId(listId, activeIndex) : undefined, "aria-label": ariaLabel ?? t.commandPalette.label, placeholder: placeholder ?? t.commandPalette.placeholder, autoComplete: "off", autoCorrect: "off", spellCheck: false, "data-autofocus": "", value: query, onChange: (e) => {
157
169
  setQuery(e.target.value);
158
170
  setActiveId(null);
159
- }, onKeyDown: onKey }), _jsx("button", { type: "button", className: "ev-cmdk-close", "aria-label": t.common.close, "data-dialog-close": "", onClick: close, children: _jsx(X, { size: 16 }) })] }), _jsx("div", { id: listId, role: "listbox", "aria-label": ariaLabel ?? t.commandPalette.label, className: "ev-cmdk-list", children: groups.map((g, gi) => {
171
+ }, onKeyDown: onKey }), _jsx("button", { type: "button", className: "ev-cmdk-close", "aria-label": t.common.close, "data-dialog-close": "", onClick: close, children: _jsx(X, { size: 16 }) })] }), _jsx("div", { id: listId, role: "listbox", "aria-label": ariaLabel ?? t.commandPalette.label, "aria-busy": loading || undefined, className: "ev-cmdk-list", children: groups.map((g, gi) => {
160
172
  const headId = `${listId}-g${gi}`;
161
- const options = g.items.map((it) => (_jsxs("div", { id: optionDomId(listId, flat.indexOf(it)), role: "option", "aria-selected": it === active, "aria-disabled": it.disabled || undefined, className: "ev-cmdk-item", "data-active": it === active || undefined, onPointerMove: () => !it.disabled && it !== active && setActiveId(it.id), onPointerDown: (e) => e.preventDefault(), onClick: () => run(it), children: [it.icon ? (_jsx("span", { className: "ev-cmdk-item-icon", "aria-hidden": "true", children: it.icon })) : null, _jsx("span", { className: "ev-cmdk-item-label", children: it.label }), it.hint ? _jsx("span", { className: "ev-cmdk-item-hint", children: it.hint }) : null] }, it.id)));
173
+ const options = g.items.map((it) => (_jsxs("div", { id: optionDomId(listId, flat.indexOf(it)), role: "option", "aria-selected": it === active, "aria-disabled": it.disabled || undefined, className: "ev-cmdk-item", "data-active": it === active || undefined, onPointerMove: () => !it.disabled && it !== active && setActiveId(it.id), onPointerDown: (e) => e.preventDefault(), onClick: () => run(it), children: [it.icon ? (_jsx("span", { className: "ev-cmdk-item-icon", "aria-hidden": "true", children: it.icon })) : null, _jsx("span", { className: "ev-cmdk-item-label", children: marks.length > 0 ? _jsx(Highlight, { text: it.label, query: marks }) : it.label }), it.hint ? (_jsx("span", { className: "ev-cmdk-item-hint", children: marks.length > 0 && typeof it.hint === 'string' ? _jsx(Highlight, { text: it.hint, query: marks }) : it.hint })) : null] }, it.id)));
162
174
  if (g.group === undefined) {
163
175
  return (_jsx("div", { role: "group", className: "ev-cmdk-group", children: options }, `g${gi}`));
164
176
  }
165
177
  return (_jsxs("div", { role: "presentation", className: "ev-cmdk-group", children: [_jsx("div", { id: headId, className: "ev-cmdk-group-label", "aria-hidden": "true", children: g.group }), _jsx("div", { role: "group", "aria-labelledby": headId, children: options })] }, `g${gi}`));
166
- }) }), _jsx("div", { className: "ev-cmdk-empty", role: "status", children: flat.length === 0 ? (emptyText ?? t.common.nothingFound) : null }), _jsxs("div", { className: "ev-cmdk-foot", children: [_jsx("div", { className: "ev-cmdk-foot-left", children: footer }), _jsxs("div", { className: "ev-cmdk-hints", "aria-hidden": "true", children: [_jsxs("span", { className: "ev-cmdk-hint", children: [_jsx(Kbd, { children: "\u2191" }), _jsx(Kbd, { children: "\u2193" }), t.commandPalette.hintNavigate] }), _jsxs("span", { className: "ev-cmdk-hint", children: [_jsx(Kbd, { children: "\u21B5" }), t.commandPalette.hintSelect] }), _jsxs("span", { className: "ev-cmdk-hint", children: [_jsx(Kbd, { children: "Esc" }), t.commandPalette.hintClose] })] })] })] }) }));
178
+ }) }), _jsx("div", { className: "ev-cmdk-empty", role: "status", children: flat.length === 0 ? (loading ? t.commandPalette.searching : (emptyText ?? t.common.nothingFound)) : null }), _jsxs("div", { className: "ev-cmdk-foot", children: [_jsx("div", { className: "ev-cmdk-foot-left", children: footer }), _jsxs("div", { className: "ev-cmdk-hints", "aria-hidden": "true", children: [_jsxs("span", { className: "ev-cmdk-hint", children: [_jsx(Kbd, { children: "\u2191" }), _jsx(Kbd, { children: "\u2193" }), t.commandPalette.hintNavigate] }), _jsxs("span", { className: "ev-cmdk-hint", children: [_jsx(Kbd, { children: "\u21B5" }), t.commandPalette.hintSelect] }), _jsxs("span", { className: "ev-cmdk-hint", children: [_jsx(Kbd, { children: "Esc" }), t.commandPalette.hintClose] })] })] })] }) }));
167
179
  }
168
180
  //# sourceMappingURL=CommandPalette.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type KeyboardEvent, type MouseEvent, type ReactNode } from 'react';
2
+ import { type Tone } from './Display.js';
2
3
  export type SortDir = 'asc' | 'desc';
3
4
  export interface SortState {
4
5
  key: string;
@@ -9,6 +10,11 @@ export interface Column<T> {
9
10
  header: ReactNode;
10
11
  /** Содержимое ячейки. Пустое значение (null, undefined, '') - приглушённый дефис. */
11
12
  cell: (row: T, index: number) => ReactNode;
13
+ /**
14
+ * Ячейка итоговой строки (<tfoot>): значение или функция от строк таблицы.
15
+ * Строка итогов появляется, если она задана хотя бы у одной колонки.
16
+ */
17
+ footerCell?: ReactNode | ((rows: T[]) => ReactNode);
12
18
  /** Колонка сортируется; ключ сортировки - sortKey или key. */
13
19
  sortable?: boolean;
14
20
  sortKey?: string;
@@ -27,6 +33,8 @@ export interface Column<T> {
27
33
  mobileLabel?: ReactNode;
28
34
  className?: string;
29
35
  }
36
+ /** Атрибуты строки от приложения: только data-* и aria-*. */
37
+ export type RowAttributes = Partial<Record<`data-${string}` | `aria-${string}`, string | number | boolean | undefined>>;
30
38
  export interface DataTableProps<T> {
31
39
  columns: Column<T>[];
32
40
  rows: T[] | undefined;
@@ -55,9 +63,31 @@ export interface DataTableProps<T> {
55
63
  onSelectedChange?: (keys: string[]) => void;
56
64
  /** Приглушить строку (заблокированный, архивный). */
57
65
  rowMuted?: (row: T) => boolean;
66
+ /** Тон строки - тонированный фон: просрочено, новое, требует внимания. */
67
+ rowTone?: (row: T) => Tone | undefined;
68
+ /**
69
+ * Свои атрибуты строки (<tr> или карточки): data-* и aria-*, например
70
+ * метки контекстного меню. Служебные атрибуты таблицы важнее.
71
+ */
72
+ rowAttributes?: (row: T) => RowAttributes | undefined;
73
+ rowClassName?: (row: T) => string | undefined;
74
+ /** Содержимое раскрытой строки: под ней, на всю ширину таблицы. */
75
+ renderExpanded?: (row: T) => ReactNode;
76
+ /** Можно ли раскрыть строку (по умолчанию - любую, если задан renderExpanded). */
77
+ rowExpandable?: (row: T) => boolean;
78
+ /** Раскрытые строки по ключам (управляемо). */
79
+ expanded?: string[];
80
+ defaultExpanded?: string[];
81
+ onExpandedChange?: (keys: string[]) => void;
58
82
  skeletonRows?: number;
59
83
  /** Высота области прокрутки: шапка липнет к её верху. */
60
84
  maxHeight?: number | string;
85
+ /**
86
+ * Шапка липнет к верху страницы (или ближайшей области прокрутки) без maxHeight.
87
+ * true - под шапкой приложения (--ev-table-sticky-top, в AppShell - высота шапки),
88
+ * число - отступ сверху в px.
89
+ */
90
+ stickyHeader?: boolean | number;
61
91
  dense?: boolean;
62
92
  /** Подвал: пагинация, итоги. */
63
93
  footer?: ReactNode;
@@ -66,6 +96,8 @@ export interface DataTableProps<T> {
66
96
  'aria-label'?: string;
67
97
  className?: string;
68
98
  }
99
+ /** Атрибуты строки от приложения: всё, кроме data-* и aria-*, отбрасывается. */
100
+ export declare function pickRowAttributes(attrs: RowAttributes | undefined): RowAttributes;
69
101
  /**
70
102
  * Клик по кнопке, ссылке или полю внутри строки не открывает строку.
71
103
  * События из порталов (окно, меню, список, открытые из ячейки) всплывают
@@ -75,7 +107,12 @@ export interface DataTableProps<T> {
75
107
  export declare function isInteractiveTarget(e: Pick<MouseEvent | KeyboardEvent, 'target' | 'currentTarget'>): boolean;
76
108
  /** Следующее состояние сортировки по клику на заголовок колонки key. */
77
109
  export declare function nextSort(current: SortState | null | undefined, key: string, clearable?: boolean): SortState | null;
78
- export declare function DataTable<T>({ columns, rows, rowKey, loading, fetching, error, onRetry, empty: emptyProp, emptyDescription, sort, onSortChange, sortClearable, onRowClick, selected, onSelectedChange, rowMuted, skeletonRows, maxHeight, dense, footer, mobile, className, ...aria }: DataTableProps<T>): import("react").JSX.Element;
110
+ /**
111
+ * Сдвиг шапки, липнущей к странице: насколько верх таблицы ушёл выше границы
112
+ * (верх области прокрутки плюс отступ), но не дальше конца таблицы.
113
+ */
114
+ export declare function stickyHeadShift(boundary: number, tableTop: number, tableHeight: number, headHeight: number, footHeight?: number): number;
115
+ export declare function DataTable<T>({ columns, rows, rowKey, loading, fetching, error, onRetry, empty: emptyProp, emptyDescription, sort, onSortChange, sortClearable, onRowClick, selected, onSelectedChange, rowMuted, rowTone, rowAttributes, rowClassName, renderExpanded, rowExpandable, expanded: expandedProp, defaultExpanded, onExpandedChange, skeletonRows, maxHeight, stickyHeader, dense, footer, mobile, className, ...aria }: DataTableProps<T>): import("react").JSX.Element;
79
116
  export interface PaginationProps {
80
117
  /** Страница с 1. */
81
118
  page: number;
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/components/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/components/DataTable.tsx"],"names":[],"mappings":"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"}