@jetbrains/kotlin-web-site-ui 4.3.0-alpha.0 → 4.3.0-next-layout

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 (37) hide show
  1. package/out/components/breakpoints/constants.js +19 -0
  2. package/out/components/breakpoints/index.js +1 -0
  3. package/out/components/cta-block/index.css +2 -2
  4. package/out/components/footer/index.css +3 -6
  5. package/out/components/grid/index.css +65 -65
  6. package/out/components/header/full-search/full-search.js +1 -8
  7. package/out/components/header/header.js +16 -7
  8. package/out/components/header/index.css +68 -118
  9. package/out/components/header/index.js +1 -1
  10. package/out/components/header/logo-small/kotlin-logo-small.svg.js +16 -18
  11. package/out/components/header/logo-small/logo-small.js +1 -1
  12. package/out/components/header/menu-popup/menu-button/close-icon.svg.js +35 -0
  13. package/out/components/header/menu-popup/menu-button/hamburger-icon.svg.js +35 -0
  14. package/out/components/header/menu-popup/menu-button/menu-button.js +5 -8
  15. package/out/components/header/menu-popup/menu-popup.js +42 -2
  16. package/out/components/header/menu-popup/menu-popup.module.pcss.js +4 -0
  17. package/out/components/header/nav-scheme.js +3 -9
  18. package/out/components/header/search-button/search-button.js +2 -13
  19. package/out/components/header/search-button/search-button.module.pcss.js +1 -2
  20. package/out/components/layout/index.css +46 -0
  21. package/out/components/layout/index.js +1 -0
  22. package/out/components/popup/index.css +1 -1
  23. package/out/components/quotes-slider/index.css +4 -4
  24. package/out/components/top-menu/{vertical-menu → dropdown-menu}/arrow-dropdown-icon.svg.js +0 -0
  25. package/out/components/top-menu/dropdown-menu/dropdown-menu.js +71 -0
  26. package/out/components/top-menu/dropdown-menu/dropdown-menu.module.pcss.js +15 -0
  27. package/out/components/top-menu/index.css +124 -91
  28. package/out/components/top-menu/top-menu.js +13 -20
  29. package/out/components/typography/index.css +5 -6
  30. package/out/components/youtube-player/index.css +1 -2
  31. package/package.json +4 -2
  32. package/out/components/header/menu-popup/menu-list/menu-list.js +0 -33
  33. package/out/components/header/menu-popup/menu-list/menu-list.module.pcss.js +0 -4
  34. package/out/components/header/menu-popup/menu-list-item/menu-list-item.js +0 -28
  35. package/out/components/header/menu-popup/menu-list-item/menu-list-item.module.pcss.js +0 -7
  36. package/out/components/top-menu/vertical-menu/vertical-menu.js +0 -123
  37. package/out/components/top-menu/vertical-menu/vertical-menu.module.pcss.js +0 -13
@@ -35,20 +35,20 @@ const Header = forwardRef(({
35
35
  isPlayground,
36
36
  isUrlActive,
37
37
  searchConfig,
38
+ noScrollClassName,
38
39
  resultViewType = SearchResultView.Narrow
39
40
  }, forwardedRef) => {
40
41
  const [menuPopupExpanded, setMenuPopupExpanded] = useState(false);
42
+ const [isMenuPopupVisible, setIsMenuPopupVisible] = useState(false);
41
43
  const [isSearchBoxVisible, setSearchBoxVisible] = useState(false);
42
44
  const [fullSearchActive, setFullSearchActive] = useState(false);
43
45
  const items = useMemo(() => getNavScheme(isUrlActive, currentUrl, isPlayground), [isUrlActive, currentUrl, isPlayground]);
44
- const itemsWithoutHomeSection = useMemo(() => items.slice(1), [items]);
45
46
  const headerRef = useRef(null);
46
47
  useImperativeHandle(forwardedRef, () => headerRef.current);
47
- const [isMenuPopupVisible, setMenuPopupVisible] = useState(false);
48
48
  useLayoutEffect(() => {
49
- setMenuPopupVisible((headerRef.current?.getBoundingClientRect?.().width ?? 0) <= MENU_POPUP_BREAKPOINT);
49
+ setIsMenuPopupVisible((headerRef.current?.getBoundingClientRect?.().width ?? 0) <= MENU_POPUP_BREAKPOINT);
50
50
  }, [headerRef]);
51
- useResizeObserver(headerRef, entry => setMenuPopupVisible(entry.contentRect.width <= MENU_POPUP_BREAKPOINT));
51
+ useResizeObserver(headerRef, entry => setIsMenuPopupVisible(entry.contentRect.width <= MENU_POPUP_BREAKPOINT));
52
52
  const handleSearchButtonClick = useCallback(() => {
53
53
  setSearchBoxVisible(!isSearchBoxVisible);
54
54
  }, []);
@@ -77,6 +77,15 @@ const Header = forwardRef(({
77
77
  };
78
78
  }
79
79
  }, [fullSearchKeyHandler]);
80
+ useEffect(() => {
81
+ if (typeof document !== `undefined` && noScrollClassName) {
82
+ if (fullSearchActive) {
83
+ document.body.classList.add(noScrollClassName);
84
+ } else {
85
+ document.body.classList.remove(noScrollClassName);
86
+ }
87
+ }
88
+ }, [fullSearchActive]);
80
89
  return React__default.createElement(ThemeProvider, {
81
90
  theme: 'dark'
82
91
  }, React__default.createElement(SearchWrapper, {
@@ -85,7 +94,7 @@ const Header = forwardRef(({
85
94
  ref: headerRef,
86
95
  className: classNames(styles.headerMenu, className, {
87
96
  [styles.withMenuPopup]: menuPopupExpanded,
88
- [styles.border]: hasBorder || menuPopupExpanded
97
+ [styles.border]: hasBorder
89
98
  }),
90
99
  "data-test": 'header'
91
100
  }, isMenuPopupVisible && currentTitle && currentUrl && !menuPopupExpanded ? React__default.createElement(LogoSmall, {
@@ -102,10 +111,10 @@ const Header = forwardRef(({
102
111
  setFullSearchActive: setFullSearchActive,
103
112
  searchBoxViewType: resultViewType
104
113
  })) : React__default.createElement(React__default.Fragment, null, !isMenuPopupVisible && React__default.createElement(HorizontalMenu, {
105
- items: itemsWithoutHomeSection,
114
+ items: items,
106
115
  theme: dropdownTheme,
107
116
  linkHandler: linkHandler
108
- }), !menuPopupExpanded && React__default.createElement(SearchButton, {
117
+ }), React__default.createElement(SearchButton, {
109
118
  onClick: handleSearchButtonClick,
110
119
  isActive: hasSearch
111
120
  }), isMenuPopupVisible && React__default.createElement(MenuPopup, {
@@ -38,8 +38,7 @@
38
38
  --ktl-overlay-z-index: 900;
39
39
  --ktl-top-menu-z-index: 905;
40
40
  --ktl-header-z-index: 906;
41
- --ktl-mobile-dropdown-list-z-index: 907;
42
- --ktl-header-height-mobile: 52px;
41
+ --ktl-header-height-mobile: 48px;
43
42
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
44
43
  --rs-font-family-ui: var(--ktl-font-family-inter);
45
44
  }
@@ -56,12 +55,12 @@
56
55
  }
57
56
 
58
57
  .ktl-header-module_border_paN11 {
59
- box-shadow: inset 0 -1px rgba(255, 255, 255, 0.3);
58
+ box-shadow: inset 0 -1px rgba(255, 255, 255, 0.2);
60
59
  }
61
60
 
62
61
  @media (max-width: 640px) {
63
62
  .ktl-header-module_header-menu_wh71L {
64
- padding: 0 0 0 16px;
63
+ padding: 0 16px;
65
64
  height: var(--ktl-header-height-mobile);
66
65
  }
67
66
 
@@ -85,8 +84,7 @@
85
84
  --ktl-overlay-z-index: 900;
86
85
  --ktl-top-menu-z-index: 905;
87
86
  --ktl-header-z-index: 906;
88
- --ktl-mobile-dropdown-list-z-index: 907;
89
- --ktl-header-height-mobile: 52px;
87
+ --ktl-header-height-mobile: 48px;
90
88
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
91
89
  --rs-font-family-ui: var(--ktl-font-family-inter);
92
90
  }
@@ -228,8 +226,7 @@
228
226
  --ktl-overlay-z-index: 900;
229
227
  --ktl-top-menu-z-index: 905;
230
228
  --ktl-header-z-index: 906;
231
- --ktl-mobile-dropdown-list-z-index: 907;
232
- --ktl-header-height-mobile: 52px;
229
+ --ktl-header-height-mobile: 48px;
233
230
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
234
231
  --rs-font-family-ui: var(--ktl-font-family-inter);
235
232
  }
@@ -267,13 +264,12 @@
267
264
  @media (max-width: 640px) {
268
265
  .ktl-search-button-module_button_YHJPv {
269
266
  display: none;
267
+ margin: 0 16px 0 0;
270
268
  }
271
- }
272
269
 
273
- @media (min-width: 641px) {
274
- .ktl-search-button-module_mobileButton_KT2YP {
275
- display: none;
276
- }
270
+ .ktl-search-button-module_button_YHJPv.ktl-search-button-module_active_lUmdh {
271
+ display: flex;
272
+ }
277
273
  }
278
274
 
279
275
  .ktl-result-module_result_EKhUw {
@@ -662,7 +658,7 @@
662
658
  opacity: 1;
663
659
  }
664
660
 
665
- @media (max-width: 767px) {
661
+ @media (--ktl-xs) {
666
662
  .ktl-search-box-module_searchBox_0SgE9 {
667
663
  background: var(--ktl-dark-100);
668
664
  width: auto;
@@ -696,27 +692,64 @@
696
692
  --ktl-overlay-z-index: 900;
697
693
  --ktl-top-menu-z-index: 905;
698
694
  --ktl-header-z-index: 906;
699
- --ktl-mobile-dropdown-list-z-index: 907;
700
- --ktl-header-height-mobile: 52px;
695
+ --ktl-header-height-mobile: 48px;
701
696
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
702
697
  --rs-font-family-ui: var(--ktl-font-family-inter);
703
698
  }
704
699
 
705
700
  .ktl-menu-popup-module_menu-popup_Q68IE {
706
- display: none;
707
- padding: 8px 0 56px 0;
708
- background: var(--ktl-dark-100);
709
- position: fixed;
710
- top: var(--ktl-header-height-mobile);
711
- bottom: 0;
712
- left: 0;
713
- right: 0;
714
- overflow: auto;
715
- z-index: var(--ktl-top-menu-z-index);
701
+ display: none;
702
+ padding: 8px 0;
703
+ background: var(--ktl-dark-100);
704
+ position: fixed;
705
+ top: var(--ktl-header-height-mobile);
706
+ bottom: 0;
707
+ left: 0;
708
+ right: 0;
709
+ overflow: auto;
710
+ z-index: var(--ktl-top-menu-z-index);
711
+ }
712
+
713
+ .ktl-menu-popup-module_menu-item_fPvF- {
714
+ --level: 0;
715
+ display: flex;
716
+ align-items: center;
717
+ font-size: 16px;
718
+ line-height: 24px;
719
+ font-weight: 400;
720
+ color: rgba(255, 255, 255, 0.75);
721
+ text-decoration: none;
722
+ padding: 8px 16px 8px calc(16px + (var(--level) * 24px));
723
+ transition: color var(--ktl-transition-xfast),
724
+ background-color var(--ktl-transition-xfast);
725
+ }
726
+
727
+ .ktl-menu-popup-module_menu-item_fPvF-:hover {
728
+ color: rgba(255, 255, 255, 1);
729
+ background: rgba(255, 255, 255, 0.1);
730
+ text-decoration: none;
731
+ }
732
+
733
+ .ktl-menu-popup-module_menu-item_fPvF-.ktl-menu-popup-module_active_iqTAj {
734
+ color: var(--ktl-light-text-hard);
735
+ background: rgba(255, 255, 255, 1);
736
+ cursor: default;
737
+ text-decoration: none;
738
+ }
739
+
740
+ .ktl-menu-popup-module_menu-item_fPvF-.ktl-menu-popup-module_active-with-child_tAzCG {
741
+ background: none;
742
+ color: rgba(255, 255, 255, 1);
743
+ }
744
+
745
+ .ktl-menu-popup-module_menu-item-root_gA9d2 {
746
+ font-size: 20px;
747
+ line-height: 32px;
748
+ font-weight: 600;
716
749
  }
717
750
 
718
751
  .ktl-menu-popup-module_menu-popup-expanded_ggrp9 {
719
- display: block;
752
+ display: block;
720
753
  }
721
754
 
722
755
  .ktl-menu-button-module_button_wB9Mx {
@@ -730,8 +763,8 @@
730
763
  background: none;
731
764
  padding: 0;
732
765
  margin: 0;
733
- width: var(--ktl-header-height-mobile);
734
- height: var(--ktl-header-height-mobile);
766
+ width: 24px;
767
+ height: 24px;
735
768
  align-items: center;
736
769
  justify-content: center;
737
770
  transition: color var(--ktl-transition-xfast),
@@ -744,91 +777,6 @@
744
777
  color: #ffffff;
745
778
  }
746
779
 
747
- :root {
748
- --ktl-light-grey: #f4f4f4;
749
- --ktl-dark-100: rgba(39, 40, 44, 1);
750
- --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
751
- --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
752
- --ktl-color-white-light: rgba(255, 255, 255, 0.75);
753
- --ktl-transition-xfast: 100ms;
754
- --ktl-transition-fast: 300ms;
755
- --ktl-color-primary-light-theme: #7f52ff;
756
- --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
757
- --ktl-light-text-hard: rgba(39, 40, 44, 1);
758
- --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
759
- --ktl-overlay-z-index: 900;
760
- --ktl-top-menu-z-index: 905;
761
- --ktl-header-z-index: 906;
762
- --ktl-mobile-dropdown-list-z-index: 907;
763
- --ktl-header-height-mobile: 52px;
764
- --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
765
- --rs-font-family-ui: var(--ktl-font-family-inter);
766
- }
767
-
768
- .ktl-menu-list-item-module_menu-item_Aruue {
769
- --level: 0;
770
- display: flex;
771
- align-items: center;
772
- font-size: 19px;
773
- line-height: 28px;
774
- font-weight: 400;
775
- color: #ffffff;
776
- text-decoration: none;
777
- padding: 12px 7px 12px 16px;
778
- transition: color var(--ktl-transition-xfast),
779
- background-color var(--ktl-transition-xfast);
780
- }
781
-
782
- .ktl-menu-list-item-module_menu-item_Aruue.ktl-menu-list-item-module_active_jHfJR {
783
- color: var(--ktl-light-text-hard);
784
- background: rgba(255, 255, 255, 1);
785
- cursor: default;
786
- text-decoration: none;
787
- }
788
-
789
- .ktl-menu-list-item-module_menu-item_Aruue.ktl-menu-list-item-module_active-with-child_ier2a {
790
- background: none;
791
- color: rgba(255, 255, 255, 0.7);
792
- }
793
-
794
- .ktl-menu-list-item-module_menu-item-root_Rzcqb:not(a) {
795
- font-size: 13px;
796
- text-transform: uppercase;
797
- line-height: 20px;
798
- color: rgba(255, 255, 255, 0.7);
799
- }
800
-
801
- :root {
802
- --ktl-light-grey: #f4f4f4;
803
- --ktl-dark-100: rgba(39, 40, 44, 1);
804
- --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
805
- --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
806
- --ktl-color-white-light: rgba(255, 255, 255, 0.75);
807
- --ktl-transition-xfast: 100ms;
808
- --ktl-transition-fast: 300ms;
809
- --ktl-color-primary-light-theme: #7f52ff;
810
- --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
811
- --ktl-light-text-hard: rgba(39, 40, 44, 1);
812
- --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
813
- --ktl-overlay-z-index: 900;
814
- --ktl-top-menu-z-index: 905;
815
- --ktl-header-z-index: 906;
816
- --ktl-mobile-dropdown-list-z-index: 907;
817
- --ktl-header-height-mobile: 52px;
818
- --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
819
- --rs-font-family-ui: var(--ktl-font-family-inter);
820
- }
821
-
822
- .ktl-menu-list-module_menu-item-group_mFvUE {
823
- margin: 8px 0 8px 0;
824
- padding: 4px 0 8px 0;
825
- border-top: 1px solid rgba(255, 255, 255, 0.3);
826
- }
827
-
828
- .ktl-menu-list-module_menu-item-group_mFvUE:not(:last-child) {
829
- border-bottom: 1px solid rgba(255, 255, 255, 0.3);
830
- }
831
-
832
780
  .ktl-logo-small-module_logo-small_iGY12 {
833
781
  flex-grow: 1;
834
782
  display: flex;
@@ -839,7 +787,6 @@
839
787
  .ktl-logo-small-module_link_SKXAa {
840
788
  color: rgba(255, 255, 255, 1);
841
789
  text-decoration: none;
842
- font-size: 16px;
843
790
  }
844
791
 
845
792
  .ktl-logo-small-module_icon-wrap_6hRnO {
@@ -848,10 +795,13 @@
848
795
  align-items: center;
849
796
  justify-items: center;
850
797
  height: 100%;
851
- margin-right: 12px;
798
+ margin-right: 16px;
799
+ padding-right: 16px;
800
+ border-right: 1px solid rgba(255, 255, 255, 0.2);
852
801
  }
853
802
 
854
803
  .ktl-logo-small-module_icon_NyEog {
855
- width: 20px;
856
- height: 20px;
804
+ width: 24px;
805
+ height: 24px;
806
+ margin-left: -4px;
857
807
  }
@@ -1,4 +1,4 @@
1
1
  import './index.css';
2
2
  import { Header } from './header.js';
3
3
  export { Header as default } from './header.js';
4
- export { ANDROID_TITLE, ANDROID_URL, COMMUNITY_TITLE, COMMUNITY_URL, DATA_SCIENCE_TITLE, DATA_SCIENCE_URL, DOCS_TITLE, DOCS_URL, HOME_TITLE, HOME_URL, KMM_DOCS_TITLE, KMM_DOCS_URL, KOTLIN_DOCS_TITLE, KOTLIN_DOCS_URL, MULTIPLATFORM_MOBILE_TITLE, MULTIPLATFORM_MOBILE_URL, MULTIPLATFORM_OTHERS_TITLE, MULTIPLATFORM_OTHERS_URL, PLAY_EXAMPLES_TITLE, PLAY_EXAMPLES_URL, PLAY_HANDSON_TITLE, PLAY_HANDSON_URL, PLAY_KOANS_TITLE, PLAY_KOANS_URL, PLAY_TITLE, PLAY_TITLE_FULL, PLAY_URL, SERVER_SIDE_TITLE, SERVER_SIDE_URL, SOLUTIONS_TITLE, TEACH_TITLE, TEACH_URL, WEB_FRONTEND_TITLE, WEB_FRONTEND_URL, getNavScheme } from './nav-scheme.js';
4
+ export { ANDROID_TITLE, ANDROID_URL, COMMUNITY_TITLE, COMMUNITY_URL, DATA_SCIENCE_TITLE, DATA_SCIENCE_URL, DOCS_TITLE, DOCS_URL, KMM_DOCS_TITLE, KMM_DOCS_URL, KOTLIN_DOCS_TITLE, KOTLIN_DOCS_URL, MULTIPLATFORM_MOBILE_TITLE, MULTIPLATFORM_MOBILE_URL, MULTIPLATFORM_OTHERS_TITLE, MULTIPLATFORM_OTHERS_URL, PLAY_EXAMPLES_TITLE, PLAY_EXAMPLES_URL, PLAY_HANDSON_TITLE, PLAY_HANDSON_URL, PLAY_KOANS_TITLE, PLAY_KOANS_URL, PLAY_TITLE, PLAY_TITLE_FULL, PLAY_URL, SERVER_SIDE_TITLE, SERVER_SIDE_URL, SOLUTIONS_TITLE, TEACH_TITLE, TEACH_URL, WEB_FRONTEND_TITLE, WEB_FRONTEND_URL, getNavScheme } from './nav-scheme.js';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- var _path, _defs;
3
+ var _radialGradient, _path;
4
4
 
5
5
  function _extends() {
6
6
  _extends = Object.assign || function (target) {
@@ -21,29 +21,27 @@ function _extends() {
21
21
  }
22
22
 
23
23
  const SvgKotlinLogoSmall = props => /*#__PURE__*/React.createElement("svg", _extends({
24
- width: 20,
25
- height: 20,
26
- fill: "none",
27
- xmlns: "http://www.w3.org/2000/svg"
28
- }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
29
- d: "M20 20H0V0h20L9.793 9.855 20 20Z",
30
- fill: "url(#kotlin-logo-small_svg__a)"
31
- })), _defs || (_defs = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("radialGradient", {
24
+ xmlns: "http://www.w3.org/2000/svg",
25
+ viewBox: "0 0 24 24"
26
+ }, props), _radialGradient || (_radialGradient = /*#__PURE__*/React.createElement("radialGradient", {
32
27
  id: "kotlin-logo-small_svg__a",
33
- cx: 0,
34
- cy: 0,
35
- r: 1,
36
- gradientUnits: "userSpaceOnUse",
37
- gradientTransform: "translate(19.335 .822) scale(22.9097)"
28
+ cx: 22.432,
29
+ cy: 3.493,
30
+ r: 21.679,
31
+ gradientTransform: "translate(-.19 .042) scale(.9998)",
32
+ gradientUnits: "userSpaceOnUse"
38
33
  }, /*#__PURE__*/React.createElement("stop", {
39
34
  offset: 0.003,
40
- stopColor: "#EF4857"
35
+ stopColor: "#e44857"
41
36
  }), /*#__PURE__*/React.createElement("stop", {
42
37
  offset: 0.469,
43
- stopColor: "#D211EC"
38
+ stopColor: "#c711e1"
44
39
  }), /*#__PURE__*/React.createElement("stop", {
45
40
  offset: 1,
46
- stopColor: "#7F52FF"
47
- })))));
41
+ stopColor: "#7f52ff"
42
+ }))), _path || (_path = /*#__PURE__*/React.createElement("path", {
43
+ fill: "url(#kotlin-logo-small_svg__a)",
44
+ d: "M22.87 21.68H3.94V2.76h18.93l-9.66 9.32z"
45
+ })));
48
46
 
49
47
  export { SvgKotlinLogoSmall as default };
@@ -20,7 +20,7 @@ const LogoSmall = ({
20
20
  className: styles.icon
21
21
  })), React__default.createElement("a", {
22
22
  href: homeUrl,
23
- className: classNames(styles.link, textCn('rs-h4'))
23
+ className: classNames(styles.link, textCn('rs-h3'))
24
24
  }, homeTitle));
25
25
  };
26
26
 
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+
3
+ var _path;
4
+
5
+ function _extends() {
6
+ _extends = Object.assign || function (target) {
7
+ for (var i = 1; i < arguments.length; i++) {
8
+ var source = arguments[i];
9
+
10
+ for (var key in source) {
11
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
12
+ target[key] = source[key];
13
+ }
14
+ }
15
+ }
16
+
17
+ return target;
18
+ };
19
+
20
+ return _extends.apply(this, arguments);
21
+ }
22
+
23
+ const SvgCloseIcon = props => /*#__PURE__*/React.createElement("svg", _extends({
24
+ width: 16,
25
+ height: 16,
26
+ fill: "none",
27
+ xmlns: "http://www.w3.org/2000/svg"
28
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
29
+ fillRule: "evenodd",
30
+ clipRule: "evenodd",
31
+ d: "M15.707 1.707 14.293.293 8 6.586 1.707.293.293 1.707 6.586 8 .293 14.293l1.414 1.414L8 9.414l6.293 6.293 1.414-1.414L9.414 8l6.293-6.293Z",
32
+ fill: "currentColor"
33
+ })));
34
+
35
+ export { SvgCloseIcon as default };
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+
3
+ var _path;
4
+
5
+ function _extends() {
6
+ _extends = Object.assign || function (target) {
7
+ for (var i = 1; i < arguments.length; i++) {
8
+ var source = arguments[i];
9
+
10
+ for (var key in source) {
11
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
12
+ target[key] = source[key];
13
+ }
14
+ }
15
+ }
16
+
17
+ return target;
18
+ };
19
+
20
+ return _extends.apply(this, arguments);
21
+ }
22
+
23
+ const SvgHamburgerIcon = props => /*#__PURE__*/React.createElement("svg", _extends({
24
+ width: 24,
25
+ height: 24,
26
+ fill: "none",
27
+ xmlns: "http://www.w3.org/2000/svg"
28
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
29
+ fillRule: "evenodd",
30
+ clipRule: "evenodd",
31
+ d: "M4 5h16v2H4V5Zm0 6h16v2H4v-2Zm16 6H4v2h16v-2Z",
32
+ fill: "currentColor"
33
+ })));
34
+
35
+ export { SvgHamburgerIcon as default };
@@ -1,23 +1,20 @@
1
1
  import React__default from 'react';
2
2
  import styles from './menu-button.module.pcss.js';
3
3
  import classNames from 'classnames';
4
- import Button from '@rescui/button';
5
- import { CloseIcon, HamburgerIcon } from '@rescui/icons';
4
+ import SvgHamburgerIcon from './hamburger-icon.svg.js';
5
+ import SvgCloseIcon from './close-icon.svg.js';
6
6
 
7
7
  const MenuButton = ({
8
8
  onClick,
9
9
  isExpanded
10
10
  }) => {
11
- return React__default.createElement(Button, {
11
+ return React__default.createElement("button", {
12
12
  type: "button",
13
13
  className: classNames(styles.button),
14
14
  "aria-haspopup": "true",
15
15
  "aria-label": "Open the navigation",
16
- onClick: onClick,
17
- size: 'l',
18
- mode: 'clear',
19
- icon: isExpanded ? React__default.createElement(CloseIcon, null) : React__default.createElement(HamburgerIcon, null)
20
- });
16
+ onClick: onClick
17
+ }, isExpanded ? React__default.createElement(SvgCloseIcon, null) : React__default.createElement(SvgHamburgerIcon, null));
21
18
  };
22
19
 
23
20
  export { MenuButton };
@@ -1,11 +1,51 @@
1
- import React__default, { useRef, useState, useEffect, useLayoutEffect, useCallback } from 'react';
1
+ import React__default, { useRef, useState, useEffect, useLayoutEffect, useCallback, Fragment } from 'react';
2
2
  import styles from './menu-popup.module.pcss.js';
3
3
  import classNames from 'classnames';
4
4
  import { MenuButton } from './menu-button/menu-button.js';
5
- import { MenuList } from './menu-list/menu-list.js';
6
5
  import { useTextStyles } from '@rescui/typography';
7
6
  import { clearAllBodyScrollLocks, enableBodyScroll, disableBodyScroll } from 'body-scroll-lock';
8
7
 
8
+ const MenuListItem = ({
9
+ item,
10
+ level,
11
+ linkHandler
12
+ }) => {
13
+ const Tag = item.url ? 'a' : 'span';
14
+ const style = {
15
+ '--level': level
16
+ };
17
+ const handleClick = useCallback(event => linkHandler && item.url && linkHandler(event, item.url), []);
18
+ return React__default.createElement(Tag, Object.assign({}, item.url ? {
19
+ href: item.url,
20
+ onClick: handleClick
21
+ } : {}, {
22
+ className: classNames(styles.menuItem, {
23
+ [styles.menuItemRoot]: level === 0,
24
+ [styles.active]: item.isActive,
25
+ [styles.activeWithChild]: item.items && item.items.length
26
+ }),
27
+ style: style
28
+ }), item.title);
29
+ };
30
+
31
+ const MenuList = ({
32
+ items,
33
+ level,
34
+ linkHandler
35
+ }) => {
36
+ return React__default.createElement(React__default.Fragment, null, items.map((item, i) => React__default.createElement(Fragment, {
37
+ key: i
38
+ }, React__default.createElement(MenuListItem, {
39
+ item: item,
40
+ level: level,
41
+ linkHandler: linkHandler
42
+ }), item.items && item.items.length > 0 && React__default.createElement(MenuList, {
43
+ items: item.items,
44
+ level: level + 1,
45
+ linkHandler: linkHandler
46
+ }))));
47
+ };
48
+
9
49
  const MenuPopup = ({
10
50
  items,
11
51
  isExpanded,
@@ -1,5 +1,9 @@
1
1
  var styles = {
2
2
  "menuPopup": "ktl-menu-popup-module_menu-popup_Q68IE",
3
+ "menuItem": "ktl-menu-popup-module_menu-item_fPvF-",
4
+ "active": "ktl-menu-popup-module_active_iqTAj",
5
+ "activeWithChild": "ktl-menu-popup-module_active-with-child_tAzCG",
6
+ "menuItemRoot": "ktl-menu-popup-module_menu-item-root_gA9d2",
3
7
  "menuPopupExpanded": "ktl-menu-popup-module_menu-popup-expanded_ggrp9"
4
8
  };
5
9
  export { styles as default };
@@ -1,6 +1,4 @@
1
1
  import { PLAYGROUND_URL, KOTLINLANG_URL } from './consts.js';
2
- const HOME_TITLE = 'Home';
3
- const HOME_URL = '/';
4
2
  const SOLUTIONS_TITLE = 'Solutions';
5
3
  const MULTIPLATFORM_MOBILE_TITLE = 'Multiplatform Mobile';
6
4
  const MULTIPLATFORM_MOBILE_URL = `/lp/mobile/`;
@@ -34,9 +32,6 @@ const KOTLIN_DOCS_URL = `/docs/home.html`;
34
32
  const KMM_DOCS_TITLE = 'KMM';
35
33
  const KMM_DOCS_URL = `/docs/mobile/home.html`;
36
34
  const navScheme = [{
37
- title: HOME_TITLE,
38
- url: HOME_URL
39
- }, {
40
35
  title: SOLUTIONS_TITLE,
41
36
  url: null,
42
37
  items: [{
@@ -85,9 +80,8 @@ const navScheme = [{
85
80
  }]
86
81
  }];
87
82
 
88
- function getNavScheme(isUrlActive = (url, currentUrl) => url === currentUrl, currentUrl, isPlayground, withoutHomeSection) {
89
- const controlledNavScheme = withoutHomeSection ? navScheme.slice(1) : navScheme;
90
- return controlledNavScheme.map(({
83
+ function getNavScheme(isUrlActive = (url, currentUrl) => url === currentUrl, currentUrl, isPlayground) {
84
+ return navScheme.map(({
91
85
  title,
92
86
  url,
93
87
  items
@@ -138,4 +132,4 @@ function makeExternalUrl(url, currentUrl, isPlayground) {
138
132
  return url;
139
133
  }
140
134
 
141
- export { ANDROID_TITLE, ANDROID_URL, COMMUNITY_TITLE, COMMUNITY_URL, DATA_SCIENCE_TITLE, DATA_SCIENCE_URL, DOCS_TITLE, DOCS_URL, HOME_TITLE, HOME_URL, KMM_DOCS_TITLE, KMM_DOCS_URL, KOTLIN_DOCS_TITLE, KOTLIN_DOCS_URL, MULTIPLATFORM_MOBILE_TITLE, MULTIPLATFORM_MOBILE_URL, MULTIPLATFORM_OTHERS_TITLE, MULTIPLATFORM_OTHERS_URL, PLAY_EXAMPLES_TITLE, PLAY_EXAMPLES_URL, PLAY_HANDSON_TITLE, PLAY_HANDSON_URL, PLAY_KOANS_TITLE, PLAY_KOANS_URL, PLAY_TITLE, PLAY_TITLE_FULL, PLAY_URL, SERVER_SIDE_TITLE, SERVER_SIDE_URL, SOLUTIONS_TITLE, TEACH_TITLE, TEACH_URL, WEB_FRONTEND_TITLE, WEB_FRONTEND_URL, getNavScheme };
135
+ export { ANDROID_TITLE, ANDROID_URL, COMMUNITY_TITLE, COMMUNITY_URL, DATA_SCIENCE_TITLE, DATA_SCIENCE_URL, DOCS_TITLE, DOCS_URL, KMM_DOCS_TITLE, KMM_DOCS_URL, KOTLIN_DOCS_TITLE, KOTLIN_DOCS_URL, MULTIPLATFORM_MOBILE_TITLE, MULTIPLATFORM_MOBILE_URL, MULTIPLATFORM_OTHERS_TITLE, MULTIPLATFORM_OTHERS_URL, PLAY_EXAMPLES_TITLE, PLAY_EXAMPLES_URL, PLAY_HANDSON_TITLE, PLAY_HANDSON_URL, PLAY_KOANS_TITLE, PLAY_KOANS_URL, PLAY_TITLE, PLAY_TITLE_FULL, PLAY_URL, SERVER_SIDE_TITLE, SERVER_SIDE_URL, SOLUTIONS_TITLE, TEACH_TITLE, TEACH_URL, WEB_FRONTEND_TITLE, WEB_FRONTEND_URL, getNavScheme };
@@ -2,15 +2,13 @@ import React__default from 'react';
2
2
  import styles from './search-button.module.pcss.js';
3
3
  import classNames from 'classnames';
4
4
  import SvgSearch from './search.svg.js';
5
- import { SearchIcon } from '@rescui/icons';
6
- import Button from '@rescui/button';
7
5
  const DATA_TEST_HEADER_SEARCH_BUTTON = 'header-search-button';
8
6
 
9
7
  const SearchButton = ({
10
8
  onClick,
11
9
  isActive
12
10
  }) => {
13
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("button", {
11
+ return React__default.createElement("button", {
14
12
  type: "button",
15
13
  className: classNames(styles.button, {
16
14
  [styles.active]: isActive
@@ -18,16 +16,7 @@ const SearchButton = ({
18
16
  "data-test": DATA_TEST_HEADER_SEARCH_BUTTON,
19
17
  "aria-label": "Search",
20
18
  onClick: onClick
21
- }, React__default.createElement(SvgSearch, null)), React__default.createElement("div", {
22
- className: styles.mobileButton
23
- }, React__default.createElement(Button, {
24
- "data-test": DATA_TEST_HEADER_SEARCH_BUTTON,
25
- "aria-label": "Search",
26
- onClick: onClick,
27
- mode: 'clear',
28
- size: 'l',
29
- icon: React__default.createElement(SearchIcon, null)
30
- })));
19
+ }, React__default.createElement(SvgSearch, null));
31
20
  };
32
21
 
33
22
  export { DATA_TEST_HEADER_SEARCH_BUTTON, SearchButton };
@@ -1,6 +1,5 @@
1
1
  var styles = {
2
2
  "button": "ktl-search-button-module_button_YHJPv",
3
- "active": "ktl-search-button-module_active_lUmdh",
4
- "mobileButton": "ktl-search-button-module_mobileButton_KT2YP"
3
+ "active": "ktl-search-button-module_active_lUmdh"
5
4
  };
6
5
  export { styles as default };