react-rewards-using-selector
Version:
This package lets you easily add micro-interactions to your app and reward users with the rain of confetti, emoji or balloons.
68 lines (59 loc) • 1.74 kB
TypeScript
type ConfettiConfig = {
lifetime?: number;
angle?: number;
decay?: number;
spread?: number;
startVelocity?: number;
elementCount?: number;
elementSize?: number;
zIndex?: number;
position?: string;
colors?: string[];
onAnimationComplete?: () => void;
fps?: number;
};
type EmojiConfig = {
lifetime?: number;
angle?: number;
decay?: number;
spread?: number;
startVelocity?: number;
elementCount?: number;
elementSize?: number;
zIndex?: number;
position?: string;
emoji?: string[];
rotate?: boolean;
onAnimationComplete?: () => void;
fps?: number;
};
type BalloonsConfig = {
lifetime?: number;
angle?: number;
decay?: number;
spread?: number;
startVelocity?: number;
elementCount?: number;
elementSize?: number;
zIndex?: number;
position?: string;
colors?: string[];
onAnimationComplete?: () => void;
fps?: number;
};
interface RewardConfigs {
confetti: ConfettiConfig;
emoji: EmojiConfig;
balloons: BalloonsConfig;
}
type RewardType = keyof RewardConfigs;
type RewardFunction = {
reward: () => void;
isAnimating: boolean;
};
type UseRewardType = <T extends RewardType>(selector: string, type: T, config?: RewardConfigs[T]) => RewardFunction;
declare const useReward: UseRewardType;
declare const confetti: (root: Element, internalAnimatingCallback: () => void, config?: ConfettiConfig) => void;
declare const balloons: (root: Element, internalAnimatingCallback: () => void, config?: BalloonsConfig) => void;
declare const emoji: (root: Element, internalAnimatingCallback: () => void, config?: EmojiConfig) => void;
export { balloons, confetti, emoji, useReward };