diff --git a/app/routes.ts b/app/routes.ts index 102b402..981eb01 100644 --- a/app/routes.ts +++ b/app/routes.ts @@ -1,3 +1,15 @@ -import { type RouteConfig, index } from "@react-router/dev/routes"; +import { type RouteConfig, index, route } from "@react-router/dev/routes"; -export default [index("routes/home.tsx")] satisfies RouteConfig; +export default [ + index("routes/home.tsx"), + route("/about", "./routes/about.tsx"), + route("/kontak", "./routes/kontak.tsx"), + route("/register", "./routes/register.tsx"), + route("/portofolio","./routes/portofolio.tsx"), + route("/login","./routes/login.tsx"), + route("/dashboard","./routes/dashboard.tsx"), + + + + +] satisfies RouteConfig; diff --git a/app/routes/about.tsx b/app/routes/about.tsx new file mode 100644 index 0000000..1a16bd1 --- /dev/null +++ b/app/routes/about.tsx @@ -0,0 +1,69 @@ +export default function About() { + return ( + <> + + +
+

ABOUT

+

tentang sayaa

+ +
+ saya zahro,saya bisa di panggil zar
+ saya memiliki hobi menggambar,dan menyanyi
+ saya berusia 17 tahun
+ saya sekolah di SMK GUNA CIPTA
+ saya mengambil jurusan (RPL) atau Rekayasa Perangkat Lunak +
+
+ + ); +} \ No newline at end of file diff --git a/app/routes/dashboard.tsx b/app/routes/dashboard.tsx new file mode 100644 index 0000000..c04b722 --- /dev/null +++ b/app/routes/dashboard.tsx @@ -0,0 +1,55 @@ +import { useNavigate } from "react-router"; +import { useState } from "react"; + +export default function Dashboard() { + const navigate = useNavigate(); + const [menu, setMenu] = useState("dashboard"); + + const menus = ["dashboard", "profile", "settings", "about"]; + + return ( +
+ + {/* SIDEBAR */} +
+
+

MyApp

+ + {menus.map((item) => ( +
setMenu(item)} + className={`p-2 mb-2 rounded cursor-pointer capitalize ${ + menu === item ? "bg-purple-600" : "hover:bg-gray-700" + }`} + > + {item} +
+ ))} +
+ + +
+ + {/* CONTENT */} +
+
+ +

+ {menu} +

+ +

+ Selamat datang di halaman {menu} 👋 +

+ +
+
+
+ ); +} \ No newline at end of file diff --git a/app/routes/kontak.tsx b/app/routes/kontak.tsx new file mode 100644 index 0000000..a72285e --- /dev/null +++ b/app/routes/kontak.tsx @@ -0,0 +1,54 @@ +export default function Kontak() { + return( + <> + + +
+

kontak saya

+

no saya = 0895707255300

+

email saya = zahrotusyita@gmail.com

+

alamat = Babakannanjung

+
+ + ) +} \ No newline at end of file diff --git a/app/routes/login.tsx b/app/routes/login.tsx new file mode 100644 index 0000000..94ffc8b --- /dev/null +++ b/app/routes/login.tsx @@ -0,0 +1,88 @@ +import { useState } from "react"; +import { useNavigate } from "react-router"; + +export default function Login() { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const navigate = useNavigate(); + + const handleLogin = async (e: any) => { + e.preventDefault(); + + try { + const res = await fetch("http://localhost:3000/login", { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify({ + username: email, + password: password + }) + }); + + const data = await res.json(); + + if (data.success) { + localStorage.setItem("token", data.token); + navigate("/dashboard"); + } else { + alert(data.message); + } + } catch (error) { + alert("Server error"); + } + }; + + return ( +
+ +
+ +
+ +

+ LOGIN +

+ +

+ baru di situs ini?{" "} + + DAFTAR sekarang + +

+ + setEmail(e.target.value)} + className="w-full px-4 py-2 rounded-lg bg-gray-700 text-white placeholder-gray-400 focus:outline-none" + /> + + setPassword(e.target.value)} + className="w-full px-4 py-2 rounded-lg bg-gray-700 text-white placeholder-gray-400 focus:outline-none" + /> + +
+ + +
+ + + +
+
+ +
+ ); +} \ No newline at end of file diff --git a/app/routes/portofolio.tsx b/app/routes/portofolio.tsx new file mode 100644 index 0000000..7d2fe77 --- /dev/null +++ b/app/routes/portofolio.tsx @@ -0,0 +1,48 @@ +export default function portofolio() { + return( +
+ +
+ +

+ portofolio +

+ +

+ saya adalah pribadi yang ingin belajar dan berkembang +

+ +

+ saya senang mencoba hal-hal baru +

+ +

+ memiliki tanggung jawab yang tinggi +

+ +

+ bagi saya,setiap pengalaman adalah kesempatan untuk terus menjadi versi yang lebih baik +

+ +

+ ini hasil saya +

+ +

+ kontak yang bisa kalian hubungi +

+ +
+ + gmail:zahrotusyita@gmail.com + + + + no: 0895707255300 + +
+ +
+
+ ) +} \ No newline at end of file diff --git a/app/routes/register.tsx b/app/routes/register.tsx new file mode 100644 index 0000000..760ea16 --- /dev/null +++ b/app/routes/register.tsx @@ -0,0 +1,63 @@ +export default function Register() { + return ( +
+ +
+ +

+ REGISTER +

+ +

+ ISI DATA ANDA +

+ +
+ + + + + + + + {/* ✅ CHECKBOX SETUJU */} +
+ +
+ + {/* ✅ CHECKBOX SETUJU */} +
+ +
+ + + +
+ +
+
+ ); +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 76775b9..6473e36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "isbot": "^5.1.36", "react": "^19.2.4", "react-dom": "^19.2.4", - "react-router": "7.14.0" + "react-router": "^7.14.0" }, "devDependencies": { "@react-router/dev": "7.14.0", diff --git a/package.json b/package.json index 2209228..6bcc673 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "isbot": "^5.1.36", "react": "^19.2.4", "react-dom": "^19.2.4", - "react-router": "7.14.0" + "react-router": "^7.14.0" }, "devDependencies": { "@react-router/dev": "7.14.0", @@ -26,4 +26,4 @@ "typescript": "^5.9.3", "vite": "^8.0.3" } -} \ No newline at end of file +}