/**
 * Shared building blocks for the section renderers.
 *
 * NOTE ON STYLING: the components under `sections/` render the consumer's
 * *public website* content (purple hero, white prose bands, etc.), not the
 * admin chrome. They therefore use a small, fixed website palette (violet
 * for primary, zinc for neutrals) instead of the admin theme tokens. This
 * is deliberate and scoped to this folder so the preview looks like a real
 * page; the surrounding editor UI still uses the admin design tokens.
 */
import type { SectionSettings } from '../section-types.js';
/**
 * Live post data passed to the post-oriented section renderers
 * (article body, author bio, related posts). Pages never supply this, so
 * every consumer treats it as optional and falls back to placeholder copy.
 */
export interface PostRenderContext {
    title?: string;
    excerpt?: string;
    /** the post's main body copy (rendered by the Article Body section) */
    body?: string;
    featuredImageUrl?: string;
    publishDate?: string | null;
    category?: string;
    author?: {
        name?: string;
        bio?: string;
        avatarUrl?: string;
    };
    /** resolved related posts for the Related Posts section */
    relatedPosts?: Array<{
        title: string;
        url?: string;
        excerpt?: string;
    }>;
}
export declare function str(content: Record<string, unknown>, key: string, fallback?: string): string;
export declare function bool(content: Record<string, unknown>, key: string, fallback?: boolean): boolean;
/** Vertical padding scale for a section. */
export declare function paddingClass(settings: SectionSettings): string;
/** Returns true when the section background is the dark/purple treatment. */
export declare function isDarkBackground(settings: SectionSettings): boolean;
/** Background utility classes derived from settings. */
export declare function backgroundClass(settings: SectionSettings): string;
/**
 * Preview-only button. `tone="onDark"` renders the white-on-purple button
 * from the screenshot; `tone="primary"` renders a solid violet button for
 * light backgrounds.
 */
export declare function PreviewButton({ label, href, tone, }: {
    label: string;
    href?: string;
    tone?: 'primary' | 'onDark' | 'ghost';
}): import("react/jsx-runtime").JSX.Element | null;
//# sourceMappingURL=parts.d.ts.map