diff --git a/dashboard/15-final/app/dashboard/invoices/create/page.tsx b/dashboard/15-final/app/dashboard/invoices/create/page.tsx index 0a5fb42..754e94a 100644 --- a/dashboard/15-final/app/dashboard/invoices/create/page.tsx +++ b/dashboard/15-final/app/dashboard/invoices/create/page.tsx @@ -1,3 +1,5 @@ +import AddInvoiceForm from "@/app/ui/invoice-form"; + export default function Page() { - return
Create new invoice page
+ return ; } diff --git a/dashboard/15-final/app/ui/card.tsx b/dashboard/15-final/app/ui/card.tsx index c3311b5..66b274f 100644 --- a/dashboard/15-final/app/ui/card.tsx +++ b/dashboard/15-final/app/ui/card.tsx @@ -28,13 +28,13 @@ export default function Card({

{title}

{Icon ? ( - + ) : null}

{value}

-

+00% since last month

+

+00% since last month

); } diff --git a/dashboard/15-final/app/ui/hero.tsx b/dashboard/15-final/app/ui/hero.tsx index 06f8a30..19d8550 100644 --- a/dashboard/15-final/app/ui/hero.tsx +++ b/dashboard/15-final/app/ui/hero.tsx @@ -5,15 +5,15 @@ export default function Hero() { <>
-

+

Next.js Dashboard

-

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut vulputate dapibus consectetur. Duis quis eros euismod.

- diff --git a/dashboard/15-final/app/ui/invoice-form.tsx b/dashboard/15-final/app/ui/invoice-form.tsx new file mode 100644 index 0000000..65519fd --- /dev/null +++ b/dashboard/15-final/app/ui/invoice-form.tsx @@ -0,0 +1,78 @@ +"use client"; +import { Invoice } from "@/app/lib/definitions"; +import { customers } from "@/app/lib/dummy-data"; +import { useState, FormEvent } from "react"; + +export default function AddInvoiceForm() { + const [selectedCustomer, setSelectedCustomer] = useState(0); + const [amount, setAmount] = useState(""); + + const handleSubmit = (e: FormEvent) => { + e.preventDefault(); + + if (selectedCustomer && amount) { + const newInvoice: Invoice = { + customerId: selectedCustomer, + amount: parseInt(amount) * 100, // Convert to cents + + // These would be generated on the server + id: 1, // Record ID will be automatically incremented + status: "pending", // Default status for a new invoice + date: new Date().toISOString().split("T")[0], + }; + + // TODO: Add this invoice to the database + console.log("New Invoice:", newInvoice); + } + }; + + return ( +
+

New Invoice

+
+
+ + +
+ +
+ +
+
+ $ +
+ setAmount(e.target.value)} + className="block w-full rounded-md border-0 py-1.5 pl-7 text-sm leading-6 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400" + /> +
+
+ + +
+
+ ); +} diff --git a/dashboard/15-final/app/ui/login-form.tsx b/dashboard/15-final/app/ui/login-form.tsx index c5a51d5..9ecb502 100644 --- a/dashboard/15-final/app/ui/login-form.tsx +++ b/dashboard/15-final/app/ui/login-form.tsx @@ -21,35 +21,35 @@ export default function LoginForm() { Next.js Logo -

+

Log in to your dashboard

setEmail(e.target.value)} />