import { RadioStyleProps } from './types'; import { PlatformBlocksTheme } from '../../core/theme/types'; /** * Geometry and palette of the radio control. * * The control is two stacked circles rather than a bordered box: an opaque * `track` disc filling the whole footprint, and a `hole` disc punched over it. * Unselected, the hole covers everything but a `BORDER_WIDTH` rim, so the * control reads as a ring. Selecting shrinks the hole down to `dotSize` and * recolors the track, which turns the rim into a filled disc and leaves the * hole behind as the center dot — one continuous motion, no crossfade. */ export declare const getRadioMetrics: (props: RadioStyleProps & { theme: PlatformBlocksTheme; }) => { borderWidth: number; dotSize: number; holeSize: number; radioSize: number; /** Track color while unselected — only its rim is visible, so this is the ring. */ ringColor: string; /** Track color once selected, when the whole disc is showing. */ fillColor: any; /** Hole color while unselected — matches the surface so the center reads as empty. */ holeColor: string; /** * Hole color once selected, when all that is left of it is the dot. Light * text is the conventional choice on a filled control, but dark themes take * their accent from the light end of the scale, where a near-white dot all * but vanishes — so fall back to a dark dot when the fill is too bright. */ dotColor: string; /** How far the hole shrinks to become the dot. */ dotScale: number; }; export declare const useRadioStyles: (props: RadioStyleProps & { theme: PlatformBlocksTheme; }) => { container: { alignItems: "flex-start"; flexDirection: "row"; minHeight: number; }; description: { color: string; marginTop: number; }; error: { color: string; marginTop: number; }; iconWrapper: { alignItems: "center"; justifyContent: "center"; marginRight: number; }; label: { userSelect?: any; color: string; lineHeight: number; }; labelContainer: { flex: number; justifyContent: "center"; marginLeft: number; }; labelContainerLeft: { marginLeft: number; marginRight: number; }; labelContent: { alignItems: "center"; flexDirection: "row"; }; labelDisabled: { color: string; }; labelError: { color: string; }; radio: { transition?: string | undefined; alignItems: "center"; backgroundColor: string; borderRadius: number; height: number; justifyContent: "center"; opacity: number; width: number; }; radioContainer: { alignItems: "center"; justifyContent: "center"; minHeight: number; minWidth: number; }; radioInner: { borderRadius: number; elevation?: number | undefined; backgroundColor: string; height: number; transform: { scale: number; }[]; width: number; }; radioTrack: { backgroundColor: any; borderRadius: number; bottom: number; left: number; position: "absolute"; right: number; top: number; }; required: { color: string; }; };