@sberbusiness/triplex-next 0.1.4 → 0.1.6

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 (291) hide show
  1. package/README.md +145 -0
  2. package/chunks/AlertProcessSpoiler-BuN7zhGO.js +39 -0
  3. package/chunks/Card.module-ByP22Mc4.js +17 -0
  4. package/chunks/DropdownListItem-CM0DOekv.js +56 -0
  5. package/chunks/DropdownMobile.module-gjHocEKh.js +19 -0
  6. package/chunks/Footer.module-B1rO0bcd.js +11 -0
  7. package/chunks/FormFieldInput-3TmHcNY0.js +62 -0
  8. package/chunks/HeaderLayoutSidebar.module-CEXHjsmH.js +9 -0
  9. package/chunks/HeaderTabs.module-YFm2izz6.js +9 -0
  10. package/chunks/HeaderTitle.module-lv649tnz.js +9 -0
  11. package/chunks/ListItemControlsButton-BpUzyKya.js +43 -0
  12. package/chunks/ListItemTail.module-D7Oa-l-5.js +12 -0
  13. package/chunks/ListMasterFooter.module-1LjIdZNa.js +10 -0
  14. package/chunks/Overlay.module-BbpDNlm7.js +18 -0
  15. package/chunks/Page.module-DAinpecX.js +16 -0
  16. package/chunks/TabsExtended.module-CQBdl7x1.js +13 -0
  17. package/chunks/TabsExtendedUtils-BT4b2wK1.js +23 -0
  18. package/chunks/TooltipDesktop.module-BRkBuup-.js +19 -0
  19. package/chunks/index-CLQ4mLUp.js +931 -0
  20. package/chunks/utils-VD40Qwop.js +36 -0
  21. package/chunks/vendor-CF2m175I.js +5891 -0
  22. package/components/Alert/AlertContext/AlertContext.js +52 -0
  23. package/components/Alert/AlertProcess/AlertProcess.js +60 -0
  24. package/components/Alert/AlertProcess/AlertProcessContext.js +10 -0
  25. package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +11 -0
  26. package/components/Alert/AlertTypeUtils.js +12 -0
  27. package/components/Alert/EAlertType.js +5 -0
  28. package/components/Alert/index.js +11 -0
  29. package/components/Body/Body.js +12 -0
  30. package/components/Body/index.js +5 -0
  31. package/components/Button/Button.js +14 -0
  32. package/components/Button/ButtonBase.js +8 -0
  33. package/components/Button/ButtonDropdown.js +26 -0
  34. package/components/Button/ButtonDropdownExtended.js +9 -0
  35. package/components/Button/ButtonIcon.js +29 -0
  36. package/components/Button/enums.js +7 -0
  37. package/components/Button/index.js +16 -0
  38. package/components/Card/CardAction.js +109 -0
  39. package/components/Card/CardStatic.js +34 -0
  40. package/components/Card/components/CardContent/CardContent.js +31 -0
  41. package/components/Card/components/CardContent/components/CardContentBody.js +9 -0
  42. package/components/Card/components/CardContent/components/CardContentFooter.js +9 -0
  43. package/components/Card/components/CardContent/components/CardContentHeader.js +9 -0
  44. package/components/Card/components/CardMedia.js +12 -0
  45. package/components/Card/enums.js +7 -0
  46. package/components/Card/index.js +11 -0
  47. package/components/Card/types.js +2 -0
  48. package/components/Card/utils.js +14 -0
  49. package/components/Checkbox/Checkbox.js +36 -0
  50. package/components/Checkbox/CheckboxXGroup.js +20 -0
  51. package/components/Checkbox/CheckboxYGroup.js +13 -0
  52. package/components/Checkbox/enum.js +5 -0
  53. package/components/Checkbox/index.js +11 -0
  54. package/components/Col/Col.js +183 -0
  55. package/components/Col/index.js +5 -0
  56. package/components/DesignTokens/DesignTokenUtils.js +82 -0
  57. package/components/DesignTokens/DesignTokensComponents.js +111 -0
  58. package/components/DesignTokens/DesignTokensComponentsThemeDark.js +111 -0
  59. package/components/DesignTokens/DesignTokensCore.js +466 -0
  60. package/components/DesignTokens/DesignTokensCoreThemeDark.js +6 -0
  61. package/components/DesignTokens/GetTokensValueByTheme.js +11 -0
  62. package/components/DesignTokens/components/AlertContext.js +20 -0
  63. package/components/DesignTokens/components/AlertProcess.js +23 -0
  64. package/components/DesignTokens/components/Button.js +107 -0
  65. package/components/DesignTokens/components/Card.js +53 -0
  66. package/components/DesignTokens/components/Checkbox.js +35 -0
  67. package/components/DesignTokens/components/Dropdown.js +11 -0
  68. package/components/DesignTokens/components/DropdownList.js +20 -0
  69. package/components/DesignTokens/components/DropdownMobile.js +23 -0
  70. package/components/DesignTokens/components/DropdownMobileList.js +11 -0
  71. package/components/DesignTokens/components/FooterPage.js +9 -0
  72. package/components/DesignTokens/components/FormField.js +50 -0
  73. package/components/DesignTokens/components/HeaderPage.js +9 -0
  74. package/components/DesignTokens/components/Link.js +20 -0
  75. package/components/DesignTokens/components/ListItem.js +20 -0
  76. package/components/DesignTokens/components/ListItemControlsButton.js +11 -0
  77. package/components/DesignTokens/components/ListMaster.js +23 -0
  78. package/components/DesignTokens/components/Loader.js +11 -0
  79. package/components/DesignTokens/components/LoaderWidget.js +17 -0
  80. package/components/DesignTokens/components/Overlay.js +11 -0
  81. package/components/DesignTokens/components/Page.js +9 -0
  82. package/components/DesignTokens/components/Pagination.js +23 -0
  83. package/components/DesignTokens/components/Radio.js +41 -0
  84. package/components/DesignTokens/components/SegmentedControl.js +20 -0
  85. package/components/DesignTokens/components/SegmentedControlSegment.js +158 -0
  86. package/components/DesignTokens/components/Skeleton.js +20 -0
  87. package/components/DesignTokens/components/Tabs.js +26 -0
  88. package/components/DesignTokens/components/Tooltip.js +40 -0
  89. package/components/DesignTokens/components/Typography.js +41 -0
  90. package/components/DesignTokens/components/UploadZone.js +23 -0
  91. package/components/DesignTokens/components/index.js +90 -0
  92. package/components/DesignTokens/index.js +11 -0
  93. package/components/DesignTokens/types/DesignTokenTypes.js +2 -0
  94. package/components/DesignTokens/types/DesignTokensTypes.js +134 -0
  95. package/components/Dropdown/Dropdown.js +10 -0
  96. package/components/Dropdown/DropdownListContext.js +10 -0
  97. package/components/Dropdown/desktop/DropdownDesktop.js +21 -0
  98. package/components/Dropdown/desktop/DropdownList.js +97 -0
  99. package/components/Dropdown/desktop/DropdownListItem.js +9 -0
  100. package/components/Dropdown/enums.js +8 -0
  101. package/components/Dropdown/index.js +32 -0
  102. package/components/Dropdown/mobile/DropdownMobile.js +22 -0
  103. package/components/Dropdown/mobile/DropdownMobileBody.js +12 -0
  104. package/components/Dropdown/mobile/DropdownMobileClose.js +14 -0
  105. package/components/Dropdown/mobile/DropdownMobileFooter.js +12 -0
  106. package/components/Dropdown/mobile/DropdownMobileHeader.js +15 -0
  107. package/components/Dropdown/mobile/DropdownMobileInner.js +56 -0
  108. package/components/Dropdown/mobile/DropdownMobileInput.js +12 -0
  109. package/components/Dropdown/mobile/DropdownMobileList.js +21 -0
  110. package/components/Dropdown/mobile/DropdownMobileListItem.js +37 -0
  111. package/components/Dropdown/mobile/index.js +21 -0
  112. package/components/Footer/Footer.js +29 -0
  113. package/components/Footer/components/FooterDescription.js +20 -0
  114. package/components/Footer/components/FooterDescriptionContent.js +12 -0
  115. package/components/Footer/components/FooterDescriptionControls.js +12 -0
  116. package/components/Footer/index.js +11 -0
  117. package/components/FormField/FormField.js +76 -0
  118. package/components/FormField/FormFieldContext.js +27 -0
  119. package/components/FormField/FormFieldDescriptionContext.js +13 -0
  120. package/components/FormField/components/FormFieldClear.js +29 -0
  121. package/components/FormField/components/FormFieldCounter.js +16 -0
  122. package/components/FormField/components/FormFieldDescription.js +16 -0
  123. package/components/FormField/components/FormFieldInput.js +9 -0
  124. package/components/FormField/components/FormFieldLabel.js +42 -0
  125. package/components/FormField/components/FormFieldMaskedInput.js +95 -0
  126. package/components/FormField/components/FormFieldMaskedInputPresets.js +168 -0
  127. package/components/FormField/components/FormFieldPostfix.js +24 -0
  128. package/components/FormField/components/FormFieldPrefix.js +24 -0
  129. package/components/FormField/components/FormFieldTextarea.js +42 -0
  130. package/components/FormField/consts.js +5 -0
  131. package/components/FormField/enums.js +5 -0
  132. package/components/FormField/index.js +25 -0
  133. package/components/FormGroup/FormGroup.js +8 -0
  134. package/components/FormGroup/index.js +5 -0
  135. package/components/Gap/Gap.js +8 -0
  136. package/components/Gap/index.js +5 -0
  137. package/components/Header/Header.js +40 -0
  138. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +20 -0
  139. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +12 -0
  140. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +12 -0
  141. package/components/Header/components/HeaderSubheader/HeaderSubheader.js +22 -0
  142. package/components/Header/components/HeaderTabs/HeaderTabs.js +20 -0
  143. package/components/Header/components/HeaderTabs/HeaderTabsContent.js +12 -0
  144. package/components/Header/components/HeaderTabs/HeaderTabsControls.js +12 -0
  145. package/components/Header/components/HeaderTitle/HeaderTitle.js +20 -0
  146. package/components/Header/components/HeaderTitle/HeaderTitleContent.js +12 -0
  147. package/components/Header/components/HeaderTitle/HeaderTitleControls.js +12 -0
  148. package/components/Header/index.js +25 -0
  149. package/components/Link/Link.js +72 -0
  150. package/components/Link/index.js +5 -0
  151. package/components/List/List.js +23 -0
  152. package/components/List/ListSortable.js +75 -0
  153. package/components/List/components/ListEmptyState.js +13 -0
  154. package/components/List/components/ListItem.js +21 -0
  155. package/components/List/components/ListItemContent.js +27 -0
  156. package/components/List/components/ListItemContext.js +10 -0
  157. package/components/List/components/ListItemControls.js +13 -0
  158. package/components/List/components/ListItemControlsButton.js +10 -0
  159. package/components/List/components/ListItemControlsButtonDropdown.js +22 -0
  160. package/components/List/components/ListItemLoading.js +13 -0
  161. package/components/List/components/ListItemSelectable.js +46 -0
  162. package/components/List/components/ListItemTable.js +22 -0
  163. package/components/List/components/ListItemTailLeft.js +24 -0
  164. package/components/List/components/ListItemTailRight.js +24 -0
  165. package/components/List/components/ListSortableItem.js +21 -0
  166. package/components/List/components/ListSortableItemControls.js +21 -0
  167. package/components/List/components/ListSortableItemTarget.js +28 -0
  168. package/components/List/index.js +35 -0
  169. package/components/ListMaster/ListMaster.js +21 -0
  170. package/components/ListMaster/components/ListMasterBody.js +19 -0
  171. package/components/ListMaster/components/ListMasterChipGroup.js +18 -0
  172. package/components/ListMaster/components/ListMasterFooter.js +26 -0
  173. package/components/ListMaster/components/ListMasterFooterControls.js +12 -0
  174. package/components/ListMaster/components/ListMasterFooterDescription.js +12 -0
  175. package/components/ListMaster/components/ListMasterHeader.js +40 -0
  176. package/components/ListMaster/components/SelectionControls.js +22 -0
  177. package/components/ListMaster/index.js +19 -0
  178. package/components/Loader/LoaderMiddle/LoaderMiddle.js +22 -0
  179. package/components/Loader/LoaderSmall/LoaderSmall.js +48 -0
  180. package/components/Loader/LoaderSmall/enum.js +6 -0
  181. package/components/Loader/index.js +10 -0
  182. package/components/LoaderWidget/LoaderWidget.js +28 -0
  183. package/components/LoaderWidget/index.js +5 -0
  184. package/components/MediaWidth/MediaBetweenWidth.js +9 -0
  185. package/components/MediaWidth/MediaMaxWidth.js +6 -0
  186. package/components/MediaWidth/MediaMinWidth.js +6 -0
  187. package/components/MediaWidth/MediaWidth.js +10 -0
  188. package/components/MediaWidth/index.js +13 -0
  189. package/components/MediaWidth/useMatchMedia.js +14 -0
  190. package/components/MobileView/MobileView.js +8 -0
  191. package/components/MobileView/index.js +5 -0
  192. package/components/Overlay/Overlay.js +57 -0
  193. package/components/Overlay/OverlayBase.js +28 -0
  194. package/components/Overlay/OverlayMask.js +19 -0
  195. package/components/Overlay/OverlayPanel.js +46 -0
  196. package/components/Page/Page.js +23 -0
  197. package/components/Page/components/BodyPage.js +11 -0
  198. package/components/Page/components/FooterPage.js +39 -0
  199. package/components/Page/components/HeaderPage.js +42 -0
  200. package/components/Page/components/enums.js +6 -0
  201. package/components/Page/index.js +8 -0
  202. package/components/Pagination/Pagination.js +22 -0
  203. package/components/Pagination/components/PaginationExtended.js +22 -0
  204. package/components/Pagination/components/PaginationNavigation.js +67 -0
  205. package/components/Pagination/components/PaginationNavigationButton.js +29 -0
  206. package/components/Pagination/components/PaginationNavigationExtended.js +13 -0
  207. package/components/Pagination/components/PaginationNavigationExtendedItem.js +10 -0
  208. package/components/Pagination/components/PaginationPageButton.js +29 -0
  209. package/components/Pagination/components/PaginationPageEllipsis.js +13 -0
  210. package/components/Pagination/components/PaginationSelect.js +35 -0
  211. package/components/Pagination/enums.js +5 -0
  212. package/components/Pagination/index.js +23 -0
  213. package/components/Pagination/utils/paginationUtils.js +34 -0
  214. package/components/Portal/Portal.js +6 -0
  215. package/components/Radio/Radio.js +30 -0
  216. package/components/Radio/RadioXGroup.js +20 -0
  217. package/components/Radio/RadioYGroup.js +13 -0
  218. package/components/Radio/enum.js +5 -0
  219. package/components/Radio/index.js +11 -0
  220. package/components/Row/Row.js +14 -0
  221. package/components/Row/index.js +5 -0
  222. package/components/SegmentedControl/SegmentedControl.js +10 -0
  223. package/components/SegmentedControl/SegmentedControlSegment.js +11 -0
  224. package/components/SegmentedControl/enums.js +7 -0
  225. package/components/SegmentedControl/index.js +11 -0
  226. package/components/SegmentedControl/types.js +2 -0
  227. package/components/Skeleton/Skeleton.js +22 -0
  228. package/components/Skeleton/enums.js +5 -0
  229. package/components/Skeleton/index.js +7 -0
  230. package/components/SwipeableArea/SwipeableArea.js +140 -0
  231. package/components/SwipeableArea/index.js +5 -0
  232. package/components/TabsExtended/TabsExtended.js +38 -0
  233. package/components/TabsExtended/TabsExtendedContext.js +17 -0
  234. package/components/TabsExtended/TabsExtendedUtils.js +8 -0
  235. package/components/TabsExtended/components/TabsExtendedContent.js +20 -0
  236. package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +26 -0
  237. package/components/TabsExtended/components/TabsExtendedTab.js +38 -0
  238. package/components/TabsExtended/components/TabsExtendedTabButton.js +22 -0
  239. package/components/TabsExtended/components/TabsExtendedTabContext.js +8 -0
  240. package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +70 -0
  241. package/components/TabsExtended/enums.js +5 -0
  242. package/components/TabsExtended/index.js +7 -0
  243. package/components/TextField/MaskedField.js +92 -0
  244. package/components/TextField/TextField.js +92 -0
  245. package/components/TextField/TextFieldBase.js +92 -0
  246. package/components/TextField/index.js +6 -0
  247. package/components/ThemeProvider/ETriplexNextTheme.js +5 -0
  248. package/components/ThemeProvider/ThemeProvider.js +28 -0
  249. package/components/ThemeProvider/ThemeProviderContext.js +14 -0
  250. package/components/ThemeProvider/components/ThemeProviderView.js +36 -0
  251. package/components/ThemeProvider/index.js +11 -0
  252. package/components/ThemeProvider/useToken.js +10 -0
  253. package/components/Tooltip/Tooltip.js +68 -0
  254. package/components/Tooltip/TootlipContext.js +18 -0
  255. package/components/Tooltip/components/common/TooltipBody.js +16 -0
  256. package/components/Tooltip/components/common/TooltipLink.js +34 -0
  257. package/components/Tooltip/components/common/TooltipTarget.js +19 -0
  258. package/components/Tooltip/components/common/TooltipXButton.js +16 -0
  259. package/components/Tooltip/components/desktop/TooltipDesktop.js +69 -0
  260. package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js +241 -0
  261. package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +29 -0
  262. package/components/Tooltip/components/mobile/TooltipMobile.js +57 -0
  263. package/components/Tooltip/components/mobile/components/TooltipMobileCloseButton.js +14 -0
  264. package/components/Tooltip/components/mobile/components/TooltipMobileHeader.js +18 -0
  265. package/components/Tooltip/enums.js +14 -0
  266. package/components/Tooltip/index.js +8 -0
  267. package/components/Tooltip/types.js +2 -0
  268. package/components/Tooltip/utils/Positioning.js +124 -0
  269. package/components/Tooltip/utils/useTooltipTheme.js +31 -0
  270. package/components/Typography/Caption.js +54 -0
  271. package/components/Typography/Text.js +62 -0
  272. package/components/Typography/Title.js +58 -0
  273. package/components/Typography/enums.js +11 -0
  274. package/components/Typography/index.js +17 -0
  275. package/components/Typography/types.js +2 -0
  276. package/components/Typography/utils.js +6 -0
  277. package/components/UploadZone/UploadZone.js +10 -0
  278. package/components/UploadZone/components/UploadZoneInput.js +143 -0
  279. package/components/UploadZone/index.js +6 -0
  280. package/components/index.js +256 -0
  281. package/consts/IndentConst.js +2 -0
  282. package/enums/EFocusSource.js +5 -0
  283. package/generated/refTokenTypes.js +5 -0
  284. package/helpers/breakpoints.js +5 -0
  285. package/helpers/less/breakpoints.less +9 -0
  286. package/helpers/less/z-indexes.less +39 -0
  287. package/index.d.ts +4406 -0
  288. package/index.js +257 -0
  289. package/package.json +32 -94
  290. package/styles/triplex-next.css +333 -0
  291. package/utils/keyboard.js +50 -0
package/README.md ADDED
@@ -0,0 +1,145 @@
1
+ # Triplex-next
2
+
3
+ ## 🚀 Установка
4
+
5
+ ```bash
6
+ npm install triplex-next
7
+ ```
8
+
9
+ ## 🔤 Шрифты
10
+
11
+ Компоненты Typography используют шрифты SBSansDisplay и SBSansText. Для корректного отображения необходимо подключить шрифты в вашем проекте:
12
+
13
+ ```css
14
+ @font-face {
15
+ font-family: 'SBSansDisplay';
16
+ src: url('node_modules/@sberbusiness/triplex-next/public/assets/fonts/SBSansDisplay-Regular.woff2') format('woff2');
17
+ font-weight: normal;
18
+ font-style: normal;
19
+ }
20
+
21
+ @font-face {
22
+ font-family: 'SBSansDisplayMedium';
23
+ src: url('node_modules/@sberbusiness/triplex-next/public/assets/fonts/SBSansDisplay-Medium.woff2') format('woff2');
24
+ font-weight: normal;
25
+ font-style: normal;
26
+ }
27
+
28
+ @font-face {
29
+ font-family: 'SBSansDisplaySemibold';
30
+ src: url('node_modules/@sberbusiness/triplex-next/public/assets/fonts/SBSansDisplay-SemiBold.woff2') format('woff2');
31
+ font-weight: normal;
32
+ font-style: normal;
33
+ }
34
+
35
+ @font-face {
36
+ font-family: 'SBSansDisplayBold';
37
+ src: url('node_modules/@sberbusiness/triplex-next/public/assets/fonts/SBSansDisplay-Bold.woff2') format('woff2');
38
+ font-weight: normal;
39
+ font-style: normal;
40
+ }
41
+
42
+ @font-face {
43
+ font-family: 'SBSansText';
44
+ src: url('node_modules/@sberbusiness/triplex-next/public/assets/fonts/SBSansText-Regular.woff2') format('woff2');
45
+ font-weight: normal;
46
+ font-style: normal;
47
+ }
48
+
49
+ @font-face {
50
+ font-family: 'SBSansTextSemibold';
51
+ src: url('node_modules/@sberbusiness/triplex-next/public/assets/fonts/SBSansText-Semibold.woff2') format('woff2');
52
+ font-weight: normal;
53
+ font-style: normal;
54
+ }
55
+ ```
56
+
57
+
58
+ ---
59
+
60
+ ## 📁 Структура
61
+
62
+ ```
63
+ src/
64
+ components/
65
+ MyComponent/
66
+ MyComponent.tsx
67
+ MyComponent.module.css
68
+ index.ts
69
+ __tests__/MyComponent.test.tsx
70
+ ```
71
+
72
+ > Каждый компонент должен иметь собственный `index.ts`, чтобы поддерживать генерацию `exports` в `package.json`.
73
+
74
+ ---
75
+
76
+ ## 📜 Скрипты
77
+
78
+ | Скрипт | Назначение |
79
+ |-------|------------|
80
+ | `npm run build` | Сборка компонентов и `style.css` в `dist/` |
81
+ | `npm run storybook` | Локальный просмотр компонентов |
82
+ | `npm run storybook:build` | Сборка Storybook в `storybook-static/` |
83
+
84
+ ---
85
+
86
+ ## 🧱 Добавление нового компонента
87
+
88
+ 1. Создай папку:
89
+
90
+ ```bash
91
+ src/components/Alert/
92
+ ```
93
+
94
+ 2. Добавь файлы:
95
+
96
+ ```
97
+ Alert.tsx
98
+ styles/Alert.module.less
99
+ index.ts ← обязательный!
100
+ ```
101
+
102
+ 3. Зарегистрируй в `src/index.ts`:
103
+
104
+ ```ts
105
+ export * from './components/Alert';
106
+ ```
107
+
108
+ ---
109
+ ## 🧪 Тестирование
110
+
111
+ Проект использует [Vitest](https://vitest.dev/) для юнит-тестирования и [Testing Library](https://testing-library.com/docs/react-testing-library/intro/) для тестирования компонентов.
112
+
113
+ Chromatic для визуального тестирования Storybook-компонентов.
114
+
115
+ 🧪 Как работает
116
+ • При каждом пуше в ветки main или release-*, Chromatic запускает визуальные тесты.
117
+ • Chromatic делает скриншоты всех stories, сравнивает с предыдущими, и показывает отличия (если есть).
118
+ • ✅ Если изменений нет — билд считается успешным.
119
+ • 🔍 Если есть изменения — нужен review и approval в интерфейсе Chromatic.
120
+
121
+
122
+
123
+ 🔔 Уведомления
124
+ • Chromatic отправляет нотификации в Telegram (через Webhook), если:
125
+ • билд прошёл ✅
126
+ • или есть изменения/ошибки ❗
127
+
128
+
129
+
130
+ 🚀 Как одобрить изменения
131
+ 1. Перейди в свой Chromatic проект
132
+ 2. Найди последний билд в списке.
133
+ 3. Нажми Review changes
134
+ 4. Просмотри отличия → Approve (если всё ок)
135
+
136
+
137
+ ### Как запустить тесты локально
138
+
139
+ ```bash
140
+ npm run test-e2e # Запуск e2e тестов
141
+ npm run test-unit # Запуск unit тестов
142
+ npm run test-unit:watch # Запуск unit тестов в режиме наблюдения
143
+ npm run test-unit:coverage # Запуск unit тестов и генерация отчёта о покрытии
144
+ npm run chromatic # Запуск скриншот тестов. В директории должен быть файл .env.local с ключем CHROMATIC_PROJECT_TOKEN=***
145
+ ```
@@ -0,0 +1,39 @@
1
+ import { jsxs as p, jsx as t } from "react/jsx-runtime";
2
+ import { useContext as d, useEffect as i } from "react";
3
+ import { CaretdownStrokeSrvIcon16 as _ } from "@sberbusiness/icons-next";
4
+ import { ButtonIcon as m } from "../components/Button/ButtonIcon.js";
5
+ import { AlertProcessContext as x } from "../components/Alert/AlertProcess/AlertProcessContext.js";
6
+ import { c as a } from "./vendor-CF2m175I.js";
7
+ const y = "alertProcess__0d408e6b", f = "withSpoiler__77e44e61", u = "themeIcon__0eab8593", T = "alertTypeError__bd2eec60", b = "alertTypeInfo__2b8b6239", B = "alertTypeWarning__b3e029f1", C = "alertTypeSystem__4c58baab", S = "alertTypeFeature__577ea24f", h = "alertProcessContentBlock__2a0f605a", I = "closeButton__e5c0017d", P = "expandableContent__51246ed5", g = "expanded__ce806b5b", k = "expandButton__d53edf69", e = {
8
+ alertProcess: y,
9
+ withSpoiler: f,
10
+ themeIcon: u,
11
+ alertTypeError: T,
12
+ alertTypeInfo: b,
13
+ alertTypeWarning: B,
14
+ alertTypeSystem: C,
15
+ alertTypeFeature: S,
16
+ alertProcessContentBlock: h,
17
+ closeButton: I,
18
+ expandableContent: P,
19
+ expanded: g,
20
+ expandButton: k
21
+ }, v = ({ children: s, open: r, onOpen: o, ...l }) => {
22
+ const { setHasSpoiler: n } = d(x);
23
+ i(() => (n(!0), () => {
24
+ n(!1);
25
+ }), [n]);
26
+ const c = () => {
27
+ o == null || o(!r);
28
+ };
29
+ return /* @__PURE__ */ p("div", { className: e.spoiler, children: [
30
+ /* @__PURE__ */ t("div", { className: a(e.expandableContent, { [e.expanded]: r }), ...l, children: s }),
31
+ /* @__PURE__ */ t("div", { className: a(e.expandButton, { [e.expanded]: r }), children: /* @__PURE__ */ t(m, { onClick: c, children: /* @__PURE__ */ t(_, { paletteIndex: 5 }) }) })
32
+ ] });
33
+ };
34
+ v.displayName = "AlertProcessSpoiler";
35
+ export {
36
+ v as A,
37
+ e as s
38
+ };
39
+ //# sourceMappingURL=AlertProcessSpoiler-BuN7zhGO.js.map
@@ -0,0 +1,17 @@
1
+ const n = "card__786a8c76", d = "roundingMD__6b47be3f", e = "roundingSM__0110d5c1", c = "general__85e8e913", a = "secondary__1d2e618d", o = "cardMedia__5ee2c778", r = "cardContent__711b9412", t = "paddingMD__f47cb1ee", _ = "paddingSM__80ae5995", s = "cardContentHeader__19112f20", g = "cardContentFooter__b5cc2e9d", i = {
2
+ card: n,
3
+ roundingMD: d,
4
+ roundingSM: e,
5
+ general: c,
6
+ secondary: a,
7
+ cardMedia: o,
8
+ cardContent: r,
9
+ paddingMD: t,
10
+ paddingSM: _,
11
+ cardContentHeader: s,
12
+ cardContentFooter: g
13
+ };
14
+ export {
15
+ i as c
16
+ };
17
+ //# sourceMappingURL=Card.module-ByP22Mc4.js.map
@@ -0,0 +1,56 @@
1
+ import { jsx as E } from "react/jsx-runtime";
2
+ import f, { useEffect as u } from "react";
3
+ import { EVENT_KEY_CODES as m } from "../utils/keyboard.js";
4
+ import { c as v } from "./vendor-CF2m175I.js";
5
+ const D = "dropdownList__df34afb1", y = "dropdownListItem__aa651616", I = "active__d1e66931", b = "selected__e9d8b9bb", n = {
6
+ dropdownList: D,
7
+ dropdownListItem: y,
8
+ active: I,
9
+ selected: b,
10
+ "dropdownList-sm": "dropdownList-sm__201b0026",
11
+ "dropdownList-md": "dropdownList-md__a25171cc",
12
+ "dropdownList-lg": "dropdownList-lg__c58abac9"
13
+ }, l = [m.SPACE, m.ENTER], N = f.forwardRef(
14
+ ({
15
+ active: d,
16
+ keyCodesForSelection: p = l,
17
+ children: s,
18
+ className: a,
19
+ onClick: e,
20
+ onSelect: o,
21
+ selected: i,
22
+ ..._
23
+ }, w) => {
24
+ const r = (t) => {
25
+ const { keyCode: c } = t;
26
+ p.includes(c) && (t.preventDefault(), o == null || o());
27
+ }, L = (t) => {
28
+ o == null || o(), e == null || e(t);
29
+ };
30
+ return u(() => (d ? document.addEventListener("keydown", r) : document.removeEventListener("keydown", r), () => {
31
+ document.removeEventListener("keydown", r);
32
+ }), [d]), /* @__PURE__ */ E(
33
+ "div",
34
+ {
35
+ className: v(
36
+ n.dropdownListItem,
37
+ { [n.active]: !!d, [n.selected]: !!i },
38
+ a
39
+ ),
40
+ title: typeof s == "string" ? s : void 0,
41
+ role: "option",
42
+ "aria-selected": !!i,
43
+ ..._,
44
+ onClick: L,
45
+ ref: w,
46
+ children: s
47
+ }
48
+ );
49
+ }
50
+ );
51
+ N.displayName = "DropdownListItem";
52
+ export {
53
+ N as D,
54
+ n as s
55
+ };
56
+ //# sourceMappingURL=DropdownListItem-CM0DOekv.js.map
@@ -0,0 +1,19 @@
1
+ const o = "dropdownMobileWrapper__fec98bdd", d = "dropdownMobileBackdrop__3057aa50", e = "closing__b17b6455", n = "opening__6ac2cd8c", r = "opened__21072737", p = "dropdownMobile__876bfa56", l = "dropdownMobileHeader__c46c9e8e", b = "dropdownMobileContent__4cc9a559", i = "dropdownMobileFooter__9dc26bde", t = "dropdownMobileListItem__fa9457ae", c = "selected__e9d8b9bb", s = "dropdownMobileClose__0965b2a2", w = "dropdownMobileBodyOverflow__dd33f9b3", M = {
2
+ dropdownMobileWrapper: o,
3
+ dropdownMobileBackdrop: d,
4
+ closing: e,
5
+ opening: n,
6
+ opened: r,
7
+ dropdownMobile: p,
8
+ dropdownMobileHeader: l,
9
+ dropdownMobileContent: b,
10
+ dropdownMobileFooter: i,
11
+ dropdownMobileListItem: t,
12
+ selected: c,
13
+ dropdownMobileClose: s,
14
+ dropdownMobileBodyOverflow: w
15
+ };
16
+ export {
17
+ M as s
18
+ };
19
+ //# sourceMappingURL=DropdownMobile.module-gjHocEKh.js.map
@@ -0,0 +1,11 @@
1
+ const o = "footer__73883a5a", t = "sticky__8a89a3bd", e = "footerDescription__2bbaab50", r = "footerDescriptionContent__fe57c232", s = "footerDescriptionControls__94dbcc43", n = {
2
+ footer: o,
3
+ sticky: t,
4
+ footerDescription: e,
5
+ footerDescriptionContent: r,
6
+ footerDescriptionControls: s
7
+ };
8
+ export {
9
+ n as s
10
+ };
11
+ //# sourceMappingURL=Footer.module-B1rO0bcd.js.map
@@ -0,0 +1,62 @@
1
+ import { jsx as R } from "react/jsx-runtime";
2
+ import g, { useContext as j, useRef as y, useEffect as d } from "react";
3
+ import { FormFieldContext as A } from "../components/FormField/FormFieldContext.js";
4
+ import { c as C, j as E } from "./vendor-CF2m175I.js";
5
+ const S = "formFieldInput__ee986b1d", N = {
6
+ formFieldInput: S,
7
+ "autofill-applied-hook": "autofill-applied-hook__99ba81d7",
8
+ "autofill-cancelled-hook": "autofill-cancelled-hook__05d77a2f",
9
+ "size-sm": "size-sm__5c0732be",
10
+ "size-md": "size-md__3275adc6",
11
+ "size-lg": "size-lg__b7e84fba"
12
+ }, W = g.forwardRef((c, u) => {
13
+ const { className: b, id: t, onAnimationStart: l, onBlur: i, onFocus: n, placeholder: m, value: s, ...k } = c, { render: f, ...x } = c, { focused: B, disabled: P, setFocused: p, setId: r, setValueExist: a, size: F } = j(A), _ = C(N.formFieldInput, b, N[`size-${F}`]), o = y(t || E("input_"));
14
+ d(() => {
15
+ r(o.current);
16
+ }, []), d(() => {
17
+ t && (o.current = t, r(o.current));
18
+ }, [t, r]), d(() => {
19
+ a(!!s);
20
+ }, [a, s]);
21
+ const h = (e) => {
22
+ p(!1), i == null || i(e);
23
+ }, I = (e) => {
24
+ p(!0), n == null || n(e);
25
+ }, z = (e) => {
26
+ e.animationName.startsWith("autofill-applied-hook") ? a(!0) : e.animationName.startsWith("autofill-cancelled-hook") && !s && a(!1), l == null || l(e);
27
+ };
28
+ return f ? f(
29
+ {
30
+ ...x,
31
+ className: _,
32
+ id: o.current,
33
+ onAnimationStart: z,
34
+ onBlur: h,
35
+ onFocus: I,
36
+ /* Когда элемент не в фокусе, вместо placeholder показывается Label. */
37
+ placeholder: B ? m : " ",
38
+ size: F
39
+ },
40
+ u
41
+ ) : /* @__PURE__ */ R(
42
+ "input",
43
+ {
44
+ ...k,
45
+ className: _,
46
+ disabled: P,
47
+ id: o.current,
48
+ onAnimationStart: z,
49
+ onFocus: I,
50
+ onBlur: h,
51
+ value: s,
52
+ placeholder: m,
53
+ ref: u
54
+ }
55
+ );
56
+ });
57
+ W.displayName = "FormFieldInput";
58
+ export {
59
+ W as F,
60
+ N as s
61
+ };
62
+ //# sourceMappingURL=FormFieldInput-3TmHcNY0.js.map
@@ -0,0 +1,9 @@
1
+ const e = "headerLayoutSidebar__dc8d54db", a = "headerLayoutSidebarContent__98fbff15", d = "headerLayoutSidebarSidebar__a09f5607", r = {
2
+ headerLayoutSidebar: e,
3
+ headerLayoutSidebarContent: a,
4
+ headerLayoutSidebarSidebar: d
5
+ };
6
+ export {
7
+ r as s
8
+ };
9
+ //# sourceMappingURL=HeaderLayoutSidebar.module-CEXHjsmH.js.map
@@ -0,0 +1,9 @@
1
+ const e = "headerTabs__89b5da47", a = "headerTabsContent__c92922d0", s = "headerTabsControls__e926612b", t = {
2
+ headerTabs: e,
3
+ headerTabsContent: a,
4
+ headerTabsControls: s
5
+ };
6
+ export {
7
+ t as s
8
+ };
9
+ //# sourceMappingURL=HeaderTabs.module-YFm2izz6.js.map
@@ -0,0 +1,9 @@
1
+ const e = "headerTitle__6e0afca8", t = "headerTitleControls__80e2a07b", o = "headerTitleContent__93966d2b", a = {
2
+ headerTitle: e,
3
+ headerTitleControls: t,
4
+ headerTitleContent: o
5
+ };
6
+ export {
7
+ a as s
8
+ };
9
+ //# sourceMappingURL=HeaderTitle.module-lv649tnz.js.map
@@ -0,0 +1,43 @@
1
+ import { jsx as s, jsxs as m } from "react/jsx-runtime";
2
+ import i from "react";
3
+ import { c as I } from "./vendor-CF2m175I.js";
4
+ import { ETextSize as u } from "../components/Typography/enums.js";
5
+ import { Text as c } from "../components/Typography/Text.js";
6
+ const a = "listItemControlsButton__fec17772", B = "listItemControlsButtonDropdown__a9bd14f6", d = "listItemControlsButtonIcon__72d0c0fb", C = "withText__0ad91e40", f = "listItemControlsButtonLabel__5ffb660a", p = "listItemControlsButtonInner__d4c18792", _ = "withIcon__b78dc1ec", w = "buttonDropdownMenuItem__e27fd5ed", t = {
7
+ listItemControlsButton: a,
8
+ listItemControlsButtonDropdown: B,
9
+ listItemControlsButtonIcon: d,
10
+ withText: C,
11
+ listItemControlsButtonLabel: f,
12
+ listItemControlsButtonInner: p,
13
+ withIcon: _,
14
+ buttonDropdownMenuItem: w
15
+ }, b = i.forwardRef(
16
+ ({ children: o, className: e, icon: n, ...l }, r) => /* @__PURE__ */ s(
17
+ "button",
18
+ {
19
+ type: "button",
20
+ className: I(
21
+ t.listItemControlsButton,
22
+ "hoverable",
23
+ {
24
+ [t.withIcon]: typeof n < "u",
25
+ [t.withText]: typeof o < "u"
26
+ },
27
+ e
28
+ ),
29
+ ...l,
30
+ ref: r,
31
+ children: /* @__PURE__ */ m("span", { className: t.listItemControlsButtonInner, children: [
32
+ n ? /* @__PURE__ */ s("span", { className: t.listItemControlsButtonIcon, children: n }) : null,
33
+ o ? /* @__PURE__ */ s(c, { className: t.listItemControlsButtonLabel, size: u.B4, children: o }) : null
34
+ ] })
35
+ }
36
+ )
37
+ );
38
+ b.displayName = "ListItemControlsButton";
39
+ export {
40
+ b as L,
41
+ t as s
42
+ };
43
+ //# sourceMappingURL=ListItemControlsButton-BpUzyKya.js.map
@@ -0,0 +1,12 @@
1
+ const t = "listItemTail__a7353e4b", i = "listItemTailLine__b4d4cfe0", l = "listItemTailTop__41ef341d", e = "listItemTailBottom__c1c44a59", s = "listItemTailRight__83455959", a = "listItemTailLeft__d6d7b351", m = {
2
+ listItemTail: t,
3
+ listItemTailLine: i,
4
+ listItemTailTop: l,
5
+ listItemTailBottom: e,
6
+ listItemTailRight: s,
7
+ listItemTailLeft: a
8
+ };
9
+ export {
10
+ m as s
11
+ };
12
+ //# sourceMappingURL=ListItemTail.module-D7Oa-l-5.js.map
@@ -0,0 +1,10 @@
1
+ const t = "listMasterFooter__d8807e1b", s = "sticky__b9469865", o = "listMasterFooterDescription__73ea2a70", e = "listMasterFooterControls__3b25831b", r = {
2
+ listMasterFooter: t,
3
+ sticky: s,
4
+ listMasterFooterDescription: o,
5
+ listMasterFooterControls: e
6
+ };
7
+ export {
8
+ r as s
9
+ };
10
+ //# sourceMappingURL=ListMasterFooter.module-1LjIdZNa.js.map
@@ -0,0 +1,18 @@
1
+ const o = "overlay__6879add0", e = "fixed__6b8b027f", t = "closing__cc46d0f5", n = "opened__dc16edc1", a = "overlayPanel__d1021ef8", l = "bottom__5b163775", _ = "left__151f4b46", c = "right__8ea8aa0b", s = "top__54707ea5", r = "overlayContent__c233691f", y = "overlayMask__1c1c8451", d = "overlayOpened__fb629e72", v = {
2
+ overlay: o,
3
+ fixed: e,
4
+ closing: t,
5
+ opened: n,
6
+ overlayPanel: a,
7
+ bottom: l,
8
+ left: _,
9
+ right: c,
10
+ top: s,
11
+ overlayContent: r,
12
+ overlayMask: y,
13
+ overlayOpened: d
14
+ };
15
+ export {
16
+ v as s
17
+ };
18
+ //# sourceMappingURL=Overlay.module-BbpDNlm7.js.map
@@ -0,0 +1,16 @@
1
+ const e = "page__c20fcd5a", a = "headerPageBackground__ca60632c", o = "footerPageBackground__9a2cb5f9", c = "headerPageSticky__49155853", r = "footerPageSticky__cc9cb3fc", t = "headerPageStuck__93dbba97", g = "footerPageStuck__cd575280", d = "observerTarget__bc9dc737", P = "headerPage__72f3a426", _ = "bodyPage__73a698f0", k = {
2
+ page: e,
3
+ headerPageBackground: a,
4
+ footerPageBackground: o,
5
+ headerPageSticky: c,
6
+ footerPageSticky: r,
7
+ headerPageStuck: t,
8
+ footerPageStuck: g,
9
+ observerTarget: d,
10
+ headerPage: P,
11
+ bodyPage: _
12
+ };
13
+ export {
14
+ k as s
15
+ };
16
+ //# sourceMappingURL=Page.module-DAinpecX.js.map
@@ -0,0 +1,13 @@
1
+ const e = "tabsExtended__c652aaa0", t = "tabsExtendedContent__05f4e0eb", d = "tabsExtendedTab__cd716915", n = "tabsExtendedDropdown__4b6ef57e", a = "tabsReal__e1f38dd3", s = "tabsFake__e4400ee3", b = "hidden__6805ef01", o = {
2
+ tabsExtended: e,
3
+ tabsExtendedContent: t,
4
+ tabsExtendedTab: d,
5
+ tabsExtendedDropdown: n,
6
+ tabsReal: a,
7
+ tabsFake: s,
8
+ hidden: b
9
+ };
10
+ export {
11
+ o as s
12
+ };
13
+ //# sourceMappingURL=TabsExtended.module-CQBdl7x1.js.map
@@ -0,0 +1,23 @@
1
+ import { ETabsExtendedTabButtonSize as t } from "../components/TabsExtended/enums.js";
2
+ import { ETextSize as e } from "../components/Typography/enums.js";
3
+ const d = "tabsExtendedTabButton__7953ad41", a = "lg__483c430d", o = "md__56c8a04d", n = "sm__5122ab60", c = "selected__cad5e651", s = {
4
+ tabsExtendedTabButton: d,
5
+ lg: a,
6
+ md: o,
7
+ sm: n,
8
+ selected: c
9
+ }, _ = {
10
+ [t.LG]: s.lg,
11
+ [t.MD]: s.md,
12
+ [t.SM]: s.sm
13
+ }, l = {
14
+ [t.LG]: e.B2,
15
+ [t.MD]: e.B3,
16
+ [t.SM]: e.B4
17
+ };
18
+ export {
19
+ l as a,
20
+ s,
21
+ _ as t
22
+ };
23
+ //# sourceMappingURL=TabsExtendedUtils-BT4b2wK1.js.map
@@ -0,0 +1,19 @@
1
+ const t = "tooltipDesktop__dae19e23", o = "tooltipBody__cde1fb69", p = "tooltipXButton__aa1ce05b", l = "tooltipDesktopContent__ec11c359", e = "closable__d1d3dd50", i = "tooltipSM__5d306c4d", s = "tooltipLG__26d74aec", n = "tooltipOverlay__d446043d", _ = "tooltipDesktopTip__88171810", c = "down__2f8d248e", d = "up__df3ecf8e", a = "left__660152ba", f = "right__772fef6e", k = {
2
+ tooltipDesktop: t,
3
+ tooltipBody: o,
4
+ tooltipXButton: p,
5
+ tooltipDesktopContent: l,
6
+ closable: e,
7
+ tooltipSM: i,
8
+ tooltipLG: s,
9
+ tooltipOverlay: n,
10
+ tooltipDesktopTip: _,
11
+ down: c,
12
+ up: d,
13
+ left: a,
14
+ right: f
15
+ };
16
+ export {
17
+ k as s
18
+ };
19
+ //# sourceMappingURL=TooltipDesktop.module-BRkBuup-.js.map