aboutsummaryrefslogtreecommitdiffstats
path: root/renderer/src/components/SettingsPage.tsx
diff options
context:
space:
mode:
authorbndw <ben@bdw.to>2026-02-28 21:08:40 -0800
committerbndw <ben@bdw.to>2026-02-28 21:08:40 -0800
commit04c63d4ef601876186e5d7fab980d76575c494ec (patch)
tree2620784e148957ae2ee3af0327c2b128983577e7 /renderer/src/components/SettingsPage.tsx
parent0da42e4fa414ab3268d4f71896455097239f8590 (diff)
feat: **1. `src/main/db/schema.ts`** — add `settings` table … (+10 more)
- ✅ **1. `src/main/db/schema.ts`** — add `settings` table to `initSchema` - ✅ **2. `src/main/db/settings.ts`** — create file with `getSetting`, `getSettings`, `setSetting`, `deleteSetting` - ✅ **3. `src/main/claude/phases.ts`** — add `customSystemPrompt?` param to `getPhaseConfig`; add `getDefaultSystemPromptTemplate` export - ✅ **4. `src/main/claude/index.ts`** — import `getSetting`; load custom prompt in `sendMessage`; pass to `getPhaseConfig` - ✅ **5. `src/main/ipc/handlers.ts`** — import `settingsDb` + `getDefaultSystemPromptTemplate`; register `settings:get`, `settings:set`, `settings:delete`, `settings:getDefaultPrompts` - ✅ **6. `src/main/preload.ts`** — add `getSettings`, `setSetting`, `deleteSetting`, `getDefaultSystemPrompts` to interface + api object - ✅ **7. `renderer/src/styles/globals.css`** — append all new CSS rules - ✅ **8. `renderer/src/components/settings/SystemPromptsSettings.tsx`** — create file (new directory) - ✅ **9. `renderer/src/components/SettingsPage.tsx`** — create file - ✅ **10. `renderer/src/components/Header.tsx`** — add `onOpenSettings` prop + ⚙ button - ✅ **11. `renderer/src/App.tsx`** — add `showSettings` state; import + render `<SettingsPage>`; pass `onOpenSettings` to Header
Diffstat (limited to 'renderer/src/components/SettingsPage.tsx')
-rw-r--r--renderer/src/components/SettingsPage.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/renderer/src/components/SettingsPage.tsx b/renderer/src/components/SettingsPage.tsx
new file mode 100644
index 0000000..5267665
--- /dev/null
+++ b/renderer/src/components/SettingsPage.tsx
@@ -0,0 +1,51 @@
1import React, { useState } from "react";
2import { SystemPromptsSettings } from "./settings/SystemPromptsSettings";
3
4type SettingsSection = "system-prompts";
5
6interface SettingsPageProps {
7 onClose: () => void;
8}
9
10export function SettingsPage({ onClose }: SettingsPageProps) {
11 const [activeSection, setActiveSection] =
12 useState<SettingsSection>("system-prompts");
13
14 return (
15 <div className="settings-overlay">
16 {/* Header — matches the main app header height/style */}
17 <div className="settings-header">
18 <div className="settings-header-left">
19 <span className="settings-title">\u2699 Settings</span>
20 </div>
21 <button
22 className="settings-close"
23 onClick={onClose}
24 title="Close settings"
25 >
26 \u00d7
27 </button>
28 </div>
29
30 <div className="settings-body">
31 {/* Side nav */}
32 <nav className="settings-nav">
33 <button
34 className={`settings-nav-item${
35 activeSection === "system-prompts" ? " active" : ""
36 }`}
37 onClick={() => setActiveSection("system-prompts")}
38 >
39 System Prompts
40 </button>
41 {/* Future sections added here */}
42 </nav>
43
44 {/* Content */}
45 <div className="settings-content">
46 {activeSection === "system-prompts" && <SystemPromptsSettings />}
47 </div>
48 </div>
49 </div>
50 );
51}