diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 4a7266a4..00000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- root: true,
- env: { browser: true, es2020: true },
- ignorePatterns: ['dist', '.eslintrc.cjs'],
- parser: '@typescript-eslint/parser',
-}
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 00000000..b0135f9a
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,83 @@
+{
+ "ignorePatterns": [
+ "*.test.ts"
+ ],
+ "env": {
+ "browser": true,
+ "es2021": true
+ },
+ "extends": [
+ "eslint:recommended",
+ "plugin:react/recommended",
+ "plugin:@typescript-eslint/recommended"
+ ],
+ "settings": {
+ "react": {
+ "version": "detect"
+ }
+ },
+ "overrides": [],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": "latest",
+ "sourceType": "module"
+ },
+ "plugins": [
+ "react",
+ "@typescript-eslint"
+ ],
+ "rules": {
+ "indent": [
+ "warn",
+ 4,
+ {
+ "SwitchCase": 1
+ }
+ ],
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "quotes": [
+ "error",
+ "single",
+ {
+ "allowTemplateLiterals": true
+ }
+ ],
+ "semi": [
+ "error",
+ "never"
+ ],
+ "eol-last": [
+ "error",
+ "always"
+ ],
+ "comma-dangle": [
+ "error",
+ {
+ "arrays": "always-multiline",
+ "objects": "always-multiline",
+ "imports": "always-multiline",
+ "exports": "always-multiline",
+ "functions": "never"
+ }
+ ],
+ "@typescript-eslint/no-explicit-any": "off",
+ "no-extra-semi": "off",
+ "react/react-in-jsx-scope": "off",
+ "react/display-name": "off",
+ "react/prop-types": "off",
+ "react/jsx-filename-extension": [
+ 1,
+ {
+ "extensions": [
+ ".js",
+ ".jsx",
+ ".ts",
+ ".tsx"
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/index.html b/index.html
index ffd486ce..64f46a77 100644
--- a/index.html
+++ b/index.html
@@ -5,10 +5,20 @@
-
+
-
HAI | App
+
+
+
+
+
+
+
+
+
+
+ HAI • COMING SOON
diff --git a/package.json b/package.json
index a74ecdef..ce497f71 100644
--- a/package.json
+++ b/package.json
@@ -22,35 +22,30 @@
"react-dom": "17.0.1"
},
"dependencies": {
+ "@apollo/client": "^3.8.8",
"@ethersproject/experimental": "5.4.0",
"@ethersproject/providers": "5.4.5",
"@hai-on-op/sdk": "1.2.2-1f60d23d.0",
+ "@nivo/core": "0.84.0",
+ "@nivo/line": "0.84.0",
+ "@nivo/pie": "0.84.0",
"@rainbow-me/rainbowkit": "1.0.9",
"axios": "0.27.2",
- "classnames": "2.2.6",
"dayjs": "1.9.4",
"easy-peasy": "3.3.1",
"ethers": "5.4.7",
- "gh-pages": "4.0.0",
+ "graphql": "^16.8.1",
"i18next": "19.7.0",
"numeral": "2.0.6",
- "postcss": "8.4.28",
"react": "17.0.1",
- "react-confetti": "6.0.1",
- "react-custom-scrollbars": "4.2.1",
- "react-device-detect": "1.13.1",
"react-dom": "17.0.1",
"react-feather": "2.0.9",
"react-helmet-async": "1.0.7",
"react-i18next": "11.7.2",
- "react-lottie-player": "1.4.1",
"react-paginate": "6.5.0",
"react-router-dom": "5.3.0",
"react-toastify": "6.0.9",
- "react-tooltip": "4.2.21",
- "react-transition-group": "4.4.1",
"styled-components": "5.2.0",
- "tailwindcss": "3.3.3",
"viem": "1.19.15",
"wagmi": "1.4.12"
},
@@ -62,6 +57,7 @@
"@types/node": "12.0.0",
"@types/numeral": "0.0.28",
"@types/react-custom-scrollbars": "4.0.7",
+ "@types/react-dom": "17.0.1",
"@types/react-paginate": "6.2.1",
"@types/react-router-dom": "5.3.0",
"@types/react-transition-group": "4.4.0",
@@ -74,6 +70,7 @@
"craco-alias": "3.0.1",
"eslint": "8.45.0",
"eslint-config-prettier": "9.0.0",
+ "eslint-config-react-app": "7.0.1",
"eslint-plugin-import": "2.28.1",
"eslint-plugin-jsx-a11y": "6.7.1",
"eslint-plugin-prettier": "5.0.0",
diff --git a/postcss.config.js b/postcss.config.js
deleted file mode 100644
index 33ad091d..00000000
--- a/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-}
diff --git a/public/assets/tie-dye-reduced.mov b/public/assets/tie-dye-reduced.mov
new file mode 100644
index 00000000..e0285b13
Binary files /dev/null and b/public/assets/tie-dye-reduced.mov differ
diff --git a/public/assets/tie-dye.MOV b/public/assets/tie-dye.MOV
new file mode 100644
index 00000000..0d800c94
Binary files /dev/null and b/public/assets/tie-dye.MOV differ
diff --git a/public/audio/get-hai-together.wav b/public/audio/get-hai-together.wav
new file mode 100644
index 00000000..fd3bdcdc
Binary files /dev/null and b/public/audio/get-hai-together.wav differ
diff --git a/public/audio/hai-as-fuck.wav b/public/audio/hai-as-fuck.wav
new file mode 100644
index 00000000..d58ed10d
Binary files /dev/null and b/public/audio/hai-as-fuck.wav differ
diff --git a/public/icon.png b/public/icon.png
index dcc1ea44..c358ae32 100644
Binary files a/public/icon.png and b/public/icon.png differ
diff --git a/public/icons/android-chrome-192x192.png b/public/icons/android-chrome-192x192.png
index c7aee48a..6b718ec8 100644
Binary files a/public/icons/android-chrome-192x192.png and b/public/icons/android-chrome-192x192.png differ
diff --git a/public/icons/android-chrome-512x512.png b/public/icons/android-chrome-512x512.png
index fcaa4178..c358ae32 100644
Binary files a/public/icons/android-chrome-512x512.png and b/public/icons/android-chrome-512x512.png differ
diff --git a/public/icons/apple-touch-icon.png b/public/icons/apple-touch-icon.png
index 92c56cdb..47041cab 100644
Binary files a/public/icons/apple-touch-icon.png and b/public/icons/apple-touch-icon.png differ
diff --git a/public/icons/favicon-16x16.png b/public/icons/favicon-16x16.png
index 261f47f5..2e10f549 100644
Binary files a/public/icons/favicon-16x16.png and b/public/icons/favicon-16x16.png differ
diff --git a/public/icons/favicon-32x32.png b/public/icons/favicon-32x32.png
index fa040528..7b5abc48 100644
Binary files a/public/icons/favicon-32x32.png and b/public/icons/favicon-32x32.png differ
diff --git a/public/icons/favicon.ico b/public/icons/favicon.ico
index b862a8ed..a426cb2d 100644
Binary files a/public/icons/favicon.ico and b/public/icons/favicon.ico differ
diff --git a/public/icons/logo192.png b/public/icons/logo192.png
index ef80305f..17722a6f 100644
Binary files a/public/icons/logo192.png and b/public/icons/logo192.png differ
diff --git a/public/icons/logo512.png b/public/icons/logo512.png
index dcc1ea44..c358ae32 100644
Binary files a/public/icons/logo512.png and b/public/icons/logo512.png differ
diff --git a/public/icons/mstile-150x150.png b/public/icons/mstile-150x150.png
index 3f59b037..422810a9 100644
Binary files a/public/icons/mstile-150x150.png and b/public/icons/mstile-150x150.png differ
diff --git a/public/logo192.png b/public/logo192.png
index ef80305f..f6fc0df3 100644
Binary files a/public/logo192.png and b/public/logo192.png differ
diff --git a/public/logo512.png b/public/logo512.png
index dcc1ea44..c358ae32 100644
Binary files a/public/logo512.png and b/public/logo512.png differ
diff --git a/src/App.tsx b/src/App.tsx
index ce96cabd..f92d9ae0 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,60 +1,63 @@
-import i18next from 'i18next'
import { Suspense } from 'react'
-import { I18nextProvider } from 'react-i18next'
import { Redirect, Route, Switch } from 'react-router-dom'
-import { ThemeProvider } from 'styled-components'
-import ErrorBoundary from './ErrorBoundary'
-import GlobalStyle from './GlobalStyle'
-import Safes from './containers/Safes'
-import SafeDetails from './containers/Safes/SafeDetails'
-import Shared from './containers/Shared'
-import { useStoreState } from './store'
-import { Theme } from './utils/interfaces'
-import { darkTheme } from './utils/themes/dark'
+import i18next from 'i18next'
+import { I18nextProvider } from 'react-i18next'
+import { ApolloProvider } from '@apollo/client'
-import Splash from './containers/Splash'
-import Privacy from './containers/Privacy'
-import CreateSafe from './containers/Safes/CreateSafe'
-import Auctions from './containers/Auctions'
-import Analytics from './containers/Analytics'
+import type { Theme } from '~/types'
+import { client } from '~/utils'
+// import { AnalyticsProvider } from '~/providers/AnalyticsProvider'
+
+import { GlobalStyle } from '~/styles'
+import { ErrorBoundary } from '~/ErrorBoundary'
+import { Shared } from '~/containers/Shared'
+import { Splash } from '~/containers/Splash'
+// import { Privacy } from '~/containers/Privacy'
+// import { Auctions } from '~/containers/Auctions'
+// import { Analytics } from '~/containers/Analytics'
+// import { Earn } from '~/containers/Earn'
+// import { Vaults } from '~/containers/Vaults'
+// import { Contracts } from '~/containers/Contracts'
+// import { Learn } from './containers/Learn'
+// import { VaultExplorer } from './containers/Vaults/Explore'
declare module 'styled-components' {
export interface DefaultTheme extends Theme {}
}
const App = () => {
- const { settingsModel: settingsState } = useStoreState((state) => state)
-
- const { bodyOverflow } = settingsState
-
return (
-
-
-
+
+
+
+ {/* */}
<>
-
+ {/*
-
-
-
-
-
-
+
+
+
+
+
+
+
+ */}
>
-
-
+ {/* */}
+
+
)
}
diff --git a/src/ErrorBoundary.tsx b/src/ErrorBoundary.tsx
index 52707fd0..b6996981 100644
--- a/src/ErrorBoundary.tsx
+++ b/src/ErrorBoundary.tsx
@@ -1,5 +1,6 @@
import React from 'react'
import styled from 'styled-components'
+
import error from './assets/error.svg'
interface State {
@@ -11,8 +12,11 @@ interface Props {
children?: any
}
-class ErrorBoundary extends React.Component {
- state: State = { error: null, errorInfo: null }
+export class ErrorBoundary extends React.Component {
+ state: State = {
+ error: null,
+ errorInfo: null,
+ }
componentDidCatch(error: any, errorInfo: any) {
this.setState({
@@ -42,8 +46,6 @@ class ErrorBoundary extends React.Component {
}
}
-export default ErrorBoundary
-
const Container = styled.div`
width: 100%;
height: 100%;
diff --git a/src/GlobalStyle.tsx b/src/GlobalStyle.tsx
deleted file mode 100644
index cb2a4a3d..00000000
--- a/src/GlobalStyle.tsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import { createGlobalStyle, css } from 'styled-components'
-import boxes from './assets/boxes.svg'
-
-interface Props {
- bodyOverflow?: boolean
-}
-
-const GlobalStyle = createGlobalStyle`
-
- body::-webkit-scrollbar {
- width: 10px;
- background: transparent;
- }
-
- body::-webkit-scrollbar-thumb {
- background: rgba(0, 0, 0, 0.1);
- border-radius: 4px;
- }
-
- body::-webkit-scrollbar-thumb:hover {
- background: rgba(0, 0, 0, 0.2);
- box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.2);
- }
-
- body::-webkit-scrollbar-thumb:active {
- background-color: rgba(0, 0, 0, 0.2);
- }
-
- body {
- color: ${(props) => props.theme.colors.primary};
- background-color:${(props) => props.theme.colors.background};
- background-image: url(${boxes});
- background-size: contain;
- background-position: center 100px;
- background-repeat: no-repeat;
- overflow: ${(props: Props) => (props.bodyOverflow ? 'hidden' : 'visible')};
-
- .web3modal-modal-lightbox {
- z-index: 999;
-
- .web3modal-modal-card {
- display:block;
- max-width:400px;
- .web3modal-provider-container {
- display:flex;
- flex-direction:row;
- justify-content:space-between;
- align-items:center;
- padding:16px;
-
- .web3modal-provider-name{
- font-size: 16px;
- width:auto;
- }
-
- .web3modal-provider-icon{
- order:2;
- width:30px;
- height:30px;
-
- }
- .web3modal-provider-description {
- display:none;
- }
- }
-
- }
-}
-.place-left {
- &:after{
- border-left-color:${(props) => props.theme.colors.foreground} !important
- }
- }
-
- .place-top {
- &:after{
- border-top-color:${(props) => props.theme.colors.foreground} !important
- }
- }
- .place-bottom {
- &:after{
- border-bottom-color:${(props) => props.theme.colors.foreground} !important
- }
- }
- .place-right {
- &:after{
- border-right-color:${(props) => props.theme.colors.foreground} !important
- }
- }
-.__react_component_tooltip {
- max-width: 250px;
- padding-top: 20px;
- padding-bottom: 20px;
- border-radius: 5px;
- color:${(props) => props.theme.colors.primary};
- opacity: 1 !important;
- background: ${(props) => props.theme.colors.foreground};
- border: ${(props) => props.theme.colors.border} !important;
- box-shadow: 0 0 6px rgba(0, 0, 0, 0.16);
-
- }
- }
-`
-
-export const ExternalLinkArrow = css`
- border: 0;
- cursor: pointer;
- box-shadow: none;
- outline: none;
- padding: 0;
- margin: 0;
- color: ${(props) => props.theme.colors.blueish};
- font-size: ${(props) => props.theme.font.small};
- font-weight: 600;
- line-height: 24px;
- letter-spacing: -0.18px;
- &:disabled {
- cursor: not-allowed;
- opacity: 0.5;
- &:hover {
- opacity: 0.5;
- }
- }
- transition: all 0.3s ease;
- &:hover {
- opacity: 0.8;
- }
- img {
- position: relative;
- top: 1px;
- }
-`
-
-export const BtnStyle = css<{
- disabled?: boolean
- color?: 'blueish' | 'greenish' | 'yellowish' | 'colorPrimary' | 'colorSecondary'
-}>`
- pointer-events: ${({ theme, disabled }) => (disabled ? 'none' : 'inherit')};
- outline: none;
- cursor: ${({ theme, disabled }) => (disabled ? 'not-allowed' : 'pointer')};
- min-width: 134px;
- border: none;
- box-shadow: none;
- line-height: 24px;
- font-size: ${(props) => props.theme.font.small};
- font-weight: 600;
- padding: 8px 30px;
- color: ${(props) => props.theme.colors.neutral};
- background: ${({ theme, disabled, color }) =>
- disabled ? theme.colors.dimmedBackground : theme.colors[color ?? 'blueish']};
- border-radius: ${(props) => props.theme.global.borderRadius};
- transition: all 0.3s ease;
- display: flex;
- align-items: center;
- border-radius: 50px;
- justify-content: space-between;
-`
-
-export default GlobalStyle
diff --git a/src/assets/LogoIcon.png b/src/assets/LogoIcon.png
index bdc176ce..27c83ed5 100644
Binary files a/src/assets/LogoIcon.png and b/src/assets/LogoIcon.png differ
diff --git a/src/assets/border-image.png b/src/assets/border-image.png
new file mode 100644
index 00000000..ce3b88b8
Binary files /dev/null and b/src/assets/border-image.png differ
diff --git a/src/assets/hai-logo.png b/src/assets/hai-logo.png
index dcc1ea44..02203b8c 100644
Binary files a/src/assets/hai-logo.png and b/src/assets/hai-logo.png differ
diff --git a/src/assets/hai-logo.svg b/src/assets/hai-logo.svg
index 8a526e92..8817aba9 100644
--- a/src/assets/hai-logo.svg
+++ b/src/assets/hai-logo.svg
@@ -1,22 +1,20 @@
-