@flowselections/layout-maker 1.63.5 → 1.65.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +10 -4
  2. package/dist-lib/components/BedrijfsgegevensKaart.d.ts +3 -0
  3. package/dist-lib/components/BedrijfsgegevensKaart.d.ts.map +1 -0
  4. package/dist-lib/components/BedrijfsgegevensKaart.js +58 -0
  5. package/dist-lib/components/KlaarOmTePrintenBlok.d.ts +3 -0
  6. package/dist-lib/components/KlaarOmTePrintenBlok.d.ts.map +1 -0
  7. package/dist-lib/components/KlaarOmTePrintenBlok.js +69 -0
  8. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  9. package/dist-lib/components/LayoutsPage.js +23 -3
  10. package/dist-lib/components/PrintenPage.d.ts.map +1 -1
  11. package/dist-lib/components/PrintenPage.js +8 -2
  12. package/dist-lib/components/StandaardLayoutActies.d.ts +19 -0
  13. package/dist-lib/components/StandaardLayoutActies.d.ts.map +1 -0
  14. package/dist-lib/components/StandaardLayoutActies.js +105 -0
  15. package/dist-lib/index.d.ts +7 -0
  16. package/dist-lib/index.d.ts.map +1 -1
  17. package/dist-lib/index.js +9 -2
  18. package/dist-lib/integrations/supabase/types.d.ts +1078 -0
  19. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  20. package/dist-lib/lib/bedrijfsgegevens.d.ts +41 -0
  21. package/dist-lib/lib/bedrijfsgegevens.d.ts.map +1 -0
  22. package/dist-lib/lib/bedrijfsgegevens.functions.d.ts +41 -0
  23. package/dist-lib/lib/bedrijfsgegevens.functions.d.ts.map +1 -0
  24. package/dist-lib/lib/bedrijfsgegevens.functions.js +75 -0
  25. package/dist-lib/lib/bedrijfsgegevens.js +126 -0
  26. package/dist-lib/lib/documentTypes.d.ts +10 -0
  27. package/dist-lib/lib/documentTypes.d.ts.map +1 -1
  28. package/dist-lib/lib/documentTypes.js +8 -0
  29. package/dist-lib/lib/klaarOmTePrinten.d.ts +39 -0
  30. package/dist-lib/lib/klaarOmTePrinten.d.ts.map +1 -0
  31. package/dist-lib/lib/klaarOmTePrinten.js +65 -0
  32. package/dist-lib/lib/layoutStandaarden.d.ts +19 -0
  33. package/dist-lib/lib/layoutStandaarden.d.ts.map +1 -0
  34. package/dist-lib/lib/layoutStandaarden.js +23 -0
  35. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  36. package/dist-lib/lib/printQueue.server.js +33 -2
  37. package/dist-lib/lib/printService.functions.d.ts +1 -1
  38. package/dist-lib/lib/printnodeWebhookBeheer.server.d.ts +1 -1
  39. package/dist-lib/lib/shellPoort.d.ts +2 -2
  40. package/dist-lib/lib/shellPoort.d.ts.map +1 -1
  41. package/dist-lib/lib/shellPoort.js +3 -2
  42. package/dist-lib/lib/standaardLayouts.server.d.ts +7 -1
  43. package/dist-lib/lib/standaardLayouts.server.d.ts.map +1 -1
  44. package/dist-lib/lib/standaardLayouts.server.js +52 -54
  45. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  46. package/dist-lib/lib/useDocumentData.js +9 -5
  47. package/dist-lib/lib/versie.generated.d.ts +2 -0
  48. package/dist-lib/lib/versie.generated.d.ts.map +1 -0
  49. package/dist-lib/lib/versie.generated.js +2 -0
  50. package/package.json +9 -4
  51. package/sql/print-schema.sql +3205 -0
package/README.md CHANGED
@@ -24,10 +24,16 @@ npm run dev
24
24
 
25
25
  ## Installeren in een andere shell
26
26
 
27
- 1. Draai `sql/print-schema.sql` één keer in de Supabase-database van die shell
28
- (SQL editor). Het script is idempotent en zet tabellen, rechten, RLS,
29
- functies, de geplande taken én de opslagmap `layout-logos` voor de Logo
30
- Bibliotheek klaar. Zorg dat de extensies `pg_cron` en `pg_net` aan staan.
27
+ 1. Het schema zit in het pakket: `node_modules/@flowselections/layout-maker/sql/print-schema.sql`.
28
+ Draai het in de database van die shell (via de schema-update van de shell of de
29
+ SQL editor), bij installeren én na elke update. Het script is idempotent
30
+ (mag vaker) en zet keuzelijsten, tabellen, kolommen, sleutels, functies,
31
+ indexen, triggers, rechten, RLS en policies, realtime, de geplande taken
32
+ (zonder adres of sleutel) en de opslagmap `layout-logos` klaar. Zorg dat de
33
+ extensies `pg_cron`, `pg_net` en vault aan staan. Het schema wordt
34
+ gegenereerd met `scripts/bouw-schema.py`.
35
+ Floriday-systeemlayouts maakt de module daarna zelf aan bij de eerste
36
+ wachtrijronde of het openen van Layouts.
31
37
 
32
38
  2. Zet in de omgeving van de shell:
33
39
  - `SUPABASE_URL` en `SERVICE_ROLE_KEY` — nodig voor achtergrondprinten
@@ -0,0 +1,3 @@
1
+ /** Instellingenkaart: bedrijfsgegevens voor de pakbon als de opdracht ze niet meestuurt. */
2
+ export declare function BedrijfsgegevensKaart(): import("react").JSX.Element;
3
+ //# sourceMappingURL=BedrijfsgegevensKaart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BedrijfsgegevensKaart.d.ts","sourceRoot":"","sources":["../../src/components/BedrijfsgegevensKaart.tsx"],"names":[],"mappings":"AAmBA,4FAA4F;AAC5F,wBAAgB,qBAAqB,gCA8EpC"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, toast, } from "@flowselections/core";
4
+ import { LEGE_BEDRIJFSGEGEVENS } from "../lib/bedrijfsgegevens.js";
5
+ import { useLogos } from "../lib/logoLibrary.js";
6
+ const VELDEN = [
7
+ { k: "naam", label: "Bedrijfsnaam" },
8
+ { k: "adres", label: "Adres" },
9
+ { k: "plaats", label: "Postcode en plaats" },
10
+ { k: "telefoon", label: "Telefoon" },
11
+ { k: "email", label: "E-mail" },
12
+ { k: "kvk", label: "KvK-nummer" },
13
+ { k: "btw", label: "Btw-nummer" },
14
+ { k: "gln", label: "GLN" },
15
+ ];
16
+ /** Instellingenkaart: bedrijfsgegevens voor de pakbon als de opdracht ze niet meestuurt. */
17
+ export function BedrijfsgegevensKaart() {
18
+ const [g, setG] = useState(LEGE_BEDRIJFSGEGEVENS);
19
+ const [bezig, setBezig] = useState(false);
20
+ const [melding, setMelding] = useState(null);
21
+ const logosHook = useLogos();
22
+ const logos = Array.isArray(logosHook?.logos) ? logosHook.logos : [];
23
+ useEffect(() => {
24
+ void (async () => {
25
+ const { haalBedrijfsgegevens } = await import("../lib/bedrijfsgegevens.functions.js");
26
+ const r = await haalBedrijfsgegevens();
27
+ if (r?.ok) {
28
+ setG(r.gegevens);
29
+ setMelding(r.melding ?? null);
30
+ }
31
+ })();
32
+ }, []);
33
+ async function overnemen() {
34
+ const { factuurgegevensVoorstel } = await import("../lib/bedrijfsgegevens.functions.js");
35
+ const r = await factuurgegevensVoorstel();
36
+ if (!r?.ok)
37
+ return toast.error(r?.fout ?? "Overnemen mislukt");
38
+ setG((o) => ({ ...o, ...r.gegevens }));
39
+ toast.success("Overgenomen uit de factuurgegevens. Controleer en klik op Opslaan.");
40
+ }
41
+ async function opslaan() {
42
+ setBezig(true);
43
+ try {
44
+ const { bewaarBedrijfsgegevens } = await import("../lib/bedrijfsgegevens.functions.js");
45
+ const r = await bewaarBedrijfsgegevens({ data: g });
46
+ if (r?.ok) {
47
+ toast.success("Bedrijfsgegevens opgeslagen");
48
+ setMelding(null);
49
+ }
50
+ else
51
+ toast.error(r?.fout ?? "Opslaan mislukt");
52
+ }
53
+ finally {
54
+ setBezig(false);
55
+ }
56
+ }
57
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Bedrijfsgegevens op documenten" }), _jsx(CardDescription, { children: "Deze gegevens komen op de pakbon als de printopdracht zelf geen bedrijfsgegevens meestuurt." })] }), _jsxs(CardContent, { className: "space-y-4", children: [melding && (_jsx("p", { className: "rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm", children: melding })), _jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [VELDEN.map((v) => (_jsxs("div", { className: "space-y-1", children: [_jsx(Label, { htmlFor: `bg-${v.k}`, children: v.label }), _jsx(Input, { id: `bg-${v.k}`, value: g[v.k], onChange: (e) => setG({ ...g, [v.k]: e.target.value }) })] }, v.k))), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { children: "Logo" }), _jsxs(Select, { value: g.logoId ?? "geen", onValueChange: (v) => setG({ ...g, logoId: v === "geen" ? null : v }), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "geen", children: "Geen logo" }), logos.map((l) => _jsx(SelectItem, { value: l.id, children: l.naam ?? "Logo" }, l.id))] })] })] })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { onClick: opslaan, disabled: bezig, children: "Opslaan" }), _jsx(Button, { variant: "outline", onClick: overnemen, children: "Overnemen uit factuurgegevens" })] })] })] }));
58
+ }
@@ -0,0 +1,3 @@
1
+ /** Alleen lezen: per documentsoort klaar om te printen? */
2
+ export declare function KlaarOmTePrintenBlok(): import("react").JSX.Element;
3
+ //# sourceMappingURL=KlaarOmTePrintenBlok.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KlaarOmTePrintenBlok.d.ts","sourceRoot":"","sources":["../../src/components/KlaarOmTePrintenBlok.tsx"],"names":[],"mappings":"AAmBA,2DAA2D;AAC3D,wBAAgB,oBAAoB,gCA6GnC"}
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle } from "@flowselections/core";
4
+ import { CheckCircle2, RefreshCw, XCircle } from "lucide-react";
5
+ import { supabase } from "../lib/supabaseClient.js";
6
+ import { documentTypeLabel } from "../lib/documentTypes.js";
7
+ import { routeringVoor } from "../lib/printRoutering.js";
8
+ import { leesGeladenEtiket } from "../lib/etiketControle.js";
9
+ import { KLAAR_SOORTEN, isEtiketSoort, layoutStatus } from "../lib/klaarOmTePrinten.js";
10
+ const NAAR_LAYOUTS = "/layouts-printers/documenten";
11
+ const NAAR_PRINTEN = "/layouts-printers/printplekken";
12
+ /** Alleen lezen: per documentsoort klaar om te printen? */
13
+ export function KlaarOmTePrintenBlok() {
14
+ const [regels, setRegels] = useState([]);
15
+ const [laden, setLaden] = useState(true);
16
+ const load = useCallback(async () => {
17
+ setLaden(true);
18
+ try {
19
+ const db = supabase;
20
+ const [{ data: l }, { data: p }, { data: pr }] = await Promise.all([
21
+ db.from("document_layouts").select("id, naam, documenttype, bron, actief, is_standaard"),
22
+ db.from("print_plekken").select("id, naam"),
23
+ db.from("printers").select("id, geladen_etiket"),
24
+ ]);
25
+ const layouts = (Array.isArray(l) ? l : []);
26
+ const plekken = (Array.isArray(p) ? p : []);
27
+ const printers = new Map((Array.isArray(pr) ? pr : []).map((x) => [x.id, x]));
28
+ const uit = [];
29
+ for (const soort of KLAAR_SOORTEN) {
30
+ const ls = layoutStatus(soort, layouts);
31
+ const printerIds = new Set();
32
+ for (const plek of plekken) {
33
+ try {
34
+ const r = await routeringVoor({ documenttype: soort, printplekId: plek.id, layoutId: ls.ok ? ls.layoutId : null });
35
+ if (r.printer_id)
36
+ printerIds.add(r.printer_id);
37
+ }
38
+ catch {
39
+ /* telt als geen printer */
40
+ }
41
+ }
42
+ const metEtiket = [...printerIds].filter((id) => leesGeladenEtiket(printers.get(id)?.geladen_etiket));
43
+ uit.push({
44
+ soort,
45
+ layout: ls.ok
46
+ ? { ok: true, tekst: ls.naam || "Layout aanwezig" }
47
+ : { ok: false, tekst: ls.reden === "meerdere" ? "Meerdere actieve layouts, geen standaard" : "Geen layout" },
48
+ printer: printerIds.size
49
+ ? { ok: true, tekst: `${printerIds.size} printer${printerIds.size === 1 ? "" : "s"}` }
50
+ : { ok: false, tekst: plekken.length ? "Geen printer ingesteld" : "Nog geen printplek" },
51
+ etiket: isEtiketSoort(soort)
52
+ ? printerIds.size && metEtiket.length === printerIds.size
53
+ ? { ok: true, tekst: "Geladen etiket ingesteld" }
54
+ : { ok: false, tekst: printerIds.size ? "Geladen etiket ontbreekt" : "Eerst een printer" }
55
+ : null,
56
+ });
57
+ }
58
+ setRegels(uit);
59
+ }
60
+ finally {
61
+ setLaden(false);
62
+ }
63
+ }, []);
64
+ useEffect(() => {
65
+ void load();
66
+ }, [load]);
67
+ const Vak = ({ v, naar }) => !v ? (_jsx("span", { className: "text-muted-foreground", children: "\u2014" })) : (_jsxs("span", { className: "flex flex-wrap items-center gap-2", children: [v.ok ? _jsx(CheckCircle2, { className: "h-4 w-4 text-primary" }) : _jsx(XCircle, { className: "h-4 w-4 text-destructive" }), _jsx("span", { children: v.tekst }), !v.ok && (_jsx(Button, { asChild: true, size: "sm", variant: "outline", children: _jsx("a", { href: naar, children: "Instellen" }) }))] }));
68
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-2 pb-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: "Klaar om te printen" }), _jsx(CardDescription, { children: "Per documentsoort: is er een layout, een printer en (bij etiketten) het juiste etiket?" })] }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => void load(), disabled: laden, "aria-label": "Opnieuw controleren", children: _jsx(RefreshCw, { className: `h-4 w-4 ${laden ? "animate-spin" : ""}` }) })] }), _jsx(CardContent, { children: _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: "text-left text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-2 pr-4 font-medium", children: "Document" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Layout" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Printer" }), _jsx("th", { className: "py-2 font-medium", children: "Etiketmaat" })] }) }), _jsxs("tbody", { children: [regels.map((r) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "py-2 pr-4 font-medium", children: documentTypeLabel(r.soort) }), _jsx("td", { className: "py-2 pr-4", children: _jsx(Vak, { v: r.layout, naar: NAAR_LAYOUTS }) }), _jsx("td", { className: "py-2 pr-4", children: _jsx(Vak, { v: r.printer, naar: NAAR_PRINTEN }) }), _jsx("td", { className: "py-2", children: _jsx(Vak, { v: r.etiket, naar: NAAR_PRINTEN }) })] }, r.soort))), !regels.length && (_jsx("tr", { children: _jsx("td", { colSpan: 4, className: "py-3 text-muted-foreground", children: laden ? "Controleren…" : "Niets te tonen." }) }))] })] }) }) })] }));
69
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutsPage.d.ts","sourceRoot":"","sources":["../../src/components/LayoutsPage.tsx"],"names":[],"mappings":"AA4EA,wBAAgB,WAAW,CAAC,EAAE,OAAe,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,+BAomB1E"}
1
+ {"version":3,"file":"LayoutsPage.d.ts","sourceRoot":"","sources":["../../src/components/LayoutsPage.tsx"],"names":[],"mappings":"AAiFA,wBAAgB,WAAW,CAAC,EAAE,OAAe,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,+BA2oB1E"}
@@ -1,11 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useMemo, useState } from "react";
2
+ import { useEffect, useMemo, useState } from "react";
3
3
  import { useAutoRefresh } from "../lib/useAutoRefresh.js";
4
4
  import { Link, useNavigate } from "@tanstack/react-router";
5
5
  import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Separator, Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, Textarea, toast, } from "@flowselections/core";
6
- import { Copy, FileText, Pencil, Plus, Search, Settings2, Trash2 } from "lucide-react";
6
+ import { AlertTriangle, Copy, FileText, Pencil, Plus, Search, Settings2, Trash2 } from "lucide-react";
7
7
  import { LayoutVerwijzingenKaart } from "./LayoutVerwijzingenKaart.js";
8
+ import { StandaardLayoutActies } from "./StandaardLayoutActies.js";
9
+ import { supabase as moduleDb } from "../lib/supabaseClient.js";
8
10
  import { maakStandaardLayout } from "../lib/useDocumentData.js";
11
+ import { ontbrekendeStandaarden, soortenZonderKeuze } from "../lib/klaarOmTePrinten.js";
12
+ import { documentTypeLabel as soortLabel } from "../lib/documentTypes.js";
9
13
  import { dupliceerLayout, maakLayout, updateLayout, useLayouts, verwijderLayout, } from "../lib/useDocumentData.js";
10
14
  import { LayoutPrinterSelect } from "./LayoutPrinterSelect.js";
11
15
  import { DOCUMENT_TYPES, FLORIDAY_LAYOUT_TOELICHTING, PAPIERFORMATEN, documentTypeLabel, isFloridayLayout, } from "../lib/documentTypes.js";
@@ -30,6 +34,13 @@ export function LayoutsPage({ ingebed = false } = {}) {
30
34
  void reload(true);
31
35
  }, 30000);
32
36
  const navigate = useNavigate();
37
+ const [standaarden, setStandaarden] = useState([]);
38
+ useEffect(() => {
39
+ void (async () => {
40
+ const { data } = await moduleDb.from("layout_standaarden").select("sleutel, versie, documenttype, naam, config, page_settings");
41
+ setStandaarden(Array.isArray(data) ? data : []);
42
+ })();
43
+ }, []);
33
44
  const [zoek, setZoek] = useState("");
34
45
  const [typeFilter, setTypeFilter] = useState("alle");
35
46
  const [statusFilter, setStatusFilter] = useState("alle");
@@ -156,7 +167,16 @@ export function LayoutsPage({ ingebed = false } = {}) {
156
167
  }
157
168
  };
158
169
  const Wrapper = ingebed ? "div" : "main";
159
- return (_jsxs(Wrapper, { className: ingebed ? "space-y-6" : "p-6 space-y-6", children: [_jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [!ingebed && (_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Documentlayouts" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Ontwerp pakbonnen, facturen, etiketten en alle andere documenten." })] })), _jsx("div", { className: "ml-auto flex gap-2", children: _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), " Nieuwe layout"] }) })] }), _jsx(LayoutVerwijzingenKaart, { onGewijzigd: () => void reload() }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Overzicht" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} van ${layouts.length} layouts` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-5", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op naam of omschrijving", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: typeFilter, onValueChange: setTypeFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Documenttype" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle documenttypes" }), DOCUMENT_TYPES.map((d) => (_jsx(SelectItem, { value: d.value, children: d.label }, d.value)))] })] }), _jsxs(Select, { value: statusFilter, onValueChange: setStatusFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Status" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), _jsx(SelectItem, { value: "actief", children: "Actief" }), _jsx(SelectItem, { value: "inactief", children: "Inactief" })] })] }), _jsxs(Select, { value: bronFilter, onValueChange: setBronFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Herkomst" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle herkomsten" }), _jsx(SelectItem, { value: "eigen", children: "Eigen ontwerp" }), _jsx(SelectItem, { value: "floriday", children: "Uit Floriday" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Naam" }), _jsx(TableHead, { children: "Documenttype" }), _jsx(TableHead, { children: "Formaat" }), _jsxs(TableHead, { children: [_jsx("div", { children: "Printer nu" }), _jsxs("div", { className: "text-xs font-normal", children: ["bedrijfsstandaard, in te stellen op", " ", _jsx(Link, { to: "/layouts-printers/printplekken", className: "text-primary underline", children: "Printen" })] })] }), _jsx(TableHead, { children: "Actief" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 6, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen layouts gevonden." }) })), gefilterd.map((l) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsxs("div", { className: "flex items-center gap-2 font-medium", children: [_jsx(FileText, { className: "h-4 w-4 text-muted-foreground" }), l.naam, l.is_standaard && _jsx(Badge, { variant: "secondary", children: "Standaard" }), isFloridayLayout(l) && _jsx(Badge, { variant: "outline", children: "Uit Floriday" })] }), (l.omschrijving || isFloridayLayout(l)) && (_jsx("span", { className: "text-xs text-muted-foreground", children: isFloridayLayout(l) ? FLORIDAY_LAYOUT_TOELICHTING : l.omschrijving }))] }), _jsx(TableCell, { children: documentTypeLabel(l.documenttype) }), _jsxs(TableCell, { className: "text-sm text-muted-foreground", children: [l.papierformaat, " \u00B7 ", Number(l.breedte_mm), " \u00D7 ", Number(l.hoogte_mm), " mm"] }), _jsx(TableCell, { className: "min-w-52", children: _jsx(LayoutPrinterSelect, { layoutId: l.id, documenttype: l.documenttype }) }), _jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Switch, { checked: l.actief, onCheckedChange: async (v) => {
170
+ return (_jsxs(Wrapper, { className: ingebed ? "space-y-6" : "p-6 space-y-6", children: [_jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [!ingebed && (_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Documentlayouts" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Ontwerp pakbonnen, facturen, etiketten en alle andere documenten." })] })), _jsx("div", { className: "ml-auto flex gap-2", children: _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), " Nieuwe layout"] }) })] }), ontbrekendeStandaarden(layouts).map((o) => (_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm", children: [_jsxs("span", { children: ["Geen standaardlayout voor ", soortLabel(o.soort), " \u2013 maak deze standaard: ", _jsx("strong", { children: o.naam || "naamloos" })] }), _jsx(Button, { size: "sm", onClick: async () => {
171
+ try {
172
+ await maakStandaardLayout(o.layoutId);
173
+ toast.success(`${o.naam || "Layout"} is nu de standaard voor ${soortLabel(o.soort)}`);
174
+ await reload();
175
+ }
176
+ catch (e) {
177
+ toast.error(e instanceof Error ? e.message : "Standaard maken mislukt");
178
+ }
179
+ }, children: "Maak standaard" })] }, o.soort))), soortenZonderKeuze(layouts).map((o) => (_jsxs("div", { className: "flex items-center gap-2 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm", children: [_jsx(AlertTriangle, { className: "h-4 w-4 text-destructive" }), _jsxs("span", { children: ["Geen standaardlayout voor ", soortLabel(o.soort), " \u2013 er zijn ", o.aantal, " actieve layouts. Kies er zelf \u00E9\u00E9n met ", _jsx("strong", { children: "Maak standaard" }), "."] })] }, `keuze-${o.soort}-${o.bron}`))), _jsx(LayoutVerwijzingenKaart, { onGewijzigd: () => void reload() }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Overzicht" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} van ${layouts.length} layouts` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-5", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op naam of omschrijving", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: typeFilter, onValueChange: setTypeFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Documenttype" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle documenttypes" }), DOCUMENT_TYPES.map((d) => (_jsx(SelectItem, { value: d.value, children: d.label }, d.value)))] })] }), _jsxs(Select, { value: statusFilter, onValueChange: setStatusFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Status" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), _jsx(SelectItem, { value: "actief", children: "Actief" }), _jsx(SelectItem, { value: "inactief", children: "Inactief" })] })] }), _jsxs(Select, { value: bronFilter, onValueChange: setBronFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Herkomst" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle herkomsten" }), _jsx(SelectItem, { value: "eigen", children: "Eigen ontwerp" }), _jsx(SelectItem, { value: "floriday", children: "Uit Floriday" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Naam" }), _jsx(TableHead, { children: "Documenttype" }), _jsx(TableHead, { children: "Formaat" }), _jsxs(TableHead, { children: [_jsx("div", { children: "Printer nu" }), _jsxs("div", { className: "text-xs font-normal", children: ["bedrijfsstandaard, in te stellen op", " ", _jsx(Link, { to: "/layouts-printers/printplekken", className: "text-primary underline", children: "Printen" })] })] }), _jsx(TableHead, { children: "Actief" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 6, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen layouts gevonden." }) })), gefilterd.map((l) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsxs("div", { className: "flex items-center gap-2 font-medium", children: [_jsx(FileText, { className: "h-4 w-4 text-muted-foreground" }), l.naam, l.is_standaard && _jsx(Badge, { variant: "secondary", children: "Standaard" }), isFloridayLayout(l) && _jsx(Badge, { variant: "outline", children: "Uit Floriday" })] }), (l.omschrijving || isFloridayLayout(l)) && (_jsx("span", { className: "text-xs text-muted-foreground", children: isFloridayLayout(l) ? FLORIDAY_LAYOUT_TOELICHTING : l.omschrijving })), !isFloridayLayout(l) && !klantOntwerpLayout(l) && (_jsx(StandaardLayoutActies, { layout: l, standaarden: standaarden, onGewijzigd: () => void reload() }))] }), _jsx(TableCell, { children: documentTypeLabel(l.documenttype) }), _jsxs(TableCell, { className: "text-sm text-muted-foreground", children: [l.papierformaat, " \u00B7 ", Number(l.breedte_mm), " \u00D7 ", Number(l.hoogte_mm), " mm"] }), _jsx(TableCell, { className: "min-w-52", children: _jsx(LayoutPrinterSelect, { layoutId: l.id, documenttype: l.documenttype }) }), _jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Switch, { checked: l.actief, onCheckedChange: async (v) => {
160
180
  await updateLayout(l.id, { actief: v });
161
181
  void reload();
162
182
  } }), !l.is_standaard && (_jsx(Button, { variant: "ghost", size: "sm", onClick: async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"PrintenPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintenPage.tsx"],"names":[],"mappings":"AAaA,KAAK,GAAG,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;AAYxD,wBAAgB,WAAW,CAAC,EAC1B,GAAoB,GACrB,EAAE;IACD,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,+BAyBA"}
1
+ {"version":3,"file":"PrintenPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintenPage.tsx"],"names":[],"mappings":"AAeA,KAAK,GAAG,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;AAYxD,wBAAgB,WAAW,CAAC,EAC1B,GAAoB,GACrB,EAAE;IACD,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,+BA8BA"}
@@ -3,13 +3,15 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  // src/components/PrintenPage.tsx — één menu-item "Printen" met tabbladen voor
4
4
  // printplekken (plekken, computers en printers samen) en standaardregels.
5
5
  // ============================================================================
6
- import { useState } from "react";
6
+ import { useEffect, useState } from "react";
7
+ import { zorgVoorStandaardLayouts } from "../lib/useDocumentData.js";
7
8
  import { Laptop, MapPin, Route as RouteIcon } from "lucide-react";
8
9
  import { ModuleTabs } from "./ModuleTabs.js";
9
10
  import { PrintplekkenPage } from "./PrintplekkenPage.js";
10
11
  import { DocumentRouteringPage } from "./DocumentRouteringPage.js";
11
12
  import { LivePrintstatusRegel } from "./LivePrintstatusRegel.js";
12
13
  import { WerkplekkenTab } from "./WerkplekkenTab.js";
14
+ import { KlaarOmTePrintenBlok } from "./KlaarOmTePrintenBlok.js";
13
15
  const TABS = [
14
16
  {
15
17
  id: "printplekken",
@@ -20,6 +22,10 @@ const TABS = [
20
22
  { id: "routering", label: "Standaardregels", icon: RouteIcon },
21
23
  ];
22
24
  export function PrintenPage({ tab = "printplekken", }) {
25
+ // Bij openen: ontbrekende standaardlayouts en eenduidige printers aanvullen (server, servicerol).
26
+ useEffect(() => {
27
+ void zorgVoorStandaardLayouts();
28
+ }, []);
23
29
  const [actiefTab, setActiefTab] = useState(tab);
24
- return (_jsx(_Fragment, { children: _jsxs(ModuleTabs, { titel: "Printen", omschrijving: "Stel per plek in het bedrijf in welke computers, printers en documenten daar horen.", tabs: TABS, actiefTab: actiefTab, onTabWijzig: (nieuwTab) => setActiefTab(nieuwTab === "routering" || nieuwTab === "werkplekken" ? nieuwTab : "printplekken"), children: [_jsx(LivePrintstatusRegel, {}), actiefTab === "werkplekken" ? (_jsx(WerkplekkenTab, {})) : actiefTab === "routering" ? (_jsx(DocumentRouteringPage, { ingebed: true })) : (_jsx(PrintplekkenPage, { ingebed: true }))] }) }));
30
+ return (_jsx(_Fragment, { children: _jsxs(ModuleTabs, { titel: "Printen", omschrijving: "Stel per plek in het bedrijf in welke computers, printers en documenten daar horen.", tabs: TABS, actiefTab: actiefTab, onTabWijzig: (nieuwTab) => setActiefTab(nieuwTab === "routering" || nieuwTab === "werkplekken" ? nieuwTab : "printplekken"), children: [_jsx(LivePrintstatusRegel, {}), _jsx(KlaarOmTePrintenBlok, {}), actiefTab === "werkplekken" ? (_jsx(WerkplekkenTab, {})) : actiefTab === "routering" ? (_jsx(DocumentRouteringPage, { ingebed: true })) : (_jsx(PrintplekkenPage, { ingebed: true }))] }) }));
25
31
  }
@@ -0,0 +1,19 @@
1
+ import { type LayoutStandaard } from "../lib/layoutStandaarden.js";
2
+ interface LayoutRij {
3
+ id: string;
4
+ naam: string;
5
+ documenttype: string;
6
+ bron?: string | null;
7
+ config?: unknown;
8
+ breedte_mm?: number;
9
+ hoogte_mm?: number;
10
+ standaard_sleutel?: string | null;
11
+ standaard_versie?: number | null;
12
+ }
13
+ export declare function StandaardLayoutActies({ layout, standaarden, onGewijzigd, }: {
14
+ layout: LayoutRij;
15
+ standaarden: LayoutStandaard[];
16
+ onGewijzigd: () => void;
17
+ }): import("react").JSX.Element | null;
18
+ export {};
19
+ //# sourceMappingURL=StandaardLayoutActies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StandaardLayoutActies.d.ts","sourceRoot":"","sources":["../../src/components/StandaardLayoutActies.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOlG,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAoBD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EAAE,WAAW,EAAE,WAAW,GACjC,EAAE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,eAAe,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,sCAgHhF"}
@@ -0,0 +1,105 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // ============================================================================
3
+ // src/components/StandaardLayoutActies.tsx — "Nieuwe standaard beschikbaar"
4
+ // (Bekijken / Overnemen) en "Terug naar de standaard van Flow Selections".
5
+ // Overnemen en terugzetten maken altijd een nieuwe versie; er wordt niets
6
+ // verwijderd en de vorige stand blijft terug te zetten.
7
+ // ============================================================================
8
+ import { useMemo, useState } from "react";
9
+ import { Badge, Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, toast, } from "@flowselections/core";
10
+ import { supabase } from "../lib/supabaseClient.js";
11
+ import { PdfVoorbeeld } from "./PdfVoorbeeld.js";
12
+ import { useBevestig } from "./BevestigDialog.js";
13
+ import { nieuwereStandaard, standaardVoor } from "../lib/layoutStandaarden.js";
14
+ import { leesAfleverbriefConfig, leesPakbonConfig } from "../lib/pakbonBuilder.js";
15
+ import { renderPakbonDocument, voorbeeldPakbonOrder } from "../lib/pakbonHtml.js";
16
+ import { leesProductiebonConfig } from "../lib/productiebonBuilder.js";
17
+ import { renderProductiebonDocument } from "../lib/productiebonHtml.js";
18
+ function voorbeeldHtml(documenttype, config, titel, b, h) {
19
+ const opties = { breedteMm: b, hoogteMm: h, margeMm: 10, titel };
20
+ if (documenttype === "productiebon") {
21
+ return renderProductiebonDocument({ productiebon: leesProductiebonConfig(config) }, {}, opties);
22
+ }
23
+ if (documenttype === "afleverbrief") {
24
+ const basis = voorbeeldPakbonOrder();
25
+ return renderPakbonDocument(leesAfleverbriefConfig(config), { ...basis, karren: (basis.karren ?? []).slice(0, 1) }, opties);
26
+ }
27
+ return renderPakbonDocument(leesPakbonConfig(config), voorbeeldPakbonOrder(), opties);
28
+ }
29
+ async function rpc(naam, args) {
30
+ const { data, error } = await supabase.rpc(naam, args);
31
+ if (error)
32
+ throw new Error(error.message);
33
+ return data;
34
+ }
35
+ export function StandaardLayoutActies({ layout, standaarden, onGewijzigd, }) {
36
+ const [venster, bevestig] = useBevestig();
37
+ const [bekijk, setBekijk] = useState(false);
38
+ const [bezig, setBezig] = useState(false);
39
+ const std = standaardVoor(layout, standaarden);
40
+ const nieuwer = nieuwereStandaard(layout, standaarden);
41
+ const b = Number(layout.breedte_mm ?? 210) || 210;
42
+ const h = Number(layout.hoogte_mm ?? 297) || 297;
43
+ const huidigHtml = useMemo(() => (bekijk ? voorbeeldHtml(layout.documenttype, layout.config, layout.naam, b, h) : ""), [bekijk, layout.documenttype, layout.config, layout.naam, b, h]);
44
+ const nieuwHtml = useMemo(() => (bekijk && std ? voorbeeldHtml(layout.documenttype, std.config, std.naam, b, h) : ""), [bekijk, std, layout.documenttype, b, h]);
45
+ if (!std)
46
+ return null;
47
+ const overnemen = async (terug) => {
48
+ const ok = await bevestig({
49
+ titel: terug ? "Terug naar de standaard van Flow Selections?" : "Nieuwe standaard overnemen?",
50
+ tekst: "Je huidige layout wordt eerst als versie bewaard. Je kunt hem daarna altijd terugzetten.",
51
+ knop: terug ? "Terugzetten naar standaard" : "Overnemen",
52
+ });
53
+ if (!ok)
54
+ return;
55
+ setBezig(true);
56
+ try {
57
+ await rpc("layout_standaard_overnemen", { _layout_id: layout.id });
58
+ toast.success(terug ? "Layout staat weer op de standaard van Flow Selections" : "Nieuwe standaard overgenomen");
59
+ setBekijk(false);
60
+ onGewijzigd();
61
+ }
62
+ catch (e) {
63
+ toast.error(e instanceof Error ? e.message : "Mislukt");
64
+ }
65
+ finally {
66
+ setBezig(false);
67
+ }
68
+ };
69
+ const vorigeTerug = async () => {
70
+ setBezig(true);
71
+ try {
72
+ const { data, error } = await supabase
73
+ .from("document_layout_versions")
74
+ .select("id, versienummer, commentaar")
75
+ .eq("layout_id", layout.id)
76
+ .like("commentaar", "Vóór overnemen%")
77
+ .order("versienummer", { ascending: false })
78
+ .limit(1);
79
+ if (error)
80
+ throw new Error(error.message);
81
+ const v = Array.isArray(data) ? data[0] : null;
82
+ if (!v) {
83
+ toast.error("Er is geen eerdere stand om terug te zetten.");
84
+ return;
85
+ }
86
+ const ok = await bevestig({
87
+ titel: `Versie ${v.versienummer} terugzetten?`,
88
+ tekst: "Dit wordt een nieuwe versie; de huidige stand blijft in de geschiedenis.",
89
+ knop: "Terugzetten",
90
+ });
91
+ if (!ok)
92
+ return;
93
+ await rpc("layout_versie_terugzetten", { _versie_id: v.id });
94
+ toast.success(`Versie ${v.versienummer} teruggezet`);
95
+ onGewijzigd();
96
+ }
97
+ catch (e) {
98
+ toast.error(e instanceof Error ? e.message : "Mislukt");
99
+ }
100
+ finally {
101
+ setBezig(false);
102
+ }
103
+ };
104
+ return (_jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-2", children: [venster, nieuwer && (_jsxs(_Fragment, { children: [_jsx(Badge, { variant: "outline", children: "Nieuwe standaard beschikbaar" }), _jsx(Button, { size: "sm", variant: "outline", onClick: () => setBekijk(true), children: "Bekijken" }), _jsx(Button, { size: "sm", disabled: bezig, onClick: () => void overnemen(false), children: "Overnemen" })] })), _jsx(Button, { size: "sm", variant: "ghost", disabled: bezig, onClick: () => void overnemen(true), children: "Terug naar de standaard van Flow Selections" }), _jsx(Button, { size: "sm", variant: "ghost", disabled: bezig, onClick: () => void vorigeTerug(), children: "Vorige stand terugzetten" }), _jsx(Dialog, { open: bekijk, onOpenChange: setBekijk, children: _jsxs(DialogContent, { className: "max-w-6xl", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Nieuwe standaard bekijken" }), _jsxs(DialogDescription, { children: ["Links je huidige layout, rechts de standaard van Flow Selections (versie ", std.versie, ")."] })] }), _jsxs("div", { className: "grid max-h-[70vh] gap-4 overflow-auto md:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-sm font-medium", children: "Huidig" }), huidigHtml && _jsx(PdfVoorbeeld, { html: huidigHtml, breedteMm: b, hoogteMm: h, margeMm: 10 })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-sm font-medium", children: "Nieuwe standaard" }), nieuwHtml && _jsx(PdfVoorbeeld, { html: nieuwHtml, breedteMm: b, hoogteMm: h, margeMm: 10 })] })] }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: () => setBekijk(false), children: "Sluiten" }), _jsx(Button, { disabled: bezig, onClick: () => void overnemen(false), children: "Overnemen" })] })] }) })] }));
105
+ }
@@ -117,4 +117,11 @@ export type { WerkplekVoorstel } from "./lib/werkplekOmzetting.js";
117
117
  export { useIsBeheerder } from "./lib/beheerder.js";
118
118
  export { toestandVanComputer, maakKoppelVoorstel, STATUS_ONBEKEND_TEKST, zelfdeNaamTekst, type ComputerToestand, type KoppelVoorstelRij, } from "./lib/computerKoppeling.js";
119
119
  export { computerKoppelVoorstel, koppelComputerOpId } from "./lib/printService.functions.js";
120
+ export { BedrijfsgegevensKaart } from './components/BedrijfsgegevensKaart.js';
121
+ export { StandaardLayoutActies } from './components/StandaardLayoutActies.js';
122
+ export { nieuwereStandaard, standaardVoor } from './lib/layoutStandaarden.js';
123
+ export type { LayoutStandaard } from './lib/layoutStandaarden.js';
124
+ export { KlaarOmTePrintenBlok } from './components/KlaarOmTePrintenBlok.js';
125
+ export { bedrijfMetTerugval, leesBedrijfsgegevens, BEDRIJFSGEGEVENS_SLEUTEL } from './lib/bedrijfsgegevens.js';
126
+ export type { Bedrijfsgegevens } from './lib/bedrijfsgegevens.js';
120
127
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist-lib/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { MODULE_VERSIE } from './lib/shellPoort.js';
2
+ import { BedrijfsgegevensKaart } from './components/BedrijfsgegevensKaart.js';
1
3
  // ============================================================================
2
4
  // src/index.ts — MODULE CONTRACT (layout-maker)
3
5
  // ============================================================================
@@ -76,7 +78,7 @@ export { GeenPrinterFout } from './lib/printApi.js';
76
78
  export const layoutmodule = {
77
79
  id: "layout-maker",
78
80
  name: "Printen",
79
- version: "1.61.0",
81
+ version: MODULE_VERSIE,
80
82
  nav: {
81
83
  label: "Printen",
82
84
  href: "/layouts-printers/documenten",
@@ -87,7 +89,7 @@ export const layoutmodule = {
87
89
  { label: "Printwachtrij", href: "/layouts-printers/wachtrij", icon: ListChecks },
88
90
  ],
89
91
  },
90
- settingsCards: [],
92
+ settingsCards: [{ component: BedrijfsgegevensKaart, order: 50 }],
91
93
  };
92
94
  export { voorbeeldPrint } from './lib/voorbeeldPrint.js';
93
95
  export { LayoutPrinterSelect } from './components/LayoutPrinterSelect.js';
@@ -107,3 +109,8 @@ export { haalOmzettingVoorstel, pasOmzettingToe, herbereken } from "./lib/werkpl
107
109
  export { useIsBeheerder } from "./lib/beheerder.js";
108
110
  export { toestandVanComputer, maakKoppelVoorstel, STATUS_ONBEKEND_TEKST, zelfdeNaamTekst, } from "./lib/computerKoppeling.js";
109
111
  export { computerKoppelVoorstel, koppelComputerOpId } from "./lib/printService.functions.js";
112
+ export { BedrijfsgegevensKaart } from './components/BedrijfsgegevensKaart.js';
113
+ export { StandaardLayoutActies } from './components/StandaardLayoutActies.js';
114
+ export { nieuwereStandaard, standaardVoor } from './lib/layoutStandaarden.js';
115
+ export { KlaarOmTePrintenBlok } from './components/KlaarOmTePrintenBlok.js';
116
+ export { bedrijfMetTerugval, leesBedrijfsgegevens, BEDRIJFSGEGEVENS_SLEUTEL } from './lib/bedrijfsgegevens.js';