Files
nextjs-boilerplate/app/[locale]/admin/settings/page.tsx
T

62 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { supabaseAdmin } from '@/lib/supabaseAdmin'
import { updateSettingsAction } from './actions'
interface AppSettingsRow {
trial_days: number
}
export default async function SettingsPage({
searchParams,
}: {
searchParams: Promise<{ error?: string; success?: string }>
}) {
const { error, success } = await searchParams
const { data: settings } = await supabaseAdmin.from('app_settings').select('trial_days').maybeSingle()
const trialDays = (settings as AppSettingsRow | null)?.trial_days ?? 7
return (
<div className="space-y-6 max-w-2xl">
<div>
<h2 className="text-2xl font-bold tracking-tight text-gray-900 dark:text-white">Ayarlar</h2>
<p className="text-gray-500 dark:text-gray-400 mt-1">Genel uygulama ayarları.</p>
</div>
{error && (
<div className="rounded-md bg-red-50 dark:bg-red-950/40 border border-red-200 dark:border-red-900 px-4 py-3 text-sm text-red-700 dark:text-red-400">
{error}
</div>
)}
{success && (
<div className="rounded-md bg-green-50 dark:bg-green-950/40 border border-green-200 dark:border-green-900 px-4 py-3 text-sm text-green-700 dark:text-green-400">
Değişiklikler kaydedildi.
</div>
)}
<form action={updateSettingsAction} className="rounded-lg bg-white dark:bg-gray-950 border border-gray-200 dark:border-gray-800 shadow-sm p-6 space-y-5">
<div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Deneme Süresi (gün)</label>
<input
type="number"
name="trial_days"
min={1}
defaultValue={trialDays}
className="w-full max-w-xs rounded-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-900 px-3 py-2 text-sm text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-indigo-500"
/>
<p className="mt-1 text-xs text-gray-400">
Yeni kayıt olan kullanıcılara otomatik açılan ücretsiz deneme süresi. Sadece bundan sonra kayıt olacaklar için geçerli mevcut kullanıcıların deneme süresini etkilemez.
</p>
</div>
<div className="flex items-center gap-3 pt-2">
<button
type="submit"
className="rounded-md bg-indigo-600 hover:bg-indigo-700 text-white text-sm font-medium px-4 py-2 transition-colors"
>
Kaydet
</button>
</div>
</form>
</div>
)
}