Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot]
2026-04-17 03:24:37 +00:00
co-authored by renee-png
parent c4a0abc898
commit 6860e1a2cd
3 changed files with 79 additions and 0 deletions
+2
View File
@@ -2,6 +2,8 @@ import { Link, useLocation, useNavigate } from "@tanstack/react-router";
import { useAuth } from "@/lib/auth";
import { Button } from "@/components/ui/button";
import { Briefcase, Users, FileText, Receipt, ShieldCheck, LogOut, Scale, LayoutDashboard, Calendar as CalendarIcon } from "lucide-react";
// FileText is used for Forms & Letters
void FileText;
import { cn } from "@/lib/utils";
import type { ReactNode } from "react";
+30
View File
@@ -18,6 +18,7 @@ import { Route as StatusIndexRouteImport } from './routes/status.index'
import { Route as SettingsIndexRouteImport } from './routes/settings.index'
import { Route as MessagesIndexRouteImport } from './routes/messages.index'
import { Route as InvoicesIndexRouteImport } from './routes/invoices.index'
import { Route as FormsIndexRouteImport } from './routes/forms.index'
import { Route as FilesIndexRouteImport } from './routes/files.index'
import { Route as DocumentsIndexRouteImport } from './routes/documents.index'
import { Route as ContactsIndexRouteImport } from './routes/contacts.index'
@@ -86,6 +87,11 @@ const InvoicesIndexRoute = InvoicesIndexRouteImport.update({
path: '/invoices/',
getParentRoute: () => rootRouteImport,
} as any)
const FormsIndexRoute = FormsIndexRouteImport.update({
id: '/forms/',
path: '/forms/',
getParentRoute: () => rootRouteImport,
} as any)
const FilesIndexRoute = FilesIndexRouteImport.update({
id: '/files/',
path: '/files/',
@@ -221,6 +227,7 @@ export interface FileRoutesByFullPath {
'/contacts/': typeof ContactsIndexRoute
'/documents/': typeof DocumentsIndexRoute
'/files/': typeof FilesIndexRoute
'/forms/': typeof FormsIndexRoute
'/invoices/': typeof InvoicesIndexRoute
'/messages/': typeof MessagesIndexRoute
'/settings/': typeof SettingsIndexRoute
@@ -253,6 +260,7 @@ export interface FileRoutesByTo {
'/contacts': typeof ContactsIndexRoute
'/documents': typeof DocumentsIndexRoute
'/files': typeof FilesIndexRoute
'/forms': typeof FormsIndexRoute
'/invoices': typeof InvoicesIndexRoute
'/messages': typeof MessagesIndexRoute
'/settings': typeof SettingsIndexRoute
@@ -287,6 +295,7 @@ export interface FileRoutesById {
'/contacts/': typeof ContactsIndexRoute
'/documents/': typeof DocumentsIndexRoute
'/files/': typeof FilesIndexRoute
'/forms/': typeof FormsIndexRoute
'/invoices/': typeof InvoicesIndexRoute
'/messages/': typeof MessagesIndexRoute
'/settings/': typeof SettingsIndexRoute
@@ -322,6 +331,7 @@ export interface FileRouteTypes {
| '/contacts/'
| '/documents/'
| '/files/'
| '/forms/'
| '/invoices/'
| '/messages/'
| '/settings/'
@@ -354,6 +364,7 @@ export interface FileRouteTypes {
| '/contacts'
| '/documents'
| '/files'
| '/forms'
| '/invoices'
| '/messages'
| '/settings'
@@ -387,6 +398,7 @@ export interface FileRouteTypes {
| '/contacts/'
| '/documents/'
| '/files/'
| '/forms/'
| '/invoices/'
| '/messages/'
| '/settings/'
@@ -417,6 +429,7 @@ export interface RootRouteChildren {
ContactsIndexRoute: typeof ContactsIndexRoute
DocumentsIndexRoute: typeof DocumentsIndexRoute
FilesIndexRoute: typeof FilesIndexRoute
FormsIndexRoute: typeof FormsIndexRoute
InvoicesIndexRoute: typeof InvoicesIndexRoute
MessagesIndexRoute: typeof MessagesIndexRoute
StatusIndexRoute: typeof StatusIndexRoute
@@ -492,6 +505,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof InvoicesIndexRouteImport
parentRoute: typeof rootRouteImport
}
'/forms/': {
id: '/forms/'
path: '/forms'
fullPath: '/forms/'
preLoaderRoute: typeof FormsIndexRouteImport
parentRoute: typeof rootRouteImport
}
'/files/': {
id: '/files/'
path: '/files'
@@ -688,6 +708,7 @@ const rootRouteChildren: RootRouteChildren = {
ContactsIndexRoute: ContactsIndexRoute,
DocumentsIndexRoute: DocumentsIndexRoute,
FilesIndexRoute: FilesIndexRoute,
FormsIndexRoute: FormsIndexRoute,
InvoicesIndexRoute: InvoicesIndexRoute,
MessagesIndexRoute: MessagesIndexRoute,
StatusIndexRoute: StatusIndexRoute,
@@ -700,3 +721,12 @@ const rootRouteChildren: RootRouteChildren = {
export const routeTree = rootRouteImport
._addFileChildren(rootRouteChildren)
._addFileTypes<FileRouteTypes>()
import type { getRouter } from './router.tsx'
import type { createStart } from '@tanstack/react-start'
declare module '@tanstack/react-start' {
interface Register {
ssr: true
router: Awaited<ReturnType<typeof getRouter>>
}
}
+47
View File
@@ -0,0 +1,47 @@
import { createFileRoute } from "@tanstack/react-router";
import { useState } from "react";
import { ProtectedLayout } from "@/components/protected-layout";
import { PageContainer, PageHeader } from "@/components/app-shell";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";
import { CustomFormBuilder } from "@/components/forms/custom-form-builder";
import { LetterGenerator } from "@/components/forms/letter-generator";
import { NolaForm } from "@/components/forms/nola-form";
import { ItlForm } from "@/components/forms/itl-form";
import { AffidavitForm } from "@/components/forms/affidavit-form";
import { EstoppelForm } from "@/components/forms/estoppel-form";
export const Route = createFileRoute("/forms/")({
component: FormsPage,
});
function FormsPage() {
const [tab, setTab] = useState("custom");
return (
<ProtectedLayout>
<PageContainer>
<PageHeader
title="Forms & Letters"
description="Generate notices, letters, and statutory forms wired to your clients and homeowners."
/>
<Tabs value={tab} onValueChange={setTab}>
<TabsList className="flex-wrap h-auto">
<TabsTrigger value="custom">Custom Forms</TabsTrigger>
<TabsTrigger value="letters">Letters</TabsTrigger>
<TabsTrigger value="nola">NOLA</TabsTrigger>
<TabsTrigger value="itl">ITL</TabsTrigger>
<TabsTrigger value="affidavit">Affidavit</TabsTrigger>
<TabsTrigger value="estoppel">Estoppel</TabsTrigger>
</TabsList>
<div className="mt-6">
<TabsContent value="custom"><CustomFormBuilder /></TabsContent>
<TabsContent value="letters"><LetterGenerator /></TabsContent>
<TabsContent value="nola"><NolaForm /></TabsContent>
<TabsContent value="itl"><ItlForm /></TabsContent>
<TabsContent value="affidavit"><AffidavitForm /></TabsContent>
<TabsContent value="estoppel"><EstoppelForm /></TabsContent>
</div>
</Tabs>
</PageContainer>
</ProtectedLayout>
);
}