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) => ;
-
-export const Primary = Template.bind({});
+export const Default: React.FC = () => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
-Primary.args = {
- variant: "primary",
- children: "Primary",
+const StartIcon = () => (
+
+ 🥞
+
+);
+const EndIcon = () => (
+
+ 🍳
+
+);
+export const WithIcon: React.FC = () => {
+ return (
+ <>
+
+ }>Start Icon
+ }>End Icon
+ } endIcon={}>
+ Start & End Icon
+
+
+ >
+ );
};
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"