From 47cb6b83d49bf6aee993dee2a3c7d54f2bbc565c Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Thu, 16 Apr 2026 02:10:50 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20organisation=20settings=20=E2=80=94?= =?UTF-8?q?=20vertical=20sidebar=20layout=20with=20grouped=20sections?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace horizontal tabs with VList-based vertical sidebar following the Vuexy ecommerce settings pattern. Consolidate Tags, Crowd Types, Members, and Registration Fields pages into the settings page as sidebar tabs. Add SettingsGeneral panel with org details form and danger zone. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/app/components.d.ts | 8 + .../settings/SettingsCrowdTypes.vue | 11 + .../settings/SettingsEmailBranding.vue | 11 + .../settings/SettingsEmailLog.vue | 11 + .../settings/SettingsEmailTemplates.vue | 11 + .../organisation/settings/SettingsGeneral.vue | 321 ++++++++++++ .../organisation/settings/SettingsMembers.vue | 484 +++++++++++++++++ .../settings/SettingsRegistrationFields.vue | 11 + .../organisation/settings/SettingsTags.vue | 11 + apps/app/src/navigation/vertical/index.ts | 15 - .../src/pages/organisation/crowd-types.vue | 14 - apps/app/src/pages/organisation/members.vue | 494 ------------------ apps/app/src/pages/organisation/settings.vue | 169 ++++-- apps/app/src/pages/organisation/tags.vue | 14 - apps/app/src/types/organisation.ts | 1 + apps/app/typed-router.d.ts | 3 - 16 files changed, 997 insertions(+), 592 deletions(-) create mode 100644 apps/app/src/components/organisation/settings/SettingsCrowdTypes.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsEmailBranding.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsEmailLog.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsEmailTemplates.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsGeneral.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsMembers.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsRegistrationFields.vue create mode 100644 apps/app/src/components/organisation/settings/SettingsTags.vue delete mode 100644 apps/app/src/pages/organisation/crowd-types.vue delete mode 100644 apps/app/src/pages/organisation/members.vue delete mode 100644 apps/app/src/pages/organisation/tags.vue diff --git a/apps/app/components.d.ts b/apps/app/components.d.ts index 564ce4de..9657b754 100644 --- a/apps/app/components.d.ts +++ b/apps/app/components.d.ts @@ -91,6 +91,14 @@ declare module 'vue' { ScrollToTop: typeof import('./src/@core/components/ScrollToTop.vue')['default'] SectionsShiftsPanel: typeof import('./src/components/sections/SectionsShiftsPanel.vue')['default'] SecurityTab: typeof import('./src/components/account-settings/SecurityTab.vue')['default'] + SettingsCrowdTypes: typeof import('./src/components/organisation/settings/SettingsCrowdTypes.vue')['default'] + SettingsEmailBranding: typeof import('./src/components/organisation/settings/SettingsEmailBranding.vue')['default'] + SettingsEmailLog: typeof import('./src/components/organisation/settings/SettingsEmailLog.vue')['default'] + SettingsEmailTemplates: typeof import('./src/components/organisation/settings/SettingsEmailTemplates.vue')['default'] + SettingsGeneral: typeof import('./src/components/organisation/settings/SettingsGeneral.vue')['default'] + SettingsMembers: typeof import('./src/components/organisation/settings/SettingsMembers.vue')['default'] + SettingsRegistrationFields: typeof import('./src/components/organisation/settings/SettingsRegistrationFields.vue')['default'] + SettingsTags: typeof import('./src/components/organisation/settings/SettingsTags.vue')['default'] ShareProjectDialog: typeof import('./src/components/dialogs/ShareProjectDialog.vue')['default'] ShiftDetailPanel: typeof import('./src/components/shifts/ShiftDetailPanel.vue')['default'] Shortcuts: typeof import('./src/@core/components/Shortcuts.vue')['default'] diff --git a/apps/app/src/components/organisation/settings/SettingsCrowdTypes.vue b/apps/app/src/components/organisation/settings/SettingsCrowdTypes.vue new file mode 100644 index 00000000..d2d0bcd2 --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsCrowdTypes.vue @@ -0,0 +1,11 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsEmailBranding.vue b/apps/app/src/components/organisation/settings/SettingsEmailBranding.vue new file mode 100644 index 00000000..f8c6052f --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsEmailBranding.vue @@ -0,0 +1,11 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsEmailLog.vue b/apps/app/src/components/organisation/settings/SettingsEmailLog.vue new file mode 100644 index 00000000..1c80aec4 --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsEmailLog.vue @@ -0,0 +1,11 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsEmailTemplates.vue b/apps/app/src/components/organisation/settings/SettingsEmailTemplates.vue new file mode 100644 index 00000000..fb8741b5 --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsEmailTemplates.vue @@ -0,0 +1,11 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsGeneral.vue b/apps/app/src/components/organisation/settings/SettingsGeneral.vue new file mode 100644 index 00000000..5ff4ae5b --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsGeneral.vue @@ -0,0 +1,321 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsMembers.vue b/apps/app/src/components/organisation/settings/SettingsMembers.vue new file mode 100644 index 00000000..460689c7 --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsMembers.vue @@ -0,0 +1,484 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsRegistrationFields.vue b/apps/app/src/components/organisation/settings/SettingsRegistrationFields.vue new file mode 100644 index 00000000..c73eab72 --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsRegistrationFields.vue @@ -0,0 +1,11 @@ + + + diff --git a/apps/app/src/components/organisation/settings/SettingsTags.vue b/apps/app/src/components/organisation/settings/SettingsTags.vue new file mode 100644 index 00000000..00903e69 --- /dev/null +++ b/apps/app/src/components/organisation/settings/SettingsTags.vue @@ -0,0 +1,11 @@ + + + diff --git a/apps/app/src/navigation/vertical/index.ts b/apps/app/src/navigation/vertical/index.ts index 7f067dfc..2499467f 100644 --- a/apps/app/src/navigation/vertical/index.ts +++ b/apps/app/src/navigation/vertical/index.ts @@ -17,26 +17,11 @@ export const orgNavItems = [ to: { name: 'organisation' }, icon: { icon: 'tabler-building' }, }, - { - title: 'Leden', - to: { name: 'organisation-members' }, - icon: { icon: 'tabler-users' }, - }, { title: 'Bedrijven', to: { name: 'organisation-companies' }, icon: { icon: 'tabler-building' }, }, - { - title: 'Tags & Vaardigheden', - to: { name: 'organisation-tags' }, - icon: { icon: 'tabler-tag' }, - }, - { - title: 'Crowd types', - to: { name: 'organisation-crowd-types' }, - icon: { icon: 'tabler-users-group' }, - }, { title: 'Instellingen', to: { name: 'organisation-settings' }, diff --git a/apps/app/src/pages/organisation/crowd-types.vue b/apps/app/src/pages/organisation/crowd-types.vue deleted file mode 100644 index feb08a6d..00000000 --- a/apps/app/src/pages/organisation/crowd-types.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/apps/app/src/pages/organisation/members.vue b/apps/app/src/pages/organisation/members.vue deleted file mode 100644 index fde6f96c..00000000 --- a/apps/app/src/pages/organisation/members.vue +++ /dev/null @@ -1,494 +0,0 @@ - - - diff --git a/apps/app/src/pages/organisation/settings.vue b/apps/app/src/pages/organisation/settings.vue index a1addfdc..ead4b082 100644 --- a/apps/app/src/pages/organisation/settings.vue +++ b/apps/app/src/pages/organisation/settings.vue @@ -1,9 +1,13 @@ diff --git a/apps/app/src/pages/organisation/tags.vue b/apps/app/src/pages/organisation/tags.vue deleted file mode 100644 index af33eccb..00000000 --- a/apps/app/src/pages/organisation/tags.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/apps/app/src/types/organisation.ts b/apps/app/src/types/organisation.ts index 2b0319d3..812af2f0 100644 --- a/apps/app/src/types/organisation.ts +++ b/apps/app/src/types/organisation.ts @@ -10,6 +10,7 @@ export interface Organisation { email_sender_name: string | null email_footer_text: string | null created_at: string + updated_at: string } export interface OrganisationMember { diff --git a/apps/app/typed-router.d.ts b/apps/app/typed-router.d.ts index 903ae750..a84e74df 100644 --- a/apps/app/typed-router.d.ts +++ b/apps/app/typed-router.d.ts @@ -38,10 +38,7 @@ declare module 'vue-router/auto-routes' { 'login': RouteRecordInfo<'login', '/login', Record, Record>, 'organisation': RouteRecordInfo<'organisation', '/organisation', Record, Record>, 'organisation-companies': RouteRecordInfo<'organisation-companies', '/organisation/companies', Record, Record>, - 'organisation-crowd-types': RouteRecordInfo<'organisation-crowd-types', '/organisation/crowd-types', Record, Record>, - 'organisation-members': RouteRecordInfo<'organisation-members', '/organisation/members', Record, Record>, 'organisation-settings': RouteRecordInfo<'organisation-settings', '/organisation/settings', Record, Record>, - 'organisation-tags': RouteRecordInfo<'organisation-tags', '/organisation/tags', Record, Record>, 'platform': RouteRecordInfo<'platform', '/platform', Record, Record>, 'platform-activity-log': RouteRecordInfo<'platform-activity-log', '/platform/activity-log', Record, Record>, 'platform-organisations': RouteRecordInfo<'platform-organisations', '/platform/organisations', Record, Record>,