1/** @jsxImportSource https://esm.sh/react */
2import React, { useState, useEffect, useRef, useCallback } from "https://esm.sh/react";
3import { createRoot } from "https://esm.sh/react-dom/client";
4import confetti from "https://esm.sh/canvas-confetti";
5
170 };
171
172 return React.createElement(
173 "div",
174 { className: `math-flashcard-container ${isSettingsVisible ? "flipped" : ""}` },
175 React.createElement(
176 "div",
177 { className: "flashcard-inner" },
178 React.createElement(
179 "div",
180 { className: "flashcard-front" },
181 React.createElement(
182 "div",
183 { className: "flashcard-header" },
184 React.createElement(
185 "div",
186 { className: "streak-container" },
187 React.createElement(
188 "div",
189 { className: "streak-stats" },
190 React.createElement("div", { className: "current-streak" },
191 `Current: ${streak}`,
192 isSuperStreak && React.createElement("span", { className: "super-streak-icon" }, "🔥")
193 ),
194 React.createElement("div", { className: "longest-streak" },
195 `Longest: ${longestStreak}`
196 )
197 ),
198 React.createElement(
199 "div",
200 { className: "streak-bar" },
201 Array.from({ length: MAX_STREAK }).map((_, index) =>
202 React.createElement(
203 "div",
204 {
211 )
212 ),
213 isStreakExploding && React.createElement(
214 "div",
215 {
219 )
220 ),
221 React.createElement(
222 "button",
223 {
228 ),
229 ),
230 React.createElement(
231 "div",
232 { className: "flashcard", ref: answerRef },
233 React.createElement(
234 "div",
235 { className: "problem" },
236 React.createElement("div", { className: "first-number" }, problem.a),
237 React.createElement(
238 "div",
239 { className: "second-line" },
240 React.createElement("span", { className: "operation" }, problem.operation),
241 React.createElement("span", { className: "second-number" }, problem.b),
242 ),
243 ),
244 React.createElement(
245 "div",
246 { className: "result-display" },
247 showResult && React.createElement("div", { className: "result" }, problem.result),
248 ),
249 React.createElement(
250 "div",
251 { className: "multiple-choice" },
252 problem.choices.map((choice, index) =>
253 React.createElement(
254 "button",
255 {
272 ),
273 ),
274 React.createElement(
275 "button",
276 {
281 ),
282 ),
283 React.createElement(
284 "div",
285 {
287 style: { display: isSettingsVisible ? 'block' : 'none' }
288 },
289 React.createElement("h2", null, "Settings"),
290 React.createElement(
291 "div",
292 { className: "config-section" },
293 React.createElement("h3", null, "Operations"),
294 React.createElement(
295 "div",
296 { className: "config-options" },
297 React.createElement(
298 "label",
299 null,
300 React.createElement("input", {
301 type: "checkbox",
302 checked: config.addition,
305 "Addition"
306 ),
307 React.createElement(
308 "label",
309 null,
310 React.createElement("input", {
311 type: "checkbox",
312 checked: config.subtraction,
315 "Subtraction"
316 ),
317 React.createElement(
318 "label",
319 null,
320 React.createElement("input", {
321 type: "checkbox",
322 checked: config.multiplication,
327 )
328 ),
329 React.createElement(
330 "div",
331 { className: "config-section" },
332 React.createElement("h3", null, "Number Ranges"),
333 React.createElement(
334 "div",
335 { className: "config-options" },
336 React.createElement(
337 "label",
338 null,
339 React.createElement("input", {
340 type: "checkbox",
341 checked: config.range1to10,
344 "1-10"
345 ),
346 React.createElement(
347 "label",
348 null,
349 React.createElement("input", {
350 type: "checkbox",
351 checked: config.range10to90,
354 "10-90"
355 ),
356 React.createElement(
357 "label",
358 null,
359 React.createElement("input", {
360 type: "checkbox",
361 checked: config.range100to900,
366 )
367 ),
368 React.createElement(
369 "button",
370 {
384
385function App() {
386 return React.createElement("div", { className: "app" }, React.createElement(MathFlashcards, null));
387}
388
389function client() {
390 createRoot(document.getElementById("root")).render(React.createElement(App, null));
391}
392if (typeof document !== "undefined") { client(); }