wizr-quiz 1.0.0 → 2.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.
Files changed (47) hide show
  1. package/dist/index.d.ts +102 -1
  2. package/dist/index.js +1 -11
  3. package/dist/index.mjs +1 -11
  4. package/package.json +17 -4
  5. package/rollup.config-1745339193645.cjs +0 -50
  6. package/rollup.config.js +0 -45
  7. package/src/assets/Timer.svg +0 -3
  8. package/src/assets/close.svg +0 -4
  9. package/src/assets/downArrow.svg +0 -11
  10. package/src/assets/fonts/patron/patron-black.woff2 +0 -0
  11. package/src/assets/fonts/patron/patron-blackitalic.woff2 +0 -0
  12. package/src/assets/fonts/patron/patron-bold.woff2 +0 -0
  13. package/src/assets/fonts/patron/patron-bolditalic.woff2 +0 -0
  14. package/src/assets/fonts/patron/patron-italic.woff2 +0 -0
  15. package/src/assets/fonts/patron/patron-light.woff2 +0 -0
  16. package/src/assets/fonts/patron/patron-lightitalic.woff2 +0 -0
  17. package/src/assets/fonts/patron/patron-medium.woff2 +0 -0
  18. package/src/assets/fonts/patron/patron-mediumitalic.woff2 +0 -0
  19. package/src/assets/fonts/patron/patron-regular.woff2 +0 -0
  20. package/src/assets/fonts/patron/patron-thin.woff2 +0 -0
  21. package/src/assets/fonts/patron/patron-thinitalic.woff2 +0 -0
  22. package/src/assets/fonts/quintus/Quintus_B_trial.ttf +0 -0
  23. package/src/assets/fonts/quintus/Quintus_R_trial.ttf +0 -0
  24. package/src/assets/react.svg +0 -1
  25. package/src/components/Options.tsx +0 -27
  26. package/src/components/Question.tsx +0 -18
  27. package/src/components/Quiz.tsx +0 -297
  28. package/src/components/Timer.tsx +0 -53
  29. package/src/components/loader.tsx +0 -12
  30. package/src/components/quizEndScreen.tsx +0 -20
  31. package/src/components/tabSwitchModal.tsx +0 -30
  32. package/src/hooks/useDisableCopyPaste.ts +0 -25
  33. package/src/hooks/useTabSwitch.tsx +0 -29
  34. package/src/index.ts +0 -3
  35. package/src/styles/fonts.css +0 -44
  36. package/src/styles/loader.css +0 -27
  37. package/src/styles/options.css +0 -58
  38. package/src/styles/question.css +0 -40
  39. package/src/styles/quiz.css +0 -267
  40. package/src/styles/quizEndScreen.css +0 -33
  41. package/src/styles/tabSwitchModal.css +0 -78
  42. package/src/styles/timer.css +0 -5
  43. package/src/svg.d.ts +0 -6
  44. package/src/types/index.ts +0 -60
  45. package/tsconfig.json +0 -20
  46. package/wizr-quiz-1.0.0.tgz +0 -0
  47. package/wizr-sdk-1.0.0.tgz +0 -0
@@ -1,44 +0,0 @@
1
- /* Thin (100) */
2
- @font-face {
3
- font-family: "Patron";
4
- src: url("../assets/fonts/patron/patron-thin.woff2") format("woff2");
5
- font-weight: 100;
6
- font-style: normal;
7
- font-display: swap;
8
- }
9
-
10
- /* Light (300) */
11
- @font-face {
12
- font-family: "Patron";
13
- src: url("../assets/fonts/patron/patron-light.woff2") format("woff2");
14
- font-weight: 300;
15
- font-style: normal;
16
- font-display: swap;
17
- }
18
-
19
- /* Regular (400) */
20
- @font-face {
21
- font-family: "Patron";
22
- src: url("../assets/fonts/patron/patron-regular.woff2") format("woff2");
23
- font-weight: 400;
24
- font-style: normal;
25
- font-display: swap;
26
- }
27
-
28
- /* Medium (500) */
29
- @font-face {
30
- font-family: "Patron";
31
- src: url("../assets/fonts/patron/patron-medium.woff2") format("woff2");
32
- font-weight: 500;
33
- font-style: normal;
34
- font-display: swap;
35
- }
36
-
37
- /* Bold (700) */
38
- @font-face {
39
- font-family: "Patron";
40
- src: url("../assets/fonts/patron/patron-bold.woff2") format("woff2");
41
- font-weight: 700;
42
- font-style: normal;
43
- font-display: swap;
44
- }
@@ -1,27 +0,0 @@
1
- .loader-overlay {
2
- position: fixed;
3
- top: 0;
4
- left: 0;
5
- width: 100%;
6
- height: 100%;
7
- background-color: black;
8
- display: flex;
9
- align-items: center;
10
- justify-content: center;
11
- z-index: 9999;
12
- }
13
-
14
- .loader-spinner {
15
- border: 8px solid rgba(255, 255, 255, 0.2);
16
- border-top: 8px solid white;
17
- border-radius: 50%;
18
- width: 60px;
19
- height: 60px;
20
- animation: spin 1s linear infinite;
21
- }
22
-
23
- @keyframes spin {
24
- to {
25
- transform: rotate(360deg);
26
- }
27
- }
@@ -1,58 +0,0 @@
1
- .options-container {
2
- display: flex;
3
- flex-direction: column;
4
- gap: 10px;
5
- }
6
-
7
- .option-btn {
8
- width: 100%;
9
- padding: 12px;
10
- border-radius: 8px;
11
- background: #ffffff;
12
- cursor: pointer;
13
- transition: 0.3s;
14
- color: #161c20;
15
- border: none;
16
- text-align: left;
17
- border: 1px solid #e7e7e7;
18
- }
19
-
20
- .option-btn:hover {
21
- background: #e1d8c9;
22
- }
23
-
24
- .option-btn.selected {
25
- background: #b59b7b;
26
- }
27
-
28
- .option-text {
29
- font-size: 1rem;
30
- font-weight: 500;
31
- line-height: 22px;
32
- letter-spacing: -0.1%;
33
- font-family: "Patron", sans-serif;
34
- }
35
-
36
- .option-image {
37
- max-width: 100%;
38
- height: auto;
39
- border-radius: 5px;
40
- }
41
-
42
- .option-code {
43
- background-color: #1e1e1e;
44
- color: white;
45
- padding: 8px;
46
- border-radius: 5px;
47
- }
48
-
49
- @media (max-width: 768px) {
50
- .option-text {
51
- font-size: 0.95rem;
52
- line-height: 21px;
53
- }
54
-
55
- .option-btn:hover {
56
- background: #b59b7b;
57
- }
58
- }
@@ -1,40 +0,0 @@
1
- /* .questionHtmlWrapper ul {
2
- list-style-type: disc;
3
- padding-left: 1.5rem;
4
- list-style-position: inside;
5
- }
6
-
7
- .questionHtmlWrapper ol {
8
- list-style-type: disc;
9
- padding-left: 1.5rem;
10
- list-style-position: inside;
11
- } */
12
-
13
- .question-text {
14
- font-size: 1.15rem;
15
- font-weight: 600;
16
- color: #161c20;
17
- font-family: "Patron", sans-serif;
18
- line-height: 25px;
19
- }
20
-
21
- code {
22
- font-size: 0.8rem;
23
- font-weight: normal;
24
- }
25
-
26
- @media (max-width: 1320px) {
27
- .question-text {
28
- font-size: 1rem;
29
- }
30
- .questionHtmlWrapper code {
31
- font-size: 0.8rem;
32
- }
33
- }
34
-
35
- @media (max-width: 768px) {
36
- .question-text {
37
- font-size: 0.95rem;
38
- line-height: 22px;
39
- }
40
- }
@@ -1,267 +0,0 @@
1
- * {
2
- box-sizing: border-box;
3
- }
4
-
5
- .quiz-page {
6
- position: fixed;
7
- background: white;
8
- width: 100vw;
9
- min-height: 100dvh;
10
- top: 0;
11
- left: 0;
12
- z-index: 100;
13
- box-sizing: border-box;
14
- overflow-y: auto; /* ensure scrolling works */
15
- display: flex;
16
- flex-direction: column;
17
- }
18
-
19
- .quiz-page-container {
20
- flex: 1;
21
- display: flex;
22
- flex-direction: column;
23
- border-radius: 16px;
24
- margin: 24px 16px 0px 16px;
25
- height: 100%;
26
- background: #f8f5f2; /* Same background color */
27
- }
28
-
29
- /* Ticker stays in a row on all devices */
30
- .quiz-ticker {
31
- display: flex;
32
- justify-content: space-between;
33
- align-items: center;
34
- padding: 20px 20px;
35
- border-bottom: 1px solid #e1d8c9;
36
- }
37
-
38
- .quiz-ticker-right {
39
- display: flex;
40
- justify-content: center;
41
- align-items: center;
42
- gap: 2rem;
43
- padding-right: 2rem;
44
- }
45
-
46
- .quiz-container {
47
- flex-grow: 1;
48
- width: 100%;
49
- display: flex;
50
- flex-direction: row; /* side-by-side on desktop */
51
- align-items: flex-start;
52
- padding: 24px 56px 24px;
53
- border-radius: 10px;
54
- justify-content: space-between;
55
- box-sizing: border-box;
56
- max-width: 1600px;
57
- margin: 0 auto;
58
- max-height: 80dvh;
59
- overflow: auto;
60
- gap: 2rem;
61
- scrollbar-width: none; /* Firefox */
62
- -ms-overflow-style: none; /* Internet Explorer 10+ */
63
- }
64
-
65
- .quiz-container::-webkit-scrollbar {
66
- display: none;
67
- }
68
-
69
- /* Left & Right columns on desktop */
70
- .quiz-left {
71
- width: 100%;
72
- max-width: 650px;
73
- overflow: auto;
74
- scrollbar-width: thin;
75
- scrollbar-color: #ccc transparent; /* thumb color, track color */
76
- }
77
-
78
- /* WebKit-based browsers (Chrome, Safari, Edge) */
79
- .quiz-left::-webkit-scrollbar {
80
- width: 6px; /* slim scrollbar */
81
- }
82
-
83
- .quiz-left::-webkit-scrollbar-thumb {
84
- background-color: #ccc; /* grey thumb */
85
- border-radius: 4px;
86
- }
87
-
88
- .quiz-left::-webkit-scrollbar-track {
89
- background: transparent; /* optional: transparent track */
90
- }
91
-
92
- .quiz-right {
93
- max-width: 622px;
94
- width: 100%;
95
- }
96
-
97
- .quiz-right-head {
98
- display: flex;
99
- justify-content: space-between;
100
- align-items: center;
101
- }
102
-
103
- .choose-option {
104
- font-size: 1rem;
105
- font-family: "Patron", sans-serif;
106
- font-weight: 500;
107
- line-height: 32px;
108
- letter-spacing: 0.2%;
109
- }
110
-
111
- .question-count {
112
- font-size: 0.9rem;
113
- font-family: "Patron", sans-serif;
114
- color: #161c20;
115
- font-weight: 500;
116
- line-height: 1.2rem;
117
- }
118
-
119
- .options-container {
120
- display: flex;
121
- flex-direction: column;
122
- gap: 18px;
123
- margin-top: 12px;
124
- }
125
-
126
- .mobile-next-btn {
127
- display: none;
128
- }
129
-
130
- /* Button Styles */
131
- .prev-btn,
132
- .next-btn {
133
- padding: 10px 54px;
134
- background: #000000;
135
- color: #ffffff;
136
- border: none;
137
- border-radius: 24px;
138
- cursor: pointer;
139
- transition: 0.3s;
140
- font-size: 0.9rem;
141
- font-weight: 500;
142
- font-family: "Patron", sans-serif;
143
- line-height: 21px;
144
- }
145
-
146
- .prev-btn {
147
- background: #5d4037;
148
- }
149
-
150
- .next-btn:disabled {
151
- background: #d7ccc8;
152
- cursor: not-allowed;
153
- }
154
-
155
- .scroll-down-btn {
156
- position: fixed;
157
- bottom: 20px;
158
- right: 20px;
159
- z-index: 999;
160
- border: none;
161
- border-radius: 50%;
162
- padding: 4px;
163
- cursor: pointer;
164
- font-size: 20px;
165
- transition: background 0.3s;
166
- }
167
-
168
- .bounce {
169
- animation: bounce 1.6s infinite;
170
- }
171
-
172
- @keyframes bounce {
173
- 0%,
174
- 20%,
175
- 50%,
176
- 80%,
177
- 100% {
178
- transform: translateY(0px);
179
- }
180
- 40% {
181
- transform: translateY(-4px);
182
- }
183
- 60% {
184
- transform: translateY(-2px);
185
- }
186
- }
187
-
188
- /* RESPONSIVE LAYOUT */
189
- @media (max-width: 768px) {
190
- /* Stack quiz content vertically on mobile */
191
-
192
- .quiz-page-container {
193
- flex-direction: column;
194
- padding: 16px;
195
- gap: 1rem;
196
- overflow-y: auto;
197
- margin: 0;
198
- border-radius: 0;
199
- }
200
-
201
- .quiz-container {
202
- flex-direction: column;
203
- padding: 0;
204
- justify-content: space-between;
205
- }
206
-
207
- .quiz-ticker {
208
- padding: 3px 20px;
209
- }
210
-
211
- .quiz-left {
212
- max-height: none;
213
- overflow: initial;
214
- }
215
-
216
- .quiz-ticker-right {
217
- padding-right: 0px;
218
- }
219
-
220
- .choose-option {
221
- font-size: 0.95rem;
222
- }
223
- /* Keep the ticker in a row at the top (no change) */
224
-
225
- /* Fix the next button at the bottom on mobile */
226
- .next-btn-container {
227
- display: none;
228
- }
229
-
230
- .mobile-next-btn {
231
- display: block;
232
- position: fixed;
233
- left: 0;
234
- bottom: 0;
235
- margin: 0 auto;
236
- text-align: center;
237
- z-index: 101;
238
- width: 100%;
239
- padding: 12px 0;
240
- border-top: 1px solid #dddddd;
241
- background: #f8f5f2; /* Same background color */
242
- }
243
-
244
- .next-btn {
245
- padding: 12px 72px;
246
- }
247
-
248
- .question-count {
249
- font-size: 0.95rem;
250
- }
251
- .option-btn {
252
- font-size: 0.8rem;
253
- padding: 10px;
254
- }
255
- }
256
-
257
- @media (max-width: 768px) and (max-height: 800px) {
258
- .quiz-container {
259
- padding-bottom: 65px;
260
- }
261
- }
262
-
263
- @media (max-width: 768px) and (max-height: 500px) {
264
- .quiz-container {
265
- padding-bottom: 100px;
266
- }
267
- }
@@ -1,33 +0,0 @@
1
- .end-screen-overlay {
2
- position: fixed;
3
- top: 0;
4
- left: 0;
5
- width: 100%;
6
- height: 100%;
7
- background: #222;
8
- color: #fff;
9
- display: flex;
10
- justify-content: center;
11
- align-items: center;
12
- z-index: 1000;
13
- }
14
-
15
- /* Content */
16
- .end-screen-content {
17
- text-align: center;
18
- font-size: 20px;
19
- font-weight: bold;
20
- font-family: "Patron", sans-serif;
21
- }
22
-
23
- .end-screen-close {
24
- position: absolute;
25
- top: 20px;
26
- right: 20px;
27
- background: none;
28
- border: none;
29
- font-size: 24px;
30
- color: #fff;
31
- cursor: pointer;
32
- font-family: "Patron", sans-serif;
33
- }
@@ -1,78 +0,0 @@
1
- /* Modal Background Overlay */
2
- .modal-overlay {
3
- position: fixed;
4
- top: 0;
5
- left: 0;
6
- width: 100%;
7
- height: 100%;
8
- background: rgba(0, 0, 0, 0.6);
9
- display: flex;
10
- justify-content: center;
11
- align-items: center;
12
- z-index: 1000;
13
- }
14
-
15
- /* Modal Box */
16
- .modal-content {
17
- background: #222;
18
- color: #fff;
19
- padding: 20px;
20
- border-radius: 10px;
21
- width: 400px;
22
- text-align: center;
23
- position: relative;
24
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
25
- }
26
-
27
- /* Close Button */
28
- .modal-close {
29
- position: absolute;
30
- top: 10px;
31
- right: 15px;
32
- background: none;
33
- border: none;
34
- font-size: 24px;
35
- color: #fff;
36
- cursor: pointer;
37
- font-family: "Patron", sans-serif;
38
- }
39
-
40
- /* Header */
41
- .modal-header {
42
- display: flex;
43
- flex-direction: column;
44
- align-items: center;
45
- margin-bottom: 10px;
46
- font-family: "Patron", sans-serif;
47
- }
48
-
49
- /* Warning Icon */
50
- .modal-icon {
51
- font-size: 32px;
52
- color: #ffcc00;
53
- }
54
-
55
- /* Text */
56
- .modal-text {
57
- font-size: 14px;
58
- color: #ccc;
59
- margin-bottom: 20px;
60
- font-family: "Patron", sans-serif;
61
- }
62
-
63
- /* Button */
64
- .modal-button {
65
- background: #fff;
66
- color: #222;
67
- border: none;
68
- padding: 10px 20px;
69
- border-radius: 20px;
70
- font-size: 14px;
71
- cursor: pointer;
72
- transition: 0.3s;
73
- font-family: "Patron", sans-serif;
74
- }
75
-
76
- .modal-button:hover {
77
- background: #ddd;
78
- }
@@ -1,5 +0,0 @@
1
- .timer {
2
- display: flex;
3
- justify-content: center;
4
- align-items: center;
5
- }
package/src/svg.d.ts DELETED
@@ -1,6 +0,0 @@
1
- // svg.d.ts
2
- declare module "*.svg" {
3
- const content: string;
4
- export default content;
5
- }
6
-
@@ -1,60 +0,0 @@
1
- export interface IQuizProps {
2
- userId: string;
3
- quizId: string;
4
- tabSwitchLimit: number;
5
- onQuizComplete: () => Promise<void>;
6
- baseURL: string;
7
- token: string;
8
- }
9
-
10
- export interface OptionsProps {
11
- options: Option[];
12
- selectedOption: string | null;
13
- onSelect: (optionId: string) => void;
14
- loading: boolean;
15
- }
16
-
17
- export interface QuestionProps {
18
- question: string;
19
- }
20
-
21
- export interface QuizEndScreenProps {
22
- open: boolean;
23
- onClose: () => void;
24
- }
25
-
26
- export interface TabSwitchModalProps {
27
- open: boolean;
28
- onClose: () => void;
29
- }
30
-
31
- export interface TimerProps {
32
- duration: number;
33
- markQuizComplete: () => Promise<void>;
34
- isEndScreenOpen: boolean;
35
- }
36
-
37
- export interface Option {
38
- id: string;
39
- text: string;
40
- media: string[];
41
- code: string | null;
42
- }
43
-
44
- export interface Question {
45
- id: string;
46
- text: string;
47
- media: string[];
48
- code: string | null;
49
- type: "MCQ";
50
- maxScore: number;
51
- options: Option[];
52
- conceptId: string;
53
- level: "easy" | "medium" | "hard";
54
- }
55
-
56
- export interface QuizData {
57
- questions: Question[];
58
- duration: number;
59
- id: string;
60
- }
package/tsconfig.json DELETED
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES5",
4
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
5
- "allowJs": true,
6
- "skipLibCheck": true,
7
- "esModuleInterop": true,
8
- "allowSyntheticDefaultImports": true,
9
- "strict": true,
10
- "forceConsistentCasingInFileNames": true,
11
- "noFallthroughCasesInSwitch": true,
12
- "module": "ESNext",
13
- "moduleResolution": "node",
14
- "resolveJsonModule": true,
15
- "isolatedModules": true,
16
- "noEmit": true,
17
- "jsx": "react-jsx"
18
- },
19
- "include": ["src"]
20
- }
Binary file
Binary file