import { type ViewStyle, type LayoutStyle } from "../../style/index.js"; export type Shape = "text" | "avatar" | "button" | "card" | "list" | "table"; export interface SkeletonSkin { /** Corner radius of a single muted line / text placeholder. */ lineRadius: number; /** Corner radius of the button-shaped placeholder. */ buttonRadius: number; /** Corner radius of the avatar placeholder (fully round). */ avatarRadius: number; /** Corner radius of the card scaffold surface. */ cardRadius: number; /** Corner radius of the card scaffold's media block. */ mediaRadius: number; } export interface SkeletonProps { text?: boolean; avatar?: boolean; button?: boolean; card?: boolean; list?: boolean; table?: boolean; small?: boolean; large?: boolean; /** A line that runs most of the way across (80%), a mid-paragraph line. */ long?: boolean; /** A short trailing line (60%), the last line of a paragraph. */ short?: boolean; /** Subtle opacity pulse while content loads. */ animate?: boolean; /** * Screen-reader label announced for the loading placeholder. Defaults to * "Loading". The placeholder carries a `progressbar` role + busy state so * assistive tech announces the pending content (matching Spinner / Progress). */ accessibilityLabel?: string; /** E2E hook forwarded to the root element. */ testID?: string; /** Composition within a parent only, never a restyle hook and never a width: the parent layout container provides the bounds. */ style?: LayoutStyle; } export declare function lineHeight(p: { small?: boolean; large?: boolean; }): ViewStyle; export declare function avatarDiameter(p: { small?: boolean; large?: boolean; }): number; export declare function buttonSize(p: { small?: boolean; large?: boolean; }): { height: number; width: number; }; export declare function shapeOf(p: SkeletonProps): Shape; export declare function lengthOf(p: Pick): "60%" | "80%" | "100%"; export declare function createSkeleton(skin: SkeletonSkin): (props: SkeletonProps) => import("react").JSX.Element; //# sourceMappingURL=skeleton.shared.d.ts.map