@platformatic/ui-components 0.1.32 → 0.1.34
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.
- package/.github/workflows/ci.yml +26 -26
- package/.nvmrc +1 -1
- package/LICENSE +201 -201
- package/README.md +30 -26
- package/dist/main.css +35 -23
- package/fonts/Montserrat/README.txt +81 -81
- package/index.html +12 -12
- package/index.js +62 -58
- package/package.json +76 -76
- package/postcss.config.cjs +8 -8
- package/public/api-icon-closed.svg +6 -6
- package/public/api-icon.svg +9 -9
- package/src/App.jsx +12 -12
- package/src/components/BorderedBox.jsx +16 -16
- package/src/components/BorderedBox.module.css +2 -2
- package/src/components/BorderedText.jsx +8 -8
- package/src/components/BorderedText.module.css +2 -2
- package/src/components/Box.jsx +14 -14
- package/src/components/Box.module.css +7 -7
- package/src/components/Button.jsx +23 -23
- package/src/components/Button.module.css +68 -21
- package/src/components/ButtonFullRounded.jsx +17 -0
- package/src/components/ButtonFullRounded.module.css +28 -0
- package/src/components/Checkbox.jsx +11 -0
- package/src/components/Checkbox.module.css +18 -0
- package/src/components/Common.module.css +7 -7
- package/src/components/DetailedMetric.jsx +32 -32
- package/src/components/DetailedMetric.module.css +2 -2
- package/src/components/DropDown.jsx +35 -35
- package/src/components/DropDown.module.css +22 -22
- package/src/components/FollowUs.jsx +35 -35
- package/src/components/FollowUs.module.css +11 -11
- package/src/components/GHLoginButton.jsx +14 -14
- package/src/components/HorizontalSeparator.jsx +10 -5
- package/src/components/HorizontalSeparator.module.css +23 -0
- package/src/components/Input.jsx +11 -11
- package/src/components/Input.module.css +7 -7
- package/src/components/List.jsx +20 -20
- package/src/components/List.module.css +11 -11
- package/src/components/ListElement.jsx +23 -23
- package/src/components/ListElement.module.css +23 -23
- package/src/components/Loadable.jsx +34 -34
- package/src/components/Loadable.module.css +13 -13
- package/src/components/LoginButton.jsx +17 -17
- package/src/components/LoginButton.module.css +7 -7
- package/src/components/LoginButton.test.jsx +25 -25
- package/src/components/Logo.jsx +58 -58
- package/src/components/Main.jsx +33 -33
- package/src/components/MetricValue.jsx +15 -15
- package/src/components/MetricValue.module.css +7 -7
- package/src/components/Modal.jsx +61 -29
- package/src/components/Modal.module.css +37 -25
- package/src/components/Playground.jsx +9 -9
- package/src/components/SearchBar.jsx +63 -63
- package/src/components/SearchBar.module.css +20 -20
- package/src/components/SimpleMetric.jsx +32 -32
- package/src/components/SimpleMetric.module.css +6 -6
- package/src/components/Status.jsx +26 -26
- package/src/components/TabbedWindow.jsx +34 -34
- package/src/components/TabbedWindow.module.css +16 -16
- package/src/components/TextWithLabel.jsx +11 -11
- package/src/components/TextWithLabel.module.css +8 -8
- package/src/components/Versions.jsx +9 -9
- package/src/components/VerticalSeparator.jsx +5 -5
- package/src/components/icons/ApiEmptyIcon.jsx +107 -107
- package/src/components/icons/ApiIcon.jsx +29 -29
- package/src/components/icons/ApiIconClosed.jsx +19 -19
- package/src/components/icons/CloseModalGreenHoverIcon.jsx +37 -0
- package/src/components/icons/CloseModalGreenIcon.jsx +27 -0
- package/src/components/icons/CloseModalIcon.jsx +26 -26
- package/src/components/icons/PullRequestIcon.jsx +31 -31
- package/src/components/icons/index.js +11 -9
- package/src/components/layouts/Layout.jsx +11 -11
- package/src/components/layouts/TwoColumnsLayout.jsx +12 -12
- package/src/components/layouts/TwoColumnsLayout.module.css +9 -9
- package/src/hooks/useEscapeKey.js +20 -20
- package/src/lib/utils.js +23 -23
- package/src/main.jsx +9 -9
- package/src/stories/BorderedBox.stories.jsx +33 -33
- package/src/stories/BorderedText.stories.jsx +24 -24
- package/src/stories/Button.stories.jsx +124 -107
- package/src/stories/ButtonFullRounded.stories.jsx +61 -0
- package/src/stories/Checkbox.stories.jsx +27 -0
- package/src/stories/DetailedMetric.stories.jsx +33 -33
- package/src/stories/DropDown.stories.jsx +62 -62
- package/src/stories/FollowUs.stories.jsx +14 -14
- package/src/stories/GHLoginButton.stories.jsx +14 -14
- package/src/stories/HorizontalSeparator.stories.jsx +12 -12
- package/src/stories/Input.stories.jsx +15 -15
- package/src/stories/Introduction.stories.mdx +211 -211
- package/src/stories/List.stories.jsx +29 -29
- package/src/stories/ListElement.stories.jsx +15 -15
- package/src/stories/Loadable.stories.jsx +75 -75
- package/src/stories/LoginButton.stories.jsx +15 -15
- package/src/stories/Logo.stories.jsx +17 -17
- package/src/stories/Modal.stories.jsx +94 -65
- package/src/stories/SearchBar.stories.jsx +28 -28
- package/src/stories/SimpleMetric.stories.jsx +41 -41
- package/src/stories/Status.stories.jsx +31 -31
- package/src/stories/TextWithLabel.stories.jsx +25 -25
- package/src/stories/TwoColumnsLayout.stories.jsx +42 -42
- package/src/styles/main.css +15 -15
- package/tailwind.config.cjs +42 -37
- package/vite.config.js +6 -6
- package/vitest.config.js +14 -14
- package/dist/api-icon-closed.svg +0 -6
- package/dist/api-icon.svg +0 -9
- package/dist/assets/index.5ac5acb7.js +0 -797
- package/dist/assets/index.d3f5882c.css +0 -1
- package/dist/index.html +0 -14
- package/dist/vite.svg +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
.box {
|
|
2
|
-
@apply p-5 m-0 md:p-0 md:m-24 flex flex-col;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.justifyCentered {
|
|
6
|
-
@apply justify-center;
|
|
7
|
-
}
|
|
1
|
+
.box {
|
|
2
|
+
@apply p-5 m-0 md:p-0 md:m-24 flex flex-col;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.justifyCentered {
|
|
6
|
+
@apply justify-center;
|
|
7
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import styles from './Button.module.css'
|
|
5
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
6
|
-
export default function Button (props) {
|
|
7
|
-
const { icon, label,
|
|
8
|
-
let
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<button className={
|
|
19
|
-
{icon ? <FontAwesomeIcon icon={icon} className='
|
|
20
|
-
<span>{label}</span>
|
|
21
|
-
</button>
|
|
22
|
-
)
|
|
23
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import styles from './Button.module.css'
|
|
5
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
6
|
+
export default function Button (props) {
|
|
7
|
+
const { icon, label, buttonClass = 'secondary', color = 'green', disabled, size = 'large', bold = false, ...rest } = props
|
|
8
|
+
let className = `${styles.button} ${styles[buttonClass + '-' + color]} ${styles['button-' + size]}`
|
|
9
|
+
if (disabled) {
|
|
10
|
+
className += ` ${styles.disabled}`
|
|
11
|
+
if (buttonClass === 'transparent') {
|
|
12
|
+
className += ` ${styles['disabled-transparent']}`
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (bold) className += ` ${styles.fontBold}`
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<button className={className} disabled={disabled} alt={label} {...rest}>
|
|
19
|
+
{icon ? <FontAwesomeIcon icon={icon} className={`${styles['margin-right-' + size]}`} data-testid='button-icon' /> : null}
|
|
20
|
+
<span>{label}</span>
|
|
21
|
+
</button>
|
|
22
|
+
)
|
|
23
|
+
}
|
|
@@ -1,21 +1,68 @@
|
|
|
1
|
-
.button {
|
|
2
|
-
@apply
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
.button {
|
|
2
|
+
@apply rounded text-center cursor-pointer font-normal;
|
|
3
|
+
}
|
|
4
|
+
.fontBold {
|
|
5
|
+
@apply font-semibold;
|
|
6
|
+
}
|
|
7
|
+
.button-small {
|
|
8
|
+
@apply p-1 text-sm;
|
|
9
|
+
}
|
|
10
|
+
.button-medium {
|
|
11
|
+
@apply p-1;
|
|
12
|
+
}
|
|
13
|
+
.button-large {
|
|
14
|
+
@apply p-2;
|
|
15
|
+
}
|
|
16
|
+
.button-extra-large {
|
|
17
|
+
@apply p-2 md:p-2.5;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.margin-right-medium,
|
|
21
|
+
.margin-right-small {
|
|
22
|
+
@apply mr-1;
|
|
23
|
+
}
|
|
24
|
+
.margin-right-large {
|
|
25
|
+
@apply mr-2;
|
|
26
|
+
}
|
|
27
|
+
.margin-right-extra-large {
|
|
28
|
+
@apply mr-3;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.primary-green {
|
|
32
|
+
@apply text-main-dark-blue bg-light-green;
|
|
33
|
+
}
|
|
34
|
+
.secondary-green {
|
|
35
|
+
@apply border-main-green text-main-green bg-none border border-solid box-border rounded-md;
|
|
36
|
+
}
|
|
37
|
+
.transparent-green {
|
|
38
|
+
@apply text-main-green border-0 bg-transparent hover:underline;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
.primary-red {
|
|
43
|
+
@apply text-main-dark-blue bg-error-red;
|
|
44
|
+
}
|
|
45
|
+
.secondary-red {
|
|
46
|
+
@apply border-error-red text-error-red bg-none border border-solid box-border rounded-md;
|
|
47
|
+
}
|
|
48
|
+
.transparent-red {
|
|
49
|
+
@apply text-error-red border-0 bg-transparent hover:underline;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.primary-white {
|
|
53
|
+
@apply text-main-dark-blue bg-white;
|
|
54
|
+
}
|
|
55
|
+
.secondary-white {
|
|
56
|
+
@apply border-white text-white bg-none border border-solid box-border rounded-md;
|
|
57
|
+
}
|
|
58
|
+
.transparent-white {
|
|
59
|
+
@apply text-white border-0 bg-transparent hover:underline;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.disabled {
|
|
63
|
+
@apply opacity-30 cursor-default;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.disabled-transparent {
|
|
67
|
+
@apply hover:no-underline;
|
|
68
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import styles from './ButtonFullRounded.module.css'
|
|
4
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
5
|
+
export default function ButtonFullRounded (props) {
|
|
6
|
+
// colorClass: white
|
|
7
|
+
// size: small|medium|large
|
|
8
|
+
const { icon, color = 'white', disabled, size = 'small' } = props
|
|
9
|
+
let className = `${styles.buttonRoundedFull} ${styles[color]} ${styles['button-' + size]}`
|
|
10
|
+
if (disabled) className += ` ${styles.disabled}`
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<button className={className} disabled={disabled} {...props}>
|
|
14
|
+
<FontAwesomeIcon icon={icon} data-testid='button-icon' />
|
|
15
|
+
</button>
|
|
16
|
+
)
|
|
17
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
.buttonRoundedFull {
|
|
2
|
+
@apply rounded-full flex justify-center cursor-pointer font-normal bg-main-dark-blue border items-center;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
.button-small {
|
|
7
|
+
@apply p-0 text-sm h-5 w-5;
|
|
8
|
+
}
|
|
9
|
+
.button-medium {
|
|
10
|
+
@apply p-1 h-6 w-6;
|
|
11
|
+
}
|
|
12
|
+
.button-large {
|
|
13
|
+
@apply p-2 h-7 w-7;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.green {
|
|
17
|
+
@apply border-light-green text-light-green ;
|
|
18
|
+
}
|
|
19
|
+
.red {
|
|
20
|
+
@apply border-error-red text-error-red;
|
|
21
|
+
}
|
|
22
|
+
.white {
|
|
23
|
+
@apply border-white text-white;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.disabled {
|
|
27
|
+
@apply bg-opacity-30 cursor-default;
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import styles from './Checkbox.module.css'
|
|
4
|
+
export default function Checkbox (props) {
|
|
5
|
+
const { disabled, ...rest } = props
|
|
6
|
+
let className = `${styles.checkbox}`
|
|
7
|
+
if (disabled) className += ` ${styles.disabled}`
|
|
8
|
+
return (
|
|
9
|
+
<input type='checkbox' className={className} disabled={disabled} {...rest} />
|
|
10
|
+
)
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
.checkbox {
|
|
2
|
+
@apply border border-light-green p-2 rounded-sm bg-main-dark-blue relative inline-block h-2 w-2;
|
|
3
|
+
-webkit-appearance: none;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.checkbox:checked {
|
|
7
|
+
@apply bg-light-green text-main-dark-blue;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.checkbox:checked:after {
|
|
11
|
+
@apply absolute top-[-2px] left-[1px] h-full w-full;
|
|
12
|
+
content: '\2714';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.disabled {
|
|
16
|
+
@apply border-white;
|
|
17
|
+
}
|
|
18
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
.padded {
|
|
2
|
-
@apply px-2 py-2.5;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.bordered {
|
|
6
|
-
@apply border border-solid box-border rounded-md;
|
|
7
|
-
}
|
|
1
|
+
.padded {
|
|
2
|
+
@apply px-2 py-2.5;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.bordered {
|
|
6
|
+
@apply border border-solid box-border rounded-md;
|
|
7
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import SimpleMetric from './SimpleMetric'
|
|
5
|
-
import HorizontalSeparator from './HorizontalSeparator'
|
|
6
|
-
import VerticalSeparator from './VerticalSeparator'
|
|
7
|
-
import styles from './DetailedMetric.module.css'
|
|
8
|
-
import MetricValue from './MetricValue'
|
|
9
|
-
export default function DetailedMetric (props) {
|
|
10
|
-
const { leftDetail, rightDetail } = props
|
|
11
|
-
return (
|
|
12
|
-
<SimpleMetric {...props}>
|
|
13
|
-
<HorizontalSeparator />
|
|
14
|
-
<div className={styles.detailContainer}>
|
|
15
|
-
<MetricValue
|
|
16
|
-
pre={leftDetail.pre}
|
|
17
|
-
unit={leftDetail.unit}
|
|
18
|
-
color={leftDetail.color}
|
|
19
|
-
value={leftDetail.value}
|
|
20
|
-
/>
|
|
21
|
-
<VerticalSeparator />
|
|
22
|
-
<MetricValue
|
|
23
|
-
pre={rightDetail.pre}
|
|
24
|
-
unit={rightDetail.unit}
|
|
25
|
-
color={rightDetail.color}
|
|
26
|
-
value={rightDetail.value}
|
|
27
|
-
/>
|
|
28
|
-
</div>
|
|
29
|
-
</SimpleMetric>
|
|
30
|
-
|
|
31
|
-
)
|
|
32
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import SimpleMetric from './SimpleMetric'
|
|
5
|
+
import HorizontalSeparator from './HorizontalSeparator'
|
|
6
|
+
import VerticalSeparator from './VerticalSeparator'
|
|
7
|
+
import styles from './DetailedMetric.module.css'
|
|
8
|
+
import MetricValue from './MetricValue'
|
|
9
|
+
export default function DetailedMetric (props) {
|
|
10
|
+
const { leftDetail, rightDetail } = props
|
|
11
|
+
return (
|
|
12
|
+
<SimpleMetric {...props}>
|
|
13
|
+
<HorizontalSeparator />
|
|
14
|
+
<div className={styles.detailContainer}>
|
|
15
|
+
<MetricValue
|
|
16
|
+
pre={leftDetail.pre}
|
|
17
|
+
unit={leftDetail.unit}
|
|
18
|
+
color={leftDetail.color}
|
|
19
|
+
value={leftDetail.value}
|
|
20
|
+
/>
|
|
21
|
+
<VerticalSeparator />
|
|
22
|
+
<MetricValue
|
|
23
|
+
pre={rightDetail.pre}
|
|
24
|
+
unit={rightDetail.unit}
|
|
25
|
+
color={rightDetail.color}
|
|
26
|
+
value={rightDetail.value}
|
|
27
|
+
/>
|
|
28
|
+
</div>
|
|
29
|
+
</SimpleMetric>
|
|
30
|
+
|
|
31
|
+
)
|
|
32
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
.detailContainer {
|
|
2
|
-
@apply flex items-center justify-around;
|
|
1
|
+
.detailContainer {
|
|
2
|
+
@apply flex items-center justify-around;
|
|
3
3
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import React, { useState } from 'react'
|
|
4
|
-
import styles from './DropDown.module.css'
|
|
5
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
6
|
-
import { faChevronLeft, faChevronDown } from '@fortawesome/free-solid-svg-icons'
|
|
7
|
-
export default function DropDown (props) {
|
|
8
|
-
const { header, items, align = 'left' } = props
|
|
9
|
-
const [open, setOpen] = useState(false)
|
|
10
|
-
function handleOpen () {
|
|
11
|
-
setOpen(!open)
|
|
12
|
-
}
|
|
13
|
-
return (
|
|
14
|
-
<div className={`${styles.dropDown} ${styles[align]}`}>
|
|
15
|
-
<span className={styles.header} onClick={handleOpen}>
|
|
16
|
-
{header}
|
|
17
|
-
{!open && <FontAwesomeIcon className={styles.arrow} icon={faChevronLeft} />}
|
|
18
|
-
{open && <FontAwesomeIcon className={styles.arrow} icon={faChevronDown} />}
|
|
19
|
-
</span>
|
|
20
|
-
{open && (
|
|
21
|
-
<div className={styles.menu}>
|
|
22
|
-
{items.map((item, index) => {
|
|
23
|
-
return (
|
|
24
|
-
<div className={styles.item} key={index}>
|
|
25
|
-
{item}
|
|
26
|
-
</div>
|
|
27
|
-
)
|
|
28
|
-
})}
|
|
29
|
-
</div>
|
|
30
|
-
)}
|
|
31
|
-
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
)
|
|
35
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import React, { useState } from 'react'
|
|
4
|
+
import styles from './DropDown.module.css'
|
|
5
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
6
|
+
import { faChevronLeft, faChevronDown } from '@fortawesome/free-solid-svg-icons'
|
|
7
|
+
export default function DropDown (props) {
|
|
8
|
+
const { header, items, align = 'left' } = props
|
|
9
|
+
const [open, setOpen] = useState(false)
|
|
10
|
+
function handleOpen () {
|
|
11
|
+
setOpen(!open)
|
|
12
|
+
}
|
|
13
|
+
return (
|
|
14
|
+
<div className={`${styles.dropDown} ${styles[align]}`}>
|
|
15
|
+
<span className={styles.header} onClick={handleOpen}>
|
|
16
|
+
{header}
|
|
17
|
+
{!open && <FontAwesomeIcon className={styles.arrow} icon={faChevronLeft} />}
|
|
18
|
+
{open && <FontAwesomeIcon className={styles.arrow} icon={faChevronDown} />}
|
|
19
|
+
</span>
|
|
20
|
+
{open && (
|
|
21
|
+
<div className={styles.menu}>
|
|
22
|
+
{items.map((item, index) => {
|
|
23
|
+
return (
|
|
24
|
+
<div className={styles.item} key={index}>
|
|
25
|
+
{item}
|
|
26
|
+
</div>
|
|
27
|
+
)
|
|
28
|
+
})}
|
|
29
|
+
</div>
|
|
30
|
+
)}
|
|
31
|
+
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
)
|
|
35
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
.dropDown {
|
|
2
|
-
@apply mx-4 relative flex flex-col;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.right {
|
|
6
|
-
@apply items-end;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.left {
|
|
10
|
-
@apply items-start;
|
|
11
|
-
}
|
|
12
|
-
.arrow {
|
|
13
|
-
@apply
|
|
14
|
-
}
|
|
15
|
-
.header {
|
|
16
|
-
@apply hover:cursor-pointer
|
|
17
|
-
}
|
|
18
|
-
.menu {
|
|
19
|
-
@apply absolute border-solid border border-
|
|
20
|
-
}
|
|
21
|
-
.item {
|
|
22
|
-
@apply
|
|
1
|
+
.dropDown {
|
|
2
|
+
@apply mx-4 relative flex flex-col;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.right {
|
|
6
|
+
@apply items-end;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.left {
|
|
10
|
+
@apply items-start;
|
|
11
|
+
}
|
|
12
|
+
.arrow {
|
|
13
|
+
@apply absolute top-[50%] right-0 translate-y-[-50%];
|
|
14
|
+
}
|
|
15
|
+
.header {
|
|
16
|
+
@apply hover:cursor-pointer relative pr-6;
|
|
17
|
+
}
|
|
18
|
+
.menu {
|
|
19
|
+
@apply absolute border-solid border border-white p-3 bg-light-blue mt-8 rounded-md z-[999] text-sm;
|
|
20
|
+
}
|
|
21
|
+
.item {
|
|
22
|
+
@apply py-3 text-main-dark-blue border-t border-main-dark-blue first:border-t-0 text-sm uppercase hover:font-semibold hover:cursor-pointer;
|
|
23
23
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import styles from './FollowUs.module.css'
|
|
3
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
4
|
-
import { faGithub, faTwitter, faLinkedin, faDiscord } from '@fortawesome/free-brands-svg-icons'
|
|
5
|
-
|
|
6
|
-
export default function FollowUs ({ label = 'FOLLOW US ON' }) {
|
|
7
|
-
return (
|
|
8
|
-
<div className={styles.container}>
|
|
9
|
-
<div className={styles.label}>
|
|
10
|
-
{label}
|
|
11
|
-
</div>
|
|
12
|
-
<div className={styles.icon}>
|
|
13
|
-
<a href='https://twitter.com/platformatic' target='_blank' rel='noopener noreferrer'>
|
|
14
|
-
<FontAwesomeIcon icon={faTwitter} className='mr-
|
|
15
|
-
</a>
|
|
16
|
-
</div>
|
|
17
|
-
<div className={styles.icon}>
|
|
18
|
-
<a href='https://www.linkedin.com/company/platformatic/' target='_blank' rel='noopener noreferrer'>
|
|
19
|
-
<FontAwesomeIcon icon={faLinkedin} className='mr-
|
|
20
|
-
</a>
|
|
21
|
-
</div>
|
|
22
|
-
<div className={styles.icon}>
|
|
23
|
-
<a href='https://github.com/platformatic' target='_blank' rel='noopener noreferrer'>
|
|
24
|
-
<FontAwesomeIcon icon={faGithub} className='mr-2 text-white' />
|
|
25
|
-
</a>
|
|
26
|
-
</div>
|
|
27
|
-
<div className={styles.icon}>
|
|
28
|
-
<a href='https://discord.gg/platformatic' target='_blank' rel='noopener noreferrer'>
|
|
29
|
-
<FontAwesomeIcon icon={faDiscord} className='mr-2 text-white' />
|
|
30
|
-
</a>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
</div>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import styles from './FollowUs.module.css'
|
|
3
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|
4
|
+
import { faGithub, faTwitter, faLinkedin, faDiscord } from '@fortawesome/free-brands-svg-icons'
|
|
5
|
+
|
|
6
|
+
export default function FollowUs ({ label = 'FOLLOW US ON' }) {
|
|
7
|
+
return (
|
|
8
|
+
<div className={styles.container}>
|
|
9
|
+
<div className={styles.label}>
|
|
10
|
+
{label}
|
|
11
|
+
</div>
|
|
12
|
+
<div className={styles.icon}>
|
|
13
|
+
<a href='https://twitter.com/platformatic' target='_blank' rel='noopener noreferrer'>
|
|
14
|
+
<FontAwesomeIcon icon={faTwitter} className='mr-3 text-white' />
|
|
15
|
+
</a>
|
|
16
|
+
</div>
|
|
17
|
+
<div className={styles.icon}>
|
|
18
|
+
<a href='https://www.linkedin.com/company/platformatic/' target='_blank' rel='noopener noreferrer'>
|
|
19
|
+
<FontAwesomeIcon icon={faLinkedin} className='mr-3 text-white' />
|
|
20
|
+
</a>
|
|
21
|
+
</div>
|
|
22
|
+
<div className={styles.icon}>
|
|
23
|
+
<a href='https://github.com/platformatic' target='_blank' rel='noopener noreferrer'>
|
|
24
|
+
<FontAwesomeIcon icon={faGithub} className='mr-2 text-white' />
|
|
25
|
+
</a>
|
|
26
|
+
</div>
|
|
27
|
+
<div className={styles.icon}>
|
|
28
|
+
<a href='https://discord.gg/platformatic' target='_blank' rel='noopener noreferrer'>
|
|
29
|
+
<FontAwesomeIcon icon={faDiscord} className='mr-2 text-white' />
|
|
30
|
+
</a>
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
</div>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
.container {
|
|
2
|
-
@apply flex w-
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.label {
|
|
6
|
-
@apply uppercase text-light-green
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.icon {
|
|
10
|
-
@apply text-white
|
|
11
|
-
}
|
|
1
|
+
.container {
|
|
2
|
+
@apply flex w-full items-center;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.label {
|
|
6
|
+
@apply uppercase text-light-green tracking-[.15em] text-sm mr-8;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.icon {
|
|
10
|
+
@apply text-white mx-4 text-xl;
|
|
11
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import LoginButton from './LoginButton'
|
|
3
|
-
import { faGithub } from '@fortawesome/free-brands-svg-icons'
|
|
4
|
-
|
|
5
|
-
export default function GHLoginButton ({ onClick, ...props }) {
|
|
6
|
-
return (
|
|
7
|
-
<LoginButton
|
|
8
|
-
label='Continue with Github'
|
|
9
|
-
onClick={onClick}
|
|
10
|
-
icon={faGithub}
|
|
11
|
-
{...props}
|
|
12
|
-
/>
|
|
13
|
-
)
|
|
14
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import LoginButton from './LoginButton'
|
|
3
|
+
import { faGithub } from '@fortawesome/free-brands-svg-icons'
|
|
4
|
+
|
|
5
|
+
export default function GHLoginButton ({ onClick, ...props }) {
|
|
6
|
+
return (
|
|
7
|
+
<LoginButton
|
|
8
|
+
label='Continue with Github'
|
|
9
|
+
onClick={onClick}
|
|
10
|
+
icon={faGithub}
|
|
11
|
+
{...props}
|
|
12
|
+
/>
|
|
13
|
+
)
|
|
14
|
+
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
'use strict'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import styles from './HorizontalSeparator.module.css'
|
|
4
|
+
export default function HorizontalSeparator ({ marginTop = 4, marginBottom = 4 }) {
|
|
5
|
+
function getClassName () {
|
|
6
|
+
return 'text-dark-green ' + (marginTop === marginBottom ? `${styles['marginY-' + marginTop]}` : `${styles['marginT-' + marginTop]} ${styles['marginB-' + marginBottom]}`)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
return <hr className={getClassName()} />
|
|
10
|
+
}
|
package/src/components/Input.jsx
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import styles from './Input.module.css'
|
|
4
|
-
import commonStyles from './Common.module.css'
|
|
5
|
-
export default function Input ({ placeholder, value, name }) {
|
|
6
|
-
return (
|
|
7
|
-
<div className={`${styles.inputContainer} ${commonStyles.padded}`}>
|
|
8
|
-
<input type='text' name={name} value={value} placeholder={placeholder} className='grow' />
|
|
9
|
-
</div>
|
|
10
|
-
)
|
|
11
|
-
}
|
|
1
|
+
'use strict'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import styles from './Input.module.css'
|
|
4
|
+
import commonStyles from './Common.module.css'
|
|
5
|
+
export default function Input ({ placeholder, value, name }) {
|
|
6
|
+
return (
|
|
7
|
+
<div className={`${styles.inputContainer} ${commonStyles.padded}`}>
|
|
8
|
+
<input type='text' name={name} value={value} placeholder={placeholder} className='grow' />
|
|
9
|
+
</div>
|
|
10
|
+
)
|
|
11
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
.inputContainer {
|
|
2
|
-
@apply flex justify-between w-full h-10 text-white border-main-green border border-solid box-border rounded-md;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.input {
|
|
6
|
-
@apply grow focus:outline-none
|
|
7
|
-
}
|
|
1
|
+
.inputContainer {
|
|
2
|
+
@apply flex justify-between w-full h-10 text-white border-main-green border border-solid box-border rounded-md;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.input {
|
|
6
|
+
@apply grow focus:outline-none
|
|
7
|
+
}
|