Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/svg+xml" href="/cube.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Box Transit - Absensi Siswa</title>
<title>Box Transit - System Analyst</title>
<link
href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap"
rel="stylesheet" rel="preload"
Expand Down
6 changes: 6 additions & 0 deletions public/cube.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useState } from "react";
import Sidebar from "./components/Sidebar";
import Navbar from "./components/Navbar";
import BillingPage from "./pages/BillingPage";

function App() {
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
Expand All @@ -11,7 +12,7 @@ function App() {
const renderContent = () => {
switch (activeMenu) {
case "Dashboard":
return <h2 className="text-gray-700 text-xl">Welcome to Dashboard</h2>;
return <BillingPage />;
case "Master Data":
return <h2 className="text-gray-700 text-xl">Master Data Content</h2>;
case "Settings":
Expand Down
26 changes: 26 additions & 0 deletions src/components/BillingSection.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from "react";


const BillingSection = () => {
return (
<div className="bg-white border border-gray-200 rounded-lg shadow-sm px-8 py-5 flex flex-col md:flex-row justify-between items-start md:items-center w-full">
<div>
<h1 className="text-xl md:text-2xl font-bold text-gray-800">Billing</h1>
<p className="text-sm text-gray-500 mt-1">
Manage your balance and view transaction history
</p>
</div>

<div className="flex items-center gap-3 mt-4 md:mt-0">
<button className="px-4 py-2 text-sm font-medium border border-gray-300 rounded-lg hover:bg-gray-100 transition">
Redeem
</button>
<button className="px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-700 transition">
+ Add Credit
</button>
</div>
</div>
);
};

export default BillingSection;
27 changes: 0 additions & 27 deletions src/components/Counter.jsx

This file was deleted.

14 changes: 0 additions & 14 deletions src/components/Footer.jsx

This file was deleted.

13 changes: 0 additions & 13 deletions src/components/Header.jsx

This file was deleted.

79 changes: 79 additions & 0 deletions src/pages/BillingPage.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import BillingSection from "../components/BillingSection";
import { GrCreditCard } from "react-icons/gr";
import { FaHistory, FaWallet, FaMoneyBillWave } from "react-icons/fa";

const BillingPage = () => {
return (
<div className="w-full px-8 py-6 bg-gray-50 min-h-screen">
{/* Billing Header */}
<div className="bg-white border border-gray-100 rounded-lg shadow-sm px-8 py-5 flex flex-col md:flex-row justify-between items-start md:items-center w-full">
{/* Kiri: Judul dan deskripsi */}
<div>
<h1 className="text-xl md:text-2xl font-bold text-gray-800">Billing</h1>
<p className="text-sm text-gray-500 mt-1">
Manage your balance and view transaction history
</p>
</div>

{/* Kanan: Tombol */}
<div className="flex items-center gap-3 mt-4 md:mt-0">
<button className="px-4 py-2 text-sm font-medium bg-slate-100 rounded-lg hover:bg-slate-200 transition">
Redeem
</button>
<button className="px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-700 transition">
+ Add Credit
</button>
</div>
</div>

{/* Current Credits Section */}
<div className="mt-5 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-5 w-full">
{/* Card 1 */}
<div className="bg-white border border-gray-100 rounded-lg shadow-sm p-6 flex items-center gap-4">
<div className="bg-blue-100 p-3 rounded-lg">
<GrCreditCard color="blue" size={25} />
</div>
<div>
<p className="text-sm text-gray-500">Current Credits</p>
<h2 className="text-2xl font-semibold text-gray-800">Rp 0</h2>
</div>
</div>

{/* Card 2 */}
<div className="bg-white border border-gray-100 rounded-lg shadow-sm p-6 flex items-center gap-4">
<div className="bg-green-100 p-3 rounded-lg">
<FaWallet color="green" size={25} />
</div>
<div>
<p className="text-sm text-gray-500">Total Balance</p>
<h2 className="text-2xl font-semibold text-gray-800">Rp 500.000</h2>
</div>
</div>

{/* Card 3 */}
<div className="bg-white border border-gray-100 rounded-lg shadow-sm p-6 flex items-center gap-4">
<div className="bg-yellow-100 p-3 rounded-lg">
<FaMoneyBillWave color="orange" size={25} />
</div>
<div>
<p className="text-sm text-gray-500">Pending Payments</p>
<h2 className="text-2xl font-semibold text-gray-800">Rp 120.000</h2>
</div>
</div>

{/* Card 4 */}
<div className="bg-white border border-gray-100 rounded-lg shadow-sm p-6 flex items-center gap-4">
<div className="bg-purple-100 p-3 rounded-lg">
<FaHistory color="purple" size={25} />
</div>
<div>
<p className="text-sm text-gray-500">Transactions</p>
<h2 className="text-2xl font-semibold text-gray-800">12</h2>
</div>
</div>
</div>
</div>
);
};

export default BillingPage;