@jetbrains/kotlin-web-site-ui 3.1.0 → 4.0.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.
Files changed (151) hide show
  1. package/out/blocks/formik-wrapper/index.css +8 -0
  2. package/out/blocks/formik-wrapper/index.js +4 -0
  3. package/out/blocks/formik-wrapper/input.js +38 -0
  4. package/out/blocks/formik-wrapper/privacy-checkbox.js +52 -0
  5. package/out/blocks/formik-wrapper/privacy-notice.js +49 -0
  6. package/out/blocks/formik-wrapper/privacy-notice.module.pcss.js +6 -0
  7. package/out/blocks/formik-wrapper/submit-button.js +21 -0
  8. package/out/components/cta-block/cta-block.js +45 -0
  9. package/out/components/cta-block/cta-block.module.pcss.js +8 -0
  10. package/out/components/cta-block/index.css +36 -0
  11. package/out/components/cta-block/index.js +3 -0
  12. package/out/components/footer/footer.js +73 -0
  13. package/out/components/footer/footer.module.pcss.js +13 -0
  14. package/out/components/footer/index.css +242 -0
  15. package/out/components/footer/index.js +3 -0
  16. package/out/components/footer/logo/jetbrains-logo.svg.js +38 -0
  17. package/out/components/footer/logo/logo.js +14 -0
  18. package/out/components/footer/logo/logo.module.pcss.js +4 -0
  19. package/out/components/footer/nav/nav-data.js +30 -0
  20. package/out/components/footer/nav/nav-item.js +31 -0
  21. package/out/components/footer/nav/nav-item.module.pcss.js +5 -0
  22. package/out/components/footer/nav/nav-list.js +18 -0
  23. package/out/components/footer/nav/nav-list.module.pcss.js +4 -0
  24. package/out/components/footer/social-list/social-data.js +38 -0
  25. package/out/components/footer/social-list/social-item/social-item.js +23 -0
  26. package/out/components/footer/social-list/social-item/social-item.module.pcss.js +5 -0
  27. package/out/components/footer/social-list/social-list.js +14 -0
  28. package/out/components/footer/social-list/social-list.module.pcss.js +4 -0
  29. package/out/components/footer/social-list/svg/github-logo.svg.js +35 -0
  30. package/out/components/footer/social-list/svg/reddit-logo.svg.js +33 -0
  31. package/out/components/footer/social-list/svg/slack-logo.svg.js +33 -0
  32. package/out/components/footer/social-list/svg/stackoverflow-logo.svg.js +36 -0
  33. package/out/components/footer/social-list/svg/twitter-logo.svg.js +33 -0
  34. package/out/components/footer/social-list/svg/youtube-logo.svg.js +35 -0
  35. package/out/components/grid/index.css +1081 -0
  36. package/out/components/grid/index.js +1 -0
  37. package/out/components/header/consts.js +3 -0
  38. package/out/components/header/header.js +68 -0
  39. package/out/components/header/header.module.pcss.js +6 -0
  40. package/out/components/header/horizontal-menu/horizontal-menu.js +110 -0
  41. package/out/components/header/horizontal-menu/horizontal-menu.module.pcss.js +16 -0
  42. package/out/components/header/index.css +402 -0
  43. package/out/components/header/index.js +4 -0
  44. package/out/components/header/logo-large/kotlin-logo-large.svg.js +53 -0
  45. package/out/components/header/logo-large/logo-large.js +40 -0
  46. package/out/components/header/logo-large/logo-large.module.pcss.js +6 -0
  47. package/out/components/header/logo-small/kotlin-logo-small.svg.js +47 -0
  48. package/out/components/header/logo-small/logo-small.js +33 -0
  49. package/out/components/header/logo-small/logo-small.module.pcss.js +7 -0
  50. package/out/components/header/menu-popup/menu-button/close-icon.svg.js +35 -0
  51. package/out/components/header/menu-popup/menu-button/hamburger-icon.svg.js +35 -0
  52. package/out/components/header/menu-popup/menu-button/menu-button.js +22 -0
  53. package/out/components/header/menu-popup/menu-button/menu-button.pcss.js +2 -0
  54. package/out/components/header/menu-popup/menu-popup.js +104 -0
  55. package/out/components/header/menu-popup/menu-popup.module.pcss.js +9 -0
  56. package/out/components/header/nav-scheme.js +135 -0
  57. package/out/components/header/search-button/search-button.js +22 -0
  58. package/out/components/header/search-button/search-button.module.pcss.js +5 -0
  59. package/out/components/header/search-button/search.svg.js +34 -0
  60. package/out/components/popup/index.css +35 -0
  61. package/out/components/popup/index.js +3 -0
  62. package/out/components/popup/popup.js +61 -0
  63. package/out/components/popup/popup.module.pcss.js +6 -0
  64. package/out/components/quotes-slider/index.css +86 -0
  65. package/out/components/quotes-slider/index.js +3 -0
  66. package/out/components/quotes-slider/quites-slider.js +100 -0
  67. package/out/components/quotes-slider/quote.svg.js +33 -0
  68. package/out/components/quotes-slider/quotes-slider.module.pcss.js +13 -0
  69. package/out/components/quotes-slider/slider-arrow.svg.js +33 -0
  70. package/out/components/top-menu/dropdown-menu/arrow-dropdown-icon.svg.js +34 -0
  71. package/out/components/top-menu/dropdown-menu/dropdown-menu.js +81 -0
  72. package/out/components/top-menu/dropdown-menu/dropdown-menu.module.pcss.js +14 -0
  73. package/out/components/top-menu/horizontal-menu/horizontal-menu.js +48 -0
  74. package/out/components/top-menu/horizontal-menu/horizontal-menu.module.pcss.js +6 -0
  75. package/out/components/top-menu/index.css +224 -0
  76. package/out/components/top-menu/index.js +3 -0
  77. package/out/components/top-menu/top-menu.js +51 -0
  78. package/out/components/top-menu/top-menu.module.pcss.js +6 -0
  79. package/out/components/typography/create-text-cn.js +26 -0
  80. package/out/components/typography/hooks.js +6 -0
  81. package/out/components/typography/index.css +176 -0
  82. package/out/components/typography/index.js +3 -0
  83. package/out/components/youtube-player/index.css +119 -0
  84. package/out/components/youtube-player/index.js +3 -0
  85. package/out/components/youtube-player/loading_24.svg.js +31 -0
  86. package/out/components/youtube-player/play_24.svg.js +31 -0
  87. package/out/components/youtube-player/utils.js +28 -0
  88. package/out/components/youtube-player/youtube-player.js +152 -0
  89. package/out/components/youtube-player/youtube-player.module.pcss.js +16 -0
  90. package/out/packages/data-services/index.js +9 -0
  91. package/out/packages/data-services/marketo-submiter.js +62 -0
  92. package/out/packages/data-services/privacy-consent-ids.json.js +5 -0
  93. package/out/packages/data-services/privacy-consent-service.js +44 -0
  94. package/out/packages/data-services/urls.js +4 -0
  95. package/{dist → out}/svg/kotlin_64.svg +0 -0
  96. package/package.json +18 -2
  97. package/dist/ctaBlock.css +0 -2
  98. package/dist/ctaBlock.css.map +0 -1
  99. package/dist/ctaBlock.js +0 -3
  100. package/dist/ctaBlock.js.LICENSE.txt +0 -8
  101. package/dist/ctaBlock.js.map +0 -1
  102. package/dist/dataServices.js +0 -3
  103. package/dist/dataServices.js.LICENSE.txt +0 -17
  104. package/dist/dataServices.js.map +0 -1
  105. package/dist/footer.css +0 -2
  106. package/dist/footer.css.map +0 -1
  107. package/dist/footer.js +0 -3
  108. package/dist/footer.js.LICENSE.txt +0 -14
  109. package/dist/footer.js.map +0 -1
  110. package/dist/formikWrappers.css +0 -2
  111. package/dist/formikWrappers.css.map +0 -1
  112. package/dist/formikWrappers.js +0 -3
  113. package/dist/formikWrappers.js.LICENSE.txt +0 -14
  114. package/dist/formikWrappers.js.map +0 -1
  115. package/dist/grid.css +0 -2
  116. package/dist/grid.css.map +0 -1
  117. package/dist/grid.js +0 -2
  118. package/dist/grid.js.map +0 -1
  119. package/dist/header.css +0 -2
  120. package/dist/header.css.map +0 -1
  121. package/dist/header.js +0 -3
  122. package/dist/header.js.LICENSE.txt +0 -14
  123. package/dist/header.js.map +0 -1
  124. package/dist/popup.css +0 -2
  125. package/dist/popup.css.map +0 -1
  126. package/dist/popup.js +0 -3
  127. package/dist/popup.js.LICENSE.txt +0 -26
  128. package/dist/popup.js.map +0 -1
  129. package/dist/quotesSlider.css +0 -2
  130. package/dist/quotesSlider.css.map +0 -1
  131. package/dist/quotesSlider.js +0 -3
  132. package/dist/quotesSlider.js.LICENSE.txt +0 -14
  133. package/dist/quotesSlider.js.map +0 -1
  134. package/dist/svg/loading_24.svg +0 -1
  135. package/dist/svg/play_24.svg +0 -1
  136. package/dist/svg/quote.svg +0 -3
  137. package/dist/svg/slider-arrow.svg +0 -3
  138. package/dist/topMenu.css +0 -2
  139. package/dist/topMenu.css.map +0 -1
  140. package/dist/topMenu.js +0 -3
  141. package/dist/topMenu.js.LICENSE.txt +0 -14
  142. package/dist/topMenu.js.map +0 -1
  143. package/dist/typography.css +0 -2
  144. package/dist/typography.css.map +0 -1
  145. package/dist/typography.js +0 -2
  146. package/dist/typography.js.map +0 -1
  147. package/dist/youtubePlayer.css +0 -2
  148. package/dist/youtubePlayer.css.map +0 -1
  149. package/dist/youtubePlayer.js +0 -3
  150. package/dist/youtubePlayer.js.LICENSE.txt +0 -14
  151. package/dist/youtubePlayer.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ .ktl-privacy-notice-module_privacy-notice_zZaV2 {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ }
5
+
6
+ .ktl-privacy-notice-module_message_GARBv, .ktl-privacy-notice-module_icon_RNFdD {
7
+ color: var(--ktl-icon-color-dark);
8
+ }
@@ -0,0 +1,4 @@
1
+ import './index.css';
2
+ export { FormikInput } from './input.js';
3
+ export { FormikPrivacyCheckbox } from './privacy-checkbox.js';
4
+ export { FormikSubmitButton } from './submit-button.js';
@@ -0,0 +1,38 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import Input from '@rescui/input';
3
+ import { useField, useFormikContext } from 'formik';
4
+
5
+ const FormikInput = ({
6
+ name,
7
+ onBlur,
8
+ onChange,
9
+ disabled,
10
+ ...restProps
11
+ }) => {
12
+ const [formikProps, meta] = useField(name);
13
+ const {
14
+ status,
15
+ isSubmitting,
16
+ submitCount
17
+ } = useFormikContext();
18
+ return jsx(Input, Object.assign({}, restProps, formikProps, {
19
+ onBlur: e => {
20
+ if (onBlur) {
21
+ onBlur(e);
22
+ }
23
+
24
+ formikProps.onBlur(e);
25
+ },
26
+ onChange: e => {
27
+ if (onChange) {
28
+ onChange(e);
29
+ }
30
+
31
+ formikProps.onChange(e);
32
+ },
33
+ disabled: isSubmitting || status && (status.disabled || status.submitted) || disabled,
34
+ error: (meta.touched || submitCount > 0) && meta.error
35
+ }), void 0);
36
+ };
37
+
38
+ export { FormikInput };
@@ -0,0 +1,52 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useField, useFormikContext } from 'formik';
3
+ import { PrivacyNotice } from './privacy-notice.js';
4
+ import { Checkbox } from '@rescui/checkbox';
5
+
6
+ const FormikPrivacyCheckbox = ({
7
+ consentId,
8
+ className,
9
+ privacy
10
+ }) => {
11
+ const name = 'privacyConsent';
12
+ const [{
13
+ value,
14
+ onBlur: onBlurFromFormik
15
+ }, meta] = useField({
16
+ name,
17
+ validate: val => {
18
+ if (!val) {
19
+ return 'This field is required';
20
+ }
21
+ }
22
+ });
23
+ const {
24
+ submitCount,
25
+ setFieldValue,
26
+ isSubmitting,
27
+ status
28
+ } = useFormikContext();
29
+ return jsx("div", Object.assign({
30
+ className: className
31
+ }, {
32
+ children: jsx(Checkbox, Object.assign({
33
+ name: name,
34
+ onBlur: e => {
35
+ onBlurFromFormik(e);
36
+ },
37
+ onChange: e => {
38
+ setFieldValue(name, e.target.checked);
39
+ },
40
+ checked: Boolean(value) || false,
41
+ disabled: isSubmitting || status && (status.disabled || status.submitted),
42
+ error: (meta.touched || submitCount > 0) && meta.error
43
+ }, {
44
+ children: jsx(PrivacyNotice, {
45
+ consentId: consentId,
46
+ privacy: privacy
47
+ }, void 0)
48
+ }), void 0)
49
+ }), void 0);
50
+ };
51
+
52
+ export { FormikPrivacyCheckbox };
@@ -0,0 +1,49 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
3
+ import Tooltip from '@rescui/tooltip';
4
+ import { InfoIcon } from '@rescui/icons';
5
+ import styles from './privacy-notice.module.pcss.js';
6
+ import classNames from 'classnames';
7
+
8
+ const PrivacyNotice = ({
9
+ privacy,
10
+ consentId
11
+ }) => {
12
+ const [textHtml, setTextHtml] = useState('');
13
+ useEffect(() => {
14
+ if (consentId) {
15
+ privacy.getConsentOptions(consentId).then(({
16
+ text
17
+ }) => setTextHtml(text));
18
+ }
19
+ }, [consentId]);
20
+ return jsxs("span", Object.assign({
21
+ className: styles.privacyNotice
22
+ }, {
23
+ children: [jsxs("span", Object.assign({
24
+ className: classNames(styles.message, 'ktl-text-3')
25
+ }, {
26
+ children: ["By submitting this form I agree to the", ' ', jsx("a", Object.assign({
27
+ target: "_blank",
28
+ rel: "noreferrer noopener",
29
+ href: "https://www.jetbrains.com/company/privacy.html",
30
+ className: "rs-link"
31
+ }, {
32
+ children: "JetBrains Privacy Policy"
33
+ }), void 0)]
34
+ }), void 0), textHtml && jsx(Tooltip, Object.assign({
35
+ content: jsx("span", {
36
+ dangerouslySetInnerHTML: {
37
+ __html: textHtml
38
+ }
39
+ }, void 0)
40
+ }, {
41
+ children: jsx(InfoIcon, {
42
+ size: "s",
43
+ className: styles.icon
44
+ }, void 0)
45
+ }), void 0)]
46
+ }), void 0);
47
+ };
48
+
49
+ export { PrivacyNotice };
@@ -0,0 +1,6 @@
1
+ var styles = {
2
+ "privacyNotice": "ktl-privacy-notice-module_privacy-notice_zZaV2",
3
+ "message": "ktl-privacy-notice-module_message_GARBv",
4
+ "icon": "ktl-privacy-notice-module_icon_RNFdD"
5
+ };
6
+ export { styles as default };
@@ -0,0 +1,21 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useFormikContext } from 'formik';
3
+ import Button from '@rescui/button';
4
+
5
+ const FormikSubmitButton = ({
6
+ disabled,
7
+ busy,
8
+ ...restProps
9
+ }) => {
10
+ const {
11
+ isValid,
12
+ isSubmitting
13
+ } = useFormikContext();
14
+ return jsx(Button, Object.assign({}, restProps, {
15
+ disabled: !isValid || disabled,
16
+ busy: isSubmitting || busy,
17
+ type: 'submit'
18
+ }), void 0);
19
+ };
20
+
21
+ export { FormikSubmitButton };
@@ -0,0 +1,45 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import styles from './cta-block.module.pcss.js';
3
+
4
+ const CtaBlock = ({
5
+ topTitle,
6
+ mainTitle,
7
+ children,
8
+ buttons
9
+ }) => {
10
+ return jsx("div", Object.assign({
11
+ className: styles.wrapper
12
+ }, {
13
+ children: jsxs("div", Object.assign({
14
+ className: 'ktl-container'
15
+ }, {
16
+ children: [topTitle && jsx("div", Object.assign({
17
+ className: styles.topTitle
18
+ }, {
19
+ children: jsx("div", Object.assign({
20
+ className: 'ktl-text-2 ktl-text-2_theme_dark'
21
+ }, {
22
+ children: topTitle
23
+ }), void 0)
24
+ }), void 0), jsx("div", Object.assign({
25
+ className: styles.mainTitle
26
+ }, {
27
+ children: jsx("h2", Object.assign({
28
+ className: 'ktl-hero ktl-hero_theme_dark'
29
+ }, {
30
+ children: mainTitle
31
+ }), void 0)
32
+ }), void 0), children && jsx("div", Object.assign({
33
+ className: styles.content
34
+ }, {
35
+ children: children
36
+ }), void 0), jsx("div", {}, void 0), buttons && jsx("div", Object.assign({
37
+ className: styles.buttons
38
+ }, {
39
+ children: buttons
40
+ }), void 0)]
41
+ }), void 0)
42
+ }), void 0);
43
+ };
44
+
45
+ export { CtaBlock };
@@ -0,0 +1,8 @@
1
+ var styles = {
2
+ "wrapper": "ktl-cta-block-module_wrapper_60Mug",
3
+ "topTitle": "ktl-cta-block-module_top-title_7p65f",
4
+ "mainTitle": "ktl-cta-block-module_main-title_r-947",
5
+ "content": "ktl-cta-block-module_content_9up3O",
6
+ "buttons": "ktl-cta-block-module_buttons_TbaMj"
7
+ };
8
+ export { styles as default };
@@ -0,0 +1,36 @@
1
+ .ktl-cta-block-module_wrapper_60Mug {
2
+ background: radial-gradient(89.53% 145.96% at 0.34% 100.79%, #EF4857 0%, #DE4970 17.58%, #B44DB0 50.31%, #7F52FF 97.03%);
3
+ color: #fff;
4
+ padding: 32px 0;
5
+ }
6
+ @media (min-width: 768px) {.ktl-cta-block-module_wrapper_60Mug {
7
+ padding: 48px 0
8
+ }
9
+ }
10
+
11
+ .ktl-cta-block-module_top-title_7p65f {
12
+ max-width: 330px;
13
+ margin-bottom: 64px;
14
+ }
15
+
16
+ @media (min-width: 768px) {
17
+
18
+ .ktl-cta-block-module_top-title_7p65f {
19
+ margin-bottom: 96px
20
+ }
21
+ }
22
+
23
+ .ktl-cta-block-module_main-title_r-947 {
24
+ }
25
+
26
+ .ktl-cta-block-module_content_9up3O {
27
+ margin-top: 32px;
28
+ }
29
+
30
+ .ktl-cta-block-module_buttons_TbaMj {
31
+ margin-top: 32px;
32
+ }
33
+
34
+ .ktl-cta-block-module_buttons_TbaMj button {
35
+ margin-right: 16px;
36
+ }
@@ -0,0 +1,3 @@
1
+ import './index.css';
2
+ import { CtaBlock } from './cta-block.js';
3
+ export { CtaBlock as default } from './cta-block.js';
@@ -0,0 +1,73 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useTheme } from '@rescui/ui-contexts';
3
+ import { SocialList } from './social-list/social-list.js';
4
+ import { NavList } from './nav/nav-list.js';
5
+ import { Logo } from './logo/logo.js';
6
+ import classNames from 'classnames';
7
+ import styles from './footer.module.pcss.js';
8
+ import { useTextStyles } from '@rescui/typography';
9
+
10
+ const Footer = ({
11
+ forwardedRef,
12
+ className
13
+ }) => {
14
+ const textCn = useTextStyles();
15
+ const theme = useTheme();
16
+ const linkClass = textCn('rs-link', {
17
+ hardness: 'pale',
18
+ mode: 'clear'
19
+ });
20
+ return jsxs("footer", Object.assign({
21
+ className: classNames(styles.footer, className, {
22
+ [styles.footerDarkTheme]: theme === 'dark'
23
+ }),
24
+ ref: forwardedRef
25
+ }, {
26
+ children: [jsxs("div", Object.assign({
27
+ className: styles.socialListArea
28
+ }, {
29
+ children: [jsx("div", Object.assign({
30
+ className: classNames(textCn('rs-h4'), styles.socialListTitle)
31
+ }, {
32
+ children: "Stay in touch:"
33
+ }), void 0), jsx(SocialList, {}, void 0)]
34
+ }), void 0), jsx(NavList, {
35
+ className: styles.navListArea
36
+ }, void 0), jsxs("div", Object.assign({
37
+ className: classNames(textCn('rs-text-3', {
38
+ hardness: 'pale'
39
+ }), styles.textArea)
40
+ }, {
41
+ children: [jsxs("div", Object.assign({
42
+ className: styles.copyright
43
+ }, {
44
+ children: ["Kotlin\u2122 is\u00A0protected under the", ' ', jsx("a", Object.assign({
45
+ className: classNames(linkClass, styles.underlinedLink),
46
+ href: "https://kotlinlang.org/foundation/kotlin-foundation.html"
47
+ }, {
48
+ children: "Kotlin\u00A0Foundation"
49
+ }), void 0), ' ', "and licensed under the", ' ', jsx("a", Object.assign({
50
+ className: classNames(linkClass, styles.underlinedLink),
51
+ target: "_blank",
52
+ href: "https://github.com/JetBrains/kotlin-web-site/blob/master/LICENSE"
53
+ }, {
54
+ children: "Apache 2\u00A0license"
55
+ }), void 0), "."]
56
+ }), void 0), ' ', jsxs("div", Object.assign({
57
+ className: styles.motto
58
+ }, {
59
+ children: ["Supported and developed by\u00A0", jsx("a", Object.assign({
60
+ className: classNames(linkClass, styles.underlinedLink),
61
+ href: "https://www.jetbrains.com/",
62
+ target: "_blank"
63
+ }, {
64
+ children: "JetBrains"
65
+ }), void 0)]
66
+ }), void 0)]
67
+ }), void 0), jsx(Logo, {
68
+ className: styles.logoArea
69
+ }, void 0)]
70
+ }), void 0);
71
+ };
72
+
73
+ export { Footer };
@@ -0,0 +1,13 @@
1
+ var styles = {
2
+ "footer": "ktl-footer-module_footer_m67Up",
3
+ "footerDarkTheme": "ktl-footer-module_footer-dark-theme_YUAFI",
4
+ "underlinedLink": "ktl-footer-module_underlined-link_G0wkq",
5
+ "socialListArea": "ktl-footer-module_social-list-area_bS3eE",
6
+ "socialListTitle": "ktl-footer-module_social-list-title_HPzIP",
7
+ "navListArea": "ktl-footer-module_nav-list-area_7JJh0",
8
+ "textArea": "ktl-footer-module_text-area_flccc",
9
+ "logoArea": "ktl-footer-module_logo-area_SsNTa",
10
+ "copyright": "ktl-footer-module_copyright_XjtgY",
11
+ "motto": "ktl-footer-module_motto_SiU1V"
12
+ };
13
+ export { styles as default };
@@ -0,0 +1,242 @@
1
+ .ktl-social-list-module_social-list_K2Nqu {
2
+ display: grid;
3
+ -moz-column-gap: 18px;
4
+ column-gap: 18px;
5
+ grid-auto-flow: column;
6
+ justify-content: start;
7
+ margin: -6px 0;
8
+ }
9
+
10
+ @media (max-width: 480px) {
11
+ .ktl-social-list-module_social-list_K2Nqu {
12
+ -moz-column-gap: 8px;
13
+ column-gap: 8px;
14
+ }
15
+ }
16
+
17
+ :root {
18
+ --ktl-light-grey: #f4f4f4;
19
+ --ktl-dark-100: rgba(39, 40, 44, 1);
20
+ --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
21
+ --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
22
+ --ktl-color-white-light: rgba(255, 255, 255, 0.75);
23
+ --ktl-transition-xfast: 100ms;
24
+ --ktl-transition-fast: 300ms;
25
+ --ktl-color-primary-light-theme: #7f52ff;
26
+ --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
27
+ --ktl-light-text-hard: rgba(39, 40, 44, 1);
28
+ --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
29
+ --ktl-overlay-z-index: 900;
30
+ --ktl-top-menu-z-index: 905;
31
+ --ktl-header-z-index: 906;
32
+ --ktl-header-height-mobile: 48px;
33
+ --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
34
+ --rs-font-family-ui: var(--ktl-font-family-inter);
35
+ }
36
+
37
+ .ktl-social-item-module_social-item_GpKEF {
38
+ width: 36px;
39
+ height: 36px;
40
+ padding: 6px;
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ box-sizing: border-box;
45
+ border-radius: 50%;
46
+ transition: color var(--ktl-transition-xfast),
47
+ background-color var(--ktl-transition-xfast);
48
+ color: var(--ktl-icon-color-dark);
49
+ }
50
+
51
+ .ktl-social-item-module_social-item_GpKEF:hover,
52
+ .ktl-social-item-module_social-item_GpKEF :focus {
53
+ color: var(--ktl-icon-color-dark);
54
+ background: rgba(39, 40, 44, 0.05);
55
+ }
56
+
57
+ .ktl-social-item-module_social-item-dark-theme_rOJWT {
58
+ color: var(--ktl-color-white-light);
59
+ }
60
+
61
+ .ktl-social-item-module_social-item-dark-theme_rOJWT:hover, .ktl-social-item-module_social-item-dark-theme_rOJWT:focus {
62
+ color: var(--ktl-color-white-light);
63
+ background: rgba(255, 255, 255, 0.1);
64
+ }
65
+ .ktl-nav-list-module_nav-list_-k4np {
66
+ display: flex;
67
+ flex-wrap: wrap;
68
+ margin: 0;
69
+ padding: 0;
70
+ list-style: none;
71
+ }
72
+
73
+ :root {
74
+ --ktl-light-grey: #f4f4f4;
75
+ --ktl-dark-100: rgba(39, 40, 44, 1);
76
+ --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
77
+ --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
78
+ --ktl-color-white-light: rgba(255, 255, 255, 0.75);
79
+ --ktl-transition-xfast: 100ms;
80
+ --ktl-transition-fast: 300ms;
81
+ --ktl-color-primary-light-theme: #7f52ff;
82
+ --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
83
+ --ktl-light-text-hard: rgba(39, 40, 44, 1);
84
+ --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
85
+ --ktl-overlay-z-index: 900;
86
+ --ktl-top-menu-z-index: 905;
87
+ --ktl-header-z-index: 906;
88
+ --ktl-header-height-mobile: 48px;
89
+ --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
90
+ --rs-font-family-ui: var(--ktl-font-family-inter);
91
+ }
92
+
93
+ .ktl-nav-item-module_nav-item_isoyN {
94
+ padding-right: 12px;
95
+ margin-right: 12px;
96
+ line-height: 32px;
97
+ position: relative;
98
+ }
99
+
100
+ .ktl-nav-item-module_nav-item_isoyN:not(:last-child)::after {
101
+ position: absolute;
102
+ content: '';
103
+ right: 0;
104
+ top: 50%;
105
+ width: 1px;
106
+ height: 12px;
107
+ transform: translateY(-50%);
108
+ background-color: rgba(39, 40, 44, 0.5);
109
+ }
110
+
111
+ .ktl-nav-item-module_nav-item_isoyN:last-child {
112
+ padding-right: 0;
113
+ margin-right: 0;
114
+ }
115
+
116
+ .ktl-nav-item-module_nav-item-dark-theme_FijdH:not(:last-child)::after {
117
+ background-color: rgba(255, 255, 255, 0.50)
118
+ }
119
+
120
+ @media (min-width: 640px) {
121
+ .ktl-nav-item-module_nav-item_isoyN {
122
+ line-height: 1.5;
123
+ }
124
+ }
125
+ .ktl-logo-module_link_bNecp {
126
+ text-decoration: none;
127
+ }
128
+
129
+ :root {
130
+ --ktl-light-grey: #f4f4f4;
131
+ --ktl-dark-100: rgba(39, 40, 44, 1);
132
+ --ktl-dark-bg-hard: rgba(27, 27, 27, 1);
133
+ --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);
134
+ --ktl-color-white-light: rgba(255, 255, 255, 0.75);
135
+ --ktl-transition-xfast: 100ms;
136
+ --ktl-transition-fast: 300ms;
137
+ --ktl-color-primary-light-theme: #7f52ff;
138
+ --ktl-color-dark-40: rgba(39, 40, 44, 0.4);
139
+ --ktl-light-text-hard: rgba(39, 40, 44, 1);
140
+ --ktl-light-dark-20: rgba(39, 40, 44, 0.2);
141
+ --ktl-overlay-z-index: 900;
142
+ --ktl-top-menu-z-index: 905;
143
+ --ktl-header-z-index: 906;
144
+ --ktl-header-height-mobile: 48px;
145
+ --ktl-font-family-inter: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Droid Sans', 'Helvetica Neue', Arial, sans-serif;
146
+ --rs-font-family-ui: var(--ktl-font-family-inter);
147
+ }
148
+
149
+ .ktl-footer-module_footer_m67Up {
150
+ background: var(--ktl-light-grey);
151
+ padding: 32px 16px 16px;
152
+ min-width: 320px;
153
+ box-sizing: border-box;
154
+ display: grid;
155
+ grid-template-columns: auto 75px;
156
+ grid-template-rows: auto;
157
+ grid-template-areas:
158
+ 'social-list social-list'
159
+ 'nav-list nav-list'
160
+ 'text logo';
161
+ grid-column-gap: 16px;
162
+ font-family: var(--ktl-font-family-inter);
163
+ text-rendering:optimizeLegibility;
164
+ -webkit-font-smoothing:antialiased;
165
+ -moz-osx-font-smoothing:grayscale;
166
+ }
167
+
168
+ .ktl-footer-module_footer-dark-theme_YUAFI {
169
+ background: var(--ktl-dark-100);
170
+ }
171
+
172
+ .ktl-footer-module_footer-dark-theme_YUAFI .ktl-footer-module_underlined-link_G0wkq {
173
+ border-color: inherit;
174
+ }
175
+
176
+ .ktl-footer-module_social-list-area_bS3eE {
177
+ grid-area: social-list;
178
+ }
179
+
180
+ .ktl-footer-module_social-list-title_HPzIP {
181
+ margin-bottom: 8px;
182
+ }
183
+
184
+ .ktl-footer-module_nav-list-area_7JJh0 {
185
+ grid-area: nav-list;
186
+ margin: 24px 0 32px;
187
+ }
188
+
189
+ .ktl-footer-module_text-area_flccc {
190
+ grid-area: text;
191
+ }
192
+
193
+ .ktl-footer-module_logo-area_SsNTa {
194
+ grid-area: logo;
195
+ }
196
+
197
+ .ktl-footer-module_copyright_XjtgY {
198
+ display: inline;
199
+ }
200
+
201
+ .ktl-footer-module_motto_SiU1V {
202
+ display: inline;
203
+ }
204
+
205
+ .ktl-footer-module_underlined-link_G0wkq {
206
+ border-color: var(--ktl-light-dark-20);
207
+ }
208
+
209
+ @media (min-width: 641px) {
210
+ .ktl-footer-module_footer_m67Up {
211
+ padding: 32px;
212
+ grid-template-columns: auto 60px;
213
+ grid-template-areas:
214
+ 'social-list logo'
215
+ 'nav-list logo'
216
+ 'text text';
217
+ }
218
+
219
+ .ktl-footer-module_text-area_flccc {
220
+ display: flex;
221
+ justify-content: space-between;
222
+ }
223
+
224
+ .ktl-footer-module_motto_SiU1V {
225
+ margin-left: 16px;
226
+ text-align: right;
227
+ }
228
+
229
+ .ktl-footer-module_social-list-area_bS3eE {
230
+ display: flex;
231
+ align-items: center;
232
+ }
233
+
234
+ .ktl-footer-module_social-list-title_HPzIP {
235
+ margin-bottom: 0;
236
+ margin-right: 24px;
237
+ }
238
+
239
+ .ktl-footer-module_nav-list-area_7JJh0 {
240
+ margin: 16px 0;
241
+ }
242
+ }
@@ -0,0 +1,3 @@
1
+ import './index.css';
2
+ import { Footer } from './footer.js';
3
+ export { Footer as default } from './footer.js';
@@ -0,0 +1,38 @@
1
+ import * as React from 'react';
2
+
3
+ var _path, _path2, _path3;
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 SvgJetbrainsLogo = props => /*#__PURE__*/React.createElement("svg", _extends({
24
+ viewBox: "0 0 60 60",
25
+ fill: "none",
26
+ xmlns: "http://www.w3.org/2000/svg"
27
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
28
+ d: "M60 0H0v60h60V0Z",
29
+ fill: "#000"
30
+ })), _path2 || (_path2 = /*#__PURE__*/React.createElement("path", {
31
+ d: "M27.648 48.706H5.178v3.765h22.47v-3.765ZM4.941 15.765l1.765-1.647c.47.588.941.941 1.53.941.705 0 1.058-.47 1.058-1.412V7.412H12v6.235c0 1.177-.353 2.118-.94 2.706-.59.588-1.53.941-2.707.941-1.765.118-2.706-.588-3.412-1.529ZM12.586 7.53h7.883v2.235h-5.177v1.529h4.706v2.118h-4.706v1.53h5.294v2.352h-7.882l-.118-9.765ZM24 9.882h-2.941V7.53h8.588v2.353h-2.941v7.412H24V9.882ZM5.177 19.53h5.06c1.175 0 2.117.352 2.705.823.353.353.588.941.588 1.647 0 1.177-.588 1.765-1.53 2.235 1.177.353 1.883 1.06 1.883 2.353 0 1.647-1.412 2.706-3.647 2.706H5.177V19.53Zm5.647 3.058c0-.588-.47-.823-1.176-.823H7.883v1.764H9.53c.824-.117 1.294-.352 1.294-.94Zm-.94 2.824H7.764v1.765h2.118c.824 0 1.294-.353 1.294-.942 0-.588-.47-.823-1.294-.823ZM14.352 19.53h4.588c1.53 0 2.471.352 3.177 1.058.588.589.823 1.294.823 2.236 0 1.53-.823 2.47-2 3.058l2.353 3.412h-3.058l-2-2.94h-1.177v2.94h-2.706V19.53Zm4.47 4.705c.942 0 1.413-.47 1.413-1.176 0-.824-.589-1.177-1.412-1.177h-1.765v2.353h1.765Z",
32
+ fill: "#fff"
33
+ })), _path3 || (_path3 = /*#__PURE__*/React.createElement("path", {
34
+ d: "M26.119 19.53h2.588l4.117 9.882h-2.94l-.707-1.765h-3.764l-.706 1.765h-2.824l4.236-9.883Zm2.352 5.882-1.058-2.706-1.06 2.706h2.118ZM33.177 19.53h2.706v9.764h-2.706V19.53ZM36.588 19.53h2.471l4 5.176v-5.177h2.706v9.765h-2.353L39.294 24v5.412h-2.706v-9.883ZM46 27.883l1.529-1.765c.941.824 2 1.177 3.176 1.177.706 0 1.177-.236 1.177-.706s-.353-.588-1.647-.941c-2.118-.47-3.647-1.06-3.647-3.06 0-1.764 1.411-3.176 3.764-3.176 1.648 0 2.942.47 4 1.294l-1.411 1.883c-.942-.588-1.883-.941-2.706-.941-.706 0-.941.235-.941.588 0 .47.353.588 1.647.941 2.235.47 3.647 1.177 3.647 3.059 0 2-1.53 3.176-4 3.176-1.765.118-3.412-.47-4.589-1.53Z",
35
+ fill: "#fff"
36
+ })));
37
+
38
+ export { SvgJetbrainsLogo as default };
@@ -0,0 +1,14 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import classNames from 'classnames';
3
+ import SvgJetbrainsLogo from './jetbrains-logo.svg.js';
4
+ import styles from './logo.module.pcss.js';
5
+
6
+ const Logo = props => jsx("a", Object.assign({
7
+ href: "https://jetbrains.com",
8
+ target: "_blank",
9
+ className: classNames(props.className, styles.link)
10
+ }, {
11
+ children: jsx(SvgJetbrainsLogo, {}, void 0)
12
+ }), void 0);
13
+
14
+ export { Logo };
@@ -0,0 +1,4 @@
1
+ var styles = {
2
+ "link": "ktl-logo-module_link_bNecp"
3
+ };
4
+ export { styles as default };