mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-07-07 22:18:39 +00:00
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { promises as fs } from "fs"
|
|
import path from "path"
|
|
import { Metadata } from "next"
|
|
import Image from "next/image"
|
|
import { z } from "zod"
|
|
|
|
import { columns } from "./components/columns"
|
|
import { DataTable } from "./components/data-table"
|
|
import { UserNav } from "./components/user-nav"
|
|
import { taskSchema } from "./data/schema"
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Tasks",
|
|
description: "A task and issue tracker build using Tanstack Table.",
|
|
}
|
|
|
|
// Simulate a database read for tasks.
|
|
async function getTasks() {
|
|
const data = await fs.readFile(
|
|
path.join(process.cwd(), "app/examples/tasks/data/tasks.json")
|
|
)
|
|
|
|
const tasks = JSON.parse(data.toString())
|
|
|
|
return z.array(taskSchema).parse(tasks)
|
|
}
|
|
|
|
export default async function TaskPage() {
|
|
const tasks = await getTasks()
|
|
|
|
return (
|
|
<>
|
|
<div className="md:hidden">
|
|
<Image
|
|
src="/examples/tasks-light.png"
|
|
width={1280}
|
|
height={998}
|
|
alt="Playground"
|
|
className="block dark:hidden"
|
|
/>
|
|
<Image
|
|
src="/examples/tasks-dark.png"
|
|
width={1280}
|
|
height={998}
|
|
alt="Playground"
|
|
className="hidden dark:block"
|
|
/>
|
|
</div>
|
|
<div className="hidden h-full flex-1 flex-col space-y-8 p-8 md:flex">
|
|
<div className="flex items-center justify-between space-y-2">
|
|
<div>
|
|
<h2 className="text-2xl font-bold tracking-tight">Welcome back!</h2>
|
|
<p className="text-muted-foreground">
|
|
Here's a list of your tasks for this month!
|
|
</p>
|
|
</div>
|
|
<div className="flex items-center space-x-2">
|
|
<UserNav />
|
|
</div>
|
|
</div>
|
|
<DataTable data={tasks} columns={columns} />
|
|
</div>
|
|
</>
|
|
)
|
|
}
|