-
{title}
-
{subtitle || DEFAULT_SUBTITLE}
+
+
{title}
+ {subtitle || DEFAULT_SUBTITLE}
-
+
)
);
diff --git a/src/components/Card/style.ts b/src/components/Card/style.ts
index 9c351c08..f694dbae 100644
--- a/src/components/Card/style.ts
+++ b/src/components/Card/style.ts
@@ -1,54 +1,45 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
import { truncate } from "@/css/utils";
import { Gradient } from "@/components/Gradient";
-export const Container = styled.div`
- border-radius: var(--sz1);
-`;
+export const Cover = styled(Gradient, {
+ display: "grid",
+ placeItems: "center",
+ borderRadius: "$1 $1 0 0",
+});
-export interface Cover {
- hash: string;
-}
+export const Title = styled.h2({
+ fontSize: "$2",
+ fontWeight: 500,
+ margin: "0",
+ marginBottom: "$1",
+ color: "fg",
+ ...truncate,
+});
-export const Cover = styled(Gradient)`
- display: grid;
- place-items: center;
- border-radius: var(--sz2) var(--sz2) 0 0;
-`;
+export const Subtitle = styled.h3({
+ fontSize: "$1",
+ fontWeight: 400,
+ textTransform: "uppercase",
+ color: "$accents-4",
+ margin: "0",
+});
-export const Title = styled.h3`
- font-size: var(--sz4);
- font-weight: 500;
- margin: 0;
- margin-bottom: var(--sz1);
- color: var(--accents-7);
- ${truncate}
-`;
+export const Body = styled.div({
+ padding: "$3",
+ border: "1px solid $accents-2",
+ borderTop: "0",
+ borderRadius: "0 0 $1 $1",
+ display: "grid",
+ gridTemplateColumns: "1fr auto",
+ gridGap: "10px",
+ alignItems: "center",
+});
-export const Subtitle = styled.h4`
- font-size: var(--sz3);
- font-weight: 300;
- text-transform: uppercase;
- color: var(--accents-4);
- margin: 0;
- ${truncate}
-`;
-
-export const Body = styled.div`
- padding: var(--sz3);
- border: 1px solid var(--accents-2);
- border-top: 0;
- border-radius: 0 0 var(--sz2) var(--sz2);
- display: grid;
- grid-template-columns: 1fr auto;
- grid-gap: 10px;
- align-items: center;
-`;
-
-export const Button = styled.button`
- color: var(--background);
- margin: 0;
- padding: 0;
- border: none;
- background: transparent;
-`;
+export const Button = styled.button({
+ color: "$background",
+ margin: "0",
+ padding: "0",
+ border: "none",
+ background: "transparent",
+});
diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx
index e3d963d1..20890266 100644
--- a/src/components/Header/index.tsx
+++ b/src/components/Header/index.tsx
@@ -1,6 +1,8 @@
import Link from "next/link";
import { Logo } from "@/components/Logo";
-import { HeartFill, Search, Sliders } from "@geist-ui/react-icons";
+import Search from "@geist-ui/react-icons/search";
+import Sliders from "@geist-ui/react-icons/sliders";
+import HeartFill from "@geist-ui/react-icons/heartFill";
import { Container, Navigation, Hidden } from "./style";
export const Header = () => (
@@ -21,7 +23,7 @@ export const Header = () => (
-
+
Favorites
diff --git a/src/components/Header/style.ts b/src/components/Header/style.ts
index f672ee82..045e3583 100644
--- a/src/components/Header/style.ts
+++ b/src/components/Header/style.ts
@@ -1,26 +1,24 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
import { hidden } from "@/css/utils";
-export const Container = styled.header`
- display: grid;
- padding: var(--sz3) var(--sz4);
- grid-gap: var(--sz4);
- grid-template-columns: auto 1fr;
- align-items: center;
- border-bottom: 1px solid var(--accents-2);
-`;
+export const Container = styled.header({
+ display: "grid",
+ padding: "$3 $4",
+ gridTemplateColumns: "auto 1fr",
+ alignItems: "center",
+ borderBottom: "1px solid $accents-2",
+});
-export const Navigation = styled.nav`
- display: grid;
- grid-gap: var(--sz3);
- grid-auto-flow: column;
- justify-content: right;
- align-items: center;
- list-style: none;
- margin: 0;
- padding: 0;
-`;
+export const Navigation = styled.nav({
+ display: "grid",
+ gridGap: "$3",
+ gridAutoFlow: "column",
+ justifyContent: "right",
+ alignItems: "center",
+ listStyle: "none",
+ margin: "0",
+ padding: "0",
+});
-export const Hidden = styled.span`
- ${hidden}
-`;
+//@ts-ignore
+export const Hidden = styled.span(hidden);
diff --git a/src/components/Layout/index.tsx b/src/components/Layout/index.tsx
index e037bbee..2374689c 100644
--- a/src/components/Layout/index.tsx
+++ b/src/components/Layout/index.tsx
@@ -1,9 +1,9 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
-export const Layout = styled.div`
- width: 100%;
- height: 100%;
- display: grid;
- position: fixed;
- grid-template-rows: auto 1fr auto;
-`;
+export const Layout = styled.div({
+ width: "100%",
+ height: "100%",
+ display: "grid",
+ position: "fixed",
+ gridTemplateRows: "auto 1fr auto"
+});
diff --git a/src/components/Logo/index.tsx b/src/components/Logo/index.tsx
index 45d3f5e5..933b30b0 100644
--- a/src/components/Logo/index.tsx
+++ b/src/components/Logo/index.tsx
@@ -22,7 +22,7 @@ export const Logo = () => {
cy="12"
r="2"
style={{
- stroke: "var(--accents-4)",
+ stroke: "var(--colors-accents-4)",
transform: `scale(${opacity})`,
transformOrigin: "center",
willChange: "transform, stroke",
@@ -32,7 +32,7 @@ export const Logo = () => {
d="M16.24 7.76a6 6 0 010 8.49m-8.48-.01a6 6 0 010-8.49m11.31-2.82a10 10 0 010 14.14m-14.14 0a10 10 0 010-14.14"
style={{
opacity,
- stroke: "var(--success)",
+ stroke: "var(--colors-active)",
willChange: "opacity",
}}
/>
diff --git a/src/components/Placeholder/index.tsx b/src/components/Placeholder/index.tsx
index 9ae21c62..7ff5a5b9 100644
--- a/src/components/Placeholder/index.tsx
+++ b/src/components/Placeholder/index.tsx
@@ -5,7 +5,7 @@ import { CardSkeleton } from '@/components/Skeleton';
export type Placeholder = { count?: number; };
export const Placeholder: FC
= ({ count = 10 }) => (
-
- {Array(count).fill(null).map((i) => )}
+
+ {Array(count).fill(null).map((_, i) => )}
);
\ No newline at end of file
diff --git a/src/components/Player/index.tsx b/src/components/Player/index.tsx
index c84ba1dd..bb654816 100644
--- a/src/components/Player/index.tsx
+++ b/src/components/Player/index.tsx
@@ -1,4 +1,7 @@
-import { Play, Pause, Square, AlertCircle } from "@geist-ui/react-icons";
+import Play from "@geist-ui/react-icons/play";
+import Pause from "@geist-ui/react-icons/pause";
+import Square from "@geist-ui/react-icons/square";
+import AlertCircle from "@geist-ui/react-icons/alertCircle";
import { LineSkeleton } from "@/components/Skeleton";
import { Container, Controls, Title, ErrorNotification, Button } from "./style";
import { usePlayer } from "@/lib/hooks/usePlayer";
diff --git a/src/components/Player/style.ts b/src/components/Player/style.ts
index dbe1f46b..73638d3e 100644
--- a/src/components/Player/style.ts
+++ b/src/components/Player/style.ts
@@ -1,50 +1,49 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
import { truncate } from "@/css/utils";
import { fadeInAndOut } from "@/css/animations";
-export const Container = styled.footer`
- display: grid;
- padding: var(--sz4);
- grid-gap: var(--sz4);
- align-items: center;
- grid-template-columns: 1fr auto;
- background: var(--background);
- border-top: 1px solid var(--accents-2);
-`;
+export const Container = styled.footer({
+ display: "grid",
+ padding: "$4",
+ gridGap: "$4",
+ alignItems: "center",
+ gridTemplateColumns: "1fr auto",
+ borderTop: "1px solid $accents-2",
+});
-export const Title = styled.div`
- font-weight: 500;
- text-align: center;
- font-size: var(--sz4);
- color: var(--foreground);
- ${truncate}
-`;
+export const Title = styled.div({
+ fontWeight: 500,
+ textAlign: "center",
+ fontSize: "$2",
+ color: "$foreground",
+ ...truncate,
+});
-export const ErrorNotification = styled.div`
- font-weight: 500;
- display: grid;
- grid-gap: var(--sz4);
- grid-template-columns: auto 1fr;
- align-items: center;
- color: var(--error-lighter);
- background: var(--error);
- font-size: var(--sz4);
- padding: var(--sz5) var(--sz4);
- animation: ${fadeInAndOut} linear 5s;
-`;
+export const ErrorNotification = styled.div({
+ fontWeight: 500,
+ display: "grid",
+ gridGap: "$2",
+ gridTemplateColumns: "auto 1fr",
+ alignItems: "center",
+ color: "$errorLight",
+ background: "$error",
+ fontSize: "$2",
+ padding: "$5 $4",
+ animation: `${fadeInAndOut} linear 5s`,
+});
-export const Controls = styled.section`
- display: grid;
- grid-gap: var(--sz4);
- grid-auto-flow: column;
- justify-content: center;
-`;
+export const Controls = styled.section({
+ display: "grid",
+ gridGap: "$1",
+ gridAutoFlow: "column",
+ justifyContent: "center",
+});
-export const Button = styled.button`
- margin: 0;
- padding: 0;
- border: none;
- appearance: none;
- background: none;
- color: var(--foreground);
-`;
+export const Button = styled.button({
+ margin: "0",
+ padding: "0",
+ border: "none",
+ appearance: "none",
+ background: "none",
+ color: "$foreground",
+});
diff --git a/src/components/Scrollable/index.tsx b/src/components/Scrollable/index.tsx
index 48da1219..7138dd78 100644
--- a/src/components/Scrollable/index.tsx
+++ b/src/components/Scrollable/index.tsx
@@ -1,5 +1,3 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
-export const Scrollable = styled.div`
- overflow-y: scroll;
-`;
+export const Scrollable = styled.div({ overflowY: "scroll" });
diff --git a/src/components/SearchInput/index.ts b/src/components/SearchInput/index.ts
index bf00e3b4..70061cd9 100644
--- a/src/components/SearchInput/index.ts
+++ b/src/components/SearchInput/index.ts
@@ -1,19 +1,14 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
-export const SearchInput = styled.input`
- width: 100%;
- padding: var(--sz3);
- font-size: var(--sz4);
- border-radius: var(--sz1);
- margin-bottom: var(--sz4);
- color: var(--foreground);
- background: var(--background);
- border: 1px solid var(--accents-2);
- outline: none;
- transition: border-color 0.2s;
-
- :hover,
- :focus {
- border-color: var(--accents-3);
- }
-`;
+export const SearchInput = styled.input({
+ width: "100%",
+ padding: "$3",
+ fontSize: "$2",
+ borderRadius: "$1",
+ color: "$foreground",
+ background: "$background",
+ border: "1px solid $accents-3",
+ outline: "none",
+ transition: "border-color 0.2s",
+ "&:hover, &:focus": { borderColor: "$active" },
+});
diff --git a/src/components/Skeleton/index.tsx b/src/components/Skeleton/index.tsx
index 01b21064..1ae10ad2 100644
--- a/src/components/Skeleton/index.tsx
+++ b/src/components/Skeleton/index.tsx
@@ -5,8 +5,8 @@ export const CardSkeleton = () => (
speed={2}
width="100%"
height={180}
- backgroundColor="var(--accents-1)"
- foregroundColor="var(--accents-2)"
+ backgroundColor="var(--colors-accents-1)"
+ foregroundColor="var(--colors-accents-2)"
>
@@ -19,8 +19,8 @@ export const LineSkeleton = () => (
speed={2}
width="100%"
height={16}
- backgroundColor="var(--accents-1)"
- foregroundColor="var(--accents-2)"
+ backgroundColor="var(--colors-accents-1)"
+ foregroundColor="var(--colors-accents-2)"
>
diff --git a/src/components/Stack/index.ts b/src/components/Stack/index.ts
index d80e83f4..422132d8 100644
--- a/src/components/Stack/index.ts
+++ b/src/components/Stack/index.ts
@@ -1,27 +1,50 @@
-import styled from "@emotion/styled";
-import { BorderProps } from "styled-system";
+import { styled } from "@/css";
import { Box } from "@/components/Box";
-import {
- stackSpacing,
- StackSpacingProps,
- stackBorder,
- StackBorderProps,
- itemPadding,
- ItemPaddingProps,
-} from "@/css/system";
-
-export type Stack = StackSpacingProps &
- StackBorderProps &
- ItemPaddingProps &
- BorderProps &
- Box;
-
-export const Stack = styled(Box)`
- > * {
- ${itemPadding}
- }
- > *:not(style) ~ *:not(style) {
- ${stackBorder}
- ${stackSpacing}
- }
-`;
+
+export const Stack = styled(Box, {
+ variants: {
+ debug: {
+ true: {
+ border: "1px solid red",
+ },
+ },
+
+ separated: {
+ true: {
+ "> * + *": {
+ borderTop: "1px solid $accents-1",
+ },
+ },
+ },
+
+ spacing: {
+ sm: {
+ padding: "$3",
+
+ "> * ": {
+ padding: "$2 0",
+ },
+ },
+
+ md: {
+ padding: "$4",
+
+ "> * ": {
+ padding: "$3 0",
+ },
+ },
+
+ xl: {
+ padding: "$5",
+
+ "> * ": {
+ padding: "$4 0",
+ },
+ },
+ },
+ },
+
+ defaultVariants: {
+ spacing: "sm",
+ },
+});
diff --git a/src/components/StationCardList/index.tsx b/src/components/StationCardList/index.tsx
index afb300bd..0a437fe5 100644
--- a/src/components/StationCardList/index.tsx
+++ b/src/components/StationCardList/index.tsx
@@ -16,7 +16,7 @@ export const CardList: FC = ({ list }) => {
const { add, remove, isFaved } = useFavorites();
return (
-
+
{list.map((item) => (
= ({ on, off, active }) => (
export const HeartToggle: FC = (props) => (
}
- off={}
+ on={}
+ off={}
{...props}
/>
);
export const RightLeftToggle: FC = (props) => (
}
- off={}
+ on={}
+ off={}
{...props}
/>
);
diff --git a/src/components/Toggles/style.ts b/src/components/Toggles/style.ts
index 566edb76..3ebc5ff8 100644
--- a/src/components/Toggles/style.ts
+++ b/src/components/Toggles/style.ts
@@ -1,8 +1,8 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
-export const ToggleItem = styled.div`
- display: grid;
- text-transform: capitalize;
- grid-template-columns: 1fr auto;
- align-items: center;
-`;
+export const ToggleItem = styled.div({
+ display: "grid",
+ textTransform: "capitalize",
+ gridTemplateColumns: "1fr auto",
+ alignItems: "center",
+});
diff --git a/src/components/Typography/index.tsx b/src/components/Typography/index.tsx
index 26430e31..a0304331 100644
--- a/src/components/Typography/index.tsx
+++ b/src/components/Typography/index.tsx
@@ -1,29 +1,32 @@
-import styled from "@emotion/styled";
+import { styled } from "@/css";
-const sizesMap = {
- h1: "var(--sz8)",
- h2: "var(--sz7)",
- h3: "var(--sz6)",
- h4: "var(--sz5)",
- h5: "var(--sz4)",
- h6: "var(--sz3)",
-};
+export const Heading = styled.h1({
+ fontWeight: 500,
+ lineHeight: "1em",
+ margin: "0",
-export interface Text {
- as?: string;
- muted?: boolean;
+ variants: {
+ size: {
+ 1: {
+ fontSize: "$4"
+ },
+ 2: {
+ fontSize: "$3"
+ },
+ 3: {
+ fontSize: "$2"
+ }
+ },
+ muted: {
+ true: {
+ color: "$accents-4"
+ }
+ }
+ },
}
+);
-export const Heading = styled.h1`
- font-weight: 500;
- line-height: 1.3em;
- margin-bottom: var(--sz4);
- font-size: ${({ as = "h1" }) => sizesMap[as]};
- color: ${({ muted }) => (muted ? "var(--accents-6)" : "var(--foreground)")};
-`;
-
-export const Text = styled.p`
- margin-top: 0;
- line-height: 1.5em;
- color: ${({ muted }) => (muted ? "var(--accents-6)" : "var(--foreground)")};
-`;
+export const Text = styled.p({
+ marginTop: "0",
+ lineHeight: "1.5em"
+});
diff --git a/src/css/animations.ts b/src/css/animations.ts
index e5e05809..0d1b2f7a 100644
--- a/src/css/animations.ts
+++ b/src/css/animations.ts
@@ -1,19 +1,8 @@
-import { keyframes } from "@emotion/react";
-
-export const fadeInAndOut = keyframes`
-0% {
- opacity: 0;
-}
-
-10% {
- opacity: 1;
-}
-
-90% {
- opacity: 1;
-}
-
-100% {
- opacity: 0
-}
-`;
+import { keyframes } from "@/css";
+
+export const fadeInAndOut = keyframes({
+ "0%": { opacity: 0 },
+ "10%": { opacity: 1 },
+ "90%": { opacity: 1 },
+ "100%": { opacity: 0 },
+});
diff --git a/src/css/global.ts b/src/css/global.ts
index 098a2b33..f0f5c1bf 100644
--- a/src/css/global.ts
+++ b/src/css/global.ts
@@ -1,39 +1,50 @@
-import { css } from "@emotion/react";
-import { reset } from "./reset";
-import { theme } from "./theme";
-
-export const styles = css`
- ${reset}
- ${theme}
-
- html {
- height: 100vh;
- min-height: 100%;
- }
-
- *,
- *::before,
- *::after {
- font-family: var(--font-family);
- will-change: color, background;
- transition: color 0.1s, background 0.3s, border-color 0.3s;
- }
-
- body {
- font-size: 16px;
- color: var(--foreground);
- background: var(--background);
- margin: 0;
- padding: 0;
- }
-
- a {
- text-decoration: none;
- color: var(--foreground);
- }
-
- ::selection {
- color: var(--foreground);
- background: var(--selection);
- }
-`;
+import { global } from "@/css";
+
+export const globalStyles = global({
+ "html, body, p, ol, ul, li, dl, dt, dd, blockquote, figure, fieldset, legend, textarea, pre, iframe, hr, h1, h2, h3, h4, h5, h6": {
+ margin: "0",
+ padding: "0",
+ },
+
+ "h1, h2, h3, h4, h5, h6": {
+ fontSize: "100%",
+ fontWeight: "normal",
+ },
+
+ ul: { listStyle: "none" },
+
+ "button, input, select, textarea": { margin: "0" },
+
+ html: {
+ boxSizing: "border-box",
+ height: "100vh",
+ minHeight: "100%",
+ },
+
+ "*, *::before, *::after": {
+ boxSizing: "inherit",
+ fontFamily: "$sans",
+ },
+
+ "img, video": { height: "auto", maxWidth: "100%" },
+ iframe: { border: "0" },
+ table: { borderCollapse: "collapse", borderSpacing: "0" },
+
+ body: {
+ fontSize: "16px",
+ color: "$foreground",
+ background: "$background",
+ margin: 0,
+ padding: 0,
+ },
+
+ a: {
+ textDecoration: "none",
+ color: "$foreground",
+ },
+
+ "::selection": {
+ color: "$foreground",
+ background: "$selection",
+ },
+});
diff --git a/src/css/index.ts b/src/css/index.ts
new file mode 100644
index 00000000..91af9984
--- /dev/null
+++ b/src/css/index.ts
@@ -0,0 +1,74 @@
+import { createCss } from "@stitches/react";
+
+export const {
+ css,
+ theme,
+ styled,
+ global,
+ keyframes,
+ getCssString,
+} = createCss({
+ theme: {
+ colors: {
+ active: "$success",
+ foreground: "#000",
+ background: "#fff",
+ selection: "$cyan-light",
+ success: "#0070f3",
+ "success-dark": "#0761d1",
+ "success-light": "#3291ff",
+ "success-lighter": "#d3e5ff",
+ error: "#e00",
+ "error-dark": "#c50000",
+ "error-light": "#ff1a1a",
+ "error-lighter": "#f7d4d6",
+ warning: "#f5a623",
+ "warning-dark": "#ab570a",
+ "warning-lighter": "#ffefcf",
+ "warning-light": "#f7b955",
+ violet: "#7928ca",
+ "violet-dark": "#4c2889",
+ "violet-light": "#8a63d2",
+ "violet-lighter": "#e3d7fc",
+ cyan: "#50e3c2",
+ "cyan-dark": "#29bc9b",
+ "cyan-light": "#79ffe1",
+ "cyan-lighter": "#aaffec",
+ "highlight-purple": "#f81ce5",
+ "highlight-magenta": "#eb367f",
+ "highlight-pink": "#ff0080",
+ "highlight-yellow": "#fff500",
+ "accents-1": "#fafafa",
+ "accents-2": "#eaeaea",
+ "accents-3": "#999",
+ "accents-4": "#888",
+ "accents-5": "#666",
+ "accents-6": "#444",
+ "accents-7": "#333",
+ "accents-8": "#111",
+ },
+ fonts: {
+ sans:
+ 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
+ },
+ fontSizes: {
+ 1: "12px",
+ 2: "16px",
+ 3: "20px",
+ 4: "24px",
+ },
+ radii: {
+ 1: "4px",
+ 2: "5px",
+ },
+ space: {
+ 1: "4px",
+ 2: "8px",
+ 3: "12px",
+ 4: "16px",
+ 5: "24px",
+ 6: "32px",
+ 7: "40px",
+ },
+ },
+});
diff --git a/src/css/reset.ts b/src/css/reset.ts
deleted file mode 100644
index aca4e907..00000000
--- a/src/css/reset.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { css } from "@emotion/react";
-
-export const reset = css`
- html,
- body,
- p,
- ol,
- ul,
- li,
- dl,
- dt,
- dd,
- blockquote,
- figure,
- fieldset,
- legend,
- textarea,
- pre,
- iframe,
- hr,
- h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- margin: 0;
- padding: 0;
- }
-
- h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- font-size: 100%;
- font-weight: normal;
- }
-
- ul {
- list-style: none;
- }
-
- button,
- input,
- select,
- textarea {
- margin: 0;
- }
-
- html {
- box-sizing: border-box;
- }
-
- *,
- *::before,
- *::after {
- box-sizing: inherit;
- }
-
- img,
- video {
- height: auto;
- max-width: 100%;
- }
-
- iframe {
- border: 0;
- }
-
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
-
- td,
- th {
- padding: 0;
- }
-
- td:not([align]),
- th:not([align]) {
- text-align: left;
- }
-`;
diff --git a/src/css/system.ts b/src/css/system.ts
deleted file mode 100644
index 7399462b..00000000
--- a/src/css/system.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { system } from "styled-system";
-
-export interface StackSpacingProps {
- stackSpacing?: number | number[] | string | string[];
-}
-
-export const stackSpacing = system({
- stackSpacing: {
- property: "marginTop",
- },
-});
-
-export interface ItemPaddingProps {
- itemPadding?: number | number[] | string | string[];
-}
-
-export const itemPadding = system({
- itemPadding: {
- property: "padding",
- },
-});
-
-export interface StackBorderProps {
- stackBorder?: number | number[] | string | string[];
-}
-
-export const stackBorder = system({
- stackBorder: {
- property: "borderTop",
- },
-});
diff --git a/src/css/theme.ts b/src/css/theme.ts
index 21bffb1c..59374a9c 100644
--- a/src/css/theme.ts
+++ b/src/css/theme.ts
@@ -1,77 +1,17 @@
-import { css } from "@emotion/react";
+import { theme } from "@/css";
-export const base = css`
- :root {
- /* sizes */
- --sz1: 4px;
- --sz2: 8px;
- --sz3: 12px;
- --sz4: 16px;
- --sz5: 24px;
- --sz6: 32px;
- --sz7: 40px;
-
- /* fonts */
- --font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
- Roboto, "Helvetica Neue", sans-serif;
-
- /* colors */
- --success-lighter: #d3e5ff;
- --success-light: #3291ff;
- --success: #0070f3;
- --success-dark: #0761d1;
- --error-lighter: #f7d4d6;
- --error-light: #ff1a1a;
- --error: #e00;
- --error-dark: #c50000;
- --warning-lighter: #ffefcf;
- --warning-light: #f7b955;
- --warning: #f5a623;
- --warning-dark: #ab570a;
- --violet-lighter: #e3d7fc;
- --violet-light: #8a63d2;
- --violet: #7928ca;
- --violet-dark: #4c2889;
- --cyan-lighter: #aaffec;
- --cyan-light: #79ffe1;
- --cyan: #50e3c2;
- --cyan-dark: #29bc9b;
- --highlight-purple: #f81ce5;
- --highlight-magenta: #eb367f;
- --highlight-pink: #ff0080;
- --highlight-yellow: #fff500;
- --foreground: #000;
- --background: #fff;
- --selection: var(--cyan-light);
- --accents-1: #fafafa;
- --accents-2: #eaeaea;
- --accents-3: #999;
- --accents-4: #888;
- --accents-5: #666;
- --accents-6: #444;
- --accents-7: #333;
- --accents-8: #111;
- }
-`;
-
-export const dark = css`
- [data-theme="dark"] {
- /* colors */
- --foreground: #fff;
- --background: #000;
- --selection: var(--highlight-purple);
- --accents-8: #fafafa;
- --accents-7: #eaeaea;
- --accents-6: #999;
- --accents-5: #888;
- --accents-4: #666;
- --accents-3: #444;
- --accents-2: #333;
- --accents-1: #111;
- }
-`;
-
-export const theme = css`
- ${base}
- ${dark}
-`;
+export const dark = theme("dark", {
+ colors: {
+ background: "#000",
+ foreground: "#fff",
+ selection: "$highlight-magenta",
+ "accents-1": "#111",
+ "accents-2": "#333",
+ "accents-3": "#444",
+ "accents-4": "#666",
+ "accents-5": "#888",
+ "accents-6": "#999",
+ "accents-7": "#eaeaea",
+ "accents-8": "#fafafa",
+ },
+});
diff --git a/src/css/utils.ts b/src/css/utils.ts
index 860d024c..6c78091a 100644
--- a/src/css/utils.ts
+++ b/src/css/utils.ts
@@ -1,17 +1,17 @@
-import { css } from "@emotion/react";
+import { css } from "@/css";
-export const truncate = css`
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-`;
+export const truncate = css({
+ overflow: "hidden",
+ whiteSpace: "nowrap",
+ textOverflow: "ellipsis",
+});
-export const hidden = css`
- clip: rect(0 0 0 0);
- clip-path: inset(50%);
- height: 1px;
- overflow: hidden;
- position: absolute;
- white-space: nowrap;
- width: 1px;
-`;
+export const hidden = css({
+ clip: "rect(0 0 0 0)",
+ clipPath: "inset(50%)",
+ height: "1px",
+ overflow: "hidden",
+ position: "absolute",
+ whiteSpace: "nowrap",
+ width: "1px",
+});
diff --git a/src/lib/providers/index.tsx b/src/lib/providers/index.tsx
index cff322d1..4569178e 100644
--- a/src/lib/providers/index.tsx
+++ b/src/lib/providers/index.tsx
@@ -4,9 +4,10 @@ import { PlayerProvider } from "@/lib/context/player";
import { TranslateProvider } from "@/lib/context/translate";
import { FavoritesProvider } from "@/lib/context/favorites";
import { AudioElementProvider } from "@/lib/context/audio";
+import { dark } from "@/css/theme";
export const Providers: FC = ({ children }) => (
-
+
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index 02cd0fcd..db750b6f 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -1,22 +1,22 @@
import { AppProps } from "next/app";
import { DefaultSeo } from "next-seo";
-import { Global } from "@emotion/react";
import { Providers } from "@/lib/providers";
import { Layout } from "@/components/Layout";
import { Header } from "@/components/Header";
import { Scrollable } from "@/components/Scrollable";
import { Player } from "@/components/Player";
-import { styles } from "@/css/global";
-import SEO from "@/config/seo";
+import seoProps from "@/config/seo";
+import { globalStyles } from "@/css/global";
export function BembaApp({ Component, pageProps }: AppProps) {
+ globalStyles();
+
return (
-
-
+
diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx
new file mode 100644
index 00000000..6d4d9c5b
--- /dev/null
+++ b/src/pages/_document.tsx
@@ -0,0 +1,18 @@
+import NextDocument, { Html, Head, Main, NextScript } from 'next/document';
+import { getCssString } from '@/css';
+
+export default class Document extends NextDocument {
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/pages/favorites.tsx b/src/pages/favorites.tsx
index 19394a47..3ba2403d 100644
--- a/src/pages/favorites.tsx
+++ b/src/pages/favorites.tsx
@@ -4,17 +4,18 @@ import { Heading } from "@/components/Typography";
import { StationCardFavs } from "@/components/StationCardList";
import { useFavorites } from "@/lib/hooks/useFavorites";
import { useTranslation } from "@/lib/hooks/useTranslation";
+import { Stack } from "@/components/Stack";
export const Search = () => {
const { t } = useTranslation();
const { favs } = useFavorites();
return (
-
+
- {t.favorites.title}
+ {t.favorites.title}
-
+
);
};
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 4363835a..4edf3e24 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -9,8 +9,8 @@ export const Index = () => {
const language = localesMap[locale];
return (
-
- {t.index.title}
+
+ {t.index.title}
);
diff --git a/src/pages/search.tsx b/src/pages/search.tsx
index 8e249c68..9a5feb33 100644
--- a/src/pages/search.tsx
+++ b/src/pages/search.tsx
@@ -7,7 +7,7 @@ import {
ChangeEvent,
KeyboardEventHandler,
} from "react";
-import { Box } from "@/components/Box";
+import { Stack } from "@/components/Stack";
import { SearchInput } from "@/components/SearchInput";
import { StationCardList } from "@/components/StationCardList";
import { useTranslation } from "@/lib/hooks/useTranslation";
@@ -31,7 +31,7 @@ export const Search = () => {
}, []);
return (
-
+
{
/>
{showList && }
-
+
);
};
diff --git a/src/pages/settings.tsx b/src/pages/settings.tsx
index c0c27d4e..0a577005 100644
--- a/src/pages/settings.tsx
+++ b/src/pages/settings.tsx
@@ -16,60 +16,54 @@ export const Settings = () => {
const { t, locale, locales } = useTranslation();
return (
-
+
+
+ {t.settings.title}
- {t.settings.title}
-
- {t.settings.color}
-
-
- {["dark", "light", "system"].map((mode) => (
-
- setTheme(mode)}>
-
- {mode}
-
-
-
- ))}
-
+
+ {t.settings.color}
+
-
- {t.settings.language}
-
-
- {locales.map((lang) => (
-
-
-
+
+ {["dark", "light", "system"].map((mode) => (
+
+ setTheme(mode)}>
- {localesMap[lang]}
+ {mode}
-
-
-
- ))}
-
+
+
+ ))}
+
+
+
+ {t.settings.language}
+
-
-
- bemba v
+
+ {locales.map((lang) => (
+
+
+
+
+ {localesMap[lang]}
+
+
+
+
+ ))}
+
+
+
+
+ bemba v
- {SHA.slice(0, 6)}
-
-
-
+ {SHA.slice(0, 6)}
+
+
+
+
);
};
diff --git a/yarn.lock b/yarn.lock
index dd040772..d220d9bc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -106,7 +106,7 @@
dependencies:
tslib "~2.0.1"
-"@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
+"@babel/code-frame@7.12.11", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
@@ -238,7 +238,7 @@
dependencies:
"@babel/types" "^7.12.7"
-"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5", "@babel/helper-module-imports@^7.7.0":
+"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
@@ -991,7 +991,7 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
@@ -1040,107 +1040,6 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
-"@emotion/babel-plugin@^11.1.2":
- version "11.2.0"
- resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.2.0.tgz#f25c6df8ec045dad5ae6ca63df0791673b98c920"
- integrity sha512-lsnQBnl3l4wu/FJoyHnYRpHJeIPNkOBMbtDUIXcO8luulwRKZXPvA10zd2eXVN6dABIWNX4E34en/jkejIg/yA==
- dependencies:
- "@babel/helper-module-imports" "^7.7.0"
- "@babel/plugin-syntax-jsx" "^7.12.1"
- "@babel/runtime" "^7.7.2"
- "@emotion/hash" "^0.8.0"
- "@emotion/memoize" "^0.7.5"
- "@emotion/serialize" "^1.0.0"
- babel-plugin-macros "^2.6.1"
- convert-source-map "^1.5.0"
- escape-string-regexp "^4.0.0"
- find-root "^1.1.0"
- source-map "^0.5.7"
- stylis "^4.0.3"
-
-"@emotion/cache@^11.1.3":
- version "11.1.3"
- resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.1.3.tgz#c7683a9484bcd38d5562f2b9947873cf66829afd"
- integrity sha512-n4OWinUPJVaP6fXxWZD9OUeQ0lY7DvtmtSuqtRWT0Ofo/sBLCVSgb4/Oa0Q5eFxcwablRKjUXqXtNZVyEwCAuA==
- dependencies:
- "@emotion/memoize" "^0.7.4"
- "@emotion/sheet" "^1.0.0"
- "@emotion/utils" "^1.0.0"
- "@emotion/weak-memoize" "^0.2.5"
- stylis "^4.0.3"
-
-"@emotion/hash@^0.8.0":
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
- integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
-
-"@emotion/is-prop-valid@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz#29ef6be1e946fb4739f9707def860f316f668cde"
- integrity sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ==
- dependencies:
- "@emotion/memoize" "^0.7.4"
-
-"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5":
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50"
- integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==
-
-"@emotion/react@^11.1.5":
- version "11.1.5"
- resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.1.5.tgz#15e78f9822894cdc296e6f4e0688bac8120dfe66"
- integrity sha512-xfnZ9NJEv9SU9K2sxXM06lzjK245xSeHRpUh67eARBm3PBHjjKIZlfWZ7UQvD0Obvw6ZKjlC79uHrlzFYpOB/Q==
- dependencies:
- "@babel/runtime" "^7.7.2"
- "@emotion/cache" "^11.1.3"
- "@emotion/serialize" "^1.0.0"
- "@emotion/sheet" "^1.0.1"
- "@emotion/utils" "^1.0.0"
- "@emotion/weak-memoize" "^0.2.5"
- hoist-non-react-statics "^3.3.1"
-
-"@emotion/serialize@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.0.tgz#1a61f4f037cf39995c97fc80ebe99abc7b191ca9"
- integrity sha512-zt1gm4rhdo5Sry8QpCOpopIUIKU+mUSpV9WNmFILUraatm5dttNEaYzUWWSboSMUE6PtN2j1cAsuvcugfdI3mw==
- dependencies:
- "@emotion/hash" "^0.8.0"
- "@emotion/memoize" "^0.7.4"
- "@emotion/unitless" "^0.7.5"
- "@emotion/utils" "^1.0.0"
- csstype "^3.0.2"
-
-"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.1.tgz#245f54abb02dfd82326e28689f34c27aa9b2a698"
- integrity sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==
-
-"@emotion/styled@^11.1.5":
- version "11.1.5"
- resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.1.5.tgz#3d7bfa58b346e48315f65ee956aeef81f0bea8e0"
- integrity sha512-nIq7pOBEDqT5xSFbclQ3XFy0q8C9EUU8ECqKN2kJKGxKh+vLz/x26kEih4aOpoAsyzc+R60rQxh7VJiLTUEdmg==
- dependencies:
- "@babel/runtime" "^7.7.2"
- "@emotion/babel-plugin" "^11.1.2"
- "@emotion/is-prop-valid" "^1.1.0"
- "@emotion/serialize" "^1.0.0"
- "@emotion/utils" "^1.0.0"
-
-"@emotion/unitless@^0.7.5":
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
- integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
-
-"@emotion/utils@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af"
- integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==
-
-"@emotion/weak-memoize@^0.2.5":
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
- integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
-
"@geist-ui/react-icons@^1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@geist-ui/react-icons/-/react-icons-1.0.1.tgz#5da112bbc98216bf05da3aabbd7d21594440b209"
@@ -1503,6 +1402,18 @@
"@sentry/types" "5.27.0"
tslib "^1.9.3"
+"@stitches/core@^0.1.0-canary.20":
+ version "0.1.0-canary.21"
+ resolved "https://registry.yarnpkg.com/@stitches/core/-/core-0.1.0-canary.21.tgz#e6196dbf4ef82492f8e80011a919ba81057bea7a"
+ integrity sha512-7prkdSrKJiGJ4Z1ot0FJsJLvCrH59vU4QTUcKH5RQrOttlinH3AFldTqq9RKDmS5eHu4f0SqFMO3o7/v5KERrQ==
+
+"@stitches/react@0.1.0-canary.20":
+ version "0.1.0-canary.20"
+ resolved "https://registry.yarnpkg.com/@stitches/react/-/react-0.1.0-canary.20.tgz#e946a4d8cc6dc6e3ed146d15eda4ba1657578fb8"
+ integrity sha512-0TzcRBZYUYQgU1Tc9P3eA6nmviSlNIVZ5cu/HpTkp8ETAczebiCngTyabpiM3SvkIsaHjyJuEwTkBJbndF+sPQ==
+ dependencies:
+ "@stitches/core" "^0.1.0-canary.20"
+
"@styled-system/background@^5.1.2":
version "5.1.2"
resolved "https://registry.yarnpkg.com/@styled-system/background/-/background-5.1.2.tgz#75c63d06b497ab372b70186c0bf608d62847a2ba"
@@ -1770,11 +1681,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.50.tgz#7a20902af591282aa9176baefc37d4372131c32d"
integrity sha512-vwX+/ija9xKc/z9VqMCdbf4WYcMTGsI0I/L/6shIF3qXURxZOhPQlPRHtjTpiNhAwn0paMJzlOQqw6mAGEQnTA==
-"@types/parse-json@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
- integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
-
"@types/prettier@^1.19.0":
version "1.19.1"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f"
@@ -2322,15 +2228,6 @@ babel-plugin-dynamic-import-node@^2.3.3:
dependencies:
object.assign "^4.1.0"
-babel-plugin-macros@^2.6.1:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
- integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
- dependencies:
- "@babel/runtime" "^7.7.2"
- cosmiconfig "^6.0.0"
- resolve "^1.12.0"
-
babel-plugin-module-resolver@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2"
@@ -2655,11 +2552,6 @@ callsite@^1.0.0:
resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
-callsites@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
- integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
camel-case@4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
@@ -2936,7 +2828,7 @@ content-type@1.0.4:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-convert-source-map@1.7.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0:
+convert-source-map@1.7.0, convert-source-map@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
@@ -2971,17 +2863,6 @@ core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-cosmiconfig@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
- integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
- dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.1.0"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.7.2"
-
create-ecdh@^4.0.0:
version "4.0.4"
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
@@ -3542,11 +3423,6 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-escape-string-regexp@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
- integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-
esotope-hammerhead@0.5.8:
version "0.5.8"
resolved "https://registry.yarnpkg.com/esotope-hammerhead/-/esotope-hammerhead-0.5.8.tgz#df6463860d3bb0367cc0925e69b6bb66ed8bff73"
@@ -3750,11 +3626,6 @@ find-cache-dir@3.3.1:
make-dir "^3.0.2"
pkg-dir "^4.1.0"
-find-root@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
- integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
-
find-up@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
@@ -4162,13 +4033,6 @@ hoek@6.x.x:
resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c"
integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==
-hoist-non-react-statics@^3.3.1:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
- integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
- dependencies:
- react-is "^16.7.0"
-
hosted-git-info@^2.1.4:
version "2.8.8"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
@@ -4290,14 +4154,6 @@ immediate@~3.0.5:
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
-import-fresh@^3.1.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
- integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
- dependencies:
- parent-module "^1.0.0"
- resolve-from "^4.0.0"
-
import-from@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966"
@@ -4736,11 +4592,6 @@ json-parse-better-errors@^1.0.1:
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-json-parse-even-better-errors@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
- integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-
json5@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
@@ -4808,11 +4659,6 @@ line-column@^1.0.2:
isarray "^1.0.0"
isobject "^2.0.0"
-lines-and-columns@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
- integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
linux-platform-info@^0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/linux-platform-info/-/linux-platform-info-0.0.3.tgz#2dae324385e66e3d755bec83f86c7beea61ceb83"
@@ -5614,13 +5460,6 @@ pako@~1.0.5:
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
-parent-module@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
- integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
- dependencies:
- callsites "^3.0.0"
-
parse-asn1@^5.0.0, parse-asn1@^5.1.5:
version "5.1.6"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
@@ -5640,16 +5479,6 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
-parse-json@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646"
- integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- error-ex "^1.3.1"
- json-parse-even-better-errors "^2.3.0"
- lines-and-columns "^1.1.6"
-
parse5@2.2.3, parse5@^2.1.5:
version "2.2.3"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-2.2.3.tgz#0c4fc41c1000c5e6b93d48b03f8083837834e9f6"
@@ -6057,7 +5886,7 @@ react-dom@^17.0.0:
object-assign "^4.1.1"
scheduler "^0.20.1"
-react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1:
+react-is@16.13.1, react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -6253,7 +6082,7 @@ resolve@^1.10.0:
is-core-module "^2.2.0"
path-parse "^1.0.6"
-resolve@^1.12.0, resolve@^1.13.1:
+resolve@^1.13.1:
version "1.19.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
@@ -6602,7 +6431,7 @@ source-map@^0.1.38:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:
+source-map@^0.5.0, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -6874,11 +6703,6 @@ stylis@3.5.4:
resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
-stylis@^4.0.3:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.6.tgz#0d8b97b6bc4748bea46f68602b6df27641b3c548"
- integrity sha512-1igcUEmYFBEO14uQHAJhCUelTR5jPztfdVKrYxRnDa5D5Dn3w0NxXupJNPr/VV/yRfZYEAco8sTIRZzH3sRYKg==
-
subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16:
version "0.9.18"
resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97"
@@ -7684,11 +7508,6 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.7.2:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
- integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
-
yargs-parser@^18.1.2:
version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"