react-achievements 2.2.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -406
- package/dist/index.d.ts +222 -8
- package/dist/index.js +631 -0
- package/dist/index.js.map +1 -0
- package/dist/stories/Button.d.ts +28 -0
- package/dist/stories/Button.stories.d.ts +23 -0
- package/dist/stories/Header.d.ts +13 -0
- package/dist/stories/Header.stories.d.ts +18 -0
- package/dist/stories/Page.d.ts +3 -0
- package/dist/stories/Page.stories.d.ts +12 -0
- package/dist/types/__mocks__/confetti-wrapper.d.ts +5 -0
- package/dist/types/__mocks__/react-confetti.d.ts +3 -0
- package/dist/types/__mocks__/react-toastify.d.ts +13 -0
- package/dist/types/core/components/BadgesButton.d.ts +10 -0
- package/dist/types/core/components/BadgesModal.d.ts +11 -0
- package/dist/types/core/components/ConfettiWrapper.d.ts +6 -0
- package/dist/types/core/context/AchievementContext.d.ts +5 -0
- package/dist/types/core/icons/defaultIcons.d.ts +81 -0
- package/dist/types/core/storage/LocalStorage.d.ts +16 -0
- package/dist/types/core/storage/MemoryStorage.d.ts +11 -0
- package/dist/types/core/styles/defaultStyles.d.ts +2 -0
- package/dist/types/core/types.d.ts +74 -0
- package/dist/types/hooks/useAchievements.d.ts +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/providers/AchievementProvider.d.ts +24 -0
- package/dist/types/setupTests.d.ts +1 -0
- package/dist/types/stories/Button.d.ts +16 -0
- package/dist/types/stories/Button.stories.d.ts +23 -0
- package/dist/types/stories/Header.d.ts +13 -0
- package/dist/types/stories/Header.stories.d.ts +18 -0
- package/dist/types/stories/Page.d.ts +3 -0
- package/dist/types/stories/Page.stories.d.ts +12 -0
- package/package.json +72 -54
- package/.idea/jsLibraryMappings.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/react-achievements.iml +0 -12
- package/.idea/vcs.xml +0 -6
- package/coverage/clover.xml +0 -131
- package/coverage/coverage-final.json +0 -9
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -146
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/components/AchievementModal.tsx.html +0 -229
- package/coverage/lcov-report/src/components/BadgesButton.tsx.html +0 -169
- package/coverage/lcov-report/src/components/BadgesModal.tsx.html +0 -253
- package/coverage/lcov-report/src/components/ConfettiWrapper.tsx.html +0 -157
- package/coverage/lcov-report/src/components/index.html +0 -161
- package/coverage/lcov-report/src/context/AchievementContext.tsx.html +0 -505
- package/coverage/lcov-report/src/context/index.html +0 -116
- package/coverage/lcov-report/src/index.html +0 -146
- package/coverage/lcov-report/src/index.ts.html +0 -121
- package/coverage/lcov-report/src/react-confetti.d.ts.html +0 -139
- package/coverage/lcov-report/src/react-use.d.ts.html +0 -94
- package/coverage/lcov.info +0 -240
- package/demo/src/AchievementConfig.ts +0 -0
- package/public/badges/icon1.svg +0 -1
- package/rollup.config.mjs +0 -34
- package/src/assets/defaultIcons.ts +0 -100
- package/src/components/BadgesButton.tsx +0 -49
- package/src/components/BadgesModal.tsx +0 -47
- package/src/components/ConfettiWrapper.tsx +0 -17
- package/src/defaultStyles.ts +0 -86
- package/src/hooks/useAchievement.ts +0 -17
- package/src/index.ts +0 -25
- package/src/providers/AchievementProvider.tsx +0 -202
- package/src/react-confetti.d.ts +0 -19
- package/src/react-use.d.ts +0 -4
- package/src/redux/achievementSlice.ts +0 -116
- package/src/redux/notificationSlice.ts +0 -26
- package/src/redux/store.ts +0 -16
- package/src/types.ts +0 -39
- package/tsconfig.json +0 -113
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,222 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import React$1 from 'react';
|
|
2
|
+
|
|
3
|
+
type AchievementMetricValue = number | string | boolean | Date | null | undefined;
|
|
4
|
+
type AchievementMetricArrayValue = AchievementMetricValue | AchievementMetricValue[];
|
|
5
|
+
interface AchievementMetrics {
|
|
6
|
+
[key: string]: AchievementMetricValue[];
|
|
7
|
+
}
|
|
8
|
+
interface AchievementDetails {
|
|
9
|
+
achievementId: string;
|
|
10
|
+
achievementTitle: string;
|
|
11
|
+
achievementDescription: string;
|
|
12
|
+
achievementIconKey?: string;
|
|
13
|
+
}
|
|
14
|
+
interface AchievementCondition {
|
|
15
|
+
isConditionMet: (value: AchievementMetricArrayValue, state: AchievementState) => boolean;
|
|
16
|
+
achievementDetails: {
|
|
17
|
+
achievementId: string;
|
|
18
|
+
achievementTitle: string;
|
|
19
|
+
achievementDescription: string;
|
|
20
|
+
achievementIconKey: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
interface AchievementConfiguration {
|
|
24
|
+
[key: string]: AchievementCondition[];
|
|
25
|
+
}
|
|
26
|
+
interface InitialAchievementMetrics {
|
|
27
|
+
[key: string]: AchievementMetricValue;
|
|
28
|
+
}
|
|
29
|
+
interface AchievementState {
|
|
30
|
+
metrics: AchievementMetrics;
|
|
31
|
+
unlockedAchievements: string[];
|
|
32
|
+
}
|
|
33
|
+
interface AchievementStorage {
|
|
34
|
+
getMetrics(): AchievementMetrics;
|
|
35
|
+
setMetrics(metrics: AchievementMetrics): void;
|
|
36
|
+
getUnlockedAchievements(): string[];
|
|
37
|
+
setUnlockedAchievements(achievements: string[]): void;
|
|
38
|
+
clear(): void;
|
|
39
|
+
}
|
|
40
|
+
interface AchievementContextValue {
|
|
41
|
+
updateMetrics: (metrics: AchievementMetrics | ((prev: AchievementMetrics) => AchievementMetrics)) => void;
|
|
42
|
+
unlockedAchievements: string[];
|
|
43
|
+
resetStorage: () => void;
|
|
44
|
+
}
|
|
45
|
+
interface StylesProps {
|
|
46
|
+
badgesButton?: React.CSSProperties;
|
|
47
|
+
badgesModal?: {
|
|
48
|
+
overlay?: React.CSSProperties;
|
|
49
|
+
content?: React.CSSProperties;
|
|
50
|
+
header?: React.CSSProperties;
|
|
51
|
+
closeButton?: React.CSSProperties;
|
|
52
|
+
achievementList?: React.CSSProperties;
|
|
53
|
+
achievementItem?: React.CSSProperties;
|
|
54
|
+
achievementTitle?: React.CSSProperties;
|
|
55
|
+
achievementDescription?: React.CSSProperties;
|
|
56
|
+
achievementIcon?: React.CSSProperties;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
interface AchievementProviderProps$1 {
|
|
60
|
+
children: React.ReactNode;
|
|
61
|
+
config: AchievementConfiguration;
|
|
62
|
+
initialState?: InitialAchievementMetrics & {
|
|
63
|
+
previouslyAwardedAchievements?: string[];
|
|
64
|
+
};
|
|
65
|
+
storageKey?: string;
|
|
66
|
+
badgesButtonPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
67
|
+
styles?: Partial<StylesProps>;
|
|
68
|
+
icons?: Record<string, string>;
|
|
69
|
+
storage?: AchievementStorage;
|
|
70
|
+
onAchievementUnlocked?: (achievement: AchievementDetails) => void;
|
|
71
|
+
}
|
|
72
|
+
declare enum StorageType {
|
|
73
|
+
Local = "local",
|
|
74
|
+
Memory = "memory"
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
declare class LocalStorage implements AchievementStorage {
|
|
78
|
+
private storageKey;
|
|
79
|
+
constructor(storageKey: string);
|
|
80
|
+
private serializeValue;
|
|
81
|
+
private deserializeValue;
|
|
82
|
+
private serializeMetrics;
|
|
83
|
+
private deserializeMetrics;
|
|
84
|
+
private getStorageData;
|
|
85
|
+
private setStorageData;
|
|
86
|
+
getMetrics(): AchievementMetrics;
|
|
87
|
+
setMetrics(metrics: AchievementMetrics): void;
|
|
88
|
+
getUnlockedAchievements(): string[];
|
|
89
|
+
setUnlockedAchievements(achievements: string[]): void;
|
|
90
|
+
clear(): void;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
interface BadgesButtonProps {
|
|
94
|
+
onClick: () => void;
|
|
95
|
+
position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
96
|
+
styles?: React$1.CSSProperties;
|
|
97
|
+
unlockedAchievements: AchievementDetails[];
|
|
98
|
+
}
|
|
99
|
+
declare const BadgesButton: React$1.FC<BadgesButtonProps>;
|
|
100
|
+
|
|
101
|
+
interface BadgesModalProps {
|
|
102
|
+
isOpen: boolean;
|
|
103
|
+
onClose: () => void;
|
|
104
|
+
achievements: AchievementDetails[];
|
|
105
|
+
styles?: StylesProps['badgesModal'];
|
|
106
|
+
icons?: Record<string, string>;
|
|
107
|
+
}
|
|
108
|
+
declare const BadgesModal: React$1.FC<BadgesModalProps>;
|
|
109
|
+
|
|
110
|
+
interface ConfettiWrapperProps {
|
|
111
|
+
show: boolean;
|
|
112
|
+
}
|
|
113
|
+
declare const ConfettiWrapper: React$1.FC<ConfettiWrapperProps>;
|
|
114
|
+
|
|
115
|
+
interface AchievementContextType {
|
|
116
|
+
update: (metrics: Record<string, any>) => void;
|
|
117
|
+
achievements: {
|
|
118
|
+
unlocked: string[];
|
|
119
|
+
all: Record<string, any>;
|
|
120
|
+
};
|
|
121
|
+
reset: () => void;
|
|
122
|
+
getState: () => {
|
|
123
|
+
metrics: AchievementMetrics;
|
|
124
|
+
unlocked: string[];
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
declare const AchievementContext: React$1.Context<AchievementContextType | undefined>;
|
|
128
|
+
interface AchievementProviderProps {
|
|
129
|
+
achievements: AchievementConfiguration;
|
|
130
|
+
storage?: AchievementStorage | StorageType;
|
|
131
|
+
children: React$1.ReactNode;
|
|
132
|
+
icons?: Record<string, string>;
|
|
133
|
+
}
|
|
134
|
+
declare const AchievementProvider: React$1.FC<AchievementProviderProps>;
|
|
135
|
+
|
|
136
|
+
declare const useAchievements: () => AchievementContextType;
|
|
137
|
+
|
|
138
|
+
declare const defaultStyles: Required<StylesProps>;
|
|
139
|
+
|
|
140
|
+
declare const defaultAchievementIcons: {
|
|
141
|
+
levelUp: string;
|
|
142
|
+
questComplete: string;
|
|
143
|
+
monsterDefeated: string;
|
|
144
|
+
itemCollected: string;
|
|
145
|
+
challengeCompleted: string;
|
|
146
|
+
milestoneReached: string;
|
|
147
|
+
firstStep: string;
|
|
148
|
+
newBeginnings: string;
|
|
149
|
+
breakthrough: string;
|
|
150
|
+
growth: string;
|
|
151
|
+
shared: string;
|
|
152
|
+
liked: string;
|
|
153
|
+
commented: string;
|
|
154
|
+
followed: string;
|
|
155
|
+
invited: string;
|
|
156
|
+
communityMember: string;
|
|
157
|
+
supporter: string;
|
|
158
|
+
connected: string;
|
|
159
|
+
participant: string;
|
|
160
|
+
influencer: string;
|
|
161
|
+
activeDay: string;
|
|
162
|
+
activeWeek: string;
|
|
163
|
+
activeMonth: string;
|
|
164
|
+
earlyBird: string;
|
|
165
|
+
nightOwl: string;
|
|
166
|
+
streak: string;
|
|
167
|
+
dedicated: string;
|
|
168
|
+
punctual: string;
|
|
169
|
+
consistent: string;
|
|
170
|
+
marathon: string;
|
|
171
|
+
artist: string;
|
|
172
|
+
writer: string;
|
|
173
|
+
innovator: string;
|
|
174
|
+
creator: string;
|
|
175
|
+
expert: string;
|
|
176
|
+
master: string;
|
|
177
|
+
pioneer: string;
|
|
178
|
+
performer: string;
|
|
179
|
+
thinker: string;
|
|
180
|
+
explorer: string;
|
|
181
|
+
bronze: string;
|
|
182
|
+
silver: string;
|
|
183
|
+
gold: string;
|
|
184
|
+
diamond: string;
|
|
185
|
+
legendary: string;
|
|
186
|
+
epic: string;
|
|
187
|
+
rare: string;
|
|
188
|
+
common: string;
|
|
189
|
+
special: string;
|
|
190
|
+
hidden: string;
|
|
191
|
+
one: string;
|
|
192
|
+
ten: string;
|
|
193
|
+
hundred: string;
|
|
194
|
+
thousand: string;
|
|
195
|
+
clicked: string;
|
|
196
|
+
used: string;
|
|
197
|
+
found: string;
|
|
198
|
+
built: string;
|
|
199
|
+
solved: string;
|
|
200
|
+
discovered: string;
|
|
201
|
+
unlocked: string;
|
|
202
|
+
upgraded: string;
|
|
203
|
+
repaired: string;
|
|
204
|
+
defended: string;
|
|
205
|
+
default: string;
|
|
206
|
+
loading: string;
|
|
207
|
+
error: string;
|
|
208
|
+
success: string;
|
|
209
|
+
failure: string;
|
|
210
|
+
trophy: string;
|
|
211
|
+
star: string;
|
|
212
|
+
flag: string;
|
|
213
|
+
puzzle: string;
|
|
214
|
+
gem: string;
|
|
215
|
+
crown: string;
|
|
216
|
+
medal: string;
|
|
217
|
+
ribbon: string;
|
|
218
|
+
badge: string;
|
|
219
|
+
shield: string;
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
export { AchievementCondition, AchievementConfiguration, AchievementContext, AchievementContextValue, AchievementDetails, AchievementMetricArrayValue, AchievementMetricValue, AchievementMetrics, AchievementProvider, AchievementProviderProps$1 as AchievementProviderProps, AchievementState, AchievementStorage, BadgesButton, BadgesModal, ConfettiWrapper, InitialAchievementMetrics, LocalStorage, StorageType, StylesProps, defaultAchievementIcons, defaultStyles, useAchievements };
|