@antv/dumi-theme-antv 0.3.0-beta.8 → 0.3.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 (72) hide show
  1. package/dist/builtins/Playground/index.d.ts +3 -6
  2. package/dist/builtins/Playground/index.js +27 -7
  3. package/dist/layouts/DocLayout.js +4 -5
  4. package/dist/layouts/entry/Index.js +21 -12
  5. package/dist/layouts/entry/Manual.js +6 -4
  6. package/dist/pages/404.js +7 -4
  7. package/dist/pages/Example/index.js +15 -4
  8. package/dist/pages/Example/utils.d.ts +1 -0
  9. package/dist/pages/Example/utils.js +9 -0
  10. package/dist/pages/Examples/components/ExampleTopicMenu/components/LeftMenu/index.js +2 -1
  11. package/dist/pages/Examples/components/GalleryPageContent/DemoCard/index.js +10 -5
  12. package/dist/pages/Examples/components/GalleryPageContent/index.js +2 -1
  13. package/dist/pages/Examples/index.js +13 -4
  14. package/dist/pages/Examples/index.module.less +13 -0
  15. package/dist/pages/Examples/utils.d.ts +1 -0
  16. package/dist/pages/Examples/utils.js +3 -0
  17. package/dist/plugin/index.js +11 -0
  18. package/dist/slots/Article/index.d.ts +3 -0
  19. package/dist/slots/Article/index.js +11 -0
  20. package/dist/slots/Article/index.module.less +8 -0
  21. package/dist/slots/Banner/Notification.d.ts +10 -0
  22. package/dist/slots/Banner/Notification.js +43 -0
  23. package/dist/slots/Banner/Notification.module.less +120 -0
  24. package/dist/slots/Banner/index.d.ts +26 -0
  25. package/dist/slots/Banner/index.js +184 -0
  26. package/dist/slots/Banner/index.module.less +449 -0
  27. package/dist/slots/Cases/index.d.ts +1 -1
  28. package/dist/slots/Cases/index.js +13 -7
  29. package/dist/slots/Cases/index.module.less +2 -1
  30. package/dist/slots/CodeEditor/Toolbar.js +13 -6
  31. package/dist/slots/CodeEditor/index.d.ts +4 -0
  32. package/dist/slots/CodeEditor/index.js +43 -21
  33. package/dist/slots/CodeEditor/utils.js +1 -1
  34. package/dist/slots/CodePreview/CodeHeader.js +15 -14
  35. package/dist/slots/CodePreview/index.d.ts +8 -0
  36. package/dist/slots/CodePreview/index.js +15 -6
  37. package/dist/slots/CodePreview/index.module.less +11 -2
  38. package/dist/slots/CodeRunner/index.d.ts +2 -0
  39. package/dist/slots/CodeRunner/index.js +13 -5
  40. package/dist/slots/Companies/index.d.ts +1 -1
  41. package/dist/slots/{TOC.d.ts → ContentTable/index.d.ts} +2 -1
  42. package/dist/slots/{TOC.js → ContentTable/index.js} +2 -1
  43. package/dist/slots/ContentTable/index.module.less +11 -0
  44. package/dist/slots/Detail/News.js +3 -2
  45. package/dist/slots/Detail/index.js +3 -1
  46. package/dist/slots/ExampleSider/index.js +21 -20
  47. package/dist/slots/Features/index.js +5 -2
  48. package/dist/slots/Features/index.module.less +3 -3
  49. package/dist/slots/Footer/index.js +34 -14
  50. package/dist/slots/Header/LogoWhite.js +1 -2
  51. package/dist/slots/Header/Navs.d.ts +10 -1
  52. package/dist/slots/Header/Navs.js +36 -25
  53. package/dist/slots/Header/Products/NavigatorBanner.js +4 -3
  54. package/dist/slots/Header/Products/Product.js +7 -3
  55. package/dist/slots/Header/Products/getProducts.js +4 -2
  56. package/dist/slots/Header/Products/index.js +5 -3
  57. package/dist/slots/Header/Search.js +5 -3
  58. package/dist/slots/Header/index.d.ts +7 -2
  59. package/dist/slots/Header/index.js +128 -24
  60. package/dist/slots/ManualContent/NavigatorBanner.js +5 -3
  61. package/dist/slots/ManualContent/ReadingTime.js +6 -2
  62. package/dist/slots/ManualContent/index.js +36 -30
  63. package/dist/slots/ManualContent/index.module.less +52 -33
  64. package/dist/slots/ManualContent/utils.d.ts +15 -0
  65. package/dist/slots/ManualContent/utils.js +30 -1
  66. package/dist/slots/SEO.d.ts +10 -0
  67. package/dist/slots/SEO.js +59 -0
  68. package/dist/slots/_.less +1 -1
  69. package/dist/slots/hooks.d.ts +1 -1
  70. package/dist/slots/hooks.js +5 -8
  71. package/dist/slots/utils.js +6 -1
  72. package/package.json +5 -2
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { NotificationProps } from './Notification';
3
+ import 'video-react/dist/video-react.css';
4
+ declare type BannerButtonShape = 'round' | 'square';
5
+ interface BannerButton {
6
+ text: string;
7
+ link: string;
8
+ style?: React.CSSProperties;
9
+ type?: string;
10
+ shape?: BannerButtonShape;
11
+ }
12
+ interface BannerProps {
13
+ coverImage?: React.ReactNode;
14
+ title: string;
15
+ description: string;
16
+ notifications?: NotificationProps[];
17
+ style?: React.CSSProperties;
18
+ className?: string;
19
+ video?: string;
20
+ showGithubStars?: boolean;
21
+ buttons?: BannerButton[];
22
+ onCloseVideo?: () => void;
23
+ onPlayVideo?: () => void;
24
+ }
25
+ declare const Banner: React.FC<BannerProps>;
26
+ export default Banner;
@@ -0,0 +1,184 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
7
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
8
+
9
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
+
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
+
17
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
18
+
19
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
+
21
+ import React, { useEffect, useState } from 'react';
22
+ import { Modal } from 'antd';
23
+ import { CaretRightOutlined } from '@ant-design/icons';
24
+ import { FormattedMessage, Link, useLocale, useSiteData } from 'dumi';
25
+ import classNames from 'classnames';
26
+ import GitHubButton from 'react-github-button';
27
+ import gh from 'parse-github-url';
28
+ import { Player } from 'video-react';
29
+ import Notification from "./Notification";
30
+ import 'video-react/dist/video-react.css';
31
+ import styles from "./index.module.less";
32
+ var backLeftBottom = 'https://gw.alipayobjects.com/zos/basement_prod/441d5eaf-e623-47cd-b9b9-2a581d9ce1e3.svg';
33
+
34
+ var Banner = function Banner(_ref) {
35
+ var coverImage = _ref.coverImage,
36
+ title = _ref.title,
37
+ description = _ref.description,
38
+ notifications = _ref.notifications,
39
+ _ref$style = _ref.style,
40
+ style = _ref$style === void 0 ? {} : _ref$style,
41
+ className = _ref.className,
42
+ video = _ref.video,
43
+ _ref$showGithubStars = _ref.showGithubStars,
44
+ showGithubStars = _ref$showGithubStars === void 0 ? true : _ref$showGithubStars,
45
+ _ref$buttons = _ref.buttons,
46
+ buttons = _ref$buttons === void 0 ? [] : _ref$buttons,
47
+ onCloseVideo = _ref.onCloseVideo,
48
+ onPlayVideo = _ref.onPlayVideo;
49
+ var locale = useLocale();
50
+ var lang = locale.id.includes('zh') ? 'zh' : 'en';
51
+ var notificationsUrl = "https://my-json-server.typicode.com/antvis/antvis-sites-data/notifications?lang=".concat(lang);
52
+
53
+ var _useState = useState([]),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ remoteNews = _useState2[0],
56
+ setRemoteNews = _useState2[1];
57
+
58
+ var _useSiteData = useSiteData(),
59
+ themeConfig = _useSiteData.themeConfig;
60
+
61
+ var githubUrl = themeConfig.githubUrl;
62
+ useEffect(function () {
63
+ fetch(notificationsUrl).then(function (res) {
64
+ return res.json();
65
+ }).then(function (data) {
66
+ setRemoteNews(data);
67
+ });
68
+ }, [notificationsUrl]);
69
+ var notificationsNode = (notifications || remoteNews).slice(0, 2).map(function (notification, i) {
70
+ return /*#__PURE__*/React.createElement(Notification, _extends({
71
+ index: i,
72
+ key: i
73
+ }, notification));
74
+ });
75
+
76
+ var showVideo = function showVideo() {
77
+ if (onPlayVideo) {
78
+ onPlayVideo();
79
+ }
80
+
81
+ Modal.info({
82
+ title: 'This is a notification message',
83
+ className: styles.videoModal,
84
+ onCancel: onCloseVideo,
85
+ content: /*#__PURE__*/React.createElement(Player, {
86
+ className: styles.video,
87
+ autoPlay: true,
88
+ src: video
89
+ }),
90
+ width: '70%'
91
+ });
92
+ };
93
+
94
+ var renderButtons = buttons.map(function (button, i) {
95
+ var ButtonLink = button.link.startsWith('http') || button.link.startsWith('#') ? 'a' : Link;
96
+ var buttonProps = {};
97
+
98
+ if (button.link.startsWith('http')) {
99
+ buttonProps.target = '_blank';
100
+ buttonProps.rel = 'noopener noreferrer';
101
+ }
102
+
103
+ if (ButtonLink === 'a') {
104
+ buttonProps.href = button.link;
105
+ } else {
106
+ buttonProps.to = button.link;
107
+ }
108
+
109
+ var _button$shape = button.shape,
110
+ shape = _button$shape === void 0 ? 'round' : _button$shape;
111
+ return /*#__PURE__*/React.createElement(ButtonLink, _extends({}, buttonProps, {
112
+ className: classNames(styles.buttonLink, styles[button.type || ''], button.type === 'primary' ? 'primary-button' : 'common-button'),
113
+ key: i,
114
+ style: _objectSpread({
115
+ borderRadius: shape === 'round' ? '1000px' : '4px'
116
+ }, button.style)
117
+ }), /*#__PURE__*/React.createElement("span", {
118
+ className: styles.button
119
+ }, button.text));
120
+ });
121
+
122
+ if (video) {
123
+ renderButtons.push( /*#__PURE__*/React.createElement("div", {
124
+ key: "video",
125
+ onClick: showVideo,
126
+ className: styles.videoButtonWrapper
127
+ }, /*#__PURE__*/React.createElement("div", {
128
+ className: styles.videoButton
129
+ }, /*#__PURE__*/React.createElement(CaretRightOutlined, {
130
+ className: styles.videoButtonIcon
131
+ }), /*#__PURE__*/React.createElement("p", {
132
+ className: styles.videoButtonText,
133
+ style: {
134
+ fontSize: '14px',
135
+ lineHeight: '40px'
136
+ }
137
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
138
+ id: "\u77E5\u6E90\u30FB\u81F4\u8FDC"
139
+ })))));
140
+ }
141
+
142
+ if (showGithubStars) {
143
+ var githubObj = gh(githubUrl);
144
+
145
+ if (githubObj && githubObj.owner && githubObj.name) {
146
+ renderButtons.push( /*#__PURE__*/React.createElement("div", {
147
+ key: "github",
148
+ className: styles.githubWrapper
149
+ }, /*#__PURE__*/React.createElement(GitHubButton, {
150
+ type: "stargazers",
151
+ size: "large",
152
+ namespace: githubObj.owner,
153
+ repo: githubObj.name
154
+ })));
155
+ }
156
+ }
157
+
158
+ return /*#__PURE__*/React.createElement("section", {
159
+ className: classNames(styles.wrapper, className),
160
+ style: style
161
+ }, /*#__PURE__*/React.createElement("div", {
162
+ className: styles.content
163
+ }, /*#__PURE__*/React.createElement("div", {
164
+ className: styles.text
165
+ }, /*#__PURE__*/React.createElement("div", {
166
+ className: classNames(styles.title, 'banner-title')
167
+ }, title), /*#__PURE__*/React.createElement("p", {
168
+ className: classNames(styles.description, 'banner-description')
169
+ }, description), /*#__PURE__*/React.createElement("div", {
170
+ className: classNames(styles.buttons, 'banner-buttons')
171
+ }, renderButtons)), /*#__PURE__*/React.createElement("div", {
172
+ className: classNames(styles.notifications, 'notifications')
173
+ }, notificationsNode), /*#__PURE__*/React.createElement("div", {
174
+ className: classNames(styles.teaser, 'teaser')
175
+ }, /*#__PURE__*/React.createElement("div", {
176
+ className: classNames(styles.teaserimg, 'teaser-img')
177
+ }, coverImage)), /*#__PURE__*/React.createElement("img", {
178
+ className: styles.backLeftBottom,
179
+ src: backLeftBottom,
180
+ alt: "back"
181
+ })));
182
+ };
183
+
184
+ export default Banner;
@@ -0,0 +1,449 @@
1
+ @import '../_.less';
2
+
3
+ .wrapper {
4
+ min-height: 650px;
5
+ max-height: 803px;
6
+ background: linear-gradient(225deg, #ffffff, #f0f5ff);
7
+ height: calc(94vh);
8
+ position: relative;
9
+ overflow: hidden;
10
+
11
+ .content {
12
+ .container1440;
13
+ height: 100%;
14
+ position: relative;
15
+ }
16
+
17
+ .text {
18
+ position: relative;
19
+ top: 26%;
20
+ z-index: 1;
21
+ margin-left: 4.5%;
22
+
23
+ .title {
24
+ font-size: 3.4em; //2.875em;
25
+ font-weight: 800;
26
+ color: rgba(0, 0, 0, 1);
27
+ position: relative;
28
+ }
29
+
30
+ .description {
31
+ margin-top: 0.83%; //12px;
32
+ margin-bottom: 0px;
33
+ color: rgba(106, 123, 140, 1);
34
+ font-size: 1.14em;
35
+ font-weight: 200;
36
+ position: relative;
37
+ width: 40%;
38
+ max-width: 700px;
39
+ }
40
+
41
+ .buttons {
42
+ display: flex;
43
+ margin-top: 5.56%;
44
+
45
+ .buttonLink+.buttonLink {
46
+ margin-left: 16px;
47
+ }
48
+
49
+ .buttonLink {
50
+ cursor: pointer;
51
+ border-radius: 50px;
52
+ min-width: 134px;
53
+ padding-left: 15px;
54
+ padding-right: 15px;
55
+ height: 40px;
56
+ z-index: 10;
57
+ position: relative;
58
+ transition: all 0.3s;
59
+ border: 1px solid @primary-color;
60
+ color: @primary-color;
61
+ background: transparent;
62
+ text-align: center;
63
+ font-size: 1.14em;
64
+ line-height: 40px;
65
+
66
+ &:hover {
67
+ color: tint(@primary-color, 25%);
68
+ border: 1px solid tint(@primary-color, 25%);
69
+ background-color: fade(@primary-color, 3%);
70
+ }
71
+
72
+ &.primary {
73
+ border: none;
74
+ outline: none;
75
+ color: #fff;
76
+ background: linear-gradient(60deg,
77
+ fade(@primary-color, 70%),
78
+ shade(@primary-color, 20%));
79
+ opacity: 0.8;
80
+ box-shadow: 0 8px 10px fade(@primary-color, 20%);
81
+
82
+ &:hover {
83
+ opacity: 1;
84
+ }
85
+ }
86
+ }
87
+
88
+ .videoButtonWrapper {
89
+ margin-left: 16px;
90
+ width: fit-content;
91
+ height: fit-content;
92
+
93
+ .videoButton {
94
+ width: 40px;
95
+ height: 40px;
96
+ background-size: contain;
97
+ border: 1px solid @primary-color;
98
+ border-radius: 20px;
99
+ transition: all 0.15s;
100
+ display: flex;
101
+ cursor: pointer;
102
+ overflow: hidden;
103
+
104
+ .videoButtonIcon {
105
+ margin-left: 12px;
106
+ font-size: 16px;
107
+ color: @primary-color;
108
+ line-height: 44px;
109
+ }
110
+
111
+ .videoButtonText {
112
+ line-height: 40px;
113
+ margin-left: 10px;
114
+ color: @primary-color;
115
+ }
116
+
117
+ &:hover {
118
+ width: 134px;
119
+ }
120
+ }
121
+ }
122
+
123
+ .githubWrapper {
124
+ margin-left: 16px;
125
+ display: flex;
126
+
127
+ :global {
128
+ .gh-btn {
129
+ width: 40px;
130
+ height: 40px;
131
+ border-radius: 20px;
132
+ padding: 9px;
133
+ border: 1px solid #ced4d9;
134
+ background: transparent;
135
+ text-decoration: none;
136
+ white-space: nowrap;
137
+ display: flex;
138
+ cursor: pointer;
139
+ float: left;
140
+ transition: all 0.15s;
141
+
142
+ &:hover {
143
+ background: #f2f4f5;
144
+ }
145
+
146
+ .gh-ico {
147
+ width: 16px;
148
+ height: 16px;
149
+ margin-left: 2px;
150
+ margin-top: 2px;
151
+ background-image: url(https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*Nk9mQ48ZoZMAAAAAAAAAAABkARQnAQ);
152
+ background-size: 100% 100%;
153
+ background-repeat: no-repeat;
154
+ box-sizing: border-box;
155
+ cursor: pointer;
156
+ color: #333;
157
+ }
158
+
159
+ .gh-text {
160
+ display: none;
161
+ }
162
+ }
163
+
164
+ .gh-count {
165
+ position: relative;
166
+ display: none;
167
+ /* hidden to start */
168
+ margin-left: 52px;
169
+ margin-top: 7px;
170
+ border: 1px solid #d4d4d4;
171
+ padding: 2px 10px;
172
+ font-weight: 700;
173
+ height: 65%;
174
+ border-radius: 5px;
175
+ color: rgb(49, 70, 89);
176
+
177
+ &:hover {
178
+ background: #f2f4f5;
179
+ transition: all 0.15s;
180
+ }
181
+ }
182
+
183
+ .gh-count:hover,
184
+ .gh-count:focus {
185
+ color: #4183c4;
186
+ }
187
+
188
+ .gh-count:before,
189
+ .gh-count:after {
190
+ content: '';
191
+ position: absolute;
192
+ display: inline-block;
193
+ width: 0;
194
+ height: 0;
195
+ border-color: transparent;
196
+ border-style: solid;
197
+ }
198
+
199
+ .gh-count:before {
200
+ top: 50%;
201
+ left: -3px;
202
+ margin-top: -5px;
203
+ border-width: 4px 4px 4px 0;
204
+ border-right-color: #fafafa;
205
+ }
206
+
207
+ .gh-count:after {
208
+ top: 50%;
209
+ border-width: 5px 5px 5px 0;
210
+ border-right-color: #d4d4d4;
211
+ left: -5px;
212
+ z-index: -1;
213
+ margin-top: -6px;
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ .notifications {
221
+ width: 80%;
222
+ display: flex;
223
+ bottom: 40px;
224
+ position: absolute;
225
+ z-index: 3;
226
+ margin-left: 4.5%;
227
+ }
228
+
229
+ .teaser {
230
+ display: flex;
231
+ position: absolute;
232
+ right: 0;
233
+ margin-top: -300px;
234
+ width: 52%;
235
+ max-width: 598px;
236
+ height: 324px;
237
+ margin: auto;
238
+ margin-top: 0;
239
+ top: 0;
240
+ bottom: 0;
241
+
242
+ .teaserimg {
243
+ width: 100%;
244
+ height: auto;
245
+ position: relative;
246
+ }
247
+ }
248
+
249
+ .backLeftBottom {
250
+ position: absolute;
251
+ left: -8%;
252
+ bottom: -20px;
253
+ }
254
+ }
255
+
256
+ .videoModal {
257
+ :global {
258
+ .video-react-big-play-button {
259
+ display: none !important;
260
+ }
261
+
262
+ .video-react-control-bar {
263
+ border-radius: 0 0 4px 4px;
264
+ }
265
+
266
+ .video-react {
267
+ border-radius: 4px;
268
+
269
+ .video-react-video {
270
+ border-radius: 4px;
271
+ }
272
+ }
273
+
274
+ .ant-modal-close {
275
+ right: -50px;
276
+ top: -12px;
277
+ color: #fff;
278
+ }
279
+
280
+ .anticon-info-circle {
281
+ display: none !important;
282
+ }
283
+
284
+ .ant-modal-confirm-btns {
285
+ display: none !important;
286
+ }
287
+
288
+ .ant-modal-confirm-title {
289
+ display: none !important;
290
+ }
291
+
292
+ .ant-modal-close {
293
+ display: block !important;
294
+ }
295
+
296
+ .ant-modal-body {
297
+ padding: 0 !important;
298
+
299
+ .ant-modal-confirm-content {
300
+ margin: 0 !important;
301
+ }
302
+ }
303
+ }
304
+ }
305
+
306
+ @media (max-width: 1144px) {
307
+ .wrapper {
308
+ .teaser {
309
+ transition: 0.3s all;
310
+ margin: auto;
311
+ margin-top: 0;
312
+ top: 0;
313
+ bottom: 0;
314
+ }
315
+ }
316
+ }
317
+
318
+ @media (max-width: 900px) {
319
+ .wrapper {
320
+ .content {
321
+ width: 91.46%;
322
+ margin-left: 4.27%;
323
+ margin-bottom: 5%;
324
+ position: relative;
325
+ }
326
+
327
+ .text {
328
+ top: 16.7%;
329
+ text-align: center;
330
+ margin-left: 0;
331
+
332
+ .title {
333
+ font-size: 2.857em;
334
+ margin-left: 0;
335
+ }
336
+
337
+ .description {
338
+ width: 100%;
339
+ max-width: 100%;
340
+ margin-left: 0;
341
+ font-size: 1em;
342
+ }
343
+
344
+ .buttons {
345
+ display: inline-flex;
346
+
347
+ .more {
348
+ font-size: 1em;
349
+ }
350
+
351
+ .githubIframe {
352
+ height: 40px;
353
+ }
354
+
355
+ .videoButtonWrapper {
356
+ width: fit-content;
357
+ height: fit-content;
358
+ }
359
+ }
360
+ }
361
+
362
+ .notifications {
363
+ width: 100%;
364
+ display: block;
365
+ bottom: 20px;
366
+ height: 48px;
367
+ overflow: hidden;
368
+ }
369
+
370
+ .teaser {
371
+ width: 100%;
372
+ max-width: 1200px;
373
+ margin-top: auto;
374
+ margin-left: unset;
375
+ margin-right: unset;
376
+ right: unset;
377
+ top: 30%;
378
+ display: flex;
379
+ justify-content: center;
380
+
381
+ .teaserimg {
382
+ width: 40%;
383
+ margin-left: unset;
384
+ margin-right: unset;
385
+ }
386
+ }
387
+ }
388
+ }
389
+
390
+ @media (max-width: 786px) {
391
+ .wrapper {
392
+ .text {
393
+ .buttons {
394
+ .videoButtonWrapper {
395
+ display: none;
396
+ }
397
+ }
398
+ }
399
+ }
400
+ }
401
+
402
+ @media (max-width: 510px) {
403
+ .wrapper {
404
+ .text {
405
+ .buttons {
406
+ margin-top: 70%;
407
+
408
+ .githubWrapper {
409
+ display: none;
410
+ }
411
+ }
412
+ }
413
+
414
+ .teaser {
415
+ width: 100%;
416
+ top: 5%;
417
+
418
+ .teaserimg {
419
+ width: 100%;
420
+ }
421
+ }
422
+
423
+ .backLeftBottom {
424
+ display: none;
425
+ }
426
+ }
427
+ }
428
+
429
+ @media (max-width: 480px) {
430
+ .wrapper {
431
+ .text {
432
+ height: 70%;
433
+
434
+ .buttons {
435
+ bottom: 10px;
436
+ margin-top: unset;
437
+ z-index: 1;
438
+ position: absolute;
439
+ left: 0;
440
+ width: 100%;
441
+ justify-content: center;
442
+ }
443
+ }
444
+
445
+ .teaser {
446
+ top: 14%;
447
+ }
448
+ }
449
+ }
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
+ import { IC } from '../../types';
2
3
  import 'slick-carousel/slick/slick.css';
3
4
  import 'slick-carousel/slick/slick-theme.css';
4
- import { IC } from '../../types';
5
5
  interface Case {
6
6
  logo?: string;
7
7
  isAppLogo?: boolean;