diff --git a/.eslintrc b/.eslintrc index 7be466055..4f32db9a1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -31,6 +31,8 @@ "@typescript-eslint/no-unused-vars": "error", "no-use-before-define": "off", "@typescript-eslint/no-use-before-define": ["error"], + "no-shadow": "off", + "@typescript-eslint/no-shadow": ["error"], // React "react/jsx-filename-extension": ["error", { "extensions": [".tsx"] }], "react/prop-types": 0, diff --git a/.storybook/main.js b/.storybook/main.js index 26dfeaf66..b4f6d1c30 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,10 +1,4 @@ module.exports = { - "stories": [ - "../src/**/*.stories.mdx", - "../src/**/*.stories.@(js|jsx|ts|tsx)" - ], - "addons": [ - "@storybook/addon-links", - "@storybook/addon-essentials" - ] -} \ No newline at end of file + stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"], + addons: ["@storybook/addon-links", "@storybook/addon-essentials", "themeprovider-storybook/register"], +}; diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 000000000..7d3cf37cd --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1 @@ + diff --git a/.storybook/preview.js b/.storybook/preview.js index 5d00c0212..025e6d7c9 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,4 +1,44 @@ +import React from "react"; +import { withThemesProvider } from "themeprovider-storybook"; +import { createGlobalStyle } from "styled-components"; +import light from "../src/theme/light"; +import dark from "../src/theme/dark"; + +const Global = createGlobalStyle` + html { + box-sizing: border-box; + } + *, *:before, *:after { + box-sizing: inherit; + } + + body { + font-family: 'Kanit', sans-serif; + } +`; + +const globalDecorator = (StoryFn) => ( + <> + + + +); export const parameters = { actions: { argTypesRegex: "^on[A-Z].*" }, -} \ No newline at end of file +}; + +const themes = [ + { + name: "Light", + backgroundColor: light.colors.background, + ...light, + }, + { + name: "Dark", + backgroundColor: dark.colors.background, + ...dark, + }, +]; + +export const decorators = [globalDecorator, withThemesProvider(themes)]; diff --git a/README.md b/README.md index ac06eaa49..0c54c1b24 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,13 @@ # 🥞 Pancake UI Kit +## Developing + +This project uses [Storybook](https://storybook.js.org/). To start development run + +```shell +$ yarn storybook +``` + ## Committing Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) using [commitlint](https://commitlint.js.org/#/). diff --git a/package.json b/package.json index 857176801..1cba2dd7c 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "repository": "https://github.com/pancakeswap/pancake-uikit", "license": "MIT", "scripts": { - "build": "rollup -c", + "build": "rollup -c && tsc -d --emitDeclarationOnly --declarationDir dist", "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'", "format": "prettier --write 'src/**/*.{js,jsx,ts,tsx}'", "storybook": "start-storybook -p 6006", @@ -54,6 +54,7 @@ "react-is": "^16.13.1", "rollup": "^2.31.0", "styled-components": "^5.2.0", + "themeprovider-storybook": "^1.6.4", "ts-jest": "^26.4.1", "tslib": "^2.0.3", "typescript": "^4.0.3" diff --git a/rollup.config.js b/rollup.config.js index 1111391c9..dcdbd1b17 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,11 +1,11 @@ -import typescript from '@rollup/plugin-typescript'; -import pkg from './package.json'; +import typescript from "@rollup/plugin-typescript"; +import pkg from "./package.json"; export default { - input: 'src/index.ts', + input: "src/index.ts", output: [ - { file: pkg.main, format: 'cjs' }, - { file: pkg.module, format: 'es' }, + { file: pkg.main, format: "cjs" }, + { file: pkg.module, format: "es" }, ], plugins: [typescript()], }; diff --git a/src/components/Button/StyledButton.tsx b/src/components/Button/StyledButton.tsx new file mode 100644 index 000000000..b99d690bb --- /dev/null +++ b/src/components/Button/StyledButton.tsx @@ -0,0 +1,92 @@ +import styled, { DefaultTheme } from "styled-components"; +import { Props, Variants } from "./types.d"; + +interface ThemedProps extends Props { + theme: DefaultTheme; +} + +const getBackground = ({ variant, disabled, theme }: ThemedProps) => { + if (disabled) { + return "#ddd"; + } + + switch (variant) { + case Variants.OUTLINE: + case Variants.TEXT: + return "transparent"; + case Variants.SECONDARY: + return theme.colors.tertiary; + case Variants.PRIMARY: + default: + return theme.colors.primary; + } +}; + +const getBorder = ({ variant, disabled, theme }: ThemedProps) => { + if (disabled) { + return 0; + } + + switch (variant) { + case Variants.OUTLINE: + return `2px solid ${theme.colors.primary}`; + case Variants.PRIMARY: + case Variants.SECONDARY: + case Variants.TEXT: + default: + return 0; + } +}; + +const getColor = ({ variant, disabled, theme }: ThemedProps) => { + if (disabled) { + return "#acaaaf"; + } + + switch (variant) { + case Variants.PRIMARY: + return "#FFFFFF"; + case Variants.TEXT: + return theme.colors.text; + case Variants.OUTLINE: + case Variants.SECONDARY: + default: + return theme.colors.primary; + } +}; + +export const StartIcon = styled.span` + margin-right: 0.5em; +`; + +export const EndIcon = styled.span` + margin-left: 0.5em; +`; + +const StyledButton = styled.button` + align-items: center; + background-color: ${getBackground}; + border: ${getBorder}; + border-radius: 16px; + color: ${getColor}; + cursor: pointer; + display: inline-flex; + font-family: inherit; + font-size: 16px; + font-weight: 600; + height: ${({ size }) => (size === "sm" ? "32px" : "48px")}; + letter-spacing: 0.03em; + justify-content: center; + outline: 0; + padding: ${({ size }) => (size === "sm" ? "0 16px" : "0 24px")}; + + &:hover:not(:disabled) { + opacity: 0.9; + } + + &:disabled { + cursor: not-allowed; + } +`; + +export default StyledButton; diff --git a/src/components/Button/index.stories.tsx b/src/components/Button/index.stories.tsx index aad62fbd8..422dde206 100644 --- a/src/components/Button/index.stories.tsx +++ b/src/components/Button/index.stories.tsx @@ -1,9 +1,16 @@ import React from "react"; -// also exported from '@storybook/react' if you can deal with breaking changes in 6.1 -// eslint-disable-next-line import/no-unresolved -import { Story, Meta } from "@storybook/react/types-6-0"; +import styled from "styled-components"; +/* eslint-disable import/no-unresolved */ +import { Meta } from "@storybook/react/types-6-0"; +import Button from "./index"; -import Button, { Props } from "./index"; +const Row = styled.div` + margin-bottom: 32px; + + & > button + button { + margin-left: 16px; + } +`; export default { title: "Button", @@ -11,11 +18,65 @@ export default { argTypes: {}, } as Meta; -const Template: Story = (args) => + + + + + + + + + + + + + + + + + + + + ); +}; -Primary.args = { - variant: "primary", - children: "Primary", +const StartIcon = () => ( + + 🥞 + +); +const EndIcon = () => ( + + 🍳 + +); +export const WithIcon: React.FC = () => { + return ( + <> + + + + + + + ); }; diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx index b813a5618..67cdd88b4 100644 --- a/src/components/Button/index.tsx +++ b/src/components/Button/index.tsx @@ -1,13 +1,20 @@ -import styled from "styled-components"; +import React from "react"; +import StyledButton, { StartIcon, EndIcon } from "./StyledButton"; +import { Props } from "./types.d"; -export interface Props { - variant?: "primary"; -} - -const Button = styled.button``; +const Button: React.FC = ({ startIcon, endIcon, children, ...props }) => { + return ( + + {startIcon && {startIcon}} + {children} + {endIcon && {endIcon}} + + ); +}; Button.defaultProps = { variant: "primary", + size: "md", }; export default Button; diff --git a/src/components/Button/types.d.ts b/src/components/Button/types.d.ts new file mode 100644 index 000000000..dd92ee50c --- /dev/null +++ b/src/components/Button/types.d.ts @@ -0,0 +1,15 @@ +import { ButtonHTMLAttributes, ReactNode } from "react"; + +export enum Variants { + OUTLINE = "outline", + TEXT = "text", + SECONDARY = "secondary", + PRIMARY = "primary", +} + +export interface Props extends ButtonHTMLAttributes { + variant?: Variants; + size?: "md" | "sm"; + startIcon?: ReactNode; + endIcon?: ReactNode; +} diff --git a/src/index.ts b/src/index.ts index 71340f659..f387cb45d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,4 @@ // eslint-disable-next-line import/prefer-default-export export { default as Button } from "./components/Button"; + +export * from "./theme"; diff --git a/src/styled.d.ts b/src/styled.d.ts new file mode 100644 index 000000000..5d375b4ab --- /dev/null +++ b/src/styled.d.ts @@ -0,0 +1,32 @@ +import "styled-components"; + +export type Pallete = { + iris: string; + peach: string; + onyx: string; + fuschia: string; + evergreen: string; + slate: string; + lightSlate: string; + dorian: string; + cloud: string; + white: string; +}; + +declare module "styled-components" { + export interface DefaultTheme { + colors: { + primary: string; + secondary: string; + tertiary: string; + background: string; + text: string; + textSubtle: string; + dark: string; + failure: string; + success: string; + accent: string; + light: string; + } & Pallete; + } +} diff --git a/src/theme/dark.ts b/src/theme/dark.ts new file mode 100644 index 000000000..58d43b7dc --- /dev/null +++ b/src/theme/dark.ts @@ -0,0 +1,21 @@ +import { DefaultTheme } from "styled-components"; +import pallete from "./pallete"; + +const darkTheme: DefaultTheme = { + colors: { + ...pallete, + primary: pallete.iris, + secondary: pallete.peach, + tertiary: "#EFF4F5", + background: pallete.onyx, + dark: pallete.onyx, + failure: pallete.fuschia, + success: pallete.evergreen, + text: pallete.white, + textSubtle: pallete.lightSlate, + accent: pallete.dorian, + light: pallete.cloud, + }, +}; + +export default darkTheme; diff --git a/src/theme/index.ts b/src/theme/index.ts new file mode 100644 index 000000000..b8efe3103 --- /dev/null +++ b/src/theme/index.ts @@ -0,0 +1,3 @@ +export { default as colors } from "./pallete"; +export { default as dark } from "./dark"; +export { default as light } from "./light"; diff --git a/src/theme/light.ts b/src/theme/light.ts new file mode 100644 index 000000000..21c6d8ff2 --- /dev/null +++ b/src/theme/light.ts @@ -0,0 +1,21 @@ +import { DefaultTheme } from "styled-components"; +import pallete from "./pallete"; + +const lightTheme: DefaultTheme = { + colors: { + ...pallete, + primary: pallete.iris, + secondary: pallete.peach, + tertiary: "#EFF4F5", + background: pallete.white, + dark: pallete.onyx, + failure: pallete.fuschia, + success: pallete.evergreen, + text: pallete.onyx, + textSubtle: pallete.lightSlate, + accent: pallete.dorian, + light: pallete.cloud, + }, +}; + +export default lightTheme; diff --git a/src/theme/pallete.ts b/src/theme/pallete.ts new file mode 100644 index 000000000..f0c06b11a --- /dev/null +++ b/src/theme/pallete.ts @@ -0,0 +1,16 @@ +import { Pallete } from "../styled.d"; + +const pallete: Pallete = { + iris: "#1FC7D4", + peach: "#7645D9", + onyx: "#191326", + fuschia: "#ED4B9E", + evergreen: "#31D0AA", + slate: "#452A7A", + lightSlate: "#AEA0D6", + dorian: "#F4F2F7", + cloud: "#FAF9FA", + white: "#FFFFFF", +}; + +export default pallete; diff --git a/yarn.lock b/yarn.lock index e63031562..e11a80d02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3196,6 +3196,11 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -3683,6 +3688,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" @@ -4579,6 +4589,11 @@ core-js-pure@^3.0.0, core-js-pure@^3.0.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.1, core-js@^3.6.5: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" @@ -5308,6 +5323,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -5951,6 +5973,26 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fbemitter@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865" + integrity sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU= + dependencies: + fbjs "^0.8.4" + +fbjs@^0.8.0, fbjs@^0.8.4: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -6116,6 +6158,14 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" +flux@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-3.1.3.tgz#d23bed515a79a22d933ab53ab4ada19d05b2f08a" + integrity sha1-0jvtUVp5oi2TOrU6tK2hnQWy8Io= + dependencies: + fbemitter "^2.0.0" + fbjs "^0.8.0" + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -6869,6 +6919,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -6906,6 +6963,11 @@ immer@1.10.0: resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== +immutable@^4.0.0-rc.12: + version "4.0.0-rc.12" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" + integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -7367,7 +7429,7 @@ is-set@^2.0.1: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -7465,6 +7527,14 @@ isobject@^4.0.0: resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -8260,6 +8330,16 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha1-JI42By7ekGUB11lmIAqG2riyMXA= + +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -8840,6 +8920,14 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-fetch@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -9698,6 +9786,13 @@ promise.prototype.finally@^3.1.0: es-abstract "^1.17.0-next.0" function-bind "^1.1.1" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^2.0.1: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" @@ -9792,6 +9887,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= + q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -9870,6 +9970,16 @@ raw-loader@^4.0.1: loader-utils "^2.0.0" schema-utils "^3.0.0" +react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw= + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + react-color@^2.17.0: version "2.18.1" resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.1.tgz#2cda8cc8e06a9e2c52ad391a30ddad31972472f4" @@ -10020,6 +10130,16 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-json-view@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.19.1.tgz#95d8e59e024f08a25e5dc8f076ae304eed97cf5c" + integrity sha512-u5e0XDLIs9Rj43vWkKvwL8G3JzvXSl6etuS5G42a8klMohZuYFQzSN6ri+/GiBptDqlrXPTdExJVU7x9rrlXhg== + dependencies: + flux "^3.1.3" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^6.1.0" + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -10067,6 +10187,13 @@ react-syntax-highlighter@^12.2.1: prismjs "^1.8.4" refractor "^2.4.1" +react-textarea-autosize@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-6.1.0.tgz#df91387f8a8f22020b77e3833c09829d706a09a5" + integrity sha512-F6bI1dgib6fSvG8so1HuArPUv+iVEfPliuLWusLF+gAKz0FbB4jLrWUrTAeq1afnPT2c9toEZYUdz/y1uKMy4A== + dependencies: + prop-types "^15.6.0" + react-textarea-autosize@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.2.0.tgz#fae38653f5ec172a855fd5fffb39e466d56aebdb" @@ -10568,7 +10695,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10732,7 +10859,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -11262,6 +11389,11 @@ styled-components@^5.2.0: shallowequal "^1.1.0" supports-color "^5.5.0" +styled-react-modal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/styled-react-modal/-/styled-react-modal-2.0.1.tgz#513d47bdbdba67f474a8a4dfeb13d072a172c7fc" + integrity sha512-uoyPlwdM8FLmdOE8dvA3iv2IOnlqMsygPxLAZy8WaK0pEcon67+SWJY/osAWZuBvRKtSo/VXn1fRCYVgbD0KUQ== + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -11445,6 +11577,15 @@ text-table@0.2.0, text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +themeprovider-storybook@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/themeprovider-storybook/-/themeprovider-storybook-1.6.4.tgz#cf65d9c518309dea0b3d19640f9ee64b60358ac8" + integrity sha512-F1Yn7z7hr4QRy4z/CxnsnzhOZgEOBukkmJ6mN69bJ6wm0+hlrFyk5dCKdYnccwHfLGK1r6rhbUW6TT0fPSRDMw== + dependencies: + immutable "^4.0.0-rc.12" + react-json-view "^1.19.1" + styled-react-modal "^2.0.1" + throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -11761,6 +11902,11 @@ typescript@^4.0.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== +ua-parser-js@^0.7.18: + version "0.7.22" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3" + integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q== + unfetch@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -12250,6 +12396,11 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" +whatwg-fetch@>=0.10.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" + integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== + whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"