react-achievements 2.2.2 → 3.0.1

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.
Files changed (77) hide show
  1. package/README.md +377 -401
  2. package/dist/index.d.ts +222 -8
  3. package/dist/index.js +631 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/stories/Button.d.ts +28 -0
  6. package/dist/stories/Button.stories.d.ts +23 -0
  7. package/dist/stories/Header.d.ts +13 -0
  8. package/dist/stories/Header.stories.d.ts +18 -0
  9. package/dist/stories/Page.d.ts +3 -0
  10. package/dist/stories/Page.stories.d.ts +12 -0
  11. package/dist/types/__mocks__/confetti-wrapper.d.ts +5 -0
  12. package/dist/types/__mocks__/react-confetti.d.ts +3 -0
  13. package/dist/types/__mocks__/react-toastify.d.ts +13 -0
  14. package/dist/types/core/components/BadgesButton.d.ts +10 -0
  15. package/dist/types/core/components/BadgesModal.d.ts +11 -0
  16. package/dist/types/core/components/ConfettiWrapper.d.ts +6 -0
  17. package/dist/types/core/context/AchievementContext.d.ts +5 -0
  18. package/dist/types/core/icons/defaultIcons.d.ts +81 -0
  19. package/dist/types/core/storage/LocalStorage.d.ts +16 -0
  20. package/dist/types/core/storage/MemoryStorage.d.ts +11 -0
  21. package/dist/types/core/styles/defaultStyles.d.ts +2 -0
  22. package/dist/types/core/types.d.ts +74 -0
  23. package/dist/types/hooks/useAchievements.d.ts +1 -0
  24. package/dist/types/index.d.ts +10 -0
  25. package/dist/types/providers/AchievementProvider.d.ts +24 -0
  26. package/dist/types/setupTests.d.ts +1 -0
  27. package/dist/types/stories/Button.d.ts +16 -0
  28. package/dist/types/stories/Button.stories.d.ts +23 -0
  29. package/dist/types/stories/Header.d.ts +13 -0
  30. package/dist/types/stories/Header.stories.d.ts +18 -0
  31. package/dist/types/stories/Page.d.ts +3 -0
  32. package/dist/types/stories/Page.stories.d.ts +12 -0
  33. package/package.json +73 -54
  34. package/.idea/jsLibraryMappings.xml +0 -6
  35. package/.idea/modules.xml +0 -8
  36. package/.idea/react-achievements.iml +0 -12
  37. package/.idea/vcs.xml +0 -6
  38. package/coverage/clover.xml +0 -131
  39. package/coverage/coverage-final.json +0 -9
  40. package/coverage/lcov-report/base.css +0 -224
  41. package/coverage/lcov-report/block-navigation.js +0 -87
  42. package/coverage/lcov-report/favicon.png +0 -0
  43. package/coverage/lcov-report/index.html +0 -146
  44. package/coverage/lcov-report/prettify.css +0 -1
  45. package/coverage/lcov-report/prettify.js +0 -2
  46. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  47. package/coverage/lcov-report/sorter.js +0 -196
  48. package/coverage/lcov-report/src/components/AchievementModal.tsx.html +0 -229
  49. package/coverage/lcov-report/src/components/BadgesButton.tsx.html +0 -169
  50. package/coverage/lcov-report/src/components/BadgesModal.tsx.html +0 -253
  51. package/coverage/lcov-report/src/components/ConfettiWrapper.tsx.html +0 -157
  52. package/coverage/lcov-report/src/components/index.html +0 -161
  53. package/coverage/lcov-report/src/context/AchievementContext.tsx.html +0 -505
  54. package/coverage/lcov-report/src/context/index.html +0 -116
  55. package/coverage/lcov-report/src/index.html +0 -146
  56. package/coverage/lcov-report/src/index.ts.html +0 -121
  57. package/coverage/lcov-report/src/react-confetti.d.ts.html +0 -139
  58. package/coverage/lcov-report/src/react-use.d.ts.html +0 -94
  59. package/coverage/lcov.info +0 -240
  60. package/demo/src/AchievementConfig.ts +0 -0
  61. package/public/badges/icon1.svg +0 -1
  62. package/rollup.config.mjs +0 -34
  63. package/src/assets/defaultIcons.ts +0 -100
  64. package/src/components/BadgesButton.tsx +0 -49
  65. package/src/components/BadgesModal.tsx +0 -47
  66. package/src/components/ConfettiWrapper.tsx +0 -17
  67. package/src/defaultStyles.ts +0 -86
  68. package/src/hooks/useAchievement.ts +0 -17
  69. package/src/index.ts +0 -25
  70. package/src/providers/AchievementProvider.tsx +0 -202
  71. package/src/react-confetti.d.ts +0 -19
  72. package/src/react-use.d.ts +0 -4
  73. package/src/redux/achievementSlice.ts +0 -116
  74. package/src/redux/notificationSlice.ts +0 -26
  75. package/src/redux/store.ts +0 -16
  76. package/src/types.ts +0 -39
  77. package/tsconfig.json +0 -113
package/dist/index.d.ts CHANGED
@@ -1,8 +1,222 @@
1
- import { AchievementProvider, useAchievementContext as useAchievement } from './providers/AchievementProvider';
2
- import type { AchievementMetrics, AchievementConfiguration, AchievementDetails, AchievementUnlockCondition, AchievementMetricValue, InitialAchievementMetrics } from './types';
3
- import ConfettiWrapper from './components/ConfettiWrapper';
4
- import achievementReducer from './redux/achievementSlice';
5
- import notificationReducer from './redux/notificationSlice';
6
- import { useAchievementState } from './hooks/useAchievementState';
7
- export { AchievementProvider, useAchievement, ConfettiWrapper, achievementReducer, notificationReducer, useAchievementState, };
8
- export type { AchievementMetrics, AchievementConfiguration, AchievementDetails, AchievementUnlockCondition, AchievementMetricValue, InitialAchievementMetrics, };
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 };