From d60204195fb93bd4cb30fb86ee701ed6e367f099 Mon Sep 17 00:00:00 2001
From: Claude
Date: Tue, 5 May 2026 15:27:05 +0000
Subject: [PATCH 1/6] feat(#123): add Settings view, consolidate header icons
to 6
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Create Settings.jsx with five sections: Utseende (theme toggle +
body map preview), Konto (email + logout), Om appen (version +
changelog), Kontakt, Språk (placeholder)
- Remove theme toggle and logout from PageShell header; replace with
EventSchedule (placeholder) and Settings nav icons
- Remove version footer button and ChangelogModal from PageShell
- Add onShowSettings to NavContext and "settings" view in App.jsx
Closes #123
https://claude.ai/code/session_01NSBiZxpgCv2kUVt9MUcWkH
---
app/src/App.jsx | 4 +
app/src/components/PageShell.jsx | 44 ++--------
app/src/components/Settings.jsx | 136 +++++++++++++++++++++++++++++++
3 files changed, 146 insertions(+), 38 deletions(-)
create mode 100644 app/src/components/Settings.jsx
diff --git a/app/src/App.jsx b/app/src/App.jsx
index 467a923..75e0832 100644
--- a/app/src/App.jsx
+++ b/app/src/App.jsx
@@ -9,6 +9,7 @@ import Report from "./components/Report";
import Bibliotek from "./components/Bibliotek";
import TemplatePicker from "./components/TemplatePicker";
import TemplateSessionEditor from "./components/TemplateSessionEditor";
+import Settings from "./components/Settings";
function App() {
const [session, setSession] = useState(undefined);
@@ -40,6 +41,7 @@ function App() {
onShowHistoryWithDate: (dateStr) => { setHistoryInitialDate(dateStr); setView("history"); },
onShowTemplatePicker: () => setView("template-picker"),
onShowReportWithPrefill: (prefill) => { setReportPrefill(prefill); setView("report"); },
+ onShowSettings: () => setView("settings"),
};
let content;
@@ -66,6 +68,8 @@ function App() {
setView("template-editor");
}}
/>;
+ else if (view === "settings")
+ content = ;
else if (view === "template-editor" && templateEditorState)
content =
@@ -171,41 +164,16 @@ export default function PageShell({ children }) {
- setTheme(theme === "g10" ? "g100" : "g10")}>
- {theme === "g10" ? : }
+
+
- supabase.auth.signOut()}>
-
+
+
{children}
-
-
-
- setChangelogOpen(false)} />
);
diff --git a/app/src/components/Settings.jsx b/app/src/components/Settings.jsx
new file mode 100644
index 0000000..c26dccf
--- /dev/null
+++ b/app/src/components/Settings.jsx
@@ -0,0 +1,136 @@
+import { useEffect, useState } from "react";
+import { Toggle, Button } from "@carbon/react";
+import PageShell, { SectionLabel, PageHeading } from "./PageShell";
+import BodyPanel from "./BodyPanel";
+import ChangelogModal from "./ChangelogModal";
+import { useTheme } from "../theme";
+import { supabase } from "../lib/supabase";
+import { version } from "../../package.json";
+
+const PREVIEW_PRIMARY = ["chest", "quads", "lats"];
+const PREVIEW_SECONDARY = ["shoulders_front", "hamstrings", "triceps"];
+
+const cardStyle = {
+ background: "var(--cds-layer-01)",
+ border: "1px solid var(--cds-border-subtle-01)",
+ borderRadius: "var(--r-card)",
+ padding: 16,
+ marginBottom: 16,
+};
+
+export default function Settings() {
+ const { theme, setTheme } = useTheme();
+ const [changelogOpen, setChangelogOpen] = useState(false);
+ const [userEmail, setUserEmail] = useState("");
+
+ useEffect(() => {
+ supabase.auth.getUser().then(({ data: { user } }) => {
+ if (user?.email) setUserEmail(user.email);
+ });
+ }, []);
+
+ return (
+
+ Innstillinger
+
+ Utseende
+
+
+ setTheme(checked ? "g100" : "g10")}
+ />
+
+
+
+
+ Konto
+
+
+
+ {userEmail}
+
+
+
+
+
+ Om appen
+
+
+
+ v{version}
+
+
+
+
+
+ Kontakt
+
+
+
+ Har du tilbakemeldinger eller fant en feil? Ta gjerne kontakt.
+
+
+
+
+
+
+
+
+ Språk
+
+
+ setChangelogOpen(false)} />
+
+ );
+}
From 30d9a42d39f687097f2bde65e78d39850ee7b4a6 Mon Sep 17 00:00:00 2001
From: Claude
Date: Tue, 5 May 2026 15:34:24 +0000
Subject: [PATCH 2/6] fix: remove invalid as="a" prop from Carbon Button
Carbon Button renders as automatically when href is provided.
https://claude.ai/code/session_01NSBiZxpgCv2kUVt9MUcWkH
---
app/src/components/Settings.jsx | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/app/src/components/Settings.jsx b/app/src/components/Settings.jsx
index c26dccf..3e3730a 100644
--- a/app/src/components/Settings.jsx
+++ b/app/src/components/Settings.jsx
@@ -99,7 +99,7 @@ export default function Settings() {
Har du tilbakemeldinger eller fant en feil? Ta gjerne kontakt.
-