analytica-frontend-lib 1.2.10 → 1.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CheckBox/index.d.mts +1 -1
- package/dist/CheckBox/index.d.ts +1 -1
- package/dist/NoSearchResult/index.d.mts +37 -0
- package/dist/NoSearchResult/index.d.ts +37 -0
- package/dist/NoSearchResult/index.js +113 -0
- package/dist/NoSearchResult/index.js.map +1 -0
- package/dist/NoSearchResult/index.mjs +90 -0
- package/dist/NoSearchResult/index.mjs.map +1 -0
- package/dist/Radio/index.d.mts +2 -2
- package/dist/Radio/index.d.ts +2 -2
- package/dist/Search/index.d.mts +1 -1
- package/dist/Search/index.d.ts +1 -1
- package/dist/Table/index.d.mts +1 -1
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.js.map +1 -1
- package/dist/Table/index.mjs.map +1 -1
- package/dist/index.css +20 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +117 -3
- package/dist/index.d.ts +117 -3
- package/dist/index.js +1082 -782
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1002 -705
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +20 -0
- package/dist/styles.css.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -64,6 +64,7 @@ __export(src_exports, {
|
|
|
64
64
|
DropdownMenuItem: () => DropdownMenuItem,
|
|
65
65
|
DropdownMenuSeparator: () => DropdownMenuSeparator,
|
|
66
66
|
DropdownMenuTrigger: () => DropdownMenuTrigger,
|
|
67
|
+
FilterModal: () => FilterModal,
|
|
67
68
|
IconButton: () => IconButton_default,
|
|
68
69
|
IconRender: () => IconRender_default,
|
|
69
70
|
IconRoundedButton: () => IconRoundedButton_default,
|
|
@@ -78,6 +79,7 @@ __export(src_exports, {
|
|
|
78
79
|
Modal: () => Modal_default,
|
|
79
80
|
MultipleChoiceList: () => MultipleChoiceList,
|
|
80
81
|
NavButton: () => NavButton_default,
|
|
82
|
+
NoSearchResult: () => NoSearchResult_default,
|
|
81
83
|
NotFound: () => NotFound_default,
|
|
82
84
|
NotificationCard: () => NotificationCard_default,
|
|
83
85
|
NotificationEntityType: () => NotificationEntityType,
|
|
@@ -179,6 +181,7 @@ __export(src_exports, {
|
|
|
179
181
|
useMobile: () => useMobile,
|
|
180
182
|
useQuizStore: () => useQuizStore,
|
|
181
183
|
useRouteAuth: () => useRouteAuth,
|
|
184
|
+
useTableFilter: () => useTableFilter,
|
|
182
185
|
useTableSort: () => useTableSort,
|
|
183
186
|
useTheme: () => useTheme,
|
|
184
187
|
useThemeStore: () => useThemeStore,
|
|
@@ -1321,7 +1324,7 @@ var CheckboxGroup = ({
|
|
|
1321
1324
|
return depCat?.selectedIds && depCat.selectedIds.length > 0;
|
|
1322
1325
|
});
|
|
1323
1326
|
if (!isEnabled) {
|
|
1324
|
-
return [{ itens:
|
|
1327
|
+
return [{ itens: [] }];
|
|
1325
1328
|
}
|
|
1326
1329
|
const filters = category.filteredBy || [];
|
|
1327
1330
|
if (filters.length === 0) {
|
|
@@ -1436,9 +1439,10 @@ var CheckboxGroup = ({
|
|
|
1436
1439
|
const formattedItems = getFormattedItems(categoryKey);
|
|
1437
1440
|
const filteredItems = formattedItems.flatMap((group) => group.itens || []);
|
|
1438
1441
|
const filteredItemIds = filteredItems.map((item) => item.id);
|
|
1439
|
-
const
|
|
1442
|
+
const selectedFilteredCount = filteredItemIds.filter(
|
|
1440
1443
|
(itemId) => category.selectedIds?.includes(itemId)
|
|
1441
|
-
);
|
|
1444
|
+
).length;
|
|
1445
|
+
const allFilteredSelected = selectedFilteredCount === filteredItemIds.length;
|
|
1442
1446
|
const newSelection = allFilteredSelected ? category.selectedIds?.filter((id) => !filteredItemIds.includes(id)) || [] : [
|
|
1443
1447
|
...category.selectedIds || [],
|
|
1444
1448
|
...filteredItemIds.filter(
|
|
@@ -1476,24 +1480,27 @@ var CheckboxGroup = ({
|
|
|
1476
1480
|
}
|
|
1477
1481
|
onCategoriesChange(updatedCategories);
|
|
1478
1482
|
};
|
|
1479
|
-
const renderCheckboxItem = (item, categoryKey) =>
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1483
|
+
const renderCheckboxItem = (item, categoryKey) => {
|
|
1484
|
+
const uniqueId = `${categoryKey}-${item.id}`;
|
|
1485
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-3 px-2", children: [
|
|
1486
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1487
|
+
CheckBox_default,
|
|
1488
|
+
{
|
|
1489
|
+
id: uniqueId,
|
|
1490
|
+
checked: isCheckBoxIsSelected(categoryKey, item.id),
|
|
1491
|
+
onChange: () => toggleItem(categoryKey, item.id)
|
|
1492
|
+
}
|
|
1493
|
+
),
|
|
1494
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1495
|
+
"label",
|
|
1496
|
+
{
|
|
1497
|
+
htmlFor: uniqueId,
|
|
1498
|
+
className: "text-sm text-text-950 cursor-pointer select-none",
|
|
1499
|
+
children: item.name
|
|
1500
|
+
}
|
|
1501
|
+
)
|
|
1502
|
+
] }, item.id);
|
|
1503
|
+
};
|
|
1497
1504
|
const renderFormattedGroup = (formattedGroup, idx, categoryKey) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1498
1505
|
"div",
|
|
1499
1506
|
{
|
|
@@ -1565,13 +1572,38 @@ var CheckboxGroup = ({
|
|
|
1565
1572
|
openAccordion !== category.key && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Divider_default, {})
|
|
1566
1573
|
] }, category.key);
|
|
1567
1574
|
};
|
|
1575
|
+
(0, import_react7.useEffect)(() => {
|
|
1576
|
+
if (!openAccordion) return;
|
|
1577
|
+
const category = categories.find((c) => c.key === openAccordion);
|
|
1578
|
+
if (!category) return;
|
|
1579
|
+
const isEnabled = !category.dependsOn || category.dependsOn.every((depKey) => {
|
|
1580
|
+
const depCat = categories.find((c) => c.key === depKey);
|
|
1581
|
+
return depCat?.selectedIds && depCat.selectedIds.length > 0;
|
|
1582
|
+
});
|
|
1583
|
+
if (!isEnabled) {
|
|
1584
|
+
setTimeout(() => {
|
|
1585
|
+
setOpenAccordion("");
|
|
1586
|
+
}, 0);
|
|
1587
|
+
}
|
|
1588
|
+
}, [categories, openAccordion]);
|
|
1568
1589
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1569
1590
|
AccordionGroup,
|
|
1570
1591
|
{
|
|
1571
1592
|
type: "single",
|
|
1593
|
+
collapsible: true,
|
|
1572
1594
|
value: openAccordion,
|
|
1573
1595
|
onValueChange: (value) => {
|
|
1574
1596
|
if (typeof value === "string") {
|
|
1597
|
+
if (value) {
|
|
1598
|
+
const category = categories.find((c) => c.key === value);
|
|
1599
|
+
const isEnabled = !category?.dependsOn || category.dependsOn.every((depKey) => {
|
|
1600
|
+
const depCat = categories.find((c) => c.key === depKey);
|
|
1601
|
+
return depCat?.selectedIds && depCat.selectedIds.length > 0;
|
|
1602
|
+
});
|
|
1603
|
+
if (!isEnabled) {
|
|
1604
|
+
return;
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1575
1607
|
setOpenAccordion(value);
|
|
1576
1608
|
}
|
|
1577
1609
|
},
|
|
@@ -6892,11 +6924,247 @@ var TableCaption = (0, import_react23.forwardRef)(({ className, ...props }, ref)
|
|
|
6892
6924
|
TableCaption.displayName = "TableCaption";
|
|
6893
6925
|
var Table_default = Table;
|
|
6894
6926
|
|
|
6927
|
+
// src/components/Filter/FilterModal.tsx
|
|
6928
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
6929
|
+
var FilterModal = ({
|
|
6930
|
+
isOpen,
|
|
6931
|
+
onClose,
|
|
6932
|
+
filterConfigs,
|
|
6933
|
+
onFiltersChange,
|
|
6934
|
+
onApply,
|
|
6935
|
+
onClear,
|
|
6936
|
+
title = "Filtros",
|
|
6937
|
+
size = "md",
|
|
6938
|
+
applyLabel = "Aplicar",
|
|
6939
|
+
clearLabel = "Limpar filtros"
|
|
6940
|
+
}) => {
|
|
6941
|
+
const handleCategoryChange = (configIndex, updatedCategories) => {
|
|
6942
|
+
const newConfigs = [...filterConfigs];
|
|
6943
|
+
newConfigs[configIndex] = {
|
|
6944
|
+
...newConfigs[configIndex],
|
|
6945
|
+
categories: updatedCategories
|
|
6946
|
+
};
|
|
6947
|
+
onFiltersChange(newConfigs);
|
|
6948
|
+
};
|
|
6949
|
+
const handleApply = () => {
|
|
6950
|
+
onApply();
|
|
6951
|
+
onClose();
|
|
6952
|
+
};
|
|
6953
|
+
const handleClear = () => {
|
|
6954
|
+
onClear();
|
|
6955
|
+
};
|
|
6956
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
6957
|
+
Modal_default,
|
|
6958
|
+
{
|
|
6959
|
+
isOpen,
|
|
6960
|
+
onClose,
|
|
6961
|
+
title,
|
|
6962
|
+
size,
|
|
6963
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex gap-3 justify-end w-full", children: [
|
|
6964
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button_default, { variant: "outline", onClick: handleClear, children: clearLabel }),
|
|
6965
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button_default, { onClick: handleApply, children: applyLabel })
|
|
6966
|
+
] }),
|
|
6967
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex flex-col gap-6", children: filterConfigs.map((config, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex flex-col gap-4", children: [
|
|
6968
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center gap-2 text-text-400 text-sm font-medium uppercase", children: [
|
|
6969
|
+
config.key === "academic" && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
6970
|
+
"svg",
|
|
6971
|
+
{
|
|
6972
|
+
width: "16",
|
|
6973
|
+
height: "16",
|
|
6974
|
+
viewBox: "0 0 16 16",
|
|
6975
|
+
fill: "none",
|
|
6976
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6977
|
+
className: "text-text-400",
|
|
6978
|
+
children: [
|
|
6979
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
6980
|
+
"path",
|
|
6981
|
+
{
|
|
6982
|
+
d: "M8 2L2 5.33333L8 8.66667L14 5.33333L8 2Z",
|
|
6983
|
+
stroke: "currentColor",
|
|
6984
|
+
strokeWidth: "1.5",
|
|
6985
|
+
strokeLinecap: "round",
|
|
6986
|
+
strokeLinejoin: "round"
|
|
6987
|
+
}
|
|
6988
|
+
),
|
|
6989
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
6990
|
+
"path",
|
|
6991
|
+
{
|
|
6992
|
+
d: "M2 10.6667L8 14L14 10.6667",
|
|
6993
|
+
stroke: "currentColor",
|
|
6994
|
+
strokeWidth: "1.5",
|
|
6995
|
+
strokeLinecap: "round",
|
|
6996
|
+
strokeLinejoin: "round"
|
|
6997
|
+
}
|
|
6998
|
+
),
|
|
6999
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
7000
|
+
"path",
|
|
7001
|
+
{
|
|
7002
|
+
d: "M2 8L8 11.3333L14 8",
|
|
7003
|
+
stroke: "currentColor",
|
|
7004
|
+
strokeWidth: "1.5",
|
|
7005
|
+
strokeLinecap: "round",
|
|
7006
|
+
strokeLinejoin: "round"
|
|
7007
|
+
}
|
|
7008
|
+
)
|
|
7009
|
+
]
|
|
7010
|
+
}
|
|
7011
|
+
),
|
|
7012
|
+
config.key === "content" && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
7013
|
+
"svg",
|
|
7014
|
+
{
|
|
7015
|
+
width: "16",
|
|
7016
|
+
height: "16",
|
|
7017
|
+
viewBox: "0 0 16 16",
|
|
7018
|
+
fill: "none",
|
|
7019
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
7020
|
+
className: "text-text-400",
|
|
7021
|
+
children: [
|
|
7022
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
7023
|
+
"path",
|
|
7024
|
+
{
|
|
7025
|
+
d: "M3.33333 2H12.6667C13.403 2 14 2.59695 14 3.33333V12.6667C14 13.403 13.403 14 12.6667 14H3.33333C2.59695 14 2 13.403 2 12.6667V3.33333C2 2.59695 2.59695 2 3.33333 2Z",
|
|
7026
|
+
stroke: "currentColor",
|
|
7027
|
+
strokeWidth: "1.5",
|
|
7028
|
+
strokeLinecap: "round",
|
|
7029
|
+
strokeLinejoin: "round"
|
|
7030
|
+
}
|
|
7031
|
+
),
|
|
7032
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
7033
|
+
"path",
|
|
7034
|
+
{
|
|
7035
|
+
d: "M2 6H14",
|
|
7036
|
+
stroke: "currentColor",
|
|
7037
|
+
strokeWidth: "1.5",
|
|
7038
|
+
strokeLinecap: "round",
|
|
7039
|
+
strokeLinejoin: "round"
|
|
7040
|
+
}
|
|
7041
|
+
),
|
|
7042
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
7043
|
+
"path",
|
|
7044
|
+
{
|
|
7045
|
+
d: "M6 2V14",
|
|
7046
|
+
stroke: "currentColor",
|
|
7047
|
+
strokeWidth: "1.5",
|
|
7048
|
+
strokeLinecap: "round",
|
|
7049
|
+
strokeLinejoin: "round"
|
|
7050
|
+
}
|
|
7051
|
+
)
|
|
7052
|
+
]
|
|
7053
|
+
}
|
|
7054
|
+
),
|
|
7055
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: config.label })
|
|
7056
|
+
] }),
|
|
7057
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
7058
|
+
CheckboxGroup,
|
|
7059
|
+
{
|
|
7060
|
+
categories: config.categories,
|
|
7061
|
+
onCategoriesChange: (updatedCategories) => handleCategoryChange(index, updatedCategories)
|
|
7062
|
+
}
|
|
7063
|
+
)
|
|
7064
|
+
] }, config.key)) })
|
|
7065
|
+
}
|
|
7066
|
+
);
|
|
7067
|
+
};
|
|
7068
|
+
|
|
7069
|
+
// src/components/Filter/useTableFilter.ts
|
|
7070
|
+
var import_react24 = require("react");
|
|
7071
|
+
var useTableFilter = (initialConfigs, options = {}) => {
|
|
7072
|
+
const { syncWithUrl = false } = options;
|
|
7073
|
+
const getInitialState = (0, import_react24.useCallback)(() => {
|
|
7074
|
+
if (!syncWithUrl || globalThis.window === void 0) {
|
|
7075
|
+
return initialConfigs;
|
|
7076
|
+
}
|
|
7077
|
+
const params = new URLSearchParams(globalThis.window.location.search);
|
|
7078
|
+
const configsWithUrlState = initialConfigs.map((config) => ({
|
|
7079
|
+
...config,
|
|
7080
|
+
categories: config.categories.map((category) => {
|
|
7081
|
+
const urlValue = params.get(`filter_${category.key}`);
|
|
7082
|
+
const selectedIds = urlValue ? urlValue.split(",").filter(Boolean) : [];
|
|
7083
|
+
return {
|
|
7084
|
+
...category,
|
|
7085
|
+
selectedIds
|
|
7086
|
+
};
|
|
7087
|
+
})
|
|
7088
|
+
}));
|
|
7089
|
+
return configsWithUrlState;
|
|
7090
|
+
}, [initialConfigs, syncWithUrl]);
|
|
7091
|
+
const [filterConfigs, setFilterConfigs] = (0, import_react24.useState)(getInitialState);
|
|
7092
|
+
const activeFilters = {};
|
|
7093
|
+
let hasActiveFilters = false;
|
|
7094
|
+
for (const config of filterConfigs) {
|
|
7095
|
+
for (const category of config.categories) {
|
|
7096
|
+
if (category.selectedIds && category.selectedIds.length > 0) {
|
|
7097
|
+
activeFilters[category.key] = category.selectedIds;
|
|
7098
|
+
hasActiveFilters = true;
|
|
7099
|
+
}
|
|
7100
|
+
}
|
|
7101
|
+
}
|
|
7102
|
+
const updateFilters = (0, import_react24.useCallback)((configs) => {
|
|
7103
|
+
setFilterConfigs(configs);
|
|
7104
|
+
}, []);
|
|
7105
|
+
const applyFilters = (0, import_react24.useCallback)(() => {
|
|
7106
|
+
if (!syncWithUrl || globalThis.window === void 0) {
|
|
7107
|
+
return;
|
|
7108
|
+
}
|
|
7109
|
+
const url = new URL(globalThis.window.location.href);
|
|
7110
|
+
const params = url.searchParams;
|
|
7111
|
+
for (const config of filterConfigs) {
|
|
7112
|
+
for (const category of config.categories) {
|
|
7113
|
+
const paramKey = `filter_${category.key}`;
|
|
7114
|
+
if (category.selectedIds && category.selectedIds.length > 0) {
|
|
7115
|
+
params.set(paramKey, category.selectedIds.join(","));
|
|
7116
|
+
} else {
|
|
7117
|
+
params.delete(paramKey);
|
|
7118
|
+
}
|
|
7119
|
+
}
|
|
7120
|
+
}
|
|
7121
|
+
globalThis.window.history.replaceState({}, "", url.toString());
|
|
7122
|
+
}, [filterConfigs, syncWithUrl]);
|
|
7123
|
+
const clearFilters = (0, import_react24.useCallback)(() => {
|
|
7124
|
+
const clearedConfigs = filterConfigs.map((config) => ({
|
|
7125
|
+
...config,
|
|
7126
|
+
categories: config.categories.map((category) => ({
|
|
7127
|
+
...category,
|
|
7128
|
+
selectedIds: []
|
|
7129
|
+
}))
|
|
7130
|
+
}));
|
|
7131
|
+
setFilterConfigs(clearedConfigs);
|
|
7132
|
+
if (syncWithUrl && globalThis.window !== void 0) {
|
|
7133
|
+
const url = new URL(globalThis.window.location.href);
|
|
7134
|
+
const params = url.searchParams;
|
|
7135
|
+
for (const config of filterConfigs) {
|
|
7136
|
+
for (const category of config.categories) {
|
|
7137
|
+
params.delete(`filter_${category.key}`);
|
|
7138
|
+
}
|
|
7139
|
+
}
|
|
7140
|
+
globalThis.window.history.replaceState({}, "", url.toString());
|
|
7141
|
+
}
|
|
7142
|
+
}, [filterConfigs, syncWithUrl]);
|
|
7143
|
+
(0, import_react24.useEffect)(() => {
|
|
7144
|
+
if (!syncWithUrl || globalThis.window === void 0) {
|
|
7145
|
+
return;
|
|
7146
|
+
}
|
|
7147
|
+
const handlePopState = () => {
|
|
7148
|
+
setFilterConfigs(getInitialState());
|
|
7149
|
+
};
|
|
7150
|
+
globalThis.window.addEventListener("popstate", handlePopState);
|
|
7151
|
+
return () => globalThis.window.removeEventListener("popstate", handlePopState);
|
|
7152
|
+
}, [syncWithUrl, getInitialState]);
|
|
7153
|
+
return {
|
|
7154
|
+
filterConfigs,
|
|
7155
|
+
activeFilters,
|
|
7156
|
+
hasActiveFilters,
|
|
7157
|
+
updateFilters,
|
|
7158
|
+
applyFilters,
|
|
7159
|
+
clearFilters
|
|
7160
|
+
};
|
|
7161
|
+
};
|
|
7162
|
+
|
|
6895
7163
|
// src/components/Select/Select.tsx
|
|
6896
7164
|
var import_zustand7 = require("zustand");
|
|
6897
|
-
var
|
|
7165
|
+
var import_react25 = require("react");
|
|
6898
7166
|
var import_phosphor_react17 = require("phosphor-react");
|
|
6899
|
-
var
|
|
7167
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
6900
7168
|
var VARIANT_CLASSES4 = {
|
|
6901
7169
|
outlined: "border-2 rounded-lg focus:border-primary-950",
|
|
6902
7170
|
underlined: "border-b-2 focus:border-primary-950",
|
|
@@ -6954,13 +7222,13 @@ function getLabelAsNode(children) {
|
|
|
6954
7222
|
if (typeof children === "string" || typeof children === "number") {
|
|
6955
7223
|
return children;
|
|
6956
7224
|
}
|
|
6957
|
-
const flattened =
|
|
7225
|
+
const flattened = import_react25.Children.toArray(children);
|
|
6958
7226
|
if (flattened.length === 1) return flattened[0];
|
|
6959
|
-
return /* @__PURE__ */ (0,
|
|
7227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: flattened });
|
|
6960
7228
|
}
|
|
6961
7229
|
var injectStore4 = (children, store, size, selectId) => {
|
|
6962
|
-
return
|
|
6963
|
-
if ((0,
|
|
7230
|
+
return import_react25.Children.map(children, (child) => {
|
|
7231
|
+
if ((0, import_react25.isValidElement)(child)) {
|
|
6964
7232
|
const typedChild = child;
|
|
6965
7233
|
const newProps = {
|
|
6966
7234
|
store
|
|
@@ -6977,7 +7245,7 @@ var injectStore4 = (children, store, size, selectId) => {
|
|
|
6977
7245
|
selectId
|
|
6978
7246
|
);
|
|
6979
7247
|
}
|
|
6980
|
-
return (0,
|
|
7248
|
+
return (0, import_react25.cloneElement)(typedChild, newProps);
|
|
6981
7249
|
}
|
|
6982
7250
|
return child;
|
|
6983
7251
|
});
|
|
@@ -6994,18 +7262,18 @@ var Select = ({
|
|
|
6994
7262
|
errorMessage,
|
|
6995
7263
|
id
|
|
6996
7264
|
}) => {
|
|
6997
|
-
const storeRef = (0,
|
|
7265
|
+
const storeRef = (0, import_react25.useRef)(null);
|
|
6998
7266
|
storeRef.current ??= createSelectStore(onValueChange);
|
|
6999
7267
|
const store = storeRef.current;
|
|
7000
|
-
const selectRef = (0,
|
|
7268
|
+
const selectRef = (0, import_react25.useRef)(null);
|
|
7001
7269
|
const { open, setOpen, setValue, selectedLabel } = (0, import_zustand7.useStore)(store, (s) => s);
|
|
7002
|
-
const generatedId = (0,
|
|
7270
|
+
const generatedId = (0, import_react25.useId)();
|
|
7003
7271
|
const selectId = id ?? `select-${generatedId}`;
|
|
7004
7272
|
const findLabelForValue = (children2, targetValue) => {
|
|
7005
7273
|
let found = null;
|
|
7006
7274
|
const search = (nodes) => {
|
|
7007
|
-
|
|
7008
|
-
if (!(0,
|
|
7275
|
+
import_react25.Children.forEach(nodes, (child) => {
|
|
7276
|
+
if (!(0, import_react25.isValidElement)(child)) return;
|
|
7009
7277
|
const typedChild = child;
|
|
7010
7278
|
if (typedChild.type === SelectItem && typedChild.props.value === targetValue) {
|
|
7011
7279
|
if (typeof typedChild.props.children === "string")
|
|
@@ -7018,13 +7286,13 @@ var Select = ({
|
|
|
7018
7286
|
search(children2);
|
|
7019
7287
|
return found;
|
|
7020
7288
|
};
|
|
7021
|
-
(0,
|
|
7289
|
+
(0, import_react25.useEffect)(() => {
|
|
7022
7290
|
if (!selectedLabel && defaultValue) {
|
|
7023
7291
|
const label2 = findLabelForValue(children, defaultValue);
|
|
7024
7292
|
if (label2) store.setState({ selectedLabel: label2 });
|
|
7025
7293
|
}
|
|
7026
7294
|
}, [children, defaultValue, selectedLabel]);
|
|
7027
|
-
(0,
|
|
7295
|
+
(0, import_react25.useEffect)(() => {
|
|
7028
7296
|
const handleClickOutside = (event) => {
|
|
7029
7297
|
if (selectRef.current && !selectRef.current.contains(event.target)) {
|
|
7030
7298
|
setOpen(false);
|
|
@@ -7059,7 +7327,7 @@ var Select = ({
|
|
|
7059
7327
|
document.removeEventListener("keydown", handleArrowKeys);
|
|
7060
7328
|
};
|
|
7061
7329
|
}, [open]);
|
|
7062
|
-
(0,
|
|
7330
|
+
(0, import_react25.useEffect)(() => {
|
|
7063
7331
|
if (propValue) {
|
|
7064
7332
|
setValue(propValue);
|
|
7065
7333
|
const label2 = findLabelForValue(children, propValue);
|
|
@@ -7067,8 +7335,8 @@ var Select = ({
|
|
|
7067
7335
|
}
|
|
7068
7336
|
}, [propValue]);
|
|
7069
7337
|
const sizeClasses = SIZE_CLASSES12[size];
|
|
7070
|
-
return /* @__PURE__ */ (0,
|
|
7071
|
-
label && /* @__PURE__ */ (0,
|
|
7338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: cn("w-full", className), children: [
|
|
7339
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
7072
7340
|
"label",
|
|
7073
7341
|
{
|
|
7074
7342
|
htmlFor: selectId,
|
|
@@ -7076,11 +7344,11 @@ var Select = ({
|
|
|
7076
7344
|
children: label
|
|
7077
7345
|
}
|
|
7078
7346
|
),
|
|
7079
|
-
/* @__PURE__ */ (0,
|
|
7080
|
-
(helperText || errorMessage) && /* @__PURE__ */ (0,
|
|
7081
|
-
helperText && /* @__PURE__ */ (0,
|
|
7082
|
-
errorMessage && /* @__PURE__ */ (0,
|
|
7083
|
-
/* @__PURE__ */ (0,
|
|
7347
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: cn("relative w-full"), ref: selectRef, children: injectStore4(children, store, size, selectId) }),
|
|
7348
|
+
(helperText || errorMessage) && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "mt-1.5 gap-1.5", children: [
|
|
7349
|
+
helperText && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("p", { className: "text-sm text-text-500", children: helperText }),
|
|
7350
|
+
errorMessage && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("p", { className: "flex gap-1 items-center text-sm text-indicator-error", children: [
|
|
7351
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_phosphor_react17.WarningCircle, { size: 16 }),
|
|
7084
7352
|
" ",
|
|
7085
7353
|
errorMessage
|
|
7086
7354
|
] })
|
|
@@ -7094,9 +7362,9 @@ var SelectValue = ({
|
|
|
7094
7362
|
const store = useSelectStore(externalStore);
|
|
7095
7363
|
const selectedLabel = (0, import_zustand7.useStore)(store, (s) => s.selectedLabel);
|
|
7096
7364
|
const value = (0, import_zustand7.useStore)(store, (s) => s.value);
|
|
7097
|
-
return /* @__PURE__ */ (0,
|
|
7365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-inherit flex gap-2 items-center", children: selectedLabel || placeholder || value });
|
|
7098
7366
|
};
|
|
7099
|
-
var SelectTrigger = (0,
|
|
7367
|
+
var SelectTrigger = (0, import_react25.forwardRef)(
|
|
7100
7368
|
({
|
|
7101
7369
|
className,
|
|
7102
7370
|
invalid = false,
|
|
@@ -7113,7 +7381,7 @@ var SelectTrigger = (0, import_react24.forwardRef)(
|
|
|
7113
7381
|
const variantClasses = VARIANT_CLASSES4[variant];
|
|
7114
7382
|
const heightClasses = HEIGHT_CLASSES[size];
|
|
7115
7383
|
const paddingClasses = PADDING_CLASSES[size];
|
|
7116
|
-
return /* @__PURE__ */ (0,
|
|
7384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
7117
7385
|
"button",
|
|
7118
7386
|
{
|
|
7119
7387
|
ref,
|
|
@@ -7135,7 +7403,7 @@ var SelectTrigger = (0, import_react24.forwardRef)(
|
|
|
7135
7403
|
...props,
|
|
7136
7404
|
children: [
|
|
7137
7405
|
props.children,
|
|
7138
|
-
/* @__PURE__ */ (0,
|
|
7406
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
7139
7407
|
import_phosphor_react17.CaretDown,
|
|
7140
7408
|
{
|
|
7141
7409
|
className: cn(
|
|
@@ -7150,7 +7418,7 @@ var SelectTrigger = (0, import_react24.forwardRef)(
|
|
|
7150
7418
|
}
|
|
7151
7419
|
);
|
|
7152
7420
|
SelectTrigger.displayName = "SelectTrigger";
|
|
7153
|
-
var SelectContent = (0,
|
|
7421
|
+
var SelectContent = (0, import_react25.forwardRef)(
|
|
7154
7422
|
({
|
|
7155
7423
|
children,
|
|
7156
7424
|
className,
|
|
@@ -7163,7 +7431,7 @@ var SelectContent = (0, import_react24.forwardRef)(
|
|
|
7163
7431
|
const open = (0, import_zustand7.useStore)(store, (s) => s.open);
|
|
7164
7432
|
if (!open) return null;
|
|
7165
7433
|
const getPositionClasses = () => `w-full min-w-full absolute ${SIDE_CLASSES2[side]} ${ALIGN_CLASSES2[align]}`;
|
|
7166
|
-
return /* @__PURE__ */ (0,
|
|
7434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
7167
7435
|
"div",
|
|
7168
7436
|
{
|
|
7169
7437
|
role: "menu",
|
|
@@ -7180,7 +7448,7 @@ var SelectContent = (0, import_react24.forwardRef)(
|
|
|
7180
7448
|
}
|
|
7181
7449
|
);
|
|
7182
7450
|
SelectContent.displayName = "SelectContent";
|
|
7183
|
-
var SelectItem = (0,
|
|
7451
|
+
var SelectItem = (0, import_react25.forwardRef)(
|
|
7184
7452
|
({
|
|
7185
7453
|
className,
|
|
7186
7454
|
children,
|
|
@@ -7207,7 +7475,7 @@ var SelectItem = (0, import_react24.forwardRef)(
|
|
|
7207
7475
|
}
|
|
7208
7476
|
props.onClick?.(e);
|
|
7209
7477
|
};
|
|
7210
|
-
return /* @__PURE__ */ (0,
|
|
7478
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
7211
7479
|
"div",
|
|
7212
7480
|
{
|
|
7213
7481
|
role: "menuitem",
|
|
@@ -7227,7 +7495,7 @@ var SelectItem = (0, import_react24.forwardRef)(
|
|
|
7227
7495
|
tabIndex: disabled ? -1 : 0,
|
|
7228
7496
|
...props,
|
|
7229
7497
|
children: [
|
|
7230
|
-
/* @__PURE__ */ (0,
|
|
7498
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: selectedValue === value && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_phosphor_react17.Check, { className: "" }) }),
|
|
7231
7499
|
children
|
|
7232
7500
|
]
|
|
7233
7501
|
}
|
|
@@ -7239,9 +7507,9 @@ var Select_default = Select;
|
|
|
7239
7507
|
|
|
7240
7508
|
// src/components/Menu/Menu.tsx
|
|
7241
7509
|
var import_zustand8 = require("zustand");
|
|
7242
|
-
var
|
|
7510
|
+
var import_react26 = require("react");
|
|
7243
7511
|
var import_phosphor_react18 = require("phosphor-react");
|
|
7244
|
-
var
|
|
7512
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
7245
7513
|
var createMenuStore = (onValueChange) => (0, import_zustand8.create)((set) => ({
|
|
7246
7514
|
value: "",
|
|
7247
7515
|
setValue: (value) => {
|
|
@@ -7260,7 +7528,7 @@ var VARIANT_CLASSES5 = {
|
|
|
7260
7528
|
"menu-overflow": "",
|
|
7261
7529
|
breadcrumb: "bg-transparent shadow-none !px-0"
|
|
7262
7530
|
};
|
|
7263
|
-
var Menu = (0,
|
|
7531
|
+
var Menu = (0, import_react26.forwardRef)(
|
|
7264
7532
|
({
|
|
7265
7533
|
className,
|
|
7266
7534
|
children,
|
|
@@ -7270,16 +7538,16 @@ var Menu = (0, import_react25.forwardRef)(
|
|
|
7270
7538
|
onValueChange,
|
|
7271
7539
|
...props
|
|
7272
7540
|
}, ref) => {
|
|
7273
|
-
const storeRef = (0,
|
|
7541
|
+
const storeRef = (0, import_react26.useRef)(null);
|
|
7274
7542
|
storeRef.current ??= createMenuStore(onValueChange);
|
|
7275
7543
|
const store = storeRef.current;
|
|
7276
7544
|
const { setValue } = (0, import_zustand8.useStore)(store, (s) => s);
|
|
7277
|
-
(0,
|
|
7545
|
+
(0, import_react26.useEffect)(() => {
|
|
7278
7546
|
setValue(propValue ?? defaultValue);
|
|
7279
7547
|
}, [defaultValue, propValue, setValue]);
|
|
7280
7548
|
const baseClasses = variant === "menu-overflow" ? "w-fit py-2 flex flex-row items-center justify-center" : "w-full py-2 flex flex-row items-center justify-center";
|
|
7281
7549
|
const variantClasses = VARIANT_CLASSES5[variant];
|
|
7282
|
-
return /* @__PURE__ */ (0,
|
|
7550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7283
7551
|
"div",
|
|
7284
7552
|
{
|
|
7285
7553
|
ref,
|
|
@@ -7295,11 +7563,11 @@ var Menu = (0, import_react25.forwardRef)(
|
|
|
7295
7563
|
}
|
|
7296
7564
|
);
|
|
7297
7565
|
Menu.displayName = "Menu";
|
|
7298
|
-
var MenuContent = (0,
|
|
7566
|
+
var MenuContent = (0, import_react26.forwardRef)(
|
|
7299
7567
|
({ className, children, variant = "menu", ...props }, ref) => {
|
|
7300
7568
|
const baseClasses = "w-full flex flex-row items-center gap-2";
|
|
7301
7569
|
const variantClasses = variant === "menu2" || variant === "menu-overflow" ? "overflow-x-auto scroll-smooth" : "";
|
|
7302
|
-
return /* @__PURE__ */ (0,
|
|
7570
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7303
7571
|
"ul",
|
|
7304
7572
|
{
|
|
7305
7573
|
ref,
|
|
@@ -7317,7 +7585,7 @@ var MenuContent = (0, import_react25.forwardRef)(
|
|
|
7317
7585
|
}
|
|
7318
7586
|
);
|
|
7319
7587
|
MenuContent.displayName = "MenuContent";
|
|
7320
|
-
var MenuItem = (0,
|
|
7588
|
+
var MenuItem = (0, import_react26.forwardRef)(
|
|
7321
7589
|
({
|
|
7322
7590
|
className,
|
|
7323
7591
|
children,
|
|
@@ -7351,7 +7619,7 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7351
7619
|
...props
|
|
7352
7620
|
};
|
|
7353
7621
|
const variants = {
|
|
7354
|
-
menu: /* @__PURE__ */ (0,
|
|
7622
|
+
menu: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7355
7623
|
"li",
|
|
7356
7624
|
{
|
|
7357
7625
|
"data-variant": "menu",
|
|
@@ -7366,7 +7634,7 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7366
7634
|
children
|
|
7367
7635
|
}
|
|
7368
7636
|
),
|
|
7369
|
-
menu2: /* @__PURE__ */ (0,
|
|
7637
|
+
menu2: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7370
7638
|
"li",
|
|
7371
7639
|
{
|
|
7372
7640
|
"data-variant": "menu2",
|
|
@@ -7377,7 +7645,7 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7377
7645
|
`,
|
|
7378
7646
|
...commonProps,
|
|
7379
7647
|
children: [
|
|
7380
|
-
/* @__PURE__ */ (0,
|
|
7648
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7381
7649
|
"span",
|
|
7382
7650
|
{
|
|
7383
7651
|
className: cn(
|
|
@@ -7387,11 +7655,11 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7387
7655
|
children
|
|
7388
7656
|
}
|
|
7389
7657
|
),
|
|
7390
|
-
selectedValue === value && /* @__PURE__ */ (0,
|
|
7658
|
+
selectedValue === value && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "h-1 w-full bg-primary-950 rounded-lg" })
|
|
7391
7659
|
]
|
|
7392
7660
|
}
|
|
7393
7661
|
),
|
|
7394
|
-
"menu-overflow": /* @__PURE__ */ (0,
|
|
7662
|
+
"menu-overflow": /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7395
7663
|
"li",
|
|
7396
7664
|
{
|
|
7397
7665
|
"data-variant": "menu-overflow",
|
|
@@ -7402,7 +7670,7 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7402
7670
|
`,
|
|
7403
7671
|
...commonProps,
|
|
7404
7672
|
children: [
|
|
7405
|
-
/* @__PURE__ */ (0,
|
|
7673
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7406
7674
|
"span",
|
|
7407
7675
|
{
|
|
7408
7676
|
className: cn(
|
|
@@ -7412,11 +7680,11 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7412
7680
|
children
|
|
7413
7681
|
}
|
|
7414
7682
|
),
|
|
7415
|
-
selectedValue === value && /* @__PURE__ */ (0,
|
|
7683
|
+
selectedValue === value && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "h-1 w-full bg-primary-950 rounded-lg" })
|
|
7416
7684
|
]
|
|
7417
7685
|
}
|
|
7418
7686
|
),
|
|
7419
|
-
breadcrumb: /* @__PURE__ */ (0,
|
|
7687
|
+
breadcrumb: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7420
7688
|
"li",
|
|
7421
7689
|
{
|
|
7422
7690
|
"data-variant": "breadcrumb",
|
|
@@ -7428,7 +7696,7 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7428
7696
|
`,
|
|
7429
7697
|
...commonProps,
|
|
7430
7698
|
children: [
|
|
7431
|
-
/* @__PURE__ */ (0,
|
|
7699
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7432
7700
|
"span",
|
|
7433
7701
|
{
|
|
7434
7702
|
className: cn(
|
|
@@ -7438,7 +7706,7 @@ var MenuItem = (0, import_react25.forwardRef)(
|
|
|
7438
7706
|
children
|
|
7439
7707
|
}
|
|
7440
7708
|
),
|
|
7441
|
-
separator && /* @__PURE__ */ (0,
|
|
7709
|
+
separator && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7442
7710
|
import_phosphor_react18.CaretRight,
|
|
7443
7711
|
{
|
|
7444
7712
|
size: 16,
|
|
@@ -7475,10 +7743,10 @@ var MenuOverflow = ({
|
|
|
7475
7743
|
onValueChange,
|
|
7476
7744
|
...props
|
|
7477
7745
|
}) => {
|
|
7478
|
-
const containerRef = (0,
|
|
7479
|
-
const [showLeftArrow, setShowLeftArrow] = (0,
|
|
7480
|
-
const [showRightArrow, setShowRightArrow] = (0,
|
|
7481
|
-
(0,
|
|
7746
|
+
const containerRef = (0, import_react26.useRef)(null);
|
|
7747
|
+
const [showLeftArrow, setShowLeftArrow] = (0, import_react26.useState)(false);
|
|
7748
|
+
const [showRightArrow, setShowRightArrow] = (0, import_react26.useState)(false);
|
|
7749
|
+
(0, import_react26.useEffect)(() => {
|
|
7482
7750
|
const checkScroll = () => internalCheckScroll(
|
|
7483
7751
|
containerRef.current,
|
|
7484
7752
|
setShowLeftArrow,
|
|
@@ -7493,25 +7761,25 @@ var MenuOverflow = ({
|
|
|
7493
7761
|
window.removeEventListener("resize", checkScroll);
|
|
7494
7762
|
};
|
|
7495
7763
|
}, []);
|
|
7496
|
-
return /* @__PURE__ */ (0,
|
|
7764
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7497
7765
|
"div",
|
|
7498
7766
|
{
|
|
7499
7767
|
"data-testid": "menu-overflow-wrapper",
|
|
7500
7768
|
className: cn("relative w-full overflow-hidden", className),
|
|
7501
7769
|
children: [
|
|
7502
|
-
showLeftArrow && /* @__PURE__ */ (0,
|
|
7770
|
+
showLeftArrow && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7503
7771
|
"button",
|
|
7504
7772
|
{
|
|
7505
7773
|
onClick: () => internalScroll(containerRef.current, "left"),
|
|
7506
7774
|
className: "absolute left-0 top-1/2 -translate-y-1/2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white shadow-md cursor-pointer",
|
|
7507
7775
|
"data-testid": "scroll-left-button",
|
|
7508
7776
|
children: [
|
|
7509
|
-
/* @__PURE__ */ (0,
|
|
7510
|
-
/* @__PURE__ */ (0,
|
|
7777
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_phosphor_react18.CaretLeft, { size: 16 }),
|
|
7778
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "sr-only", children: "Scroll left" })
|
|
7511
7779
|
]
|
|
7512
7780
|
}
|
|
7513
7781
|
),
|
|
7514
|
-
/* @__PURE__ */ (0,
|
|
7782
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
7515
7783
|
Menu,
|
|
7516
7784
|
{
|
|
7517
7785
|
defaultValue,
|
|
@@ -7519,18 +7787,18 @@ var MenuOverflow = ({
|
|
|
7519
7787
|
value,
|
|
7520
7788
|
variant: "menu2",
|
|
7521
7789
|
...props,
|
|
7522
|
-
children: /* @__PURE__ */ (0,
|
|
7790
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuContent, { ref: containerRef, variant: "menu2", children })
|
|
7523
7791
|
}
|
|
7524
7792
|
),
|
|
7525
|
-
showRightArrow && /* @__PURE__ */ (0,
|
|
7793
|
+
showRightArrow && /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
7526
7794
|
"button",
|
|
7527
7795
|
{
|
|
7528
7796
|
onClick: () => internalScroll(containerRef.current, "right"),
|
|
7529
7797
|
className: "absolute right-0 top-1/2 -translate-y-1/2 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white shadow-md cursor-pointer",
|
|
7530
7798
|
"data-testid": "scroll-right-button",
|
|
7531
7799
|
children: [
|
|
7532
|
-
/* @__PURE__ */ (0,
|
|
7533
|
-
/* @__PURE__ */ (0,
|
|
7800
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_phosphor_react18.CaretRight, { size: 16 }),
|
|
7801
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "sr-only", children: "Scroll right" })
|
|
7534
7802
|
]
|
|
7535
7803
|
}
|
|
7536
7804
|
)
|
|
@@ -7538,11 +7806,11 @@ var MenuOverflow = ({
|
|
|
7538
7806
|
}
|
|
7539
7807
|
);
|
|
7540
7808
|
};
|
|
7541
|
-
var injectStore5 = (children, store) =>
|
|
7542
|
-
if (!(0,
|
|
7809
|
+
var injectStore5 = (children, store) => import_react26.Children.map(children, (child) => {
|
|
7810
|
+
if (!(0, import_react26.isValidElement)(child)) return child;
|
|
7543
7811
|
const typedChild = child;
|
|
7544
7812
|
const shouldInject = typedChild.type === MenuItem;
|
|
7545
|
-
return (0,
|
|
7813
|
+
return (0, import_react26.cloneElement)(typedChild, {
|
|
7546
7814
|
...shouldInject ? { store } : {},
|
|
7547
7815
|
...typedChild.props.children ? { children: injectStore5(typedChild.props.children, store) } : {}
|
|
7548
7816
|
});
|
|
@@ -7550,13 +7818,13 @@ var injectStore5 = (children, store) => import_react25.Children.map(children, (c
|
|
|
7550
7818
|
var Menu_default = Menu;
|
|
7551
7819
|
|
|
7552
7820
|
// src/components/Card/Card.tsx
|
|
7553
|
-
var
|
|
7821
|
+
var import_react28 = require("react");
|
|
7554
7822
|
var import_phosphor_react19 = require("phosphor-react");
|
|
7555
7823
|
|
|
7556
7824
|
// src/components/IconRender/IconRender.tsx
|
|
7557
|
-
var
|
|
7825
|
+
var import_react27 = require("react");
|
|
7558
7826
|
var PhosphorIcons = __toESM(require("phosphor-react"));
|
|
7559
|
-
var
|
|
7827
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
7560
7828
|
var IconRender = ({
|
|
7561
7829
|
iconName,
|
|
7562
7830
|
color = "#000000",
|
|
@@ -7566,18 +7834,18 @@ var IconRender = ({
|
|
|
7566
7834
|
if (typeof iconName === "string") {
|
|
7567
7835
|
switch (iconName) {
|
|
7568
7836
|
case "Chat_PT":
|
|
7569
|
-
return /* @__PURE__ */ (0,
|
|
7837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ChatPT, { size, color });
|
|
7570
7838
|
case "Chat_EN":
|
|
7571
|
-
return /* @__PURE__ */ (0,
|
|
7839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ChatEN, { size, color });
|
|
7572
7840
|
case "Chat_ES":
|
|
7573
|
-
return /* @__PURE__ */ (0,
|
|
7841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ChatES, { size, color });
|
|
7574
7842
|
default: {
|
|
7575
7843
|
const IconComponent = PhosphorIcons[iconName] || PhosphorIcons.Question;
|
|
7576
|
-
return /* @__PURE__ */ (0,
|
|
7844
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(IconComponent, { size, color, weight });
|
|
7577
7845
|
}
|
|
7578
7846
|
}
|
|
7579
7847
|
} else {
|
|
7580
|
-
return (0,
|
|
7848
|
+
return (0, import_react27.cloneElement)(iconName, {
|
|
7581
7849
|
size,
|
|
7582
7850
|
color: "currentColor"
|
|
7583
7851
|
});
|
|
@@ -7586,7 +7854,7 @@ var IconRender = ({
|
|
|
7586
7854
|
var IconRender_default = IconRender;
|
|
7587
7855
|
|
|
7588
7856
|
// src/components/Card/Card.tsx
|
|
7589
|
-
var
|
|
7857
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
7590
7858
|
var CARD_BASE_CLASSES = {
|
|
7591
7859
|
default: "w-full bg-background border border-border-50 rounded-xl",
|
|
7592
7860
|
compact: "w-full bg-background border border-border-50 rounded-lg",
|
|
@@ -7612,7 +7880,7 @@ var CARD_CURSOR_CLASSES = {
|
|
|
7612
7880
|
default: "",
|
|
7613
7881
|
pointer: "cursor-pointer"
|
|
7614
7882
|
};
|
|
7615
|
-
var CardBase = (0,
|
|
7883
|
+
var CardBase = (0, import_react28.forwardRef)(
|
|
7616
7884
|
({
|
|
7617
7885
|
children,
|
|
7618
7886
|
variant = "default",
|
|
@@ -7628,7 +7896,7 @@ var CardBase = (0, import_react27.forwardRef)(
|
|
|
7628
7896
|
const minHeightClasses = CARD_MIN_HEIGHT_CLASSES[minHeight];
|
|
7629
7897
|
const layoutClasses = CARD_LAYOUT_CLASSES[layout];
|
|
7630
7898
|
const cursorClasses = CARD_CURSOR_CLASSES[cursor];
|
|
7631
|
-
return /* @__PURE__ */ (0,
|
|
7899
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7632
7900
|
"div",
|
|
7633
7901
|
{
|
|
7634
7902
|
ref,
|
|
@@ -7670,7 +7938,7 @@ var ACTION_HEADER_CLASSES = {
|
|
|
7670
7938
|
error: "text-error-300",
|
|
7671
7939
|
info: "text-info-300"
|
|
7672
7940
|
};
|
|
7673
|
-
var CardActivitiesResults = (0,
|
|
7941
|
+
var CardActivitiesResults = (0, import_react28.forwardRef)(
|
|
7674
7942
|
({
|
|
7675
7943
|
icon,
|
|
7676
7944
|
title,
|
|
@@ -7686,7 +7954,7 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7686
7954
|
const actionIconClasses = ACTION_ICON_CLASSES[action];
|
|
7687
7955
|
const actionSubTitleClasses = ACTION_SUBTITLE_CLASSES[action];
|
|
7688
7956
|
const actionHeaderClasses = ACTION_HEADER_CLASSES[action];
|
|
7689
|
-
return /* @__PURE__ */ (0,
|
|
7957
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7690
7958
|
"div",
|
|
7691
7959
|
{
|
|
7692
7960
|
ref,
|
|
@@ -7696,7 +7964,7 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7696
7964
|
),
|
|
7697
7965
|
...props,
|
|
7698
7966
|
children: [
|
|
7699
|
-
/* @__PURE__ */ (0,
|
|
7967
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7700
7968
|
"div",
|
|
7701
7969
|
{
|
|
7702
7970
|
className: cn(
|
|
@@ -7705,7 +7973,7 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7705
7973
|
extended ? "rounded-t-xl" : "rounded-xl"
|
|
7706
7974
|
),
|
|
7707
7975
|
children: [
|
|
7708
|
-
/* @__PURE__ */ (0,
|
|
7976
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7709
7977
|
"span",
|
|
7710
7978
|
{
|
|
7711
7979
|
className: cn(
|
|
@@ -7715,7 +7983,7 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7715
7983
|
children: icon
|
|
7716
7984
|
}
|
|
7717
7985
|
),
|
|
7718
|
-
/* @__PURE__ */ (0,
|
|
7986
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7719
7987
|
Text_default,
|
|
7720
7988
|
{
|
|
7721
7989
|
size: "2xs",
|
|
@@ -7724,7 +7992,7 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7724
7992
|
children: title
|
|
7725
7993
|
}
|
|
7726
7994
|
),
|
|
7727
|
-
/* @__PURE__ */ (0,
|
|
7995
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7728
7996
|
"p",
|
|
7729
7997
|
{
|
|
7730
7998
|
className: cn("text-lg font-bold truncate", actionSubTitleClasses),
|
|
@@ -7734,8 +8002,8 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7734
8002
|
]
|
|
7735
8003
|
}
|
|
7736
8004
|
),
|
|
7737
|
-
extended && /* @__PURE__ */ (0,
|
|
7738
|
-
/* @__PURE__ */ (0,
|
|
8005
|
+
extended && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col items-center gap-2.5 pb-9.5 pt-2.5", children: [
|
|
8006
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7739
8007
|
"p",
|
|
7740
8008
|
{
|
|
7741
8009
|
className: cn(
|
|
@@ -7745,14 +8013,14 @@ var CardActivitiesResults = (0, import_react27.forwardRef)(
|
|
|
7745
8013
|
children: header
|
|
7746
8014
|
}
|
|
7747
8015
|
),
|
|
7748
|
-
/* @__PURE__ */ (0,
|
|
8016
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Badge_default, { size: "large", action: "info", children: description })
|
|
7749
8017
|
] })
|
|
7750
8018
|
]
|
|
7751
8019
|
}
|
|
7752
8020
|
);
|
|
7753
8021
|
}
|
|
7754
8022
|
);
|
|
7755
|
-
var CardQuestions = (0,
|
|
8023
|
+
var CardQuestions = (0, import_react28.forwardRef)(
|
|
7756
8024
|
({
|
|
7757
8025
|
header,
|
|
7758
8026
|
state = "undone",
|
|
@@ -7764,7 +8032,7 @@ var CardQuestions = (0, import_react27.forwardRef)(
|
|
|
7764
8032
|
const isDone = state === "done";
|
|
7765
8033
|
const stateLabel = isDone ? "Realizado" : "N\xE3o Realizado";
|
|
7766
8034
|
const buttonLabel = isDone ? "Ver Resultado" : "Responder";
|
|
7767
|
-
return /* @__PURE__ */ (0,
|
|
8035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7768
8036
|
CardBase,
|
|
7769
8037
|
{
|
|
7770
8038
|
ref,
|
|
@@ -7774,9 +8042,9 @@ var CardQuestions = (0, import_react27.forwardRef)(
|
|
|
7774
8042
|
className: cn("justify-between gap-4", className),
|
|
7775
8043
|
...props,
|
|
7776
8044
|
children: [
|
|
7777
|
-
/* @__PURE__ */ (0,
|
|
7778
|
-
/* @__PURE__ */ (0,
|
|
7779
|
-
/* @__PURE__ */ (0,
|
|
8045
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("section", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
8046
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "font-bold text-xs text-text-950 truncate", children: header }),
|
|
8047
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex flex-row gap-6 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7780
8048
|
Badge_default,
|
|
7781
8049
|
{
|
|
7782
8050
|
size: "medium",
|
|
@@ -7786,7 +8054,7 @@ var CardQuestions = (0, import_react27.forwardRef)(
|
|
|
7786
8054
|
}
|
|
7787
8055
|
) })
|
|
7788
8056
|
] }),
|
|
7789
|
-
/* @__PURE__ */ (0,
|
|
8057
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7790
8058
|
Button_default,
|
|
7791
8059
|
{
|
|
7792
8060
|
size: "extra-small",
|
|
@@ -7800,7 +8068,7 @@ var CardQuestions = (0, import_react27.forwardRef)(
|
|
|
7800
8068
|
);
|
|
7801
8069
|
}
|
|
7802
8070
|
);
|
|
7803
|
-
var CardProgress = (0,
|
|
8071
|
+
var CardProgress = (0, import_react28.forwardRef)(
|
|
7804
8072
|
({
|
|
7805
8073
|
header,
|
|
7806
8074
|
subhead,
|
|
@@ -7817,19 +8085,19 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7817
8085
|
}, ref) => {
|
|
7818
8086
|
const isHorizontal = direction === "horizontal";
|
|
7819
8087
|
const contentComponent = {
|
|
7820
|
-
horizontal: /* @__PURE__ */ (0,
|
|
7821
|
-
showDates && /* @__PURE__ */ (0,
|
|
7822
|
-
initialDate && /* @__PURE__ */ (0,
|
|
7823
|
-
/* @__PURE__ */ (0,
|
|
7824
|
-
/* @__PURE__ */ (0,
|
|
8088
|
+
horizontal: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
|
|
8089
|
+
showDates && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row gap-6 items-center", children: [
|
|
8090
|
+
initialDate && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "flex flex-row gap-1 items-center text-2xs", children: [
|
|
8091
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-800 font-semibold", children: "In\xEDcio" }),
|
|
8092
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-600", children: initialDate })
|
|
7825
8093
|
] }),
|
|
7826
|
-
endDate && /* @__PURE__ */ (0,
|
|
7827
|
-
/* @__PURE__ */ (0,
|
|
7828
|
-
/* @__PURE__ */ (0,
|
|
8094
|
+
endDate && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "flex flex-row gap-1 items-center text-2xs", children: [
|
|
8095
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-800 font-semibold", children: "Fim" }),
|
|
8096
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-600", children: endDate })
|
|
7829
8097
|
] })
|
|
7830
8098
|
] }),
|
|
7831
|
-
/* @__PURE__ */ (0,
|
|
7832
|
-
/* @__PURE__ */ (0,
|
|
8099
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "grid grid-cols-[1fr_auto] items-center gap-2", children: [
|
|
8100
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7833
8101
|
ProgressBar_default,
|
|
7834
8102
|
{
|
|
7835
8103
|
size: "small",
|
|
@@ -7838,7 +8106,7 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7838
8106
|
"data-testid": "progress-bar"
|
|
7839
8107
|
}
|
|
7840
8108
|
),
|
|
7841
|
-
/* @__PURE__ */ (0,
|
|
8109
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7842
8110
|
Text_default,
|
|
7843
8111
|
{
|
|
7844
8112
|
size: "xs",
|
|
@@ -7854,9 +8122,9 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7854
8122
|
)
|
|
7855
8123
|
] })
|
|
7856
8124
|
] }),
|
|
7857
|
-
vertical: /* @__PURE__ */ (0,
|
|
8125
|
+
vertical: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm text-text-800", children: subhead })
|
|
7858
8126
|
};
|
|
7859
|
-
return /* @__PURE__ */ (0,
|
|
8127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7860
8128
|
CardBase,
|
|
7861
8129
|
{
|
|
7862
8130
|
ref,
|
|
@@ -7867,7 +8135,7 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7867
8135
|
className: cn(isHorizontal ? "h-20" : "", className),
|
|
7868
8136
|
...props,
|
|
7869
8137
|
children: [
|
|
7870
|
-
/* @__PURE__ */ (0,
|
|
8138
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7871
8139
|
"div",
|
|
7872
8140
|
{
|
|
7873
8141
|
className: cn(
|
|
@@ -7880,7 +8148,7 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7880
8148
|
children: icon
|
|
7881
8149
|
}
|
|
7882
8150
|
),
|
|
7883
|
-
/* @__PURE__ */ (0,
|
|
8151
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7884
8152
|
"div",
|
|
7885
8153
|
{
|
|
7886
8154
|
className: cn(
|
|
@@ -7888,7 +8156,7 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7888
8156
|
!isHorizontal && "gap-4"
|
|
7889
8157
|
),
|
|
7890
8158
|
children: [
|
|
7891
|
-
/* @__PURE__ */ (0,
|
|
8159
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text_default, { size: "sm", weight: "bold", className: "text-text-950 truncate", children: header }),
|
|
7892
8160
|
contentComponent[direction]
|
|
7893
8161
|
]
|
|
7894
8162
|
}
|
|
@@ -7898,7 +8166,7 @@ var CardProgress = (0, import_react27.forwardRef)(
|
|
|
7898
8166
|
);
|
|
7899
8167
|
}
|
|
7900
8168
|
);
|
|
7901
|
-
var CardTopic = (0,
|
|
8169
|
+
var CardTopic = (0, import_react28.forwardRef)(
|
|
7902
8170
|
({
|
|
7903
8171
|
header,
|
|
7904
8172
|
subHead,
|
|
@@ -7908,7 +8176,7 @@ var CardTopic = (0, import_react27.forwardRef)(
|
|
|
7908
8176
|
className = "",
|
|
7909
8177
|
...props
|
|
7910
8178
|
}, ref) => {
|
|
7911
|
-
return /* @__PURE__ */ (0,
|
|
8179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7912
8180
|
CardBase,
|
|
7913
8181
|
{
|
|
7914
8182
|
ref,
|
|
@@ -7919,13 +8187,13 @@ var CardTopic = (0, import_react27.forwardRef)(
|
|
|
7919
8187
|
className: cn("justify-center gap-2 py-2 px-4", className),
|
|
7920
8188
|
...props,
|
|
7921
8189
|
children: [
|
|
7922
|
-
subHead && /* @__PURE__ */ (0,
|
|
7923
|
-
/* @__PURE__ */ (0,
|
|
7924
|
-
index < subHead.length - 1 && /* @__PURE__ */ (0,
|
|
8190
|
+
subHead && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "text-text-600 text-2xs flex flex-row gap-1", children: subHead.map((text, index) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_react28.Fragment, { children: [
|
|
8191
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: text }),
|
|
8192
|
+
index < subHead.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u2022" })
|
|
7925
8193
|
] }, `${text} - ${index}`)) }),
|
|
7926
|
-
/* @__PURE__ */ (0,
|
|
7927
|
-
/* @__PURE__ */ (0,
|
|
7928
|
-
/* @__PURE__ */ (0,
|
|
8194
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm text-text-950 font-bold truncate", children: header }),
|
|
8195
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "grid grid-cols-[1fr_auto] items-center gap-2", children: [
|
|
8196
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7929
8197
|
ProgressBar_default,
|
|
7930
8198
|
{
|
|
7931
8199
|
size: "small",
|
|
@@ -7934,7 +8202,7 @@ var CardTopic = (0, import_react27.forwardRef)(
|
|
|
7934
8202
|
"data-testid": "progress-bar"
|
|
7935
8203
|
}
|
|
7936
8204
|
),
|
|
7937
|
-
showPercentage && /* @__PURE__ */ (0,
|
|
8205
|
+
showPercentage && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7938
8206
|
Text_default,
|
|
7939
8207
|
{
|
|
7940
8208
|
size: "xs",
|
|
@@ -7954,7 +8222,7 @@ var CardTopic = (0, import_react27.forwardRef)(
|
|
|
7954
8222
|
);
|
|
7955
8223
|
}
|
|
7956
8224
|
);
|
|
7957
|
-
var CardPerformance = (0,
|
|
8225
|
+
var CardPerformance = (0, import_react28.forwardRef)(
|
|
7958
8226
|
({
|
|
7959
8227
|
header,
|
|
7960
8228
|
progress,
|
|
@@ -7968,7 +8236,7 @@ var CardPerformance = (0, import_react27.forwardRef)(
|
|
|
7968
8236
|
...props
|
|
7969
8237
|
}, ref) => {
|
|
7970
8238
|
const hasProgress = progress !== void 0;
|
|
7971
|
-
return /* @__PURE__ */ (0,
|
|
8239
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7972
8240
|
CardBase,
|
|
7973
8241
|
{
|
|
7974
8242
|
ref,
|
|
@@ -7982,10 +8250,10 @@ var CardPerformance = (0, import_react27.forwardRef)(
|
|
|
7982
8250
|
onClick: () => actionVariant == "caret" && onClickButton?.(valueButton),
|
|
7983
8251
|
...props,
|
|
7984
8252
|
children: [
|
|
7985
|
-
/* @__PURE__ */ (0,
|
|
7986
|
-
/* @__PURE__ */ (0,
|
|
7987
|
-
/* @__PURE__ */ (0,
|
|
7988
|
-
actionVariant === "button" && /* @__PURE__ */ (0,
|
|
8253
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "w-full flex flex-col justify-between gap-2", children: [
|
|
8254
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row justify-between items-center gap-2", children: [
|
|
8255
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-lg font-bold text-text-950 truncate flex-1 min-w-0", children: header }),
|
|
8256
|
+
actionVariant === "button" && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7989
8257
|
Button_default,
|
|
7990
8258
|
{
|
|
7991
8259
|
variant: "outline",
|
|
@@ -7996,16 +8264,16 @@ var CardPerformance = (0, import_react27.forwardRef)(
|
|
|
7996
8264
|
}
|
|
7997
8265
|
)
|
|
7998
8266
|
] }),
|
|
7999
|
-
/* @__PURE__ */ (0,
|
|
8267
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-full", children: hasProgress ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8000
8268
|
ProgressBar_default,
|
|
8001
8269
|
{
|
|
8002
8270
|
value: progress,
|
|
8003
8271
|
label: `${progress}% ${labelProgress}`,
|
|
8004
8272
|
variant: progressVariant
|
|
8005
8273
|
}
|
|
8006
|
-
) : /* @__PURE__ */ (0,
|
|
8274
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-xs text-text-600 truncate", children: description }) })
|
|
8007
8275
|
] }),
|
|
8008
|
-
actionVariant == "caret" && /* @__PURE__ */ (0,
|
|
8276
|
+
actionVariant == "caret" && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8009
8277
|
import_phosphor_react19.CaretRight,
|
|
8010
8278
|
{
|
|
8011
8279
|
className: "size-4.5 text-text-800 cursor-pointer",
|
|
@@ -8017,7 +8285,7 @@ var CardPerformance = (0, import_react27.forwardRef)(
|
|
|
8017
8285
|
);
|
|
8018
8286
|
}
|
|
8019
8287
|
);
|
|
8020
|
-
var CardResults = (0,
|
|
8288
|
+
var CardResults = (0, import_react28.forwardRef)(
|
|
8021
8289
|
({
|
|
8022
8290
|
header,
|
|
8023
8291
|
correct_answers,
|
|
@@ -8029,7 +8297,7 @@ var CardResults = (0, import_react27.forwardRef)(
|
|
|
8029
8297
|
...props
|
|
8030
8298
|
}, ref) => {
|
|
8031
8299
|
const isRow = direction == "row";
|
|
8032
|
-
return /* @__PURE__ */ (0,
|
|
8300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8033
8301
|
CardBase,
|
|
8034
8302
|
{
|
|
8035
8303
|
ref,
|
|
@@ -8039,7 +8307,7 @@ var CardResults = (0, import_react27.forwardRef)(
|
|
|
8039
8307
|
className: cn("items-stretch cursor-pointer pr-4", className),
|
|
8040
8308
|
...props,
|
|
8041
8309
|
children: [
|
|
8042
|
-
/* @__PURE__ */ (0,
|
|
8310
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8043
8311
|
"div",
|
|
8044
8312
|
{
|
|
8045
8313
|
className: cn(
|
|
@@ -8048,11 +8316,11 @@ var CardResults = (0, import_react27.forwardRef)(
|
|
|
8048
8316
|
style: {
|
|
8049
8317
|
backgroundColor: color
|
|
8050
8318
|
},
|
|
8051
|
-
children: /* @__PURE__ */ (0,
|
|
8319
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(IconRender_default, { iconName: icon, color: "currentColor", size: 20 })
|
|
8052
8320
|
}
|
|
8053
8321
|
),
|
|
8054
|
-
/* @__PURE__ */ (0,
|
|
8055
|
-
/* @__PURE__ */ (0,
|
|
8322
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "w-full flex flex-row justify-between items-center", children: [
|
|
8323
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8056
8324
|
"div",
|
|
8057
8325
|
{
|
|
8058
8326
|
className: cn(
|
|
@@ -8060,28 +8328,28 @@ var CardResults = (0, import_react27.forwardRef)(
|
|
|
8060
8328
|
isRow ? "flex-row items-center gap-2" : "flex-col"
|
|
8061
8329
|
),
|
|
8062
8330
|
children: [
|
|
8063
|
-
/* @__PURE__ */ (0,
|
|
8064
|
-
/* @__PURE__ */ (0,
|
|
8065
|
-
/* @__PURE__ */ (0,
|
|
8331
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm font-bold text-text-950 flex-1", children: header }),
|
|
8332
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "flex flex-wrap flex-row gap-1 items-center", children: [
|
|
8333
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8066
8334
|
Badge_default,
|
|
8067
8335
|
{
|
|
8068
8336
|
action: "success",
|
|
8069
8337
|
variant: "solid",
|
|
8070
8338
|
size: "large",
|
|
8071
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
8339
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.CheckCircle, {}),
|
|
8072
8340
|
children: [
|
|
8073
8341
|
correct_answers,
|
|
8074
8342
|
" Corretas"
|
|
8075
8343
|
]
|
|
8076
8344
|
}
|
|
8077
8345
|
),
|
|
8078
|
-
/* @__PURE__ */ (0,
|
|
8346
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8079
8347
|
Badge_default,
|
|
8080
8348
|
{
|
|
8081
8349
|
action: "error",
|
|
8082
8350
|
variant: "solid",
|
|
8083
8351
|
size: "large",
|
|
8084
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
8352
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.XCircle, {}),
|
|
8085
8353
|
children: [
|
|
8086
8354
|
incorrect_answers,
|
|
8087
8355
|
" Incorretas"
|
|
@@ -8092,14 +8360,14 @@ var CardResults = (0, import_react27.forwardRef)(
|
|
|
8092
8360
|
]
|
|
8093
8361
|
}
|
|
8094
8362
|
),
|
|
8095
|
-
/* @__PURE__ */ (0,
|
|
8363
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.CaretRight, { className: "min-w-6 min-h-6 text-text-800" })
|
|
8096
8364
|
] })
|
|
8097
8365
|
]
|
|
8098
8366
|
}
|
|
8099
8367
|
);
|
|
8100
8368
|
}
|
|
8101
8369
|
);
|
|
8102
|
-
var CardStatus = (0,
|
|
8370
|
+
var CardStatus = (0, import_react28.forwardRef)(
|
|
8103
8371
|
({ header, className, status, label, ...props }, ref) => {
|
|
8104
8372
|
const getLabelBadge = (status2) => {
|
|
8105
8373
|
switch (status2) {
|
|
@@ -8118,13 +8386,13 @@ var CardStatus = (0, import_react27.forwardRef)(
|
|
|
8118
8386
|
const getIconBadge = (status2) => {
|
|
8119
8387
|
switch (status2) {
|
|
8120
8388
|
case "correct":
|
|
8121
|
-
return /* @__PURE__ */ (0,
|
|
8389
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.CheckCircle, {});
|
|
8122
8390
|
case "incorrect":
|
|
8123
|
-
return /* @__PURE__ */ (0,
|
|
8391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.XCircle, {});
|
|
8124
8392
|
case "pending":
|
|
8125
|
-
return /* @__PURE__ */ (0,
|
|
8393
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.Clock, {});
|
|
8126
8394
|
default:
|
|
8127
|
-
return /* @__PURE__ */ (0,
|
|
8395
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.XCircle, {});
|
|
8128
8396
|
}
|
|
8129
8397
|
};
|
|
8130
8398
|
const getActionBadge = (status2) => {
|
|
@@ -8139,7 +8407,7 @@ var CardStatus = (0, import_react27.forwardRef)(
|
|
|
8139
8407
|
return "info";
|
|
8140
8408
|
}
|
|
8141
8409
|
};
|
|
8142
|
-
return /* @__PURE__ */ (0,
|
|
8410
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8143
8411
|
CardBase,
|
|
8144
8412
|
{
|
|
8145
8413
|
ref,
|
|
@@ -8148,10 +8416,10 @@ var CardStatus = (0, import_react27.forwardRef)(
|
|
|
8148
8416
|
minHeight: "medium",
|
|
8149
8417
|
className: cn("items-center cursor-pointer", className),
|
|
8150
8418
|
...props,
|
|
8151
|
-
children: /* @__PURE__ */ (0,
|
|
8152
|
-
/* @__PURE__ */ (0,
|
|
8153
|
-
/* @__PURE__ */ (0,
|
|
8154
|
-
status && /* @__PURE__ */ (0,
|
|
8419
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex justify-between w-full h-full flex-row items-center gap-2", children: [
|
|
8420
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm font-bold text-text-950 truncate flex-1 min-w-0", children: header }),
|
|
8421
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "flex flex-row gap-1 items-center flex-shrink-0", children: [
|
|
8422
|
+
status && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8155
8423
|
Badge_default,
|
|
8156
8424
|
{
|
|
8157
8425
|
action: getActionBadge(status),
|
|
@@ -8161,17 +8429,17 @@ var CardStatus = (0, import_react27.forwardRef)(
|
|
|
8161
8429
|
children: getLabelBadge(status)
|
|
8162
8430
|
}
|
|
8163
8431
|
),
|
|
8164
|
-
label && /* @__PURE__ */ (0,
|
|
8432
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm text-text-800", children: label })
|
|
8165
8433
|
] }),
|
|
8166
|
-
/* @__PURE__ */ (0,
|
|
8434
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.CaretRight, { className: "min-w-6 min-h-6 text-text-800 cursor-pointer flex-shrink-0 ml-2" })
|
|
8167
8435
|
] })
|
|
8168
8436
|
}
|
|
8169
8437
|
);
|
|
8170
8438
|
}
|
|
8171
8439
|
);
|
|
8172
|
-
var CardSettings = (0,
|
|
8440
|
+
var CardSettings = (0, import_react28.forwardRef)(
|
|
8173
8441
|
({ header, className, icon, ...props }, ref) => {
|
|
8174
|
-
return /* @__PURE__ */ (0,
|
|
8442
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8175
8443
|
CardBase,
|
|
8176
8444
|
{
|
|
8177
8445
|
ref,
|
|
@@ -8184,17 +8452,17 @@ var CardSettings = (0, import_react27.forwardRef)(
|
|
|
8184
8452
|
),
|
|
8185
8453
|
...props,
|
|
8186
8454
|
children: [
|
|
8187
|
-
/* @__PURE__ */ (0,
|
|
8188
|
-
/* @__PURE__ */ (0,
|
|
8189
|
-
/* @__PURE__ */ (0,
|
|
8455
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "[&>svg]:size-6", children: icon }),
|
|
8456
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "w-full text-sm truncate", children: header }),
|
|
8457
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.CaretRight, { size: 24, className: "cursor-pointer" })
|
|
8190
8458
|
]
|
|
8191
8459
|
}
|
|
8192
8460
|
);
|
|
8193
8461
|
}
|
|
8194
8462
|
);
|
|
8195
|
-
var CardSupport = (0,
|
|
8463
|
+
var CardSupport = (0, import_react28.forwardRef)(
|
|
8196
8464
|
({ header, className, direction = "col", children, ...props }, ref) => {
|
|
8197
|
-
return /* @__PURE__ */ (0,
|
|
8465
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8198
8466
|
CardBase,
|
|
8199
8467
|
{
|
|
8200
8468
|
ref,
|
|
@@ -8207,7 +8475,7 @@ var CardSupport = (0, import_react27.forwardRef)(
|
|
|
8207
8475
|
),
|
|
8208
8476
|
...props,
|
|
8209
8477
|
children: [
|
|
8210
|
-
/* @__PURE__ */ (0,
|
|
8478
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8211
8479
|
"div",
|
|
8212
8480
|
{
|
|
8213
8481
|
className: cn(
|
|
@@ -8215,18 +8483,18 @@ var CardSupport = (0, import_react27.forwardRef)(
|
|
|
8215
8483
|
direction == "col" ? "flex-col" : "flex-row items-center"
|
|
8216
8484
|
),
|
|
8217
8485
|
children: [
|
|
8218
|
-
/* @__PURE__ */ (0,
|
|
8219
|
-
/* @__PURE__ */ (0,
|
|
8486
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "w-full min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-sm text-text-950 font-bold truncate", children: header }) }),
|
|
8487
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "flex flex-row gap-1", children })
|
|
8220
8488
|
]
|
|
8221
8489
|
}
|
|
8222
8490
|
),
|
|
8223
|
-
/* @__PURE__ */ (0,
|
|
8491
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.CaretRight, { className: "text-text-800 cursor-pointer", size: 24 })
|
|
8224
8492
|
]
|
|
8225
8493
|
}
|
|
8226
8494
|
);
|
|
8227
8495
|
}
|
|
8228
8496
|
);
|
|
8229
|
-
var CardForum = (0,
|
|
8497
|
+
var CardForum = (0, import_react28.forwardRef)(
|
|
8230
8498
|
({
|
|
8231
8499
|
title,
|
|
8232
8500
|
content,
|
|
@@ -8240,7 +8508,7 @@ var CardForum = (0, import_react27.forwardRef)(
|
|
|
8240
8508
|
hour,
|
|
8241
8509
|
...props
|
|
8242
8510
|
}, ref) => {
|
|
8243
|
-
return /* @__PURE__ */ (0,
|
|
8511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8244
8512
|
CardBase,
|
|
8245
8513
|
{
|
|
8246
8514
|
ref,
|
|
@@ -8251,7 +8519,7 @@ var CardForum = (0, import_react27.forwardRef)(
|
|
|
8251
8519
|
className: cn("w-auto h-auto gap-3", className),
|
|
8252
8520
|
...props,
|
|
8253
8521
|
children: [
|
|
8254
|
-
/* @__PURE__ */ (0,
|
|
8522
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8255
8523
|
"button",
|
|
8256
8524
|
{
|
|
8257
8525
|
type: "button",
|
|
@@ -8260,18 +8528,18 @@ var CardForum = (0, import_react27.forwardRef)(
|
|
|
8260
8528
|
className: "min-w-8 h-8 rounded-full bg-background-950"
|
|
8261
8529
|
}
|
|
8262
8530
|
),
|
|
8263
|
-
/* @__PURE__ */ (0,
|
|
8264
|
-
/* @__PURE__ */ (0,
|
|
8265
|
-
/* @__PURE__ */ (0,
|
|
8266
|
-
/* @__PURE__ */ (0,
|
|
8531
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
8532
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row gap-1 items-center flex-wrap", children: [
|
|
8533
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-xs font-semibold text-primary-700 truncate", children: title }),
|
|
8534
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("p", { className: "text-xs text-text-600", children: [
|
|
8267
8535
|
"\u2022 ",
|
|
8268
8536
|
date,
|
|
8269
8537
|
" \u2022 ",
|
|
8270
8538
|
hour
|
|
8271
8539
|
] })
|
|
8272
8540
|
] }),
|
|
8273
|
-
/* @__PURE__ */ (0,
|
|
8274
|
-
/* @__PURE__ */ (0,
|
|
8541
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-950 text-sm line-clamp-2 truncate", children: content }),
|
|
8542
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8275
8543
|
"button",
|
|
8276
8544
|
{
|
|
8277
8545
|
type: "button",
|
|
@@ -8279,8 +8547,8 @@ var CardForum = (0, import_react27.forwardRef)(
|
|
|
8279
8547
|
onClick: () => onClickComments?.(valueComments),
|
|
8280
8548
|
className: "text-text-600 flex flex-row gap-2 items-center",
|
|
8281
8549
|
children: [
|
|
8282
|
-
/* @__PURE__ */ (0,
|
|
8283
|
-
/* @__PURE__ */ (0,
|
|
8550
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.ChatCircleText, { "aria-hidden": "true", size: 16 }),
|
|
8551
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("p", { className: "text-xs", children: [
|
|
8284
8552
|
comments,
|
|
8285
8553
|
" respostas"
|
|
8286
8554
|
] })
|
|
@@ -8293,7 +8561,7 @@ var CardForum = (0, import_react27.forwardRef)(
|
|
|
8293
8561
|
);
|
|
8294
8562
|
}
|
|
8295
8563
|
);
|
|
8296
|
-
var CardAudio = (0,
|
|
8564
|
+
var CardAudio = (0, import_react28.forwardRef)(
|
|
8297
8565
|
({
|
|
8298
8566
|
src,
|
|
8299
8567
|
title,
|
|
@@ -8307,16 +8575,16 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8307
8575
|
className,
|
|
8308
8576
|
...props
|
|
8309
8577
|
}, ref) => {
|
|
8310
|
-
const [isPlaying, setIsPlaying] = (0,
|
|
8311
|
-
const [currentTime, setCurrentTime] = (0,
|
|
8312
|
-
const [duration, setDuration] = (0,
|
|
8313
|
-
const [volume, setVolume] = (0,
|
|
8314
|
-
const [showVolumeControl, setShowVolumeControl] = (0,
|
|
8315
|
-
const [showSpeedMenu, setShowSpeedMenu] = (0,
|
|
8316
|
-
const [playbackRate, setPlaybackRate] = (0,
|
|
8317
|
-
const audioRef = (0,
|
|
8318
|
-
const volumeControlRef = (0,
|
|
8319
|
-
const speedMenuRef = (0,
|
|
8578
|
+
const [isPlaying, setIsPlaying] = (0, import_react28.useState)(false);
|
|
8579
|
+
const [currentTime, setCurrentTime] = (0, import_react28.useState)(0);
|
|
8580
|
+
const [duration, setDuration] = (0, import_react28.useState)(0);
|
|
8581
|
+
const [volume, setVolume] = (0, import_react28.useState)(1);
|
|
8582
|
+
const [showVolumeControl, setShowVolumeControl] = (0, import_react28.useState)(false);
|
|
8583
|
+
const [showSpeedMenu, setShowSpeedMenu] = (0, import_react28.useState)(false);
|
|
8584
|
+
const [playbackRate, setPlaybackRate] = (0, import_react28.useState)(1);
|
|
8585
|
+
const audioRef = (0, import_react28.useRef)(null);
|
|
8586
|
+
const volumeControlRef = (0, import_react28.useRef)(null);
|
|
8587
|
+
const speedMenuRef = (0, import_react28.useRef)(null);
|
|
8320
8588
|
const formatTime2 = (time) => {
|
|
8321
8589
|
const minutes = Math.floor(time / 60);
|
|
8322
8590
|
const seconds = Math.floor(time % 60);
|
|
@@ -8383,14 +8651,14 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8383
8651
|
};
|
|
8384
8652
|
const getVolumeIcon = () => {
|
|
8385
8653
|
if (volume === 0) {
|
|
8386
|
-
return /* @__PURE__ */ (0,
|
|
8654
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.SpeakerSimpleX, { size: 24 });
|
|
8387
8655
|
}
|
|
8388
8656
|
if (volume < 0.5) {
|
|
8389
|
-
return /* @__PURE__ */ (0,
|
|
8657
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.SpeakerLow, { size: 24 });
|
|
8390
8658
|
}
|
|
8391
|
-
return /* @__PURE__ */ (0,
|
|
8659
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.SpeakerHigh, { size: 24 });
|
|
8392
8660
|
};
|
|
8393
|
-
(0,
|
|
8661
|
+
(0, import_react28.useEffect)(() => {
|
|
8394
8662
|
const handleClickOutside = (event) => {
|
|
8395
8663
|
if (volumeControlRef.current && !volumeControlRef.current.contains(event.target)) {
|
|
8396
8664
|
setShowVolumeControl(false);
|
|
@@ -8404,7 +8672,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8404
8672
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
8405
8673
|
};
|
|
8406
8674
|
}, []);
|
|
8407
|
-
return /* @__PURE__ */ (0,
|
|
8675
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8408
8676
|
CardBase,
|
|
8409
8677
|
{
|
|
8410
8678
|
ref,
|
|
@@ -8417,7 +8685,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8417
8685
|
),
|
|
8418
8686
|
...props,
|
|
8419
8687
|
children: [
|
|
8420
|
-
/* @__PURE__ */ (0,
|
|
8688
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8421
8689
|
"audio",
|
|
8422
8690
|
{
|
|
8423
8691
|
ref: audioRef,
|
|
@@ -8429,7 +8697,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8429
8697
|
onEnded: handleEnded,
|
|
8430
8698
|
"data-testid": "audio-element",
|
|
8431
8699
|
"aria-label": title,
|
|
8432
|
-
children: tracks ? tracks.map((track) => /* @__PURE__ */ (0,
|
|
8700
|
+
children: tracks ? tracks.map((track) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8433
8701
|
"track",
|
|
8434
8702
|
{
|
|
8435
8703
|
kind: track.kind,
|
|
@@ -8439,7 +8707,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8439
8707
|
default: track.default
|
|
8440
8708
|
},
|
|
8441
8709
|
track.src
|
|
8442
|
-
)) : /* @__PURE__ */ (0,
|
|
8710
|
+
)) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8443
8711
|
"track",
|
|
8444
8712
|
{
|
|
8445
8713
|
kind: "captions",
|
|
@@ -8450,7 +8718,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8450
8718
|
)
|
|
8451
8719
|
}
|
|
8452
8720
|
),
|
|
8453
|
-
/* @__PURE__ */ (0,
|
|
8721
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8454
8722
|
"button",
|
|
8455
8723
|
{
|
|
8456
8724
|
type: "button",
|
|
@@ -8458,14 +8726,14 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8458
8726
|
disabled: !src,
|
|
8459
8727
|
className: "cursor-pointer text-text-950 hover:text-primary-600 disabled:text-text-400 disabled:cursor-not-allowed",
|
|
8460
8728
|
"aria-label": isPlaying ? "Pausar" : "Reproduzir",
|
|
8461
|
-
children: isPlaying ? /* @__PURE__ */ (0,
|
|
8462
|
-
/* @__PURE__ */ (0,
|
|
8463
|
-
/* @__PURE__ */ (0,
|
|
8464
|
-
] }) }) : /* @__PURE__ */ (0,
|
|
8729
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-6 h-6 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex gap-0.5", children: [
|
|
8730
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-1 h-4 bg-current rounded-sm" }),
|
|
8731
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-1 h-4 bg-current rounded-sm" })
|
|
8732
|
+
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.Play, { size: 24 })
|
|
8465
8733
|
}
|
|
8466
8734
|
),
|
|
8467
|
-
/* @__PURE__ */ (0,
|
|
8468
|
-
/* @__PURE__ */ (0,
|
|
8735
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-800 text-md font-medium min-w-[2.5rem]", children: formatTime2(currentTime) }),
|
|
8736
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex-1 relative", "data-testid": "progress-bar", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8469
8737
|
"button",
|
|
8470
8738
|
{
|
|
8471
8739
|
type: "button",
|
|
@@ -8480,7 +8748,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8480
8748
|
}
|
|
8481
8749
|
},
|
|
8482
8750
|
"aria-label": "Barra de progresso do \xE1udio",
|
|
8483
|
-
children: /* @__PURE__ */ (0,
|
|
8751
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8484
8752
|
"div",
|
|
8485
8753
|
{
|
|
8486
8754
|
className: "h-full bg-primary-600 rounded-full transition-all duration-100",
|
|
@@ -8491,19 +8759,19 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8491
8759
|
)
|
|
8492
8760
|
}
|
|
8493
8761
|
) }),
|
|
8494
|
-
/* @__PURE__ */ (0,
|
|
8495
|
-
/* @__PURE__ */ (0,
|
|
8496
|
-
/* @__PURE__ */ (0,
|
|
8762
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "text-text-800 text-md font-medium min-w-[2.5rem]", children: formatTime2(duration) }),
|
|
8763
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "relative h-6", ref: volumeControlRef, children: [
|
|
8764
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8497
8765
|
"button",
|
|
8498
8766
|
{
|
|
8499
8767
|
type: "button",
|
|
8500
8768
|
onClick: toggleVolumeControl,
|
|
8501
8769
|
className: "cursor-pointer text-text-950 hover:text-primary-600",
|
|
8502
8770
|
"aria-label": "Controle de volume",
|
|
8503
|
-
children: /* @__PURE__ */ (0,
|
|
8771
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-6 h-6 flex items-center justify-center", children: getVolumeIcon() })
|
|
8504
8772
|
}
|
|
8505
8773
|
),
|
|
8506
|
-
showVolumeControl && /* @__PURE__ */ (0,
|
|
8774
|
+
showVolumeControl && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8507
8775
|
"button",
|
|
8508
8776
|
{
|
|
8509
8777
|
type: "button",
|
|
@@ -8513,7 +8781,7 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8513
8781
|
setShowVolumeControl(false);
|
|
8514
8782
|
}
|
|
8515
8783
|
},
|
|
8516
|
-
children: /* @__PURE__ */ (0,
|
|
8784
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8517
8785
|
"input",
|
|
8518
8786
|
{
|
|
8519
8787
|
type: "range",
|
|
@@ -8554,22 +8822,22 @@ var CardAudio = (0, import_react27.forwardRef)(
|
|
|
8554
8822
|
}
|
|
8555
8823
|
)
|
|
8556
8824
|
] }),
|
|
8557
|
-
/* @__PURE__ */ (0,
|
|
8558
|
-
/* @__PURE__ */ (0,
|
|
8825
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "relative h-6", ref: speedMenuRef, children: [
|
|
8826
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8559
8827
|
"button",
|
|
8560
8828
|
{
|
|
8561
8829
|
type: "button",
|
|
8562
8830
|
onClick: toggleSpeedMenu,
|
|
8563
8831
|
className: "cursor-pointer text-text-950 hover:text-primary-600",
|
|
8564
8832
|
"aria-label": "Op\xE7\xF5es de velocidade",
|
|
8565
|
-
children: /* @__PURE__ */ (0,
|
|
8833
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.DotsThreeVertical, { size: 24 })
|
|
8566
8834
|
}
|
|
8567
8835
|
),
|
|
8568
|
-
showSpeedMenu && /* @__PURE__ */ (0,
|
|
8836
|
+
showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "absolute bottom-full right-0 mb-2 p-2 bg-background border border-border-100 rounded-lg shadow-lg min-w-24 z-10", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex flex-col gap-1", children: [
|
|
8569
8837
|
{ speed: 1, label: "1x" },
|
|
8570
8838
|
{ speed: 1.5, label: "1.5x" },
|
|
8571
8839
|
{ speed: 2, label: "2x" }
|
|
8572
|
-
].map(({ speed, label }) => /* @__PURE__ */ (0,
|
|
8840
|
+
].map(({ speed, label }) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8573
8841
|
"button",
|
|
8574
8842
|
{
|
|
8575
8843
|
type: "button",
|
|
@@ -8594,10 +8862,10 @@ var SIMULADO_BACKGROUND_CLASSES = {
|
|
|
8594
8862
|
simuladao: "bg-exam-3",
|
|
8595
8863
|
vestibular: "bg-exam-4"
|
|
8596
8864
|
};
|
|
8597
|
-
var CardSimulado = (0,
|
|
8865
|
+
var CardSimulado = (0, import_react28.forwardRef)(
|
|
8598
8866
|
({ title, duration, info, backgroundColor, className, ...props }, ref) => {
|
|
8599
8867
|
const backgroundClass = SIMULADO_BACKGROUND_CLASSES[backgroundColor];
|
|
8600
|
-
return /* @__PURE__ */ (0,
|
|
8868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8601
8869
|
CardBase,
|
|
8602
8870
|
{
|
|
8603
8871
|
ref,
|
|
@@ -8610,18 +8878,18 @@ var CardSimulado = (0, import_react27.forwardRef)(
|
|
|
8610
8878
|
className
|
|
8611
8879
|
),
|
|
8612
8880
|
...props,
|
|
8613
|
-
children: /* @__PURE__ */ (0,
|
|
8614
|
-
/* @__PURE__ */ (0,
|
|
8615
|
-
/* @__PURE__ */ (0,
|
|
8616
|
-
/* @__PURE__ */ (0,
|
|
8617
|
-
duration && /* @__PURE__ */ (0,
|
|
8618
|
-
/* @__PURE__ */ (0,
|
|
8619
|
-
/* @__PURE__ */ (0,
|
|
8881
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex justify-between items-center w-full gap-4", children: [
|
|
8882
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
8883
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text_default, { size: "lg", weight: "bold", className: "text-text-950 truncate", children: title }),
|
|
8884
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center gap-4 text-text-700", children: [
|
|
8885
|
+
duration && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
8886
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.Clock, { size: 16, className: "flex-shrink-0" }),
|
|
8887
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text_default, { size: "sm", children: duration })
|
|
8620
8888
|
] }),
|
|
8621
|
-
/* @__PURE__ */ (0,
|
|
8889
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text_default, { size: "sm", className: "truncate", children: info })
|
|
8622
8890
|
] })
|
|
8623
8891
|
] }),
|
|
8624
|
-
/* @__PURE__ */ (0,
|
|
8892
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8625
8893
|
import_phosphor_react19.CaretRight,
|
|
8626
8894
|
{
|
|
8627
8895
|
size: 24,
|
|
@@ -8634,7 +8902,7 @@ var CardSimulado = (0, import_react27.forwardRef)(
|
|
|
8634
8902
|
);
|
|
8635
8903
|
}
|
|
8636
8904
|
);
|
|
8637
|
-
var CardTest = (0,
|
|
8905
|
+
var CardTest = (0, import_react28.forwardRef)(
|
|
8638
8906
|
({
|
|
8639
8907
|
title,
|
|
8640
8908
|
duration,
|
|
@@ -8666,7 +8934,7 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8666
8934
|
const interactiveClasses = isSelectable ? "cursor-pointer focus:outline-none focus:ring-2 focus:ring-primary-950 focus:ring-offset-2" : "";
|
|
8667
8935
|
const selectedClasses = selected ? "ring-2 ring-primary-950 ring-offset-2" : "";
|
|
8668
8936
|
if (isSelectable) {
|
|
8669
|
-
return /* @__PURE__ */ (0,
|
|
8937
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8670
8938
|
"button",
|
|
8671
8939
|
{
|
|
8672
8940
|
ref,
|
|
@@ -8678,8 +8946,8 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8678
8946
|
onKeyDown: handleKeyDown,
|
|
8679
8947
|
"aria-pressed": selected,
|
|
8680
8948
|
...props,
|
|
8681
|
-
children: /* @__PURE__ */ (0,
|
|
8682
|
-
/* @__PURE__ */ (0,
|
|
8949
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col justify-between gap-[27px] flex-grow min-h-[67px] w-full min-w-0", children: [
|
|
8950
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8683
8951
|
Text_default,
|
|
8684
8952
|
{
|
|
8685
8953
|
size: "md",
|
|
@@ -8688,10 +8956,10 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8688
8956
|
children: title
|
|
8689
8957
|
}
|
|
8690
8958
|
),
|
|
8691
|
-
/* @__PURE__ */ (0,
|
|
8692
|
-
duration && /* @__PURE__ */ (0,
|
|
8693
|
-
/* @__PURE__ */ (0,
|
|
8694
|
-
/* @__PURE__ */ (0,
|
|
8959
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row justify-start items-end gap-4 w-full", children: [
|
|
8960
|
+
duration && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row items-center gap-1 flex-shrink-0", children: [
|
|
8961
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.Clock, { size: 16, className: "text-text-700" }),
|
|
8962
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8695
8963
|
Text_default,
|
|
8696
8964
|
{
|
|
8697
8965
|
size: "sm",
|
|
@@ -8700,7 +8968,7 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8700
8968
|
}
|
|
8701
8969
|
)
|
|
8702
8970
|
] }),
|
|
8703
|
-
/* @__PURE__ */ (0,
|
|
8971
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8704
8972
|
Text_default,
|
|
8705
8973
|
{
|
|
8706
8974
|
size: "sm",
|
|
@@ -8713,14 +8981,14 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8713
8981
|
}
|
|
8714
8982
|
);
|
|
8715
8983
|
}
|
|
8716
|
-
return /* @__PURE__ */ (0,
|
|
8984
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8717
8985
|
"div",
|
|
8718
8986
|
{
|
|
8719
8987
|
ref,
|
|
8720
8988
|
className: cn(`${baseClasses} ${className}`.trim()),
|
|
8721
8989
|
...props,
|
|
8722
|
-
children: /* @__PURE__ */ (0,
|
|
8723
|
-
/* @__PURE__ */ (0,
|
|
8990
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col justify-between gap-[27px] flex-grow min-h-[67px] w-full min-w-0", children: [
|
|
8991
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8724
8992
|
Text_default,
|
|
8725
8993
|
{
|
|
8726
8994
|
size: "md",
|
|
@@ -8729,10 +8997,10 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8729
8997
|
children: title
|
|
8730
8998
|
}
|
|
8731
8999
|
),
|
|
8732
|
-
/* @__PURE__ */ (0,
|
|
8733
|
-
duration && /* @__PURE__ */ (0,
|
|
8734
|
-
/* @__PURE__ */ (0,
|
|
8735
|
-
/* @__PURE__ */ (0,
|
|
9000
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row justify-start items-end gap-4 w-full", children: [
|
|
9001
|
+
duration && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-row items-center gap-1 flex-shrink-0", children: [
|
|
9002
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_phosphor_react19.Clock, { size: 16, className: "text-text-700" }),
|
|
9003
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8736
9004
|
Text_default,
|
|
8737
9005
|
{
|
|
8738
9006
|
size: "sm",
|
|
@@ -8741,7 +9009,7 @@ var CardTest = (0, import_react27.forwardRef)(
|
|
|
8741
9009
|
}
|
|
8742
9010
|
)
|
|
8743
9011
|
] }),
|
|
8744
|
-
/* @__PURE__ */ (0,
|
|
9012
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8745
9013
|
Text_default,
|
|
8746
9014
|
{
|
|
8747
9015
|
size: "sm",
|
|
@@ -8777,15 +9045,15 @@ var SIMULATION_TYPE_STYLES = {
|
|
|
8777
9045
|
text: "Vestibular"
|
|
8778
9046
|
}
|
|
8779
9047
|
};
|
|
8780
|
-
var CardSimulationHistory = (0,
|
|
8781
|
-
return /* @__PURE__ */ (0,
|
|
9048
|
+
var CardSimulationHistory = (0, import_react28.forwardRef)(({ data, onSimulationClick, className, ...props }, ref) => {
|
|
9049
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8782
9050
|
"div",
|
|
8783
9051
|
{
|
|
8784
9052
|
ref,
|
|
8785
9053
|
className: cn("w-full max-w-[992px] h-auto", className),
|
|
8786
9054
|
...props,
|
|
8787
|
-
children: /* @__PURE__ */ (0,
|
|
8788
|
-
data.map((section, sectionIndex) => /* @__PURE__ */ (0,
|
|
9055
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-col gap-0", children: [
|
|
9056
|
+
data.map((section, sectionIndex) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
8789
9057
|
"div",
|
|
8790
9058
|
{
|
|
8791
9059
|
className: cn(
|
|
@@ -8793,7 +9061,7 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8793
9061
|
sectionIndex === 0 ? "rounded-t-3xl" : ""
|
|
8794
9062
|
),
|
|
8795
9063
|
children: [
|
|
8796
|
-
/* @__PURE__ */ (0,
|
|
9064
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8797
9065
|
Text_default,
|
|
8798
9066
|
{
|
|
8799
9067
|
size: "xs",
|
|
@@ -8802,9 +9070,9 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8802
9070
|
children: section.date
|
|
8803
9071
|
}
|
|
8804
9072
|
),
|
|
8805
|
-
/* @__PURE__ */ (0,
|
|
9073
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "flex flex-col gap-2 flex-1", children: section.simulations.map((simulation) => {
|
|
8806
9074
|
const typeStyles = SIMULATION_TYPE_STYLES[simulation.type];
|
|
8807
|
-
return /* @__PURE__ */ (0,
|
|
9075
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8808
9076
|
CardBase,
|
|
8809
9077
|
{
|
|
8810
9078
|
layout: "horizontal",
|
|
@@ -8816,9 +9084,9 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8816
9084
|
transition-shadow duration-200 h-auto min-h-[61px]`
|
|
8817
9085
|
),
|
|
8818
9086
|
onClick: () => onSimulationClick?.(simulation),
|
|
8819
|
-
children: /* @__PURE__ */ (0,
|
|
8820
|
-
/* @__PURE__ */ (0,
|
|
8821
|
-
/* @__PURE__ */ (0,
|
|
9087
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex justify-between items-center w-full gap-2", children: [
|
|
9088
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex flex-wrap flex-col justify-between sm:flex-row gap-2 flex-1 min-w-0", children: [
|
|
9089
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8822
9090
|
Text_default,
|
|
8823
9091
|
{
|
|
8824
9092
|
size: "lg",
|
|
@@ -8827,8 +9095,8 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8827
9095
|
children: simulation.title
|
|
8828
9096
|
}
|
|
8829
9097
|
),
|
|
8830
|
-
/* @__PURE__ */ (0,
|
|
8831
|
-
/* @__PURE__ */ (0,
|
|
9098
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
9099
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8832
9100
|
Badge_default,
|
|
8833
9101
|
{
|
|
8834
9102
|
variant: "examsOutlined",
|
|
@@ -8837,10 +9105,10 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8837
9105
|
children: typeStyles.text
|
|
8838
9106
|
}
|
|
8839
9107
|
),
|
|
8840
|
-
/* @__PURE__ */ (0,
|
|
9108
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Text_default, { size: "sm", className: "text-text-800 truncate", children: simulation.info })
|
|
8841
9109
|
] })
|
|
8842
9110
|
] }),
|
|
8843
|
-
/* @__PURE__ */ (0,
|
|
9111
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
8844
9112
|
import_phosphor_react19.CaretRight,
|
|
8845
9113
|
{
|
|
8846
9114
|
size: 24,
|
|
@@ -8856,7 +9124,7 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8856
9124
|
]
|
|
8857
9125
|
}
|
|
8858
9126
|
) }, section.date)),
|
|
8859
|
-
data.length > 0 && /* @__PURE__ */ (0,
|
|
9127
|
+
data.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-full h-6 bg-background rounded-b-3xl" })
|
|
8860
9128
|
] })
|
|
8861
9129
|
}
|
|
8862
9130
|
);
|
|
@@ -8864,7 +9132,7 @@ var CardSimulationHistory = (0, import_react27.forwardRef)(({ data, onSimulation
|
|
|
8864
9132
|
|
|
8865
9133
|
// src/components/StatisticsCard/StatisticsCard.tsx
|
|
8866
9134
|
var import_phosphor_react20 = require("phosphor-react");
|
|
8867
|
-
var
|
|
9135
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
8868
9136
|
var VARIANT_STYLES = {
|
|
8869
9137
|
high: "bg-success-background",
|
|
8870
9138
|
medium: "bg-warning-background",
|
|
@@ -8878,12 +9146,12 @@ var VALUE_TEXT_COLORS = {
|
|
|
8878
9146
|
total: "text-info-700"
|
|
8879
9147
|
};
|
|
8880
9148
|
var StatCard = ({ item, showPlaceholder = false }) => {
|
|
8881
|
-
return /* @__PURE__ */ (0,
|
|
9149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
8882
9150
|
"div",
|
|
8883
9151
|
{
|
|
8884
9152
|
className: `rounded-xl py-[17px] px-6 min-h-[105px] flex flex-col justify-center items-start gap-1 ${VARIANT_STYLES[item.variant]}`,
|
|
8885
9153
|
children: [
|
|
8886
|
-
/* @__PURE__ */ (0,
|
|
9154
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8887
9155
|
Text_default,
|
|
8888
9156
|
{
|
|
8889
9157
|
size: "4xl",
|
|
@@ -8892,7 +9160,7 @@ var StatCard = ({ item, showPlaceholder = false }) => {
|
|
|
8892
9160
|
children: showPlaceholder ? "-" : item.value
|
|
8893
9161
|
}
|
|
8894
9162
|
),
|
|
8895
|
-
/* @__PURE__ */ (0,
|
|
9163
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8896
9164
|
Text_default,
|
|
8897
9165
|
{
|
|
8898
9166
|
size: "xs",
|
|
@@ -8927,13 +9195,13 @@ var StatisticsCard = ({
|
|
|
8927
9195
|
}) => {
|
|
8928
9196
|
const hasData = data && data.length > 0;
|
|
8929
9197
|
const gridColumnsClass = hasData ? getGridColumnsClass(data.length) : "";
|
|
8930
|
-
return /* @__PURE__ */ (0,
|
|
9198
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
8931
9199
|
"div",
|
|
8932
9200
|
{
|
|
8933
9201
|
className: `bg-background rounded-xl p-4 h-auto lg:h-[185px] flex flex-col gap-2 ${className}`,
|
|
8934
9202
|
children: [
|
|
8935
|
-
/* @__PURE__ */ (0,
|
|
8936
|
-
/* @__PURE__ */ (0,
|
|
9203
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex flex-row justify-between items-center gap-4", children: [
|
|
9204
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8937
9205
|
Text_default,
|
|
8938
9206
|
{
|
|
8939
9207
|
as: "h3",
|
|
@@ -8944,22 +9212,22 @@ var StatisticsCard = ({
|
|
|
8944
9212
|
children: title
|
|
8945
9213
|
}
|
|
8946
9214
|
),
|
|
8947
|
-
dropdownOptions && dropdownOptions.length > 0 && /* @__PURE__ */ (0,
|
|
9215
|
+
dropdownOptions && dropdownOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "w-[120px] min-w-[90px] sm:shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
8948
9216
|
Select_default,
|
|
8949
9217
|
{
|
|
8950
9218
|
value: selectedDropdownValue,
|
|
8951
9219
|
onValueChange: onDropdownChange,
|
|
8952
9220
|
size: "medium",
|
|
8953
9221
|
children: [
|
|
8954
|
-
/* @__PURE__ */ (0,
|
|
9222
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8955
9223
|
SelectTrigger,
|
|
8956
9224
|
{
|
|
8957
9225
|
className: "border border-border-300 rounded [&>span]:whitespace-nowrap [&>span]:overflow-hidden [&>span]:text-ellipsis",
|
|
8958
9226
|
"aria-label": dropdownAriaLabel,
|
|
8959
|
-
children: /* @__PURE__ */ (0,
|
|
9227
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SelectValue, { placeholder: selectPlaceholder })
|
|
8960
9228
|
}
|
|
8961
9229
|
),
|
|
8962
|
-
/* @__PURE__ */ (0,
|
|
9230
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SelectContent, { className: "min-w-[120px]", children: dropdownOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8963
9231
|
SelectItem,
|
|
8964
9232
|
{
|
|
8965
9233
|
value: option.value,
|
|
@@ -8972,11 +9240,11 @@ var StatisticsCard = ({
|
|
|
8972
9240
|
}
|
|
8973
9241
|
) })
|
|
8974
9242
|
] }),
|
|
8975
|
-
hasData ? /* @__PURE__ */ (0,
|
|
9243
|
+
hasData ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8976
9244
|
"div",
|
|
8977
9245
|
{
|
|
8978
9246
|
className: `grid grid-cols-1 sm:grid-cols-2 gap-[13px] ${gridColumnsClass}`,
|
|
8979
|
-
children: data.map((item, index) => /* @__PURE__ */ (0,
|
|
9247
|
+
children: data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8980
9248
|
StatCard,
|
|
8981
9249
|
{
|
|
8982
9250
|
item,
|
|
@@ -8985,8 +9253,8 @@ var StatisticsCard = ({
|
|
|
8985
9253
|
`${item.variant}-${item.label}-${index}`
|
|
8986
9254
|
))
|
|
8987
9255
|
}
|
|
8988
|
-
) : /* @__PURE__ */ (0,
|
|
8989
|
-
/* @__PURE__ */ (0,
|
|
9256
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "border border-dashed border-border-300 rounded-lg p-6 min-h-[105px] flex flex-col items-center justify-center gap-2", children: [
|
|
9257
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8990
9258
|
Text_default,
|
|
8991
9259
|
{
|
|
8992
9260
|
size: "sm",
|
|
@@ -8995,14 +9263,14 @@ var StatisticsCard = ({
|
|
|
8995
9263
|
children: emptyStateMessage
|
|
8996
9264
|
}
|
|
8997
9265
|
),
|
|
8998
|
-
onEmptyStateButtonClick && /* @__PURE__ */ (0,
|
|
9266
|
+
onEmptyStateButtonClick && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
8999
9267
|
Button_default,
|
|
9000
9268
|
{
|
|
9001
9269
|
variant: "outline",
|
|
9002
9270
|
action: "primary",
|
|
9003
9271
|
size: "small",
|
|
9004
9272
|
onClick: onEmptyStateButtonClick,
|
|
9005
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
9273
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_phosphor_react20.Plus, { size: 16, weight: "bold" }),
|
|
9006
9274
|
children: emptyStateButtonText
|
|
9007
9275
|
}
|
|
9008
9276
|
)
|
|
@@ -9013,7 +9281,7 @@ var StatisticsCard = ({
|
|
|
9013
9281
|
};
|
|
9014
9282
|
|
|
9015
9283
|
// src/components/NotFound/NotFound.tsx
|
|
9016
|
-
var
|
|
9284
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
9017
9285
|
var NotFound = ({
|
|
9018
9286
|
title,
|
|
9019
9287
|
description,
|
|
@@ -9056,22 +9324,22 @@ var NotFound = ({
|
|
|
9056
9324
|
const errorTitle = title || getDefaultTitle();
|
|
9057
9325
|
const errorDescription = description || getDefaultDescription();
|
|
9058
9326
|
const errorCode = getErrorCode();
|
|
9059
|
-
return /* @__PURE__ */ (0,
|
|
9327
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9060
9328
|
"div",
|
|
9061
9329
|
{
|
|
9062
9330
|
className: cn(
|
|
9063
9331
|
"flex flex-col w-full h-screen items-center justify-center bg-background-50 px-4",
|
|
9064
9332
|
className
|
|
9065
9333
|
),
|
|
9066
|
-
children: /* @__PURE__ */ (0,
|
|
9334
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9067
9335
|
"main",
|
|
9068
9336
|
{
|
|
9069
9337
|
role: "main",
|
|
9070
9338
|
"aria-labelledby": "error-title",
|
|
9071
9339
|
"aria-describedby": "error-description",
|
|
9072
9340
|
className: "flex flex-col items-center text-center max-w-md space-y-6",
|
|
9073
|
-
children: /* @__PURE__ */ (0,
|
|
9074
|
-
/* @__PURE__ */ (0,
|
|
9341
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("section", { "aria-label": `Erro ${errorCode}`, children: [
|
|
9342
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9075
9343
|
"div",
|
|
9076
9344
|
{
|
|
9077
9345
|
className: "text-8xl font-bold text-primary-300 select-none",
|
|
@@ -9079,8 +9347,8 @@ var NotFound = ({
|
|
|
9079
9347
|
children: errorCode
|
|
9080
9348
|
}
|
|
9081
9349
|
),
|
|
9082
|
-
/* @__PURE__ */ (0,
|
|
9083
|
-
/* @__PURE__ */ (0,
|
|
9350
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("header", { className: "space-y-2", children: [
|
|
9351
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9084
9352
|
Text_default,
|
|
9085
9353
|
{
|
|
9086
9354
|
size: "xl",
|
|
@@ -9091,9 +9359,9 @@ var NotFound = ({
|
|
|
9091
9359
|
children: errorTitle
|
|
9092
9360
|
}
|
|
9093
9361
|
),
|
|
9094
|
-
/* @__PURE__ */ (0,
|
|
9362
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Text_default, { size: "md", className: "text-text-600", id: "error-description", children: errorDescription })
|
|
9095
9363
|
] }),
|
|
9096
|
-
onButtonClick && /* @__PURE__ */ (0,
|
|
9364
|
+
onButtonClick && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("nav", { "aria-label": "Navega\xE7\xE3o de erro", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9097
9365
|
Button_default,
|
|
9098
9366
|
{
|
|
9099
9367
|
onClick: handleButtonClick,
|
|
@@ -9113,15 +9381,44 @@ var NotFound = ({
|
|
|
9113
9381
|
};
|
|
9114
9382
|
var NotFound_default = NotFound;
|
|
9115
9383
|
|
|
9384
|
+
// src/components/NoSearchResult/NoSearchResult.tsx
|
|
9385
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
9386
|
+
var NoSearchResult = ({ image, title, description }) => {
|
|
9387
|
+
const displayTitle = title || "Nenhum resultado encontrado";
|
|
9388
|
+
const displayDescription = description || "N\xE3o encontramos nenhum resultado com esse nome. Tente revisar a busca ou usar outra palavra-chave.";
|
|
9389
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-row justify-center items-center gap-8 w-full max-w-4xl min-h-96", children: [
|
|
9390
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "w-72 h-72 flex-shrink-0 relative", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9391
|
+
"img",
|
|
9392
|
+
{
|
|
9393
|
+
src: image,
|
|
9394
|
+
alt: "No search results",
|
|
9395
|
+
className: "w-full h-full object-contain"
|
|
9396
|
+
}
|
|
9397
|
+
) }),
|
|
9398
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-col items-start w-full max-w-md", children: [
|
|
9399
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "flex flex-row justify-between items-end px-6 pt-6 pb-4 w-full rounded-t-xl", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9400
|
+
Text_default,
|
|
9401
|
+
{
|
|
9402
|
+
as: "h2",
|
|
9403
|
+
className: "text-text-950 font-semibold text-3xl leading-tight w-full flex items-center",
|
|
9404
|
+
children: displayTitle
|
|
9405
|
+
}
|
|
9406
|
+
) }),
|
|
9407
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "flex flex-row justify-center items-center px-6 gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Text_default, { className: "text-text-600 font-normal text-lg leading-relaxed w-full text-justify", children: displayDescription }) })
|
|
9408
|
+
] })
|
|
9409
|
+
] });
|
|
9410
|
+
};
|
|
9411
|
+
var NoSearchResult_default = NoSearchResult;
|
|
9412
|
+
|
|
9116
9413
|
// src/components/VideoPlayer/VideoPlayer.tsx
|
|
9117
|
-
var
|
|
9414
|
+
var import_react30 = require("react");
|
|
9118
9415
|
var import_react_dom = require("react-dom");
|
|
9119
9416
|
var import_phosphor_react22 = require("phosphor-react");
|
|
9120
9417
|
|
|
9121
9418
|
// src/components/DownloadButton/DownloadButton.tsx
|
|
9122
|
-
var
|
|
9419
|
+
var import_react29 = require("react");
|
|
9123
9420
|
var import_phosphor_react21 = require("phosphor-react");
|
|
9124
|
-
var
|
|
9421
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9125
9422
|
var getMimeType = (url) => {
|
|
9126
9423
|
const extension = getFileExtension(url);
|
|
9127
9424
|
const mimeTypes = {
|
|
@@ -9196,13 +9493,13 @@ var DownloadButton = ({
|
|
|
9196
9493
|
lessonTitle = "aula",
|
|
9197
9494
|
disabled = false
|
|
9198
9495
|
}) => {
|
|
9199
|
-
const [isDownloading, setIsDownloading] = (0,
|
|
9200
|
-
const isValidUrl = (0,
|
|
9496
|
+
const [isDownloading, setIsDownloading] = (0, import_react29.useState)(false);
|
|
9497
|
+
const isValidUrl = (0, import_react29.useCallback)((url) => {
|
|
9201
9498
|
return Boolean(
|
|
9202
9499
|
url && url.trim() !== "" && url !== "undefined" && url !== "null"
|
|
9203
9500
|
);
|
|
9204
9501
|
}, []);
|
|
9205
|
-
const getAvailableContent = (0,
|
|
9502
|
+
const getAvailableContent = (0, import_react29.useCallback)(() => {
|
|
9206
9503
|
const downloads = [];
|
|
9207
9504
|
if (isValidUrl(content.urlDoc)) {
|
|
9208
9505
|
downloads.push({
|
|
@@ -9237,7 +9534,7 @@ var DownloadButton = ({
|
|
|
9237
9534
|
}
|
|
9238
9535
|
return downloads;
|
|
9239
9536
|
}, [content, isValidUrl]);
|
|
9240
|
-
const handleDownload = (0,
|
|
9537
|
+
const handleDownload = (0, import_react29.useCallback)(async () => {
|
|
9241
9538
|
if (disabled || isDownloading) return;
|
|
9242
9539
|
const availableContent = getAvailableContent();
|
|
9243
9540
|
if (availableContent.length === 0) {
|
|
@@ -9278,10 +9575,10 @@ var DownloadButton = ({
|
|
|
9278
9575
|
if (!hasContent) {
|
|
9279
9576
|
return null;
|
|
9280
9577
|
}
|
|
9281
|
-
return /* @__PURE__ */ (0,
|
|
9578
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: cn("flex items-center", className), children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
9282
9579
|
IconButton_default,
|
|
9283
9580
|
{
|
|
9284
|
-
icon: /* @__PURE__ */ (0,
|
|
9581
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_phosphor_react21.DownloadSimple, { size: 24 }),
|
|
9285
9582
|
onClick: handleDownload,
|
|
9286
9583
|
disabled: disabled || isDownloading,
|
|
9287
9584
|
"aria-label": (() => {
|
|
@@ -9302,7 +9599,7 @@ var DownloadButton = ({
|
|
|
9302
9599
|
var DownloadButton_default = DownloadButton;
|
|
9303
9600
|
|
|
9304
9601
|
// src/components/VideoPlayer/VideoPlayer.tsx
|
|
9305
|
-
var
|
|
9602
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
9306
9603
|
var CONTROLS_HIDE_TIMEOUT = 3e3;
|
|
9307
9604
|
var LEAVE_HIDE_TIMEOUT = 1e3;
|
|
9308
9605
|
var INIT_DELAY = 100;
|
|
@@ -9318,7 +9615,7 @@ var ProgressBar2 = ({
|
|
|
9318
9615
|
progressPercentage,
|
|
9319
9616
|
onSeek,
|
|
9320
9617
|
className = "px-4 pb-2"
|
|
9321
|
-
}) => /* @__PURE__ */ (0,
|
|
9618
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9322
9619
|
"input",
|
|
9323
9620
|
{
|
|
9324
9621
|
type: "range",
|
|
@@ -9340,17 +9637,17 @@ var VolumeControls = ({
|
|
|
9340
9637
|
onToggleMute,
|
|
9341
9638
|
iconSize = 24,
|
|
9342
9639
|
showSlider = true
|
|
9343
|
-
}) => /* @__PURE__ */ (0,
|
|
9344
|
-
/* @__PURE__ */ (0,
|
|
9640
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
9641
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9345
9642
|
IconButton_default,
|
|
9346
9643
|
{
|
|
9347
|
-
icon: isMuted ? /* @__PURE__ */ (0,
|
|
9644
|
+
icon: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.SpeakerSlash, { size: iconSize }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.SpeakerHigh, { size: iconSize }),
|
|
9348
9645
|
onClick: onToggleMute,
|
|
9349
9646
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
9350
9647
|
className: "!bg-transparent !text-white hover:!bg-white/20"
|
|
9351
9648
|
}
|
|
9352
9649
|
),
|
|
9353
|
-
showSlider && /* @__PURE__ */ (0,
|
|
9650
|
+
showSlider && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9354
9651
|
"input",
|
|
9355
9652
|
{
|
|
9356
9653
|
type: "range",
|
|
@@ -9375,9 +9672,9 @@ var SpeedMenu = ({
|
|
|
9375
9672
|
iconSize = 24,
|
|
9376
9673
|
isTinyMobile = false
|
|
9377
9674
|
}) => {
|
|
9378
|
-
const buttonRef = (0,
|
|
9379
|
-
const speedMenuContainerRef = (0,
|
|
9380
|
-
const speedMenuRef = (0,
|
|
9675
|
+
const buttonRef = (0, import_react30.useRef)(null);
|
|
9676
|
+
const speedMenuContainerRef = (0, import_react30.useRef)(null);
|
|
9677
|
+
const speedMenuRef = (0, import_react30.useRef)(null);
|
|
9381
9678
|
const getMenuPosition = () => {
|
|
9382
9679
|
if (!buttonRef.current) return { top: 0, left: 0 };
|
|
9383
9680
|
const rect = buttonRef.current.getBoundingClientRect();
|
|
@@ -9391,7 +9688,7 @@ var SpeedMenu = ({
|
|
|
9391
9688
|
};
|
|
9392
9689
|
};
|
|
9393
9690
|
const position = getMenuPosition();
|
|
9394
|
-
(0,
|
|
9691
|
+
(0, import_react30.useEffect)(() => {
|
|
9395
9692
|
const handleClickOutside = (event) => {
|
|
9396
9693
|
const target = event.target;
|
|
9397
9694
|
const isOutsideContainer = speedMenuContainerRef.current && !speedMenuContainerRef.current.contains(target);
|
|
@@ -9407,7 +9704,7 @@ var SpeedMenu = ({
|
|
|
9407
9704
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
9408
9705
|
};
|
|
9409
9706
|
}, [showSpeedMenu, onToggleMenu]);
|
|
9410
|
-
const menuContent = /* @__PURE__ */ (0,
|
|
9707
|
+
const menuContent = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9411
9708
|
"div",
|
|
9412
9709
|
{
|
|
9413
9710
|
ref: speedMenuRef,
|
|
@@ -9418,7 +9715,7 @@ var SpeedMenu = ({
|
|
|
9418
9715
|
top: `${position.top}px`,
|
|
9419
9716
|
left: `${position.left}px`
|
|
9420
9717
|
},
|
|
9421
|
-
children: [0.5, 0.75, 1, 1.25, 1.5, 2].map((speed) => /* @__PURE__ */ (0,
|
|
9718
|
+
children: [0.5, 0.75, 1, 1.25, 1.5, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
9422
9719
|
"button",
|
|
9423
9720
|
{
|
|
9424
9721
|
role: "menuitemradio",
|
|
@@ -9435,12 +9732,12 @@ var SpeedMenu = ({
|
|
|
9435
9732
|
}
|
|
9436
9733
|
);
|
|
9437
9734
|
const portalContent = showSpeedMenu && globalThis.window !== void 0 && globalThis.document !== void 0 && !!globalThis.document?.body ? (0, import_react_dom.createPortal)(menuContent, globalThis.document.body) : null;
|
|
9438
|
-
return /* @__PURE__ */ (0,
|
|
9439
|
-
/* @__PURE__ */ (0,
|
|
9735
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "relative", ref: speedMenuContainerRef, children: [
|
|
9736
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9440
9737
|
IconButton_default,
|
|
9441
9738
|
{
|
|
9442
9739
|
ref: buttonRef,
|
|
9443
|
-
icon: /* @__PURE__ */ (0,
|
|
9740
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.DotsThreeVertical, { size: iconSize }),
|
|
9444
9741
|
onClick: onToggleMenu,
|
|
9445
9742
|
"aria-label": "Playback speed",
|
|
9446
9743
|
"aria-haspopup": "menu",
|
|
@@ -9470,28 +9767,28 @@ var VideoPlayer = ({
|
|
|
9470
9767
|
onDownloadComplete,
|
|
9471
9768
|
onDownloadError
|
|
9472
9769
|
}) => {
|
|
9473
|
-
const videoRef = (0,
|
|
9770
|
+
const videoRef = (0, import_react30.useRef)(null);
|
|
9474
9771
|
const { isUltraSmallMobile, isTinyMobile } = useMobile();
|
|
9475
|
-
const [isPlaying, setIsPlaying] = (0,
|
|
9476
|
-
const [currentTime, setCurrentTime] = (0,
|
|
9477
|
-
const [duration, setDuration] = (0,
|
|
9478
|
-
const [isMuted, setIsMuted] = (0,
|
|
9479
|
-
const [volume, setVolume] = (0,
|
|
9480
|
-
const [isFullscreen, setIsFullscreen] = (0,
|
|
9481
|
-
const [showControls, setShowControls] = (0,
|
|
9482
|
-
const [hasCompleted, setHasCompleted] = (0,
|
|
9483
|
-
const [showCaptions, setShowCaptions] = (0,
|
|
9484
|
-
const [subtitlesValidation, setSubtitlesValidation] = (0,
|
|
9485
|
-
(0,
|
|
9772
|
+
const [isPlaying, setIsPlaying] = (0, import_react30.useState)(false);
|
|
9773
|
+
const [currentTime, setCurrentTime] = (0, import_react30.useState)(0);
|
|
9774
|
+
const [duration, setDuration] = (0, import_react30.useState)(0);
|
|
9775
|
+
const [isMuted, setIsMuted] = (0, import_react30.useState)(false);
|
|
9776
|
+
const [volume, setVolume] = (0, import_react30.useState)(1);
|
|
9777
|
+
const [isFullscreen, setIsFullscreen] = (0, import_react30.useState)(false);
|
|
9778
|
+
const [showControls, setShowControls] = (0, import_react30.useState)(true);
|
|
9779
|
+
const [hasCompleted, setHasCompleted] = (0, import_react30.useState)(false);
|
|
9780
|
+
const [showCaptions, setShowCaptions] = (0, import_react30.useState)(false);
|
|
9781
|
+
const [subtitlesValidation, setSubtitlesValidation] = (0, import_react30.useState)("idle");
|
|
9782
|
+
(0, import_react30.useEffect)(() => {
|
|
9486
9783
|
setHasCompleted(false);
|
|
9487
9784
|
}, [src]);
|
|
9488
|
-
const [playbackRate, setPlaybackRate] = (0,
|
|
9489
|
-
const [showSpeedMenu, setShowSpeedMenu] = (0,
|
|
9490
|
-
const lastSaveTimeRef = (0,
|
|
9491
|
-
const trackRef = (0,
|
|
9492
|
-
const controlsTimeoutRef = (0,
|
|
9493
|
-
const lastMousePositionRef = (0,
|
|
9494
|
-
const isUserInteracting = (0,
|
|
9785
|
+
const [playbackRate, setPlaybackRate] = (0, import_react30.useState)(1);
|
|
9786
|
+
const [showSpeedMenu, setShowSpeedMenu] = (0, import_react30.useState)(false);
|
|
9787
|
+
const lastSaveTimeRef = (0, import_react30.useRef)(0);
|
|
9788
|
+
const trackRef = (0, import_react30.useRef)(null);
|
|
9789
|
+
const controlsTimeoutRef = (0, import_react30.useRef)(null);
|
|
9790
|
+
const lastMousePositionRef = (0, import_react30.useRef)({ x: 0, y: 0 });
|
|
9791
|
+
const isUserInteracting = (0, import_react30.useCallback)(() => {
|
|
9495
9792
|
if (showSpeedMenu) {
|
|
9496
9793
|
return true;
|
|
9497
9794
|
}
|
|
@@ -9508,13 +9805,13 @@ var VideoPlayer = ({
|
|
|
9508
9805
|
}
|
|
9509
9806
|
return false;
|
|
9510
9807
|
}, [showSpeedMenu]);
|
|
9511
|
-
const clearControlsTimeout = (0,
|
|
9808
|
+
const clearControlsTimeout = (0, import_react30.useCallback)(() => {
|
|
9512
9809
|
if (controlsTimeoutRef.current) {
|
|
9513
9810
|
clearTimeout(controlsTimeoutRef.current);
|
|
9514
9811
|
controlsTimeoutRef.current = null;
|
|
9515
9812
|
}
|
|
9516
9813
|
}, []);
|
|
9517
|
-
const showControlsWithTimer = (0,
|
|
9814
|
+
const showControlsWithTimer = (0, import_react30.useCallback)(() => {
|
|
9518
9815
|
setShowControls(true);
|
|
9519
9816
|
clearControlsTimeout();
|
|
9520
9817
|
if (isFullscreen) {
|
|
@@ -9529,7 +9826,7 @@ var VideoPlayer = ({
|
|
|
9529
9826
|
}, CONTROLS_HIDE_TIMEOUT);
|
|
9530
9827
|
}
|
|
9531
9828
|
}, [isFullscreen, isPlaying, clearControlsTimeout]);
|
|
9532
|
-
const handleMouseMove = (0,
|
|
9829
|
+
const handleMouseMove = (0, import_react30.useCallback)(
|
|
9533
9830
|
(event) => {
|
|
9534
9831
|
const currentX = event.clientX;
|
|
9535
9832
|
const currentY = event.clientY;
|
|
@@ -9542,10 +9839,10 @@ var VideoPlayer = ({
|
|
|
9542
9839
|
},
|
|
9543
9840
|
[showControlsWithTimer]
|
|
9544
9841
|
);
|
|
9545
|
-
const handleMouseEnter = (0,
|
|
9842
|
+
const handleMouseEnter = (0, import_react30.useCallback)(() => {
|
|
9546
9843
|
showControlsWithTimer();
|
|
9547
9844
|
}, [showControlsWithTimer]);
|
|
9548
|
-
const handleMouseLeave = (0,
|
|
9845
|
+
const handleMouseLeave = (0, import_react30.useCallback)(() => {
|
|
9549
9846
|
const userInteracting = isUserInteracting();
|
|
9550
9847
|
clearControlsTimeout();
|
|
9551
9848
|
if (!isFullscreen && !userInteracting) {
|
|
@@ -9554,13 +9851,13 @@ var VideoPlayer = ({
|
|
|
9554
9851
|
}, LEAVE_HIDE_TIMEOUT);
|
|
9555
9852
|
}
|
|
9556
9853
|
}, [isFullscreen, clearControlsTimeout, isUserInteracting]);
|
|
9557
|
-
(0,
|
|
9854
|
+
(0, import_react30.useEffect)(() => {
|
|
9558
9855
|
if (videoRef.current) {
|
|
9559
9856
|
videoRef.current.volume = volume;
|
|
9560
9857
|
videoRef.current.muted = isMuted;
|
|
9561
9858
|
}
|
|
9562
9859
|
}, [volume, isMuted]);
|
|
9563
|
-
(0,
|
|
9860
|
+
(0, import_react30.useEffect)(() => {
|
|
9564
9861
|
const video = videoRef.current;
|
|
9565
9862
|
if (!video) return;
|
|
9566
9863
|
const onPlay = () => setIsPlaying(true);
|
|
@@ -9575,13 +9872,13 @@ var VideoPlayer = ({
|
|
|
9575
9872
|
video.removeEventListener("ended", onEnded);
|
|
9576
9873
|
};
|
|
9577
9874
|
}, []);
|
|
9578
|
-
(0,
|
|
9875
|
+
(0, import_react30.useEffect)(() => {
|
|
9579
9876
|
const video = videoRef.current;
|
|
9580
9877
|
if (!video) return;
|
|
9581
9878
|
video.setAttribute("playsinline", "");
|
|
9582
9879
|
video.setAttribute("webkit-playsinline", "");
|
|
9583
9880
|
}, []);
|
|
9584
|
-
(0,
|
|
9881
|
+
(0, import_react30.useEffect)(() => {
|
|
9585
9882
|
if (isPlaying) {
|
|
9586
9883
|
showControlsWithTimer();
|
|
9587
9884
|
} else {
|
|
@@ -9593,7 +9890,7 @@ var VideoPlayer = ({
|
|
|
9593
9890
|
}
|
|
9594
9891
|
}
|
|
9595
9892
|
}, [isPlaying, isFullscreen, showControlsWithTimer, clearControlsTimeout]);
|
|
9596
|
-
(0,
|
|
9893
|
+
(0, import_react30.useEffect)(() => {
|
|
9597
9894
|
const video = videoRef.current;
|
|
9598
9895
|
if (!video) return;
|
|
9599
9896
|
const handleFullscreenChange = () => {
|
|
@@ -9628,7 +9925,7 @@ var VideoPlayer = ({
|
|
|
9628
9925
|
);
|
|
9629
9926
|
};
|
|
9630
9927
|
}, [showControlsWithTimer]);
|
|
9631
|
-
(0,
|
|
9928
|
+
(0, import_react30.useEffect)(() => {
|
|
9632
9929
|
const init = () => {
|
|
9633
9930
|
if (!isFullscreen) {
|
|
9634
9931
|
showControlsWithTimer();
|
|
@@ -9650,7 +9947,7 @@ var VideoPlayer = ({
|
|
|
9650
9947
|
};
|
|
9651
9948
|
}
|
|
9652
9949
|
}, []);
|
|
9653
|
-
const getInitialTime = (0,
|
|
9950
|
+
const getInitialTime = (0, import_react30.useCallback)(() => {
|
|
9654
9951
|
if (!autoSave || !storageKey) {
|
|
9655
9952
|
return Number.isFinite(initialTime) && initialTime >= 0 ? initialTime : void 0;
|
|
9656
9953
|
}
|
|
@@ -9663,14 +9960,14 @@ var VideoPlayer = ({
|
|
|
9663
9960
|
if (hasValidSaved) return saved;
|
|
9664
9961
|
return void 0;
|
|
9665
9962
|
}, [autoSave, storageKey, src, initialTime]);
|
|
9666
|
-
(0,
|
|
9963
|
+
(0, import_react30.useEffect)(() => {
|
|
9667
9964
|
const start = getInitialTime();
|
|
9668
9965
|
if (start !== void 0 && videoRef.current) {
|
|
9669
9966
|
videoRef.current.currentTime = start;
|
|
9670
9967
|
setCurrentTime(start);
|
|
9671
9968
|
}
|
|
9672
9969
|
}, [getInitialTime]);
|
|
9673
|
-
const saveProgress = (0,
|
|
9970
|
+
const saveProgress = (0, import_react30.useCallback)(
|
|
9674
9971
|
(time) => {
|
|
9675
9972
|
if (!autoSave || !storageKey) return;
|
|
9676
9973
|
const now = Date.now();
|
|
@@ -9681,7 +9978,7 @@ var VideoPlayer = ({
|
|
|
9681
9978
|
},
|
|
9682
9979
|
[autoSave, storageKey, src]
|
|
9683
9980
|
);
|
|
9684
|
-
const togglePlayPause = (0,
|
|
9981
|
+
const togglePlayPause = (0, import_react30.useCallback)(async () => {
|
|
9685
9982
|
const video = videoRef.current;
|
|
9686
9983
|
if (!video) return;
|
|
9687
9984
|
if (!video.paused) {
|
|
@@ -9693,7 +9990,7 @@ var VideoPlayer = ({
|
|
|
9693
9990
|
} catch {
|
|
9694
9991
|
}
|
|
9695
9992
|
}, []);
|
|
9696
|
-
const handleVolumeChange = (0,
|
|
9993
|
+
const handleVolumeChange = (0, import_react30.useCallback)(
|
|
9697
9994
|
(newVolume) => {
|
|
9698
9995
|
const video = videoRef.current;
|
|
9699
9996
|
if (!video) return;
|
|
@@ -9712,7 +10009,7 @@ var VideoPlayer = ({
|
|
|
9712
10009
|
},
|
|
9713
10010
|
[isMuted]
|
|
9714
10011
|
);
|
|
9715
|
-
const toggleMute = (0,
|
|
10012
|
+
const toggleMute = (0, import_react30.useCallback)(() => {
|
|
9716
10013
|
const video = videoRef.current;
|
|
9717
10014
|
if (!video) return;
|
|
9718
10015
|
if (isMuted) {
|
|
@@ -9726,20 +10023,20 @@ var VideoPlayer = ({
|
|
|
9726
10023
|
setIsMuted(true);
|
|
9727
10024
|
}
|
|
9728
10025
|
}, [isMuted, volume]);
|
|
9729
|
-
const handleSeek = (0,
|
|
10026
|
+
const handleSeek = (0, import_react30.useCallback)((newTime) => {
|
|
9730
10027
|
const video = videoRef.current;
|
|
9731
10028
|
if (video) {
|
|
9732
10029
|
video.currentTime = newTime;
|
|
9733
10030
|
}
|
|
9734
10031
|
}, []);
|
|
9735
|
-
const isSafariIOS = (0,
|
|
10032
|
+
const isSafariIOS = (0, import_react30.useCallback)(() => {
|
|
9736
10033
|
const ua = navigator.userAgent;
|
|
9737
10034
|
const isIOS = /iPad|iPhone|iPod/.test(ua);
|
|
9738
10035
|
const isWebKit = /WebKit/.test(ua);
|
|
9739
10036
|
const isNotChrome = !/CriOS|Chrome/.test(ua);
|
|
9740
10037
|
return isIOS && isWebKit && isNotChrome;
|
|
9741
10038
|
}, []);
|
|
9742
|
-
const toggleFullscreen = (0,
|
|
10039
|
+
const toggleFullscreen = (0, import_react30.useCallback)(() => {
|
|
9743
10040
|
const video = videoRef.current;
|
|
9744
10041
|
const container = video?.parentElement;
|
|
9745
10042
|
if (!video || !container) return;
|
|
@@ -9756,24 +10053,24 @@ var VideoPlayer = ({
|
|
|
9756
10053
|
document.exitFullscreen();
|
|
9757
10054
|
}
|
|
9758
10055
|
}, [isFullscreen, isSafariIOS]);
|
|
9759
|
-
const handleSpeedChange = (0,
|
|
10056
|
+
const handleSpeedChange = (0, import_react30.useCallback)((speed) => {
|
|
9760
10057
|
if (videoRef.current) {
|
|
9761
10058
|
videoRef.current.playbackRate = speed;
|
|
9762
10059
|
setPlaybackRate(speed);
|
|
9763
10060
|
setShowSpeedMenu(false);
|
|
9764
10061
|
}
|
|
9765
10062
|
}, []);
|
|
9766
|
-
const toggleSpeedMenu = (0,
|
|
10063
|
+
const toggleSpeedMenu = (0, import_react30.useCallback)(() => {
|
|
9767
10064
|
setShowSpeedMenu(!showSpeedMenu);
|
|
9768
10065
|
}, [showSpeedMenu]);
|
|
9769
|
-
const toggleCaptions = (0,
|
|
10066
|
+
const toggleCaptions = (0, import_react30.useCallback)(() => {
|
|
9770
10067
|
if (!trackRef.current?.track || !subtitles || subtitlesValidation !== "valid")
|
|
9771
10068
|
return;
|
|
9772
10069
|
const newShowCaptions = !showCaptions;
|
|
9773
10070
|
setShowCaptions(newShowCaptions);
|
|
9774
10071
|
trackRef.current.track.mode = newShowCaptions ? "showing" : "hidden";
|
|
9775
10072
|
}, [showCaptions, subtitles, subtitlesValidation]);
|
|
9776
|
-
const checkVideoCompletion = (0,
|
|
10073
|
+
const checkVideoCompletion = (0, import_react30.useCallback)(
|
|
9777
10074
|
(progressPercent) => {
|
|
9778
10075
|
if (progressPercent >= 95 && !hasCompleted) {
|
|
9779
10076
|
setHasCompleted(true);
|
|
@@ -9782,7 +10079,7 @@ var VideoPlayer = ({
|
|
|
9782
10079
|
},
|
|
9783
10080
|
[hasCompleted, onVideoComplete]
|
|
9784
10081
|
);
|
|
9785
|
-
const handleTimeUpdate = (0,
|
|
10082
|
+
const handleTimeUpdate = (0, import_react30.useCallback)(() => {
|
|
9786
10083
|
const video = videoRef.current;
|
|
9787
10084
|
if (!video) return;
|
|
9788
10085
|
const current = video.currentTime;
|
|
@@ -9795,12 +10092,12 @@ var VideoPlayer = ({
|
|
|
9795
10092
|
checkVideoCompletion(progressPercent);
|
|
9796
10093
|
}
|
|
9797
10094
|
}, [duration, saveProgress, onTimeUpdate, onProgress, checkVideoCompletion]);
|
|
9798
|
-
const handleLoadedMetadata = (0,
|
|
10095
|
+
const handleLoadedMetadata = (0, import_react30.useCallback)(() => {
|
|
9799
10096
|
if (videoRef.current) {
|
|
9800
10097
|
setDuration(videoRef.current.duration);
|
|
9801
10098
|
}
|
|
9802
10099
|
}, []);
|
|
9803
|
-
(0,
|
|
10100
|
+
(0, import_react30.useEffect)(() => {
|
|
9804
10101
|
const controller = new AbortController();
|
|
9805
10102
|
const validateSubtitles = async () => {
|
|
9806
10103
|
if (!subtitles) {
|
|
@@ -9847,12 +10144,12 @@ var VideoPlayer = ({
|
|
|
9847
10144
|
controller.abort();
|
|
9848
10145
|
};
|
|
9849
10146
|
}, [subtitles]);
|
|
9850
|
-
(0,
|
|
10147
|
+
(0, import_react30.useEffect)(() => {
|
|
9851
10148
|
if (trackRef.current?.track) {
|
|
9852
10149
|
trackRef.current.track.mode = showCaptions && subtitles && subtitlesValidation === "valid" ? "showing" : "hidden";
|
|
9853
10150
|
}
|
|
9854
10151
|
}, [subtitles, showCaptions, subtitlesValidation]);
|
|
9855
|
-
(0,
|
|
10152
|
+
(0, import_react30.useEffect)(() => {
|
|
9856
10153
|
const handleVisibilityChange = () => {
|
|
9857
10154
|
if (document.hidden && isPlaying && videoRef.current) {
|
|
9858
10155
|
videoRef.current.pause();
|
|
@@ -9874,54 +10171,54 @@ var VideoPlayer = ({
|
|
|
9874
10171
|
};
|
|
9875
10172
|
}, [isPlaying, clearControlsTimeout]);
|
|
9876
10173
|
const progressPercentage = duration > 0 ? currentTime / duration * 100 : 0;
|
|
9877
|
-
const getIconSize2 = (0,
|
|
10174
|
+
const getIconSize2 = (0, import_react30.useCallback)(() => {
|
|
9878
10175
|
if (isTinyMobile) return 18;
|
|
9879
10176
|
if (isUltraSmallMobile) return 20;
|
|
9880
10177
|
return 24;
|
|
9881
10178
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
9882
|
-
const getControlsPadding = (0,
|
|
10179
|
+
const getControlsPadding = (0, import_react30.useCallback)(() => {
|
|
9883
10180
|
if (isTinyMobile) return "px-2 pb-2 pt-1";
|
|
9884
10181
|
if (isUltraSmallMobile) return "px-3 pb-3 pt-1";
|
|
9885
10182
|
return "px-4 pb-4";
|
|
9886
10183
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
9887
|
-
const getControlsGap = (0,
|
|
10184
|
+
const getControlsGap = (0, import_react30.useCallback)(() => {
|
|
9888
10185
|
if (isTinyMobile) return "gap-1";
|
|
9889
10186
|
if (isUltraSmallMobile) return "gap-2";
|
|
9890
10187
|
return "gap-4";
|
|
9891
10188
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
9892
|
-
const getProgressBarPadding = (0,
|
|
10189
|
+
const getProgressBarPadding = (0, import_react30.useCallback)(() => {
|
|
9893
10190
|
if (isTinyMobile) return "px-2 pb-1";
|
|
9894
10191
|
if (isUltraSmallMobile) return "px-3 pb-1";
|
|
9895
10192
|
return "px-4 pb-2";
|
|
9896
10193
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
9897
|
-
const getCenterPlayButtonPosition = (0,
|
|
10194
|
+
const getCenterPlayButtonPosition = (0, import_react30.useCallback)(() => {
|
|
9898
10195
|
if (isTinyMobile) return "items-center justify-center -translate-y-12";
|
|
9899
10196
|
if (isUltraSmallMobile) return "items-center justify-center -translate-y-8";
|
|
9900
10197
|
return "items-center justify-center";
|
|
9901
10198
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
9902
|
-
const getTopControlsOpacity = (0,
|
|
10199
|
+
const getTopControlsOpacity = (0, import_react30.useCallback)(() => {
|
|
9903
10200
|
return showControls ? "opacity-100" : "opacity-0";
|
|
9904
10201
|
}, [showControls]);
|
|
9905
|
-
const getBottomControlsOpacity = (0,
|
|
10202
|
+
const getBottomControlsOpacity = (0, import_react30.useCallback)(() => {
|
|
9906
10203
|
return showControls ? "opacity-100" : "opacity-0";
|
|
9907
10204
|
}, [showControls]);
|
|
9908
|
-
const seekBackward = (0,
|
|
10205
|
+
const seekBackward = (0, import_react30.useCallback)(() => {
|
|
9909
10206
|
if (videoRef.current) {
|
|
9910
10207
|
videoRef.current.currentTime -= 10;
|
|
9911
10208
|
}
|
|
9912
10209
|
}, []);
|
|
9913
|
-
const seekForward = (0,
|
|
10210
|
+
const seekForward = (0, import_react30.useCallback)(() => {
|
|
9914
10211
|
if (videoRef.current) {
|
|
9915
10212
|
videoRef.current.currentTime += 10;
|
|
9916
10213
|
}
|
|
9917
10214
|
}, []);
|
|
9918
|
-
const increaseVolume = (0,
|
|
10215
|
+
const increaseVolume = (0, import_react30.useCallback)(() => {
|
|
9919
10216
|
handleVolumeChange(Math.min(100, volume * 100 + 10));
|
|
9920
10217
|
}, [handleVolumeChange, volume]);
|
|
9921
|
-
const decreaseVolume = (0,
|
|
10218
|
+
const decreaseVolume = (0, import_react30.useCallback)(() => {
|
|
9922
10219
|
handleVolumeChange(Math.max(0, volume * 100 - 10));
|
|
9923
10220
|
}, [handleVolumeChange, volume]);
|
|
9924
|
-
const handleVideoKeyDown = (0,
|
|
10221
|
+
const handleVideoKeyDown = (0, import_react30.useCallback)(
|
|
9925
10222
|
(e) => {
|
|
9926
10223
|
if (!e.key) return;
|
|
9927
10224
|
e.stopPropagation();
|
|
@@ -9956,10 +10253,10 @@ var VideoPlayer = ({
|
|
|
9956
10253
|
]
|
|
9957
10254
|
);
|
|
9958
10255
|
const groupedSubTitleValid = subtitles && subtitlesValidation === "valid";
|
|
9959
|
-
return /* @__PURE__ */ (0,
|
|
9960
|
-
(title || subtitleText) && /* @__PURE__ */ (0,
|
|
9961
|
-
/* @__PURE__ */ (0,
|
|
9962
|
-
title && /* @__PURE__ */ (0,
|
|
10256
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn("flex flex-col", className), children: [
|
|
10257
|
+
(title || subtitleText) && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "bg-subject-1 px-8 py-4 flex items-end justify-between min-h-20", children: [
|
|
10258
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
10259
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9963
10260
|
Text_default,
|
|
9964
10261
|
{
|
|
9965
10262
|
as: "h2",
|
|
@@ -9970,7 +10267,7 @@ var VideoPlayer = ({
|
|
|
9970
10267
|
children: title
|
|
9971
10268
|
}
|
|
9972
10269
|
),
|
|
9973
|
-
subtitleText && /* @__PURE__ */ (0,
|
|
10270
|
+
subtitleText && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9974
10271
|
Text_default,
|
|
9975
10272
|
{
|
|
9976
10273
|
as: "p",
|
|
@@ -9982,7 +10279,7 @@ var VideoPlayer = ({
|
|
|
9982
10279
|
}
|
|
9983
10280
|
)
|
|
9984
10281
|
] }),
|
|
9985
|
-
showDownloadButton && downloadContent && /* @__PURE__ */ (0,
|
|
10282
|
+
showDownloadButton && downloadContent && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
9986
10283
|
DownloadButton_default,
|
|
9987
10284
|
{
|
|
9988
10285
|
content: downloadContent,
|
|
@@ -9994,7 +10291,7 @@ var VideoPlayer = ({
|
|
|
9994
10291
|
}
|
|
9995
10292
|
)
|
|
9996
10293
|
] }),
|
|
9997
|
-
/* @__PURE__ */ (0,
|
|
10294
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
9998
10295
|
"section",
|
|
9999
10296
|
{
|
|
10000
10297
|
className: cn(
|
|
@@ -10009,7 +10306,7 @@ var VideoPlayer = ({
|
|
|
10009
10306
|
onTouchStart: handleMouseEnter,
|
|
10010
10307
|
onMouseLeave: handleMouseLeave,
|
|
10011
10308
|
children: [
|
|
10012
|
-
/* @__PURE__ */ (0,
|
|
10309
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10013
10310
|
"video",
|
|
10014
10311
|
{
|
|
10015
10312
|
ref: videoRef,
|
|
@@ -10024,7 +10321,7 @@ var VideoPlayer = ({
|
|
|
10024
10321
|
onKeyDown: handleVideoKeyDown,
|
|
10025
10322
|
tabIndex: 0,
|
|
10026
10323
|
"aria-label": title ? `Video: ${title}` : "Video player",
|
|
10027
|
-
children: /* @__PURE__ */ (0,
|
|
10324
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10028
10325
|
"track",
|
|
10029
10326
|
{
|
|
10030
10327
|
ref: trackRef,
|
|
@@ -10037,17 +10334,17 @@ var VideoPlayer = ({
|
|
|
10037
10334
|
)
|
|
10038
10335
|
}
|
|
10039
10336
|
),
|
|
10040
|
-
!isPlaying && /* @__PURE__ */ (0,
|
|
10337
|
+
!isPlaying && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10041
10338
|
"div",
|
|
10042
10339
|
{
|
|
10043
10340
|
className: cn(
|
|
10044
10341
|
"absolute inset-0 flex bg-black/30 transition-opacity",
|
|
10045
10342
|
getCenterPlayButtonPosition()
|
|
10046
10343
|
),
|
|
10047
|
-
children: /* @__PURE__ */ (0,
|
|
10344
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10048
10345
|
IconButton_default,
|
|
10049
10346
|
{
|
|
10050
|
-
icon: /* @__PURE__ */ (0,
|
|
10347
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.Play, { size: 32, weight: "regular", className: "ml-1" }),
|
|
10051
10348
|
onClick: togglePlayPause,
|
|
10052
10349
|
"aria-label": "Play video",
|
|
10053
10350
|
className: "!bg-transparent !text-white !w-auto !h-auto hover:!bg-transparent hover:!text-gray-200"
|
|
@@ -10055,17 +10352,17 @@ var VideoPlayer = ({
|
|
|
10055
10352
|
)
|
|
10056
10353
|
}
|
|
10057
10354
|
),
|
|
10058
|
-
/* @__PURE__ */ (0,
|
|
10355
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10059
10356
|
"div",
|
|
10060
10357
|
{
|
|
10061
10358
|
className: cn(
|
|
10062
10359
|
"absolute top-0 left-0 right-0 p-4 bg-gradient-to-b from-black/70 to-transparent transition-opacity",
|
|
10063
10360
|
getTopControlsOpacity()
|
|
10064
10361
|
),
|
|
10065
|
-
children: /* @__PURE__ */ (0,
|
|
10362
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10066
10363
|
IconButton_default,
|
|
10067
10364
|
{
|
|
10068
|
-
icon: isFullscreen ? /* @__PURE__ */ (0,
|
|
10365
|
+
icon: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.ArrowsInSimple, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.ArrowsOutSimple, { size: 24 }),
|
|
10069
10366
|
onClick: toggleFullscreen,
|
|
10070
10367
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
10071
10368
|
className: "!bg-transparent !text-white hover:!bg-white/20"
|
|
@@ -10073,7 +10370,7 @@ var VideoPlayer = ({
|
|
|
10073
10370
|
) })
|
|
10074
10371
|
}
|
|
10075
10372
|
),
|
|
10076
|
-
/* @__PURE__ */ (0,
|
|
10373
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
10077
10374
|
"div",
|
|
10078
10375
|
{
|
|
10079
10376
|
className: cn(
|
|
@@ -10081,7 +10378,7 @@ var VideoPlayer = ({
|
|
|
10081
10378
|
getBottomControlsOpacity()
|
|
10082
10379
|
),
|
|
10083
10380
|
children: [
|
|
10084
|
-
/* @__PURE__ */ (0,
|
|
10381
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10085
10382
|
ProgressBar2,
|
|
10086
10383
|
{
|
|
10087
10384
|
currentTime,
|
|
@@ -10091,7 +10388,7 @@ var VideoPlayer = ({
|
|
|
10091
10388
|
className: getProgressBarPadding()
|
|
10092
10389
|
}
|
|
10093
10390
|
),
|
|
10094
|
-
/* @__PURE__ */ (0,
|
|
10391
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
10095
10392
|
"div",
|
|
10096
10393
|
{
|
|
10097
10394
|
className: cn(
|
|
@@ -10099,17 +10396,17 @@ var VideoPlayer = ({
|
|
|
10099
10396
|
getControlsPadding()
|
|
10100
10397
|
),
|
|
10101
10398
|
children: [
|
|
10102
|
-
/* @__PURE__ */ (0,
|
|
10103
|
-
/* @__PURE__ */ (0,
|
|
10399
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn("flex items-center", getControlsGap()), children: [
|
|
10400
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10104
10401
|
IconButton_default,
|
|
10105
10402
|
{
|
|
10106
|
-
icon: isPlaying ? /* @__PURE__ */ (0,
|
|
10403
|
+
icon: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.Pause, { size: getIconSize2() }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.Play, { size: getIconSize2() }),
|
|
10107
10404
|
onClick: togglePlayPause,
|
|
10108
10405
|
"aria-label": isPlaying ? "Pause" : "Play",
|
|
10109
10406
|
className: "!bg-transparent !text-white hover:!bg-white/20"
|
|
10110
10407
|
}
|
|
10111
10408
|
),
|
|
10112
|
-
/* @__PURE__ */ (0,
|
|
10409
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10113
10410
|
VolumeControls,
|
|
10114
10411
|
{
|
|
10115
10412
|
volume,
|
|
@@ -10120,10 +10417,10 @@ var VideoPlayer = ({
|
|
|
10120
10417
|
showSlider: !isUltraSmallMobile
|
|
10121
10418
|
}
|
|
10122
10419
|
),
|
|
10123
|
-
groupedSubTitleValid && /* @__PURE__ */ (0,
|
|
10420
|
+
groupedSubTitleValid && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10124
10421
|
IconButton_default,
|
|
10125
10422
|
{
|
|
10126
|
-
icon: /* @__PURE__ */ (0,
|
|
10423
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react22.ClosedCaptioning, { size: getIconSize2() }),
|
|
10127
10424
|
onClick: toggleCaptions,
|
|
10128
10425
|
"aria-label": showCaptions ? "Hide captions" : "Show captions",
|
|
10129
10426
|
className: cn(
|
|
@@ -10132,13 +10429,13 @@ var VideoPlayer = ({
|
|
|
10132
10429
|
)
|
|
10133
10430
|
}
|
|
10134
10431
|
),
|
|
10135
|
-
/* @__PURE__ */ (0,
|
|
10432
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Text_default, { size: "sm", weight: "medium", color: "text-white", children: [
|
|
10136
10433
|
formatTime(currentTime),
|
|
10137
10434
|
" / ",
|
|
10138
10435
|
formatTime(duration)
|
|
10139
10436
|
] })
|
|
10140
10437
|
] }),
|
|
10141
|
-
/* @__PURE__ */ (0,
|
|
10438
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex items-center gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10142
10439
|
SpeedMenu,
|
|
10143
10440
|
{
|
|
10144
10441
|
showSpeedMenu,
|
|
@@ -10164,9 +10461,9 @@ var VideoPlayer = ({
|
|
|
10164
10461
|
var VideoPlayer_default = VideoPlayer;
|
|
10165
10462
|
|
|
10166
10463
|
// src/components/Whiteboard/Whiteboard.tsx
|
|
10167
|
-
var
|
|
10464
|
+
var import_react31 = require("react");
|
|
10168
10465
|
var import_phosphor_react23 = require("phosphor-react");
|
|
10169
|
-
var
|
|
10466
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
10170
10467
|
var IMAGE_WIDTH = 225;
|
|
10171
10468
|
var IMAGE_HEIGHT = 90;
|
|
10172
10469
|
var Whiteboard = ({
|
|
@@ -10177,8 +10474,8 @@ var Whiteboard = ({
|
|
|
10177
10474
|
imagesPerRow = 2,
|
|
10178
10475
|
...rest
|
|
10179
10476
|
}) => {
|
|
10180
|
-
const [imageErrors, setImageErrors] = (0,
|
|
10181
|
-
const handleDownload = (0,
|
|
10477
|
+
const [imageErrors, setImageErrors] = (0, import_react31.useState)(/* @__PURE__ */ new Set());
|
|
10478
|
+
const handleDownload = (0, import_react31.useCallback)(
|
|
10182
10479
|
(image) => {
|
|
10183
10480
|
if (onDownload) {
|
|
10184
10481
|
onDownload(image);
|
|
@@ -10195,7 +10492,7 @@ var Whiteboard = ({
|
|
|
10195
10492
|
},
|
|
10196
10493
|
[onDownload]
|
|
10197
10494
|
);
|
|
10198
|
-
const handleImageError = (0,
|
|
10495
|
+
const handleImageError = (0, import_react31.useCallback)((imageId) => {
|
|
10199
10496
|
setImageErrors((prev) => new Set(prev).add(imageId));
|
|
10200
10497
|
}, []);
|
|
10201
10498
|
const gridColsClass = images?.length === 1 ? "grid-cols-1" : {
|
|
@@ -10204,7 +10501,7 @@ var Whiteboard = ({
|
|
|
10204
10501
|
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"
|
|
10205
10502
|
}[imagesPerRow];
|
|
10206
10503
|
if (!images || images.length === 0) {
|
|
10207
|
-
return /* @__PURE__ */ (0,
|
|
10504
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10208
10505
|
"div",
|
|
10209
10506
|
{
|
|
10210
10507
|
className: cn(
|
|
@@ -10212,11 +10509,11 @@ var Whiteboard = ({
|
|
|
10212
10509
|
className
|
|
10213
10510
|
),
|
|
10214
10511
|
...rest,
|
|
10215
|
-
children: /* @__PURE__ */ (0,
|
|
10512
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-gray-400 text-sm", children: "Nenhuma imagem dispon\xEDvel" })
|
|
10216
10513
|
}
|
|
10217
10514
|
);
|
|
10218
10515
|
}
|
|
10219
|
-
return /* @__PURE__ */ (0,
|
|
10516
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10220
10517
|
"div",
|
|
10221
10518
|
{
|
|
10222
10519
|
className: cn(
|
|
@@ -10224,7 +10521,7 @@ var Whiteboard = ({
|
|
|
10224
10521
|
className
|
|
10225
10522
|
),
|
|
10226
10523
|
...rest,
|
|
10227
|
-
children: /* @__PURE__ */ (0,
|
|
10524
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: cn("grid gap-4", gridColsClass), children: images.map((image) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
10228
10525
|
"div",
|
|
10229
10526
|
{
|
|
10230
10527
|
className: "relative group overflow-hidden bg-gray-100 rounded-lg",
|
|
@@ -10232,7 +10529,7 @@ var Whiteboard = ({
|
|
|
10232
10529
|
width: `${IMAGE_WIDTH}px`
|
|
10233
10530
|
},
|
|
10234
10531
|
children: [
|
|
10235
|
-
/* @__PURE__ */ (0,
|
|
10532
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10236
10533
|
"div",
|
|
10237
10534
|
{
|
|
10238
10535
|
className: "relative",
|
|
@@ -10240,8 +10537,8 @@ var Whiteboard = ({
|
|
|
10240
10537
|
width: `${IMAGE_WIDTH}px`,
|
|
10241
10538
|
height: `${IMAGE_HEIGHT}px`
|
|
10242
10539
|
},
|
|
10243
|
-
children: imageErrors.has(image.id) ? /* @__PURE__ */ (0,
|
|
10244
|
-
/* @__PURE__ */ (0,
|
|
10540
|
+
children: imageErrors.has(image.id) ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "absolute inset-0 flex items-center justify-center bg-gray-200", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-gray-500 text-sm text-center px-2", children: "Imagem indispon\xEDvel" }) }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { children: [
|
|
10541
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10245
10542
|
"img",
|
|
10246
10543
|
{
|
|
10247
10544
|
src: image.imageUrl,
|
|
@@ -10251,18 +10548,18 @@ var Whiteboard = ({
|
|
|
10251
10548
|
onError: () => handleImageError(image.id)
|
|
10252
10549
|
}
|
|
10253
10550
|
),
|
|
10254
|
-
/* @__PURE__ */ (0,
|
|
10551
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "absolute inset-0 bg-gradient-to-t from-black/20 to-transparent" })
|
|
10255
10552
|
] })
|
|
10256
10553
|
}
|
|
10257
10554
|
),
|
|
10258
|
-
showDownload && /* @__PURE__ */ (0,
|
|
10555
|
+
showDownload && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10259
10556
|
"button",
|
|
10260
10557
|
{
|
|
10261
10558
|
type: "button",
|
|
10262
10559
|
onClick: () => handleDownload(image),
|
|
10263
10560
|
className: "cursor-pointer absolute bottom-3 right-3 flex items-center justify-center bg-black/20 backdrop-blur-sm rounded hover:bg-black/30 transition-colors duration-200 group/button w-6 h-6",
|
|
10264
10561
|
"aria-label": `Download ${image.title || "imagem"}`,
|
|
10265
|
-
children: /* @__PURE__ */ (0,
|
|
10562
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10266
10563
|
import_phosphor_react23.ArrowsOut,
|
|
10267
10564
|
{
|
|
10268
10565
|
size: 24,
|
|
@@ -10282,10 +10579,10 @@ var Whiteboard = ({
|
|
|
10282
10579
|
var Whiteboard_default = Whiteboard;
|
|
10283
10580
|
|
|
10284
10581
|
// src/components/Auth/Auth.tsx
|
|
10285
|
-
var
|
|
10582
|
+
var import_react32 = require("react");
|
|
10286
10583
|
var import_react_router_dom = require("react-router-dom");
|
|
10287
|
-
var
|
|
10288
|
-
var AuthContext = (0,
|
|
10584
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
10585
|
+
var AuthContext = (0, import_react32.createContext)(void 0);
|
|
10289
10586
|
var AuthProvider = ({
|
|
10290
10587
|
children,
|
|
10291
10588
|
checkAuthFn,
|
|
@@ -10295,12 +10592,12 @@ var AuthProvider = ({
|
|
|
10295
10592
|
getSessionFn,
|
|
10296
10593
|
getTokensFn
|
|
10297
10594
|
}) => {
|
|
10298
|
-
const [authState, setAuthState] = (0,
|
|
10595
|
+
const [authState, setAuthState] = (0, import_react32.useState)({
|
|
10299
10596
|
isAuthenticated: false,
|
|
10300
10597
|
isLoading: true,
|
|
10301
10598
|
...initialAuthState
|
|
10302
10599
|
});
|
|
10303
|
-
const checkAuth = (0,
|
|
10600
|
+
const checkAuth = (0, import_react32.useCallback)(async () => {
|
|
10304
10601
|
try {
|
|
10305
10602
|
setAuthState((prev) => ({ ...prev, isLoading: true }));
|
|
10306
10603
|
if (!checkAuthFn) {
|
|
@@ -10331,7 +10628,7 @@ var AuthProvider = ({
|
|
|
10331
10628
|
return false;
|
|
10332
10629
|
}
|
|
10333
10630
|
}, [checkAuthFn, getUserFn, getSessionFn, getTokensFn]);
|
|
10334
|
-
const signOut = (0,
|
|
10631
|
+
const signOut = (0, import_react32.useCallback)(() => {
|
|
10335
10632
|
if (signOutFn) {
|
|
10336
10633
|
signOutFn();
|
|
10337
10634
|
}
|
|
@@ -10343,10 +10640,10 @@ var AuthProvider = ({
|
|
|
10343
10640
|
tokens: void 0
|
|
10344
10641
|
}));
|
|
10345
10642
|
}, [signOutFn]);
|
|
10346
|
-
(0,
|
|
10643
|
+
(0, import_react32.useEffect)(() => {
|
|
10347
10644
|
checkAuth();
|
|
10348
10645
|
}, [checkAuth]);
|
|
10349
|
-
const contextValue = (0,
|
|
10646
|
+
const contextValue = (0, import_react32.useMemo)(
|
|
10350
10647
|
() => ({
|
|
10351
10648
|
...authState,
|
|
10352
10649
|
checkAuth,
|
|
@@ -10354,10 +10651,10 @@ var AuthProvider = ({
|
|
|
10354
10651
|
}),
|
|
10355
10652
|
[authState, checkAuth, signOut]
|
|
10356
10653
|
);
|
|
10357
|
-
return /* @__PURE__ */ (0,
|
|
10654
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(AuthContext.Provider, { value: contextValue, children });
|
|
10358
10655
|
};
|
|
10359
10656
|
var useAuth = () => {
|
|
10360
|
-
const context = (0,
|
|
10657
|
+
const context = (0, import_react32.useContext)(AuthContext);
|
|
10361
10658
|
if (context === void 0) {
|
|
10362
10659
|
throw new Error("useAuth deve ser usado dentro de um AuthProvider");
|
|
10363
10660
|
}
|
|
@@ -10370,9 +10667,9 @@ var ProtectedRoute = ({
|
|
|
10370
10667
|
additionalCheck
|
|
10371
10668
|
}) => {
|
|
10372
10669
|
const { isAuthenticated, isLoading, ...authState } = useAuth();
|
|
10373
|
-
const defaultLoadingComponent = /* @__PURE__ */ (0,
|
|
10670
|
+
const defaultLoadingComponent = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
|
|
10374
10671
|
if (isLoading) {
|
|
10375
|
-
return /* @__PURE__ */ (0,
|
|
10672
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment, { children: loadingComponent || defaultLoadingComponent });
|
|
10376
10673
|
}
|
|
10377
10674
|
if (!isAuthenticated) {
|
|
10378
10675
|
if (typeof window !== "undefined") {
|
|
@@ -10383,12 +10680,12 @@ var ProtectedRoute = ({
|
|
|
10383
10680
|
return null;
|
|
10384
10681
|
}
|
|
10385
10682
|
}
|
|
10386
|
-
return /* @__PURE__ */ (0,
|
|
10683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
|
|
10387
10684
|
}
|
|
10388
10685
|
if (additionalCheck && !additionalCheck({ isAuthenticated, isLoading, ...authState })) {
|
|
10389
|
-
return /* @__PURE__ */ (0,
|
|
10686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
|
|
10390
10687
|
}
|
|
10391
|
-
return /* @__PURE__ */ (0,
|
|
10688
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment, { children });
|
|
10392
10689
|
};
|
|
10393
10690
|
var PublicRoute = ({
|
|
10394
10691
|
children,
|
|
@@ -10398,15 +10695,15 @@ var PublicRoute = ({
|
|
|
10398
10695
|
}) => {
|
|
10399
10696
|
const { isAuthenticated, isLoading } = useAuth();
|
|
10400
10697
|
if (checkAuthBeforeRender && isLoading) {
|
|
10401
|
-
return /* @__PURE__ */ (0,
|
|
10698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
|
|
10402
10699
|
}
|
|
10403
10700
|
if (isAuthenticated && redirectIfAuthenticated) {
|
|
10404
|
-
return /* @__PURE__ */ (0,
|
|
10701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
|
|
10405
10702
|
}
|
|
10406
|
-
return /* @__PURE__ */ (0,
|
|
10703
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment, { children });
|
|
10407
10704
|
};
|
|
10408
10705
|
var withAuth = (Component, options = {}) => {
|
|
10409
|
-
return (props) => /* @__PURE__ */ (0,
|
|
10706
|
+
return (props) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ProtectedRoute, { ...options, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Component, { ...props }) });
|
|
10410
10707
|
};
|
|
10411
10708
|
var useAuthGuard = (options = {}) => {
|
|
10412
10709
|
const authState = useAuth();
|
|
@@ -10421,7 +10718,7 @@ var useAuthGuard = (options = {}) => {
|
|
|
10421
10718
|
var useRouteAuth = (fallbackPath = "/") => {
|
|
10422
10719
|
const { isAuthenticated, isLoading } = useAuth();
|
|
10423
10720
|
const location = (0, import_react_router_dom.useLocation)();
|
|
10424
|
-
const redirectToLogin = () => /* @__PURE__ */ (0,
|
|
10721
|
+
const redirectToLogin = () => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_router_dom.Navigate, { to: fallbackPath, state: { from: location }, replace: true });
|
|
10425
10722
|
return {
|
|
10426
10723
|
isAuthenticated,
|
|
10427
10724
|
isLoading,
|
|
@@ -10455,10 +10752,10 @@ var getRootDomain = () => {
|
|
|
10455
10752
|
};
|
|
10456
10753
|
|
|
10457
10754
|
// src/components/Accordation/Accordation.tsx
|
|
10458
|
-
var
|
|
10755
|
+
var import_react33 = require("react");
|
|
10459
10756
|
var import_phosphor_react24 = require("phosphor-react");
|
|
10460
|
-
var
|
|
10461
|
-
var CardAccordation = (0,
|
|
10757
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
10758
|
+
var CardAccordation = (0, import_react33.forwardRef)(
|
|
10462
10759
|
({
|
|
10463
10760
|
trigger,
|
|
10464
10761
|
children,
|
|
@@ -10470,13 +10767,13 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10470
10767
|
disabled = false,
|
|
10471
10768
|
...props
|
|
10472
10769
|
}, ref) => {
|
|
10473
|
-
const [internalExpanded, setInternalExpanded] = (0,
|
|
10474
|
-
const generatedId = (0,
|
|
10770
|
+
const [internalExpanded, setInternalExpanded] = (0, import_react33.useState)(defaultExpanded);
|
|
10771
|
+
const generatedId = (0, import_react33.useId)();
|
|
10475
10772
|
const contentId = value ? `accordion-content-${value}` : generatedId;
|
|
10476
10773
|
const headerId = value ? `accordion-header-${value}` : `${generatedId}-header`;
|
|
10477
10774
|
const isControlled = controlledExpanded !== void 0;
|
|
10478
10775
|
const isExpanded = isControlled ? controlledExpanded : internalExpanded;
|
|
10479
|
-
(0,
|
|
10776
|
+
(0, import_react33.useEffect)(() => {
|
|
10480
10777
|
if (isControlled) {
|
|
10481
10778
|
setInternalExpanded(controlledExpanded);
|
|
10482
10779
|
}
|
|
@@ -10496,7 +10793,7 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10496
10793
|
handleToggle();
|
|
10497
10794
|
}
|
|
10498
10795
|
};
|
|
10499
|
-
return /* @__PURE__ */ (0,
|
|
10796
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
10500
10797
|
CardBase,
|
|
10501
10798
|
{
|
|
10502
10799
|
ref,
|
|
@@ -10506,7 +10803,7 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10506
10803
|
className: cn("overflow-hidden", className),
|
|
10507
10804
|
...props,
|
|
10508
10805
|
children: [
|
|
10509
|
-
/* @__PURE__ */ (0,
|
|
10806
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
10510
10807
|
"button",
|
|
10511
10808
|
{
|
|
10512
10809
|
id: headerId,
|
|
@@ -10524,7 +10821,7 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10524
10821
|
"data-value": value,
|
|
10525
10822
|
children: [
|
|
10526
10823
|
trigger,
|
|
10527
|
-
/* @__PURE__ */ (0,
|
|
10824
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10528
10825
|
import_phosphor_react24.CaretRight,
|
|
10529
10826
|
{
|
|
10530
10827
|
size: 20,
|
|
@@ -10539,7 +10836,7 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10539
10836
|
]
|
|
10540
10837
|
}
|
|
10541
10838
|
),
|
|
10542
|
-
/* @__PURE__ */ (0,
|
|
10839
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10543
10840
|
"section",
|
|
10544
10841
|
{
|
|
10545
10842
|
id: contentId,
|
|
@@ -10551,7 +10848,7 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10551
10848
|
),
|
|
10552
10849
|
"data-testid": "accordion-content",
|
|
10553
10850
|
"data-value": value,
|
|
10554
|
-
children: /* @__PURE__ */ (0,
|
|
10851
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "p-4 pt-0", children })
|
|
10555
10852
|
}
|
|
10556
10853
|
)
|
|
10557
10854
|
]
|
|
@@ -10562,9 +10859,9 @@ var CardAccordation = (0, import_react32.forwardRef)(
|
|
|
10562
10859
|
CardAccordation.displayName = "CardAccordation";
|
|
10563
10860
|
|
|
10564
10861
|
// src/components/Accordation/AccordionGroup.tsx
|
|
10565
|
-
var
|
|
10862
|
+
var import_react34 = require("react");
|
|
10566
10863
|
var import_zustand9 = require("zustand");
|
|
10567
|
-
var
|
|
10864
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
10568
10865
|
function createAccordionGroupStore(type, initialValue, collapsible) {
|
|
10569
10866
|
return (0, import_zustand9.create)((set, get) => ({
|
|
10570
10867
|
type,
|
|
@@ -10582,8 +10879,8 @@ function createAccordionGroupStore(type, initialValue, collapsible) {
|
|
|
10582
10879
|
}));
|
|
10583
10880
|
}
|
|
10584
10881
|
var injectStore6 = (children, store, indexRef, onItemToggle) => {
|
|
10585
|
-
return
|
|
10586
|
-
if (!(0,
|
|
10882
|
+
return import_react34.Children.map(children, (child) => {
|
|
10883
|
+
if (!(0, import_react34.isValidElement)(child)) {
|
|
10587
10884
|
return child;
|
|
10588
10885
|
}
|
|
10589
10886
|
const typedChild = child;
|
|
@@ -10610,16 +10907,16 @@ var injectStore6 = (children, store, indexRef, onItemToggle) => {
|
|
|
10610
10907
|
if (displayName === "CardAccordation") {
|
|
10611
10908
|
newProps.children = processedChildren;
|
|
10612
10909
|
} else if (processedChildren !== typedChild.props.children) {
|
|
10613
|
-
return (0,
|
|
10910
|
+
return (0, import_react34.cloneElement)(typedChild, { children: processedChildren });
|
|
10614
10911
|
}
|
|
10615
10912
|
}
|
|
10616
10913
|
if (Object.keys(newProps).length > 0) {
|
|
10617
|
-
return (0,
|
|
10914
|
+
return (0, import_react34.cloneElement)(typedChild, newProps);
|
|
10618
10915
|
}
|
|
10619
10916
|
return child;
|
|
10620
10917
|
});
|
|
10621
10918
|
};
|
|
10622
|
-
var AccordionGroup = (0,
|
|
10919
|
+
var AccordionGroup = (0, import_react34.forwardRef)(
|
|
10623
10920
|
({
|
|
10624
10921
|
type = "single",
|
|
10625
10922
|
defaultValue,
|
|
@@ -10630,12 +10927,12 @@ var AccordionGroup = (0, import_react33.forwardRef)(
|
|
|
10630
10927
|
className,
|
|
10631
10928
|
...props
|
|
10632
10929
|
}, ref) => {
|
|
10633
|
-
const [internalValue, setInternalValue] = (0,
|
|
10930
|
+
const [internalValue, setInternalValue] = (0, import_react34.useState)(
|
|
10634
10931
|
defaultValue || (type === "single" ? "" : [])
|
|
10635
10932
|
);
|
|
10636
10933
|
const isControlled = controlledValue !== void 0;
|
|
10637
10934
|
const currentValue = isControlled ? controlledValue : internalValue;
|
|
10638
|
-
const storeRef = (0,
|
|
10935
|
+
const storeRef = (0, import_react34.useRef)(null);
|
|
10639
10936
|
if (storeRef.current) {
|
|
10640
10937
|
storeRef.current.setState((prev) => {
|
|
10641
10938
|
const nextState = {};
|
|
@@ -10655,10 +10952,10 @@ var AccordionGroup = (0, import_react33.forwardRef)(
|
|
|
10655
10952
|
);
|
|
10656
10953
|
}
|
|
10657
10954
|
const store = storeRef.current;
|
|
10658
|
-
(0,
|
|
10955
|
+
(0, import_react34.useEffect)(() => {
|
|
10659
10956
|
store.setState({ value: currentValue });
|
|
10660
10957
|
}, [currentValue, store]);
|
|
10661
|
-
(0,
|
|
10958
|
+
(0, import_react34.useEffect)(() => {
|
|
10662
10959
|
if (!isControlled) {
|
|
10663
10960
|
setInternalValue((prev) => {
|
|
10664
10961
|
if (type === "single") {
|
|
@@ -10704,15 +11001,15 @@ var AccordionGroup = (0, import_react33.forwardRef)(
|
|
|
10704
11001
|
indexRef,
|
|
10705
11002
|
handleItemToggle
|
|
10706
11003
|
);
|
|
10707
|
-
return /* @__PURE__ */ (0,
|
|
11004
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { ref, className, ...props, children: enhancedChildren });
|
|
10708
11005
|
}
|
|
10709
11006
|
);
|
|
10710
11007
|
AccordionGroup.displayName = "AccordionGroup";
|
|
10711
11008
|
|
|
10712
11009
|
// src/components/Alternative/Alternative.tsx
|
|
10713
11010
|
var import_phosphor_react25 = require("phosphor-react");
|
|
10714
|
-
var
|
|
10715
|
-
var
|
|
11011
|
+
var import_react35 = require("react");
|
|
11012
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10716
11013
|
var AlternativesList = ({
|
|
10717
11014
|
alternatives,
|
|
10718
11015
|
name,
|
|
@@ -10725,9 +11022,9 @@ var AlternativesList = ({
|
|
|
10725
11022
|
mode = "interactive",
|
|
10726
11023
|
selectedValue
|
|
10727
11024
|
}) => {
|
|
10728
|
-
const uniqueId = (0,
|
|
11025
|
+
const uniqueId = (0, import_react35.useId)();
|
|
10729
11026
|
const groupName = name || `alternatives-${uniqueId}`;
|
|
10730
|
-
const [actualValue, setActualValue] = (0,
|
|
11027
|
+
const [actualValue, setActualValue] = (0, import_react35.useState)(value);
|
|
10731
11028
|
const isReadonly = mode === "readonly";
|
|
10732
11029
|
const getStatusStyles2 = (status, isReadonly2) => {
|
|
10733
11030
|
const hoverClass = isReadonly2 ? "" : "hover:bg-background-50";
|
|
@@ -10743,9 +11040,9 @@ var AlternativesList = ({
|
|
|
10743
11040
|
const getStatusBadge2 = (status) => {
|
|
10744
11041
|
switch (status) {
|
|
10745
11042
|
case "correct":
|
|
10746
|
-
return /* @__PURE__ */ (0,
|
|
11043
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_phosphor_react25.CheckCircle, {}), children: "Resposta correta" });
|
|
10747
11044
|
case "incorrect":
|
|
10748
|
-
return /* @__PURE__ */ (0,
|
|
11045
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_phosphor_react25.XCircle, {}), children: "Resposta incorreta" });
|
|
10749
11046
|
default:
|
|
10750
11047
|
return null;
|
|
10751
11048
|
}
|
|
@@ -10775,10 +11072,10 @@ var AlternativesList = ({
|
|
|
10775
11072
|
const renderRadio = () => {
|
|
10776
11073
|
const radioClasses = `w-6 h-6 rounded-full border-2 cursor-default transition-all duration-200 flex items-center justify-center ${isUserSelected ? "border-primary-950 bg-background" : "border-border-400 bg-background"}`;
|
|
10777
11074
|
const dotClasses = "w-3 h-3 rounded-full bg-primary-950 transition-all duration-200";
|
|
10778
|
-
return /* @__PURE__ */ (0,
|
|
11075
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: radioClasses, children: isUserSelected && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: dotClasses }) });
|
|
10779
11076
|
};
|
|
10780
11077
|
if (layout === "detailed") {
|
|
10781
|
-
return /* @__PURE__ */ (0,
|
|
11078
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10782
11079
|
"div",
|
|
10783
11080
|
{
|
|
10784
11081
|
className: cn(
|
|
@@ -10786,11 +11083,11 @@ var AlternativesList = ({
|
|
|
10786
11083
|
statusStyles,
|
|
10787
11084
|
alternative.disabled ? "opacity-50" : ""
|
|
10788
11085
|
),
|
|
10789
|
-
children: /* @__PURE__ */ (0,
|
|
10790
|
-
/* @__PURE__ */ (0,
|
|
10791
|
-
/* @__PURE__ */ (0,
|
|
10792
|
-
/* @__PURE__ */ (0,
|
|
10793
|
-
/* @__PURE__ */ (0,
|
|
11086
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
|
|
11087
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-start gap-3 flex-1", children: [
|
|
11088
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mt-1", children: renderRadio() }),
|
|
11089
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex-1", children: [
|
|
11090
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10794
11091
|
"p",
|
|
10795
11092
|
{
|
|
10796
11093
|
className: cn(
|
|
@@ -10800,16 +11097,16 @@ var AlternativesList = ({
|
|
|
10800
11097
|
children: alternative.label
|
|
10801
11098
|
}
|
|
10802
11099
|
),
|
|
10803
|
-
alternative.description && /* @__PURE__ */ (0,
|
|
11100
|
+
alternative.description && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-sm text-text-600 mt-1", children: alternative.description })
|
|
10804
11101
|
] })
|
|
10805
11102
|
] }),
|
|
10806
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
11103
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
10807
11104
|
] })
|
|
10808
11105
|
},
|
|
10809
11106
|
alternativeId
|
|
10810
11107
|
);
|
|
10811
11108
|
}
|
|
10812
|
-
return /* @__PURE__ */ (0,
|
|
11109
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10813
11110
|
"div",
|
|
10814
11111
|
{
|
|
10815
11112
|
className: cn(
|
|
@@ -10818,9 +11115,9 @@ var AlternativesList = ({
|
|
|
10818
11115
|
alternative.disabled ? "opacity-50" : ""
|
|
10819
11116
|
),
|
|
10820
11117
|
children: [
|
|
10821
|
-
/* @__PURE__ */ (0,
|
|
11118
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
10822
11119
|
renderRadio(),
|
|
10823
|
-
/* @__PURE__ */ (0,
|
|
11120
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10824
11121
|
"span",
|
|
10825
11122
|
{
|
|
10826
11123
|
className: cn(
|
|
@@ -10831,14 +11128,14 @@ var AlternativesList = ({
|
|
|
10831
11128
|
}
|
|
10832
11129
|
)
|
|
10833
11130
|
] }),
|
|
10834
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
11131
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
10835
11132
|
]
|
|
10836
11133
|
},
|
|
10837
11134
|
alternativeId
|
|
10838
11135
|
);
|
|
10839
11136
|
};
|
|
10840
11137
|
if (isReadonly) {
|
|
10841
|
-
return /* @__PURE__ */ (0,
|
|
11138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10842
11139
|
"div",
|
|
10843
11140
|
{
|
|
10844
11141
|
className: cn("flex flex-col", getLayoutClasses(), "w-full", className),
|
|
@@ -10848,7 +11145,7 @@ var AlternativesList = ({
|
|
|
10848
11145
|
}
|
|
10849
11146
|
);
|
|
10850
11147
|
}
|
|
10851
|
-
return /* @__PURE__ */ (0,
|
|
11148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10852
11149
|
RadioGroup,
|
|
10853
11150
|
{
|
|
10854
11151
|
name: groupName,
|
|
@@ -10865,7 +11162,7 @@ var AlternativesList = ({
|
|
|
10865
11162
|
const statusStyles = getStatusStyles2(alternative.status, false);
|
|
10866
11163
|
const statusBadge = getStatusBadge2(alternative.status);
|
|
10867
11164
|
if (layout === "detailed") {
|
|
10868
|
-
return /* @__PURE__ */ (0,
|
|
11165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10869
11166
|
"div",
|
|
10870
11167
|
{
|
|
10871
11168
|
className: cn(
|
|
@@ -10873,9 +11170,9 @@ var AlternativesList = ({
|
|
|
10873
11170
|
statusStyles,
|
|
10874
11171
|
alternative.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"
|
|
10875
11172
|
),
|
|
10876
|
-
children: /* @__PURE__ */ (0,
|
|
10877
|
-
/* @__PURE__ */ (0,
|
|
10878
|
-
/* @__PURE__ */ (0,
|
|
11173
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
|
|
11174
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-start gap-3 flex-1", children: [
|
|
11175
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10879
11176
|
RadioGroupItem,
|
|
10880
11177
|
{
|
|
10881
11178
|
value: alternative.value,
|
|
@@ -10884,8 +11181,8 @@ var AlternativesList = ({
|
|
|
10884
11181
|
className: "mt-1"
|
|
10885
11182
|
}
|
|
10886
11183
|
),
|
|
10887
|
-
/* @__PURE__ */ (0,
|
|
10888
|
-
/* @__PURE__ */ (0,
|
|
11184
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex-1", children: [
|
|
11185
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10889
11186
|
"label",
|
|
10890
11187
|
{
|
|
10891
11188
|
htmlFor: alternativeId,
|
|
@@ -10897,16 +11194,16 @@ var AlternativesList = ({
|
|
|
10897
11194
|
children: alternative.label
|
|
10898
11195
|
}
|
|
10899
11196
|
),
|
|
10900
|
-
alternative.description && /* @__PURE__ */ (0,
|
|
11197
|
+
alternative.description && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-sm text-text-600 mt-1", children: alternative.description })
|
|
10901
11198
|
] })
|
|
10902
11199
|
] }),
|
|
10903
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
11200
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
10904
11201
|
] })
|
|
10905
11202
|
},
|
|
10906
11203
|
alternativeId
|
|
10907
11204
|
);
|
|
10908
11205
|
}
|
|
10909
|
-
return /* @__PURE__ */ (0,
|
|
11206
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10910
11207
|
"div",
|
|
10911
11208
|
{
|
|
10912
11209
|
className: cn(
|
|
@@ -10915,8 +11212,8 @@ var AlternativesList = ({
|
|
|
10915
11212
|
alternative.disabled ? "opacity-50 cursor-not-allowed" : ""
|
|
10916
11213
|
),
|
|
10917
11214
|
children: [
|
|
10918
|
-
/* @__PURE__ */ (0,
|
|
10919
|
-
/* @__PURE__ */ (0,
|
|
11215
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
11216
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10920
11217
|
RadioGroupItem,
|
|
10921
11218
|
{
|
|
10922
11219
|
value: alternative.value,
|
|
@@ -10924,7 +11221,7 @@ var AlternativesList = ({
|
|
|
10924
11221
|
disabled: alternative.disabled
|
|
10925
11222
|
}
|
|
10926
11223
|
),
|
|
10927
|
-
/* @__PURE__ */ (0,
|
|
11224
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10928
11225
|
"label",
|
|
10929
11226
|
{
|
|
10930
11227
|
htmlFor: alternativeId,
|
|
@@ -10937,7 +11234,7 @@ var AlternativesList = ({
|
|
|
10937
11234
|
}
|
|
10938
11235
|
)
|
|
10939
11236
|
] }),
|
|
10940
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
11237
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
10941
11238
|
]
|
|
10942
11239
|
},
|
|
10943
11240
|
alternativeId
|
|
@@ -10946,9 +11243,9 @@ var AlternativesList = ({
|
|
|
10946
11243
|
}
|
|
10947
11244
|
);
|
|
10948
11245
|
};
|
|
10949
|
-
var HeaderAlternative = (0,
|
|
11246
|
+
var HeaderAlternative = (0, import_react35.forwardRef)(
|
|
10950
11247
|
({ className, title, subTitle, content, ...props }, ref) => {
|
|
10951
|
-
return /* @__PURE__ */ (0,
|
|
11248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10952
11249
|
"div",
|
|
10953
11250
|
{
|
|
10954
11251
|
ref,
|
|
@@ -10958,11 +11255,11 @@ var HeaderAlternative = (0, import_react34.forwardRef)(
|
|
|
10958
11255
|
),
|
|
10959
11256
|
...props,
|
|
10960
11257
|
children: [
|
|
10961
|
-
/* @__PURE__ */ (0,
|
|
10962
|
-
/* @__PURE__ */ (0,
|
|
10963
|
-
/* @__PURE__ */ (0,
|
|
11258
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { className: "flex flex-col", children: [
|
|
11259
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-text-950 font-bold text-lg", children: title }),
|
|
11260
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-text-700 text-sm ", children: subTitle })
|
|
10964
11261
|
] }),
|
|
10965
|
-
/* @__PURE__ */ (0,
|
|
11262
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-text-950 text-md", children: content })
|
|
10966
11263
|
]
|
|
10967
11264
|
}
|
|
10968
11265
|
);
|
|
@@ -11012,7 +11309,7 @@ function createZustandAuthAdapter(useAuthStore2) {
|
|
|
11012
11309
|
}
|
|
11013
11310
|
|
|
11014
11311
|
// src/components/Auth/useUrlAuthentication.ts
|
|
11015
|
-
var
|
|
11312
|
+
var import_react36 = require("react");
|
|
11016
11313
|
var import_react_router_dom2 = require("react-router-dom");
|
|
11017
11314
|
var getAuthParams = (location, extractParams) => {
|
|
11018
11315
|
const searchParams = new URLSearchParams(location.search);
|
|
@@ -11060,8 +11357,8 @@ var handleUserData = (responseData, setUser) => {
|
|
|
11060
11357
|
};
|
|
11061
11358
|
function useUrlAuthentication(options) {
|
|
11062
11359
|
const location = (0, import_react_router_dom2.useLocation)();
|
|
11063
|
-
const processedRef = (0,
|
|
11064
|
-
(0,
|
|
11360
|
+
const processedRef = (0, import_react36.useRef)(false);
|
|
11361
|
+
(0, import_react36.useEffect)(() => {
|
|
11065
11362
|
const handleAuthentication = async () => {
|
|
11066
11363
|
if (processedRef.current) {
|
|
11067
11364
|
return;
|
|
@@ -11132,9 +11429,9 @@ function useUrlAuthentication(options) {
|
|
|
11132
11429
|
}
|
|
11133
11430
|
|
|
11134
11431
|
// src/components/Auth/useApiConfig.ts
|
|
11135
|
-
var
|
|
11432
|
+
var import_react37 = require("react");
|
|
11136
11433
|
function useApiConfig(api) {
|
|
11137
|
-
return (0,
|
|
11434
|
+
return (0, import_react37.useMemo)(
|
|
11138
11435
|
() => ({
|
|
11139
11436
|
get: (endpoint, config) => api.get(endpoint, config)
|
|
11140
11437
|
}),
|
|
@@ -11144,7 +11441,7 @@ function useApiConfig(api) {
|
|
|
11144
11441
|
|
|
11145
11442
|
// src/components/Quiz/Quiz.tsx
|
|
11146
11443
|
var import_phosphor_react28 = require("phosphor-react");
|
|
11147
|
-
var
|
|
11444
|
+
var import_react40 = require("react");
|
|
11148
11445
|
|
|
11149
11446
|
// src/components/Quiz/useQuizStore.ts
|
|
11150
11447
|
var import_zustand10 = require("zustand");
|
|
@@ -11754,12 +12051,12 @@ var useQuizStore = (0, import_zustand10.create)()(
|
|
|
11754
12051
|
);
|
|
11755
12052
|
|
|
11756
12053
|
// src/components/Quiz/QuizContent.tsx
|
|
11757
|
-
var
|
|
12054
|
+
var import_react39 = require("react");
|
|
11758
12055
|
|
|
11759
12056
|
// src/components/MultipleChoice/MultipleChoice.tsx
|
|
11760
|
-
var
|
|
12057
|
+
var import_react38 = require("react");
|
|
11761
12058
|
var import_phosphor_react26 = require("phosphor-react");
|
|
11762
|
-
var
|
|
12059
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
11763
12060
|
var MultipleChoiceList = ({
|
|
11764
12061
|
disabled = false,
|
|
11765
12062
|
className = "",
|
|
@@ -11769,16 +12066,16 @@ var MultipleChoiceList = ({
|
|
|
11769
12066
|
onHandleSelectedValues,
|
|
11770
12067
|
mode = "interactive"
|
|
11771
12068
|
}) => {
|
|
11772
|
-
const [actualValue, setActualValue] = (0,
|
|
11773
|
-
(0,
|
|
12069
|
+
const [actualValue, setActualValue] = (0, import_react38.useState)(selectedValues);
|
|
12070
|
+
(0, import_react38.useEffect)(() => {
|
|
11774
12071
|
setActualValue(selectedValues);
|
|
11775
12072
|
}, [selectedValues]);
|
|
11776
12073
|
const getStatusBadge2 = (status) => {
|
|
11777
12074
|
switch (status) {
|
|
11778
12075
|
case "correct":
|
|
11779
|
-
return /* @__PURE__ */ (0,
|
|
12076
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_phosphor_react26.CheckCircle, {}), children: "Resposta correta" });
|
|
11780
12077
|
case "incorrect":
|
|
11781
|
-
return /* @__PURE__ */ (0,
|
|
12078
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_phosphor_react26.XCircle, {}), children: "Resposta incorreta" });
|
|
11782
12079
|
default:
|
|
11783
12080
|
return null;
|
|
11784
12081
|
}
|
|
@@ -11799,14 +12096,14 @@ var MultipleChoiceList = ({
|
|
|
11799
12096
|
isSelected ? "border-primary-950 bg-primary-950 text-text" : "border-border-400 bg-background",
|
|
11800
12097
|
isDisabled && "opacity-40 cursor-not-allowed"
|
|
11801
12098
|
);
|
|
11802
|
-
return /* @__PURE__ */ (0,
|
|
12099
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: checkboxClasses, children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_phosphor_react26.Check, { size: 16, weight: "bold" }) });
|
|
11803
12100
|
};
|
|
11804
12101
|
if (mode === "readonly") {
|
|
11805
|
-
return /* @__PURE__ */ (0,
|
|
12102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: cn("flex flex-col gap-2", className), children: choices.map((choice, i) => {
|
|
11806
12103
|
const isSelected = actualValue?.includes(choice.value) || false;
|
|
11807
12104
|
const statusStyles = getStatusStyles2(choice.status);
|
|
11808
12105
|
const statusBadge = getStatusBadge2(choice.status);
|
|
11809
|
-
return /* @__PURE__ */ (0,
|
|
12106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
11810
12107
|
"div",
|
|
11811
12108
|
{
|
|
11812
12109
|
className: cn(
|
|
@@ -11815,9 +12112,9 @@ var MultipleChoiceList = ({
|
|
|
11815
12112
|
choice.disabled ? "opacity-50 cursor-not-allowed" : ""
|
|
11816
12113
|
),
|
|
11817
12114
|
children: [
|
|
11818
|
-
/* @__PURE__ */ (0,
|
|
12115
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
11819
12116
|
renderVisualCheckbox(isSelected, choice.disabled || disabled),
|
|
11820
|
-
/* @__PURE__ */ (0,
|
|
12117
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11821
12118
|
"span",
|
|
11822
12119
|
{
|
|
11823
12120
|
className: cn(
|
|
@@ -11829,14 +12126,14 @@ var MultipleChoiceList = ({
|
|
|
11829
12126
|
}
|
|
11830
12127
|
)
|
|
11831
12128
|
] }),
|
|
11832
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
12129
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
11833
12130
|
]
|
|
11834
12131
|
},
|
|
11835
12132
|
`readonly-${choice.value}-${i}`
|
|
11836
12133
|
);
|
|
11837
12134
|
}) });
|
|
11838
12135
|
}
|
|
11839
|
-
return /* @__PURE__ */ (0,
|
|
12136
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11840
12137
|
"div",
|
|
11841
12138
|
{
|
|
11842
12139
|
className: cn(
|
|
@@ -11844,7 +12141,7 @@ var MultipleChoiceList = ({
|
|
|
11844
12141
|
disabled ? "opacity-50 cursor-not-allowed" : "",
|
|
11845
12142
|
className
|
|
11846
12143
|
),
|
|
11847
|
-
children: /* @__PURE__ */ (0,
|
|
12144
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11848
12145
|
CheckboxList_default,
|
|
11849
12146
|
{
|
|
11850
12147
|
name,
|
|
@@ -11854,12 +12151,12 @@ var MultipleChoiceList = ({
|
|
|
11854
12151
|
onHandleSelectedValues?.(v);
|
|
11855
12152
|
},
|
|
11856
12153
|
disabled,
|
|
11857
|
-
children: choices.map((choice, i) => /* @__PURE__ */ (0,
|
|
12154
|
+
children: choices.map((choice, i) => /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
11858
12155
|
"div",
|
|
11859
12156
|
{
|
|
11860
12157
|
className: "flex flex-row gap-2 items-center",
|
|
11861
12158
|
children: [
|
|
11862
|
-
/* @__PURE__ */ (0,
|
|
12159
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11863
12160
|
CheckboxListItem,
|
|
11864
12161
|
{
|
|
11865
12162
|
value: choice.value,
|
|
@@ -11867,7 +12164,7 @@ var MultipleChoiceList = ({
|
|
|
11867
12164
|
disabled: choice.disabled || disabled
|
|
11868
12165
|
}
|
|
11869
12166
|
),
|
|
11870
|
-
/* @__PURE__ */ (0,
|
|
12167
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11871
12168
|
"label",
|
|
11872
12169
|
{
|
|
11873
12170
|
htmlFor: `interactive-${choice.value}-${i}`,
|
|
@@ -11896,13 +12193,13 @@ var import_phosphor_react27 = require("phosphor-react");
|
|
|
11896
12193
|
var mock_image_question_default = "./mock-image-question-HEZCLFDL.png";
|
|
11897
12194
|
|
|
11898
12195
|
// src/components/Quiz/QuizContent.tsx
|
|
11899
|
-
var
|
|
12196
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
11900
12197
|
var getStatusBadge = (status) => {
|
|
11901
12198
|
switch (status) {
|
|
11902
12199
|
case "correct":
|
|
11903
|
-
return /* @__PURE__ */ (0,
|
|
12200
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_phosphor_react27.CheckCircle, {}), children: "Resposta correta" });
|
|
11904
12201
|
case "incorrect":
|
|
11905
|
-
return /* @__PURE__ */ (0,
|
|
12202
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_phosphor_react27.XCircle, {}), children: "Resposta incorreta" });
|
|
11906
12203
|
default:
|
|
11907
12204
|
return null;
|
|
11908
12205
|
}
|
|
@@ -11915,13 +12212,13 @@ var getStatusStyles = (variantCorrect) => {
|
|
|
11915
12212
|
return "bg-error-background border-error-300";
|
|
11916
12213
|
}
|
|
11917
12214
|
};
|
|
11918
|
-
var QuizSubTitle = (0,
|
|
12215
|
+
var QuizSubTitle = (0, import_react39.forwardRef)(
|
|
11919
12216
|
({ subTitle, ...props }, ref) => {
|
|
11920
|
-
return /* @__PURE__ */ (0,
|
|
12217
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "px-4 pb-2 pt-6", ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "font-bold text-lg text-text-950", children: subTitle }) });
|
|
11921
12218
|
}
|
|
11922
12219
|
);
|
|
11923
|
-
var QuizContainer = (0,
|
|
11924
|
-
return /* @__PURE__ */ (0,
|
|
12220
|
+
var QuizContainer = (0, import_react39.forwardRef)(({ children, className, ...props }, ref) => {
|
|
12221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11925
12222
|
"div",
|
|
11926
12223
|
{
|
|
11927
12224
|
ref,
|
|
@@ -11974,10 +12271,10 @@ var QuizAlternative = ({ paddingBottom }) => {
|
|
|
11974
12271
|
};
|
|
11975
12272
|
});
|
|
11976
12273
|
if (!alternatives)
|
|
11977
|
-
return /* @__PURE__ */ (0,
|
|
11978
|
-
return /* @__PURE__ */ (0,
|
|
11979
|
-
/* @__PURE__ */ (0,
|
|
11980
|
-
/* @__PURE__ */ (0,
|
|
12274
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { children: "N\xE3o h\xE1 Alternativas" }) });
|
|
12275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12276
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
12277
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11981
12278
|
AlternativesList,
|
|
11982
12279
|
{
|
|
11983
12280
|
mode: variant === "default" ? "interactive" : "readonly",
|
|
@@ -12009,15 +12306,15 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
12009
12306
|
const currentQuestionResult = getQuestionResultByQuestionId(
|
|
12010
12307
|
currentQuestion?.id || ""
|
|
12011
12308
|
);
|
|
12012
|
-
const prevSelectedValuesRef = (0,
|
|
12013
|
-
const prevQuestionIdRef = (0,
|
|
12014
|
-
const allCurrentAnswerIds = (0,
|
|
12309
|
+
const prevSelectedValuesRef = (0, import_react39.useRef)([]);
|
|
12310
|
+
const prevQuestionIdRef = (0, import_react39.useRef)("");
|
|
12311
|
+
const allCurrentAnswerIds = (0, import_react39.useMemo)(() => {
|
|
12015
12312
|
return allCurrentAnswers?.map((answer) => answer.optionId) || [];
|
|
12016
12313
|
}, [allCurrentAnswers]);
|
|
12017
|
-
const selectedValues = (0,
|
|
12314
|
+
const selectedValues = (0, import_react39.useMemo)(() => {
|
|
12018
12315
|
return allCurrentAnswerIds?.filter((id) => id !== null) || [];
|
|
12019
12316
|
}, [allCurrentAnswerIds]);
|
|
12020
|
-
const stableSelectedValues = (0,
|
|
12317
|
+
const stableSelectedValues = (0, import_react39.useMemo)(() => {
|
|
12021
12318
|
const currentQuestionId = currentQuestion?.id || "";
|
|
12022
12319
|
const hasQuestionChanged = prevQuestionIdRef.current !== currentQuestionId;
|
|
12023
12320
|
if (hasQuestionChanged) {
|
|
@@ -12041,7 +12338,7 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
12041
12338
|
variant,
|
|
12042
12339
|
currentQuestionResult?.selectedOptions
|
|
12043
12340
|
]);
|
|
12044
|
-
const handleSelectedValues = (0,
|
|
12341
|
+
const handleSelectedValues = (0, import_react39.useCallback)(
|
|
12045
12342
|
(values) => {
|
|
12046
12343
|
if (currentQuestion) {
|
|
12047
12344
|
selectMultipleAnswer(currentQuestion.id, values);
|
|
@@ -12049,7 +12346,7 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
12049
12346
|
},
|
|
12050
12347
|
[currentQuestion, selectMultipleAnswer]
|
|
12051
12348
|
);
|
|
12052
|
-
const questionKey = (0,
|
|
12349
|
+
const questionKey = (0, import_react39.useMemo)(
|
|
12053
12350
|
() => `question-${currentQuestion?.id || "1"}`,
|
|
12054
12351
|
[currentQuestion?.id]
|
|
12055
12352
|
);
|
|
@@ -12080,10 +12377,10 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
12080
12377
|
};
|
|
12081
12378
|
});
|
|
12082
12379
|
if (!choices)
|
|
12083
|
-
return /* @__PURE__ */ (0,
|
|
12084
|
-
return /* @__PURE__ */ (0,
|
|
12085
|
-
/* @__PURE__ */ (0,
|
|
12086
|
-
/* @__PURE__ */ (0,
|
|
12380
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { children: "N\xE3o h\xE1 Escolhas Multiplas" }) });
|
|
12381
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12382
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
12383
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12087
12384
|
MultipleChoiceList,
|
|
12088
12385
|
{
|
|
12089
12386
|
choices,
|
|
@@ -12110,14 +12407,14 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
12110
12407
|
currentQuestion?.id || ""
|
|
12111
12408
|
);
|
|
12112
12409
|
const currentAnswer = getCurrentAnswer();
|
|
12113
|
-
const textareaRef = (0,
|
|
12410
|
+
const textareaRef = (0, import_react39.useRef)(null);
|
|
12114
12411
|
const charLimit = getDissertativeCharLimit();
|
|
12115
12412
|
const handleAnswerChange = (value) => {
|
|
12116
12413
|
if (currentQuestion) {
|
|
12117
12414
|
selectDissertativeAnswer(currentQuestion.id, value);
|
|
12118
12415
|
}
|
|
12119
12416
|
};
|
|
12120
|
-
const adjustTextareaHeight = (0,
|
|
12417
|
+
const adjustTextareaHeight = (0, import_react39.useCallback)(() => {
|
|
12121
12418
|
if (textareaRef.current) {
|
|
12122
12419
|
textareaRef.current.style.height = "auto";
|
|
12123
12420
|
const scrollHeight = textareaRef.current.scrollHeight;
|
|
@@ -12127,16 +12424,16 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
12127
12424
|
textareaRef.current.style.height = `${newHeight}px`;
|
|
12128
12425
|
}
|
|
12129
12426
|
}, []);
|
|
12130
|
-
(0,
|
|
12427
|
+
(0, import_react39.useEffect)(() => {
|
|
12131
12428
|
adjustTextareaHeight();
|
|
12132
12429
|
}, [currentAnswer, adjustTextareaHeight]);
|
|
12133
12430
|
if (!currentQuestion) {
|
|
12134
|
-
return /* @__PURE__ */ (0,
|
|
12431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-600 text-md", children: "Nenhuma quest\xE3o dispon\xEDvel" }) });
|
|
12135
12432
|
}
|
|
12136
12433
|
const localAnswer = (variant == "result" ? currentQuestionResult?.answer : currentAnswer?.answer) || "";
|
|
12137
|
-
return /* @__PURE__ */ (0,
|
|
12138
|
-
/* @__PURE__ */ (0,
|
|
12139
|
-
/* @__PURE__ */ (0,
|
|
12434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12435
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Resposta" }),
|
|
12436
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn(variant != "result" && paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-4 max-h-[600px] overflow-y-auto", children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12140
12437
|
TextArea_default,
|
|
12141
12438
|
{
|
|
12142
12439
|
ref: textareaRef,
|
|
@@ -12148,10 +12445,10 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
12148
12445
|
maxLength: charLimit,
|
|
12149
12446
|
showCharacterCount: !!charLimit
|
|
12150
12447
|
}
|
|
12151
|
-
) }) : /* @__PURE__ */ (0,
|
|
12152
|
-
variant === "result" && currentQuestionResult?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0,
|
|
12153
|
-
/* @__PURE__ */ (0,
|
|
12154
|
-
/* @__PURE__ */ (0,
|
|
12448
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: localAnswer || "Nenhuma resposta fornecida" }) }) }) }),
|
|
12449
|
+
variant === "result" && currentQuestionResult?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12450
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Observa\xE7\xE3o do professor" }),
|
|
12451
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: currentQuestionResult?.teacherFeedback }) })
|
|
12155
12452
|
] })
|
|
12156
12453
|
] });
|
|
12157
12454
|
};
|
|
@@ -12177,16 +12474,16 @@ var QuizTrueOrFalse = ({ paddingBottom }) => {
|
|
|
12177
12474
|
];
|
|
12178
12475
|
const getLetterByIndex = (index) => String.fromCodePoint(97 + index);
|
|
12179
12476
|
const isDefaultVariant = variant === "default";
|
|
12180
|
-
return /* @__PURE__ */ (0,
|
|
12181
|
-
/* @__PURE__ */ (0,
|
|
12182
|
-
/* @__PURE__ */ (0,
|
|
12477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12478
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
12479
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
|
|
12183
12480
|
const variantCorrect = option.isCorrect ? "correct" : "incorrect";
|
|
12184
|
-
return /* @__PURE__ */ (0,
|
|
12481
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12185
12482
|
"section",
|
|
12186
12483
|
{
|
|
12187
12484
|
className: "flex flex-col gap-2",
|
|
12188
12485
|
children: [
|
|
12189
|
-
/* @__PURE__ */ (0,
|
|
12486
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12190
12487
|
"div",
|
|
12191
12488
|
{
|
|
12192
12489
|
className: cn(
|
|
@@ -12194,20 +12491,20 @@ var QuizTrueOrFalse = ({ paddingBottom }) => {
|
|
|
12194
12491
|
isDefaultVariant ? "" : getStatusStyles(variantCorrect)
|
|
12195
12492
|
),
|
|
12196
12493
|
children: [
|
|
12197
|
-
/* @__PURE__ */ (0,
|
|
12198
|
-
isDefaultVariant ? /* @__PURE__ */ (0,
|
|
12199
|
-
/* @__PURE__ */ (0,
|
|
12200
|
-
/* @__PURE__ */ (0,
|
|
12201
|
-
/* @__PURE__ */ (0,
|
|
12202
|
-
/* @__PURE__ */ (0,
|
|
12494
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index).concat(") ").concat(option.label) }),
|
|
12495
|
+
isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Select_default, { size: "medium", children: [
|
|
12496
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectValue, { placeholder: "Selecione opc\xE3o" }) }),
|
|
12497
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(SelectContent, { children: [
|
|
12498
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectItem, { value: "V", children: "Verdadeiro" }),
|
|
12499
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectItem, { value: "F", children: "Falso" })
|
|
12203
12500
|
] })
|
|
12204
|
-
] }) : /* @__PURE__ */ (0,
|
|
12501
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex-shrink-0", children: getStatusBadge(variantCorrect) })
|
|
12205
12502
|
]
|
|
12206
12503
|
}
|
|
12207
12504
|
),
|
|
12208
|
-
!isDefaultVariant && /* @__PURE__ */ (0,
|
|
12209
|
-
/* @__PURE__ */ (0,
|
|
12210
|
-
!option.isCorrect && /* @__PURE__ */ (0,
|
|
12505
|
+
!isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
|
|
12506
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta selecionada: V" }),
|
|
12507
|
+
!option.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta correta: F" })
|
|
12211
12508
|
] })
|
|
12212
12509
|
]
|
|
12213
12510
|
},
|
|
@@ -12268,7 +12565,7 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
12268
12565
|
isCorrect: false
|
|
12269
12566
|
}
|
|
12270
12567
|
];
|
|
12271
|
-
const [userAnswers, setUserAnswers] = (0,
|
|
12568
|
+
const [userAnswers, setUserAnswers] = (0, import_react39.useState)(() => {
|
|
12272
12569
|
if (variant === "result") {
|
|
12273
12570
|
return mockUserAnswers;
|
|
12274
12571
|
}
|
|
@@ -12297,13 +12594,13 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
12297
12594
|
const assignedDots = new Set(
|
|
12298
12595
|
userAnswers.map((a) => a.dotOption).filter(Boolean)
|
|
12299
12596
|
);
|
|
12300
|
-
return /* @__PURE__ */ (0,
|
|
12301
|
-
/* @__PURE__ */ (0,
|
|
12302
|
-
/* @__PURE__ */ (0,
|
|
12597
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12598
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
12599
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
|
|
12303
12600
|
const answer = userAnswers[index];
|
|
12304
12601
|
const variantCorrect = answer.isCorrect ? "correct" : "incorrect";
|
|
12305
|
-
return /* @__PURE__ */ (0,
|
|
12306
|
-
/* @__PURE__ */ (0,
|
|
12602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("section", { className: "flex flex-col gap-2", children: [
|
|
12603
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12307
12604
|
"div",
|
|
12308
12605
|
{
|
|
12309
12606
|
className: cn(
|
|
@@ -12311,30 +12608,30 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
12311
12608
|
isDefaultVariant ? "" : getStatusStyles(variantCorrect)
|
|
12312
12609
|
),
|
|
12313
12610
|
children: [
|
|
12314
|
-
/* @__PURE__ */ (0,
|
|
12315
|
-
isDefaultVariant ? /* @__PURE__ */ (0,
|
|
12611
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index) + ") " + option.label }),
|
|
12612
|
+
isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12316
12613
|
Select_default,
|
|
12317
12614
|
{
|
|
12318
12615
|
size: "medium",
|
|
12319
12616
|
value: answer.dotOption || void 0,
|
|
12320
12617
|
onValueChange: (value) => handleSelectDot(index, value),
|
|
12321
12618
|
children: [
|
|
12322
|
-
/* @__PURE__ */ (0,
|
|
12323
|
-
/* @__PURE__ */ (0,
|
|
12619
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
|
|
12620
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectContent, { children: dotsOptions.filter(
|
|
12324
12621
|
(dot) => !assignedDots.has(dot.label) || answer.dotOption === dot.label
|
|
12325
|
-
).map((dot) => /* @__PURE__ */ (0,
|
|
12622
|
+
).map((dot) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectItem, { value: dot.label, children: dot.label }, dot.label)) })
|
|
12326
12623
|
]
|
|
12327
12624
|
}
|
|
12328
|
-
) : /* @__PURE__ */ (0,
|
|
12625
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex-shrink-0", children: answer.isCorrect === null ? null : getStatusBadge(variantCorrect) })
|
|
12329
12626
|
]
|
|
12330
12627
|
}
|
|
12331
12628
|
),
|
|
12332
|
-
!isDefaultVariant && /* @__PURE__ */ (0,
|
|
12333
|
-
/* @__PURE__ */ (0,
|
|
12629
|
+
!isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
|
|
12630
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("p", { className: "text-text-800 text-2xs", children: [
|
|
12334
12631
|
"Resposta selecionada: ",
|
|
12335
12632
|
answer.dotOption || "Nenhuma"
|
|
12336
12633
|
] }),
|
|
12337
|
-
!answer.isCorrect && /* @__PURE__ */ (0,
|
|
12634
|
+
!answer.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("p", { className: "text-text-800 text-2xs", children: [
|
|
12338
12635
|
"Resposta correta: ",
|
|
12339
12636
|
answer.correctOption
|
|
12340
12637
|
] })
|
|
@@ -12387,8 +12684,8 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
12387
12684
|
isCorrect: true
|
|
12388
12685
|
}
|
|
12389
12686
|
];
|
|
12390
|
-
const [answers, setAnswers] = (0,
|
|
12391
|
-
const baseId = (0,
|
|
12687
|
+
const [answers, setAnswers] = (0, import_react39.useState)({});
|
|
12688
|
+
const baseId = (0, import_react39.useId)();
|
|
12392
12689
|
const getAvailableOptionsForSelect = (selectId) => {
|
|
12393
12690
|
const usedOptions = new Set(
|
|
12394
12691
|
Object.entries(answers).filter(([key]) => key !== selectId).map(([, value]) => value)
|
|
@@ -12403,18 +12700,18 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
12403
12700
|
const mockAnswer = mockUserAnswers.find(
|
|
12404
12701
|
(answer) => answer.selectId === selectId
|
|
12405
12702
|
);
|
|
12406
|
-
return /* @__PURE__ */ (0,
|
|
12703
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: "inline-flex mb-2.5 text-success-600 font-semibold text-md border-b-2 border-success-600", children: mockAnswer?.correctAnswer });
|
|
12407
12704
|
};
|
|
12408
12705
|
const renderDefaultElement = (selectId, startIndex, selectedValue, availableOptionsForThisSelect) => {
|
|
12409
|
-
return /* @__PURE__ */ (0,
|
|
12706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12410
12707
|
Select_default,
|
|
12411
12708
|
{
|
|
12412
12709
|
value: selectedValue,
|
|
12413
12710
|
onValueChange: (value) => handleSelectChange(selectId, value),
|
|
12414
12711
|
className: "inline-flex mb-2.5",
|
|
12415
12712
|
children: [
|
|
12416
|
-
/* @__PURE__ */ (0,
|
|
12417
|
-
/* @__PURE__ */ (0,
|
|
12713
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectTrigger, { className: "inline-flex w-auto min-w-[140px] h-8 mx-1 bg-background border-gray-300", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
|
|
12714
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectContent, { children: availableOptionsForThisSelect.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SelectItem, { value: option, children: option }, `${option}-${index}`)) })
|
|
12418
12715
|
]
|
|
12419
12716
|
},
|
|
12420
12717
|
`${selectId}-${startIndex}`
|
|
@@ -12426,8 +12723,8 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
12426
12723
|
);
|
|
12427
12724
|
if (!mockAnswer) return null;
|
|
12428
12725
|
const action = mockAnswer.isCorrect ? "success" : "error";
|
|
12429
|
-
const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0,
|
|
12430
|
-
return /* @__PURE__ */ (0,
|
|
12726
|
+
const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_phosphor_react27.CheckCircle, {}) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_phosphor_react27.XCircle, {});
|
|
12727
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12431
12728
|
Badge_default,
|
|
12432
12729
|
{
|
|
12433
12730
|
variant: "solid",
|
|
@@ -12435,7 +12732,7 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
12435
12732
|
iconRight: icon,
|
|
12436
12733
|
size: "large",
|
|
12437
12734
|
className: "py-3 w-[180px] justify-between mb-2.5",
|
|
12438
|
-
children: /* @__PURE__ */ (0,
|
|
12735
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-text-900", children: mockAnswer.userAnswer })
|
|
12439
12736
|
},
|
|
12440
12737
|
selectId
|
|
12441
12738
|
);
|
|
@@ -12491,25 +12788,25 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
12491
12788
|
}
|
|
12492
12789
|
return elements;
|
|
12493
12790
|
};
|
|
12494
|
-
return /* @__PURE__ */ (0,
|
|
12495
|
-
/* @__PURE__ */ (0,
|
|
12496
|
-
/* @__PURE__ */ (0,
|
|
12791
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12792
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
12793
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-6 px-4 h-auto", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12497
12794
|
"div",
|
|
12498
12795
|
{
|
|
12499
12796
|
className: cn(
|
|
12500
12797
|
"text-lg text-text-900 leading-8 h-auto",
|
|
12501
12798
|
variant != "result" && paddingBottom
|
|
12502
12799
|
),
|
|
12503
|
-
children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0,
|
|
12800
|
+
children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: element.element }, element.id))
|
|
12504
12801
|
}
|
|
12505
12802
|
) }) }),
|
|
12506
|
-
variant === "result" && /* @__PURE__ */ (0,
|
|
12507
|
-
/* @__PURE__ */ (0,
|
|
12508
|
-
/* @__PURE__ */ (0,
|
|
12803
|
+
variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12804
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Resultado" }),
|
|
12805
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "space-y-6 px-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12509
12806
|
"div",
|
|
12510
12807
|
{
|
|
12511
12808
|
className: cn("text-lg text-text-900 leading-8", paddingBottom),
|
|
12512
|
-
children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0,
|
|
12809
|
+
children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: element.element }, element.id))
|
|
12513
12810
|
}
|
|
12514
12811
|
) }) })
|
|
12515
12812
|
] })
|
|
@@ -12527,7 +12824,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
12527
12824
|
};
|
|
12528
12825
|
const correctRadiusRelative = calculateCorrectRadiusRelative();
|
|
12529
12826
|
const mockUserAnswerRelative = { x: 0.72, y: 0.348 };
|
|
12530
|
-
const [clickPositionRelative, setClickPositionRelative] = (0,
|
|
12827
|
+
const [clickPositionRelative, setClickPositionRelative] = (0, import_react39.useState)(variant == "result" ? mockUserAnswerRelative : null);
|
|
12531
12828
|
const convertToRelativeCoordinates = (x, y, rect) => {
|
|
12532
12829
|
const safeWidth = Math.max(rect.width, 1e-3);
|
|
12533
12830
|
const safeHeight = Math.max(rect.height, 1e-3);
|
|
@@ -12563,36 +12860,36 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
12563
12860
|
}
|
|
12564
12861
|
return "bg-success-600/70 border-white";
|
|
12565
12862
|
};
|
|
12566
|
-
return /* @__PURE__ */ (0,
|
|
12567
|
-
/* @__PURE__ */ (0,
|
|
12568
|
-
/* @__PURE__ */ (0,
|
|
12863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
|
|
12864
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizSubTitle, { subTitle: "Clique na \xE1rea correta" }),
|
|
12865
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12569
12866
|
"div",
|
|
12570
12867
|
{
|
|
12571
12868
|
"data-testid": "quiz-image-container",
|
|
12572
12869
|
className: "space-y-6 p-3 relative inline-block",
|
|
12573
12870
|
children: [
|
|
12574
|
-
variant == "result" && /* @__PURE__ */ (0,
|
|
12871
|
+
variant == "result" && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12575
12872
|
"div",
|
|
12576
12873
|
{
|
|
12577
12874
|
"data-testid": "quiz-legend",
|
|
12578
12875
|
className: "flex items-center gap-4 text-xs",
|
|
12579
12876
|
children: [
|
|
12580
|
-
/* @__PURE__ */ (0,
|
|
12581
|
-
/* @__PURE__ */ (0,
|
|
12582
|
-
/* @__PURE__ */ (0,
|
|
12877
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12878
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-primary/70 border border-[#F8CC2E]" }),
|
|
12879
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "\xC1rea correta" })
|
|
12583
12880
|
] }),
|
|
12584
|
-
/* @__PURE__ */ (0,
|
|
12585
|
-
/* @__PURE__ */ (0,
|
|
12586
|
-
/* @__PURE__ */ (0,
|
|
12881
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12882
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-3 h-3 rounded-full bg-success-600/70 border border-white" }),
|
|
12883
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta correta" })
|
|
12587
12884
|
] }),
|
|
12588
|
-
/* @__PURE__ */ (0,
|
|
12589
|
-
/* @__PURE__ */ (0,
|
|
12590
|
-
/* @__PURE__ */ (0,
|
|
12885
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
12886
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-error/70 border border-white" }),
|
|
12887
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta incorreta" })
|
|
12591
12888
|
] })
|
|
12592
12889
|
]
|
|
12593
12890
|
}
|
|
12594
12891
|
),
|
|
12595
|
-
/* @__PURE__ */ (0,
|
|
12892
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
12596
12893
|
"button",
|
|
12597
12894
|
{
|
|
12598
12895
|
"data-testid": "quiz-image-button",
|
|
@@ -12607,7 +12904,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
12607
12904
|
},
|
|
12608
12905
|
"aria-label": "\xC1rea da imagem interativa",
|
|
12609
12906
|
children: [
|
|
12610
|
-
/* @__PURE__ */ (0,
|
|
12907
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12611
12908
|
"img",
|
|
12612
12909
|
{
|
|
12613
12910
|
"data-testid": "quiz-image",
|
|
@@ -12616,7 +12913,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
12616
12913
|
className: "w-full h-auto rounded-md"
|
|
12617
12914
|
}
|
|
12618
12915
|
),
|
|
12619
|
-
variant === "result" && /* @__PURE__ */ (0,
|
|
12916
|
+
variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12620
12917
|
"div",
|
|
12621
12918
|
{
|
|
12622
12919
|
"data-testid": "quiz-correct-circle",
|
|
@@ -12631,7 +12928,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
12631
12928
|
}
|
|
12632
12929
|
}
|
|
12633
12930
|
),
|
|
12634
|
-
clickPositionRelative && /* @__PURE__ */ (0,
|
|
12931
|
+
clickPositionRelative && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
12635
12932
|
"div",
|
|
12636
12933
|
{
|
|
12637
12934
|
"data-testid": "quiz-user-circle",
|
|
@@ -12656,7 +12953,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
12656
12953
|
};
|
|
12657
12954
|
|
|
12658
12955
|
// src/components/Quiz/Quiz.tsx
|
|
12659
|
-
var
|
|
12956
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
12660
12957
|
var getQuizTypeConfig = (type) => {
|
|
12661
12958
|
const QUIZ_TYPE_CONFIG = {
|
|
12662
12959
|
["SIMULADO" /* SIMULADO */]: {
|
|
@@ -12693,14 +12990,14 @@ var getFinishConfirmationText = (type) => {
|
|
|
12693
12990
|
const config = getQuizTypeConfig(type);
|
|
12694
12991
|
return `Tem certeza que deseja finalizar ${config.article} ${config.label.toLowerCase()}?`;
|
|
12695
12992
|
};
|
|
12696
|
-
var Quiz = (0,
|
|
12993
|
+
var Quiz = (0, import_react40.forwardRef)(({ children, className, variant = "default", ...props }, ref) => {
|
|
12697
12994
|
const { setVariant } = useQuizStore();
|
|
12698
|
-
(0,
|
|
12995
|
+
(0, import_react40.useEffect)(() => {
|
|
12699
12996
|
setVariant(variant);
|
|
12700
12997
|
}, [variant, setVariant]);
|
|
12701
|
-
return /* @__PURE__ */ (0,
|
|
12998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { ref, className: cn("flex flex-col", className), ...props, children });
|
|
12702
12999
|
});
|
|
12703
|
-
var QuizTitle = (0,
|
|
13000
|
+
var QuizTitle = (0, import_react40.forwardRef)(({ className, onBack, ...props }, ref) => {
|
|
12704
13001
|
const {
|
|
12705
13002
|
quiz,
|
|
12706
13003
|
currentQuestionIndex,
|
|
@@ -12710,7 +13007,7 @@ var QuizTitle = (0, import_react39.forwardRef)(({ className, onBack, ...props },
|
|
|
12710
13007
|
formatTime: formatTime2,
|
|
12711
13008
|
isStarted
|
|
12712
13009
|
} = useQuizStore();
|
|
12713
|
-
const [showExitConfirmation, setShowExitConfirmation] = (0,
|
|
13010
|
+
const [showExitConfirmation, setShowExitConfirmation] = (0, import_react40.useState)(false);
|
|
12714
13011
|
const totalQuestions = getTotalQuestions();
|
|
12715
13012
|
const quizTitle = getQuizTitle();
|
|
12716
13013
|
const handleBackClick = () => {
|
|
@@ -12734,8 +13031,8 @@ var QuizTitle = (0, import_react39.forwardRef)(({ className, onBack, ...props },
|
|
|
12734
13031
|
const handleCancelExit = () => {
|
|
12735
13032
|
setShowExitConfirmation(false);
|
|
12736
13033
|
};
|
|
12737
|
-
return /* @__PURE__ */ (0,
|
|
12738
|
-
/* @__PURE__ */ (0,
|
|
13034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
13035
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
12739
13036
|
"div",
|
|
12740
13037
|
{
|
|
12741
13038
|
ref,
|
|
@@ -12745,24 +13042,24 @@ var QuizTitle = (0, import_react39.forwardRef)(({ className, onBack, ...props },
|
|
|
12745
13042
|
),
|
|
12746
13043
|
...props,
|
|
12747
13044
|
children: [
|
|
12748
|
-
/* @__PURE__ */ (0,
|
|
13045
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12749
13046
|
IconButton_default,
|
|
12750
13047
|
{
|
|
12751
|
-
icon: /* @__PURE__ */ (0,
|
|
13048
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react28.CaretLeft, { size: 24 }),
|
|
12752
13049
|
size: "md",
|
|
12753
13050
|
"aria-label": "Voltar",
|
|
12754
13051
|
onClick: handleBackClick
|
|
12755
13052
|
}
|
|
12756
13053
|
),
|
|
12757
|
-
/* @__PURE__ */ (0,
|
|
12758
|
-
/* @__PURE__ */ (0,
|
|
12759
|
-
/* @__PURE__ */ (0,
|
|
13054
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "flex flex-col gap-2 text-center", children: [
|
|
13055
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-950 font-bold text-md", children: quizTitle }),
|
|
13056
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-600 text-xs", children: totalQuestions > 0 ? `${currentQuestionIndex + 1} de ${totalQuestions}` : "0 de 0" })
|
|
12760
13057
|
] }),
|
|
12761
|
-
/* @__PURE__ */ (0,
|
|
13058
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "flex flex-row items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Badge_default, { variant: "outlined", action: "info", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react28.Clock, {}), children: isStarted ? formatTime2(timeElapsed) : "00:00" }) })
|
|
12762
13059
|
]
|
|
12763
13060
|
}
|
|
12764
13061
|
),
|
|
12765
|
-
/* @__PURE__ */ (0,
|
|
13062
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12766
13063
|
AlertDialog,
|
|
12767
13064
|
{
|
|
12768
13065
|
isOpen: showExitConfirmation,
|
|
@@ -12782,7 +13079,7 @@ var QuizHeader = () => {
|
|
|
12782
13079
|
const currentQuestion = getCurrentQuestion();
|
|
12783
13080
|
let currentId = currentQuestion && "questionId" in currentQuestion ? currentQuestion.questionId : currentQuestion?.id;
|
|
12784
13081
|
const questionIndex = getQuestionIndex(currentId);
|
|
12785
|
-
return /* @__PURE__ */ (0,
|
|
13082
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12786
13083
|
HeaderAlternative,
|
|
12787
13084
|
{
|
|
12788
13085
|
title: currentQuestion ? `Quest\xE3o ${questionIndex.toString().padStart(2, "0")}` : "Quest\xE3o",
|
|
@@ -12804,7 +13101,7 @@ var QuizContent = ({ paddingBottom }) => {
|
|
|
12804
13101
|
["IMAGEM" /* IMAGEM */]: QuizImageQuestion
|
|
12805
13102
|
};
|
|
12806
13103
|
const QuestionComponent = currentQuestion ? questionComponents[currentQuestion.questionType] : null;
|
|
12807
|
-
return QuestionComponent ? /* @__PURE__ */ (0,
|
|
13104
|
+
return QuestionComponent ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(QuestionComponent, { paddingBottom }) : null;
|
|
12808
13105
|
};
|
|
12809
13106
|
var QuizQuestionList = ({
|
|
12810
13107
|
filterType = "all",
|
|
@@ -12851,18 +13148,18 @@ var QuizQuestionList = ({
|
|
|
12851
13148
|
return "Em branco";
|
|
12852
13149
|
}
|
|
12853
13150
|
};
|
|
12854
|
-
return /* @__PURE__ */ (0,
|
|
12855
|
-
Object.entries(filteredGroupedQuestions).length == 0 && /* @__PURE__ */ (0,
|
|
13151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "space-y-6 px-4 h-full", children: [
|
|
13152
|
+
Object.entries(filteredGroupedQuestions).length == 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex items-center justify-center text-gray-500 py-8 h-full", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-lg", children: "Nenhum resultado" }) }),
|
|
12856
13153
|
Object.entries(filteredGroupedQuestions).map(
|
|
12857
|
-
([subjectId, questions]) => /* @__PURE__ */ (0,
|
|
12858
|
-
/* @__PURE__ */ (0,
|
|
12859
|
-
/* @__PURE__ */ (0,
|
|
12860
|
-
/* @__PURE__ */ (0,
|
|
13154
|
+
([subjectId, questions]) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("section", { className: "flex flex-col gap-2", children: [
|
|
13155
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "pt-6 pb-4 flex flex-row gap-2", children: [
|
|
13156
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "bg-primary-500 p-1 rounded-sm flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react28.BookOpen, { size: 17, className: "text-white" }) }),
|
|
13157
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-800 font-bold text-lg", children: questions?.[0]?.knowledgeMatrix?.[0]?.subject?.name ?? "Sem mat\xE9ria" })
|
|
12861
13158
|
] }),
|
|
12862
|
-
/* @__PURE__ */ (0,
|
|
13159
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("ul", { className: "flex flex-col gap-2", children: questions.map((question) => {
|
|
12863
13160
|
const status = getQuestionStatus(question.id);
|
|
12864
13161
|
const questionNumber = getQuestionIndex(question.id);
|
|
12865
|
-
return /* @__PURE__ */ (0,
|
|
13162
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12866
13163
|
CardStatus,
|
|
12867
13164
|
{
|
|
12868
13165
|
header: `Quest\xE3o ${questionNumber.toString().padStart(2, "0")}`,
|
|
@@ -12879,7 +13176,7 @@ var QuizQuestionList = ({
|
|
|
12879
13176
|
)
|
|
12880
13177
|
] });
|
|
12881
13178
|
};
|
|
12882
|
-
var QuizFooter = (0,
|
|
13179
|
+
var QuizFooter = (0, import_react40.forwardRef)(
|
|
12883
13180
|
({
|
|
12884
13181
|
className,
|
|
12885
13182
|
onGoToSimulated,
|
|
@@ -12913,8 +13210,8 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
12913
13210
|
const currentAnswer = getCurrentAnswer();
|
|
12914
13211
|
const currentQuestion = getCurrentQuestion();
|
|
12915
13212
|
const isCurrentQuestionSkipped = currentQuestion ? getQuestionStatusFromUserAnswers(currentQuestion.id) === "skipped" : false;
|
|
12916
|
-
const [activeModal, setActiveModal] = (0,
|
|
12917
|
-
const [filterType, setFilterType] = (0,
|
|
13213
|
+
const [activeModal, setActiveModal] = (0, import_react40.useState)(null);
|
|
13214
|
+
const [filterType, setFilterType] = (0, import_react40.useState)("all");
|
|
12918
13215
|
const openModal = (modalName) => setActiveModal(modalName);
|
|
12919
13216
|
const closeModal = () => setActiveModal(null);
|
|
12920
13217
|
const isModalOpen = (modalName) => activeModal === modalName;
|
|
@@ -12969,8 +13266,8 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
12969
13266
|
return;
|
|
12970
13267
|
}
|
|
12971
13268
|
};
|
|
12972
|
-
return /* @__PURE__ */ (0,
|
|
12973
|
-
/* @__PURE__ */ (0,
|
|
13269
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
13270
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12974
13271
|
"footer",
|
|
12975
13272
|
{
|
|
12976
13273
|
ref,
|
|
@@ -12979,17 +13276,17 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
12979
13276
|
className
|
|
12980
13277
|
),
|
|
12981
13278
|
...props,
|
|
12982
|
-
children: variant === "default" ? /* @__PURE__ */ (0,
|
|
12983
|
-
/* @__PURE__ */ (0,
|
|
12984
|
-
/* @__PURE__ */ (0,
|
|
13279
|
+
children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
13280
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [
|
|
13281
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12985
13282
|
IconButton_default,
|
|
12986
13283
|
{
|
|
12987
|
-
icon: /* @__PURE__ */ (0,
|
|
13284
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react28.SquaresFour, { size: 24, className: "text-text-950" }),
|
|
12988
13285
|
size: "md",
|
|
12989
13286
|
onClick: () => openModal("modalNavigate")
|
|
12990
13287
|
}
|
|
12991
13288
|
),
|
|
12992
|
-
isFirstQuestion ? /* @__PURE__ */ (0,
|
|
13289
|
+
isFirstQuestion ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
12993
13290
|
Button_default,
|
|
12994
13291
|
{
|
|
12995
13292
|
variant: "outline",
|
|
@@ -13000,13 +13297,13 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13000
13297
|
},
|
|
13001
13298
|
children: "Pular"
|
|
13002
13299
|
}
|
|
13003
|
-
) : /* @__PURE__ */ (0,
|
|
13300
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13004
13301
|
Button_default,
|
|
13005
13302
|
{
|
|
13006
13303
|
size: "medium",
|
|
13007
13304
|
variant: "link",
|
|
13008
13305
|
action: "primary",
|
|
13009
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
13306
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react28.CaretLeft, { size: 18 }),
|
|
13010
13307
|
onClick: () => {
|
|
13011
13308
|
goToPreviousQuestion();
|
|
13012
13309
|
},
|
|
@@ -13014,7 +13311,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13014
13311
|
}
|
|
13015
13312
|
)
|
|
13016
13313
|
] }),
|
|
13017
|
-
!isFirstQuestion && !isLastQuestion && /* @__PURE__ */ (0,
|
|
13314
|
+
!isFirstQuestion && !isLastQuestion && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13018
13315
|
Button_default,
|
|
13019
13316
|
{
|
|
13020
13317
|
size: "small",
|
|
@@ -13027,7 +13324,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13027
13324
|
children: "Pular"
|
|
13028
13325
|
}
|
|
13029
13326
|
),
|
|
13030
|
-
isLastQuestion ? /* @__PURE__ */ (0,
|
|
13327
|
+
isLastQuestion ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13031
13328
|
Button_default,
|
|
13032
13329
|
{
|
|
13033
13330
|
size: "medium",
|
|
@@ -13036,13 +13333,13 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13036
13333
|
onClick: handleFinishQuiz,
|
|
13037
13334
|
children: "Finalizar"
|
|
13038
13335
|
}
|
|
13039
|
-
) : /* @__PURE__ */ (0,
|
|
13336
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13040
13337
|
Button_default,
|
|
13041
13338
|
{
|
|
13042
13339
|
size: "medium",
|
|
13043
13340
|
variant: "link",
|
|
13044
13341
|
action: "primary",
|
|
13045
|
-
iconRight: /* @__PURE__ */ (0,
|
|
13342
|
+
iconRight: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react28.CaretRight, { size: 18 }),
|
|
13046
13343
|
disabled: !currentAnswer && !isCurrentQuestionSkipped,
|
|
13047
13344
|
onClick: () => {
|
|
13048
13345
|
goToNextQuestion();
|
|
@@ -13050,7 +13347,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13050
13347
|
children: "Avan\xE7ar"
|
|
13051
13348
|
}
|
|
13052
13349
|
)
|
|
13053
|
-
] }) : /* @__PURE__ */ (0,
|
|
13350
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex flex-row items-center justify-center w-full", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13054
13351
|
Button_default,
|
|
13055
13352
|
{
|
|
13056
13353
|
variant: "link",
|
|
@@ -13062,7 +13359,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13062
13359
|
) })
|
|
13063
13360
|
}
|
|
13064
13361
|
),
|
|
13065
|
-
/* @__PURE__ */ (0,
|
|
13362
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13066
13363
|
AlertDialog,
|
|
13067
13364
|
{
|
|
13068
13365
|
isOpen: isModalOpen("alertDialog"),
|
|
@@ -13074,7 +13371,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13074
13371
|
onSubmit: handleAlertSubmit
|
|
13075
13372
|
}
|
|
13076
13373
|
),
|
|
13077
|
-
/* @__PURE__ */ (0,
|
|
13374
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13078
13375
|
Modal_default,
|
|
13079
13376
|
{
|
|
13080
13377
|
isOpen: isModalOpen("modalResult"),
|
|
@@ -13083,11 +13380,11 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13083
13380
|
closeOnEscape: false,
|
|
13084
13381
|
hideCloseButton: true,
|
|
13085
13382
|
size: "md",
|
|
13086
|
-
children: /* @__PURE__ */ (0,
|
|
13087
|
-
resultImageComponent ? /* @__PURE__ */ (0,
|
|
13088
|
-
/* @__PURE__ */ (0,
|
|
13089
|
-
/* @__PURE__ */ (0,
|
|
13090
|
-
/* @__PURE__ */ (0,
|
|
13383
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
|
|
13384
|
+
resultImageComponent ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-[282px] h-auto", children: resultImageComponent }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-gray-500 text-sm", children: "Imagem de resultado" }) }),
|
|
13385
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
|
|
13386
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: getCompletionTitle(quizType) }),
|
|
13387
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { className: "text-text-500 font-sm", children: [
|
|
13091
13388
|
"Voc\xEA acertou ",
|
|
13092
13389
|
correctAnswers ?? "--",
|
|
13093
13390
|
" de ",
|
|
@@ -13096,8 +13393,8 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13096
13393
|
"quest\xF5es."
|
|
13097
13394
|
] })
|
|
13098
13395
|
] }),
|
|
13099
|
-
/* @__PURE__ */ (0,
|
|
13100
|
-
/* @__PURE__ */ (0,
|
|
13396
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "px-6 flex flex-row items-center gap-2 w-full", children: [
|
|
13397
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13101
13398
|
Button_default,
|
|
13102
13399
|
{
|
|
13103
13400
|
variant: "outline",
|
|
@@ -13107,38 +13404,38 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13107
13404
|
children: quizTypeLabel === "Question\xE1rio" ? "Ir para aulas" : `Ir para ${quizTypeLabel.toLocaleLowerCase()}s`
|
|
13108
13405
|
}
|
|
13109
13406
|
),
|
|
13110
|
-
/* @__PURE__ */ (0,
|
|
13407
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button_default, { className: "w-full", onClick: onDetailResult, children: "Detalhar resultado" })
|
|
13111
13408
|
] })
|
|
13112
13409
|
] })
|
|
13113
13410
|
}
|
|
13114
13411
|
),
|
|
13115
|
-
/* @__PURE__ */ (0,
|
|
13412
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13116
13413
|
Modal_default,
|
|
13117
13414
|
{
|
|
13118
13415
|
isOpen: isModalOpen("modalNavigate"),
|
|
13119
13416
|
onClose: closeModal,
|
|
13120
13417
|
title: "Quest\xF5es",
|
|
13121
13418
|
size: "lg",
|
|
13122
|
-
children: /* @__PURE__ */ (0,
|
|
13123
|
-
/* @__PURE__ */ (0,
|
|
13124
|
-
/* @__PURE__ */ (0,
|
|
13125
|
-
/* @__PURE__ */ (0,
|
|
13126
|
-
/* @__PURE__ */ (0,
|
|
13419
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col w-full not-lg:h-[calc(100vh-200px)] lg:max-h-[687px] lg:h-[687px]", children: [
|
|
13420
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-row justify-between items-center py-6 pt-6 pb-4 border-b border-border-200 flex-shrink-0", children: [
|
|
13421
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Filtrar por" }),
|
|
13422
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "max-w-[266px]", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Select_default, { value: filterType, onValueChange: setFilterType, children: [
|
|
13423
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13127
13424
|
SelectTrigger,
|
|
13128
13425
|
{
|
|
13129
13426
|
variant: "rounded",
|
|
13130
13427
|
className: "max-w-[266px] min-w-[160px]",
|
|
13131
|
-
children: /* @__PURE__ */ (0,
|
|
13428
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SelectValue, { placeholder: "Selecione uma op\xE7\xE3o" })
|
|
13132
13429
|
}
|
|
13133
13430
|
),
|
|
13134
|
-
/* @__PURE__ */ (0,
|
|
13135
|
-
/* @__PURE__ */ (0,
|
|
13136
|
-
/* @__PURE__ */ (0,
|
|
13137
|
-
/* @__PURE__ */ (0,
|
|
13431
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(SelectContent, { children: [
|
|
13432
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SelectItem, { value: "all", children: "Todas" }),
|
|
13433
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SelectItem, { value: "unanswered", children: "Em branco" }),
|
|
13434
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(SelectItem, { value: "answered", children: "Respondidas" })
|
|
13138
13435
|
] })
|
|
13139
13436
|
] }) })
|
|
13140
13437
|
] }),
|
|
13141
|
-
/* @__PURE__ */ (0,
|
|
13438
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex flex-col gap-2 flex-1 min-h-0 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13142
13439
|
QuizQuestionList,
|
|
13143
13440
|
{
|
|
13144
13441
|
filterType,
|
|
@@ -13148,7 +13445,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13148
13445
|
] })
|
|
13149
13446
|
}
|
|
13150
13447
|
),
|
|
13151
|
-
/* @__PURE__ */ (0,
|
|
13448
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13152
13449
|
Modal_default,
|
|
13153
13450
|
{
|
|
13154
13451
|
isOpen: isModalOpen("modalResolution"),
|
|
@@ -13158,7 +13455,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13158
13455
|
children: currentQuestion?.solutionExplanation
|
|
13159
13456
|
}
|
|
13160
13457
|
),
|
|
13161
|
-
/* @__PURE__ */ (0,
|
|
13458
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13162
13459
|
Modal_default,
|
|
13163
13460
|
{
|
|
13164
13461
|
isOpen: isModalOpen("modalQuestionnaireAllCorrect"),
|
|
@@ -13167,17 +13464,17 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13167
13464
|
closeOnEscape: false,
|
|
13168
13465
|
hideCloseButton: true,
|
|
13169
13466
|
size: "md",
|
|
13170
|
-
children: /* @__PURE__ */ (0,
|
|
13171
|
-
resultImageComponent ? /* @__PURE__ */ (0,
|
|
13172
|
-
/* @__PURE__ */ (0,
|
|
13173
|
-
/* @__PURE__ */ (0,
|
|
13174
|
-
/* @__PURE__ */ (0,
|
|
13467
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
|
|
13468
|
+
resultImageComponent ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-[282px] h-auto", children: resultImageComponent }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-gray-500 text-sm", children: "Imagem de resultado" }) }),
|
|
13469
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
|
|
13470
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: "\u{1F389} Parab\xE9ns!" }),
|
|
13471
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-500 font-sm", children: "Voc\xEA concluiu o m\xF3dulo Movimento Uniforme." })
|
|
13175
13472
|
] }),
|
|
13176
|
-
/* @__PURE__ */ (0,
|
|
13473
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "px-6 flex flex-row items-center gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button_default, { className: "w-full", onClick: onGoToNextModule, children: "Pr\xF3ximo m\xF3dulo" }) })
|
|
13177
13474
|
] })
|
|
13178
13475
|
}
|
|
13179
13476
|
),
|
|
13180
|
-
/* @__PURE__ */ (0,
|
|
13477
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13181
13478
|
Modal_default,
|
|
13182
13479
|
{
|
|
13183
13480
|
isOpen: isModalOpen("modalQuestionnaireAllIncorrect"),
|
|
@@ -13186,16 +13483,16 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13186
13483
|
closeOnEscape: false,
|
|
13187
13484
|
hideCloseButton: true,
|
|
13188
13485
|
size: "md",
|
|
13189
|
-
children: /* @__PURE__ */ (0,
|
|
13190
|
-
resultIncorrectImageComponent ? /* @__PURE__ */ (0,
|
|
13191
|
-
/* @__PURE__ */ (0,
|
|
13192
|
-
/* @__PURE__ */ (0,
|
|
13193
|
-
/* @__PURE__ */ (0,
|
|
13194
|
-
/* @__PURE__ */ (0,
|
|
13195
|
-
/* @__PURE__ */ (0,
|
|
13486
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
|
|
13487
|
+
resultIncorrectImageComponent ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-[282px] h-auto", children: resultIncorrectImageComponent }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-gray-500 text-sm", children: "Imagem de resultado" }) }),
|
|
13488
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
|
|
13489
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: "\u{1F615} N\xE3o foi dessa vez..." }),
|
|
13490
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-500 font-sm", children: "Voc\xEA tirou 0 no question\xE1rio, mas n\xE3o se preocupe! Isso \xE9 apenas uma oportunidade de aprendizado." }),
|
|
13491
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-500 font-sm", children: "Que tal tentar novamente para melhorar sua nota? Estamos aqui para te ajudar a entender o conte\xFAdo e evoluir." }),
|
|
13492
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-text-500 font-sm", children: "Clique em Repetir Question\xE1rio e mostre do que voc\xEA \xE9 capaz! \u{1F4AA}" })
|
|
13196
13493
|
] }),
|
|
13197
|
-
/* @__PURE__ */ (0,
|
|
13198
|
-
/* @__PURE__ */ (0,
|
|
13494
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-row justify-center items-center gap-2 w-full", children: [
|
|
13495
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13199
13496
|
Button_default,
|
|
13200
13497
|
{
|
|
13201
13498
|
type: "button",
|
|
@@ -13209,7 +13506,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13209
13506
|
children: "Tentar depois"
|
|
13210
13507
|
}
|
|
13211
13508
|
),
|
|
13212
|
-
/* @__PURE__ */ (0,
|
|
13509
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13213
13510
|
Button_default,
|
|
13214
13511
|
{
|
|
13215
13512
|
variant: "outline",
|
|
@@ -13219,7 +13516,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13219
13516
|
children: "Detalhar resultado"
|
|
13220
13517
|
}
|
|
13221
13518
|
),
|
|
13222
|
-
/* @__PURE__ */ (0,
|
|
13519
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13223
13520
|
Button_default,
|
|
13224
13521
|
{
|
|
13225
13522
|
className: "w-auto",
|
|
@@ -13232,7 +13529,7 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13232
13529
|
] })
|
|
13233
13530
|
}
|
|
13234
13531
|
),
|
|
13235
|
-
/* @__PURE__ */ (0,
|
|
13532
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13236
13533
|
AlertDialog,
|
|
13237
13534
|
{
|
|
13238
13535
|
isOpen: isModalOpen("alertDialogTryLater"),
|
|
@@ -13256,37 +13553,37 @@ var QuizFooter = (0, import_react39.forwardRef)(
|
|
|
13256
13553
|
);
|
|
13257
13554
|
|
|
13258
13555
|
// src/components/Quiz/QuizResult.tsx
|
|
13259
|
-
var
|
|
13556
|
+
var import_react41 = require("react");
|
|
13260
13557
|
var import_phosphor_react29 = require("phosphor-react");
|
|
13261
|
-
var
|
|
13558
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
13262
13559
|
var QuizBadge = ({
|
|
13263
13560
|
subtype
|
|
13264
13561
|
}) => {
|
|
13265
13562
|
switch (subtype) {
|
|
13266
13563
|
case "PROVA" /* PROVA */:
|
|
13267
|
-
return /* @__PURE__ */ (0,
|
|
13564
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge_default, { variant: "examsOutlined", action: "exam2", "data-testid": "quiz-badge", children: "Prova" });
|
|
13268
13565
|
case "ENEM_PROVA_1" /* ENEM_PROVA_1 */:
|
|
13269
13566
|
case "ENEM_PROVA_2" /* ENEM_PROVA_2 */:
|
|
13270
|
-
return /* @__PURE__ */ (0,
|
|
13567
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge_default, { variant: "examsOutlined", action: "exam1", "data-testid": "quiz-badge", children: "Enem" });
|
|
13271
13568
|
case "VESTIBULAR" /* VESTIBULAR */:
|
|
13272
|
-
return /* @__PURE__ */ (0,
|
|
13569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge_default, { variant: "examsOutlined", action: "exam4", "data-testid": "quiz-badge", children: "Vestibular" });
|
|
13273
13570
|
case "SIMULADO" /* SIMULADO */:
|
|
13274
13571
|
case "SIMULADAO" /* SIMULADAO */:
|
|
13275
13572
|
case void 0:
|
|
13276
|
-
return /* @__PURE__ */ (0,
|
|
13573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge_default, { variant: "examsOutlined", action: "exam3", "data-testid": "quiz-badge", children: "Simulad\xE3o" });
|
|
13277
13574
|
default:
|
|
13278
|
-
return /* @__PURE__ */ (0,
|
|
13575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge_default, { variant: "solid", action: "info", "data-testid": "quiz-badge", children: subtype });
|
|
13279
13576
|
}
|
|
13280
13577
|
};
|
|
13281
|
-
var QuizHeaderResult = (0,
|
|
13578
|
+
var QuizHeaderResult = (0, import_react41.forwardRef)(
|
|
13282
13579
|
({ className, ...props }, ref) => {
|
|
13283
13580
|
const {
|
|
13284
13581
|
getQuestionResultByQuestionId,
|
|
13285
13582
|
getCurrentQuestion,
|
|
13286
13583
|
questionsResult
|
|
13287
13584
|
} = useQuizStore();
|
|
13288
|
-
const [status, setStatus] = (0,
|
|
13289
|
-
(0,
|
|
13585
|
+
const [status, setStatus] = (0, import_react41.useState)(void 0);
|
|
13586
|
+
(0, import_react41.useEffect)(() => {
|
|
13290
13587
|
const cq = getCurrentQuestion();
|
|
13291
13588
|
if (!cq) {
|
|
13292
13589
|
setStatus(void 0);
|
|
@@ -13332,7 +13629,7 @@ var QuizHeaderResult = (0, import_react40.forwardRef)(
|
|
|
13332
13629
|
return "N\xE3o foi dessa vez...voc\xEA deixou a resposta em branco";
|
|
13333
13630
|
}
|
|
13334
13631
|
};
|
|
13335
|
-
return /* @__PURE__ */ (0,
|
|
13632
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
13336
13633
|
"div",
|
|
13337
13634
|
{
|
|
13338
13635
|
ref,
|
|
@@ -13343,16 +13640,16 @@ var QuizHeaderResult = (0, import_react40.forwardRef)(
|
|
|
13343
13640
|
),
|
|
13344
13641
|
...props,
|
|
13345
13642
|
children: [
|
|
13346
|
-
/* @__PURE__ */ (0,
|
|
13347
|
-
/* @__PURE__ */ (0,
|
|
13643
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Resultado" }),
|
|
13644
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-text-700 text-md", children: getLabelByAnswersStatus() })
|
|
13348
13645
|
]
|
|
13349
13646
|
}
|
|
13350
13647
|
);
|
|
13351
13648
|
}
|
|
13352
13649
|
);
|
|
13353
|
-
var QuizResultHeaderTitle = (0,
|
|
13650
|
+
var QuizResultHeaderTitle = (0, import_react41.forwardRef)(({ className, showBadge = true, onRepeat, canRetry, ...props }, ref) => {
|
|
13354
13651
|
const { quiz } = useQuizStore();
|
|
13355
|
-
return /* @__PURE__ */ (0,
|
|
13652
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
13356
13653
|
"div",
|
|
13357
13654
|
{
|
|
13358
13655
|
ref,
|
|
@@ -13362,9 +13659,9 @@ var QuizResultHeaderTitle = (0, import_react40.forwardRef)(({ className, showBad
|
|
|
13362
13659
|
),
|
|
13363
13660
|
...props,
|
|
13364
13661
|
children: [
|
|
13365
|
-
/* @__PURE__ */ (0,
|
|
13366
|
-
/* @__PURE__ */ (0,
|
|
13367
|
-
canRetry && onRepeat && /* @__PURE__ */ (0,
|
|
13662
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: "Resultado" }),
|
|
13663
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-row gap-3 items-center", children: [
|
|
13664
|
+
canRetry && onRepeat && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13368
13665
|
Button_default,
|
|
13369
13666
|
{
|
|
13370
13667
|
variant: "solid",
|
|
@@ -13374,16 +13671,16 @@ var QuizResultHeaderTitle = (0, import_react40.forwardRef)(({ className, showBad
|
|
|
13374
13671
|
children: "Repetir question\xE1rio"
|
|
13375
13672
|
}
|
|
13376
13673
|
),
|
|
13377
|
-
showBadge && /* @__PURE__ */ (0,
|
|
13674
|
+
showBadge && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(QuizBadge, { subtype: quiz?.subtype || void 0 })
|
|
13378
13675
|
] })
|
|
13379
13676
|
]
|
|
13380
13677
|
}
|
|
13381
13678
|
);
|
|
13382
13679
|
});
|
|
13383
|
-
var QuizResultTitle = (0,
|
|
13680
|
+
var QuizResultTitle = (0, import_react41.forwardRef)(({ className, ...props }, ref) => {
|
|
13384
13681
|
const { getQuizTitle } = useQuizStore();
|
|
13385
13682
|
const quizTitle = getQuizTitle();
|
|
13386
|
-
return /* @__PURE__ */ (0,
|
|
13683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13387
13684
|
"p",
|
|
13388
13685
|
{
|
|
13389
13686
|
className: cn("pt-6 pb-4 text-text-950 font-bold text-lg", className),
|
|
@@ -13424,7 +13721,7 @@ var calculateAnswerStatistics = (answers) => {
|
|
|
13424
13721
|
}
|
|
13425
13722
|
return stats;
|
|
13426
13723
|
};
|
|
13427
|
-
var QuizResultPerformance = (0,
|
|
13724
|
+
var QuizResultPerformance = (0, import_react41.forwardRef)(({ showDetails = true, ...props }, ref) => {
|
|
13428
13725
|
const {
|
|
13429
13726
|
getTotalQuestions,
|
|
13430
13727
|
formatTime: formatTime2,
|
|
@@ -13444,7 +13741,7 @@ var QuizResultPerformance = (0, import_react40.forwardRef)(({ showDetails = true
|
|
|
13444
13741
|
};
|
|
13445
13742
|
const percentage = totalQuestions > 0 ? Math.round(stats.correctAnswers / totalQuestions * 100) : 0;
|
|
13446
13743
|
const classesJustifyBetween = showDetails ? "justify-between" : "justify-center";
|
|
13447
|
-
return /* @__PURE__ */ (0,
|
|
13744
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
13448
13745
|
"div",
|
|
13449
13746
|
{
|
|
13450
13747
|
className: cn(
|
|
@@ -13454,8 +13751,8 @@ var QuizResultPerformance = (0, import_react40.forwardRef)(({ showDetails = true
|
|
|
13454
13751
|
ref,
|
|
13455
13752
|
...props,
|
|
13456
13753
|
children: [
|
|
13457
|
-
/* @__PURE__ */ (0,
|
|
13458
|
-
/* @__PURE__ */ (0,
|
|
13754
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "relative", children: [
|
|
13755
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13459
13756
|
ProgressCircle_default,
|
|
13460
13757
|
{
|
|
13461
13758
|
size: "medium",
|
|
@@ -13465,24 +13762,24 @@ var QuizResultPerformance = (0, import_react40.forwardRef)(({ showDetails = true
|
|
|
13465
13762
|
label: ""
|
|
13466
13763
|
}
|
|
13467
13764
|
),
|
|
13468
|
-
/* @__PURE__ */ (0,
|
|
13469
|
-
showDetails && /* @__PURE__ */ (0,
|
|
13470
|
-
/* @__PURE__ */ (0,
|
|
13471
|
-
/* @__PURE__ */ (0,
|
|
13765
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "absolute inset-0 flex flex-col items-center justify-center", children: [
|
|
13766
|
+
showDetails && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-1 mb-1", children: [
|
|
13767
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_phosphor_react29.Clock, { size: 12, weight: "regular", className: "text-text-800" }),
|
|
13768
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-2xs font-medium text-text-800", children: formatTime2(
|
|
13472
13769
|
(getQuestionResultStatistics()?.timeSpent ?? 0) * 60
|
|
13473
13770
|
) })
|
|
13474
13771
|
] }),
|
|
13475
|
-
/* @__PURE__ */ (0,
|
|
13772
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "text-2xl font-medium text-text-800 leading-7", children: [
|
|
13476
13773
|
getQuestionResultStatistics()?.correctAnswers ?? "--",
|
|
13477
13774
|
" de",
|
|
13478
13775
|
" ",
|
|
13479
13776
|
totalQuestions
|
|
13480
13777
|
] }),
|
|
13481
|
-
/* @__PURE__ */ (0,
|
|
13778
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "text-2xs font-medium text-text-600 mt-1", children: "Corretas" })
|
|
13482
13779
|
] })
|
|
13483
13780
|
] }),
|
|
13484
|
-
showDetails && /* @__PURE__ */ (0,
|
|
13485
|
-
/* @__PURE__ */ (0,
|
|
13781
|
+
showDetails && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-col gap-4 w-full", children: [
|
|
13782
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13486
13783
|
ProgressBar_default,
|
|
13487
13784
|
{
|
|
13488
13785
|
className: "w-full",
|
|
@@ -13496,7 +13793,7 @@ var QuizResultPerformance = (0, import_react40.forwardRef)(({ showDetails = true
|
|
|
13496
13793
|
percentageClassName: "text-xs font-medium leading-[14px] text-right"
|
|
13497
13794
|
}
|
|
13498
13795
|
),
|
|
13499
|
-
/* @__PURE__ */ (0,
|
|
13796
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13500
13797
|
ProgressBar_default,
|
|
13501
13798
|
{
|
|
13502
13799
|
className: "w-full",
|
|
@@ -13510,7 +13807,7 @@ var QuizResultPerformance = (0, import_react40.forwardRef)(({ showDetails = true
|
|
|
13510
13807
|
percentageClassName: "text-xs font-medium leading-[14px] text-right"
|
|
13511
13808
|
}
|
|
13512
13809
|
),
|
|
13513
|
-
/* @__PURE__ */ (0,
|
|
13810
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13514
13811
|
ProgressBar_default,
|
|
13515
13812
|
{
|
|
13516
13813
|
className: "w-full",
|
|
@@ -13529,7 +13826,7 @@ var QuizResultPerformance = (0, import_react40.forwardRef)(({ showDetails = true
|
|
|
13529
13826
|
}
|
|
13530
13827
|
);
|
|
13531
13828
|
});
|
|
13532
|
-
var QuizListResult = (0,
|
|
13829
|
+
var QuizListResult = (0, import_react41.forwardRef)(({ className, onSubjectClick, ...props }, ref) => {
|
|
13533
13830
|
const { getQuestionsGroupedBySubject } = useQuizStore();
|
|
13534
13831
|
const { isDark } = useTheme();
|
|
13535
13832
|
const groupedQuestions = getQuestionsGroupedBySubject();
|
|
@@ -13557,9 +13854,9 @@ var QuizListResult = (0, import_react40.forwardRef)(({ className, onSubjectClick
|
|
|
13557
13854
|
};
|
|
13558
13855
|
}
|
|
13559
13856
|
);
|
|
13560
|
-
return /* @__PURE__ */ (0,
|
|
13561
|
-
/* @__PURE__ */ (0,
|
|
13562
|
-
/* @__PURE__ */ (0,
|
|
13857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("section", { ref, className, ...props, children: [
|
|
13858
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Mat\xE9rias" }),
|
|
13859
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("ul", { className: "flex flex-col gap-2", children: subjectsStats.map((subject) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13563
13860
|
CardResults,
|
|
13564
13861
|
{
|
|
13565
13862
|
onClick: () => onSubjectClick?.(subject.subject.id),
|
|
@@ -13583,16 +13880,16 @@ var QuizListResultByMateria = ({
|
|
|
13583
13880
|
const groupedQuestions = getQuestionsGroupedBySubject();
|
|
13584
13881
|
const answeredQuestions = groupedQuestions[subject] || [];
|
|
13585
13882
|
const formattedQuestions = subject == "all" ? Object.values(groupedQuestions).flat() : answeredQuestions;
|
|
13586
|
-
return /* @__PURE__ */ (0,
|
|
13587
|
-
/* @__PURE__ */ (0,
|
|
13588
|
-
/* @__PURE__ */ (0,
|
|
13589
|
-
/* @__PURE__ */ (0,
|
|
13590
|
-
/* @__PURE__ */ (0,
|
|
13883
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-col", children: [
|
|
13884
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "flex flex-row pt-4 justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: subjectName || formattedQuestions?.[0]?.knowledgeMatrix?.[0]?.subject?.name || "Sem mat\xE9ria" }) }),
|
|
13885
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("section", { className: "flex flex-col ", children: [
|
|
13886
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Resultado das quest\xF5es" }),
|
|
13887
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("ul", { className: "flex flex-col gap-2 pt-4", children: formattedQuestions.map((question) => {
|
|
13591
13888
|
const questionIndex = getQuestionIndex(
|
|
13592
13889
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13593
13890
|
question.questionId ?? question.id
|
|
13594
13891
|
);
|
|
13595
|
-
return /* @__PURE__ */ (0,
|
|
13892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13596
13893
|
CardStatus,
|
|
13597
13894
|
{
|
|
13598
13895
|
className: "max-w-full",
|
|
@@ -13618,7 +13915,7 @@ var QuizListResultByMateria = ({
|
|
|
13618
13915
|
|
|
13619
13916
|
// src/components/BreadcrumbMenu/BreadcrumbMenu.tsx
|
|
13620
13917
|
var import_react_router_dom3 = require("react-router-dom");
|
|
13621
|
-
var
|
|
13918
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
13622
13919
|
var BreadcrumbMenu = ({
|
|
13623
13920
|
breadcrumbs,
|
|
13624
13921
|
onBreadcrumbClick,
|
|
@@ -13631,17 +13928,17 @@ var BreadcrumbMenu = ({
|
|
|
13631
13928
|
}
|
|
13632
13929
|
navigate(breadcrumb.url);
|
|
13633
13930
|
};
|
|
13634
|
-
return /* @__PURE__ */ (0,
|
|
13931
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
13635
13932
|
Menu,
|
|
13636
13933
|
{
|
|
13637
13934
|
value: `breadcrumb-${breadcrumbs.length - 1}`,
|
|
13638
13935
|
defaultValue: "breadcrumb-0",
|
|
13639
13936
|
variant: "breadcrumb",
|
|
13640
13937
|
className,
|
|
13641
|
-
children: /* @__PURE__ */ (0,
|
|
13938
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(MenuContent, { className: "w-full flex flex-row flex-wrap gap-2 !px-0", children: breadcrumbs.map((breadcrumb, index) => {
|
|
13642
13939
|
const isLast = index === breadcrumbs.length - 1;
|
|
13643
13940
|
const hasSeparator = !isLast;
|
|
13644
|
-
return /* @__PURE__ */ (0,
|
|
13941
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
13645
13942
|
MenuItem,
|
|
13646
13943
|
{
|
|
13647
13944
|
variant: "breadcrumb",
|
|
@@ -13659,7 +13956,7 @@ var BreadcrumbMenu = ({
|
|
|
13659
13956
|
};
|
|
13660
13957
|
|
|
13661
13958
|
// src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts
|
|
13662
|
-
var
|
|
13959
|
+
var import_react42 = require("react");
|
|
13663
13960
|
|
|
13664
13961
|
// src/components/BreadcrumbMenu/breadcrumbStore.ts
|
|
13665
13962
|
var import_zustand11 = require("zustand");
|
|
@@ -13788,7 +14085,7 @@ var useBreadcrumbBuilder = (config) => {
|
|
|
13788
14085
|
(level) => isBreadcrumbWithData(level) ? level.data : null
|
|
13789
14086
|
);
|
|
13790
14087
|
const levelUrlIds = levels.map((level) => level.urlId);
|
|
13791
|
-
(0,
|
|
14088
|
+
(0, import_react42.useEffect)(() => {
|
|
13792
14089
|
const newBreadcrumbs = [root];
|
|
13793
14090
|
const previousIds = [];
|
|
13794
14091
|
for (const level of levels) {
|
|
@@ -13820,11 +14117,11 @@ var useBreadcrumbBuilder = (config) => {
|
|
|
13820
14117
|
};
|
|
13821
14118
|
|
|
13822
14119
|
// src/components/BreadcrumbMenu/useUrlParams.ts
|
|
13823
|
-
var
|
|
14120
|
+
var import_react43 = require("react");
|
|
13824
14121
|
var import_react_router_dom4 = require("react-router-dom");
|
|
13825
14122
|
var useUrlParams = (config) => {
|
|
13826
14123
|
const location = (0, import_react_router_dom4.useLocation)();
|
|
13827
|
-
return (0,
|
|
14124
|
+
return (0, import_react43.useMemo)(() => {
|
|
13828
14125
|
const segments = location.pathname.split("/").filter(Boolean);
|
|
13829
14126
|
const params = {};
|
|
13830
14127
|
for (const [key, index] of Object.entries(config)) {
|
|
@@ -13835,15 +14132,15 @@ var useUrlParams = (config) => {
|
|
|
13835
14132
|
};
|
|
13836
14133
|
|
|
13837
14134
|
// src/hooks/useAppInitialization.ts
|
|
13838
|
-
var
|
|
14135
|
+
var import_react45 = require("react");
|
|
13839
14136
|
|
|
13840
14137
|
// src/hooks/useInstitution.ts
|
|
13841
|
-
var
|
|
14138
|
+
var import_react44 = require("react");
|
|
13842
14139
|
function useInstitutionId() {
|
|
13843
|
-
const [institutionId, setInstitutionId] = (0,
|
|
14140
|
+
const [institutionId, setInstitutionId] = (0, import_react44.useState)(() => {
|
|
13844
14141
|
return document.querySelector('meta[name="institution-id"]')?.getAttribute("content") ?? null;
|
|
13845
14142
|
});
|
|
13846
|
-
(0,
|
|
14143
|
+
(0, import_react44.useEffect)(() => {
|
|
13847
14144
|
const metaTag = document.querySelector('meta[name="institution-id"]');
|
|
13848
14145
|
if (!metaTag) return;
|
|
13849
14146
|
const observer = new MutationObserver(() => {
|
|
@@ -14010,7 +14307,7 @@ var useAuthStore = (0, import_zustand13.create)()(
|
|
|
14010
14307
|
function useAppInitialization() {
|
|
14011
14308
|
const getInstitutionId = useInstitutionId();
|
|
14012
14309
|
const { initialize, initialized, institutionId } = useAppStore();
|
|
14013
|
-
const authFunctions = (0,
|
|
14310
|
+
const authFunctions = (0, import_react45.useMemo)(
|
|
14014
14311
|
() => ({
|
|
14015
14312
|
checkAuth: async () => {
|
|
14016
14313
|
const { sessionInfo, tokens } = useAuthStore.getState();
|
|
@@ -14047,7 +14344,7 @@ function useAppInitialization() {
|
|
|
14047
14344
|
}
|
|
14048
14345
|
|
|
14049
14346
|
// src/hooks/useAppContent.ts
|
|
14050
|
-
var
|
|
14347
|
+
var import_react46 = require("react");
|
|
14051
14348
|
var import_react_router_dom5 = require("react-router-dom");
|
|
14052
14349
|
function useAppContent(config) {
|
|
14053
14350
|
const navigate = (0, import_react_router_dom5.useNavigate)();
|
|
@@ -14073,20 +14370,20 @@ function useAppContent(config) {
|
|
|
14073
14370
|
navigate("/painel");
|
|
14074
14371
|
}
|
|
14075
14372
|
};
|
|
14076
|
-
const handleSetSelectedProfile = (0,
|
|
14373
|
+
const handleSetSelectedProfile = (0, import_react46.useCallback)(
|
|
14077
14374
|
(profile) => {
|
|
14078
14375
|
setSelectedProfile(profile);
|
|
14079
14376
|
},
|
|
14080
14377
|
[setSelectedProfile]
|
|
14081
14378
|
);
|
|
14082
|
-
const handleClearParamsFromURL = (0,
|
|
14379
|
+
const handleClearParamsFromURL = (0, import_react46.useCallback)(() => {
|
|
14083
14380
|
if (onClearParamsFromURL) {
|
|
14084
14381
|
onClearParamsFromURL();
|
|
14085
14382
|
} else {
|
|
14086
14383
|
globalThis.location.replace("/painel");
|
|
14087
14384
|
}
|
|
14088
14385
|
}, [onClearParamsFromURL]);
|
|
14089
|
-
const handleError = (0,
|
|
14386
|
+
const handleError = (0, import_react46.useCallback)(
|
|
14090
14387
|
(error) => {
|
|
14091
14388
|
if (onError) {
|
|
14092
14389
|
onError(error);
|
|
@@ -14097,7 +14394,7 @@ function useAppContent(config) {
|
|
|
14097
14394
|
},
|
|
14098
14395
|
[navigate, onError]
|
|
14099
14396
|
);
|
|
14100
|
-
const urlAuthConfig = (0,
|
|
14397
|
+
const urlAuthConfig = (0, import_react46.useMemo)(
|
|
14101
14398
|
() => ({
|
|
14102
14399
|
setTokens,
|
|
14103
14400
|
setSessionInfo,
|
|
@@ -14123,10 +14420,10 @@ function useAppContent(config) {
|
|
|
14123
14420
|
);
|
|
14124
14421
|
useUrlAuthentication(urlAuthConfig);
|
|
14125
14422
|
const { sessionInfo } = useAuth();
|
|
14126
|
-
const institutionIdToUse = (0,
|
|
14423
|
+
const institutionIdToUse = (0, import_react46.useMemo)(() => {
|
|
14127
14424
|
return sessionInfo?.institutionId || getInstitutionId;
|
|
14128
14425
|
}, [sessionInfo?.institutionId, getInstitutionId]);
|
|
14129
|
-
(0,
|
|
14426
|
+
(0, import_react46.useEffect)(() => {
|
|
14130
14427
|
if (institutionIdToUse && !initialized) {
|
|
14131
14428
|
initialize(institutionIdToUse);
|
|
14132
14429
|
}
|
|
@@ -14173,6 +14470,7 @@ function useAppContent(config) {
|
|
|
14173
14470
|
DropdownMenuItem,
|
|
14174
14471
|
DropdownMenuSeparator,
|
|
14175
14472
|
DropdownMenuTrigger,
|
|
14473
|
+
FilterModal,
|
|
14176
14474
|
IconButton,
|
|
14177
14475
|
IconRender,
|
|
14178
14476
|
IconRoundedButton,
|
|
@@ -14187,6 +14485,7 @@ function useAppContent(config) {
|
|
|
14187
14485
|
Modal,
|
|
14188
14486
|
MultipleChoiceList,
|
|
14189
14487
|
NavButton,
|
|
14488
|
+
NoSearchResult,
|
|
14190
14489
|
NotFound,
|
|
14191
14490
|
NotificationCard,
|
|
14192
14491
|
NotificationEntityType,
|
|
@@ -14288,6 +14587,7 @@ function useAppContent(config) {
|
|
|
14288
14587
|
useMobile,
|
|
14289
14588
|
useQuizStore,
|
|
14290
14589
|
useRouteAuth,
|
|
14590
|
+
useTableFilter,
|
|
14291
14591
|
useTableSort,
|
|
14292
14592
|
useTheme,
|
|
14293
14593
|
useThemeStore,
|