import { useStore } from '@nanostores/react' import { $settings, $settingsData, $hasChanges, $saveSettings, $changedFields } from '../stores/settings' import { addToast } from '../stores/app' import { Field, SaveBar, GeneralPageSkeleton, PageHeader } from '../components/shared' export default function GeneralPage() { const settings = useStore($settings) const { data } = useStore($settingsData) const hasChanges = useStore($hasChanges) const changedFields = useStore($changedFields) const saveSettings = useStore($saveSettings) const handleSave = async () => { try { await saveSettings.mutate(settings) addToast('Settings saved', 'success') } catch { addToast('Failed to save settings', 'error') } } if (!data) return return (
{/* Panel container - full-bleed borders */}
{/* Site Information */}
Site Information
Basic details about your blog
$settings.setKey('site_name', v)} placeholder="My Blog" /> $settings.setKey('site_description', v)} placeholder="A short description of your blog" multiline />
{/* Author */}
Author
Information about the blog author
$settings.setKey('author_name', v)} placeholder="John Doe" /> $settings.setKey('author_role', v)} placeholder="Software Engineer" /> $settings.setKey('author_bio', v)} placeholder="A short bio about yourself" multiline /> $settings.setKey('author_photo', v)} placeholder="https://example.com/photo.jpg" hint="URL to your profile photo" />
{/* Social Links */}
Social Links
Connect your social profiles
$settings.setKey('twitter_handle', v)} placeholder="@username" /> $settings.setKey('github_handle', v)} placeholder="username" /> $settings.setKey('linkedin_handle', v)} placeholder="username" /> $settings.setKey('email', v)} placeholder="hello@example.com" />
{hasChanges && }
) }