@sberbusiness/triplex-next-mcp-server 1.48.0-beta → 1.50.0-beta

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 (77) hide show
  1. package/bundle/components/Amount.md +2 -1
  2. package/bundle/components/Badge.md +2 -1
  3. package/bundle/components/BodyPage.md +2 -1
  4. package/bundle/components/Button.md +5 -1
  5. package/bundle/components/ButtonDropdownExtended.md +3 -1
  6. package/bundle/components/ButtonIcon.md +3 -1
  7. package/bundle/components/Calendar.md +3 -1
  8. package/bundle/components/CardAction.md +1 -0
  9. package/bundle/components/CheckboxXGroup.md +2 -1
  10. package/bundle/components/Chip.md +2 -1
  11. package/bundle/components/ChipMonthYearPicker.md +2 -1
  12. package/bundle/components/ChipMultiselect.md +4 -1
  13. package/bundle/components/ChipOptions.md +2 -1
  14. package/bundle/components/ChipSort.md +4 -1
  15. package/bundle/components/CollapsibleTree.md +2 -1
  16. package/bundle/components/ComposedKeyDownListener.md +4 -3
  17. package/bundle/components/DateField.md +7 -1
  18. package/bundle/components/Divider.md +85 -138
  19. package/bundle/components/DocumentNumberEdit.md +173 -214
  20. package/bundle/components/Dropdown.md +11 -1
  21. package/bundle/components/Ellipsis.md +131 -147
  22. package/bundle/components/FooterPage.md +3 -1
  23. package/bundle/components/FormField.md +2 -1
  24. package/bundle/components/Gap.md +1 -1
  25. package/bundle/components/Header.md +1 -0
  26. package/bundle/components/HeaderPage.md +3 -1
  27. package/bundle/components/HelpBox.md +2 -1
  28. package/bundle/components/IconWrapper.md +10 -6
  29. package/bundle/components/ImageGallery.md +2 -1
  30. package/bundle/components/ImageGalleryExtended.md +2 -1
  31. package/bundle/components/IslandAccordion.md +6 -1
  32. package/bundle/components/KeyDownListener.md +3 -2
  33. package/bundle/components/LightBox.md +7 -1
  34. package/bundle/components/List.md +2 -1
  35. package/bundle/components/ListActionItem.md +2 -1
  36. package/bundle/components/ListItem.md +3 -1
  37. package/bundle/components/ListItemControlsButton.md +2 -1
  38. package/bundle/components/ListItemSelectable.md +2 -1
  39. package/bundle/components/ListMasterFooter.md +2 -1
  40. package/bundle/components/ListMasterHeader.md +2 -1
  41. package/bundle/components/ListSortable.md +2 -1
  42. package/bundle/components/ListSortableItem.md +2 -1
  43. package/bundle/components/ListTableItem.md +4 -1
  44. package/bundle/components/LoaderMiddle.md +5 -1
  45. package/bundle/components/LoaderScreen.md +7 -1
  46. package/bundle/components/LoaderSmall.md +10 -4
  47. package/bundle/components/MaskedField.md +3 -1
  48. package/bundle/components/MediaWidth.md +2 -1
  49. package/bundle/components/MobileView.md +2 -1
  50. package/bundle/components/ModalWindow.md +4 -1
  51. package/bundle/components/MonthYearField.md +4 -1
  52. package/bundle/components/Notification.md +1 -0
  53. package/bundle/components/Overlay.md +7 -2
  54. package/bundle/components/Pagination.md +1 -7
  55. package/bundle/components/Radio.md +238 -115
  56. package/bundle/components/RadioXGroup.md +259 -0
  57. package/bundle/components/RadioYGroup.md +266 -0
  58. package/bundle/components/SegmentedControl.md +505 -158
  59. package/bundle/components/SelectExtendedField.md +2 -1
  60. package/bundle/components/SelectField.md +4 -1
  61. package/bundle/components/Skeleton.md +140 -69
  62. package/bundle/components/Spoiler.md +245 -63
  63. package/bundle/components/Step.md +257 -68
  64. package/bundle/components/SuggestField.md +30 -18
  65. package/bundle/components/Tabs.md +2 -1
  66. package/bundle/components/TabsLine.md +2 -1
  67. package/bundle/components/TextField.md +8 -4
  68. package/bundle/components/TextareaField.md +2 -1
  69. package/bundle/components/ThemeProvider.md +2 -1
  70. package/bundle/components/Tooltip.md +6 -3
  71. package/bundle/guides/context.md +4 -1
  72. package/bundle/manifest.json +32 -10
  73. package/bundle/release-notes/1.49.0.mdx +78 -0
  74. package/bundle/release-notes/1.50.0.mdx +35 -0
  75. package/bundle/release-notes/1.51.0.mdx +7 -0
  76. package/bundle/tokens.json +161 -11
  77. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: SelectExtendedField
3
3
  category: SelectExtendedField
4
- related: [SelectField, MultiselectField, SuggestField, Chip, Dropdown, FormField, KeyDownListener, IconWrapper, LoaderSmall]
4
+ related: [SelectField, MultiselectField, SuggestField, Dropdown, FormField, KeyDownListener, IconWrapper, LoaderSmall]
5
5
  tokens: []
6
6
  stories: stories/SelectExtendedField/SelectExtendedField.stories.tsx
7
7
  version: "1.0"
@@ -203,6 +203,7 @@ version: "1.0"
203
203
  |---|---|
204
204
  | 2026-08-07 | Создан документ AI-ready для `SelectExtendedField` (TRI-74). |
205
205
  | 2026-08-07 | AI-рефакторинг (TRI-74): `onOpen` / `onClose` сравнивают предыдущее значение `opened` вместо флага «смонтирован» — колбэки больше не срабатывают ложно при двойном маунте в React 18 StrictMode. Удалены ссылки на несуществующие CSS-классы в `SelectExtendedFieldTarget` (в `class` попадал литерал `undefined`). Клик по кнопке очистки больше не раскрывает выпадающий блок — всплытие останавливается, как в `Chip.Select`. Слушатель `mousedown` навешивается только пока блок открыт, callback-ref стабилизирован через `useCallback`, убран мёртвый внутренний `targetRef` в `SelectExtendedFieldTarget`, дедуплицирован список опций десктопной и мобильной версий в `SelectExtendedFieldDropdownDefault`. JSDoc на всех props, unit-тесты разбиты по субкомпонентам и расширены с 42 до 69 кейсов. Stories переведены на modern pattern. Публичный API не изменён. |
206
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны несимметричные имена (`Chip`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
206
207
 
207
208
  ---
208
209
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  component: SelectField
3
3
  category: SelectField
4
- related: [SelectExtendedField, MultiselectField, SuggestField, Chip, Dropdown, Pagination]
4
+ related: [SelectExtendedField, MultiselectField, SuggestField, Dropdown, Pagination, FormField]
5
5
  tokens: []
6
6
  stories: stories/SelectField/SelectField.stories.tsx
7
7
  version: "1.0"
@@ -171,6 +171,8 @@ version: "1.0"
171
171
  `IChipSelectProps` собирается из `ISelectFieldProps`.
172
172
  - `Dropdown` — выпадающий блок, `DropdownList` / `DropdownListItem` и `DropdownListContext`,
173
173
  через который поднимается активная опция для `aria-activedescendant`.
174
+ - `FormField` — семейство строительных блоков поля: `SelectExtendedField.Target` собран на `FormFieldTarget`,
175
+ поэтому лейбл, статусы и слоты приходят в публичный API `SelectField` оттуда.
174
176
  - `Pagination` — потребитель внутри библиотеки: `PaginationSelect` оборачивает `SelectField`
175
177
  для выбора количества элементов на странице и опирается на проброс `aria-labelledby`
176
178
  и на пустой `targetProps.fieldLabel`.
@@ -203,6 +205,7 @@ version: "1.0"
203
205
  | Дата | Изменение |
204
206
  |---|---|
205
207
  | 2026-09-03 | Создан документ (TRI-75). AI-рефакторинг: удалён мёртвый внутренний `targetRef`, внешний `ref` пробрасывается напрямую и больше не пересоздаётся на каждый рендер; идентификатор списка переведён с `useRef(uniqueId())` на `useState(() => uniqueId())`, чтобы счётчик не крутился на каждом рендере; параметры рендер-функций перестали затенять `props` компонента; импорты приведены к алиасу пакета; JSDoc на всех props и на компоненте. Unit-тесты расширены с 15 до 24 кейсов (`onChange` с аргументом, опции и выбранное значение, `aria-activedescendant` через `DropdownListContext`, стабильность `listId`, ref-target). Stories переведены на modern pattern, `States` разделена на `Statuses` и `Loading`. Публичный API не изменён |
208
+ | 2026-09-29 | Аудит симметрии `related` (TRI-156): из `related` убраны несимметричные имена (`Chip`); добавлены обратные ссылки (`FormField`). Пояснения к убранным именам сохранены прозой в «Связанные компоненты»; публичный API и поведение не затронуты. |
206
209
 
207
210
  ---
208
211
 
@@ -1,10 +1,14 @@
1
1
  ---
2
2
  component: Skeleton
3
- category: Feedback
4
- figma-node: ""
5
- figma-file: ""
6
- related: [Loader, LoaderScreen]
7
- tokens: [triplex-next-Skeleton-BackgroundColor_Light_Start, triplex-next-Skeleton-BackgroundColor_Light_End, triplex-next-Skeleton-BackgroundColor_Dark_Start, triplex-next-Skeleton-BackgroundColor_Dark_End]
3
+ category: Loaders
4
+ related: [LoaderMiddle]
5
+ tokens:
6
+ - Skeleton.BackgroundColor_Type1_Start
7
+ - Skeleton.BackgroundColor_Type1_End
8
+ - Skeleton.BackgroundColor_Type2_Start
9
+ - Skeleton.BackgroundColor_Type2_End
10
+ - Skeleton.BackgroundColor_Type3_Start
11
+ - Skeleton.BackgroundColor_Type3_End
8
12
  stories: stories/Skeleton/Skeleton.stories.tsx
9
13
  version: "1.0"
10
14
  ---
@@ -13,112 +17,112 @@ version: "1.0"
13
17
 
14
18
  ## Назначение
15
19
 
16
- Плейсхолдер для загружающегося контента — пульсирующий `<div>` с
17
- `border-radius: 16px` и `flex-grow: 1`. Поддерживает две темы (`DARK` /
18
- `LIGHT`) — отличаются фоновыми переменными в @keyframes.
20
+ Плейсхолдер-блок на месте контента, который ещё не загрузился: скруглённый прямоугольник, пульсирующий цветом фона. Форму и размер задаёт не компонент, а потребитель — собственных размеров у `Skeleton` нет.
19
21
 
20
- Используй когда: показываешь shape будущего контента, чтобы избежать
21
- layout shift и психологически сократить ощущаемое время загрузки. Для
22
- точечного индикатора — `Loader`/`LoaderScreen`.
22
+ Используй когда: известна будущая раскладка экрана и нужно показать её каркас во время загрузки — карточки, строки списка, аватары, блоки текста. Скелетон сохраняет геометрию страницы и не даёт контенту «прыгать» после загрузки.
23
23
 
24
- ---
25
-
26
- ## Файловая структура
27
-
28
- ```text
29
- src/components/Skeleton/
30
- ├── Skeleton.tsx # FC; <div> + класс по type
31
- ├── enums.ts # ESkeletonType (DARK | LIGHT)
32
- ├── styles/Skeleton.module.less # 2 @keyframes пульсации
33
- ├── index.ts
34
- └── __tests__/
35
- ```
24
+ Не используй когда:
25
+ - Раскладка заранее неизвестна или загрузка короткая — возьми спиннер: `LoaderSmall` (внутри кнопки/поля), `LoaderMiddle` (внутри блока), `LoaderScreen` (поверх области с затемнением).
26
+ - Нужно перекрыть уже отрисованный контент на время обновления — это `LoaderScreen`, а не скелетон.
27
+ - Нужен просто пустой отступ — `Gap`.
36
28
 
37
29
  ---
38
30
 
39
31
  ## Варианты и props
40
32
 
41
- ### `ISkeletonProps extends HTMLAttributes<HTMLDivElement>`
33
+ ### Обязательные props
42
34
 
43
- | Prop | Тип | Default | Описание |
44
- |---|---|---|---|
45
- | `type` | `ESkeletonType` | `DARK` | Тема (DARK/LIGHT). Влияет на анимационные переменные. |
46
- | `...HTMLAttributes` | — | — | На `<div>`. Размер задаётся через `style`/`className`. |
35
+ Обязательных props нет.
47
36
 
48
- ### Enum
37
+ ### Опциональные props
49
38
 
50
- - `ESkeletonType.DARK | LIGHT`.
39
+ | Prop | Тип | По умолчанию | Описание |
40
+ |---|---|---|---|
41
+ | `type` | `ESkeletonType` | `ESkeletonType.TYPE_2` | Цветовая схема пульсации под фон, на котором лежит скелетон. |
51
42
 
52
- ---
43
+ Компонент расширяет `React.HTMLAttributes<HTMLDivElement>` — принимает все стандартные атрибуты `<div>` (`className`, `style`, `aria-*`, `data-*` и т.д.).
53
44
 
54
- ## Ключевые особенности реализации
45
+ ### Значения `ESkeletonType`
55
46
 
56
- ### Анимация — 2s ease-in-out infinite через background-color keyframes
47
+ | Значение | Заливка | Для какого фона |
48
+ |---|---|---|
49
+ | `TYPE_1` | Непрозрачные нейтральные серые | Светло-серые поверхности, где полупрозрачность «проваливается» и скелетон плохо виден |
50
+ | `TYPE_2` (по умолчанию) | Полупрозрачный тёмный тинт | Обычные светлые поверхности (белая карточка, фон страницы) |
51
+ | `TYPE_3` | Полупрозрачный светлый тинт | Тёмные и брендовые цветные поверхности |
57
52
 
58
- ```less
59
- .skeleton.dark { animation: skeleton-dark-pulse 2s ease-in-out infinite; }
60
- @keyframes skeleton-dark-pulse {
61
- 0% { background-color: var(--triplex-next-Skeleton-BackgroundColor_Dark_Start); }
62
- 50% { background-color: var(--triplex-next-Skeleton-BackgroundColor_Dark_End); }
63
- 100% { background-color: var(--triplex-next-Skeleton-BackgroundColor_Dark_Start); }
64
- }
65
- ```
53
+ `TYPE_2` и `TYPE_3` — полупрозрачные: результат зависит от того, что лежит под скелетоном. В тёмной теме пары токенов инвертированы, поэтому смысл («тинт по контрасту к своей поверхности») сохраняется в обеих темах и подбирать `type` под тему вручную не нужно — только под фон.
66
54
 
67
- - Пульсация Start ↔ End ↔ Start.
68
- - **`prefers-reduced-motion`** не учитывается — потенциальный a11y-долг.
55
+ ### Ограничения
69
56
 
70
- ### `border-radius: 16px`, `flex-grow: 1`
57
+ - **У компонента нет собственных размеров.** В стилях заданы только `border-radius: 16px` и `flex-grow: 1`. Без размера от потребителя скелетон схлопнется в нулевую высоту. Задавай размер одним из способов: `style`/`className` с `width`/`height`, либо положи скелетон во flex-контейнер с заданной высотой — тогда сработает `flex-grow`.
58
+ - `border-radius` фиксирован в стилях и через props не настраивается — перекрывается только собственным `className`/`style`.
59
+ - `Skeleton` задуман как пустой плейсхолдер. `children` технически проходят на корневой `<div>` через spread и отрисуются, но контент внутри пульсирующего блока не предусмотрен дизайном — каркас из нескольких блоков собирается композицией нескольких `Skeleton` в разметке потребителя.
71
60
 
72
- - Скругление **захардкожено** (16px). Для других форм (круги аватаров, узкие линии текста) — потребитель override через className/style.
73
- - `flex-grow: 1` — растягивается во flex-контейнере. **В блочном родителе** Skeleton сам по себе не имеет ширины — нужна `style.width` или `className` с шириной.
61
+ ---
74
62
 
75
- ### **`FC, не forwardRef`**
63
+ ## Дизайн-токены
76
64
 
77
- - Ref на `<div>` не пробрасывается.
65
+ Переопределяются через `ThemeProvider` (prop `tokens`) — см. `ThemeProvider-ai.md` →
66
+ «Как переопределять токены». Значения по умолчанию — `src/components/DesignTokens/components/Skeleton.ts`.
78
67
 
79
- ### **Нет `aria-busy`/`role="status"`**
68
+ ```text
69
+ Skeleton.BackgroundColor_Type1_Start
70
+ Skeleton.BackgroundColor_Type1_End
71
+ Skeleton.BackgroundColor_Type2_Start
72
+ Skeleton.BackgroundColor_Type2_End
73
+ Skeleton.BackgroundColor_Type3_Start
74
+ Skeleton.BackgroundColor_Type3_End
75
+ ```
80
76
 
81
- - Skeleton — чисто визуальный. AT не озвучивает «загрузка». Если важно — потребитель добавляет `role="status"` / `aria-busy="true"` через `...rest`.
77
+ Пара `Start`/`End` задаёт ключевые кадры пульсации: `Start` — состояние на 0% и 100%, `End` — на 50%. Переопределять их имеет смысл только парой, иначе анимация станет несимметричной.
82
78
 
83
79
  ---
84
80
 
85
81
  ## Инварианты
86
82
 
87
- - **`type` default `DARK`**.
88
- - **`border-radius: 16px`** захардкожено — изменение требует override.
89
- - **`flex-grow: 1`** захардкожено — поведение во flex-контейнере.
90
- - **Анимация 2s ease-in-out infinite** — захардкожено, не настраивается.
91
- - **CSS-переменные `--triplex-next-Skeleton-BackgroundColor_{Light|Dark}_{Start|End}`** — публичные токены.
92
- - **`FC, не forwardRef`**.
93
- - **`prefers-reduced-motion` не учитывается** — тех-долг.
94
- - **`data-tx`** — версия пакета.
83
+ - **`forwardRef`** — обязателен, не убирать. `ref` пробрасывается на корневой `<div>`.
84
+ - **Имена публичного API**: компонент `Skeleton`, интерфейс `ISkeletonProps`, prop `type`, enum `ESkeletonType` и его строковые значения (`"type_1"`, `"type_2"`, `"type_3"`) — менять нельзя (breaking change).
85
+ - **Дефолт `type` — `ESkeletonType.TYPE_2`.** Смена дефолта меняет внешний вид у всех, кто не передаёт `type` явно.
86
+ - **`barrel src/components/Skeleton/index.ts`** экспортирует `./Skeleton` и `./enums` — оба экспорта сохранять.
87
+ - **Корневой DOM-элемент — `<div>`** без ARIA-роли; собственного содержимого компонент не рендерит.
88
+ - **`data-tx`** проставляется после спреда `...htmlDivAttributes`, то есть потребитель его не перекрывает. Порядок атрибутов в JSX не менять.
89
+ - **CSS-классы `skeleton`, `type1`, `type2`, `type3`** в `Skeleton.module.less` проверяются unit-тестами. Visual baseline (`loaders-skeleton--visual-tests`) фиксирует только геометрию из `.skeleton`: в story анимация выключена декоратором, а фон задан inline, поэтому цвета типов визуальным тестом не покрыты — классы `type1/2/3` объявляют лишь `animation`, а цвет приходит из `@keyframes`.
90
+ - **`displayName = "Skeleton"`** — проверяется тестом.
91
+ - **Анимация задаётся только в LESS** (`skeleton-type{N}-pulse`, 2s ease-in-out infinite). Имена keyframes локальны для CSS-модуля; потребитель гасит анимацию своим `className`/`style` (story `Visual tests` для скриншотов делает это глобальным правилом `* { animation: none !important; }` в декораторе).
95
92
 
96
93
  ---
97
94
 
98
95
  ## Accessibility
99
96
 
100
- - **Нет `role` / `aria-busy`** по умолчанию — потребитель должен добавить, если нужно.
101
- - **Нет `prefers-reduced-motion` media-query** — анимация играет всегда. Пользователи с предпочтением reduced motion увидят пульсацию (тех-долг).
97
+ Компонент не интерактивный и по смыслу декоративный: в штатном использовании это пустой `<div>` без роли, без текста, без фокуса. ARIA-семантику загрузки компонент намеренно не хардкодит — её задаёт потребитель на контейнере загружаемой области:
102
98
 
103
- ---
99
+ - пометь область `aria-busy="true"` на время загрузки и сними атрибут после;
100
+ - если пользователю нужно объявление о загрузке — сделай `aria-live`-регион с текстом рядом, скелетон для этого не подходит (библиотека мультиязычная, компонент не содержит текста);
101
+ - сами скелетоны имеет смысл скрыть от скринридера (`aria-hidden="true"` через spread) — иначе в дереве доступности остаются пустые узлы.
104
102
 
105
- ## Дизайн-токены
106
-
107
- - `--triplex-next-Skeleton-BackgroundColor_Light_Start` / `_End`.
108
- - `--triplex-next-Skeleton-BackgroundColor_Dark_Start` / `_End`.
103
+ Ограничение: пульсация не отключается по `prefers-reduced-motion` — если это важно, гаси анимацию своим `className`.
109
104
 
110
105
  ---
111
106
 
112
107
  ## Связанные компоненты
113
108
 
114
- - `Loader` / `LoaderScreen` — для активной точечной загрузки.
109
+ - `LoaderMiddle` (`src/components/Loader/`) — спиннер для блока или секции: альтернатива, решающая ту же задачу (первая загрузка блока) другим компромиссом — берётся, когда будущая раскладка заранее неизвестна.
110
+
111
+ `LoaderSmall` (внутри кнопки или поля) и `LoaderScreen` (оверлей поверх уже отрисованного контента при обновлении) решают другие задачи, поэтому в `related` не входят — см. «Не используй когда».
115
112
 
116
113
  ---
117
114
 
118
115
  ## Stories
119
116
 
120
- `stories/Skeleton/Skeleton.stories.tsx`
121
- Примеры: `stories/Skeleton/examples/`
117
+ Основные истории: `stories/Skeleton/Skeleton.stories.tsx`
118
+ Файлы примеров: `stories/Skeleton/examples/`
119
+
120
+ | Story | Example file | Что демонстрирует |
121
+ |---|---|---|
122
+ | `Playground` | — | Интерактивный выбор `type` на макете из списка и карточек |
123
+ | `Default` | `DefaultExample.tsx` | Четыре блока с размерами через `style`, тип по умолчанию |
124
+ | `Types` | `TypesExample.tsx` | `TYPE_1`, `TYPE_2`, `TYPE_3`, каждый на подходящем ему фоне |
125
+ | `VisualTests` | — | Скриншот-регрессия: все три типа с отключённой анимацией |
122
126
 
123
127
  ---
124
128
 
@@ -126,4 +130,71 @@ src/components/Skeleton/
126
130
 
127
131
  | Дата | Изменение |
128
132
  |---|---|
129
- | 2026-04-18 | Создан документ |
133
+ | 2026-09-28 | Создан документ. AI-рефакторинг (TRI-76): `Skeleton` переведён с `React.FC` на `forwardRef`, добавлен `displayName`, JSDoc на интерфейсе props; unit-тесты расширены (ref, `displayName`, `data-tx`, проброс html-атрибутов). |
134
+
135
+ ---
136
+
137
+ ## Примеры использования
138
+
139
+ ### Default
140
+
141
+ `stories/Skeleton/examples/DefaultExample.tsx`
142
+
143
+ ```tsx
144
+ import React from "react";
145
+ import { Skeleton } from "@sberbusiness/triplex-next";
146
+
147
+ export const DefaultExample = () => (
148
+ <div style={{ display: "flex", flexWrap: "wrap", gap: "24px", padding: "24px" }}>
149
+ <Skeleton style={{ height: "80px", width: "calc(50% - 12px)" }} />
150
+ <Skeleton style={{ height: "80px", width: "calc(50% - 12px)" }} />
151
+ <Skeleton style={{ height: "80px", width: "calc(50% - 12px)" }} />
152
+ <Skeleton style={{ height: "80px", width: "calc(50% - 12px)" }} />
153
+ </div>
154
+ );
155
+ ```
156
+
157
+ ### Types
158
+
159
+ `stories/Skeleton/examples/TypesExample.tsx`
160
+
161
+ ```tsx
162
+ import React from "react";
163
+ import { Skeleton, ESkeletonType } from "@sberbusiness/triplex-next";
164
+
165
+ export const TypesExample = () => (
166
+ <div style={{ display: "flex", flexDirection: "column", gap: "24px" }}>
167
+ <div>
168
+ <div style={{ marginBottom: "8px", fontSize: "16px", fontWeight: "700" }}>TYPE_1</div>
169
+ <div style={{ display: "flex", flexWrap: "wrap", gap: "24px", padding: "24px", background: "#EEF0F4" }}>
170
+ <Skeleton type={ESkeletonType.TYPE_1} style={{ height: "80px", width: "calc(50% - 12px)" }} />
171
+ <Skeleton type={ESkeletonType.TYPE_1} style={{ height: "80px", width: "calc(50% - 12px)" }} />
172
+ <Skeleton type={ESkeletonType.TYPE_1} style={{ height: "80px", width: "calc(50% - 12px)" }} />
173
+ <Skeleton type={ESkeletonType.TYPE_1} style={{ height: "80px", width: "calc(50% - 12px)" }} />
174
+ </div>
175
+ </div>
176
+ <div>
177
+ <div style={{ marginBottom: "8px", fontSize: "16px", fontWeight: "700" }}>TYPE_2</div>
178
+ <div style={{ display: "flex", flexWrap: "wrap", gap: "24px", padding: "24px" }}>
179
+ <Skeleton type={ESkeletonType.TYPE_2} style={{ height: "80px", width: "calc(50% - 12px)" }} />
180
+ <Skeleton type={ESkeletonType.TYPE_2} style={{ height: "80px", width: "calc(50% - 12px)" }} />
181
+ <Skeleton type={ESkeletonType.TYPE_2} style={{ height: "80px", width: "calc(50% - 12px)" }} />
182
+ <Skeleton type={ESkeletonType.TYPE_2} style={{ height: "80px", width: "calc(50% - 12px)" }} />
183
+ </div>
184
+ </div>
185
+ <div>
186
+ <div style={{ marginBottom: "8px", fontSize: "16px", fontWeight: "700" }}>TYPE_3</div>
187
+ <div
188
+ className="skeleton-type3-background"
189
+ style={{ display: "flex", flexWrap: "wrap", gap: "24px", padding: "24px" }}
190
+ >
191
+ <Skeleton type={ESkeletonType.TYPE_3} style={{ height: "80px", width: "calc(50% - 12px)" }} />
192
+ <Skeleton type={ESkeletonType.TYPE_3} style={{ height: "80px", width: "calc(50% - 12px)" }} />
193
+ <Skeleton type={ESkeletonType.TYPE_3} style={{ height: "80px", width: "calc(50% - 12px)" }} />
194
+ <Skeleton type={ESkeletonType.TYPE_3} style={{ height: "80px", width: "calc(50% - 12px)" }} />
195
+ </div>
196
+ </div>
197
+ </div>
198
+ );
199
+ ```
200
+