63 lines
2.3 KiB
TypeScript
63 lines
2.3 KiB
TypeScript
import { createClient } from "@/lib/supabase-server"
|
|
import { SettingsTabs } from "@/components/dashboard/settings-tabs"
|
|
import { getSmsSettings } from "@/lib/sms/actions"
|
|
import { SiteContent } from "@/types/cms"
|
|
|
|
export default async function SettingsPage() {
|
|
const supabase = createClient()
|
|
|
|
// Fetch SMS settings
|
|
const smsResponse = await getSmsSettings()
|
|
const smsSettings = smsResponse.data || null
|
|
|
|
// Fetch Users (Profiles)
|
|
const { data: profiles } = await supabase
|
|
.from("profiles")
|
|
.select("*")
|
|
.order("created_at", { ascending: false })
|
|
|
|
// Fetch Site Contents (CMS)
|
|
const { data: contents } = await supabase
|
|
.from('site_contents')
|
|
.select('*')
|
|
.order('key')
|
|
|
|
// Define default contents for CMS
|
|
const DEFAULT_CONTENTS: SiteContent[] = [
|
|
// General
|
|
{ key: 'site_title', value: 'ParaKasa', type: 'text', section: 'general' },
|
|
{ key: 'site_description', value: '', type: 'long_text', section: 'general' },
|
|
{ key: 'site_logo', value: '', type: 'image_url', section: 'general' },
|
|
|
|
// Contact
|
|
{ key: 'contact_phone', value: '', type: 'text', section: 'contact' },
|
|
{ key: 'contact_email', value: '', type: 'text', section: 'contact' },
|
|
{ key: 'contact_address', value: '', type: 'long_text', section: 'contact' },
|
|
{ key: 'social_instagram', value: '', type: 'text', section: 'contact' },
|
|
{ key: 'social_youtube', value: '', type: 'text', section: 'contact' },
|
|
{ key: 'social_tiktok', value: '', type: 'text', section: 'contact' },
|
|
{ key: 'contact_map_embed', value: '', type: 'html', section: 'contact' },
|
|
]
|
|
|
|
// Merge default contents with existing contents
|
|
const mergedContents = [...(contents as SiteContent[] || [])]
|
|
const existingKeys = new Set(mergedContents.map(c => c.key))
|
|
|
|
DEFAULT_CONTENTS.forEach(item => {
|
|
if (!existingKeys.has(item.key)) {
|
|
mergedContents.push(item)
|
|
}
|
|
})
|
|
|
|
return (
|
|
<div className="flex-1 space-y-4 p-8 pt-6">
|
|
<h2 className="text-3xl font-bold tracking-tight">Ayarlar</h2>
|
|
<SettingsTabs
|
|
smsSettings={smsSettings}
|
|
users={profiles || []}
|
|
contents={mergedContents}
|
|
/>
|
|
</div>
|
|
)
|
|
}
|