Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions docs/api-alignment/BACKLOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# API Alignment — план работ (backlog)

Сформирован автоматически из `flags` в `figma-angular-api-map.json`. Колонки «Исправление»/«Сторона» — предварительные, решение за владельцами DS/UI Kit.

> **Что НЕ является ошибкой:** `figmaOnly`/`angularOnly`-свойства — это штатное разнесение дизайнер/разработчик (см. блоки в отчётах), а не расхождения. Расхождения дефолтов (BTN-2/BTN-3) теперь выявляются автоматически (P0) — Figma-дефолты подмешаны из Desktop Bridge (`docs/figma-defaults.json`). Не покрыто пока: сравнение множеств enum-значений (BTN-1, напр. `variant=basic|outlined` vs Angular-тип) — требует разбора Angular-типов-юнионов в генераторе.

## P0 — расхождения дефолтов (Figma ≠ Angular)

Выявлено по совпадающим по имени параметрам: **42**. Источник Figma-дефолтов — `docs/figma-defaults.json` (Desktop Bridge).

> ⚠️ Матчинг по имени: часть строк — совпадение имени при разной семантике/типе (напр. `value`, `line`, `placeholder` — Figma-флаг/токен vs Angular-строка/массив). Проверять перед постановкой в работу.

| ID | Компонент | Параметр | Figma default | Angular default |
|---|---|---|---|---|
| DEF-1 | Button.Base | `icon-only` ↔ `iconOnly` | `true` | `false` |
| DEF-2 | Button.Base | `size` ↔ `size` | `xlarge` | `base` |
| DEF-3 | Button.Danger | `icon-only` ↔ `iconOnly` | `true` | `false` |
| DEF-4 | Button.Danger | `size` ↔ `size` | `xlarge` | `base` |
| DEF-5 | Button.Danger | `variant` ↔ `variant` | `basic` | `primary` |
| DEF-6 | Button.Info | `icon-only` ↔ `iconOnly` | `true` | `false` |
| DEF-7 | Button.Info | `size` ↔ `size` | `xlarge` | `base` |
| DEF-8 | Button.Info | `variant` ↔ `variant` | `basic` | `primary` |
| DEF-9 | Button.Success | `icon-only` ↔ `iconOnly` | `true` | `false` |
| DEF-10 | Button.Success | `size` ↔ `size` | `xlarge` | `base` |
| DEF-11 | Button.Success | `variant` ↔ `variant` | `basic` | `primary` |
| DEF-12 | Button.Warning | `icon-only` ↔ `iconOnly` | `true` | `false` |
| DEF-13 | Button.Warning | `size` ↔ `size` | `xlarge` | `base` |
| DEF-14 | Button.Warning | `variant` ↔ `variant` | `basic` | `primary` |
| DEF-15 | DatePicker | `show-clear` ↔ `showClear` | `true` | `false` |
| DEF-16 | DatePicker | `↳ show-time` ↔ `showTime` | `true` | `false` |
| DEF-17 | InputMask | `show-clear` ↔ `showClear` | `true` | `false` |
| DEF-18 | InputText | `show-clear` ↔ `showClear` | `true` | `false` |
| DEF-19 | Select | `show-clear` ↔ `showClear` | `true` | `false` |
| DEF-20 | SelectButton.Item | `size` ↔ `size` | `xlarge` | `base` |
| DEF-21 | Textarea | `placeholder` ↔ `placeholder` | `true` | `` |
| DEF-22 | Textarea | `show-clear` ↔ `showClear` | `true` | `false` |
| DEF-23 | ToggleButton | `icon-only` ↔ `iconOnly` | `true` | `false` |
| DEF-24 | ToggleButton | `size` ↔ `size` | `xlarge` | `base` |
| DEF-25 | ConfirmDialog | `severity` ↔ `severity` | `danger` | `default` |
| DEF-26 | Drawer | `position` ↔ `position` | `left` | `right` |
| DEF-27 | Card | `overlay` ↔ `overlay` | `true` | `false` |
| DEF-28 | Divider | `align` ↔ `align` | `left` | `center` |
| DEF-29 | Galleria | `↳ show-indicators` ↔ `showIndicators` | `true` | `false` |
| DEF-30 | Avatar | `size` ↔ `size` | `xlarge` | `base` |
| DEF-31 | MeterGroup.Item | `value` ↔ `value` | `{value}` | `[]` |
| DEF-32 | ProgressBar | `value` ↔ `value` | `{value}%` | `0` |
| DEF-33 | ProgressSpinner | `fill` ↔ `fill` | `primary` | `none` |
| DEF-34 | ProgressSpinner | `size` ↔ `size` | `xlarge` | `base` |
| DEF-35 | Breadcrumb | `home` ↔ `home` | `true` | `undefined` |
| DEF-36 | Timeline | `layout` ↔ `layout` | `horizontal` | `vertical` |
| DEF-37 | Timeline.ItemHorizontal | `align` ↔ `align` | `opposite` | `left` |
| DEF-38 | Timeline.ItemHorizontal | `line` ↔ `line` | `true` | `solid` |
| DEF-39 | Timeline.ItemVertical | `align` ↔ `align` | `opposite` | `left` |
| DEF-40 | Timeline.ItemVertical | `line` ↔ `line` | `true` | `solid` |
| DEF-41 | Timeline.Marker | `icon` ↔ `icon` | `false` | `` |
| DEF-42 | _❌Button.Badge | `size` ↔ `size` | `xlarge` | `base` |

## P1 — компоненты без Angular-реализации

| ID | repo.angular | Figma-узлы | Суть | Сторона |
|---|---|---|---|---|
| GAP-1 | `src/lib/components/multiselect` | MultiSelect, MultiSelect.Group, MultiSelect.Option, MultiSelect.Overlay | папки нет в `main` (есть в ветке) | Angular / решение |
| GAP-2 | `src/stories/components/p-data-table` | DataTable.BodyCellBase, DataTable.FooterCellBase, DataTable.HeaderCellBase, DataTable.HeaderCellFilter, DataTable.Constraint, DataTable.ConstraintList, DataTable.OverlayPopover, DataTable.OverlaySelect, DataTable.RowToggleButton | `repo` ведёт на сторис без `@Component` | Angular / решение |
| GAP-3 | `— (нет repo.angular)` | _❌FloatLabel, MenuItem.Base, MenuItem.Group, MenuItem.Node, MenuItem.Template, ActionIcon | нет `repo.angular` — модель/устаревшее/не реализовано | Angular / решение |

## P2 — ошибки данных Figma

| ID | Узлы | Суть | Сторона |
|---|---|---|---|
| — | — | нет | — |

## P3 — слоты без реализации (обзор)

Помечено `⚠️ отсутствует` слотов: **201** в **96** узлах.

> ⚠️ **Осторожно, завышено:** матчинг слот↔Input идёт **по имени**. Многие «gap» — ложные (напр. `text-button`→`label`, `↳ change-icon`→`icon` реализованы, но под другим именем). Задача SLOT-1: завести таблицу **ролевых алиасов слотов** или проверить вручную; не считать эти `⚠️` подтверждёнными расхождениями до проверки.

| ID | Задача | Сторона |
|---|---|---|
| SLOT-1 | Ролевой маппинг слотов (Figma TEXT/INSTANCE_SWAP → Angular Input по роли) вместо матчинга по имени | Документация + генератор |

## Справочно (не задачи)

- `figmaOnly` всего: **517** — свойства только во Figma (штатно → блок «Для дизайнеров»).
- `angularOnly` всего: **1123** — свойства только в Angular (штатно → блок «Для разработчиков»).
- Детализация по каждому компоненту — в соответствующем `api-alignment-<name>.md`.
60 changes: 60 additions & 0 deletions docs/api-alignment/INDEX.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# API Alignment — индекс (по Angular-компонентам)

Angular-компонентов: 54. Источник данных: `docs/figma-angular-api-map.json`.

План работ по расхождениям: [BACKLOG.md](BACKLOG.md).

- [accordion](api-alignment-accordion.md) — 2 узл.: Accordion, Accordion.Panel
- [autocomplete](api-alignment-autocomplete.md) — 4 узл.: AutoComplete, AutoComplete.Group, AutoComplete.Option, AutoComplete.Overlay
- [avatar](api-alignment-avatar.md) — 1 узл.: Avatar
- [badge](api-alignment-badge.md) — 1 узл.: Badge
- [breadcrumb](api-alignment-breadcrumb.md) — 2 узл.: Breadcrumb, Breadcrumb.Item
- [button](api-alignment-button.md) — 7 узл.: Button.Base, Button.Danger, Button.Info, Button.Success, Button.Warning, _❌Button.Badge, _Button
- [card](api-alignment-card.md) — 1 узл.: Card
- [carousel](api-alignment-carousel.md) — 2 узл.: Carousel, Carousel.Indicator
- [checkbox](api-alignment-checkbox.md) — 1 узл.: Checkbox
- [chip](api-alignment-chip.md) — 2 узл.: Chip, _❌Chips
- [confirm-dialog](api-alignment-confirm-dialog.md) — 1 узл.: ConfirmDialog
- [date-picker](api-alignment-date-picker.md) — 4 узл.: DatePicker.Panel, DatePicker, DatePicker.Date, DatePicker.TimePicker
- [dialog](api-alignment-dialog.md) — 2 узл.: Dialog, Modal window
- [divider](api-alignment-divider.md) — 1 узл.: Divider
- [drawer](api-alignment-drawer.md) — 1 узл.: Drawer
- [fileupload](api-alignment-fileupload.md) — 3 узл.: FileUpload, FileUpload.Drag&Drop, Fileupload.File
- [galleria](api-alignment-galleria.md) — 5 узл.: Galleria, Galleria.Indicator, Galleria.ThumbnailImage, Galleria.NavigatorButton, Galleria.ThumbnailButton
- [inputgroup](api-alignment-inputgroup.md) — 2 узл.: InputGroup, InputGroup.Addon
- [inputmask](api-alignment-inputmask.md) — 1 узл.: InputMask
- [inputnumber](api-alignment-inputnumber.md) — 2 узл.: InputNumber, InputNumber.Buttons
- [inputotp](api-alignment-inputotp.md) — 2 узл.: InputOtp, InputOtp.Item
- [inputtext](api-alignment-inputtext.md) — 1 узл.: InputText
- [listbox](api-alignment-listbox.md) — 7 узл.: Listbox, Listbox.Item, Listbox.ItemCheckbox, Listbox.ItemGroup, Listbox.ItemIcon, Listbox.ItemTemplate, Listbox.Filter
- [megamenu](api-alignment-megamenu.md) — 7 узл.: MegaMenu, MegaMenu.Item.Group, MegaMenu.ItemBase, MegaMenu.ItemTemplate, MegaMenu.MobileButton, MegaMenu.Submenu, _❌MegaMenu
- [menu](api-alignment-menu.md) — 5 узл.: Menu, Menu.ItemBase, Menu.ItemTemplate, Menu.Submenu, _❌Menu
- [menubar](api-alignment-menubar.md) — 8 узл.: Menubar, Menubar.Item.Group, Menubar.ItemBase, Menubar.ItemTemplate, Menubar.MobileButton, Menubar.MobileIndent, Menubar.Submenu, _❌Menubar
- [message](api-alignment-message.md) — 4 узл.: Message, _Message.ButtonClose, _❌Message, _Message.ButtonClose
- [metergroup](api-alignment-metergroup.md) — 3 узл.: MeterGroup, MeterGroup.LabelIcon, MeterGroup.Item
- [multiselect](api-alignment-multiselect.md) ⚠️ — 4 узл.: MultiSelect, MultiSelect.Group, MultiSelect.Option, MultiSelect.Overlay
- [paginator](api-alignment-paginator.md) — 2 узл.: Paginator, Paginator.Item
- [panelmenu](api-alignment-panelmenu.md) — 5 узл.: PanelMenu.ItemBase, PanelMenu.ItemTemplate, PanelMenu.Panel, PanelMenu.Submenu, _❌PanelMenu
- [password](api-alignment-password.md) — 4 узл.: Password.Feedback, Password, Password.TextFeedback, Password.Meter
- [popover](api-alignment-popover.md) — 1 узл.: Popover
- [progressbar](api-alignment-progressbar.md) — 1 узл.: ProgressBar
- [progressspinner](api-alignment-progressspinner.md) — 2 узл.: ProgressSpinner, ProgressSpinner.Item
- [radiobutton](api-alignment-radiobutton.md) — 1 узл.: RadioButton
- [rating](api-alignment-rating.md) — 3 узл.: Rating, Rating.Item, Rating.Clear
- [scroll-panel](api-alignment-scroll-panel.md) — 1 узл.: ScrollPanel
- [select](api-alignment-select.md) — 4 узл.: Select.Overlay, Select, Select.Group, Select.Option
- [select-button](api-alignment-select-button.md) — 2 узл.: SelectButton, SelectButton.Item
- [skeleton](api-alignment-skeleton.md) — 1 узл.: Skeleton
- [slider](api-alignment-slider.md) — 1 узл.: Slider
- [stepper](api-alignment-stepper.md) — 4 узл.: Stepper, Stepper.Item, Stepper.StepPanel, Stepper.Separator
- [tabs](api-alignment-tabs.md) — 4 узл.: Tabs, Tabs.NavButton, Tabs.Tab, Tabs.Tabpanel
- [tag](api-alignment-tag.md) — 1 узл.: Tag
- [textarea](api-alignment-textarea.md) — 1 узл.: Textarea
- [tieredmenu](api-alignment-tieredmenu.md) — 6 узл.: TieredMenu, TieredMenu.ItemBase, TieredMenu.ItemTemplate, TieredMenu.MobileIndent, TieredMenu.Submenu, _❌TieredMenu
- [timeline](api-alignment-timeline.md) — 4 узл.: Timeline, Timeline.ItemHorizontal, Timeline.ItemVertical, Timeline.Marker
- [toast](api-alignment-toast.md) — 2 узл.: Toast, _Toast.ButtonClose
- [togglebutton](api-alignment-togglebutton.md) — 1 узл.: ToggleButton
- [toggleswitch](api-alignment-toggleswitch.md) — 1 узл.: ToggleSwitch
- [tooltip](api-alignment-tooltip.md) — 1 узл.: Tooltip
- [p-data-table](api-alignment-p-data-table.md) ⚠️ — 9 узл.: DataTable.BodyCellBase, DataTable.FooterCellBase, DataTable.HeaderCellBase, DataTable.HeaderCellFilter, DataTable.Constraint, DataTable.ConstraintList, DataTable.OverlayPopover, DataTable.OverlaySelect, DataTable.RowToggleButton
- [_unmapped](api-alignment-_unmapped.md) ⚠️ — 6 узл.: _❌FloatLabel, MenuItem.Base, MenuItem.Group, MenuItem.Node, MenuItem.Template, ActionIcon
131 changes: 131 additions & 0 deletions docs/api-alignment/api-alignment-_unmapped.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# _unmapped

Angular: ⚠️ реализация не найдена в коде
Figma-узлов: 6 — [_❌FloatLabel](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=2235-13688), [MenuItem.Base](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=882-572), [MenuItem.Group](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=882-853), [MenuItem.Node](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=792-5765), [MenuItem.Template](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=937-6724), [ActionIcon](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=397-1795)

## Для разработчиков (Angular API)

⚠️ компонент не найден в коде

## Соответствие по Figma-узлам

### _❌FloatLabel · Figma nodeId `2235:13688` · 🔴 Deprecated · [🔗 Figma](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=2235-13688)

#### Слоты → Темплейты

| Слот (Figma) | Тип вложения | Реализация |
|---|---|---|
| — | — | Слотов нет |

#### Для дизайнеров (Figma API)

- `show-clear` (BOOLEAN), default `True`
- `show-text-input` (BOOLEAN), default `True`
- `show-loader` (BOOLEAN), default `True`
- `state` (VARIANT): default | hover | focus | danger | disabled, default `default`
- `label-position` (VARIANT): top | base, default `base`
- `label-placement` (VARIANT): inside | outside, default `inside`
- `textarea` (VARIANT): false | true, default `false`

#### Общие API

| Параметр | Тип | Комментарий |
|---|---|---|
| — | — | Полных совпадений по имени нет — параметры разнесены по разделам выше |

### MenuItem.Base · Figma nodeId `882:572` · 🚧 Mixins · [🔗 Figma](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=882-572)

#### Слоты → Темплейты

| Слот (Figma) | Тип вложения | Реализация |
|---|---|---|
| — | — | Слотов нет |

#### Для дизайнеров (Figma API)

- `state` (VARIANT): default | disabled | hover — ⚠️ набор с ошибкой во Figma, дефолты недоступны
- `checked` (VARIANT): false | true — ⚠️ набор с ошибкой во Figma, дефолты недоступны
- `separator` (VARIANT): false | true — ⚠️ набор с ошибкой во Figma, дефолты недоступны

#### Общие API

| Параметр | Тип | Комментарий |
|---|---|---|
| — | — | Полных совпадений по имени нет — параметры разнесены по разделам выше |

### MenuItem.Group · Figma nodeId `882:853` · 🚧 Mixins · [🔗 Figma](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=882-853)

#### Слоты → Темплейты

| Слот (Figma) | Тип вложения | Реализация |
|---|---|---|
| `text-menuitem` (TEXT) | ограничен (текст) | ⚠️ отсутствует |

#### Для дизайнеров (Figma API)

- `text-menuitem` (TEXT), default `Menuitem`
- `disabled` (VARIANT): false | true, default `false`

#### Общие API

| Параметр | Тип | Комментарий |
|---|---|---|
| — | — | Полных совпадений по имени нет — параметры разнесены по разделам выше |

### MenuItem.Node · Figma nodeId `792:5765` · 🚧 Mixins · [🔗 Figma](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=792-5765)

#### Слоты → Темплейты

| Слот (Figma) | Тип вложения | Реализация |
|---|---|---|
| `↳ change-layout-list` (INSTANCE_SWAP) | ограничен (компонент) | ⚠️ отсутствует |

#### Для дизайнеров (Figma API)

- `↳ change-layout-list` (INSTANCE_SWAP), default `13110:19798`
- `show-list` (BOOLEAN), default `True`

#### Общие API

| Параметр | Тип | Комментарий |
|---|---|---|
| — | — | Полных совпадений по имени нет — параметры разнесены по разделам выше |

### MenuItem.Template · Figma nodeId `937:6724` · 🚧 Mixins · [🔗 Figma](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=937-6724)

#### Слоты → Темплейты

| Слот (Figma) | Тип вложения | Реализация |
|---|---|---|
| — | — | Слотов нет |

#### Для дизайнеров (Figma API)

- `checked` (VARIANT): false | true — ⚠️ набор с ошибкой во Figma, дефолты недоступны
- `separator` (VARIANT): false | true — ⚠️ набор с ошибкой во Figma, дефолты недоступны
- `state` (VARIANT): default | disabled | hover — ⚠️ набор с ошибкой во Figma, дефолты недоступны

#### Общие API

| Параметр | Тип | Комментарий |
|---|---|---|
| — | — | Полных совпадений по имени нет — параметры разнесены по разделам выше |

### ActionIcon · Figma nodeId `397:1795` · 🚧 Mixins · [🔗 Figma](https://www.figma.com/design/Khh7arsuXss3ncqy1Dz3OZ/UI-Kit--DS--v2.0?node-id=397-1795)

#### Слоты → Темплейты

| Слот (Figma) | Тип вложения | Реализация |
|---|---|---|
| `change-icon` (INSTANCE_SWAP) | ограничен (компонент) | ⚠️ отсутствует |

#### Для дизайнеров (Figma API)

- `change-icon` (INSTANCE_SWAP), default `428:1981`
- `state` (VARIANT): default | hover | disabled, default `default`

#### Общие API

| Параметр | Тип | Комментарий |
|---|---|---|
| — | — | Полных совпадений по имени нет — параметры разнесены по разделам выше |
Loading
Loading