docs: add comprehensive Stripe billing guide
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 4s

Covers architecture, configuration steps, user flows, API routes,
webhooks, pricing, testing with Stripe CLI, production checklist,
and troubleshooting.
This commit is contained in:
Antigravity
2026-05-16 21:10:26 +00:00
parent aa12d2226f
commit bb75b2e763
36 changed files with 2099 additions and 735 deletions

View File

@@ -56,7 +56,7 @@ export function AppearanceSettingsClient({
localStorage.setItem('theme-preference', next)
applyDocumentTheme(next)
await updateUserSettings({ theme: next })
toast.success(t('settings.settingsSaved') || 'Saved')
toast.success(t('settings.settingsSaved'))
}
const handleFontSizeChange = async (value: string) => {
@@ -64,7 +64,7 @@ export function AppearanceSettingsClient({
const map: Record<string, string> = { small: '14px', medium: '16px', large: '18px', 'extra-large': '20px' }
document.documentElement.style.setProperty('--user-font-size', map[value] || '16px')
await updateAISettings({ fontSize: value as any })
toast.success(t('settings.settingsSaved') || 'Saved')
toast.success(t('settings.settingsSaved'))
}
const handleFontFamilyChange = async (value: string) => {
@@ -80,7 +80,7 @@ export function AppearanceSettingsClient({
if (font === 'playfair') root.classList.add('font-playfair')
if (font === 'jetbrains') root.classList.add('font-jetbrains')
await updateAISettings({ fontFamily: font as 'inter' | 'playfair' | 'jetbrains' | 'system' })
toast.success(t('settings.settingsSaved') || 'Saved')
toast.success(t('settings.settingsSaved'))
}
const SelectCard = ({
@@ -174,7 +174,7 @@ export function AppearanceSettingsClient({
>
<div className="space-y-10">
<p className="text-[11px] font-bold uppercase tracking-[0.2em] text-muted-foreground">
{t('appearance.description') || "Personnalisez l'interface"}
{t('appearance.description')}
</p>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
@@ -186,8 +186,8 @@ export function AppearanceSettingsClient({
<Palette size={20} />
</div>
<div className="space-y-0.5 text-left">
<h4 className="text-base font-bold text-foreground">{t('appearance.accentColorTitle') || 'Couleur d\'accentuation'}</h4>
<p className="text-[11px] text-muted-foreground leading-tight">{t('appearance.accentColorDescription') || 'Définissez la couleur principale de votre espace de travail'}</p>
<h4 className="text-base font-bold text-foreground">{t('appearance.accentColorTitle')}</h4>
<p className="text-[11px] text-muted-foreground leading-tight">{t('appearance.accentColorDescription')}</p>
</div>
</div>
<div className="flex items-center gap-3 bg-slate-50 dark:bg-black/20 px-4 py-2 rounded-xl border border-border/40">
@@ -264,14 +264,14 @@ export function AppearanceSettingsClient({
<SelectCard
icon={Type}
title={t('appearance.fontFamilyLabel') || 'Police'}
description={t('appearance.fontFamilyDescription') || "Choisissez la police de l'application"}
title={t('appearance.fontFamilyLabel')}
description={t('appearance.fontFamilyDescription')}
value={fontFamily}
options={[
{ value: 'inter', label: t('appearance.fontInterDefault') },
{ value: 'playfair', label: t('appearance.fontPlayfairDisplay') },
{ value: 'jetbrains', label: t('appearance.fontJetBrainsMono') },
{ value: 'system', label: t('appearance.fontSystem') || 'Système' },
{ value: 'system', label: t('appearance.fontSystem') },
]}
onChange={handleFontFamilyChange}
/>