@autoguru/overdrive 4.15.3 → 4.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alert/Alert.css.d.ts +0 -1
- package/dist/components/Alert/Alert.css.d.ts.map +1 -1
- package/dist/components/Alert/Alert.css.js +0 -8
- package/dist/components/Alert/Alert.d.ts +3 -4
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/Alert.js +3 -3
- package/dist/components/IntentStripe/IntentStripe.css.d.ts +2 -0
- package/dist/components/IntentStripe/IntentStripe.css.d.ts.map +1 -0
- package/dist/components/IntentStripe/IntentStripe.css.js +12 -0
- package/dist/components/IntentStripe/IntentStripe.d.ts +10 -0
- package/dist/components/IntentStripe/IntentStripe.d.ts.map +1 -0
- package/dist/components/IntentStripe/IntentStripe.js +19 -0
- package/dist/components/IntentStripe/index.d.ts +2 -0
- package/dist/components/IntentStripe/index.d.ts.map +1 -0
- package/dist/components/IntentStripe/index.js +3 -0
- package/dist/components/IntentStripe/stories.js +76 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -1
- package/package.json +1 -1
- package/readme.md +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.css.d.ts","sourceRoot":"","sources":["../../../lib/components/Alert/Alert.css.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Alert.css.d.ts","sourceRoot":"","sources":["../../../lib/components/Alert/Alert.css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAGpB,CAAC"}
|
|
@@ -3,14 +3,6 @@
|
|
|
3
3
|
import * as __vanilla_filescope__ from '@vanilla-extract/css/fileScope';
|
|
4
4
|
__vanilla_filescope__.setFileScope("lib/components/Alert/Alert.css.ts", "@autoguru/overdrive");
|
|
5
5
|
import { style } from '@vanilla-extract/css';
|
|
6
|
-
import { themeContractVars as vars } from "../../themes/theme.css.js";
|
|
7
|
-
export const intentBox = style({
|
|
8
|
-
position: 'absolute',
|
|
9
|
-
top: 0,
|
|
10
|
-
left: 0,
|
|
11
|
-
width: vars.space['1'],
|
|
12
|
-
height: '100%'
|
|
13
|
-
}, "intentBox");
|
|
14
6
|
export const contained = style({
|
|
15
7
|
minWidth: '280px',
|
|
16
8
|
maxWidth: '640px'
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ComponentProps, FunctionComponent, ReactNode } from 'react';
|
|
2
|
-
import { backgroundColours } from '../Box/useBoxStyles.css';
|
|
3
2
|
import { Button } from '../Button';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { IntentStripe } from '../IntentStripe';
|
|
4
|
+
type IntentStripeProps = ComponentProps<typeof IntentStripe>;
|
|
5
|
+
export interface Props extends IntentStripeProps {
|
|
6
6
|
children?: ReactNode;
|
|
7
7
|
className?: string;
|
|
8
|
-
intent?: Intent;
|
|
9
8
|
inline?: boolean;
|
|
10
9
|
dismissible?: boolean;
|
|
11
10
|
onRequestClose?: ComponentProps<typeof Button>['onClick'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../lib/components/Alert/Alert.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../lib/components/Alert/Alert.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,KAAK,iBAAiB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAG7D,MAAM,WAAW,KAAM,SAAQ,iBAAiB;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,cAAc,CAAC,EAAE,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;CAC1D;AASD,eAAO,MAAM,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAwE1C,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { Box, useBoxStyles } from "../Box/index.js";
|
|
|
7
7
|
import { Button } from "../Button/index.js";
|
|
8
8
|
import { Column, Columns } from "../Columns/index.js";
|
|
9
9
|
import { Icon } from "../Icon/index.js";
|
|
10
|
+
import { IntentStripe } from "../IntentStripe/index.js";
|
|
10
11
|
import { Text, useTextStyles } from "../Text/index.js";
|
|
11
12
|
import * as styles from "./Alert.css.js";
|
|
12
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -45,9 +46,8 @@ export const Alert = _ref => {
|
|
|
45
46
|
borderRadius: "1",
|
|
46
47
|
boxShadow: inline ? 'none' : '4',
|
|
47
48
|
padding: "2",
|
|
48
|
-
children: [_jsx(
|
|
49
|
-
|
|
50
|
-
backgroundColour: intent
|
|
49
|
+
children: [_jsx(IntentStripe, {
|
|
50
|
+
intent: intent
|
|
51
51
|
}), _jsxs(Columns, {
|
|
52
52
|
noWrap: true,
|
|
53
53
|
spaceX: "2",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentStripe.css.d.ts","sourceRoot":"","sources":["../../../lib/components/IntentStripe/IntentStripe.css.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,QAIpB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as __vanilla_filescope__ from '@vanilla-extract/css/fileScope';
|
|
4
|
+
__vanilla_filescope__.setFileScope("lib/components/IntentStripe/IntentStripe.css.ts", "@autoguru/overdrive");
|
|
5
|
+
import { style } from '@vanilla-extract/css';
|
|
6
|
+
import { themeContractVars as vars } from "../../themes/theme.css.js";
|
|
7
|
+
export const intentBox = style({
|
|
8
|
+
top: 0,
|
|
9
|
+
left: 0,
|
|
10
|
+
width: vars.space['1']
|
|
11
|
+
}, "intentBox");
|
|
12
|
+
__vanilla_filescope__.endFileScope();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FunctionComponent } from 'react';
|
|
2
|
+
import { backgroundColours } from '../Box/useBoxStyles.css';
|
|
3
|
+
type Intent = keyof Pick<typeof backgroundColours, 'danger' | 'information' | 'success' | 'warning'>;
|
|
4
|
+
export interface Props {
|
|
5
|
+
className?: string;
|
|
6
|
+
intent: Intent;
|
|
7
|
+
}
|
|
8
|
+
export declare const IntentStripe: FunctionComponent<Props>;
|
|
9
|
+
export default IntentStripe;
|
|
10
|
+
//# sourceMappingURL=IntentStripe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentStripe.d.ts","sourceRoot":"","sources":["../../../lib/components/IntentStripe/IntentStripe.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI5D,KAAK,MAAM,GAAG,MAAM,IAAI,CACvB,OAAO,iBAAiB,EACxB,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,CAChD,CAAC;AAEF,MAAM,WAAW,KAAK;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,KAAK,CASjD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Box } from "../Box/index.js";
|
|
5
|
+
import * as styles from "./IntentStripe.css.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const IntentStripe = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
className = '',
|
|
10
|
+
intent = 'success'
|
|
11
|
+
} = _ref;
|
|
12
|
+
return _jsx(Box, {
|
|
13
|
+
className: [className, styles.intentBox],
|
|
14
|
+
position: "absolute",
|
|
15
|
+
height: "full",
|
|
16
|
+
backgroundColour: intent
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
export default IntentStripe;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/components/IntentStripe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { Box } from "../Box/index.js";
|
|
8
|
+
import { IntentStripe } from "./index.js";
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
export default {
|
|
12
|
+
title: 'Components/IntentStripe',
|
|
13
|
+
component: IntentStripe,
|
|
14
|
+
argTypes: {
|
|
15
|
+
intent: {
|
|
16
|
+
options: ['information', 'success', 'warning', 'danger'],
|
|
17
|
+
defaultValue: 'primary',
|
|
18
|
+
control: {
|
|
19
|
+
type: 'select'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const MyStripe = args => _jsx(Box, {
|
|
25
|
+
position: "relative",
|
|
26
|
+
width: "full",
|
|
27
|
+
padding: "6",
|
|
28
|
+
backgroundColour: "gray200",
|
|
29
|
+
borderRadius: "1",
|
|
30
|
+
overflow: "hidden",
|
|
31
|
+
children: _jsx(IntentStripe, _objectSpread({}, args))
|
|
32
|
+
});
|
|
33
|
+
const template = args => _jsx(Box, {
|
|
34
|
+
style: {
|
|
35
|
+
display: 'grid',
|
|
36
|
+
gridAutoFlow: 'row dense',
|
|
37
|
+
gridGap: '24px',
|
|
38
|
+
width: '100%'
|
|
39
|
+
},
|
|
40
|
+
children: _jsx(MyStripe, _objectSpread({}, args))
|
|
41
|
+
});
|
|
42
|
+
const templateAllIntents = args => _jsxs(Box, {
|
|
43
|
+
style: {
|
|
44
|
+
display: 'grid',
|
|
45
|
+
gridAutoFlow: 'row dense',
|
|
46
|
+
gridGap: '24px',
|
|
47
|
+
width: '100%'
|
|
48
|
+
},
|
|
49
|
+
children: [_jsx(MyStripe, _objectSpread(_objectSpread({}, args), {}, {
|
|
50
|
+
intent: "success"
|
|
51
|
+
})), _jsx(MyStripe, _objectSpread(_objectSpread({}, args), {}, {
|
|
52
|
+
intent: "warning"
|
|
53
|
+
})), _jsx(MyStripe, _objectSpread(_objectSpread({}, args), {}, {
|
|
54
|
+
intent: "danger"
|
|
55
|
+
})), _jsx(MyStripe, _objectSpread(_objectSpread({}, args), {}, {
|
|
56
|
+
intent: "information"
|
|
57
|
+
}))]
|
|
58
|
+
});
|
|
59
|
+
const standardProps = {
|
|
60
|
+
intent: void 0,
|
|
61
|
+
className: void 0
|
|
62
|
+
};
|
|
63
|
+
export const Standard = template.bind(standardProps);
|
|
64
|
+
Standard.args = standardProps;
|
|
65
|
+
export const StandardAllIntents = templateAllIntents.bind(standardProps);
|
|
66
|
+
StandardAllIntents.args = standardProps;
|
|
67
|
+
const inlineProps = _objectSpread(_objectSpread({}, standardProps), {}, {
|
|
68
|
+
inline: true
|
|
69
|
+
});
|
|
70
|
+
export const InlineAllIntents = templateAllIntents.bind(inlineProps);
|
|
71
|
+
InlineAllIntents.args = inlineProps;
|
|
72
|
+
const noneDismissibleProps = _objectSpread(_objectSpread({}, standardProps), {}, {
|
|
73
|
+
dismissible: false
|
|
74
|
+
});
|
|
75
|
+
export const NoneDismissibleAllIntents = templateAllIntents.bind(noneDismissibleProps);
|
|
76
|
+
NoneDismissibleAllIntents.args = noneDismissibleProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -61,4 +61,5 @@ export * from "./SliderProgress/index.js";
|
|
|
61
61
|
export * from "./HorizontalAutoScroller/index.js";
|
|
62
62
|
export * from "./FillHeightBox/index.js";
|
|
63
63
|
export * from "./StickyBox/index.js";
|
|
64
|
-
export * from "./ScrollPane/index.js";
|
|
64
|
+
export * from "./ScrollPane/index.js";
|
|
65
|
+
export * from "./IntentStripe/index.js";
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
12
|
---
|
|
13
|
+
[Storybook playground](http://overdrive.autoguru.io/).
|
|
13
14
|
|
|
14
15
|
Overdrive is a product component library, and design system for AutoGuru. Built
|
|
15
16
|
with [React](https://github.com/facebook/react),
|
|
16
17
|
[TypeScript](https://github.com/Microsoft/typescript),
|
|
17
|
-
[Vanilla Extract](https://
|
|
18
|
+
[Vanilla Extract](https://github.com/vanilla-extract-css/vanilla-extract/), and
|
|
18
19
|
[Storybook](https://github.com/storybooks/storybook).
|
|
19
20
|
|
|
20
21
|
## Usage
|
|
@@ -45,6 +46,11 @@ yarn add @autoguru/overdrive \
|
|
|
45
46
|
</OverdriveProvider>
|
|
46
47
|
```
|
|
47
48
|
|
|
49
|
+
## Docs
|
|
50
|
+
|
|
51
|
+
Find more about Overdrive API and usages in our [docs](http://overdrive.autoguru.io/?path=/docs/components-actions--no-wrap).
|
|
52
|
+
|
|
53
|
+
|
|
48
54
|
## Thanks
|
|
49
55
|
|
|
50
56
|
[Chromatic](https://www.chromaticqa.com) for providing component screenshot
|