mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 21:35:19 +00:00
feat: filters, settings, backups fix: ts compile errors feat: new dashboard, webp previews and settings feat: use webp for pdfs feat: use webp fix: analyze resets old data fix: switch to corsproxy fix: switch to free cors fix: max upload limit fix: currency conversion feat: transaction export fix: currency conversion feat: refactor settings actions feat: new loader feat: README + LICENSE doc: update readme doc: update readme doc: update readme doc: update screenshots ci: bump prisma
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import { addProjectAction, deleteProjectAction, editProjectAction } from "@/app/settings/actions"
|
|
import { CrudTable } from "@/components/settings/crud"
|
|
import { getProjects } from "@/data/projects"
|
|
|
|
export default async function ProjectsSettingsPage() {
|
|
const projects = await getProjects()
|
|
const projectsWithActions = projects.map((project) => ({
|
|
...project,
|
|
isEditable: true,
|
|
isDeletable: true,
|
|
}))
|
|
|
|
return (
|
|
<div className="container">
|
|
<h1 className="text-2xl font-bold mb-6">Projects</h1>
|
|
<CrudTable
|
|
items={projectsWithActions}
|
|
columns={[
|
|
{ key: "name", label: "Name", editable: true },
|
|
{ key: "llm_prompt", label: "LLM Prompt", editable: true },
|
|
{ key: "color", label: "Color", editable: true },
|
|
]}
|
|
onDelete={async (code) => {
|
|
"use server"
|
|
await deleteProjectAction(code)
|
|
}}
|
|
onAdd={async (data) => {
|
|
"use server"
|
|
await addProjectAction(data as { code: string; name: string; llm_prompt: string; color: string })
|
|
}}
|
|
onEdit={async (code, data) => {
|
|
"use server"
|
|
await editProjectAction(code, data as { name: string; llm_prompt: string; color: string })
|
|
}}
|
|
/>
|
|
</div>
|
|
)
|
|
}
|