@gravity-ui/navigation 0.5.0 → 0.6.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 (69) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +2 -0
  3. package/build/cjs/components/AsideHeader/AsideHeader.d.ts +3 -4
  4. package/build/cjs/components/{AsideHeader → Content}/Content.d.ts +3 -2
  5. package/build/cjs/components/Content/index.d.ts +1 -0
  6. package/build/cjs/components/Drawer/Drawer.d.ts +1 -0
  7. package/build/cjs/components/Logo/Logo.d.ts +1 -12
  8. package/build/cjs/components/MobileHeader/Burger/Burger.d.ts +8 -0
  9. package/build/cjs/components/MobileHeader/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.d.ts +9 -0
  10. package/build/cjs/components/MobileHeader/BurgerMenu/BurgerMenu.d.ts +11 -0
  11. package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +7 -0
  12. package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +2 -0
  13. package/build/cjs/components/MobileHeader/FooterItem/FooterItem.d.ts +12 -0
  14. package/build/cjs/components/MobileHeader/Logo/Logo.d.ts +8 -0
  15. package/build/cjs/components/MobileHeader/MobileHeader.d.ts +27 -0
  16. package/build/cjs/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +4 -0
  17. package/build/cjs/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +3 -0
  18. package/build/cjs/components/MobileHeader/__stories__/moc.d.ts +1 -0
  19. package/build/cjs/components/MobileHeader/constants.d.ts +7 -0
  20. package/build/cjs/components/MobileHeader/index.d.ts +3 -0
  21. package/build/cjs/components/MobileHeader/types.d.ts +28 -0
  22. package/build/cjs/components/MobileHeader/utils.d.ts +3 -0
  23. package/build/cjs/components/Settings/Settings.d.ts +7 -3
  24. package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.d.ts +1 -20
  25. package/build/cjs/components/Settings/SettingsMenuMobile/SettingsMenuMobile.d.ts +3 -0
  26. package/build/cjs/components/Settings/SettingsSearch/SettingsSearch.d.ts +4 -1
  27. package/build/cjs/components/Settings/__stories__/Settings.stories.d.ts +1 -0
  28. package/build/cjs/components/Settings/__stories__/SettingsMobileDemo.d.ts +8 -0
  29. package/build/cjs/components/Settings/collect-settings.d.ts +1 -0
  30. package/build/cjs/components/Settings/types.d.ts +21 -0
  31. package/build/cjs/components/constants.d.ts +2 -0
  32. package/build/cjs/components/types.d.ts +15 -0
  33. package/build/cjs/hooks/useForwardRef.d.ts +2 -0
  34. package/build/cjs/index.js +169 -124
  35. package/build/cjs/index.js.map +1 -1
  36. package/build/esm/components/AsideHeader/AsideHeader.d.ts +3 -4
  37. package/build/esm/components/{AsideHeader → Content}/Content.d.ts +3 -2
  38. package/build/esm/components/Content/index.d.ts +1 -0
  39. package/build/esm/components/Drawer/Drawer.d.ts +1 -0
  40. package/build/esm/components/Logo/Logo.d.ts +1 -12
  41. package/build/esm/components/MobileHeader/Burger/Burger.d.ts +8 -0
  42. package/build/esm/components/MobileHeader/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.d.ts +9 -0
  43. package/build/esm/components/MobileHeader/BurgerMenu/BurgerMenu.d.ts +11 -0
  44. package/build/esm/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +7 -0
  45. package/build/esm/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +2 -0
  46. package/build/esm/components/MobileHeader/FooterItem/FooterItem.d.ts +12 -0
  47. package/build/esm/components/MobileHeader/Logo/Logo.d.ts +8 -0
  48. package/build/esm/components/MobileHeader/MobileHeader.d.ts +27 -0
  49. package/build/esm/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +4 -0
  50. package/build/esm/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +3 -0
  51. package/build/esm/components/MobileHeader/__stories__/moc.d.ts +1 -0
  52. package/build/esm/components/MobileHeader/constants.d.ts +7 -0
  53. package/build/esm/components/MobileHeader/index.d.ts +3 -0
  54. package/build/esm/components/MobileHeader/types.d.ts +28 -0
  55. package/build/esm/components/MobileHeader/utils.d.ts +3 -0
  56. package/build/esm/components/Settings/Settings.d.ts +7 -3
  57. package/build/esm/components/Settings/SettingsMenu/SettingsMenu.d.ts +1 -20
  58. package/build/esm/components/Settings/SettingsMenuMobile/SettingsMenuMobile.d.ts +3 -0
  59. package/build/esm/components/Settings/SettingsSearch/SettingsSearch.d.ts +4 -1
  60. package/build/esm/components/Settings/__stories__/Settings.stories.d.ts +1 -0
  61. package/build/esm/components/Settings/__stories__/SettingsMobileDemo.d.ts +8 -0
  62. package/build/esm/components/Settings/collect-settings.d.ts +1 -0
  63. package/build/esm/components/Settings/types.d.ts +21 -0
  64. package/build/esm/components/constants.d.ts +2 -0
  65. package/build/esm/components/types.d.ts +15 -0
  66. package/build/esm/hooks/useForwardRef.d.ts +2 -0
  67. package/build/esm/index.js +171 -126
  68. package/build/esm/index.js.map +1 -1
  69. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { Children, isValidElement, cloneElement, createElement, PureComponent } from 'react';
3
- import { Button, Icon, Popup, List, Tooltip, TextInput, Loader } from '@gravity-ui/uikit';
3
+ import { Button, Icon, Popup, List, Tooltip, TextInput, Tabs, Loader } from '@gravity-ui/uikit';
4
4
  import ReactDOM from 'react-dom';
5
5
 
6
6
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@@ -87,48 +87,48 @@ function styleInject(css, ref) {
87
87
  }
88
88
  }
89
89
 
90
- var css_248z$c = ".ycn-action-bar-group {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-group_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-group_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-group_pull_center {\n margin-left: auto;\n margin-right: auto;\n}";
91
- styleInject(css_248z$c);
90
+ var css_248z$d = ".ycn-action-bar-group {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-group_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-group_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-group_pull_center {\n margin-left: auto;\n margin-right: auto;\n}";
91
+ styleInject(css_248z$d);
92
92
 
93
- const b$d = block('action-bar-group');
93
+ const b$e = block('action-bar-group');
94
94
  const ActionBarGroup = ({ children, className, pull }) => {
95
- return (React__default.createElement("ul", { className: b$d({ pull }, className), role: "group" }, children));
95
+ return (React__default.createElement("ul", { className: b$e({ pull }, className), role: "group" }, children));
96
96
  };
97
97
  ActionBarGroup.displayName = 'ActionBar.Group';
98
98
 
99
- var css_248z$b = ".ycn-action-bar-item {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-item_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-item_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-item_pull_center {\n margin-left: auto;\n margin-right: auto;\n}\n.ycn-action-bar-item + .ycn-action-bar-item_spacing {\n margin-left: 8px;\n}";
100
- styleInject(css_248z$b);
99
+ var css_248z$c = ".ycn-action-bar-item {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-item_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-item_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-item_pull_center {\n margin-left: auto;\n margin-right: auto;\n}\n.ycn-action-bar-item + .ycn-action-bar-item_spacing {\n margin-left: 8px;\n}";
100
+ styleInject(css_248z$c);
101
101
 
102
- const b$c = block('action-bar-item');
102
+ const b$d = block('action-bar-item');
103
103
  const ActionBarItem = ({ children, className, pull, spacing = true }) => {
104
- return React__default.createElement("li", { className: b$c({ pull, spacing }, className) }, children);
104
+ return React__default.createElement("li", { className: b$d({ pull, spacing }, className) }, children);
105
105
  };
106
106
  ActionBarItem.displayName = 'ActionBar.Item';
107
107
 
108
- var css_248z$a = ".ycn-action-bar-section {\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.ycn-action-bar-section + .ycn-action-bar-section {\n border-left: solid 1px var(--yc-color-line-generic);\n}\n.ycn-action-bar-section_type_primary {\n flex: 1 1 auto;\n padding-left: 20px;\n padding-right: 20px;\n}\n.ycn-action-bar-section_type_secondary {\n padding-left: 6px;\n padding-right: 6px;\n}";
109
- styleInject(css_248z$a);
108
+ var css_248z$b = ".ycn-action-bar-section {\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}\n.ycn-action-bar-section + .ycn-action-bar-section {\n border-left: solid 1px var(--yc-color-line-generic);\n}\n.ycn-action-bar-section_type_primary {\n flex: 1 1 auto;\n padding-left: 20px;\n padding-right: 20px;\n}\n.ycn-action-bar-section_type_secondary {\n padding-left: 6px;\n padding-right: 6px;\n}";
109
+ styleInject(css_248z$b);
110
110
 
111
- const b$b = block('action-bar-section');
111
+ const b$c = block('action-bar-section');
112
112
  const ActionBarSection = ({ children, type = 'primary' }) => {
113
- return React__default.createElement("div", { className: b$b({ type }) }, children);
113
+ return React__default.createElement("div", { className: b$c({ type }) }, children);
114
114
  };
115
115
  ActionBarSection.displayName = 'ActionBar.Section';
116
116
 
117
- var css_248z$9 = ".ycn-action-bar-separator {\n list-style: none;\n margin: 0;\n padding: 0;\n margin-left: 6px;\n margin-right: 6px;\n border-right: solid 1px var(--yc-color-line-generic);\n height: 40px;\n}";
118
- styleInject(css_248z$9);
117
+ var css_248z$a = ".ycn-action-bar-separator {\n list-style: none;\n margin: 0;\n padding: 0;\n margin-left: 6px;\n margin-right: 6px;\n border-right: solid 1px var(--yc-color-line-generic);\n height: 40px;\n}";
118
+ styleInject(css_248z$a);
119
119
 
120
- const b$a = block('action-bar-separator');
120
+ const b$b = block('action-bar-separator');
121
121
  const ActionBarSeparator = () => {
122
- return React__default.createElement("li", { role: "separator", className: b$a() });
122
+ return React__default.createElement("li", { role: "separator", className: b$b() });
123
123
  };
124
124
  ActionBarSeparator.displayName = 'ActionBar.Separator';
125
125
 
126
- var css_248z$8 = ".ycn-action-bar {\n box-sizing: border-box;\n height: 40px;\n border-bottom: solid 1px var(--yc-color-line-generic);\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}";
127
- styleInject(css_248z$8);
126
+ var css_248z$9 = ".ycn-action-bar {\n box-sizing: border-box;\n height: 40px;\n border-bottom: solid 1px var(--yc-color-line-generic);\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: stretch;\n}";
127
+ styleInject(css_248z$9);
128
128
 
129
- const b$9 = block('action-bar');
129
+ const b$a = block('action-bar');
130
130
  const ActionBar = ({ children, className, 'aria-label': ariaLabel }) => {
131
- return (React__default.createElement("section", { className: b$9(null, className), "aria-label": ariaLabel }, children));
131
+ return (React__default.createElement("section", { className: b$a(null, className), "aria-label": ariaLabel }, children));
132
132
  };
133
133
  ActionBar.displayName = 'ActionBar';
134
134
  const PublicActionBar = Object.assign(ActionBar, {
@@ -138,6 +138,11 @@ const PublicActionBar = Object.assign(ActionBar, {
138
138
  Separator: ActionBarSeparator,
139
139
  });
140
140
 
141
+ var MobileHeaderDict;
142
+ (function (MobileHeaderDict) {
143
+ MobileHeaderDict["CloseBurger"] = "button_close-burger";
144
+ MobileHeaderDict["OpenBurger"] = "button_open-burger";
145
+ })(MobileHeaderDict || (MobileHeaderDict = {}));
141
146
  var Dict;
142
147
  (function (Dict) {
143
148
  Dict["ExpandButton"] = "button_expand";
@@ -152,6 +157,8 @@ const defaultDict$1 = {
152
157
  [Dict.CollapseButton]: 'Collapse',
153
158
  [Dict.ExpandButton]: 'Expand',
154
159
  [Dict.MoreButton]: 'More',
160
+ [MobileHeaderDict.CloseBurger]: 'Close menu',
161
+ [MobileHeaderDict.OpenBurger]: 'Open menu',
155
162
  };
156
163
 
157
164
  function _extends$4() {
@@ -3173,15 +3180,15 @@ SwitchTransition.defaultProps = {
3173
3180
  mode: modes.out
3174
3181
  };
3175
3182
 
3176
- var css_248z$7 = ".ycn-drawer__item {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n will-change: transform;\n background-color: var(--yc-color-base-background);\n}\n.ycn-drawer__item-transition-enter {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition-enter-active {\n transform: translate(0, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-enter-done {\n filter: blur(0px);\n transform: translateZ(0);\n}\n.ycn-drawer__item-transition-exit {\n transform: translate(0, 0);\n}\n.ycn-drawer__item-transition-exit-active {\n transform: translate(-100%, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-exit-done {\n visibility: hidden;\n}\n.ycn-drawer__veil {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n background-color: var(--yc-color-sfx-veil);\n}\n.ycn-drawer__veil-transition-enter {\n opacity: 0;\n}\n.ycn-drawer__veil-transition-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit {\n opacity: 1;\n}\n.ycn-drawer__veil-transition-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit-done {\n visibility: hidden;\n}";
3177
- styleInject(css_248z$7);
3183
+ var css_248z$8 = ".ycn-drawer__item {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n will-change: transform;\n background-color: var(--yc-color-base-background);\n}\n.ycn-drawer__item_direction_right {\n left: auto;\n right: 0;\n}\n.ycn-drawer__item-transition-enter {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition_direction_right-enter {\n transform: translate(100%, 0);\n}\n.ycn-drawer__item-transition-enter-active, .ycn-drawer__item-transition_direction_right-enter-active {\n transform: translate(0, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-enter-done, .ycn-drawer__item-transition_direction_right-enter-done {\n filter: blur(0px);\n transform: translateZ(0);\n}\n.ycn-drawer__item-transition-exit, .ycn-drawer__item-transition_direction_right-exit {\n transform: translate(0, 0);\n}\n.ycn-drawer__item-transition-exit-active, .ycn-drawer__item-transition_direction_right-exit-active {\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-exit-active {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition_direction_right-exit-active {\n transform: translate(100%, 0);\n}\n.ycn-drawer__item-transition-exit-done, .ycn-drawer__item-transition_direction_right-exit-done {\n visibility: hidden;\n}\n.ycn-drawer__veil {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n background-color: var(--yc-color-sfx-veil);\n}\n.ycn-drawer__veil-transition-enter {\n opacity: 0;\n}\n.ycn-drawer__veil-transition-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit {\n opacity: 1;\n}\n.ycn-drawer__veil-transition-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit-done {\n visibility: hidden;\n}";
3184
+ styleInject(css_248z$8);
3178
3185
 
3179
- const b$8 = block('drawer');
3186
+ const b$9 = block('drawer');
3180
3187
  const TIMEOUT = 300;
3181
- const DrawerItem = ({ visible, content, className }) => {
3188
+ const DrawerItem = ({ visible, content, direction, className }) => {
3182
3189
  const itemRef = React__default.useRef(null);
3183
- return (React__default.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$8('item-transition'), nodeRef: itemRef },
3184
- React__default.createElement("div", { ref: itemRef, className: b$8('item', className) }, content)));
3190
+ return (React__default.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$9('item-transition', { direction }), nodeRef: itemRef },
3191
+ React__default.createElement("div", { ref: itemRef, className: b$9('item', { direction }, className) }, content)));
3185
3192
  };
3186
3193
  const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScrollBody = true, }) => {
3187
3194
  let someItemVisible = false;
@@ -3239,9 +3246,9 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
3239
3246
  const veilRef = React__default.useRef(null);
3240
3247
  return (React__default.createElement(Transition, { in: someItemVisible, timeout: { enter: 0, exit: TIMEOUT }, mountOnEnter: true, unmountOnExit: true, nodeRef: containerRef }, (state) => {
3241
3248
  const childrenVisible = someItemVisible && state === 'entered';
3242
- return (React__default.createElement("div", { ref: containerRef, className: b$8(null, className), style: style },
3243
- React__default.createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$8('veil-transition'), nodeRef: veilRef },
3244
- React__default.createElement("div", { ref: veilRef, className: b$8('veil'), onClick: onVeilClick })),
3249
+ return (React__default.createElement("div", { ref: containerRef, className: b$9(null, className), style: style },
3250
+ React__default.createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$9('veil-transition'), nodeRef: veilRef },
3251
+ React__default.createElement("div", { ref: veilRef, className: b$9('veil'), onClick: onVeilClick })),
3245
3252
  React__default.Children.map(children, (child) => {
3246
3253
  const childElem = child;
3247
3254
  if (childElem.type === DrawerItem) {
@@ -3253,10 +3260,10 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
3253
3260
  }));
3254
3261
  };
3255
3262
 
3256
- var css_248z$6 = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: 40px;\n}\n.ycn-logo__logo-btn-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-logo__btn-logo.yc-button_view_flat.yc-button_size_l {\n --yc-button-height: 38px;\n}\n.ycn-logo__logo {\n font-size: var(--yc-text-body-2-font-size);\n line-height: var(--yc-text-body-2-line-height);\n font-weight: var(--yc-text-body-font-weight);\n vertical-align: middle;\n}\n.ycn-logo__logo-link, .ycn-logo__logo-link:hover, .ycn-logo__logo-link:active, .ycn-logo__logo-link:visited, .ycn-logo__logo-link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.yc-root .ycn-logo__btn-logo.button2_theme_flat.button2_hovered_yes::before {\n background-color: transparent;\n}";
3257
- styleInject(css_248z$6);
3263
+ var css_248z$7 = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: 40px;\n}\n.ycn-logo__logo-btn-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-logo__btn-logo.yc-button_view_flat.yc-button_size_l {\n --yc-button-height: 38px;\n}\n.ycn-logo__logo {\n font-size: var(--yc-text-body-2-font-size);\n line-height: var(--yc-text-body-2-line-height);\n font-weight: var(--yc-text-body-font-weight);\n vertical-align: middle;\n}\n.ycn-logo__logo-link, .ycn-logo__logo-link:hover, .ycn-logo__logo-link:active, .ycn-logo__logo-link:visited, .ycn-logo__logo-link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.yc-root .ycn-logo__btn-logo.button2_theme_flat.button2_hovered_yes::before {\n background-color: transparent;\n}";
3264
+ styleInject(css_248z$7);
3258
3265
 
3259
- const b$7 = block('logo');
3266
+ const b$8 = block('logo');
3260
3267
  const Logo = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href = '/', wrapper, onClick, }) => {
3261
3268
  const hasClickHandler = typeof onClick === 'function';
3262
3269
  const hasWrapper = typeof wrapper === 'function';
@@ -3274,18 +3281,18 @@ const Logo = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, text
3274
3281
  else if (icon) {
3275
3282
  buttonIcon = React__default.createElement(Icon, { data: icon, size: iconSize, className: iconClassName });
3276
3283
  }
3277
- const button = (React__default.createElement(Button, Object.assign({ view: "flat", size: "l", className: b$7('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3284
+ const button = (React__default.createElement(Button, Object.assign({ view: "flat", size: "l", className: b$8('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3278
3285
  let logo;
3279
3286
  if (typeof text === 'function') {
3280
3287
  logo = text();
3281
3288
  }
3282
3289
  else {
3283
- logo = (React__default.createElement("div", { className: b$7('logo'), style: { fontSize: textSize } }, text));
3290
+ logo = (React__default.createElement("div", { className: b$8('logo'), style: { fontSize: textSize } }, text));
3284
3291
  }
3285
- return (React__default.createElement("div", { className: b$7() },
3286
- React__default.createElement("div", { className: b$7('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3292
+ return (React__default.createElement("div", { className: b$8() },
3293
+ React__default.createElement("div", { className: b$8('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3287
3294
  !compact &&
3288
- (hasWrapper ? (React__default.createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default.createElement("a", Object.assign({}, linkProps, { className: b$7('logo-link'), onClick: onClick }), logo)))));
3295
+ (hasWrapper ? (React__default.createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default.createElement("a", Object.assign({}, linkProps, { className: b$8('logo-link'), onClick: onClick }), logo)))));
3289
3296
  };
3290
3297
 
3291
3298
  var classCallCheck = function (instance, Constructor) {
@@ -3817,16 +3824,16 @@ function getItemsMinHeight(items) {
3817
3824
  (pinnedItems.length === items.length ? 0 : ITEM_HEIGHT));
3818
3825
  }
3819
3826
 
3820
- var css_248z$5 = ".ycn-composite-bar-item {\n --composite-bar-item-action-size: 36px;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n cursor: pointer;\n}\n.ycn-composite-bar-item__icon {\n color: var(--yc-color-text-misc);\n}\n.ycn-composite-bar-item__icon-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.ycn-composite-bar-item__title {\n display: flex;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-adornment {\n margin: 0 10px;\n}\n.ycn-composite-bar-item__collapse-item {\n display: flex;\n padding: 0 16px;\n align-items: center;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.ycn-composite-bar-item__collapse-item .ycn-composite-bar-item__title-adornment {\n margin-right: 0;\n}\n.ycn-composite-bar-item__menu-divider {\n margin: 0 8px;\n width: 100%;\n border-top: 1px solid var(--yc-color-line-generic);\n cursor: default;\n}\n.ycn-composite-bar-item__collapse-items-popup-content {\n padding: 4px 0;\n}\n.ycn-composite-bar-item__link {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.ycn-composite-bar-item__link, .ycn-composite-bar-item__link:hover, .ycn-composite-bar-item__link:active, .ycn-composite-bar-item__link:visited, .ycn-composite-bar-item__link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.ycn-composite-bar-item__btn-icon {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-composite-bar-item_type_action {\n justify-content: center;\n height: var(--composite-bar-item-action-size);\n margin: 0 10px 8px;\n background: var(--yc-color-base-float);\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.03), 0px 5px 6px rgba(0, 0, 0, 0.12);\n border-radius: var(--composite-bar-item-action-size);\n transition: transform 0.1s ease-out, background-color 0.15s linear;\n}\n.ycn-composite-bar-item_type_action:focus {\n box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.ycn-composite-bar-item_type_action:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.ycn-composite-bar-item_type_action:hover {\n background-color: var(--yc-color-base-float-hover);\n}\n.ycn-composite-bar-item_type_action:active {\n box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n transition: none;\n transform: scale(0.96);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__icon-place {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin-right: 16px;\n}\n.ycn-composite-bar-item__icon-tooltip_item-type_action {\n margin-left: 10px;\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact).ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact):not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-simple-hover);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin: 0;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-simple-hover);\n}";
3821
- styleInject(css_248z$5);
3827
+ var css_248z$6 = ".ycn-composite-bar-item {\n --composite-bar-item-action-size: 36px;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n cursor: pointer;\n}\n.ycn-composite-bar-item__icon {\n color: var(--yc-color-text-misc);\n}\n.ycn-composite-bar-item__icon-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.ycn-composite-bar-item__title {\n display: flex;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-adornment {\n margin: 0 10px;\n}\n.ycn-composite-bar-item__collapse-item {\n display: flex;\n padding: 0 16px;\n align-items: center;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.ycn-composite-bar-item__collapse-item .ycn-composite-bar-item__title-adornment {\n margin-right: 0;\n}\n.ycn-composite-bar-item__menu-divider {\n margin: 0 8px;\n width: 100%;\n border-top: 1px solid var(--yc-color-line-generic);\n cursor: default;\n}\n.ycn-composite-bar-item__collapse-items-popup-content {\n padding: 4px 0;\n}\n.ycn-composite-bar-item__link {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.ycn-composite-bar-item__link, .ycn-composite-bar-item__link:hover, .ycn-composite-bar-item__link:active, .ycn-composite-bar-item__link:visited, .ycn-composite-bar-item__link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.ycn-composite-bar-item__btn-icon {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-composite-bar-item_type_action {\n justify-content: center;\n height: var(--composite-bar-item-action-size);\n margin: 0 10px 8px;\n background: var(--yc-color-base-float);\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.03), 0px 5px 6px rgba(0, 0, 0, 0.12);\n border-radius: var(--composite-bar-item-action-size);\n transition: transform 0.1s ease-out, background-color 0.15s linear;\n}\n.ycn-composite-bar-item_type_action:focus {\n box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.ycn-composite-bar-item_type_action:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.ycn-composite-bar-item_type_action:hover {\n background-color: var(--yc-color-base-float-hover);\n}\n.ycn-composite-bar-item_type_action:active {\n box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n transition: none;\n transform: scale(0.96);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__icon-place {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin-right: 16px;\n}\n.ycn-composite-bar-item__icon-tooltip_item-type_action {\n margin-left: 10px;\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact).ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact):not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-simple-hover);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin: 0;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-simple-hover);\n}";
3828
+ styleInject(css_248z$6);
3822
3829
 
3823
- const b$6 = block('composite-bar-item');
3830
+ const b$7 = block('composite-bar-item');
3824
3831
  function renderItemTitle(item) {
3825
- let titleNode = React__default.createElement("div", { className: b$6('title-text') }, item.title);
3832
+ let titleNode = React__default.createElement("div", { className: b$7('title-text') }, item.title);
3826
3833
  if (item.rightAdornment) {
3827
3834
  titleNode = (React__default.createElement(React__default.Fragment, null,
3828
3835
  titleNode,
3829
- React__default.createElement("div", { className: b$6('title-adornment') }, item.rightAdornment)));
3836
+ React__default.createElement("div", { className: b$7('title-adornment') }, item.rightAdornment)));
3830
3837
  }
3831
3838
  return titleNode;
3832
3839
  }
@@ -3835,7 +3842,7 @@ const defaultPopupOffset = [-20, 8];
3835
3842
  const Item = (props) => {
3836
3843
  const { item, compact, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, renderPopupContent, onClosePopup, onItemClick, } = props;
3837
3844
  if (item.type === 'divider') {
3838
- return React__default.createElement("div", { className: b$6('menu-divider') });
3845
+ return React__default.createElement("div", { className: b$7('menu-divider') });
3839
3846
  }
3840
3847
  const [open, toggleOpen] = React__default.useState(false);
3841
3848
  const ref = React__default.useRef(null);
@@ -3856,7 +3863,7 @@ const Item = (props) => {
3856
3863
  onClosePopup === null || onClosePopup === void 0 ? void 0 : onClosePopup();
3857
3864
  }, [onClosePopup]);
3858
3865
  const makeNode = ({ icon: iconEl, title: titleEl }) => {
3859
- const createdNode = (React__default.createElement("div", { className: b$6({ type, current, compact }, className), ref: ref, onClick: () => {
3866
+ const createdNode = (React__default.createElement("div", { className: b$7({ type, current, compact }, className), ref: ref, onClick: () => {
3860
3867
  if (collapsedItem) {
3861
3868
  /**
3862
3869
  * If we call onItemClick for collapsedItem then:
@@ -3877,13 +3884,13 @@ const Item = (props) => {
3877
3884
  onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave();
3878
3885
  }
3879
3886
  } },
3880
- React__default.createElement("div", { className: b$6('icon-place') }, compact ? (React__default.createElement(Tooltip, { content: tooltipText, disabled: !enableTooltip || (collapsedItem && open), placement: "right", className: b$6('icon-tooltip', { 'item-type': type }) },
3881
- React__default.createElement("div", { onMouseEnter: () => onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter(), onMouseLeave: () => onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave(), className: b$6('btn-icon') }, iconEl))) : (iconEl)),
3882
- React__default.createElement("div", { className: b$6('title'), title: typeof item.title === 'string' ? item.title : undefined }, titleEl),
3883
- renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default.createElement(Popup, { className: b$6('popup'), open: popupVisible, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
3884
- return item.link ? (React__default.createElement("a", { href: item.link, className: b$6('link') }, createdNode)) : (createdNode);
3887
+ React__default.createElement("div", { className: b$7('icon-place') }, compact ? (React__default.createElement(Tooltip, { content: tooltipText, disabled: !enableTooltip || (collapsedItem && open), placement: "right", className: b$7('icon-tooltip', { 'item-type': type }) },
3888
+ React__default.createElement("div", { onMouseEnter: () => onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter(), onMouseLeave: () => onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave(), className: b$7('btn-icon') }, iconEl))) : (iconEl)),
3889
+ React__default.createElement("div", { className: b$7('title'), title: typeof item.title === 'string' ? item.title : undefined }, titleEl),
3890
+ renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default.createElement(Popup, { className: b$7('popup'), open: popupVisible, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
3891
+ return item.link ? (React__default.createElement("a", { href: item.link, className: b$7('link') }, createdNode)) : (createdNode);
3885
3892
  };
3886
- const iconNode = icon ? React__default.createElement(Icon, { data: icon, size: iconSize, className: b$6('icon') }) : null;
3893
+ const iconNode = icon ? React__default.createElement(Icon, { data: icon, size: iconSize, className: b$7('icon') }) : null;
3887
3894
  const titleNode = renderItemTitle(item);
3888
3895
  const params = { icon: iconNode, title: titleNode };
3889
3896
  let node;
@@ -3901,13 +3908,13 @@ const Item = (props) => {
3901
3908
  Item.displayName = 'Item';
3902
3909
  function CollapsedPopup({ compact, onItemClick, collapseItems, anchorRef, onClose, }) {
3903
3910
  return (collapseItems === null || collapseItems === void 0 ? void 0 : collapseItems.length) ? (React__default.createElement(Popup, { placement: POPUP_PLACEMENT, open: true, anchorRef: anchorRef, onClose: onClose },
3904
- React__default.createElement("div", { className: b$6('collapse-items-popup-content') },
3905
- React__default.createElement(List, { itemClassName: b$6('root-collapse-item'), items: collapseItems, selectedItemIndex: getSelectedItemIndex(collapseItems), itemHeight: POPUP_ITEM_HEIGHT, itemsHeight: collapseItems.length * POPUP_ITEM_HEIGHT, virtualized: false, filterable: false, sortable: false, renderItem: (collapseItem) => {
3911
+ React__default.createElement("div", { className: b$7('collapse-items-popup-content') },
3912
+ React__default.createElement(List, { itemClassName: b$7('root-collapse-item'), items: collapseItems, selectedItemIndex: getSelectedItemIndex(collapseItems), itemHeight: POPUP_ITEM_HEIGHT, itemsHeight: collapseItems.length * POPUP_ITEM_HEIGHT, virtualized: false, filterable: false, sortable: false, renderItem: (collapseItem) => {
3906
3913
  const makeCollapseNode = ({ title: titleEl }) => {
3907
- const res = (React__default.createElement("div", { className: b$6('collapse-item'), onClick: () => {
3914
+ const res = (React__default.createElement("div", { className: b$7('collapse-item'), onClick: () => {
3908
3915
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(collapseItem, true);
3909
3916
  } }, titleEl));
3910
- return collapseItem.link ? (React__default.createElement("a", { href: collapseItem.link, className: b$6('link') }, res)) : (res);
3917
+ return collapseItem.link ? (React__default.createElement("a", { href: collapseItem.link, className: b$7('link') }, res)) : (res);
3911
3918
  };
3912
3919
  const titleNode = renderItemTitle(collapseItem);
3913
3920
  const params = { title: titleNode };
@@ -3937,10 +3944,10 @@ var SvgDots = function SvgDots(props) {
3937
3944
  };
3938
3945
  var dotsIcon = SvgDots;
3939
3946
 
3940
- var css_248z$4 = ".ycn-composite-bar {\n flex: 1 0 auto;\n width: 100%;\n min-height: 40px;\n}\n.ycn-composite-bar .ycn-composite-bar__root-menu-item[class] {\n background-color: transparent;\n}";
3941
- styleInject(css_248z$4);
3947
+ var css_248z$5 = ".ycn-composite-bar {\n flex: 1 0 auto;\n width: 100%;\n min-height: 40px;\n}\n.ycn-composite-bar .ycn-composite-bar__root-menu-item[class] {\n background-color: transparent;\n}";
3948
+ styleInject(css_248z$5);
3942
3949
 
3943
- const b$5 = block('composite-bar');
3950
+ const b$6 = block('composite-bar');
3944
3951
  class CompositeBar extends React__default.Component {
3945
3952
  constructor() {
3946
3953
  super(...arguments);
@@ -3955,10 +3962,10 @@ class CompositeBar extends React__default.Component {
3955
3962
  return null;
3956
3963
  }
3957
3964
  if (!enableCollapsing) {
3958
- return React__default.createElement("div", { className: b$5() }, this.renderMenu());
3965
+ return React__default.createElement("div", { className: b$6() }, this.renderMenu());
3959
3966
  }
3960
3967
  const minHeight = getItemsMinHeight(items);
3961
- return (React__default.createElement("div", { className: b$5({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default.createElement(AutoSizer, null, ({ width, height }) => {
3968
+ return (React__default.createElement("div", { className: b$6({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default.createElement(AutoSizer, null, ({ width, height }) => {
3962
3969
  const style = {
3963
3970
  width,
3964
3971
  height,
@@ -3969,7 +3976,7 @@ class CompositeBar extends React__default.Component {
3969
3976
  renderAutosizeMenu(height) {
3970
3977
  const { compact, onItemClick } = this.props;
3971
3978
  const { listItems, collapseItems } = this.getAutosizeListItems(height);
3972
- return (React__default.createElement(List, { ref: this.listRef, items: listItems, selectedItemIndex: getSelectedItemIndex(listItems), itemHeight: getItemHeight, itemClassName: b$5('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default.createElement(Item, { item: item, onMouseLeave: () => {
3979
+ return (React__default.createElement(List, { ref: this.listRef, items: listItems, selectedItemIndex: getSelectedItemIndex(listItems), itemHeight: getItemHeight, itemClassName: b$6('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default.createElement(Item, { item: item, onMouseLeave: () => {
3973
3980
  var _a;
3974
3981
  if (compact) {
3975
3982
  (_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
@@ -3978,7 +3985,7 @@ class CompositeBar extends React__default.Component {
3978
3985
  }
3979
3986
  renderMenu() {
3980
3987
  const { items, onItemClick, compact } = this.props;
3981
- return (React__default.createElement(List, { ref: this.listRef, items: items, selectedItemIndex: getSelectedItemIndex(items), itemHeight: getItemHeight, itemClassName: b$5('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default.createElement(Item, { item: item, onMouseLeave: () => {
3988
+ return (React__default.createElement(List, { ref: this.listRef, items: items, selectedItemIndex: getSelectedItemIndex(items), itemHeight: getItemHeight, itemClassName: b$6('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default.createElement(Item, { item: item, onMouseLeave: () => {
3982
3989
  var _a;
3983
3990
  if (compact) {
3984
3991
  (_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
@@ -4043,8 +4050,8 @@ const RenderContent = React__default.memo(({ renderContent, size }) => {
4043
4050
  return React__default.createElement(React__default.Fragment, null, renderContent({ size }));
4044
4051
  });
4045
4052
  RenderContent.displayName = 'RenderContent';
4046
- const Content = ({ size, className, renderContent }) => {
4047
- return (React__default.createElement("div", { className: className, style: Object.assign({}, { '--aside-header-size': `${size}px` }) }, typeof renderContent === 'function' && (React__default.createElement(RenderContent, { size: size, renderContent: renderContent }))));
4053
+ const Content = ({ size, className, cssSizeVariableName = '--aside-header-size', renderContent, }) => {
4054
+ return (React__default.createElement("div", { className: className, style: Object.assign({}, { [cssSizeVariableName]: `${size}px` }) }, typeof renderContent === 'function' && (React__default.createElement(RenderContent, { size: size, renderContent: renderContent }))));
4048
4055
  };
4049
4056
 
4050
4057
  var _path$1;
@@ -4077,37 +4084,37 @@ var SvgDividerCollapsed = function SvgDividerCollapsed(props) {
4077
4084
  };
4078
4085
  var headerDividerCollapsedIcon = SvgDividerCollapsed;
4079
4086
 
4080
- var css_248z$3 = ".yc-root {\n --aside-header-background-color: var(--yc-color-base-info);\n --aside-header-collapse-button-divider-line-color: var(\n --aside-header-header-divider-line-color\n );\n}\n\n.yc-root_theme_light,\n.yc-root_theme_light-hc {\n --aside-header-divider-line-color: transparent;\n --aside-header-header-divider-line-color: var(--yc-color-line-generic);\n}\n\n.yc-root_theme_dark,\n.yc-root_theme_dark-hc {\n --aside-header-divider-line-color: var(--yc-color-line-solid);\n --aside-header-header-divider-line-color: var(--yc-color-line-solid);\n}\n\n.ycn-aside-header {\n --aside-header-min-width: 56px;\n height: 100%;\n width: 100%;\n position: relative;\n background-color: var(--yc-color-base-background);\n}\n.ycn-aside-header__aside {\n position: sticky;\n top: 0;\n left: 0;\n height: 100vh;\n width: inherit;\n display: flex;\n flex-direction: column;\n background-color: var(--yc-color-base-background);\n z-index: 100;\n box-sizing: border-box;\n}\n.ycn-aside-header__aside::after {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n width: 1px;\n height: 100%;\n content: \"\";\n background-color: var(--aside-header-divider-line-color);\n}\n.ycn-aside-header__aside-popup-anchor {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n}\n.ycn-aside-header__aside-content {\n --gradient-height: 334px;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n width: inherit;\n height: inherit;\n position: relative;\n z-index: 2;\n user-select: none;\n background: linear-gradient(180deg, var(--aside-header-background-color) calc(var(--gradient-height) * 0.33), transparent calc(var(--gradient-height) * 0.88));\n}\n.ycn-aside-header__aside-content::after {\n position: absolute;\n top: 0;\n right: -100px;\n bottom: 0;\n width: 100px;\n content: \"\";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 0px 24px rgba(0, 0, 0, 0.08);\n}\n.ycn-aside-header__aside-content > .ycn-aside-header-logo {\n margin: 8px 0;\n}\n.ycn-aside-header_compact .ycn-aside-header__aside-content {\n background: transparent;\n}\n.ycn-aside-header__header {\n --aside-header-header-divider-height: 29px;\n position: relative;\n z-index: 1;\n flex: none;\n box-sizing: border-box;\n width: 100%;\n padding-top: 8px;\n padding-bottom: 22px;\n}\n.ycn-aside-header__header .ycn-aside-header__header-divider {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -2;\n display: none;\n color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::before {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -2;\n display: none;\n width: 100%;\n height: calc(100% - var(--aside-header-header-divider-height));\n content: \"\";\n background-color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::after {\n position: absolute;\n bottom: 12px;\n left: 0;\n z-index: -2;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--aside-header-header-divider-line-color);\n}\n.ycn-aside-header_compact .ycn-aside-header__header::before {\n display: block;\n}\n.ycn-aside-header_compact .ycn-aside-header__header::after {\n display: none;\n}\n.ycn-aside-header_compact .ycn-aside-header__header .ycn-aside-header__header-divider {\n display: block;\n}\n.ycn-aside-header__menu-items {\n flex-grow: 1;\n}\n.ycn-aside-header__footer {\n flex-shrink: 0;\n width: 100%;\n margin: 8px 0;\n display: flex;\n flex-direction: column;\n}\n.ycn-aside-header__panels {\n z-index: 98;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n overflow: auto;\n}\n.ycn-aside-header__panel {\n height: 100%;\n}\n.ycn-aside-header__pane-container {\n display: flex;\n outline: none;\n overflow: visible;\n user-select: text;\n flex-direction: row;\n}\n.ycn-aside-header__content {\n width: calc(100% - var(--aside-header-size));\n z-index: 95;\n}\n.ycn-aside-header__collapse-button {\n --yc-button-background-color-hover: transparent;\n overflow: hidden;\n box-sizing: border-box;\n flex: none;\n width: 100%;\n height: 20px;\n border-top: 1px solid var(--aside-header-collapse-button-divider-line-color);\n margin-top: auto;\n}\n.ycn-aside-header__collapse-button:not(.ycn-aside-header__collapse-button_compact) .ycn-aside-header__collapse-icon {\n transform: rotate(180deg);\n}\n.ycn-aside-header__collapse-button .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-secondary);\n}\n.ycn-aside-header__collapse-button:hover .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-primary);\n}";
4081
- styleInject(css_248z$3);
4087
+ var css_248z$4 = ".yc-root {\n --aside-header-background-color: var(--yc-color-base-info);\n --aside-header-collapse-button-divider-line-color: var(\n --aside-header-header-divider-line-color\n );\n}\n\n.yc-root_theme_light,\n.yc-root_theme_light-hc {\n --aside-header-divider-line-color: transparent;\n --aside-header-header-divider-line-color: var(--yc-color-line-generic);\n}\n\n.yc-root_theme_dark,\n.yc-root_theme_dark-hc {\n --aside-header-divider-line-color: var(--yc-color-line-solid);\n --aside-header-header-divider-line-color: var(--yc-color-line-solid);\n}\n\n.ycn-aside-header {\n --aside-header-min-width: 56px;\n height: 100%;\n width: 100%;\n position: relative;\n background-color: var(--yc-color-base-background);\n}\n.ycn-aside-header__aside {\n position: sticky;\n top: 0;\n left: 0;\n height: 100vh;\n width: inherit;\n display: flex;\n flex-direction: column;\n background-color: var(--yc-color-base-background);\n z-index: 100;\n box-sizing: border-box;\n}\n.ycn-aside-header__aside::after {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n width: 1px;\n height: 100%;\n content: \"\";\n background-color: var(--aside-header-divider-line-color);\n}\n.ycn-aside-header__aside-popup-anchor {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n}\n.ycn-aside-header__aside-content {\n --gradient-height: 334px;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n width: inherit;\n height: inherit;\n position: relative;\n z-index: 2;\n user-select: none;\n}\n.ycn-aside-header__aside-content::after {\n position: absolute;\n top: 0;\n right: -100px;\n bottom: 0;\n width: 100px;\n content: \"\";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 0px 24px rgba(0, 0, 0, 0.08);\n}\n.ycn-aside-header__aside-content > .ycn-aside-header-logo {\n margin: 8px 0;\n}\n.ycn-aside-header__aside-content_with-decoration {\n background: linear-gradient(180deg, var(--aside-header-background-color) calc(var(--gradient-height) * 0.33), transparent calc(var(--gradient-height) * 0.88));\n}\n.ycn-aside-header_compact .ycn-aside-header__aside-content {\n background: transparent;\n}\n.ycn-aside-header__header {\n --aside-header-header-divider-height: 29px;\n position: relative;\n z-index: 1;\n flex: none;\n box-sizing: border-box;\n width: 100%;\n padding-top: 8px;\n padding-bottom: 22px;\n}\n.ycn-aside-header__header .ycn-aside-header__header-divider {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -2;\n display: none;\n color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header_with-decoration::before {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -2;\n display: none;\n width: 100%;\n height: calc(100% - var(--aside-header-header-divider-height));\n content: \"\";\n background-color: var(--aside-header-background-color);\n}\n.ycn-aside-header__header::after {\n position: absolute;\n bottom: 12px;\n left: 0;\n z-index: -2;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--aside-header-header-divider-line-color);\n}\n.ycn-aside-header_compact .ycn-aside-header__header::before {\n display: block;\n}\n.ycn-aside-header_compact .ycn-aside-header__header_with-decoration .ycn-aside-header__header-divider {\n display: block;\n}\n.ycn-aside-header_compact .ycn-aside-header__header_with-decoration::after {\n display: none;\n}\n.ycn-aside-header__menu-items {\n flex-grow: 1;\n}\n.ycn-aside-header__footer {\n flex-shrink: 0;\n width: 100%;\n margin: 8px 0;\n display: flex;\n flex-direction: column;\n}\n.ycn-aside-header__panels {\n z-index: 98;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n overflow: auto;\n}\n.ycn-aside-header__panel {\n height: 100%;\n}\n.ycn-aside-header__pane-container {\n display: flex;\n outline: none;\n overflow: visible;\n user-select: text;\n flex-direction: row;\n}\n.ycn-aside-header__content {\n width: calc(100% - var(--aside-header-size));\n z-index: 95;\n}\n.ycn-aside-header__collapse-button {\n --yc-button-background-color-hover: transparent;\n overflow: hidden;\n box-sizing: border-box;\n flex: none;\n width: 100%;\n height: 20px;\n border-top: 1px solid var(--aside-header-collapse-button-divider-line-color);\n margin-top: auto;\n}\n.ycn-aside-header__collapse-button:not(.ycn-aside-header__collapse-button_compact) .ycn-aside-header__collapse-icon {\n transform: rotate(180deg);\n}\n.ycn-aside-header__collapse-button .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-secondary);\n}\n.ycn-aside-header__collapse-button:hover .ycn-aside-header__collapse-icon {\n color: var(--yc-color-text-primary);\n}";
4088
+ styleInject(css_248z$4);
4082
4089
 
4083
- const b$4 = block('aside-header');
4090
+ const b$5 = block('aside-header');
4084
4091
  class AsideHeader extends React__default.Component {
4085
4092
  constructor() {
4086
4093
  super(...arguments);
4087
4094
  this.asideRef = React__default.createRef();
4088
4095
  this.renderFirstPane = (size) => {
4089
- const { dict, menuItems, panelItems, compact } = this.props;
4096
+ const { dict, menuItems, panelItems, compact, headerDecoration } = this.props;
4090
4097
  return (React__default.createElement(React__default.Fragment, null,
4091
- React__default.createElement("div", { className: b$4('aside'), style: { width: size } },
4092
- React__default.createElement("div", { className: b$4('aside-popup-anchor'), ref: this.asideRef }),
4093
- React__default.createElement("div", { className: b$4('aside-content') },
4098
+ React__default.createElement("div", { className: b$5('aside'), style: { width: size } },
4099
+ React__default.createElement("div", { className: b$5('aside-popup-anchor'), ref: this.asideRef }),
4100
+ React__default.createElement("div", { className: b$5('aside-content', { ['with-decoration']: headerDecoration }) },
4094
4101
  this.renderHeader(),
4095
- (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (React__default.createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick })) : (React__default.createElement("div", { className: b$4('menu-items') })),
4102
+ (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (React__default.createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick })) : (React__default.createElement("div", { className: b$5('menu-items') })),
4096
4103
  this.renderFooter(size),
4097
4104
  this.renderCollapseButton())),
4098
4105
  panelItems && this.renderPanels(size)));
4099
4106
  };
4100
4107
  this.renderSecondPane = (size) => {
4101
- return (React__default.createElement(Content, { size: size, renderContent: this.props.renderContent, className: b$4('content') }));
4108
+ return (React__default.createElement(Content, { size: size, renderContent: this.props.renderContent, className: b$5('content') }));
4102
4109
  };
4103
4110
  this.renderLogo = () => (React__default.createElement(Logo, Object.assign({}, this.props.logo, { compact: this.props.compact, onClick: this.onLogoClick })));
4104
- this.renderHeader = () => (React__default.createElement("div", { className: b$4('header') },
4111
+ this.renderHeader = () => (React__default.createElement("div", { className: b$5('header', { ['with-decoration']: this.props.headerDecoration }) },
4105
4112
  this.renderLogo(),
4106
4113
  React__default.createElement(CompositeBar, { items: this.props.subheaderItems, compact: this.props.compact, enableCollapsing: false, onItemClick: this.onItemClick }),
4107
- React__default.createElement(Icon, { data: headerDividerCollapsedIcon, className: b$4('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
4114
+ React__default.createElement(Icon, { data: headerDividerCollapsedIcon, className: b$5('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
4108
4115
  this.renderFooter = (size) => {
4109
4116
  const { compact, renderFooter } = this.props;
4110
- return (React__default.createElement("div", { className: b$4('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
4117
+ return (React__default.createElement("div", { className: b$5('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
4111
4118
  size,
4112
4119
  compact,
4113
4120
  asideRef: this.asideRef,
@@ -4115,14 +4122,14 @@ class AsideHeader extends React__default.Component {
4115
4122
  };
4116
4123
  this.renderPanels = (size) => {
4117
4124
  const { panelItems } = this.props;
4118
- return (React__default.createElement(Drawer, { className: b$4('panels'), onVeilClick: this.onCloseDrawer, onEscape: this.onCloseDrawer, style: { left: size } }, panelItems.map((item) => (React__default.createElement(DrawerItem, Object.assign({ key: item.id }, item))))));
4125
+ return (React__default.createElement(Drawer, { className: b$5('panels'), onVeilClick: this.onCloseDrawer, onEscape: this.onCloseDrawer, style: { left: size } }, panelItems.map((item) => (React__default.createElement(DrawerItem, Object.assign({ key: item.id }, item))))));
4119
4126
  };
4120
4127
  this.renderCollapseButton = () => {
4121
4128
  var _a;
4122
4129
  const { compact, dict } = this.props;
4123
4130
  const typeButton = compact ? Dict.ExpandButton : Dict.CollapseButton;
4124
- return (React__default.createElement(Button, { className: b$4('collapse-button', { compact }), view: "flat", onClick: this.onCollapseButtonClick, title: (_a = dict === null || dict === void 0 ? void 0 : dict[typeButton]) !== null && _a !== void 0 ? _a : defaultDict$1[typeButton] },
4125
- React__default.createElement(Icon, { data: controlMenuButtonIcon, className: b$4('collapse-icon'), width: "16", height: "10" })));
4131
+ return (React__default.createElement(Button, { className: b$5('collapse-button', { compact }), view: "flat", onClick: this.onCollapseButtonClick, title: (_a = dict === null || dict === void 0 ? void 0 : dict[typeButton]) !== null && _a !== void 0 ? _a : defaultDict$1[typeButton] },
4132
+ React__default.createElement(Icon, { data: controlMenuButtonIcon, className: b$5('collapse-icon'), width: "16", height: "10" })));
4126
4133
  };
4127
4134
  this.onCollapseButtonClick = () => {
4128
4135
  var _a, _b;
@@ -4146,8 +4153,8 @@ class AsideHeader extends React__default.Component {
4146
4153
  render() {
4147
4154
  const { className, compact } = this.props;
4148
4155
  const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
4149
- return (React__default.createElement("div", { className: b$4({ compact }, className) },
4150
- React__default.createElement("div", { className: b$4('pane-container') },
4156
+ return (React__default.createElement("div", { className: b$5({ compact }, className) },
4157
+ React__default.createElement("div", { className: b$5('pane-container') },
4151
4158
  this.renderFirstPane(size),
4152
4159
  this.renderSecondPane(size))));
4153
4160
  }
@@ -4156,6 +4163,7 @@ AsideHeader.defaultProps = {
4156
4163
  panelItems: [],
4157
4164
  subheaderItems: [],
4158
4165
  menuItems: [],
4166
+ headerDecoration: true,
4159
4167
  };
4160
4168
 
4161
4169
  /******************************************************************************
@@ -4185,13 +4193,13 @@ function __rest(s, e) {
4185
4193
  return t;
4186
4194
  }
4187
4195
 
4188
- var css_248z$2 = ".ycn-footer-item {\n width: 100%;\n height: 40px;\n}";
4189
- styleInject(css_248z$2);
4196
+ var css_248z$3 = ".ycn-footer-item {\n width: 100%;\n height: 40px;\n}";
4197
+ styleInject(css_248z$3);
4190
4198
 
4191
- const b$3 = block('footer-item');
4199
+ const b$4 = block('footer-item');
4192
4200
  const FooterItem = (_a) => {
4193
4201
  var { item } = _a, props = __rest(_a, ["item"]);
4194
- return (React__default.createElement(Item, Object.assign({}, props, { item: Object.assign({ iconSize: ASIDE_HEADER_FOOTER_ICON_SIZE }, item), className: b$3({ compact: props.compact }), onItemClick: item.onItemClick })));
4202
+ return (React__default.createElement(Item, Object.assign({}, props, { item: Object.assign({ iconSize: ASIDE_HEADER_FOOTER_ICON_SIZE }, item), className: b$4({ compact: props.compact }), onItemClick: item.onItemClick })));
4195
4203
  };
4196
4204
 
4197
4205
  /**
@@ -4785,25 +4793,25 @@ function escapeStringForRegExp(input) {
4785
4793
  return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
4786
4794
  }
4787
4795
 
4788
- const b$2 = block('settings-search');
4789
- function SettingsSearch({ className, onChange, debounce = 200, inputRef, placeholder, }) {
4796
+ const b$3 = block('settings-search');
4797
+ function SettingsSearch({ className, onChange, debounce = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
4790
4798
  const onChangeStable = useStableCallback(onChange);
4791
4799
  const handleUpdate = React__default.useCallback(debounce_1(onChangeStable, debounce), [debounce]);
4792
- return (React__default.createElement("div", { className: b$2(null, className) },
4793
- React__default.createElement(TextInput, { controlRef: inputRef, hasClear: true, autoFocus: true, placeholder: placeholder, onUpdate: handleUpdate })));
4800
+ return (React__default.createElement("div", { className: b$3(null, className) },
4801
+ React__default.createElement(TextInput, { controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate })));
4794
4802
  }
4795
4803
 
4796
- var css_248z$1 = ".ycn-settings-menu__group-heading {\n font-weight: var(--yc-text-accent-font-weight);\n display: inline-block;\n padding: 0 20px;\n margin-bottom: 12px;\n line-height: 18px;\n}\n.ycn-settings-menu__group + .ycn-settings-menu__group {\n margin-top: 24px;\n}\n.ycn-settings-menu__item {\n display: flex;\n align-items: center;\n height: 40px;\n padding: 0 20px;\n cursor: pointer;\n color: var(--yc-color-text-primary);\n}\n.ycn-settings-menu__item-icon {\n color: var(--yc-color-text-misc);\n margin-right: 5px;\n}\n.ycn-settings-menu__item:hover, .ycn-settings-menu__item_focused {\n background: var(--yc-color-base-simple-hover);\n}\n.ycn-settings-menu__item_selected {\n background: var(--yc-color-base-selection);\n}\n.ycn-settings-menu__item_selected:hover, .ycn-settings-menu__item_selected.ycn-settings-menu__item_focused {\n background: var(--yc-color-base-selection-hover);\n}\n.ycn-settings-menu__item_disabled {\n color: var(--yc-color-text-secondary);\n cursor: auto;\n}\n.ycn-settings-menu__item_disabled:hover {\n background: none;\n}\n.ycn-settings-menu__item_disabled .ycn-settings-menu__item-icon {\n color: var(--yc-color-base-misc-heavy);\n}\n.ycn-settings-menu__item_badge {\n position: relative;\n}\n.ycn-settings-menu__item_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: 9px;\n top: calc(50% - 3px);\n}";
4797
- styleInject(css_248z$1);
4804
+ var css_248z$2 = ".ycn-settings-menu__group-heading {\n font-weight: var(--yc-text-accent-font-weight);\n display: inline-block;\n padding: 0 20px;\n margin-bottom: 12px;\n line-height: 18px;\n}\n.ycn-settings-menu__group + .ycn-settings-menu__group {\n margin-top: 24px;\n}\n.ycn-settings-menu__item {\n display: flex;\n align-items: center;\n height: 40px;\n padding: 0 20px;\n cursor: pointer;\n color: var(--yc-color-text-primary);\n}\n.ycn-settings-menu__item-icon {\n color: var(--yc-color-text-misc);\n margin-right: 5px;\n}\n.ycn-settings-menu__item:hover, .ycn-settings-menu__item_focused {\n background: var(--yc-color-base-simple-hover);\n}\n.ycn-settings-menu__item_selected {\n background: var(--yc-color-base-selection);\n}\n.ycn-settings-menu__item_selected:hover, .ycn-settings-menu__item_selected.ycn-settings-menu__item_focused {\n background: var(--yc-color-base-selection-hover);\n}\n.ycn-settings-menu__item_disabled {\n color: var(--yc-color-text-secondary);\n cursor: auto;\n}\n.ycn-settings-menu__item_disabled:hover {\n background: none;\n}\n.ycn-settings-menu__item_disabled .ycn-settings-menu__item-icon {\n color: var(--yc-color-base-misc-heavy);\n}\n.ycn-settings-menu__item_badge {\n position: relative;\n}\n.ycn-settings-menu__item_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: 9px;\n top: calc(50% - 3px);\n}";
4805
+ styleInject(css_248z$2);
4798
4806
 
4799
- const b$1 = block('settings-menu');
4807
+ const b$2 = block('settings-menu');
4800
4808
  const SettingsMenu = React__default.forwardRef(
4801
4809
  // eslint-disable-next-line prefer-arrow-callback
4802
- function SettingsMenu({ items, onChange, activeItem }, ref) {
4803
- const [focusItem, setFocus] = React__default.useState();
4810
+ function SettingsMenu({ items, onChange, activeItemId }, ref) {
4811
+ const [focusItemId, setFocusId] = React__default.useState();
4804
4812
  const containerRef = React__default.useRef(null);
4805
4813
  const handleChange = useStableCallback(onChange);
4806
- const getFocused = useCurrent(focusItem);
4814
+ const getFocused = useCurrent(focusItemId);
4807
4815
  React__default.useImperativeHandle(ref, () => ({
4808
4816
  handleKeyDown(event) {
4809
4817
  if (!containerRef.current) {
@@ -4815,47 +4823,47 @@ function SettingsMenu({ items, onChange, activeItem }, ref) {
4815
4823
  return true;
4816
4824
  }
4817
4825
  else if (event.key === 'ArrowDown') {
4818
- setFocus(focusNext(containerRef.current, focused, 1));
4826
+ setFocusId(focusNext(containerRef.current, focused, 1));
4819
4827
  return true;
4820
4828
  }
4821
4829
  else if (event.key === 'ArrowUp') {
4822
- setFocus(focusNext(containerRef.current, focused, -1));
4830
+ setFocusId(focusNext(containerRef.current, focused, -1));
4823
4831
  return true;
4824
4832
  }
4825
4833
  return false;
4826
4834
  },
4827
4835
  clearFocus() {
4828
- setFocus(undefined);
4836
+ setFocusId(undefined);
4829
4837
  },
4830
4838
  }), [getFocused, handleChange]);
4831
- return (React__default.createElement("div", { ref: containerRef, className: b$1() }, items.map((firstLevelItem) => {
4839
+ return (React__default.createElement("div", { ref: containerRef, className: b$2() }, items.map((firstLevelItem) => {
4832
4840
  if ('groupTitle' in firstLevelItem) {
4833
- return (React__default.createElement("div", { key: firstLevelItem.groupTitle, className: b$1('group') },
4834
- React__default.createElement("span", { className: b$1('group-heading') }, firstLevelItem.groupTitle),
4841
+ return (React__default.createElement("div", { key: firstLevelItem.groupTitle, className: b$2('group') },
4842
+ React__default.createElement("span", { className: b$2('group-heading') }, firstLevelItem.groupTitle),
4835
4843
  firstLevelItem.items.map((item) => {
4836
- return renderMenuItem(item, onChange, activeItem, focusItem);
4844
+ return renderMenuItem(item, onChange, activeItemId, focusItemId);
4837
4845
  })));
4838
4846
  }
4839
- return renderMenuItem(firstLevelItem, onChange, activeItem, focusItem);
4847
+ return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);
4840
4848
  })));
4841
4849
  });
4842
- function renderMenuItem(item, onChange, activeItem, focusItem) {
4843
- return (React__default.createElement("span", { key: item.title, className: b$1('item', {
4844
- selected: activeItem === item.id,
4850
+ function renderMenuItem(item, onChange, activeItemId, focusItemId) {
4851
+ return (React__default.createElement("span", { key: item.title, className: b$2('item', {
4852
+ selected: activeItemId === item.id,
4845
4853
  disabled: item.disabled,
4846
- focused: focusItem === item.id,
4854
+ focused: focusItemId === item.id,
4847
4855
  badge: item.withBadge,
4848
4856
  }), onClick: () => {
4849
4857
  if (!item.disabled) {
4850
4858
  onChange(item.id);
4851
4859
  }
4852
4860
  }, "data-id": item.id },
4853
- item.icon ? React__default.createElement(Icon, Object.assign({ size: 16 }, item.icon, { className: b$1('item-icon') })) : undefined,
4861
+ item.icon ? React__default.createElement(Icon, Object.assign({ size: 16 }, item.icon, { className: b$2('item-icon') })) : undefined,
4854
4862
  React__default.createElement("span", null, item.title)));
4855
4863
  }
4856
4864
  function focusNext(container, focused, direction) {
4857
4865
  var _a;
4858
- const elements = container.querySelectorAll(`.${b$1('item')}:not(.${b$1('item')}_disabled)`);
4866
+ const elements = container.querySelectorAll(`.${b$2('item')}:not(.${b$2('item')}_disabled)`);
4859
4867
  if (elements.length === 0) {
4860
4868
  return undefined;
4861
4869
  }
@@ -4867,6 +4875,37 @@ function focusNext(container, focused, direction) {
4867
4875
  return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
4868
4876
  }
4869
4877
 
4878
+ var css_248z$1 = ".ycn-settings-menu-mobile.yc-tabs_direction_horizontal {\n overflow-x: auto;\n flex-wrap: nowrap;\n overscroll-behavior-x: none;\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n.ycn-settings-menu-mobile.yc-tabs_direction_horizontal::-webkit-scrollbar {\n display: none;\n}\n.ycn-settings-menu-mobile__item_badge {\n position: relative;\n}\n.ycn-settings-menu-mobile__item_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: -8px;\n top: 11px;\n}";
4879
+ styleInject(css_248z$1);
4880
+
4881
+ const b$1 = block('settings-menu-mobile');
4882
+ const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
4883
+ const ref = React__default.useRef(null);
4884
+ const tabItems = React__default.useMemo(() => {
4885
+ const tabItems = [];
4886
+ items.forEach((firstLevelItem) => {
4887
+ if ('groupTitle' in firstLevelItem) {
4888
+ tabItems.push(...firstLevelItem.items.map(({ id, title, disabled, withBadge }) => ({
4889
+ id,
4890
+ title,
4891
+ disabled,
4892
+ className: b$1('item', { badge: withBadge }),
4893
+ })));
4894
+ }
4895
+ else {
4896
+ const { id, title, disabled, withBadge } = firstLevelItem;
4897
+ tabItems.push({ id, title, disabled, className: b$1('item', { badge: withBadge }) });
4898
+ }
4899
+ });
4900
+ return tabItems;
4901
+ }, [items]);
4902
+ const handleTouchMove = (e) => {
4903
+ e.stopPropagation();
4904
+ };
4905
+ return (React__default.createElement("div", { ref: ref, onTouchMove: handleTouchMove },
4906
+ React__default.createElement(Tabs, { items: tabItems, className: b$1(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
4907
+ };
4908
+
4870
4909
  function getSettingsFromChildren(children, searchText = '') {
4871
4910
  // 'abc def fg' -> abc.*?cde.*?fg
4872
4911
  const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
@@ -4944,7 +4983,7 @@ function getSettingsPageFromChildren(children, filterRe) {
4944
4983
  page.hidden = hidden && page.hidden;
4945
4984
  }
4946
4985
  else {
4947
- const { title, header, withBadge } = element.props;
4986
+ const { title, header, withBadge, showTitle = true } = element.props;
4948
4987
  const { items, hidden } = getSettingsItemsFromChildren(element.props.children, filterRe);
4949
4988
  page.withBadge = withBadge || page.withBadge;
4950
4989
  page.hidden = hidden && page.hidden;
@@ -4954,6 +4993,7 @@ function getSettingsPageFromChildren(children, filterRe) {
4954
4993
  withBadge,
4955
4994
  items,
4956
4995
  hidden,
4996
+ showTitle,
4957
4997
  });
4958
4998
  }
4959
4999
  });
@@ -4987,7 +5027,7 @@ function getSettingsItemsFromChildren(children, filterRe) {
4987
5027
  return { items, hidden };
4988
5028
  }
4989
5029
 
4990
- var css_248z = ".ycn-settings {\n display: grid;\n grid-template-columns: 216px 1fr;\n width: 834px;\n height: 100%;\n}\n.ycn-settings_loading {\n grid-template-columns: auto;\n}\n.ycn-settings__loader {\n align-self: center;\n justify-self: center;\n}\n.ycn-settings__not-found {\n display: grid;\n align-items: center;\n justify-items: center;\n height: 100%;\n}\n.ycn-settings__menu {\n border-right: 1px solid var(--yc-color-line-generic);\n}\n.ycn-settings__heading {\n font-size: var(--yc-text-subheader-2-font-size);\n line-height: var(--yc-text-subheader-2-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n margin: 20px 20px 0;\n}\n.ycn-settings__search {\n margin: 12px 20px 16px;\n}\n.ycn-settings__page {\n padding: 20px;\n overflow-y: auto;\n}\n.ycn-settings__section-heading {\n font-size: var(--yc-text-subheader-2-font-size);\n line-height: var(--yc-text-subheader-2-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n margin: 0;\n}\n.ycn-settings__section-item {\n margin-top: 24px;\n}\n.ycn-settings__section + .ycn-settings__section {\n margin-top: 32px;\n}\n.ycn-settings__item {\n display: grid;\n grid-template-columns: 216px 1fr;\n justify-items: start;\n}\n.ycn-settings__item_align_top {\n align-items: start;\n}\n.ycn-settings__item_align_center {\n align-items: center;\n}\n.ycn-settings__item-heading_badge {\n position: relative;\n}\n.ycn-settings__item-heading_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: -8px;\n top: 1px;\n}\n.ycn-settings__found {\n font-weight: var(--yc-text-accent-font-weight);\n background: var(--yc-color-base-selection);\n}";
5030
+ var css_248z = ".ycn-settings {\n display: grid;\n grid-template-columns: 216px 1fr;\n width: 834px;\n height: 100%;\n}\n.ycn-settings_view_mobile {\n display: block;\n width: auto;\n height: calc(90vh - 56px);\n}\n.ycn-settings_view_mobile.ycn-settings_loading {\n text-align: center;\n}\n.ycn-settings_view_mobile .ycn-settings__loader {\n margin-top: 20px;\n}\n.ycn-settings_view_mobile .ycn-settings__search {\n padding: 0 20px;\n margin: 4px 0 16px;\n}\n.ycn-settings_view_mobile .ycn-settings__page {\n padding: 20px 20px;\n overflow-y: visible;\n}\n.ycn-settings_view_mobile .ycn-settings__tabs .yc-tabs__item:first-child {\n margin-left: 20px;\n}\n.ycn-settings_view_mobile .ycn-settings__tabs .yc-tabs__item:last-child {\n margin-right: 20px;\n}\n.ycn-settings_view_mobile .ycn-settings__section-heading {\n font-size: var(--yc-text-subheader-3-font-size);\n line-height: var(--yc-text-subheader-3-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n}\n.ycn-settings_view_mobile .ycn-settings__section-subheader {\n color: var(--yc-color-text-secondary);\n}\n.ycn-settings_view_mobile .ycn-settings__section-heading + .ycn-settings-subheader {\n margin-top: 8px;\n}\n.ycn-settings_view_mobile .ycn-settings__section-item {\n margin-top: 0;\n}\n.ycn-settings_view_mobile .ycn-settings__section-heading + .ycn-settings__section-item, .ycn-settings_view_mobile .ycn-settings__section-subheader + .ycn-settings__section-item {\n margin-top: 30px;\n}\n.ycn-settings_view_mobile .ycn-settings__section-item + .ycn-settings__section-item {\n margin-top: 22px;\n}\n.ycn-settings_view_mobile .ycn-settings__item:not(.ycn-settings_view_mobile .ycn-settings__item_mode_row) {\n grid-template-columns: 1fr;\n gap: 8px;\n}\n.ycn-settings_view_mobile .ycn-settings__item-heading {\n font-size: var(--yc-text-body-2-font-size);\n line-height: var(--yc-text-body-2-line-height);\n font-weight: var(--yc-text-body-font-weight);\n}\n.ycn-settings_view_mobile .ycn-settings__item-description {\n font-size: var(--yc-text-body-1-font-size);\n line-height: var(--yc-text-body-1-line-height);\n font-weight: var(--yc-text-body-font-weight);\n}\n.ycn-settings_view_mobile .ycn-settings__item_mode_row {\n grid-template-columns: 1fr auto;\n}\n.ycn-settings_view_mobile .ycn-settings__item_mode_row .ycn-settings__item-heading {\n padding-right: 20px;\n}\n.ycn-settings_view_mobile .ycn-settings__item-content {\n width: 100%;\n}\n.ycn-settings_loading {\n grid-template-columns: auto;\n}\n.ycn-settings__loader {\n align-self: center;\n justify-self: center;\n}\n.ycn-settings__not-found {\n display: grid;\n align-items: center;\n justify-items: center;\n height: 100%;\n}\n.ycn-settings__menu {\n border-right: 1px solid var(--yc-color-line-generic);\n}\n.ycn-settings__heading {\n font-size: var(--yc-text-subheader-2-font-size);\n line-height: var(--yc-text-subheader-2-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n margin: 20px 20px 0;\n}\n.ycn-settings__search {\n margin: 12px 20px 16px;\n}\n.ycn-settings__page {\n padding: 20px;\n overflow-y: auto;\n}\n.ycn-settings__section-heading {\n font-size: var(--yc-text-subheader-2-font-size);\n line-height: var(--yc-text-subheader-2-line-height);\n font-weight: var(--yc-text-subheader-font-weight);\n margin: 0;\n}\n.ycn-settings__section-item {\n margin-top: 24px;\n}\n.ycn-settings__section + .ycn-settings__section {\n margin-top: 32px;\n}\n.ycn-settings__item {\n display: grid;\n grid-template-columns: 216px 1fr;\n justify-items: start;\n}\n.ycn-settings__item_align_top {\n align-items: start;\n}\n.ycn-settings__item_align_center {\n align-items: center;\n}\n.ycn-settings__item-title_badge {\n position: relative;\n}\n.ycn-settings__item-title_badge::after {\n content: \"\";\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--yc-color-text-danger);\n position: absolute;\n right: -8px;\n top: 1px;\n}\n.ycn-settings__item-description {\n font-size: var(--yc-text-caption-2-font-size);\n line-height: var(--yc-text-caption-2-line-height);\n font-weight: var(--yc-text-caption-font-weight);\n display: block;\n margin-top: 2px;\n padding-right: 20px;\n color: var(--yc-color-text-secondary);\n}\n.ycn-settings__found {\n font-weight: var(--yc-text-accent-font-weight);\n background: var(--yc-color-base-selection);\n}";
4991
5031
  styleInject(css_248z);
4992
5032
 
4993
5033
  const b = block('settings');
@@ -4997,16 +5037,16 @@ const defaultDict = {
4997
5037
  not_found: 'No results found',
4998
5038
  };
4999
5039
  function Settings(_a) {
5000
- var { loading, renderLoading, children } = _a, props = __rest(_a, ["loading", "renderLoading", "children"]);
5040
+ var { loading, renderLoading, children, view = 'normal' } = _a, props = __rest(_a, ["loading", "renderLoading", "children", "view"]);
5001
5041
  if (loading) {
5002
- return (React__default.createElement("div", { className: b({ loading: true }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default.createElement(Loader, { className: b('loader'), size: "m" }))));
5042
+ return (React__default.createElement("div", { className: b({ loading: true, view }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default.createElement(Loader, { className: b('loader'), size: "m" }))));
5003
5043
  }
5004
- return React__default.createElement(SettingsContent, Object.assign({}, props), children);
5044
+ return (React__default.createElement(SettingsContent, Object.assign({ view: view }, props), children));
5005
5045
  }
5006
5046
  Settings.defaultProps = {
5007
5047
  dict: defaultDict,
5008
5048
  };
5009
- function SettingsContent({ initialPage, onPageChange, children, renderNotFound, dict, }) {
5049
+ function SettingsContent({ initialPage, onPageChange, children, renderNotFound, dict, view, }) {
5010
5050
  var _a, _b;
5011
5051
  const [search, setSearch] = React__default.useState('');
5012
5052
  const { menu, pages } = getSettingsFromChildren(children, search);
@@ -5014,6 +5054,7 @@ function SettingsContent({ initialPage, onPageChange, children, renderNotFound,
5014
5054
  const [selectedPage, setCurrentPage] = React__default.useState(initialPage && pageKeys.includes(initialPage) ? initialPage : undefined);
5015
5055
  const searchInputRef = React__default.useRef(null);
5016
5056
  const menuRef = React__default.useRef(null);
5057
+ const isMobile = view === 'mobile';
5017
5058
  React__default.useEffect(() => {
5018
5059
  var _a;
5019
5060
  (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
@@ -5052,12 +5093,14 @@ function SettingsContent({ initialPage, onPageChange, children, renderNotFound,
5052
5093
  return pages[activePage].sections
5053
5094
  .filter((section) => !section.hidden)
5054
5095
  .map((section) => (React__default.createElement("div", { key: section.title, className: b('section') },
5055
- React__default.createElement("h3", { className: b('section-heading') }, section.title),
5056
- section.header ? section.header : null,
5096
+ section.showTitle ? (React__default.createElement("h3", { className: b('section-heading') }, section.title)) : null,
5097
+ section.header ? (isMobile ? (React__default.createElement("div", { className: b('section-subheader') }, section.header)) : (section.header)) : null,
5057
5098
  section.items.map(({ hidden, title, element }) => hidden ? null : (React__default.createElement("div", { key: title, className: b('section-item') }, React__default.cloneElement(element, Object.assign(Object.assign({}, element.props), { title: search && title ? prepareTitle(title, search) : title }))))))));
5058
5099
  };
5059
- return (React__default.createElement("div", { className: b() },
5060
- React__default.createElement("div", { className: b('menu'), onClick: () => {
5100
+ return (React__default.createElement("div", { className: b({ view }) },
5101
+ isMobile ? (React__default.createElement(React__default.Fragment, null,
5102
+ React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, autoFocus: false, inputSize: 'l' }),
5103
+ React__default.createElement(SettingsMenuMobile, { items: menu, onChange: handlePageChange, activeItemId: activePage, className: b('tabs') }))) : (React__default.createElement("div", { className: b('menu'), onClick: () => {
5061
5104
  if (searchInputRef.current) {
5062
5105
  searchInputRef.current.focus();
5063
5106
  }
@@ -5069,8 +5112,8 @@ function SettingsContent({ initialPage, onPageChange, children, renderNotFound,
5069
5112
  }
5070
5113
  } },
5071
5114
  React__default.createElement("h2", { className: b('heading') }, dict === null || dict === void 0 ? void 0 : dict.heading_settings),
5072
- React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, placeholder: dict === null || dict === void 0 ? void 0 : dict.placeholder_search }),
5073
- React__default.createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItem: activePage })),
5115
+ React__default.createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, placeholder: dict === null || dict === void 0 ? void 0 : dict.placeholder_search, autoFocus: true }),
5116
+ React__default.createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItemId: activePage }))),
5074
5117
  React__default.createElement("div", { className: b('page') }, renderPageContent())));
5075
5118
  }
5076
5119
  Settings.Group = function SettingsGroup({ children }) {
@@ -5082,10 +5125,12 @@ Settings.Page = function SettingsPage({ children }) {
5082
5125
  Settings.Section = function SettingsSection({ children }) {
5083
5126
  return React__default.createElement(React__default.Fragment, null, children);
5084
5127
  };
5085
- Settings.Item = function SettingsItem({ title, children, align = 'center', withBadge, renderTitleComponent = identity_1, }) {
5086
- return (React__default.createElement("div", { className: b('item', { align }) },
5087
- React__default.createElement("label", { className: b('item-heading', { badge: withBadge }) }, renderTitleComponent(title)),
5088
- React__default.createElement("div", null, children)));
5128
+ Settings.Item = function SettingsItem({ title, children, align = 'center', withBadge, renderTitleComponent = identity_1, mode, description, }) {
5129
+ return (React__default.createElement("div", { className: b('item', { align, mode }) },
5130
+ React__default.createElement("label", { className: b('item-heading') },
5131
+ React__default.createElement("span", { className: b('item-title', { badge: withBadge }) }, renderTitleComponent(title)),
5132
+ description ? React__default.createElement("span", { className: b('item-description') }, description) : null),
5133
+ React__default.createElement("div", { className: b('item-content') }, children)));
5089
5134
  };
5090
5135
  function prepareTitle(string, search) {
5091
5136
  let temp = string.slice(0);
@@ -5111,5 +5156,5 @@ function prepareTitle(string, search) {
5111
5156
  return title;
5112
5157
  }
5113
5158
 
5114
- export { PublicActionBar as ActionBar, AsideHeader, Dict, Drawer, DrawerItem, FooterItem, Settings };
5159
+ export { PublicActionBar as ActionBar, AsideHeader, Dict, Drawer, DrawerItem, FooterItem, MobileHeaderDict, Settings };
5115
5160
  //# sourceMappingURL=index.js.map