export type PricingLayout = 'grid' | 'horizontal' | 'vertical' | 'bento' | 'compact' | 'split' | 'table' | 'list' | 'compare'; export type PricingFeature = string | { label: string; included?: boolean; hint?: string; }; export interface PricingPlan { id: string; name: string; price: string; /** Yearly price when billing toggle is yearly */ priceYearly?: string; /** Struck-through list price (optional) */ compareAtPrice?: string; period?: string; periodYearly?: string; /** Small hint under the price (e.g. savings) */ priceNote?: string; description?: string; features: PricingFeature[]; cta?: string; featured?: boolean; badge?: string; disabled?: boolean; /** Bento cell span override */ span?: 1 | 2; } /** Explicit comparison matrix row (optional; table layout can auto-build) */ export interface PricingComparisonRow { id: string; label: string; /** One value per plan, in the same order as `plans` */ values: (boolean | string)[]; } import type { Snippet } from 'svelte'; interface PricingTableProps { plans?: PricingPlan[]; layout?: PricingLayout; /** Grid columns (grid/compact). Auto from plan count when omitted. */ columns?: 2 | 3 | 4; selectedId?: string; featuredBadgeLabel?: string; showFeatures?: boolean; maxFeatures?: number; /** Show monthly/yearly toggle when plans have priceYearly */ showBillingToggle?: boolean; billingPeriod?: 'monthly' | 'yearly'; billingLabels?: { monthly?: string; yearly?: string; }; /** Explicit feature matrix for compare/list/table (auto-built when omitted) */ comparisonRows?: PricingComparisonRow[]; /** Append comparison matrix below card layouts */ showComparison?: boolean; class?: string; footer?: Snippet; onselect?: (id: string) => void; onbillingperiodchange?: (period: 'monthly' | 'yearly') => void; } declare const PricingTable: import("svelte").Component; type PricingTable = ReturnType; export default PricingTable;