big refactor

This commit is contained in:
2026-04-29 16:25:11 -05:00
parent 6c411ce2b6
commit 8265fb689a
156 changed files with 15845 additions and 50373 deletions

View File

@@ -1,26 +1,60 @@
<script setup lang="ts">
import { MAX_LOGO_FILE_BYTES } from '~/types/branding'
import type { BrokerageBrandingState } from '~/types/branding'
definePageMeta({ ssr: false })
usePageTitle('Organization · Settings')
const { isSuperAdmin } = useSuperAdmin()
const toast = useToast()
const { saved, defaultBrokerageBranding } = useBrokerageBranding()
const draft = ref<BrokerageBrandingState>(defaultBrokerageBranding())
const MAX_LOGO_FILE_BYTES = 512 * 1024
interface BrokerageBrandingState {
companyName: string
logoDataUrl: string | null
logoFileName: string
reportPageHeader: string
reportPageFooter: string
}
const isSuperAdmin = computed(() => {
if (import.meta.client) {
const stored = localStorage.getItem('policy-ui.superadmin')
return stored !== '0'
}
return true
})
const STORAGE_KEY = 'policy-ui.branding'
function loadBranding(): BrokerageBrandingState {
if (import.meta.client) {
const stored = localStorage.getItem(STORAGE_KEY)
if (stored) {
try {
return JSON.parse(stored)
} catch {
return defaultBranding()
}
}
}
return defaultBranding()
}
function defaultBranding(): BrokerageBrandingState {
return {
companyName: '',
logoDataUrl: null,
logoFileName: '',
reportPageHeader: '',
reportPageFooter: ''
}
}
const saved = ref<BrokerageBrandingState>(loadBranding())
const draft = ref<BrokerageBrandingState>({ ...saved.value })
const fileInputRef = ref<HTMLInputElement | null>(null)
function syncDraftFromSaved() {
const s = saved.value
draft.value = {
companyName: s.companyName,
logoDataUrl: s.logoDataUrl,
logoFileName: s.logoFileName,
reportPageHeader: s.reportPageHeader,
reportPageFooter: s.reportPageFooter
}
draft.value = { ...saved.value }
}
onMounted(() => syncDraftFromSaved())
@@ -65,6 +99,9 @@ function clearLogo() {
function save() {
saved.value = { ...draft.value }
if (import.meta.client) {
localStorage.setItem(STORAGE_KEY, JSON.stringify(saved.value))
}
toast.add({
title: 'Organization saved',
description: 'Sidebar and home use this brokerage identity for all users.',