/** * Generic component types migrated from @happyvertical/svelte */ import type { Snippet } from 'svelte'; import type { HTMLAnchorAttributes, HTMLAttributes, HTMLButtonAttributes } from 'svelte/elements'; export type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'; export type BadgeSize = 'sm' | 'md'; export interface BadgeProps extends Omit, 'class'> { variant?: BadgeVariant; size?: BadgeSize; children?: Snippet; } export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger'; export type ButtonSize = 'sm' | 'md' | 'lg'; export interface ButtonProps extends Omit { variant?: ButtonVariant; size?: ButtonSize; href?: string; class?: string; fullWidth?: boolean; loading?: boolean; target?: HTMLAnchorAttributes['target']; rel?: HTMLAnchorAttributes['rel']; download?: HTMLAnchorAttributes['download']; children?: Snippet; } export type CardVariant = 'default' | 'outlined' | 'elevated'; export type CardPadding = 'none' | 'sm' | 'md' | 'lg'; export interface CardProps extends Omit, 'class'> { variant?: CardVariant; padding?: CardPadding; hoverable?: boolean; children?: Snippet; header?: Snippet; footer?: Snippet; } export type AvatarSize = 'sm' | 'md' | 'lg' | 'xl'; export type AvatarStatus = 'online' | 'offline' | 'away' | 'busy'; export type ChipSize = 'sm' | 'md'; export type SkeletonVariant = 'text' | 'circle' | 'rect'; export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'; export type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'; /** An item in a `Dropdown`/`Menu`. */ export interface MenuItem { /** Stable id, returned by `onselect`. */ id: string; /** Visible item label. */ label: string; /** Disable this item. */ disabled?: boolean; /** Per-item activation handler. */ onselect?: () => void; } /** A node in a `Tree`. */ export interface TreeNode { /** Stable id, returned by `onselect`. */ id: string; /** Visible node label. */ label: string; /** Child nodes; presence makes the node expandable. */ children?: TreeNode[]; } export type ChatMessageRole = 'user' | 'agent' | 'system'; export interface DayEventDetail { type: string; name: string; slug: string; startTime: string; venue?: string; councilSlug?: string; } export interface DayEventsData { date: string; events: DayEventDetail[]; } export interface DayForecast { icon: string; high: number; low: number; } //# sourceMappingURL=types-generic.d.ts.map