'use client' import { useRouter } from 'next/navigation' import { useTranslations } from 'next-intl' import { CompanyDangerZone } from '@/components/settings/CompanyDangerZone' import { CompanyInfoForm } from '@/components/settings/CompanyInfoForm' import { CompanyMembersSection } from '@/components/settings/CompanyMembersSection' import { CompanyProfileSection } from '@/components/settings/CompanyProfileSection' import { FiscalPeriodEditor } from '@/components/settings/FiscalPeriodEditor' import { LogoUpload } from '@/components/settings/LogoUpload' import { SettingsFormWrapper } from '@/components/settings/SettingsFormWrapper' import { SettingsLoadError } from '@/components/settings/SettingsLoadError' import { SettingsLoadingSkeleton } from '@/components/settings/SettingsLoadingSkeleton' import { SettingsSectionHeader } from '@/components/settings/SettingsRows' import { ShareCapitalForm } from '@/components/settings/ShareCapitalForm' import { useSettings } from '@/components/settings/useSettings' import type { CompanySettings } from '@/types' export function CompanySettingsContent() { const router = useRouter() const tNav = useTranslations('settings_nav') const tIntro = useTranslations('settings_intro') const { settings, isLoading, updateSettings, refetch } = useSettings() if (isLoading) return if (!settings) return function handleSave(formData: FormData) { // Empty string clears the value (schema accepts null, not ''). const numberOrNull = (name: string) => { const raw = String(formData.get(name) ?? '').trim() if (raw === '') return null const parsed = Number(raw) // NaN would serialize to null in JSON and silently clear the value. return Number.isFinite(parsed) ? parsed : null } const updates: Record = { ...(formData.has('company_name') && { company_name: formData.get('company_name') as string }), ...(formData.has('org_number') && { org_number: formData.get('org_number') as string }), address_line1: formData.get('address_line1') as string, postal_code: formData.get('postal_code') as string, city: formData.get('city') as string, phone: (formData.get('phone') as string) || '', email: (formData.get('email') as string) || '', website: (formData.get('website') as string) || '', ...(formData.has('aktiekapital') && { aktiekapital: numberOrNull('aktiekapital') }), ...(formData.has('antal_aktier') && { antal_aktier: numberOrNull('antal_aktier') }), } return { updates, onSuccess: (data: Record) => { updateSettings(data as Partial) // Refresh server components so the company switcher and DashboardNav // pick up the new company_name (rendered from server in the dashboard layout). if ('company_name' in updates) { router.refresh() } }, } } return (
{settings.entity_type === 'aktiebolag' && ( )} updateSettings({ logo_url: url })} />
) }