questro
Version:
A lightweight, modular gamification library for React with unique visual components. Features combo meters, daily challenges, achievement toasts, and progress rings. Add points, badges, quests, leaderboards, levels/XP, streaks, and notifications with zero
70 lines (65 loc) • 5.71 kB
TypeScript
import { E as EventEmitter, S as StorageAdapter, T as Timestamp } from './types-B4P_iNGe.js';
export { b as Entity, a as EntityId, R as Result, U as User } from './types-B4P_iNGe.js';
export { LifetimePointsDisplay, PointReason, PointTransaction, PointsAnimation, PointsConfig, PointsDisplay, PointsEvents, PointsProvider, PointsService, PointsServiceImpl, PointsState, usePoints, usePointsContext } from './points/index.js';
export { Badge, BadgeCard, BadgeCategory, BadgeCondition, BadgeCount, BadgeGrid, BadgeProgress, BadgeProgressBar, BadgeRarity, BadgesConfig, BadgesEvents, BadgesProvider, BadgesService, BadgesServiceImpl, BadgesState, UnlockedBadge, useBadges, useBadgesContext } from './badges/index.js';
export { Quest, QuestCard, QuestCardProps, QuestDifficulty, QuestList, QuestListProps, QuestObjective, QuestRecurrence, QuestReward, QuestStats, QuestStatsProps, QuestStatus, QuestsConfig, QuestsEvents, QuestsProvider, QuestsProviderProps, QuestsService, QuestsServiceImpl, QuestsState, UseQuestsReturn, useQuests, useQuestsContext } from './quests/index.js';
export { CurrentUserRank, CurrentUserRankProps, Leaderboard, LeaderboardConfig, LeaderboardEntry, LeaderboardEvents, LeaderboardFilters, LeaderboardFiltersProps, LeaderboardMetric, LeaderboardPeriod, LeaderboardProps, LeaderboardProvider, LeaderboardProviderProps, LeaderboardService, LeaderboardServiceImpl, LeaderboardState, UseLeaderboardReturn, useLeaderboard, useLeaderboardContext } from './leaderboard/index.js';
export { LevelConfig, LevelData, LevelDisplay, LevelDisplayProps, LevelFormula, LevelUpEvent, LevelsProvider, LevelsProviderProps, LevelsService, LevelsState, XPBar, XPBarProps, XPTransaction, XP_FORMULAS, calculateLevelFromXP, calculateLevelProgress, calculateXPForLevel, useLevels } from './levels/index.js';
export { Notification, NotificationConfig, NotificationContainer, NotificationContainerProps, NotificationInput, NotificationPosition, NotificationType, NotificationsProvider, NotificationsProviderProps, NotificationsService, NotificationsState, Toast, ToastPosition, ToastProps, useNotifications } from './notifications/index.js';
export { CalendarDay, StreakCalendar, StreakCalendarProps, StreakConfig, StreakData, StreakDisplay, StreakDisplayProps, StreakEntry, StreakMilestone, StreakType, StreakUpdateEvent, StreaksProvider, StreaksProviderProps, StreaksService, StreaksState, calculateStreak, formatDate, getCurrentPeriodKey, hasActivityToday, isStreakActive, useStreaks } from './streaks/index.js';
export { ComboAction, ComboConfig, ComboDisplay, ComboEvents, ComboMeter, ComboPopup, ComboProvider, ComboService, ComboServiceImpl, ComboState, comboStyles, useCombo, useComboContext } from './combo/index.js';
export { ChallengeDifficulty, ChallengeStatus, ChallengeStreakDisplay, ChallengeTemplate, ChallengeTimer, DailyChallenge, DailyChallengeCard, DailyChallengeConfig, DailyChallengeEvents, DailyChallengeProvider, DailyChallengeService, DailyChallengeServiceImpl, DailyChallengeState, useDailyChallenge, useDailyChallengeContext } from './daily-challenge/index.js';
export { Achievement, AchievementToast, AchievementToastProps, AchievementType, achievementToastStyles } from './achievement-toast/index.js';
export { ProgressRing, ProgressRingProps, ProgressRings, ProgressRingsProps, ProgressRingsWithLabels, RingData } from './progress-rings/index.js';
import 'react/jsx-runtime';
import 'react';
declare function createEventEmitter<TEvents extends Record<string, unknown>>(): EventEmitter<TEvents>;
declare class LocalStorageAdapter<T> implements StorageAdapter<T> {
private readonly prefix;
constructor(prefix?: string);
private getKey;
get(key: string): Promise<T | null>;
set(key: string, value: T): Promise<void>;
remove(key: string): Promise<void>;
clear(): Promise<void>;
}
declare class SessionStorageAdapter<T> implements StorageAdapter<T> {
private readonly prefix;
constructor(prefix?: string);
private getKey;
get(key: string): Promise<T | null>;
set(key: string, value: T): Promise<void>;
remove(key: string): Promise<void>;
clear(): Promise<void>;
}
declare class MemoryStorageAdapter<T> implements StorageAdapter<T> {
private storage;
get(key: string): Promise<T | null>;
set(key: string, value: T): Promise<void>;
remove(key: string): Promise<void>;
clear(): Promise<void>;
}
declare class AsyncStorageAdapter<T> implements StorageAdapter<T> {
private readonly asyncStorage;
private readonly prefix;
constructor(asyncStorage: {
getItem: (key: string) => Promise<string | null>;
setItem: (key: string, value: string) => Promise<void>;
removeItem: (key: string) => Promise<void>;
getAllKeys?: () => Promise<readonly string[]>;
multiRemove?: (keys: readonly string[]) => Promise<void>;
}, prefix?: string);
private getKey;
get(key: string): Promise<T | null>;
set(key: string, value: T): Promise<void>;
remove(key: string): Promise<void>;
clear(): Promise<void>;
}
declare const now: () => Timestamp;
declare const generateId: () => string;
declare const deepClone: <T>(obj: T) => T;
declare const isBrowser: () => boolean;
declare const debounce: <T extends (...args: unknown[]) => void>(fn: T, delay: number) => ((...args: Parameters<T>) => void);
declare const clamp: (value: number, min: number, max: number) => number;
declare const percentage: (current: number, total: number) => number;
export { AsyncStorageAdapter, EventEmitter, LocalStorageAdapter, MemoryStorageAdapter, SessionStorageAdapter, StorageAdapter, Timestamp, clamp, createEventEmitter, debounce, deepClone, generateId, isBrowser, now, percentage };