cherry-styled-components
Version:
Cherry is a design system for the modern web. Designed in Figma, built in React using Typescript.
290 lines (235 loc) • 7.24 kB
text/typescript
"use client";
export const breakpoints: Breakpoints = {
xs: 0,
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1440,
xxxl: 1920,
};
export function mq(minWidth: keyof Breakpoints) {
return `@media screen and (min-width: ${breakpoints[minWidth]}px)`;
}
export const spacing: Spacing = {
maxWidth: { xs: "1280px", xxxl: "1440px" },
padding: { xs: "20px", lg: "40px" },
radius: { xs: "6px", lg: "12px", xl: "30px" },
gridGap: { xs: "20px", lg: "40px" },
};
export const colors: Colors = {
primaryLight: "#91aec4",
primary: "#4d6f8b",
primaryDark: "#194569",
secondaryLight: "#a4b17b",
secondary: "#5c6e46",
secondaryDark: "#354c2b",
tertiaryLight: "#ebccb9",
tertiary: "#816b5a",
tertiaryDark: "#675445",
grayLight: "#e5e7eb",
gray: "#9ca3af",
grayDark: "#4b5563",
success: "#84cc16",
error: "#ef4444",
warning: "#eab308",
info: "#06b6d4",
dark: "#000000",
light: "#ffffff",
};
export const colorsDark: Colors = {
primaryLight: "#79C5FF",
primary: "#6198C6",
primaryDark: "#339DF4",
secondaryLight: "#a4b17b",
secondary: "#5c6e46",
secondaryDark: "#354c2b",
tertiaryLight: "#ebccb9",
tertiary: "#816b5a",
tertiaryDark: "#675445",
grayLight: "#1a1a1a",
gray: "#454444",
grayDark: "#808080",
success: "#84cc16",
error: "#ef4444",
warning: "#eab308",
info: "#06b6d4",
dark: "#ffffff",
light: "#000000",
};
export const shadows: Shadows = {
xs: "0px 4px 4px 0px rgba(18, 18, 18, 0.04), 0px 1px 3px 0px rgba(39, 41, 45, 0.02)",
sm: "0px 4px 4px 0px rgba(18, 18, 18, 0.08), 0px 1px 3px 0px rgba(39, 41, 45, 0.04)",
md: "0px 8px 8px 0px rgba(18, 18, 18, 0.16), 0px 2px 3px 0px rgba(39, 41, 45, 0.06)",
lg: "0px 16px 24px 0px rgba(18, 18, 18, 0.20), 0px 2px 3px 0px rgba(39, 41, 45, 0.08)",
xl: "0px 24px 32px 0px rgba(18, 18, 18, 0.24), 0px 2px 3px 0px rgba(39, 41, 45, 0.12)",
};
export const shadowsDark: Shadows = {
xs: "0px 4px 4px 0px rgba(255, 255, 255, 0.04), 0px 1px 3px 0px rgba(255, 255, 255, 0.02)",
sm: "0px 4px 4px 0px rgba(255, 255, 255, 0.08), 0px 1px 3px 0px rgba(255, 255, 255, 0.04)",
md: "0px 8px 8px 0px rgba(255, 255, 255, 0.16), 0px 2px 3px 0px rgba(255, 255, 255, 0.06)",
lg: "0px 16px 24px 0px rgba(255, 255, 255, 0.20), 0px 2px 3px 0px rgba(255, 255, 255, 0.08)",
xl: "0px 24px 32px 0px rgba(255, 255, 255, 0.24), 0px 2px 3px 0px rgba(255, 255, 255, 0.12)",
};
export const fonts: Fonts = {
text: "Inter",
head: "Inter",
mono: "monospace",
};
export const fontSizes: FontSizes = {
hero1: { xs: "72px", lg: "128px" },
hero2: { xs: "60px", lg: "96px" },
hero3: { xs: "36px", lg: "72px" },
h1: { xs: "40px", lg: "60px" },
h2: { xs: "30px", lg: "36px" },
h3: { xs: "28px", lg: "30px" },
h4: { xs: "26px", lg: "24px" },
h5: { xs: "18px", lg: "20px" },
h6: { xs: "16px", lg: "18px" },
text: { xs: "14px", lg: "16px" },
strong: { xs: "14px", lg: "16px" },
small: { xs: "12px", lg: "14px" },
blockquote: { xs: "16px", lg: "18px" },
code: { xs: "14px", lg: "16px" },
button: { xs: "16px", lg: "16px" },
buttonBig: { xs: "18px", lg: "18px" },
input: { xs: "16px", lg: "16px" },
inputBig: { xs: "18px", lg: "18px" },
};
export const lineHeights: LineHeights = {
hero1: { xs: "1.10", lg: "1.10" },
hero2: { xs: "1.10", lg: "1.10" },
hero3: { xs: "1.20", lg: "1.10" },
h1: { xs: "1.50", lg: "1.40" },
h2: { xs: "1.50", lg: "1.50" },
h3: { xs: "1.30", lg: "1.50" },
h4: { xs: "1.30", lg: "1.50" },
h5: { xs: "1.60", lg: "1.50" },
h6: { xs: "1.60", lg: "1.60" },
text: { xs: "1.70", lg: "1.70" },
strong: { xs: "1.70", lg: "1.70" },
small: { xs: "1.70", lg: "1.70" },
blockquote: { xs: "1.70", lg: "1.70" },
code: { xs: "1.70", lg: "1.70" },
button: { xs: "1.00", lg: "1.00" },
buttonBig: { xs: "1.00", lg: "1.00" },
input: { xs: "1.00", lg: "1.00" },
inputBig: { xs: "1.00", lg: "1.00" },
};
export const theme: Theme = {
breakpoints,
spacing,
colors,
shadows,
fonts,
fontSizes,
lineHeights,
isDark: false,
};
export const themeDark: Theme = {
breakpoints,
spacing,
colors: colorsDark,
shadows: shadowsDark,
fonts,
fontSizes,
lineHeights,
isDark: true,
};
export interface Breakpoints<TNumber = number> {
xs: TNumber;
sm: TNumber;
md: TNumber;
lg: TNumber;
xl: TNumber;
xxl: TNumber;
xxxl: TNumber;
}
export interface Spacing<TString = string> {
maxWidth: { xs: TString; xxxl: TString };
padding: { xs: TString; lg: TString };
radius: { xs: TString; lg: TString; xl: TString };
gridGap: { xs: TString; lg: TString };
}
export interface Colors<TString = string> {
primaryLight: TString;
primary: TString;
primaryDark: TString;
secondaryLight: TString;
secondary: TString;
secondaryDark: TString;
tertiaryLight: TString;
tertiary: TString;
tertiaryDark: TString;
grayLight: TString;
gray: TString;
grayDark: TString;
success: TString;
error: TString;
warning: TString;
info: TString;
dark: TString;
light: TString;
}
interface Shadows<TString = string> {
xs: TString;
sm: TString;
md: TString;
lg: TString;
xl: TString;
}
export interface Fonts<TString = string> {
head: TString;
text: TString;
mono: TString;
}
export interface FontSizes<TString = string> {
hero1: { xs: TString; lg: TString };
hero2: { xs: TString; lg: TString };
hero3: { xs: TString; lg: TString };
h1: { xs: TString; lg: TString };
h2: { xs: TString; lg: TString };
h3: { xs: TString; lg: TString };
h4: { xs: TString; lg: TString };
h5: { xs: TString; lg: TString };
h6: { xs: TString; lg: TString };
text: { xs: TString; lg: TString };
strong: { xs: TString; lg: TString };
small: { xs: TString; lg: TString };
blockquote: { xs: TString; lg: TString };
code: { xs: TString; lg: TString };
button: { xs: TString; lg: TString };
buttonBig: { xs: TString; lg: TString };
input: { xs: TString; lg: TString };
inputBig: { xs: TString; lg: TString };
}
export interface LineHeights<TString = string> {
hero1: { xs: TString; lg: TString };
hero2: { xs: TString; lg: TString };
hero3: { xs: TString; lg: TString };
h1: { xs: TString; lg: TString };
h2: { xs: TString; lg: TString };
h3: { xs: TString; lg: TString };
h4: { xs: TString; lg: TString };
h5: { xs: TString; lg: TString };
h6: { xs: TString; lg: TString };
text: { xs: TString; lg: TString };
strong: { xs: TString; lg: TString };
small: { xs: TString; lg: TString };
blockquote: { xs: TString; lg: TString };
code: { xs: TString; lg: TString };
button: { xs: TString; lg: TString };
buttonBig: { xs: TString; lg: TString };
input: { xs: TString; lg: TString };
inputBig: { xs: TString; lg: TString };
}
export interface Theme {
breakpoints: Breakpoints;
spacing: Spacing;
colors: Colors;
shadows: Shadows;
fonts: Fonts;
fontSizes: FontSizes;
lineHeights: LineHeights;
isDark: boolean;
}