@vkontakte/vkui 4.34.2 → 4.35.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 (453) hide show
  1. package/.browserslistrc +5 -0
  2. package/.cache/.eslintcache +1 -1
  3. package/.cache/.stylelintcache +1 -1
  4. package/.cache/.tsbuildinfo +237 -211
  5. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  7. package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +46 -5
  8. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +1 -1
  9. package/.cache/ts/src/components/ModalRoot/ModalRoot.d.ts +1 -1
  10. package/.cache/ts/src/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  11. package/.cache/ts/src/components/Popper/Popper.d.ts +18 -1
  12. package/.cache/ts/src/components/PopperArrow/PopperArrow.d.ts +8 -0
  13. package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +7 -2
  14. package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +5 -1
  15. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +1 -0
  16. package/.cache/ts/src/components/Tabbar/Tabbar.d.ts +8 -1
  17. package/.cache/ts/src/components/Tabs/Tabs.d.ts +13 -2
  18. package/.cache/ts/src/components/TabsItem/TabsItem.d.ts +22 -1
  19. package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +5 -1
  20. package/.cache/ts/src/components/Tooltip/Tooltip.d.ts +18 -1
  21. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +3 -3
  22. package/.cache/ts/src/components/View/View.d.ts +2 -18
  23. package/.cache/ts/src/components/View/ViewInfinite.d.ts +1 -1
  24. package/.cache/ts/src/components/WriteBar/WriteBar.d.ts +5 -1
  25. package/.cache/ts/src/tokenized/index.d.ts +26 -0
  26. package/.eslintrc.json +14 -4
  27. package/dist/cjs/components/CardScroll/CardScroll.js +3 -1
  28. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  29. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +7 -1
  30. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  31. package/dist/cjs/components/CustomSelect/CustomSelect.js +477 -554
  32. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  33. package/dist/cjs/components/Dropdown/Dropdown.js +147 -26
  34. package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -1
  35. package/dist/cjs/components/Epic/Epic.js +1 -6
  36. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  37. package/dist/cjs/components/FocusTrap/FocusTrap.js +9 -10
  38. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  39. package/dist/cjs/components/HorizontalCell/HorizontalCell.js +4 -7
  40. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  41. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +2 -2
  42. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  43. package/dist/cjs/components/Popper/Popper.js +11 -19
  44. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  45. package/dist/cjs/components/PopperArrow/PopperArrow.js +40 -0
  46. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -0
  47. package/dist/cjs/components/RichTooltip/RichTooltip.js +6 -15
  48. package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -1
  49. package/dist/cjs/components/SimpleCell/SimpleCell.js +20 -31
  50. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  51. package/dist/cjs/components/Snackbar/Snackbar.js +7 -11
  52. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  53. package/dist/cjs/components/SplitCol/SplitCol.js +7 -1
  54. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  55. package/dist/cjs/components/SplitLayout/SplitLayout.js +5 -8
  56. package/dist/cjs/components/SplitLayout/SplitLayout.js.map +1 -1
  57. package/dist/cjs/components/Tabbar/Tabbar.js +15 -14
  58. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  59. package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -10
  60. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  61. package/dist/cjs/components/Tabs/Tabs.js +23 -5
  62. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  63. package/dist/cjs/components/TabsItem/TabsItem.js +39 -22
  64. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  65. package/dist/cjs/components/TextTooltip/TextTooltip.js +6 -9
  66. package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
  67. package/dist/cjs/components/Tooltip/Tooltip.js +94 -71
  68. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  69. package/dist/cjs/components/Typography/Headline/Headline.js +11 -2
  70. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  71. package/dist/cjs/components/View/View.js +388 -453
  72. package/dist/cjs/components/View/View.js.map +1 -1
  73. package/dist/cjs/components/WriteBar/WriteBar.js +12 -5
  74. package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
  75. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +3 -8
  76. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  77. package/dist/cjs/hooks/useOrientationChange.js +2 -1
  78. package/dist/cjs/hooks/useOrientationChange.js.map +1 -1
  79. package/dist/cjs/tokenized/index.js +104 -0
  80. package/dist/cjs/tokenized/index.js.map +1 -1
  81. package/dist/components/CardScroll/CardScroll.js +3 -1
  82. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  83. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  84. package/dist/components/ConfigProvider/ConfigProviderContext.js +3 -0
  85. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  86. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  87. package/dist/components/CustomSelect/CustomSelect.js +473 -580
  88. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  89. package/dist/components/Dropdown/Dropdown.d.ts +46 -5
  90. package/dist/components/Dropdown/Dropdown.js +137 -27
  91. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  92. package/dist/components/Epic/Epic.js +1 -4
  93. package/dist/components/Epic/Epic.js.map +1 -1
  94. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  95. package/dist/components/FocusTrap/FocusTrap.js +9 -9
  96. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  97. package/dist/components/HorizontalCell/HorizontalCell.js +3 -5
  98. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  99. package/dist/components/MiniInfoCell/MiniInfoCell.js +2 -2
  100. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  101. package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
  102. package/dist/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  103. package/dist/components/Popper/Popper.d.ts +18 -1
  104. package/dist/components/Popper/Popper.js +10 -19
  105. package/dist/components/Popper/Popper.js.map +1 -1
  106. package/dist/components/PopperArrow/PopperArrow.d.ts +8 -0
  107. package/dist/components/PopperArrow/PopperArrow.js +27 -0
  108. package/dist/components/PopperArrow/PopperArrow.js.map +1 -0
  109. package/dist/components/RichTooltip/RichTooltip.d.ts +7 -2
  110. package/dist/components/RichTooltip/RichTooltip.js +5 -10
  111. package/dist/components/RichTooltip/RichTooltip.js.map +1 -1
  112. package/dist/components/SimpleCell/SimpleCell.js +18 -28
  113. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  114. package/dist/components/Snackbar/Snackbar.d.ts +5 -1
  115. package/dist/components/Snackbar/Snackbar.js +8 -11
  116. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  117. package/dist/components/SplitCol/SplitCol.d.ts +1 -0
  118. package/dist/components/SplitCol/SplitCol.js +3 -0
  119. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  120. package/dist/components/SplitLayout/SplitLayout.js +4 -7
  121. package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
  122. package/dist/components/Tabbar/Tabbar.d.ts +8 -1
  123. package/dist/components/Tabbar/Tabbar.js +15 -14
  124. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  125. package/dist/components/TabbarItem/TabbarItem.js +7 -9
  126. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  127. package/dist/components/Tabs/Tabs.d.ts +13 -2
  128. package/dist/components/Tabs/Tabs.js +23 -5
  129. package/dist/components/Tabs/Tabs.js.map +1 -1
  130. package/dist/components/TabsItem/TabsItem.d.ts +22 -1
  131. package/dist/components/TabsItem/TabsItem.js +40 -21
  132. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  133. package/dist/components/TextTooltip/TextTooltip.d.ts +5 -1
  134. package/dist/components/TextTooltip/TextTooltip.js +5 -7
  135. package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
  136. package/dist/components/Tooltip/Tooltip.d.ts +18 -1
  137. package/dist/components/Tooltip/Tooltip.js +89 -68
  138. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  139. package/dist/components/Typography/Headline/Headline.d.ts +3 -3
  140. package/dist/components/Typography/Headline/Headline.js +10 -2
  141. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  142. package/dist/components/View/View.d.ts +2 -18
  143. package/dist/components/View/View.js +384 -462
  144. package/dist/components/View/View.js.map +1 -1
  145. package/dist/components/View/ViewInfinite.d.ts +1 -1
  146. package/dist/components/WriteBar/WriteBar.d.ts +5 -1
  147. package/dist/components/WriteBar/WriteBar.js +10 -5
  148. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  149. package/dist/components/WriteBarIcon/WriteBarIcon.js +3 -6
  150. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  151. package/dist/components.css +143 -127
  152. package/dist/components.css.map +1 -1
  153. package/dist/cssm/components/ActionSheet/ActionSheet.css +1 -1
  154. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  155. package/dist/cssm/components/Alert/Alert.css +1 -1
  156. package/dist/cssm/components/AppRoot/AppRoot.css +1 -1
  157. package/dist/cssm/components/Avatar/Avatar.css +3 -5
  158. package/dist/cssm/components/Badge/Badge.css +3 -3
  159. package/dist/cssm/components/Banner/Banner.css +5 -5
  160. package/dist/cssm/components/BaseGallery/BaseGallery.css +1 -1
  161. package/dist/cssm/components/Button/Button.css +53 -35
  162. package/dist/cssm/components/Calendar/Calendar.css +1 -1
  163. package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
  164. package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
  165. package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
  166. package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
  167. package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
  168. package/dist/cssm/components/Card/Card.css +5 -6
  169. package/dist/cssm/components/CardGrid/CardGrid.css +1 -1
  170. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  171. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  172. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  173. package/dist/cssm/components/Cell/Cell.css +3 -3
  174. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -1
  175. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -1
  176. package/dist/cssm/components/CellButton/CellButton.css +1 -1
  177. package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
  178. package/dist/cssm/components/Chip/Chip.css +1 -1
  179. package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
  180. package/dist/cssm/components/ChipsSelect/ChipsSelect.css +1 -1
  181. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  182. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +3 -0
  183. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  184. package/dist/cssm/components/ContentCard/ContentCard.css +1 -1
  185. package/dist/cssm/components/Counter/Counter.css +31 -31
  186. package/dist/cssm/components/CustomScrollView/CustomScrollView.css +1 -1
  187. package/dist/cssm/components/CustomSelect/CustomSelect.css +1 -1
  188. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  189. package/dist/cssm/components/CustomSelect/CustomSelect.js +473 -580
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  191. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +3 -3
  192. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +3 -3
  193. package/dist/cssm/components/DateInput/DateInput.css +1 -1
  194. package/dist/cssm/components/DatePicker/DatePicker.css +1 -1
  195. package/dist/cssm/components/DateRangeInput/DateRangeInput.css +1 -1
  196. package/dist/cssm/components/Dropdown/Dropdown.css +1 -1
  197. package/dist/cssm/components/Dropdown/Dropdown.d.ts +46 -5
  198. package/dist/cssm/components/Dropdown/Dropdown.js +137 -27
  199. package/dist/cssm/components/Dropdown/Dropdown.js.map +1 -1
  200. package/dist/cssm/components/Epic/Epic.css +1 -1
  201. package/dist/cssm/components/Epic/Epic.js +1 -4
  202. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  203. package/dist/cssm/components/FixedLayout/FixedLayout.css +1 -1
  204. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
  205. package/dist/cssm/components/FocusTrap/FocusTrap.js +9 -9
  206. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  207. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  208. package/dist/cssm/components/Footer/Footer.css +1 -1
  209. package/dist/cssm/components/FormField/FormField.css +9 -9
  210. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  211. package/dist/cssm/components/FormLayout/FormLayout.css +1 -1
  212. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  213. package/dist/cssm/components/FormStatus/FormStatus.css +1 -1
  214. package/dist/cssm/components/Gradient/Gradient.css +1 -1
  215. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -1
  216. package/dist/cssm/components/Group/Group.css +1 -1
  217. package/dist/cssm/components/Header/Header.css +1 -1
  218. package/dist/cssm/components/HorizontalCell/HorizontalCell.css +1 -1
  219. package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -5
  220. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  221. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.css +1 -1
  222. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +3 -3
  223. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  224. package/dist/cssm/components/InfoRow/InfoRow.css +1 -1
  225. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -1
  226. package/dist/cssm/components/Input/Input.css +1 -1
  227. package/dist/cssm/components/InputLike/InputLike.css +1 -1
  228. package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
  229. package/dist/cssm/components/Link/Link.css +1 -1
  230. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.css +1 -1
  231. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +2 -2
  232. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  233. package/dist/cssm/components/ModalCard/ModalCard.css +1 -1
  234. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +3 -3
  235. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.css +1 -1
  236. package/dist/cssm/components/ModalPage/ModalPage.css +1 -1
  237. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.css +1 -1
  238. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  239. package/dist/cssm/components/ModalRoot/ModalRoot.d.ts +1 -1
  240. package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  241. package/dist/cssm/components/Pagination/Pagination.css +1 -1
  242. package/dist/cssm/components/Panel/Panel.css +1 -1
  243. package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
  244. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.css +1 -1
  245. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  246. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.css +1 -1
  247. package/dist/cssm/components/Placeholder/Placeholder.css +3 -3
  248. package/dist/cssm/components/PopoutRoot/PopoutRoot.css +1 -1
  249. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.css +1 -1
  250. package/dist/cssm/components/Popper/Popper.css +1 -1
  251. package/dist/cssm/components/Popper/Popper.d.ts +18 -1
  252. package/dist/cssm/components/Popper/Popper.js +10 -19
  253. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  254. package/dist/cssm/components/PopperArrow/PopperArrow.css +1 -0
  255. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +8 -0
  256. package/dist/cssm/components/PopperArrow/PopperArrow.js +28 -0
  257. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -0
  258. package/dist/cssm/components/Progress/Progress.css +1 -1
  259. package/dist/cssm/components/PromoBanner/PromoBanner.css +1 -1
  260. package/dist/cssm/components/PullToRefresh/PullToRefresh.css +3 -3
  261. package/dist/cssm/components/Radio/Radio.css +1 -1
  262. package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
  263. package/dist/cssm/components/Removable/Removable.css +1 -1
  264. package/dist/cssm/components/RichCell/RichCell.css +3 -3
  265. package/dist/cssm/components/RichTooltip/RichTooltip.css +3 -1
  266. package/dist/cssm/components/RichTooltip/RichTooltip.d.ts +7 -2
  267. package/dist/cssm/components/RichTooltip/RichTooltip.js +5 -10
  268. package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -1
  269. package/dist/cssm/components/Root/Root.css +1 -1
  270. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.css +1 -1
  271. package/dist/cssm/components/Search/Search.css +1 -1
  272. package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
  273. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
  274. package/dist/cssm/components/Select/Select.css +1 -1
  275. package/dist/cssm/components/Separator/Separator.css +1 -1
  276. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  277. package/dist/cssm/components/SimpleCell/SimpleCell.js +18 -28
  278. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  279. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -1
  280. package/dist/cssm/components/Slider/Slider.css +3 -3
  281. package/dist/cssm/components/SliderSwitch/SliderSwitch.css +1 -1
  282. package/dist/cssm/components/Snackbar/Snackbar.css +1 -1
  283. package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -1
  284. package/dist/cssm/components/Snackbar/Snackbar.js +8 -11
  285. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  286. package/dist/cssm/components/Spacing/Spacing.css +1 -1
  287. package/dist/cssm/components/Spinner/Spinner.css +1 -1
  288. package/dist/cssm/components/SplitCol/SplitCol.css +1 -1
  289. package/dist/cssm/components/SplitCol/SplitCol.d.ts +1 -0
  290. package/dist/cssm/components/SplitCol/SplitCol.js +3 -0
  291. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  292. package/dist/cssm/components/SplitLayout/SplitLayout.css +1 -1
  293. package/dist/cssm/components/SplitLayout/SplitLayout.js +4 -7
  294. package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
  295. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.css +1 -1
  296. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.css +1 -1
  297. package/dist/cssm/components/Switch/Switch.css +3 -3
  298. package/dist/cssm/components/Tabbar/Tabbar.css +5 -3
  299. package/dist/cssm/components/Tabbar/Tabbar.d.ts +8 -1
  300. package/dist/cssm/components/Tabbar/Tabbar.js +15 -14
  301. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  302. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  303. package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -9
  304. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  305. package/dist/cssm/components/Tabs/Tabs.css +1 -1
  306. package/dist/cssm/components/Tabs/Tabs.d.ts +13 -2
  307. package/dist/cssm/components/Tabs/Tabs.js +23 -5
  308. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  309. package/dist/cssm/components/TabsItem/TabsItem.css +5 -1
  310. package/dist/cssm/components/TabsItem/TabsItem.d.ts +22 -1
  311. package/dist/cssm/components/TabsItem/TabsItem.js +40 -21
  312. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  313. package/dist/cssm/components/Tappable/Tappable.css +5 -5
  314. package/dist/cssm/components/TextTooltip/TextTooltip.css +1 -1
  315. package/dist/cssm/components/TextTooltip/TextTooltip.d.ts +5 -1
  316. package/dist/cssm/components/TextTooltip/TextTooltip.js +5 -7
  317. package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
  318. package/dist/cssm/components/Textarea/Textarea.css +1 -1
  319. package/dist/cssm/components/Tooltip/Tooltip.css +1 -1
  320. package/dist/cssm/components/Tooltip/Tooltip.d.ts +18 -1
  321. package/dist/cssm/components/Tooltip/Tooltip.js +89 -68
  322. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  323. package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
  324. package/dist/cssm/components/Typography/Footnote/Footnote.css +1 -1
  325. package/dist/cssm/components/Typography/Headline/Headline.css +1 -1
  326. package/dist/cssm/components/Typography/Headline/Headline.d.ts +3 -3
  327. package/dist/cssm/components/Typography/Headline/Headline.js +10 -2
  328. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  329. package/dist/cssm/components/Typography/Paragraph/Paragraph.css +1 -1
  330. package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
  331. package/dist/cssm/components/Typography/Text/Text.css +1 -1
  332. package/dist/cssm/components/Typography/Title/Title.css +1 -1
  333. package/dist/cssm/components/UsersStack/UsersStack.css +5 -5
  334. package/dist/cssm/components/View/View.css +1 -1
  335. package/dist/cssm/components/View/View.d.ts +2 -18
  336. package/dist/cssm/components/View/View.js +384 -462
  337. package/dist/cssm/components/View/View.js.map +1 -1
  338. package/dist/cssm/components/View/ViewIOS.css +1 -1
  339. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  340. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.css +1 -1
  341. package/dist/cssm/components/WriteBar/WriteBar.css +3 -1
  342. package/dist/cssm/components/WriteBar/WriteBar.d.ts +5 -1
  343. package/dist/cssm/components/WriteBar/WriteBar.js +10 -5
  344. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  345. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.css +1 -1
  346. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +3 -6
  347. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  348. package/dist/cssm/fonts/fonts.css +1 -1
  349. package/dist/cssm/hooks/useOrientationChange.js +2 -1
  350. package/dist/cssm/hooks/useOrientationChange.js.map +1 -1
  351. package/dist/cssm/lib/calendar.d.ts +2 -2
  352. package/dist/cssm/styles/animations.css +1 -1
  353. package/dist/cssm/styles/bright_light.css +1 -1
  354. package/dist/cssm/styles/common.css +1 -1
  355. package/dist/cssm/styles/components.css +143 -127
  356. package/dist/cssm/styles/constants.css +3 -10
  357. package/dist/cssm/styles/space_gray.css +1 -1
  358. package/dist/cssm/styles/themes.css +1 -16
  359. package/dist/cssm/styles/unstable.css +3 -1
  360. package/dist/cssm/styles/vkcom_dark.css +1 -6
  361. package/dist/cssm/styles/vkcom_light.css +1 -11
  362. package/dist/cssm/tokenized/index.d.ts +26 -0
  363. package/dist/cssm/tokenized/index.js +13 -0
  364. package/dist/cssm/tokenized/index.js.map +1 -1
  365. package/dist/default_scheme.css +1 -1
  366. package/dist/default_scheme.css.map +1 -1
  367. package/dist/fonts.css +1 -1
  368. package/dist/fonts.css.map +1 -1
  369. package/dist/hooks/useOrientationChange.js +2 -1
  370. package/dist/hooks/useOrientationChange.js.map +1 -1
  371. package/dist/lib/calendar.d.ts +2 -2
  372. package/dist/tokenized/index.d.ts +26 -0
  373. package/dist/tokenized/index.js +13 -0
  374. package/dist/tokenized/index.js.map +1 -1
  375. package/dist/unstable.css +3 -1
  376. package/dist/unstable.css.map +1 -1
  377. package/dist/vkui.css +144 -143
  378. package/dist/vkui.css.map +1 -1
  379. package/package.json +6 -5
  380. package/src/components/Badge/Badge.css +0 -5
  381. package/src/components/CardScroll/CardScroll.tsx +1 -1
  382. package/src/components/Cell/Cell.css +3 -2
  383. package/src/components/ChipsInput/ChipsInput.css +2 -0
  384. package/src/components/ConfigProvider/ConfigProviderContext.tsx +2 -0
  385. package/src/components/Counter/Counter.css +30 -0
  386. package/src/components/CustomScrollView/CustomScrollView.css +10 -5
  387. package/src/components/CustomSelect/CustomSelect.tsx +543 -574
  388. package/src/components/Dropdown/Dropdown.css +12 -0
  389. package/src/components/Dropdown/Dropdown.tsx +174 -20
  390. package/src/components/Dropdown/Readme.md +1 -0
  391. package/src/components/Epic/Epic.tsx +1 -4
  392. package/src/components/FixedLayout/Readme.md +103 -109
  393. package/src/components/FocusTrap/FocusTrap.tsx +10 -10
  394. package/src/components/Group/Group.css +1 -1
  395. package/src/components/HorizontalCell/HorizontalCell.css +25 -43
  396. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -9
  397. package/src/components/HorizontalScroll/HorizontalScroll.css +23 -0
  398. package/src/components/Input/Input.css +2 -0
  399. package/src/components/MiniInfoCell/MiniInfoCell.css +13 -3
  400. package/src/components/MiniInfoCell/MiniInfoCell.tsx +3 -3
  401. package/src/components/Popper/Popper.css +0 -35
  402. package/src/components/Popper/Popper.tsx +29 -23
  403. package/src/components/PopperArrow/PopperArrow.css +34 -0
  404. package/src/components/PopperArrow/PopperArrow.tsx +40 -0
  405. package/src/components/RichTooltip/RichTooltip.css +44 -4
  406. package/src/components/RichTooltip/RichTooltip.tsx +9 -11
  407. package/src/components/SimpleCell/Readme.md +115 -129
  408. package/src/components/SimpleCell/SimpleCell.css +30 -68
  409. package/src/components/SimpleCell/SimpleCell.tsx +21 -25
  410. package/src/components/Snackbar/Readme.md +95 -123
  411. package/src/components/Snackbar/Snackbar.css +18 -27
  412. package/src/components/Snackbar/Snackbar.tsx +17 -11
  413. package/src/components/SplitCol/SplitCol.tsx +2 -0
  414. package/src/components/SplitLayout/SplitLayout.css +3 -7
  415. package/src/components/SplitLayout/SplitLayout.tsx +9 -6
  416. package/src/components/Tabbar/Tabbar.css +4 -1
  417. package/src/components/Tabbar/Tabbar.tsx +23 -12
  418. package/src/components/TabbarItem/TabbarItem.css +7 -5
  419. package/src/components/TabbarItem/TabbarItem.tsx +13 -7
  420. package/src/components/Tabs/Readme.md +191 -251
  421. package/src/components/Tabs/Tabs.css +27 -80
  422. package/src/components/Tabs/Tabs.tsx +45 -7
  423. package/src/components/TabsItem/Readme.md +1 -0
  424. package/src/components/TabsItem/TabsItem.css +191 -106
  425. package/src/components/TabsItem/TabsItem.tsx +72 -20
  426. package/src/components/TextTooltip/TextTooltip.css +41 -11
  427. package/src/components/TextTooltip/TextTooltip.tsx +9 -13
  428. package/src/components/Textarea/Textarea.css +2 -0
  429. package/src/components/Tooltip/Readme.md +128 -101
  430. package/src/components/Tooltip/Tooltip.css +29 -40
  431. package/src/components/Tooltip/Tooltip.tsx +98 -66
  432. package/src/components/Typography/Headline/Headline.tsx +15 -1
  433. package/src/components/View/Readme.md +2 -0
  434. package/src/components/View/View.tsx +451 -514
  435. package/src/components/WriteBar/WriteBar.css +27 -33
  436. package/src/components/WriteBar/WriteBar.tsx +16 -5
  437. package/src/components/WriteBarIcon/WriteBarIcon.css +6 -19
  438. package/src/components/WriteBarIcon/WriteBarIcon.tsx +6 -6
  439. package/src/hooks/useOrientationChange.ts +1 -0
  440. package/src/styles/components.css +1 -0
  441. package/src/styles/constants.css +8 -0
  442. package/src/tokenized/index.ts +39 -0
  443. package/tsconfig.json +1 -1
  444. package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +0 -21
  445. package/dist/cjs/components/ClickPopper/ClickPopper.js +0 -96
  446. package/dist/cjs/components/ClickPopper/ClickPopper.js.map +0 -1
  447. package/dist/components/ClickPopper/ClickPopper.d.ts +0 -21
  448. package/dist/components/ClickPopper/ClickPopper.js +0 -71
  449. package/dist/components/ClickPopper/ClickPopper.js.map +0 -1
  450. package/dist/cssm/components/ClickPopper/ClickPopper.d.ts +0 -21
  451. package/dist/cssm/components/ClickPopper/ClickPopper.js +0 -71
  452. package/dist/cssm/components/ClickPopper/ClickPopper.js.map +0 -1
  453. package/src/components/ClickPopper/ClickPopper.tsx +0 -86
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SplitLayout/SplitLayout.tsx"],"names":["getClassName","classNames","PopoutRoot","usePlatform","SplitLayout","popout","modal","header","children","getRootRef","getRef","restProps","platform"],"mappings":";;;;AACA,SAASA,YAAT;AACA,SAASC,UAAT;AAEA,SAASC,UAAT;AACA,SAASC,WAAT;AACA;;AAiBA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,OAQH;AAAA,MAPtBC,MAOsB,QAPtBA,MAOsB;AAAA,MANtBC,KAMsB,QANtBA,KAMsB;AAAA,MALtBC,MAKsB,QALtBA,MAKsB;AAAA,MAJtBC,QAIsB,QAJtBA,QAIsB;AAAA,MAHtBC,UAGsB,QAHtBA,UAGsB;AAAA,MAFtBC,MAEsB,QAFtBA,MAEsB;AAAA,MADnBC,SACmB;;AACtB,MAAMC,QAAQ,GAAGT,WAAW,EAA5B;AAEA,SACE,oBAAC,UAAD;AACE,IAAA,SAAS,EAAEH,YAAY,CAAC,aAAD,EAAgBY,QAAhB,CADzB;AAEE,IAAA,MAAM,EAAEP,MAFV;AAGE,IAAA,KAAK,EAAEC,KAHT;AAIE,IAAA,UAAU,EAAEG;AAJd,KAMGF,MANH,EAOE,wCACMI,SADN;AAEE,IAAA,GAAG,EAAED,MAFP,CAGE;AAHF;AAIE,IAAA,SAAS,EAAET,UAAU,CAAC,oBAAD,EAAuB;AAC1C,oCAA8B,CAAC,CAACM;AADU,KAAvB;AAJvB,MAQGC,QARH,CAPF,CADF;AAoBD,CA/BM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { HasRef, HasRootRef } from \"../../types\";\nimport { PopoutRoot } from \"../PopoutRoot/PopoutRoot\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport \"./SplitLayout.css\";\n\nexport interface SplitLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n header?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SplitLayout\n */\nexport const SplitLayout = ({\n popout,\n modal,\n header,\n children,\n getRootRef,\n getRef,\n ...restProps\n}: SplitLayoutProps) => {\n const platform = usePlatform();\n\n return (\n <PopoutRoot\n vkuiClass={getClassName(\"SplitLayout\", platform)}\n popout={popout}\n modal={modal}\n getRootRef={getRootRef}\n >\n {header}\n <div\n {...restProps}\n ref={getRef}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"SplitLayout__inner\", {\n \"SplitLayout__inner--header\": !!header,\n })}\n >\n {children}\n </div>\n </PopoutRoot>\n );\n};\n"],"file":"SplitLayout.js"}
1
+ {"version":3,"sources":["../../../../src/components/SplitLayout/SplitLayout.tsx"],"names":["classNames","IOS","PopoutRoot","usePlatform","SplitLayout","popout","modal","header","children","getRootRef","getRef","restProps","platform"],"mappings":";;;;AACA,SAASA,UAAT;AACA,SAASC,GAAT;AAEA,SAASC,UAAT;AACA,SAASC,WAAT;AACA;;AAiBA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,OAQH;AAAA,MAPtBC,MAOsB,QAPtBA,MAOsB;AAAA,MANtBC,KAMsB,QANtBA,KAMsB;AAAA,MALtBC,MAKsB,QALtBA,MAKsB;AAAA,MAJtBC,QAIsB,QAJtBA,QAIsB;AAAA,MAHtBC,UAGsB,QAHtBA,UAGsB;AAAA,MAFtBC,MAEsB,QAFtBA,MAEsB;AAAA,MADnBC,SACmB;;AACtB,MAAMC,QAAQ,GAAGT,WAAW,EAA5B;AAEA,SACE,oBAAC,UAAD;AACE,IAAA,SAAS,EAAEH,UAAU,CACnB,aADmB,EAEnBY,QAAQ,KAAKX,GAAb,IAAoB,kBAFD,CADvB;AAKE,IAAA,MAAM,EAAEI,MALV;AAME,IAAA,KAAK,EAAEC,KANT;AAOE,IAAA,UAAU,EAAEG;AAPd,KASGF,MATH,EAUE,wCACMI,SADN;AAEE,IAAA,GAAG,EAAED,MAFP;AAGE,IAAA,SAAS,EAAEV,UAAU,CACnB,oBADmB,EAEnB,CAAC,CAACO,MAAF,IAAY,4BAFO;AAHvB,MAQGC,QARH,CAVF,CADF;AAuBD,CAlCM","sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { IOS } from \"../../lib/platform\";\nimport { HasRef, HasRootRef } from \"../../types\";\nimport { PopoutRoot } from \"../PopoutRoot/PopoutRoot\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport \"./SplitLayout.css\";\n\nexport interface SplitLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n header?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SplitLayout\n */\nexport const SplitLayout = ({\n popout,\n modal,\n header,\n children,\n getRootRef,\n getRef,\n ...restProps\n}: SplitLayoutProps) => {\n const platform = usePlatform();\n\n return (\n <PopoutRoot\n vkuiClass={classNames(\n \"SplitLayout\",\n platform === IOS && \"SplitLayout--ios\"\n )}\n popout={popout}\n modal={modal}\n getRootRef={getRootRef}\n >\n {header}\n <div\n {...restProps}\n ref={getRef}\n vkuiClass={classNames(\n \"SplitLayout__inner\",\n !!header && \"SplitLayout__inner--header\"\n )}\n >\n {children}\n </div>\n </PopoutRoot>\n );\n};\n"],"file":"SplitLayout.js"}
@@ -1 +1 @@
1
- .vkuiSubnavigationBar__in{margin:-8px 0}.vkuiSubnavigationBar__scrollIn{padding:20px 0;display:flex}.vkuiSubnavigationBar__scrollIn::before,.vkuiSubnavigationBar__scrollIn::after{content:"";min-width:16px}.vkuiSubnavigationBar .vkuiSubnavigationButton+.vkuiSubnavigationButton{margin-left:8px}.vkuiSubnavigationBar--fixed .vkuiSubnavigationButton{flex:1;min-width:0}.vkuiSubnavigationBar--ios .vkuiSubnavigationBar__scrollIn::before,.vkuiSubnavigationBar--ios .vkuiSubnavigationBar__scrollIn::after{min-width:12px}
1
+ .vkuiSubnavigationBar__in{margin:-8px 0}.vkuiSubnavigationBar__scrollIn{display:flex;padding:20px 0}.vkuiSubnavigationBar__scrollIn:after,.vkuiSubnavigationBar__scrollIn:before{content:"";min-width:16px}.vkuiSubnavigationBar .vkuiSubnavigationButton+.vkuiSubnavigationButton{margin-left:8px}.vkuiSubnavigationBar--fixed .vkuiSubnavigationButton{flex:1;min-width:0}.vkuiSubnavigationBar--ios .vkuiSubnavigationBar__scrollIn:after,.vkuiSubnavigationBar--ios .vkuiSubnavigationBar__scrollIn:before{min-width:12px}
@@ -1 +1 @@
1
- .vkuiSubnavigationButton{display:inline-block;background-color:#fff;background-color:var(--modal_card_background);color:#000;color:var(--text_primary);box-shadow:0 0 2px rgba(0,0,0,.08),0 2px 24px rgba(0,0,0,.08);-webkit-user-select:none;user-select:none}.vkuiSubnavigationButton__in{display:flex;align-items:center;justify-content:center}.vkuiSubnavigationButton__before{margin-right:8px;color:#2688eb;color:var(--accent)}.vkuiSubnavigationButton__before .vkuiIcon--24{margin-left:-4px}.vkuiSubnavigationButton__label{flex-grow:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vkuiSubnavigationButton__after{margin-left:8px}.vkuiSubnavigationButton__expandableIcon{margin-left:8px;margin-top:1px;color:#99a2ad;color:var(--icon_secondary)}.vkuiSubnavigationButton--selected{background-color:#2d81e0;background-color:var(--button_primary_background);color:#fff;color:var(--button_primary_foreground)}.vkuiSubnavigationButton--selected .vkuiSubnavigationButton__before{color:inherit}.vkuiSubnavigationButton--selected .vkuiCounter{background-color:#fff;background-color:var(--button_primary_foreground);color:#2d81e0;color:var(--button_primary_background)}.vkuiSubnavigationButton--selected .vkuiSubnavigationButton__expandableIcon{color:inherit}.vkuiSubnavigationButton--m .vkuiSubnavigationButton__in{height:36px;padding:0 14px}.vkuiSubnavigationButton--l .vkuiSubnavigationButton__in{height:44px;padding:0 14px}.vkuiSubnavigationButton--ios{border-radius:10px}.vkuiSubnavigationButton--android{border-radius:8px}.vkuiSubnavigationButton--vkcom{border-radius:4px}
1
+ .vkuiSubnavigationButton{background-color:#fff;background-color:var(--modal_card_background);box-shadow:0 0 2px rgba(0,0,0,.08),0 2px 24px rgba(0,0,0,.08);color:#000;color:var(--text_primary);display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vkuiSubnavigationButton__in{align-items:center;display:flex;justify-content:center}.vkuiSubnavigationButton__before{color:#2688eb;color:var(--accent);margin-right:8px}.vkuiSubnavigationButton__before .vkuiIcon--24{margin-left:-4px}.vkuiSubnavigationButton__label{flex-grow:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiSubnavigationButton__after{margin-left:8px}.vkuiSubnavigationButton__expandableIcon{color:#99a2ad;color:var(--icon_secondary);margin-left:8px;margin-top:1px}.vkuiSubnavigationButton--selected{background-color:#2d81e0;background-color:var(--button_primary_background);color:#fff;color:var(--button_primary_foreground)}.vkuiSubnavigationButton--selected .vkuiSubnavigationButton__before{color:inherit}.vkuiSubnavigationButton--selected .vkuiCounter{background-color:#fff;background-color:var(--button_primary_foreground);color:#2d81e0;color:var(--button_primary_background)}.vkuiSubnavigationButton--selected .vkuiSubnavigationButton__expandableIcon{color:inherit}.vkuiSubnavigationButton--m .vkuiSubnavigationButton__in{height:36px;padding:0 14px}.vkuiSubnavigationButton--l .vkuiSubnavigationButton__in{height:44px;padding:0 14px}.vkuiSubnavigationButton--ios{border-radius:10px}.vkuiSubnavigationButton--android{border-radius:8px}.vkuiSubnavigationButton--vkcom{border-radius:4px}
@@ -1,3 +1,3 @@
1
- .vkuiSwitch{position:relative;display:block;cursor:pointer;padding:calc((20px - 14px)/2);padding:calc((var(--vkui--size_switch_pin--regular,20px) - var(--vkui--size_switch_height--regular,14px))/2)}.vkuiSwitch--sizeY-compact{padding:calc((18px - 12px)/2);padding:calc((var(--vkui--size_switch_pin--compact,18px) - var(--vkui--size_switch_height--compact,12px))/2)}.vkuiSwitch--disabled{cursor:default}.vkuiSwitch__pseudo{position:relative;display:block;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}.vkuiSwitch__pseudo::before{position:absolute;content:"";border-radius:50%;box-sizing:border-box;background:#f2f3f5;background:var(--vkui--color_icon_contrast_secondary,#F2F3F5);box-shadow:0 0 2px 0 rgba(0,0,0,.12),0 2px 2px 0 rgba(0,0,0,.24);top:calc((14px - 20px)/2);top:calc((var(--vkui--size_switch_height--regular,14px) - var(--vkui--size_switch_pin--regular,20px))/2);left:calc((14px - 20px)/2);left:calc((var(--vkui--size_switch_height--regular,14px) - var(--vkui--size_switch_pin--regular,20px))/2);width:20px;width:var(--vkui--size_switch_pin--regular,20px);height:20px;height:var(--vkui--size_switch_pin--regular,20px)}.vkuiSwitch--sizeY-compact .vkuiSwitch__pseudo::before{top:calc((12px - 18px)/2);top:calc((var(--vkui--size_switch_height--compact,12px) - var(--vkui--size_switch_pin--compact,18px))/2);left:calc((12px - 18px)/2);left:calc((var(--vkui--size_switch_height--compact,12px) - var(--vkui--size_switch_pin--compact,18px))/2);width:18px;width:var(--vkui--size_switch_pin--compact,18px);height:18px;height:var(--vkui--size_switch_pin--compact,18px)}.vkuiSwitch__self:checked+.vkuiSwitch__pseudo::before{background:#2688eb;background:var(--accent, var(--vkui--color_icon_accent));-webkit-transform:translateX(calc(34px - 14px));transform:translateX(calc(34px - 14px));-webkit-transform:translateX(calc(var(--vkui--size_switch_width--regular,34px) - var(--vkui--size_switch_height--regular,14px)));transform:translateX(calc(var(--vkui--size_switch_width--regular,34px) - var(--vkui--size_switch_height--regular,14px)))}.vkuiSwitch__pseudo::after{content:"";display:block;background:rgba(0,0,0,.24);background:var(--vkui--color_icon_tertiary_alpha,rgba(0, 0, 0, 0.24));border-radius:calc(34px/2);border-radius:calc(var(--vkui--size_switch_width--regular,34px)/2);width:34px;width:var(--vkui--size_switch_width--regular,34px);height:14px;height:var(--vkui--size_switch_height--regular,14px)}.vkuiSwitch--sizeY-compact .vkuiSwitch__pseudo::after{border-radius:calc(32px/2);border-radius:calc(var(--vkui--size_switch_width--compact,32px)/2);width:32px;width:var(--vkui--size_switch_width--compact,32px);height:12px;height:var(--vkui--size_switch_height--compact,12px)}.vkuiSwitch__self:checked+.vkuiSwitch__pseudo::after{opacity:.48;background:#2688eb;background:var(--accent, var(--vkui--color_icon_accent))}.vkuiSwitch--sizeY-compact .vkuiSwitch__self:checked+.vkuiSwitch__pseudo::before{-webkit-transform:translateX(calc(32px - 12px));transform:translateX(calc(32px - 12px));-webkit-transform:translateX(calc(var(--vkui--size_switch_width--compact,32px) - var(--vkui--size_switch_height--compact,12px)));transform:translateX(calc(var(--vkui--size_switch_width--compact,32px) - var(--vkui--size_switch_height--compact,12px)))}.vkuiSwitch__self[disabled]+.vkuiSwitch__pseudo{opacity:.4;opacity:var(--vkui--opacity_disable,0.4)}.vkuiSwitch--ios .vkuiSwitch__pseudo::before{background:#fff;background:var(--white);box-shadow:0 3px 8px rgba(0,0,0,.15),0 3px 1px rgba(0,0,0,.06),inset 0 0 0 .5px rgba(0,0,0,.04)}.vkuiSwitch--ios .vkuiSwitch__self:checked+.vkuiSwitch__pseudo::before{background:#fff;background:var(--white)}.vkuiSwitch--ios .vkuiSwitch__pseudo::after{background:rgba(0,28,61,.08);background:var(--placeholder_icon_background,
2
- var(--vkui--color_track_background)
3
- )}.vkuiSwitch--ios .vkuiSwitch__self:checked+.vkuiSwitch__pseudo::after{opacity:1}@media (prefers-reduced-motion:no-preference){.vkuiSwitch__pseudo::after{transition:background-color .1s ease}.vkuiSwitch__pseudo::before{transition:-webkit-transform .1s ease;transition:transform .1s ease;transition:transform .1s ease,-webkit-transform .1s ease}.vkuiSwitch--ios .vkuiSwitch__pseudo::after{transition:background-color .2s ease}.vkuiSwitch--ios .vkuiSwitch__pseudo::before{transition:-webkit-transform .2s cubic-bezier(.36,-.24,.26,1.32);transition:transform .2s cubic-bezier(.36,-.24,.26,1.32);transition:transform .2s cubic-bezier(.36,-.24,.26,1.32),-webkit-transform .2s cubic-bezier(.36,-.24,.26,1.32)}}.vkuiSimpleCell__after>.vkuiSwitch{margin-left:12px}.vkuiSimpleCell>.vkuiSwitch:first-child{margin-right:12px}
1
+ .vkuiSwitch{cursor:pointer;display:block;padding:3px;padding:calc((var(--vkui--size_switch_pin--regular,20px) - var(--vkui--size_switch_height--regular,14px))/2);position:relative}.vkuiSwitch--sizeY-compact{padding:3px;padding:calc((var(--vkui--size_switch_pin--compact,18px) - var(--vkui--size_switch_height--compact,12px))/2)}.vkuiSwitch--disabled{cursor:default}.vkuiSwitch__pseudo{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent;box-sizing:border-box;display:block;position:relative}.vkuiSwitch__pseudo:before{background:#f2f3f5;background:var(--vkui--color_icon_contrast_secondary,#f2f3f5);border-radius:50%;box-shadow:0 0 2px 0 rgba(0,0,0,.12),0 2px 2px 0 rgba(0,0,0,.24);box-sizing:border-box;content:"";height:20px;height:var(--vkui--size_switch_pin--regular,20px);left:-3px;left:calc((var(--vkui--size_switch_height--regular,14px) - var(--vkui--size_switch_pin--regular,20px))/2);position:absolute;top:-3px;top:calc((var(--vkui--size_switch_height--regular,14px) - var(--vkui--size_switch_pin--regular,20px))/2);width:20px;width:var(--vkui--size_switch_pin--regular,20px)}.vkuiSwitch--sizeY-compact .vkuiSwitch__pseudo:before{height:18px;height:var(--vkui--size_switch_pin--compact,18px);left:-3px;left:calc((var(--vkui--size_switch_height--compact,12px) - var(--vkui--size_switch_pin--compact,18px))/2);top:-3px;top:calc((var(--vkui--size_switch_height--compact,12px) - var(--vkui--size_switch_pin--compact,18px))/2);width:18px;width:var(--vkui--size_switch_pin--compact,18px)}.vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{background:#2688eb;background:var(--accent,var(--vkui--color_icon_accent));-webkit-transform:translateX(20px);transform:translateX(20px);-webkit-transform:translateX(calc(var(--vkui--size_switch_width--regular,34px) - var(--vkui--size_switch_height--regular,14px)));transform:translateX(calc(var(--vkui--size_switch_width--regular,34px) - var(--vkui--size_switch_height--regular,14px)))}.vkuiSwitch__pseudo:after{background:rgba(0,0,0,.24);background:var(--vkui--color_icon_tertiary_alpha,rgba(0,0,0,.24));border-radius:17px;border-radius:calc(var(--vkui--size_switch_width--regular,34px)/2);content:"";display:block;height:14px;height:var(--vkui--size_switch_height--regular,14px);width:34px;width:var(--vkui--size_switch_width--regular,34px)}.vkuiSwitch--sizeY-compact .vkuiSwitch__pseudo:after{border-radius:16px;border-radius:calc(var(--vkui--size_switch_width--compact,32px)/2);height:12px;height:var(--vkui--size_switch_height--compact,12px);width:32px;width:var(--vkui--size_switch_width--compact,32px)}.vkuiSwitch__self:checked+.vkuiSwitch__pseudo:after{background:#2688eb;background:var(--accent,var(--vkui--color_icon_accent));opacity:.48}.vkuiSwitch--sizeY-compact .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{-webkit-transform:translateX(20px);transform:translateX(20px);-webkit-transform:translateX(calc(var(--vkui--size_switch_width--compact,32px) - var(--vkui--size_switch_height--compact,12px)));transform:translateX(calc(var(--vkui--size_switch_width--compact,32px) - var(--vkui--size_switch_height--compact,12px)))}.vkuiSwitch__self[disabled]+.vkuiSwitch__pseudo{opacity:.4;opacity:var(--vkui--opacity_disable,.4)}.vkuiSwitch--ios .vkuiSwitch__pseudo:before{background:#fff;background:var(--white);box-shadow:0 3px 8px rgba(0,0,0,.15),0 3px 1px rgba(0,0,0,.06),inset 0 0 0 .5px rgba(0,0,0,.04)}.vkuiSwitch--ios .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{background:#fff;background:var(--white)}.vkuiSwitch--ios .vkuiSwitch__pseudo:after{background:rgba(0,28,61,.08);background:var(
2
+ --placeholder_icon_background,var(--vkui--color_track_background)
3
+ )}.vkuiSwitch--ios .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:after{opacity:1}@media (prefers-reduced-motion:no-preference){.vkuiSwitch__pseudo:after{transition:background-color .1s ease}.vkuiSwitch__pseudo:before{transition:-webkit-transform .1s ease;transition:transform .1s ease;transition:transform .1s ease,-webkit-transform .1s ease}.vkuiSwitch--ios .vkuiSwitch__pseudo:after{transition:background-color .2s ease}.vkuiSwitch--ios .vkuiSwitch__pseudo:before{transition:-webkit-transform .2s cubic-bezier(.36,-.24,.26,1.32);transition:transform .2s cubic-bezier(.36,-.24,.26,1.32);transition:transform .2s cubic-bezier(.36,-.24,.26,1.32),-webkit-transform .2s cubic-bezier(.36,-.24,.26,1.32)}}.vkuiSimpleCell__after>.vkuiSwitch{margin-left:12px}.vkuiSimpleCell>.vkuiSwitch:first-child{margin-right:12px}
@@ -1,3 +1,5 @@
1
- .vkuiTabbar{position:fixed;z-index:2;bottom:0;left:0;width:100%;height:48px;height:var(--tabbar_height);padding-bottom:0;padding-bottom:var(--safe-area-inset-bottom);box-sizing:content-box;background:#fff;background:var(--header_alternate_background,
2
- var(--vkui--color_background_tertiary)
3
- )}.vkuiTabbar__in{display:flex;justify-content:center;overflow:hidden}.vkuiTabbar--shadow{box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3,0px 0px 2px rgba(0, 0, 0, 0.08) , 0px 4px 16px rgba(0, 0, 0, 0.08))}.vkuiTabbar--ios.vkuiTabbar--shadow{box-shadow:none}.vkuiTabbar--ios.vkuiTabbar--shadow::before{position:absolute;bottom:100%;left:0;width:100%;height:1px;background:#d7d8d9;background:var(--separator_common);-webkit-transform-origin:center bottom;transform-origin:center bottom;content:""}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiTabbar--ios::before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiTabbar--ios::before{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}
1
+ .vkuiTabbar{background:#fff;background:var(
2
+ --header_alternate_background,var(--vkui--color_background_tertiary)
3
+ );bottom:0;box-sizing:initial;height:48px;height:var(--tabbar_height);left:0;padding-bottom:0;padding-bottom:var(--safe-area-inset-bottom);position:fixed;width:100%;z-index:2}.vkuiTabbar__in{display:flex;justify-content:center;overflow:hidden}.vkuiTabbar--shadow{box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3,0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08))}.vkuiTabbar--ios.vkuiTabbar--shadow{box-shadow:none}.vkuiTabbar--ios.vkuiTabbar--shadow:before{background:#d7d8d9;background:var(
4
+ --separator_common,var(--vkui--color_separator_primary_alpha)
5
+ );bottom:100%;content:"";height:1px;left:0;position:absolute;-webkit-transform-origin:center bottom;transform-origin:center bottom;width:100%}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiTabbar--ios:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiTabbar--ios:before{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}
@@ -5,9 +5,16 @@ export interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {
5
5
  * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)
6
6
  */
7
7
  shadow?: boolean;
8
+ /**
9
+ * @deprecated будет удалено в 5.0.0. Используйте `mode`
10
+ */
8
11
  itemsLayout?: "vertical" | "horizontal" | "auto";
12
+ /**
13
+ * Задает расположение элементов (вертикальное/горизонтальное)
14
+ */
15
+ mode?: "vertical" | "horizontal" | "auto";
9
16
  }
10
17
  /**
11
18
  * @see https://vkcom.github.io/VKUI/#/Tabbar
12
19
  */
13
- export declare const Tabbar: ({ children, shadow, itemsLayout, ...restProps }: TabbarProps) => JSX.Element;
20
+ export declare const Tabbar: ({ children, shadow, itemsLayout, mode, ...restProps }: TabbarProps) => JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "shadow", "itemsLayout"];
3
+ var _excluded = ["children", "shadow", "itemsLayout", "mode"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import * as React from "react";
6
6
  import { classNames } from "../../lib/classNames";
@@ -8,31 +8,32 @@ import { usePlatform } from "../../hooks/usePlatform";
8
8
  import { Platform } from "../../lib/platform";
9
9
  import "./Tabbar.css";
10
10
 
11
+ var getItemsLayout = function getItemsLayout(itemsLayout, children) {
12
+ switch (itemsLayout) {
13
+ case "horizontal":
14
+ case "vertical":
15
+ return itemsLayout;
16
+
17
+ default:
18
+ return React.Children.count(children) > 2 ? "vertical" : "horizontal";
19
+ }
20
+ };
11
21
  /**
12
22
  * @see https://vkcom.github.io/VKUI/#/Tabbar
13
23
  */
24
+
25
+
14
26
  export var Tabbar = function Tabbar(_ref) {
15
27
  var children = _ref.children,
16
28
  _ref$shadow = _ref.shadow,
17
29
  shadow = _ref$shadow === void 0 ? true : _ref$shadow,
18
30
  itemsLayout = _ref.itemsLayout,
31
+ mode = _ref.mode,
19
32
  restProps = _objectWithoutProperties(_ref, _excluded);
20
33
 
21
34
  var platform = usePlatform();
22
-
23
- var getItemsLayout = function getItemsLayout() {
24
- switch (itemsLayout) {
25
- case "horizontal":
26
- case "vertical":
27
- return itemsLayout;
28
-
29
- default:
30
- return React.Children.count(children) > 2 ? "vertical" : "horizontal";
31
- }
32
- };
33
-
34
35
  return createScopedElement("div", _extends({
35
- vkuiClass: classNames("Tabbar", platform === Platform.IOS && "Tabbar--ios", "Tabbar--l-".concat(getItemsLayout()), shadow && "Tabbar--shadow")
36
+ vkuiClass: classNames("Tabbar", platform === Platform.IOS && "Tabbar--ios", "Tabbar--l-".concat(getItemsLayout(itemsLayout !== null && itemsLayout !== void 0 ? itemsLayout : mode, children)), shadow && "Tabbar--shadow")
36
37
  }, restProps), createScopedElement("div", {
37
38
  vkuiClass: "Tabbar__in"
38
39
  }, children));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Tabbar/Tabbar.tsx"],"names":["React","classNames","usePlatform","Platform","Tabbar","children","shadow","itemsLayout","restProps","platform","getItemsLayout","Children","count","IOS"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,QAAT;AACA;;AAUA;AACA;AACA;AACA,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAS,OAKH;AAAA,MAJjBC,QAIiB,QAJjBA,QAIiB;AAAA,yBAHjBC,MAGiB;AAAA,MAHjBA,MAGiB,4BAHR,IAGQ;AAAA,MAFjBC,WAEiB,QAFjBA,WAEiB;AAAA,MADdC,SACc;;AACjB,MAAMC,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,YAAQH,WAAR;AACE,WAAK,YAAL;AACA,WAAK,UAAL;AACE,eAAOA,WAAP;;AACF;AACE,eAAOP,KAAK,CAACW,QAAN,CAAeC,KAAf,CAAqBP,QAArB,IAAiC,CAAjC,GAAqC,UAArC,GAAkD,YAAzD;AALJ;AAOD,GARD;;AAUA,SACE;AACE,IAAA,SAAS,EAAEJ,UAAU,CACnB,QADmB,EAEnBQ,QAAQ,KAAKN,QAAQ,CAACU,GAAtB,IAA6B,aAFV,sBAGNH,cAAc,EAHR,GAInBJ,MAAM,IAAI,gBAJS;AADvB,KAOME,SAPN,GASE;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6BH,QAA7B,CATF,CADF;AAaD,CA/BM","sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { Platform } from \"../../lib/platform\";\nimport \"./Tabbar.css\";\n\nexport interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)\n */\n shadow?: boolean;\n itemsLayout?: \"vertical\" | \"horizontal\" | \"auto\";\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabbar\n */\nexport const Tabbar = ({\n children,\n shadow = true,\n itemsLayout,\n ...restProps\n}: TabbarProps) => {\n const platform = usePlatform();\n\n const getItemsLayout = () => {\n switch (itemsLayout) {\n case \"horizontal\":\n case \"vertical\":\n return itemsLayout;\n default:\n return React.Children.count(children) > 2 ? \"vertical\" : \"horizontal\";\n }\n };\n\n return (\n <div\n vkuiClass={classNames(\n \"Tabbar\",\n platform === Platform.IOS && \"Tabbar--ios\",\n `Tabbar--l-${getItemsLayout()}`,\n shadow && \"Tabbar--shadow\"\n )}\n {...restProps}\n >\n <div vkuiClass=\"Tabbar__in\">{children}</div>\n </div>\n );\n};\n"],"file":"Tabbar.js"}
1
+ {"version":3,"sources":["../../../../src/components/Tabbar/Tabbar.tsx"],"names":["React","classNames","usePlatform","Platform","getItemsLayout","itemsLayout","children","Children","count","Tabbar","shadow","mode","restProps","platform","IOS"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,QAAT;AACA;;AAiBA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CACrBC,WADqB,EAErBC,QAFqB,EAGlB;AACH,UAAQD,WAAR;AACE,SAAK,YAAL;AACA,SAAK,UAAL;AACE,aAAOA,WAAP;;AACF;AACE,aAAOL,KAAK,CAACO,QAAN,CAAeC,KAAf,CAAqBF,QAArB,IAAiC,CAAjC,GAAqC,UAArC,GAAkD,YAAzD;AALJ;AAOD,CAXD;AAaA;AACA;AACA;;;AACA,OAAO,IAAMG,MAAM,GAAG,SAATA,MAAS,OAMH;AAAA,MALjBH,QAKiB,QALjBA,QAKiB;AAAA,yBAJjBI,MAIiB;AAAA,MAJjBA,MAIiB,4BAJR,IAIQ;AAAA,MAHjBL,WAGiB,QAHjBA,WAGiB;AAAA,MAFjBM,IAEiB,QAFjBA,IAEiB;AAAA,MADdC,SACc;;AACjB,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;AAEA,SACE;AACE,IAAA,SAAS,EAAED,UAAU,CACnB,QADmB,EAEnBY,QAAQ,KAAKV,QAAQ,CAACW,GAAtB,IAA6B,aAFV,sBAGNV,cAAc,CAACC,WAAD,aAACA,WAAD,cAACA,WAAD,GAAgBM,IAAhB,EAAsBL,QAAtB,CAHR,GAInBI,MAAM,IAAI,gBAJS;AADvB,KAOME,SAPN,GASE;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6BN,QAA7B,CATF,CADF;AAaD,CAtBM","sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { Platform } from \"../../lib/platform\";\nimport \"./Tabbar.css\";\n\nexport interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)\n */\n shadow?: boolean;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `mode`\n */\n itemsLayout?: \"vertical\" | \"horizontal\" | \"auto\"; // TODO v5.0.0 удалить, будет использоваться mode\n /**\n * Задает расположение элементов (вертикальное/горизонтальное)\n */\n mode?: \"vertical\" | \"horizontal\" | \"auto\";\n}\n\nconst getItemsLayout = (\n itemsLayout: TabbarProps[\"mode\"],\n children: TabbarProps[\"children\"]\n) => {\n switch (itemsLayout) {\n case \"horizontal\":\n case \"vertical\":\n return itemsLayout;\n default:\n return React.Children.count(children) > 2 ? \"vertical\" : \"horizontal\";\n }\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabbar\n */\nexport const Tabbar = ({\n children,\n shadow = true,\n itemsLayout,\n mode,\n ...restProps\n}: TabbarProps) => {\n const platform = usePlatform();\n\n return (\n <div\n vkuiClass={classNames(\n \"Tabbar\",\n platform === Platform.IOS && \"Tabbar--ios\",\n `Tabbar--l-${getItemsLayout(itemsLayout ?? mode, children)}`,\n shadow && \"Tabbar--shadow\"\n )}\n {...restProps}\n >\n <div vkuiClass=\"Tabbar__in\">{children}</div>\n </div>\n );\n};\n"],"file":"Tabbar.js"}
@@ -1 +1 @@
1
- .vkuiTabbarItem{display:flex;align-items:center;justify-content:center;color:#99a2ad;color:var(--tabbar_inactive_icon);text-decoration:none;border:0;outline:0;padding:0;background:0 0;height:48px;height:var(--tabbar_height);position:relative}.vkuiTabbar .vkuiTabbarItem{flex-shrink:0;max-width:100%;min-width:0;flex-grow:1;flex-basis:0}.vkuiTabbarItem--selected{color:#2975cc;color:var(--tabbar_active_icon)}.vkuiTabbarItem__tappable{position:absolute}.vkuiTabbarItem__in{display:flex;padding:0 2px;align-items:center;justify-content:center;pointer-events:none;height:100%;width:100%;overflow:hidden}.vkuiTabbar--l-vertical .vkuiTabbarItem--text .vkuiTabbarItem__in{position:relative;top:2px}.vkuiTabbar--l-vertical .vkuiTabbarItem__in{flex-direction:column}.vkuiTabbar--l-horizontal .vkuiTabbarItem__in{flex-direction:row}.vkuiTabbarItem__icon{position:relative}.vkuiTabbarItem__label .vkuiCounter{position:absolute;top:-2px;right:-9px}.vkuiTabbarItem__label .vkuiBadge{position:absolute;top:-2px;right:-4px}.vkuiTabbarItem__text{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.vkuiTabbar--l-vertical .vkuiTabbarItem__text{font-size:10px;line-height:12px;font-weight:500;margin-top:2px}.vkuiTabbar--l-horizontal .vkuiTabbarItem__text{font-size:13px;font-weight:500;margin-left:8px}.vkuiTabbarItem--android .vkuiTabbarItem__tappable{width:calc(100% + 16px);padding-bottom:calc(100% + 16px);border-radius:50%}.vkuiTabbarItem--android:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.vkuiTabbarItem--android:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.vkuiTabbarItem--ios .vkuiTabbarItem__tappable{width:100%;height:100%;top:0;left:0}.vkuiTabbarItem--ios .vkuiTabbarItem__in{transition:-webkit-transform .07s cubic-bezier(.36,.66,.04,1);transition:transform .07s cubic-bezier(.36,.66,.04,1);transition:transform .07s cubic-bezier(.36,.66,.04,1),-webkit-transform .07s cubic-bezier(.36,.66,.04,1);transition:-webkit-transform .07s var(--ios-easing);transition:transform .07s var(--ios-easing);transition:transform .07s var(--ios-easing),-webkit-transform .07s var(--ios-easing)}.vkuiTabbarItem--ios .vkuiTabbarItem__tappable--active+.vkuiTabbarItem__in{-webkit-transform:scale(.96);transform:scale(.96)}
1
+ .vkuiTabbarItem{align-items:center;background:transparent;border:none;color:#99a2ad;color:var(--tabbar_inactive_icon,var(--vkui--color_text_tertiary));display:flex;height:48px;height:var(--tabbar_height);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none}.vkuiTabbar .vkuiTabbarItem{flex-basis:0;flex-grow:1;flex-shrink:0;max-width:100%;min-width:0}.vkuiTabbarItem--selected{color:#2975cc;color:var(--tabbar_active_icon,var(--vkui--color_text_accent_themed))}.vkuiTabbarItem__tappable{position:absolute}.vkuiTabbarItem__in{align-items:center;display:flex;height:100%;justify-content:center;overflow:hidden;padding:0 2px;pointer-events:none;width:100%}.vkuiTabbar--l-vertical .vkuiTabbarItem--text .vkuiTabbarItem__in{position:relative;top:2px}.vkuiTabbar--l-vertical .vkuiTabbarItem__in{flex-direction:column}.vkuiTabbar--l-horizontal .vkuiTabbarItem__in{flex-direction:row}.vkuiTabbarItem__icon{color:#99a2ad;color:var(--tabbar_inactive_icon,var(--vkui--color_icon_secondary));position:relative}.vkuiTabbarItem--selected .vkuiTabbarItem__icon{color:#2975cc;color:var(--tabbar_active_icon,var(--vkui--color_icon_accent_themed))}.vkuiTabbarItem__label .vkuiCounter{position:absolute;right:-9px;top:-2px}.vkuiTabbarItem__label .vkuiBadge{position:absolute;right:-4px;top:-2px}.vkuiTabbarItem__text{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiTabbar--l-vertical .vkuiTabbarItem__text{font-size:10px;line-height:12px;margin-top:2px}.vkuiTabbar--l-horizontal .vkuiTabbarItem__text{margin-left:8px}.vkuiTabbarItem--android .vkuiTabbarItem__tappable{border-radius:50%;padding-bottom:calc(100% + 16px);width:calc(100% + 16px)}.vkuiTabbarItem--android:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.vkuiTabbarItem--android:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.vkuiTabbarItem--ios .vkuiTabbarItem__tappable{height:100%;left:0;top:0;width:100%}.vkuiTabbarItem--ios .vkuiTabbarItem__in{transition:-webkit-transform .07s cubic-bezier(.36,.66,.04,1);transition:transform .07s cubic-bezier(.36,.66,.04,1);transition:transform .07s cubic-bezier(.36,.66,.04,1),-webkit-transform .07s cubic-bezier(.36,.66,.04,1);transition:-webkit-transform .07s var(--ios-easing);transition:transform .07s var(--ios-easing);transition:transform .07s var(--ios-easing),-webkit-transform .07s var(--ios-easing)}.vkuiTabbarItem--ios .vkuiTabbarItem__tappable--active+.vkuiTabbarItem__in{-webkit-transform:scale(.96);transform:scale(.96)}
@@ -2,12 +2,12 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  var _excluded = ["children", "selected", "label", "indicator", "text", "href", "Component", "disabled"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
- import { getClassName } from "../../helpers/getClassName";
6
5
  import { Counter } from "../Counter/Counter";
7
6
  import { classNames } from "../../lib/classNames";
8
7
  import { usePlatform } from "../../hooks/usePlatform";
9
8
  import { hasReactNode } from "../../lib/utils";
10
9
  import { Tappable } from "../Tappable/Tappable";
10
+ import { Footnote } from "../Typography/Footnote/Footnote";
11
11
  import { Platform } from "../../lib/platform";
12
12
  import { warnOnce } from "../../lib/warnOnce";
13
13
  import "./TabbarItem.css";
@@ -36,12 +36,8 @@ export var TabbarItem = function TabbarItem(_ref) {
36
36
 
37
37
  return createScopedElement(Component, _extends({}, restProps, {
38
38
  disabled: disabled,
39
- href: href // eslint-disable-next-line vkui/no-object-expression-in-arguments
40
- ,
41
- vkuiClass: classNames(getClassName("TabbarItem", platform), {
42
- "TabbarItem--selected": selected,
43
- "TabbarItem--text": !!text
44
- })
39
+ href: href,
40
+ vkuiClass: classNames("TabbarItem", platform === Platform.IOS && "TabbarItem--ios", platform === Platform.ANDROID && "TabbarItem--android", selected && "TabbarItem--selected", !!text && "TabbarItem--text")
45
41
  }), createScopedElement(Tappable, {
46
42
  role: "presentation",
47
43
  Component: "div",
@@ -59,8 +55,10 @@ export var TabbarItem = function TabbarItem(_ref) {
59
55
  }, hasReactNode(indicator) && indicator, !indicator && label && createScopedElement(Counter, {
60
56
  size: "s",
61
57
  mode: "prominent"
62
- }, label))), text && createScopedElement("div", {
63
- vkuiClass: "TabbarItem__text"
58
+ }, label))), text && createScopedElement(Footnote, {
59
+ Component: "div",
60
+ vkuiClass: "TabbarItem__text",
61
+ weight: "2"
64
62
  }, text)));
65
63
  };
66
64
  //# sourceMappingURL=TabbarItem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["getClassName","Counter","classNames","usePlatform","hasReactNode","Tappable","Platform","warnOnce","warn","TabbarItem","children","selected","label","indicator","text","href","Component","disabled","restProps","platform","process","env","NODE_ENV","IOS"],"mappings":";;;;AACA,SAASA,YAAT;AACA,SAASC,OAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AAEA,SAASC,QAAT;AACA;AAqBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,YAAD,CAArB;AAEA;AACA;AACA;;AACA,OAAO,IAAME,UAAU,GAAG,SAAbA,UAAa,OAUH;AAAA,MATrBC,QASqB,QATrBA,QASqB;AAAA,MARrBC,QAQqB,QARrBA,QAQqB;AAAA,MAPrBC,KAOqB,QAPrBA,KAOqB;AAAA,MANrBC,SAMqB,QANrBA,SAMqB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,IAIqB,QAJrBA,IAIqB;AAAA,4BAHrBC,SAGqB;AAAA,MAHrBA,SAGqB,+BAHTD,IAAI,GAAG,GAAH,GAAS,QAGJ;AAAA,MAFrBE,QAEqB,QAFrBA,QAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGhB,WAAW,EAA5B;;AAEA,MAAIS,KAAK,IAAIQ,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAtC,EAAqD;AACnDd,IAAAA,IAAI,CACF,yEADE,CAAJ;AAGD;;AAED,SACE,oBAAC,SAAD,eACMU,SADN;AAEE,IAAA,QAAQ,EAAED,QAFZ;AAGE,IAAA,IAAI,EAAEF,IAHR,CAIE;AAJF;AAKE,IAAA,SAAS,EAAEb,UAAU,CAACF,YAAY,CAAC,YAAD,EAAemB,QAAf,CAAb,EAAuC;AAC1D,8BAAwBR,QADkC;AAE1D,0BAAoB,CAAC,CAACG;AAFoC,KAAvC;AALvB,MAUE,oBAAC,QAAD;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,QAAQ,EAAEG,QAHZ;AAIE,IAAA,UAAU,EACRE,QAAQ,KAAKb,QAAQ,CAACiB,GAAtB,GACI,8BADJ,GAEI,YAPR;AASE,IAAA,iBAAiB,EAAEJ,QAAQ,KAAKb,QAAQ,CAACiB,GAAtB,GAA4B,CAA5B,GAAgC,GATrD;AAUE,IAAA,QAAQ,EAAE,KAVZ;AAWE,IAAA,SAAS,EAAC;AAXZ,IAVF,EAuBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGN,YAAY,CAACS,SAAD,CAAZ,IAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IACC,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KACGA,KADH,CAHJ,CAFF,CADF,EAYGE,IAAI,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,IAAnC,CAZX,CAvBF,CADF;AAwCD,CA3DM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { Counter } from \"../Counter/Counter\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { Platform } from \"../../lib/platform\";\nimport { HasComponent, HasRootRef } from \"../../types\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./TabbarItem.css\";\n\nexport interface TabbarItemProps\n extends Omit<React.AllHTMLAttributes<HTMLElement>, \"label\">, // TODO убрать Omit после удаления свойства label\n HasRootRef<HTMLElement>,\n HasComponent {\n selected?: boolean;\n /**\n * Текст рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst warn = warnOnce(\"TabbarItem\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabbarItem\n */\nexport const TabbarItem = ({\n children,\n selected,\n label,\n indicator,\n text,\n href,\n Component = href ? \"a\" : \"button\",\n disabled,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n if (label && process.env.NODE_ENV === \"development\") {\n warn(\n \"Свойство label устарело и будет удалено в 5.0.0. Используйте indicator.\"\n );\n }\n\n return (\n <Component\n {...restProps}\n disabled={disabled}\n href={href}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(getClassName(\"TabbarItem\", platform), {\n \"TabbarItem--selected\": selected,\n \"TabbarItem--text\": !!text,\n })}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={\n platform === Platform.IOS\n ? \"TabbarItem__tappable--active\"\n : \"background\"\n }\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n vkuiClass=\"TabbarItem__tappable\"\n />\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && (\n <Counter size=\"s\" mode=\"prominent\">\n {label}\n </Counter>\n )}\n </div>\n </div>\n {text && <div vkuiClass=\"TabbarItem__text\">{text}</div>}\n </div>\n </Component>\n );\n};\n"],"file":"TabbarItem.js"}
1
+ {"version":3,"sources":["../../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["Counter","classNames","usePlatform","hasReactNode","Tappable","Footnote","Platform","warnOnce","warn","TabbarItem","children","selected","label","indicator","text","href","Component","disabled","restProps","platform","process","env","NODE_ENV","IOS","ANDROID"],"mappings":";;;;AACA,SAASA,OAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AAEA,SAASC,QAAT;AACA;AAqBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,YAAD,CAArB;AAEA;AACA;AACA;;AACA,OAAO,IAAME,UAAU,GAAG,SAAbA,UAAa,OAUH;AAAA,MATrBC,QASqB,QATrBA,QASqB;AAAA,MARrBC,QAQqB,QARrBA,QAQqB;AAAA,MAPrBC,KAOqB,QAPrBA,KAOqB;AAAA,MANrBC,SAMqB,QANrBA,SAMqB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,IAIqB,QAJrBA,IAIqB;AAAA,4BAHrBC,SAGqB;AAAA,MAHrBA,SAGqB,+BAHTD,IAAI,GAAG,GAAH,GAAS,QAGJ;AAAA,MAFrBE,QAEqB,QAFrBA,QAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGjB,WAAW,EAA5B;;AAEA,MAAIU,KAAK,IAAIQ,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAtC,EAAqD;AACnDd,IAAAA,IAAI,CACF,yEADE,CAAJ;AAGD;;AAED,SACE,oBAAC,SAAD,eACMU,SADN;AAEE,IAAA,QAAQ,EAAED,QAFZ;AAGE,IAAA,IAAI,EAAEF,IAHR;AAIE,IAAA,SAAS,EAAEd,UAAU,CACnB,YADmB,EAEnBkB,QAAQ,KAAKb,QAAQ,CAACiB,GAAtB,IAA6B,iBAFV,EAGnBJ,QAAQ,KAAKb,QAAQ,CAACkB,OAAtB,IAAiC,qBAHd,EAInBb,QAAQ,IAAI,sBAJO,EAKnB,CAAC,CAACG,IAAF,IAAU,kBALS;AAJvB,MAYE,oBAAC,QAAD;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,QAAQ,EAAEG,QAHZ;AAIE,IAAA,UAAU,EACRE,QAAQ,KAAKb,QAAQ,CAACiB,GAAtB,GACI,8BADJ,GAEI,YAPR;AASE,IAAA,iBAAiB,EAAEJ,QAAQ,KAAKb,QAAQ,CAACiB,GAAtB,GAA4B,CAA5B,GAAgC,GATrD;AAUE,IAAA,QAAQ,EAAE,KAVZ;AAWE,IAAA,SAAS,EAAC;AAXZ,IAZF,EAyBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGP,YAAY,CAACU,SAAD,CAAZ,IAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IACC,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KACGA,KADH,CAHJ,CAFF,CADF,EAYGE,IAAI,IACH,oBAAC,QAAD;AAAU,IAAA,SAAS,EAAC,KAApB;AAA0B,IAAA,SAAS,EAAC,kBAApC;AAAuD,IAAA,MAAM,EAAC;AAA9D,KACGA,IADH,CAbJ,CAzBF,CADF;AA8CD,CAjEM","sourcesContent":["import * as React from \"react\";\nimport { Counter } from \"../Counter/Counter\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { Footnote } from \"../Typography/Footnote/Footnote\";\nimport { Platform } from \"../../lib/platform\";\nimport { HasComponent, HasRootRef } from \"../../types\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./TabbarItem.css\";\n\nexport interface TabbarItemProps\n extends Omit<React.AllHTMLAttributes<HTMLElement>, \"label\">, // TODO убрать Omit после удаления свойства label\n HasRootRef<HTMLElement>,\n HasComponent {\n selected?: boolean;\n /**\n * Текст рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst warn = warnOnce(\"TabbarItem\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabbarItem\n */\nexport const TabbarItem = ({\n children,\n selected,\n label,\n indicator,\n text,\n href,\n Component = href ? \"a\" : \"button\",\n disabled,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n if (label && process.env.NODE_ENV === \"development\") {\n warn(\n \"Свойство label устарело и будет удалено в 5.0.0. Используйте indicator.\"\n );\n }\n\n return (\n <Component\n {...restProps}\n disabled={disabled}\n href={href}\n vkuiClass={classNames(\n \"TabbarItem\",\n platform === Platform.IOS && \"TabbarItem--ios\",\n platform === Platform.ANDROID && \"TabbarItem--android\",\n selected && \"TabbarItem--selected\",\n !!text && \"TabbarItem--text\"\n )}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={\n platform === Platform.IOS\n ? \"TabbarItem__tappable--active\"\n : \"background\"\n }\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n vkuiClass=\"TabbarItem__tappable\"\n />\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && (\n <Counter size=\"s\" mode=\"prominent\">\n {label}\n </Counter>\n )}\n </div>\n </div>\n {text && (\n <Footnote Component=\"div\" vkuiClass=\"TabbarItem__text\" weight=\"2\">\n {text}\n </Footnote>\n )}\n </div>\n </Component>\n );\n};\n"],"file":"TabbarItem.js"}
@@ -1 +1 @@
1
- .vkuiTabs__in,.vkuiTabs .vkuiHorizontalScroll__in-wrapper{display:flex;align-items:center}.vkuiPanelHeader .vkuiTabs{overflow:hidden;font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--font-common)}.vkuiPanelHeader .vkuiTabs::after{display:block;width:1000px;content:""}.vkuiTabs .vkuiHorizontalScroll{min-width:100%}.vkuiTabs--buttons{padding-top:8px;padding-bottom:8px}.vkuiTabs--default,.vkuiTabs--default .vkuiHorizontalScroll__in-wrapper{justify-content:center}.vkuiTabs--buttons,.vkuiTabs--default .vkuiHorizontalScroll__in-wrapper{justify-content:flex-start}.vkuiTabs--sizeX-compact.vkuiTabs--buttons .vkuiHorizontalScroll__in-wrapper::after,.vkuiTabs--sizeX-compact.vkuiTabs--buttons .vkuiHorizontalScroll__in-wrapper::before{display:block;width:8px;flex-shrink:0;height:1px;content:""}.vkuiTabs--ios.vkuiTabs--segmented{padding:4px 12px 8px}.vkuiFixedLayout--ios.vkuiFixedLayout--bottom .vkuiTabs::after{position:absolute;left:0;top:0;width:100%;height:100%;content:"";background:#fff;background:var(--background_content)}.vkuiFixedLayout--ios.vkuiFixedLayout--bottom .vkuiTabs__in,.vkuiFixedLayout--ios.vkuiFixedLayout--bottom .vkuiSeparator{position:relative;z-index:2}.vkuiTabsItem .vkuiCounter{margin-left:8px}.vkuiTabs .vkuiTabsItem .vkuiCounter--secondary{background:#76787a;background:var(--panel_tab_inactive_text);color:#fff;color:var(--white)}.vkuiTabs .vkuiTabsItem--selected .vkuiCounter--secondary{background:#5d5f61;background:var(--panel_tab_active_text);color:#ebedf0;color:var(--panel_tab_active_background)}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem .vkuiCounter--secondary{background:#99a2ad;background:var(--segmented_control_tint);color:#fff;color:var(--background_content)}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem--selected .vkuiCounter--secondary{background:#fff;background:var(--background_content);color:#99a2ad;color:var(--segmented_control_tint)}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem .vkuiCounter--s-m{position:relative;top:1px}.vkuiGroup--plain .vkuiGroup__inner>.vkuiTabs--default:first-child{margin-top:-8px}.vkuiGroup--card>.vkuiGroup__inner>.vkuiTabs--default:first-child{margin-top:-4px}
1
+ .vkuiTabs__in{align-items:stretch;display:flex}.vkuiTabs--withGaps{justify-content:flex-start}.vkuiTabs--ios.vkuiTabs--segmented{padding:4px 12px 8px}.vkuiPanelHeader .vkuiTabs{font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--font-common);overflow:hidden}.vkuiPanelHeader .vkuiTabs:after{content:"";display:block;width:1000px}.vkuiGroup--plain .vkuiGroup__inner>.vkuiTabs--default:first-child{margin-top:-8px}.vkuiGroup--card>.vkuiGroup__inner>.vkuiTabs--default:first-child{margin-top:-4px}.vkuiFixedLayout--ios.vkuiFixedLayout--bottom .vkuiTabs:after{background:#fff;background:var(--background_content,var(--vkui--color_background_content));content:"";height:100%;left:0;position:absolute;top:0;width:100%}.vkuiFixedLayout--ios.vkuiFixedLayout--bottom .vkuiSeparator,.vkuiFixedLayout--ios.vkuiFixedLayout--bottom .vkuiTabs__in{position:relative;z-index:2}
@@ -3,9 +3,20 @@ import { HasRootRef } from "../../types";
3
3
  import { AdaptivityProps } from "../../hoc/withAdaptivity";
4
4
  import "./Tabs.css";
5
5
  export interface TabsProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement>, AdaptivityProps {
6
- mode?: "default" | "buttons" | "segmented";
6
+ /**
7
+ * Задаёт вид кнопок.
8
+ *
9
+ * > ⚠️ Значения `"buttons"`, `"segmented"` устарели и будут удалены в 5.0.0. Вместо `"buttons"` используйте `"secondary"`.
10
+ * > Режим `"segmented"` переехал в отдельный компонент [`SegmentedControl`](https://vkcom.github.io/VKUI#/SegmentedControl),
11
+ * > поэтому используйте его вместо `Tabs`.
12
+ */
13
+ mode?: "buttons" | "segmented" | "default" | "accent" | "secondary";
7
14
  }
8
- export declare const TabsModeContext: React.Context<"default" | "buttons" | "segmented" | undefined>;
15
+ export interface TabsContextProps {
16
+ mode: TabsProps["mode"];
17
+ withGaps: boolean;
18
+ }
19
+ export declare const TabsModeContext: React.Context<TabsContextProps>;
9
20
  /**
10
21
  * @see https://vkcom.github.io/VKUI/#/Tabs
11
22
  */
@@ -3,13 +3,17 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
3
3
  var _excluded = ["children", "mode", "getRootRef", "sizeX"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import * as React from "react";
6
- import { getClassName } from "../../helpers/getClassName";
7
6
  import { classNames } from "../../lib/classNames";
8
7
  import { usePlatform } from "../../hooks/usePlatform";
9
- import { IOS } from "../../lib/platform";
8
+ import { IOS, VKCOM } from "../../lib/platform";
10
9
  import { withAdaptivity } from "../../hoc/withAdaptivity";
10
+ import { warnOnce } from "../../lib/warnOnce";
11
11
  import "./Tabs.css";
12
- export var TabsModeContext = /*#__PURE__*/React.createContext("default");
12
+ var warn = warnOnce("Tabs");
13
+ export var TabsModeContext = /*#__PURE__*/React.createContext({
14
+ mode: "default",
15
+ withGaps: false
16
+ });
13
17
 
14
18
  var TabsComponent = function TabsComponent(_ref) {
15
19
  var children = _ref.children,
@@ -21,17 +25,31 @@ var TabsComponent = function TabsComponent(_ref) {
21
25
 
22
26
  var platform = usePlatform();
23
27
 
28
+ if ((mode === "buttons" || mode === "segmented") && process.env.NODE_ENV === "development") {
29
+ var expectedValueText = mode === "buttons" ? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \"secondary\"" : "компонент SegmentedControl";
30
+ warn("mode=\"".concat(mode, "\" \u0443\u0441\u0442\u0430\u0440\u0435\u043B\u043E \u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u043E \u0432 5.0.0. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 ").concat(expectedValueText));
31
+ }
32
+
24
33
  if (platform !== IOS && mode === "segmented") {
25
34
  mode = "default";
26
35
  }
27
36
 
37
+ if (mode === "buttons") {
38
+ mode = "secondary";
39
+ }
40
+
41
+ var withGaps = mode === "accent" || mode === "secondary";
28
42
  return createScopedElement("div", _extends({}, restProps, {
29
43
  ref: getRootRef,
30
- vkuiClass: classNames(getClassName("Tabs", platform), "Tabs--".concat(mode), "Tabs--sizeX-".concat(sizeX))
44
+ vkuiClass: classNames("Tabs", (platform === IOS || platform === VKCOM) && "Tabs--".concat(platform), "Tabs--".concat(mode), withGaps && "Tabs--withGaps", // TODO v5.0.0 новая адаптивность
45
+ "Tabs--sizeX-".concat(sizeX))
31
46
  }), createScopedElement("div", {
32
47
  vkuiClass: "Tabs__in"
33
48
  }, createScopedElement(TabsModeContext.Provider, {
34
- value: mode
49
+ value: {
50
+ mode: mode,
51
+ withGaps: withGaps
52
+ }
35
53
  }, children)));
36
54
  };
37
55
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Tabs/Tabs.tsx"],"names":["React","getClassName","classNames","usePlatform","IOS","withAdaptivity","TabsModeContext","createContext","TabsComponent","children","mode","getRootRef","sizeX","restProps","platform","Tabs","displayName"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AAEA,SAASC,WAAT;AACA,SAASC,GAAT;AACA,SAASC,cAAT;AACA;AASA,OAAO,IAAMC,eAAe,gBAC1BN,KAAK,CAACO,aAAN,CAAuC,SAAvC,CADK;;AAGP,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,OAML;AAAA,MALfC,QAKe,QALfA,QAKe;AAAA,uBAJfC,IAIe;AAAA,MAJfA,IAIe,0BAJR,SAIQ;AAAA,MAHfC,UAGe,QAHfA,UAGe;AAAA,MAFfC,KAEe,QAFfA,KAEe;AAAA,MADZC,SACY;;AACf,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;;AAEA,MAAIW,QAAQ,KAAKV,GAAb,IAAoBM,IAAI,KAAK,WAAjC,EAA8C;AAC5CA,IAAAA,IAAI,GAAG,SAAP;AACD;;AAED,SACE,wCACMG,SADN;AAEE,IAAA,GAAG,EAAEF,UAFP;AAGE,IAAA,SAAS,EAAET,UAAU,CACnBD,YAAY,CAAC,MAAD,EAASa,QAAT,CADO,kBAEVJ,IAFU,yBAGJE,KAHI;AAHvB,MASE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,oBAAC,eAAD,CAAiB,QAAjB;AAA0B,IAAA,KAAK,EAAEF;AAAjC,KACGD,QADH,CADF,CATF,CADF;AAiBD,CA9BD;AAgCA;AACA;AACA;;;AACA,OAAO,IAAMM,IAAI,GAAGV,cAAc,CAACG,aAAD,EAAgB;AAAEI,EAAAA,KAAK,EAAE;AAAT,CAAhB,CAA3B;AAEPG,IAAI,CAACC,WAAL,GAAmB,MAAnB","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { HasRootRef } from \"../../types\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { IOS } from \"../../lib/platform\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport \"./Tabs.css\";\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n AdaptivityProps {\n mode?: \"default\" | \"buttons\" | \"segmented\";\n}\n\nexport const TabsModeContext =\n React.createContext<TabsProps[\"mode\"]>(\"default\");\n\nconst TabsComponent = ({\n children,\n mode = \"default\",\n getRootRef,\n sizeX,\n ...restProps\n}: TabsProps) => {\n const platform = usePlatform();\n\n if (platform !== IOS && mode === \"segmented\") {\n mode = \"default\";\n }\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n vkuiClass={classNames(\n getClassName(\"Tabs\", platform),\n `Tabs--${mode}`,\n `Tabs--sizeX-${sizeX}`\n )}\n >\n <div vkuiClass=\"Tabs__in\">\n <TabsModeContext.Provider value={mode}>\n {children}\n </TabsModeContext.Provider>\n </div>\n </div>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabs\n */\nexport const Tabs = withAdaptivity(TabsComponent, { sizeX: true });\n\nTabs.displayName = \"Tabs\";\n"],"file":"Tabs.js"}
1
+ {"version":3,"sources":["../../../../src/components/Tabs/Tabs.tsx"],"names":["React","classNames","usePlatform","IOS","VKCOM","withAdaptivity","warnOnce","warn","TabsModeContext","createContext","mode","withGaps","TabsComponent","children","getRootRef","sizeX","restProps","platform","process","env","NODE_ENV","expectedValueText","Tabs","displayName"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AAEA,SAASC,WAAT;AACA,SAASC,GAAT,EAAcC,KAAd;AACA,SAASC,cAAT;AACA,SAASC,QAAT;AACA;AAgBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,MAAD,CAArB;AAOA,OAAO,IAAME,eAAe,gBAAGR,KAAK,CAACS,aAAN,CAAsC;AACnEC,EAAAA,IAAI,EAAE,SAD6D;AAEnEC,EAAAA,QAAQ,EAAE;AAFyD,CAAtC,CAAxB;;AAKP,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,OAML;AAAA,MALfC,QAKe,QALfA,QAKe;AAAA,uBAJfH,IAIe;AAAA,MAJfA,IAIe,0BAJR,SAIQ;AAAA,MAHfI,UAGe,QAHfA,UAGe;AAAA,MAFfC,KAEe,QAFfA,KAEe;AAAA,MADZC,SACY;;AACf,MAAMC,QAAQ,GAAGf,WAAW,EAA5B;;AAEA,MACE,CAACQ,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,WAAhC,KACAQ,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAF3B,EAGE;AACA,QAAMC,iBAAiB,GACrBX,IAAI,KAAK,SAAT,sEAEI,4BAHN;AAIAH,IAAAA,IAAI,kBACOG,IADP,mOAC8DW,iBAD9D,EAAJ;AAGD;;AAED,MAAIJ,QAAQ,KAAKd,GAAb,IAAoBO,IAAI,KAAK,WAAjC,EAA8C;AAC5CA,IAAAA,IAAI,GAAG,SAAP;AACD;;AAED,MAAIA,IAAI,KAAK,SAAb,EAAwB;AACtBA,IAAAA,IAAI,GAAG,WAAP;AACD;;AAED,MAAMC,QAAQ,GAAGD,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,WAA/C;AAEA,SACE,wCACMM,SADN;AAEE,IAAA,GAAG,EAAEF,UAFP;AAGE,IAAA,SAAS,EAAEb,UAAU,CACnB,MADmB,EAEnB,CAACgB,QAAQ,KAAKd,GAAb,IAAoBc,QAAQ,KAAKb,KAAlC,qBAAqDa,QAArD,CAFmB,kBAGVP,IAHU,GAInBC,QAAQ,IAAI,gBAJO,EAKnB;AALmB,0BAMJI,KANI;AAHvB,MAYE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,oBAAC,eAAD,CAAiB,QAAjB;AAA0B,IAAA,KAAK,EAAE;AAAEL,MAAAA,IAAI,EAAJA,IAAF;AAAQC,MAAAA,QAAQ,EAARA;AAAR;AAAjC,KACGE,QADH,CADF,CAZF,CADF;AAoBD,CApDD;AAsDA;AACA;AACA;;;AACA,OAAO,IAAMS,IAAI,GAAGjB,cAAc,CAACO,aAAD,EAAgB;AAAEG,EAAAA,KAAK,EAAE;AAAT,CAAhB,CAA3B;AAEPO,IAAI,CAACC,WAAL,GAAmB,MAAnB","sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { HasRootRef } from \"../../types\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { IOS, VKCOM } from \"../../lib/platform\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./Tabs.css\";\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n AdaptivityProps {\n /**\n * Задаёт вид кнопок.\n *\n * > ⚠️ Значения `\"buttons\"`, `\"segmented\"` устарели и будут удалены в 5.0.0. Вместо `\"buttons\"` используйте `\"secondary\"`.\n * > Режим `\"segmented\"` переехал в отдельный компонент [`SegmentedControl`](https://vkcom.github.io/VKUI#/SegmentedControl),\n * > поэтому используйте его вместо `Tabs`.\n */\n mode?: \"buttons\" | \"segmented\" | \"default\" | \"accent\" | \"secondary\";\n}\n\nconst warn = warnOnce(\"Tabs\");\n\nexport interface TabsContextProps {\n mode: TabsProps[\"mode\"];\n withGaps: boolean;\n}\n\nexport const TabsModeContext = React.createContext<TabsContextProps>({\n mode: \"default\",\n withGaps: false,\n});\n\nconst TabsComponent = ({\n children,\n mode = \"default\",\n getRootRef,\n sizeX,\n ...restProps\n}: TabsProps) => {\n const platform = usePlatform();\n\n if (\n (mode === \"buttons\" || mode === \"segmented\") &&\n process.env.NODE_ENV === \"development\"\n ) {\n const expectedValueText =\n mode === \"buttons\"\n ? `значения \"secondary\"`\n : \"компонент SegmentedControl\";\n warn(\n `mode=\"${mode}\" устарело и будет удалено в 5.0.0. Используйте ${expectedValueText}`\n );\n }\n\n if (platform !== IOS && mode === \"segmented\") {\n mode = \"default\";\n }\n\n if (mode === \"buttons\") {\n mode = \"secondary\";\n }\n\n const withGaps = mode === \"accent\" || mode === \"secondary\";\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n vkuiClass={classNames(\n \"Tabs\",\n (platform === IOS || platform === VKCOM) && `Tabs--${platform}`,\n `Tabs--${mode}`,\n withGaps && \"Tabs--withGaps\",\n // TODO v5.0.0 новая адаптивность\n `Tabs--sizeX-${sizeX}`\n )}\n >\n <div vkuiClass=\"Tabs__in\">\n <TabsModeContext.Provider value={{ mode, withGaps }}>\n {children}\n </TabsModeContext.Provider>\n </div>\n </div>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabs\n */\nexport const Tabs = withAdaptivity(TabsComponent, { sizeX: true });\n\nTabs.displayName = \"Tabs\";\n"],"file":"Tabs.js"}
@@ -1 +1,5 @@
1
- .vkuiTabsItem{white-space:nowrap;text-align:center;box-sizing:border-box;flex-shrink:0;display:flex;align-items:baseline;justify-content:center}.vkuiTabs--default .vkuiTabsItem{color:#99a2ad;color:var(--text_tertiary);max-width:100%;min-width:0;flex-basis:0;flex-shrink:0;flex-grow:1;position:relative;padding-left:16px;padding-right:16px}.vkuiTabs--default .vkuiTabsItem__in{overflow:hidden;overflow:-moz-hidden-unscrollable;text-overflow:ellipsis;padding:14px 0}.vkuiTabs--default .vkuiTabsItem::after{content:"";display:block;position:absolute;left:16px;bottom:8px;width:calc(100% - 32px);height:2px;border-radius:2px}.vkuiTabs--default .vkuiTabsItem--selected{color:#000;color:var(--text_primary)}.vkuiTabs--default .vkuiTabsItem--selected::after{background:#2688eb;background:var(--accent)}.vkuiHorizontalScroll .vkuiTabsItem{min-width:64px;flex-basis:auto}.vkuiTabs--buttons .vkuiTabsItem{border-radius:10px;box-sizing:border-box;padding:0 16px}.vkuiTabs--buttons .vkuiTabsItem__in{padding:6px 0}.vkuiTabs--buttons .vkuiTabs__in>.vkuiTabsItem:first-child{margin-left:8px}.vkuiTabs--buttons .vkuiTabsItem:not(:last-child){margin-right:8px}.vkuiTabs--buttons .vkuiTabsItem{background-color:#fff;background-color:var(--header_background);color:#99a2ad;color:var(--header_tab_inactive_text)}.vkuiTabs--buttons .vkuiTabsItem--selected{background-color:transparent;background-color:var(--header_tab_active_background);color:#000;color:var(--header_tab_active_text)}.vkuiTabs--buttons .vkuiTabsItem{color:#76787a;color:var(--panel_tab_inactive_text)}.vkuiTabs--buttons .vkuiTabsItem--selected{background-color:#ebedf0;background-color:var(--panel_tab_active_background);color:#5d5f61;color:var(--panel_tab_active_text)}.vkuiTabsItem__after .vkuiIcon--dropdown_16{color:#2688eb;color:var(--header_tint);-webkit-transform-origin:50% calc(50% + 1px);transform-origin:50% calc(50% + 1px);-webkit-transform:translateY(1px);transform:translateY(1px);margin-left:6px}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem{border:1px solid;padding:0 12px;max-width:100%;flex-basis:0;flex-shrink:0;flex-grow:1;border-radius:0}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem__in{padding:7px 0}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem:not(:first-child){border-left:none}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem:last-child{border-top-right-radius:10px;border-bottom-right-radius:10px}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem:first-child{border-top-left-radius:10px;border-bottom-left-radius:10px}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem{border-color:#99a2ad;border-color:var(--segmented_control_tint);color:#99a2ad;color:var(--segmented_control_tint)}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem--selected{background-color:#99a2ad;background-color:var(--segmented_control_tint)}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem--selected{color:#fff;color:var(--background_content)}.vkuiTabs--ios.vkuiTabs--segmented .vkuiTabsItem:not(.vkuiTabsItem--selected).vkuiTabsItem--active{background:#d7d8d9;background:var(--separator_common)}.vkuiPanelHeader--ios .vkuiTabs--segmented.vkuiTabsItem:not(.vkuiTabsItem--selected).vkuiTabsItem--active .vkuiTabsItem__in{opacity:.7}.vkuiPanelHeader--ios .vkuiTabs--segmented .vkuiTabsItem{border-color:#2688eb;border-color:var(--header_tint);color:#2688eb;color:var(--header_tint)}.vkuiTabs--ios.vkuiTabs--segmented.vkuiTabs--header .vkuiTabsItem--selected{background-color:#2688eb;background-color:var(--header_tint);color:#fff;color:var(--header_background)}.vkuiTabs--vkcom .vkuiTabsItem--vkcom{flex-grow:0;min-width:auto;padding-left:10px;padding-right:10px}.vkuiTabs--vkcom .vkuiTabsItem--vkcom::after{left:2px;bottom:0;width:calc(100% - 4px)}
1
+ .vkuiTabsItem{align-items:center;border-radius:8px;border-radius:var(--vkui--size_border_radius--regular,8px);box-sizing:border-box;display:flex;justify-content:center;max-width:100%;min-height:32px;min-width:0;padding:4px 8px;transition:background-color .15s ease-out}.vkuiTabsItem--withGaps{margin-bottom:8px;margin-left:6px;margin-top:8px}.vkuiTabsItem--sizeY-compact{min-height:28px;padding-bottom:2px;padding-top:2px}.vkuiTabsItem[disabled]{opacity:.64;opacity:var(--vkui--opacity_disable_accessibility,.64)}.vkuiTabsItem--default{flex-basis:0;flex-grow:1;flex-shrink:0;min-height:48px;padding:12px 16px;position:relative}.vkuiTabsItem--sizeY-compact.vkuiTabsItem--default{min-height:44px;padding-bottom:10px;padding-top:10px}.vkuiTabsItem--hover.vkuiTabsItem--default{background-color:rgba(0,16,61,.04);background-color:var(--vkui--color_transparent--hover,rgba(0,16,61,.04))}.vkuiTabsItem--accent{transition:background-color .15s ease-out,box-shadow .15s ease-out}.vkuiTabsItem--selected.vkuiTabsItem--accent{background-color:#fff;background-color:var(
2
+ --header_alternate_background,var(--vkui--color_background_modal)
3
+ );box-shadow:0 4px 8px rgba(0,0,0,.04),0 0 4px rgba(0,0,0,.06);box-shadow:var(--vkui--elevation2,0 4px 8px rgba(0,0,0,.04),0 0 4px rgba(0,0,0,.06))}.vkuiTabsItem--hover.vkuiTabsItem--accent{background-color:#ebedf0;background-color:var(
4
+ --control_background,var(--vkui--color_background_secondary)
5
+ )}.vkuiTabsItem--accent:before{border:1px solid transparent;border:var(--thin-border) solid transparent;border-radius:inherit;bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.vkuiTabsItem--selected.vkuiTabsItem--accent:before{border-color:#d7d8d9;border-color:var(--separator_common,var(--vkui--color_separator_primary))}.vkuiTabsItem--selected.vkuiTabsItem--secondary{background-color:rgba(0,0,0,.04);background-color:var(--vkui--color_background_secondary_alpha,rgba(0,0,0,.04))}.vkuiTabsItem--hover.vkuiTabsItem--secondary{background-color:rgba(0,0,0,.08);background-color:var(--vkui--color_background_secondary_alpha--hover,rgba(0,0,0,.08))}.vkuiTabsItem__before{color:#818c99;color:var(--icon_outline_medium,var(--vkui--color_icon_medium));margin-right:6px;transition:color .15s ease-out}.vkuiTabsItem--selected .vkuiTabsItem__before{color:#000;color:var(--text_primary,var(--vkui--color_icon_primary))}.vkuiTabsItem--selected.vkuiTabsItem--accent .vkuiTabsItem__before{color:#2688eb;color:var(--header_tint_alternate,var(--vkui--color_icon_accent_themed))}.vkuiTabsItem--selected.vkuiTabsItem--secondary .vkuiTabsItem__before{opacity:.72}.vkuiTabsItem__label{color:#818c99;color:var(--text_secondary,var(--vkui--color_text_secondary));max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;transition:color .15s ease-out;white-space:nowrap}.vkuiTabsItem--selected .vkuiTabsItem__label{color:#000;color:var(--text_primary,var(--vkui--color_text_primary))}.vkuiTabsItem--selected.vkuiTabsItem--accent .vkuiTabsItem__label{color:#2688eb;color:var(--header_tint_alternate,var(--vkui--color_text_accent_themed))}.vkuiTabsItem--selected.vkuiTabsItem--secondary .vkuiTabsItem__label{opacity:.72}.vkuiTabsItem__status{margin-left:6px}.vkuiTabsItem__status--count{color:#99a2ad;color:var(--text_tertiary,var(--vkui--color_text_tertiary))}.vkuiTabsItem__after{color:#2688eb;color:var(--header_tint_alternate,var(--vkui--color_icon_accent_themed));margin-left:6px}.vkuiTabsItem__underline{background-color:#2688eb;background-color:var(--accent,var(--vkui--color_background_accent));border-radius:2px;bottom:5px;height:2px;left:16px;opacity:0;pointer-events:none;position:absolute;right:16px;transition:opacity .15s ease-out}.vkuiTabsItem--sizeY-compact .vkuiTabsItem__underline{bottom:3px}.vkuiTabsItem__underline[data-selected=true]{opacity:1}.vkuiTabs--vkcom .vkuiTabsItem{flex-grow:0;min-width:auto;padding-left:10px;padding-right:10px}.vkuiTabs--vkcom .vkuiTabsItem__underline{bottom:0;left:2px;right:2px}.vkuiHorizontalScroll .vkuiTabsItem{flex-basis:auto;flex-grow:1;flex-shrink:0;min-width:64px}.vkuiTabsItem--ios.vkuiTabsItem--segmented{border:1px solid #99a2ad;border:1px solid var(--segmented_control_tint);border-radius:0;flex-basis:0;flex-grow:1;flex-shrink:0;max-width:100%;padding:7px 12px}.vkuiTabsItem--ios.vkuiTabsItem--segmented:not(:first-child){border-left:none}.vkuiTabsItem--ios.vkuiTabsItem--segmented:first-child{border-bottom-left-radius:10px;border-top-left-radius:10px}.vkuiTabsItem--ios.vkuiTabsItem--segmented:last-child{border-bottom-right-radius:10px;border-top-right-radius:10px}.vkuiTabsItem--ios.vkuiTabsItem--segmented.vkuiTabsItem--selected{background-color:#99a2ad;background-color:var(--segmented_control_tint);color:#fff;color:var(--background_content)}.vkuiTabsItem--ios.vkuiTabsItem--segmented:not(.vkuiTabsItem--selected).vkuiTabsItem--active{background-color:#d7d8d9;background-color:var(--separator_common)}.vkuiTabs--header .vkuiTabsItem--ios.vkuiTabsItem--segmented.vkuiTabsItem--selected{background-color:#2688eb;background-color:var(--header_tint_alternate);color:#fff;color:var(--header_background)}.vkuiTabsItem--ios.vkuiTabsItem--segmented .vkuiTabsItem__label{color:#99a2ad;color:var(--segmented_control_tint)}.vkuiTabsItem--ios.vkuiTabsItem--segmented.vkuiTabsItem--selected .vkuiTabsItem__label{color:#fff;color:var(--background_content)}.vkuiPanelHeader--ios .vkuiTabsItem--segmented:not(.vkuiTabsItem--selected).vkuiTabsItem--active .vkuiTabsItem__label{opacity:.7}.vkuiPanelHeader--ios .vkuiTabsItem--segmented{border-color:#2688eb;border-color:var(--header_tint_alternate);color:#2688eb;color:var(--header_tint_alternate)}
@@ -1,10 +1,31 @@
1
1
  import * as React from "react";
2
2
  import "./TabsItem.css";
3
3
  export interface TabsItemProps extends React.HTMLAttributes<HTMLElement> {
4
+ /**
5
+ * Добавляет иконку слева.
6
+ *
7
+ * - Для `mode="default"` используйте иконки размером 24.
8
+ * - Для всех остальных `mode` используйте иконки размером 20.
9
+ */
10
+ before?: React.ReactNode;
11
+ /**
12
+ * Добавляет элемент слева от `after`.
13
+ *
14
+ * - `React.ReactElement` – либо [`Badge`](https://vkcom.github.io/VKUI/#/Badge) с параметром `mode="prominent"`.
15
+ * либо [`Counter`](https://vkcom.github.io/VKUI/#/Counter) с параметрами `mode="prominent" size="s"`.
16
+ * - `number` – для показа текстового блока с переданным числом.
17
+ */
18
+ status?: React.ReactElement | number;
19
+ /**
20
+ * Добавляет иконку справа.
21
+ *
22
+ * Например, `<Icon16Dropdown />`
23
+ */
4
24
  after?: React.ReactNode;
5
25
  selected?: boolean;
26
+ disabled?: boolean;
6
27
  }
7
28
  /**
8
29
  * @see https://vkcom.github.io/VKUI/#/TabsItem
9
30
  */
10
- export declare const TabsItem: ({ children, selected, after, ...restProps }: TabsItemProps) => JSX.Element;
31
+ export declare const TabsItem: ({ before, children, status, after, selected, ...restProps }: TabsItemProps) => JSX.Element;
@@ -1,52 +1,71 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "selected", "after"];
3
+ var _excluded = ["before", "children", "status", "after", "selected"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import * as React from "react";
6
- import { getClassName } from "../../helpers/getClassName";
7
6
  import { Tappable } from "../Tappable/Tappable";
8
7
  import { classNames } from "../../lib/classNames";
9
- import { VKCOM } from "../../lib/platform";
8
+ import { IOS, VKCOM } from "../../lib/platform";
10
9
  import { usePlatform } from "../../hooks/usePlatform";
11
- import { hasReactNode } from "../../lib/utils";
10
+ import { useAdaptivity } from "../../hooks/useAdaptivity";
12
11
  import { TabsModeContext } from "../Tabs/Tabs";
13
12
  import { Headline } from "../Typography/Headline/Headline";
14
13
  import { Subhead } from "../Typography/Subhead/Subhead";
15
- import { Text } from "../Typography/Text/Text";
16
14
  import "./TabsItem.css";
17
15
 
18
16
  /**
19
17
  * @see https://vkcom.github.io/VKUI/#/TabsItem
20
18
  */
21
19
  export var TabsItem = function TabsItem(_ref) {
22
- var children = _ref.children,
20
+ var before = _ref.before,
21
+ children = _ref.children,
22
+ status = _ref.status,
23
+ after = _ref.after,
23
24
  _ref$selected = _ref.selected,
24
25
  selected = _ref$selected === void 0 ? false : _ref$selected,
25
- after = _ref.after,
26
26
  restProps = _objectWithoutProperties(_ref, _excluded);
27
27
 
28
28
  var platform = usePlatform();
29
- var mode = React.useContext(TabsModeContext);
30
- var ItemTypography = mode === "buttons" || mode === "segmented" ? Subhead : Headline;
31
29
 
32
- if (platform === VKCOM) {
33
- ItemTypography = Text;
30
+ var _useAdaptivity = useAdaptivity(),
31
+ sizeY = _useAdaptivity.sizeY;
32
+
33
+ var _React$useContext = React.useContext(TabsModeContext),
34
+ mode = _React$useContext.mode,
35
+ withGaps = _React$useContext.withGaps;
36
+
37
+ var statusComponent = null;
38
+
39
+ if (status) {
40
+ statusComponent = typeof status === "number" ? createScopedElement(Subhead, {
41
+ Component: "span",
42
+ vkuiClass: "TabsItem__status TabsItem__status--count",
43
+ weight: "2"
44
+ }, status) : createScopedElement("span", {
45
+ vkuiClass: "TabsItem__status"
46
+ }, status);
34
47
  }
35
48
 
36
49
  return createScopedElement(Tappable, _extends({}, restProps, {
37
- // eslint-disable-next-line vkui/no-object-expression-in-arguments
38
- vkuiClass: classNames(getClassName("TabsItem", platform), {
39
- "TabsItem--selected": selected
40
- }),
41
- hasActive: mode === "segmented",
50
+ vkuiClass: classNames("TabsItem", (platform === IOS || platform === VKCOM) && "TabsItem--".concat(platform), mode && "TabsItem--".concat(mode), selected && "TabsItem--selected", // TODO v5.0.0 новая адаптивность
51
+ sizeY && "TabsItem--sizeY-".concat(sizeY), withGaps && "TabsItem--withGaps"),
52
+ hoverMode: "TabsItem--hover",
42
53
  activeMode: "TabsItem--active",
43
- focusVisibleMode: mode === "segmented" ? "outside" : "inside"
44
- }), createScopedElement(ItemTypography, {
54
+ focusVisibleMode: mode === "segmented" ? "outside" : "inside",
55
+ hasActive: mode === "segmented"
56
+ }), before && createScopedElement("div", {
57
+ vkuiClass: "TabsItem__before"
58
+ }, before), createScopedElement(Headline, {
45
59
  Component: "span",
46
- vkuiClass: "TabsItem__in",
60
+ vkuiClass: "TabsItem__label",
61
+ level: mode === "default" ? "1" : "2",
47
62
  weight: "2"
48
- }, children), hasReactNode(after) && createScopedElement("div", {
63
+ }, children), statusComponent, after && createScopedElement("div", {
49
64
  vkuiClass: "TabsItem__after"
50
- }, after));
65
+ }, after), mode === "default" && createScopedElement("div", {
66
+ vkuiClass: "TabsItem__underline",
67
+ "aria-hidden": true,
68
+ "data-selected": selected
69
+ }));
51
70
  };
52
71
  //# sourceMappingURL=TabsItem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/TabsItem/TabsItem.tsx"],"names":["React","getClassName","Tappable","classNames","VKCOM","usePlatform","hasReactNode","TabsModeContext","Headline","Subhead","Text","TabsItem","children","selected","after","restProps","platform","mode","useContext","ItemTypography"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,QAAT;AACA,SAASC,UAAT;AACA,SAASC,KAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAAoBC,eAApB;AACA,SAASC,QAAT;AACA,SAASC,OAAT;AACA,SAASC,IAAT;AACA;;AAOA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,OAKH;AAAA,MAJnBC,QAImB,QAJnBA,QAImB;AAAA,2BAHnBC,QAGmB;AAAA,MAHnBA,QAGmB,8BAHR,KAGQ;AAAA,MAFnBC,KAEmB,QAFnBA,KAEmB;AAAA,MADhBC,SACgB;;AACnB,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;AACA,MAAMY,IAAuB,GAAGjB,KAAK,CAACkB,UAAN,CAAiBX,eAAjB,CAAhC;AAEA,MAAIY,cAAc,GAChBF,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,WAA/B,GAA6CR,OAA7C,GAAuDD,QADzD;;AAGA,MAAIQ,QAAQ,KAAKZ,KAAjB,EAAwB;AACtBe,IAAAA,cAAc,GAAGT,IAAjB;AACD;;AAED,SACE,oBAAC,QAAD,eACMK,SADN;AAEE;AACA,IAAA,SAAS,EAAEZ,UAAU,CAACF,YAAY,CAAC,UAAD,EAAae,QAAb,CAAb,EAAqC;AACxD,4BAAsBH;AADkC,KAArC,CAHvB;AAME,IAAA,SAAS,EAAEI,IAAI,KAAK,WANtB;AAOE,IAAA,UAAU,EAAC,kBAPb;AAQE,IAAA,gBAAgB,EAAEA,IAAI,KAAK,WAAT,GAAuB,SAAvB,GAAmC;AARvD,MAUE,oBAAC,cAAD;AAAgB,IAAA,SAAS,EAAC,MAA1B;AAAiC,IAAA,SAAS,EAAC,cAA3C;AAA0D,IAAA,MAAM,EAAC;AAAjE,KACGL,QADH,CAVF,EAaGN,YAAY,CAACQ,KAAD,CAAZ,IAAuB;AAAK,IAAA,SAAS,EAAC;AAAf,KAAkCA,KAAlC,CAb1B,CADF;AAiBD,CAjCM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { classNames } from \"../../lib/classNames\";\nimport { VKCOM } from \"../../lib/platform\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { TabsProps, TabsModeContext } from \"../Tabs/Tabs\";\nimport { Headline } from \"../Typography/Headline/Headline\";\nimport { Subhead } from \"../Typography/Subhead/Subhead\";\nimport { Text } from \"../Typography/Text/Text\";\nimport \"./TabsItem.css\";\n\nexport interface TabsItemProps extends React.HTMLAttributes<HTMLElement> {\n after?: React.ReactNode;\n selected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabsItem\n */\nexport const TabsItem = ({\n children,\n selected = false,\n after,\n ...restProps\n}: TabsItemProps) => {\n const platform = usePlatform();\n const mode: TabsProps[\"mode\"] = React.useContext(TabsModeContext);\n\n let ItemTypography =\n mode === \"buttons\" || mode === \"segmented\" ? Subhead : Headline;\n\n if (platform === VKCOM) {\n ItemTypography = Text;\n }\n\n return (\n <Tappable\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(getClassName(\"TabsItem\", platform), {\n \"TabsItem--selected\": selected,\n })}\n hasActive={mode === \"segmented\"}\n activeMode=\"TabsItem--active\"\n focusVisibleMode={mode === \"segmented\" ? \"outside\" : \"inside\"}\n >\n <ItemTypography Component=\"span\" vkuiClass=\"TabsItem__in\" weight=\"2\">\n {children}\n </ItemTypography>\n {hasReactNode(after) && <div vkuiClass=\"TabsItem__after\">{after}</div>}\n </Tappable>\n );\n};\n"],"file":"TabsItem.js"}
1
+ {"version":3,"sources":["../../../../src/components/TabsItem/TabsItem.tsx"],"names":["React","Tappable","classNames","IOS","VKCOM","usePlatform","useAdaptivity","TabsModeContext","Headline","Subhead","TabsItem","before","children","status","after","selected","restProps","platform","sizeY","useContext","mode","withGaps","statusComponent"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT;AACA,SAASC,UAAT;AACA,SAASC,GAAT,EAAcC,KAAd;AACA,SAASC,WAAT;AACA,SAASC,aAAT;AACA,SAASC,eAAT;AACA,SAASC,QAAT;AACA,SAASC,OAAT;AACA;;AA4BA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,OAOH;AAAA,MANnBC,MAMmB,QANnBA,MAMmB;AAAA,MALnBC,QAKmB,QALnBA,QAKmB;AAAA,MAJnBC,MAImB,QAJnBA,MAImB;AAAA,MAHnBC,KAGmB,QAHnBA,KAGmB;AAAA,2BAFnBC,QAEmB;AAAA,MAFnBA,QAEmB,8BAFR,KAEQ;AAAA,MADhBC,SACgB;;AACnB,MAAMC,QAAQ,GAAGZ,WAAW,EAA5B;;AACA,uBAAkBC,aAAa,EAA/B;AAAA,MAAQY,KAAR,kBAAQA,KAAR;;AACA,0BACElB,KAAK,CAACmB,UAAN,CAAiBZ,eAAjB,CADF;AAAA,MAAQa,IAAR,qBAAQA,IAAR;AAAA,MAAcC,QAAd,qBAAcA,QAAd;;AAEA,MAAIC,eAAe,GAAG,IAAtB;;AAEA,MAAIT,MAAJ,EAAY;AACVS,IAAAA,eAAe,GACb,OAAOT,MAAP,KAAkB,QAAlB,GACE,oBAAC,OAAD;AACE,MAAA,SAAS,EAAC,MADZ;AAEE,MAAA,SAAS,EAAC,0CAFZ;AAGE,MAAA,MAAM,EAAC;AAHT,OAKGA,MALH,CADF,GASE;AAAM,MAAA,SAAS,EAAC;AAAhB,OAAoCA,MAApC,CAVJ;AAYD;;AAED,SACE,oBAAC,QAAD,eACMG,SADN;AAEE,IAAA,SAAS,EAAEd,UAAU,CACnB,UADmB,EAEnB,CAACe,QAAQ,KAAKd,GAAb,IAAoBc,QAAQ,KAAKb,KAAlC,yBAAyDa,QAAzD,CAFmB,EAGnBG,IAAI,wBAAiBA,IAAjB,CAHe,EAInBL,QAAQ,IAAI,oBAJO,EAKnB;AACAG,IAAAA,KAAK,8BAAuBA,KAAvB,CANc,EAOnBG,QAAQ,IAAI,oBAPO,CAFvB;AAWE,IAAA,SAAS,EAAC,iBAXZ;AAYE,IAAA,UAAU,EAAC,kBAZb;AAaE,IAAA,gBAAgB,EAAED,IAAI,KAAK,WAAT,GAAuB,SAAvB,GAAmC,QAbvD;AAcE,IAAA,SAAS,EAAEA,IAAI,KAAK;AAdtB,MAgBGT,MAAM,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,MAAnC,CAhBb,EAiBE,oBAAC,QAAD;AACE,IAAA,SAAS,EAAC,MADZ;AAEE,IAAA,SAAS,EAAC,iBAFZ;AAGE,IAAA,KAAK,EAAES,IAAI,KAAK,SAAT,GAAqB,GAArB,GAA2B,GAHpC;AAIE,IAAA,MAAM,EAAC;AAJT,KAMGR,QANH,CAjBF,EAyBGU,eAzBH,EA0BGR,KAAK,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAkCA,KAAlC,CA1BZ,EA2BGM,IAAI,KAAK,SAAT,IACC;AACE,IAAA,SAAS,EAAC,qBADZ;AAEE,uBAFF;AAGE,qBAAeL;AAHjB,IA5BJ,CADF;AAqCD,CAlEM","sourcesContent":["import * as React from \"react\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { classNames } from \"../../lib/classNames\";\nimport { IOS, VKCOM } from \"../../lib/platform\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { TabsModeContext, TabsContextProps } from \"../Tabs/Tabs\";\nimport { Headline } from \"../Typography/Headline/Headline\";\nimport { Subhead } from \"../Typography/Subhead/Subhead\";\nimport \"./TabsItem.css\";\n\nexport interface TabsItemProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Добавляет иконку слева.\n *\n * - Для `mode=\"default\"` используйте иконки размером 24.\n * - Для всех остальных `mode` используйте иконки размером 20.\n */\n before?: React.ReactNode;\n /**\n * Добавляет элемент слева от `after`.\n *\n * - `React.ReactElement` – либо [`Badge`](https://vkcom.github.io/VKUI/#/Badge) с параметром `mode=\"prominent\"`.\n * либо [`Counter`](https://vkcom.github.io/VKUI/#/Counter) с параметрами `mode=\"prominent\" size=\"s\"`.\n * - `number` – для показа текстового блока с переданным числом.\n */\n status?: React.ReactElement | number;\n /**\n * Добавляет иконку справа.\n *\n * Например, `<Icon16Dropdown />`\n */\n after?: React.ReactNode;\n selected?: boolean;\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabsItem\n */\nexport const TabsItem = ({\n before,\n children,\n status,\n after,\n selected = false,\n ...restProps\n}: TabsItemProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const { mode, withGaps }: TabsContextProps =\n React.useContext(TabsModeContext);\n let statusComponent = null;\n\n if (status) {\n statusComponent =\n typeof status === \"number\" ? (\n <Subhead\n Component=\"span\"\n vkuiClass=\"TabsItem__status TabsItem__status--count\"\n weight=\"2\"\n >\n {status}\n </Subhead>\n ) : (\n <span vkuiClass=\"TabsItem__status\">{status}</span>\n );\n }\n\n return (\n <Tappable\n {...restProps}\n vkuiClass={classNames(\n \"TabsItem\",\n (platform === IOS || platform === VKCOM) && `TabsItem--${platform}`,\n mode && `TabsItem--${mode}`,\n selected && \"TabsItem--selected\",\n // TODO v5.0.0 новая адаптивность\n sizeY && `TabsItem--sizeY-${sizeY}`,\n withGaps && \"TabsItem--withGaps\"\n )}\n hoverMode=\"TabsItem--hover\"\n activeMode=\"TabsItem--active\"\n focusVisibleMode={mode === \"segmented\" ? \"outside\" : \"inside\"}\n hasActive={mode === \"segmented\"}\n >\n {before && <div vkuiClass=\"TabsItem__before\">{before}</div>}\n <Headline\n Component=\"span\"\n vkuiClass=\"TabsItem__label\"\n level={mode === \"default\" ? \"1\" : \"2\"}\n weight=\"2\"\n >\n {children}\n </Headline>\n {statusComponent}\n {after && <div vkuiClass=\"TabsItem__after\">{after}</div>}\n {mode === \"default\" && (\n <div\n vkuiClass=\"TabsItem__underline\"\n aria-hidden\n data-selected={selected}\n />\n )}\n </Tappable>\n );\n};\n"],"file":"TabsItem.js"}
@@ -1,5 +1,5 @@
1
- .vkuiTappable{position:relative;cursor:default;border-radius:8px;border-radius:var(--vkui--size_border_radius--regular,8px);transition:background-color .15s ease-out}.vkuiTappable--hasHover,.vkuiTappable--hasActive{cursor:pointer}.vkuiTappable[disabled],.vkuiTappable[aria-disabled=true]{cursor:default}.vkuiTappable--focus-visible{outline:0}.vkuiTappable--active-background.vkuiTappable--active-background.vkuiTappable--active-background{background-color:rgba(0,0,0,.08);background-color:var(--background_highlighted,
2
- var(--vkui--color_transparent--active)
3
- )}.vkuiTappable--active-opacity.vkuiTappable--active-opacity.vkuiTappable--active-opacity{opacity:.7}.vkuiTappable__hoverShadow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;border-radius:inherit}.vkuiTappable--hover-background>.vkuiTappable__hoverShadow{background-color:rgba(0,0,0,.04);background-color:var(--background_hover,
4
- var(--vkui--color_transparent--hover)
5
- )}.vkuiTappable--hover-opacity{opacity:.8}.vkuiTappable--mouse{transition:opacity .15s ease-out}.vkuiTappable--mouse .vkuiTappable__hoverShadow{transition:background-color .15s ease-out}.vkuiTappable--ios.vkuiTappable--active-background{transition:none}.vkuiTappable .vkuiTappable__waves{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;border-radius:inherit;will-change:transform}.vkuiTappable .vkuiTappable__wave{position:absolute;top:0;left:0;width:24px;height:24px;margin:-12px 0 0-12px;opacity:0;content:"";border-radius:50%;background:rgba(127,127,127,.1);-webkit-animation:vkui-animation-wave .3s cubic-bezier(.4,0,.2,1);animation:vkui-animation-wave .3s cubic-bezier(.4,0,.2,1);-webkit-animation:vkui-animation-wave .3s var(--android-easing);animation:vkui-animation-wave .3s var(--android-easing)}.vkuiTappable--sizeX-compact{border-radius:0}@-webkit-keyframes vkui-animation-wave{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}30%{opacity:1}to{-webkit-transform:scale(8);transform:scale(8);opacity:0}}@keyframes vkui-animation-wave{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}30%{opacity:1}to{-webkit-transform:scale(8);transform:scale(8);opacity:0}}
1
+ .vkuiTappable{border-radius:8px;border-radius:var(--vkui--size_border_radius--regular,8px);cursor:default;position:relative;transition:background-color .15s ease-out}.vkuiTappable--hasActive,.vkuiTappable--hasHover{cursor:pointer}.vkuiTappable[aria-disabled=true],.vkuiTappable[disabled]{cursor:default}.vkuiTappable--focus-visible{outline:none}.vkuiTappable--active-background.vkuiTappable--active-background.vkuiTappable--active-background{background-color:rgba(0,0,0,.08);background-color:var(
2
+ --background_highlighted,var(--vkui--color_transparent--active)
3
+ )}.vkuiTappable--active-opacity.vkuiTappable--active-opacity.vkuiTappable--active-opacity{opacity:.7}.vkuiTappable__hoverShadow{border-radius:inherit;bottom:0;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0}.vkuiTappable--hover-background>.vkuiTappable__hoverShadow{background-color:rgba(0,0,0,.04);background-color:var(
4
+ --background_hover,var(--vkui--color_transparent--hover)
5
+ )}.vkuiTappable--hover-opacity{opacity:.8}.vkuiTappable--mouse{transition:opacity .15s ease-out}.vkuiTappable--mouse .vkuiTappable__hoverShadow{transition:background-color .15s ease-out}.vkuiTappable--ios.vkuiTappable--active-background{transition:none}.vkuiTappable .vkuiTappable__waves{border-radius:inherit;bottom:0;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;will-change:transform}.vkuiTappable .vkuiTappable__wave{-webkit-animation:vkui-animation-wave .3s cubic-bezier(.4,0,.2,1);animation:vkui-animation-wave .3s cubic-bezier(.4,0,.2,1);-webkit-animation:vkui-animation-wave .3s var(--android-easing);animation:vkui-animation-wave .3s var(--android-easing);background:hsla(0,0%,50%,.1);border-radius:50%;content:"";height:24px;left:0;margin:-12px 0 0 -12px;opacity:0;position:absolute;top:0;width:24px}.vkuiTappable--sizeX-compact{border-radius:0}@-webkit-keyframes vkui-animation-wave{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:1}to{opacity:0;-webkit-transform:scale(8);transform:scale(8)}}@keyframes vkui-animation-wave{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:1}to{opacity:0;-webkit-transform:scale(8);transform:scale(8)}}