@jetbrains/kotlin-web-site-ui 4.1.1 → 4.2.0-alpha.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.
@@ -29,7 +29,8 @@
29
29
  --ktl-overlay-z-index: 900;
30
30
  --ktl-top-menu-z-index: 905;
31
31
  --ktl-header-z-index: 906;
32
- --ktl-header-height-mobile: 48px;
32
+ --ktl-mobile-dropdown-list-z-index: 907;
33
+ --ktl-header-height-mobile: 52px;
33
34
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
34
35
  --rs-font-family-ui: var(--ktl-font-family-inter);
35
36
  }
@@ -85,7 +86,8 @@
85
86
  --ktl-overlay-z-index: 900;
86
87
  --ktl-top-menu-z-index: 905;
87
88
  --ktl-header-z-index: 906;
88
- --ktl-header-height-mobile: 48px;
89
+ --ktl-mobile-dropdown-list-z-index: 907;
90
+ --ktl-header-height-mobile: 52px;
89
91
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
90
92
  --rs-font-family-ui: var(--ktl-font-family-inter);
91
93
  }
@@ -141,7 +143,8 @@
141
143
  --ktl-overlay-z-index: 900;
142
144
  --ktl-top-menu-z-index: 905;
143
145
  --ktl-header-z-index: 906;
144
- --ktl-header-height-mobile: 48px;
146
+ --ktl-mobile-dropdown-list-z-index: 907;
147
+ --ktl-header-height-mobile: 52px;
145
148
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
146
149
  --rs-font-family-ui: var(--ktl-font-family-inter);
147
150
  }
@@ -42,7 +42,7 @@ const Chapters = ({
42
42
  __html: title
43
43
  }
44
44
  })), React__default.createElement("div", {
45
- className: classNames(textCn('rs-text-2'), styles.snippet),
45
+ className: classNames(textCn('rs-text-2'), styles.chapterSnippet),
46
46
  dangerouslySetInnerHTML: {
47
47
  __html: snippet
48
48
  }
@@ -4,6 +4,7 @@ var styles = {
4
4
  "singleChapter": "ktl-chapters-module_singleChapter_zSmx2",
5
5
  "headliner": "ktl-chapters-module_headliner_ZBuf9",
6
6
  "snippet": "ktl-chapters-module_snippet_yROJo",
7
+ "chapterSnippet": "ktl-chapters-module_chapterSnippet_8Pwb2",
7
8
  "extraSection": "ktl-chapters-module_extraSection_lsZfw",
8
9
  "visibleSection": "ktl-chapters-module_visibleSection_wQyvM",
9
10
  "moreButton": "ktl-chapters-module_moreButton_98oqy"
@@ -38,7 +38,7 @@ const HitList = ({
38
38
  chapters: chapters,
39
39
  hitIndex: pageIndex
40
40
  }) : React__default.createElement("div", {
41
- className: classNames(textCn('rs-text-2')),
41
+ className: classNames(textCn('rs-text-2'), styles.snippet),
42
42
  dangerouslySetInnerHTML: {
43
43
  __html: snippet
44
44
  }
@@ -1,5 +1,6 @@
1
1
  var styles = {
2
2
  "hitList": "ktl-hit-list-module_hitList_1MP6m",
3
- "titleLink": "ktl-hit-list-module_titleLink_rdJ6u"
3
+ "titleLink": "ktl-hit-list-module_titleLink_rdJ6u",
4
+ "snippet": "ktl-hit-list-module_snippet_WmrYL"
4
5
  };
5
6
  export { styles as default };
@@ -35,6 +35,7 @@ const Header = forwardRef(({
35
35
  const [isSearchBoxVisible, setSearchBoxVisible] = useState(false);
36
36
  const [fullSearchActive, setFullSearchActive] = useState(false);
37
37
  const items = useMemo(() => getNavScheme(isUrlActive, currentUrl, isPlayground), [isUrlActive, currentUrl, isPlayground]);
38
+ const itemsWithoutHomeSection = useMemo(() => items.slice(1), [items]);
38
39
  const headerRef = useRef(null);
39
40
  useImperativeHandle(forwardedRef, () => headerRef.current);
40
41
  useLayoutEffect(() => {
@@ -102,7 +103,7 @@ const Header = forwardRef(({
102
103
  fullSearchActive: fullSearchActive,
103
104
  setFullSearchActive: setFullSearchActive
104
105
  })) : React__default.createElement(React__default.Fragment, null, !isMenuPopupVisible && React__default.createElement(HorizontalMenu, {
105
- items: items,
106
+ items: itemsWithoutHomeSection,
106
107
  theme: dropdownTheme,
107
108
  linkHandler: linkHandler
108
109
  }), React__default.createElement(SearchButton, {
@@ -38,7 +38,8 @@
38
38
  --ktl-overlay-z-index: 900;
39
39
  --ktl-top-menu-z-index: 905;
40
40
  --ktl-header-z-index: 906;
41
- --ktl-header-height-mobile: 48px;
41
+ --ktl-mobile-dropdown-list-z-index: 907;
42
+ --ktl-header-height-mobile: 52px;
42
43
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
43
44
  --rs-font-family-ui: var(--ktl-font-family-inter);
44
45
  }
@@ -84,7 +85,8 @@
84
85
  --ktl-overlay-z-index: 900;
85
86
  --ktl-top-menu-z-index: 905;
86
87
  --ktl-header-z-index: 906;
87
- --ktl-header-height-mobile: 48px;
88
+ --ktl-mobile-dropdown-list-z-index: 907;
89
+ --ktl-header-height-mobile: 52px;
88
90
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
89
91
  --rs-font-family-ui: var(--ktl-font-family-inter);
90
92
  }
@@ -226,7 +228,8 @@
226
228
  --ktl-overlay-z-index: 900;
227
229
  --ktl-top-menu-z-index: 905;
228
230
  --ktl-header-z-index: 906;
229
- --ktl-header-height-mobile: 48px;
231
+ --ktl-mobile-dropdown-list-z-index: 907;
232
+ --ktl-header-height-mobile: 52px;
230
233
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
231
234
  --rs-font-family-ui: var(--ktl-font-family-inter);
232
235
  }
@@ -445,14 +448,6 @@
445
448
  margin-top: 24px;
446
449
  }
447
450
 
448
- .ktl-chapters-module_chapterTitle_b6Rdz {
449
- //border-bottom-color: transparent;
450
- }
451
-
452
- .ktl-chapters-module_chapterTitle_b6Rdz:hover {
453
- //border-bottom-color: #19191C;
454
- }
455
-
456
451
  .ktl-chapters-module_chapterTitle_b6Rdz em {
457
452
  background: rgba(127, 82, 255, 0.2);
458
453
  font-style: normal;
@@ -476,6 +471,11 @@
476
471
  font-style: normal;
477
472
  }
478
473
 
474
+ .ktl-chapters-module_chapterSnippet_8Pwb2 em {
475
+ background: rgba(127, 82, 255, 0.2);
476
+ font-style: normal;
477
+ }
478
+
479
479
  .ktl-chapters-module_extraSection_lsZfw {
480
480
  display: none;
481
481
  }
@@ -487,6 +487,7 @@
487
487
  .ktl-chapters-module_moreButton_98oqy {
488
488
  margin-top: 12px;
489
489
  }
490
+
490
491
  .ktl-hit-list-module_hitList_1MP6m {
491
492
  margin: 40px 0 50px 0;
492
493
  }
@@ -496,6 +497,11 @@
496
497
  font-style: normal;
497
498
  }
498
499
 
500
+ .ktl-hit-list-module_snippet_WmrYL em {
501
+ background: rgba(127, 82, 255, 0.2);
502
+ font-style: normal;
503
+ }
504
+
499
505
  .ktl-full-search-module_fullSearch_MTU8t {
500
506
  display: none;
501
507
  box-sizing: border-box;
@@ -668,64 +674,27 @@
668
674
  --ktl-overlay-z-index: 900;
669
675
  --ktl-top-menu-z-index: 905;
670
676
  --ktl-header-z-index: 906;
671
- --ktl-header-height-mobile: 48px;
677
+ --ktl-mobile-dropdown-list-z-index: 907;
678
+ --ktl-header-height-mobile: 52px;
672
679
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
673
680
  --rs-font-family-ui: var(--ktl-font-family-inter);
674
681
  }
675
682
 
676
683
  .ktl-menu-popup-module_menu-popup_Q68IE {
677
- display: none;
678
- padding: 8px 0;
679
- background: var(--ktl-dark-100);
680
- position: fixed;
681
- top: var(--ktl-header-height-mobile);
682
- bottom: 0;
683
- left: 0;
684
- right: 0;
685
- overflow: auto;
686
- z-index: var(--ktl-top-menu-z-index);
687
- }
688
-
689
- .ktl-menu-popup-module_menu-item_fPvF- {
690
- --level: 0;
691
- display: flex;
692
- align-items: center;
693
- font-size: 16px;
694
- line-height: 24px;
695
- font-weight: 400;
696
- color: rgba(255, 255, 255, 0.75);
697
- text-decoration: none;
698
- padding: 8px 16px 8px calc(16px + (var(--level) * 24px));
699
- transition: color var(--ktl-transition-xfast),
700
- background-color var(--ktl-transition-xfast);
701
- }
702
-
703
- .ktl-menu-popup-module_menu-item_fPvF-:hover {
704
- color: rgba(255, 255, 255, 1);
705
- background: rgba(255, 255, 255, 0.1);
706
- text-decoration: none;
707
- }
708
-
709
- .ktl-menu-popup-module_menu-item_fPvF-.ktl-menu-popup-module_active_iqTAj {
710
- color: var(--ktl-light-text-hard);
711
- background: rgba(255, 255, 255, 1);
712
- cursor: default;
713
- text-decoration: none;
714
- }
715
-
716
- .ktl-menu-popup-module_menu-item_fPvF-.ktl-menu-popup-module_active-with-child_tAzCG {
717
- background: none;
718
- color: rgba(255, 255, 255, 1);
719
- }
720
-
721
- .ktl-menu-popup-module_menu-item-root_gA9d2 {
722
- font-size: 20px;
723
- line-height: 32px;
724
- font-weight: 600;
684
+ display: none;
685
+ padding: 8px 0;
686
+ background: var(--ktl-dark-100);
687
+ position: fixed;
688
+ top: var(--ktl-header-height-mobile);
689
+ bottom: 0;
690
+ left: 0;
691
+ right: 0;
692
+ overflow: auto;
693
+ z-index: var(--ktl-top-menu-z-index);
725
694
  }
726
695
 
727
696
  .ktl-menu-popup-module_menu-popup-expanded_ggrp9 {
728
- display: block;
697
+ display: block;
729
698
  }
730
699
 
731
700
  .ktl-menu-button-module_button_wB9Mx {
@@ -753,6 +722,97 @@
753
722
  color: #ffffff;
754
723
  }
755
724
 
725
+ :root {
726
+ --ktl-light-grey: #f4f4f4;
727
+ --ktl-dark-100: rgba(39, 40, 44, 1);
728
+ --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
729
+ --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
730
+ --ktl-color-white-light: rgba(255, 255, 255, 0.75);
731
+ --ktl-transition-xfast: 100ms;
732
+ --ktl-transition-fast: 300ms;
733
+ --ktl-color-primary-light-theme: #7f52ff;
734
+ --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
735
+ --ktl-light-text-hard: rgba(39, 40, 44, 1);
736
+ --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
737
+ --ktl-overlay-z-index: 900;
738
+ --ktl-top-menu-z-index: 905;
739
+ --ktl-header-z-index: 906;
740
+ --ktl-mobile-dropdown-list-z-index: 907;
741
+ --ktl-header-height-mobile: 52px;
742
+ --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
743
+ --rs-font-family-ui: var(--ktl-font-family-inter);
744
+ }
745
+
746
+ .ktl-menu-list-item-module_menu-item_Aruue {
747
+ --level: 0;
748
+ display: flex;
749
+ align-items: center;
750
+ font-size: 19px;
751
+ line-height: 28px;
752
+ font-weight: 400;
753
+ color: rgba(255, 255, 255, 0.75);
754
+ text-decoration: none;
755
+ padding: 12px 16px 12px 16px;
756
+ transition: color var(--ktl-transition-xfast),
757
+ background-color var(--ktl-transition-xfast);
758
+ }
759
+
760
+ .ktl-menu-list-item-module_menu-item_Aruue:hover {
761
+ color: rgba(255, 255, 255, 1);
762
+ background: rgba(255, 255, 255, 0.1);
763
+ text-decoration: none;
764
+ }
765
+
766
+ .ktl-menu-list-item-module_menu-item_Aruue.ktl-menu-list-item-module_active_jHfJR {
767
+ color: var(--ktl-light-text-hard);
768
+ background: rgba(255, 255, 255, 1);
769
+ cursor: default;
770
+ text-decoration: none;
771
+ }
772
+
773
+ .ktl-menu-list-item-module_menu-item_Aruue.ktl-menu-list-item-module_active-with-child_ier2a {
774
+ background: none;
775
+ color: rgba(255, 255, 255, 0.7);
776
+ }
777
+
778
+ .ktl-menu-list-item-module_menu-item-root_Rzcqb:not(a) {
779
+ font-size: 13px;
780
+ text-transform: uppercase;
781
+ line-height: 28px;
782
+ color: rgba(255, 255, 255, 0.7);
783
+ }
784
+
785
+ :root {
786
+ --ktl-light-grey: #f4f4f4;
787
+ --ktl-dark-100: rgba(39, 40, 44, 1);
788
+ --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
789
+ --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
790
+ --ktl-color-white-light: rgba(255, 255, 255, 0.75);
791
+ --ktl-transition-xfast: 100ms;
792
+ --ktl-transition-fast: 300ms;
793
+ --ktl-color-primary-light-theme: #7f52ff;
794
+ --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
795
+ --ktl-light-text-hard: rgba(39, 40, 44, 1);
796
+ --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
797
+ --ktl-overlay-z-index: 900;
798
+ --ktl-top-menu-z-index: 905;
799
+ --ktl-header-z-index: 906;
800
+ --ktl-mobile-dropdown-list-z-index: 907;
801
+ --ktl-header-height-mobile: 52px;
802
+ --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
803
+ --rs-font-family-ui: var(--ktl-font-family-inter);
804
+ }
805
+
806
+ .ktl-menu-list-module_menu-item-group_mFvUE {
807
+ margin: 8px 0;
808
+ padding: 8px 0;
809
+ border-top: 1px solid rgba(255, 255, 255, 0.3);
810
+ }
811
+
812
+ .ktl-menu-list-module_menu-item-group_mFvUE:not(:last-child) {
813
+ border-bottom: 1px solid rgba(255, 255, 255, 0.3);
814
+ }
815
+
756
816
  .ktl-logo-small-module_logo-small_iGY12 {
757
817
  flex-grow: 1;
758
818
  display: flex;
@@ -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, 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, 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';
@@ -0,0 +1,33 @@
1
+ import React__default, { Fragment } from 'react';
2
+ import { MenuListItem } from '../menu-list-item/menu-list-item.js';
3
+ import styles from './menu-list.module.pcss.js';
4
+
5
+ const MenuList = ({
6
+ items,
7
+ level,
8
+ linkHandler
9
+ }) => {
10
+ return React__default.createElement(React__default.Fragment, null, items.map((item, i) => React__default.createElement(Fragment, {
11
+ key: i
12
+ }, item.items && item.items.length > 0 ? React__default.createElement("div", {
13
+ className: styles.menuItemGroup
14
+ }, React__default.createElement(MenuListItem, {
15
+ item: item,
16
+ level: level,
17
+ linkHandler: linkHandler
18
+ }), item.items && item.items.length > 0 && React__default.createElement(MenuList, {
19
+ items: item.items,
20
+ level: level + 1,
21
+ linkHandler: linkHandler
22
+ })) : React__default.createElement(React__default.Fragment, null, React__default.createElement(MenuListItem, {
23
+ item: item,
24
+ level: level,
25
+ linkHandler: linkHandler
26
+ }), item.items && React__default.createElement(MenuList, {
27
+ items: item.items,
28
+ level: level + 1,
29
+ linkHandler: linkHandler
30
+ })))));
31
+ };
32
+
33
+ export { MenuList };
@@ -0,0 +1,4 @@
1
+ var styles = {
2
+ "menuItemGroup": "ktl-menu-list-module_menu-item-group_mFvUE"
3
+ };
4
+ export { styles as default };
@@ -0,0 +1,28 @@
1
+ import React__default, { useCallback } from 'react';
2
+ import classNames from 'classnames';
3
+ import styles from './menu-list-item.module.pcss.js';
4
+
5
+ const MenuListItem = ({
6
+ item,
7
+ level,
8
+ linkHandler
9
+ }) => {
10
+ const Tag = item.url ? 'a' : 'span';
11
+ const style = {
12
+ '--level': level
13
+ };
14
+ const handleClick = useCallback(event => linkHandler && item.url && linkHandler(event, item.url), []);
15
+ return React__default.createElement(Tag, Object.assign({}, item.url ? {
16
+ href: item.url,
17
+ onClick: handleClick
18
+ } : {}, {
19
+ className: classNames(styles.menuItem, {
20
+ [styles.menuItemRoot]: level === 0,
21
+ [styles.active]: item.isActive,
22
+ [styles.activeWithChild]: item.items && item.items.length
23
+ }),
24
+ style: style
25
+ }), item.title);
26
+ };
27
+
28
+ export { MenuListItem };
@@ -0,0 +1,7 @@
1
+ var styles = {
2
+ "menuItem": "ktl-menu-list-item-module_menu-item_Aruue",
3
+ "active": "ktl-menu-list-item-module_active_jHfJR",
4
+ "activeWithChild": "ktl-menu-list-item-module_active-with-child_ier2a",
5
+ "menuItemRoot": "ktl-menu-list-item-module_menu-item-root_Rzcqb"
6
+ };
7
+ export { styles as default };
@@ -1,51 +1,11 @@
1
- import React__default, { useRef, useState, useEffect, useLayoutEffect, useCallback, Fragment } from 'react';
1
+ import React__default, { useRef, useState, useEffect, useLayoutEffect, useCallback } 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';
5
6
  import { useTextStyles } from '@rescui/typography';
6
7
  import { clearAllBodyScrollLocks, enableBodyScroll, disableBodyScroll } from 'body-scroll-lock';
7
8
 
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
-
49
9
  const MenuPopup = ({
50
10
  items,
51
11
  isExpanded,
@@ -1,9 +1,5 @@
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",
7
3
  "menuPopupExpanded": "ktl-menu-popup-module_menu-popup-expanded_ggrp9"
8
4
  };
9
5
  export { styles as default };
@@ -1,4 +1,6 @@
1
1
  import { PLAYGROUND_URL, KOTLINLANG_URL } from './consts.js';
2
+ const HOME_TITLE = 'Home';
3
+ const HOME_URL = '/';
2
4
  const SOLUTIONS_TITLE = 'Solutions';
3
5
  const MULTIPLATFORM_MOBILE_TITLE = 'Multiplatform Mobile';
4
6
  const MULTIPLATFORM_MOBILE_URL = `/lp/mobile/`;
@@ -32,6 +34,9 @@ const KOTLIN_DOCS_URL = `/docs/home.html`;
32
34
  const KMM_DOCS_TITLE = 'KMM';
33
35
  const KMM_DOCS_URL = `/docs/mobile/home.html`;
34
36
  const navScheme = [{
37
+ title: HOME_TITLE,
38
+ url: HOME_URL
39
+ }, {
35
40
  title: SOLUTIONS_TITLE,
36
41
  url: null,
37
42
  items: [{
@@ -80,8 +85,9 @@ const navScheme = [{
80
85
  }]
81
86
  }];
82
87
 
83
- function getNavScheme(isUrlActive = (url, currentUrl) => url === currentUrl, currentUrl, isPlayground) {
84
- return navScheme.map(({
88
+ function getNavScheme(isUrlActive = (url, currentUrl) => url === currentUrl, currentUrl, isPlayground, withoutHomeSection) {
89
+ const controlledNavScheme = withoutHomeSection ? navScheme.slice(1) : navScheme;
90
+ return controlledNavScheme.map(({
85
91
  title,
86
92
  url,
87
93
  items
@@ -132,4 +138,4 @@ function makeExternalUrl(url, currentUrl, isPlayground) {
132
138
  return url;
133
139
  }
134
140
 
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 };
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 };
@@ -5,6 +5,8 @@ import styles from './dropdown-menu.module.pcss.js';
5
5
  import { useTextStyles } from '@rescui/typography';
6
6
  import SvgArrowDropdownIcon from './arrow-dropdown-icon.svg.js';
7
7
  import { useTheme } from '@rescui/ui-contexts';
8
+ import Button from '@rescui/button';
9
+ import { CloseIcon } from '@rescui/icons';
8
10
 
9
11
  const DropdownMenu = ({
10
12
  homeUrl,
@@ -39,11 +41,11 @@ const DropdownMenu = ({
39
41
  return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
40
42
  className: classNames(styles.dropdownMenu, {
41
43
  [styles.dropdownMenuExpanded]: isExpanded
42
- }),
43
- onClick: handleClick
44
+ })
44
45
  }, React__default.createElement("button", {
45
46
  className: classNames(styles.button, textCn('rs-text-2')),
46
- "aria-haspopup": "true"
47
+ "aria-haspopup": "true",
48
+ onClick: handleClick
47
49
  }, React__default.createElement("span", {
48
50
  className: styles.buttonText
49
51
  }, activeItem.title), React__default.createElement(SvgArrowDropdownIcon, {
@@ -52,10 +54,18 @@ const DropdownMenu = ({
52
54
  className: classNames(styles.dropdownList, {
53
55
  [styles.dropdownListDarkTheme]: theme === 'dark'
54
56
  })
55
- }, _items.map((item, index) => React__default.createElement("a", {
57
+ }, React__default.createElement("div", {
58
+ className: styles.dropdownHeader
59
+ }, React__default.createElement("div", {
60
+ className: textCn('rs-text-2')
61
+ }, title), React__default.createElement(Button, {
62
+ mode: 'clear',
63
+ icon: React__default.createElement(CloseIcon, null),
64
+ onClick: handleClick
65
+ })), _items.map((item, index) => React__default.createElement("a", {
56
66
  key: item.url,
57
67
  href: item.url,
58
- className: classNames(styles.dropdownItem, textCn('rs-text-2'), {
68
+ className: classNames(styles.dropdownItem, textCn('rs-text-1'), {
59
69
  [styles.dropdownItemActive]: index === _activeIndex
60
70
  }),
61
71
  onClick: event => linkHandler?.(event, item.url),
@@ -1,13 +1,14 @@
1
1
  var styles = {
2
+ "overlay": "ktl-dropdown-menu-module_overlay_segRo",
3
+ "fadein": "ktl-dropdown-menu-module_fadein_MySnq",
2
4
  "dropdownMenu": "ktl-dropdown-menu-module_dropdown-menu_tq2uU",
3
5
  "button": "ktl-dropdown-menu-module_button_OYsuv",
4
6
  "buttonText": "ktl-dropdown-menu-module_button-text_SJmh-",
5
7
  "icon": "ktl-dropdown-menu-module_icon_GGhMI",
8
+ "dropdownHeader": "ktl-dropdown-menu-module_dropdown-header_fa92T",
6
9
  "dropdownList": "ktl-dropdown-menu-module_dropdown-list_Ylkvt",
7
- "fadein": "ktl-dropdown-menu-module_fadein_MySnq",
8
10
  "dropdownItem": "ktl-dropdown-menu-module_dropdown-item_X3tZ-",
9
11
  "dropdownItemActive": "ktl-dropdown-menu-module_dropdown-item-active_99q9X",
10
- "overlay": "ktl-dropdown-menu-module_overlay_segRo",
11
12
  "overlayVisible": "ktl-dropdown-menu-module_overlay-visible_MjwEF",
12
13
  "dropdownMenuExpanded": "ktl-dropdown-menu-module_dropdown-menu-expanded_EQefy",
13
14
  "dropdownListDarkTheme": "ktl-dropdown-menu-module_dropdown-list-dark-theme_P60ol"
@@ -13,7 +13,8 @@
13
13
  --ktl-overlay-z-index: 900;
14
14
  --ktl-top-menu-z-index: 905;
15
15
  --ktl-header-z-index: 906;
16
- --ktl-header-height-mobile: 48px;
16
+ --ktl-mobile-dropdown-list-z-index: 907;
17
+ --ktl-header-height-mobile: 52px;
17
18
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
18
19
  --rs-font-family-ui: var(--ktl-font-family-inter);
19
20
  }
@@ -29,7 +30,6 @@
29
30
  height: 64px;
30
31
  background: #ffffff;
31
32
  padding: 0 32px;
32
- z-index: var(--ktl-top-menu-z-index);
33
33
  box-shadow: inset 0 -1px 0 0 var(--ktl-light-dark-20);
34
34
  transition: color var(--ktl-transition-fast),
35
35
  background-color var(--ktl-transition-fast);
@@ -48,7 +48,7 @@
48
48
 
49
49
  @media (max-width: 640px) {
50
50
  .ktl-top-menu-module_top-menu_PRX9X {
51
- height: 48px;
51
+ height: var(--ktl-header-height-mobile);
52
52
  padding: 0 16px;
53
53
  grid-gap: 16px;
54
54
  grid-template-columns: 1fr auto;
@@ -96,140 +96,154 @@
96
96
  --ktl-overlay-z-index: 900;
97
97
  --ktl-top-menu-z-index: 905;
98
98
  --ktl-header-z-index: 906;
99
- --ktl-header-height-mobile: 48px;
99
+ --ktl-mobile-dropdown-list-z-index: 907;
100
+ --ktl-header-height-mobile: 52px;
100
101
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
101
102
  --rs-font-family-ui: var(--ktl-font-family-inter);
102
103
  }
103
104
 
105
+ .ktl-dropdown-menu-module_overlay_segRo {
106
+ display: none;
107
+ position: fixed;
108
+ top: 0;
109
+ right: 0;
110
+ bottom: 0;
111
+ left: 0;
112
+ width: 100%;
113
+ height: 100%;
114
+ opacity: 0;
115
+ background-color: var(--ktl-color-dark-40);
116
+ z-index: var(--ktl-overlay-z-index);
117
+ -webkit-animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
118
+ animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
119
+ }
120
+
104
121
  .ktl-dropdown-menu-module_dropdown-menu_tq2uU {
105
- display: none;
106
- height: 100%;
107
- justify-self: flex-start;
108
- white-space: nowrap;
109
- min-width: 0;
110
- max-width: 100%;
122
+ display: none;
123
+ height: 100%;
124
+ justify-self: flex-start;
125
+ white-space: nowrap;
126
+ min-width: 0;
127
+ max-width: 100%;
111
128
  }
112
129
 
113
130
  .ktl-dropdown-menu-module_button_OYsuv {
114
- border: none;
115
- background: none;
116
- height: 100%;
117
- max-width: 100%;
118
- padding: 0;
119
- margin: 0;
120
- display: flex;
121
- align-items: center;
122
- justify-content: space-between;
123
- cursor: pointer;
131
+ border: none;
132
+ background: none;
133
+ height: 100%;
134
+ max-width: 100%;
135
+ padding: 0;
136
+ margin: 0;
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: space-between;
140
+ cursor: pointer;
124
141
  }
125
142
 
126
143
  .ktl-dropdown-menu-module_button-text_SJmh- {
127
- overflow: hidden;
128
- text-overflow: ellipsis;
129
- flex: 0 1 auto;
144
+ overflow: hidden;
145
+ text-overflow: ellipsis;
146
+ flex: 0 1 auto;
130
147
  }
131
148
 
132
149
  .ktl-dropdown-menu-module_icon_GGhMI {
133
- width: 12px;
134
- height: 6px;
135
- margin-left: 6px;
136
- transition: transform ease-in-out var(--ktl-transition-xfast);
137
- flex: 0 0 auto;
150
+ width: 12px;
151
+ height: 6px;
152
+ margin-left: 6px;
153
+ transition: transform ease-in-out var(--ktl-transition-xfast);
154
+ flex: 0 0 auto;
155
+ }
156
+
157
+ .ktl-dropdown-menu-module_dropdown-header_fa92T {
158
+ display: flex;
159
+ color: #ffffff;
160
+ align-items: center;
161
+ height: var(--ktl-header-height-mobile);
162
+ padding: 0 16px;
163
+ border-bottom: 1px solid rgba(255, 255, 255, 0.3);
164
+ justify-content: space-between;
138
165
  }
139
166
 
140
167
  .ktl-dropdown-menu-module_dropdown-list_Ylkvt {
141
- display: none;
142
- position: absolute;
143
- left: 0;
144
- right: 0;
145
- background: #ffffff;
146
- opacity: 0;
147
- -webkit-animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
148
- animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
168
+ display: none;
169
+ position: fixed;
170
+ top: 0;
171
+ left: 0;
172
+ right: 0;
173
+ bottom: 0;
174
+ background: #ffffff;
175
+ opacity: 0;
176
+ -webkit-animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
177
+ animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
178
+ z-index: var(--ktl-mobile-dropdown-list-z-index);
149
179
  }
150
180
 
151
181
  .ktl-dropdown-menu-module_dropdown-item_X3tZ- {
152
- padding: 8px 16px;
153
- text-decoration: none;
154
- transition: color var(--ktl-transition-xfast),
182
+ padding: 12px 16px;
183
+ text-decoration: none;
184
+ transition: color var(--ktl-transition-xfast),
155
185
  background-color var(--ktl-transition-xfast);
156
186
  }
157
187
 
158
188
  .ktl-dropdown-menu-module_dropdown-item_X3tZ-:hover {
159
- background: rgba(39, 40, 44, 0.1);
160
- color: #27282c;
161
- }
189
+ background: rgba(39, 40, 44, 0.1);
190
+ color: #27282c;
191
+ }
162
192
 
163
193
  .ktl-dropdown-menu-module_dropdown-item_X3tZ-.ktl-dropdown-menu-module_dropdown-item-active_99q9X {
164
- background: var(--ktl-dark-100);
165
- color: #ffffff;
166
- }
167
-
168
- .ktl-dropdown-menu-module_overlay_segRo {
169
- display: none;
170
- position: fixed;
171
- top: 0;
172
- right: 0;
173
- bottom: 0;
174
- left: 0;
175
- width: 100%;
176
- height: 100%;
177
- opacity: 0;
178
- background-color: var(--ktl-color-dark-40);
179
- z-index: var(--ktl-overlay-z-index);
180
- -webkit-animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
181
- animation: ktl-dropdown-menu-module_fadein_MySnq ease-out var(--ktl-transition-fast) forwards;
182
- }
194
+ background: var(--ktl-dark-100);
195
+ color: #ffffff;
196
+ }
183
197
 
184
198
  .ktl-dropdown-menu-module_overlay-visible_MjwEF {
185
- display: block;
186
- opacity: 1;
199
+ display: block;
200
+ opacity: 1;
187
201
  }
188
202
 
189
203
  .ktl-dropdown-menu-module_dropdown-menu-expanded_EQefy .ktl-dropdown-menu-module_icon_GGhMI {
190
- transform: scale(1, -1);
191
- }
204
+ transform: scale(1, -1);
205
+ }
192
206
 
193
207
  .ktl-dropdown-menu-module_dropdown-menu-expanded_EQefy .ktl-dropdown-menu-module_dropdown-list_Ylkvt {
194
- display: flex;
195
- flex-direction: column;
196
- opacity: 1;
197
- }
208
+ display: flex;
209
+ flex-direction: column;
210
+ opacity: 1;
211
+ }
198
212
 
199
213
  .ktl-dropdown-menu-module_dropdown-list-dark-theme_P60ol {
200
- background: var(--ktl-dark-bg-hard);
214
+ background: var(--ktl-dark-bg-hard);
201
215
  }
202
216
 
203
217
  .ktl-dropdown-menu-module_dropdown-list-dark-theme_P60ol .ktl-dropdown-menu-module_dropdown-item_X3tZ-:hover {
204
- background: rgba(255, 255, 255, 0.1);
205
- color: #ffffff;
206
- }
218
+ background: rgba(255, 255, 255, 0.1);
219
+ color: #ffffff;
220
+ }
207
221
 
208
222
  .ktl-dropdown-menu-module_dropdown-list-dark-theme_P60ol .ktl-dropdown-menu-module_dropdown-item_X3tZ-.ktl-dropdown-menu-module_dropdown-item-active_99q9X {
209
- color: var(--ktl-light-text-hard);
210
- background: #ffffff;
211
- }
223
+ color: var(--ktl-light-text-hard);
224
+ background: #ffffff;
225
+ }
212
226
 
213
227
  @media (max-width: 640px) {
214
- .ktl-dropdown-menu-module_dropdown-menu_tq2uU {
215
- display: block;
216
- }
228
+ .ktl-dropdown-menu-module_dropdown-menu_tq2uU {
229
+ display: block;
230
+ }
217
231
  }
218
232
 
219
233
  @-webkit-keyframes ktl-dropdown-menu-module_fadein_MySnq {
220
- 0% {
221
- opacity: 0;
222
- }
223
- 100% {
224
- opacity: 1;
225
- }
234
+ 0% {
235
+ opacity: 0;
236
+ }
237
+ 100% {
238
+ opacity: 1;
239
+ }
226
240
  }
227
241
 
228
242
  @keyframes ktl-dropdown-menu-module_fadein_MySnq {
229
- 0% {
230
- opacity: 0;
231
- }
232
- 100% {
233
- opacity: 1;
234
- }
243
+ 0% {
244
+ opacity: 0;
245
+ }
246
+ 100% {
247
+ opacity: 1;
248
+ }
235
249
  }
@@ -13,7 +13,8 @@
13
13
  --ktl-overlay-z-index: 900;
14
14
  --ktl-top-menu-z-index: 905;
15
15
  --ktl-header-z-index: 906;
16
- --ktl-header-height-mobile: 48px;
16
+ --ktl-mobile-dropdown-list-z-index: 907;
17
+ --ktl-header-height-mobile: 52px;
17
18
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
18
19
  --rs-font-family-ui: var(--ktl-font-family-inter);
19
20
  }
@@ -13,7 +13,8 @@
13
13
  --ktl-overlay-z-index: 900;
14
14
  --ktl-top-menu-z-index: 905;
15
15
  --ktl-header-z-index: 906;
16
- --ktl-header-height-mobile: 48px;
16
+ --ktl-mobile-dropdown-list-z-index: 907;
17
+ --ktl-header-height-mobile: 52px;
17
18
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
18
19
  --rs-font-family-ui: var(--ktl-font-family-inter);
19
20
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jetbrains/kotlin-web-site-ui",
3
3
  "description": "UI components for Kotlin web sites development",
4
- "version": "4.1.1",
4
+ "version": "4.2.0-alpha.0",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
7
7
  "files": [