@vkontakte/vkui 4.25.0 → 4.27.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 (541) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +539 -382
  4. package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +1 -2
  5. package/.cache/ts/src/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
  6. package/.cache/ts/src/components/Alert/Alert.d.ts +4 -4
  7. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -2
  8. package/.cache/ts/src/components/AppearanceProvider/AppearanceProvider.d.ts +1 -0
  9. package/.cache/ts/src/components/Button/Button.d.ts +1 -1
  10. package/.cache/ts/src/components/Card/Card.d.ts +1 -2
  11. package/.cache/ts/src/components/CardGrid/CardGrid.d.ts +1 -1
  12. package/.cache/ts/src/components/CardScroll/CardScroll.d.ts +9 -5
  13. package/.cache/ts/src/components/Checkbox/Checkbox.d.ts +1 -1
  14. package/.cache/ts/src/components/Chip/Chip.d.ts +2 -2
  15. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  16. package/.cache/ts/src/components/ConfigProvider/ConfigProvider.d.ts +1 -1
  17. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +6 -6
  18. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  19. package/.cache/ts/src/components/DatePicker/DatePicker.d.ts +1 -1
  20. package/.cache/ts/src/components/Epic/Epic.d.ts +4 -4
  21. package/.cache/ts/src/components/Gallery/Gallery.d.ts +1 -1
  22. package/.cache/ts/src/components/Gradient/Gradient.d.ts +1 -2
  23. package/.cache/ts/src/components/Group/Group.d.ts +1 -1
  24. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +2 -2
  25. package/.cache/ts/src/components/IconButton/IconButton.d.ts +1 -1
  26. package/.cache/ts/src/components/Input/Input.d.ts +1 -1
  27. package/.cache/ts/src/components/ModalCard/ModalCard.d.ts +3 -3
  28. package/.cache/ts/src/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  29. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +3 -3
  30. package/.cache/ts/src/components/ModalRoot/ModalRootAdaptive.d.ts +3 -3
  31. package/.cache/ts/src/components/ModalRoot/withModalRootContext.d.ts +1 -1
  32. package/.cache/ts/src/components/NativeSelect/NativeSelect.d.ts +3 -3
  33. package/.cache/ts/src/components/Panel/Panel.d.ts +3 -3
  34. package/.cache/ts/src/components/PanelHeader/PanelHeader.d.ts +1 -1
  35. package/.cache/ts/src/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  36. package/.cache/ts/src/components/PopoutRoot/PopoutRoot.d.ts +4 -4
  37. package/.cache/ts/src/components/PullToRefresh/PullToRefresh.d.ts +1 -1
  38. package/.cache/ts/src/components/Radio/Radio.d.ts +1 -1
  39. package/.cache/ts/src/components/RangeSlider/UniversalSlider.d.ts +1 -1
  40. package/.cache/ts/src/components/RichCell/RichCell.d.ts +1 -1
  41. package/.cache/ts/src/components/Search/Search.d.ts +1 -1
  42. package/.cache/ts/src/components/SegmentedControl/SegmentedControl.d.ts +17 -0
  43. package/.cache/ts/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +4 -0
  44. package/.cache/ts/src/components/Select/Select.d.ts +3 -3
  45. package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  46. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +1 -1
  47. package/.cache/ts/src/components/SliderSwitch/SliderSwitch.d.ts +6 -2
  48. package/.cache/ts/src/components/SliderSwitch/SliderSwitchButton.d.ts +4 -2
  49. package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +3 -3
  50. package/.cache/ts/src/components/Switch/Switch.d.ts +3 -2
  51. package/.cache/ts/src/components/Tabs/Tabs.d.ts +1 -1
  52. package/.cache/ts/src/components/Tappable/Tappable.d.ts +1 -1
  53. package/.cache/ts/src/components/Textarea/Textarea.d.ts +1 -1
  54. package/.cache/ts/src/components/Typography/Title/Title.d.ts +4 -1
  55. package/.cache/ts/src/components/View/View.d.ts +1 -1
  56. package/.cache/ts/src/components/View/ViewInfinite.d.ts +1 -1
  57. package/.cache/ts/src/components/VisuallyHiddenInput/VisuallyHiddenInput.d.ts +12 -0
  58. package/.cache/ts/src/hooks/usePlatform.d.ts +1 -1
  59. package/.cache/ts/src/index.d.ts +10 -8
  60. package/.cache/ts/src/lib/platform.d.ts +1 -1
  61. package/.cache/ts/src/lib/utils.d.ts +1 -0
  62. package/.cache/ts/src/tokenized/index.d.ts +8 -0
  63. package/VKUI_TOKENS_MIGRATION_GUIDE.md +77 -0
  64. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +1 -2
  65. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +19 -17
  66. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  67. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
  68. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +4 -6
  69. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  70. package/dist/cjs/components/Alert/Alert.d.ts +4 -4
  71. package/dist/cjs/components/Alert/Alert.js +14 -17
  72. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  73. package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -2
  74. package/dist/cjs/components/AppRoot/AppRoot.js +2 -5
  75. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  76. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.d.ts +1 -0
  77. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js +29 -2
  78. package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  79. package/dist/cjs/components/Banner/Banner.js +1 -1
  80. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  81. package/dist/cjs/components/Button/Button.d.ts +1 -1
  82. package/dist/cjs/components/Button/Button.js +10 -4
  83. package/dist/cjs/components/Button/Button.js.map +1 -1
  84. package/dist/cjs/components/Card/Card.d.ts +1 -2
  85. package/dist/cjs/components/Card/Card.js +4 -8
  86. package/dist/cjs/components/Card/Card.js.map +1 -1
  87. package/dist/cjs/components/CardGrid/CardGrid.d.ts +1 -1
  88. package/dist/cjs/components/CardScroll/CardScroll.d.ts +9 -5
  89. package/dist/cjs/components/CardScroll/CardScroll.js +20 -18
  90. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  91. package/dist/cjs/components/Checkbox/Checkbox.d.ts +1 -1
  92. package/dist/cjs/components/Chip/Chip.d.ts +2 -2
  93. package/dist/cjs/components/Chip/Chip.js +3 -5
  94. package/dist/cjs/components/Chip/Chip.js.map +1 -1
  95. package/dist/cjs/components/ChipsInput/ChipsInput.js +2 -2
  96. package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
  97. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  98. package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts +1 -1
  99. package/dist/cjs/components/ConfigProvider/ConfigProvider.js +15 -6
  100. package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  101. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +6 -6
  102. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  103. package/dist/cjs/components/ContentCard/ContentCard.js +12 -4
  104. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  105. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +1 -1
  106. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
  107. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  108. package/dist/cjs/components/DatePicker/DatePicker.d.ts +1 -1
  109. package/dist/cjs/components/Epic/Epic.d.ts +4 -4
  110. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  111. package/dist/cjs/components/Gallery/Gallery.d.ts +1 -1
  112. package/dist/cjs/components/Gradient/Gradient.d.ts +1 -2
  113. package/dist/cjs/components/Gradient/Gradient.js +6 -10
  114. package/dist/cjs/components/Gradient/Gradient.js.map +1 -1
  115. package/dist/cjs/components/Group/Group.d.ts +1 -1
  116. package/dist/cjs/components/Header/Header.js +1 -1
  117. package/dist/cjs/components/Header/Header.js.map +1 -1
  118. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +2 -2
  119. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +7 -3
  120. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  121. package/dist/cjs/components/IconButton/IconButton.d.ts +1 -1
  122. package/dist/cjs/components/IconButton/IconButton.js +8 -0
  123. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  124. package/dist/cjs/components/Input/Input.d.ts +1 -1
  125. package/dist/cjs/components/ModalCard/ModalCard.d.ts +3 -3
  126. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  127. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  128. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +1 -1
  129. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  130. package/dist/cjs/components/ModalPage/ModalPage.d.ts +3 -3
  131. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  132. package/dist/cjs/components/ModalRoot/ModalRootAdaptive.d.ts +3 -3
  133. package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
  134. package/dist/cjs/components/ModalRoot/withModalRootContext.d.ts +1 -1
  135. package/dist/cjs/components/ModalRoot/withModalRootContext.js.map +1 -1
  136. package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +3 -3
  137. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  138. package/dist/cjs/components/Panel/Panel.d.ts +3 -3
  139. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  140. package/dist/cjs/components/PanelHeader/PanelHeader.d.ts +1 -1
  141. package/dist/cjs/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  142. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +15 -6
  143. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  144. package/dist/cjs/components/Placeholder/Placeholder.js +1 -1
  145. package/dist/cjs/components/Placeholder/Placeholder.js.map +1 -1
  146. package/dist/cjs/components/PopoutRoot/PopoutRoot.d.ts +4 -4
  147. package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
  148. package/dist/cjs/components/PromoBanner/PromoBanner.js +7 -0
  149. package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
  150. package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts +1 -1
  151. package/dist/cjs/components/Radio/Radio.d.ts +1 -1
  152. package/dist/cjs/components/RangeSlider/UniversalSlider.d.ts +1 -1
  153. package/dist/cjs/components/RichCell/RichCell.d.ts +1 -1
  154. package/dist/cjs/components/Root/Root.js +5 -0
  155. package/dist/cjs/components/Root/Root.js.map +1 -1
  156. package/dist/cjs/components/Search/Search.d.ts +1 -1
  157. package/dist/cjs/components/Search/Search.js +47 -23
  158. package/dist/cjs/components/Search/Search.js.map +1 -1
  159. package/dist/cjs/components/SegmentedControl/SegmentedControl.d.ts +17 -0
  160. package/dist/cjs/components/SegmentedControl/SegmentedControl.js +116 -0
  161. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -0
  162. package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +4 -0
  163. package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +61 -0
  164. package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -0
  165. package/dist/cjs/components/Select/Select.d.ts +3 -3
  166. package/dist/cjs/components/Select/Select.js.map +1 -1
  167. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  168. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +1 -1
  169. package/dist/cjs/components/SimpleCell/SimpleCell.js +21 -8
  170. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  171. package/dist/cjs/components/SliderSwitch/SliderSwitch.d.ts +6 -2
  172. package/dist/cjs/components/SliderSwitch/SliderSwitch.js +18 -6
  173. package/dist/cjs/components/SliderSwitch/SliderSwitch.js.map +1 -1
  174. package/dist/cjs/components/SliderSwitch/SliderSwitchButton.d.ts +4 -2
  175. package/dist/cjs/components/SliderSwitch/SliderSwitchButton.js +6 -5
  176. package/dist/cjs/components/SliderSwitch/SliderSwitchButton.js.map +1 -1
  177. package/dist/cjs/components/Snackbar/Snackbar.d.ts +3 -3
  178. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  179. package/dist/cjs/components/Switch/Switch.d.ts +3 -2
  180. package/dist/cjs/components/Switch/Switch.js +3 -6
  181. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  182. package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -1
  183. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  184. package/dist/cjs/components/Tabs/Tabs.d.ts +1 -1
  185. package/dist/cjs/components/Tappable/Tappable.d.ts +1 -1
  186. package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
  187. package/dist/cjs/components/Typography/Title/Title.d.ts +4 -1
  188. package/dist/cjs/components/Typography/Title/Title.js +9 -19
  189. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  190. package/dist/cjs/components/View/View.d.ts +1 -1
  191. package/dist/cjs/components/View/View.js +29 -18
  192. package/dist/cjs/components/View/View.js.map +1 -1
  193. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  194. package/dist/cjs/components/VisuallyHiddenInput/VisuallyHiddenInput.d.ts +12 -0
  195. package/dist/cjs/components/VisuallyHiddenInput/VisuallyHiddenInput.js +37 -0
  196. package/dist/cjs/components/VisuallyHiddenInput/VisuallyHiddenInput.js.map +1 -0
  197. package/dist/cjs/hooks/usePlatform.d.ts +1 -1
  198. package/dist/cjs/hooks/usePlatform.js.map +1 -1
  199. package/dist/cjs/index.d.ts +10 -8
  200. package/dist/cjs/index.js +24 -16
  201. package/dist/cjs/index.js.map +1 -1
  202. package/dist/cjs/lib/platform.d.ts +1 -1
  203. package/dist/cjs/lib/platform.js.map +1 -1
  204. package/dist/cjs/lib/utils.d.ts +1 -0
  205. package/dist/cjs/lib/utils.js +7 -0
  206. package/dist/cjs/lib/utils.js.map +1 -1
  207. package/dist/cjs/tokenized/index.d.ts +8 -0
  208. package/dist/cjs/tokenized/index.js +40 -0
  209. package/dist/cjs/tokenized/index.js.map +1 -0
  210. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +1 -2
  211. package/dist/components/ActionSheetItem/ActionSheetItem.js +16 -14
  212. package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  213. package/dist/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
  214. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
  215. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  216. package/dist/components/Alert/Alert.d.ts +4 -4
  217. package/dist/components/Alert/Alert.js +12 -13
  218. package/dist/components/Alert/Alert.js.map +1 -1
  219. package/dist/components/AppRoot/AppRoot.d.ts +1 -2
  220. package/dist/components/AppRoot/AppRoot.js +1 -3
  221. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  222. package/dist/components/AppearanceProvider/AppearanceProvider.d.ts +1 -0
  223. package/dist/components/AppearanceProvider/AppearanceProvider.js +25 -2
  224. package/dist/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  225. package/dist/components/Banner/Banner.js +1 -1
  226. package/dist/components/Banner/Banner.js.map +1 -1
  227. package/dist/components/Button/Button.d.ts +1 -1
  228. package/dist/components/Button/Button.js +10 -4
  229. package/dist/components/Button/Button.js.map +1 -1
  230. package/dist/components/Card/Card.d.ts +1 -2
  231. package/dist/components/Card/Card.js +3 -9
  232. package/dist/components/Card/Card.js.map +1 -1
  233. package/dist/components/CardGrid/CardGrid.d.ts +1 -1
  234. package/dist/components/CardScroll/CardScroll.d.ts +9 -5
  235. package/dist/components/CardScroll/CardScroll.js +16 -16
  236. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  237. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  238. package/dist/components/Chip/Chip.d.ts +2 -2
  239. package/dist/components/Chip/Chip.js +2 -6
  240. package/dist/components/Chip/Chip.js.map +1 -1
  241. package/dist/components/ChipsInput/ChipsInput.js +1 -1
  242. package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
  243. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  244. package/dist/components/ConfigProvider/ConfigProvider.d.ts +1 -1
  245. package/dist/components/ConfigProvider/ConfigProvider.js +16 -7
  246. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  247. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +6 -6
  248. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  249. package/dist/components/ContentCard/ContentCard.js +10 -3
  250. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  251. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  252. package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
  253. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  254. package/dist/components/DatePicker/DatePicker.d.ts +1 -1
  255. package/dist/components/Epic/Epic.d.ts +4 -4
  256. package/dist/components/Epic/Epic.js.map +1 -1
  257. package/dist/components/Gallery/Gallery.d.ts +1 -1
  258. package/dist/components/Gradient/Gradient.d.ts +1 -2
  259. package/dist/components/Gradient/Gradient.js +5 -11
  260. package/dist/components/Gradient/Gradient.js.map +1 -1
  261. package/dist/components/Group/Group.d.ts +1 -1
  262. package/dist/components/Header/Header.js +1 -1
  263. package/dist/components/Header/Header.js.map +1 -1
  264. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +2 -2
  265. package/dist/components/HorizontalScroll/HorizontalScroll.js +5 -3
  266. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  267. package/dist/components/IconButton/IconButton.d.ts +1 -1
  268. package/dist/components/IconButton/IconButton.js +7 -0
  269. package/dist/components/IconButton/IconButton.js.map +1 -1
  270. package/dist/components/Input/Input.d.ts +1 -1
  271. package/dist/components/ModalCard/ModalCard.d.ts +3 -3
  272. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  273. package/dist/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  274. package/dist/components/ModalCardBase/ModalCardBase.js +2 -2
  275. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  276. package/dist/components/ModalPage/ModalPage.d.ts +3 -3
  277. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  278. package/dist/components/ModalRoot/ModalRootAdaptive.d.ts +3 -3
  279. package/dist/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
  280. package/dist/components/ModalRoot/withModalRootContext.d.ts +1 -1
  281. package/dist/components/ModalRoot/withModalRootContext.js.map +1 -1
  282. package/dist/components/NativeSelect/NativeSelect.d.ts +3 -3
  283. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  284. package/dist/components/Panel/Panel.d.ts +3 -3
  285. package/dist/components/Panel/Panel.js.map +1 -1
  286. package/dist/components/PanelHeader/PanelHeader.d.ts +1 -1
  287. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  288. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +14 -7
  289. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  290. package/dist/components/Placeholder/Placeholder.js +1 -1
  291. package/dist/components/Placeholder/Placeholder.js.map +1 -1
  292. package/dist/components/PopoutRoot/PopoutRoot.d.ts +4 -4
  293. package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
  294. package/dist/components/PromoBanner/PromoBanner.js +6 -0
  295. package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
  296. package/dist/components/PullToRefresh/PullToRefresh.d.ts +1 -1
  297. package/dist/components/Radio/Radio.d.ts +1 -1
  298. package/dist/components/RangeSlider/UniversalSlider.d.ts +1 -1
  299. package/dist/components/RichCell/RichCell.d.ts +1 -1
  300. package/dist/components/Root/Root.js +5 -0
  301. package/dist/components/Root/Root.js.map +1 -1
  302. package/dist/components/Search/Search.d.ts +1 -1
  303. package/dist/components/Search/Search.js +45 -22
  304. package/dist/components/Search/Search.js.map +1 -1
  305. package/dist/components/SegmentedControl/SegmentedControl.d.ts +17 -0
  306. package/dist/components/SegmentedControl/SegmentedControl.js +94 -0
  307. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -0
  308. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +4 -0
  309. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +40 -0
  310. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -0
  311. package/dist/components/Select/Select.d.ts +3 -3
  312. package/dist/components/Select/Select.js.map +1 -1
  313. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  314. package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
  315. package/dist/components/SimpleCell/SimpleCell.js +21 -9
  316. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  317. package/dist/components/SliderSwitch/SliderSwitch.d.ts +6 -2
  318. package/dist/components/SliderSwitch/SliderSwitch.js +14 -3
  319. package/dist/components/SliderSwitch/SliderSwitch.js.map +1 -1
  320. package/dist/components/SliderSwitch/SliderSwitchButton.d.ts +4 -2
  321. package/dist/components/SliderSwitch/SliderSwitchButton.js +5 -5
  322. package/dist/components/SliderSwitch/SliderSwitchButton.js.map +1 -1
  323. package/dist/components/Snackbar/Snackbar.d.ts +3 -3
  324. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  325. package/dist/components/Switch/Switch.d.ts +3 -2
  326. package/dist/components/Switch/Switch.js +3 -6
  327. package/dist/components/Switch/Switch.js.map +1 -1
  328. package/dist/components/TabbarItem/TabbarItem.js +7 -1
  329. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  330. package/dist/components/Tabs/Tabs.d.ts +1 -1
  331. package/dist/components/Tappable/Tappable.d.ts +1 -1
  332. package/dist/components/Textarea/Textarea.d.ts +1 -1
  333. package/dist/components/Typography/Title/Title.d.ts +4 -1
  334. package/dist/components/Typography/Title/Title.js +7 -16
  335. package/dist/components/Typography/Title/Title.js.map +1 -1
  336. package/dist/components/View/View.d.ts +1 -1
  337. package/dist/components/View/View.js +29 -18
  338. package/dist/components/View/View.js.map +1 -1
  339. package/dist/components/View/ViewInfinite.d.ts +1 -1
  340. package/dist/components/VisuallyHiddenInput/VisuallyHiddenInput.d.ts +12 -0
  341. package/dist/components/VisuallyHiddenInput/VisuallyHiddenInput.js +23 -0
  342. package/dist/components/VisuallyHiddenInput/VisuallyHiddenInput.js.map +1 -0
  343. package/dist/components.css +15 -12
  344. package/dist/components.css.map +1 -1
  345. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +16 -14
  346. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  347. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
  348. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  349. package/dist/cssm/components/Alert/Alert.js +12 -13
  350. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  351. package/dist/cssm/components/AppRoot/AppRoot.js +1 -3
  352. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  353. package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js +25 -2
  354. package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
  355. package/dist/cssm/components/Banner/Banner.js +1 -1
  356. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  357. package/dist/cssm/components/Button/Button.css +9 -11
  358. package/dist/cssm/components/Button/Button.js +10 -4
  359. package/dist/cssm/components/Button/Button.js.map +1 -1
  360. package/dist/cssm/components/Card/Card.css +6 -1
  361. package/dist/cssm/components/Card/Card.js +3 -9
  362. package/dist/cssm/components/Card/Card.js.map +1 -1
  363. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  364. package/dist/cssm/components/CardScroll/CardScroll.js +16 -16
  365. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  366. package/dist/cssm/components/Chip/Chip.js +2 -6
  367. package/dist/cssm/components/Chip/Chip.js.map +1 -1
  368. package/dist/cssm/components/ChipsInput/ChipsInput.js +1 -1
  369. package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
  370. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +16 -7
  371. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  372. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  373. package/dist/cssm/components/ContentCard/ContentCard.js +10 -3
  374. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  375. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
  376. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  377. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  378. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  379. package/dist/cssm/components/Gradient/Gradient.js +5 -11
  380. package/dist/cssm/components/Gradient/Gradient.js.map +1 -1
  381. package/dist/cssm/components/Header/Header.js +1 -1
  382. package/dist/cssm/components/Header/Header.js.map +1 -1
  383. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +5 -3
  384. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  385. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  386. package/dist/cssm/components/IconButton/IconButton.js +7 -0
  387. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  388. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  389. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +2 -2
  390. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  391. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  392. package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
  393. package/dist/cssm/components/ModalRoot/withModalRootContext.js.map +1 -1
  394. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  395. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  396. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +14 -7
  397. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  398. package/dist/cssm/components/Placeholder/Placeholder.js +1 -1
  399. package/dist/cssm/components/Placeholder/Placeholder.js.map +1 -1
  400. package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
  401. package/dist/cssm/components/PromoBanner/PromoBanner.js +6 -0
  402. package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
  403. package/dist/cssm/components/Root/Root.js +5 -0
  404. package/dist/cssm/components/Root/Root.js.map +1 -1
  405. package/dist/cssm/components/Search/Search.js +45 -22
  406. package/dist/cssm/components/Search/Search.js.map +1 -1
  407. package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -0
  408. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +95 -0
  409. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -0
  410. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -0
  411. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +41 -0
  412. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -0
  413. package/dist/cssm/components/Select/Select.js.map +1 -1
  414. package/dist/cssm/components/SimpleCell/SimpleCell.js +21 -9
  415. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  416. package/dist/cssm/components/SliderSwitch/SliderSwitch.js +14 -3
  417. package/dist/cssm/components/SliderSwitch/SliderSwitch.js.map +1 -1
  418. package/dist/cssm/components/SliderSwitch/SliderSwitchButton.js +5 -5
  419. package/dist/cssm/components/SliderSwitch/SliderSwitchButton.js.map +1 -1
  420. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  421. package/dist/cssm/components/Switch/Switch.css +1 -1
  422. package/dist/cssm/components/Switch/Switch.js +3 -6
  423. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  424. package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -1
  425. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  426. package/dist/cssm/components/Typography/Title/Title.css +1 -1
  427. package/dist/cssm/components/Typography/Title/Title.js +7 -16
  428. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  429. package/dist/cssm/components/View/View.js +29 -18
  430. package/dist/cssm/components/View/View.js.map +1 -1
  431. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.css +1 -0
  432. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.js +24 -0
  433. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.js.map +1 -0
  434. package/dist/cssm/hooks/usePlatform.js.map +1 -1
  435. package/dist/cssm/index.js +9 -8
  436. package/dist/cssm/index.js.map +1 -1
  437. package/dist/cssm/lib/platform.js.map +1 -1
  438. package/dist/cssm/lib/utils.js +3 -0
  439. package/dist/cssm/lib/utils.js.map +1 -1
  440. package/dist/cssm/styles/components.css +15 -12
  441. package/dist/cssm/styles/themes.css +1 -1
  442. package/dist/cssm/tokenized/index.js +5 -0
  443. package/dist/cssm/tokenized/index.js.map +1 -0
  444. package/dist/hooks/usePlatform.d.ts +1 -1
  445. package/dist/hooks/usePlatform.js.map +1 -1
  446. package/dist/index.d.ts +10 -8
  447. package/dist/index.js +9 -8
  448. package/dist/index.js.map +1 -1
  449. package/dist/lib/platform.d.ts +1 -1
  450. package/dist/lib/platform.js.map +1 -1
  451. package/dist/lib/utils.d.ts +1 -0
  452. package/dist/lib/utils.js +3 -0
  453. package/dist/lib/utils.js.map +1 -1
  454. package/dist/tokenized/index.d.ts +8 -0
  455. package/dist/tokenized/index.js +5 -0
  456. package/dist/tokenized/index.js.map +1 -0
  457. package/dist/vkui.css +16 -13
  458. package/dist/vkui.css.map +1 -1
  459. package/package.json +3 -3
  460. package/postcss.config.js +10 -1
  461. package/src/components/ActionSheetItem/ActionSheetItem.tsx +29 -28
  462. package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +1 -2
  463. package/src/components/Alert/Alert.tsx +15 -11
  464. package/src/components/AppRoot/AppRoot.tsx +0 -3
  465. package/src/components/AppearanceProvider/AppearanceProvider.tsx +27 -3
  466. package/src/components/Banner/Banner.tsx +1 -1
  467. package/src/components/Button/Button.css +9 -39
  468. package/src/components/Button/Button.tsx +8 -6
  469. package/src/components/Card/Card.css +45 -12
  470. package/src/components/Card/Card.tsx +2 -9
  471. package/src/components/CardScroll/CardScroll.css +11 -61
  472. package/src/components/CardScroll/CardScroll.tsx +19 -18
  473. package/src/components/CardScroll/Readme.md +3 -2
  474. package/src/components/Chip/Chip.tsx +1 -4
  475. package/src/components/ChipsInput/ChipsInput.tsx +1 -1
  476. package/src/components/ConfigProvider/ConfigProvider.tsx +26 -9
  477. package/src/components/ConfigProvider/ConfigProviderContext.tsx +5 -5
  478. package/src/components/ContentCard/ContentCard.tsx +8 -2
  479. package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
  480. package/src/components/Epic/Epic.tsx +8 -3
  481. package/src/components/FocusVisible/FocusVisible.css +4 -8
  482. package/src/components/FormItem/Readme.md +14 -2
  483. package/src/components/Gradient/Gradient.tsx +4 -12
  484. package/src/components/Gradient/Readme.md +1 -1
  485. package/src/components/Header/Header.tsx +1 -1
  486. package/src/components/HorizontalScroll/HorizontalScroll.tsx +10 -4
  487. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +3 -1
  488. package/src/components/IconButton/IconButton.tsx +8 -0
  489. package/src/components/ModalCard/ModalCard.tsx +8 -3
  490. package/src/components/ModalCardBase/ModalCardBase.tsx +2 -2
  491. package/src/components/ModalPage/ModalPage.tsx +8 -3
  492. package/src/components/ModalRoot/ModalRootAdaptive.tsx +8 -3
  493. package/src/components/ModalRoot/Readme.md +1 -1
  494. package/src/components/ModalRoot/withModalRootContext.tsx +1 -1
  495. package/src/components/NativeSelect/NativeSelect.tsx +8 -3
  496. package/src/components/Panel/Panel.tsx +6 -3
  497. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +20 -12
  498. package/src/components/Placeholder/Placeholder.tsx +1 -1
  499. package/src/components/PopoutRoot/PopoutRoot.tsx +8 -5
  500. package/src/components/PromoBanner/PromoBanner.tsx +8 -0
  501. package/src/components/Root/Root.tsx +12 -2
  502. package/src/components/Search/Search.tsx +38 -14
  503. package/src/components/SegmentedControl/Readme.md +94 -0
  504. package/src/components/SegmentedControl/SegmentedControl.css +42 -0
  505. package/src/components/SegmentedControl/SegmentedControl.tsx +105 -0
  506. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +30 -0
  507. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +42 -0
  508. package/src/components/Select/Select.tsx +6 -5
  509. package/src/components/SimpleCell/SimpleCell.tsx +10 -6
  510. package/src/components/SliderSwitch/Readme.md +4 -0
  511. package/src/components/SliderSwitch/SliderSwitch.tsx +17 -3
  512. package/src/components/SliderSwitch/SliderSwitchButton.tsx +4 -4
  513. package/src/components/Snackbar/Snackbar.tsx +8 -3
  514. package/src/components/Switch/Switch.css +0 -12
  515. package/src/components/Switch/Switch.tsx +8 -10
  516. package/src/components/TabbarItem/TabbarItem.tsx +8 -1
  517. package/src/components/Typography/Title/Readme.md +28 -41
  518. package/src/components/Typography/Title/Title.css +22 -13
  519. package/src/components/Typography/Title/Title.tsx +27 -22
  520. package/src/components/View/View.tsx +15 -2
  521. package/src/components/VisuallyHiddenInput/VisuallyHiddenInput.css +9 -0
  522. package/src/components/VisuallyHiddenInput/VisuallyHiddenInput.tsx +25 -0
  523. package/src/hooks/usePlatform.ts +1 -1
  524. package/src/index.ts +14 -8
  525. package/src/lib/platform.ts +5 -1
  526. package/src/lib/utils.ts +6 -0
  527. package/src/styles/components.css +3 -0
  528. package/src/styles/themes.css +6 -0
  529. package/src/testing/utils.tsx +1 -1
  530. package/src/tokenized/index.ts +15 -0
  531. package/types/global.d.ts +0 -5
  532. package/.cache/ts/src/tokenized/tokenized.d.ts +0 -2
  533. package/dist/cjs/tokenized/tokenized.d.ts +0 -2
  534. package/dist/cjs/tokenized/tokenized.js +0 -16
  535. package/dist/cjs/tokenized/tokenized.js.map +0 -1
  536. package/dist/cssm/tokenized/tokenized.js +0 -2
  537. package/dist/cssm/tokenized/tokenized.js.map +0 -1
  538. package/dist/tokenized/tokenized.d.ts +0 -2
  539. package/dist/tokenized/tokenized.js +0 -2
  540. package/dist/tokenized/tokenized.js.map +0 -1
  541. package/src/tokenized/tokenized.ts +0 -2
@@ -2,8 +2,9 @@ import * as React from "react";
2
2
  import Tappable, { TappableProps } from "../Tappable/Tappable";
3
3
  import { getClassName } from "../../helpers/getClassName";
4
4
  import { classNames } from "../../lib/classNames";
5
+ import { warnOnce } from "../../lib/warnOnce";
5
6
  import { usePlatform } from "../../hooks/usePlatform";
6
- import { isPrimitiveReactNode } from "../../lib/utils";
7
+ import { getTitleFromChildren, isPrimitiveReactNode } from "../../lib/utils";
7
8
  import { IOS, VKCOM, ANDROID } from "../../lib/platform";
8
9
  import Text from "../Typography/Text/Text";
9
10
  import Title from "../Typography/Title/Title";
@@ -26,11 +27,7 @@ const ButtonTypography: React.FC<ButtonTypographyProps> = ({
26
27
 
27
28
  if (platform === IOS) {
28
29
  return (
29
- <Title
30
- Component="span"
31
- level="3"
32
- weight={primary ? "semibold" : "regular"}
33
- >
30
+ <Title Component="span" level="3" weight={primary ? "1" : "3"}>
34
31
  {children}
35
32
  </Title>
36
33
  );
@@ -41,9 +38,10 @@ const ButtonTypography: React.FC<ButtonTypographyProps> = ({
41
38
  );
42
39
  };
43
40
 
41
+ const warn = warnOnce("PanelHeaderButton");
44
42
  export const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({
45
43
  children,
46
- primary,
44
+ primary = false,
47
45
  label,
48
46
  ...restProps
49
47
  }: PanelHeaderButtonProps) => {
@@ -68,6 +66,21 @@ export const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({
68
66
  activeMode = "PanelHeaderButton--active";
69
67
  }
70
68
 
69
+ if (process.env.NODE_ENV === "development") {
70
+ const hasAccessibleName = Boolean(
71
+ getTitleFromChildren(children) ||
72
+ getTitleFromChildren(label) ||
73
+ restProps["aria-label"] ||
74
+ restProps["aria-labelledby"]
75
+ );
76
+
77
+ if (!hasAccessibleName) {
78
+ warn(
79
+ "a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label."
80
+ );
81
+ }
82
+ }
83
+
71
84
  return (
72
85
  <Tappable
73
86
  {...restProps}
@@ -94,8 +107,3 @@ export const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({
94
107
  </Tappable>
95
108
  );
96
109
  };
97
-
98
- PanelHeaderButton.defaultProps = {
99
- primary: false,
100
- "aria-label": "Закрыть",
101
- };
@@ -49,7 +49,7 @@ const Placeholder: React.FC<PlaceholderProps> = (props: PlaceholderProps) => {
49
49
  <div vkuiClass="Placeholder__in">
50
50
  {hasReactNode(icon) && <div vkuiClass="Placeholder__icon">{icon}</div>}
51
51
  {hasReactNode(header) && (
52
- <Title level="2" weight="medium" vkuiClass="Placeholder__header">
52
+ <Title level="2" weight="2" vkuiClass="Placeholder__header">
53
53
  {header}
54
54
  </Title>
55
55
  )}
@@ -7,20 +7,23 @@ import {
7
7
  } from "../../hoc/withAdaptivity";
8
8
  import { AppRootPortal } from "../AppRoot/AppRootPortal";
9
9
  import { blurActiveElement, useDOM } from "../../lib/dom";
10
- import { AdaptivityContextInterface } from "../AdaptivityProvider/AdaptivityContext";
10
+ import {
11
+ AdaptivityContextInterface,
12
+ AdaptivityProps,
13
+ } from "../AdaptivityProvider/AdaptivityContext";
11
14
  import "./PopoutRoot.css";
12
15
 
13
16
  export interface PopoutRootProps
14
17
  extends React.HTMLAttributes<HTMLDivElement>,
15
- AdaptivityContextInterface,
18
+ AdaptivityProps,
16
19
  HasRootRef<HTMLDivElement> {
17
20
  popout?: React.ReactNode;
18
21
  modal?: React.ReactNode;
19
22
  }
20
23
 
21
- export const PopoutRootComponent: React.FC<PopoutRootProps> = (
22
- props: PopoutRootProps
23
- ) => {
24
+ export const PopoutRootComponent: React.FC<
25
+ PopoutRootProps & AdaptivityContextInterface
26
+ > = (props) => {
24
27
  const {
25
28
  popout,
26
29
  modal,
@@ -6,6 +6,7 @@ import Avatar from "../Avatar/Avatar";
6
6
  import Caption from "../Typography/Caption/Caption";
7
7
  import { usePlatform } from "../../hooks/usePlatform";
8
8
  import { getClassName } from "../../helpers/getClassName";
9
+ import { warnOnce } from "../../lib/warnOnce";
9
10
  import "./PromoBanner.css";
10
11
 
11
12
  type StatsType =
@@ -46,6 +47,7 @@ export interface PromoBannerProps extends React.HTMLAttributes<HTMLDivElement> {
46
47
  onClose: () => void;
47
48
  }
48
49
 
50
+ const warn = warnOnce("PromoBanner");
49
51
  const PromoBanner = (props: PromoBannerProps) => {
50
52
  const platform = usePlatform();
51
53
  const { bannerData = {}, onClose, ...restProps } = props;
@@ -55,6 +57,12 @@ const PromoBanner = (props: PromoBannerProps) => {
55
57
  ? parseInt(bannerData.ageRestrictions)
56
58
  : bannerData.ageRestriction;
57
59
 
60
+ if (bannerData.ageRestriction && process.env.NODE_ENV === "development") {
61
+ warn(
62
+ "Свойство bannerData.ageRestriction устарело и будет удалено в 5.0.0. Используйте bannerData.ageRestrictions"
63
+ );
64
+ }
65
+
58
66
  const [currentPixel, setCurrentPixel] = React.useState("");
59
67
 
60
68
  const statsPixels = React.useMemo(
@@ -15,8 +15,6 @@ import { useTimeout } from "../../hooks/useTimeout";
15
15
  import { usePlatform } from "../../hooks/usePlatform";
16
16
  import "./Root.css";
17
17
 
18
- const warn = warnOnce("Root");
19
-
20
18
  export interface RootProps
21
19
  extends React.HTMLAttributes<HTMLDivElement>,
22
20
  NavIdProps {
@@ -43,6 +41,7 @@ export interface RootState {
43
41
  prevView?: string;
44
42
  }
45
43
 
44
+ const warn = warnOnce("Root");
46
45
  const Root: React.FC<RootProps> = ({
47
46
  popout = null,
48
47
  modal,
@@ -135,6 +134,17 @@ const Root: React.FC<RootProps> = ({
135
134
  }
136
135
  };
137
136
 
137
+ if (process.env.NODE_ENV === "development") {
138
+ popout &&
139
+ warn(
140
+ "Свойство popout устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout."
141
+ );
142
+ modal &&
143
+ warn(
144
+ "Свойство modal устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout."
145
+ );
146
+ }
147
+
138
148
  return (
139
149
  <div
140
150
  {...restProps}
@@ -7,13 +7,14 @@ import {
7
7
  Icon16Clear,
8
8
  Icon24Cancel,
9
9
  } from "@vkontakte/icons";
10
- import { IOS, VKCOM } from "../../lib/platform";
10
+ import { IOS, VKCOM, ANDROID } from "../../lib/platform";
11
11
  import { HasPlatform, HasRef } from "../../types";
12
12
  import { Touch, TouchEvent } from "../Touch/Touch";
13
13
  import { VKUITouchEvent } from "../../lib/touch";
14
14
  import { noop } from "../../lib/utils";
15
15
  import Text from "../Typography/Text/Text";
16
16
  import Title from "../Typography/Title/Title";
17
+ import Headline from "../Typography/Headline/Headline";
17
18
  import Separator from "../Separator/Separator";
18
19
  import { useExternRef } from "../../hooks/useExternRef";
19
20
  import { useEnsuredControl } from "../../hooks/useEnsuredControl";
@@ -21,6 +22,36 @@ import "./Search.css";
21
22
 
22
23
  export type InputRef = (element: HTMLInputElement) => void;
23
24
 
25
+ interface SearchPlaceholderTypographyProps
26
+ extends HasPlatform,
27
+ React.HTMLAttributes<HTMLElement> {}
28
+
29
+ const SearchPlaceholderTypography: React.FC<
30
+ SearchPlaceholderTypographyProps
31
+ > = ({ platform, children, ...restProps }) => {
32
+ switch (platform) {
33
+ case IOS:
34
+ return (
35
+ <Title {...restProps} level="3" weight="3">
36
+ {children}
37
+ </Title>
38
+ );
39
+ case VKCOM:
40
+ return (
41
+ <Text {...restProps} weight="regular">
42
+ {children}
43
+ </Text>
44
+ );
45
+ case ANDROID:
46
+ default:
47
+ return (
48
+ <Headline {...restProps} weight="regular">
49
+ {children}
50
+ </Headline>
51
+ );
52
+ }
53
+ };
54
+
24
55
  export interface SearchProps
25
56
  extends React.InputHTMLAttributes<HTMLInputElement>,
26
57
  HasRef<HTMLInputElement>,
@@ -118,19 +149,12 @@ const Search: React.FC<SearchProps> = ({
118
149
  <div vkuiClass="Search__placeholder">
119
150
  <div vkuiClass="Search__placeholder-in">
120
151
  {before}
121
- {platform === VKCOM ? (
122
- <Text vkuiClass="Search__placeholder-text" weight="regular">
123
- {placeholder}
124
- </Text>
125
- ) : (
126
- <Title
127
- vkuiClass="Search__placeholder-text"
128
- level="3"
129
- weight="regular"
130
- >
131
- {placeholder}
132
- </Title>
133
- )}
152
+ <SearchPlaceholderTypography
153
+ vkuiClass="Search__placeholder-text"
154
+ platform={platform}
155
+ >
156
+ {placeholder}
157
+ </SearchPlaceholderTypography>
134
158
  </div>
135
159
  {isFocused && platform === IOS && after && (
136
160
  <div vkuiClass="Search__after-width">{after}</div>
@@ -0,0 +1,94 @@
1
+ Горизонтальный контрол, который позволяет выбрать одну опцию-сегмент из представленного списка.
2
+
3
+ Для чего может быть нужен:
4
+
5
+ - для навигации — как аналог `<Tabs/>`;
6
+ - в формах — как аналог `<RadioGroup/>`.
7
+
8
+ Сегменты, как кнопки, могут содержать текст и/или иконки.
9
+
10
+ Сегментов не должно быть много: чем они больше — тем проще между ними переключаться. [Apple ограничивает количество сегментов на iPhone пятью](https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls/).
11
+
12
+ ```jsx
13
+ const [reportType, changeReportType] = React.useState("idea");
14
+ const [selectedSex, changeSelectedSex] = React.useState();
15
+
16
+ <View activePanel="progress">
17
+ <Panel id="progress">
18
+ <PanelHeader>SegmentedControl</PanelHeader>
19
+ <Group header={<Header subtitle="Режим просмотра">Навигация</Header>}>
20
+ <Div>
21
+ <SegmentedControl
22
+ options={[
23
+ {
24
+ label: <Icon24List aria-hidden="true" />,
25
+ value: "list",
26
+ "aria-label": "Список",
27
+ },
28
+ {
29
+ label: <Icon16GridOfFour aria-hidden="true" />,
30
+ value: "grid",
31
+ "aria-label": "Плитки",
32
+ },
33
+ ]}
34
+ />
35
+ </Div>
36
+ </Group>
37
+ <Group header={<Header>Форма</Header>}>
38
+ <FormItem
39
+ top="Тип репорта"
40
+ bottom={`Controlled; name="report-type", size="m"`}
41
+ >
42
+ <SegmentedControl
43
+ size="m"
44
+ name="report-type"
45
+ value={reportType}
46
+ onChange={(value) => changeReportType(value)}
47
+ options={[
48
+ {
49
+ label: "Баг",
50
+ value: "bug",
51
+ },
52
+ {
53
+ label: "Идея",
54
+ value: "idea",
55
+ },
56
+ {
57
+ label: "Другое",
58
+ value: "other",
59
+ },
60
+ ]}
61
+ />
62
+ </FormItem>
63
+ <FormItem
64
+ top={
65
+ <React.Fragment>
66
+ Пол{selectedSex && <span>: {selectedSex}</span>}
67
+ </React.Fragment>
68
+ }
69
+ bottom={`Uncontrolled; name="sex", defaultValue="none", size="l"`}
70
+ >
71
+ <SegmentedControl
72
+ name="sex"
73
+ defaultValue="none"
74
+ onChange={(value) => changeSelectedSex(value)}
75
+ options={[
76
+ {
77
+ label: "Женский",
78
+ value: "female",
79
+ },
80
+ {
81
+ label: "Мужской",
82
+ value: "male",
83
+ },
84
+ {
85
+ label: "Любой",
86
+ value: "none",
87
+ },
88
+ ]}
89
+ />
90
+ </FormItem>
91
+ </Group>
92
+ </Panel>
93
+ </View>;
94
+ ```
@@ -0,0 +1,42 @@
1
+ .SegmentedControl {
2
+ height: 36px;
3
+ padding: 2px;
4
+ border-radius: var(--vkui--size_border_radius--regular);
5
+ background-color: var(--vkui--color_background_secondary);
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ .SegmentedControl--l {
10
+ height: 44px;
11
+ }
12
+
13
+ .SegmentedControl__in {
14
+ position: relative;
15
+ display: flex;
16
+ height: 100%;
17
+ width: 100%;
18
+ transition: all 100ms ease-out;
19
+ border-radius: inherit;
20
+ }
21
+
22
+ .SegmentedControl__slider {
23
+ position: absolute;
24
+ top: 0;
25
+ left: 0;
26
+ bottom: 0;
27
+ background-color: var(--vkui--color_background_modal);
28
+ transition: transform 150ms;
29
+ transform-origin: 0 0;
30
+ border-radius: inherit;
31
+ box-shadow: inset 0 0 0 0.5px var(--vkui--color_image_border_alpha),
32
+ 0 3px 8px rgba(0, 0, 0, 0.12), 0 3px 1px rgba(0, 0, 0, 0.04);
33
+ }
34
+
35
+ .SegmentedControl__option {
36
+ position: relative;
37
+ flex: 1;
38
+ display: block;
39
+ margin: 0;
40
+ padding: 0;
41
+ z-index: 1;
42
+ }
@@ -0,0 +1,105 @@
1
+ import * as React from "react";
2
+ import { classNames } from "../../lib/classNames";
3
+ import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
4
+ import { generateRandomId, noop } from "../../lib/utils";
5
+ import { warnOnce } from "../../lib/warnOnce";
6
+ import { SegmentedControlOption } from "./SegmentedControlOption/SegmentedControlOption";
7
+ import { HasRootRef } from "../../types";
8
+ import "./SegmentedControl.css";
9
+
10
+ export type SegmentedControlValue = string | number | undefined;
11
+
12
+ export interface SegmentedControlOptionInterface
13
+ extends Omit<React.HTMLAttributes<HTMLElement>, "label"> {
14
+ label: React.ReactChild;
15
+ value: SegmentedControlValue;
16
+ }
17
+
18
+ export interface SegmentedControlProps
19
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">,
20
+ HasRootRef<HTMLDivElement> {
21
+ options: SegmentedControlOptionInterface[];
22
+ size?: "m" | "l";
23
+ name?: string;
24
+ onChange?: (value: SegmentedControlValue) => void;
25
+ value?: SegmentedControlValue;
26
+ defaultValue?: SegmentedControlValue;
27
+ }
28
+
29
+ const warn = warnOnce("SegmentedControl");
30
+ export const SegmentedControl: React.FC<SegmentedControlProps> = ({
31
+ size = "l",
32
+ name,
33
+ options,
34
+ getRootRef,
35
+ onChange = noop,
36
+ value,
37
+ defaultValue,
38
+ children,
39
+ ...restProps
40
+ }) => {
41
+ let initialValue = defaultValue ?? value;
42
+
43
+ if (!initialValue) {
44
+ initialValue = options[0]?.value;
45
+ }
46
+
47
+ const [activeOptionIdx, updateActiveOptionIdx] = React.useState<number>(0);
48
+ const [activeValue, updateActiveValue] =
49
+ React.useState<SegmentedControlValue>(initialValue);
50
+
51
+ const nameRef = React.useRef<string>(name ?? generateRandomId());
52
+
53
+ useIsomorphicLayoutEffect(() => {
54
+ const _activeOptionIdx = options.findIndex(
55
+ (option) => option.value === activeValue
56
+ );
57
+
58
+ if (_activeOptionIdx === -1 && process.env.NODE_ENV === "development") {
59
+ warn("defaultValue: такого значения нет среди опций!");
60
+ }
61
+
62
+ updateActiveOptionIdx(_activeOptionIdx);
63
+ }, [activeValue, options]);
64
+
65
+ const translateX = `translateX(${100 * activeOptionIdx}%)`;
66
+
67
+ const handleOnChange = (value: SegmentedControlValue) => {
68
+ updateActiveValue(value);
69
+ onChange(value);
70
+ };
71
+
72
+ return (
73
+ <div
74
+ {...restProps}
75
+ vkuiClass={classNames("SegmentedControl", `SegmentedControl--${size}`)}
76
+ ref={getRootRef}
77
+ >
78
+ <div role="radiogroup" vkuiClass="SegmentedControl__in">
79
+ {activeOptionIdx > -1 && (
80
+ <div
81
+ aria-hidden="true"
82
+ vkuiClass="SegmentedControl__slider"
83
+ style={{
84
+ width: `${100 / options.length}%`,
85
+ transform: translateX,
86
+ WebkitTransform: translateX,
87
+ }}
88
+ />
89
+ )}
90
+ {options.map(({ label, ...optionProps }) => (
91
+ <SegmentedControlOption
92
+ key={`${optionProps.value}`}
93
+ {...optionProps}
94
+ vkuiClass="SegmentedControl__option"
95
+ name={nameRef.current}
96
+ checked={activeValue === optionProps.value}
97
+ onChange={() => handleOnChange(optionProps.value)}
98
+ >
99
+ {label}
100
+ </SegmentedControlOption>
101
+ ))}
102
+ </div>
103
+ </div>
104
+ );
105
+ };
@@ -0,0 +1,30 @@
1
+ .SegmentedControlOption {
2
+ height: 100%;
3
+ border: 0;
4
+ border-radius: inherit;
5
+ background: transparent;
6
+ color: var(--vkui--color_text_primary);
7
+ transition: color 100ms ease-out;
8
+ user-select: none;
9
+ box-sizing: border-box;
10
+ cursor: pointer;
11
+ appearance: none;
12
+ }
13
+
14
+ .SegmentedControlOption .Icon {
15
+ color: var(--vkui--color_icon_secondary);
16
+ }
17
+
18
+ .SegmentedControlOption:hover {
19
+ opacity: 0.5;
20
+ }
21
+
22
+ .SegmentedControlOption__content {
23
+ display: flex;
24
+ align-content: center;
25
+ align-items: center;
26
+ justify-content: center;
27
+ height: 100%;
28
+ width: 100%;
29
+ border-radius: inherit;
30
+ }
@@ -0,0 +1,42 @@
1
+ import * as React from "react";
2
+ import { useFocusVisible } from "../../../hooks/useFocusVisible";
3
+ import { callMultiple } from "../../../lib/callMultiple";
4
+ import { classNames } from "../../../lib/classNames";
5
+ import { FocusVisible } from "../../FocusVisible/FocusVisible";
6
+ import Text from "../../Typography/Text/Text";
7
+ import {
8
+ VisuallyHiddenInput,
9
+ VisuallyHiddenInputProps,
10
+ } from "../../VisuallyHiddenInput/VisuallyHiddenInput";
11
+ import "./SegmentedControlOption.css";
12
+
13
+ export const SegmentedControlOption: React.FC<VisuallyHiddenInputProps> = ({
14
+ className,
15
+ style,
16
+ children,
17
+ ...restProps
18
+ }) => {
19
+ const { focusVisible, onBlur, onFocus } = useFocusVisible();
20
+
21
+ return (
22
+ <label
23
+ className={className}
24
+ style={style}
25
+ vkuiClass={classNames("SegmentedControlOption", {
26
+ "SegmentedControlOption--checked": restProps.checked,
27
+ "SegmentedControlOption--focus-visible": focusVisible,
28
+ })}
29
+ >
30
+ <VisuallyHiddenInput
31
+ {...restProps}
32
+ type="radio"
33
+ onBlur={callMultiple(onBlur, restProps.onBlur)}
34
+ onFocus={callMultiple(onFocus, restProps.onFocus)}
35
+ />
36
+ <Text vkuiClass="SegmentedControlOption__content" weight="medium">
37
+ {children}
38
+ </Text>
39
+ <FocusVisible mode="inside" />
40
+ </label>
41
+ );
42
+ };
@@ -2,13 +2,14 @@ import * as React from "react";
2
2
  import NativeSelect from "../NativeSelect/NativeSelect";
3
3
  import CustomSelect, { CustomSelectProps } from "../CustomSelect/CustomSelect";
4
4
  import { withAdaptivity } from "../../hoc/withAdaptivity";
5
- import { AdaptivityContextInterface } from "../AdaptivityProvider/AdaptivityContext";
5
+ import {
6
+ AdaptivityContextInterface,
7
+ AdaptivityProps,
8
+ } from "../AdaptivityProvider/AdaptivityContext";
6
9
 
7
- export interface SelectProps
8
- extends CustomSelectProps,
9
- AdaptivityContextInterface {}
10
+ export interface SelectProps extends CustomSelectProps, AdaptivityProps {}
10
11
 
11
- const Select: React.FunctionComponent<SelectProps> = ({
12
+ const Select: React.FC<SelectProps & AdaptivityContextInterface> = ({
12
13
  hasMouse,
13
14
  ...props
14
15
  }: SelectProps) => {
@@ -4,7 +4,7 @@ import { classNames } from "../../lib/classNames";
4
4
  import { getClassName } from "../../helpers/getClassName";
5
5
  import Tappable, { TappableProps } from "../Tappable/Tappable";
6
6
  import { Icon24Chevron } from "@vkontakte/icons";
7
- import { IOS } from "../../lib/platform";
7
+ import { ANDROID, IOS } from "../../lib/platform";
8
8
  import { usePlatform } from "../../hooks/usePlatform";
9
9
  import { hasReactNode } from "../../lib/utils";
10
10
  import { useAdaptivity } from "../../hooks/useAdaptivity";
@@ -12,6 +12,7 @@ import { withAdaptivity, SizeType } from "../../hoc/withAdaptivity";
12
12
  import Title from "../Typography/Title/Title";
13
13
  import Text from "../Typography/Text/Text";
14
14
  import Subhead from "../Typography/Subhead/Subhead";
15
+ import Headline from "../Typography/Headline/Headline";
15
16
  import "./SimpleCell.css";
16
17
 
17
18
  export interface SimpleCellOwnProps extends HasComponent {
@@ -55,12 +56,15 @@ const SimpleCellTypography: React.FC<SimpleCellTypographyProps> = (
55
56
  props: SimpleCellTypographyProps
56
57
  ) => {
57
58
  const { sizeY } = useAdaptivity();
59
+ const platform = usePlatform();
58
60
 
59
- return sizeY === SizeType.COMPACT ? (
60
- <Text Component="span" weight="regular" {...props} />
61
- ) : (
62
- <Title Component="span" level="3" weight="regular" {...props} />
63
- );
61
+ if (sizeY === SizeType.COMPACT) {
62
+ return <Text Component="span" weight="regular" {...props} />;
63
+ } else if (platform === ANDROID) {
64
+ return <Headline Component="span" weight="regular" {...props} />;
65
+ } else {
66
+ return <Title Component="span" level="3" weight="3" {...props} />;
67
+ }
64
68
  };
65
69
 
66
70
  const SimpleCell: React.FC<SimpleCellProps> = ({
@@ -1,3 +1,7 @@
1
+ > **Deprecated:** этот компонент устарел и будет удален в 5.0.0.
2
+ >
3
+ > Используйте [`SegmentedControl`](#/SegmentedControl).
4
+
1
5
  ```jsx
2
6
  <View activePanel="progress">
3
7
  <Panel id="progress">
@@ -1,6 +1,7 @@
1
1
  import * as React from "react";
2
- import SliderSwitchButton from "./SliderSwitchButton";
2
+ import { SliderSwitchButton } from "./SliderSwitchButton";
3
3
  import { classNames } from "../../lib/classNames";
4
+ import { warnOnce } from "../../lib/warnOnce";
4
5
  import { HasPlatform } from "../../types";
5
6
  import "./SliderSwitch.css";
6
7
 
@@ -26,8 +27,11 @@ interface SliderSwitchState {
26
27
  hoveredOptionId: number;
27
28
  }
28
29
 
29
- // eslint-disable-next-line import/no-default-export
30
- export default class SliderSwitch extends React.Component<
30
+ const warn = warnOnce("SliderSwitch");
31
+ /**
32
+ * @deprecated Этот компонент устарел и будет удален в 5.0.0. Используйте [`SegmentedControl`](#/SegmentedControl).
33
+ */
34
+ class SliderSwitch extends React.Component<
31
35
  SliderSwitchProps,
32
36
  SliderSwitchState
33
37
  > {
@@ -139,6 +143,14 @@ export default class SliderSwitch extends React.Component<
139
143
  return null;
140
144
  }
141
145
 
146
+ componentDidMount(): void {
147
+ if (process.env.NODE_ENV === "development") {
148
+ warn(
149
+ "Этот компонент устарел и будет удален в 5.0.0. Используйте SegmentedControl."
150
+ );
151
+ }
152
+ }
153
+
142
154
  public render() {
143
155
  const {
144
156
  name,
@@ -193,3 +205,5 @@ export default class SliderSwitch extends React.Component<
193
205
  );
194
206
  }
195
207
  }
208
+
209
+ export { SliderSwitch };