@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
@@ -114,48 +114,48 @@ function styleInject(css, ref) {
114
114
  }
115
115
  }
116
116
 
117
- 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}";
118
- styleInject(css_248z$c);
117
+ 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}";
118
+ styleInject(css_248z$d);
119
119
 
120
- const b$d = block('action-bar-group');
120
+ const b$e = block('action-bar-group');
121
121
  const ActionBarGroup = ({ children, className, pull }) => {
122
- return (React__default["default"].createElement("ul", { className: b$d({ pull }, className), role: "group" }, children));
122
+ return (React__default["default"].createElement("ul", { className: b$e({ pull }, className), role: "group" }, children));
123
123
  };
124
124
  ActionBarGroup.displayName = 'ActionBar.Group';
125
125
 
126
- 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}";
127
- styleInject(css_248z$b);
126
+ 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}";
127
+ styleInject(css_248z$c);
128
128
 
129
- const b$c = block('action-bar-item');
129
+ const b$d = block('action-bar-item');
130
130
  const ActionBarItem = ({ children, className, pull, spacing = true }) => {
131
- return React__default["default"].createElement("li", { className: b$c({ pull, spacing }, className) }, children);
131
+ return React__default["default"].createElement("li", { className: b$d({ pull, spacing }, className) }, children);
132
132
  };
133
133
  ActionBarItem.displayName = 'ActionBar.Item';
134
134
 
135
- 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}";
136
- styleInject(css_248z$a);
135
+ 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}";
136
+ styleInject(css_248z$b);
137
137
 
138
- const b$b = block('action-bar-section');
138
+ const b$c = block('action-bar-section');
139
139
  const ActionBarSection = ({ children, type = 'primary' }) => {
140
- return React__default["default"].createElement("div", { className: b$b({ type }) }, children);
140
+ return React__default["default"].createElement("div", { className: b$c({ type }) }, children);
141
141
  };
142
142
  ActionBarSection.displayName = 'ActionBar.Section';
143
143
 
144
- 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}";
145
- styleInject(css_248z$9);
144
+ 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}";
145
+ styleInject(css_248z$a);
146
146
 
147
- const b$a = block('action-bar-separator');
147
+ const b$b = block('action-bar-separator');
148
148
  const ActionBarSeparator = () => {
149
- return React__default["default"].createElement("li", { role: "separator", className: b$a() });
149
+ return React__default["default"].createElement("li", { role: "separator", className: b$b() });
150
150
  };
151
151
  ActionBarSeparator.displayName = 'ActionBar.Separator';
152
152
 
153
- 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}";
154
- styleInject(css_248z$8);
153
+ 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}";
154
+ styleInject(css_248z$9);
155
155
 
156
- const b$9 = block('action-bar');
156
+ const b$a = block('action-bar');
157
157
  const ActionBar = ({ children, className, 'aria-label': ariaLabel }) => {
158
- return (React__default["default"].createElement("section", { className: b$9(null, className), "aria-label": ariaLabel }, children));
158
+ return (React__default["default"].createElement("section", { className: b$a(null, className), "aria-label": ariaLabel }, children));
159
159
  };
160
160
  ActionBar.displayName = 'ActionBar';
161
161
  const PublicActionBar = Object.assign(ActionBar, {
@@ -165,6 +165,11 @@ const PublicActionBar = Object.assign(ActionBar, {
165
165
  Separator: ActionBarSeparator,
166
166
  });
167
167
 
168
+ exports.MobileHeaderDict = void 0;
169
+ (function (MobileHeaderDict) {
170
+ MobileHeaderDict["CloseBurger"] = "button_close-burger";
171
+ MobileHeaderDict["OpenBurger"] = "button_open-burger";
172
+ })(exports.MobileHeaderDict || (exports.MobileHeaderDict = {}));
168
173
  exports.Dict = void 0;
169
174
  (function (Dict) {
170
175
  Dict["ExpandButton"] = "button_expand";
@@ -179,6 +184,8 @@ const defaultDict$1 = {
179
184
  [exports.Dict.CollapseButton]: 'Collapse',
180
185
  [exports.Dict.ExpandButton]: 'Expand',
181
186
  [exports.Dict.MoreButton]: 'More',
187
+ [exports.MobileHeaderDict.CloseBurger]: 'Close menu',
188
+ [exports.MobileHeaderDict.OpenBurger]: 'Open menu',
182
189
  };
183
190
 
184
191
  function _extends$4() {
@@ -3200,15 +3207,15 @@ SwitchTransition.defaultProps = {
3200
3207
  mode: modes.out
3201
3208
  };
3202
3209
 
3203
- 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}";
3204
- styleInject(css_248z$7);
3210
+ 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}";
3211
+ styleInject(css_248z$8);
3205
3212
 
3206
- const b$8 = block('drawer');
3213
+ const b$9 = block('drawer');
3207
3214
  const TIMEOUT = 300;
3208
- const DrawerItem = ({ visible, content, className }) => {
3215
+ const DrawerItem = ({ visible, content, direction, className }) => {
3209
3216
  const itemRef = React__default["default"].useRef(null);
3210
- return (React__default["default"].createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$8('item-transition'), nodeRef: itemRef },
3211
- React__default["default"].createElement("div", { ref: itemRef, className: b$8('item', className) }, content)));
3217
+ return (React__default["default"].createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$9('item-transition', { direction }), nodeRef: itemRef },
3218
+ React__default["default"].createElement("div", { ref: itemRef, className: b$9('item', { direction }, className) }, content)));
3212
3219
  };
3213
3220
  const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScrollBody = true, }) => {
3214
3221
  let someItemVisible = false;
@@ -3266,9 +3273,9 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
3266
3273
  const veilRef = React__default["default"].useRef(null);
3267
3274
  return (React__default["default"].createElement(Transition, { in: someItemVisible, timeout: { enter: 0, exit: TIMEOUT }, mountOnEnter: true, unmountOnExit: true, nodeRef: containerRef }, (state) => {
3268
3275
  const childrenVisible = someItemVisible && state === 'entered';
3269
- return (React__default["default"].createElement("div", { ref: containerRef, className: b$8(null, className), style: style },
3270
- React__default["default"].createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$8('veil-transition'), nodeRef: veilRef },
3271
- React__default["default"].createElement("div", { ref: veilRef, className: b$8('veil'), onClick: onVeilClick })),
3276
+ return (React__default["default"].createElement("div", { ref: containerRef, className: b$9(null, className), style: style },
3277
+ React__default["default"].createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$9('veil-transition'), nodeRef: veilRef },
3278
+ React__default["default"].createElement("div", { ref: veilRef, className: b$9('veil'), onClick: onVeilClick })),
3272
3279
  React__default["default"].Children.map(children, (child) => {
3273
3280
  const childElem = child;
3274
3281
  if (childElem.type === DrawerItem) {
@@ -3280,10 +3287,10 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
3280
3287
  }));
3281
3288
  };
3282
3289
 
3283
- 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}";
3284
- styleInject(css_248z$6);
3290
+ 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}";
3291
+ styleInject(css_248z$7);
3285
3292
 
3286
- const b$7 = block('logo');
3293
+ const b$8 = block('logo');
3287
3294
  const Logo = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href = '/', wrapper, onClick, }) => {
3288
3295
  const hasClickHandler = typeof onClick === 'function';
3289
3296
  const hasWrapper = typeof wrapper === 'function';
@@ -3301,18 +3308,18 @@ const Logo = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, text
3301
3308
  else if (icon) {
3302
3309
  buttonIcon = React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: iconClassName });
3303
3310
  }
3304
- const button = (React__default["default"].createElement(uikit.Button, Object.assign({ view: "flat", size: "l", className: b$7('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3311
+ const button = (React__default["default"].createElement(uikit.Button, Object.assign({ view: "flat", size: "l", className: b$8('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3305
3312
  let logo;
3306
3313
  if (typeof text === 'function') {
3307
3314
  logo = text();
3308
3315
  }
3309
3316
  else {
3310
- logo = (React__default["default"].createElement("div", { className: b$7('logo'), style: { fontSize: textSize } }, text));
3317
+ logo = (React__default["default"].createElement("div", { className: b$8('logo'), style: { fontSize: textSize } }, text));
3311
3318
  }
3312
- return (React__default["default"].createElement("div", { className: b$7() },
3313
- React__default["default"].createElement("div", { className: b$7('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3319
+ return (React__default["default"].createElement("div", { className: b$8() },
3320
+ React__default["default"].createElement("div", { className: b$8('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3314
3321
  !compact &&
3315
- (hasWrapper ? (React__default["default"].createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default["default"].createElement("a", Object.assign({}, linkProps, { className: b$7('logo-link'), onClick: onClick }), logo)))));
3322
+ (hasWrapper ? (React__default["default"].createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default["default"].createElement("a", Object.assign({}, linkProps, { className: b$8('logo-link'), onClick: onClick }), logo)))));
3316
3323
  };
3317
3324
 
3318
3325
  var classCallCheck = function (instance, Constructor) {
@@ -3844,16 +3851,16 @@ function getItemsMinHeight(items) {
3844
3851
  (pinnedItems.length === items.length ? 0 : ITEM_HEIGHT));
3845
3852
  }
3846
3853
 
3847
- 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}";
3848
- styleInject(css_248z$5);
3854
+ 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}";
3855
+ styleInject(css_248z$6);
3849
3856
 
3850
- const b$6 = block('composite-bar-item');
3857
+ const b$7 = block('composite-bar-item');
3851
3858
  function renderItemTitle(item) {
3852
- let titleNode = React__default["default"].createElement("div", { className: b$6('title-text') }, item.title);
3859
+ let titleNode = React__default["default"].createElement("div", { className: b$7('title-text') }, item.title);
3853
3860
  if (item.rightAdornment) {
3854
3861
  titleNode = (React__default["default"].createElement(React__default["default"].Fragment, null,
3855
3862
  titleNode,
3856
- React__default["default"].createElement("div", { className: b$6('title-adornment') }, item.rightAdornment)));
3863
+ React__default["default"].createElement("div", { className: b$7('title-adornment') }, item.rightAdornment)));
3857
3864
  }
3858
3865
  return titleNode;
3859
3866
  }
@@ -3862,7 +3869,7 @@ const defaultPopupOffset = [-20, 8];
3862
3869
  const Item = (props) => {
3863
3870
  const { item, compact, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, renderPopupContent, onClosePopup, onItemClick, } = props;
3864
3871
  if (item.type === 'divider') {
3865
- return React__default["default"].createElement("div", { className: b$6('menu-divider') });
3872
+ return React__default["default"].createElement("div", { className: b$7('menu-divider') });
3866
3873
  }
3867
3874
  const [open, toggleOpen] = React__default["default"].useState(false);
3868
3875
  const ref = React__default["default"].useRef(null);
@@ -3883,7 +3890,7 @@ const Item = (props) => {
3883
3890
  onClosePopup === null || onClosePopup === void 0 ? void 0 : onClosePopup();
3884
3891
  }, [onClosePopup]);
3885
3892
  const makeNode = ({ icon: iconEl, title: titleEl }) => {
3886
- const createdNode = (React__default["default"].createElement("div", { className: b$6({ type, current, compact }, className), ref: ref, onClick: () => {
3893
+ const createdNode = (React__default["default"].createElement("div", { className: b$7({ type, current, compact }, className), ref: ref, onClick: () => {
3887
3894
  if (collapsedItem) {
3888
3895
  /**
3889
3896
  * If we call onItemClick for collapsedItem then:
@@ -3904,13 +3911,13 @@ const Item = (props) => {
3904
3911
  onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave();
3905
3912
  }
3906
3913
  } },
3907
- React__default["default"].createElement("div", { className: b$6('icon-place') }, compact ? (React__default["default"].createElement(uikit.Tooltip, { content: tooltipText, disabled: !enableTooltip || (collapsedItem && open), placement: "right", className: b$6('icon-tooltip', { 'item-type': type }) },
3908
- React__default["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)),
3909
- React__default["default"].createElement("div", { className: b$6('title'), title: typeof item.title === 'string' ? item.title : undefined }, titleEl),
3910
- renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default["default"].createElement(uikit.Popup, { className: b$6('popup'), open: popupVisible, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
3911
- return item.link ? (React__default["default"].createElement("a", { href: item.link, className: b$6('link') }, createdNode)) : (createdNode);
3914
+ React__default["default"].createElement("div", { className: b$7('icon-place') }, compact ? (React__default["default"].createElement(uikit.Tooltip, { content: tooltipText, disabled: !enableTooltip || (collapsedItem && open), placement: "right", className: b$7('icon-tooltip', { 'item-type': type }) },
3915
+ React__default["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)),
3916
+ React__default["default"].createElement("div", { className: b$7('title'), title: typeof item.title === 'string' ? item.title : undefined }, titleEl),
3917
+ renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default["default"].createElement(uikit.Popup, { className: b$7('popup'), open: popupVisible, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
3918
+ return item.link ? (React__default["default"].createElement("a", { href: item.link, className: b$7('link') }, createdNode)) : (createdNode);
3912
3919
  };
3913
- const iconNode = icon ? React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b$6('icon') }) : null;
3920
+ const iconNode = icon ? React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: b$7('icon') }) : null;
3914
3921
  const titleNode = renderItemTitle(item);
3915
3922
  const params = { icon: iconNode, title: titleNode };
3916
3923
  let node;
@@ -3928,13 +3935,13 @@ const Item = (props) => {
3928
3935
  Item.displayName = 'Item';
3929
3936
  function CollapsedPopup({ compact, onItemClick, collapseItems, anchorRef, onClose, }) {
3930
3937
  return (collapseItems === null || collapseItems === void 0 ? void 0 : collapseItems.length) ? (React__default["default"].createElement(uikit.Popup, { placement: POPUP_PLACEMENT, open: true, anchorRef: anchorRef, onClose: onClose },
3931
- React__default["default"].createElement("div", { className: b$6('collapse-items-popup-content') },
3932
- React__default["default"].createElement(uikit.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) => {
3938
+ React__default["default"].createElement("div", { className: b$7('collapse-items-popup-content') },
3939
+ React__default["default"].createElement(uikit.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) => {
3933
3940
  const makeCollapseNode = ({ title: titleEl }) => {
3934
- const res = (React__default["default"].createElement("div", { className: b$6('collapse-item'), onClick: () => {
3941
+ const res = (React__default["default"].createElement("div", { className: b$7('collapse-item'), onClick: () => {
3935
3942
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(collapseItem, true);
3936
3943
  } }, titleEl));
3937
- return collapseItem.link ? (React__default["default"].createElement("a", { href: collapseItem.link, className: b$6('link') }, res)) : (res);
3944
+ return collapseItem.link ? (React__default["default"].createElement("a", { href: collapseItem.link, className: b$7('link') }, res)) : (res);
3938
3945
  };
3939
3946
  const titleNode = renderItemTitle(collapseItem);
3940
3947
  const params = { title: titleNode };
@@ -3964,10 +3971,10 @@ var SvgDots = function SvgDots(props) {
3964
3971
  };
3965
3972
  var dotsIcon = SvgDots;
3966
3973
 
3967
- 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}";
3968
- styleInject(css_248z$4);
3974
+ 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}";
3975
+ styleInject(css_248z$5);
3969
3976
 
3970
- const b$5 = block('composite-bar');
3977
+ const b$6 = block('composite-bar');
3971
3978
  class CompositeBar extends React__default["default"].Component {
3972
3979
  constructor() {
3973
3980
  super(...arguments);
@@ -3982,10 +3989,10 @@ class CompositeBar extends React__default["default"].Component {
3982
3989
  return null;
3983
3990
  }
3984
3991
  if (!enableCollapsing) {
3985
- return React__default["default"].createElement("div", { className: b$5() }, this.renderMenu());
3992
+ return React__default["default"].createElement("div", { className: b$6() }, this.renderMenu());
3986
3993
  }
3987
3994
  const minHeight = getItemsMinHeight(items);
3988
- return (React__default["default"].createElement("div", { className: b$5({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default["default"].createElement(AutoSizer, null, ({ width, height }) => {
3995
+ return (React__default["default"].createElement("div", { className: b$6({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default["default"].createElement(AutoSizer, null, ({ width, height }) => {
3989
3996
  const style = {
3990
3997
  width,
3991
3998
  height,
@@ -3996,7 +4003,7 @@ class CompositeBar extends React__default["default"].Component {
3996
4003
  renderAutosizeMenu(height) {
3997
4004
  const { compact, onItemClick } = this.props;
3998
4005
  const { listItems, collapseItems } = this.getAutosizeListItems(height);
3999
- return (React__default["default"].createElement(uikit.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["default"].createElement(Item, { item: item, onMouseLeave: () => {
4006
+ return (React__default["default"].createElement(uikit.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["default"].createElement(Item, { item: item, onMouseLeave: () => {
4000
4007
  var _a;
4001
4008
  if (compact) {
4002
4009
  (_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
@@ -4005,7 +4012,7 @@ class CompositeBar extends React__default["default"].Component {
4005
4012
  }
4006
4013
  renderMenu() {
4007
4014
  const { items, onItemClick, compact } = this.props;
4008
- return (React__default["default"].createElement(uikit.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["default"].createElement(Item, { item: item, onMouseLeave: () => {
4015
+ return (React__default["default"].createElement(uikit.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["default"].createElement(Item, { item: item, onMouseLeave: () => {
4009
4016
  var _a;
4010
4017
  if (compact) {
4011
4018
  (_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
@@ -4070,8 +4077,8 @@ const RenderContent = React__default["default"].memo(({ renderContent, size }) =
4070
4077
  return React__default["default"].createElement(React__default["default"].Fragment, null, renderContent({ size }));
4071
4078
  });
4072
4079
  RenderContent.displayName = 'RenderContent';
4073
- const Content = ({ size, className, renderContent }) => {
4074
- return (React__default["default"].createElement("div", { className: className, style: Object.assign({}, { '--aside-header-size': `${size}px` }) }, typeof renderContent === 'function' && (React__default["default"].createElement(RenderContent, { size: size, renderContent: renderContent }))));
4080
+ const Content = ({ size, className, cssSizeVariableName = '--aside-header-size', renderContent, }) => {
4081
+ return (React__default["default"].createElement("div", { className: className, style: Object.assign({}, { [cssSizeVariableName]: `${size}px` }) }, typeof renderContent === 'function' && (React__default["default"].createElement(RenderContent, { size: size, renderContent: renderContent }))));
4075
4082
  };
4076
4083
 
4077
4084
  var _path$1;
@@ -4104,37 +4111,37 @@ var SvgDividerCollapsed = function SvgDividerCollapsed(props) {
4104
4111
  };
4105
4112
  var headerDividerCollapsedIcon = SvgDividerCollapsed;
4106
4113
 
4107
- 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}";
4108
- styleInject(css_248z$3);
4114
+ 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}";
4115
+ styleInject(css_248z$4);
4109
4116
 
4110
- const b$4 = block('aside-header');
4117
+ const b$5 = block('aside-header');
4111
4118
  class AsideHeader extends React__default["default"].Component {
4112
4119
  constructor() {
4113
4120
  super(...arguments);
4114
4121
  this.asideRef = React__default["default"].createRef();
4115
4122
  this.renderFirstPane = (size) => {
4116
- const { dict, menuItems, panelItems, compact } = this.props;
4123
+ const { dict, menuItems, panelItems, compact, headerDecoration } = this.props;
4117
4124
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
4118
- React__default["default"].createElement("div", { className: b$4('aside'), style: { width: size } },
4119
- React__default["default"].createElement("div", { className: b$4('aside-popup-anchor'), ref: this.asideRef }),
4120
- React__default["default"].createElement("div", { className: b$4('aside-content') },
4125
+ React__default["default"].createElement("div", { className: b$5('aside'), style: { width: size } },
4126
+ React__default["default"].createElement("div", { className: b$5('aside-popup-anchor'), ref: this.asideRef }),
4127
+ React__default["default"].createElement("div", { className: b$5('aside-content', { ['with-decoration']: headerDecoration }) },
4121
4128
  this.renderHeader(),
4122
- (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (React__default["default"].createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick })) : (React__default["default"].createElement("div", { className: b$4('menu-items') })),
4129
+ (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (React__default["default"].createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick })) : (React__default["default"].createElement("div", { className: b$5('menu-items') })),
4123
4130
  this.renderFooter(size),
4124
4131
  this.renderCollapseButton())),
4125
4132
  panelItems && this.renderPanels(size)));
4126
4133
  };
4127
4134
  this.renderSecondPane = (size) => {
4128
- return (React__default["default"].createElement(Content, { size: size, renderContent: this.props.renderContent, className: b$4('content') }));
4135
+ return (React__default["default"].createElement(Content, { size: size, renderContent: this.props.renderContent, className: b$5('content') }));
4129
4136
  };
4130
4137
  this.renderLogo = () => (React__default["default"].createElement(Logo, Object.assign({}, this.props.logo, { compact: this.props.compact, onClick: this.onLogoClick })));
4131
- this.renderHeader = () => (React__default["default"].createElement("div", { className: b$4('header') },
4138
+ this.renderHeader = () => (React__default["default"].createElement("div", { className: b$5('header', { ['with-decoration']: this.props.headerDecoration }) },
4132
4139
  this.renderLogo(),
4133
4140
  React__default["default"].createElement(CompositeBar, { items: this.props.subheaderItems, compact: this.props.compact, enableCollapsing: false, onItemClick: this.onItemClick }),
4134
- React__default["default"].createElement(uikit.Icon, { data: headerDividerCollapsedIcon, className: b$4('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
4141
+ React__default["default"].createElement(uikit.Icon, { data: headerDividerCollapsedIcon, className: b$5('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: "29" })));
4135
4142
  this.renderFooter = (size) => {
4136
4143
  const { compact, renderFooter } = this.props;
4137
- return (React__default["default"].createElement("div", { className: b$4('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
4144
+ return (React__default["default"].createElement("div", { className: b$5('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
4138
4145
  size,
4139
4146
  compact,
4140
4147
  asideRef: this.asideRef,
@@ -4142,14 +4149,14 @@ class AsideHeader extends React__default["default"].Component {
4142
4149
  };
4143
4150
  this.renderPanels = (size) => {
4144
4151
  const { panelItems } = this.props;
4145
- return (React__default["default"].createElement(Drawer, { className: b$4('panels'), onVeilClick: this.onCloseDrawer, onEscape: this.onCloseDrawer, style: { left: size } }, panelItems.map((item) => (React__default["default"].createElement(DrawerItem, Object.assign({ key: item.id }, item))))));
4152
+ return (React__default["default"].createElement(Drawer, { className: b$5('panels'), onVeilClick: this.onCloseDrawer, onEscape: this.onCloseDrawer, style: { left: size } }, panelItems.map((item) => (React__default["default"].createElement(DrawerItem, Object.assign({ key: item.id }, item))))));
4146
4153
  };
4147
4154
  this.renderCollapseButton = () => {
4148
4155
  var _a;
4149
4156
  const { compact, dict } = this.props;
4150
4157
  const typeButton = compact ? exports.Dict.ExpandButton : exports.Dict.CollapseButton;
4151
- return (React__default["default"].createElement(uikit.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] },
4152
- React__default["default"].createElement(uikit.Icon, { data: controlMenuButtonIcon, className: b$4('collapse-icon'), width: "16", height: "10" })));
4158
+ return (React__default["default"].createElement(uikit.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] },
4159
+ React__default["default"].createElement(uikit.Icon, { data: controlMenuButtonIcon, className: b$5('collapse-icon'), width: "16", height: "10" })));
4153
4160
  };
4154
4161
  this.onCollapseButtonClick = () => {
4155
4162
  var _a, _b;
@@ -4173,8 +4180,8 @@ class AsideHeader extends React__default["default"].Component {
4173
4180
  render() {
4174
4181
  const { className, compact } = this.props;
4175
4182
  const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
4176
- return (React__default["default"].createElement("div", { className: b$4({ compact }, className) },
4177
- React__default["default"].createElement("div", { className: b$4('pane-container') },
4183
+ return (React__default["default"].createElement("div", { className: b$5({ compact }, className) },
4184
+ React__default["default"].createElement("div", { className: b$5('pane-container') },
4178
4185
  this.renderFirstPane(size),
4179
4186
  this.renderSecondPane(size))));
4180
4187
  }
@@ -4183,6 +4190,7 @@ AsideHeader.defaultProps = {
4183
4190
  panelItems: [],
4184
4191
  subheaderItems: [],
4185
4192
  menuItems: [],
4193
+ headerDecoration: true,
4186
4194
  };
4187
4195
 
4188
4196
  /******************************************************************************
@@ -4212,13 +4220,13 @@ function __rest(s, e) {
4212
4220
  return t;
4213
4221
  }
4214
4222
 
4215
- var css_248z$2 = ".ycn-footer-item {\n width: 100%;\n height: 40px;\n}";
4216
- styleInject(css_248z$2);
4223
+ var css_248z$3 = ".ycn-footer-item {\n width: 100%;\n height: 40px;\n}";
4224
+ styleInject(css_248z$3);
4217
4225
 
4218
- const b$3 = block('footer-item');
4226
+ const b$4 = block('footer-item');
4219
4227
  const FooterItem = (_a) => {
4220
4228
  var { item } = _a, props = __rest(_a, ["item"]);
4221
- return (React__default["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 })));
4229
+ return (React__default["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 })));
4222
4230
  };
4223
4231
 
4224
4232
  /**
@@ -4812,25 +4820,25 @@ function escapeStringForRegExp(input) {
4812
4820
  return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
4813
4821
  }
4814
4822
 
4815
- const b$2 = block('settings-search');
4816
- function SettingsSearch({ className, onChange, debounce = 200, inputRef, placeholder, }) {
4823
+ const b$3 = block('settings-search');
4824
+ function SettingsSearch({ className, onChange, debounce = 200, inputRef, inputSize, placeholder, autoFocus = true, }) {
4817
4825
  const onChangeStable = useStableCallback(onChange);
4818
4826
  const handleUpdate = React__default["default"].useCallback(debounce_1(onChangeStable, debounce), [debounce]);
4819
- return (React__default["default"].createElement("div", { className: b$2(null, className) },
4820
- React__default["default"].createElement(uikit.TextInput, { controlRef: inputRef, hasClear: true, autoFocus: true, placeholder: placeholder, onUpdate: handleUpdate })));
4827
+ return (React__default["default"].createElement("div", { className: b$3(null, className) },
4828
+ React__default["default"].createElement(uikit.TextInput, { controlRef: inputRef, hasClear: true, autoFocus: autoFocus, size: inputSize, placeholder: placeholder, onUpdate: handleUpdate })));
4821
4829
  }
4822
4830
 
4823
- 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}";
4824
- styleInject(css_248z$1);
4831
+ 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}";
4832
+ styleInject(css_248z$2);
4825
4833
 
4826
- const b$1 = block('settings-menu');
4834
+ const b$2 = block('settings-menu');
4827
4835
  const SettingsMenu = React__default["default"].forwardRef(
4828
4836
  // eslint-disable-next-line prefer-arrow-callback
4829
- function SettingsMenu({ items, onChange, activeItem }, ref) {
4830
- const [focusItem, setFocus] = React__default["default"].useState();
4837
+ function SettingsMenu({ items, onChange, activeItemId }, ref) {
4838
+ const [focusItemId, setFocusId] = React__default["default"].useState();
4831
4839
  const containerRef = React__default["default"].useRef(null);
4832
4840
  const handleChange = useStableCallback(onChange);
4833
- const getFocused = useCurrent(focusItem);
4841
+ const getFocused = useCurrent(focusItemId);
4834
4842
  React__default["default"].useImperativeHandle(ref, () => ({
4835
4843
  handleKeyDown(event) {
4836
4844
  if (!containerRef.current) {
@@ -4842,47 +4850,47 @@ function SettingsMenu({ items, onChange, activeItem }, ref) {
4842
4850
  return true;
4843
4851
  }
4844
4852
  else if (event.key === 'ArrowDown') {
4845
- setFocus(focusNext(containerRef.current, focused, 1));
4853
+ setFocusId(focusNext(containerRef.current, focused, 1));
4846
4854
  return true;
4847
4855
  }
4848
4856
  else if (event.key === 'ArrowUp') {
4849
- setFocus(focusNext(containerRef.current, focused, -1));
4857
+ setFocusId(focusNext(containerRef.current, focused, -1));
4850
4858
  return true;
4851
4859
  }
4852
4860
  return false;
4853
4861
  },
4854
4862
  clearFocus() {
4855
- setFocus(undefined);
4863
+ setFocusId(undefined);
4856
4864
  },
4857
4865
  }), [getFocused, handleChange]);
4858
- return (React__default["default"].createElement("div", { ref: containerRef, className: b$1() }, items.map((firstLevelItem) => {
4866
+ return (React__default["default"].createElement("div", { ref: containerRef, className: b$2() }, items.map((firstLevelItem) => {
4859
4867
  if ('groupTitle' in firstLevelItem) {
4860
- return (React__default["default"].createElement("div", { key: firstLevelItem.groupTitle, className: b$1('group') },
4861
- React__default["default"].createElement("span", { className: b$1('group-heading') }, firstLevelItem.groupTitle),
4868
+ return (React__default["default"].createElement("div", { key: firstLevelItem.groupTitle, className: b$2('group') },
4869
+ React__default["default"].createElement("span", { className: b$2('group-heading') }, firstLevelItem.groupTitle),
4862
4870
  firstLevelItem.items.map((item) => {
4863
- return renderMenuItem(item, onChange, activeItem, focusItem);
4871
+ return renderMenuItem(item, onChange, activeItemId, focusItemId);
4864
4872
  })));
4865
4873
  }
4866
- return renderMenuItem(firstLevelItem, onChange, activeItem, focusItem);
4874
+ return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);
4867
4875
  })));
4868
4876
  });
4869
- function renderMenuItem(item, onChange, activeItem, focusItem) {
4870
- return (React__default["default"].createElement("span", { key: item.title, className: b$1('item', {
4871
- selected: activeItem === item.id,
4877
+ function renderMenuItem(item, onChange, activeItemId, focusItemId) {
4878
+ return (React__default["default"].createElement("span", { key: item.title, className: b$2('item', {
4879
+ selected: activeItemId === item.id,
4872
4880
  disabled: item.disabled,
4873
- focused: focusItem === item.id,
4881
+ focused: focusItemId === item.id,
4874
4882
  badge: item.withBadge,
4875
4883
  }), onClick: () => {
4876
4884
  if (!item.disabled) {
4877
4885
  onChange(item.id);
4878
4886
  }
4879
4887
  }, "data-id": item.id },
4880
- item.icon ? React__default["default"].createElement(uikit.Icon, Object.assign({ size: 16 }, item.icon, { className: b$1('item-icon') })) : undefined,
4888
+ item.icon ? React__default["default"].createElement(uikit.Icon, Object.assign({ size: 16 }, item.icon, { className: b$2('item-icon') })) : undefined,
4881
4889
  React__default["default"].createElement("span", null, item.title)));
4882
4890
  }
4883
4891
  function focusNext(container, focused, direction) {
4884
4892
  var _a;
4885
- const elements = container.querySelectorAll(`.${b$1('item')}:not(.${b$1('item')}_disabled)`);
4893
+ const elements = container.querySelectorAll(`.${b$2('item')}:not(.${b$2('item')}_disabled)`);
4886
4894
  if (elements.length === 0) {
4887
4895
  return undefined;
4888
4896
  }
@@ -4894,6 +4902,37 @@ function focusNext(container, focused, direction) {
4894
4902
  return (_a = elements[currentIndex].getAttribute('data-id')) !== null && _a !== void 0 ? _a : undefined;
4895
4903
  }
4896
4904
 
4905
+ 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}";
4906
+ styleInject(css_248z$1);
4907
+
4908
+ const b$1 = block('settings-menu-mobile');
4909
+ const SettingsMenuMobile = ({ items, onChange, activeItemId, className, }) => {
4910
+ const ref = React__default["default"].useRef(null);
4911
+ const tabItems = React__default["default"].useMemo(() => {
4912
+ const tabItems = [];
4913
+ items.forEach((firstLevelItem) => {
4914
+ if ('groupTitle' in firstLevelItem) {
4915
+ tabItems.push(...firstLevelItem.items.map(({ id, title, disabled, withBadge }) => ({
4916
+ id,
4917
+ title,
4918
+ disabled,
4919
+ className: b$1('item', { badge: withBadge }),
4920
+ })));
4921
+ }
4922
+ else {
4923
+ const { id, title, disabled, withBadge } = firstLevelItem;
4924
+ tabItems.push({ id, title, disabled, className: b$1('item', { badge: withBadge }) });
4925
+ }
4926
+ });
4927
+ return tabItems;
4928
+ }, [items]);
4929
+ const handleTouchMove = (e) => {
4930
+ e.stopPropagation();
4931
+ };
4932
+ return (React__default["default"].createElement("div", { ref: ref, onTouchMove: handleTouchMove },
4933
+ React__default["default"].createElement(uikit.Tabs, { items: tabItems, className: b$1(null, className), size: "l", activeTab: activeItemId, onSelectTab: onChange })));
4934
+ };
4935
+
4897
4936
  function getSettingsFromChildren(children, searchText = '') {
4898
4937
  // 'abc def fg' -> abc.*?cde.*?fg
4899
4938
  const preparedFilter = escapeStringForRegExp(searchText).replace(/\s+/g, '.*?');
@@ -4971,7 +5010,7 @@ function getSettingsPageFromChildren(children, filterRe) {
4971
5010
  page.hidden = hidden && page.hidden;
4972
5011
  }
4973
5012
  else {
4974
- const { title, header, withBadge } = element.props;
5013
+ const { title, header, withBadge, showTitle = true } = element.props;
4975
5014
  const { items, hidden } = getSettingsItemsFromChildren(element.props.children, filterRe);
4976
5015
  page.withBadge = withBadge || page.withBadge;
4977
5016
  page.hidden = hidden && page.hidden;
@@ -4981,6 +5020,7 @@ function getSettingsPageFromChildren(children, filterRe) {
4981
5020
  withBadge,
4982
5021
  items,
4983
5022
  hidden,
5023
+ showTitle,
4984
5024
  });
4985
5025
  }
4986
5026
  });
@@ -5014,7 +5054,7 @@ function getSettingsItemsFromChildren(children, filterRe) {
5014
5054
  return { items, hidden };
5015
5055
  }
5016
5056
 
5017
- 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}";
5057
+ 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}";
5018
5058
  styleInject(css_248z);
5019
5059
 
5020
5060
  const b = block('settings');
@@ -5024,16 +5064,16 @@ const defaultDict = {
5024
5064
  not_found: 'No results found',
5025
5065
  };
5026
5066
  function Settings(_a) {
5027
- var { loading, renderLoading, children } = _a, props = __rest(_a, ["loading", "renderLoading", "children"]);
5067
+ var { loading, renderLoading, children, view = 'normal' } = _a, props = __rest(_a, ["loading", "renderLoading", "children", "view"]);
5028
5068
  if (loading) {
5029
- return (React__default["default"].createElement("div", { className: b({ loading: true }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default["default"].createElement(uikit.Loader, { className: b('loader'), size: "m" }))));
5069
+ return (React__default["default"].createElement("div", { className: b({ loading: true, view }) }, typeof renderLoading === 'function' ? (renderLoading()) : (React__default["default"].createElement(uikit.Loader, { className: b('loader'), size: "m" }))));
5030
5070
  }
5031
- return React__default["default"].createElement(SettingsContent, Object.assign({}, props), children);
5071
+ return (React__default["default"].createElement(SettingsContent, Object.assign({ view: view }, props), children));
5032
5072
  }
5033
5073
  Settings.defaultProps = {
5034
5074
  dict: defaultDict,
5035
5075
  };
5036
- function SettingsContent({ initialPage, onPageChange, children, renderNotFound, dict, }) {
5076
+ function SettingsContent({ initialPage, onPageChange, children, renderNotFound, dict, view, }) {
5037
5077
  var _a, _b;
5038
5078
  const [search, setSearch] = React__default["default"].useState('');
5039
5079
  const { menu, pages } = getSettingsFromChildren(children, search);
@@ -5041,6 +5081,7 @@ function SettingsContent({ initialPage, onPageChange, children, renderNotFound,
5041
5081
  const [selectedPage, setCurrentPage] = React__default["default"].useState(initialPage && pageKeys.includes(initialPage) ? initialPage : undefined);
5042
5082
  const searchInputRef = React__default["default"].useRef(null);
5043
5083
  const menuRef = React__default["default"].useRef(null);
5084
+ const isMobile = view === 'mobile';
5044
5085
  React__default["default"].useEffect(() => {
5045
5086
  var _a;
5046
5087
  (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.clearFocus();
@@ -5079,12 +5120,14 @@ function SettingsContent({ initialPage, onPageChange, children, renderNotFound,
5079
5120
  return pages[activePage].sections
5080
5121
  .filter((section) => !section.hidden)
5081
5122
  .map((section) => (React__default["default"].createElement("div", { key: section.title, className: b('section') },
5082
- React__default["default"].createElement("h3", { className: b('section-heading') }, section.title),
5083
- section.header ? section.header : null,
5123
+ section.showTitle ? (React__default["default"].createElement("h3", { className: b('section-heading') }, section.title)) : null,
5124
+ section.header ? (isMobile ? (React__default["default"].createElement("div", { className: b('section-subheader') }, section.header)) : (section.header)) : null,
5084
5125
  section.items.map(({ hidden, title, element }) => hidden ? null : (React__default["default"].createElement("div", { key: title, className: b('section-item') }, React__default["default"].cloneElement(element, Object.assign(Object.assign({}, element.props), { title: search && title ? prepareTitle(title, search) : title }))))))));
5085
5126
  };
5086
- return (React__default["default"].createElement("div", { className: b() },
5087
- React__default["default"].createElement("div", { className: b('menu'), onClick: () => {
5127
+ return (React__default["default"].createElement("div", { className: b({ view }) },
5128
+ isMobile ? (React__default["default"].createElement(React__default["default"].Fragment, null,
5129
+ React__default["default"].createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, autoFocus: false, inputSize: 'l' }),
5130
+ React__default["default"].createElement(SettingsMenuMobile, { items: menu, onChange: handlePageChange, activeItemId: activePage, className: b('tabs') }))) : (React__default["default"].createElement("div", { className: b('menu'), onClick: () => {
5088
5131
  if (searchInputRef.current) {
5089
5132
  searchInputRef.current.focus();
5090
5133
  }
@@ -5096,8 +5139,8 @@ function SettingsContent({ initialPage, onPageChange, children, renderNotFound,
5096
5139
  }
5097
5140
  } },
5098
5141
  React__default["default"].createElement("h2", { className: b('heading') }, dict === null || dict === void 0 ? void 0 : dict.heading_settings),
5099
- React__default["default"].createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, placeholder: dict === null || dict === void 0 ? void 0 : dict.placeholder_search }),
5100
- React__default["default"].createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItem: activePage })),
5142
+ React__default["default"].createElement(SettingsSearch, { inputRef: searchInputRef, className: b('search'), onChange: setSearch, placeholder: dict === null || dict === void 0 ? void 0 : dict.placeholder_search, autoFocus: true }),
5143
+ React__default["default"].createElement(SettingsMenu, { ref: menuRef, items: menu, onChange: handlePageChange, activeItemId: activePage }))),
5101
5144
  React__default["default"].createElement("div", { className: b('page') }, renderPageContent())));
5102
5145
  }
5103
5146
  Settings.Group = function SettingsGroup({ children }) {
@@ -5109,10 +5152,12 @@ Settings.Page = function SettingsPage({ children }) {
5109
5152
  Settings.Section = function SettingsSection({ children }) {
5110
5153
  return React__default["default"].createElement(React__default["default"].Fragment, null, children);
5111
5154
  };
5112
- Settings.Item = function SettingsItem({ title, children, align = 'center', withBadge, renderTitleComponent = identity_1, }) {
5113
- return (React__default["default"].createElement("div", { className: b('item', { align }) },
5114
- React__default["default"].createElement("label", { className: b('item-heading', { badge: withBadge }) }, renderTitleComponent(title)),
5115
- React__default["default"].createElement("div", null, children)));
5155
+ Settings.Item = function SettingsItem({ title, children, align = 'center', withBadge, renderTitleComponent = identity_1, mode, description, }) {
5156
+ return (React__default["default"].createElement("div", { className: b('item', { align, mode }) },
5157
+ React__default["default"].createElement("label", { className: b('item-heading') },
5158
+ React__default["default"].createElement("span", { className: b('item-title', { badge: withBadge }) }, renderTitleComponent(title)),
5159
+ description ? React__default["default"].createElement("span", { className: b('item-description') }, description) : null),
5160
+ React__default["default"].createElement("div", { className: b('item-content') }, children)));
5116
5161
  };
5117
5162
  function prepareTitle(string, search) {
5118
5163
  let temp = string.slice(0);