imbric-theme 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- package/.babelrc.json +3 -0
- package/.commitlintrc.json +3 -0
- package/.editorconfig +13 -0
- package/.eslintcache +1 -0
- package/.eslintrc.json +36 -0
- package/.huskyrc.json +6 -0
- package/.lintstagedrc.json +5 -0
- package/.nvmrc +1 -0
- package/.prettierrc.json +4 -0
- package/.releaserc.json +13 -0
- package/.storybook/main.js +9 -0
- package/.storybook/preview-head.html +2 -0
- package/.storybook/preview.js +32 -0
- package/.stylelintrc.json +14 -0
- package/.vscode/launch.json +15 -0
- package/CHANGELOG.md +0 -0
- package/README.md +69 -0
- package/atoms/Avatar/Avatar.js +36 -0
- package/atoms/Avatar/Avatar.module.css +3 -0
- package/atoms/Avatar/Avatar.stories.js +29 -0
- package/atoms/Avatar/__snapshots__/Avatar.stories.js.snap +105 -0
- package/atoms/Avatar/constants.js +3 -0
- package/atoms/Avatar/helpers.js +7 -0
- package/atoms/Avatar/index.js +3 -0
- package/atoms/Button/Button.js +68 -0
- package/atoms/Button/Button.module.css +63 -0
- package/atoms/Button/Button.stories.js +47 -0
- package/atoms/Button/Button.test.js +60 -0
- package/atoms/Button/__snapshots__/Button.stories.js.snap +191 -0
- package/atoms/Button/constants.js +3 -0
- package/atoms/Button/index.js +3 -0
- package/atoms/Card/Card.js +48 -0
- package/atoms/Card/Card.module.css +52 -0
- package/atoms/Card/Card.stories.js +41 -0
- package/atoms/Card/__snapshots__/Card.stories.js.snap +136 -0
- package/atoms/Card/constants.js +4 -0
- package/atoms/Card/index.js +3 -0
- package/atoms/Check/Check.js +26 -0
- package/atoms/Check/Check.module.css +11 -0
- package/atoms/Check/Check.stories.js +15 -0
- package/atoms/Check/__snapshots__/Check.stories.js.snap +67 -0
- package/atoms/Check/index.js +2 -0
- package/atoms/Divider/Divider.js +19 -0
- package/atoms/Divider/Divider.module.css +5 -0
- package/atoms/Divider/Divider.stories.js +12 -0
- package/atoms/Divider/__snapshots__/Divider.stories.js.snap +22 -0
- package/atoms/Divider/index.js +2 -0
- package/atoms/Heading/Heading.js +37 -0
- package/atoms/Heading/Heading.module.css +66 -0
- package/atoms/Heading/Heading.stories.js +46 -0
- package/atoms/Heading/__snapshots__/Heading.stories.js.snap +189 -0
- package/atoms/Heading/constants.js +5 -0
- package/atoms/Heading/index.js +3 -0
- package/atoms/Icon/Icon.js +66 -0
- package/atoms/Icon/Icon.module.css +112 -0
- package/atoms/Icon/Icon.stories.js +48 -0
- package/atoms/Icon/__snapshots__/Icon.stories.js.snap +1311 -0
- package/atoms/Icon/constants.js +486 -0
- package/atoms/Icon/helpers.js +9 -0
- package/atoms/Icon/index.js +3 -0
- package/atoms/Input/Input.js +49 -0
- package/atoms/Input/Input.module.css +27 -0
- package/atoms/Input/Input.stories.js +32 -0
- package/atoms/Input/__snapshots__/Input.stories.js.snap +101 -0
- package/atoms/Input/constants.js +3 -0
- package/atoms/Input/index.js +3 -0
- package/atoms/Link/Link.js +33 -0
- package/atoms/Link/Link.module.css +14 -0
- package/atoms/Link/Link.stories.js +30 -0
- package/atoms/Link/__snapshots__/Link.stories.js.snap +118 -0
- package/atoms/Link/constants.js +5 -0
- package/atoms/Link/index.js +3 -0
- package/atoms/Loading/Loading.js +30 -0
- package/atoms/Loading/Loading.module.css +51 -0
- package/atoms/Loading/Loading.stories.js +17 -0
- package/atoms/Loading/__snapshots__/Loading.stories.js.snap +26 -0
- package/atoms/Loading/index.js +2 -0
- package/atoms/Modal/Modal.js +98 -0
- package/atoms/Modal/Modal.module.css +85 -0
- package/atoms/Modal/Modal.stories.js +43 -0
- package/atoms/Modal/__snapshots__/Modal.stories.js.snap +239 -0
- package/atoms/Modal/constants.js +1 -0
- package/atoms/Modal/index.js +3 -0
- package/atoms/Paragraph/Paragraph.js +56 -0
- package/atoms/Paragraph/Paragraph.module.css +68 -0
- package/atoms/Paragraph/Paragraph.stories.js +52 -0
- package/atoms/Paragraph/__snapshots__/Paragraph.stories.js.snap +230 -0
- package/atoms/Paragraph/constants.js +5 -0
- package/atoms/Paragraph/index.js +3 -0
- package/atoms/Picture/Picture.js +40 -0
- package/atoms/Picture/Picture.module.css +16 -0
- package/atoms/Picture/Picture.stories.js +32 -0
- package/atoms/Picture/__snapshots__/Picture.stories.js.snap +156 -0
- package/atoms/Picture/index.js +2 -0
- package/atoms/Textarea/Textarea.js +46 -0
- package/atoms/Textarea/Textarea.module.css +25 -0
- package/atoms/Textarea/Textarea.stories.js +16 -0
- package/atoms/Textarea/__snapshots__/Textarea.stories.js.snap +25 -0
- package/atoms/Textarea/index.js +2 -0
- package/codecov.yml +2 -0
- package/helpers/storybook.js +29 -0
- package/helpers/storybook.test.js +40 -0
- package/helpers/styles.js +37 -0
- package/helpers/styles.test.js +222 -0
- package/hocs/withStyles.js +17 -0
- package/hook/useMedia.js +22 -0
- package/index.js +31 -0
- package/jest.config.js +23 -0
- package/jest.setup.js +13 -0
- package/layout/CenteredContent/CenteredContent.js +30 -0
- package/layout/CenteredContent/CenteredContent.module.css +12 -0
- package/layout/CenteredContent/CenteredContent.stories.js +22 -0
- package/layout/CenteredContent/__snapshots__/CenteredContent.stories.js.snap +27 -0
- package/layout/CenteredContent/index.js +2 -0
- package/layout/Container/Container.js +29 -0
- package/layout/Container/Container.module.css +14 -0
- package/layout/Container/Container.stories.js +22 -0
- package/layout/Container/__snapshots__/Container.stories.js.snap +27 -0
- package/layout/Container/index.js +2 -0
- package/layout/FullHeightContent/FullHeightContent.js +40 -0
- package/layout/FullHeightContent/FullHeightContent.module.css +21 -0
- package/layout/FullHeightContent/FullHeightContent.stories.js +22 -0
- package/layout/FullHeightContent/__snapshots__/FullHeightContent.stories.js.snap +41 -0
- package/layout/FullHeightContent/index.js +2 -0
- package/layout/Spacer/Spacer.js +40 -0
- package/layout/Spacer/Spacer.module.css +12 -0
- package/layout/Spacer/Spacer.stories.js +25 -0
- package/layout/Spacer/__snapshots__/Spacer.stories.js.snap +97 -0
- package/layout/Spacer/components/Horizontal/Horizontal.js +43 -0
- package/layout/Spacer/components/Horizontal/Horizontal.stories.js +32 -0
- package/layout/Spacer/components/Horizontal/__snapshots__/Horizontal.stories.js.snap +97 -0
- package/layout/Spacer/components/Horizontal/index.js +1 -0
- package/layout/Spacer/components/Vertical/Vertical.js +31 -0
- package/layout/Spacer/components/Vertical/Vertical.stories.js +25 -0
- package/layout/Spacer/components/Vertical/__snapshots__/Vertical.stories.js.snap +85 -0
- package/layout/Spacer/components/Vertical/index.js +1 -0
- package/layout/Spacer/components/index.js +2 -0
- package/layout/Spacer/constants.js +5 -0
- package/layout/Spacer/helpers.js +3 -0
- package/layout/Spacer/index.js +3 -0
- package/molecules/Accordion/Accordion.js +70 -0
- package/molecules/Accordion/Accordion.module.css +12 -0
- package/molecules/Accordion/Accordion.stories.js +31 -0
- package/molecules/Accordion/__snapshots__/Accordion.stories.js.snap +228 -0
- package/molecules/Accordion/index.js +2 -0
- package/molecules/AddButton/AddButton.js +137 -0
- package/molecules/AddButton/AddButton.module.css +128 -0
- package/molecules/AddButton/AddButton.stories.js +47 -0
- package/molecules/AddButton/__snapshots__/AddButton.stories.js.snap +326 -0
- package/molecules/AddButton/constants.js +6 -0
- package/molecules/AddButton/handlers.js +58 -0
- package/molecules/AddButton/handlers.test.js +19 -0
- package/molecules/AddButton/helpers.js +6 -0
- package/molecules/AddButton/helpers.test.js +41 -0
- package/molecules/AddButton/hooks.js +14 -0
- package/molecules/AddButton/index.js +3 -0
- package/molecules/ButtonIcon/ButtonIcon.js +41 -0
- package/molecules/ButtonIcon/ButtonIcon.stories.js +27 -0
- package/molecules/ButtonIcon/__snapshots__/ButtonIcon.stories.js.snap +178 -0
- package/molecules/ButtonIcon/constants.js +6 -0
- package/molecules/ButtonIcon/index.js +2 -0
- package/molecules/Dropdown/Dropdown.js +59 -0
- package/molecules/Dropdown/Dropdown.module.css +34 -0
- package/molecules/Dropdown/Dropdown.stories.js +41 -0
- package/molecules/Dropdown/__snapshots__/Dropdown.stories.js.snap +181 -0
- package/molecules/Dropdown/index.js +2 -0
- package/molecules/Error/Error.js +35 -0
- package/molecules/Error/Error.module.css +11 -0
- package/molecules/Error/Error.stories.js +18 -0
- package/molecules/Error/__snapshots__/Error.stories.js.snap +134 -0
- package/molecules/Error/index.js +2 -0
- package/molecules/IconLabel/IconLabel.js +83 -0
- package/molecules/IconLabel/IconLabel.module.css +16 -0
- package/molecules/IconLabel/IconLabel.stories.js +25 -0
- package/molecules/IconLabel/__snapshots__/IconLabel.stories.js.snap +211 -0
- package/molecules/IconLabel/constants.js +6 -0
- package/molecules/IconLabel/index.js +3 -0
- package/molecules/LoadingError/LoadingError.js +31 -0
- package/molecules/LoadingError/LoadingError.stories.js +24 -0
- package/molecules/LoadingError/__snapshots__/LoadingError.stories.js.snap +109 -0
- package/molecules/LoadingError/index.js +1 -0
- package/molecules/Score/Score.js +61 -0
- package/molecules/Score/Score.module.css +11 -0
- package/molecules/Score/Score.stories.js +13 -0
- package/molecules/Score/__snapshots__/Score.stories.js.snap +100 -0
- package/molecules/Score/faces/happy.svg +7 -0
- package/molecules/Score/faces/normal.svg +6 -0
- package/molecules/Score/faces/sad.svg +6 -0
- package/molecules/Score/index.js +2 -0
- package/molecules/Task/Task.js +114 -0
- package/molecules/Task/Task.module.css +47 -0
- package/molecules/Task/Task.stories.js +47 -0
- package/molecules/Task/__snapshots__/Task.stories.js.snap +953 -0
- package/molecules/Task/constants.js +1 -0
- package/molecules/Task/index.js +3 -0
- package/molecules/TaskCounter/TaskCounter.js +74 -0
- package/molecules/TaskCounter/TaskCounter.module.css +11 -0
- package/molecules/TaskCounter/TaskCounter.stories.js +26 -0
- package/molecules/TaskCounter/__snapshots__/TaskCounter.stories.js.snap +177 -0
- package/molecules/TaskCounter/index.js +2 -0
- package/package.json +102 -0
- package/scripts/build-tokens.js +40 -0
- package/scripts/create-component.js +127 -0
- package/storybook.test.js +13 -0
- package/styles/globals.css +10 -0
- package/styles/tokens.css +390 -0
- package/templates/component/Component.js +22 -0
- package/templates/component/Component.module.css +3 -0
- package/templates/component/Component.stories.js +23 -0
- package/templates/component/constants.js +1 -0
- package/templates/component/index.js +3 -0
- package/tokens/Token/Helper.js +30 -0
- package/tokens/Token/Token.js +13 -0
- package/tokens/Token/Token.module.css +64 -0
- package/tokens/Token/components/Color.js +21 -0
- package/tokens/Token/components/Color.stories.js +126 -0
- package/tokens/Token/components/FontFamily.js +24 -0
- package/tokens/Token/components/FontFamily.stories.js +32 -0
- package/tokens/Token/components/FontSize.js +24 -0
- package/tokens/Token/components/FontSize.stories.js +31 -0
- package/tokens/Token/components/FontWeight.js +24 -0
- package/tokens/Token/components/FontWeight.stories.js +31 -0
- package/tokens/Token/components/Spacing.js +24 -0
- package/tokens/Token/components/Spacing.stories.js +29 -0
- package/tokens/Token/components/__snapshots__/Color.stories.js.snap +7169 -0
- package/tokens/Token/components/__snapshots__/FontFamily.stories.js.snap +133 -0
- package/tokens/Token/components/__snapshots__/FontSize.stories.js.snap +261 -0
- package/tokens/Token/components/__snapshots__/FontWeight.stories.js.snap +317 -0
- package/tokens/Token/components/__snapshots__/Spacing.stories.js.snap +229 -0
- package/tokens/Token/components/index.js +5 -0
- package/tokens/Token/helpers.js +17 -0
- package/tokens/Token/index.js +1 -0
- package/tokens/index.js +471 -0
- package/utils/isEmpty.js +28 -0
- package/utils/isEmpty.test.js +125 -0
- package/utils/isObject.js +4 -0
- package/utils/keyboardCodes.js +6 -0
- package/utils/testUtils/matchMediaMock.js +14 -0
- package/utils/testUtils/svgrMock.js +2 -0
- package/utils/toCapitalize.js +4 -0
- package/utils/toKebabCase.js +8 -0
- package/utils/toPascalCase.js +20 -0
- package/webpack/cssModules.js +30 -0
- package/webpack/loadConfigs.js +6 -0
- package/webpack/reactInlineSvg.js +22 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import PropTypes from 'prop-types'
|
3
|
+
|
4
|
+
import styles from './Error.module.css'
|
5
|
+
import withStyles from '../../hocs/withStyles'
|
6
|
+
|
7
|
+
import Spacer from '../../layout/Spacer'
|
8
|
+
import Paragraph from '../../atoms/Paragraph'
|
9
|
+
import Heading from '../../atoms/Heading'
|
10
|
+
import Icon from '../../atoms/Icon'
|
11
|
+
|
12
|
+
export const Error = ({ title, children, getStyles }) => {
|
13
|
+
return (
|
14
|
+
<div className={getStyles('error')}>
|
15
|
+
<Icon className="icon-warning" name="warning" size="md" />
|
16
|
+
<Spacer.Horizontal size="sm" />
|
17
|
+
<div>
|
18
|
+
{title && <Heading>{title}</Heading>}
|
19
|
+
<Paragraph>{children}</Paragraph>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
)
|
23
|
+
}
|
24
|
+
|
25
|
+
Error.propTypes = {
|
26
|
+
children: PropTypes.node.isRequired,
|
27
|
+
getStyles: PropTypes.func.isRequired,
|
28
|
+
title: PropTypes.string,
|
29
|
+
}
|
30
|
+
|
31
|
+
Error.defaultProps = {
|
32
|
+
getStyles: () => {},
|
33
|
+
}
|
34
|
+
|
35
|
+
export default withStyles(styles)(Error)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { Error, styles } from '.'
|
2
|
+
|
3
|
+
import { getTemplate } from '../../helpers/storybook'
|
4
|
+
|
5
|
+
const Template = getTemplate(Error, styles)
|
6
|
+
|
7
|
+
export default {
|
8
|
+
title: 'Molecules/Error',
|
9
|
+
component: Error,
|
10
|
+
args: {
|
11
|
+
children:
|
12
|
+
"Meets counts consumed 200 Meriadoc tombs rabble noble crash thread. Another kind Imladris. Dump each Kingdom mere other's by blame ugly sending bestow mist adventure.",
|
13
|
+
},
|
14
|
+
}
|
15
|
+
|
16
|
+
export const Default = Template.bind({})
|
17
|
+
export const Title = Template.bind({})
|
18
|
+
Title.args = { title: 'Lindir glowers saw 111th utter.' }
|
@@ -0,0 +1,134 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`Storyshots Molecules/Error Default 1`] = `
|
4
|
+
<div
|
5
|
+
style={
|
6
|
+
Object {
|
7
|
+
"alignContent": "flex-start",
|
8
|
+
"display": "flex",
|
9
|
+
"flexDirection": "column",
|
10
|
+
"flexWrap": "wrap",
|
11
|
+
"gap": "10px 30px",
|
12
|
+
"height": "100%",
|
13
|
+
"justifyContent": "flex-start",
|
14
|
+
"maxHeight": "auto",
|
15
|
+
}
|
16
|
+
}
|
17
|
+
>
|
18
|
+
<div
|
19
|
+
className="error"
|
20
|
+
>
|
21
|
+
<div
|
22
|
+
className="icon-warning icon color-base size-md background-transparent"
|
23
|
+
style={
|
24
|
+
Object {
|
25
|
+
"height": 35,
|
26
|
+
"width": 35,
|
27
|
+
}
|
28
|
+
}
|
29
|
+
>
|
30
|
+
<svg
|
31
|
+
height={35}
|
32
|
+
viewBox="0 0 20 20"
|
33
|
+
width={35}
|
34
|
+
xmlns="http://www.w3.org/2000/svg"
|
35
|
+
>
|
36
|
+
<path
|
37
|
+
clipRule="evenodd"
|
38
|
+
d="M10 20C4.48612 20 0 15.5139 0 10C0 4.48612 4.48612 0 10 0C15.5139 0 20 4.48612 20 10C20 15.5139 15.5139 20 10 20ZM10 1.09864C5.09155 1.09864 1.09864 5.09155 1.09864 10C1.09864 14.9084 5.09155 18.9014 10 18.9014C14.9084 18.9014 18.9014 14.9084 18.9014 10C18.9014 5.09155 14.9084 1.09864 10 1.09864Z"
|
39
|
+
fillRule="evenodd"
|
40
|
+
/>
|
41
|
+
<path
|
42
|
+
d="M10.7837 11.8579H9.25293L9.08447 4.33594H10.9595L10.7837 11.8579ZM9.0332 14.1577C9.0332 13.8794 9.12354 13.6499 9.3042 13.4692C9.48486 13.2837 9.73145 13.1909 10.0439 13.1909C10.3564 13.1909 10.603 13.2837 10.7837 13.4692C10.9644 13.6499 11.0547 13.8794 11.0547 14.1577C11.0547 14.4263 10.9668 14.6509 10.791 14.8315C10.6152 15.0122 10.3662 15.1025 10.0439 15.1025C9.72168 15.1025 9.47266 15.0122 9.29688 14.8315C9.12109 14.6509 9.0332 14.4263 9.0332 14.1577Z"
|
43
|
+
/>
|
44
|
+
</svg>
|
45
|
+
</div>
|
46
|
+
<div
|
47
|
+
className="spacer horizontal"
|
48
|
+
style={
|
49
|
+
Object {
|
50
|
+
"height": "100%",
|
51
|
+
"maxHeight": "auto",
|
52
|
+
"width": 15,
|
53
|
+
}
|
54
|
+
}
|
55
|
+
/>
|
56
|
+
<div>
|
57
|
+
<p
|
58
|
+
className="paragraph color-base size-md weight-normal"
|
59
|
+
>
|
60
|
+
Meets counts consumed 200 Meriadoc tombs rabble noble crash thread. Another kind Imladris. Dump each Kingdom mere other's by blame ugly sending bestow mist adventure.
|
61
|
+
</p>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
`;
|
66
|
+
|
67
|
+
exports[`Storyshots Molecules/Error Title 1`] = `
|
68
|
+
<div
|
69
|
+
style={
|
70
|
+
Object {
|
71
|
+
"alignContent": "flex-start",
|
72
|
+
"display": "flex",
|
73
|
+
"flexDirection": "column",
|
74
|
+
"flexWrap": "wrap",
|
75
|
+
"gap": "10px 30px",
|
76
|
+
"height": "100%",
|
77
|
+
"justifyContent": "flex-start",
|
78
|
+
"maxHeight": "auto",
|
79
|
+
}
|
80
|
+
}
|
81
|
+
>
|
82
|
+
<div
|
83
|
+
className="error"
|
84
|
+
>
|
85
|
+
<div
|
86
|
+
className="icon-warning icon color-base size-md background-transparent"
|
87
|
+
style={
|
88
|
+
Object {
|
89
|
+
"height": 35,
|
90
|
+
"width": 35,
|
91
|
+
}
|
92
|
+
}
|
93
|
+
>
|
94
|
+
<svg
|
95
|
+
height={35}
|
96
|
+
viewBox="0 0 20 20"
|
97
|
+
width={35}
|
98
|
+
xmlns="http://www.w3.org/2000/svg"
|
99
|
+
>
|
100
|
+
<path
|
101
|
+
clipRule="evenodd"
|
102
|
+
d="M10 20C4.48612 20 0 15.5139 0 10C0 4.48612 4.48612 0 10 0C15.5139 0 20 4.48612 20 10C20 15.5139 15.5139 20 10 20ZM10 1.09864C5.09155 1.09864 1.09864 5.09155 1.09864 10C1.09864 14.9084 5.09155 18.9014 10 18.9014C14.9084 18.9014 18.9014 14.9084 18.9014 10C18.9014 5.09155 14.9084 1.09864 10 1.09864Z"
|
103
|
+
fillRule="evenodd"
|
104
|
+
/>
|
105
|
+
<path
|
106
|
+
d="M10.7837 11.8579H9.25293L9.08447 4.33594H10.9595L10.7837 11.8579ZM9.0332 14.1577C9.0332 13.8794 9.12354 13.6499 9.3042 13.4692C9.48486 13.2837 9.73145 13.1909 10.0439 13.1909C10.3564 13.1909 10.603 13.2837 10.7837 13.4692C10.9644 13.6499 11.0547 13.8794 11.0547 14.1577C11.0547 14.4263 10.9668 14.6509 10.791 14.8315C10.6152 15.0122 10.3662 15.1025 10.0439 15.1025C9.72168 15.1025 9.47266 15.0122 9.29688 14.8315C9.12109 14.6509 9.0332 14.4263 9.0332 14.1577Z"
|
107
|
+
/>
|
108
|
+
</svg>
|
109
|
+
</div>
|
110
|
+
<div
|
111
|
+
className="spacer horizontal"
|
112
|
+
style={
|
113
|
+
Object {
|
114
|
+
"height": "100%",
|
115
|
+
"maxHeight": "auto",
|
116
|
+
"width": 15,
|
117
|
+
}
|
118
|
+
}
|
119
|
+
/>
|
120
|
+
<div>
|
121
|
+
<h1
|
122
|
+
className="heading color-base size-md weight-bold"
|
123
|
+
>
|
124
|
+
Lindir glowers saw 111th utter.
|
125
|
+
</h1>
|
126
|
+
<p
|
127
|
+
className="paragraph color-base size-md weight-normal"
|
128
|
+
>
|
129
|
+
Meets counts consumed 200 Meriadoc tombs rabble noble crash thread. Another kind Imladris. Dump each Kingdom mere other's by blame ugly sending bestow mist adventure.
|
130
|
+
</p>
|
131
|
+
</div>
|
132
|
+
</div>
|
133
|
+
</div>
|
134
|
+
`;
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import PropTypes from 'prop-types'
|
3
|
+
|
4
|
+
import styles from './IconLabel.module.css'
|
5
|
+
import withStyles from '../../hocs/withStyles'
|
6
|
+
|
7
|
+
import Icon from '../../atoms/Icon'
|
8
|
+
import Paragraph from '../../atoms/Paragraph'
|
9
|
+
|
10
|
+
import { options } from './constants'
|
11
|
+
import Spacer from '../../layout/Spacer'
|
12
|
+
|
13
|
+
const handleClick = ({ onClick }) => (event) => {
|
14
|
+
onClick(event)
|
15
|
+
}
|
16
|
+
|
17
|
+
const sizesMap = {
|
18
|
+
sm: {
|
19
|
+
icon: 'sm',
|
20
|
+
paragraph: 'xs',
|
21
|
+
},
|
22
|
+
md: {
|
23
|
+
icon: 'md',
|
24
|
+
paragraph: 'sm',
|
25
|
+
},
|
26
|
+
}
|
27
|
+
|
28
|
+
export const IconLabel = ({
|
29
|
+
getStyles,
|
30
|
+
icon,
|
31
|
+
label,
|
32
|
+
onClick,
|
33
|
+
isClickable,
|
34
|
+
direction,
|
35
|
+
isActive,
|
36
|
+
size,
|
37
|
+
}) => {
|
38
|
+
return (
|
39
|
+
<div
|
40
|
+
className={getStyles('icon-label', {
|
41
|
+
'is-clickable': isClickable || !!onClick,
|
42
|
+
[`direction-${direction}`]: direction,
|
43
|
+
})}
|
44
|
+
onClick={onClick && handleClick({ onClick })}
|
45
|
+
>
|
46
|
+
<Icon
|
47
|
+
name={icon}
|
48
|
+
color={isActive ? 'primary' : 'base'}
|
49
|
+
background={isActive ? 'highlight' : 'transparent'}
|
50
|
+
size={sizesMap[size].icon}
|
51
|
+
></Icon>
|
52
|
+
{direction === 'horizontal' && <Spacer.Horizontal size="xs" />}
|
53
|
+
<Paragraph
|
54
|
+
size={sizesMap[size].paragraph}
|
55
|
+
color={isActive ? 'primary' : 'base'}
|
56
|
+
isInline
|
57
|
+
>
|
58
|
+
{label}
|
59
|
+
</Paragraph>
|
60
|
+
</div>
|
61
|
+
)
|
62
|
+
}
|
63
|
+
|
64
|
+
IconLabel.propTypes = {
|
65
|
+
getStyles: PropTypes.func.isRequired,
|
66
|
+
icon: PropTypes.oneOf(options.icons).isRequired,
|
67
|
+
label: PropTypes.string.isRequired,
|
68
|
+
direction: PropTypes.oneOf(['vertical', 'horizontal']),
|
69
|
+
isClickable: PropTypes.bool,
|
70
|
+
onClick: PropTypes.func,
|
71
|
+
isActive: PropTypes.bool,
|
72
|
+
size: PropTypes.oneOf(options.sizes),
|
73
|
+
}
|
74
|
+
|
75
|
+
IconLabel.defaultProps = {
|
76
|
+
direction: 'vertical',
|
77
|
+
size: 'sm',
|
78
|
+
isActive: false,
|
79
|
+
getStyles: () => {},
|
80
|
+
onClick: () => {},
|
81
|
+
}
|
82
|
+
|
83
|
+
export default withStyles(styles)(IconLabel)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { IconLabel, styles, options } from '.'
|
2
|
+
|
3
|
+
import { getTemplate, getOptionsArgTypes } from '../../helpers/storybook'
|
4
|
+
|
5
|
+
const Template = getTemplate(IconLabel, styles)
|
6
|
+
|
7
|
+
export default {
|
8
|
+
title: 'Molecules/IconLabel',
|
9
|
+
component: IconLabel,
|
10
|
+
args: { icon: 'user', label: 'User' },
|
11
|
+
argTypes: {
|
12
|
+
icon: getOptionsArgTypes(options.icons),
|
13
|
+
},
|
14
|
+
}
|
15
|
+
|
16
|
+
export const Default = Template.bind({})
|
17
|
+
|
18
|
+
export const Clickable = Template.bind({})
|
19
|
+
Clickable.args = { isClickable: true }
|
20
|
+
|
21
|
+
export const Active = Template.bind({})
|
22
|
+
Active.args = { isActive: true }
|
23
|
+
|
24
|
+
export const Horizontal = Template.bind({})
|
25
|
+
Horizontal.args = { direction: 'horizontal' }
|
@@ -0,0 +1,211 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`Storyshots Molecules/IconLabel Active 1`] = `
|
4
|
+
<div
|
5
|
+
style={
|
6
|
+
Object {
|
7
|
+
"alignContent": "flex-start",
|
8
|
+
"display": "flex",
|
9
|
+
"flexDirection": "column",
|
10
|
+
"flexWrap": "wrap",
|
11
|
+
"gap": "10px 30px",
|
12
|
+
"height": "100%",
|
13
|
+
"justifyContent": "flex-start",
|
14
|
+
"maxHeight": "auto",
|
15
|
+
}
|
16
|
+
}
|
17
|
+
>
|
18
|
+
<div
|
19
|
+
className="icon-label is-clickable direction-vertical"
|
20
|
+
onClick={[Function]}
|
21
|
+
>
|
22
|
+
<div
|
23
|
+
className="icon color-primary size-sm background-highlight"
|
24
|
+
style={
|
25
|
+
Object {
|
26
|
+
"height": 25,
|
27
|
+
"width": 25,
|
28
|
+
}
|
29
|
+
}
|
30
|
+
>
|
31
|
+
<svg
|
32
|
+
height={25}
|
33
|
+
viewBox="0 0 14 15"
|
34
|
+
width={25}
|
35
|
+
xmlns="http://www.w3.org/2000/svg"
|
36
|
+
>
|
37
|
+
<path
|
38
|
+
clipRule="evenodd"
|
39
|
+
d="M1.01693 15L0 14.5538C0.308723 13.8561 1.22056 13.4481 2.2775 12.975C3.29682 12.5187 4.56575 11.9509 4.56575 11.2777V10.3614C4.20448 10.0594 3.59241 9.41 3.49627 8.43355C3.20367 8.15831 2.71819 7.59711 2.71819 6.90245C2.71819 6.48066 2.88539 6.14048 3.03229 5.92422C2.94272 5.47204 2.77432 4.52538 2.77432 3.83073C2.77432 1.50369 4.39855 0 6.91192 0C7.63327 0 8.50928 0.193026 8.99714 0.714314C10.1365 0.914489 11.0501 2.26031 11.0501 3.83073C11.0501 4.83815 10.8728 5.66685 10.7659 6.07673C10.8847 6.2775 11.0131 6.57538 11.0131 6.92092C11.0131 7.70196 10.6178 8.20716 10.2488 8.47704C10.1443 9.43979 9.59429 10.0606 9.25869 10.3549V11.2777C9.25869 11.8502 10.2989 12.2351 11.3051 12.6074C12.4492 13.0304 13.6328 13.4683 14 14.4257L12.9616 14.8213C12.7753 14.3328 11.7888 13.9681 10.9187 13.6464C9.62056 13.1657 8.1486 12.6211 8.1486 11.2777V9.77997L8.40776 9.61732C8.43404 9.60005 9.15598 9.11629 9.15598 8.14997V7.77524L9.50471 7.63583C9.56323 7.60902 9.90241 7.43089 9.90241 6.92092C9.90241 6.76483 9.78298 6.59028 9.74118 6.54142L9.53875 6.30431L9.63191 6.00226C9.63489 5.99273 9.94003 5.0562 9.94003 3.83073C9.94003 2.78517 9.33931 1.79681 8.70335 1.79681H8.38447L8.22384 1.52216C8.10621 1.32139 7.607 1.10811 6.91192 1.10811C5.01659 1.10811 3.88441 2.12567 3.88441 3.83073C3.88441 4.63619 4.16746 5.93316 4.17044 5.94626L4.23613 6.24653L4.01638 6.461C4.01638 6.461 3.82828 6.65939 3.82828 6.90245C3.82828 7.20927 4.19731 7.59115 4.37586 7.72818L4.59202 7.89439L4.59382 8.16844C4.59382 9.08114 5.38324 9.59588 5.41727 9.61732L5.67285 9.78056L5.67584 11.2777C5.67584 12.6688 4.11192 13.3688 2.73133 13.986C2.06492 14.2839 1.15308 14.6926 1.01693 15Z"
|
40
|
+
fillRule="evenodd"
|
41
|
+
/>
|
42
|
+
</svg>
|
43
|
+
</div>
|
44
|
+
<p
|
45
|
+
className="paragraph color-primary size-xs weight-normal is-inline"
|
46
|
+
>
|
47
|
+
User
|
48
|
+
</p>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
`;
|
52
|
+
|
53
|
+
exports[`Storyshots Molecules/IconLabel Clickable 1`] = `
|
54
|
+
<div
|
55
|
+
style={
|
56
|
+
Object {
|
57
|
+
"alignContent": "flex-start",
|
58
|
+
"display": "flex",
|
59
|
+
"flexDirection": "column",
|
60
|
+
"flexWrap": "wrap",
|
61
|
+
"gap": "10px 30px",
|
62
|
+
"height": "100%",
|
63
|
+
"justifyContent": "flex-start",
|
64
|
+
"maxHeight": "auto",
|
65
|
+
}
|
66
|
+
}
|
67
|
+
>
|
68
|
+
<div
|
69
|
+
className="icon-label is-clickable direction-vertical"
|
70
|
+
onClick={[Function]}
|
71
|
+
>
|
72
|
+
<div
|
73
|
+
className="icon color-base size-sm background-transparent"
|
74
|
+
style={
|
75
|
+
Object {
|
76
|
+
"height": 25,
|
77
|
+
"width": 25,
|
78
|
+
}
|
79
|
+
}
|
80
|
+
>
|
81
|
+
<svg
|
82
|
+
height={25}
|
83
|
+
viewBox="0 0 14 15"
|
84
|
+
width={25}
|
85
|
+
xmlns="http://www.w3.org/2000/svg"
|
86
|
+
>
|
87
|
+
<path
|
88
|
+
clipRule="evenodd"
|
89
|
+
d="M1.01693 15L0 14.5538C0.308723 13.8561 1.22056 13.4481 2.2775 12.975C3.29682 12.5187 4.56575 11.9509 4.56575 11.2777V10.3614C4.20448 10.0594 3.59241 9.41 3.49627 8.43355C3.20367 8.15831 2.71819 7.59711 2.71819 6.90245C2.71819 6.48066 2.88539 6.14048 3.03229 5.92422C2.94272 5.47204 2.77432 4.52538 2.77432 3.83073C2.77432 1.50369 4.39855 0 6.91192 0C7.63327 0 8.50928 0.193026 8.99714 0.714314C10.1365 0.914489 11.0501 2.26031 11.0501 3.83073C11.0501 4.83815 10.8728 5.66685 10.7659 6.07673C10.8847 6.2775 11.0131 6.57538 11.0131 6.92092C11.0131 7.70196 10.6178 8.20716 10.2488 8.47704C10.1443 9.43979 9.59429 10.0606 9.25869 10.3549V11.2777C9.25869 11.8502 10.2989 12.2351 11.3051 12.6074C12.4492 13.0304 13.6328 13.4683 14 14.4257L12.9616 14.8213C12.7753 14.3328 11.7888 13.9681 10.9187 13.6464C9.62056 13.1657 8.1486 12.6211 8.1486 11.2777V9.77997L8.40776 9.61732C8.43404 9.60005 9.15598 9.11629 9.15598 8.14997V7.77524L9.50471 7.63583C9.56323 7.60902 9.90241 7.43089 9.90241 6.92092C9.90241 6.76483 9.78298 6.59028 9.74118 6.54142L9.53875 6.30431L9.63191 6.00226C9.63489 5.99273 9.94003 5.0562 9.94003 3.83073C9.94003 2.78517 9.33931 1.79681 8.70335 1.79681H8.38447L8.22384 1.52216C8.10621 1.32139 7.607 1.10811 6.91192 1.10811C5.01659 1.10811 3.88441 2.12567 3.88441 3.83073C3.88441 4.63619 4.16746 5.93316 4.17044 5.94626L4.23613 6.24653L4.01638 6.461C4.01638 6.461 3.82828 6.65939 3.82828 6.90245C3.82828 7.20927 4.19731 7.59115 4.37586 7.72818L4.59202 7.89439L4.59382 8.16844C4.59382 9.08114 5.38324 9.59588 5.41727 9.61732L5.67285 9.78056L5.67584 11.2777C5.67584 12.6688 4.11192 13.3688 2.73133 13.986C2.06492 14.2839 1.15308 14.6926 1.01693 15Z"
|
90
|
+
fillRule="evenodd"
|
91
|
+
/>
|
92
|
+
</svg>
|
93
|
+
</div>
|
94
|
+
<p
|
95
|
+
className="paragraph color-base size-xs weight-normal is-inline"
|
96
|
+
>
|
97
|
+
User
|
98
|
+
</p>
|
99
|
+
</div>
|
100
|
+
</div>
|
101
|
+
`;
|
102
|
+
|
103
|
+
exports[`Storyshots Molecules/IconLabel Default 1`] = `
|
104
|
+
<div
|
105
|
+
style={
|
106
|
+
Object {
|
107
|
+
"alignContent": "flex-start",
|
108
|
+
"display": "flex",
|
109
|
+
"flexDirection": "column",
|
110
|
+
"flexWrap": "wrap",
|
111
|
+
"gap": "10px 30px",
|
112
|
+
"height": "100%",
|
113
|
+
"justifyContent": "flex-start",
|
114
|
+
"maxHeight": "auto",
|
115
|
+
}
|
116
|
+
}
|
117
|
+
>
|
118
|
+
<div
|
119
|
+
className="icon-label is-clickable direction-vertical"
|
120
|
+
onClick={[Function]}
|
121
|
+
>
|
122
|
+
<div
|
123
|
+
className="icon color-base size-sm background-transparent"
|
124
|
+
style={
|
125
|
+
Object {
|
126
|
+
"height": 25,
|
127
|
+
"width": 25,
|
128
|
+
}
|
129
|
+
}
|
130
|
+
>
|
131
|
+
<svg
|
132
|
+
height={25}
|
133
|
+
viewBox="0 0 14 15"
|
134
|
+
width={25}
|
135
|
+
xmlns="http://www.w3.org/2000/svg"
|
136
|
+
>
|
137
|
+
<path
|
138
|
+
clipRule="evenodd"
|
139
|
+
d="M1.01693 15L0 14.5538C0.308723 13.8561 1.22056 13.4481 2.2775 12.975C3.29682 12.5187 4.56575 11.9509 4.56575 11.2777V10.3614C4.20448 10.0594 3.59241 9.41 3.49627 8.43355C3.20367 8.15831 2.71819 7.59711 2.71819 6.90245C2.71819 6.48066 2.88539 6.14048 3.03229 5.92422C2.94272 5.47204 2.77432 4.52538 2.77432 3.83073C2.77432 1.50369 4.39855 0 6.91192 0C7.63327 0 8.50928 0.193026 8.99714 0.714314C10.1365 0.914489 11.0501 2.26031 11.0501 3.83073C11.0501 4.83815 10.8728 5.66685 10.7659 6.07673C10.8847 6.2775 11.0131 6.57538 11.0131 6.92092C11.0131 7.70196 10.6178 8.20716 10.2488 8.47704C10.1443 9.43979 9.59429 10.0606 9.25869 10.3549V11.2777C9.25869 11.8502 10.2989 12.2351 11.3051 12.6074C12.4492 13.0304 13.6328 13.4683 14 14.4257L12.9616 14.8213C12.7753 14.3328 11.7888 13.9681 10.9187 13.6464C9.62056 13.1657 8.1486 12.6211 8.1486 11.2777V9.77997L8.40776 9.61732C8.43404 9.60005 9.15598 9.11629 9.15598 8.14997V7.77524L9.50471 7.63583C9.56323 7.60902 9.90241 7.43089 9.90241 6.92092C9.90241 6.76483 9.78298 6.59028 9.74118 6.54142L9.53875 6.30431L9.63191 6.00226C9.63489 5.99273 9.94003 5.0562 9.94003 3.83073C9.94003 2.78517 9.33931 1.79681 8.70335 1.79681H8.38447L8.22384 1.52216C8.10621 1.32139 7.607 1.10811 6.91192 1.10811C5.01659 1.10811 3.88441 2.12567 3.88441 3.83073C3.88441 4.63619 4.16746 5.93316 4.17044 5.94626L4.23613 6.24653L4.01638 6.461C4.01638 6.461 3.82828 6.65939 3.82828 6.90245C3.82828 7.20927 4.19731 7.59115 4.37586 7.72818L4.59202 7.89439L4.59382 8.16844C4.59382 9.08114 5.38324 9.59588 5.41727 9.61732L5.67285 9.78056L5.67584 11.2777C5.67584 12.6688 4.11192 13.3688 2.73133 13.986C2.06492 14.2839 1.15308 14.6926 1.01693 15Z"
|
140
|
+
fillRule="evenodd"
|
141
|
+
/>
|
142
|
+
</svg>
|
143
|
+
</div>
|
144
|
+
<p
|
145
|
+
className="paragraph color-base size-xs weight-normal is-inline"
|
146
|
+
>
|
147
|
+
User
|
148
|
+
</p>
|
149
|
+
</div>
|
150
|
+
</div>
|
151
|
+
`;
|
152
|
+
|
153
|
+
exports[`Storyshots Molecules/IconLabel Horizontal 1`] = `
|
154
|
+
<div
|
155
|
+
style={
|
156
|
+
Object {
|
157
|
+
"alignContent": "flex-start",
|
158
|
+
"display": "flex",
|
159
|
+
"flexDirection": "column",
|
160
|
+
"flexWrap": "wrap",
|
161
|
+
"gap": "10px 30px",
|
162
|
+
"height": "100%",
|
163
|
+
"justifyContent": "flex-start",
|
164
|
+
"maxHeight": "auto",
|
165
|
+
}
|
166
|
+
}
|
167
|
+
>
|
168
|
+
<div
|
169
|
+
className="icon-label is-clickable direction-horizontal"
|
170
|
+
onClick={[Function]}
|
171
|
+
>
|
172
|
+
<div
|
173
|
+
className="icon color-base size-sm background-transparent"
|
174
|
+
style={
|
175
|
+
Object {
|
176
|
+
"height": 25,
|
177
|
+
"width": 25,
|
178
|
+
}
|
179
|
+
}
|
180
|
+
>
|
181
|
+
<svg
|
182
|
+
height={25}
|
183
|
+
viewBox="0 0 14 15"
|
184
|
+
width={25}
|
185
|
+
xmlns="http://www.w3.org/2000/svg"
|
186
|
+
>
|
187
|
+
<path
|
188
|
+
clipRule="evenodd"
|
189
|
+
d="M1.01693 15L0 14.5538C0.308723 13.8561 1.22056 13.4481 2.2775 12.975C3.29682 12.5187 4.56575 11.9509 4.56575 11.2777V10.3614C4.20448 10.0594 3.59241 9.41 3.49627 8.43355C3.20367 8.15831 2.71819 7.59711 2.71819 6.90245C2.71819 6.48066 2.88539 6.14048 3.03229 5.92422C2.94272 5.47204 2.77432 4.52538 2.77432 3.83073C2.77432 1.50369 4.39855 0 6.91192 0C7.63327 0 8.50928 0.193026 8.99714 0.714314C10.1365 0.914489 11.0501 2.26031 11.0501 3.83073C11.0501 4.83815 10.8728 5.66685 10.7659 6.07673C10.8847 6.2775 11.0131 6.57538 11.0131 6.92092C11.0131 7.70196 10.6178 8.20716 10.2488 8.47704C10.1443 9.43979 9.59429 10.0606 9.25869 10.3549V11.2777C9.25869 11.8502 10.2989 12.2351 11.3051 12.6074C12.4492 13.0304 13.6328 13.4683 14 14.4257L12.9616 14.8213C12.7753 14.3328 11.7888 13.9681 10.9187 13.6464C9.62056 13.1657 8.1486 12.6211 8.1486 11.2777V9.77997L8.40776 9.61732C8.43404 9.60005 9.15598 9.11629 9.15598 8.14997V7.77524L9.50471 7.63583C9.56323 7.60902 9.90241 7.43089 9.90241 6.92092C9.90241 6.76483 9.78298 6.59028 9.74118 6.54142L9.53875 6.30431L9.63191 6.00226C9.63489 5.99273 9.94003 5.0562 9.94003 3.83073C9.94003 2.78517 9.33931 1.79681 8.70335 1.79681H8.38447L8.22384 1.52216C8.10621 1.32139 7.607 1.10811 6.91192 1.10811C5.01659 1.10811 3.88441 2.12567 3.88441 3.83073C3.88441 4.63619 4.16746 5.93316 4.17044 5.94626L4.23613 6.24653L4.01638 6.461C4.01638 6.461 3.82828 6.65939 3.82828 6.90245C3.82828 7.20927 4.19731 7.59115 4.37586 7.72818L4.59202 7.89439L4.59382 8.16844C4.59382 9.08114 5.38324 9.59588 5.41727 9.61732L5.67285 9.78056L5.67584 11.2777C5.67584 12.6688 4.11192 13.3688 2.73133 13.986C2.06492 14.2839 1.15308 14.6926 1.01693 15Z"
|
190
|
+
fillRule="evenodd"
|
191
|
+
/>
|
192
|
+
</svg>
|
193
|
+
</div>
|
194
|
+
<div
|
195
|
+
className="spacer horizontal"
|
196
|
+
style={
|
197
|
+
Object {
|
198
|
+
"height": "100%",
|
199
|
+
"maxHeight": "auto",
|
200
|
+
"width": 5,
|
201
|
+
}
|
202
|
+
}
|
203
|
+
/>
|
204
|
+
<p
|
205
|
+
className="paragraph color-base size-xs weight-normal is-inline"
|
206
|
+
>
|
207
|
+
User
|
208
|
+
</p>
|
209
|
+
</div>
|
210
|
+
</div>
|
211
|
+
`;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import PropTypes from 'prop-types'
|
3
|
+
|
4
|
+
import Loading from '../../atoms/Loading'
|
5
|
+
import Error from '../Error'
|
6
|
+
|
7
|
+
export const LoadingError = ({
|
8
|
+
children,
|
9
|
+
isLoading,
|
10
|
+
errorMessage,
|
11
|
+
errorTitle,
|
12
|
+
}) => {
|
13
|
+
if (isLoading) {
|
14
|
+
return <Loading isShown={isLoading} />
|
15
|
+
}
|
16
|
+
|
17
|
+
if (errorMessage) {
|
18
|
+
return <Error title={errorTitle}>{errorMessage}</Error>
|
19
|
+
}
|
20
|
+
|
21
|
+
return <>{children}</>
|
22
|
+
}
|
23
|
+
|
24
|
+
LoadingError.propTypes = {
|
25
|
+
children: PropTypes.node.isRequired,
|
26
|
+
isLoading: PropTypes.bool,
|
27
|
+
errorMessage: PropTypes.string,
|
28
|
+
errorTitle: PropTypes.string,
|
29
|
+
}
|
30
|
+
|
31
|
+
export default LoadingError
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { LoadingError } from '.'
|
2
|
+
|
3
|
+
import { getTemplate } from '../../helpers/storybook'
|
4
|
+
|
5
|
+
const Template = getTemplate(LoadingError)
|
6
|
+
|
7
|
+
export default {
|
8
|
+
title: 'Molecules/LoadingError',
|
9
|
+
component: LoadingError,
|
10
|
+
args: {
|
11
|
+
children:
|
12
|
+
"Exile ruins brook Angmar inn wars retaken. Swiftly attacks Grma merely! Opinion Eorlingas inquisitive windlance? You are full of surprises, Master Baggins. Houses warning garden noble innocent silver charm numerous thirsty came Treebeard's warm.",
|
13
|
+
},
|
14
|
+
}
|
15
|
+
|
16
|
+
export const Default = Template.bind({})
|
17
|
+
|
18
|
+
export const Loading = Template.bind({})
|
19
|
+
Loading.args = { isLoading: true }
|
20
|
+
|
21
|
+
export const Error = Template.bind({})
|
22
|
+
Error.args = {
|
23
|
+
errorMessage: 'ext Grimbold sneak-thief cheekbones myth overfond task',
|
24
|
+
}
|