diff --git a/app/src/lib/icons.ts b/app/src/lib/icons.ts index ccac259..3d8cb16 100644 --- a/app/src/lib/icons.ts +++ b/app/src/lib/icons.ts @@ -3,6 +3,7 @@ import users from './icons/users.svg?raw'; import calendar from './icons/calendar.svg?raw'; import currencyEur from './icons/currency-eur.svg?raw'; import envelope from './icons/envelope.svg?raw'; +import gear from './icons/gear.svg?raw'; export const icons = { house, @@ -10,6 +11,7 @@ export const icons = { calendar, 'currency-eur': currencyEur, envelope, + gear, } as const; export type IconName = keyof typeof icons; diff --git a/app/src/lib/icons/gear.svg b/app/src/lib/icons/gear.svg new file mode 100644 index 0000000..9a20171 --- /dev/null +++ b/app/src/lib/icons/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/lib/types.ts b/app/src/lib/types.ts index b1d2122..17071d1 100644 --- a/app/src/lib/types.ts +++ b/app/src/lib/types.ts @@ -12,6 +12,9 @@ export interface Verein { bundesland?: string; plan: Plan; dosb_mitglied: boolean; + email?: string; + telefon?: string; + website?: string; glaeubigerid?: string; iban?: string; bic?: string; diff --git a/app/src/routes/(app)/+layout.svelte b/app/src/routes/(app)/+layout.svelte index 32f70d1..f18d99c 100644 --- a/app/src/routes/(app)/+layout.svelte +++ b/app/src/routes/(app)/+layout.svelte @@ -67,17 +67,13 @@ return Uint8Array.from([...raw].map((c) => c.charCodeAt(0))); } - function logout() { - pb.authStore.clear(); - goto('/login'); - } - const navItems: { href: string; label: string; icon: IconName }[] = [ - { href: '/', label: 'Übersicht', icon: 'house' }, - { href: '/mitglieder', label: 'Mitglieder', icon: 'users' }, - { href: '/termine', label: 'Termine', icon: 'calendar' }, - { href: '/beitraege', label: 'Beiträge', icon: 'currency-eur' }, - { href: '/nachrichten', label: 'Nachrichten', icon: 'envelope' }, + { href: '/', label: 'Übersicht', icon: 'house' }, + { href: '/mitglieder', label: 'Mitglieder', icon: 'users' }, + { href: '/termine', label: 'Termine', icon: 'calendar' }, + { href: '/beitraege', label: 'Beiträge', icon: 'currency-eur' }, + { href: '/nachrichten', label: 'Nachrichten', icon: 'envelope' }, + { href: '/einstellungen', label: 'Einstellungen', icon: 'gear' }, ]; @@ -87,7 +83,9 @@ vereins.haus - + + +
@@ -137,17 +135,14 @@ text-decoration: none; } - .logout-btn { - background: none; - border: none; - font-size: 0.85rem; + .header-icon { color: #64748b; - padding: 0.25rem 0.5rem; - } - - .logout-btn:hover { - color: #1e293b; + display: flex; + align-items: center; + padding: 0.25rem; + transition: color 0.15s; } + .header-icon:hover { color: #1e293b; } main { flex: 1; diff --git a/app/src/routes/(app)/einstellungen/+page.svelte b/app/src/routes/(app)/einstellungen/+page.svelte new file mode 100644 index 0000000..7c327cd --- /dev/null +++ b/app/src/routes/(app)/einstellungen/+page.svelte @@ -0,0 +1,267 @@ + + +Einstellungen — vereins.haus + +

Einstellungen

+ +{#if loading} +

Laden…

+{:else} +
{ e.preventDefault(); speichern(); }}> + +
+

Vereinsprofil

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+

Anschrift

+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ +
+

SEPA-Lastschrift

+

+ Für den SEPA-XML-Export. Gläubiger-ID beim Finanzamt oder der Bundesbank beantragen. +

+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + {#if error} +

{error}

+ {/if} + {#if success} +

{success}

+ {/if} + + + +
+ +
+ + +{/if} + + diff --git a/pocketbase/pb_migrations/1779230400_verein_kontakt.js b/pocketbase/pb_migrations/1779230400_verein_kontakt.js new file mode 100644 index 0000000..50ed13c --- /dev/null +++ b/pocketbase/pb_migrations/1779230400_verein_kontakt.js @@ -0,0 +1,26 @@ +/// +migrate((app) => { + const c = app.findCollectionByNameOrId("pbc_3589557411") // vereine + c.fields.addAt(99, new Field({ + "type": "email", "id": "email2001000060", "name": "email", + "help": "", "hidden": false, "presentable": false, "required": false, "system": false, + "exceptDomains": null, "onlyDomains": null + })) + c.fields.addAt(99, new Field({ + "type": "text", "id": "text2001000061", "name": "telefon", + "help": "", "hidden": false, "presentable": false, "required": false, "system": false, + "autogeneratePattern": "", "min": 0, "max": 0, "pattern": "" + })) + c.fields.addAt(99, new Field({ + "type": "url", "id": "url2001000062", "name": "website", + "help": "", "hidden": false, "presentable": false, "required": false, "system": false, + "exceptDomains": null, "onlyDomains": null + })) + app.save(c) +}, (app) => { + const c = app.findCollectionByNameOrId("pbc_3589557411") + c.fields.removeById("email2001000060") + c.fields.removeById("text2001000061") + c.fields.removeById("url2001000062") + app.save(c) +})