@dxc-technology/halstack-react 0.0.0-f77ec3a → 0.0.0-f7f591a
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/{dist/BackgroundColorContext.js → BackgroundColorContext.js} +0 -0
- package/{dist/ThemeContext.js → ThemeContext.js} +0 -0
- package/{dist/V3Select → V3Select}/V3Select.js +0 -0
- package/{dist/V3Select → V3Select}/index.d.ts +0 -0
- package/{dist/V3Textarea → V3Textarea}/V3Textarea.js +0 -0
- package/{dist/V3Textarea → V3Textarea}/index.d.ts +0 -0
- package/{dist/accordion → accordion}/Accordion.js +0 -0
- package/{dist/accordion → accordion}/index.d.ts +0 -0
- package/{dist/accordion-group → accordion-group}/AccordionGroup.js +0 -0
- package/{dist/accordion-group → accordion-group}/index.d.ts +0 -0
- package/{dist/alert → alert}/Alert.js +0 -0
- package/{dist/alert → alert}/index.d.ts +0 -0
- package/{dist/badge → badge}/Badge.js +0 -0
- package/{dist/box → box}/Box.js +0 -0
- package/{dist/box → box}/index.d.ts +0 -0
- package/{dist/button → button}/Button.js +0 -0
- package/button/Button.stories.js +27 -0
- package/{dist/button → button}/index.d.ts +0 -0
- package/{dist/card → card}/Card.js +0 -0
- package/{dist/card → card}/index.d.ts +0 -0
- package/{dist/checkbox → checkbox}/Checkbox.js +0 -0
- package/{dist/checkbox → checkbox}/index.d.ts +0 -0
- package/{dist/chip → chip}/Chip.js +0 -0
- package/{dist/chip → chip}/index.d.ts +0 -0
- package/{dist/common → common}/OpenSans.css +0 -0
- package/{dist/common → common}/RequiredComponent.js +0 -0
- package/{dist/common → common}/fonts/OpenSans-Bold.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-BoldItalic.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-ExtraBold.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-Italic.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-Light.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-LightItalic.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-Regular.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-SemiBold.ttf +0 -0
- package/{dist/common → common}/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
- package/{dist/common → common}/utils.js +0 -0
- package/{dist/common → common}/variables.js +14 -22
- package/{dist/date → date}/Date.js +0 -0
- package/{dist/date → date}/index.d.ts +0 -0
- package/{dist/date-input → date-input}/DateInput.js +0 -0
- package/{dist/date-input → date-input}/index.d.ts +0 -0
- package/{dist/dialog → dialog}/Dialog.js +0 -0
- package/{dist/dialog → dialog}/index.d.ts +0 -0
- package/{dist/dropdown → dropdown}/Dropdown.js +0 -0
- package/{dist/dropdown → dropdown}/index.d.ts +0 -0
- package/{dist/file-input → file-input}/FileInput.js +1 -1
- package/{dist/file-input → file-input}/FileItem.js +0 -0
- package/{dist/file-input → file-input}/index.d.ts +0 -0
- package/{dist/footer → footer}/Footer.js +0 -0
- package/{dist/footer → footer}/Icons.js +0 -0
- package/{dist/footer → footer}/index.d.ts +0 -0
- package/{dist/header → header}/Header.js +0 -0
- package/{dist/header → header}/Icons.js +0 -0
- package/{dist/header → header}/index.d.ts +0 -0
- package/{dist/heading → heading}/Heading.js +0 -0
- package/{dist/heading → heading}/index.d.ts +0 -0
- package/{dist/input-text → input-text}/Icons.js +0 -0
- package/{dist/input-text → input-text}/InputText.js +0 -0
- package/{dist/input-text → input-text}/index.d.ts +0 -0
- package/{dist/layout → layout}/ApplicationLayout.js +0 -0
- package/{dist/layout → layout}/Icons.js +0 -0
- package/{dist/link → link}/Link.js +0 -0
- package/{dist/link → link}/index.d.ts +0 -0
- package/{dist/main.d.ts → main.d.ts} +0 -0
- package/{dist/main.js → main.js} +0 -0
- package/{dist/number-input → number-input}/NumberInput.js +0 -0
- package/{dist/number-input → number-input}/NumberInputContext.js +0 -0
- package/{dist/number-input → number-input}/index.d.ts +0 -0
- package/package.json +9 -9
- package/{dist/paginator → paginator}/Icons.js +0 -0
- package/{dist/paginator → paginator}/Paginator.js +0 -0
- package/{dist/paginator → paginator}/index.d.ts +0 -0
- package/{dist/password-input → password-input}/PasswordInput.js +0 -0
- package/{dist/password-input → password-input}/index.d.ts +0 -0
- package/{dist/progress-bar → progress-bar}/ProgressBar.js +0 -0
- package/{dist/progress-bar → progress-bar}/index.d.ts +0 -0
- package/{dist/radio → radio}/Radio.js +0 -0
- package/{dist/radio → radio}/index.d.ts +0 -0
- package/{dist/resultsetTable → resultsetTable}/ResultsetTable.js +1 -1
- package/{dist/resultsetTable → resultsetTable}/index.d.ts +0 -0
- package/{dist/select → select}/Select.js +128 -88
- package/select/index.d.ts +131 -0
- package/{dist/sidenav → sidenav}/Sidenav.js +0 -0
- package/{dist/sidenav → sidenav}/index.d.ts +0 -0
- package/{dist/slider → slider}/Slider.js +0 -0
- package/{dist/slider → slider}/index.d.ts +0 -0
- package/{dist/spinner → spinner}/Spinner.js +0 -0
- package/{dist/spinner → spinner}/index.d.ts +0 -0
- package/{dist/switch → switch}/Switch.js +0 -0
- package/{dist/switch → switch}/index.d.ts +0 -0
- package/{dist/table → table}/Table.js +0 -0
- package/{dist/table → table}/index.d.ts +0 -0
- package/{dist/tabs → tabs}/Tabs.js +0 -0
- package/{dist/tabs → tabs}/index.d.ts +0 -0
- package/{dist/tag → tag}/Tag.js +0 -0
- package/{dist/tag → tag}/index.d.ts +0 -0
- package/{dist/text-input → text-input}/TextInput.js +199 -183
- package/{dist/text-input → text-input}/index.d.ts +0 -0
- package/{dist/textarea → textarea}/Textarea.js +0 -0
- package/{dist/textarea → textarea}/index.d.ts +0 -0
- package/{dist/toggle → toggle}/Toggle.js +0 -0
- package/{dist/toggle → toggle}/index.d.ts +0 -0
- package/{dist/toggle-group → toggle-group}/ToggleGroup.js +0 -0
- package/{dist/toggle-group → toggle-group}/index.d.ts +0 -0
- package/{dist/upload → upload}/Upload.js +0 -0
- package/{dist/upload → upload}/buttons-upload/ButtonsUpload.js +0 -0
- package/{dist/upload → upload}/buttons-upload/Icons.js +0 -0
- package/{dist/upload → upload}/dragAndDropArea/DragAndDropArea.js +0 -0
- package/{dist/upload → upload}/dragAndDropArea/Icons.js +0 -0
- package/{dist/upload → upload}/file-upload/FileToUpload.js +0 -0
- package/{dist/upload → upload}/file-upload/Icons.js +0 -0
- package/{dist/upload → upload}/files-upload/FilesToUpload.js +0 -0
- package/{dist/upload → upload}/index.d.ts +0 -0
- package/{dist/upload → upload}/transaction/Icons.js +0 -0
- package/{dist/upload → upload}/transaction/Transaction.js +0 -0
- package/{dist/upload → upload}/transactions/Transactions.js +0 -0
- package/{dist/useTheme.js → useTheme.js} +0 -0
- package/{dist/wizard → wizard}/Icons.js +0 -0
- package/{dist/wizard → wizard}/Wizard.js +0 -0
- package/{dist/wizard → wizard}/index.d.ts +0 -0
- package/README.md +0 -66
- package/babel.config.js +0 -7
- package/dist/select/index.d.ts +0 -53
- package/dist/stories/Button.js +0 -71
- package/dist/stories/Button.stories.js +0 -55
- package/dist/stories/Header.js +0 -67
- package/dist/stories/Header.stories.js +0 -31
- package/dist/stories/Introduction.stories.mdx +0 -211
- package/dist/stories/Page.js +0 -68
- package/dist/stories/Page.stories.js +0 -39
- package/dist/stories/assets/code-brackets.svg +0 -1
- package/dist/stories/assets/colors.svg +0 -1
- package/dist/stories/assets/comments.svg +0 -1
- package/dist/stories/assets/direction.svg +0 -1
- package/dist/stories/assets/flow.svg +0 -1
- package/dist/stories/assets/plugin.svg +0 -1
- package/dist/stories/assets/repo.svg +0 -1
- package/dist/stories/assets/stackalt.svg +0 -1
- package/dist/stories/button.css +0 -30
- package/dist/stories/header.css +0 -26
- package/dist/stories/page.css +0 -69
- package/test/Accordion.test.js +0 -33
- package/test/AccordionGroup.test.js +0 -125
- package/test/Alert.test.js +0 -53
- package/test/Box.test.js +0 -10
- package/test/Button.test.js +0 -18
- package/test/Card.test.js +0 -30
- package/test/Checkbox.test.js +0 -45
- package/test/Chip.test.js +0 -25
- package/test/Date.test.js +0 -395
- package/test/DateInput.test.js +0 -242
- package/test/Dialog.test.js +0 -23
- package/test/Dropdown.test.js +0 -145
- package/test/FileInput.test.js +0 -201
- package/test/Footer.test.js +0 -94
- package/test/Header.test.js +0 -34
- package/test/Heading.test.js +0 -83
- package/test/InputText.test.js +0 -239
- package/test/Link.test.js +0 -43
- package/test/NumberInput.test.js +0 -259
- package/test/Paginator.test.js +0 -181
- package/test/PasswordInput.test.js +0 -83
- package/test/ProgressBar.test.js +0 -35
- package/test/Radio.test.js +0 -37
- package/test/ResultsetTable.test.js +0 -330
- package/test/Select.test.js +0 -415
- package/test/Sidenav.test.js +0 -45
- package/test/Slider.test.js +0 -74
- package/test/Spinner.test.js +0 -32
- package/test/Switch.test.js +0 -45
- package/test/Table.test.js +0 -36
- package/test/Tabs.test.js +0 -109
- package/test/Tag.test.js +0 -32
- package/test/TextInput.test.js +0 -732
- package/test/Textarea.test.js +0 -193
- package/test/ToggleGroup.test.js +0 -85
- package/test/Upload.test.js +0 -60
- package/test/V3Select.test.js +0 -212
- package/test/V3TextArea.test.js +0 -51
- package/test/Wizard.test.js +0 -130
- package/test/mocks/pngMock.js +0 -1
- package/test/mocks/svgMock.js +0 -1
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/README.md
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# Halstack React CDK
|
|
2
|
-
|
|
3
|
-
Halstack React CDK is a npm library of reusable React components, made with the purpose of helping React developers with the task of implementing User Interfaces following the DXC Design Guidelines.
|
|
4
|
-
|
|
5
|
-
- It increases visual and behavioral consistency across the applications using the library.
|
|
6
|
-
|
|
7
|
-
- It cuts down development efforts, taking the responsability of following the Design Guidelines away from the developer, and allowing him to focus on providing business value.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
Halstack React CDK is a set of reusable components distributed as a npm library. See the [documentation site](https://developer.dxc.com/tools/react/) for details on how to use it.
|
|
12
|
-
|
|
13
|
-
## Contributing
|
|
14
|
-
|
|
15
|
-
Before opening new issues or pull requests, please refer to [CONTRIBUTING.MD](https://github.com/dxc-technology/halstack-react/blob/master/CONTRIBUTING.md).
|
|
16
|
-
|
|
17
|
-
## Development Setup
|
|
18
|
-
|
|
19
|
-
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
The project is divided in two main folders. One is for the actual library, and the other one is a React application using the library.
|
|
23
|
-
|
|
24
|
-
### Library
|
|
25
|
-
|
|
26
|
-
Contained in the `lib` folder.
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
cd lib
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Install the library dependencies.
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
npm install
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Run the build process into `dist` folder, detecting and automatically building changes in src.
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npm run build:watch #'npm run build' if there is no need to watch for changes
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Example Application
|
|
45
|
-
|
|
46
|
-
Contained in the `app` folder.
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
cd app # from the root folder
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Install the application dependencies. The Halstack React CDK dependency is linked to the local `lib` folder. This one must have been previously built.
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
npm install
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Start the application.
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
npm start # runs create-react-app dev server
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Now, anytime you make a change to the library or the app, `create-react-app` will live-reload your local dev server so you can iterate on your component in real-time.
|
|
65
|
-
|
|
66
|
-
## Running the tests
|
package/babel.config.js
DELETED
package/dist/select/index.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
type SVG = string | (HTMLElement & SVGElement);
|
|
2
|
-
type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
3
|
-
type Margin = {
|
|
4
|
-
top?: Space;
|
|
5
|
-
bottom?: Space;
|
|
6
|
-
left?: Space;
|
|
7
|
-
right?: Space;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type OptionGroup = {
|
|
11
|
-
label: string;
|
|
12
|
-
options: Option[];
|
|
13
|
-
};
|
|
14
|
-
type Option = {
|
|
15
|
-
icon?: string | SVG;
|
|
16
|
-
label: string;
|
|
17
|
-
value: string;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
type Props = {
|
|
21
|
-
label?: string;
|
|
22
|
-
name?: string;
|
|
23
|
-
value?: string | string[];
|
|
24
|
-
options?: Option[] | OptionGroup[];
|
|
25
|
-
helperText?: string;
|
|
26
|
-
placeholder?: string;
|
|
27
|
-
disabled?: boolean;
|
|
28
|
-
optional?: boolean;
|
|
29
|
-
searchable?: boolean;
|
|
30
|
-
multiple?: boolean;
|
|
31
|
-
onChange?: (value: string | string[]) => void;
|
|
32
|
-
onBlur?: (val: { value: string | string[]; error: string }) => void;
|
|
33
|
-
error?: string;
|
|
34
|
-
/**
|
|
35
|
-
* Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
|
|
36
|
-
* You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
|
|
37
|
-
*/
|
|
38
|
-
margin?: Space | Margin;
|
|
39
|
-
/**
|
|
40
|
-
* Size of the component ('small' | 'medium' | 'large' | 'fillParent').
|
|
41
|
-
*/
|
|
42
|
-
size?: "small" | "medium" | "large" | "fillParent";
|
|
43
|
-
/**
|
|
44
|
-
* Value of the tabindex attribute.
|
|
45
|
-
*/
|
|
46
|
-
tabIndex?: number;
|
|
47
|
-
/**
|
|
48
|
-
* Reference to the component.
|
|
49
|
-
*/
|
|
50
|
-
ref?: React.RefObject<HTMLDivElement>;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export default function DxcSelect(props: Props): JSX.Element;
|
package/dist/stories/Button.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.Button = void 0;
|
|
9
|
-
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
-
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
|
|
16
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
|
-
|
|
18
|
-
require("./button.css");
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Primary UI component for user interaction
|
|
22
|
-
*/
|
|
23
|
-
var Button = function Button(_ref) {
|
|
24
|
-
var primary = _ref.primary,
|
|
25
|
-
backgroundColor = _ref.backgroundColor,
|
|
26
|
-
size = _ref.size,
|
|
27
|
-
label = _ref.label,
|
|
28
|
-
props = (0, _objectWithoutProperties2["default"])(_ref, ["primary", "backgroundColor", "size", "label"]);
|
|
29
|
-
var mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
|
|
30
|
-
return _react["default"].createElement("button", (0, _extends2["default"])({
|
|
31
|
-
type: "button",
|
|
32
|
-
className: ['storybook-button', "storybook-button--".concat(size), mode].join(' '),
|
|
33
|
-
style: backgroundColor && {
|
|
34
|
-
backgroundColor: backgroundColor
|
|
35
|
-
}
|
|
36
|
-
}, props), label);
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
exports.Button = Button;
|
|
40
|
-
Button.propTypes = {
|
|
41
|
-
/**
|
|
42
|
-
* Is this the principal call to action on the page?
|
|
43
|
-
*/
|
|
44
|
-
primary: _propTypes["default"].bool,
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* What background color to use
|
|
48
|
-
*/
|
|
49
|
-
backgroundColor: _propTypes["default"].string,
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* How large should the button be?
|
|
53
|
-
*/
|
|
54
|
-
size: _propTypes["default"].oneOf(['small', 'medium', 'large']),
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Button contents
|
|
58
|
-
*/
|
|
59
|
-
label: _propTypes["default"].string.isRequired,
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Optional click handler
|
|
63
|
-
*/
|
|
64
|
-
onClick: _propTypes["default"].func
|
|
65
|
-
};
|
|
66
|
-
Button.defaultProps = {
|
|
67
|
-
backgroundColor: null,
|
|
68
|
-
primary: false,
|
|
69
|
-
size: 'medium',
|
|
70
|
-
onClick: undefined
|
|
71
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.Small = exports.Large = exports.Secondary = exports.Primary = exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
|
-
var _Button = require("./Button");
|
|
13
|
-
|
|
14
|
-
// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
|
|
15
|
-
var _default = {
|
|
16
|
-
title: 'Example/Button',
|
|
17
|
-
component: _Button.Button,
|
|
18
|
-
// More on argTypes: https://storybook.js.org/docs/react/api/argtypes
|
|
19
|
-
argTypes: {
|
|
20
|
-
backgroundColor: {
|
|
21
|
-
control: 'color'
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}; // More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args
|
|
25
|
-
|
|
26
|
-
exports["default"] = _default;
|
|
27
|
-
|
|
28
|
-
var Template = function Template(args) {
|
|
29
|
-
return _react["default"].createElement(_Button.Button, args);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
var Primary = Template.bind({}); // More on args: https://storybook.js.org/docs/react/writing-stories/args
|
|
33
|
-
|
|
34
|
-
exports.Primary = Primary;
|
|
35
|
-
Primary.args = {
|
|
36
|
-
primary: true,
|
|
37
|
-
label: 'Button'
|
|
38
|
-
};
|
|
39
|
-
var Secondary = Template.bind({});
|
|
40
|
-
exports.Secondary = Secondary;
|
|
41
|
-
Secondary.args = {
|
|
42
|
-
label: 'Button'
|
|
43
|
-
};
|
|
44
|
-
var Large = Template.bind({});
|
|
45
|
-
exports.Large = Large;
|
|
46
|
-
Large.args = {
|
|
47
|
-
size: 'large',
|
|
48
|
-
label: 'Button'
|
|
49
|
-
};
|
|
50
|
-
var Small = Template.bind({});
|
|
51
|
-
exports.Small = Small;
|
|
52
|
-
Small.args = {
|
|
53
|
-
size: 'small',
|
|
54
|
-
label: 'Button'
|
|
55
|
-
};
|
package/dist/stories/Header.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.Header = void 0;
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
-
|
|
14
|
-
var _Button = require("./Button");
|
|
15
|
-
|
|
16
|
-
require("./header.css");
|
|
17
|
-
|
|
18
|
-
var Header = function Header(_ref) {
|
|
19
|
-
var user = _ref.user,
|
|
20
|
-
onLogin = _ref.onLogin,
|
|
21
|
-
onLogout = _ref.onLogout,
|
|
22
|
-
onCreateAccount = _ref.onCreateAccount;
|
|
23
|
-
return _react["default"].createElement("header", null, _react["default"].createElement("div", {
|
|
24
|
-
className: "wrapper"
|
|
25
|
-
}, _react["default"].createElement("div", null, _react["default"].createElement("svg", {
|
|
26
|
-
width: "32",
|
|
27
|
-
height: "32",
|
|
28
|
-
viewBox: "0 0 32 32",
|
|
29
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
30
|
-
}, _react["default"].createElement("g", {
|
|
31
|
-
fill: "none",
|
|
32
|
-
fillRule: "evenodd"
|
|
33
|
-
}, _react["default"].createElement("path", {
|
|
34
|
-
d: "M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z",
|
|
35
|
-
fill: "#FFF"
|
|
36
|
-
}), _react["default"].createElement("path", {
|
|
37
|
-
d: "M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z",
|
|
38
|
-
fill: "#555AB9"
|
|
39
|
-
}), _react["default"].createElement("path", {
|
|
40
|
-
d: "M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z",
|
|
41
|
-
fill: "#91BAF8"
|
|
42
|
-
}))), _react["default"].createElement("h1", null, "Acme")), _react["default"].createElement("div", null, user ? _react["default"].createElement(_Button.Button, {
|
|
43
|
-
size: "small",
|
|
44
|
-
onClick: onLogout,
|
|
45
|
-
label: "Log out"
|
|
46
|
-
}) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_Button.Button, {
|
|
47
|
-
size: "small",
|
|
48
|
-
onClick: onLogin,
|
|
49
|
-
label: "Log in"
|
|
50
|
-
}), _react["default"].createElement(_Button.Button, {
|
|
51
|
-
primary: true,
|
|
52
|
-
size: "small",
|
|
53
|
-
onClick: onCreateAccount,
|
|
54
|
-
label: "Sign up"
|
|
55
|
-
})))));
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
exports.Header = Header;
|
|
59
|
-
Header.propTypes = {
|
|
60
|
-
user: _propTypes["default"].shape({}),
|
|
61
|
-
onLogin: _propTypes["default"].func.isRequired,
|
|
62
|
-
onLogout: _propTypes["default"].func.isRequired,
|
|
63
|
-
onCreateAccount: _propTypes["default"].func.isRequired
|
|
64
|
-
};
|
|
65
|
-
Header.defaultProps = {
|
|
66
|
-
user: null
|
|
67
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.LoggedOut = exports.LoggedIn = exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
|
-
var _Header = require("./Header");
|
|
13
|
-
|
|
14
|
-
var _default = {
|
|
15
|
-
title: 'Example/Header',
|
|
16
|
-
component: _Header.Header
|
|
17
|
-
};
|
|
18
|
-
exports["default"] = _default;
|
|
19
|
-
|
|
20
|
-
var Template = function Template(args) {
|
|
21
|
-
return _react["default"].createElement(_Header.Header, args);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
var LoggedIn = Template.bind({});
|
|
25
|
-
exports.LoggedIn = LoggedIn;
|
|
26
|
-
LoggedIn.args = {
|
|
27
|
-
user: {}
|
|
28
|
-
};
|
|
29
|
-
var LoggedOut = Template.bind({});
|
|
30
|
-
exports.LoggedOut = LoggedOut;
|
|
31
|
-
LoggedOut.args = {};
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs';
|
|
2
|
-
import Code from './assets/code-brackets.svg';
|
|
3
|
-
import Colors from './assets/colors.svg';
|
|
4
|
-
import Comments from './assets/comments.svg';
|
|
5
|
-
import Direction from './assets/direction.svg';
|
|
6
|
-
import Flow from './assets/flow.svg';
|
|
7
|
-
import Plugin from './assets/plugin.svg';
|
|
8
|
-
import Repo from './assets/repo.svg';
|
|
9
|
-
import StackAlt from './assets/stackalt.svg';
|
|
10
|
-
|
|
11
|
-
<Meta title="Example/Introduction" />
|
|
12
|
-
|
|
13
|
-
<style>{`
|
|
14
|
-
.subheading {
|
|
15
|
-
--mediumdark: '#999999';
|
|
16
|
-
font-weight: 900;
|
|
17
|
-
font-size: 13px;
|
|
18
|
-
color: #999;
|
|
19
|
-
letter-spacing: 6px;
|
|
20
|
-
line-height: 24px;
|
|
21
|
-
text-transform: uppercase;
|
|
22
|
-
margin-bottom: 12px;
|
|
23
|
-
margin-top: 40px;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.link-list {
|
|
27
|
-
display: grid;
|
|
28
|
-
grid-template-columns: 1fr;
|
|
29
|
-
grid-template-rows: 1fr 1fr;
|
|
30
|
-
row-gap: 10px;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@media (min-width: 620px) {
|
|
34
|
-
.link-list {
|
|
35
|
-
row-gap: 20px;
|
|
36
|
-
column-gap: 20px;
|
|
37
|
-
grid-template-columns: 1fr 1fr;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@media all and (-ms-high-contrast:none) {
|
|
42
|
-
.link-list {
|
|
43
|
-
display: -ms-grid;
|
|
44
|
-
-ms-grid-columns: 1fr 1fr;
|
|
45
|
-
-ms-grid-rows: 1fr 1fr;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.link-item {
|
|
50
|
-
display: block;
|
|
51
|
-
padding: 20px 30px 20px 15px;
|
|
52
|
-
border: 1px solid #00000010;
|
|
53
|
-
border-radius: 5px;
|
|
54
|
-
transition: background 150ms ease-out, border 150ms ease-out, transform 150ms ease-out;
|
|
55
|
-
color: #333333;
|
|
56
|
-
display: flex;
|
|
57
|
-
align-items: flex-start;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.link-item:hover {
|
|
61
|
-
border-color: #1EA7FD50;
|
|
62
|
-
transform: translate3d(0, -3px, 0);
|
|
63
|
-
box-shadow: rgba(0, 0, 0, 0.08) 0 3px 10px 0;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.link-item:active {
|
|
67
|
-
border-color: #1EA7FD;
|
|
68
|
-
transform: translate3d(0, 0, 0);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.link-item strong {
|
|
72
|
-
font-weight: 700;
|
|
73
|
-
display: block;
|
|
74
|
-
margin-bottom: 2px;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.link-item img {
|
|
78
|
-
height: 40px;
|
|
79
|
-
width: 40px;
|
|
80
|
-
margin-right: 15px;
|
|
81
|
-
flex: none;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.link-item span {
|
|
85
|
-
font-size: 14px;
|
|
86
|
-
line-height: 20px;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.tip {
|
|
90
|
-
display: inline-block;
|
|
91
|
-
border-radius: 1em;
|
|
92
|
-
font-size: 11px;
|
|
93
|
-
line-height: 12px;
|
|
94
|
-
font-weight: 700;
|
|
95
|
-
background: #E7FDD8;
|
|
96
|
-
color: #66BF3C;
|
|
97
|
-
padding: 4px 12px;
|
|
98
|
-
margin-right: 10px;
|
|
99
|
-
vertical-align: top;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.tip-wrapper {
|
|
103
|
-
font-size: 13px;
|
|
104
|
-
line-height: 20px;
|
|
105
|
-
margin-top: 40px;
|
|
106
|
-
margin-bottom: 40px;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.tip-wrapper code {
|
|
110
|
-
font-size: 12px;
|
|
111
|
-
display: inline-block;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
`}</style>
|
|
116
|
-
|
|
117
|
-
# Welcome to Storybook
|
|
118
|
-
|
|
119
|
-
Storybook helps you build UI components in isolation from your app's business logic, data, and context.
|
|
120
|
-
That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA.
|
|
121
|
-
|
|
122
|
-
Browse example stories now by navigating to them in the sidebar.
|
|
123
|
-
View their code in the `src/stories` directory to learn how they work.
|
|
124
|
-
We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages.
|
|
125
|
-
|
|
126
|
-
<div className="subheading">Configure</div>
|
|
127
|
-
|
|
128
|
-
<div className="link-list">
|
|
129
|
-
<a
|
|
130
|
-
className="link-item"
|
|
131
|
-
href="https://storybook.js.org/docs/react/addons/addon-types"
|
|
132
|
-
target="_blank"
|
|
133
|
-
>
|
|
134
|
-
<img src={Plugin} alt="plugin" />
|
|
135
|
-
<span>
|
|
136
|
-
<strong>Presets for popular tools</strong>
|
|
137
|
-
Easy setup for TypeScript, SCSS and more.
|
|
138
|
-
</span>
|
|
139
|
-
</a>
|
|
140
|
-
<a
|
|
141
|
-
className="link-item"
|
|
142
|
-
href="https://storybook.js.org/docs/react/configure/webpack"
|
|
143
|
-
target="_blank"
|
|
144
|
-
>
|
|
145
|
-
<img src={StackAlt} alt="Build" />
|
|
146
|
-
<span>
|
|
147
|
-
<strong>Build configuration</strong>
|
|
148
|
-
How to customize webpack and Babel
|
|
149
|
-
</span>
|
|
150
|
-
</a>
|
|
151
|
-
<a
|
|
152
|
-
className="link-item"
|
|
153
|
-
href="https://storybook.js.org/docs/react/configure/styling-and-css"
|
|
154
|
-
target="_blank"
|
|
155
|
-
>
|
|
156
|
-
<img src={Colors} alt="colors" />
|
|
157
|
-
<span>
|
|
158
|
-
<strong>Styling</strong>
|
|
159
|
-
How to load and configure CSS libraries
|
|
160
|
-
</span>
|
|
161
|
-
</a>
|
|
162
|
-
<a
|
|
163
|
-
className="link-item"
|
|
164
|
-
href="https://storybook.js.org/docs/react/get-started/setup#configure-storybook-for-your-stack"
|
|
165
|
-
target="_blank"
|
|
166
|
-
>
|
|
167
|
-
<img src={Flow} alt="flow" />
|
|
168
|
-
<span>
|
|
169
|
-
<strong>Data</strong>
|
|
170
|
-
Providers and mocking for data libraries
|
|
171
|
-
</span>
|
|
172
|
-
</a>
|
|
173
|
-
</div>
|
|
174
|
-
|
|
175
|
-
<div className="subheading">Learn</div>
|
|
176
|
-
|
|
177
|
-
<div className="link-list">
|
|
178
|
-
<a className="link-item" href="https://storybook.js.org/docs" target="_blank">
|
|
179
|
-
<img src={Repo} alt="repo" />
|
|
180
|
-
<span>
|
|
181
|
-
<strong>Storybook documentation</strong>
|
|
182
|
-
Configure, customize, and extend
|
|
183
|
-
</span>
|
|
184
|
-
</a>
|
|
185
|
-
<a className="link-item" href="https://storybook.js.org/tutorials/" target="_blank">
|
|
186
|
-
<img src={Direction} alt="direction" />
|
|
187
|
-
<span>
|
|
188
|
-
<strong>In-depth guides</strong>
|
|
189
|
-
Best practices from leading teams
|
|
190
|
-
</span>
|
|
191
|
-
</a>
|
|
192
|
-
<a className="link-item" href="https://github.com/storybookjs/storybook" target="_blank">
|
|
193
|
-
<img src={Code} alt="code" />
|
|
194
|
-
<span>
|
|
195
|
-
<strong>GitHub project</strong>
|
|
196
|
-
View the source and add issues
|
|
197
|
-
</span>
|
|
198
|
-
</a>
|
|
199
|
-
<a className="link-item" href="https://discord.gg/storybook" target="_blank">
|
|
200
|
-
<img src={Comments} alt="comments" />
|
|
201
|
-
<span>
|
|
202
|
-
<strong>Discord chat</strong>
|
|
203
|
-
Chat with maintainers and the community
|
|
204
|
-
</span>
|
|
205
|
-
</a>
|
|
206
|
-
</div>
|
|
207
|
-
|
|
208
|
-
<div className="tip-wrapper">
|
|
209
|
-
<span className="tip">Tip</span>Edit the Markdown in{' '}
|
|
210
|
-
<code>src/stories/Introduction.stories.mdx</code>
|
|
211
|
-
</div>
|
package/dist/stories/Page.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.Page = void 0;
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
-
|
|
14
|
-
var _Header = require("./Header");
|
|
15
|
-
|
|
16
|
-
require("./page.css");
|
|
17
|
-
|
|
18
|
-
var Page = function Page(_ref) {
|
|
19
|
-
var user = _ref.user,
|
|
20
|
-
onLogin = _ref.onLogin,
|
|
21
|
-
onLogout = _ref.onLogout,
|
|
22
|
-
onCreateAccount = _ref.onCreateAccount;
|
|
23
|
-
return _react["default"].createElement("article", null, _react["default"].createElement(_Header.Header, {
|
|
24
|
-
user: user,
|
|
25
|
-
onLogin: onLogin,
|
|
26
|
-
onLogout: onLogout,
|
|
27
|
-
onCreateAccount: onCreateAccount
|
|
28
|
-
}), _react["default"].createElement("section", null, _react["default"].createElement("h2", null, "Pages in Storybook"), _react["default"].createElement("p", null, "We recommend building UIs with a", ' ', _react["default"].createElement("a", {
|
|
29
|
-
href: "https://componentdriven.org",
|
|
30
|
-
target: "_blank",
|
|
31
|
-
rel: "noopener noreferrer"
|
|
32
|
-
}, _react["default"].createElement("strong", null, "component-driven")), ' ', "process starting with atomic components and ending with pages."), _react["default"].createElement("p", null, "Render pages with mock data. This makes it easy to build and review page states without needing to navigate to them in your app. Here are some handy patterns for managing page data in Storybook:"), _react["default"].createElement("ul", null, _react["default"].createElement("li", null, "Use a higher-level connected component. Storybook helps you compose such data from the \"args\" of child component stories"), _react["default"].createElement("li", null, "Assemble data in the page component from your services. You can mock these services out using Storybook.")), _react["default"].createElement("p", null, "Get a guided tutorial on component-driven development at", ' ', _react["default"].createElement("a", {
|
|
33
|
-
href: "https://storybook.js.org/tutorials/",
|
|
34
|
-
target: "_blank",
|
|
35
|
-
rel: "noopener noreferrer"
|
|
36
|
-
}, "Storybook tutorials"), ". Read more in the", ' ', _react["default"].createElement("a", {
|
|
37
|
-
href: "https://storybook.js.org/docs",
|
|
38
|
-
target: "_blank",
|
|
39
|
-
rel: "noopener noreferrer"
|
|
40
|
-
}, "docs"), "."), _react["default"].createElement("div", {
|
|
41
|
-
className: "tip-wrapper"
|
|
42
|
-
}, _react["default"].createElement("span", {
|
|
43
|
-
className: "tip"
|
|
44
|
-
}, "Tip"), " Adjust the width of the canvas with the", ' ', _react["default"].createElement("svg", {
|
|
45
|
-
width: "10",
|
|
46
|
-
height: "10",
|
|
47
|
-
viewBox: "0 0 12 12",
|
|
48
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
49
|
-
}, _react["default"].createElement("g", {
|
|
50
|
-
fill: "none",
|
|
51
|
-
fillRule: "evenodd"
|
|
52
|
-
}, _react["default"].createElement("path", {
|
|
53
|
-
d: "M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z",
|
|
54
|
-
id: "a",
|
|
55
|
-
fill: "#999"
|
|
56
|
-
}))), "Viewports addon in the toolbar")));
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
exports.Page = Page;
|
|
60
|
-
Page.propTypes = {
|
|
61
|
-
user: _propTypes["default"].shape({}),
|
|
62
|
-
onLogin: _propTypes["default"].func.isRequired,
|
|
63
|
-
onLogout: _propTypes["default"].func.isRequired,
|
|
64
|
-
onCreateAccount: _propTypes["default"].func.isRequired
|
|
65
|
-
};
|
|
66
|
-
Page.defaultProps = {
|
|
67
|
-
user: null
|
|
68
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.LoggedOut = exports.LoggedIn = exports["default"] = void 0;
|
|
11
|
-
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
|
|
16
|
-
var _Page = require("./Page");
|
|
17
|
-
|
|
18
|
-
var HeaderStories = _interopRequireWildcard(require("./Header.stories"));
|
|
19
|
-
|
|
20
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
-
|
|
22
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
23
|
-
|
|
24
|
-
var _default = {
|
|
25
|
-
title: 'Example/Page',
|
|
26
|
-
component: _Page.Page
|
|
27
|
-
};
|
|
28
|
-
exports["default"] = _default;
|
|
29
|
-
|
|
30
|
-
var Template = function Template(args) {
|
|
31
|
-
return _react["default"].createElement(_Page.Page, args);
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
var LoggedIn = Template.bind({});
|
|
35
|
-
exports.LoggedIn = LoggedIn;
|
|
36
|
-
LoggedIn.args = _objectSpread({}, HeaderStories.LoggedIn.args);
|
|
37
|
-
var LoggedOut = Template.bind({});
|
|
38
|
-
exports.LoggedOut = LoggedOut;
|
|
39
|
-
LoggedOut.args = _objectSpread({}, HeaderStories.LoggedOut.args);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" version="1.1" viewBox="0 0 48 48"><title>illustration/code-brackets</title><g id="illustration/code-brackets" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><path id="Combined-Shape" fill="#87E6E5" d="M11.4139325,12 C11.7605938,12 12,12.5059743 12,13.3779712 L12,17.4951758 L6.43502246,23.3839989 C5.85499251,23.9978337 5.85499251,25.0021663 6.43502246,25.6160011 L12,31.5048242 L12,35.6220288 C12,36.4939606 11.7605228,37 11.4139325,37 C11.2725831,37 11.1134406,36.9158987 10.9453839,36.7379973 L0.435022463,25.6160011 C-0.145007488,25.0021663 -0.145007488,23.9978337 0.435022463,23.3839989 L10.9453839,12.2620027 C11.1134051,12.0841663 11.2725831,12 11.4139325,12 Z M36.5860675,12 C36.7274169,12 36.8865594,12.0841013 37.0546161,12.2620027 L47.5649775,23.3839989 C48.1450075,23.9978337 48.1450075,25.0021663 47.5649775,25.6160011 L37.0546161,36.7379973 C36.8865949,36.9158337 36.7274169,37 36.5860675,37 C36.2394062,37 36,36.4940257 36,35.6220288 L36,31.5048242 L41.5649775,25.6160011 C42.1450075,25.0021663 42.1450075,23.9978337 41.5649775,23.3839989 L36,17.4951758 L36,13.3779712 C36,12.5060394 36.2394772,12 36.5860675,12 Z"/><rect id="Rectangle-7-Copy-5" width="35.57" height="4" x="5.009" y="22.662" fill="#A0DB77" rx="2" transform="translate(22.793959, 24.662305) rotate(-75.000000) translate(-22.793959, -24.662305)"/></g></svg>
|