/** * Default Tailwind classes for the DomainsSettingsPage composer (startsim-o7s). * * Mirrors the slot pattern from TeamSettingsPage — apps override individual * surfaces (primary button, input field, etc.) to tint the page in their * visual identity. */ import type { DomainClaimCardClassNames } from '../domain-claim-card-default-class-names' export interface DomainsSettingsPageClassNames { /** Outer page wrapper. */ root?: string /** Header block (back link + title row + action). */ header?: string /** Back link / breadcrumb. */ backLink?: string /** Row pairing title with the "Add domain" trigger. */ titleRow?: string /** Page title. */ title?: string /** Subtitle text. */ subtitle?: string /** Primary CTA (the "+ Add domain" button, the form's submit). */ primaryButton?: string /** Plain text input. */ input?: string /** Label above the input. */ label?: string /** Form wrapper (border + padding). */ formCard?: string /** Row containing the form's submit + cancel buttons. */ formActions?: string /** "Cancel" button next to the form submit. */ cancelButton?: string /** Inline error text. */ errorText?: string /** Loading text. */ loadingText?: string /** Wrapper for the empty-state ("No domains claimed yet"). */ emptyState?: string /** Body text inside the empty state. */ emptyText?: string /** Retry button shown next to fetch errors. */ retryButton?: string /** Wrapper for the list of domain cards. */ list?: string /** Nested className map for the DomainClaimCard. */ claimCard?: DomainClaimCardClassNames } export const DOMAINS_SETTINGS_PAGE_DEFAULTS: Required< Omit > = { root: 'space-y-6', header: '', backLink: 'text-sm text-primary hover:underline', titleRow: 'mt-2 flex items-center justify-between gap-4', title: 'text-xl font-semibold text-foreground', subtitle: 'mt-1 text-sm text-muted-foreground', primaryButton: 'rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm transition-colors hover:bg-primary/90 disabled:opacity-50', input: 'w-full rounded-lg border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:border-ring focus:ring-1 focus:ring-ring', label: 'block text-sm font-medium text-foreground', formCard: 'space-y-3 rounded-xl border border-border bg-card p-4', formActions: 'flex gap-2', cancelButton: 'rounded-lg border border-border px-4 py-2 text-sm text-foreground transition-colors hover:bg-muted', errorText: 'text-sm text-destructive', loadingText: 'text-sm text-muted-foreground', emptyState: 'rounded-xl border border-dashed border-border bg-card p-10 text-center', emptyText: 'text-sm text-muted-foreground', retryButton: 'rounded-lg border border-border px-3 py-1.5 text-sm text-foreground transition-colors hover:bg-muted', list: 'space-y-4', }