import { type HTMLAttributes, type ReactNode } from 'react';
import { type CssLength } from '../../../utils/css';
export type BreakGlassOklchColor = {
l: number;
c: number;
h: number;
a?: number;
};
export type BreakGlassOklchAlphaRangeColor = {
l: number;
c: number;
h: number;
aMin: number;
aMax: number;
};
export type BreakGlassColorConfig = {
crack: BreakGlassOklchColor;
crackShadow: BreakGlassOklchColor;
crackBranch: BreakGlassOklchColor;
ring: BreakGlassOklchColor;
dust: BreakGlassOklchColor;
shardDark: BreakGlassOklchAlphaRangeColor;
shardLight: BreakGlassOklchAlphaRangeColor;
shardEdge: BreakGlassOklchAlphaRangeColor;
pit: BreakGlassOklchColor;
flash: BreakGlassOklchColor;
particle: BreakGlassOklchAlphaRangeColor;
particleShadow: string;
};
export type BreakGlassCrackConfig = {
rayCountMin: number;
rayCountMax: number;
maxRadiusMin: number;
maxRadiusMax: number;
rayLengthMin: number;
segmentMin: number;
segmentMax: number;
driftBase: number;
driftGrowth: number;
strokeMin: number;
strokeMax: number;
shadowOffset: readonly [number, number];
shadowStroke: number;
branchProbability: number;
branchAngleMin: number;
branchAngleMax: number;
branchLenMin: number;
branchLenMax: number;
branchStroke: number;
};
export type BreakGlassRingConfig = {
countMin: number;
countMax: number;
radiusBase: number;
radiusStepMin: number;
radiusStepMax: number;
wobbleRange: number;
skipProbability: number;
stroke: number;
};
export type BreakGlassShardConfig = {
midRadiusMin: number;
midRadiusMax: number;
midJitter: number;
darkThreshold: number;
stagger: number;
};
export type BreakGlassDustConfig = {
count: number;
radius: number;
lenMin: number;
lenMax: number;
strokeMin: number;
strokeMax: number;
};
export type BreakGlassParticleConfig = {
countMin: number;
countMax: number;
widthMin: number;
widthMax: number;
heightMin: number;
heightMax: number;
forceMin: number;
forceMax: number;
liftOffset: number;
gravityMin: number;
gravityMax: number;
rotateMax: number;
durationMin: number;
durationMax: number;
};
export type BreakGlassImpactConfig = {
pitRadius: number;
flashRadius: number;
flashDuration: number;
};
export type BreakGlassShakeConfig = {
intensity: number;
duration: number;
};
export type BreakGlassConfig = {
color: BreakGlassColorConfig;
crack: BreakGlassCrackConfig;
ring: BreakGlassRingConfig;
shard: BreakGlassShardConfig;
dust: BreakGlassDustConfig;
particle: BreakGlassParticleConfig;
impact: BreakGlassImpactConfig;
shake: BreakGlassShakeConfig;
};
type BreakGlassColorConfigOverrides = {
crack?: Partial;
crackShadow?: Partial;
crackBranch?: Partial;
ring?: Partial;
dust?: Partial;
shardDark?: Partial;
shardLight?: Partial;
shardEdge?: Partial;
pit?: Partial;
flash?: Partial;
particle?: Partial;
particleShadow?: string;
};
export type BreakGlassConfigProps = {
color?: BreakGlassColorConfigOverrides;
crack?: Partial;
ring?: Partial;
shard?: Partial;
dust?: Partial;
particle?: Partial;
impact?: Partial;
shake?: Partial;
};
export type BreakGlassSmashPoint = {
x: number;
y: number;
};
export type BreakGlassPageProps = Omit, 'color' | 'onReset'> & BreakGlassConfigProps & {
minHeight?: CssLength;
audioSrc?: string | null;
audioType?: string;
audioVolume?: number;
audioMuted?: boolean;
autoDemo?: boolean;
demoDelayMs?: number;
brandStart?: string;
brandStop?: string;
showClearButton?: boolean;
clearLabel?: ReactNode;
clearAriaLabel?: string;
ariaLabel?: string;
svgClassName?: string;
controlsClassName?: string;
onSmash?: (point: BreakGlassSmashPoint) => void;
onReset?: () => void;
};
export declare const BreakGlassPage: ({ className, style, minHeight, audioSrc, audioType, audioVolume, audioMuted, autoDemo, demoDelayMs, brandStart, brandStop, showClearButton, clearLabel, clearAriaLabel, ariaLabel, svgClassName, controlsClassName, color, crack, ring, shard, dust, particle, impact, shake, onSmash, onReset, onPointerDown, ...props }: BreakGlassPageProps) => import("react/jsx-runtime").JSX.Element;
export {};