feat(05-03): add OffersTab component + Offerte tab in project workspace
- Create OffersTab.tsx client component with assign form and offer list - Inline accepted_total editing via onBlur handler - Add Offerte tab trigger and content to project workspace page - Destructure projectOffers and availableMicros from getProjectFullDetail result
This commit is contained in:
@@ -8,6 +8,7 @@ import { DocumentsTab } from "@/components/admin/tabs/DocumentsTab";
|
||||
import { CommentsTab } from "@/components/admin/tabs/CommentsTab";
|
||||
import { QuoteTab } from "@/components/admin/tabs/QuoteTab";
|
||||
import { TimerTab } from "@/components/admin/tabs/TimerTab";
|
||||
import { OffersTab } from "@/components/admin/tabs/OffersTab";
|
||||
import { PhasesViewToggle } from "@/components/admin/kanban/PhasesViewToggle";
|
||||
import Link from "next/link";
|
||||
|
||||
@@ -38,6 +39,8 @@ export default async function ProjectDetailPage({
|
||||
activeTimerEntryId,
|
||||
activeTimerStartedAt,
|
||||
totalTrackedSeconds,
|
||||
projectOffers,
|
||||
availableMicros,
|
||||
} = detail;
|
||||
|
||||
return (
|
||||
@@ -71,6 +74,7 @@ export default async function ProjectDetailPage({
|
||||
<TabsTrigger value="comments">Commenti</TabsTrigger>
|
||||
<TabsTrigger value="quote">Preventivo</TabsTrigger>
|
||||
<TabsTrigger value="timer">Timer</TabsTrigger>
|
||||
<TabsTrigger value="offers">Offerte</TabsTrigger>
|
||||
</TabsList>
|
||||
|
||||
<TabsContent value="phases">
|
||||
@@ -133,6 +137,14 @@ export default async function ProjectDetailPage({
|
||||
targetHourlyRate={targetHourlyRate}
|
||||
/>
|
||||
</TabsContent>
|
||||
|
||||
<TabsContent value="offers">
|
||||
<OffersTab
|
||||
projectId={id}
|
||||
projectOffers={projectOffers}
|
||||
availableMicros={availableMicros}
|
||||
/>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user