From bb3241cdf56fc6aab6797ee8752285ae62ac6b18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B4=CF=85=CF=82?= Date: Fri, 2 Jun 2023 16:03:27 -0400 Subject: [PATCH] Strip Chakra UI (#9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * updatin' Vite, replacin' Chakra on the view, & addin' 3D ๐Ÿฆ– * beginnin' to strip Chakra out ๐ŸŽ“ * tearin' out the `TokensTable` ๐Ÿ“ธ * cleanin' ๐Ÿ“ * preppin' to style index table ๐Ÿšฏ * restructurin' index & downgradin' styles ๐Ÿ”ฐ * refactoring index & edit form ๐ŸŽฎ * modulin' CSS & fixin' tab interactions ๐ŸŒต * more modularizin' CSS ๐Ÿ“ฆ * formattin' forms ๐Ÿ’ * more modularizing of the site's CSS ๐Ÿฆข * making styles more responsive ๐Ÿถ --- .vscode/settings.json | 4 +- package.json | 3 +- packages/ui/package.json | 18 +- packages/ui/postcss.config.ts | 8 + packages/ui/public/favicon.png | Bin 39086 -> 0 bytes packages/ui/public/favicon.svg | 9 +- packages/ui/public/logo.svg | 141 +- packages/ui/public/vite.svg | 1 - packages/ui/src/App.tsx | 72 +- packages/ui/src/components/Expandable.tsx | 41 +- packages/ui/src/components/Header.tsx | 29 +- packages/ui/src/components/HomeLink.tsx | 9 +- packages/ui/src/components/JSONForm.tsx | 38 +- packages/ui/src/components/LinkedSVG.tsx | 86 +- .../src/components/LoggingErrorBoundary.tsx | 32 + packages/ui/src/components/MaxForm.tsx | 76 +- packages/ui/src/components/ModelModal.tsx | 98 +- packages/ui/src/components/NFTForm.tsx | 713 ++-- packages/ui/src/components/OptionsForm.tsx | 530 +-- packages/ui/src/components/Spinner.tsx | 9 + packages/ui/src/components/SubmitButton.tsx | 105 +- packages/ui/src/components/ThreeDScene.tsx | 77 +- .../ui/src/components/TokenFilterForm.tsx | 132 +- packages/ui/src/components/TokensTable.tsx | 460 ++- packages/ui/src/components/URIForm.tsx | 8 +- packages/ui/src/components/index.ts | 1 + packages/ui/src/config.tsx | 271 +- packages/ui/src/lib/helpers.ts | 33 +- packages/ui/src/lib/hooks.tsx | 2 + packages/ui/src/lib/types.ts | 11 +- packages/ui/src/main.tsx | 5 + packages/ui/src/pages/disburse.tsx | 230 +- packages/ui/src/pages/edit.tsx | 25 +- packages/ui/src/pages/home.tsx | 110 +- packages/ui/src/pages/new.tsx | 190 +- packages/ui/src/pages/owners.tsx | 53 +- packages/ui/src/pages/self-mint.tsx | 26 +- packages/ui/src/pages/view.tsx | 90 +- packages/ui/src/styles/Header.module.css | 40 + packages/ui/src/styles/HomeLink.css | 7 + packages/ui/src/styles/JSONForm.module.css | 10 + packages/ui/src/styles/NFTForm.module.css | 104 + packages/ui/src/styles/OptionsForm.module.css | 84 + packages/ui/src/styles/Spinner.css | 5 + packages/ui/src/styles/SubmitButton.css | 5 + .../ui/src/styles/TokenFilterForm.module.css | 76 + packages/ui/src/styles/TokensTable.css | 209 ++ packages/ui/src/styles/URIForm.css | 5 + packages/ui/src/styles/config.module.css | 27 + packages/ui/src/styles/disburse.module.css | 6 + packages/ui/src/styles/edit.css | 0 packages/ui/src/styles/general.css | 32 + packages/ui/src/styles/global.css | 61 + packages/ui/src/styles/home.css | 25 + packages/ui/src/styles/new.module.css | 51 + packages/ui/src/styles/view.module.css | 43 + packages/ui/vite.config.ts | 2 - yarn.lock | 2967 ++++++++--------- 58 files changed, 3987 insertions(+), 3518 deletions(-) create mode 100644 packages/ui/postcss.config.ts delete mode 100644 packages/ui/public/favicon.png delete mode 100644 packages/ui/public/vite.svg create mode 100644 packages/ui/src/components/LoggingErrorBoundary.tsx create mode 100644 packages/ui/src/components/Spinner.tsx create mode 100644 packages/ui/src/styles/Header.module.css create mode 100644 packages/ui/src/styles/HomeLink.css create mode 100644 packages/ui/src/styles/JSONForm.module.css create mode 100644 packages/ui/src/styles/NFTForm.module.css create mode 100644 packages/ui/src/styles/OptionsForm.module.css create mode 100644 packages/ui/src/styles/Spinner.css create mode 100644 packages/ui/src/styles/SubmitButton.css create mode 100644 packages/ui/src/styles/TokenFilterForm.module.css create mode 100644 packages/ui/src/styles/TokensTable.css create mode 100644 packages/ui/src/styles/URIForm.css create mode 100644 packages/ui/src/styles/config.module.css create mode 100644 packages/ui/src/styles/disburse.module.css create mode 100644 packages/ui/src/styles/edit.css create mode 100644 packages/ui/src/styles/general.css create mode 100644 packages/ui/src/styles/global.css create mode 100644 packages/ui/src/styles/home.css create mode 100644 packages/ui/src/styles/new.module.css create mode 100644 packages/ui/src/styles/view.module.css diff --git a/.vscode/settings.json b/.vscode/settings.json index 62f13581..379352f7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,7 +22,7 @@ "editor.cursorBlinking": "phase", "workbench.preferredDarkColorTheme": "Default High Contrast", "window.autoDetectColorScheme": true, - "workbench.colorTheme": "Default Dark+", + "workbench.colorTheme": "Kimbie Dark", "window.closeWhenEmpty": true, - "window.zoomLevel": 4 + "window.zoomLevel": 3 } diff --git a/package.json b/package.json index c914074c..c5ddb034 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,8 @@ }, "dependencies": { "@apollo/client": "^3.6.4", - "graphql": "^16.5.0" + "graphql": "^16.5.0", + "ts-node": "^10.9.1" }, "resolutions": { "bn.js": "5.2.1", diff --git a/packages/ui/package.json b/packages/ui/package.json index 5e52c3f7..2c05d957 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -18,26 +18,27 @@ "gh:publish": "gh-pages --dist dist/ --dotfiles --message 'Updatinโ€™ GitHub Pages'" }, "dependencies": { - "@chakra-ui/icons": "1.1", - "@chakra-ui/react": "^1.8.8", - "@emotion/react": "^11.10.0", - "@emotion/styled": "^11.10.0", "@react-three/fiber": "^8.10.1", + "@tippyjs/react": "^4.2.6", "@types/three": "^0.149.0", "@walletconnect/web3-provider": "^1.8.0", "dotenv": "^16.0.0", "ethers": "^5.6.9", - "framer-motion": "^6.5.1", "graphql": "^16.5.0", "ipfs-http-client": "^57.0.3", "it-all": "^1.0.6", "multiformats": "^9.7.1", + "ramda": "^0.28.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", - "react-hook-form": "^7.34.0", + "react-hook-form": "^7.43.0", "react-markdown": "^8.0.3", "react-router-dom": "^6.3.0", + "react-spinners": "^0.13.8", + "react-tabs": "^6.0.0", + "react-toastify": "^9.1.1", + "remark-gfm": "^3.0.1", "three": "^0.149.0", "util": "^0.12.5", "web3modal": "^1.9.8" @@ -54,13 +55,14 @@ "@types/babel__core": "^7", "@types/jest": "^28.1.6", "@types/node": "^18.6.4", + "@types/ramda": "^0.28.12", "@types/react": "^18.0.15", "@types/react-dom": "^18.0.6", "@types/react-helmet": "^6.1.5", "@types/rollup-plugin-node-globals": "^1", "@types/webpack": "^5.28.0", "@types/webpack-bundle-analyzer": "^4", - "@vitejs/plugin-react": "^2.0.0", + "@vitejs/plugin-react": "^3.0.1", "@webpack-cli/generators": "^2.5.0", "assert": "^2.0.0", "babel-jest": "^28.1.3", @@ -72,6 +74,7 @@ "https-browserify": "^1.0.0", "jest": "^28.1.3", "os-browserify": "^0.3.0", + "postcss-preset-env": "^8.0.1", "rollup": "^2.77.2", "rollup-plugin-node-globals": "^1.4.0", "rollup-plugin-node-polyfills": "^0.2.1", @@ -82,7 +85,6 @@ "style-loader": "^3.3.1", "ts-jest": "^28.0.7", "ts-loader": "^9.3.1", - "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.0.0", "typescript": "^4.9.5", "vite": "^4.0.4", diff --git a/packages/ui/postcss.config.ts b/packages/ui/postcss.config.ts new file mode 100644 index 00000000..13a3f86d --- /dev/null +++ b/packages/ui/postcss.config.ts @@ -0,0 +1,8 @@ +import postcssPresetEnv from 'postcss-preset-env' + +// eslint-disable-next-line import/no-anonymous-default-export +export default { + plugins: [ + postcssPresetEnv({ stage: 0 }) + ], +} \ No newline at end of file diff --git a/packages/ui/public/favicon.png b/packages/ui/public/favicon.png deleted file mode 100644 index 4b97d82c6341fc2038e8e5fe211e769aeceb4a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39086 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 Kissy Octo + - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns="http://www.w3.org/2000/svg"> + - - - \ No newline at end of file diff --git a/packages/ui/src/App.tsx b/packages/ui/src/App.tsx index 02c7fc1c..28fb2957 100644 --- a/packages/ui/src/App.tsx +++ b/packages/ui/src/App.tsx @@ -1,9 +1,5 @@ import { Helmet } from 'react-helmet' -import { - ChakraProvider, Spinner, ColorModeScript, - ThemeConfig, extendTheme, -} from '@chakra-ui/react' import { Web3ContextProvider } from '@/lib/hooks' import { ApolloClient, @@ -17,6 +13,8 @@ import { Route, } from 'react-router-dom' import React from 'react' +import { Spinner } from './components/Spinner' +import { ToastContainer } from 'react-toastify' const Home = React.lazy(() => import('./pages/home')) const New = React.lazy(() => import('./pages/new')) @@ -26,12 +24,6 @@ const Disburse = React.lazy(() => import('./pages/disburse')) const SelfMint = React.lazy(() => import('./pages/self-mint')) const Owners = React.lazy(() => import('./pages/owners')) -const themeConfig: ThemeConfig = { - initialColorMode: 'dark', - useSystemColorMode: true, -} -const theme = extendTheme({ config: themeConfig }) - const client = new ApolloClient({ uri: nftGraph, cache: new InMemoryCache(), @@ -39,36 +31,36 @@ const client = new ApolloClient({ const App: React.FC = () => ( <> - - - - - - - - - }> - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - - - - - + + + + + + + }> + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + + + ) diff --git a/packages/ui/src/components/Expandable.tsx b/packages/ui/src/components/Expandable.tsx index 42810d20..6a94b497 100644 --- a/packages/ui/src/components/Expandable.tsx +++ b/packages/ui/src/components/Expandable.tsx @@ -2,9 +2,7 @@ import { Maybe } from '@/lib/types' import React, { ReactNode, useCallback, useRef, useState, } from 'react' -import { - Box, chakra, Flex, FormLabel, Link, Text, -} from '@chakra-ui/react' +import { Link } from 'react-router-dom' export const Anchor = ({ name }: { name: string }) => { const anchor = name.toLowerCase().replace(/\s+/g, '-') @@ -12,21 +10,19 @@ export const Anchor = ({ name }: { name: string }) => { return ( - ๐Ÿ”— + ๐Ÿ”— ) } -const Label = ({ name }: { name: string }) => ( - +export const Label = ({ name }: { name: string }) => ( +
- โ–  - {name}: - + โ–  + +
) export const Expandable: React.FC<{ @@ -39,24 +35,17 @@ export const Expandable: React.FC<{ const box = useRef(null) return ( - - +
+
- toggle(name)} - _after={{ content: '":"'}} - > - - {hide[name] ? 'โ–ธ' : 'โ–พ'} - +

toggle(name)}> + {hide[name] ? 'โ–ธ' : 'โ–พ'} {name} - +

{!hide[name] && button} - +
{!hide[name] && children} - +
) } diff --git a/packages/ui/src/components/Header.tsx b/packages/ui/src/components/Header.tsx index 59580752..0ccef4f1 100644 --- a/packages/ui/src/components/Header.tsx +++ b/packages/ui/src/components/Header.tsx @@ -1,29 +1,30 @@ -import { Flex, FlexProps, Tooltip } from '@chakra-ui/react' import { LinkedSVG } from '@/components' -import React from 'react' +import React, { HTMLAttributes } from 'react' +import Tippy from '@tippyjs/react' +import Hs from '../styles/Header.module.css' export const Header: React.FC< - FlexProps & { links?: Record<'cup' | 'sign', string> } + HTMLAttributes + & { links?: Record<'cup' | 'sign', string> } > = ({ links = { cup: '/new', sign: '/' }, ...props }) => ( - - +
+ - - + + - - + +
) export default Header \ No newline at end of file diff --git a/packages/ui/src/components/HomeLink.tsx b/packages/ui/src/components/HomeLink.tsx index a9d320d6..9406aef1 100644 --- a/packages/ui/src/components/HomeLink.tsx +++ b/packages/ui/src/components/HomeLink.tsx @@ -1,15 +1,12 @@ import { LinkedSVG } from '@/components' import React from 'react' +import '../styles/HomeLink.css' export const HomeLink: React.FC = () => ( ) diff --git a/packages/ui/src/components/JSONForm.tsx b/packages/ui/src/components/JSONForm.tsx index c96faa11..c378bc96 100644 --- a/packages/ui/src/components/JSONForm.tsx +++ b/packages/ui/src/components/JSONForm.tsx @@ -1,22 +1,36 @@ -import { Textarea } from '@chakra-ui/react' -import React from 'react' +import React, { useEffect } from 'react' import { FieldValues, UseFormRegister } from 'react-hook-form' import JSON5 from 'json5' import { ERC1155Metadata } from '@/lib/types' +import { HashLoader } from 'react-spinners' +import jf from '../styles/JSONForm.module.css' export const JSONForm: React.FC<{ register: UseFormRegister metadata: ERC1155Metadata + setValue: (name: string, value: string) => void }> = ({ - register, metadata -}) => ( - -) + register, metadata, setValue +}) => { + useEffect(() => { + if(metadata) { + setValue('json5', JSON5.stringify(metadata, null, 2)) + } + }, [metadata, setValue]) + + return ( + metadata == null ? ( +
+ +

Fetching metadataโ€ฆ

+
+ ) : ( +