@jetbrains/kotlin-web-site-ui 4.1.2 → 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
  }
@@ -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
  }
@@ -671,64 +674,27 @@
671
674
  --ktl-overlay-z-index: 900;
672
675
  --ktl-top-menu-z-index: 905;
673
676
  --ktl-header-z-index: 906;
674
- --ktl-header-height-mobile: 48px;
677
+ --ktl-mobile-dropdown-list-z-index: 907;
678
+ --ktl-header-height-mobile: 52px;
675
679
  --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
676
680
  --rs-font-family-ui: var(--ktl-font-family-inter);
677
681
  }
678
682
 
679
683
  .ktl-menu-popup-module_menu-popup_Q68IE {
680
- display: none;
681
- padding: 8px 0;
682
- background: var(--ktl-dark-100);
683
- position: fixed;
684
- top: var(--ktl-header-height-mobile);
685
- bottom: 0;
686
- left: 0;
687
- right: 0;
688
- overflow: auto;
689
- z-index: var(--ktl-top-menu-z-index);
690
- }
691
-
692
- .ktl-menu-popup-module_menu-item_fPvF- {
693
- --level: 0;
694
- display: flex;
695
- align-items: center;
696
- font-size: 16px;
697
- line-height: 24px;
698
- font-weight: 400;
699
- color: rgba(255, 255, 255, 0.75);
700
- text-decoration: none;
701
- padding: 8px 16px 8px calc(16px + (var(--level) * 24px));
702
- transition: color var(--ktl-transition-xfast),
703
- background-color var(--ktl-transition-xfast);
704
- }
705
-
706
- .ktl-menu-popup-module_menu-item_fPvF-:hover {
707
- color: rgba(255, 255, 255, 1);
708
- background: rgba(255, 255, 255, 0.1);
709
- text-decoration: none;
710
- }
711
-
712
- .ktl-menu-popup-module_menu-item_fPvF-.ktl-menu-popup-module_active_iqTAj {
713
- color: var(--ktl-light-text-hard);
714
- background: rgba(255, 255, 255, 1);
715
- cursor: default;
716
- text-decoration: none;
717
- }
718
-
719
- .ktl-menu-popup-module_menu-item_fPvF-.ktl-menu-popup-module_active-with-child_tAzCG {
720
- background: none;
721
- color: rgba(255, 255, 255, 1);
722
- }
723
-
724
- .ktl-menu-popup-module_menu-item-root_gA9d2 {
725
- font-size: 20px;
726
- line-height: 32px;
727
- 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);
728
694
  }
729
695
 
730
696
  .ktl-menu-popup-module_menu-popup-expanded_ggrp9 {
731
- display: block;
697
+ display: block;
732
698
  }
733
699
 
734
700
  .ktl-menu-button-module_button_wB9Mx {
@@ -756,6 +722,97 @@
756
722
  color: #ffffff;
757
723
  }
758
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
+
759
816
  .ktl-logo-small-module_logo-small_iGY12 {
760
817
  flex-grow: 1;
761
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.2",
4
+ "version": "4.2.0-alpha.0",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
7
7
  "files": [