From d22f8075a21c43c792c045c39833b145d80010bb Mon Sep 17 00:00:00 2001 From: Ivan Li Date: Sat, 1 May 2021 23:10:28 +0800 Subject: [PATCH] feat: sidebar. --- .env | 2 + components/layouts/global-layout.module.css | 31 +++ components/layouts/global-sidebar.tsx | 41 ++++ package-lock.json | 208 ++++++++++++++++++-- package.json | 6 + pages/_app.module.css | 6 + pages/_app.tsx | 10 +- postcss.config.js | 2 + public/images/avatar.png | Bin 0 -> 26963 bytes 9 files changed, 286 insertions(+), 20 deletions(-) create mode 100644 .env create mode 100644 components/layouts/global-layout.module.css create mode 100644 components/layouts/global-sidebar.tsx create mode 100644 pages/_app.module.css create mode 100644 public/images/avatar.png diff --git a/.env b/.env new file mode 100644 index 0000000..a7c8b37 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +NEXT_PUBLIC_FIRST_NAME=Ivan +NEXT_PUBLIC_LAST_NAME=Li diff --git a/components/layouts/global-layout.module.css b/components/layouts/global-layout.module.css new file mode 100644 index 0000000..3cdd499 --- /dev/null +++ b/components/layouts/global-layout.module.css @@ -0,0 +1,31 @@ +.sidebar { + @apply bg-green-400 text-white; + @apply overflow-hidden flex flex-col; + @apply text-center; + height: 100vh; + padding-top: 10vh; +} + +.avatar { + @apply md:w-36 md:h-36 rounded-full; + @apply w-16 h-16; + @apply mx-auto md:my-8 flex-none; +} + +.name { + @apply md:text-3xl md:tracking-wide font-mono; + @apply md:my-8 my-4 flex-none select-all; +} +.nav { + @apply my-auto; +} +.navItem { + @apply leading-8 md:text-lg cursor-pointer my-1; + &:hover { + text-shadow: 0 0px 5px #abbf00; + } +} +.bio { + @apply text-sm text-opacity-70 text-white; + @apply my-4; +} diff --git a/components/layouts/global-sidebar.tsx b/components/layouts/global-sidebar.tsx new file mode 100644 index 0000000..6d2f475 --- /dev/null +++ b/components/layouts/global-sidebar.tsx @@ -0,0 +1,41 @@ +import React, { FC } from "react"; +import styles from "./global-layout.module.css"; +import Image from "next/image"; +import Link from "next/link"; +import classnames from 'classnames'; + +const fullName = `${process.env.NEXT_PUBLIC_FIRST_NAME} ${process.env.NEXT_PUBLIC_LAST_NAME}`; + +interface Props { + className: string; +} + +export const GlobalSidebar: FC = ({className}) => { + + return ( + + ); +}; diff --git a/package-lock.json b/package-lock.json index f215e62..1df6491 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,11 @@ "version": "0.1.0", "dependencies": { "@apollo/client": "^3.3.16", + "classnames": "^2.2.6", "graphql": "^15.5.0", "next": "10.2.0", + "postcss-import": "^14.0.1", + "postcss-nested": "^5.0.5", "react": "17.0.2", "react-dom": "17.0.2" }, @@ -20,7 +23,10 @@ "@graphql-codegen/typescript-operations": "1.17.16", "@graphql-codegen/typescript-react-apollo": "2.2.4", "@types/autoprefixer": "^10.2.0", + "@types/classnames": "^2.3.1", "@types/graphql": "^14.5.0", + "@types/postcss-import": "^12.0.0", + "@types/postcss-nested": "^4.2.3", "@types/react": "^17.0.4", "@types/tailwindcss": "^2.0.2", "autoprefixer": "^10.2.5", @@ -2339,6 +2345,16 @@ "autoprefixer": "*" } }, + "node_modules/@types/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==", + "deprecated": "This is a stub types definition. classnames provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "classnames": "*" + } + }, "node_modules/@types/graphql": { "version": "14.5.0", "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-14.5.0.tgz", @@ -2390,6 +2406,64 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/postcss-import": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@types/postcss-import/-/postcss-import-12.0.0.tgz", + "integrity": "sha512-AFgOR4zOOp/izuY7n5aEr/0SJ5e8fNYVxMkx49IA3Jf/Bs6Hhd6staMoSkdiTr9fi0z3Q1Ts5SqpFI5vv4k7BQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27" + } + }, + "node_modules/@types/postcss-import/node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@types/postcss-import/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/postcss-import/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/postcss-nested": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@types/postcss-nested/-/postcss-nested-4.2.3.tgz", + "integrity": "sha512-ZhABeFlQIL0Z3rXjWkQ9CIFiQH8383J97N7FB5B4GrfCSdniZ58fri3lxgTlU4kp6PDH3a/LWRDWHk9Mvord6A==", + "deprecated": "This is a stub types definition. postcss-nested provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "postcss-nested": "*" + } + }, "node_modules/@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -3640,7 +3714,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -5228,7 +5301,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -7230,8 +7302,7 @@ "node_modules/path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "node_modules/path-root": { "version": "0.1.1", @@ -7289,6 +7360,14 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -7374,6 +7453,22 @@ "node": ">=0.10.0" } }, + "node_modules/postcss-import": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.1.tgz", + "integrity": "sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/postcss-js": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", @@ -7395,7 +7490,6 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz", "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -7414,7 +7508,6 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -7426,8 +7519,7 @@ "node_modules/postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "node_modules/postcss/node_modules/source-map": { "version": "0.6.1", @@ -7684,6 +7776,14 @@ "node": ">=0.10.0" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dependencies": { + "pify": "^2.3.0" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -7984,7 +8084,6 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -11307,6 +11406,15 @@ "autoprefixer": "*" } }, + "@types/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==", + "dev": true, + "requires": { + "classnames": "*" + } + }, "@types/graphql": { "version": "14.5.0", "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-14.5.0.tgz", @@ -11357,6 +11465,52 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/postcss-import": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@types/postcss-import/-/postcss-import-12.0.0.tgz", + "integrity": "sha512-AFgOR4zOOp/izuY7n5aEr/0SJ5e8fNYVxMkx49IA3Jf/Bs6Hhd6staMoSkdiTr9fi0z3Q1Ts5SqpFI5vv4k7BQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@types/postcss-nested": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@types/postcss-nested/-/postcss-nested-4.2.3.tgz", + "integrity": "sha512-ZhABeFlQIL0Z3rXjWkQ9CIFiQH8383J97N7FB5B4GrfCSdniZ58fri3lxgTlU4kp6PDH3a/LWRDWHk9Mvord6A==", + "dev": true, + "requires": { + "postcss-nested": "*" + } + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -12420,8 +12574,7 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano-preset-simple": { "version": "2.0.0", @@ -13663,7 +13816,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -15254,8 +15406,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-root": { "version": "0.1.1", @@ -15295,6 +15446,11 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -15370,6 +15526,16 @@ } } }, + "postcss-import": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.1.tgz", + "integrity": "sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA==", + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, "postcss-js": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", @@ -15384,7 +15550,6 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz", "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==", - "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" } @@ -15393,7 +15558,6 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", - "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15402,8 +15566,7 @@ "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "prepend-http": { "version": "2.0.0", @@ -15600,6 +15763,14 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "requires": { + "pify": "^2.3.0" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -15847,7 +16018,6 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" diff --git a/package.json b/package.json index 04f0e75..c9ce114 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,11 @@ }, "dependencies": { "@apollo/client": "^3.3.16", + "classnames": "^2.2.6", "graphql": "^15.5.0", "next": "10.2.0", + "postcss-import": "^14.0.1", + "postcss-nested": "^5.0.5", "react": "17.0.2", "react-dom": "17.0.2" }, @@ -23,7 +26,10 @@ "@graphql-codegen/typescript-operations": "1.17.16", "@graphql-codegen/typescript-react-apollo": "2.2.4", "@types/autoprefixer": "^10.2.0", + "@types/classnames": "^2.3.1", "@types/graphql": "^14.5.0", + "@types/postcss-import": "^12.0.0", + "@types/postcss-nested": "^4.2.3", "@types/react": "^17.0.4", "@types/tailwindcss": "^2.0.2", "autoprefixer": "^10.2.5", diff --git a/pages/_app.module.css b/pages/_app.module.css new file mode 100644 index 0000000..923095b --- /dev/null +++ b/pages/_app.module.css @@ -0,0 +1,6 @@ +.page { + @apply flex; +} +.sidebar { + @apply md:w-64 w-32; +} \ No newline at end of file diff --git a/pages/_app.tsx b/pages/_app.tsx index f5138b3..f2be730 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,8 +1,16 @@ import '../styles/globals.css' import "tailwindcss/tailwind.css"; +import React from 'react'; +import { GlobalSidebar } from '../components/layouts/global-sidebar'; +import styles from './_app.module.css'; function MyApp({ Component, pageProps }) { - return + return ( +
+ + +
+ ); } export default MyApp diff --git a/postcss.config.js b/postcss.config.js index 33ad091..94ff338 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,8 @@ module.exports = { plugins: { + 'postcss-import': {}, tailwindcss: {}, + 'postcss-nested': {}, autoprefixer: {}, }, } diff --git a/public/images/avatar.png b/public/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..89308bdd8cf303d4810a9d74ced3ec67b480f7ba GIT binary patch literal 26963 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