# frontend-ui-catalog Specification ## Purpose Предоставляет участникам разработки воспроизводимый обзор ограниченного набора реальных UI-компонентов и композиций WealthLedger для выбора решений на общей визуальной основе приложения. ## Requirements ### Requirement: Каталог предоставляет определённый набор реальных компонентов Участники разработки SHALL иметь один доступный каталог с явно определённым ограниченным набором реальных компонентов и UI-композиций WealthLedger, их назначением, поддерживаемыми вариантами, применимыми состояниями и правилами использования. Основное содержание SHALL показывать решения, используемые приложением. Библиотечные примитивы MAY быть вспомогательными примерами принятых конфигураций, но MUST NOT подменять продуктовые компоненты и композиции. Каталог MUST демонстрировать реальное поведение компонентов на общей визуальной основе приложения, а не независимые имитации. Отсутствие компонента в каталоге MUST NOT означать его отсутствие в приложении или запрет использования. #### Scenario: Участник выбирает готовое решение - **WHEN** участник просматривает включённый в каталог компонент - **THEN** он видит его назначение, доступные варианты и состояния и может сопоставить их с потребностью интерфейса на визуальной основе WealthLedger #### Scenario: Участник изучает принятый UI-паттерн - **WHEN** участник выбирает композицию или компонент из основного набора - **THEN** он видит реальное решение WealthLedger, его назначение, состояния и ограничения применения, а не только стандартный пример UI-библиотеки #### Scenario: Компонент не входит в начальный набор - **WHEN** участник ищет компонент за пределами объявленного набора - **THEN** граница покрытия каталога остаётся явной, без заявления о полноте каталогизации приложения ### Requirement: Примеры воспроизводят состояния и взаимодействия изолированно Каталог SHALL позволять воспроизводимо просматривать объявленные варианты и состояния без прохождения полного пользовательского сценария приложения. Интерактивные примеры SHALL позволять наблюдать поддерживаемые взаимодействия. Примеры MUST сохранять применимые правила доступности и UI-состояний приложения и MUST NOT вводить конкурирующую модель их поведения. Состояния, неприменимые к компоненту, MUST NOT требоваться только ради заполнения каталога. #### Scenario: Участник повторно открывает пример - **WHEN** участник повторно выбирает тот же объявленный вариант и состояние - **THEN** каталог воспроизводит соответствующий пример без предварительного прохождения инвестиционного сценария #### Scenario: Участник взаимодействует с компонентом - **WHEN** участник использует поддерживаемое взаимодействие интерактивного примера, включая клавиатурное управление там, где оно применимо - **THEN** доступное поведение, focus и ограничения состояния соответствуют реальному компоненту приложения #### Scenario: Представлено запросное состояние - **WHEN** пример показывает применимое loading, error, empty или loaded состояние либо отображение ранее полученных данных при refetch - **THEN** пример сохраняет действующую семантику соответствующего состояния приложения и не подменяет её новой каталоговой договорённостью ### Requirement: Каталог сохраняет достоверность и границы демонстрации Каталог SHALL отражать фактические поддерживаемые возможности включённых компонентов и общие визуальные правила приложения. Демонстрационные данные MUST NOT требовать доступа к реальным финансовым данным или секретам пользователя; действия в примерах MUST NOT изменять реальные пользовательские данные. Известное ограничение воспроизведения MUST быть явно обозначено и MUST NOT представляться как подтверждённое продуктовое поведение. #### Scenario: Возможность компонента изменилась - **WHEN** изменённая возможность включённого компонента поставляется - **THEN** каталог показывает соответствующее фактическое поведение и не представляет устаревший вариант как поддерживаемый #### Scenario: Участник выполняет демонстрационное действие - **WHEN** участник открывает пример или выполняет в нём действие - **THEN** для демонстрации не требуются реальные пользовательские финансовые данные или секреты и реальные пользовательские данные остаются неизменными #### Scenario: Изолированный пример имеет ограничение - **WHEN** пример не воспроизводит некоторый аспект полного пользовательского сценария - **THEN** участник видит это ограничение и не получает заявления о проверке полного сценария на основании примера ### Requirement: Каталог разделяет Design System и Product Каталог SHALL иметь два явно различимых содержательных блока: Design System и Product. Design System SHALL показывать foundations из действующей общей темы, семантические роли, используемые шкалы и общие компоненты, их варианты, состояния, доступность и правила применения. Product SHALL содержать реальные бизнес-компоненты и композиции приложения с полезными существующими историями, классифицированными по ответственности без перемещения бизнес-реализаций в общий слой. Оба блока MUST сохранять общую тему и изоляцию от application API, auth и данных пользователя. #### Scenario: Участник открывает Design System - **WHEN** выбран блок Design System - **THEN** доступны наглядные foundations с актуальными значениями токенов, общие empty/error и loading компоненты, а также принятые конфигурации примитивов с правилами использования и применимыми интерактивными состояниями #### Scenario: Участник открывает Product - **WHEN** выбран блок Product - **THEN** доступны существующие примеры списка счетов, карточек позиций, событий, обновления сохранённых сумм и skeleton страницы с их вариантами и ограничениями #### Scenario: Оценивается готовность каталога - **WHEN** каталог представлен как поставленный результат - **THEN** существуют общий фундамент и оба содержательных блока, проверены отображение и применимые взаимодействия, явно описаны границы покрытия; сборка и наличие stories сами по себе не доказывают полноту или продуктовый пилот