{"version":3,"sources":["styles/theme/base/colors.ts","styles/theme/base/breakpoints.ts","styles/theme/base/spacing.ts","styles/theme/base/transitions.ts","styles/theme/base/typography.ts","styles/theme/base/borders.ts","styles/theme/base/shadows.ts","styles/theme/themes.ts","styles/theme/provider.tsx","styles/theme/fonts.tsx","styles/theme/types.ts","styles/global.ts","pages lazy /^/.*$/ groupOptions: {} namespace object","hooks/useSystemTheme.ts","providers/theme.tsx","hooks/useLocalStorage.ts","config/storage.ts","providers/index.tsx","router/config.ts","router/index.tsx","translation.ts","index.tsx"],"names":["colors","accent","accentContrast","accentContrastSecondary","accentDarken","accentControlBg","accentBorder","accentBorderHover","error","errorHover","errorContrast","warning","warningHover","warningContrast","success","successHover","successContrast","sm","width","height","md","lg","xl","mediaQueries","breakpointsDefinition","breakpointsMap","space","spaceMap","xs","xxl","xxxl","duration","fast","med","norm","ease","inSine","outSine","inOutSine","inQuad","outQuad","inOutQuad","inCubic","outCubic","inOutCubic","inQuart","outQuart","inOutQuart","inQuint","outQuint","inOutQuint","inExpo","outExpo","inOutExpo","inCirc","outCirc","inOutCirc","inBack","outBack","inOutBack","fontSizes","fontSizesMap","xxxs","xxs","xxxxl","borderRadiuses","borderRadiusesMap","boxShadows","themeLight","themeBase","primary","primaryContrast","primaryHover","secondary","secondaryContrast","secondaryHover","background","backgroundDarken","border","text","textSecondary","themeDark","themeDefault","ThemeProvider","props","theme","rest","Fonts","styled","baseStyled","css","baseCss","GlobalStyle","createGlobalStyle","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","keys","Object","module","exports","THEME","themeMap","light","dark","ThemeToggleContext","createContext","DEFAULT_THEME","children","key","initialValue","readValue","useCallback","item","window","localStorage","getItem","JSON","parse","useState","storedValue","setStoredValue","saveToStorage","newValue","setItem","stringify","dispatchEvent","Event","setValue","value","Function","current","useEffect","handleStorageChange","addEventListener","removeEventListener","useLocalStorage","themeLS","setThemeLS","themeName","setThemeName","toggleTheme","useMemo","Provider","Providers","routes","path","exact","component","Router","fallback","routeItem","lazy","i18n","use","XHR","LanguageDetector","init","debug","lng","fallbackLng","interpolation","escapeValue","resources","en","translations","translationEn","ns","defaultNS","App","basename","I18nextProvider","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.d6ecc1a8.chunk.js","sourcesContent":["export const colors = {\n accent: \"#27272e\",\n accentContrast: \"#fff\",\n accentContrastSecondary: \"rgba(255, 255, 255, 0.6)\",\n accentDarken: \"rgba(0, 0, 0, .2)\",\n accentControlBg: \"rgba(0, 0, 0, .1)\",\n accentBorder: \"rgba(255, 255, 255, 0.2)\",\n accentBorderHover: \"rgba(255, 255, 255, 0.3)\",\n\n error: \"#e14d4d\",\n errorHover: \"#d44c4d\",\n errorContrast: \"#fff\",\n\n warning: \"#ffac2f\",\n warningHover: \"#f0a431\",\n warningContrast: \"#fff\",\n\n success: \"#61b75f\",\n successHover: \"#5dae5e\",\n successContrast: \"#fff\",\n} as const;\n","const sm = {\n width: \"359px\",\n height: \"639px\",\n} as const;\n\nconst md = {\n width: \"575px\",\n height: \"799px\",\n} as const;\n\nconst lg = {\n width: \"767px\",\n height: \"1023px\",\n} as const;\n\nconst xl = {\n width: \"1023px\",\n height: \"1365px\",\n} as const;\n\nexport const mediaQueries = {\n sm: `@media screen and (max-width: ${sm.width})`,\n md: `@media screen and (max-width: ${md.width})`,\n lg: `@media screen and (max-width: ${lg.width})`,\n xl: `@media screen and (max-width: ${xl.width})`,\n};\n\nexport const breakpointsDefinition = [sm.width, md.width, lg.width, xl.width];\nexport const breakpointsMap = { sm, md, lg, xl };\n","export const space = [4, 8, 16, 24, 48, 80, 120] as const;\n\nexport const spaceMap = {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 48,\n xxl: 80,\n xxxl: 120,\n} as const;\n","export const duration = {\n fast: \"100ms\",\n med: \"150ms\",\n norm: \"200ms\",\n} as const;\n\nexport const ease = {\n inSine: \"cubic-bezier(0.47, 0, 0.745, 0.715)\",\n outSine: \"cubic-bezier(0.39, 0.575, 0.565, 1)\",\n inOutSine: \"cubic-bezier(0.445, 0.05, 0.55, 0.95)\",\n\n inQuad: \"cubic-bezier(0.55, 0.085, 0.68, 0.53)\",\n outQuad: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\n inOutQuad: \"cubic-bezier(0.455, 0.03, 0.515, 0.955)\",\n\n inCubic: \"cubic-bezier(0.55, 0.055, 0.675, 0.19)\",\n outCubic: \"cubic-bezier(0.215, 0.61, 0.355, 1)\",\n inOutCubic: \"cubic-bezier(0.645, 0.045, 0.355, 1)\",\n\n inQuart: \"cubic-bezier(0.895, 0.03, 0.685, 0.22)\",\n outQuart: \"cubic-bezier(0.165, 0.84, 0.44, 1)\",\n inOutQuart: \"cubic-bezier(0.77, 0, 0.175, 1)\",\n\n inQuint: \"cubic-bezier(0.755, 0.05, 0.855, 0.06)\",\n outQuint: \"cubic-bezier(0.23, 1, 0.32, 1)\",\n inOutQuint: \"cubic-bezier(0.86, 0, 0.07, 1)\",\n\n inExpo: \"cubic-bezier(0.95, 0.05, 0.795, 0.035)\",\n outExpo: \"cubic-bezier(0.19, 1, 0.22, 1)\",\n inOutExpo: \"cubic-bezier(1, 0, 0, 1)\",\n\n inCirc: \"cubic-bezier(0.6, 0.04, 0.98, 0.335)\",\n outCirc: \"cubic-bezier(0.075, 0.82, 0.165, 1)\",\n inOutCirc: \"cubic-bezier(0.785, 0.135, 0.15, 0.86)\",\n\n inBack: \"cubic-bezier(0.6, -0.28, 0.735, 0.045)\",\n outBack: \"cubic-bezier(0.175, 0.885, 0.32, 1.275)\",\n inOutBack: \"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\n} as const;\n","export const fontSizes = [10, 12, 14, 16, 18, 20, 26, 32, 40, 50] as const;\n\nexport const fontSizesMap = {\n xxxs: 0.6,\n xxs: 0.7,\n xs: 0.9,\n sm: 1,\n md: 1.2,\n lg: 1.5,\n xl: 1.8,\n xxl: 2.2,\n xxxl: 3.6,\n xxxxl: 4,\n} as const;\n","export const borderRadiuses = [2, 4, 4, 6, 8] as const;\n\nexport const borderRadiusesMap = {\n xs: 2,\n sm: 4,\n md: 4,\n lg: 6,\n xl: 8,\n} as const;\n","export const boxShadows = {\n xs: \"0px 4px 8px 0px\",\n sm: \"0px 4px 12px 0px\",\n md: \"0px 4px 16px 0px\",\n lg: \"0px 8px 24px 0px\",\n xl: \"0px 8px 32px 0px\",\n xxl: \"0px 8px 44px 0px\",\n} as const;\n","import * as themeBase from \"./base\";\n\nexport const themeLight = {\n ...themeBase,\n colors: {\n ...themeBase.colors,\n\n primary: \"#9041CE\",\n primaryContrast: \"#FFF7F4\",\n primaryHover: \"rgba(144, 65, 206, 0.6)\",\n\n secondary: \"#FFF7F4\",\n secondaryContrast: \"#9041CE\",\n secondaryHover: \"rgba(255, 247, 244, 0.6)\",\n\n background: \"#FFF7F4\",\n backgroundDarken: \"#ced3d7\",\n\n border: \"#404040\",\n\n text: \"#0A1713\",\n textSecondary: \"rgba(10, 23, 19, 0.5)\",\n },\n};\n\nexport const themeDark = {\n ...themeBase,\n colors: {\n ...themeBase.colors,\n\n primary: \"#70EFBA\",\n primaryContrast: \"#FFFFFF\",\n primaryHover: \"rgba(112, 239, 186, 0.6)\",\n\n secondary: \"#0A1713\",\n secondaryContrast: \"#25C7B3\",\n secondaryHover: \"rgba(10, 23, 19, 0.6)\",\n\n background: \"#000000\",\n backgroundDarken: \"#0b1d17\",\n\n border: \"#404040\",\n\n text: \"#FFFFFF\",\n textSecondary: \"#a6a6a6\",\n },\n};\n\nexport const themeDefault = themeDark;\n","import { FC } from \"react\";\nimport {\n ThemeProvider as StyledThemeProvider,\n ThemeProviderProps,\n} from \"styled-components\";\n\nimport { themeDefault, themeDark, themeLight } from \"./themes\";\nimport { Theme } from \"./types\";\n\nexport const ThemeProvider: FC> = (props) => {\n const { theme = themeDefault, ...rest } = props;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return ;\n};\n\ntype BoundThemeProvider = FC, \"theme\">>;\n\nexport const LightThemeProvider: BoundThemeProvider = (props) => {\n return ;\n};\n\nexport const DarkThemeProvider: BoundThemeProvider = (props) => {\n return ;\n};\n","import \"../../assets/fonts/InputMonoCondensed/fonts.css\";\n\nexport function Fonts(): JSX.Element {\n return (\n <>\n \n \n );\n}\n","import baseStyled, {\n ThemedStyledInterface,\n css as baseCss,\n ThemedCssFunction,\n} from \"styled-components\";\n\nimport { themeDefault } from \"./themes\";\n\nexport type Theme = typeof themeDefault;\nexport const styled = baseStyled as unknown as ThemedStyledInterface;\nexport const css = baseCss as ThemedCssFunction;\n","import { createGlobalStyle } from \"styled-components\";\n\nimport { Theme } from \"./theme\";\n\nexport const GlobalStyle = createGlobalStyle<{ theme: Theme }>`\n * {\n margin: 0;\n padding: 0;\n }\n \n html,\n body {\n width: 100%;\n }\n\n body {\n border: 0;\n outline: 0;\n overflow-x: hidden;\n \n background: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.text};\n position: relative;\n box-sizing: border-box;\n font-size: ${({ theme }) => theme.fontSizesMap.xs}px;\n line-height: 1.5em;\n font-weight: 400;\n }\n \n strong {\n font-weight: 500;\n }\n \n a {\n color: ${({ theme }) => theme.colors.primary};\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n }\n\n &:visited {\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n\n *:focus {\n outline: none;\n }\n\n .ant-drawer-body {\n display: flex;\n flex-direction: column;\n text-align: left;\n padding-top: 1.5rem;\n }\n\n .ant-drawer-content-wrapper {\n width: 300px !important;\n }\n \n .red {\n color: red;\n }\n \n .bold {\n font-weight: 900;\n }\n`;\n","var map = {\n\t\"./Home\": [\n\t\t27,\n\t\t0,\n\t\t1\n\t],\n\t\"./Home/\": [\n\t\t27,\n\t\t0,\n\t\t1\n\t],\n\t\"./Home/index\": [\n\t\t27,\n\t\t0,\n\t\t1\n\t],\n\t\"./Home/index.tsx\": [\n\t\t27,\n\t\t0,\n\t\t1\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 60;\nmodule.exports = webpackAsyncContext;","import { useEffect, useState } from \"react\";\n\nexport enum THEME {\n light = \"light\",\n dark = \"dark\",\n}\n\nexport const useSystemTheme = (): THEME => {\n const [systemTheme, setSystemTheme] = useState(THEME.light);\n\n useEffect(() => {\n const mql = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n const setThemeFromQuery = ({ matches }: { matches: boolean }) => {\n setSystemTheme(matches ? THEME.dark : THEME.light);\n };\n\n mql.addEventListener(\"change\", setThemeFromQuery);\n setThemeFromQuery(mql);\n\n return () => {\n mql.removeEventListener(\"change\", setThemeFromQuery);\n };\n }, []);\n\n return systemTheme;\n};\n","import {\n FC,\n createContext,\n useCallback,\n useState,\n useMemo,\n useEffect,\n} from \"react\";\n\nimport { Fonts, GlobalStyle } from \"src/styles\";\nimport {\n themeLight,\n themeDark,\n Theme,\n ThemeProvider as SourceProvider,\n} from \"src/styles/theme\";\n\nimport { STORAGE_THEME_KEY } from \"../config\";\nimport { useLocalStorage } from \"../hooks\";\n\nexport type ThemeName = \"light\" | \"dark\";\n\nexport type ThemeContext = {\n toggleTheme: () => void;\n themeName: ThemeName;\n};\n\nconst themeMap: Record = {\n light: themeLight,\n dark: themeDark,\n};\n\nexport const ThemeToggleContext = createContext({} as ThemeContext);\n\nconst DEFAULT_THEME = \"dark\";\n\nexport const ThemeProvider: FC = ({ children }) => {\n const [themeLS, setThemeLS] = useLocalStorage(\n STORAGE_THEME_KEY,\n null,\n );\n // const systemTheme = useSystemTheme();\n\n /*\n * The first rendering is always with a light theme. After that useEffect will replace the theme with a custom one\n * This is necessary for correct Next.js hydration\n */\n const [themeName, setThemeName] = useState(DEFAULT_THEME);\n\n useEffect(() => {\n setThemeName(themeLS ?? DEFAULT_THEME); // ?? systemTheme);\n }, [themeLS]); //, systemTheme]);\n\n // remember the theme on manual toggle, ignore system theme changes\n const toggleTheme = useCallback(() => {\n setThemeLS((current) => (current === \"light\" ? \"dark\" : \"light\"));\n }, [setThemeLS]);\n\n const value = useMemo(\n () => ({\n toggleTheme,\n themeName,\n }),\n [themeName, toggleTheme],\n );\n\n return (\n \n \n \n \n {children}\n \n \n );\n};\n","import {\n useCallback,\n useEffect,\n useState,\n Dispatch,\n SetStateAction,\n} from \"react\";\nimport warning from \"tiny-warning\";\n\nexport const useLocalStorage = (\n key: string,\n initialValue: T,\n): [storedValue: T, setValue: Dispatch>] => {\n const readValue = useCallback(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? (JSON.parse(item) as T) : initialValue;\n } catch (error) {\n warning(\n typeof window === \"undefined\",\n `Error reading localStorage key \"${key}\"`,\n );\n return initialValue;\n }\n }, [initialValue, key]);\n\n const [storedValue, setStoredValue] = useState(readValue);\n\n const saveToStorage = useCallback(\n (newValue) => {\n try {\n window.localStorage.setItem(key, JSON.stringify(newValue));\n window.dispatchEvent(new Event(\"local-storage\"));\n } catch (error) {\n warning(\n typeof window === \"undefined\",\n `Error setting localStorage key \"${key}\"`,\n );\n }\n },\n [key],\n );\n\n const setValue = useCallback(\n (value) => {\n if (value instanceof Function) {\n setStoredValue((current) => {\n const newValue = value(current);\n saveToStorage(newValue);\n return newValue;\n });\n } else {\n saveToStorage(value);\n setStoredValue(value);\n }\n },\n [saveToStorage],\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, [readValue]);\n\n useEffect(() => {\n const handleStorageChange = () => {\n setStoredValue(readValue());\n };\n window.addEventListener(\"storage\", handleStorageChange);\n window.addEventListener(\"local-storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener(\"storage\", handleStorageChange);\n window.removeEventListener(\"local-storage\", handleStorageChange);\n };\n }, [readValue]);\n\n return [storedValue, setValue];\n};\n","export const STORAGE_TERMS_KEY = \"bravehash-terms-agree\";\nexport const STORAGE_THEME_KEY = \"bravehash-theme\";\n","import { FC } from \"react\";\n\nimport { ThemeProvider } from \"./theme\";\n\nexport const Providers: FC = ({ children }) => (\n {children}\n);\n","const routes = [\n {\n path: [\"/\", \"/home\"],\n exact: true,\n component: \"Home\",\n },\n];\n\nexport default routes;\n","import { FC, lazy, Suspense } from \"react\";\nimport { Switch, Route } from \"react-router-dom\";\n\n// import Footer from \"../components/Footer\";\n// import Header from \"../components/Header\";\nimport { Providers } from \"../providers\";\nimport routes from \"./config\";\n\nconst Router: FC = () => {\n return (\n \n \n {/*
*/}\n \n {routes.map((routeItem) => {\n return (\n \n import(\n `../pages/${routeItem.component}`\n ),\n )}\n />\n );\n })}\n \n {/*