diff options
| author | Rafi Zadanly <rafizadanly@gmail.com> | 2022-12-22 15:29:18 +0700 |
|---|---|---|
| committer | Rafi Zadanly <rafizadanly@gmail.com> | 2022-12-22 15:29:18 +0700 |
| commit | 31d6352ab8855754ef18c01763d3c1b5a68de857 (patch) | |
| tree | e9b7e67a994574b5b1ccc7c8ef805a899f561d3d /src/pages | |
| parent | 7ca4c68e3c509004a84d05ebd6d66019c7e92b72 (diff) | |
Appbar component and auth hook (useAuth)
Diffstat (limited to 'src/pages')
| -rw-r--r-- | src/pages/my/menu.js | 51 | ||||
| -rw-r--r-- | src/pages/my/profile.js | 104 | ||||
| -rw-r--r-- | src/pages/shop/cart.js | 40 |
3 files changed, 106 insertions, 89 deletions
diff --git a/src/pages/my/menu.js b/src/pages/my/menu.js new file mode 100644 index 00000000..7454d8d1 --- /dev/null +++ b/src/pages/my/menu.js @@ -0,0 +1,51 @@ + +import AppBar from "../../components/AppBar"; +import Layout from "../../components/Layout"; +import Link from "../../components/Link"; +import { useAuth } from "../../helpers/auth"; +import { + ChevronRightIcon, + Cog6ToothIcon, + DocumentTextIcon, + UserCircleIcon, UserIcon +} from "@heroicons/react/24/outline"; + +const menus = [ + { name: 'Riwayat Pesanan', url: '/my/profile' }, + { name: 'Faktur Penjualan', url: '/my/profile' }, + { name: 'Faktur Pajak', url: '/my/profile' }, + { name: 'Surat Jalan', url: '/my/profile' } +]; + +export default function MyMenu() { + const [auth, setAuth] = useAuth(); + + return ( + <> + <Layout> + <AppBar title="Menu Utama" /> + + <div className="p-4 flex gap-x-2 items-start bg-yellow_r-3 text-yellow_r-12"> + <div className="flex-1 flex gap-x-2 items-start"> + <UserCircleIcon className="w-6" /> + <div> + <h2>{ auth.name }</h2> + <p className="text-yellow_r-12/80">{ auth.email }</p> + </div> + </div> + <Link href="/my/profile"> + <Cog6ToothIcon className="w-6 text-yellow_r-12"/> + </Link> + </div> + + <div className="px-4 flex flex-col"> + { menus.map((menu, index) => ( + <Link href={menu.url} className="text-gray_r-12 font-normal flex gap-x-2 items-center py-4 border-b border-gray_r-6" key={index}> + { menu.name } <ChevronRightIcon className="w-5 ml-auto"/> + </Link> + )) } + </div> + </Layout> + </> + ); +}
\ No newline at end of file diff --git a/src/pages/my/profile.js b/src/pages/my/profile.js index a0aeb938..44ccfebd 100644 --- a/src/pages/my/profile.js +++ b/src/pages/my/profile.js @@ -1,24 +1,17 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; +import AppBar from "../../components/AppBar"; import Header from "../../components/Header"; import Layout from "../../components/Layout"; +import WithAuth from "../../components/WithAuth"; import apiOdoo from "../../helpers/apiOdoo"; import { - getAuth, + useAuth, setAuth as setAuthCookie } from "../../helpers/auth"; export default function MyProfile() { - const [auth, setAuth] = useState({ - name: '', - email: '', - phone: '', - mobile: '' - }); - - useEffect(() => { - setAuth(getAuth()); - }, []); + const [auth, setAuth] = useAuth(); const update = async (e) => { e.preventDefault(); @@ -39,57 +32,58 @@ export default function MyProfile() { } return ( - <> - <Header title="Profil Saya - Indoteknik" /> + <WithAuth> <Layout> - <form onSubmit={update} className="w-full p-4"> - <h1 className="mb-6">Profil Saya</h1> - - <label className="form-label mt-4 mb-2">Email</label> - <input - type="text" - className="form-input bg-gray_r-2" - placeholder="johndoe@gmail.com" - name="email" - value={auth.email} - onChange={handleInput} - disabled={true} - /> + <AppBar title="Akun Saya" /> + <form onSubmit={update} className="w-full px-4"> + { auth && ( + <> + <label className="form-label mt-4 mb-2">Email</label> + <input + type="text" + className="form-input bg-gray_r-2" + placeholder="johndoe@gmail.com" + name="email" + value={auth.email} + onChange={handleInput} + disabled={true} + /> - <label className="form-label mt-4 mb-2">Nama Lengkap</label> - <input - type="text" - className="form-input bg-gray_r-2" - placeholder="John Doe" - name="name" - value={auth.name} - onChange={handleInput} - /> + <label className="form-label mt-4 mb-2">Nama Lengkap</label> + <input + type="text" + className="form-input bg-gray_r-2" + placeholder="John Doe" + name="name" + value={auth.name} + onChange={handleInput} + /> - <label className="form-label mt-4 mb-2">No Telepon</label> - <input - type="tel" - className="form-input bg-gray_r-2" - placeholder="08xxxxxxxx" - name="phone" - value={auth.phone} - onChange={handleInput} - /> + <label className="form-label mt-4 mb-2">No Telepon</label> + <input + type="tel" + className="form-input bg-gray_r-2" + placeholder="08xxxxxxxx" + name="phone" + value={auth.phone} + onChange={handleInput} + /> - <label className="form-label mt-4 mb-2">No Handphone</label> - <input - type="tel" - className="form-input bg-gray_r-2" - placeholder="08xxxxxxxx" - name="mobile" - value={auth.mobile} - onChange={handleInput} - /> + <label className="form-label mt-4 mb-2">No Handphone</label> + <input + type="tel" + className="form-input bg-gray_r-2" + placeholder="08xxxxxxxx" + name="mobile" + value={auth.mobile} + onChange={handleInput} + /> + </> + ) } <button type="submit" className="btn-yellow float-right mt-4">Simpan</button> - </form> </Layout> - </> + </WithAuth> ); }
\ No newline at end of file diff --git a/src/pages/shop/cart.js b/src/pages/shop/cart.js index 4c954960..f099a19e 100644 --- a/src/pages/shop/cart.js +++ b/src/pages/shop/cart.js @@ -1,17 +1,11 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; -import Head from "next/head"; import { TrashIcon, PlusIcon, MinusIcon, - ChevronLeftIcon, } from "@heroicons/react/24/solid"; -import { - ExclamationTriangleIcon, - HeartIcon, - HomeIcon -} from "@heroicons/react/24/outline"; +import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; // Helpers import { @@ -30,14 +24,10 @@ import Layout from "../../components/Layout"; import Link from "../../components/Link"; import Alert from "../../components/Alert"; import Spinner from "../../components/Spinner"; +import { useRouter } from "next/router"; +import AppBar from "../../components/AppBar"; -export async function getServerSideProps(context) { - let previousRoute = context.req.headers.referer || '/'; - if (previousRoute.endsWith('/shop/cart')) previousRoute = '/'; - return { props: { previousRoute } }; -} - -export default function Cart({ previousRoute }) { +export default function Cart() { const [isLoadingProducts, setIsLoadingProducts] = useState(true); const [products, setProducts] = useState([]); const [totalPriceBeforeTax, setTotalPriceBeforeTax] = useState(0); @@ -163,27 +153,9 @@ export default function Cart({ previousRoute }) { onClose={hideDeleteConfirmation} onSubmit={deleteItem} /> - <Head> - <title>Keranjang Belanja - Indoteknik</title> - </Head> - <Layout> - <div className="flex justify-between p-4"> - {/* --- Start Title */} - <Link href={previousRoute} className="flex gap-x-2 text-gray_r-12"> - <ChevronLeftIcon className="w-6 stroke-2"/> - <h1>Keranjang Saya</h1> - </Link> - {/* --- End Title */} - {/* --- Start Icons */} - <div className="flex gap-x-3"> - <HeartIcon className="w-6 stroke-2"/> - <Link href="/"> - <HomeIcon className="w-6 stroke-2 text-gray_r-12"/> - </Link> - </div> - {/* --- End Icons */} - </div> + <Layout> + <AppBar title="Keranjang Saya" /> {/* jsx-start: Progress Bar */} <div className="bg-gray_r-3 flex gap-x-2 p-4 rounded-md mb-3"> |
