analytica-frontend-lib 1.1.5 → 1.1.7

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 (67) hide show
  1. package/dist/Auth/AuthProvider/index.js +12 -0
  2. package/dist/Auth/AuthProvider/index.js.map +1 -1
  3. package/dist/Auth/AuthProvider/index.mjs +12 -0
  4. package/dist/Auth/AuthProvider/index.mjs.map +1 -1
  5. package/dist/Auth/ProtectedRoute/index.js +12 -0
  6. package/dist/Auth/ProtectedRoute/index.js.map +1 -1
  7. package/dist/Auth/ProtectedRoute/index.mjs +12 -0
  8. package/dist/Auth/ProtectedRoute/index.mjs.map +1 -1
  9. package/dist/Auth/PublicRoute/index.js +12 -0
  10. package/dist/Auth/PublicRoute/index.js.map +1 -1
  11. package/dist/Auth/PublicRoute/index.mjs +12 -0
  12. package/dist/Auth/PublicRoute/index.mjs.map +1 -1
  13. package/dist/Auth/getRootDomain/index.js +12 -0
  14. package/dist/Auth/getRootDomain/index.js.map +1 -1
  15. package/dist/Auth/getRootDomain/index.mjs +12 -0
  16. package/dist/Auth/getRootDomain/index.mjs.map +1 -1
  17. package/dist/Auth/index.d.mts +15 -1
  18. package/dist/Auth/index.d.ts +15 -1
  19. package/dist/Auth/index.js +12 -0
  20. package/dist/Auth/index.js.map +1 -1
  21. package/dist/Auth/index.mjs +12 -0
  22. package/dist/Auth/index.mjs.map +1 -1
  23. package/dist/Auth/useAuth/index.js +12 -0
  24. package/dist/Auth/useAuth/index.js.map +1 -1
  25. package/dist/Auth/useAuth/index.mjs +12 -0
  26. package/dist/Auth/useAuth/index.mjs.map +1 -1
  27. package/dist/Auth/useAuthGuard/index.js +12 -0
  28. package/dist/Auth/useAuthGuard/index.js.map +1 -1
  29. package/dist/Auth/useAuthGuard/index.mjs +12 -0
  30. package/dist/Auth/useAuthGuard/index.mjs.map +1 -1
  31. package/dist/Auth/useRouteAuth/index.js +12 -0
  32. package/dist/Auth/useRouteAuth/index.js.map +1 -1
  33. package/dist/Auth/useRouteAuth/index.mjs +12 -0
  34. package/dist/Auth/useRouteAuth/index.mjs.map +1 -1
  35. package/dist/Auth/withAuth/index.js +12 -0
  36. package/dist/Auth/withAuth/index.js.map +1 -1
  37. package/dist/Auth/withAuth/index.mjs +12 -0
  38. package/dist/Auth/withAuth/index.mjs.map +1 -1
  39. package/dist/Quiz/index.d.mts +1 -2
  40. package/dist/Quiz/index.d.ts +1 -2
  41. package/dist/Quiz/index.js +31 -5
  42. package/dist/Quiz/index.js.map +1 -1
  43. package/dist/Quiz/index.mjs +31 -5
  44. package/dist/Quiz/index.mjs.map +1 -1
  45. package/dist/Quiz/useQuizStore/index.d.mts +2 -0
  46. package/dist/Quiz/useQuizStore/index.d.ts +2 -0
  47. package/dist/Quiz/useQuizStore/index.js +2 -0
  48. package/dist/Quiz/useQuizStore/index.js.map +1 -1
  49. package/dist/Quiz/useQuizStore/index.mjs +2 -0
  50. package/dist/Quiz/useQuizStore/index.mjs.map +1 -1
  51. package/dist/VideoPlayer/index.d.mts +41 -0
  52. package/dist/VideoPlayer/index.d.ts +41 -0
  53. package/dist/VideoPlayer/index.js +562 -0
  54. package/dist/VideoPlayer/index.js.map +1 -0
  55. package/dist/VideoPlayer/index.mjs +550 -0
  56. package/dist/VideoPlayer/index.mjs.map +1 -0
  57. package/dist/index.css +124 -0
  58. package/dist/index.css.map +1 -1
  59. package/dist/index.d.mts +1 -0
  60. package/dist/index.d.ts +1 -0
  61. package/dist/index.js +691 -226
  62. package/dist/index.js.map +1 -1
  63. package/dist/index.mjs +684 -211
  64. package/dist/index.mjs.map +1 -1
  65. package/dist/styles.css +124 -0
  66. package/dist/styles.css.map +1 -1
  67. package/package.json +3 -2
package/dist/index.js CHANGED
@@ -121,6 +121,7 @@ __export(src_exports, {
121
121
  TextArea: () => TextArea_default,
122
122
  Toast: () => Toast_default,
123
123
  Toaster: () => Toaster_default,
124
+ VideoPlayer: () => VideoPlayer_default,
124
125
  createZustandAuthAdapter: () => createZustandAuthAdapter,
125
126
  getRootDomain: () => getRootDomain,
126
127
  getStatusBadge: () => getStatusBadge,
@@ -4723,7 +4724,7 @@ var CardAudio = (0, import_react14.forwardRef)(
4723
4724
  const [volume, setVolume] = (0, import_react14.useState)(1);
4724
4725
  const [showVolumeControl, setShowVolumeControl] = (0, import_react14.useState)(false);
4725
4726
  const audioRef = (0, import_react14.useRef)(null);
4726
- const formatTime = (time) => {
4727
+ const formatTime2 = (time) => {
4727
4728
  const minutes = Math.floor(time / 60);
4728
4729
  const seconds = Math.floor(time % 60);
4729
4730
  return `${minutes}:${seconds.toString().padStart(2, "0")}`;
@@ -4841,7 +4842,7 @@ var CardAudio = (0, import_react14.forwardRef)(
4841
4842
  ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_phosphor_react12.Play, { size: 24 })
4842
4843
  }
4843
4844
  ),
4844
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-text-800 text-sm font-medium min-w-[2.5rem]", children: formatTime(currentTime) }),
4845
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-text-800 text-sm font-medium min-w-[2.5rem]", children: formatTime2(currentTime) }),
4845
4846
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "flex-1 relative", "data-testid": "progress-bar", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4846
4847
  "button",
4847
4848
  {
@@ -4868,7 +4869,7 @@ var CardAudio = (0, import_react14.forwardRef)(
4868
4869
  )
4869
4870
  }
4870
4871
  ) }),
4871
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-text-800 text-sm font-medium min-w-[2.5rem]", children: formatTime(duration) }),
4872
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "text-text-800 text-sm font-medium min-w-[2.5rem]", children: formatTime2(duration) }),
4872
4873
  /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "relative", children: [
4873
4874
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4874
4875
  "button",
@@ -6819,11 +6820,436 @@ var NotFound = ({
6819
6820
  };
6820
6821
  var NotFound_default = NotFound;
6821
6822
 
6822
- // src/components/Auth/Auth.tsx
6823
+ // src/components/VideoPlayer/VideoPlayer.tsx
6823
6824
  var import_react22 = require("react");
6824
- var import_react_router_dom = require("react-router-dom");
6825
+ var import_phosphor_react18 = require("phosphor-react");
6825
6826
  var import_jsx_runtime36 = require("react/jsx-runtime");
6826
- var AuthContext = (0, import_react22.createContext)(void 0);
6827
+ var formatTime = (seconds) => {
6828
+ if (!seconds || isNaN(seconds)) return "0:00";
6829
+ const mins = Math.floor(seconds / 60);
6830
+ const secs = Math.floor(seconds % 60);
6831
+ return `${mins}:${secs.toString().padStart(2, "0")}`;
6832
+ };
6833
+ var VideoPlayer = ({
6834
+ src,
6835
+ poster,
6836
+ subtitles,
6837
+ title,
6838
+ subtitle: subtitleText,
6839
+ initialTime = 0,
6840
+ onTimeUpdate,
6841
+ onProgress,
6842
+ onVideoComplete,
6843
+ className,
6844
+ autoSave = true,
6845
+ storageKey = "video-progress"
6846
+ }) => {
6847
+ const videoRef = (0, import_react22.useRef)(null);
6848
+ const [isPlaying, setIsPlaying] = (0, import_react22.useState)(false);
6849
+ const [currentTime, setCurrentTime] = (0, import_react22.useState)(0);
6850
+ const [duration, setDuration] = (0, import_react22.useState)(0);
6851
+ const [isMuted, setIsMuted] = (0, import_react22.useState)(false);
6852
+ const [volume, setVolume] = (0, import_react22.useState)(1);
6853
+ const [isFullscreen, setIsFullscreen] = (0, import_react22.useState)(false);
6854
+ const [showControls, setShowControls] = (0, import_react22.useState)(true);
6855
+ const [hasCompleted, setHasCompleted] = (0, import_react22.useState)(false);
6856
+ const [showCaptions, setShowCaptions] = (0, import_react22.useState)(false);
6857
+ const [playbackRate, setPlaybackRate] = (0, import_react22.useState)(1);
6858
+ const [showSpeedMenu, setShowSpeedMenu] = (0, import_react22.useState)(false);
6859
+ const lastSaveTimeRef = (0, import_react22.useRef)(0);
6860
+ const trackRef = (0, import_react22.useRef)(null);
6861
+ (0, import_react22.useEffect)(() => {
6862
+ if (videoRef.current) {
6863
+ videoRef.current.volume = volume;
6864
+ videoRef.current.muted = isMuted;
6865
+ }
6866
+ }, [volume, isMuted]);
6867
+ (0, import_react22.useEffect)(() => {
6868
+ if (!autoSave || !storageKey) return;
6869
+ const raw = localStorage.getItem(`${storageKey}-${src}`);
6870
+ const saved = raw !== null ? Number(raw) : NaN;
6871
+ const hasValidSaved = Number.isFinite(saved) && saved >= 0;
6872
+ const hasValidInitial = Number.isFinite(initialTime) && initialTime >= 0;
6873
+ let start;
6874
+ if (hasValidInitial) {
6875
+ start = initialTime;
6876
+ } else if (hasValidSaved) {
6877
+ start = saved;
6878
+ } else {
6879
+ start = void 0;
6880
+ }
6881
+ if (start !== void 0 && videoRef.current) {
6882
+ videoRef.current.currentTime = start;
6883
+ setCurrentTime(start);
6884
+ }
6885
+ }, [src, storageKey, autoSave, initialTime]);
6886
+ const saveProgress = (0, import_react22.useCallback)(() => {
6887
+ if (!autoSave || !storageKey) return;
6888
+ const now = Date.now();
6889
+ if (now - lastSaveTimeRef.current > 5e3) {
6890
+ localStorage.setItem(`${storageKey}-${src}`, currentTime.toString());
6891
+ lastSaveTimeRef.current = now;
6892
+ }
6893
+ }, [autoSave, storageKey, src, currentTime]);
6894
+ const togglePlayPause = (0, import_react22.useCallback)(() => {
6895
+ if (videoRef.current) {
6896
+ if (isPlaying) {
6897
+ videoRef.current.pause();
6898
+ } else {
6899
+ videoRef.current.play();
6900
+ }
6901
+ setIsPlaying(!isPlaying);
6902
+ }
6903
+ }, [isPlaying]);
6904
+ const handleVolumeChange = (0, import_react22.useCallback)(
6905
+ (newVolume) => {
6906
+ if (videoRef.current) {
6907
+ const volumeValue = newVolume / 100;
6908
+ videoRef.current.volume = volumeValue;
6909
+ setVolume(volumeValue);
6910
+ if (volumeValue === 0) {
6911
+ videoRef.current.muted = true;
6912
+ setIsMuted(true);
6913
+ } else if (isMuted) {
6914
+ videoRef.current.muted = false;
6915
+ setIsMuted(false);
6916
+ }
6917
+ }
6918
+ },
6919
+ [isMuted]
6920
+ );
6921
+ const toggleMute = (0, import_react22.useCallback)(() => {
6922
+ if (videoRef.current) {
6923
+ if (isMuted) {
6924
+ const restoreVolume = volume > 0 ? volume : 0.5;
6925
+ videoRef.current.volume = restoreVolume;
6926
+ videoRef.current.muted = false;
6927
+ setVolume(restoreVolume);
6928
+ setIsMuted(false);
6929
+ } else {
6930
+ videoRef.current.muted = true;
6931
+ setIsMuted(true);
6932
+ }
6933
+ }
6934
+ }, [isMuted, volume]);
6935
+ const toggleFullscreen = (0, import_react22.useCallback)(() => {
6936
+ const container = videoRef.current?.parentElement;
6937
+ if (!container) return;
6938
+ if (!isFullscreen) {
6939
+ if (container.requestFullscreen) {
6940
+ container.requestFullscreen();
6941
+ }
6942
+ } else if (document.exitFullscreen) {
6943
+ document.exitFullscreen();
6944
+ }
6945
+ setIsFullscreen(!isFullscreen);
6946
+ }, [isFullscreen]);
6947
+ const handleSpeedChange = (0, import_react22.useCallback)((speed) => {
6948
+ if (videoRef.current) {
6949
+ videoRef.current.playbackRate = speed;
6950
+ setPlaybackRate(speed);
6951
+ setShowSpeedMenu(false);
6952
+ }
6953
+ }, []);
6954
+ const toggleSpeedMenu = (0, import_react22.useCallback)(() => {
6955
+ setShowSpeedMenu(!showSpeedMenu);
6956
+ }, [showSpeedMenu]);
6957
+ const toggleCaptions = (0, import_react22.useCallback)(() => {
6958
+ if (!trackRef.current?.track) return;
6959
+ const newShowCaptions = !showCaptions;
6960
+ setShowCaptions(newShowCaptions);
6961
+ trackRef.current.track.mode = newShowCaptions ? "showing" : "hidden";
6962
+ }, [showCaptions]);
6963
+ const handleTimeUpdate = (0, import_react22.useCallback)(() => {
6964
+ if (videoRef.current) {
6965
+ const current = videoRef.current.currentTime;
6966
+ setCurrentTime(current);
6967
+ saveProgress();
6968
+ onTimeUpdate?.(current);
6969
+ if (duration > 0) {
6970
+ const progressPercent = current / duration * 100;
6971
+ onProgress?.(progressPercent);
6972
+ if (progressPercent >= 95 && !hasCompleted) {
6973
+ setHasCompleted(true);
6974
+ onVideoComplete?.();
6975
+ }
6976
+ }
6977
+ }
6978
+ }, [
6979
+ duration,
6980
+ saveProgress,
6981
+ onTimeUpdate,
6982
+ onProgress,
6983
+ onVideoComplete,
6984
+ hasCompleted
6985
+ ]);
6986
+ const handleLoadedMetadata = (0, import_react22.useCallback)(() => {
6987
+ if (videoRef.current) {
6988
+ setDuration(videoRef.current.duration);
6989
+ }
6990
+ }, []);
6991
+ (0, import_react22.useEffect)(() => {
6992
+ const handleVisibilityChange = () => {
6993
+ if (document.hidden && isPlaying && videoRef.current) {
6994
+ videoRef.current.pause();
6995
+ setIsPlaying(false);
6996
+ }
6997
+ };
6998
+ const handleBlur = () => {
6999
+ if (isPlaying && videoRef.current) {
7000
+ videoRef.current.pause();
7001
+ setIsPlaying(false);
7002
+ }
7003
+ };
7004
+ document.addEventListener("visibilitychange", handleVisibilityChange);
7005
+ window.addEventListener("blur", handleBlur);
7006
+ return () => {
7007
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
7008
+ window.removeEventListener("blur", handleBlur);
7009
+ };
7010
+ }, [isPlaying]);
7011
+ const progressPercentage = duration > 0 ? currentTime / duration * 100 : 0;
7012
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cn("flex flex-col", className), children: [
7013
+ (title || subtitleText) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "bg-subject-1 rounded-t-xl px-8 py-4 flex items-end justify-between min-h-20", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex flex-col gap-1", children: [
7014
+ title && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7015
+ Text_default,
7016
+ {
7017
+ as: "h2",
7018
+ size: "lg",
7019
+ weight: "bold",
7020
+ color: "text-text-900",
7021
+ className: "leading-5 tracking-wide",
7022
+ children: title
7023
+ }
7024
+ ),
7025
+ subtitleText && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7026
+ Text_default,
7027
+ {
7028
+ as: "p",
7029
+ size: "sm",
7030
+ weight: "normal",
7031
+ color: "text-text-600",
7032
+ className: "leading-5",
7033
+ children: subtitleText
7034
+ }
7035
+ )
7036
+ ] }) }),
7037
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
7038
+ "div",
7039
+ {
7040
+ className: cn(
7041
+ "relative w-full bg-background overflow-hidden group",
7042
+ title || subtitleText ? "rounded-b-xl" : "rounded-xl"
7043
+ ),
7044
+ children: [
7045
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7046
+ "video",
7047
+ {
7048
+ ref: videoRef,
7049
+ src,
7050
+ poster,
7051
+ className: "w-full h-full object-contain",
7052
+ controlsList: "nodownload",
7053
+ onTimeUpdate: handleTimeUpdate,
7054
+ onLoadedMetadata: handleLoadedMetadata,
7055
+ onClick: togglePlayPause,
7056
+ onKeyDown: (e) => {
7057
+ if (e.key) {
7058
+ setShowControls(true);
7059
+ }
7060
+ if (e.key === " " || e.key === "Enter") {
7061
+ e.preventDefault();
7062
+ togglePlayPause();
7063
+ }
7064
+ if (e.key === "ArrowLeft" && videoRef.current) {
7065
+ e.preventDefault();
7066
+ videoRef.current.currentTime -= 10;
7067
+ }
7068
+ if (e.key === "ArrowRight" && videoRef.current) {
7069
+ e.preventDefault();
7070
+ videoRef.current.currentTime += 10;
7071
+ }
7072
+ if (e.key === "ArrowUp") {
7073
+ e.preventDefault();
7074
+ handleVolumeChange(Math.min(100, volume * 100 + 10));
7075
+ }
7076
+ if (e.key === "ArrowDown") {
7077
+ e.preventDefault();
7078
+ handleVolumeChange(Math.max(0, volume * 100 - 10));
7079
+ }
7080
+ if (e.key === "m" || e.key === "M") {
7081
+ e.preventDefault();
7082
+ toggleMute();
7083
+ }
7084
+ if (e.key === "f" || e.key === "F") {
7085
+ e.preventDefault();
7086
+ toggleFullscreen();
7087
+ }
7088
+ },
7089
+ tabIndex: 0,
7090
+ "aria-label": title ? `Video: ${title}` : "Video player",
7091
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7092
+ "track",
7093
+ {
7094
+ ref: trackRef,
7095
+ kind: "captions",
7096
+ src: subtitles || "data:text/vtt;charset=utf-8,WEBVTT%0A%0ANOTE%20No%20captions%20available",
7097
+ srcLang: "en",
7098
+ label: subtitles ? "Subtitles" : "No captions available",
7099
+ default: false
7100
+ }
7101
+ )
7102
+ }
7103
+ ),
7104
+ !isPlaying && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "absolute inset-0 flex items-center justify-center bg-black/30 transition-opacity", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7105
+ IconButton_default,
7106
+ {
7107
+ icon: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.Play, { size: 32, weight: "regular", className: "ml-1" }),
7108
+ onClick: togglePlayPause,
7109
+ "aria-label": "Play video",
7110
+ className: "!bg-transparent !text-white !w-auto !h-auto hover:!bg-transparent hover:!text-gray-200"
7111
+ }
7112
+ ) }),
7113
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7114
+ "div",
7115
+ {
7116
+ className: cn(
7117
+ "absolute top-0 left-0 right-0 p-4 bg-gradient-to-b from-black/70 to-transparent transition-opacity",
7118
+ !isPlaying || showControls ? "opacity-100" : "opacity-0 group-hover:opacity-100"
7119
+ ),
7120
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "ml-auto block", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7121
+ IconButton_default,
7122
+ {
7123
+ icon: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.ArrowsInSimple, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.ArrowsOutSimple, { size: 24 }),
7124
+ onClick: toggleFullscreen,
7125
+ "aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
7126
+ className: "!bg-transparent !text-white hover:!bg-white/20"
7127
+ }
7128
+ ) })
7129
+ }
7130
+ ),
7131
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
7132
+ "div",
7133
+ {
7134
+ className: cn(
7135
+ "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/90 to-transparent transition-opacity",
7136
+ !isPlaying || showControls ? "opacity-100" : "opacity-0 group-hover:opacity-100"
7137
+ ),
7138
+ children: [
7139
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "px-4 pb-2", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7140
+ "input",
7141
+ {
7142
+ type: "range",
7143
+ min: 0,
7144
+ max: duration || 100,
7145
+ value: currentTime,
7146
+ onChange: (e) => {
7147
+ const newTime = parseFloat(e.target.value);
7148
+ if (videoRef.current) {
7149
+ videoRef.current.currentTime = newTime;
7150
+ }
7151
+ },
7152
+ className: "w-full h-1 bg-neutral-600 rounded-full appearance-none cursor-pointer slider:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-primary-500",
7153
+ "aria-label": "Video progress",
7154
+ style: {
7155
+ background: `linear-gradient(to right, #2271C4 ${progressPercentage}%, #D5D4D4 ${progressPercentage}%)`
7156
+ }
7157
+ }
7158
+ ) }),
7159
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-center justify-between px-4 pb-4", children: [
7160
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-center gap-4", children: [
7161
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7162
+ IconButton_default,
7163
+ {
7164
+ icon: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.Pause, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.Play, { size: 24 }),
7165
+ onClick: togglePlayPause,
7166
+ "aria-label": isPlaying ? "Pause" : "Play",
7167
+ className: "!bg-transparent !text-white hover:!bg-white/20"
7168
+ }
7169
+ ),
7170
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-center gap-2", children: [
7171
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7172
+ IconButton_default,
7173
+ {
7174
+ icon: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.SpeakerSlash, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.SpeakerHigh, { size: 24 }),
7175
+ onClick: toggleMute,
7176
+ "aria-label": isMuted ? "Unmute" : "Mute",
7177
+ className: "!bg-transparent !text-white hover:!bg-white/20"
7178
+ }
7179
+ ),
7180
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7181
+ "input",
7182
+ {
7183
+ type: "range",
7184
+ min: 0,
7185
+ max: 100,
7186
+ value: Math.round(volume * 100),
7187
+ onChange: (e) => handleVolumeChange(parseInt(e.target.value)),
7188
+ className: "w-20 h-1 bg-neutral-600 rounded-full appearance-none cursor-pointer focus:outline-none focus:ring-2 focus:ring-primary-500",
7189
+ "aria-label": "Volume control",
7190
+ style: {
7191
+ background: `linear-gradient(to right, #2271C4 ${volume * 100}%, #D5D4D4 ${volume * 100}%)`
7192
+ }
7193
+ }
7194
+ )
7195
+ ] }),
7196
+ subtitles && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7197
+ IconButton_default,
7198
+ {
7199
+ icon: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.ClosedCaptioning, { size: 24 }),
7200
+ onClick: toggleCaptions,
7201
+ "aria-label": showCaptions ? "Hide captions" : "Show captions",
7202
+ className: cn(
7203
+ "!bg-transparent hover:!bg-white/20",
7204
+ showCaptions ? "!text-primary-400" : "!text-white"
7205
+ )
7206
+ }
7207
+ ),
7208
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Text_default, { size: "sm", weight: "medium", color: "text-white", children: [
7209
+ formatTime(currentTime),
7210
+ " / ",
7211
+ formatTime(duration)
7212
+ ] })
7213
+ ] }),
7214
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "flex items-center gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "relative", children: [
7215
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
7216
+ IconButton_default,
7217
+ {
7218
+ icon: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_phosphor_react18.DotsThreeVertical, { size: 24 }),
7219
+ onClick: toggleSpeedMenu,
7220
+ "aria-label": "Playback speed",
7221
+ className: "!bg-transparent !text-white hover:!bg-white/20"
7222
+ }
7223
+ ),
7224
+ showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "absolute bottom-12 right-0 bg-black/90 rounded-lg p-2 min-w-20", children: [0.5, 0.75, 1, 1.25, 1.5, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
7225
+ "button",
7226
+ {
7227
+ onClick: () => handleSpeedChange(speed),
7228
+ className: `block w-full text-left px-3 py-1 text-sm rounded hover:bg-white/20 transition-colors ${playbackRate === speed ? "text-primary-400" : "text-white"}`,
7229
+ children: [
7230
+ speed,
7231
+ "x"
7232
+ ]
7233
+ },
7234
+ speed
7235
+ )) })
7236
+ ] }) })
7237
+ ] })
7238
+ ]
7239
+ }
7240
+ )
7241
+ ]
7242
+ }
7243
+ )
7244
+ ] });
7245
+ };
7246
+ var VideoPlayer_default = VideoPlayer;
7247
+
7248
+ // src/components/Auth/Auth.tsx
7249
+ var import_react23 = require("react");
7250
+ var import_react_router_dom = require("react-router-dom");
7251
+ var import_jsx_runtime37 = require("react/jsx-runtime");
7252
+ var AuthContext = (0, import_react23.createContext)(void 0);
6827
7253
  var AuthProvider = ({
6828
7254
  children,
6829
7255
  checkAuthFn,
@@ -6833,12 +7259,12 @@ var AuthProvider = ({
6833
7259
  getSessionFn,
6834
7260
  getTokensFn
6835
7261
  }) => {
6836
- const [authState, setAuthState] = (0, import_react22.useState)({
7262
+ const [authState, setAuthState] = (0, import_react23.useState)({
6837
7263
  isAuthenticated: false,
6838
7264
  isLoading: true,
6839
7265
  ...initialAuthState
6840
7266
  });
6841
- const checkAuth = (0, import_react22.useCallback)(async () => {
7267
+ const checkAuth = (0, import_react23.useCallback)(async () => {
6842
7268
  try {
6843
7269
  setAuthState((prev) => ({ ...prev, isLoading: true }));
6844
7270
  if (!checkAuthFn) {
@@ -6869,7 +7295,7 @@ var AuthProvider = ({
6869
7295
  return false;
6870
7296
  }
6871
7297
  }, [checkAuthFn, getUserFn, getSessionFn, getTokensFn]);
6872
- const signOut = (0, import_react22.useCallback)(() => {
7298
+ const signOut = (0, import_react23.useCallback)(() => {
6873
7299
  if (signOutFn) {
6874
7300
  signOutFn();
6875
7301
  }
@@ -6881,10 +7307,10 @@ var AuthProvider = ({
6881
7307
  tokens: void 0
6882
7308
  }));
6883
7309
  }, [signOutFn]);
6884
- (0, import_react22.useEffect)(() => {
7310
+ (0, import_react23.useEffect)(() => {
6885
7311
  checkAuth();
6886
7312
  }, [checkAuth]);
6887
- const contextValue = (0, import_react22.useMemo)(
7313
+ const contextValue = (0, import_react23.useMemo)(
6888
7314
  () => ({
6889
7315
  ...authState,
6890
7316
  checkAuth,
@@ -6892,10 +7318,10 @@ var AuthProvider = ({
6892
7318
  }),
6893
7319
  [authState, checkAuth, signOut]
6894
7320
  );
6895
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(AuthContext.Provider, { value: contextValue, children });
7321
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(AuthContext.Provider, { value: contextValue, children });
6896
7322
  };
6897
7323
  var useAuth = () => {
6898
- const context = (0, import_react22.useContext)(AuthContext);
7324
+ const context = (0, import_react23.useContext)(AuthContext);
6899
7325
  if (context === void 0) {
6900
7326
  throw new Error("useAuth deve ser usado dentro de um AuthProvider");
6901
7327
  }
@@ -6908,9 +7334,9 @@ var ProtectedRoute = ({
6908
7334
  additionalCheck
6909
7335
  }) => {
6910
7336
  const { isAuthenticated, isLoading, ...authState } = useAuth();
6911
- const defaultLoadingComponent = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
7337
+ const defaultLoadingComponent = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
6912
7338
  if (isLoading) {
6913
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment, { children: loadingComponent || defaultLoadingComponent });
7339
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children: loadingComponent || defaultLoadingComponent });
6914
7340
  }
6915
7341
  if (!isAuthenticated) {
6916
7342
  if (typeof window !== "undefined") {
@@ -6921,12 +7347,12 @@ var ProtectedRoute = ({
6921
7347
  return null;
6922
7348
  }
6923
7349
  }
6924
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
7350
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
6925
7351
  }
6926
7352
  if (additionalCheck && !additionalCheck({ isAuthenticated, isLoading, ...authState })) {
6927
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
7353
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
6928
7354
  }
6929
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment, { children });
7355
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
6930
7356
  };
6931
7357
  var PublicRoute = ({
6932
7358
  children,
@@ -6936,15 +7362,15 @@ var PublicRoute = ({
6936
7362
  }) => {
6937
7363
  const { isAuthenticated, isLoading } = useAuth();
6938
7364
  if (checkAuthBeforeRender && isLoading) {
6939
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
7365
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
6940
7366
  }
6941
7367
  if (isAuthenticated && redirectIfAuthenticated) {
6942
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
7368
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
6943
7369
  }
6944
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment, { children });
7370
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
6945
7371
  };
6946
7372
  var withAuth = (Component, options = {}) => {
6947
- return (props) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ProtectedRoute, { ...options, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Component, { ...props }) });
7373
+ return (props) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ProtectedRoute, { ...options, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Component, { ...props }) });
6948
7374
  };
6949
7375
  var useAuthGuard = (options = {}) => {
6950
7376
  const authState = useAuth();
@@ -6959,7 +7385,7 @@ var useAuthGuard = (options = {}) => {
6959
7385
  var useRouteAuth = (fallbackPath = "/") => {
6960
7386
  const { isAuthenticated, isLoading } = useAuth();
6961
7387
  const location = (0, import_react_router_dom.useLocation)();
6962
- const redirectToLogin = () => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react_router_dom.Navigate, { to: fallbackPath, state: { from: location }, replace: true });
7388
+ const redirectToLogin = () => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react_router_dom.Navigate, { to: fallbackPath, state: { from: location }, replace: true });
6963
7389
  return {
6964
7390
  isAuthenticated,
6965
7391
  isLoading,
@@ -6972,7 +7398,19 @@ var getRootDomain = () => {
6972
7398
  if (hostname === "localhost") {
6973
7399
  return `${protocol}//${hostname}${portStr}`;
6974
7400
  }
7401
+ const isIPv4 = /^\d{1,3}(?:\.\d{1,3}){3}$/.test(hostname);
7402
+ const isIPv6 = hostname.includes(":");
7403
+ if (isIPv4 || isIPv6) {
7404
+ return `${protocol}//${hostname}${portStr}`;
7405
+ }
6975
7406
  const parts = hostname.split(".");
7407
+ if (parts.length >= 3 && parts[parts.length - 2] === "com" && parts[parts.length - 1] === "br") {
7408
+ if (parts.length === 3) {
7409
+ return `${protocol}//${hostname}${portStr}`;
7410
+ }
7411
+ const base = parts.slice(-3).join(".");
7412
+ return `${protocol}//${base}${portStr}`;
7413
+ }
6976
7414
  if (parts.length > 2) {
6977
7415
  const base = parts.slice(-2).join(".");
6978
7416
  return `${protocol}//${base}${portStr}`;
@@ -7023,7 +7461,7 @@ function createZustandAuthAdapter(useAuthStore) {
7023
7461
  }
7024
7462
 
7025
7463
  // src/components/Auth/useUrlAuthentication.ts
7026
- var import_react23 = require("react");
7464
+ var import_react24 = require("react");
7027
7465
  var import_react_router_dom2 = require("react-router-dom");
7028
7466
  var getAuthParams = (location, extractParams) => {
7029
7467
  const searchParams = new URLSearchParams(location.search);
@@ -7071,7 +7509,7 @@ var handleUserData = (responseData, setUser) => {
7071
7509
  };
7072
7510
  function useUrlAuthentication(options) {
7073
7511
  const location = (0, import_react_router_dom2.useLocation)();
7074
- (0, import_react23.useEffect)(() => {
7512
+ (0, import_react24.useEffect)(() => {
7075
7513
  const handleAuthentication = async () => {
7076
7514
  const authParams = getAuthParams(location, options.extractParams);
7077
7515
  if (!hasValidAuthParams(authParams)) {
@@ -7110,9 +7548,9 @@ function useUrlAuthentication(options) {
7110
7548
  }
7111
7549
 
7112
7550
  // src/components/Auth/useApiConfig.ts
7113
- var import_react24 = require("react");
7551
+ var import_react25 = require("react");
7114
7552
  function useApiConfig(api) {
7115
- return (0, import_react24.useMemo)(
7553
+ return (0, import_react25.useMemo)(
7116
7554
  () => ({
7117
7555
  get: (endpoint, config) => api.get(endpoint, config)
7118
7556
  }),
@@ -7121,8 +7559,8 @@ function useApiConfig(api) {
7121
7559
  }
7122
7560
 
7123
7561
  // src/components/Quiz/Quiz.tsx
7124
- var import_phosphor_react18 = require("phosphor-react");
7125
- var import_react25 = require("react");
7562
+ var import_phosphor_react19 = require("phosphor-react");
7563
+ var import_react26 = require("react");
7126
7564
 
7127
7565
  // src/components/Quiz/useQuizStore.ts
7128
7566
  var import_zustand7 = require("zustand");
@@ -7158,6 +7596,7 @@ var useQuizStore = (0, import_zustand7.create)()(
7158
7596
  isStarted: false,
7159
7597
  isFinished: false,
7160
7598
  userId: "",
7599
+ variant: "default",
7161
7600
  // Setters
7162
7601
  setBySimulated: (simulado) => set({ bySimulated: simulado }),
7163
7602
  setByActivity: (atividade) => set({ byActivity: atividade }),
@@ -7165,6 +7604,7 @@ var useQuizStore = (0, import_zustand7.create)()(
7165
7604
  setUserId: (userId) => set({ userId }),
7166
7605
  setUserAnswers: (userAnswers) => set({ userAnswers }),
7167
7606
  getUserId: () => get().userId,
7607
+ setVariant: (variant) => set({ variant }),
7168
7608
  // Navigation
7169
7609
  goToNextQuestion: () => {
7170
7610
  const { currentQuestionIndex, getTotalQuestions } = get();
@@ -7620,13 +8060,13 @@ var simulated_result_default = "./simulated-result-QN5HCUY5.png";
7620
8060
  var mock_image_question_default = "./mock-image-question-HEZCLFDL.png";
7621
8061
 
7622
8062
  // src/components/Quiz/Quiz.tsx
7623
- var import_jsx_runtime37 = require("react/jsx-runtime");
8063
+ var import_jsx_runtime38 = require("react/jsx-runtime");
7624
8064
  var getStatusBadge = (status) => {
7625
8065
  switch (status) {
7626
8066
  case "correct":
7627
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.CheckCircle, {}), children: "Resposta correta" });
8067
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.CheckCircle, {}), children: "Resposta correta" });
7628
8068
  case "incorrect":
7629
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.XCircle, {}), children: "Resposta incorreta" });
8069
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.XCircle, {}), children: "Resposta incorreta" });
7630
8070
  default:
7631
8071
  return null;
7632
8072
  }
@@ -7639,8 +8079,12 @@ var getStatusStyles = (variantCorrect) => {
7639
8079
  return "bg-error-background border-error-300";
7640
8080
  }
7641
8081
  };
7642
- var Quiz = (0, import_react25.forwardRef)(({ children, className, ...props }, ref) => {
7643
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8082
+ var Quiz = (0, import_react26.forwardRef)(({ children, className, variant = "default", ...props }, ref) => {
8083
+ const { setVariant } = useQuizStore();
8084
+ (0, import_react26.useEffect)(() => {
8085
+ setVariant(variant);
8086
+ }, [variant, setVariant]);
8087
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
7644
8088
  "div",
7645
8089
  {
7646
8090
  ref,
@@ -7653,12 +8097,12 @@ var Quiz = (0, import_react25.forwardRef)(({ children, className, ...props }, re
7653
8097
  }
7654
8098
  );
7655
8099
  });
7656
- var QuizHeaderResult = (0, import_react25.forwardRef)(
8100
+ var QuizHeaderResult = (0, import_react26.forwardRef)(
7657
8101
  ({ className, ...props }, ref) => {
7658
8102
  const { getAllCurrentAnswer } = useQuizStore();
7659
8103
  const usersAnswer = getAllCurrentAnswer();
7660
- const [isCorrect, setIsCorrect] = (0, import_react25.useState)(false);
7661
- (0, import_react25.useEffect)(() => {
8104
+ const [isCorrect, setIsCorrect] = (0, import_react26.useState)(false);
8105
+ (0, import_react26.useEffect)(() => {
7662
8106
  if (usersAnswer) {
7663
8107
  setIsCorrect(
7664
8108
  usersAnswer.length > 0 ? usersAnswer.map(
@@ -7667,7 +8111,7 @@ var QuizHeaderResult = (0, import_react25.forwardRef)(
7667
8111
  );
7668
8112
  }
7669
8113
  }, [usersAnswer]);
7670
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8114
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
7671
8115
  "div",
7672
8116
  {
7673
8117
  ref,
@@ -7678,26 +8122,26 @@ var QuizHeaderResult = (0, import_react25.forwardRef)(
7678
8122
  ),
7679
8123
  ...props,
7680
8124
  children: [
7681
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Resultado" }),
7682
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-700 text-md", children: isCorrect ? "\u{1F389} Parab\xE9ns!!" : "N\xE3o foi dessa vez..." })
8125
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Resultado" }),
8126
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-700 text-md", children: isCorrect ? "\u{1F389} Parab\xE9ns!!" : "N\xE3o foi dessa vez..." })
7683
8127
  ]
7684
8128
  }
7685
8129
  );
7686
8130
  }
7687
8131
  );
7688
- var QuizTitle = (0, import_react25.forwardRef)(
8132
+ var QuizTitle = (0, import_react26.forwardRef)(
7689
8133
  ({ className, ...props }, ref) => {
7690
8134
  const {
7691
8135
  currentQuestionIndex,
7692
8136
  getTotalQuestions,
7693
8137
  getQuizTitle,
7694
8138
  timeElapsed,
7695
- formatTime,
8139
+ formatTime: formatTime2,
7696
8140
  isStarted
7697
8141
  } = useQuizStore();
7698
8142
  const totalQuestions = getTotalQuestions();
7699
8143
  const quizTitle = getQuizTitle();
7700
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8144
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
7701
8145
  "div",
7702
8146
  {
7703
8147
  ref,
@@ -7707,25 +8151,25 @@ var QuizTitle = (0, import_react25.forwardRef)(
7707
8151
  ),
7708
8152
  ...props,
7709
8153
  children: [
7710
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "flex flex-col gap-2 text-center", children: [
7711
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-950 font-bold text-md", children: quizTitle }),
7712
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-600 text-xs", children: totalQuestions > 0 ? `${currentQuestionIndex + 1} de ${totalQuestions}` : "0 de 0" })
8154
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "flex flex-col gap-2 text-center", children: [
8155
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-950 font-bold text-md", children: quizTitle }),
8156
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-600 text-xs", children: totalQuestions > 0 ? `${currentQuestionIndex + 1} de ${totalQuestions}` : "0 de 0" })
7713
8157
  ] }),
7714
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "absolute right-2", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Badge_default, { variant: "outlined", action: "info", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.Clock, {}), children: isStarted ? formatTime(timeElapsed) : "00:00" }) })
8158
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "absolute right-2", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Badge_default, { variant: "outlined", action: "info", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.Clock, {}), children: isStarted ? formatTime2(timeElapsed) : "00:00" }) })
7715
8159
  ]
7716
8160
  }
7717
8161
  );
7718
8162
  }
7719
8163
  );
7720
- var QuizSubTitle = (0, import_react25.forwardRef)(
8164
+ var QuizSubTitle = (0, import_react26.forwardRef)(
7721
8165
  ({ subTitle, ...props }, ref) => {
7722
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "px-4 pb-2 pt-6", ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "font-bold text-lg text-text-950", children: subTitle }) });
8166
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "px-4 pb-2 pt-6", ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "font-bold text-lg text-text-950", children: subTitle }) });
7723
8167
  }
7724
8168
  );
7725
8169
  var QuizHeader = () => {
7726
8170
  const { getCurrentQuestion, currentQuestionIndex } = useQuizStore();
7727
8171
  const currentQuestion = getCurrentQuestion();
7728
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8172
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
7729
8173
  HeaderAlternative,
7730
8174
  {
7731
8175
  title: currentQuestion ? `Quest\xE3o ${currentQuestionIndex + 1}` : "Quest\xE3o",
@@ -7734,8 +8178,8 @@ var QuizHeader = () => {
7734
8178
  }
7735
8179
  );
7736
8180
  };
7737
- var QuizContainer = (0, import_react25.forwardRef)(({ children, className, ...props }, ref) => {
7738
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8181
+ var QuizContainer = (0, import_react26.forwardRef)(({ children, className, ...props }, ref) => {
8182
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
7739
8183
  "div",
7740
8184
  {
7741
8185
  ref,
@@ -7748,8 +8192,8 @@ var QuizContainer = (0, import_react25.forwardRef)(({ children, className, ...pr
7748
8192
  }
7749
8193
  );
7750
8194
  });
7751
- var QuizContent = (0, import_react25.forwardRef)(({ variant, paddingBottom }) => {
7752
- const { getCurrentQuestion } = useQuizStore();
8195
+ var QuizContent = (0, import_react26.forwardRef)(({ paddingBottom }) => {
8196
+ const { getCurrentQuestion, variant } = useQuizStore();
7753
8197
  const currentQuestion = getCurrentQuestion();
7754
8198
  const questionComponents = {
7755
8199
  ["ALTERNATIVA" /* ALTERNATIVA */]: QuizAlternative,
@@ -7761,7 +8205,7 @@ var QuizContent = (0, import_react25.forwardRef)(({ variant, paddingBottom }) =>
7761
8205
  ["IMAGEM" /* IMAGEM */]: QuizImageQuestion
7762
8206
  };
7763
8207
  const QuestionComponent = currentQuestion ? questionComponents[currentQuestion.type] : null;
7764
- return QuestionComponent ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuestionComponent, { variant, paddingBottom }) : null;
8208
+ return QuestionComponent ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuestionComponent, { variant, paddingBottom }) : null;
7765
8209
  });
7766
8210
  var QuizAlternative = ({
7767
8211
  variant = "default",
@@ -7789,10 +8233,10 @@ var QuizAlternative = ({
7789
8233
  };
7790
8234
  });
7791
8235
  if (!alternatives)
7792
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { children: "N\xE3o h\xE1 Alternativas" }) });
7793
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
7794
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
7795
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8236
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { children: "N\xE3o h\xE1 Alternativas" }) });
8237
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8238
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8239
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
7796
8240
  AlternativesList,
7797
8241
  {
7798
8242
  mode: variant === "default" ? "interactive" : "readonly",
@@ -7818,15 +8262,15 @@ var QuizMultipleChoice = ({
7818
8262
  const { getCurrentQuestion, selectMultipleAnswer, getAllCurrentAnswer } = useQuizStore();
7819
8263
  const currentQuestion = getCurrentQuestion();
7820
8264
  const allCurrentAnswers = getAllCurrentAnswer();
7821
- const prevSelectedValuesRef = (0, import_react25.useRef)([]);
7822
- const prevQuestionIdRef = (0, import_react25.useRef)("");
7823
- const allCurrentAnswerIds = (0, import_react25.useMemo)(() => {
8265
+ const prevSelectedValuesRef = (0, import_react26.useRef)([]);
8266
+ const prevQuestionIdRef = (0, import_react26.useRef)("");
8267
+ const allCurrentAnswerIds = (0, import_react26.useMemo)(() => {
7824
8268
  return allCurrentAnswers?.map((answer) => answer.optionId) || [];
7825
8269
  }, [allCurrentAnswers]);
7826
- const selectedValues = (0, import_react25.useMemo)(() => {
8270
+ const selectedValues = (0, import_react26.useMemo)(() => {
7827
8271
  return allCurrentAnswerIds?.filter((id) => id !== null) || [];
7828
8272
  }, [allCurrentAnswerIds]);
7829
- const stableSelectedValues = (0, import_react25.useMemo)(() => {
8273
+ const stableSelectedValues = (0, import_react26.useMemo)(() => {
7830
8274
  const currentQuestionId = currentQuestion?.id || "";
7831
8275
  const hasQuestionChanged = prevQuestionIdRef.current !== currentQuestionId;
7832
8276
  if (hasQuestionChanged) {
@@ -7841,7 +8285,7 @@ var QuizMultipleChoice = ({
7841
8285
  }
7842
8286
  return prevSelectedValuesRef.current;
7843
8287
  }, [selectedValues, currentQuestion?.id]);
7844
- const handleSelectedValues = (0, import_react25.useCallback)(
8288
+ const handleSelectedValues = (0, import_react26.useCallback)(
7845
8289
  (values) => {
7846
8290
  if (currentQuestion) {
7847
8291
  selectMultipleAnswer(currentQuestion.id, values);
@@ -7849,7 +8293,7 @@ var QuizMultipleChoice = ({
7849
8293
  },
7850
8294
  [currentQuestion, selectMultipleAnswer]
7851
8295
  );
7852
- const questionKey = (0, import_react25.useMemo)(
8296
+ const questionKey = (0, import_react26.useMemo)(
7853
8297
  () => `question-${currentQuestion?.id || "1"}`,
7854
8298
  [currentQuestion?.id]
7855
8299
  );
@@ -7870,10 +8314,10 @@ var QuizMultipleChoice = ({
7870
8314
  };
7871
8315
  });
7872
8316
  if (!choices)
7873
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { children: "N\xE3o h\xE1 Escolhas Multiplas" }) });
7874
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
7875
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
7876
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8317
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { children: "N\xE3o h\xE1 Escolhas Multiplas" }) });
8318
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8319
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8320
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
7877
8321
  MultipleChoiceList,
7878
8322
  {
7879
8323
  choices,
@@ -7893,13 +8337,13 @@ var QuizDissertative = ({
7893
8337
  const { getCurrentQuestion, getCurrentAnswer, selectDissertativeAnswer } = useQuizStore();
7894
8338
  const currentQuestion = getCurrentQuestion();
7895
8339
  const currentAnswer = getCurrentAnswer();
7896
- const textareaRef = (0, import_react25.useRef)(null);
8340
+ const textareaRef = (0, import_react26.useRef)(null);
7897
8341
  const handleAnswerChange = (value) => {
7898
8342
  if (currentQuestion) {
7899
8343
  selectDissertativeAnswer(currentQuestion.id, value);
7900
8344
  }
7901
8345
  };
7902
- const adjustTextareaHeight = (0, import_react25.useCallback)(() => {
8346
+ const adjustTextareaHeight = (0, import_react26.useCallback)(() => {
7903
8347
  if (textareaRef.current) {
7904
8348
  textareaRef.current.style.height = "auto";
7905
8349
  const scrollHeight = textareaRef.current.scrollHeight;
@@ -7909,15 +8353,15 @@ var QuizDissertative = ({
7909
8353
  textareaRef.current.style.height = `${newHeight}px`;
7910
8354
  }
7911
8355
  }, []);
7912
- (0, import_react25.useEffect)(() => {
8356
+ (0, import_react26.useEffect)(() => {
7913
8357
  adjustTextareaHeight();
7914
8358
  }, [currentAnswer, adjustTextareaHeight]);
7915
8359
  if (!currentQuestion) {
7916
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-600 text-md", children: "Nenhuma quest\xE3o dispon\xEDvel" }) });
8360
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-600 text-md", children: "Nenhuma quest\xE3o dispon\xEDvel" }) });
7917
8361
  }
7918
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
7919
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Resposta" }),
7920
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn(variant != "result" && paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-4 max-h-[600px] overflow-y-auto", children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8362
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8363
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Resposta" }),
8364
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn(variant != "result" && paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-4 max-h-[600px] overflow-y-auto", children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
7921
8365
  TextArea_default,
7922
8366
  {
7923
8367
  ref: textareaRef,
@@ -7927,10 +8371,10 @@ var QuizDissertative = ({
7927
8371
  rows: 4,
7928
8372
  className: "min-h-[120px] max-h-[400px] resize-none overflow-y-auto"
7929
8373
  }
7930
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: currentAnswer?.answer || "Nenhuma resposta fornecida" }) }) }) }),
7931
- variant === "result" && currentAnswer?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
7932
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Observa\xE7\xE3o do professor" }),
7933
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Mauris euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim." }) })
8374
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: currentAnswer?.answer || "Nenhuma resposta fornecida" }) }) }) }),
8375
+ variant === "result" && currentAnswer?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8376
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Observa\xE7\xE3o do professor" }),
8377
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Mauris euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer euismod, urna eu tincidunt consectetur, nisi nisl aliquam nunc, eget aliquam massa nisl quis neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim." }) })
7934
8378
  ] })
7935
8379
  ] });
7936
8380
  };
@@ -7958,16 +8402,16 @@ var QuizTrueOrFalse = ({
7958
8402
  ];
7959
8403
  const getLetterByIndex = (index) => String.fromCharCode(97 + index);
7960
8404
  const isDefaultVariant = variant == "default";
7961
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
7962
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
7963
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
8405
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8406
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8407
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
7964
8408
  const variantCorrect = option.isCorrect ? "correct" : "incorrect";
7965
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8409
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
7966
8410
  "section",
7967
8411
  {
7968
8412
  className: "flex flex-col gap-2",
7969
8413
  children: [
7970
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8414
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
7971
8415
  "div",
7972
8416
  {
7973
8417
  className: cn(
@@ -7975,20 +8419,20 @@ var QuizTrueOrFalse = ({
7975
8419
  !isDefaultVariant ? getStatusStyles(variantCorrect) : ""
7976
8420
  ),
7977
8421
  children: [
7978
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index).concat(") ").concat(option.label) }),
7979
- isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Select_default, { size: "medium", children: [
7980
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectValue, { placeholder: "Selecione opc\xE3o" }) }),
7981
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(SelectContent, { children: [
7982
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: "V", children: "Verdadeiro" }),
7983
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: "F", children: "Falso" })
8422
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index).concat(") ").concat(option.label) }),
8423
+ isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Select_default, { size: "medium", children: [
8424
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectValue, { placeholder: "Selecione opc\xE3o" }) }),
8425
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(SelectContent, { children: [
8426
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: "V", children: "Verdadeiro" }),
8427
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: "F", children: "Falso" })
7984
8428
  ] })
7985
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex-shrink-0", children: getStatusBadge(variantCorrect) })
8429
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex-shrink-0", children: getStatusBadge(variantCorrect) })
7986
8430
  ]
7987
8431
  }
7988
8432
  ),
7989
- !isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
7990
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta selecionada: V" }),
7991
- !option.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta correta: F" })
8433
+ !isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
8434
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta selecionada: V" }),
8435
+ !option.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta correta: F" })
7992
8436
  ] })
7993
8437
  ]
7994
8438
  },
@@ -8051,7 +8495,7 @@ var QuizConnectDots = ({
8051
8495
  isCorrect: false
8052
8496
  }
8053
8497
  ];
8054
- const [userAnswers, setUserAnswers] = (0, import_react25.useState)(() => {
8498
+ const [userAnswers, setUserAnswers] = (0, import_react26.useState)(() => {
8055
8499
  if (variant === "result") {
8056
8500
  return mockUserAnswers;
8057
8501
  }
@@ -8080,13 +8524,13 @@ var QuizConnectDots = ({
8080
8524
  const assignedDots = new Set(
8081
8525
  userAnswers.map((a) => a.dotOption).filter(Boolean)
8082
8526
  );
8083
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8084
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8085
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
8527
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8528
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8529
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
8086
8530
  const answer = userAnswers[index];
8087
8531
  const variantCorrect = answer.isCorrect ? "correct" : "incorrect";
8088
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("section", { className: "flex flex-col gap-2", children: [
8089
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8532
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("section", { className: "flex flex-col gap-2", children: [
8533
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8090
8534
  "div",
8091
8535
  {
8092
8536
  className: cn(
@@ -8094,30 +8538,30 @@ var QuizConnectDots = ({
8094
8538
  !isDefaultVariant ? getStatusStyles(variantCorrect) : ""
8095
8539
  ),
8096
8540
  children: [
8097
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index) + ") " + option.label }),
8098
- isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8541
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index) + ") " + option.label }),
8542
+ isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8099
8543
  Select_default,
8100
8544
  {
8101
8545
  size: "medium",
8102
8546
  value: answer.dotOption || void 0,
8103
8547
  onValueChange: (value) => handleSelectDot(index, value),
8104
8548
  children: [
8105
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
8106
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectContent, { children: dotsOptions.filter(
8549
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
8550
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectContent, { children: dotsOptions.filter(
8107
8551
  (dot) => !assignedDots.has(dot.label) || answer.dotOption === dot.label
8108
- ).map((dot) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: dot.label, children: dot.label }, dot.label)) })
8552
+ ).map((dot) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: dot.label, children: dot.label }, dot.label)) })
8109
8553
  ]
8110
8554
  }
8111
- ) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex-shrink-0", children: answer.isCorrect === null ? null : getStatusBadge(variantCorrect) })
8555
+ ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex-shrink-0", children: answer.isCorrect === null ? null : getStatusBadge(variantCorrect) })
8112
8556
  ]
8113
8557
  }
8114
8558
  ),
8115
- !isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
8116
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("p", { className: "text-text-800 text-2xs", children: [
8559
+ !isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
8560
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "text-text-800 text-2xs", children: [
8117
8561
  "Resposta selecionada: ",
8118
8562
  answer.dotOption || "Nenhuma"
8119
8563
  ] }),
8120
- !answer.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("p", { className: "text-text-800 text-2xs", children: [
8564
+ !answer.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "text-text-800 text-2xs", children: [
8121
8565
  "Resposta correta: ",
8122
8566
  answer.correctOption
8123
8567
  ] })
@@ -8172,8 +8616,8 @@ var QuizFill = ({
8172
8616
  isCorrect: true
8173
8617
  }
8174
8618
  ];
8175
- const [answers, setAnswers] = (0, import_react25.useState)({});
8176
- const baseId = (0, import_react25.useId)();
8619
+ const [answers, setAnswers] = (0, import_react26.useState)({});
8620
+ const baseId = (0, import_react26.useId)();
8177
8621
  const getAvailableOptionsForSelect = (selectId) => {
8178
8622
  const usedOptions = Object.entries(answers).filter(([key]) => key !== selectId).map(([, value]) => value);
8179
8623
  return options.filter((option) => !usedOptions.includes(option));
@@ -8186,18 +8630,18 @@ var QuizFill = ({
8186
8630
  const mockAnswer = mockUserAnswers.find(
8187
8631
  (answer) => answer.selectId === selectId
8188
8632
  );
8189
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "inline-flex mb-2.5 text-success-600 font-semibold text-md border-b-2 border-success-600", children: mockAnswer?.correctAnswer });
8633
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "inline-flex mb-2.5 text-success-600 font-semibold text-md border-b-2 border-success-600", children: mockAnswer?.correctAnswer });
8190
8634
  };
8191
8635
  const renderDefaultElement = (selectId, startIndex, selectedValue, availableOptionsForThisSelect) => {
8192
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8636
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8193
8637
  Select_default,
8194
8638
  {
8195
8639
  value: selectedValue,
8196
8640
  onValueChange: (value) => handleSelectChange(selectId, value),
8197
8641
  className: "inline-flex mb-2.5",
8198
8642
  children: [
8199
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectTrigger, { className: "inline-flex w-auto min-w-[140px] h-8 mx-1 bg-white border-gray-300", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
8200
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectContent, { children: availableOptionsForThisSelect.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: option, children: option }, `${option}-${index}`)) })
8643
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectTrigger, { className: "inline-flex w-auto min-w-[140px] h-8 mx-1 bg-white border-gray-300", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
8644
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectContent, { children: availableOptionsForThisSelect.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: option, children: option }, `${option}-${index}`)) })
8201
8645
  ]
8202
8646
  },
8203
8647
  `${selectId}-${startIndex}`
@@ -8209,8 +8653,8 @@ var QuizFill = ({
8209
8653
  );
8210
8654
  if (!mockAnswer) return null;
8211
8655
  const action = mockAnswer.isCorrect ? "success" : "error";
8212
- const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.CheckCircle, {}) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.XCircle, {});
8213
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8656
+ const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.CheckCircle, {}) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.XCircle, {});
8657
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8214
8658
  Badge_default,
8215
8659
  {
8216
8660
  variant: "solid",
@@ -8218,7 +8662,7 @@ var QuizFill = ({
8218
8662
  iconRight: icon,
8219
8663
  size: "large",
8220
8664
  className: "py-3 w-[180px] justify-between mb-2.5",
8221
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-text-900", children: mockAnswer.userAnswer })
8665
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-text-900", children: mockAnswer.userAnswer })
8222
8666
  },
8223
8667
  selectId
8224
8668
  );
@@ -8274,25 +8718,25 @@ var QuizFill = ({
8274
8718
  }
8275
8719
  return elements;
8276
8720
  };
8277
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8278
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8279
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-6 px-4 h-auto", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8721
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8722
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
8723
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-6 px-4 h-auto", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8280
8724
  "div",
8281
8725
  {
8282
8726
  className: cn(
8283
8727
  "text-lg text-text-900 leading-8 h-auto",
8284
8728
  variant != "result" && paddingBottom
8285
8729
  ),
8286
- children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: element.element }, element.id))
8730
+ children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: element.element }, element.id))
8287
8731
  }
8288
8732
  ) }) }),
8289
- variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8290
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Resultado" }),
8291
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-6 px-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8733
+ variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8734
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Resultado" }),
8735
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-6 px-4", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8292
8736
  "div",
8293
8737
  {
8294
8738
  className: cn("text-lg text-text-900 leading-8", paddingBottom),
8295
- children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: element.element }, element.id))
8739
+ children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: element.element }, element.id))
8296
8740
  }
8297
8741
  ) }) })
8298
8742
  ] })
@@ -8312,7 +8756,7 @@ var QuizImageQuestion = ({
8312
8756
  };
8313
8757
  const correctRadiusRelative = calculateCorrectRadiusRelative();
8314
8758
  const mockUserAnswerRelative = { x: 0.72, y: 0.348 };
8315
- const [clickPositionRelative, setClickPositionRelative] = (0, import_react25.useState)(variant == "result" ? mockUserAnswerRelative : null);
8759
+ const [clickPositionRelative, setClickPositionRelative] = (0, import_react26.useState)(variant == "result" ? mockUserAnswerRelative : null);
8316
8760
  const convertToRelativeCoordinates = (x, y, rect) => {
8317
8761
  const safeWidth = Math.max(rect.width, 1e-3);
8318
8762
  const safeHeight = Math.max(rect.height, 1e-3);
@@ -8348,36 +8792,36 @@ var QuizImageQuestion = ({
8348
8792
  }
8349
8793
  return "bg-success-600/70 border-white";
8350
8794
  };
8351
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8352
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizSubTitle, { subTitle: "Clique na \xE1rea correta" }),
8353
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8795
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8796
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizSubTitle, { subTitle: "Clique na \xE1rea correta" }),
8797
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8354
8798
  "div",
8355
8799
  {
8356
8800
  "data-testid": "quiz-image-container",
8357
8801
  className: "space-y-6 p-3 relative inline-block",
8358
8802
  children: [
8359
- variant == "result" && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8803
+ variant == "result" && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8360
8804
  "div",
8361
8805
  {
8362
8806
  "data-testid": "quiz-legend",
8363
8807
  className: "flex items-center gap-4 text-xs",
8364
8808
  children: [
8365
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2", children: [
8366
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-primary/70 border border-[#F8CC2E]" }),
8367
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "\xC1rea correta" })
8809
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center gap-2", children: [
8810
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-primary/70 border border-[#F8CC2E]" }),
8811
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "\xC1rea correta" })
8368
8812
  ] }),
8369
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2", children: [
8370
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "w-3 h-3 rounded-full bg-success-600/70 border border-white" }),
8371
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta correta" })
8813
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center gap-2", children: [
8814
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-3 h-3 rounded-full bg-success-600/70 border border-white" }),
8815
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta correta" })
8372
8816
  ] }),
8373
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2", children: [
8374
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-error/70 border border-white" }),
8375
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta incorreta" })
8817
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center gap-2", children: [
8818
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-error/70 border border-white" }),
8819
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta incorreta" })
8376
8820
  ] })
8377
8821
  ]
8378
8822
  }
8379
8823
  ),
8380
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8824
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8381
8825
  "button",
8382
8826
  {
8383
8827
  "data-testid": "quiz-image-button",
@@ -8392,7 +8836,7 @@ var QuizImageQuestion = ({
8392
8836
  },
8393
8837
  "aria-label": "\xC1rea da imagem interativa",
8394
8838
  children: [
8395
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8839
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8396
8840
  "img",
8397
8841
  {
8398
8842
  "data-testid": "quiz-image",
@@ -8401,7 +8845,7 @@ var QuizImageQuestion = ({
8401
8845
  className: "w-full h-auto rounded-md"
8402
8846
  }
8403
8847
  ),
8404
- variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8848
+ variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8405
8849
  "div",
8406
8850
  {
8407
8851
  "data-testid": "quiz-correct-circle",
@@ -8416,7 +8860,7 @@ var QuizImageQuestion = ({
8416
8860
  }
8417
8861
  }
8418
8862
  ),
8419
- clickPositionRelative && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8863
+ clickPositionRelative && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8420
8864
  "div",
8421
8865
  {
8422
8866
  "data-testid": "quiz-user-circle",
@@ -8484,16 +8928,16 @@ var QuizQuestionList = ({
8484
8928
  return "Em branco";
8485
8929
  }
8486
8930
  };
8487
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-6 px-4", children: Object.entries(filteredGroupedQuestions).map(
8488
- ([subjectId, questions]) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("section", { className: "flex flex-col gap-2", children: [
8489
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "pt-6 pb-4 flex flex-row gap-2", children: [
8490
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "bg-primary-500 p-1 rounded-sm flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.BookOpen, { size: 17, className: "text-white" }) }),
8491
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-800 font-bold text-lg", children: subjectId })
8931
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "space-y-6 px-4", children: Object.entries(filteredGroupedQuestions).map(
8932
+ ([subjectId, questions]) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("section", { className: "flex flex-col gap-2", children: [
8933
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "pt-6 pb-4 flex flex-row gap-2", children: [
8934
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "bg-primary-500 p-1 rounded-sm flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.BookOpen, { size: 17, className: "text-white" }) }),
8935
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-800 font-bold text-lg", children: subjectId })
8492
8936
  ] }),
8493
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { className: "flex flex-col gap-2", children: questions.map((question) => {
8937
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ul", { className: "flex flex-col gap-2", children: questions.map((question) => {
8494
8938
  const status = getQuestionStatus(question.id);
8495
8939
  const questionNumber = getQuestionIndex(question.id);
8496
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8940
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8497
8941
  CardStatus,
8498
8942
  {
8499
8943
  header: `Quest\xE3o ${questionNumber.toString().padStart(2, "0")}`,
@@ -8509,13 +8953,12 @@ var QuizQuestionList = ({
8509
8953
  ] }, subjectId)
8510
8954
  ) });
8511
8955
  };
8512
- var QuizFooter = (0, import_react25.forwardRef)(
8956
+ var QuizFooter = (0, import_react26.forwardRef)(
8513
8957
  ({
8514
8958
  className,
8515
8959
  onGoToSimulated,
8516
8960
  onDetailResult,
8517
8961
  handleFinishSimulated,
8518
- variant = "default",
8519
8962
  ...props
8520
8963
  }, ref) => {
8521
8964
  const {
@@ -8529,6 +8972,7 @@ var QuizFooter = (0, import_react25.forwardRef)(
8529
8972
  skipQuestion,
8530
8973
  getCurrentQuestion,
8531
8974
  getQuestionStatusFromUserAnswers,
8975
+ variant,
8532
8976
  getActiveQuiz
8533
8977
  } = useQuizStore();
8534
8978
  const totalQuestions = getTotalQuestions();
@@ -8537,10 +8981,11 @@ var QuizFooter = (0, import_react25.forwardRef)(
8537
8981
  const currentAnswer = getCurrentAnswer();
8538
8982
  const currentQuestion = getCurrentQuestion();
8539
8983
  const isCurrentQuestionSkipped = currentQuestion ? getQuestionStatusFromUserAnswers(currentQuestion.id) === "skipped" : false;
8540
- const [alertDialogOpen, setAlertDialogOpen] = (0, import_react25.useState)(false);
8541
- const [modalResultOpen, setModalResultOpen] = (0, import_react25.useState)(false);
8542
- const [modalNavigateOpen, setModalNavigateOpen] = (0, import_react25.useState)(false);
8543
- const [filterType, setFilterType] = (0, import_react25.useState)("all");
8984
+ const [alertDialogOpen, setAlertDialogOpen] = (0, import_react26.useState)(false);
8985
+ const [modalResultOpen, setModalResultOpen] = (0, import_react26.useState)(false);
8986
+ const [modalNavigateOpen, setModalNavigateOpen] = (0, import_react26.useState)(false);
8987
+ const [modalResolutionOpen, setModalResolutionOpen] = (0, import_react26.useState)(false);
8988
+ const [filterType, setFilterType] = (0, import_react26.useState)("all");
8544
8989
  const unansweredQuestions = getUnansweredQuestionsFromUserAnswers();
8545
8990
  const userAnswers = getUserAnswers();
8546
8991
  const allQuestions = getTotalQuestions();
@@ -8572,8 +9017,8 @@ var QuizFooter = (0, import_react25.forwardRef)(
8572
9017
  setAlertDialogOpen(false);
8573
9018
  }
8574
9019
  };
8575
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8576
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9020
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
9021
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8577
9022
  "footer",
8578
9023
  {
8579
9024
  ref,
@@ -8582,17 +9027,17 @@ var QuizFooter = (0, import_react25.forwardRef)(
8582
9027
  className
8583
9028
  ),
8584
9029
  ...props,
8585
- children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8586
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [
8587
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9030
+ children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
9031
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [
9032
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8588
9033
  IconButton_default,
8589
9034
  {
8590
- icon: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.SquaresFour, { size: 24, className: "text-text-950" }),
9035
+ icon: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.SquaresFour, { size: 24, className: "text-text-950" }),
8591
9036
  size: "md",
8592
9037
  onClick: () => setModalNavigateOpen(true)
8593
9038
  }
8594
9039
  ),
8595
- isFirstQuestion ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9040
+ isFirstQuestion ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8596
9041
  Button_default,
8597
9042
  {
8598
9043
  variant: "outline",
@@ -8603,13 +9048,13 @@ var QuizFooter = (0, import_react25.forwardRef)(
8603
9048
  },
8604
9049
  children: "Pular"
8605
9050
  }
8606
- ) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9051
+ ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8607
9052
  Button_default,
8608
9053
  {
8609
9054
  size: "medium",
8610
9055
  variant: "link",
8611
9056
  action: "primary",
8612
- iconLeft: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.CaretLeft, { size: 18 }),
9057
+ iconLeft: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.CaretLeft, { size: 18 }),
8613
9058
  onClick: () => {
8614
9059
  goToPreviousQuestion();
8615
9060
  },
@@ -8617,7 +9062,7 @@ var QuizFooter = (0, import_react25.forwardRef)(
8617
9062
  }
8618
9063
  )
8619
9064
  ] }),
8620
- !isFirstQuestion && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9065
+ !isFirstQuestion && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8621
9066
  Button_default,
8622
9067
  {
8623
9068
  size: "small",
@@ -8630,7 +9075,7 @@ var QuizFooter = (0, import_react25.forwardRef)(
8630
9075
  children: "Pular"
8631
9076
  }
8632
9077
  ),
8633
- isLastQuestion ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9078
+ isLastQuestion ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8634
9079
  Button_default,
8635
9080
  {
8636
9081
  size: "medium",
@@ -8640,13 +9085,13 @@ var QuizFooter = (0, import_react25.forwardRef)(
8640
9085
  onClick: handleFinishQuiz,
8641
9086
  children: "Finalizar"
8642
9087
  }
8643
- ) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9088
+ ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8644
9089
  Button_default,
8645
9090
  {
8646
9091
  size: "medium",
8647
9092
  variant: "link",
8648
9093
  action: "primary",
8649
- iconRight: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.CaretRight, { size: 18 }),
9094
+ iconRight: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.CaretRight, { size: 18 }),
8650
9095
  disabled: !currentAnswer && !isCurrentQuestionSkipped,
8651
9096
  onClick: () => {
8652
9097
  goToNextQuestion();
@@ -8654,10 +9099,19 @@ var QuizFooter = (0, import_react25.forwardRef)(
8654
9099
  children: "Avan\xE7ar"
8655
9100
  }
8656
9101
  )
8657
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-row items-center justify-end w-full", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Button_default, { variant: "solid", action: "primary", size: "medium", children: "Ver Resolu\xE7\xE3o" }) })
9102
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex flex-row items-center justify-end w-full", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9103
+ Button_default,
9104
+ {
9105
+ variant: "solid",
9106
+ action: "primary",
9107
+ size: "medium",
9108
+ onClick: () => setModalResolutionOpen(true),
9109
+ children: "Ver Resolu\xE7\xE3o"
9110
+ }
9111
+ ) })
8658
9112
  }
8659
9113
  ),
8660
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9114
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8661
9115
  AlertDialog,
8662
9116
  {
8663
9117
  isOpen: alertDialogOpen,
@@ -8669,7 +9123,7 @@ var QuizFooter = (0, import_react25.forwardRef)(
8669
9123
  onSubmit: handleAlertSubmit
8670
9124
  }
8671
9125
  ),
8672
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9126
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8673
9127
  Modal_default,
8674
9128
  {
8675
9129
  isOpen: modalResultOpen,
@@ -8679,8 +9133,8 @@ var QuizFooter = (0, import_react25.forwardRef)(
8679
9133
  closeOnEscape: false,
8680
9134
  hideCloseButton: true,
8681
9135
  size: "md",
8682
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
8683
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9136
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
9137
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8684
9138
  "img",
8685
9139
  {
8686
9140
  src: simulated_result_default,
@@ -8688,9 +9142,9 @@ var QuizFooter = (0, import_react25.forwardRef)(
8688
9142
  className: "w-[282px] h-auto object-cover"
8689
9143
  }
8690
9144
  ),
8691
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
8692
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: "Voc\xEA concluiu o simulado!" }),
8693
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("p", { className: "text-text-500 font-sm", children: [
9145
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
9146
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: "Voc\xEA concluiu o simulado!" }),
9147
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("p", { className: "text-text-500 font-sm", children: [
8694
9148
  "Voc\xEA acertou",
8695
9149
  " ",
8696
9150
  (() => {
@@ -8712,8 +9166,8 @@ var QuizFooter = (0, import_react25.forwardRef)(
8712
9166
  " quest\xF5es."
8713
9167
  ] })
8714
9168
  ] }),
8715
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "px-6 flex flex-row items-center gap-2 w-full", children: [
8716
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9169
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "px-6 flex flex-row items-center gap-2 w-full", children: [
9170
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8717
9171
  Button_default,
8718
9172
  {
8719
9173
  variant: "outline",
@@ -8723,31 +9177,31 @@ var QuizFooter = (0, import_react25.forwardRef)(
8723
9177
  children: "Ir para simulados"
8724
9178
  }
8725
9179
  ),
8726
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Button_default, { className: "w-full", onClick: onDetailResult, children: "Detalhar resultado" })
9180
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Button_default, { className: "w-full", onClick: onDetailResult, children: "Detalhar resultado" })
8727
9181
  ] })
8728
9182
  ] })
8729
9183
  }
8730
9184
  ),
8731
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9185
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8732
9186
  Modal_default,
8733
9187
  {
8734
9188
  isOpen: modalNavigateOpen,
8735
9189
  onClose: () => setModalNavigateOpen(false),
8736
9190
  title: "Quest\xF5es",
8737
9191
  size: "lg",
8738
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col w-full h-full", children: [
8739
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-row justify-between items-center py-6 pt-6 pb-4 border-b border-border-200", children: [
8740
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Filtrar por" }),
8741
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "max-w-[266px]", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Select_default, { value: filterType, onValueChange: setFilterType, children: [
8742
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectTrigger, { variant: "rounded", className: "max-w-[266px]", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectValue, { placeholder: "Selecione uma op\xE7\xE3o" }) }),
8743
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(SelectContent, { children: [
8744
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: "all", children: "Todas" }),
8745
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: "unanswered", children: "Em branco" }),
8746
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SelectItem, { value: "answered", children: "Respondidas" })
9192
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-col w-full h-full", children: [
9193
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-row justify-between items-center py-6 pt-6 pb-4 border-b border-border-200", children: [
9194
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Filtrar por" }),
9195
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "max-w-[266px]", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Select_default, { value: filterType, onValueChange: setFilterType, children: [
9196
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectTrigger, { variant: "rounded", className: "max-w-[266px]", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectValue, { placeholder: "Selecione uma op\xE7\xE3o" }) }),
9197
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(SelectContent, { children: [
9198
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: "all", children: "Todas" }),
9199
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: "unanswered", children: "Em branco" }),
9200
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectItem, { value: "answered", children: "Respondidas" })
8747
9201
  ] })
8748
9202
  ] }) })
8749
9203
  ] }),
8750
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-col gap-2 not-lg:h-[calc(100vh-200px)] lg:max-h-[687px] overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9204
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex flex-col gap-2 not-lg:h-[calc(100vh-200px)] lg:max-h-[687px] overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8751
9205
  QuizQuestionList,
8752
9206
  {
8753
9207
  filterType,
@@ -8756,29 +9210,39 @@ var QuizFooter = (0, import_react25.forwardRef)(
8756
9210
  ) })
8757
9211
  ] })
8758
9212
  }
9213
+ ),
9214
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9215
+ Modal_default,
9216
+ {
9217
+ isOpen: modalResolutionOpen,
9218
+ onClose: () => setModalResolutionOpen(false),
9219
+ title: "Resolu\xE7\xE3o",
9220
+ size: "lg",
9221
+ children: currentQuestion?.answerKey
9222
+ }
8759
9223
  )
8760
9224
  ] });
8761
9225
  }
8762
9226
  );
8763
- var QuizResultHeaderTitle = (0, import_react25.forwardRef)(({ className, ...props }, ref) => {
9227
+ var QuizResultHeaderTitle = (0, import_react26.forwardRef)(({ className, ...props }, ref) => {
8764
9228
  const { bySimulated } = useQuizStore();
8765
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
9229
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8766
9230
  "div",
8767
9231
  {
8768
9232
  ref,
8769
9233
  className: cn("flex flex-row pt-4 justify-between", className),
8770
9234
  ...props,
8771
9235
  children: [
8772
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: "Resultado" }),
8773
- bySimulated && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Badge_default, { variant: "solid", action: "info", children: bySimulated.category })
9236
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: "Resultado" }),
9237
+ bySimulated && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Badge_default, { variant: "solid", action: "info", children: bySimulated.category })
8774
9238
  ]
8775
9239
  }
8776
9240
  );
8777
9241
  });
8778
- var QuizResultTitle = (0, import_react25.forwardRef)(({ className, ...props }, ref) => {
9242
+ var QuizResultTitle = (0, import_react26.forwardRef)(({ className, ...props }, ref) => {
8779
9243
  const { getQuizTitle } = useQuizStore();
8780
9244
  const quizTitle = getQuizTitle();
8781
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9245
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8782
9246
  "p",
8783
9247
  {
8784
9248
  className: cn("pt-6 pb-4 text-text-950 font-bold text-lg", className),
@@ -8788,12 +9252,12 @@ var QuizResultTitle = (0, import_react25.forwardRef)(({ className, ...props }, r
8788
9252
  }
8789
9253
  );
8790
9254
  });
8791
- var QuizResultPerformance = (0, import_react25.forwardRef)(
9255
+ var QuizResultPerformance = (0, import_react26.forwardRef)(
8792
9256
  ({ ...props }, ref) => {
8793
9257
  const {
8794
9258
  getTotalQuestions,
8795
9259
  timeElapsed,
8796
- formatTime,
9260
+ formatTime: formatTime2,
8797
9261
  bySimulated,
8798
9262
  byActivity,
8799
9263
  byQuestionary,
@@ -8834,15 +9298,15 @@ var QuizResultPerformance = (0, import_react25.forwardRef)(
8834
9298
  });
8835
9299
  }
8836
9300
  const percentage = totalQuestions > 0 ? Math.round(correctAnswers / totalQuestions * 100) : 0;
8837
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
9301
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8838
9302
  "div",
8839
9303
  {
8840
9304
  className: "flex flex-row gap-6 p-6 rounded-xl bg-background justify-between",
8841
9305
  ref,
8842
9306
  ...props,
8843
9307
  children: [
8844
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "relative", children: [
8845
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9308
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "relative", children: [
9309
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8846
9310
  ProgressCircle_default,
8847
9311
  {
8848
9312
  size: "medium",
@@ -8852,21 +9316,21 @@ var QuizResultPerformance = (0, import_react25.forwardRef)(
8852
9316
  label: ""
8853
9317
  }
8854
9318
  ),
8855
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "absolute inset-0 flex flex-col items-center justify-center", children: [
8856
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-1 mb-1", children: [
8857
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.Clock, { size: 12, weight: "regular", className: "text-text-800" }),
8858
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-2xs font-medium text-text-800", children: formatTime(timeElapsed) })
9319
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "absolute inset-0 flex flex-col items-center justify-center", children: [
9320
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center gap-1 mb-1", children: [
9321
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.Clock, { size: 12, weight: "regular", className: "text-text-800" }),
9322
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-2xs font-medium text-text-800", children: formatTime2(timeElapsed) })
8859
9323
  ] }),
8860
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "text-2xl font-medium text-text-800 leading-7", children: [
9324
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "text-2xl font-medium text-text-800 leading-7", children: [
8861
9325
  correctAnswers,
8862
9326
  " de ",
8863
9327
  totalQuestions
8864
9328
  ] }),
8865
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-2xs font-medium text-text-600 mt-1", children: "Corretas" })
9329
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "text-2xs font-medium text-text-600 mt-1", children: "Corretas" })
8866
9330
  ] })
8867
9331
  ] }),
8868
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col gap-4 w-full", children: [
8869
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9332
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-col gap-4 w-full", children: [
9333
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8870
9334
  ProgressBar_default,
8871
9335
  {
8872
9336
  className: "w-full",
@@ -8880,7 +9344,7 @@ var QuizResultPerformance = (0, import_react25.forwardRef)(
8880
9344
  percentageClassName: "text-xs font-medium leading-[14px] text-right"
8881
9345
  }
8882
9346
  ),
8883
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9347
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8884
9348
  ProgressBar_default,
8885
9349
  {
8886
9350
  className: "w-full",
@@ -8894,7 +9358,7 @@ var QuizResultPerformance = (0, import_react25.forwardRef)(
8894
9358
  percentageClassName: "text-xs font-medium leading-[14px] text-right"
8895
9359
  }
8896
9360
  ),
8897
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9361
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8898
9362
  ProgressBar_default,
8899
9363
  {
8900
9364
  className: "w-full",
@@ -8914,7 +9378,7 @@ var QuizResultPerformance = (0, import_react25.forwardRef)(
8914
9378
  );
8915
9379
  }
8916
9380
  );
8917
- var QuizListResult = (0, import_react25.forwardRef)(({ className, onSubjectClick, ...props }, ref) => {
9381
+ var QuizListResult = (0, import_react26.forwardRef)(({ className, onSubjectClick, ...props }, ref) => {
8918
9382
  const {
8919
9383
  getQuestionsGroupedBySubject,
8920
9384
  isQuestionAnswered,
@@ -8943,9 +9407,9 @@ var QuizListResult = (0, import_react25.forwardRef)(({ className, onSubjectClick
8943
9407
  };
8944
9408
  }
8945
9409
  );
8946
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("section", { ref, className, ...props, children: [
8947
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Mat\xE9rias" }),
8948
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { className: "flex flex-col gap-2", children: subjectsStats.map((subject) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9410
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("section", { ref, className, ...props, children: [
9411
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Mat\xE9rias" }),
9412
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ul", { className: "flex flex-col gap-2", children: subjectsStats.map((subject) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8949
9413
  CardResults,
8950
9414
  {
8951
9415
  onClick: () => onSubjectClick?.(subject.subject),
@@ -8953,7 +9417,7 @@ var QuizListResult = (0, import_react25.forwardRef)(({ className, onSubjectClick
8953
9417
  header: subject.subject,
8954
9418
  correct_answers: subject.correct,
8955
9419
  incorrect_answers: subject.incorrect,
8956
- icon: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_phosphor_react18.Book, { size: 20 }),
9420
+ icon: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_phosphor_react19.Book, { size: 20 }),
8957
9421
  direction: "row"
8958
9422
  }
8959
9423
  ) }, subject.subject)) })
@@ -8970,13 +9434,13 @@ var QuizListResultByMateria = ({
8970
9434
  } = useQuizStore();
8971
9435
  const groupedQuestions = getQuestionsGroupedBySubject();
8972
9436
  const answeredQuestions = groupedQuestions[subject] || [];
8973
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full max-w-[1000px] flex flex-col mx-auto h-full relative not-lg:px-6", children: [
8974
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-row pt-4 justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: subject }) }),
8975
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("section", { className: "flex flex-col ", children: [
8976
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Resultado das quest\xF5es" }),
8977
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { className: "flex flex-col gap-2 pt-4", children: answeredQuestions.map((question) => {
9437
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "w-full max-w-[1000px] flex flex-col mx-auto h-full relative not-lg:px-6", children: [
9438
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex flex-row pt-4 justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: subject }) }),
9439
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("section", { className: "flex flex-col ", children: [
9440
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Resultado das quest\xF5es" }),
9441
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ul", { className: "flex flex-col gap-2 pt-4", children: answeredQuestions.map((question) => {
8978
9442
  const questionIndex = getQuestionIndex(question.id);
8979
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9443
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8980
9444
  CardStatus,
8981
9445
  {
8982
9446
  className: "max-w-full",
@@ -9089,6 +9553,7 @@ var QuizListResultByMateria = ({
9089
9553
  TextArea,
9090
9554
  Toast,
9091
9555
  Toaster,
9556
+ VideoPlayer,
9092
9557
  createZustandAuthAdapter,
9093
9558
  getRootDomain,
9094
9559
  getStatusBadge,