From ce8f95a1636cef8d024c625bedfaeb0f9b226e0e Mon Sep 17 00:00:00 2001 From: Simone Cavalli Date: Sat, 30 May 2026 16:22:19 +0200 Subject: [PATCH] feat(05-02): /admin/offers RSC page + ServiceCheckboxList + NavBar update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create src/app/admin/offers/page.tsx — RSC with macro/micro/service CRUD sections - Create src/components/admin/offers/ServiceCheckboxList.tsx — client checkbox UI for service-to-micro assignment - Update src/components/admin/NavBar.tsx — add Forecast and Offerte links (order: Statistiche | Forecast | Catalogo | Offerte | Impostazioni) --- src/app/admin/offers/page.tsx | 238 ++++++++++++++++++ src/components/admin/NavBar.tsx | 6 + .../admin/offers/ServiceCheckboxList.tsx | 51 ++++ 3 files changed, 295 insertions(+) create mode 100644 src/app/admin/offers/page.tsx create mode 100644 src/components/admin/offers/ServiceCheckboxList.tsx diff --git a/src/app/admin/offers/page.tsx b/src/app/admin/offers/page.tsx new file mode 100644 index 0000000..b7a0919 --- /dev/null +++ b/src/app/admin/offers/page.tsx @@ -0,0 +1,238 @@ +import { getCatalogWithMicros, getAllOfferServices } from "@/lib/offer-queries"; +import { + createMacro, + createMicro, + createOfferService, + deleteMacro, + deleteMicro, + toggleOfferServiceActive, +} from "./actions"; +import { ServiceCheckboxList } from "@/components/admin/offers/ServiceCheckboxList"; + +export const revalidate = 0; + +export default async function OffersPage() { + const [catalog, allServices] = await Promise.all([ + getCatalogWithMicros(), + getAllOfferServices(), + ]); + + return ( +
+

Catalogo Offerte

+ + {/* ── Sezione macro-offerte ── */} +
+

Macro-Offerte

+ + {/* Create macro form */} +
+

Nuova Macro-Offerta

+ + +