@sima-land/ui-nucleons 44.2.10 → 45.0.0-alpha.1

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 (378) hide show
  1. package/_internal/custom-scrollbar/index.d.ts +13 -7
  2. package/_internal/custom-scrollbar/index.js +29 -15
  3. package/_internal/dropdown-loading/index.d.ts +3 -3
  4. package/_internal/dropdown-loading/index.js +4 -2
  5. package/_internal/page-scroll-lock/adapters/body-scroll-lock.d.ts +39 -0
  6. package/_internal/page-scroll-lock/adapters/body-scroll-lock.js +62 -0
  7. package/_internal/page-scroll-lock/adapters/ui-nucleons.d.ts +25 -0
  8. package/_internal/page-scroll-lock/adapters/ui-nucleons.js +103 -0
  9. package/_internal/page-scroll-lock/context.d.ts +13 -0
  10. package/_internal/page-scroll-lock/context.js +54 -0
  11. package/_internal/page-scroll-lock/hook.d.ts +12 -0
  12. package/_internal/page-scroll-lock/hook.js +26 -0
  13. package/_internal/page-scroll-lock/index.d.ts +4 -0
  14. package/_internal/page-scroll-lock/index.js +9 -0
  15. package/_internal/page-scroll-lock/types.d.ts +22 -0
  16. package/_internal/readme.md +2 -0
  17. package/_internal/utils/dropdown.d.ts +1 -0
  18. package/_internal/utils/dropdown.js +1 -0
  19. package/alert/alert.module.scss +1 -24
  20. package/alert/index.d.ts +11 -17
  21. package/alert/index.js +33 -16
  22. package/arrow-button/arrow-button.module.scss +2 -0
  23. package/arrow-button/index.d.ts +2 -2
  24. package/autocomplete/autocomplete.d.ts +8 -0
  25. package/autocomplete/autocomplete.js +190 -0
  26. package/autocomplete/autocomplete.module.scss +2 -15
  27. package/autocomplete/index.d.ts +2 -27
  28. package/autocomplete/index.js +2 -126
  29. package/autocomplete/types.d.ts +19 -0
  30. package/autocomplete/types.js +2 -0
  31. package/autocomplete-deprecated/autocomplete.module.scss +20 -0
  32. package/autocomplete-deprecated/index.d.ts +28 -0
  33. package/autocomplete-deprecated/index.js +130 -0
  34. package/avatar/index.d.ts +2 -2
  35. package/avatar/user.d.ts +1 -1
  36. package/base-input/base-input.d.ts +11 -0
  37. package/base-input/base-input.js +96 -0
  38. package/base-input/base-input.module.scss +3 -3
  39. package/base-input/index.d.ts +2 -23
  40. package/base-input/index.js +2 -76
  41. package/base-input/types.d.ts +31 -0
  42. package/base-input/types.js +2 -0
  43. package/base-input/utils.d.ts +6 -0
  44. package/base-input/utils.js +14 -0
  45. package/base-input-deprecated/base-input.module.scss +66 -0
  46. package/base-input-deprecated/index.d.ts +24 -0
  47. package/base-input-deprecated/index.js +80 -0
  48. package/bordered-layout/index.d.ts +1 -0
  49. package/bordered-layout/index.js +1 -0
  50. package/bottom-bar/bottom-bar-util.scss +20 -0
  51. package/bottom-bar/bottom-bar.d.ts +12 -0
  52. package/bottom-bar/bottom-bar.js +47 -0
  53. package/bottom-bar/bottom-bar.module.scss +14 -0
  54. package/bottom-bar/index.d.ts +2 -21
  55. package/bottom-bar/index.js +5 -44
  56. package/bottom-bar/types.d.ts +10 -0
  57. package/bottom-bar/types.js +2 -0
  58. package/box/index.d.ts +1 -1
  59. package/breakpoints.scss +34 -3
  60. package/button/button.module.scss +70 -53
  61. package/button/index.d.ts +26 -41
  62. package/button/index.js +22 -46
  63. package/card/index.d.ts +2 -1
  64. package/card/index.js +23 -6
  65. package/card/slots.d.ts +17 -3
  66. package/card/slots.js +15 -13
  67. package/carousel/draggable.d.ts +7 -3
  68. package/carousel/draggable.js +10 -3
  69. package/carousel/helpers/draggable-event.d.ts +5 -2
  70. package/carousel/helpers/draggable-event.js +5 -0
  71. package/carousel/index.d.ts +1 -1
  72. package/carousel/index.js +24 -24
  73. package/checkbox/checkbox.module.scss +1 -0
  74. package/checkbox/index.d.ts +3 -3
  75. package/checkbox-field/index.d.ts +3 -0
  76. package/checkbox-field/index.js +3 -0
  77. package/clean-buttons/clean-buttons-util.scss +15 -0
  78. package/clean-buttons/clean-buttons.module.scss +5 -3
  79. package/clean-buttons/index.d.ts +16 -7
  80. package/clean-buttons/index.js +17 -14
  81. package/clean-buttons/types.d.ts +1 -1
  82. package/clean-buttons/utils.d.ts +5 -1
  83. package/clean-buttons/utils.js +4 -0
  84. package/{colors.d.ts → colors/index.d.ts} +2 -2
  85. package/{colors.js → colors/index.js} +2 -1
  86. package/colors.scss +2 -0
  87. package/dot-nav/index.d.ts +1 -1
  88. package/dropdown/index.d.ts +1 -0
  89. package/dropdown/utils.d.ts +19 -0
  90. package/dropdown/utils.js +47 -0
  91. package/dropdown-item/dropdown-item.module.scss +80 -15
  92. package/dropdown-item/index.d.ts +20 -9
  93. package/dropdown-item/index.js +12 -9
  94. package/dropdown-item/types.d.ts +3 -0
  95. package/dropdown-item/types.js +2 -0
  96. package/dropdown-item/utils.d.ts +45 -0
  97. package/dropdown-item/utils.js +89 -0
  98. package/expandable/utils.js +3 -3
  99. package/field-block/field-block.module.scss +155 -0
  100. package/field-block/index.d.ts +63 -0
  101. package/field-block/index.js +43 -0
  102. package/field-grid/index.d.ts +5 -4
  103. package/field-grid/index.js +1 -0
  104. package/helpers/bounds-of.d.ts +5 -1
  105. package/helpers/bounds-of.js +5 -0
  106. package/helpers/center-of.d.ts +4 -1
  107. package/helpers/center-of.js +8 -1
  108. package/helpers/create-container.d.ts +5 -2
  109. package/helpers/create-container.js +7 -2
  110. package/helpers/define-slots.d.ts +3 -3
  111. package/helpers/define-slots.js +5 -3
  112. package/helpers/events.d.ts +16 -8
  113. package/helpers/events.js +41 -15
  114. package/helpers/find-child-element.d.ts +12 -9
  115. package/helpers/find-child-element.js +9 -5
  116. package/helpers/find-offset-parent.d.ts +1 -2
  117. package/helpers/find-offset-parent.js +2 -2
  118. package/helpers/find-sibling-index.d.ts +11 -8
  119. package/helpers/find-sibling-index.js +8 -3
  120. package/helpers/fit-element-height.d.ts +5 -5
  121. package/helpers/fit-element-height.js +9 -7
  122. package/helpers/format-date.d.ts +11 -11
  123. package/helpers/format-date.js +15 -13
  124. package/helpers/format-number.d.ts +1 -1
  125. package/helpers/format-number.js +2 -2
  126. package/helpers/get-date-interval-data.d.ts +4 -1
  127. package/helpers/get-date-interval-data.js +7 -2
  128. package/helpers/get-declination.d.ts +5 -1
  129. package/helpers/get-declination.js +5 -0
  130. package/helpers/get-fraction-depth.d.ts +1 -1
  131. package/helpers/get-fraction-depth.js +2 -2
  132. package/helpers/get-no-index.d.ts +2 -2
  133. package/helpers/get-no-index.js +4 -3
  134. package/helpers/get-relative-pos.d.ts +4 -1
  135. package/helpers/get-relative-pos.js +7 -2
  136. package/helpers/get-scroll-parent.d.ts +1 -2
  137. package/helpers/get-scroll-parent.js +5 -5
  138. package/helpers/is-browser.d.ts +4 -1
  139. package/helpers/is-browser.js +8 -1
  140. package/helpers/is-fully-scrolled.d.ts +3 -3
  141. package/helpers/is-fully-scrolled.js +2 -2
  142. package/helpers/is-touch-device.d.ts +1 -1
  143. package/helpers/is-touch-device.js +4 -5
  144. package/helpers/layer.d.ts +1 -1
  145. package/helpers/layer.js +2 -2
  146. package/helpers/max-index-of.d.ts +4 -1
  147. package/helpers/max-index-of.js +7 -2
  148. package/helpers/media-query-list.d.ts +1 -1
  149. package/helpers/media-query-list.js +2 -2
  150. package/helpers/on.d.ts +4 -1
  151. package/helpers/on.js +7 -2
  152. package/helpers/point.d.ts +4 -1
  153. package/helpers/point.js +8 -1
  154. package/helpers/rename.d.ts +3 -1
  155. package/helpers/rename.js +1 -0
  156. package/helpers/scroll-to-child.d.ts +1 -1
  157. package/helpers/scroll-to-child.js +3 -2
  158. package/helpers/styles.d.ts +8 -2
  159. package/helpers/styles.js +18 -4
  160. package/helpers/with-prevent.d.ts +9 -6
  161. package/helpers/with-prevent.js +16 -9
  162. package/hint/hint-view.d.ts +26 -0
  163. package/hint/hint-view.js +43 -0
  164. package/hint/hint-view.module.scss +32 -0
  165. package/hint/hint.d.ts +14 -0
  166. package/hint/hint.js +41 -0
  167. package/hint/index.d.ts +5 -8
  168. package/hint/index.js +13 -48
  169. package/hint/utils.d.ts +61 -0
  170. package/hint/utils.js +161 -0
  171. package/hint-deprecated/index.d.ts +11 -0
  172. package/hint-deprecated/index.js +53 -0
  173. package/hooks/breakpoint/index.d.ts +7 -4
  174. package/hooks/breakpoint/index.js +21 -13
  175. package/hooks/breakpoint/types.d.ts +3 -4
  176. package/hooks/breakpoint/utils.d.ts +2 -1
  177. package/hooks/breakpoint/utils.js +2 -1
  178. package/hooks/index.d.ts +8 -8
  179. package/hooks/index.js +27 -19
  180. package/hooks/intersection/test-utils.d.ts +1 -1
  181. package/hooks/intersection/test-utils.js +2 -1
  182. package/hooks/styles.d.ts +6 -0
  183. package/hooks/styles.js +26 -0
  184. package/info-text/index.d.ts +23 -0
  185. package/info-text/index.js +60 -0
  186. package/info-text/info-text.module.scss +28 -0
  187. package/input/index.d.ts +32 -0
  188. package/input/index.js +96 -0
  189. package/input/input.module.scss +20 -0
  190. package/input/utils.d.ts +36 -0
  191. package/input/utils.js +71 -0
  192. package/layout/index.d.ts +6 -11
  193. package/layout/index.js +6 -60
  194. package/layout/layout.d.ts +10 -0
  195. package/layout/layout.js +32 -0
  196. package/layout/layout.module.scss +33 -26
  197. package/layout/legacy.d.ts +15 -0
  198. package/layout/legacy.js +68 -0
  199. package/layout/legacy.module.scss +49 -0
  200. package/layout/types.d.ts +6 -0
  201. package/layout/types.js +2 -0
  202. package/link/index.d.ts +4 -1
  203. package/link/index.js +2 -2
  204. package/link/link-util.scss +37 -0
  205. package/link/link.module.scss +19 -12
  206. package/loading-overlay/index.d.ts +1 -0
  207. package/loading-overlay/index.js +1 -0
  208. package/masked-field/index.d.ts +1 -0
  209. package/masked-field/index.js +1 -0
  210. package/masked-input/hook.d.ts +8 -0
  211. package/masked-input/hook.js +72 -0
  212. package/masked-input/index.d.ts +5 -0
  213. package/masked-input/index.js +7 -0
  214. package/masked-input/masked-input.d.ts +8 -0
  215. package/masked-input/masked-input.js +73 -0
  216. package/masked-input/types.d.ts +51 -0
  217. package/masked-input/types.js +2 -0
  218. package/masked-input/utils.d.ts +15 -0
  219. package/masked-input/utils.js +49 -0
  220. package/modal/index.d.ts +10 -12
  221. package/modal/index.js +27 -64
  222. package/modal/modal.module.scss +98 -55
  223. package/modal/slots.d.ts +13 -10
  224. package/modal/slots.js +30 -28
  225. package/modal/utils.d.ts +8 -10
  226. package/modal/utils.js +2 -26
  227. package/modal-overlay/index.d.ts +13 -0
  228. package/modal-overlay/index.js +60 -0
  229. package/modal-overlay/modal-overlay-util.scss +1 -0
  230. package/modal-overlay/modal-overlay.module.scss +14 -0
  231. package/modal-overlay/utils.d.ts +14 -0
  232. package/modal-overlay/utils.js +32 -0
  233. package/package.json +49 -41
  234. package/pagination/utils.d.ts +2 -2
  235. package/panel/index.d.ts +27 -13
  236. package/panel/index.js +43 -9
  237. package/panel/panel.module.scss +49 -8
  238. package/phone-input/index.d.ts +4 -28
  239. package/phone-input/index.js +2 -121
  240. package/phone-input/phone-input.d.ts +8 -0
  241. package/phone-input/phone-input.js +133 -0
  242. package/phone-input/phone-input.module.scss +8 -32
  243. package/phone-input/presets.d.ts +21 -22
  244. package/phone-input/presets.js +1 -2
  245. package/phone-input/types.d.ts +6 -0
  246. package/phone-input/types.js +2 -0
  247. package/phone-input/utils.d.ts +30 -1
  248. package/phone-input/utils.js +52 -3
  249. package/phone-input-deprecated/index.d.ts +29 -0
  250. package/phone-input-deprecated/index.js +124 -0
  251. package/phone-input-deprecated/phone-input.module.scss +41 -0
  252. package/plate/index.d.ts +3 -3
  253. package/plate/index.js +2 -2
  254. package/plate/plate.module.scss +3 -0
  255. package/popup/index.d.ts +5 -0
  256. package/popup/index.js +12 -0
  257. package/popup/popup-view.d.ts +14 -0
  258. package/popup/popup-view.js +35 -0
  259. package/popup/popup-view.module.scss +40 -0
  260. package/popup/popup.d.ts +17 -0
  261. package/popup/popup.js +73 -0
  262. package/popup/utils.d.ts +38 -0
  263. package/popup/utils.js +83 -0
  264. package/price/index.d.ts +1 -1
  265. package/price/index.js +3 -3
  266. package/price/utils.d.ts +5 -5
  267. package/price/utils.js +33 -23
  268. package/radio-button/index.d.ts +10 -0
  269. package/radio-button/index.js +33 -0
  270. package/radio-button/radio-button.module.scss +46 -0
  271. package/rating/index.d.ts +2 -1
  272. package/rating/types.d.ts +1 -1
  273. package/readme.md +56 -65
  274. package/screen/index.d.ts +4 -2
  275. package/screen/index.js +34 -3
  276. package/screen/screen.module.scss +0 -2
  277. package/screen/slots.d.ts +2 -8
  278. package/screen/slots.js +8 -9
  279. package/screen/utils.d.ts +2 -1
  280. package/select/index.d.ts +2 -33
  281. package/select/index.js +3 -109
  282. package/select/parts/block.d.ts +8 -0
  283. package/select/parts/block.js +70 -0
  284. package/select/parts/block.module.scss +7 -0
  285. package/select/parts/button.d.ts +8 -0
  286. package/select/parts/button.js +69 -0
  287. package/select/parts/menu.d.ts +8 -0
  288. package/select/parts/menu.js +105 -0
  289. package/select/parts/menu.module.scss +4 -0
  290. package/select/select.d.ts +14 -0
  291. package/select/select.js +145 -0
  292. package/select/types.d.ts +55 -0
  293. package/select/types.js +2 -0
  294. package/select/utils.d.ts +3 -0
  295. package/select/utils.js +13 -0
  296. package/select-deprecated/index.d.ts +34 -0
  297. package/select-deprecated/index.js +112 -0
  298. package/shadows.scss +18 -0
  299. package/side-page/index.d.ts +11 -26
  300. package/side-page/index.js +21 -26
  301. package/side-page/side-page.module.scss +35 -29
  302. package/side-page/slots.d.ts +12 -20
  303. package/side-page/slots.js +16 -28
  304. package/spinner/index.d.ts +18 -6
  305. package/spinner/index.js +25 -12
  306. package/spinner/spinner.module.scss +8 -0
  307. package/stepper/index.d.ts +18 -10
  308. package/stepper/index.js +17 -8
  309. package/stepper/stepper.module.scss +14 -15
  310. package/styling/fonts.d.ts +3 -3
  311. package/switcher-row/index.d.ts +42 -0
  312. package/switcher-row/index.js +59 -0
  313. package/switcher-row/switcher-row.module.scss +59 -0
  314. package/text/index.d.ts +1 -1
  315. package/text-button/index.d.ts +42 -0
  316. package/text-button/index.js +46 -0
  317. package/text-button/text-button.module.scss +96 -0
  318. package/text-field/index.d.ts +7 -6
  319. package/text-field/index.js +3 -2
  320. package/textarea/index.d.ts +21 -0
  321. package/textarea/index.js +85 -0
  322. package/textarea/textarea.module.scss +15 -0
  323. package/toggle/index.d.ts +3 -3
  324. package/toggle/toggle.module.scss +17 -8
  325. package/tooltip/index.d.ts +1 -0
  326. package/tooltip/index.js +1 -0
  327. package/top-bar/index.d.ts +3 -40
  328. package/top-bar/index.js +4 -60
  329. package/top-bar/top-bar-util.scss +29 -0
  330. package/top-bar/top-bar.d.ts +9 -0
  331. package/top-bar/top-bar.js +101 -0
  332. package/top-bar/top-bar.module.scss +129 -67
  333. package/top-bar/types.d.ts +31 -0
  334. package/top-bar/types.js +2 -0
  335. package/top-bar/utils.d.ts +14 -0
  336. package/top-bar/utils.js +56 -0
  337. package/touch-slider/index.d.ts +1 -0
  338. package/touch-slider/index.js +3 -2
  339. package/types.d.ts +18 -0
  340. package/types.js +2 -0
  341. package/unknown-content/index.d.ts +3 -3
  342. package/unknown-content/index.js +3 -3
  343. package/unknown-content/unknown-content.module.scss +16 -12
  344. package/upload-area/index.d.ts +2 -0
  345. package/upload-area/index.js +5 -0
  346. package/upload-area/types.d.ts +32 -0
  347. package/upload-area/types.js +2 -0
  348. package/upload-area/upload-area-util.scss +17 -0
  349. package/upload-area/upload-area.d.ts +8 -0
  350. package/upload-area/upload-area.js +105 -0
  351. package/upload-area/upload-area.module.scss +78 -0
  352. package/upload-area/utils.d.ts +17 -0
  353. package/upload-area/utils.js +48 -0
  354. package/utils.scss +74 -1
  355. package/with-hint/index.d.ts +3 -2
  356. package/with-hint/index.js +1 -0
  357. package/with-hint/positioning-hint.d.ts +1 -1
  358. package/with-hint/positioning-hint.js +2 -2
  359. package/with-tooltip/index.d.ts +2 -1
  360. package/with-tooltip/index.js +1 -0
  361. package/with-tooltip/utils.d.ts +2 -2
  362. package/_internal/body-scroll.d.ts +0 -23
  363. package/_internal/body-scroll.js +0 -41
  364. package/_internal/checkbox/index.d.ts +0 -5
  365. package/constants.d.ts +0 -6
  366. package/constants.js +0 -9
  367. package/nav-bar/index.d.ts +0 -46
  368. package/nav-bar/index.js +0 -76
  369. package/nav-bar/nav-bar.module.scss +0 -95
  370. package/upload/area.d.ts +0 -25
  371. package/upload/area.js +0 -65
  372. package/upload/area.module.scss +0 -44
  373. package/upload/utils.d.ts +0 -29
  374. package/upload/utils.js +0 -45
  375. /package/_internal/{checkbox/index.js → page-scroll-lock/types.js} +0 -0
  376. /package/{hint → hint-deprecated}/hint.module.scss +0 -0
  377. /package/{select → select-deprecated}/select.module.scss +0 -0
  378. /package/{upload → upload-area}/upload.svg +0 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Textarea = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const base_input_1 = require("../base-input");
43
+ const field_block_1 = require("../field-block");
44
+ const utils_1 = require("../input/utils");
45
+ const bind_1 = __importDefault(require("classnames/bind"));
46
+ const textarea_module_scss_1 = __importDefault(require("./textarea.module.scss"));
47
+ const cx = bind_1.default.bind(textarea_module_scss_1.default);
48
+ /**
49
+ * Текстовая область.
50
+ * @param props Свойства.
51
+ * @return Элемент.
52
+ */
53
+ function Textarea(_a) {
54
+ var {
55
+ // specific Textarea props
56
+ textareaRef, baseInputProps,
57
+ // root props
58
+ style, className,
59
+ // textarea element props (popular)
60
+ autoComplete, autoFocus, defaultValue, disabled, id, name, onBlur, onChange, onFocus, onInput, placeholder, readOnly, required, rows = 4, value,
61
+ // FieldBlock props
62
+ label, failed, caption, blockProps, 'data-testid': testId = 'textarea' } = _a, restProps = __rest(_a, ["textareaRef", "baseInputProps", "style", "className", "autoComplete", "autoFocus", "defaultValue", "disabled", "id", "name", "onBlur", "onChange", "onFocus", "onInput", "placeholder", "readOnly", "required", "rows", "value", "label", "failed", "caption", "blockProps", 'data-testid']);
63
+ const ref = (0, react_1.useRef)(null);
64
+ const [filled, updateFilled] = (0, utils_1.useFilledState)(ref, { value, defaultValue });
65
+ const [focused, setFocused] = (0, react_1.useState)(false);
66
+ const handleMouseDown = (0, utils_1.useFieldMouseDown)(ref, blockProps === null || blockProps === void 0 ? void 0 : blockProps.onMouseDown);
67
+ (0, react_1.useImperativeHandle)(textareaRef, () => ref.current);
68
+ return (react_1.default.createElement(field_block_1.FieldBlock, Object.assign({}, restProps, { rootProps: Object.assign(Object.assign({}, restProps.rootProps), { style,
69
+ className }), "data-testid": testId, caption: caption, disabled: disabled, failed: failed, fixedHeight: false, focused: focused, label: label, labelAsPlaceholder: !focused && !filled, labelProps: { htmlFor: id }, size: 'l', blockProps: Object.assign(Object.assign({}, blockProps), { onMouseDown: handleMouseDown }), main: react_1.default.createElement(base_input_1.BaseInput, Object.assign({}, baseInputProps, { textareaRef: ref, multiline: true, className: cx('textarea', baseInputProps === null || baseInputProps === void 0 ? void 0 : baseInputProps.className), style: Object.assign(Object.assign({}, baseInputProps === null || baseInputProps === void 0 ? void 0 : baseInputProps.style), { '--placeholder-color': (0, utils_1.definePlaceholderColor)({ failed, disabled }) }), autoComplete: autoComplete, autoFocus: autoFocus, defaultValue: defaultValue, disabled: disabled, id: id, name: name, placeholder: placeholder, readOnly: readOnly, required: required, rows: rows, value: value, onFocus: (event) => {
70
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
71
+ updateFilled(event);
72
+ setFocused(true);
73
+ }, onBlur: (event) => {
74
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
75
+ updateFilled(event);
76
+ setFocused(false);
77
+ }, onInput: (event) => {
78
+ onInput === null || onInput === void 0 ? void 0 : onInput(event);
79
+ updateFilled(event);
80
+ }, onChange: (event) => {
81
+ onChange === null || onChange === void 0 ? void 0 : onChange(event);
82
+ updateFilled(event);
83
+ } })), mainProps: { className: cx('main') } })));
84
+ }
85
+ exports.Textarea = Textarea;
@@ -0,0 +1,15 @@
1
+ @use '../colors';
2
+
3
+ .main {
4
+ display: flex;
5
+ width: 100%;
6
+ }
7
+
8
+ .textarea {
9
+ min-width: 0;
10
+ width: 0;
11
+ flex-grow: 1;
12
+ background: inherit;
13
+ font: inherit;
14
+ line-height: inherit;
15
+ }
package/toggle/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { CheckboxProps } from '../_internal/checkbox';
3
- export declare type ToggleProps = CheckboxProps;
2
+ import { CheckboxInputProps } from '../types';
3
+ export type ToggleProps = CheckboxInputProps;
4
4
  /**
5
5
  * Компонент стилизованного переключателя (input[type=checkbox]).
6
6
  */
7
- export declare const Toggle: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
7
+ export declare const Toggle: React.ForwardRefExoticComponent<CheckboxInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -11,14 +11,23 @@
11
11
 
12
12
  .input {
13
13
  display: none;
14
+ &:not(:checked) + .switch {
15
+ --toggle-slider-position: 2px;
16
+ }
14
17
  &:checked + .switch {
15
- background: colors.$basic-blue;
16
- &::after {
17
- left: calc(100% - 22px);
18
- }
18
+ --toggle-slider-position: calc(100% - 22px);
19
+ }
20
+ &:not(:checked):not(:disabled) + .switch {
21
+ --toggle-primary-color: #{colors.$basic-gray12};
22
+ }
23
+ &:checked:not(:disabled) + .switch {
24
+ --toggle-primary-color: #{colors.$basic-blue};
25
+ }
26
+ &:not(:checked):disabled + .switch {
27
+ --toggle-primary-color: #{colors.$basic-gray4};
19
28
  }
20
- &:disabled + .switch {
21
- background: colors.$basic-gray4;
29
+ &:checked:disabled + .switch {
30
+ --toggle-primary-color: #{colors.$basic-gray24};
22
31
  }
23
32
  }
24
33
 
@@ -28,13 +37,13 @@
28
37
  width: 44px;
29
38
  height: 24px;
30
39
  border-radius: 12px;
31
- background: colors.$basic-gray12;
40
+ background: var(--toggle-primary-color);
32
41
  transition: background 0.16s ease-in-out;
33
42
  &::after {
34
43
  content: '';
35
44
  position: absolute;
36
45
  top: 2px;
37
- left: 2px;
46
+ left: var(--toggle-slider-position);
38
47
  display: block;
39
48
  width: 20px;
40
49
  height: 20px;
@@ -11,6 +11,7 @@ export interface TooltipProps {
11
11
  }
12
12
  /**
13
13
  * Компонент подсказки.
14
+ * @deprecated Можно использовать `popup`.
14
15
  * @param props Свойства.
15
16
  * @return Элемент.
16
17
  */
package/tooltip/index.js CHANGED
@@ -34,6 +34,7 @@ const tooltip_module_scss_1 = __importDefault(require("./tooltip.module.scss"));
34
34
  const cx = bind_1.default.bind(tooltip_module_scss_1.default);
35
35
  /**
36
36
  * Компонент подсказки.
37
+ * @deprecated Можно использовать `popup`.
37
38
  * @param props Свойства.
38
39
  * @return Элемент.
39
40
  */
@@ -1,40 +1,3 @@
1
- import React from 'react';
2
- export declare type TopBarSize = 's' | 'm';
3
- interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
- icon?: React.ReactNode;
5
- 'data-testid'?: string;
6
- }
7
- export interface TopBarProps {
8
- /** Свойства кнопок. */
9
- buttonsProps?: {
10
- start?: ButtonProps;
11
- startSecondary?: ButtonProps;
12
- end?: ButtonProps;
13
- endSecondary?: ButtonProps;
14
- };
15
- /** CSS-класс корневого элемента. */
16
- className?: string;
17
- /** Размер. */
18
- size?: TopBarSize;
19
- /** Подзаголовок. */
20
- subtitle?: string;
21
- /** Заголовок. */
22
- title?: string;
23
- /** Нужна ли разделительная черта снизу. */
24
- divided?: boolean;
25
- }
26
- export declare const TOP_BAR_HEIGHT: Readonly<Record<TopBarSize, number>>;
27
- /**
28
- * Компонент шапки модальных окон/экранов.
29
- * @param props Свойства.
30
- * @return Элемент.
31
- */
32
- export declare const TopBar: ({ divided, size, title, subtitle, buttonsProps: { start, startSecondary, end, endSecondary }, className, }: TopBarProps) => JSX.Element;
33
- /**
34
- * Компонент кнопки-иконки.
35
- * @param props Свойства. Поддерживаются свойства button.
36
- * @param props.icon Иконка.
37
- * @return Элемент.
38
- */
39
- export declare const IconButton: ({ icon, ...buttonProps }: ButtonProps) => JSX.Element;
40
- export {};
1
+ export type { TopBarProps, TopBarSize } from './types';
2
+ export type { navigationButtons } from './utils';
3
+ export { TopBar, TOP_BAR_HEIGHT } from './top-bar';
package/top-bar/index.js CHANGED
@@ -1,62 +1,6 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.IconButton = exports.TopBar = exports.TOP_BAR_HEIGHT = void 0;
18
- const react_1 = __importDefault(require("react"));
19
- const bind_1 = __importDefault(require("classnames/bind"));
20
- const lodash_1 = require("lodash");
21
- const top_bar_module_scss_1 = __importDefault(require("./top-bar.module.scss"));
22
- const borders_1 = require("../styling/borders");
23
- // некоторым компонентам нужно знать конкретную высоту, делаем единый источник
24
- exports.TOP_BAR_HEIGHT = {
25
- s: 64,
26
- m: 80,
27
- };
28
- const cx = bind_1.default.bind(top_bar_module_scss_1.default);
29
- /**
30
- * Компонент шапки модальных окон/экранов.
31
- * @param props Свойства.
32
- * @return Элемент.
33
- */
34
- const TopBar = ({ divided, size = 'm', title, subtitle, buttonsProps: { start, startSecondary, end, endSecondary } = {}, className, }) => {
35
- const hasStart = (0, lodash_1.has)(start, 'icon');
36
- const hasStartSecondary = (0, lodash_1.has)(startSecondary, 'icon');
37
- const hasEnd = (0, lodash_1.has)(end, 'icon');
38
- const hasEndSecondary = (0, lodash_1.has)(endSecondary, 'icon');
39
- const stub = hasStart || hasEnd ? iconStub : null;
40
- const secondaryStub = hasStartSecondary || hasEndSecondary ? iconStub : null;
41
- return (react_1.default.createElement("div", { className: cx('root', `size-${size}`, className, divided && borders_1.InnerBorder.bottom), style: { height: `${exports.TOP_BAR_HEIGHT[size]}px` } },
42
- hasStart ? react_1.default.createElement(exports.IconButton, Object.assign({}, start)) : stub,
43
- hasStartSecondary ? react_1.default.createElement(exports.IconButton, Object.assign({}, startSecondary)) : secondaryStub,
44
- react_1.default.createElement("div", { className: cx('main-section') },
45
- react_1.default.createElement("div", { className: cx('title', 'ellipsis') }, title),
46
- Boolean(subtitle) && react_1.default.createElement("div", { className: cx('subtitle', 'ellipsis') }, subtitle)),
47
- hasEndSecondary ? react_1.default.createElement(exports.IconButton, Object.assign({}, endSecondary)) : secondaryStub,
48
- hasEnd ? react_1.default.createElement(exports.IconButton, Object.assign({}, end)) : stub));
49
- };
50
- exports.TopBar = TopBar;
51
- /**
52
- * Компонент кнопки-иконки.
53
- * @param props Свойства. Поддерживаются свойства button.
54
- * @param props.icon Иконка.
55
- * @return Элемент.
56
- */
57
- const IconButton = (_a) => {
58
- var { icon } = _a, buttonProps = __rest(_a, ["icon"]);
59
- return (react_1.default.createElement("button", Object.assign({}, buttonProps, { type: 'button', className: cx('icon-button') }), icon));
60
- };
61
- exports.IconButton = IconButton;
62
- const iconStub = react_1.default.createElement("div", { className: cx('icon-button', 'stub') });
3
+ exports.TOP_BAR_HEIGHT = exports.TopBar = void 0;
4
+ var top_bar_1 = require("./top-bar");
5
+ Object.defineProperty(exports, "TopBar", { enumerable: true, get: function () { return top_bar_1.TopBar; } });
6
+ Object.defineProperty(exports, "TOP_BAR_HEIGHT", { enumerable: true, get: function () { return top_bar_1.TOP_BAR_HEIGHT; } });
@@ -0,0 +1,29 @@
1
+ $size-s-height: 56px;
2
+ $size-m-height: 64px;
3
+ $size-xl-height: 80px;
4
+
5
+ @mixin size-s {
6
+ --top-bar-height: #{$size-s-height};
7
+ --top-bar-title-size: 16px;
8
+ --top-bar-title-height: 24px;
9
+ --top-bar-gutter: 16px;
10
+ --top-bar-icon-button-width: 52px;
11
+ }
12
+
13
+ @mixin size-m {
14
+ --top-bar-height: #{$size-m-height};
15
+ --top-bar-title-size: 16px;
16
+ --top-bar-title-height: 24px;
17
+ --top-bar-gutter: 24px;
18
+ --top-bar-icon-button-width: 60px;
19
+ }
20
+
21
+ @mixin size-xl {
22
+ --top-bar-height: #{$size-xl-height};
23
+ --top-bar-title-size: 16px;
24
+ --top-bar-title-height: 24px;
25
+ --top-bar-gutter: 40px;
26
+ --top-bar-icon-button-width: 76px;
27
+ --top-bar-title-only-size: 20px;
28
+ --top-bar-title-only-height: 28px;
29
+ }
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { TopBarProps, TopBarSize } from './types';
3
+ export declare const TOP_BAR_HEIGHT: Readonly<Record<TopBarSize, number>>;
4
+ /**
5
+ * Компонент шапки модальных окон/экранов.
6
+ * @param props Свойства.
7
+ * @return Элемент.
8
+ */
9
+ export declare function TopBar({ divided, size, title, subtitle, buttons: { start, startSecondary, end, endSecondary }, className, 'data-testid': testId, }: TopBarProps): JSX.Element;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.TopBar = exports.TOP_BAR_HEIGHT = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const utils_1 = require("./utils");
43
+ const borders_1 = require("../styling/borders");
44
+ const bind_1 = __importDefault(require("classnames/bind"));
45
+ const top_bar_module_scss_1 = __importDefault(require("./top-bar.module.scss"));
46
+ // некоторым компонентам нужно знать конкретную высоту
47
+ exports.TOP_BAR_HEIGHT = {
48
+ s: 56,
49
+ m: 64,
50
+ xl: 80,
51
+ };
52
+ const cx = bind_1.default.bind(top_bar_module_scss_1.default);
53
+ /**
54
+ * Компонент шапки модальных окон/экранов.
55
+ * @param props Свойства.
56
+ * @return Элемент.
57
+ */
58
+ function TopBar({ divided, size = 'm', title, subtitle, buttons: { start, startSecondary, end, endSecondary } = {}, className, 'data-testid': testId = 'top-bar', }) {
59
+ const hasStartButtons = start || startSecondary;
60
+ const hasEndButtons = end || endSecondary;
61
+ const hasButtons = hasStartButtons || hasEndButtons;
62
+ const rootClasses = cx('root', `size-${size}`, className, divided && borders_1.InnerBorder.bottom, !subtitle && 'no-subtitle');
63
+ return (react_1.default.createElement("div", { className: rootClasses, "data-testid": testId },
64
+ hasButtons && (react_1.default.createElement("div", { className: cx('side') },
65
+ hasStartButtons && (react_1.default.createElement(TopBarButtonGroup, null,
66
+ start && react_1.default.createElement(TopBarButton, Object.assign({}, start)),
67
+ startSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, startSecondary)))),
68
+ hasEndButtons && (react_1.default.createElement(TopBarButtonGroup, { stub: true, end: true },
69
+ endSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, endSecondary)),
70
+ end && react_1.default.createElement(TopBarButton, Object.assign({}, end)))))),
71
+ react_1.default.createElement("div", { className: cx('main') },
72
+ title && react_1.default.createElement("div", { className: cx('title') }, title),
73
+ subtitle && react_1.default.createElement("div", { className: cx('subtitle') }, subtitle)),
74
+ hasButtons && (react_1.default.createElement("div", { className: cx('side') },
75
+ hasEndButtons && (react_1.default.createElement(TopBarButtonGroup, { end: true },
76
+ endSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, endSecondary)),
77
+ end && react_1.default.createElement(TopBarButton, Object.assign({}, end)))),
78
+ hasStartButtons && (react_1.default.createElement(TopBarButtonGroup, { stub: true },
79
+ start && react_1.default.createElement(TopBarButton, Object.assign({}, start)),
80
+ startSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, startSecondary))))))));
81
+ }
82
+ exports.TopBar = TopBar;
83
+ /**
84
+ * Компонент группы кнопок.
85
+ * @param props Свойства.
86
+ * @return Элемент.
87
+ */
88
+ function TopBarButtonGroup({ children, stub, end, }) {
89
+ return (react_1.default.createElement(utils_1.TopBarButtonGroupContext.Provider, { value: { stub } },
90
+ react_1.default.createElement("div", { className: cx('button-group', { stub, end }) }, children)));
91
+ }
92
+ /**
93
+ * Компонент кнопки-иконки.
94
+ * @param props Свойства.
95
+ * @return Элемент.
96
+ */
97
+ function TopBarButton(_a) {
98
+ var { text, icon, className, 'data-testid': testId = 'top-bar:button' } = _a, buttonProps = __rest(_a, ["text", "icon", "className", 'data-testid']);
99
+ const { stub } = (0, react_1.useContext)(utils_1.TopBarButtonGroupContext);
100
+ return (react_1.default.createElement("button", Object.assign({}, (!stub && Object.assign(Object.assign({}, buttonProps), { 'data-testid': testId })), { type: 'button', className: cx('button', icon && 'iconic', stub && 'stub', className), "aria-hidden": stub }), icon && !stub ? icon : text));
101
+ }
@@ -1,95 +1,157 @@
1
1
  @use '../colors';
2
+ @use './top-bar-util';
2
3
 
3
4
  .root {
5
+ width: 100%;
4
6
  display: flex;
5
- align-items: center;
6
7
  justify-content: center;
7
8
  background: #fff;
8
- overflow: hidden;
9
- box-sizing: border-box;
10
- .main-section {
11
- display: flex;
12
- width: 0;
13
- flex-direction: column;
14
- justify-content: center;
15
- flex-grow: 1;
16
- flex-shrink: 1;
17
- text-align: center;
18
- box-sizing: border-box;
9
+ height: var(--top-bar-height);
10
+ &.size-s {
11
+ @include top-bar-util.size-s;
19
12
  }
20
- .title {
21
- font-weight: 600;
22
- font-size: 16px;
23
- line-height: 24px;
13
+ &.size-m {
14
+ @include top-bar-util.size-m;
24
15
  }
25
- .subtitle {
26
- font-size: 12px;
27
- line-height: 16px;
28
- color: colors.$basic-gray38;
16
+ &.size-xl {
17
+ @include top-bar-util.size-xl;
29
18
  }
30
- .icon-button {
31
- + .icon-button {
32
- margin-left: 24px;
33
- }
19
+ }
20
+
21
+ .main {
22
+ display: flex;
23
+ flex-direction: column;
24
+ flex-grow: 1;
25
+ justify-content: center;
26
+ overflow: hidden;
27
+ text-align: center;
28
+
29
+ // когда нет кнопок
30
+ &:first-child:last-child {
31
+ margin: 0 var(--top-bar-gutter);
34
32
  }
35
- &.size-s {
36
- .main-section {
37
- margin: 0 24px;
38
- }
39
- .icon-button {
40
- &:first-child {
41
- margin-left: 24px;
33
+ }
34
+
35
+ .title {
36
+ color: colors.$basic-gray87;
37
+ font-size: var(--top-bar-title-size);
38
+ line-height: var(--top-bar-title-height);
39
+ font-weight: 600;
40
+
41
+ // когда нет подзаголовка
42
+ &:first-child:last-child {
43
+ font-size: var(--top-bar-title-only-size, var(--top-bar-title-size));
44
+ line-height: var(--top-bar-title-only-height, var(--top-bar-title-height));
45
+ }
46
+ }
47
+
48
+ .subtitle {
49
+ color: colors.$basic-gray38;
50
+ font-size: 12px;
51
+ line-height: 16px;
52
+ font-weight: 400;
53
+ margin-top: -4px;
54
+ }
55
+
56
+ .title,
57
+ .subtitle {
58
+ overflow: hidden;
59
+ text-overflow: ellipsis;
60
+ white-space: nowrap;
61
+ }
62
+
63
+ .side {
64
+ height: 100%;
65
+ display: flex;
66
+ flex-direction: column;
67
+ }
68
+
69
+ .button-group {
70
+ display: flex;
71
+ align-items: center;
72
+ width: 100%;
73
+ &:not(.end) {
74
+ .iconic {
75
+ &:first-child:last-child {
76
+ justify-content: flex-start;
77
+ padding-left: var(--top-bar-gutter);
42
78
  }
43
- &:last-child {
44
- margin-right: 24px;
79
+ &:not(:last-child):first-child {
80
+ justify-content: flex-start;
81
+ padding-left: var(--top-bar-gutter);
82
+ }
83
+ &:not(:first-child):last-child {
84
+ justify-content: flex-end;
85
+ padding-right: var(--top-bar-gutter);
45
86
  }
46
87
  }
47
88
  }
48
- &.size-m {
49
- .main-section {
50
- margin: 0 40px;
51
- }
52
- .title {
53
- font-size: 20px;
54
- line-height: 28px;
55
- }
56
- .icon-button {
57
- &:first-child {
58
- margin-left: 40px;
89
+ &.end {
90
+ justify-content: flex-end;
91
+ .iconic {
92
+ &:first-child:last-child {
93
+ justify-content: flex-end;
94
+ padding-right: var(--top-bar-gutter);
59
95
  }
60
- &:last-child {
61
- margin-right: 40px;
96
+ &:not(:last-child):first-child {
97
+ justify-content: flex-start;
98
+ padding-left: var(--top-bar-gutter);
62
99
  }
100
+ &:not(:first-child):last-child {
101
+ justify-content: flex-end;
102
+ padding-right: var(--top-bar-gutter);
103
+ }
104
+ }
105
+ :not(.iconic) {
106
+ justify-content: flex-end;
63
107
  }
64
108
  }
109
+ &:not(.stub) {
110
+ height: 100%;
111
+ }
65
112
  }
66
113
 
67
- .ellipsis {
68
- white-space: nowrap;
69
- overflow: hidden;
70
- text-overflow: ellipsis;
71
- }
72
-
73
- .icon-button {
114
+ .button {
115
+ background: transparent;
116
+ border: 0;
117
+ box-sizing: border-box;
118
+ font-family: inherit;
119
+ font-size: 14px;
120
+ line-height: 20px;
121
+ font-weight: 600;
122
+ margin: 0;
123
+ outline: 0;
124
+ text-align: inherit;
125
+ height: 100%;
74
126
  display: flex;
75
127
  align-items: center;
76
- justify-content: center;
77
- margin: 0;
78
128
  padding: 0;
79
- border: 0;
80
- outline: 0;
81
- width: 24px;
82
- height: 24px;
83
- flex-grow: 0;
84
- flex-shrink: 0;
85
- overflow: hidden;
86
- background: transparent;
87
- color: colors.$basic-gray87;
88
- &:not(.stub):hover {
129
+ &:hover {
89
130
  cursor: pointer;
90
- color: colors.$basic-gray54;
91
131
  }
92
- > svg {
132
+ &.iconic {
133
+ color: colors.$basic-gray87;
134
+ width: var(--top-bar-icon-button-width);
135
+ &:hover {
136
+ color: colors.$basic-gray54;
137
+ }
138
+ }
139
+ &:not(.iconic) {
140
+ color: colors.$basic-blue;
141
+ width: 100%;
142
+ padding: 0 var(--top-bar-gutter);
143
+ &:hover {
144
+ color: colors.$additional-deep-blue;
145
+ }
146
+ }
147
+ &.stub {
148
+ height: 0;
149
+ overflow: hidden;
150
+ }
151
+ svg {
152
+ // чтобы выравнивались по центру по вертикали
153
+ display: block;
154
+ flex-shrink: 0;
93
155
  fill: currentColor;
94
156
  }
95
157
  }