diff --git a/felsokning/app/e2e/genomgang.mjs b/felsokning/app/e2e/genomgang.mjs index a7612c8..ad8783f 100644 --- a/felsokning/app/e2e/genomgang.mjs +++ b/felsokning/app/e2e/genomgang.mjs @@ -494,6 +494,7 @@ try { "/alva/portal/garantier", "/alva/portal/forsakring", "/alva/portal/support", + "/alva/portal/installningar", "/alva/impressum", "/alva/utgavor", ]) { diff --git a/felsokning/app/e2e/portalsparr.mjs b/felsokning/app/e2e/portalsparr.mjs index 1680698..34c5a46 100644 --- a/felsokning/app/e2e/portalsparr.mjs +++ b/felsokning/app/e2e/portalsparr.mjs @@ -39,6 +39,7 @@ const VYER = [ "/alva/portal/garantier", "/alva/portal/forsakring", "/alva/portal/support", + "/alva/portal/installningar", ]; // Nycklarna är plattformsklientens egna (src/felsokning/plattform.ts). diff --git a/felsokning/app/src/App.tsx b/felsokning/app/src/App.tsx index 4ec660c..aac82d3 100644 --- a/felsokning/app/src/App.tsx +++ b/felsokning/app/src/App.tsx @@ -36,6 +36,7 @@ import AlvaUtgavor from "./pages/alva/Utgavor"; import AlvaSprak from "./pages/alva/Sprak"; import AlvaForsakring from "./pages/alva/Forsakring"; import AlvaSupport from "./pages/alva/Support"; +import AlvaInstallningar from "./pages/alva/Installningar"; import { Portalvakt } from "./pages/alva/Portalvakt"; import { PaymentTestModeBanner } from "@/components/PaymentTestModeBanner"; @@ -90,6 +91,7 @@ function AppContent() { } /> } /> } /> + } /> } /> } /> } /> diff --git a/felsokning/app/src/pages/alva/Installningar.tsx b/felsokning/app/src/pages/alva/Installningar.tsx new file mode 100644 index 0000000..bec7eb6 --- /dev/null +++ b/felsokning/app/src/pages/alva/Installningar.tsx @@ -0,0 +1,60 @@ +// Portalens inställningsöversikt. +// +// Sidan finns för att menyordet "Settings" ska hålla vad det lovar utan +// att besökaren behöver veta systemets egna namn i förväg. Fem områden, +// vart och ett en hel klickbar rad med en mening om vad man uträttar +// där — inte en ikonmatta och inte en fällmeny. +// +// Områdeslistan ägs av installningsomraden.ts: samma data bär +// huvudmenyns markering, inställningsraden och den här sidan. En +// lista, tre användningar — annars glider de isär vid nästa område +// som tillkommer. + +import { Link } from "react-router-dom"; +import { Etikett, FARG, Rubrik, Symbol } from "@/alva/komponenter"; +import { INSTALLNINGAR } from "./installningsomraden"; +import { Ram } from "./Ram"; + +export default function Installningar() { + return ( + +
+
+ Organization +
+ Settings +
+

+ Everything that configures the organization is gathered here. Nothing under Settings + touches an individual case — casework lives under Diagnostics. +

+
+ +
    + {INSTALLNINGAR.map((p) => ( +
  • + + + + {p.text} + + + {p.beskrivning} + + + + +
  • + ))} +
+
+
+ ); +} diff --git a/felsokning/app/src/pages/alva/Ram.tsx b/felsokning/app/src/pages/alva/Ram.tsx index d258158..7a23282 100644 --- a/felsokning/app/src/pages/alva/Ram.tsx +++ b/felsokning/app/src/pages/alva/Ram.tsx @@ -17,6 +17,7 @@ import { loggaUtPlattform, plattformKonto } from "@/felsokning/plattform"; import { ALVA, PLATTFORMSVERSION } from "@/alva/system"; import { FARG } from "@/alva/komponenter"; import { useWebbSprak, sattWebbSprak } from "@/alva/webbsprak"; +import { INSTALLNINGAR, INSTALLNINGSVAG } from "./installningsomraden"; import { SPRAK, oversattare } from "../../../../services/gemensam/sprak/index.mjs"; type Sprakpost = { kod: string; namn: string; egetNamn: string; granskat: boolean }; @@ -28,17 +29,18 @@ const PUBLIKT = [ { till: "/alva/logga-in", nyckel: "webb.loggain" }, ]; +// Portalens nivå ett är ARBETET: översikt, analys, de två register man +// slår i under ett ärende, och verktyget självt. Allt som KONFIGURERAR +// organisationen — källor, integrationer, abonnemang, fakturor och +// supportärenden mot plattformen — ligger samlat under Settings. Tio +// länkar i tre brutna rader var ingen meny, det var en ordlista. const PORTAL = [ { till: "/alva/portal", text: "Dashboard" }, { till: "/alva/portal/analys", text: "Analysis" }, - { till: "/alva/portal/kunskapskallor", text: "Knowledge sources" }, - { till: "/alva/portal/integration", text: "Integration" }, { till: "/alva/portal/garantier", text: "Warranty" }, { till: "/alva/portal/forsakring", text: "Insurance" }, - { till: "/alva/portal/support", text: "Support" }, - { till: "/alva/portal/abonnemang", text: "Subscription" }, - { till: "/alva/portal/fakturor", text: "Invoices" }, { till: "/felsokning", text: "Diagnostics" }, + { till: INSTALLNINGSVAG, text: "Settings" }, ]; const FOT = [ @@ -59,6 +61,10 @@ export function Ram({ children, portal = false }: { children: ReactNode; portal? // plattform finns ingen, och då visas ingen utloggning heller — en // knapp som inte loggar ut något är samma sorts sken som m-9 gällde. const konto = portal ? plattformKonto() : null; + // Var i portalen inställningarna börjar. Styr både markeringen av + // SETTINGS i huvudraden och den egna raden med områdena — den som + // står i en inställningsvy ska aldrig behöva undra var den är. + const iInstallningar = portal && (plats.pathname === INSTALLNINGSVAG || INSTALLNINGAR.some((p) => plats.pathname === p.till)); return ( // `alva-yta` bär typografin ur ALVA-SPEC-001 och håller den skild @@ -86,7 +92,7 @@ export function Ram({ children, portal = false }: { children: ReactNode; portal?