analytica-frontend-lib 1.2.19 → 1.2.21
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/AlertManager/index.css +10 -0
- package/dist/AlertManager/index.css.map +1 -1
- package/dist/AlertManager/index.d.mts +2 -1
- package/dist/AlertManager/index.d.ts +2 -1
- package/dist/AlertManagerView/index.d.mts +2 -1
- package/dist/AlertManagerView/index.d.ts +2 -1
- package/dist/CheckBoxGroup-9n5C0OH4.d.mts +24 -0
- package/dist/CheckBoxGroup-9n5C0OH4.d.ts +24 -0
- package/dist/Radio/index.d.mts +1 -1
- package/dist/Radio/index.d.ts +1 -1
- package/dist/TableProvider/index.css +19143 -0
- package/dist/TableProvider/index.css.map +1 -0
- package/dist/TableProvider/index.d.mts +4 -0
- package/dist/TableProvider/index.d.ts +4 -0
- package/dist/TableProvider/index.js +5365 -0
- package/dist/TableProvider/index.js.map +1 -0
- package/dist/TableProvider/index.mjs +5387 -0
- package/dist/TableProvider/index.mjs.map +1 -0
- package/dist/TableProvider-CDcL1tDj.d.mts +192 -0
- package/dist/TableProvider-D4Ak7ofz.d.ts +192 -0
- package/dist/index.css +10 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +6 -43
- package/dist/index.d.ts +6 -43
- package/dist/index.js +1069 -780
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +988 -700
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +10 -0
- package/dist/styles.css.map +1 -1
- package/dist/{types-BXzeefgf.d.mts → types-DqZRjqxh.d.ts} +2 -23
- package/dist/{types-BXzeefgf.d.ts → types-pd3QVhSu.d.mts} +2 -23
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -148,6 +148,7 @@ __export(src_exports, {
|
|
|
148
148
|
TableHead: () => TableHead,
|
|
149
149
|
TableHeader: () => TableHeader,
|
|
150
150
|
TablePagination: () => TablePagination_default,
|
|
151
|
+
TableProvider: () => TableProvider_default,
|
|
151
152
|
TableRow: () => TableRow,
|
|
152
153
|
Text: () => Text_default,
|
|
153
154
|
TextArea: () => TextArea_default,
|
|
@@ -8340,11 +8341,298 @@ var useTableFilter = (initialConfigs, options = {}) => {
|
|
|
8340
8341
|
};
|
|
8341
8342
|
};
|
|
8342
8343
|
|
|
8343
|
-
// src/components/
|
|
8344
|
-
var import_zustand8 = require("zustand");
|
|
8344
|
+
// src/components/TableProvider/TableProvider.tsx
|
|
8345
8345
|
var import_react29 = require("react");
|
|
8346
8346
|
var import_phosphor_react21 = require("phosphor-react");
|
|
8347
8347
|
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
8348
|
+
function TableProvider({
|
|
8349
|
+
data,
|
|
8350
|
+
headers,
|
|
8351
|
+
loading = false,
|
|
8352
|
+
variant = "default",
|
|
8353
|
+
enableSearch = false,
|
|
8354
|
+
enableFilters = false,
|
|
8355
|
+
enableTableSort = false,
|
|
8356
|
+
enablePagination = false,
|
|
8357
|
+
enableRowClick = false,
|
|
8358
|
+
initialFilters = [],
|
|
8359
|
+
paginationConfig = {},
|
|
8360
|
+
searchPlaceholder = "Buscar...",
|
|
8361
|
+
noSearchResultImage,
|
|
8362
|
+
rowKey,
|
|
8363
|
+
onParamsChange,
|
|
8364
|
+
onRowClick,
|
|
8365
|
+
children
|
|
8366
|
+
}) {
|
|
8367
|
+
const [searchQuery, setSearchQuery] = (0, import_react29.useState)("");
|
|
8368
|
+
const sortResultRaw = useTableSort(data, { syncWithUrl: true });
|
|
8369
|
+
const sortResult = enableTableSort ? sortResultRaw : {
|
|
8370
|
+
sortedData: data,
|
|
8371
|
+
sortColumn: null,
|
|
8372
|
+
sortDirection: null,
|
|
8373
|
+
handleSort: () => {
|
|
8374
|
+
}
|
|
8375
|
+
};
|
|
8376
|
+
const { sortedData, sortColumn, sortDirection, handleSort } = sortResult;
|
|
8377
|
+
const filterResultRaw = useTableFilter(initialFilters, { syncWithUrl: true });
|
|
8378
|
+
const disabledFilterResult = (0, import_react29.useMemo)(
|
|
8379
|
+
() => ({
|
|
8380
|
+
filterConfigs: [],
|
|
8381
|
+
activeFilters: {},
|
|
8382
|
+
hasActiveFilters: false,
|
|
8383
|
+
updateFilters: () => {
|
|
8384
|
+
},
|
|
8385
|
+
applyFilters: () => {
|
|
8386
|
+
},
|
|
8387
|
+
clearFilters: () => {
|
|
8388
|
+
}
|
|
8389
|
+
}),
|
|
8390
|
+
[]
|
|
8391
|
+
);
|
|
8392
|
+
const filterResult = enableFilters ? filterResultRaw : disabledFilterResult;
|
|
8393
|
+
const {
|
|
8394
|
+
filterConfigs,
|
|
8395
|
+
activeFilters,
|
|
8396
|
+
hasActiveFilters,
|
|
8397
|
+
updateFilters,
|
|
8398
|
+
applyFilters,
|
|
8399
|
+
clearFilters
|
|
8400
|
+
} = filterResult;
|
|
8401
|
+
const {
|
|
8402
|
+
defaultItemsPerPage = 10,
|
|
8403
|
+
itemsPerPageOptions = [10, 20, 50, 100],
|
|
8404
|
+
itemLabel = "itens",
|
|
8405
|
+
totalItems,
|
|
8406
|
+
totalPages
|
|
8407
|
+
} = paginationConfig;
|
|
8408
|
+
const [currentPage, setCurrentPage] = (0, import_react29.useState)(1);
|
|
8409
|
+
const [itemsPerPage, setItemsPerPage] = (0, import_react29.useState)(defaultItemsPerPage);
|
|
8410
|
+
const [isFilterModalOpen, setIsFilterModalOpen] = (0, import_react29.useState)(false);
|
|
8411
|
+
const combinedParams = (0, import_react29.useMemo)(() => {
|
|
8412
|
+
const params = {
|
|
8413
|
+
page: currentPage,
|
|
8414
|
+
limit: itemsPerPage
|
|
8415
|
+
};
|
|
8416
|
+
if (enableSearch && searchQuery) {
|
|
8417
|
+
params.search = searchQuery;
|
|
8418
|
+
}
|
|
8419
|
+
if (enableFilters) {
|
|
8420
|
+
Object.assign(params, activeFilters);
|
|
8421
|
+
}
|
|
8422
|
+
if (enableTableSort && sortColumn && sortDirection) {
|
|
8423
|
+
params.sortBy = sortColumn;
|
|
8424
|
+
params.sortOrder = sortDirection;
|
|
8425
|
+
}
|
|
8426
|
+
return params;
|
|
8427
|
+
}, [
|
|
8428
|
+
currentPage,
|
|
8429
|
+
itemsPerPage,
|
|
8430
|
+
searchQuery,
|
|
8431
|
+
activeFilters,
|
|
8432
|
+
sortColumn,
|
|
8433
|
+
sortDirection,
|
|
8434
|
+
enableSearch,
|
|
8435
|
+
enableFilters,
|
|
8436
|
+
enableTableSort
|
|
8437
|
+
]);
|
|
8438
|
+
(0, import_react29.useEffect)(() => {
|
|
8439
|
+
onParamsChange?.(combinedParams);
|
|
8440
|
+
}, [combinedParams]);
|
|
8441
|
+
const handleSearchChange = (0, import_react29.useCallback)((value) => {
|
|
8442
|
+
setSearchQuery(value);
|
|
8443
|
+
setCurrentPage(1);
|
|
8444
|
+
}, []);
|
|
8445
|
+
const handleFilterApply = (0, import_react29.useCallback)(() => {
|
|
8446
|
+
applyFilters();
|
|
8447
|
+
setIsFilterModalOpen(false);
|
|
8448
|
+
setCurrentPage(1);
|
|
8449
|
+
}, [applyFilters]);
|
|
8450
|
+
const handlePageChange = (0, import_react29.useCallback)((page) => {
|
|
8451
|
+
setCurrentPage(page);
|
|
8452
|
+
}, []);
|
|
8453
|
+
const handleItemsPerPageChange = (0, import_react29.useCallback)((items) => {
|
|
8454
|
+
setItemsPerPage(items);
|
|
8455
|
+
setCurrentPage(1);
|
|
8456
|
+
}, []);
|
|
8457
|
+
const handleRowClickInternal = (0, import_react29.useCallback)(
|
|
8458
|
+
(row, index) => {
|
|
8459
|
+
if (enableRowClick && onRowClick) {
|
|
8460
|
+
onRowClick(row, index);
|
|
8461
|
+
}
|
|
8462
|
+
},
|
|
8463
|
+
[enableRowClick, onRowClick]
|
|
8464
|
+
);
|
|
8465
|
+
const useInternalPagination = (0, import_react29.useMemo)(
|
|
8466
|
+
() => enablePagination && !onParamsChange && totalItems === void 0 && totalPages === void 0,
|
|
8467
|
+
[enablePagination, onParamsChange, totalItems, totalPages]
|
|
8468
|
+
);
|
|
8469
|
+
const calculatedTotalPages = totalPages ?? Math.ceil(
|
|
8470
|
+
(totalItems ?? (useInternalPagination ? sortedData.length : data.length)) / itemsPerPage
|
|
8471
|
+
);
|
|
8472
|
+
const calculatedTotalItems = totalItems ?? (useInternalPagination ? sortedData.length : data.length);
|
|
8473
|
+
const displayData = (0, import_react29.useMemo)(() => {
|
|
8474
|
+
if (!useInternalPagination) {
|
|
8475
|
+
return sortedData;
|
|
8476
|
+
}
|
|
8477
|
+
const start = (currentPage - 1) * itemsPerPage;
|
|
8478
|
+
return sortedData.slice(start, start + itemsPerPage);
|
|
8479
|
+
}, [useInternalPagination, sortedData, currentPage, itemsPerPage]);
|
|
8480
|
+
const isEmpty = sortedData.length === 0;
|
|
8481
|
+
const controls = (enableSearch || enableFilters) && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-4", children: [
|
|
8482
|
+
enableFilters && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
8483
|
+
Button_default,
|
|
8484
|
+
{
|
|
8485
|
+
variant: "outline",
|
|
8486
|
+
size: "medium",
|
|
8487
|
+
onClick: () => setIsFilterModalOpen(true),
|
|
8488
|
+
children: [
|
|
8489
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_phosphor_react21.Funnel, { size: 20 }),
|
|
8490
|
+
"Filtros",
|
|
8491
|
+
hasActiveFilters && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "ml-2 rounded-full bg-primary-500 px-2 py-0.5 text-xs text-white", children: Object.keys(activeFilters).length })
|
|
8492
|
+
]
|
|
8493
|
+
}
|
|
8494
|
+
),
|
|
8495
|
+
enableSearch && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8496
|
+
Search_default,
|
|
8497
|
+
{
|
|
8498
|
+
value: searchQuery,
|
|
8499
|
+
onSearch: handleSearchChange,
|
|
8500
|
+
onClear: () => handleSearchChange(""),
|
|
8501
|
+
options: [],
|
|
8502
|
+
placeholder: searchPlaceholder
|
|
8503
|
+
}
|
|
8504
|
+
) })
|
|
8505
|
+
] });
|
|
8506
|
+
const table = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "w-full overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
8507
|
+
Table_default,
|
|
8508
|
+
{
|
|
8509
|
+
variant,
|
|
8510
|
+
searchTerm: enableSearch ? searchQuery : void 0,
|
|
8511
|
+
noSearchResultImage,
|
|
8512
|
+
children: [
|
|
8513
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8514
|
+
TableRow,
|
|
8515
|
+
{
|
|
8516
|
+
variant: variant === "borderless" ? "defaultBorderless" : "default",
|
|
8517
|
+
children: headers.map((header, index) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8518
|
+
TableHead,
|
|
8519
|
+
{
|
|
8520
|
+
sortable: enableTableSort && header.sortable,
|
|
8521
|
+
sortDirection: enableTableSort && sortColumn === header.key ? sortDirection : null,
|
|
8522
|
+
onSort: () => enableTableSort && header.sortable && handleSort(header.key),
|
|
8523
|
+
className: header.className,
|
|
8524
|
+
style: header.width ? { width: header.width } : void 0,
|
|
8525
|
+
children: header.label
|
|
8526
|
+
},
|
|
8527
|
+
`header-${header.key}-${index}`
|
|
8528
|
+
))
|
|
8529
|
+
}
|
|
8530
|
+
) }),
|
|
8531
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(TableBody, { children: loading ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(TableCell, { colSpan: headers.length, className: "text-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-text-400 text-sm", children: "Carregando..." }) }) }) : displayData.map((row, rowIndex) => {
|
|
8532
|
+
const effectiveIndex = useInternalPagination ? (currentPage - 1) * itemsPerPage + rowIndex : rowIndex;
|
|
8533
|
+
const rowKeyValue = rowKey ? (() => {
|
|
8534
|
+
const keyValue = row[rowKey];
|
|
8535
|
+
if (keyValue === null || keyValue === void 0) {
|
|
8536
|
+
return `row-${effectiveIndex}`;
|
|
8537
|
+
}
|
|
8538
|
+
if (typeof keyValue === "object") {
|
|
8539
|
+
return JSON.stringify(keyValue);
|
|
8540
|
+
}
|
|
8541
|
+
return String(keyValue);
|
|
8542
|
+
})() : `row-${effectiveIndex}`;
|
|
8543
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8544
|
+
TableRow,
|
|
8545
|
+
{
|
|
8546
|
+
variant: variant === "borderless" ? "defaultBorderless" : "default",
|
|
8547
|
+
clickable: enableRowClick,
|
|
8548
|
+
onClick: () => handleRowClickInternal(row, effectiveIndex),
|
|
8549
|
+
children: headers.map((header, cellIndex) => {
|
|
8550
|
+
const value = row[header.key];
|
|
8551
|
+
let defaultContent = "";
|
|
8552
|
+
if (value !== null && value !== void 0) {
|
|
8553
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
|
|
8554
|
+
defaultContent = String(value);
|
|
8555
|
+
} else if (typeof value === "object") {
|
|
8556
|
+
defaultContent = JSON.stringify(value);
|
|
8557
|
+
} else if (typeof value === "function") {
|
|
8558
|
+
defaultContent = "[Function]";
|
|
8559
|
+
} else if (typeof value === "symbol") {
|
|
8560
|
+
defaultContent = String(value);
|
|
8561
|
+
}
|
|
8562
|
+
}
|
|
8563
|
+
const content = header.render ? header.render(value, row, effectiveIndex) : defaultContent;
|
|
8564
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8565
|
+
TableCell,
|
|
8566
|
+
{
|
|
8567
|
+
className: header.className,
|
|
8568
|
+
style: {
|
|
8569
|
+
textAlign: header.align
|
|
8570
|
+
},
|
|
8571
|
+
children: content
|
|
8572
|
+
},
|
|
8573
|
+
`cell-${effectiveIndex}-${cellIndex}`
|
|
8574
|
+
);
|
|
8575
|
+
})
|
|
8576
|
+
},
|
|
8577
|
+
rowKeyValue
|
|
8578
|
+
);
|
|
8579
|
+
}) })
|
|
8580
|
+
]
|
|
8581
|
+
}
|
|
8582
|
+
) });
|
|
8583
|
+
const pagination = enablePagination && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8584
|
+
TablePagination_default,
|
|
8585
|
+
{
|
|
8586
|
+
currentPage,
|
|
8587
|
+
totalPages: calculatedTotalPages,
|
|
8588
|
+
totalItems: calculatedTotalItems,
|
|
8589
|
+
itemsPerPage,
|
|
8590
|
+
itemsPerPageOptions,
|
|
8591
|
+
onPageChange: handlePageChange,
|
|
8592
|
+
onItemsPerPageChange: handleItemsPerPageChange,
|
|
8593
|
+
itemLabel
|
|
8594
|
+
}
|
|
8595
|
+
) });
|
|
8596
|
+
if (children) {
|
|
8597
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
|
|
8598
|
+
children({ controls, table, pagination }),
|
|
8599
|
+
enableFilters && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8600
|
+
FilterModal,
|
|
8601
|
+
{
|
|
8602
|
+
isOpen: isFilterModalOpen,
|
|
8603
|
+
onClose: () => setIsFilterModalOpen(false),
|
|
8604
|
+
filterConfigs,
|
|
8605
|
+
onFiltersChange: updateFilters,
|
|
8606
|
+
onApply: handleFilterApply,
|
|
8607
|
+
onClear: clearFilters
|
|
8608
|
+
}
|
|
8609
|
+
)
|
|
8610
|
+
] });
|
|
8611
|
+
}
|
|
8612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full space-y-4", children: [
|
|
8613
|
+
controls,
|
|
8614
|
+
table,
|
|
8615
|
+
pagination,
|
|
8616
|
+
enableFilters && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8617
|
+
FilterModal,
|
|
8618
|
+
{
|
|
8619
|
+
isOpen: isFilterModalOpen,
|
|
8620
|
+
onClose: () => setIsFilterModalOpen(false),
|
|
8621
|
+
filterConfigs,
|
|
8622
|
+
onFiltersChange: updateFilters,
|
|
8623
|
+
onApply: handleFilterApply,
|
|
8624
|
+
onClear: clearFilters
|
|
8625
|
+
}
|
|
8626
|
+
)
|
|
8627
|
+
] });
|
|
8628
|
+
}
|
|
8629
|
+
var TableProvider_default = TableProvider;
|
|
8630
|
+
|
|
8631
|
+
// src/components/Select/Select.tsx
|
|
8632
|
+
var import_zustand8 = require("zustand");
|
|
8633
|
+
var import_react30 = require("react");
|
|
8634
|
+
var import_phosphor_react22 = require("phosphor-react");
|
|
8635
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
8348
8636
|
var VARIANT_CLASSES4 = {
|
|
8349
8637
|
outlined: "border-2 rounded-lg focus:border-primary-950",
|
|
8350
8638
|
underlined: "border-b-2 focus:border-primary-950",
|
|
@@ -8402,13 +8690,13 @@ function getLabelAsNode(children) {
|
|
|
8402
8690
|
if (typeof children === "string" || typeof children === "number") {
|
|
8403
8691
|
return children;
|
|
8404
8692
|
}
|
|
8405
|
-
const flattened =
|
|
8693
|
+
const flattened = import_react30.Children.toArray(children);
|
|
8406
8694
|
if (flattened.length === 1) return flattened[0];
|
|
8407
|
-
return /* @__PURE__ */ (0,
|
|
8695
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_jsx_runtime50.Fragment, { children: flattened });
|
|
8408
8696
|
}
|
|
8409
8697
|
var injectStore4 = (children, store, size, selectId) => {
|
|
8410
|
-
return
|
|
8411
|
-
if ((0,
|
|
8698
|
+
return import_react30.Children.map(children, (child) => {
|
|
8699
|
+
if ((0, import_react30.isValidElement)(child)) {
|
|
8412
8700
|
const typedChild = child;
|
|
8413
8701
|
const newProps = {
|
|
8414
8702
|
store
|
|
@@ -8425,7 +8713,7 @@ var injectStore4 = (children, store, size, selectId) => {
|
|
|
8425
8713
|
selectId
|
|
8426
8714
|
);
|
|
8427
8715
|
}
|
|
8428
|
-
return (0,
|
|
8716
|
+
return (0, import_react30.cloneElement)(typedChild, newProps);
|
|
8429
8717
|
}
|
|
8430
8718
|
return child;
|
|
8431
8719
|
});
|
|
@@ -8442,18 +8730,18 @@ var Select = ({
|
|
|
8442
8730
|
errorMessage,
|
|
8443
8731
|
id
|
|
8444
8732
|
}) => {
|
|
8445
|
-
const storeRef = (0,
|
|
8733
|
+
const storeRef = (0, import_react30.useRef)(null);
|
|
8446
8734
|
storeRef.current ??= createSelectStore(onValueChange);
|
|
8447
8735
|
const store = storeRef.current;
|
|
8448
|
-
const selectRef = (0,
|
|
8736
|
+
const selectRef = (0, import_react30.useRef)(null);
|
|
8449
8737
|
const { open, setOpen, setValue, selectedLabel } = (0, import_zustand8.useStore)(store, (s) => s);
|
|
8450
|
-
const generatedId = (0,
|
|
8738
|
+
const generatedId = (0, import_react30.useId)();
|
|
8451
8739
|
const selectId = id ?? `select-${generatedId}`;
|
|
8452
8740
|
const findLabelForValue = (children2, targetValue) => {
|
|
8453
8741
|
let found = null;
|
|
8454
8742
|
const search = (nodes) => {
|
|
8455
|
-
|
|
8456
|
-
if (!(0,
|
|
8743
|
+
import_react30.Children.forEach(nodes, (child) => {
|
|
8744
|
+
if (!(0, import_react30.isValidElement)(child)) return;
|
|
8457
8745
|
const typedChild = child;
|
|
8458
8746
|
if (typedChild.type === SelectItem && typedChild.props.value === targetValue) {
|
|
8459
8747
|
if (typeof typedChild.props.children === "string")
|
|
@@ -8466,13 +8754,13 @@ var Select = ({
|
|
|
8466
8754
|
search(children2);
|
|
8467
8755
|
return found;
|
|
8468
8756
|
};
|
|
8469
|
-
(0,
|
|
8757
|
+
(0, import_react30.useEffect)(() => {
|
|
8470
8758
|
if (!selectedLabel && defaultValue) {
|
|
8471
8759
|
const label2 = findLabelForValue(children, defaultValue);
|
|
8472
8760
|
if (label2) store.setState({ selectedLabel: label2 });
|
|
8473
8761
|
}
|
|
8474
8762
|
}, [children, defaultValue, selectedLabel]);
|
|
8475
|
-
(0,
|
|
8763
|
+
(0, import_react30.useEffect)(() => {
|
|
8476
8764
|
const handleClickOutside = (event) => {
|
|
8477
8765
|
if (selectRef.current && !selectRef.current.contains(event.target)) {
|
|
8478
8766
|
setOpen(false);
|
|
@@ -8507,7 +8795,7 @@ var Select = ({
|
|
|
8507
8795
|
document.removeEventListener("keydown", handleArrowKeys);
|
|
8508
8796
|
};
|
|
8509
8797
|
}, [open]);
|
|
8510
|
-
(0,
|
|
8798
|
+
(0, import_react30.useEffect)(() => {
|
|
8511
8799
|
if (propValue) {
|
|
8512
8800
|
setValue(propValue);
|
|
8513
8801
|
const label2 = findLabelForValue(children, propValue);
|
|
@@ -8515,8 +8803,8 @@ var Select = ({
|
|
|
8515
8803
|
}
|
|
8516
8804
|
}, [propValue]);
|
|
8517
8805
|
const sizeClasses = SIZE_CLASSES12[size];
|
|
8518
|
-
return /* @__PURE__ */ (0,
|
|
8519
|
-
label && /* @__PURE__ */ (0,
|
|
8806
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: cn("w-full", className), children: [
|
|
8807
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
8520
8808
|
"label",
|
|
8521
8809
|
{
|
|
8522
8810
|
htmlFor: selectId,
|
|
@@ -8524,11 +8812,11 @@ var Select = ({
|
|
|
8524
8812
|
children: label
|
|
8525
8813
|
}
|
|
8526
8814
|
),
|
|
8527
|
-
/* @__PURE__ */ (0,
|
|
8528
|
-
(helperText || errorMessage) && /* @__PURE__ */ (0,
|
|
8529
|
-
helperText && /* @__PURE__ */ (0,
|
|
8530
|
-
errorMessage && /* @__PURE__ */ (0,
|
|
8531
|
-
/* @__PURE__ */ (0,
|
|
8815
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: cn("relative w-full"), ref: selectRef, children: injectStore4(children, store, size, selectId) }),
|
|
8816
|
+
(helperText || errorMessage) && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "mt-1.5 gap-1.5", children: [
|
|
8817
|
+
helperText && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-sm text-text-500", children: helperText }),
|
|
8818
|
+
errorMessage && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("p", { className: "flex gap-1 items-center text-sm text-indicator-error", children: [
|
|
8819
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_phosphor_react22.WarningCircle, { size: 16 }),
|
|
8532
8820
|
" ",
|
|
8533
8821
|
errorMessage
|
|
8534
8822
|
] })
|
|
@@ -8542,9 +8830,9 @@ var SelectValue = ({
|
|
|
8542
8830
|
const store = useSelectStore(externalStore);
|
|
8543
8831
|
const selectedLabel = (0, import_zustand8.useStore)(store, (s) => s.selectedLabel);
|
|
8544
8832
|
const value = (0, import_zustand8.useStore)(store, (s) => s.value);
|
|
8545
|
-
return /* @__PURE__ */ (0,
|
|
8833
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-inherit flex gap-2 items-center", children: selectedLabel || placeholder || value });
|
|
8546
8834
|
};
|
|
8547
|
-
var SelectTrigger = (0,
|
|
8835
|
+
var SelectTrigger = (0, import_react30.forwardRef)(
|
|
8548
8836
|
({
|
|
8549
8837
|
className,
|
|
8550
8838
|
invalid = false,
|
|
@@ -8561,7 +8849,7 @@ var SelectTrigger = (0, import_react29.forwardRef)(
|
|
|
8561
8849
|
const variantClasses = VARIANT_CLASSES4[variant];
|
|
8562
8850
|
const heightClasses = HEIGHT_CLASSES[size];
|
|
8563
8851
|
const paddingClasses = PADDING_CLASSES[size];
|
|
8564
|
-
return /* @__PURE__ */ (0,
|
|
8852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
8565
8853
|
"button",
|
|
8566
8854
|
{
|
|
8567
8855
|
ref,
|
|
@@ -8583,8 +8871,8 @@ var SelectTrigger = (0, import_react29.forwardRef)(
|
|
|
8583
8871
|
...props,
|
|
8584
8872
|
children: [
|
|
8585
8873
|
props.children,
|
|
8586
|
-
/* @__PURE__ */ (0,
|
|
8587
|
-
|
|
8874
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
8875
|
+
import_phosphor_react22.CaretDown,
|
|
8588
8876
|
{
|
|
8589
8877
|
className: cn(
|
|
8590
8878
|
"h-[1em] w-[1em] opacity-50 transition-transform",
|
|
@@ -8598,7 +8886,7 @@ var SelectTrigger = (0, import_react29.forwardRef)(
|
|
|
8598
8886
|
}
|
|
8599
8887
|
);
|
|
8600
8888
|
SelectTrigger.displayName = "SelectTrigger";
|
|
8601
|
-
var SelectContent = (0,
|
|
8889
|
+
var SelectContent = (0, import_react30.forwardRef)(
|
|
8602
8890
|
({
|
|
8603
8891
|
children,
|
|
8604
8892
|
className,
|
|
@@ -8611,7 +8899,7 @@ var SelectContent = (0, import_react29.forwardRef)(
|
|
|
8611
8899
|
const open = (0, import_zustand8.useStore)(store, (s) => s.open);
|
|
8612
8900
|
if (!open) return null;
|
|
8613
8901
|
const getPositionClasses = () => `w-full min-w-full absolute ${SIDE_CLASSES2[side]} ${ALIGN_CLASSES2[align]}`;
|
|
8614
|
-
return /* @__PURE__ */ (0,
|
|
8902
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
8615
8903
|
"div",
|
|
8616
8904
|
{
|
|
8617
8905
|
role: "menu",
|
|
@@ -8628,7 +8916,7 @@ var SelectContent = (0, import_react29.forwardRef)(
|
|
|
8628
8916
|
}
|
|
8629
8917
|
);
|
|
8630
8918
|
SelectContent.displayName = "SelectContent";
|
|
8631
|
-
var SelectItem = (0,
|
|
8919
|
+
var SelectItem = (0, import_react30.forwardRef)(
|
|
8632
8920
|
({
|
|
8633
8921
|
className,
|
|
8634
8922
|
children,
|
|
@@ -8655,7 +8943,7 @@ var SelectItem = (0, import_react29.forwardRef)(
|
|
|
8655
8943
|
}
|
|
8656
8944
|
props.onClick?.(e);
|
|
8657
8945
|
};
|
|
8658
|
-
return /* @__PURE__ */ (0,
|
|
8946
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
8659
8947
|
"div",
|
|
8660
8948
|
{
|
|
8661
8949
|
role: "menuitem",
|
|
@@ -8675,7 +8963,7 @@ var SelectItem = (0, import_react29.forwardRef)(
|
|
|
8675
8963
|
tabIndex: disabled ? -1 : 0,
|
|
8676
8964
|
...props,
|
|
8677
8965
|
children: [
|
|
8678
|
-
/* @__PURE__ */ (0,
|
|
8966
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: selectedValue === value && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_phosphor_react22.Check, { className: "" }) }),
|
|
8679
8967
|
children
|
|
8680
8968
|
]
|
|
8681
8969
|
}
|
|
@@ -8687,9 +8975,9 @@ var Select_default = Select;
|
|
|
8687
8975
|
|
|
8688
8976
|
// src/components/Menu/Menu.tsx
|
|
8689
8977
|
var import_zustand9 = require("zustand");
|
|
8690
|
-
var
|
|
8691
|
-
var
|
|
8692
|
-
var
|
|
8978
|
+
var import_react31 = require("react");
|
|
8979
|
+
var import_phosphor_react23 = require("phosphor-react");
|
|
8980
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
8693
8981
|
var createMenuStore = (onValueChange) => (0, import_zustand9.create)((set) => ({
|
|
8694
8982
|
value: "",
|
|
8695
8983
|
setValue: (value) => {
|
|
@@ -8708,7 +8996,7 @@ var VARIANT_CLASSES5 = {
|
|
|
8708
8996
|
"menu-overflow": "",
|
|
8709
8997
|
breadcrumb: "bg-transparent shadow-none !px-0"
|
|
8710
8998
|
};
|
|
8711
|
-
var Menu = (0,
|
|
8999
|
+
var Menu = (0, import_react31.forwardRef)(
|
|
8712
9000
|
({
|
|
8713
9001
|
className,
|
|
8714
9002
|
children,
|
|
@@ -8718,16 +9006,16 @@ var Menu = (0, import_react30.forwardRef)(
|
|
|
8718
9006
|
onValueChange,
|
|
8719
9007
|
...props
|
|
8720
9008
|
}, ref) => {
|
|
8721
|
-
const storeRef = (0,
|
|
9009
|
+
const storeRef = (0, import_react31.useRef)(null);
|
|
8722
9010
|
storeRef.current ??= createMenuStore(onValueChange);
|
|
8723
9011
|
const store = storeRef.current;
|
|
8724
9012
|
const { setValue } = (0, import_zustand9.useStore)(store, (s) => s);
|
|
8725
|
-
(0,
|
|
9013
|
+
(0, import_react31.useEffect)(() => {
|
|
8726
9014
|
setValue(propValue ?? defaultValue);
|
|
8727
9015
|
}, [defaultValue, propValue, setValue]);
|
|
8728
9016
|
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";
|
|
8729
9017
|
const variantClasses = VARIANT_CLASSES5[variant];
|
|
8730
|
-
return /* @__PURE__ */ (0,
|
|
9018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8731
9019
|
"div",
|
|
8732
9020
|
{
|
|
8733
9021
|
ref,
|
|
@@ -8743,11 +9031,11 @@ var Menu = (0, import_react30.forwardRef)(
|
|
|
8743
9031
|
}
|
|
8744
9032
|
);
|
|
8745
9033
|
Menu.displayName = "Menu";
|
|
8746
|
-
var MenuContent = (0,
|
|
9034
|
+
var MenuContent = (0, import_react31.forwardRef)(
|
|
8747
9035
|
({ className, children, variant = "menu", ...props }, ref) => {
|
|
8748
9036
|
const baseClasses = "w-full flex flex-row items-center gap-2";
|
|
8749
9037
|
const variantClasses = variant === "menu2" || variant === "menu-overflow" ? "overflow-x-auto scroll-smooth" : "";
|
|
8750
|
-
return /* @__PURE__ */ (0,
|
|
9038
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8751
9039
|
"ul",
|
|
8752
9040
|
{
|
|
8753
9041
|
ref,
|
|
@@ -8765,7 +9053,7 @@ var MenuContent = (0, import_react30.forwardRef)(
|
|
|
8765
9053
|
}
|
|
8766
9054
|
);
|
|
8767
9055
|
MenuContent.displayName = "MenuContent";
|
|
8768
|
-
var MenuItem = (0,
|
|
9056
|
+
var MenuItem = (0, import_react31.forwardRef)(
|
|
8769
9057
|
({
|
|
8770
9058
|
className,
|
|
8771
9059
|
children,
|
|
@@ -8799,7 +9087,7 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8799
9087
|
...props
|
|
8800
9088
|
};
|
|
8801
9089
|
const variants = {
|
|
8802
|
-
menu: /* @__PURE__ */ (0,
|
|
9090
|
+
menu: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8803
9091
|
"li",
|
|
8804
9092
|
{
|
|
8805
9093
|
"data-variant": "menu",
|
|
@@ -8814,7 +9102,7 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8814
9102
|
children
|
|
8815
9103
|
}
|
|
8816
9104
|
),
|
|
8817
|
-
menu2: /* @__PURE__ */ (0,
|
|
9105
|
+
menu2: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
8818
9106
|
"li",
|
|
8819
9107
|
{
|
|
8820
9108
|
"data-variant": "menu2",
|
|
@@ -8825,7 +9113,7 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8825
9113
|
`,
|
|
8826
9114
|
...commonProps,
|
|
8827
9115
|
children: [
|
|
8828
|
-
/* @__PURE__ */ (0,
|
|
9116
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8829
9117
|
"span",
|
|
8830
9118
|
{
|
|
8831
9119
|
className: cn(
|
|
@@ -8835,11 +9123,11 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8835
9123
|
children
|
|
8836
9124
|
}
|
|
8837
9125
|
),
|
|
8838
|
-
selectedValue === value && /* @__PURE__ */ (0,
|
|
9126
|
+
selectedValue === value && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "h-1 w-full bg-primary-950 rounded-lg" })
|
|
8839
9127
|
]
|
|
8840
9128
|
}
|
|
8841
9129
|
),
|
|
8842
|
-
"menu-overflow": /* @__PURE__ */ (0,
|
|
9130
|
+
"menu-overflow": /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
8843
9131
|
"li",
|
|
8844
9132
|
{
|
|
8845
9133
|
"data-variant": "menu-overflow",
|
|
@@ -8850,7 +9138,7 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8850
9138
|
`,
|
|
8851
9139
|
...commonProps,
|
|
8852
9140
|
children: [
|
|
8853
|
-
/* @__PURE__ */ (0,
|
|
9141
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8854
9142
|
"span",
|
|
8855
9143
|
{
|
|
8856
9144
|
className: cn(
|
|
@@ -8860,11 +9148,11 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8860
9148
|
children
|
|
8861
9149
|
}
|
|
8862
9150
|
),
|
|
8863
|
-
selectedValue === value && /* @__PURE__ */ (0,
|
|
9151
|
+
selectedValue === value && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "h-1 w-full bg-primary-950 rounded-lg" })
|
|
8864
9152
|
]
|
|
8865
9153
|
}
|
|
8866
9154
|
),
|
|
8867
|
-
breadcrumb: /* @__PURE__ */ (0,
|
|
9155
|
+
breadcrumb: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
8868
9156
|
"li",
|
|
8869
9157
|
{
|
|
8870
9158
|
"data-variant": "breadcrumb",
|
|
@@ -8876,7 +9164,7 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8876
9164
|
`,
|
|
8877
9165
|
...commonProps,
|
|
8878
9166
|
children: [
|
|
8879
|
-
/* @__PURE__ */ (0,
|
|
9167
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8880
9168
|
"span",
|
|
8881
9169
|
{
|
|
8882
9170
|
className: cn(
|
|
@@ -8886,8 +9174,8 @@ var MenuItem = (0, import_react30.forwardRef)(
|
|
|
8886
9174
|
children
|
|
8887
9175
|
}
|
|
8888
9176
|
),
|
|
8889
|
-
separator && /* @__PURE__ */ (0,
|
|
8890
|
-
|
|
9177
|
+
separator && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
9178
|
+
import_phosphor_react23.CaretRight,
|
|
8891
9179
|
{
|
|
8892
9180
|
size: 16,
|
|
8893
9181
|
className: "text-text-600",
|
|
@@ -8923,10 +9211,10 @@ var MenuOverflow = ({
|
|
|
8923
9211
|
onValueChange,
|
|
8924
9212
|
...props
|
|
8925
9213
|
}) => {
|
|
8926
|
-
const containerRef = (0,
|
|
8927
|
-
const [showLeftArrow, setShowLeftArrow] = (0,
|
|
8928
|
-
const [showRightArrow, setShowRightArrow] = (0,
|
|
8929
|
-
(0,
|
|
9214
|
+
const containerRef = (0, import_react31.useRef)(null);
|
|
9215
|
+
const [showLeftArrow, setShowLeftArrow] = (0, import_react31.useState)(false);
|
|
9216
|
+
const [showRightArrow, setShowRightArrow] = (0, import_react31.useState)(false);
|
|
9217
|
+
(0, import_react31.useEffect)(() => {
|
|
8930
9218
|
const checkScroll = () => internalCheckScroll(
|
|
8931
9219
|
containerRef.current,
|
|
8932
9220
|
setShowLeftArrow,
|
|
@@ -8941,25 +9229,25 @@ var MenuOverflow = ({
|
|
|
8941
9229
|
window.removeEventListener("resize", checkScroll);
|
|
8942
9230
|
};
|
|
8943
9231
|
}, []);
|
|
8944
|
-
return /* @__PURE__ */ (0,
|
|
9232
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
8945
9233
|
"div",
|
|
8946
9234
|
{
|
|
8947
9235
|
"data-testid": "menu-overflow-wrapper",
|
|
8948
9236
|
className: cn("relative w-full overflow-hidden", className),
|
|
8949
9237
|
children: [
|
|
8950
|
-
showLeftArrow && /* @__PURE__ */ (0,
|
|
9238
|
+
showLeftArrow && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
8951
9239
|
"button",
|
|
8952
9240
|
{
|
|
8953
9241
|
onClick: () => internalScroll(containerRef.current, "left"),
|
|
8954
9242
|
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",
|
|
8955
9243
|
"data-testid": "scroll-left-button",
|
|
8956
9244
|
children: [
|
|
8957
|
-
/* @__PURE__ */ (0,
|
|
8958
|
-
/* @__PURE__ */ (0,
|
|
9245
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_phosphor_react23.CaretLeft, { size: 16 }),
|
|
9246
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "sr-only", children: "Scroll left" })
|
|
8959
9247
|
]
|
|
8960
9248
|
}
|
|
8961
9249
|
),
|
|
8962
|
-
/* @__PURE__ */ (0,
|
|
9250
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8963
9251
|
Menu,
|
|
8964
9252
|
{
|
|
8965
9253
|
defaultValue,
|
|
@@ -8967,18 +9255,18 @@ var MenuOverflow = ({
|
|
|
8967
9255
|
value,
|
|
8968
9256
|
variant: "menu2",
|
|
8969
9257
|
...props,
|
|
8970
|
-
children: /* @__PURE__ */ (0,
|
|
9258
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(MenuContent, { ref: containerRef, variant: "menu2", children })
|
|
8971
9259
|
}
|
|
8972
9260
|
),
|
|
8973
|
-
showRightArrow && /* @__PURE__ */ (0,
|
|
9261
|
+
showRightArrow && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
8974
9262
|
"button",
|
|
8975
9263
|
{
|
|
8976
9264
|
onClick: () => internalScroll(containerRef.current, "right"),
|
|
8977
9265
|
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",
|
|
8978
9266
|
"data-testid": "scroll-right-button",
|
|
8979
9267
|
children: [
|
|
8980
|
-
/* @__PURE__ */ (0,
|
|
8981
|
-
/* @__PURE__ */ (0,
|
|
9268
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_phosphor_react23.CaretRight, { size: 16 }),
|
|
9269
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "sr-only", children: "Scroll right" })
|
|
8982
9270
|
]
|
|
8983
9271
|
}
|
|
8984
9272
|
)
|
|
@@ -8986,11 +9274,11 @@ var MenuOverflow = ({
|
|
|
8986
9274
|
}
|
|
8987
9275
|
);
|
|
8988
9276
|
};
|
|
8989
|
-
var injectStore5 = (children, store) =>
|
|
8990
|
-
if (!(0,
|
|
9277
|
+
var injectStore5 = (children, store) => import_react31.Children.map(children, (child) => {
|
|
9278
|
+
if (!(0, import_react31.isValidElement)(child)) return child;
|
|
8991
9279
|
const typedChild = child;
|
|
8992
9280
|
const shouldInject = typedChild.type === MenuItem;
|
|
8993
|
-
return (0,
|
|
9281
|
+
return (0, import_react31.cloneElement)(typedChild, {
|
|
8994
9282
|
...shouldInject ? { store } : {},
|
|
8995
9283
|
...typedChild.props.children ? { children: injectStore5(typedChild.props.children, store) } : {}
|
|
8996
9284
|
});
|
|
@@ -8998,13 +9286,13 @@ var injectStore5 = (children, store) => import_react30.Children.map(children, (c
|
|
|
8998
9286
|
var Menu_default = Menu;
|
|
8999
9287
|
|
|
9000
9288
|
// src/components/Card/Card.tsx
|
|
9001
|
-
var
|
|
9002
|
-
var
|
|
9289
|
+
var import_react33 = require("react");
|
|
9290
|
+
var import_phosphor_react24 = require("phosphor-react");
|
|
9003
9291
|
|
|
9004
9292
|
// src/components/IconRender/IconRender.tsx
|
|
9005
|
-
var
|
|
9293
|
+
var import_react32 = require("react");
|
|
9006
9294
|
var PhosphorIcons = __toESM(require("phosphor-react"));
|
|
9007
|
-
var
|
|
9295
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
9008
9296
|
var IconRender = ({
|
|
9009
9297
|
iconName,
|
|
9010
9298
|
color = "#000000",
|
|
@@ -9014,18 +9302,18 @@ var IconRender = ({
|
|
|
9014
9302
|
if (typeof iconName === "string") {
|
|
9015
9303
|
switch (iconName) {
|
|
9016
9304
|
case "Chat_PT":
|
|
9017
|
-
return /* @__PURE__ */ (0,
|
|
9305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatPT, { size, color });
|
|
9018
9306
|
case "Chat_EN":
|
|
9019
|
-
return /* @__PURE__ */ (0,
|
|
9307
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatEN, { size, color });
|
|
9020
9308
|
case "Chat_ES":
|
|
9021
|
-
return /* @__PURE__ */ (0,
|
|
9309
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChatES, { size, color });
|
|
9022
9310
|
default: {
|
|
9023
9311
|
const IconComponent = PhosphorIcons[iconName] || PhosphorIcons.Question;
|
|
9024
|
-
return /* @__PURE__ */ (0,
|
|
9312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(IconComponent, { size, color, weight });
|
|
9025
9313
|
}
|
|
9026
9314
|
}
|
|
9027
9315
|
} else {
|
|
9028
|
-
return (0,
|
|
9316
|
+
return (0, import_react32.cloneElement)(iconName, {
|
|
9029
9317
|
size,
|
|
9030
9318
|
color: "currentColor"
|
|
9031
9319
|
});
|
|
@@ -9034,7 +9322,7 @@ var IconRender = ({
|
|
|
9034
9322
|
var IconRender_default = IconRender;
|
|
9035
9323
|
|
|
9036
9324
|
// src/components/Card/Card.tsx
|
|
9037
|
-
var
|
|
9325
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
9038
9326
|
var CARD_BASE_CLASSES = {
|
|
9039
9327
|
default: "w-full bg-background border border-border-50 rounded-xl",
|
|
9040
9328
|
compact: "w-full bg-background border border-border-50 rounded-lg",
|
|
@@ -9060,7 +9348,7 @@ var CARD_CURSOR_CLASSES = {
|
|
|
9060
9348
|
default: "",
|
|
9061
9349
|
pointer: "cursor-pointer"
|
|
9062
9350
|
};
|
|
9063
|
-
var CardBase = (0,
|
|
9351
|
+
var CardBase = (0, import_react33.forwardRef)(
|
|
9064
9352
|
({
|
|
9065
9353
|
children,
|
|
9066
9354
|
variant = "default",
|
|
@@ -9076,7 +9364,7 @@ var CardBase = (0, import_react32.forwardRef)(
|
|
|
9076
9364
|
const minHeightClasses = CARD_MIN_HEIGHT_CLASSES[minHeight];
|
|
9077
9365
|
const layoutClasses = CARD_LAYOUT_CLASSES[layout];
|
|
9078
9366
|
const cursorClasses = CARD_CURSOR_CLASSES[cursor];
|
|
9079
|
-
return /* @__PURE__ */ (0,
|
|
9367
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9080
9368
|
"div",
|
|
9081
9369
|
{
|
|
9082
9370
|
ref,
|
|
@@ -9118,7 +9406,7 @@ var ACTION_HEADER_CLASSES = {
|
|
|
9118
9406
|
error: "text-error-300",
|
|
9119
9407
|
info: "text-info-300"
|
|
9120
9408
|
};
|
|
9121
|
-
var CardActivitiesResults = (0,
|
|
9409
|
+
var CardActivitiesResults = (0, import_react33.forwardRef)(
|
|
9122
9410
|
({
|
|
9123
9411
|
icon,
|
|
9124
9412
|
title,
|
|
@@ -9134,7 +9422,7 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9134
9422
|
const actionIconClasses = ACTION_ICON_CLASSES[action];
|
|
9135
9423
|
const actionSubTitleClasses = ACTION_SUBTITLE_CLASSES[action];
|
|
9136
9424
|
const actionHeaderClasses = ACTION_HEADER_CLASSES[action];
|
|
9137
|
-
return /* @__PURE__ */ (0,
|
|
9425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9138
9426
|
"div",
|
|
9139
9427
|
{
|
|
9140
9428
|
ref,
|
|
@@ -9144,7 +9432,7 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9144
9432
|
),
|
|
9145
9433
|
...props,
|
|
9146
9434
|
children: [
|
|
9147
|
-
/* @__PURE__ */ (0,
|
|
9435
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9148
9436
|
"div",
|
|
9149
9437
|
{
|
|
9150
9438
|
className: cn(
|
|
@@ -9153,7 +9441,7 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9153
9441
|
extended ? "rounded-t-xl" : "rounded-xl"
|
|
9154
9442
|
),
|
|
9155
9443
|
children: [
|
|
9156
|
-
/* @__PURE__ */ (0,
|
|
9444
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9157
9445
|
"span",
|
|
9158
9446
|
{
|
|
9159
9447
|
className: cn(
|
|
@@ -9163,7 +9451,7 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9163
9451
|
children: icon
|
|
9164
9452
|
}
|
|
9165
9453
|
),
|
|
9166
|
-
/* @__PURE__ */ (0,
|
|
9454
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9167
9455
|
Text_default,
|
|
9168
9456
|
{
|
|
9169
9457
|
size: "2xs",
|
|
@@ -9172,7 +9460,7 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9172
9460
|
children: title
|
|
9173
9461
|
}
|
|
9174
9462
|
),
|
|
9175
|
-
/* @__PURE__ */ (0,
|
|
9463
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9176
9464
|
"p",
|
|
9177
9465
|
{
|
|
9178
9466
|
className: cn("text-lg font-bold truncate", actionSubTitleClasses),
|
|
@@ -9182,8 +9470,8 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9182
9470
|
]
|
|
9183
9471
|
}
|
|
9184
9472
|
),
|
|
9185
|
-
extended && /* @__PURE__ */ (0,
|
|
9186
|
-
/* @__PURE__ */ (0,
|
|
9473
|
+
extended && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col items-center gap-2.5 pb-9.5 pt-2.5", children: [
|
|
9474
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9187
9475
|
"p",
|
|
9188
9476
|
{
|
|
9189
9477
|
className: cn(
|
|
@@ -9193,14 +9481,14 @@ var CardActivitiesResults = (0, import_react32.forwardRef)(
|
|
|
9193
9481
|
children: header
|
|
9194
9482
|
}
|
|
9195
9483
|
),
|
|
9196
|
-
/* @__PURE__ */ (0,
|
|
9484
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Badge_default, { size: "large", action: "info", children: description })
|
|
9197
9485
|
] })
|
|
9198
9486
|
]
|
|
9199
9487
|
}
|
|
9200
9488
|
);
|
|
9201
9489
|
}
|
|
9202
9490
|
);
|
|
9203
|
-
var CardQuestions = (0,
|
|
9491
|
+
var CardQuestions = (0, import_react33.forwardRef)(
|
|
9204
9492
|
({
|
|
9205
9493
|
header,
|
|
9206
9494
|
state = "undone",
|
|
@@ -9212,7 +9500,7 @@ var CardQuestions = (0, import_react32.forwardRef)(
|
|
|
9212
9500
|
const isDone = state === "done";
|
|
9213
9501
|
const stateLabel = isDone ? "Realizado" : "N\xE3o Realizado";
|
|
9214
9502
|
const buttonLabel = isDone ? "Ver Resultado" : "Responder";
|
|
9215
|
-
return /* @__PURE__ */ (0,
|
|
9503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9216
9504
|
CardBase,
|
|
9217
9505
|
{
|
|
9218
9506
|
ref,
|
|
@@ -9222,9 +9510,9 @@ var CardQuestions = (0, import_react32.forwardRef)(
|
|
|
9222
9510
|
className: cn("justify-between gap-4", className),
|
|
9223
9511
|
...props,
|
|
9224
9512
|
children: [
|
|
9225
|
-
/* @__PURE__ */ (0,
|
|
9226
|
-
/* @__PURE__ */ (0,
|
|
9227
|
-
/* @__PURE__ */ (0,
|
|
9513
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("section", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
9514
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "font-bold text-xs text-text-950 truncate", children: header }),
|
|
9515
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex flex-row gap-6 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9228
9516
|
Badge_default,
|
|
9229
9517
|
{
|
|
9230
9518
|
size: "medium",
|
|
@@ -9234,7 +9522,7 @@ var CardQuestions = (0, import_react32.forwardRef)(
|
|
|
9234
9522
|
}
|
|
9235
9523
|
) })
|
|
9236
9524
|
] }),
|
|
9237
|
-
/* @__PURE__ */ (0,
|
|
9525
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9238
9526
|
Button_default,
|
|
9239
9527
|
{
|
|
9240
9528
|
size: "extra-small",
|
|
@@ -9248,7 +9536,7 @@ var CardQuestions = (0, import_react32.forwardRef)(
|
|
|
9248
9536
|
);
|
|
9249
9537
|
}
|
|
9250
9538
|
);
|
|
9251
|
-
var CardProgress = (0,
|
|
9539
|
+
var CardProgress = (0, import_react33.forwardRef)(
|
|
9252
9540
|
({
|
|
9253
9541
|
header,
|
|
9254
9542
|
subhead,
|
|
@@ -9265,19 +9553,19 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9265
9553
|
}, ref) => {
|
|
9266
9554
|
const isHorizontal = direction === "horizontal";
|
|
9267
9555
|
const contentComponent = {
|
|
9268
|
-
horizontal: /* @__PURE__ */ (0,
|
|
9269
|
-
showDates && /* @__PURE__ */ (0,
|
|
9270
|
-
initialDate && /* @__PURE__ */ (0,
|
|
9271
|
-
/* @__PURE__ */ (0,
|
|
9272
|
-
/* @__PURE__ */ (0,
|
|
9556
|
+
horizontal: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
9557
|
+
showDates && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row gap-6 items-center", children: [
|
|
9558
|
+
initialDate && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "flex flex-row gap-1 items-center text-2xs", children: [
|
|
9559
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-800 font-semibold", children: "In\xEDcio" }),
|
|
9560
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-600", children: initialDate })
|
|
9273
9561
|
] }),
|
|
9274
|
-
endDate && /* @__PURE__ */ (0,
|
|
9275
|
-
/* @__PURE__ */ (0,
|
|
9276
|
-
/* @__PURE__ */ (0,
|
|
9562
|
+
endDate && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "flex flex-row gap-1 items-center text-2xs", children: [
|
|
9563
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-800 font-semibold", children: "Fim" }),
|
|
9564
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-600", children: endDate })
|
|
9277
9565
|
] })
|
|
9278
9566
|
] }),
|
|
9279
|
-
/* @__PURE__ */ (0,
|
|
9280
|
-
/* @__PURE__ */ (0,
|
|
9567
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "grid grid-cols-[1fr_auto] items-center gap-2", children: [
|
|
9568
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9281
9569
|
ProgressBar_default,
|
|
9282
9570
|
{
|
|
9283
9571
|
size: "small",
|
|
@@ -9286,7 +9574,7 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9286
9574
|
"data-testid": "progress-bar"
|
|
9287
9575
|
}
|
|
9288
9576
|
),
|
|
9289
|
-
/* @__PURE__ */ (0,
|
|
9577
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9290
9578
|
Text_default,
|
|
9291
9579
|
{
|
|
9292
9580
|
size: "xs",
|
|
@@ -9302,9 +9590,9 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9302
9590
|
)
|
|
9303
9591
|
] })
|
|
9304
9592
|
] }),
|
|
9305
|
-
vertical: /* @__PURE__ */ (0,
|
|
9593
|
+
vertical: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm text-text-800", children: subhead })
|
|
9306
9594
|
};
|
|
9307
|
-
return /* @__PURE__ */ (0,
|
|
9595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9308
9596
|
CardBase,
|
|
9309
9597
|
{
|
|
9310
9598
|
ref,
|
|
@@ -9315,7 +9603,7 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9315
9603
|
className: cn(isHorizontal ? "h-20" : "", className),
|
|
9316
9604
|
...props,
|
|
9317
9605
|
children: [
|
|
9318
|
-
/* @__PURE__ */ (0,
|
|
9606
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9319
9607
|
"div",
|
|
9320
9608
|
{
|
|
9321
9609
|
className: cn(
|
|
@@ -9328,7 +9616,7 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9328
9616
|
children: icon
|
|
9329
9617
|
}
|
|
9330
9618
|
),
|
|
9331
|
-
/* @__PURE__ */ (0,
|
|
9619
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9332
9620
|
"div",
|
|
9333
9621
|
{
|
|
9334
9622
|
className: cn(
|
|
@@ -9336,7 +9624,7 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9336
9624
|
!isHorizontal && "gap-4"
|
|
9337
9625
|
),
|
|
9338
9626
|
children: [
|
|
9339
|
-
/* @__PURE__ */ (0,
|
|
9627
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text_default, { size: "sm", weight: "bold", className: "text-text-950 truncate", children: header }),
|
|
9340
9628
|
contentComponent[direction]
|
|
9341
9629
|
]
|
|
9342
9630
|
}
|
|
@@ -9346,7 +9634,7 @@ var CardProgress = (0, import_react32.forwardRef)(
|
|
|
9346
9634
|
);
|
|
9347
9635
|
}
|
|
9348
9636
|
);
|
|
9349
|
-
var CardTopic = (0,
|
|
9637
|
+
var CardTopic = (0, import_react33.forwardRef)(
|
|
9350
9638
|
({
|
|
9351
9639
|
header,
|
|
9352
9640
|
subHead,
|
|
@@ -9356,7 +9644,7 @@ var CardTopic = (0, import_react32.forwardRef)(
|
|
|
9356
9644
|
className = "",
|
|
9357
9645
|
...props
|
|
9358
9646
|
}, ref) => {
|
|
9359
|
-
return /* @__PURE__ */ (0,
|
|
9647
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9360
9648
|
CardBase,
|
|
9361
9649
|
{
|
|
9362
9650
|
ref,
|
|
@@ -9367,13 +9655,13 @@ var CardTopic = (0, import_react32.forwardRef)(
|
|
|
9367
9655
|
className: cn("justify-center gap-2 py-2 px-4", className),
|
|
9368
9656
|
...props,
|
|
9369
9657
|
children: [
|
|
9370
|
-
subHead && /* @__PURE__ */ (0,
|
|
9371
|
-
/* @__PURE__ */ (0,
|
|
9372
|
-
index < subHead.length - 1 && /* @__PURE__ */ (0,
|
|
9658
|
+
subHead && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-text-600 text-2xs flex flex-row gap-1", children: subHead.map((text, index) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react33.Fragment, { children: [
|
|
9659
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { children: text }),
|
|
9660
|
+
index < subHead.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { children: "\u2022" })
|
|
9373
9661
|
] }, `${text} - ${index}`)) }),
|
|
9374
|
-
/* @__PURE__ */ (0,
|
|
9375
|
-
/* @__PURE__ */ (0,
|
|
9376
|
-
/* @__PURE__ */ (0,
|
|
9662
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm text-text-950 font-bold truncate", children: header }),
|
|
9663
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "grid grid-cols-[1fr_auto] items-center gap-2", children: [
|
|
9664
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9377
9665
|
ProgressBar_default,
|
|
9378
9666
|
{
|
|
9379
9667
|
size: "small",
|
|
@@ -9382,7 +9670,7 @@ var CardTopic = (0, import_react32.forwardRef)(
|
|
|
9382
9670
|
"data-testid": "progress-bar"
|
|
9383
9671
|
}
|
|
9384
9672
|
),
|
|
9385
|
-
showPercentage && /* @__PURE__ */ (0,
|
|
9673
|
+
showPercentage && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9386
9674
|
Text_default,
|
|
9387
9675
|
{
|
|
9388
9676
|
size: "xs",
|
|
@@ -9402,7 +9690,7 @@ var CardTopic = (0, import_react32.forwardRef)(
|
|
|
9402
9690
|
);
|
|
9403
9691
|
}
|
|
9404
9692
|
);
|
|
9405
|
-
var CardPerformance = (0,
|
|
9693
|
+
var CardPerformance = (0, import_react33.forwardRef)(
|
|
9406
9694
|
({
|
|
9407
9695
|
header,
|
|
9408
9696
|
progress,
|
|
@@ -9416,7 +9704,7 @@ var CardPerformance = (0, import_react32.forwardRef)(
|
|
|
9416
9704
|
...props
|
|
9417
9705
|
}, ref) => {
|
|
9418
9706
|
const hasProgress = progress !== void 0;
|
|
9419
|
-
return /* @__PURE__ */ (0,
|
|
9707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9420
9708
|
CardBase,
|
|
9421
9709
|
{
|
|
9422
9710
|
ref,
|
|
@@ -9430,10 +9718,10 @@ var CardPerformance = (0, import_react32.forwardRef)(
|
|
|
9430
9718
|
onClick: () => actionVariant == "caret" && onClickButton?.(valueButton),
|
|
9431
9719
|
...props,
|
|
9432
9720
|
children: [
|
|
9433
|
-
/* @__PURE__ */ (0,
|
|
9434
|
-
/* @__PURE__ */ (0,
|
|
9435
|
-
/* @__PURE__ */ (0,
|
|
9436
|
-
actionVariant === "button" && /* @__PURE__ */ (0,
|
|
9721
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full flex flex-col justify-between gap-2", children: [
|
|
9722
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row justify-between items-center gap-2", children: [
|
|
9723
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-lg font-bold text-text-950 truncate flex-1 min-w-0", children: header }),
|
|
9724
|
+
actionVariant === "button" && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9437
9725
|
Button_default,
|
|
9438
9726
|
{
|
|
9439
9727
|
variant: "outline",
|
|
@@ -9444,17 +9732,17 @@ var CardPerformance = (0, import_react32.forwardRef)(
|
|
|
9444
9732
|
}
|
|
9445
9733
|
)
|
|
9446
9734
|
] }),
|
|
9447
|
-
/* @__PURE__ */ (0,
|
|
9735
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-full", children: hasProgress ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9448
9736
|
ProgressBar_default,
|
|
9449
9737
|
{
|
|
9450
9738
|
value: progress,
|
|
9451
9739
|
label: `${progress}% ${labelProgress}`,
|
|
9452
9740
|
variant: progressVariant
|
|
9453
9741
|
}
|
|
9454
|
-
) : /* @__PURE__ */ (0,
|
|
9742
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-xs text-text-600 truncate", children: description }) })
|
|
9455
9743
|
] }),
|
|
9456
|
-
actionVariant == "caret" && /* @__PURE__ */ (0,
|
|
9457
|
-
|
|
9744
|
+
actionVariant == "caret" && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9745
|
+
import_phosphor_react24.CaretRight,
|
|
9458
9746
|
{
|
|
9459
9747
|
className: "size-4.5 text-text-800 cursor-pointer",
|
|
9460
9748
|
"data-testid": "caret-icon"
|
|
@@ -9465,7 +9753,7 @@ var CardPerformance = (0, import_react32.forwardRef)(
|
|
|
9465
9753
|
);
|
|
9466
9754
|
}
|
|
9467
9755
|
);
|
|
9468
|
-
var CardResults = (0,
|
|
9756
|
+
var CardResults = (0, import_react33.forwardRef)(
|
|
9469
9757
|
({
|
|
9470
9758
|
header,
|
|
9471
9759
|
correct_answers,
|
|
@@ -9477,7 +9765,7 @@ var CardResults = (0, import_react32.forwardRef)(
|
|
|
9477
9765
|
...props
|
|
9478
9766
|
}, ref) => {
|
|
9479
9767
|
const isRow = direction == "row";
|
|
9480
|
-
return /* @__PURE__ */ (0,
|
|
9768
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9481
9769
|
CardBase,
|
|
9482
9770
|
{
|
|
9483
9771
|
ref,
|
|
@@ -9487,7 +9775,7 @@ var CardResults = (0, import_react32.forwardRef)(
|
|
|
9487
9775
|
className: cn("items-stretch cursor-pointer pr-4", className),
|
|
9488
9776
|
...props,
|
|
9489
9777
|
children: [
|
|
9490
|
-
/* @__PURE__ */ (0,
|
|
9778
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9491
9779
|
"div",
|
|
9492
9780
|
{
|
|
9493
9781
|
className: cn(
|
|
@@ -9496,11 +9784,11 @@ var CardResults = (0, import_react32.forwardRef)(
|
|
|
9496
9784
|
style: {
|
|
9497
9785
|
backgroundColor: color
|
|
9498
9786
|
},
|
|
9499
|
-
children: /* @__PURE__ */ (0,
|
|
9787
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(IconRender_default, { iconName: icon, color: "currentColor", size: 20 })
|
|
9500
9788
|
}
|
|
9501
9789
|
),
|
|
9502
|
-
/* @__PURE__ */ (0,
|
|
9503
|
-
/* @__PURE__ */ (0,
|
|
9790
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full flex flex-row justify-between items-center", children: [
|
|
9791
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9504
9792
|
"div",
|
|
9505
9793
|
{
|
|
9506
9794
|
className: cn(
|
|
@@ -9508,28 +9796,28 @@ var CardResults = (0, import_react32.forwardRef)(
|
|
|
9508
9796
|
isRow ? "flex-row items-center gap-2" : "flex-col"
|
|
9509
9797
|
),
|
|
9510
9798
|
children: [
|
|
9511
|
-
/* @__PURE__ */ (0,
|
|
9512
|
-
/* @__PURE__ */ (0,
|
|
9513
|
-
/* @__PURE__ */ (0,
|
|
9799
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm font-bold text-text-950 flex-1", children: header }),
|
|
9800
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "flex flex-wrap flex-row gap-1 items-center", children: [
|
|
9801
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9514
9802
|
Badge_default,
|
|
9515
9803
|
{
|
|
9516
9804
|
action: "success",
|
|
9517
9805
|
variant: "solid",
|
|
9518
9806
|
size: "large",
|
|
9519
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
9807
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.CheckCircle, {}),
|
|
9520
9808
|
children: [
|
|
9521
9809
|
correct_answers,
|
|
9522
9810
|
" Corretas"
|
|
9523
9811
|
]
|
|
9524
9812
|
}
|
|
9525
9813
|
),
|
|
9526
|
-
/* @__PURE__ */ (0,
|
|
9814
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9527
9815
|
Badge_default,
|
|
9528
9816
|
{
|
|
9529
9817
|
action: "error",
|
|
9530
9818
|
variant: "solid",
|
|
9531
9819
|
size: "large",
|
|
9532
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
9820
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.XCircle, {}),
|
|
9533
9821
|
children: [
|
|
9534
9822
|
incorrect_answers,
|
|
9535
9823
|
" Incorretas"
|
|
@@ -9540,14 +9828,14 @@ var CardResults = (0, import_react32.forwardRef)(
|
|
|
9540
9828
|
]
|
|
9541
9829
|
}
|
|
9542
9830
|
),
|
|
9543
|
-
/* @__PURE__ */ (0,
|
|
9831
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.CaretRight, { className: "min-w-6 min-h-6 text-text-800" })
|
|
9544
9832
|
] })
|
|
9545
9833
|
]
|
|
9546
9834
|
}
|
|
9547
9835
|
);
|
|
9548
9836
|
}
|
|
9549
9837
|
);
|
|
9550
|
-
var CardStatus = (0,
|
|
9838
|
+
var CardStatus = (0, import_react33.forwardRef)(
|
|
9551
9839
|
({ header, className, status, label, ...props }, ref) => {
|
|
9552
9840
|
const getLabelBadge = (status2) => {
|
|
9553
9841
|
switch (status2) {
|
|
@@ -9566,13 +9854,13 @@ var CardStatus = (0, import_react32.forwardRef)(
|
|
|
9566
9854
|
const getIconBadge = (status2) => {
|
|
9567
9855
|
switch (status2) {
|
|
9568
9856
|
case "correct":
|
|
9569
|
-
return /* @__PURE__ */ (0,
|
|
9857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.CheckCircle, {});
|
|
9570
9858
|
case "incorrect":
|
|
9571
|
-
return /* @__PURE__ */ (0,
|
|
9859
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.XCircle, {});
|
|
9572
9860
|
case "pending":
|
|
9573
|
-
return /* @__PURE__ */ (0,
|
|
9861
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.Clock, {});
|
|
9574
9862
|
default:
|
|
9575
|
-
return /* @__PURE__ */ (0,
|
|
9863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.XCircle, {});
|
|
9576
9864
|
}
|
|
9577
9865
|
};
|
|
9578
9866
|
const getActionBadge = (status2) => {
|
|
@@ -9587,7 +9875,7 @@ var CardStatus = (0, import_react32.forwardRef)(
|
|
|
9587
9875
|
return "info";
|
|
9588
9876
|
}
|
|
9589
9877
|
};
|
|
9590
|
-
return /* @__PURE__ */ (0,
|
|
9878
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9591
9879
|
CardBase,
|
|
9592
9880
|
{
|
|
9593
9881
|
ref,
|
|
@@ -9596,10 +9884,10 @@ var CardStatus = (0, import_react32.forwardRef)(
|
|
|
9596
9884
|
minHeight: "medium",
|
|
9597
9885
|
className: cn("items-center cursor-pointer", className),
|
|
9598
9886
|
...props,
|
|
9599
|
-
children: /* @__PURE__ */ (0,
|
|
9600
|
-
/* @__PURE__ */ (0,
|
|
9601
|
-
/* @__PURE__ */ (0,
|
|
9602
|
-
status && /* @__PURE__ */ (0,
|
|
9887
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex justify-between w-full h-full flex-row items-center gap-2", children: [
|
|
9888
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm font-bold text-text-950 truncate flex-1 min-w-0", children: header }),
|
|
9889
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "flex flex-row gap-1 items-center flex-shrink-0", children: [
|
|
9890
|
+
status && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9603
9891
|
Badge_default,
|
|
9604
9892
|
{
|
|
9605
9893
|
action: getActionBadge(status),
|
|
@@ -9609,17 +9897,17 @@ var CardStatus = (0, import_react32.forwardRef)(
|
|
|
9609
9897
|
children: getLabelBadge(status)
|
|
9610
9898
|
}
|
|
9611
9899
|
),
|
|
9612
|
-
label && /* @__PURE__ */ (0,
|
|
9900
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm text-text-800", children: label })
|
|
9613
9901
|
] }),
|
|
9614
|
-
/* @__PURE__ */ (0,
|
|
9902
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.CaretRight, { className: "min-w-6 min-h-6 text-text-800 cursor-pointer flex-shrink-0 ml-2" })
|
|
9615
9903
|
] })
|
|
9616
9904
|
}
|
|
9617
9905
|
);
|
|
9618
9906
|
}
|
|
9619
9907
|
);
|
|
9620
|
-
var CardSettings = (0,
|
|
9908
|
+
var CardSettings = (0, import_react33.forwardRef)(
|
|
9621
9909
|
({ header, className, icon, ...props }, ref) => {
|
|
9622
|
-
return /* @__PURE__ */ (0,
|
|
9910
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9623
9911
|
CardBase,
|
|
9624
9912
|
{
|
|
9625
9913
|
ref,
|
|
@@ -9632,17 +9920,17 @@ var CardSettings = (0, import_react32.forwardRef)(
|
|
|
9632
9920
|
),
|
|
9633
9921
|
...props,
|
|
9634
9922
|
children: [
|
|
9635
|
-
/* @__PURE__ */ (0,
|
|
9636
|
-
/* @__PURE__ */ (0,
|
|
9637
|
-
/* @__PURE__ */ (0,
|
|
9923
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "[&>svg]:size-6", children: icon }),
|
|
9924
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "w-full text-sm truncate", children: header }),
|
|
9925
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.CaretRight, { size: 24, className: "cursor-pointer" })
|
|
9638
9926
|
]
|
|
9639
9927
|
}
|
|
9640
9928
|
);
|
|
9641
9929
|
}
|
|
9642
9930
|
);
|
|
9643
|
-
var CardSupport = (0,
|
|
9931
|
+
var CardSupport = (0, import_react33.forwardRef)(
|
|
9644
9932
|
({ header, className, direction = "col", children, ...props }, ref) => {
|
|
9645
|
-
return /* @__PURE__ */ (0,
|
|
9933
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9646
9934
|
CardBase,
|
|
9647
9935
|
{
|
|
9648
9936
|
ref,
|
|
@@ -9655,7 +9943,7 @@ var CardSupport = (0, import_react32.forwardRef)(
|
|
|
9655
9943
|
),
|
|
9656
9944
|
...props,
|
|
9657
9945
|
children: [
|
|
9658
|
-
/* @__PURE__ */ (0,
|
|
9946
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9659
9947
|
"div",
|
|
9660
9948
|
{
|
|
9661
9949
|
className: cn(
|
|
@@ -9663,18 +9951,18 @@ var CardSupport = (0, import_react32.forwardRef)(
|
|
|
9663
9951
|
direction == "col" ? "flex-col" : "flex-row items-center"
|
|
9664
9952
|
),
|
|
9665
9953
|
children: [
|
|
9666
|
-
/* @__PURE__ */ (0,
|
|
9667
|
-
/* @__PURE__ */ (0,
|
|
9954
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "w-full min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm text-text-950 font-bold truncate", children: header }) }),
|
|
9955
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "flex flex-row gap-1", children })
|
|
9668
9956
|
]
|
|
9669
9957
|
}
|
|
9670
9958
|
),
|
|
9671
|
-
/* @__PURE__ */ (0,
|
|
9959
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.CaretRight, { className: "text-text-800 cursor-pointer", size: 24 })
|
|
9672
9960
|
]
|
|
9673
9961
|
}
|
|
9674
9962
|
);
|
|
9675
9963
|
}
|
|
9676
9964
|
);
|
|
9677
|
-
var CardForum = (0,
|
|
9965
|
+
var CardForum = (0, import_react33.forwardRef)(
|
|
9678
9966
|
({
|
|
9679
9967
|
title,
|
|
9680
9968
|
content,
|
|
@@ -9688,7 +9976,7 @@ var CardForum = (0, import_react32.forwardRef)(
|
|
|
9688
9976
|
hour,
|
|
9689
9977
|
...props
|
|
9690
9978
|
}, ref) => {
|
|
9691
|
-
return /* @__PURE__ */ (0,
|
|
9979
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9692
9980
|
CardBase,
|
|
9693
9981
|
{
|
|
9694
9982
|
ref,
|
|
@@ -9699,7 +9987,7 @@ var CardForum = (0, import_react32.forwardRef)(
|
|
|
9699
9987
|
className: cn("w-auto h-auto gap-3", className),
|
|
9700
9988
|
...props,
|
|
9701
9989
|
children: [
|
|
9702
|
-
/* @__PURE__ */ (0,
|
|
9990
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9703
9991
|
"button",
|
|
9704
9992
|
{
|
|
9705
9993
|
type: "button",
|
|
@@ -9708,18 +9996,18 @@ var CardForum = (0, import_react32.forwardRef)(
|
|
|
9708
9996
|
className: "min-w-8 h-8 rounded-full bg-background-950"
|
|
9709
9997
|
}
|
|
9710
9998
|
),
|
|
9711
|
-
/* @__PURE__ */ (0,
|
|
9712
|
-
/* @__PURE__ */ (0,
|
|
9713
|
-
/* @__PURE__ */ (0,
|
|
9714
|
-
/* @__PURE__ */ (0,
|
|
9999
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
10000
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row gap-1 items-center flex-wrap", children: [
|
|
10001
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-xs font-semibold text-primary-700 truncate", children: title }),
|
|
10002
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("p", { className: "text-xs text-text-600", children: [
|
|
9715
10003
|
"\u2022 ",
|
|
9716
10004
|
date,
|
|
9717
10005
|
" \u2022 ",
|
|
9718
10006
|
hour
|
|
9719
10007
|
] })
|
|
9720
10008
|
] }),
|
|
9721
|
-
/* @__PURE__ */ (0,
|
|
9722
|
-
/* @__PURE__ */ (0,
|
|
10009
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-950 text-sm line-clamp-2 truncate", children: content }),
|
|
10010
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9723
10011
|
"button",
|
|
9724
10012
|
{
|
|
9725
10013
|
type: "button",
|
|
@@ -9727,8 +10015,8 @@ var CardForum = (0, import_react32.forwardRef)(
|
|
|
9727
10015
|
onClick: () => onClickComments?.(valueComments),
|
|
9728
10016
|
className: "text-text-600 flex flex-row gap-2 items-center",
|
|
9729
10017
|
children: [
|
|
9730
|
-
/* @__PURE__ */ (0,
|
|
9731
|
-
/* @__PURE__ */ (0,
|
|
10018
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.ChatCircleText, { "aria-hidden": "true", size: 16 }),
|
|
10019
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("p", { className: "text-xs", children: [
|
|
9732
10020
|
comments,
|
|
9733
10021
|
" respostas"
|
|
9734
10022
|
] })
|
|
@@ -9741,7 +10029,7 @@ var CardForum = (0, import_react32.forwardRef)(
|
|
|
9741
10029
|
);
|
|
9742
10030
|
}
|
|
9743
10031
|
);
|
|
9744
|
-
var CardAudio = (0,
|
|
10032
|
+
var CardAudio = (0, import_react33.forwardRef)(
|
|
9745
10033
|
({
|
|
9746
10034
|
src,
|
|
9747
10035
|
title,
|
|
@@ -9755,16 +10043,16 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9755
10043
|
className,
|
|
9756
10044
|
...props
|
|
9757
10045
|
}, ref) => {
|
|
9758
|
-
const [isPlaying, setIsPlaying] = (0,
|
|
9759
|
-
const [currentTime, setCurrentTime] = (0,
|
|
9760
|
-
const [duration, setDuration] = (0,
|
|
9761
|
-
const [volume, setVolume] = (0,
|
|
9762
|
-
const [showVolumeControl, setShowVolumeControl] = (0,
|
|
9763
|
-
const [showSpeedMenu, setShowSpeedMenu] = (0,
|
|
9764
|
-
const [playbackRate, setPlaybackRate] = (0,
|
|
9765
|
-
const audioRef = (0,
|
|
9766
|
-
const volumeControlRef = (0,
|
|
9767
|
-
const speedMenuRef = (0,
|
|
10046
|
+
const [isPlaying, setIsPlaying] = (0, import_react33.useState)(false);
|
|
10047
|
+
const [currentTime, setCurrentTime] = (0, import_react33.useState)(0);
|
|
10048
|
+
const [duration, setDuration] = (0, import_react33.useState)(0);
|
|
10049
|
+
const [volume, setVolume] = (0, import_react33.useState)(1);
|
|
10050
|
+
const [showVolumeControl, setShowVolumeControl] = (0, import_react33.useState)(false);
|
|
10051
|
+
const [showSpeedMenu, setShowSpeedMenu] = (0, import_react33.useState)(false);
|
|
10052
|
+
const [playbackRate, setPlaybackRate] = (0, import_react33.useState)(1);
|
|
10053
|
+
const audioRef = (0, import_react33.useRef)(null);
|
|
10054
|
+
const volumeControlRef = (0, import_react33.useRef)(null);
|
|
10055
|
+
const speedMenuRef = (0, import_react33.useRef)(null);
|
|
9768
10056
|
const formatTime2 = (time) => {
|
|
9769
10057
|
const minutes = Math.floor(time / 60);
|
|
9770
10058
|
const seconds = Math.floor(time % 60);
|
|
@@ -9831,14 +10119,14 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9831
10119
|
};
|
|
9832
10120
|
const getVolumeIcon = () => {
|
|
9833
10121
|
if (volume === 0) {
|
|
9834
|
-
return /* @__PURE__ */ (0,
|
|
10122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.SpeakerSimpleX, { size: 24 });
|
|
9835
10123
|
}
|
|
9836
10124
|
if (volume < 0.5) {
|
|
9837
|
-
return /* @__PURE__ */ (0,
|
|
10125
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.SpeakerLow, { size: 24 });
|
|
9838
10126
|
}
|
|
9839
|
-
return /* @__PURE__ */ (0,
|
|
10127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.SpeakerHigh, { size: 24 });
|
|
9840
10128
|
};
|
|
9841
|
-
(0,
|
|
10129
|
+
(0, import_react33.useEffect)(() => {
|
|
9842
10130
|
const handleClickOutside = (event) => {
|
|
9843
10131
|
if (volumeControlRef.current && !volumeControlRef.current.contains(event.target)) {
|
|
9844
10132
|
setShowVolumeControl(false);
|
|
@@ -9852,7 +10140,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9852
10140
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
9853
10141
|
};
|
|
9854
10142
|
}, []);
|
|
9855
|
-
return /* @__PURE__ */ (0,
|
|
10143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
9856
10144
|
CardBase,
|
|
9857
10145
|
{
|
|
9858
10146
|
ref,
|
|
@@ -9865,7 +10153,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9865
10153
|
),
|
|
9866
10154
|
...props,
|
|
9867
10155
|
children: [
|
|
9868
|
-
/* @__PURE__ */ (0,
|
|
10156
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9869
10157
|
"audio",
|
|
9870
10158
|
{
|
|
9871
10159
|
ref: audioRef,
|
|
@@ -9877,7 +10165,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9877
10165
|
onEnded: handleEnded,
|
|
9878
10166
|
"data-testid": "audio-element",
|
|
9879
10167
|
"aria-label": title,
|
|
9880
|
-
children: tracks ? tracks.map((track) => /* @__PURE__ */ (0,
|
|
10168
|
+
children: tracks ? tracks.map((track) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9881
10169
|
"track",
|
|
9882
10170
|
{
|
|
9883
10171
|
kind: track.kind,
|
|
@@ -9887,7 +10175,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9887
10175
|
default: track.default
|
|
9888
10176
|
},
|
|
9889
10177
|
track.src
|
|
9890
|
-
)) : /* @__PURE__ */ (0,
|
|
10178
|
+
)) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9891
10179
|
"track",
|
|
9892
10180
|
{
|
|
9893
10181
|
kind: "captions",
|
|
@@ -9898,7 +10186,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9898
10186
|
)
|
|
9899
10187
|
}
|
|
9900
10188
|
),
|
|
9901
|
-
/* @__PURE__ */ (0,
|
|
10189
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9902
10190
|
"button",
|
|
9903
10191
|
{
|
|
9904
10192
|
type: "button",
|
|
@@ -9906,14 +10194,14 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9906
10194
|
disabled: !src,
|
|
9907
10195
|
className: "cursor-pointer text-text-950 hover:text-primary-600 disabled:text-text-400 disabled:cursor-not-allowed",
|
|
9908
10196
|
"aria-label": isPlaying ? "Pausar" : "Reproduzir",
|
|
9909
|
-
children: isPlaying ? /* @__PURE__ */ (0,
|
|
9910
|
-
/* @__PURE__ */ (0,
|
|
9911
|
-
/* @__PURE__ */ (0,
|
|
9912
|
-
] }) }) : /* @__PURE__ */ (0,
|
|
10197
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-6 h-6 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex gap-0.5", children: [
|
|
10198
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-1 h-4 bg-current rounded-sm" }),
|
|
10199
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-1 h-4 bg-current rounded-sm" })
|
|
10200
|
+
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.Play, { size: 24 })
|
|
9913
10201
|
}
|
|
9914
10202
|
),
|
|
9915
|
-
/* @__PURE__ */ (0,
|
|
9916
|
-
/* @__PURE__ */ (0,
|
|
10203
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-800 text-md font-medium min-w-[2.5rem]", children: formatTime2(currentTime) }),
|
|
10204
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex-1 relative", "data-testid": "progress-bar", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9917
10205
|
"button",
|
|
9918
10206
|
{
|
|
9919
10207
|
type: "button",
|
|
@@ -9928,7 +10216,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9928
10216
|
}
|
|
9929
10217
|
},
|
|
9930
10218
|
"aria-label": "Barra de progresso do \xE1udio",
|
|
9931
|
-
children: /* @__PURE__ */ (0,
|
|
10219
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9932
10220
|
"div",
|
|
9933
10221
|
{
|
|
9934
10222
|
className: "h-full bg-primary-600 rounded-full transition-all duration-100",
|
|
@@ -9939,19 +10227,19 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9939
10227
|
)
|
|
9940
10228
|
}
|
|
9941
10229
|
) }),
|
|
9942
|
-
/* @__PURE__ */ (0,
|
|
9943
|
-
/* @__PURE__ */ (0,
|
|
9944
|
-
/* @__PURE__ */ (0,
|
|
10230
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-text-800 text-md font-medium min-w-[2.5rem]", children: formatTime2(duration) }),
|
|
10231
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "relative h-6", ref: volumeControlRef, children: [
|
|
10232
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9945
10233
|
"button",
|
|
9946
10234
|
{
|
|
9947
10235
|
type: "button",
|
|
9948
10236
|
onClick: toggleVolumeControl,
|
|
9949
10237
|
className: "cursor-pointer text-text-950 hover:text-primary-600",
|
|
9950
10238
|
"aria-label": "Controle de volume",
|
|
9951
|
-
children: /* @__PURE__ */ (0,
|
|
10239
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-6 h-6 flex items-center justify-center", children: getVolumeIcon() })
|
|
9952
10240
|
}
|
|
9953
10241
|
),
|
|
9954
|
-
showVolumeControl && /* @__PURE__ */ (0,
|
|
10242
|
+
showVolumeControl && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9955
10243
|
"button",
|
|
9956
10244
|
{
|
|
9957
10245
|
type: "button",
|
|
@@ -9961,7 +10249,7 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
9961
10249
|
setShowVolumeControl(false);
|
|
9962
10250
|
}
|
|
9963
10251
|
},
|
|
9964
|
-
children: /* @__PURE__ */ (0,
|
|
10252
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
9965
10253
|
"input",
|
|
9966
10254
|
{
|
|
9967
10255
|
type: "range",
|
|
@@ -10002,22 +10290,22 @@ var CardAudio = (0, import_react32.forwardRef)(
|
|
|
10002
10290
|
}
|
|
10003
10291
|
)
|
|
10004
10292
|
] }),
|
|
10005
|
-
/* @__PURE__ */ (0,
|
|
10006
|
-
/* @__PURE__ */ (0,
|
|
10293
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "relative h-6", ref: speedMenuRef, children: [
|
|
10294
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10007
10295
|
"button",
|
|
10008
10296
|
{
|
|
10009
10297
|
type: "button",
|
|
10010
10298
|
onClick: toggleSpeedMenu,
|
|
10011
10299
|
className: "cursor-pointer text-text-950 hover:text-primary-600",
|
|
10012
10300
|
"aria-label": "Op\xE7\xF5es de velocidade",
|
|
10013
|
-
children: /* @__PURE__ */ (0,
|
|
10301
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.DotsThreeVertical, { size: 24 })
|
|
10014
10302
|
}
|
|
10015
10303
|
),
|
|
10016
|
-
showSpeedMenu && /* @__PURE__ */ (0,
|
|
10304
|
+
showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime53.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_runtime53.jsx)("div", { className: "flex flex-col gap-1", children: [
|
|
10017
10305
|
{ speed: 1, label: "1x" },
|
|
10018
10306
|
{ speed: 1.5, label: "1.5x" },
|
|
10019
10307
|
{ speed: 2, label: "2x" }
|
|
10020
|
-
].map(({ speed, label }) => /* @__PURE__ */ (0,
|
|
10308
|
+
].map(({ speed, label }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10021
10309
|
"button",
|
|
10022
10310
|
{
|
|
10023
10311
|
type: "button",
|
|
@@ -10042,10 +10330,10 @@ var SIMULADO_BACKGROUND_CLASSES = {
|
|
|
10042
10330
|
simuladao: "bg-exam-3",
|
|
10043
10331
|
vestibular: "bg-exam-4"
|
|
10044
10332
|
};
|
|
10045
|
-
var CardSimulado = (0,
|
|
10333
|
+
var CardSimulado = (0, import_react33.forwardRef)(
|
|
10046
10334
|
({ title, duration, info, backgroundColor, className, ...props }, ref) => {
|
|
10047
10335
|
const backgroundClass = SIMULADO_BACKGROUND_CLASSES[backgroundColor];
|
|
10048
|
-
return /* @__PURE__ */ (0,
|
|
10336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10049
10337
|
CardBase,
|
|
10050
10338
|
{
|
|
10051
10339
|
ref,
|
|
@@ -10058,19 +10346,19 @@ var CardSimulado = (0, import_react32.forwardRef)(
|
|
|
10058
10346
|
className
|
|
10059
10347
|
),
|
|
10060
10348
|
...props,
|
|
10061
|
-
children: /* @__PURE__ */ (0,
|
|
10062
|
-
/* @__PURE__ */ (0,
|
|
10063
|
-
/* @__PURE__ */ (0,
|
|
10064
|
-
/* @__PURE__ */ (0,
|
|
10065
|
-
duration && /* @__PURE__ */ (0,
|
|
10066
|
-
/* @__PURE__ */ (0,
|
|
10067
|
-
/* @__PURE__ */ (0,
|
|
10349
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex justify-between items-center w-full gap-4", children: [
|
|
10350
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
10351
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text_default, { size: "lg", weight: "bold", className: "text-text-950 truncate", children: title }),
|
|
10352
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-4 text-text-700", children: [
|
|
10353
|
+
duration && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10354
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.Clock, { size: 16, className: "flex-shrink-0" }),
|
|
10355
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text_default, { size: "sm", children: duration })
|
|
10068
10356
|
] }),
|
|
10069
|
-
/* @__PURE__ */ (0,
|
|
10357
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text_default, { size: "sm", className: "truncate", children: info })
|
|
10070
10358
|
] })
|
|
10071
10359
|
] }),
|
|
10072
|
-
/* @__PURE__ */ (0,
|
|
10073
|
-
|
|
10360
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10361
|
+
import_phosphor_react24.CaretRight,
|
|
10074
10362
|
{
|
|
10075
10363
|
size: 24,
|
|
10076
10364
|
className: "text-text-800 flex-shrink-0",
|
|
@@ -10082,7 +10370,7 @@ var CardSimulado = (0, import_react32.forwardRef)(
|
|
|
10082
10370
|
);
|
|
10083
10371
|
}
|
|
10084
10372
|
);
|
|
10085
|
-
var CardTest = (0,
|
|
10373
|
+
var CardTest = (0, import_react33.forwardRef)(
|
|
10086
10374
|
({
|
|
10087
10375
|
title,
|
|
10088
10376
|
duration,
|
|
@@ -10114,7 +10402,7 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10114
10402
|
const interactiveClasses = isSelectable ? "cursor-pointer focus:outline-none focus:ring-2 focus:ring-primary-950 focus:ring-offset-2" : "";
|
|
10115
10403
|
const selectedClasses = selected ? "ring-2 ring-primary-950 ring-offset-2" : "";
|
|
10116
10404
|
if (isSelectable) {
|
|
10117
|
-
return /* @__PURE__ */ (0,
|
|
10405
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10118
10406
|
"button",
|
|
10119
10407
|
{
|
|
10120
10408
|
ref,
|
|
@@ -10126,8 +10414,8 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10126
10414
|
onKeyDown: handleKeyDown,
|
|
10127
10415
|
"aria-pressed": selected,
|
|
10128
10416
|
...props,
|
|
10129
|
-
children: /* @__PURE__ */ (0,
|
|
10130
|
-
/* @__PURE__ */ (0,
|
|
10417
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col justify-between gap-[27px] flex-grow min-h-[67px] w-full min-w-0", children: [
|
|
10418
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10131
10419
|
Text_default,
|
|
10132
10420
|
{
|
|
10133
10421
|
size: "md",
|
|
@@ -10136,10 +10424,10 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10136
10424
|
children: title
|
|
10137
10425
|
}
|
|
10138
10426
|
),
|
|
10139
|
-
/* @__PURE__ */ (0,
|
|
10140
|
-
duration && /* @__PURE__ */ (0,
|
|
10141
|
-
/* @__PURE__ */ (0,
|
|
10142
|
-
/* @__PURE__ */ (0,
|
|
10427
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row justify-start items-end gap-4 w-full", children: [
|
|
10428
|
+
duration && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row items-center gap-1 flex-shrink-0", children: [
|
|
10429
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.Clock, { size: 16, className: "text-text-700" }),
|
|
10430
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10143
10431
|
Text_default,
|
|
10144
10432
|
{
|
|
10145
10433
|
size: "sm",
|
|
@@ -10148,7 +10436,7 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10148
10436
|
}
|
|
10149
10437
|
)
|
|
10150
10438
|
] }),
|
|
10151
|
-
/* @__PURE__ */ (0,
|
|
10439
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10152
10440
|
Text_default,
|
|
10153
10441
|
{
|
|
10154
10442
|
size: "sm",
|
|
@@ -10161,14 +10449,14 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10161
10449
|
}
|
|
10162
10450
|
);
|
|
10163
10451
|
}
|
|
10164
|
-
return /* @__PURE__ */ (0,
|
|
10452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10165
10453
|
"div",
|
|
10166
10454
|
{
|
|
10167
10455
|
ref,
|
|
10168
10456
|
className: cn(`${baseClasses} ${className}`.trim()),
|
|
10169
10457
|
...props,
|
|
10170
|
-
children: /* @__PURE__ */ (0,
|
|
10171
|
-
/* @__PURE__ */ (0,
|
|
10458
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col justify-between gap-[27px] flex-grow min-h-[67px] w-full min-w-0", children: [
|
|
10459
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10172
10460
|
Text_default,
|
|
10173
10461
|
{
|
|
10174
10462
|
size: "md",
|
|
@@ -10177,10 +10465,10 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10177
10465
|
children: title
|
|
10178
10466
|
}
|
|
10179
10467
|
),
|
|
10180
|
-
/* @__PURE__ */ (0,
|
|
10181
|
-
duration && /* @__PURE__ */ (0,
|
|
10182
|
-
/* @__PURE__ */ (0,
|
|
10183
|
-
/* @__PURE__ */ (0,
|
|
10468
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row justify-start items-end gap-4 w-full", children: [
|
|
10469
|
+
duration && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-row items-center gap-1 flex-shrink-0", children: [
|
|
10470
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_phosphor_react24.Clock, { size: 16, className: "text-text-700" }),
|
|
10471
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10184
10472
|
Text_default,
|
|
10185
10473
|
{
|
|
10186
10474
|
size: "sm",
|
|
@@ -10189,7 +10477,7 @@ var CardTest = (0, import_react32.forwardRef)(
|
|
|
10189
10477
|
}
|
|
10190
10478
|
)
|
|
10191
10479
|
] }),
|
|
10192
|
-
/* @__PURE__ */ (0,
|
|
10480
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10193
10481
|
Text_default,
|
|
10194
10482
|
{
|
|
10195
10483
|
size: "sm",
|
|
@@ -10225,15 +10513,15 @@ var SIMULATION_TYPE_STYLES = {
|
|
|
10225
10513
|
text: "Vestibular"
|
|
10226
10514
|
}
|
|
10227
10515
|
};
|
|
10228
|
-
var CardSimulationHistory = (0,
|
|
10229
|
-
return /* @__PURE__ */ (0,
|
|
10516
|
+
var CardSimulationHistory = (0, import_react33.forwardRef)(({ data, onSimulationClick, className, ...props }, ref) => {
|
|
10517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10230
10518
|
"div",
|
|
10231
10519
|
{
|
|
10232
10520
|
ref,
|
|
10233
10521
|
className: cn("w-full max-w-[992px] h-auto", className),
|
|
10234
10522
|
...props,
|
|
10235
|
-
children: /* @__PURE__ */ (0,
|
|
10236
|
-
data.map((section, sectionIndex) => /* @__PURE__ */ (0,
|
|
10523
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-0", children: [
|
|
10524
|
+
data.map((section, sectionIndex) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
10237
10525
|
"div",
|
|
10238
10526
|
{
|
|
10239
10527
|
className: cn(
|
|
@@ -10241,7 +10529,7 @@ var CardSimulationHistory = (0, import_react32.forwardRef)(({ data, onSimulation
|
|
|
10241
10529
|
sectionIndex === 0 ? "rounded-t-3xl" : ""
|
|
10242
10530
|
),
|
|
10243
10531
|
children: [
|
|
10244
|
-
/* @__PURE__ */ (0,
|
|
10532
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10245
10533
|
Text_default,
|
|
10246
10534
|
{
|
|
10247
10535
|
size: "xs",
|
|
@@ -10250,9 +10538,9 @@ var CardSimulationHistory = (0, import_react32.forwardRef)(({ data, onSimulation
|
|
|
10250
10538
|
children: section.date
|
|
10251
10539
|
}
|
|
10252
10540
|
),
|
|
10253
|
-
/* @__PURE__ */ (0,
|
|
10541
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex flex-col gap-2 flex-1", children: section.simulations.map((simulation) => {
|
|
10254
10542
|
const typeStyles = SIMULATION_TYPE_STYLES[simulation.type];
|
|
10255
|
-
return /* @__PURE__ */ (0,
|
|
10543
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10256
10544
|
CardBase,
|
|
10257
10545
|
{
|
|
10258
10546
|
layout: "horizontal",
|
|
@@ -10264,9 +10552,9 @@ var CardSimulationHistory = (0, import_react32.forwardRef)(({ data, onSimulation
|
|
|
10264
10552
|
transition-shadow duration-200 h-auto min-h-[61px]`
|
|
10265
10553
|
),
|
|
10266
10554
|
onClick: () => onSimulationClick?.(simulation),
|
|
10267
|
-
children: /* @__PURE__ */ (0,
|
|
10268
|
-
/* @__PURE__ */ (0,
|
|
10269
|
-
/* @__PURE__ */ (0,
|
|
10555
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex justify-between items-center w-full gap-2", children: [
|
|
10556
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-wrap flex-col justify-between sm:flex-row gap-2 flex-1 min-w-0", children: [
|
|
10557
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10270
10558
|
Text_default,
|
|
10271
10559
|
{
|
|
10272
10560
|
size: "lg",
|
|
@@ -10275,8 +10563,8 @@ var CardSimulationHistory = (0, import_react32.forwardRef)(({ data, onSimulation
|
|
|
10275
10563
|
children: simulation.title
|
|
10276
10564
|
}
|
|
10277
10565
|
),
|
|
10278
|
-
/* @__PURE__ */ (0,
|
|
10279
|
-
/* @__PURE__ */ (0,
|
|
10566
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
10567
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10280
10568
|
Badge_default,
|
|
10281
10569
|
{
|
|
10282
10570
|
variant: "examsOutlined",
|
|
@@ -10285,11 +10573,11 @@ var CardSimulationHistory = (0, import_react32.forwardRef)(({ data, onSimulation
|
|
|
10285
10573
|
children: typeStyles.text
|
|
10286
10574
|
}
|
|
10287
10575
|
),
|
|
10288
|
-
/* @__PURE__ */ (0,
|
|
10576
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text_default, { size: "sm", className: "text-text-800 truncate", children: simulation.info })
|
|
10289
10577
|
] })
|
|
10290
10578
|
] }),
|
|
10291
|
-
/* @__PURE__ */ (0,
|
|
10292
|
-
|
|
10579
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10580
|
+
import_phosphor_react24.CaretRight,
|
|
10293
10581
|
{
|
|
10294
10582
|
size: 24,
|
|
10295
10583
|
className: "text-text-800 flex-shrink-0",
|
|
@@ -10304,15 +10592,15 @@ var CardSimulationHistory = (0, import_react32.forwardRef)(({ data, onSimulation
|
|
|
10304
10592
|
]
|
|
10305
10593
|
}
|
|
10306
10594
|
) }, section.date)),
|
|
10307
|
-
data.length > 0 && /* @__PURE__ */ (0,
|
|
10595
|
+
data.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "w-full h-6 bg-background rounded-b-3xl" })
|
|
10308
10596
|
] })
|
|
10309
10597
|
}
|
|
10310
10598
|
);
|
|
10311
10599
|
});
|
|
10312
10600
|
|
|
10313
10601
|
// src/components/StatisticsCard/StatisticsCard.tsx
|
|
10314
|
-
var
|
|
10315
|
-
var
|
|
10602
|
+
var import_phosphor_react25 = require("phosphor-react");
|
|
10603
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10316
10604
|
var VARIANT_STYLES = {
|
|
10317
10605
|
high: "bg-success-background",
|
|
10318
10606
|
medium: "bg-warning-background",
|
|
@@ -10326,12 +10614,12 @@ var VALUE_TEXT_COLORS = {
|
|
|
10326
10614
|
total: "text-info-700"
|
|
10327
10615
|
};
|
|
10328
10616
|
var StatCard = ({ item, showPlaceholder = false }) => {
|
|
10329
|
-
return /* @__PURE__ */ (0,
|
|
10617
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10330
10618
|
"div",
|
|
10331
10619
|
{
|
|
10332
10620
|
className: `rounded-xl py-[17px] px-6 min-h-[105px] flex flex-col justify-center items-start gap-1 ${VARIANT_STYLES[item.variant]}`,
|
|
10333
10621
|
children: [
|
|
10334
|
-
/* @__PURE__ */ (0,
|
|
10622
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10335
10623
|
Text_default,
|
|
10336
10624
|
{
|
|
10337
10625
|
size: "4xl",
|
|
@@ -10340,7 +10628,7 @@ var StatCard = ({ item, showPlaceholder = false }) => {
|
|
|
10340
10628
|
children: showPlaceholder ? "-" : item.value
|
|
10341
10629
|
}
|
|
10342
10630
|
),
|
|
10343
|
-
/* @__PURE__ */ (0,
|
|
10631
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10344
10632
|
Text_default,
|
|
10345
10633
|
{
|
|
10346
10634
|
size: "xs",
|
|
@@ -10375,13 +10663,13 @@ var StatisticsCard = ({
|
|
|
10375
10663
|
}) => {
|
|
10376
10664
|
const hasData = data && data.length > 0;
|
|
10377
10665
|
const gridColumnsClass = hasData ? getGridColumnsClass(data.length) : "";
|
|
10378
|
-
return /* @__PURE__ */ (0,
|
|
10666
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10379
10667
|
"div",
|
|
10380
10668
|
{
|
|
10381
10669
|
className: `bg-background rounded-xl p-4 h-auto lg:h-[185px] flex flex-col gap-2 ${className}`,
|
|
10382
10670
|
children: [
|
|
10383
|
-
/* @__PURE__ */ (0,
|
|
10384
|
-
/* @__PURE__ */ (0,
|
|
10671
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex flex-row justify-between items-center gap-4", children: [
|
|
10672
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10385
10673
|
Text_default,
|
|
10386
10674
|
{
|
|
10387
10675
|
as: "h3",
|
|
@@ -10392,22 +10680,22 @@ var StatisticsCard = ({
|
|
|
10392
10680
|
children: title
|
|
10393
10681
|
}
|
|
10394
10682
|
),
|
|
10395
|
-
dropdownOptions && dropdownOptions.length > 0 && /* @__PURE__ */ (0,
|
|
10683
|
+
dropdownOptions && dropdownOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "w-[120px] min-w-[90px] sm:shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10396
10684
|
Select_default,
|
|
10397
10685
|
{
|
|
10398
10686
|
value: selectedDropdownValue,
|
|
10399
10687
|
onValueChange: onDropdownChange,
|
|
10400
10688
|
size: "medium",
|
|
10401
10689
|
children: [
|
|
10402
|
-
/* @__PURE__ */ (0,
|
|
10690
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10403
10691
|
SelectTrigger,
|
|
10404
10692
|
{
|
|
10405
10693
|
className: "border border-border-300 rounded [&>span]:whitespace-nowrap [&>span]:overflow-hidden [&>span]:text-ellipsis",
|
|
10406
10694
|
"aria-label": dropdownAriaLabel,
|
|
10407
|
-
children: /* @__PURE__ */ (0,
|
|
10695
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(SelectValue, { placeholder: selectPlaceholder })
|
|
10408
10696
|
}
|
|
10409
10697
|
),
|
|
10410
|
-
/* @__PURE__ */ (0,
|
|
10698
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(SelectContent, { className: "min-w-[120px]", children: dropdownOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10411
10699
|
SelectItem,
|
|
10412
10700
|
{
|
|
10413
10701
|
value: option.value,
|
|
@@ -10420,11 +10708,11 @@ var StatisticsCard = ({
|
|
|
10420
10708
|
}
|
|
10421
10709
|
) })
|
|
10422
10710
|
] }),
|
|
10423
|
-
hasData ? /* @__PURE__ */ (0,
|
|
10711
|
+
hasData ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10424
10712
|
"div",
|
|
10425
10713
|
{
|
|
10426
10714
|
className: `grid grid-cols-1 sm:grid-cols-2 gap-[13px] ${gridColumnsClass}`,
|
|
10427
|
-
children: data.map((item, index) => /* @__PURE__ */ (0,
|
|
10715
|
+
children: data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10428
10716
|
StatCard,
|
|
10429
10717
|
{
|
|
10430
10718
|
item,
|
|
@@ -10433,8 +10721,8 @@ var StatisticsCard = ({
|
|
|
10433
10721
|
`${item.variant}-${item.label}-${index}`
|
|
10434
10722
|
))
|
|
10435
10723
|
}
|
|
10436
|
-
) : /* @__PURE__ */ (0,
|
|
10437
|
-
/* @__PURE__ */ (0,
|
|
10724
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime54.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: [
|
|
10725
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10438
10726
|
Text_default,
|
|
10439
10727
|
{
|
|
10440
10728
|
size: "sm",
|
|
@@ -10443,14 +10731,14 @@ var StatisticsCard = ({
|
|
|
10443
10731
|
children: emptyStateMessage
|
|
10444
10732
|
}
|
|
10445
10733
|
),
|
|
10446
|
-
onEmptyStateButtonClick && /* @__PURE__ */ (0,
|
|
10734
|
+
onEmptyStateButtonClick && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10447
10735
|
Button_default,
|
|
10448
10736
|
{
|
|
10449
10737
|
variant: "outline",
|
|
10450
10738
|
action: "primary",
|
|
10451
10739
|
size: "small",
|
|
10452
10740
|
onClick: onEmptyStateButtonClick,
|
|
10453
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
10741
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_phosphor_react25.Plus, { size: 16, weight: "bold" }),
|
|
10454
10742
|
children: emptyStateButtonText
|
|
10455
10743
|
}
|
|
10456
10744
|
)
|
|
@@ -10461,7 +10749,7 @@ var StatisticsCard = ({
|
|
|
10461
10749
|
};
|
|
10462
10750
|
|
|
10463
10751
|
// src/components/NotFound/NotFound.tsx
|
|
10464
|
-
var
|
|
10752
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
10465
10753
|
var NotFound = ({
|
|
10466
10754
|
title,
|
|
10467
10755
|
description,
|
|
@@ -10504,22 +10792,22 @@ var NotFound = ({
|
|
|
10504
10792
|
const errorTitle = title || getDefaultTitle();
|
|
10505
10793
|
const errorDescription = description || getDefaultDescription();
|
|
10506
10794
|
const errorCode = getErrorCode();
|
|
10507
|
-
return /* @__PURE__ */ (0,
|
|
10795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
10508
10796
|
"div",
|
|
10509
10797
|
{
|
|
10510
10798
|
className: cn(
|
|
10511
10799
|
"flex flex-col w-full h-screen items-center justify-center bg-background-50 px-4",
|
|
10512
10800
|
className
|
|
10513
10801
|
),
|
|
10514
|
-
children: /* @__PURE__ */ (0,
|
|
10802
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
10515
10803
|
"main",
|
|
10516
10804
|
{
|
|
10517
10805
|
role: "main",
|
|
10518
10806
|
"aria-labelledby": "error-title",
|
|
10519
10807
|
"aria-describedby": "error-description",
|
|
10520
10808
|
className: "flex flex-col items-center text-center max-w-md space-y-6",
|
|
10521
|
-
children: /* @__PURE__ */ (0,
|
|
10522
|
-
/* @__PURE__ */ (0,
|
|
10809
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("section", { "aria-label": `Erro ${errorCode}`, children: [
|
|
10810
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
10523
10811
|
"div",
|
|
10524
10812
|
{
|
|
10525
10813
|
className: "text-8xl font-bold text-primary-300 select-none",
|
|
@@ -10527,8 +10815,8 @@ var NotFound = ({
|
|
|
10527
10815
|
children: errorCode
|
|
10528
10816
|
}
|
|
10529
10817
|
),
|
|
10530
|
-
/* @__PURE__ */ (0,
|
|
10531
|
-
/* @__PURE__ */ (0,
|
|
10818
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("header", { className: "space-y-2", children: [
|
|
10819
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
10532
10820
|
Text_default,
|
|
10533
10821
|
{
|
|
10534
10822
|
size: "xl",
|
|
@@ -10539,9 +10827,9 @@ var NotFound = ({
|
|
|
10539
10827
|
children: errorTitle
|
|
10540
10828
|
}
|
|
10541
10829
|
),
|
|
10542
|
-
/* @__PURE__ */ (0,
|
|
10830
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text_default, { size: "md", className: "text-text-600", id: "error-description", children: errorDescription })
|
|
10543
10831
|
] }),
|
|
10544
|
-
onButtonClick && /* @__PURE__ */ (0,
|
|
10832
|
+
onButtonClick && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("nav", { "aria-label": "Navega\xE7\xE3o de erro", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
10545
10833
|
Button_default,
|
|
10546
10834
|
{
|
|
10547
10835
|
onClick: handleButtonClick,
|
|
@@ -10562,14 +10850,14 @@ var NotFound = ({
|
|
|
10562
10850
|
var NotFound_default = NotFound;
|
|
10563
10851
|
|
|
10564
10852
|
// src/components/VideoPlayer/VideoPlayer.tsx
|
|
10565
|
-
var
|
|
10853
|
+
var import_react35 = require("react");
|
|
10566
10854
|
var import_react_dom = require("react-dom");
|
|
10567
|
-
var
|
|
10855
|
+
var import_phosphor_react27 = require("phosphor-react");
|
|
10568
10856
|
|
|
10569
10857
|
// src/components/DownloadButton/DownloadButton.tsx
|
|
10570
|
-
var
|
|
10571
|
-
var
|
|
10572
|
-
var
|
|
10858
|
+
var import_react34 = require("react");
|
|
10859
|
+
var import_phosphor_react26 = require("phosphor-react");
|
|
10860
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
10573
10861
|
var getMimeType = (url) => {
|
|
10574
10862
|
const extension = getFileExtension(url);
|
|
10575
10863
|
const mimeTypes = {
|
|
@@ -10644,13 +10932,13 @@ var DownloadButton = ({
|
|
|
10644
10932
|
lessonTitle = "aula",
|
|
10645
10933
|
disabled = false
|
|
10646
10934
|
}) => {
|
|
10647
|
-
const [isDownloading, setIsDownloading] = (0,
|
|
10648
|
-
const isValidUrl = (0,
|
|
10935
|
+
const [isDownloading, setIsDownloading] = (0, import_react34.useState)(false);
|
|
10936
|
+
const isValidUrl = (0, import_react34.useCallback)((url) => {
|
|
10649
10937
|
return Boolean(
|
|
10650
10938
|
url && url.trim() !== "" && url !== "undefined" && url !== "null"
|
|
10651
10939
|
);
|
|
10652
10940
|
}, []);
|
|
10653
|
-
const getAvailableContent = (0,
|
|
10941
|
+
const getAvailableContent = (0, import_react34.useCallback)(() => {
|
|
10654
10942
|
const downloads = [];
|
|
10655
10943
|
if (isValidUrl(content.urlDoc)) {
|
|
10656
10944
|
downloads.push({
|
|
@@ -10685,7 +10973,7 @@ var DownloadButton = ({
|
|
|
10685
10973
|
}
|
|
10686
10974
|
return downloads;
|
|
10687
10975
|
}, [content, isValidUrl]);
|
|
10688
|
-
const handleDownload = (0,
|
|
10976
|
+
const handleDownload = (0, import_react34.useCallback)(async () => {
|
|
10689
10977
|
if (disabled || isDownloading) return;
|
|
10690
10978
|
const availableContent = getAvailableContent();
|
|
10691
10979
|
if (availableContent.length === 0) {
|
|
@@ -10726,10 +11014,10 @@ var DownloadButton = ({
|
|
|
10726
11014
|
if (!hasContent) {
|
|
10727
11015
|
return null;
|
|
10728
11016
|
}
|
|
10729
|
-
return /* @__PURE__ */ (0,
|
|
11017
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: cn("flex items-center", className), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
10730
11018
|
IconButton_default,
|
|
10731
11019
|
{
|
|
10732
|
-
icon: /* @__PURE__ */ (0,
|
|
11020
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_phosphor_react26.DownloadSimple, { size: 24 }),
|
|
10733
11021
|
onClick: handleDownload,
|
|
10734
11022
|
disabled: disabled || isDownloading,
|
|
10735
11023
|
"aria-label": (() => {
|
|
@@ -10750,7 +11038,7 @@ var DownloadButton = ({
|
|
|
10750
11038
|
var DownloadButton_default = DownloadButton;
|
|
10751
11039
|
|
|
10752
11040
|
// src/components/VideoPlayer/VideoPlayer.tsx
|
|
10753
|
-
var
|
|
11041
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
10754
11042
|
var CONTROLS_HIDE_TIMEOUT = 3e3;
|
|
10755
11043
|
var LEAVE_HIDE_TIMEOUT = 1e3;
|
|
10756
11044
|
var INIT_DELAY = 100;
|
|
@@ -10766,7 +11054,7 @@ var ProgressBar2 = ({
|
|
|
10766
11054
|
progressPercentage,
|
|
10767
11055
|
onSeek,
|
|
10768
11056
|
className = "px-4 pb-2"
|
|
10769
|
-
}) => /* @__PURE__ */ (0,
|
|
11057
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10770
11058
|
"input",
|
|
10771
11059
|
{
|
|
10772
11060
|
type: "range",
|
|
@@ -10788,17 +11076,17 @@ var VolumeControls = ({
|
|
|
10788
11076
|
onToggleMute,
|
|
10789
11077
|
iconSize = 24,
|
|
10790
11078
|
showSlider = true
|
|
10791
|
-
}) => /* @__PURE__ */ (0,
|
|
10792
|
-
/* @__PURE__ */ (0,
|
|
11079
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11080
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10793
11081
|
IconButton_default,
|
|
10794
11082
|
{
|
|
10795
|
-
icon: isMuted ? /* @__PURE__ */ (0,
|
|
11083
|
+
icon: isMuted ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.SpeakerSlash, { size: iconSize }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.SpeakerHigh, { size: iconSize }),
|
|
10796
11084
|
onClick: onToggleMute,
|
|
10797
11085
|
"aria-label": isMuted ? "Unmute" : "Mute",
|
|
10798
11086
|
className: "!bg-transparent !text-white hover:!bg-white/20"
|
|
10799
11087
|
}
|
|
10800
11088
|
),
|
|
10801
|
-
showSlider && /* @__PURE__ */ (0,
|
|
11089
|
+
showSlider && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10802
11090
|
"input",
|
|
10803
11091
|
{
|
|
10804
11092
|
type: "range",
|
|
@@ -10823,9 +11111,9 @@ var SpeedMenu = ({
|
|
|
10823
11111
|
iconSize = 24,
|
|
10824
11112
|
isTinyMobile = false
|
|
10825
11113
|
}) => {
|
|
10826
|
-
const buttonRef = (0,
|
|
10827
|
-
const speedMenuContainerRef = (0,
|
|
10828
|
-
const speedMenuRef = (0,
|
|
11114
|
+
const buttonRef = (0, import_react35.useRef)(null);
|
|
11115
|
+
const speedMenuContainerRef = (0, import_react35.useRef)(null);
|
|
11116
|
+
const speedMenuRef = (0, import_react35.useRef)(null);
|
|
10829
11117
|
const getMenuPosition = () => {
|
|
10830
11118
|
if (!buttonRef.current) return { top: 0, left: 0 };
|
|
10831
11119
|
const rect = buttonRef.current.getBoundingClientRect();
|
|
@@ -10839,7 +11127,7 @@ var SpeedMenu = ({
|
|
|
10839
11127
|
};
|
|
10840
11128
|
};
|
|
10841
11129
|
const position = getMenuPosition();
|
|
10842
|
-
(0,
|
|
11130
|
+
(0, import_react35.useEffect)(() => {
|
|
10843
11131
|
const handleClickOutside = (event) => {
|
|
10844
11132
|
const target = event.target;
|
|
10845
11133
|
const isOutsideContainer = speedMenuContainerRef.current && !speedMenuContainerRef.current.contains(target);
|
|
@@ -10855,7 +11143,7 @@ var SpeedMenu = ({
|
|
|
10855
11143
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
10856
11144
|
};
|
|
10857
11145
|
}, [showSpeedMenu, onToggleMenu]);
|
|
10858
|
-
const menuContent = /* @__PURE__ */ (0,
|
|
11146
|
+
const menuContent = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10859
11147
|
"div",
|
|
10860
11148
|
{
|
|
10861
11149
|
ref: speedMenuRef,
|
|
@@ -10866,7 +11154,7 @@ var SpeedMenu = ({
|
|
|
10866
11154
|
top: `${position.top}px`,
|
|
10867
11155
|
left: `${position.left}px`
|
|
10868
11156
|
},
|
|
10869
|
-
children: [0.5, 0.75, 1, 1.25, 1.5, 2].map((speed) => /* @__PURE__ */ (0,
|
|
11157
|
+
children: [0.5, 0.75, 1, 1.25, 1.5, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10870
11158
|
"button",
|
|
10871
11159
|
{
|
|
10872
11160
|
role: "menuitemradio",
|
|
@@ -10883,12 +11171,12 @@ var SpeedMenu = ({
|
|
|
10883
11171
|
}
|
|
10884
11172
|
);
|
|
10885
11173
|
const portalContent = showSpeedMenu && globalThis.window !== void 0 && globalThis.document !== void 0 && !!globalThis.document?.body ? (0, import_react_dom.createPortal)(menuContent, globalThis.document.body) : null;
|
|
10886
|
-
return /* @__PURE__ */ (0,
|
|
10887
|
-
/* @__PURE__ */ (0,
|
|
11174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "relative", ref: speedMenuContainerRef, children: [
|
|
11175
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10888
11176
|
IconButton_default,
|
|
10889
11177
|
{
|
|
10890
11178
|
ref: buttonRef,
|
|
10891
|
-
icon: /* @__PURE__ */ (0,
|
|
11179
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.DotsThreeVertical, { size: iconSize }),
|
|
10892
11180
|
onClick: onToggleMenu,
|
|
10893
11181
|
"aria-label": "Playback speed",
|
|
10894
11182
|
"aria-haspopup": "menu",
|
|
@@ -10918,28 +11206,28 @@ var VideoPlayer = ({
|
|
|
10918
11206
|
onDownloadComplete,
|
|
10919
11207
|
onDownloadError
|
|
10920
11208
|
}) => {
|
|
10921
|
-
const videoRef = (0,
|
|
11209
|
+
const videoRef = (0, import_react35.useRef)(null);
|
|
10922
11210
|
const { isUltraSmallMobile, isTinyMobile } = useMobile();
|
|
10923
|
-
const [isPlaying, setIsPlaying] = (0,
|
|
10924
|
-
const [currentTime, setCurrentTime] = (0,
|
|
10925
|
-
const [duration, setDuration] = (0,
|
|
10926
|
-
const [isMuted, setIsMuted] = (0,
|
|
10927
|
-
const [volume, setVolume] = (0,
|
|
10928
|
-
const [isFullscreen, setIsFullscreen] = (0,
|
|
10929
|
-
const [showControls, setShowControls] = (0,
|
|
10930
|
-
const [hasCompleted, setHasCompleted] = (0,
|
|
10931
|
-
const [showCaptions, setShowCaptions] = (0,
|
|
10932
|
-
const [subtitlesValidation, setSubtitlesValidation] = (0,
|
|
10933
|
-
(0,
|
|
11211
|
+
const [isPlaying, setIsPlaying] = (0, import_react35.useState)(false);
|
|
11212
|
+
const [currentTime, setCurrentTime] = (0, import_react35.useState)(0);
|
|
11213
|
+
const [duration, setDuration] = (0, import_react35.useState)(0);
|
|
11214
|
+
const [isMuted, setIsMuted] = (0, import_react35.useState)(false);
|
|
11215
|
+
const [volume, setVolume] = (0, import_react35.useState)(1);
|
|
11216
|
+
const [isFullscreen, setIsFullscreen] = (0, import_react35.useState)(false);
|
|
11217
|
+
const [showControls, setShowControls] = (0, import_react35.useState)(true);
|
|
11218
|
+
const [hasCompleted, setHasCompleted] = (0, import_react35.useState)(false);
|
|
11219
|
+
const [showCaptions, setShowCaptions] = (0, import_react35.useState)(false);
|
|
11220
|
+
const [subtitlesValidation, setSubtitlesValidation] = (0, import_react35.useState)("idle");
|
|
11221
|
+
(0, import_react35.useEffect)(() => {
|
|
10934
11222
|
setHasCompleted(false);
|
|
10935
11223
|
}, [src]);
|
|
10936
|
-
const [playbackRate, setPlaybackRate] = (0,
|
|
10937
|
-
const [showSpeedMenu, setShowSpeedMenu] = (0,
|
|
10938
|
-
const lastSaveTimeRef = (0,
|
|
10939
|
-
const trackRef = (0,
|
|
10940
|
-
const controlsTimeoutRef = (0,
|
|
10941
|
-
const lastMousePositionRef = (0,
|
|
10942
|
-
const isUserInteracting = (0,
|
|
11224
|
+
const [playbackRate, setPlaybackRate] = (0, import_react35.useState)(1);
|
|
11225
|
+
const [showSpeedMenu, setShowSpeedMenu] = (0, import_react35.useState)(false);
|
|
11226
|
+
const lastSaveTimeRef = (0, import_react35.useRef)(0);
|
|
11227
|
+
const trackRef = (0, import_react35.useRef)(null);
|
|
11228
|
+
const controlsTimeoutRef = (0, import_react35.useRef)(null);
|
|
11229
|
+
const lastMousePositionRef = (0, import_react35.useRef)({ x: 0, y: 0 });
|
|
11230
|
+
const isUserInteracting = (0, import_react35.useCallback)(() => {
|
|
10943
11231
|
if (showSpeedMenu) {
|
|
10944
11232
|
return true;
|
|
10945
11233
|
}
|
|
@@ -10956,13 +11244,13 @@ var VideoPlayer = ({
|
|
|
10956
11244
|
}
|
|
10957
11245
|
return false;
|
|
10958
11246
|
}, [showSpeedMenu]);
|
|
10959
|
-
const clearControlsTimeout = (0,
|
|
11247
|
+
const clearControlsTimeout = (0, import_react35.useCallback)(() => {
|
|
10960
11248
|
if (controlsTimeoutRef.current) {
|
|
10961
11249
|
clearTimeout(controlsTimeoutRef.current);
|
|
10962
11250
|
controlsTimeoutRef.current = null;
|
|
10963
11251
|
}
|
|
10964
11252
|
}, []);
|
|
10965
|
-
const showControlsWithTimer = (0,
|
|
11253
|
+
const showControlsWithTimer = (0, import_react35.useCallback)(() => {
|
|
10966
11254
|
setShowControls(true);
|
|
10967
11255
|
clearControlsTimeout();
|
|
10968
11256
|
if (isFullscreen) {
|
|
@@ -10977,7 +11265,7 @@ var VideoPlayer = ({
|
|
|
10977
11265
|
}, CONTROLS_HIDE_TIMEOUT);
|
|
10978
11266
|
}
|
|
10979
11267
|
}, [isFullscreen, isPlaying, clearControlsTimeout]);
|
|
10980
|
-
const handleMouseMove = (0,
|
|
11268
|
+
const handleMouseMove = (0, import_react35.useCallback)(
|
|
10981
11269
|
(event) => {
|
|
10982
11270
|
const currentX = event.clientX;
|
|
10983
11271
|
const currentY = event.clientY;
|
|
@@ -10990,10 +11278,10 @@ var VideoPlayer = ({
|
|
|
10990
11278
|
},
|
|
10991
11279
|
[showControlsWithTimer]
|
|
10992
11280
|
);
|
|
10993
|
-
const handleMouseEnter = (0,
|
|
11281
|
+
const handleMouseEnter = (0, import_react35.useCallback)(() => {
|
|
10994
11282
|
showControlsWithTimer();
|
|
10995
11283
|
}, [showControlsWithTimer]);
|
|
10996
|
-
const handleMouseLeave = (0,
|
|
11284
|
+
const handleMouseLeave = (0, import_react35.useCallback)(() => {
|
|
10997
11285
|
const userInteracting = isUserInteracting();
|
|
10998
11286
|
clearControlsTimeout();
|
|
10999
11287
|
if (!isFullscreen && !userInteracting) {
|
|
@@ -11002,13 +11290,13 @@ var VideoPlayer = ({
|
|
|
11002
11290
|
}, LEAVE_HIDE_TIMEOUT);
|
|
11003
11291
|
}
|
|
11004
11292
|
}, [isFullscreen, clearControlsTimeout, isUserInteracting]);
|
|
11005
|
-
(0,
|
|
11293
|
+
(0, import_react35.useEffect)(() => {
|
|
11006
11294
|
if (videoRef.current) {
|
|
11007
11295
|
videoRef.current.volume = volume;
|
|
11008
11296
|
videoRef.current.muted = isMuted;
|
|
11009
11297
|
}
|
|
11010
11298
|
}, [volume, isMuted]);
|
|
11011
|
-
(0,
|
|
11299
|
+
(0, import_react35.useEffect)(() => {
|
|
11012
11300
|
const video = videoRef.current;
|
|
11013
11301
|
if (!video) return;
|
|
11014
11302
|
const onPlay = () => setIsPlaying(true);
|
|
@@ -11023,13 +11311,13 @@ var VideoPlayer = ({
|
|
|
11023
11311
|
video.removeEventListener("ended", onEnded);
|
|
11024
11312
|
};
|
|
11025
11313
|
}, []);
|
|
11026
|
-
(0,
|
|
11314
|
+
(0, import_react35.useEffect)(() => {
|
|
11027
11315
|
const video = videoRef.current;
|
|
11028
11316
|
if (!video) return;
|
|
11029
11317
|
video.setAttribute("playsinline", "");
|
|
11030
11318
|
video.setAttribute("webkit-playsinline", "");
|
|
11031
11319
|
}, []);
|
|
11032
|
-
(0,
|
|
11320
|
+
(0, import_react35.useEffect)(() => {
|
|
11033
11321
|
if (isPlaying) {
|
|
11034
11322
|
showControlsWithTimer();
|
|
11035
11323
|
} else {
|
|
@@ -11041,7 +11329,7 @@ var VideoPlayer = ({
|
|
|
11041
11329
|
}
|
|
11042
11330
|
}
|
|
11043
11331
|
}, [isPlaying, isFullscreen, showControlsWithTimer, clearControlsTimeout]);
|
|
11044
|
-
(0,
|
|
11332
|
+
(0, import_react35.useEffect)(() => {
|
|
11045
11333
|
const video = videoRef.current;
|
|
11046
11334
|
if (!video) return;
|
|
11047
11335
|
const handleFullscreenChange = () => {
|
|
@@ -11076,7 +11364,7 @@ var VideoPlayer = ({
|
|
|
11076
11364
|
);
|
|
11077
11365
|
};
|
|
11078
11366
|
}, [showControlsWithTimer]);
|
|
11079
|
-
(0,
|
|
11367
|
+
(0, import_react35.useEffect)(() => {
|
|
11080
11368
|
const init = () => {
|
|
11081
11369
|
if (!isFullscreen) {
|
|
11082
11370
|
showControlsWithTimer();
|
|
@@ -11098,7 +11386,7 @@ var VideoPlayer = ({
|
|
|
11098
11386
|
};
|
|
11099
11387
|
}
|
|
11100
11388
|
}, []);
|
|
11101
|
-
const getInitialTime = (0,
|
|
11389
|
+
const getInitialTime = (0, import_react35.useCallback)(() => {
|
|
11102
11390
|
if (!autoSave || !storageKey) {
|
|
11103
11391
|
return Number.isFinite(initialTime) && initialTime >= 0 ? initialTime : void 0;
|
|
11104
11392
|
}
|
|
@@ -11111,14 +11399,14 @@ var VideoPlayer = ({
|
|
|
11111
11399
|
if (hasValidSaved) return saved;
|
|
11112
11400
|
return void 0;
|
|
11113
11401
|
}, [autoSave, storageKey, src, initialTime]);
|
|
11114
|
-
(0,
|
|
11402
|
+
(0, import_react35.useEffect)(() => {
|
|
11115
11403
|
const start = getInitialTime();
|
|
11116
11404
|
if (start !== void 0 && videoRef.current) {
|
|
11117
11405
|
videoRef.current.currentTime = start;
|
|
11118
11406
|
setCurrentTime(start);
|
|
11119
11407
|
}
|
|
11120
11408
|
}, [getInitialTime]);
|
|
11121
|
-
const saveProgress = (0,
|
|
11409
|
+
const saveProgress = (0, import_react35.useCallback)(
|
|
11122
11410
|
(time) => {
|
|
11123
11411
|
if (!autoSave || !storageKey) return;
|
|
11124
11412
|
const now = Date.now();
|
|
@@ -11129,7 +11417,7 @@ var VideoPlayer = ({
|
|
|
11129
11417
|
},
|
|
11130
11418
|
[autoSave, storageKey, src]
|
|
11131
11419
|
);
|
|
11132
|
-
const togglePlayPause = (0,
|
|
11420
|
+
const togglePlayPause = (0, import_react35.useCallback)(async () => {
|
|
11133
11421
|
const video = videoRef.current;
|
|
11134
11422
|
if (!video) return;
|
|
11135
11423
|
if (!video.paused) {
|
|
@@ -11141,7 +11429,7 @@ var VideoPlayer = ({
|
|
|
11141
11429
|
} catch {
|
|
11142
11430
|
}
|
|
11143
11431
|
}, []);
|
|
11144
|
-
const handleVolumeChange = (0,
|
|
11432
|
+
const handleVolumeChange = (0, import_react35.useCallback)(
|
|
11145
11433
|
(newVolume) => {
|
|
11146
11434
|
const video = videoRef.current;
|
|
11147
11435
|
if (!video) return;
|
|
@@ -11160,7 +11448,7 @@ var VideoPlayer = ({
|
|
|
11160
11448
|
},
|
|
11161
11449
|
[isMuted]
|
|
11162
11450
|
);
|
|
11163
|
-
const toggleMute = (0,
|
|
11451
|
+
const toggleMute = (0, import_react35.useCallback)(() => {
|
|
11164
11452
|
const video = videoRef.current;
|
|
11165
11453
|
if (!video) return;
|
|
11166
11454
|
if (isMuted) {
|
|
@@ -11174,20 +11462,20 @@ var VideoPlayer = ({
|
|
|
11174
11462
|
setIsMuted(true);
|
|
11175
11463
|
}
|
|
11176
11464
|
}, [isMuted, volume]);
|
|
11177
|
-
const handleSeek = (0,
|
|
11465
|
+
const handleSeek = (0, import_react35.useCallback)((newTime) => {
|
|
11178
11466
|
const video = videoRef.current;
|
|
11179
11467
|
if (video) {
|
|
11180
11468
|
video.currentTime = newTime;
|
|
11181
11469
|
}
|
|
11182
11470
|
}, []);
|
|
11183
|
-
const isSafariIOS = (0,
|
|
11471
|
+
const isSafariIOS = (0, import_react35.useCallback)(() => {
|
|
11184
11472
|
const ua = navigator.userAgent;
|
|
11185
11473
|
const isIOS = /iPad|iPhone|iPod/.test(ua);
|
|
11186
11474
|
const isWebKit = /WebKit/.test(ua);
|
|
11187
11475
|
const isNotChrome = !/CriOS|Chrome/.test(ua);
|
|
11188
11476
|
return isIOS && isWebKit && isNotChrome;
|
|
11189
11477
|
}, []);
|
|
11190
|
-
const toggleFullscreen = (0,
|
|
11478
|
+
const toggleFullscreen = (0, import_react35.useCallback)(() => {
|
|
11191
11479
|
const video = videoRef.current;
|
|
11192
11480
|
const container = video?.parentElement;
|
|
11193
11481
|
if (!video || !container) return;
|
|
@@ -11204,24 +11492,24 @@ var VideoPlayer = ({
|
|
|
11204
11492
|
document.exitFullscreen();
|
|
11205
11493
|
}
|
|
11206
11494
|
}, [isFullscreen, isSafariIOS]);
|
|
11207
|
-
const handleSpeedChange = (0,
|
|
11495
|
+
const handleSpeedChange = (0, import_react35.useCallback)((speed) => {
|
|
11208
11496
|
if (videoRef.current) {
|
|
11209
11497
|
videoRef.current.playbackRate = speed;
|
|
11210
11498
|
setPlaybackRate(speed);
|
|
11211
11499
|
setShowSpeedMenu(false);
|
|
11212
11500
|
}
|
|
11213
11501
|
}, []);
|
|
11214
|
-
const toggleSpeedMenu = (0,
|
|
11502
|
+
const toggleSpeedMenu = (0, import_react35.useCallback)(() => {
|
|
11215
11503
|
setShowSpeedMenu(!showSpeedMenu);
|
|
11216
11504
|
}, [showSpeedMenu]);
|
|
11217
|
-
const toggleCaptions = (0,
|
|
11505
|
+
const toggleCaptions = (0, import_react35.useCallback)(() => {
|
|
11218
11506
|
if (!trackRef.current?.track || !subtitles || subtitlesValidation !== "valid")
|
|
11219
11507
|
return;
|
|
11220
11508
|
const newShowCaptions = !showCaptions;
|
|
11221
11509
|
setShowCaptions(newShowCaptions);
|
|
11222
11510
|
trackRef.current.track.mode = newShowCaptions ? "showing" : "hidden";
|
|
11223
11511
|
}, [showCaptions, subtitles, subtitlesValidation]);
|
|
11224
|
-
const checkVideoCompletion = (0,
|
|
11512
|
+
const checkVideoCompletion = (0, import_react35.useCallback)(
|
|
11225
11513
|
(progressPercent) => {
|
|
11226
11514
|
if (progressPercent >= 95 && !hasCompleted) {
|
|
11227
11515
|
setHasCompleted(true);
|
|
@@ -11230,7 +11518,7 @@ var VideoPlayer = ({
|
|
|
11230
11518
|
},
|
|
11231
11519
|
[hasCompleted, onVideoComplete]
|
|
11232
11520
|
);
|
|
11233
|
-
const handleTimeUpdate = (0,
|
|
11521
|
+
const handleTimeUpdate = (0, import_react35.useCallback)(() => {
|
|
11234
11522
|
const video = videoRef.current;
|
|
11235
11523
|
if (!video) return;
|
|
11236
11524
|
const current = video.currentTime;
|
|
@@ -11243,12 +11531,12 @@ var VideoPlayer = ({
|
|
|
11243
11531
|
checkVideoCompletion(progressPercent);
|
|
11244
11532
|
}
|
|
11245
11533
|
}, [duration, saveProgress, onTimeUpdate, onProgress, checkVideoCompletion]);
|
|
11246
|
-
const handleLoadedMetadata = (0,
|
|
11534
|
+
const handleLoadedMetadata = (0, import_react35.useCallback)(() => {
|
|
11247
11535
|
if (videoRef.current) {
|
|
11248
11536
|
setDuration(videoRef.current.duration);
|
|
11249
11537
|
}
|
|
11250
11538
|
}, []);
|
|
11251
|
-
(0,
|
|
11539
|
+
(0, import_react35.useEffect)(() => {
|
|
11252
11540
|
const controller = new AbortController();
|
|
11253
11541
|
const validateSubtitles = async () => {
|
|
11254
11542
|
if (!subtitles) {
|
|
@@ -11295,12 +11583,12 @@ var VideoPlayer = ({
|
|
|
11295
11583
|
controller.abort();
|
|
11296
11584
|
};
|
|
11297
11585
|
}, [subtitles]);
|
|
11298
|
-
(0,
|
|
11586
|
+
(0, import_react35.useEffect)(() => {
|
|
11299
11587
|
if (trackRef.current?.track) {
|
|
11300
11588
|
trackRef.current.track.mode = showCaptions && subtitles && subtitlesValidation === "valid" ? "showing" : "hidden";
|
|
11301
11589
|
}
|
|
11302
11590
|
}, [subtitles, showCaptions, subtitlesValidation]);
|
|
11303
|
-
(0,
|
|
11591
|
+
(0, import_react35.useEffect)(() => {
|
|
11304
11592
|
const handleVisibilityChange = () => {
|
|
11305
11593
|
if (document.hidden && isPlaying && videoRef.current) {
|
|
11306
11594
|
videoRef.current.pause();
|
|
@@ -11322,54 +11610,54 @@ var VideoPlayer = ({
|
|
|
11322
11610
|
};
|
|
11323
11611
|
}, [isPlaying, clearControlsTimeout]);
|
|
11324
11612
|
const progressPercentage = duration > 0 ? currentTime / duration * 100 : 0;
|
|
11325
|
-
const getIconSize2 = (0,
|
|
11613
|
+
const getIconSize2 = (0, import_react35.useCallback)(() => {
|
|
11326
11614
|
if (isTinyMobile) return 18;
|
|
11327
11615
|
if (isUltraSmallMobile) return 20;
|
|
11328
11616
|
return 24;
|
|
11329
11617
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
11330
|
-
const getControlsPadding = (0,
|
|
11618
|
+
const getControlsPadding = (0, import_react35.useCallback)(() => {
|
|
11331
11619
|
if (isTinyMobile) return "px-2 pb-2 pt-1";
|
|
11332
11620
|
if (isUltraSmallMobile) return "px-3 pb-3 pt-1";
|
|
11333
11621
|
return "px-4 pb-4";
|
|
11334
11622
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
11335
|
-
const getControlsGap = (0,
|
|
11623
|
+
const getControlsGap = (0, import_react35.useCallback)(() => {
|
|
11336
11624
|
if (isTinyMobile) return "gap-1";
|
|
11337
11625
|
if (isUltraSmallMobile) return "gap-2";
|
|
11338
11626
|
return "gap-4";
|
|
11339
11627
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
11340
|
-
const getProgressBarPadding = (0,
|
|
11628
|
+
const getProgressBarPadding = (0, import_react35.useCallback)(() => {
|
|
11341
11629
|
if (isTinyMobile) return "px-2 pb-1";
|
|
11342
11630
|
if (isUltraSmallMobile) return "px-3 pb-1";
|
|
11343
11631
|
return "px-4 pb-2";
|
|
11344
11632
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
11345
|
-
const getCenterPlayButtonPosition = (0,
|
|
11633
|
+
const getCenterPlayButtonPosition = (0, import_react35.useCallback)(() => {
|
|
11346
11634
|
if (isTinyMobile) return "items-center justify-center -translate-y-12";
|
|
11347
11635
|
if (isUltraSmallMobile) return "items-center justify-center -translate-y-8";
|
|
11348
11636
|
return "items-center justify-center";
|
|
11349
11637
|
}, [isTinyMobile, isUltraSmallMobile]);
|
|
11350
|
-
const getTopControlsOpacity = (0,
|
|
11638
|
+
const getTopControlsOpacity = (0, import_react35.useCallback)(() => {
|
|
11351
11639
|
return showControls ? "opacity-100" : "opacity-0";
|
|
11352
11640
|
}, [showControls]);
|
|
11353
|
-
const getBottomControlsOpacity = (0,
|
|
11641
|
+
const getBottomControlsOpacity = (0, import_react35.useCallback)(() => {
|
|
11354
11642
|
return showControls ? "opacity-100" : "opacity-0";
|
|
11355
11643
|
}, [showControls]);
|
|
11356
|
-
const seekBackward = (0,
|
|
11644
|
+
const seekBackward = (0, import_react35.useCallback)(() => {
|
|
11357
11645
|
if (videoRef.current) {
|
|
11358
11646
|
videoRef.current.currentTime -= 10;
|
|
11359
11647
|
}
|
|
11360
11648
|
}, []);
|
|
11361
|
-
const seekForward = (0,
|
|
11649
|
+
const seekForward = (0, import_react35.useCallback)(() => {
|
|
11362
11650
|
if (videoRef.current) {
|
|
11363
11651
|
videoRef.current.currentTime += 10;
|
|
11364
11652
|
}
|
|
11365
11653
|
}, []);
|
|
11366
|
-
const increaseVolume = (0,
|
|
11654
|
+
const increaseVolume = (0, import_react35.useCallback)(() => {
|
|
11367
11655
|
handleVolumeChange(Math.min(100, volume * 100 + 10));
|
|
11368
11656
|
}, [handleVolumeChange, volume]);
|
|
11369
|
-
const decreaseVolume = (0,
|
|
11657
|
+
const decreaseVolume = (0, import_react35.useCallback)(() => {
|
|
11370
11658
|
handleVolumeChange(Math.max(0, volume * 100 - 10));
|
|
11371
11659
|
}, [handleVolumeChange, volume]);
|
|
11372
|
-
const handleVideoKeyDown = (0,
|
|
11660
|
+
const handleVideoKeyDown = (0, import_react35.useCallback)(
|
|
11373
11661
|
(e) => {
|
|
11374
11662
|
if (!e.key) return;
|
|
11375
11663
|
e.stopPropagation();
|
|
@@ -11404,10 +11692,10 @@ var VideoPlayer = ({
|
|
|
11404
11692
|
]
|
|
11405
11693
|
);
|
|
11406
11694
|
const groupedSubTitleValid = subtitles && subtitlesValidation === "valid";
|
|
11407
|
-
return /* @__PURE__ */ (0,
|
|
11408
|
-
(title || subtitleText) && /* @__PURE__ */ (0,
|
|
11409
|
-
/* @__PURE__ */ (0,
|
|
11410
|
-
title && /* @__PURE__ */ (0,
|
|
11695
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: cn("flex flex-col", className), children: [
|
|
11696
|
+
(title || subtitleText) && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "bg-subject-1 px-8 py-4 flex items-end justify-between min-h-20", children: [
|
|
11697
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
11698
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11411
11699
|
Text_default,
|
|
11412
11700
|
{
|
|
11413
11701
|
as: "h2",
|
|
@@ -11418,7 +11706,7 @@ var VideoPlayer = ({
|
|
|
11418
11706
|
children: title
|
|
11419
11707
|
}
|
|
11420
11708
|
),
|
|
11421
|
-
subtitleText && /* @__PURE__ */ (0,
|
|
11709
|
+
subtitleText && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11422
11710
|
Text_default,
|
|
11423
11711
|
{
|
|
11424
11712
|
as: "p",
|
|
@@ -11430,7 +11718,7 @@ var VideoPlayer = ({
|
|
|
11430
11718
|
}
|
|
11431
11719
|
)
|
|
11432
11720
|
] }),
|
|
11433
|
-
showDownloadButton && downloadContent && /* @__PURE__ */ (0,
|
|
11721
|
+
showDownloadButton && downloadContent && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11434
11722
|
DownloadButton_default,
|
|
11435
11723
|
{
|
|
11436
11724
|
content: downloadContent,
|
|
@@ -11442,7 +11730,7 @@ var VideoPlayer = ({
|
|
|
11442
11730
|
}
|
|
11443
11731
|
)
|
|
11444
11732
|
] }),
|
|
11445
|
-
/* @__PURE__ */ (0,
|
|
11733
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
11446
11734
|
"section",
|
|
11447
11735
|
{
|
|
11448
11736
|
className: cn(
|
|
@@ -11457,7 +11745,7 @@ var VideoPlayer = ({
|
|
|
11457
11745
|
onTouchStart: handleMouseEnter,
|
|
11458
11746
|
onMouseLeave: handleMouseLeave,
|
|
11459
11747
|
children: [
|
|
11460
|
-
/* @__PURE__ */ (0,
|
|
11748
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11461
11749
|
"video",
|
|
11462
11750
|
{
|
|
11463
11751
|
ref: videoRef,
|
|
@@ -11472,7 +11760,7 @@ var VideoPlayer = ({
|
|
|
11472
11760
|
onKeyDown: handleVideoKeyDown,
|
|
11473
11761
|
tabIndex: 0,
|
|
11474
11762
|
"aria-label": title ? `Video: ${title}` : "Video player",
|
|
11475
|
-
children: /* @__PURE__ */ (0,
|
|
11763
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11476
11764
|
"track",
|
|
11477
11765
|
{
|
|
11478
11766
|
ref: trackRef,
|
|
@@ -11485,17 +11773,17 @@ var VideoPlayer = ({
|
|
|
11485
11773
|
)
|
|
11486
11774
|
}
|
|
11487
11775
|
),
|
|
11488
|
-
!isPlaying && /* @__PURE__ */ (0,
|
|
11776
|
+
!isPlaying && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11489
11777
|
"div",
|
|
11490
11778
|
{
|
|
11491
11779
|
className: cn(
|
|
11492
11780
|
"absolute inset-0 flex bg-black/30 transition-opacity",
|
|
11493
11781
|
getCenterPlayButtonPosition()
|
|
11494
11782
|
),
|
|
11495
|
-
children: /* @__PURE__ */ (0,
|
|
11783
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11496
11784
|
IconButton_default,
|
|
11497
11785
|
{
|
|
11498
|
-
icon: /* @__PURE__ */ (0,
|
|
11786
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.Play, { size: 32, weight: "regular", className: "ml-1" }),
|
|
11499
11787
|
onClick: togglePlayPause,
|
|
11500
11788
|
"aria-label": "Play video",
|
|
11501
11789
|
className: "!bg-transparent !text-white !w-auto !h-auto hover:!bg-transparent hover:!text-gray-200"
|
|
@@ -11503,17 +11791,17 @@ var VideoPlayer = ({
|
|
|
11503
11791
|
)
|
|
11504
11792
|
}
|
|
11505
11793
|
),
|
|
11506
|
-
/* @__PURE__ */ (0,
|
|
11794
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11507
11795
|
"div",
|
|
11508
11796
|
{
|
|
11509
11797
|
className: cn(
|
|
11510
11798
|
"absolute top-0 left-0 right-0 p-4 bg-gradient-to-b from-black/70 to-transparent transition-opacity",
|
|
11511
11799
|
getTopControlsOpacity()
|
|
11512
11800
|
),
|
|
11513
|
-
children: /* @__PURE__ */ (0,
|
|
11801
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11514
11802
|
IconButton_default,
|
|
11515
11803
|
{
|
|
11516
|
-
icon: isFullscreen ? /* @__PURE__ */ (0,
|
|
11804
|
+
icon: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.ArrowsInSimple, { size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.ArrowsOutSimple, { size: 24 }),
|
|
11517
11805
|
onClick: toggleFullscreen,
|
|
11518
11806
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
11519
11807
|
className: "!bg-transparent !text-white hover:!bg-white/20"
|
|
@@ -11521,7 +11809,7 @@ var VideoPlayer = ({
|
|
|
11521
11809
|
) })
|
|
11522
11810
|
}
|
|
11523
11811
|
),
|
|
11524
|
-
/* @__PURE__ */ (0,
|
|
11812
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
11525
11813
|
"div",
|
|
11526
11814
|
{
|
|
11527
11815
|
className: cn(
|
|
@@ -11529,7 +11817,7 @@ var VideoPlayer = ({
|
|
|
11529
11817
|
getBottomControlsOpacity()
|
|
11530
11818
|
),
|
|
11531
11819
|
children: [
|
|
11532
|
-
/* @__PURE__ */ (0,
|
|
11820
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11533
11821
|
ProgressBar2,
|
|
11534
11822
|
{
|
|
11535
11823
|
currentTime,
|
|
@@ -11539,7 +11827,7 @@ var VideoPlayer = ({
|
|
|
11539
11827
|
className: getProgressBarPadding()
|
|
11540
11828
|
}
|
|
11541
11829
|
),
|
|
11542
|
-
/* @__PURE__ */ (0,
|
|
11830
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
11543
11831
|
"div",
|
|
11544
11832
|
{
|
|
11545
11833
|
className: cn(
|
|
@@ -11547,17 +11835,17 @@ var VideoPlayer = ({
|
|
|
11547
11835
|
getControlsPadding()
|
|
11548
11836
|
),
|
|
11549
11837
|
children: [
|
|
11550
|
-
/* @__PURE__ */ (0,
|
|
11551
|
-
/* @__PURE__ */ (0,
|
|
11838
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: cn("flex items-center", getControlsGap()), children: [
|
|
11839
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11552
11840
|
IconButton_default,
|
|
11553
11841
|
{
|
|
11554
|
-
icon: isPlaying ? /* @__PURE__ */ (0,
|
|
11842
|
+
icon: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.Pause, { size: getIconSize2() }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.Play, { size: getIconSize2() }),
|
|
11555
11843
|
onClick: togglePlayPause,
|
|
11556
11844
|
"aria-label": isPlaying ? "Pause" : "Play",
|
|
11557
11845
|
className: "!bg-transparent !text-white hover:!bg-white/20"
|
|
11558
11846
|
}
|
|
11559
11847
|
),
|
|
11560
|
-
/* @__PURE__ */ (0,
|
|
11848
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11561
11849
|
VolumeControls,
|
|
11562
11850
|
{
|
|
11563
11851
|
volume,
|
|
@@ -11568,10 +11856,10 @@ var VideoPlayer = ({
|
|
|
11568
11856
|
showSlider: !isUltraSmallMobile
|
|
11569
11857
|
}
|
|
11570
11858
|
),
|
|
11571
|
-
groupedSubTitleValid && /* @__PURE__ */ (0,
|
|
11859
|
+
groupedSubTitleValid && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11572
11860
|
IconButton_default,
|
|
11573
11861
|
{
|
|
11574
|
-
icon: /* @__PURE__ */ (0,
|
|
11862
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_phosphor_react27.ClosedCaptioning, { size: getIconSize2() }),
|
|
11575
11863
|
onClick: toggleCaptions,
|
|
11576
11864
|
"aria-label": showCaptions ? "Hide captions" : "Show captions",
|
|
11577
11865
|
className: cn(
|
|
@@ -11580,13 +11868,13 @@ var VideoPlayer = ({
|
|
|
11580
11868
|
)
|
|
11581
11869
|
}
|
|
11582
11870
|
),
|
|
11583
|
-
/* @__PURE__ */ (0,
|
|
11871
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Text_default, { size: "sm", weight: "medium", color: "text-white", children: [
|
|
11584
11872
|
formatTime(currentTime),
|
|
11585
11873
|
" / ",
|
|
11586
11874
|
formatTime(duration)
|
|
11587
11875
|
] })
|
|
11588
11876
|
] }),
|
|
11589
|
-
/* @__PURE__ */ (0,
|
|
11877
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex items-center gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11590
11878
|
SpeedMenu,
|
|
11591
11879
|
{
|
|
11592
11880
|
showSpeedMenu,
|
|
@@ -11612,9 +11900,9 @@ var VideoPlayer = ({
|
|
|
11612
11900
|
var VideoPlayer_default = VideoPlayer;
|
|
11613
11901
|
|
|
11614
11902
|
// src/components/Whiteboard/Whiteboard.tsx
|
|
11615
|
-
var
|
|
11616
|
-
var
|
|
11617
|
-
var
|
|
11903
|
+
var import_react36 = require("react");
|
|
11904
|
+
var import_phosphor_react28 = require("phosphor-react");
|
|
11905
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
11618
11906
|
var IMAGE_WIDTH = 225;
|
|
11619
11907
|
var IMAGE_HEIGHT = 90;
|
|
11620
11908
|
var Whiteboard = ({
|
|
@@ -11625,8 +11913,8 @@ var Whiteboard = ({
|
|
|
11625
11913
|
imagesPerRow = 2,
|
|
11626
11914
|
...rest
|
|
11627
11915
|
}) => {
|
|
11628
|
-
const [imageErrors, setImageErrors] = (0,
|
|
11629
|
-
const handleDownload = (0,
|
|
11916
|
+
const [imageErrors, setImageErrors] = (0, import_react36.useState)(/* @__PURE__ */ new Set());
|
|
11917
|
+
const handleDownload = (0, import_react36.useCallback)(
|
|
11630
11918
|
(image) => {
|
|
11631
11919
|
if (onDownload) {
|
|
11632
11920
|
onDownload(image);
|
|
@@ -11643,7 +11931,7 @@ var Whiteboard = ({
|
|
|
11643
11931
|
},
|
|
11644
11932
|
[onDownload]
|
|
11645
11933
|
);
|
|
11646
|
-
const handleImageError = (0,
|
|
11934
|
+
const handleImageError = (0, import_react36.useCallback)((imageId) => {
|
|
11647
11935
|
setImageErrors((prev) => new Set(prev).add(imageId));
|
|
11648
11936
|
}, []);
|
|
11649
11937
|
const gridColsClass = images?.length === 1 ? "grid-cols-1" : {
|
|
@@ -11652,7 +11940,7 @@ var Whiteboard = ({
|
|
|
11652
11940
|
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"
|
|
11653
11941
|
}[imagesPerRow];
|
|
11654
11942
|
if (!images || images.length === 0) {
|
|
11655
|
-
return /* @__PURE__ */ (0,
|
|
11943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11656
11944
|
"div",
|
|
11657
11945
|
{
|
|
11658
11946
|
className: cn(
|
|
@@ -11660,11 +11948,11 @@ var Whiteboard = ({
|
|
|
11660
11948
|
className
|
|
11661
11949
|
),
|
|
11662
11950
|
...rest,
|
|
11663
|
-
children: /* @__PURE__ */ (0,
|
|
11951
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-gray-400 text-sm", children: "Nenhuma imagem dispon\xEDvel" })
|
|
11664
11952
|
}
|
|
11665
11953
|
);
|
|
11666
11954
|
}
|
|
11667
|
-
return /* @__PURE__ */ (0,
|
|
11955
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11668
11956
|
"div",
|
|
11669
11957
|
{
|
|
11670
11958
|
className: cn(
|
|
@@ -11672,7 +11960,7 @@ var Whiteboard = ({
|
|
|
11672
11960
|
className
|
|
11673
11961
|
),
|
|
11674
11962
|
...rest,
|
|
11675
|
-
children: /* @__PURE__ */ (0,
|
|
11963
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: cn("grid gap-4", gridColsClass), children: images.map((image) => /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
11676
11964
|
"div",
|
|
11677
11965
|
{
|
|
11678
11966
|
className: "relative group overflow-hidden bg-gray-100 rounded-lg",
|
|
@@ -11680,7 +11968,7 @@ var Whiteboard = ({
|
|
|
11680
11968
|
width: `${IMAGE_WIDTH}px`
|
|
11681
11969
|
},
|
|
11682
11970
|
children: [
|
|
11683
|
-
/* @__PURE__ */ (0,
|
|
11971
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11684
11972
|
"div",
|
|
11685
11973
|
{
|
|
11686
11974
|
className: "relative",
|
|
@@ -11688,8 +11976,8 @@ var Whiteboard = ({
|
|
|
11688
11976
|
width: `${IMAGE_WIDTH}px`,
|
|
11689
11977
|
height: `${IMAGE_HEIGHT}px`
|
|
11690
11978
|
},
|
|
11691
|
-
children: imageErrors.has(image.id) ? /* @__PURE__ */ (0,
|
|
11692
|
-
/* @__PURE__ */ (0,
|
|
11979
|
+
children: imageErrors.has(image.id) ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "absolute inset-0 flex items-center justify-center bg-gray-200", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-gray-500 text-sm text-center px-2", children: "Imagem indispon\xEDvel" }) }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [
|
|
11980
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11693
11981
|
"img",
|
|
11694
11982
|
{
|
|
11695
11983
|
src: image.imageUrl,
|
|
@@ -11699,19 +11987,19 @@ var Whiteboard = ({
|
|
|
11699
11987
|
onError: () => handleImageError(image.id)
|
|
11700
11988
|
}
|
|
11701
11989
|
),
|
|
11702
|
-
/* @__PURE__ */ (0,
|
|
11990
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "absolute inset-0 bg-gradient-to-t from-black/20 to-transparent" })
|
|
11703
11991
|
] })
|
|
11704
11992
|
}
|
|
11705
11993
|
),
|
|
11706
|
-
showDownload && /* @__PURE__ */ (0,
|
|
11994
|
+
showDownload && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11707
11995
|
"button",
|
|
11708
11996
|
{
|
|
11709
11997
|
type: "button",
|
|
11710
11998
|
onClick: () => handleDownload(image),
|
|
11711
11999
|
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",
|
|
11712
12000
|
"aria-label": `Download ${image.title || "imagem"}`,
|
|
11713
|
-
children: /* @__PURE__ */ (0,
|
|
11714
|
-
|
|
12001
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
12002
|
+
import_phosphor_react28.ArrowsOut,
|
|
11715
12003
|
{
|
|
11716
12004
|
size: 24,
|
|
11717
12005
|
weight: "regular",
|
|
@@ -11730,10 +12018,10 @@ var Whiteboard = ({
|
|
|
11730
12018
|
var Whiteboard_default = Whiteboard;
|
|
11731
12019
|
|
|
11732
12020
|
// src/components/Auth/Auth.tsx
|
|
11733
|
-
var
|
|
12021
|
+
var import_react37 = require("react");
|
|
11734
12022
|
var import_react_router_dom = require("react-router-dom");
|
|
11735
|
-
var
|
|
11736
|
-
var AuthContext = (0,
|
|
12023
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
12024
|
+
var AuthContext = (0, import_react37.createContext)(void 0);
|
|
11737
12025
|
var AuthProvider = ({
|
|
11738
12026
|
children,
|
|
11739
12027
|
checkAuthFn,
|
|
@@ -11743,12 +12031,12 @@ var AuthProvider = ({
|
|
|
11743
12031
|
getSessionFn,
|
|
11744
12032
|
getTokensFn
|
|
11745
12033
|
}) => {
|
|
11746
|
-
const [authState, setAuthState] = (0,
|
|
12034
|
+
const [authState, setAuthState] = (0, import_react37.useState)({
|
|
11747
12035
|
isAuthenticated: false,
|
|
11748
12036
|
isLoading: true,
|
|
11749
12037
|
...initialAuthState
|
|
11750
12038
|
});
|
|
11751
|
-
const checkAuth = (0,
|
|
12039
|
+
const checkAuth = (0, import_react37.useCallback)(async () => {
|
|
11752
12040
|
try {
|
|
11753
12041
|
setAuthState((prev) => ({ ...prev, isLoading: true }));
|
|
11754
12042
|
if (!checkAuthFn) {
|
|
@@ -11779,7 +12067,7 @@ var AuthProvider = ({
|
|
|
11779
12067
|
return false;
|
|
11780
12068
|
}
|
|
11781
12069
|
}, [checkAuthFn, getUserFn, getSessionFn, getTokensFn]);
|
|
11782
|
-
const signOut = (0,
|
|
12070
|
+
const signOut = (0, import_react37.useCallback)(() => {
|
|
11783
12071
|
if (signOutFn) {
|
|
11784
12072
|
signOutFn();
|
|
11785
12073
|
}
|
|
@@ -11791,10 +12079,10 @@ var AuthProvider = ({
|
|
|
11791
12079
|
tokens: void 0
|
|
11792
12080
|
}));
|
|
11793
12081
|
}, [signOutFn]);
|
|
11794
|
-
(0,
|
|
12082
|
+
(0, import_react37.useEffect)(() => {
|
|
11795
12083
|
checkAuth();
|
|
11796
12084
|
}, [checkAuth]);
|
|
11797
|
-
const contextValue = (0,
|
|
12085
|
+
const contextValue = (0, import_react37.useMemo)(
|
|
11798
12086
|
() => ({
|
|
11799
12087
|
...authState,
|
|
11800
12088
|
checkAuth,
|
|
@@ -11802,10 +12090,10 @@ var AuthProvider = ({
|
|
|
11802
12090
|
}),
|
|
11803
12091
|
[authState, checkAuth, signOut]
|
|
11804
12092
|
);
|
|
11805
|
-
return /* @__PURE__ */ (0,
|
|
12093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(AuthContext.Provider, { value: contextValue, children });
|
|
11806
12094
|
};
|
|
11807
12095
|
var useAuth = () => {
|
|
11808
|
-
const context = (0,
|
|
12096
|
+
const context = (0, import_react37.useContext)(AuthContext);
|
|
11809
12097
|
if (context === void 0) {
|
|
11810
12098
|
throw new Error("useAuth deve ser usado dentro de um AuthProvider");
|
|
11811
12099
|
}
|
|
@@ -11818,9 +12106,9 @@ var ProtectedRoute = ({
|
|
|
11818
12106
|
additionalCheck
|
|
11819
12107
|
}) => {
|
|
11820
12108
|
const { isAuthenticated, isLoading, ...authState } = useAuth();
|
|
11821
|
-
const defaultLoadingComponent = /* @__PURE__ */ (0,
|
|
12109
|
+
const defaultLoadingComponent = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
|
|
11822
12110
|
if (isLoading) {
|
|
11823
|
-
return /* @__PURE__ */ (0,
|
|
12111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_jsx_runtime59.Fragment, { children: loadingComponent || defaultLoadingComponent });
|
|
11824
12112
|
}
|
|
11825
12113
|
if (!isAuthenticated) {
|
|
11826
12114
|
if (typeof window !== "undefined") {
|
|
@@ -11831,12 +12119,12 @@ var ProtectedRoute = ({
|
|
|
11831
12119
|
return null;
|
|
11832
12120
|
}
|
|
11833
12121
|
}
|
|
11834
|
-
return /* @__PURE__ */ (0,
|
|
12122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
|
|
11835
12123
|
}
|
|
11836
12124
|
if (additionalCheck && !additionalCheck({ isAuthenticated, isLoading, ...authState })) {
|
|
11837
|
-
return /* @__PURE__ */ (0,
|
|
12125
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
|
|
11838
12126
|
}
|
|
11839
|
-
return /* @__PURE__ */ (0,
|
|
12127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_jsx_runtime59.Fragment, { children });
|
|
11840
12128
|
};
|
|
11841
12129
|
var PublicRoute = ({
|
|
11842
12130
|
children,
|
|
@@ -11846,15 +12134,15 @@ var PublicRoute = ({
|
|
|
11846
12134
|
}) => {
|
|
11847
12135
|
const { isAuthenticated, isLoading } = useAuth();
|
|
11848
12136
|
if (checkAuthBeforeRender && isLoading) {
|
|
11849
|
-
return /* @__PURE__ */ (0,
|
|
12137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "text-text-950 text-lg", children: "Carregando..." }) });
|
|
11850
12138
|
}
|
|
11851
12139
|
if (isAuthenticated && redirectIfAuthenticated) {
|
|
11852
|
-
return /* @__PURE__ */ (0,
|
|
12140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_router_dom.Navigate, { to: redirectTo, replace: true });
|
|
11853
12141
|
}
|
|
11854
|
-
return /* @__PURE__ */ (0,
|
|
12142
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_jsx_runtime59.Fragment, { children });
|
|
11855
12143
|
};
|
|
11856
12144
|
var withAuth = (Component, options = {}) => {
|
|
11857
|
-
return (props) => /* @__PURE__ */ (0,
|
|
12145
|
+
return (props) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ProtectedRoute, { ...options, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Component, { ...props }) });
|
|
11858
12146
|
};
|
|
11859
12147
|
var useAuthGuard = (options = {}) => {
|
|
11860
12148
|
const authState = useAuth();
|
|
@@ -11869,7 +12157,7 @@ var useAuthGuard = (options = {}) => {
|
|
|
11869
12157
|
var useRouteAuth = (fallbackPath = "/") => {
|
|
11870
12158
|
const { isAuthenticated, isLoading } = useAuth();
|
|
11871
12159
|
const location = (0, import_react_router_dom.useLocation)();
|
|
11872
|
-
const redirectToLogin = () => /* @__PURE__ */ (0,
|
|
12160
|
+
const redirectToLogin = () => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_router_dom.Navigate, { to: fallbackPath, state: { from: location }, replace: true });
|
|
11873
12161
|
return {
|
|
11874
12162
|
isAuthenticated,
|
|
11875
12163
|
isLoading,
|
|
@@ -11903,10 +12191,10 @@ var getRootDomain = () => {
|
|
|
11903
12191
|
};
|
|
11904
12192
|
|
|
11905
12193
|
// src/components/Accordation/Accordation.tsx
|
|
11906
|
-
var
|
|
11907
|
-
var
|
|
11908
|
-
var
|
|
11909
|
-
var CardAccordation = (0,
|
|
12194
|
+
var import_react38 = require("react");
|
|
12195
|
+
var import_phosphor_react29 = require("phosphor-react");
|
|
12196
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
12197
|
+
var CardAccordation = (0, import_react38.forwardRef)(
|
|
11910
12198
|
({
|
|
11911
12199
|
trigger,
|
|
11912
12200
|
children,
|
|
@@ -11918,13 +12206,13 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
11918
12206
|
disabled = false,
|
|
11919
12207
|
...props
|
|
11920
12208
|
}, ref) => {
|
|
11921
|
-
const [internalExpanded, setInternalExpanded] = (0,
|
|
11922
|
-
const generatedId = (0,
|
|
12209
|
+
const [internalExpanded, setInternalExpanded] = (0, import_react38.useState)(defaultExpanded);
|
|
12210
|
+
const generatedId = (0, import_react38.useId)();
|
|
11923
12211
|
const contentId = value ? `accordion-content-${value}` : generatedId;
|
|
11924
12212
|
const headerId = value ? `accordion-header-${value}` : `${generatedId}-header`;
|
|
11925
12213
|
const isControlled = controlledExpanded !== void 0;
|
|
11926
12214
|
const isExpanded = isControlled ? controlledExpanded : internalExpanded;
|
|
11927
|
-
(0,
|
|
12215
|
+
(0, import_react38.useEffect)(() => {
|
|
11928
12216
|
if (isControlled) {
|
|
11929
12217
|
setInternalExpanded(controlledExpanded);
|
|
11930
12218
|
}
|
|
@@ -11944,7 +12232,7 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
11944
12232
|
handleToggle();
|
|
11945
12233
|
}
|
|
11946
12234
|
};
|
|
11947
|
-
return /* @__PURE__ */ (0,
|
|
12235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
11948
12236
|
CardBase,
|
|
11949
12237
|
{
|
|
11950
12238
|
ref,
|
|
@@ -11954,7 +12242,7 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
11954
12242
|
className: cn("overflow-hidden", className),
|
|
11955
12243
|
...props,
|
|
11956
12244
|
children: [
|
|
11957
|
-
/* @__PURE__ */ (0,
|
|
12245
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
11958
12246
|
"button",
|
|
11959
12247
|
{
|
|
11960
12248
|
id: headerId,
|
|
@@ -11972,8 +12260,8 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
11972
12260
|
"data-value": value,
|
|
11973
12261
|
children: [
|
|
11974
12262
|
trigger,
|
|
11975
|
-
/* @__PURE__ */ (0,
|
|
11976
|
-
|
|
12263
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
12264
|
+
import_phosphor_react29.CaretRight,
|
|
11977
12265
|
{
|
|
11978
12266
|
size: 20,
|
|
11979
12267
|
className: cn(
|
|
@@ -11987,7 +12275,7 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
11987
12275
|
]
|
|
11988
12276
|
}
|
|
11989
12277
|
),
|
|
11990
|
-
/* @__PURE__ */ (0,
|
|
12278
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11991
12279
|
"section",
|
|
11992
12280
|
{
|
|
11993
12281
|
id: contentId,
|
|
@@ -11999,7 +12287,7 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
11999
12287
|
),
|
|
12000
12288
|
"data-testid": "accordion-content",
|
|
12001
12289
|
"data-value": value,
|
|
12002
|
-
children: /* @__PURE__ */ (0,
|
|
12290
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "p-4 pt-0", children })
|
|
12003
12291
|
}
|
|
12004
12292
|
)
|
|
12005
12293
|
]
|
|
@@ -12010,9 +12298,9 @@ var CardAccordation = (0, import_react37.forwardRef)(
|
|
|
12010
12298
|
CardAccordation.displayName = "CardAccordation";
|
|
12011
12299
|
|
|
12012
12300
|
// src/components/Accordation/AccordionGroup.tsx
|
|
12013
|
-
var
|
|
12301
|
+
var import_react39 = require("react");
|
|
12014
12302
|
var import_zustand10 = require("zustand");
|
|
12015
|
-
var
|
|
12303
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
12016
12304
|
function createAccordionGroupStore(type, initialValue, collapsible) {
|
|
12017
12305
|
return (0, import_zustand10.create)((set, get) => ({
|
|
12018
12306
|
type,
|
|
@@ -12030,8 +12318,8 @@ function createAccordionGroupStore(type, initialValue, collapsible) {
|
|
|
12030
12318
|
}));
|
|
12031
12319
|
}
|
|
12032
12320
|
var injectStore6 = (children, store, indexRef, onItemToggle) => {
|
|
12033
|
-
return
|
|
12034
|
-
if (!(0,
|
|
12321
|
+
return import_react39.Children.map(children, (child) => {
|
|
12322
|
+
if (!(0, import_react39.isValidElement)(child)) {
|
|
12035
12323
|
return child;
|
|
12036
12324
|
}
|
|
12037
12325
|
const typedChild = child;
|
|
@@ -12058,16 +12346,16 @@ var injectStore6 = (children, store, indexRef, onItemToggle) => {
|
|
|
12058
12346
|
if (displayName === "CardAccordation") {
|
|
12059
12347
|
newProps.children = processedChildren;
|
|
12060
12348
|
} else if (processedChildren !== typedChild.props.children) {
|
|
12061
|
-
return (0,
|
|
12349
|
+
return (0, import_react39.cloneElement)(typedChild, { children: processedChildren });
|
|
12062
12350
|
}
|
|
12063
12351
|
}
|
|
12064
12352
|
if (Object.keys(newProps).length > 0) {
|
|
12065
|
-
return (0,
|
|
12353
|
+
return (0, import_react39.cloneElement)(typedChild, newProps);
|
|
12066
12354
|
}
|
|
12067
12355
|
return child;
|
|
12068
12356
|
});
|
|
12069
12357
|
};
|
|
12070
|
-
var AccordionGroup = (0,
|
|
12358
|
+
var AccordionGroup = (0, import_react39.forwardRef)(
|
|
12071
12359
|
({
|
|
12072
12360
|
type = "single",
|
|
12073
12361
|
defaultValue,
|
|
@@ -12078,12 +12366,12 @@ var AccordionGroup = (0, import_react38.forwardRef)(
|
|
|
12078
12366
|
className,
|
|
12079
12367
|
...props
|
|
12080
12368
|
}, ref) => {
|
|
12081
|
-
const [internalValue, setInternalValue] = (0,
|
|
12369
|
+
const [internalValue, setInternalValue] = (0, import_react39.useState)(
|
|
12082
12370
|
defaultValue || (type === "single" ? "" : [])
|
|
12083
12371
|
);
|
|
12084
12372
|
const isControlled = controlledValue !== void 0;
|
|
12085
12373
|
const currentValue = isControlled ? controlledValue : internalValue;
|
|
12086
|
-
const storeRef = (0,
|
|
12374
|
+
const storeRef = (0, import_react39.useRef)(null);
|
|
12087
12375
|
if (storeRef.current) {
|
|
12088
12376
|
storeRef.current.setState((prev) => {
|
|
12089
12377
|
const nextState = {};
|
|
@@ -12103,10 +12391,10 @@ var AccordionGroup = (0, import_react38.forwardRef)(
|
|
|
12103
12391
|
);
|
|
12104
12392
|
}
|
|
12105
12393
|
const store = storeRef.current;
|
|
12106
|
-
(0,
|
|
12394
|
+
(0, import_react39.useEffect)(() => {
|
|
12107
12395
|
store.setState({ value: currentValue });
|
|
12108
12396
|
}, [currentValue, store]);
|
|
12109
|
-
(0,
|
|
12397
|
+
(0, import_react39.useEffect)(() => {
|
|
12110
12398
|
if (!isControlled) {
|
|
12111
12399
|
setInternalValue((prev) => {
|
|
12112
12400
|
if (type === "single") {
|
|
@@ -12152,15 +12440,15 @@ var AccordionGroup = (0, import_react38.forwardRef)(
|
|
|
12152
12440
|
indexRef,
|
|
12153
12441
|
handleItemToggle
|
|
12154
12442
|
);
|
|
12155
|
-
return /* @__PURE__ */ (0,
|
|
12443
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { ref, className, ...props, children: enhancedChildren });
|
|
12156
12444
|
}
|
|
12157
12445
|
);
|
|
12158
12446
|
AccordionGroup.displayName = "AccordionGroup";
|
|
12159
12447
|
|
|
12160
12448
|
// src/components/Alternative/Alternative.tsx
|
|
12161
|
-
var
|
|
12162
|
-
var
|
|
12163
|
-
var
|
|
12449
|
+
var import_phosphor_react30 = require("phosphor-react");
|
|
12450
|
+
var import_react40 = require("react");
|
|
12451
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
12164
12452
|
var AlternativesList = ({
|
|
12165
12453
|
alternatives,
|
|
12166
12454
|
name,
|
|
@@ -12173,9 +12461,9 @@ var AlternativesList = ({
|
|
|
12173
12461
|
mode = "interactive",
|
|
12174
12462
|
selectedValue
|
|
12175
12463
|
}) => {
|
|
12176
|
-
const uniqueId = (0,
|
|
12464
|
+
const uniqueId = (0, import_react40.useId)();
|
|
12177
12465
|
const groupName = name || `alternatives-${uniqueId}`;
|
|
12178
|
-
const [actualValue, setActualValue] = (0,
|
|
12466
|
+
const [actualValue, setActualValue] = (0, import_react40.useState)(value);
|
|
12179
12467
|
const isReadonly = mode === "readonly";
|
|
12180
12468
|
const getStatusStyles2 = (status, isReadonly2) => {
|
|
12181
12469
|
const hoverClass = isReadonly2 ? "" : "hover:bg-background-50";
|
|
@@ -12191,9 +12479,9 @@ var AlternativesList = ({
|
|
|
12191
12479
|
const getStatusBadge2 = (status) => {
|
|
12192
12480
|
switch (status) {
|
|
12193
12481
|
case "correct":
|
|
12194
|
-
return /* @__PURE__ */ (0,
|
|
12482
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_phosphor_react30.CheckCircle, {}), children: "Resposta correta" });
|
|
12195
12483
|
case "incorrect":
|
|
12196
|
-
return /* @__PURE__ */ (0,
|
|
12484
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_phosphor_react30.XCircle, {}), children: "Resposta incorreta" });
|
|
12197
12485
|
default:
|
|
12198
12486
|
return null;
|
|
12199
12487
|
}
|
|
@@ -12223,10 +12511,10 @@ var AlternativesList = ({
|
|
|
12223
12511
|
const renderRadio = () => {
|
|
12224
12512
|
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"}`;
|
|
12225
12513
|
const dotClasses = "w-3 h-3 rounded-full bg-primary-950 transition-all duration-200";
|
|
12226
|
-
return /* @__PURE__ */ (0,
|
|
12514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: radioClasses, children: isUserSelected && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: dotClasses }) });
|
|
12227
12515
|
};
|
|
12228
12516
|
if (layout === "detailed") {
|
|
12229
|
-
return /* @__PURE__ */ (0,
|
|
12517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12230
12518
|
"div",
|
|
12231
12519
|
{
|
|
12232
12520
|
className: cn(
|
|
@@ -12234,11 +12522,11 @@ var AlternativesList = ({
|
|
|
12234
12522
|
statusStyles,
|
|
12235
12523
|
alternative.disabled ? "opacity-50" : ""
|
|
12236
12524
|
),
|
|
12237
|
-
children: /* @__PURE__ */ (0,
|
|
12238
|
-
/* @__PURE__ */ (0,
|
|
12239
|
-
/* @__PURE__ */ (0,
|
|
12240
|
-
/* @__PURE__ */ (0,
|
|
12241
|
-
/* @__PURE__ */ (0,
|
|
12525
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
|
|
12526
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-start gap-3 flex-1", children: [
|
|
12527
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "mt-1", children: renderRadio() }),
|
|
12528
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex-1", children: [
|
|
12529
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12242
12530
|
"p",
|
|
12243
12531
|
{
|
|
12244
12532
|
className: cn(
|
|
@@ -12248,16 +12536,16 @@ var AlternativesList = ({
|
|
|
12248
12536
|
children: alternative.label
|
|
12249
12537
|
}
|
|
12250
12538
|
),
|
|
12251
|
-
alternative.description && /* @__PURE__ */ (0,
|
|
12539
|
+
alternative.description && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-sm text-text-600 mt-1", children: alternative.description })
|
|
12252
12540
|
] })
|
|
12253
12541
|
] }),
|
|
12254
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
12542
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
12255
12543
|
] })
|
|
12256
12544
|
},
|
|
12257
12545
|
alternativeId
|
|
12258
12546
|
);
|
|
12259
12547
|
}
|
|
12260
|
-
return /* @__PURE__ */ (0,
|
|
12548
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
12261
12549
|
"div",
|
|
12262
12550
|
{
|
|
12263
12551
|
className: cn(
|
|
@@ -12266,9 +12554,9 @@ var AlternativesList = ({
|
|
|
12266
12554
|
alternative.disabled ? "opacity-50" : ""
|
|
12267
12555
|
),
|
|
12268
12556
|
children: [
|
|
12269
|
-
/* @__PURE__ */ (0,
|
|
12557
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
12270
12558
|
renderRadio(),
|
|
12271
|
-
/* @__PURE__ */ (0,
|
|
12559
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12272
12560
|
"span",
|
|
12273
12561
|
{
|
|
12274
12562
|
className: cn(
|
|
@@ -12279,14 +12567,14 @@ var AlternativesList = ({
|
|
|
12279
12567
|
}
|
|
12280
12568
|
)
|
|
12281
12569
|
] }),
|
|
12282
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
12570
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
12283
12571
|
]
|
|
12284
12572
|
},
|
|
12285
12573
|
alternativeId
|
|
12286
12574
|
);
|
|
12287
12575
|
};
|
|
12288
12576
|
if (isReadonly) {
|
|
12289
|
-
return /* @__PURE__ */ (0,
|
|
12577
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12290
12578
|
"div",
|
|
12291
12579
|
{
|
|
12292
12580
|
className: cn("flex flex-col", getLayoutClasses(), "w-full", className),
|
|
@@ -12296,7 +12584,7 @@ var AlternativesList = ({
|
|
|
12296
12584
|
}
|
|
12297
12585
|
);
|
|
12298
12586
|
}
|
|
12299
|
-
return /* @__PURE__ */ (0,
|
|
12587
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12300
12588
|
RadioGroup,
|
|
12301
12589
|
{
|
|
12302
12590
|
name: groupName,
|
|
@@ -12313,7 +12601,7 @@ var AlternativesList = ({
|
|
|
12313
12601
|
const statusStyles = getStatusStyles2(alternative.status, false);
|
|
12314
12602
|
const statusBadge = getStatusBadge2(alternative.status);
|
|
12315
12603
|
if (layout === "detailed") {
|
|
12316
|
-
return /* @__PURE__ */ (0,
|
|
12604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12317
12605
|
"div",
|
|
12318
12606
|
{
|
|
12319
12607
|
className: cn(
|
|
@@ -12321,9 +12609,9 @@ var AlternativesList = ({
|
|
|
12321
12609
|
statusStyles,
|
|
12322
12610
|
alternative.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"
|
|
12323
12611
|
),
|
|
12324
|
-
children: /* @__PURE__ */ (0,
|
|
12325
|
-
/* @__PURE__ */ (0,
|
|
12326
|
-
/* @__PURE__ */ (0,
|
|
12612
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-start justify-between gap-3", children: [
|
|
12613
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-start gap-3 flex-1", children: [
|
|
12614
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12327
12615
|
RadioGroupItem,
|
|
12328
12616
|
{
|
|
12329
12617
|
value: alternative.value,
|
|
@@ -12332,8 +12620,8 @@ var AlternativesList = ({
|
|
|
12332
12620
|
className: "mt-1"
|
|
12333
12621
|
}
|
|
12334
12622
|
),
|
|
12335
|
-
/* @__PURE__ */ (0,
|
|
12336
|
-
/* @__PURE__ */ (0,
|
|
12623
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex-1", children: [
|
|
12624
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12337
12625
|
"label",
|
|
12338
12626
|
{
|
|
12339
12627
|
htmlFor: alternativeId,
|
|
@@ -12345,16 +12633,16 @@ var AlternativesList = ({
|
|
|
12345
12633
|
children: alternative.label
|
|
12346
12634
|
}
|
|
12347
12635
|
),
|
|
12348
|
-
alternative.description && /* @__PURE__ */ (0,
|
|
12636
|
+
alternative.description && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-sm text-text-600 mt-1", children: alternative.description })
|
|
12349
12637
|
] })
|
|
12350
12638
|
] }),
|
|
12351
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
12639
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
12352
12640
|
] })
|
|
12353
12641
|
},
|
|
12354
12642
|
alternativeId
|
|
12355
12643
|
);
|
|
12356
12644
|
}
|
|
12357
|
-
return /* @__PURE__ */ (0,
|
|
12645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
12358
12646
|
"div",
|
|
12359
12647
|
{
|
|
12360
12648
|
className: cn(
|
|
@@ -12363,8 +12651,8 @@ var AlternativesList = ({
|
|
|
12363
12651
|
alternative.disabled ? "opacity-50 cursor-not-allowed" : ""
|
|
12364
12652
|
),
|
|
12365
12653
|
children: [
|
|
12366
|
-
/* @__PURE__ */ (0,
|
|
12367
|
-
/* @__PURE__ */ (0,
|
|
12654
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
12655
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12368
12656
|
RadioGroupItem,
|
|
12369
12657
|
{
|
|
12370
12658
|
value: alternative.value,
|
|
@@ -12372,7 +12660,7 @@ var AlternativesList = ({
|
|
|
12372
12660
|
disabled: alternative.disabled
|
|
12373
12661
|
}
|
|
12374
12662
|
),
|
|
12375
|
-
/* @__PURE__ */ (0,
|
|
12663
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12376
12664
|
"label",
|
|
12377
12665
|
{
|
|
12378
12666
|
htmlFor: alternativeId,
|
|
@@ -12385,7 +12673,7 @@ var AlternativesList = ({
|
|
|
12385
12673
|
}
|
|
12386
12674
|
)
|
|
12387
12675
|
] }),
|
|
12388
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
12676
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
12389
12677
|
]
|
|
12390
12678
|
},
|
|
12391
12679
|
alternativeId
|
|
@@ -12394,9 +12682,9 @@ var AlternativesList = ({
|
|
|
12394
12682
|
}
|
|
12395
12683
|
);
|
|
12396
12684
|
};
|
|
12397
|
-
var HeaderAlternative = (0,
|
|
12685
|
+
var HeaderAlternative = (0, import_react40.forwardRef)(
|
|
12398
12686
|
({ className, title, subTitle, content, ...props }, ref) => {
|
|
12399
|
-
return /* @__PURE__ */ (0,
|
|
12687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
12400
12688
|
"div",
|
|
12401
12689
|
{
|
|
12402
12690
|
ref,
|
|
@@ -12406,11 +12694,11 @@ var HeaderAlternative = (0, import_react39.forwardRef)(
|
|
|
12406
12694
|
),
|
|
12407
12695
|
...props,
|
|
12408
12696
|
children: [
|
|
12409
|
-
/* @__PURE__ */ (0,
|
|
12410
|
-
/* @__PURE__ */ (0,
|
|
12411
|
-
/* @__PURE__ */ (0,
|
|
12697
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("span", { className: "flex flex-col", children: [
|
|
12698
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-text-950 font-bold text-lg", children: title }),
|
|
12699
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-text-700 text-sm ", children: subTitle })
|
|
12412
12700
|
] }),
|
|
12413
|
-
/* @__PURE__ */ (0,
|
|
12701
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-text-950 text-md", children: content })
|
|
12414
12702
|
]
|
|
12415
12703
|
}
|
|
12416
12704
|
);
|
|
@@ -12460,7 +12748,7 @@ function createZustandAuthAdapter(useAuthStore2) {
|
|
|
12460
12748
|
}
|
|
12461
12749
|
|
|
12462
12750
|
// src/components/Auth/useUrlAuthentication.ts
|
|
12463
|
-
var
|
|
12751
|
+
var import_react41 = require("react");
|
|
12464
12752
|
var import_react_router_dom2 = require("react-router-dom");
|
|
12465
12753
|
var getAuthParams = (location, extractParams) => {
|
|
12466
12754
|
const searchParams = new URLSearchParams(location.search);
|
|
@@ -12508,8 +12796,8 @@ var handleUserData = (responseData, setUser) => {
|
|
|
12508
12796
|
};
|
|
12509
12797
|
function useUrlAuthentication(options) {
|
|
12510
12798
|
const location = (0, import_react_router_dom2.useLocation)();
|
|
12511
|
-
const processedRef = (0,
|
|
12512
|
-
(0,
|
|
12799
|
+
const processedRef = (0, import_react41.useRef)(false);
|
|
12800
|
+
(0, import_react41.useEffect)(() => {
|
|
12513
12801
|
const handleAuthentication = async () => {
|
|
12514
12802
|
if (processedRef.current) {
|
|
12515
12803
|
return;
|
|
@@ -12580,9 +12868,9 @@ function useUrlAuthentication(options) {
|
|
|
12580
12868
|
}
|
|
12581
12869
|
|
|
12582
12870
|
// src/components/Auth/useApiConfig.ts
|
|
12583
|
-
var
|
|
12871
|
+
var import_react42 = require("react");
|
|
12584
12872
|
function useApiConfig(api) {
|
|
12585
|
-
return (0,
|
|
12873
|
+
return (0, import_react42.useMemo)(
|
|
12586
12874
|
() => ({
|
|
12587
12875
|
get: (endpoint, config) => api.get(endpoint, config)
|
|
12588
12876
|
}),
|
|
@@ -12591,8 +12879,8 @@ function useApiConfig(api) {
|
|
|
12591
12879
|
}
|
|
12592
12880
|
|
|
12593
12881
|
// src/components/Quiz/Quiz.tsx
|
|
12594
|
-
var
|
|
12595
|
-
var
|
|
12882
|
+
var import_phosphor_react33 = require("phosphor-react");
|
|
12883
|
+
var import_react45 = require("react");
|
|
12596
12884
|
|
|
12597
12885
|
// src/components/Quiz/useQuizStore.ts
|
|
12598
12886
|
var import_zustand11 = require("zustand");
|
|
@@ -13202,12 +13490,12 @@ var useQuizStore = (0, import_zustand11.create)()(
|
|
|
13202
13490
|
);
|
|
13203
13491
|
|
|
13204
13492
|
// src/components/Quiz/QuizContent.tsx
|
|
13205
|
-
var
|
|
13493
|
+
var import_react44 = require("react");
|
|
13206
13494
|
|
|
13207
13495
|
// src/components/MultipleChoice/MultipleChoice.tsx
|
|
13208
|
-
var
|
|
13209
|
-
var
|
|
13210
|
-
var
|
|
13496
|
+
var import_react43 = require("react");
|
|
13497
|
+
var import_phosphor_react31 = require("phosphor-react");
|
|
13498
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
13211
13499
|
var MultipleChoiceList = ({
|
|
13212
13500
|
disabled = false,
|
|
13213
13501
|
className = "",
|
|
@@ -13217,16 +13505,16 @@ var MultipleChoiceList = ({
|
|
|
13217
13505
|
onHandleSelectedValues,
|
|
13218
13506
|
mode = "interactive"
|
|
13219
13507
|
}) => {
|
|
13220
|
-
const [actualValue, setActualValue] = (0,
|
|
13221
|
-
(0,
|
|
13508
|
+
const [actualValue, setActualValue] = (0, import_react43.useState)(selectedValues);
|
|
13509
|
+
(0, import_react43.useEffect)(() => {
|
|
13222
13510
|
setActualValue(selectedValues);
|
|
13223
13511
|
}, [selectedValues]);
|
|
13224
13512
|
const getStatusBadge2 = (status) => {
|
|
13225
13513
|
switch (status) {
|
|
13226
13514
|
case "correct":
|
|
13227
|
-
return /* @__PURE__ */ (0,
|
|
13515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_phosphor_react31.CheckCircle, {}), children: "Resposta correta" });
|
|
13228
13516
|
case "incorrect":
|
|
13229
|
-
return /* @__PURE__ */ (0,
|
|
13517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_phosphor_react31.XCircle, {}), children: "Resposta incorreta" });
|
|
13230
13518
|
default:
|
|
13231
13519
|
return null;
|
|
13232
13520
|
}
|
|
@@ -13247,14 +13535,14 @@ var MultipleChoiceList = ({
|
|
|
13247
13535
|
isSelected ? "border-primary-950 bg-primary-950 text-text" : "border-border-400 bg-background",
|
|
13248
13536
|
isDisabled && "opacity-40 cursor-not-allowed"
|
|
13249
13537
|
);
|
|
13250
|
-
return /* @__PURE__ */ (0,
|
|
13538
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: checkboxClasses, children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_phosphor_react31.Check, { size: 16, weight: "bold" }) });
|
|
13251
13539
|
};
|
|
13252
13540
|
if (mode === "readonly") {
|
|
13253
|
-
return /* @__PURE__ */ (0,
|
|
13541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: cn("flex flex-col gap-2", className), children: choices.map((choice, i) => {
|
|
13254
13542
|
const isSelected = actualValue?.includes(choice.value) || false;
|
|
13255
13543
|
const statusStyles = getStatusStyles2(choice.status);
|
|
13256
13544
|
const statusBadge = getStatusBadge2(choice.status);
|
|
13257
|
-
return /* @__PURE__ */ (0,
|
|
13545
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
13258
13546
|
"div",
|
|
13259
13547
|
{
|
|
13260
13548
|
className: cn(
|
|
@@ -13263,9 +13551,9 @@ var MultipleChoiceList = ({
|
|
|
13263
13551
|
choice.disabled ? "opacity-50 cursor-not-allowed" : ""
|
|
13264
13552
|
),
|
|
13265
13553
|
children: [
|
|
13266
|
-
/* @__PURE__ */ (0,
|
|
13554
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
13267
13555
|
renderVisualCheckbox(isSelected, choice.disabled || disabled),
|
|
13268
|
-
/* @__PURE__ */ (0,
|
|
13556
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
13269
13557
|
"span",
|
|
13270
13558
|
{
|
|
13271
13559
|
className: cn(
|
|
@@ -13277,14 +13565,14 @@ var MultipleChoiceList = ({
|
|
|
13277
13565
|
}
|
|
13278
13566
|
)
|
|
13279
13567
|
] }),
|
|
13280
|
-
statusBadge && /* @__PURE__ */ (0,
|
|
13568
|
+
statusBadge && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex-shrink-0", children: statusBadge })
|
|
13281
13569
|
]
|
|
13282
13570
|
},
|
|
13283
13571
|
`readonly-${choice.value}-${i}`
|
|
13284
13572
|
);
|
|
13285
13573
|
}) });
|
|
13286
13574
|
}
|
|
13287
|
-
return /* @__PURE__ */ (0,
|
|
13575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
13288
13576
|
"div",
|
|
13289
13577
|
{
|
|
13290
13578
|
className: cn(
|
|
@@ -13292,7 +13580,7 @@ var MultipleChoiceList = ({
|
|
|
13292
13580
|
disabled ? "opacity-50 cursor-not-allowed" : "",
|
|
13293
13581
|
className
|
|
13294
13582
|
),
|
|
13295
|
-
children: /* @__PURE__ */ (0,
|
|
13583
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
13296
13584
|
CheckboxList_default,
|
|
13297
13585
|
{
|
|
13298
13586
|
name,
|
|
@@ -13302,12 +13590,12 @@ var MultipleChoiceList = ({
|
|
|
13302
13590
|
onHandleSelectedValues?.(v);
|
|
13303
13591
|
},
|
|
13304
13592
|
disabled,
|
|
13305
|
-
children: choices.map((choice, i) => /* @__PURE__ */ (0,
|
|
13593
|
+
children: choices.map((choice, i) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
13306
13594
|
"div",
|
|
13307
13595
|
{
|
|
13308
13596
|
className: "flex flex-row gap-2 items-center",
|
|
13309
13597
|
children: [
|
|
13310
|
-
/* @__PURE__ */ (0,
|
|
13598
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
13311
13599
|
CheckboxListItem,
|
|
13312
13600
|
{
|
|
13313
13601
|
value: choice.value,
|
|
@@ -13315,7 +13603,7 @@ var MultipleChoiceList = ({
|
|
|
13315
13603
|
disabled: choice.disabled || disabled
|
|
13316
13604
|
}
|
|
13317
13605
|
),
|
|
13318
|
-
/* @__PURE__ */ (0,
|
|
13606
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
13319
13607
|
"label",
|
|
13320
13608
|
{
|
|
13321
13609
|
htmlFor: `interactive-${choice.value}-${i}`,
|
|
@@ -13338,19 +13626,19 @@ var MultipleChoiceList = ({
|
|
|
13338
13626
|
};
|
|
13339
13627
|
|
|
13340
13628
|
// src/components/Quiz/QuizContent.tsx
|
|
13341
|
-
var
|
|
13629
|
+
var import_phosphor_react32 = require("phosphor-react");
|
|
13342
13630
|
|
|
13343
13631
|
// src/assets/img/mock-image-question.png
|
|
13344
13632
|
var mock_image_question_default = "./mock-image-question-HEZCLFDL.png";
|
|
13345
13633
|
|
|
13346
13634
|
// src/components/Quiz/QuizContent.tsx
|
|
13347
|
-
var
|
|
13635
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
13348
13636
|
var getStatusBadge = (status) => {
|
|
13349
13637
|
switch (status) {
|
|
13350
13638
|
case "correct":
|
|
13351
|
-
return /* @__PURE__ */ (0,
|
|
13639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_phosphor_react32.CheckCircle, {}), children: "Resposta correta" });
|
|
13352
13640
|
case "incorrect":
|
|
13353
|
-
return /* @__PURE__ */ (0,
|
|
13641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_phosphor_react32.XCircle, {}), children: "Resposta incorreta" });
|
|
13354
13642
|
default:
|
|
13355
13643
|
return null;
|
|
13356
13644
|
}
|
|
@@ -13363,13 +13651,13 @@ var getStatusStyles = (variantCorrect) => {
|
|
|
13363
13651
|
return "bg-error-background border-error-300";
|
|
13364
13652
|
}
|
|
13365
13653
|
};
|
|
13366
|
-
var QuizSubTitle = (0,
|
|
13654
|
+
var QuizSubTitle = (0, import_react44.forwardRef)(
|
|
13367
13655
|
({ subTitle, ...props }, ref) => {
|
|
13368
|
-
return /* @__PURE__ */ (0,
|
|
13656
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "px-4 pb-2 pt-6", ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "font-bold text-lg text-text-950", children: subTitle }) });
|
|
13369
13657
|
}
|
|
13370
13658
|
);
|
|
13371
|
-
var QuizContainer = (0,
|
|
13372
|
-
return /* @__PURE__ */ (0,
|
|
13659
|
+
var QuizContainer = (0, import_react44.forwardRef)(({ children, className, ...props }, ref) => {
|
|
13660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13373
13661
|
"div",
|
|
13374
13662
|
{
|
|
13375
13663
|
ref,
|
|
@@ -13422,10 +13710,10 @@ var QuizAlternative = ({ paddingBottom }) => {
|
|
|
13422
13710
|
};
|
|
13423
13711
|
});
|
|
13424
13712
|
if (!alternatives)
|
|
13425
|
-
return /* @__PURE__ */ (0,
|
|
13426
|
-
return /* @__PURE__ */ (0,
|
|
13427
|
-
/* @__PURE__ */ (0,
|
|
13428
|
-
/* @__PURE__ */ (0,
|
|
13713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { children: "N\xE3o h\xE1 Alternativas" }) });
|
|
13714
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
13715
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
13716
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13429
13717
|
AlternativesList,
|
|
13430
13718
|
{
|
|
13431
13719
|
mode: variant === "default" ? "interactive" : "readonly",
|
|
@@ -13457,15 +13745,15 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
13457
13745
|
const currentQuestionResult = getQuestionResultByQuestionId(
|
|
13458
13746
|
currentQuestion?.id || ""
|
|
13459
13747
|
);
|
|
13460
|
-
const prevSelectedValuesRef = (0,
|
|
13461
|
-
const prevQuestionIdRef = (0,
|
|
13462
|
-
const allCurrentAnswerIds = (0,
|
|
13748
|
+
const prevSelectedValuesRef = (0, import_react44.useRef)([]);
|
|
13749
|
+
const prevQuestionIdRef = (0, import_react44.useRef)("");
|
|
13750
|
+
const allCurrentAnswerIds = (0, import_react44.useMemo)(() => {
|
|
13463
13751
|
return allCurrentAnswers?.map((answer) => answer.optionId) || [];
|
|
13464
13752
|
}, [allCurrentAnswers]);
|
|
13465
|
-
const selectedValues = (0,
|
|
13753
|
+
const selectedValues = (0, import_react44.useMemo)(() => {
|
|
13466
13754
|
return allCurrentAnswerIds?.filter((id) => id !== null) || [];
|
|
13467
13755
|
}, [allCurrentAnswerIds]);
|
|
13468
|
-
const stableSelectedValues = (0,
|
|
13756
|
+
const stableSelectedValues = (0, import_react44.useMemo)(() => {
|
|
13469
13757
|
const currentQuestionId = currentQuestion?.id || "";
|
|
13470
13758
|
const hasQuestionChanged = prevQuestionIdRef.current !== currentQuestionId;
|
|
13471
13759
|
if (hasQuestionChanged) {
|
|
@@ -13489,7 +13777,7 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
13489
13777
|
variant,
|
|
13490
13778
|
currentQuestionResult?.selectedOptions
|
|
13491
13779
|
]);
|
|
13492
|
-
const handleSelectedValues = (0,
|
|
13780
|
+
const handleSelectedValues = (0, import_react44.useCallback)(
|
|
13493
13781
|
(values) => {
|
|
13494
13782
|
if (currentQuestion) {
|
|
13495
13783
|
selectMultipleAnswer(currentQuestion.id, values);
|
|
@@ -13497,7 +13785,7 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
13497
13785
|
},
|
|
13498
13786
|
[currentQuestion, selectMultipleAnswer]
|
|
13499
13787
|
);
|
|
13500
|
-
const questionKey = (0,
|
|
13788
|
+
const questionKey = (0, import_react44.useMemo)(
|
|
13501
13789
|
() => `question-${currentQuestion?.id || "1"}`,
|
|
13502
13790
|
[currentQuestion?.id]
|
|
13503
13791
|
);
|
|
@@ -13528,10 +13816,10 @@ var QuizMultipleChoice = ({ paddingBottom }) => {
|
|
|
13528
13816
|
};
|
|
13529
13817
|
});
|
|
13530
13818
|
if (!choices)
|
|
13531
|
-
return /* @__PURE__ */ (0,
|
|
13532
|
-
return /* @__PURE__ */ (0,
|
|
13533
|
-
/* @__PURE__ */ (0,
|
|
13534
|
-
/* @__PURE__ */ (0,
|
|
13819
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { children: "N\xE3o h\xE1 Escolhas Multiplas" }) });
|
|
13820
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
13821
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
13822
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13535
13823
|
MultipleChoiceList,
|
|
13536
13824
|
{
|
|
13537
13825
|
choices,
|
|
@@ -13558,14 +13846,14 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
13558
13846
|
currentQuestion?.id || ""
|
|
13559
13847
|
);
|
|
13560
13848
|
const currentAnswer = getCurrentAnswer();
|
|
13561
|
-
const textareaRef = (0,
|
|
13849
|
+
const textareaRef = (0, import_react44.useRef)(null);
|
|
13562
13850
|
const charLimit = getDissertativeCharLimit();
|
|
13563
13851
|
const handleAnswerChange = (value) => {
|
|
13564
13852
|
if (currentQuestion) {
|
|
13565
13853
|
selectDissertativeAnswer(currentQuestion.id, value);
|
|
13566
13854
|
}
|
|
13567
13855
|
};
|
|
13568
|
-
const adjustTextareaHeight = (0,
|
|
13856
|
+
const adjustTextareaHeight = (0, import_react44.useCallback)(() => {
|
|
13569
13857
|
if (textareaRef.current) {
|
|
13570
13858
|
textareaRef.current.style.height = "auto";
|
|
13571
13859
|
const scrollHeight = textareaRef.current.scrollHeight;
|
|
@@ -13575,16 +13863,16 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
13575
13863
|
textareaRef.current.style.height = `${newHeight}px`;
|
|
13576
13864
|
}
|
|
13577
13865
|
}, []);
|
|
13578
|
-
(0,
|
|
13866
|
+
(0, import_react44.useEffect)(() => {
|
|
13579
13867
|
adjustTextareaHeight();
|
|
13580
13868
|
}, [currentAnswer, adjustTextareaHeight]);
|
|
13581
13869
|
if (!currentQuestion) {
|
|
13582
|
-
return /* @__PURE__ */ (0,
|
|
13870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-600 text-md", children: "Nenhuma quest\xE3o dispon\xEDvel" }) });
|
|
13583
13871
|
}
|
|
13584
13872
|
const localAnswer = (variant == "result" ? currentQuestionResult?.answer : currentAnswer?.answer) || "";
|
|
13585
|
-
return /* @__PURE__ */ (0,
|
|
13586
|
-
/* @__PURE__ */ (0,
|
|
13587
|
-
/* @__PURE__ */ (0,
|
|
13873
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
13874
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Resposta" }),
|
|
13875
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn(variant != "result" && paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-4 max-h-[600px] overflow-y-auto", children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13588
13876
|
TextArea_default,
|
|
13589
13877
|
{
|
|
13590
13878
|
ref: textareaRef,
|
|
@@ -13596,10 +13884,10 @@ var QuizDissertative = ({ paddingBottom }) => {
|
|
|
13596
13884
|
maxLength: charLimit,
|
|
13597
13885
|
showCharacterCount: !!charLimit
|
|
13598
13886
|
}
|
|
13599
|
-
) }) : /* @__PURE__ */ (0,
|
|
13600
|
-
variant === "result" && currentQuestionResult?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0,
|
|
13601
|
-
/* @__PURE__ */ (0,
|
|
13602
|
-
/* @__PURE__ */ (0,
|
|
13887
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: localAnswer || "Nenhuma resposta fornecida" }) }) }) }),
|
|
13888
|
+
variant === "result" && currentQuestionResult?.answerStatus == "RESPOSTA_INCORRETA" /* RESPOSTA_INCORRETA */ && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
13889
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Observa\xE7\xE3o do professor" }),
|
|
13890
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-600 text-md whitespace-pre-wrap", children: currentQuestionResult?.teacherFeedback }) })
|
|
13603
13891
|
] })
|
|
13604
13892
|
] });
|
|
13605
13893
|
};
|
|
@@ -13625,16 +13913,16 @@ var QuizTrueOrFalse = ({ paddingBottom }) => {
|
|
|
13625
13913
|
];
|
|
13626
13914
|
const getLetterByIndex = (index) => String.fromCodePoint(97 + index);
|
|
13627
13915
|
const isDefaultVariant = variant === "default";
|
|
13628
|
-
return /* @__PURE__ */ (0,
|
|
13629
|
-
/* @__PURE__ */ (0,
|
|
13630
|
-
/* @__PURE__ */ (0,
|
|
13916
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
13917
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
13918
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
|
|
13631
13919
|
const variantCorrect = option.isCorrect ? "correct" : "incorrect";
|
|
13632
|
-
return /* @__PURE__ */ (0,
|
|
13920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
13633
13921
|
"section",
|
|
13634
13922
|
{
|
|
13635
13923
|
className: "flex flex-col gap-2",
|
|
13636
13924
|
children: [
|
|
13637
|
-
/* @__PURE__ */ (0,
|
|
13925
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
13638
13926
|
"div",
|
|
13639
13927
|
{
|
|
13640
13928
|
className: cn(
|
|
@@ -13642,20 +13930,20 @@ var QuizTrueOrFalse = ({ paddingBottom }) => {
|
|
|
13642
13930
|
isDefaultVariant ? "" : getStatusStyles(variantCorrect)
|
|
13643
13931
|
),
|
|
13644
13932
|
children: [
|
|
13645
|
-
/* @__PURE__ */ (0,
|
|
13646
|
-
isDefaultVariant ? /* @__PURE__ */ (0,
|
|
13647
|
-
/* @__PURE__ */ (0,
|
|
13648
|
-
/* @__PURE__ */ (0,
|
|
13649
|
-
/* @__PURE__ */ (0,
|
|
13650
|
-
/* @__PURE__ */ (0,
|
|
13933
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index).concat(") ").concat(option.label) }),
|
|
13934
|
+
isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Select_default, { size: "medium", children: [
|
|
13935
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectValue, { placeholder: "Selecione opc\xE3o" }) }),
|
|
13936
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(SelectContent, { children: [
|
|
13937
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectItem, { value: "V", children: "Verdadeiro" }),
|
|
13938
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectItem, { value: "F", children: "Falso" })
|
|
13651
13939
|
] })
|
|
13652
|
-
] }) : /* @__PURE__ */ (0,
|
|
13940
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-shrink-0", children: getStatusBadge(variantCorrect) })
|
|
13653
13941
|
]
|
|
13654
13942
|
}
|
|
13655
13943
|
),
|
|
13656
|
-
!isDefaultVariant && /* @__PURE__ */ (0,
|
|
13657
|
-
/* @__PURE__ */ (0,
|
|
13658
|
-
!option.isCorrect && /* @__PURE__ */ (0,
|
|
13944
|
+
!isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
|
|
13945
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta selecionada: V" }),
|
|
13946
|
+
!option.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-800 text-2xs", children: "Resposta correta: F" })
|
|
13659
13947
|
] })
|
|
13660
13948
|
]
|
|
13661
13949
|
},
|
|
@@ -13716,7 +14004,7 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
13716
14004
|
isCorrect: false
|
|
13717
14005
|
}
|
|
13718
14006
|
];
|
|
13719
|
-
const [userAnswers, setUserAnswers] = (0,
|
|
14007
|
+
const [userAnswers, setUserAnswers] = (0, import_react44.useState)(() => {
|
|
13720
14008
|
if (variant === "result") {
|
|
13721
14009
|
return mockUserAnswers;
|
|
13722
14010
|
}
|
|
@@ -13745,13 +14033,13 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
13745
14033
|
const assignedDots = new Set(
|
|
13746
14034
|
userAnswers.map((a) => a.dotOption).filter(Boolean)
|
|
13747
14035
|
);
|
|
13748
|
-
return /* @__PURE__ */ (0,
|
|
13749
|
-
/* @__PURE__ */ (0,
|
|
13750
|
-
/* @__PURE__ */ (0,
|
|
14036
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
14037
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
14038
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex flex-col gap-3.5", children: options.map((option, index) => {
|
|
13751
14039
|
const answer = userAnswers[index];
|
|
13752
14040
|
const variantCorrect = answer.isCorrect ? "correct" : "incorrect";
|
|
13753
|
-
return /* @__PURE__ */ (0,
|
|
13754
|
-
/* @__PURE__ */ (0,
|
|
14041
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("section", { className: "flex flex-col gap-2", children: [
|
|
14042
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
13755
14043
|
"div",
|
|
13756
14044
|
{
|
|
13757
14045
|
className: cn(
|
|
@@ -13759,30 +14047,30 @@ var QuizConnectDots = ({ paddingBottom }) => {
|
|
|
13759
14047
|
isDefaultVariant ? "" : getStatusStyles(variantCorrect)
|
|
13760
14048
|
),
|
|
13761
14049
|
children: [
|
|
13762
|
-
/* @__PURE__ */ (0,
|
|
13763
|
-
isDefaultVariant ? /* @__PURE__ */ (0,
|
|
14050
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "text-text-900 text-sm", children: getLetterByIndex(index) + ") " + option.label }),
|
|
14051
|
+
isDefaultVariant ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
13764
14052
|
Select_default,
|
|
13765
14053
|
{
|
|
13766
14054
|
size: "medium",
|
|
13767
14055
|
value: answer.dotOption || void 0,
|
|
13768
14056
|
onValueChange: (value) => handleSelectDot(index, value),
|
|
13769
14057
|
children: [
|
|
13770
|
-
/* @__PURE__ */ (0,
|
|
13771
|
-
/* @__PURE__ */ (0,
|
|
14058
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectTrigger, { className: "w-[180px]", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
|
|
14059
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectContent, { children: dotsOptions.filter(
|
|
13772
14060
|
(dot) => !assignedDots.has(dot.label) || answer.dotOption === dot.label
|
|
13773
|
-
).map((dot) => /* @__PURE__ */ (0,
|
|
14061
|
+
).map((dot) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectItem, { value: dot.label, children: dot.label }, dot.label)) })
|
|
13774
14062
|
]
|
|
13775
14063
|
}
|
|
13776
|
-
) : /* @__PURE__ */ (0,
|
|
14064
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-shrink-0", children: answer.isCorrect === null ? null : getStatusBadge(variantCorrect) })
|
|
13777
14065
|
]
|
|
13778
14066
|
}
|
|
13779
14067
|
),
|
|
13780
|
-
!isDefaultVariant && /* @__PURE__ */ (0,
|
|
13781
|
-
/* @__PURE__ */ (0,
|
|
14068
|
+
!isDefaultVariant && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "flex flex-row gap-2 items-center", children: [
|
|
14069
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-text-800 text-2xs", children: [
|
|
13782
14070
|
"Resposta selecionada: ",
|
|
13783
14071
|
answer.dotOption || "Nenhuma"
|
|
13784
14072
|
] }),
|
|
13785
|
-
!answer.isCorrect && /* @__PURE__ */ (0,
|
|
14073
|
+
!answer.isCorrect && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-text-800 text-2xs", children: [
|
|
13786
14074
|
"Resposta correta: ",
|
|
13787
14075
|
answer.correctOption
|
|
13788
14076
|
] })
|
|
@@ -13835,8 +14123,8 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
13835
14123
|
isCorrect: true
|
|
13836
14124
|
}
|
|
13837
14125
|
];
|
|
13838
|
-
const [answers, setAnswers] = (0,
|
|
13839
|
-
const baseId = (0,
|
|
14126
|
+
const [answers, setAnswers] = (0, import_react44.useState)({});
|
|
14127
|
+
const baseId = (0, import_react44.useId)();
|
|
13840
14128
|
const getAvailableOptionsForSelect = (selectId) => {
|
|
13841
14129
|
const usedOptions = new Set(
|
|
13842
14130
|
Object.entries(answers).filter(([key]) => key !== selectId).map(([, value]) => value)
|
|
@@ -13851,18 +14139,18 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
13851
14139
|
const mockAnswer = mockUserAnswers.find(
|
|
13852
14140
|
(answer) => answer.selectId === selectId
|
|
13853
14141
|
);
|
|
13854
|
-
return /* @__PURE__ */ (0,
|
|
14142
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "inline-flex mb-2.5 text-success-600 font-semibold text-md border-b-2 border-success-600", children: mockAnswer?.correctAnswer });
|
|
13855
14143
|
};
|
|
13856
14144
|
const renderDefaultElement = (selectId, startIndex, selectedValue, availableOptionsForThisSelect) => {
|
|
13857
|
-
return /* @__PURE__ */ (0,
|
|
14145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
13858
14146
|
Select_default,
|
|
13859
14147
|
{
|
|
13860
14148
|
value: selectedValue,
|
|
13861
14149
|
onValueChange: (value) => handleSelectChange(selectId, value),
|
|
13862
14150
|
className: "inline-flex mb-2.5",
|
|
13863
14151
|
children: [
|
|
13864
|
-
/* @__PURE__ */ (0,
|
|
13865
|
-
/* @__PURE__ */ (0,
|
|
14152
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectTrigger, { className: "inline-flex w-auto min-w-[140px] h-8 mx-1 bg-background border-gray-300", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectValue, { placeholder: "Selecione op\xE7\xE3o" }) }),
|
|
14153
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectContent, { children: availableOptionsForThisSelect.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SelectItem, { value: option, children: option }, `${option}-${index}`)) })
|
|
13866
14154
|
]
|
|
13867
14155
|
},
|
|
13868
14156
|
`${selectId}-${startIndex}`
|
|
@@ -13874,8 +14162,8 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
13874
14162
|
);
|
|
13875
14163
|
if (!mockAnswer) return null;
|
|
13876
14164
|
const action = mockAnswer.isCorrect ? "success" : "error";
|
|
13877
|
-
const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0,
|
|
13878
|
-
return /* @__PURE__ */ (0,
|
|
14165
|
+
const icon = mockAnswer.isCorrect ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_phosphor_react32.CheckCircle, {}) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_phosphor_react32.XCircle, {});
|
|
14166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13879
14167
|
Badge_default,
|
|
13880
14168
|
{
|
|
13881
14169
|
variant: "solid",
|
|
@@ -13883,7 +14171,7 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
13883
14171
|
iconRight: icon,
|
|
13884
14172
|
size: "large",
|
|
13885
14173
|
className: "py-3 w-[180px] justify-between mb-2.5",
|
|
13886
|
-
children: /* @__PURE__ */ (0,
|
|
14174
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-text-900", children: mockAnswer.userAnswer })
|
|
13887
14175
|
},
|
|
13888
14176
|
selectId
|
|
13889
14177
|
);
|
|
@@ -13939,25 +14227,25 @@ var QuizFill = ({ paddingBottom }) => {
|
|
|
13939
14227
|
}
|
|
13940
14228
|
return elements;
|
|
13941
14229
|
};
|
|
13942
|
-
return /* @__PURE__ */ (0,
|
|
13943
|
-
/* @__PURE__ */ (0,
|
|
13944
|
-
/* @__PURE__ */ (0,
|
|
14230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
14231
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Alternativas" }),
|
|
14232
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-6 px-4 h-auto", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13945
14233
|
"div",
|
|
13946
14234
|
{
|
|
13947
14235
|
className: cn(
|
|
13948
14236
|
"text-lg text-text-900 leading-8 h-auto",
|
|
13949
14237
|
variant != "result" && paddingBottom
|
|
13950
14238
|
),
|
|
13951
|
-
children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0,
|
|
14239
|
+
children: renderTextWithSelects(exampleText).map((element) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { children: element.element }, element.id))
|
|
13952
14240
|
}
|
|
13953
14241
|
) }) }),
|
|
13954
|
-
variant === "result" && /* @__PURE__ */ (0,
|
|
13955
|
-
/* @__PURE__ */ (0,
|
|
13956
|
-
/* @__PURE__ */ (0,
|
|
14242
|
+
variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
14243
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Resultado" }),
|
|
14244
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: "h-auto pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "space-y-6 px-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
13957
14245
|
"div",
|
|
13958
14246
|
{
|
|
13959
14247
|
className: cn("text-lg text-text-900 leading-8", paddingBottom),
|
|
13960
|
-
children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0,
|
|
14248
|
+
children: renderTextWithSelects(exampleText, true).map((element) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { children: element.element }, element.id))
|
|
13961
14249
|
}
|
|
13962
14250
|
) }) })
|
|
13963
14251
|
] })
|
|
@@ -13975,7 +14263,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
13975
14263
|
};
|
|
13976
14264
|
const correctRadiusRelative = calculateCorrectRadiusRelative();
|
|
13977
14265
|
const mockUserAnswerRelative = { x: 0.72, y: 0.348 };
|
|
13978
|
-
const [clickPositionRelative, setClickPositionRelative] = (0,
|
|
14266
|
+
const [clickPositionRelative, setClickPositionRelative] = (0, import_react44.useState)(variant == "result" ? mockUserAnswerRelative : null);
|
|
13979
14267
|
const convertToRelativeCoordinates = (x, y, rect) => {
|
|
13980
14268
|
const safeWidth = Math.max(rect.width, 1e-3);
|
|
13981
14269
|
const safeHeight = Math.max(rect.height, 1e-3);
|
|
@@ -14011,36 +14299,36 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
14011
14299
|
}
|
|
14012
14300
|
return "bg-success-600/70 border-white";
|
|
14013
14301
|
};
|
|
14014
|
-
return /* @__PURE__ */ (0,
|
|
14015
|
-
/* @__PURE__ */ (0,
|
|
14016
|
-
/* @__PURE__ */ (0,
|
|
14302
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
14303
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizSubTitle, { subTitle: "Clique na \xE1rea correta" }),
|
|
14304
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(QuizContainer, { className: cn("", paddingBottom), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
14017
14305
|
"div",
|
|
14018
14306
|
{
|
|
14019
14307
|
"data-testid": "quiz-image-container",
|
|
14020
14308
|
className: "space-y-6 p-3 relative inline-block",
|
|
14021
14309
|
children: [
|
|
14022
|
-
variant == "result" && /* @__PURE__ */ (0,
|
|
14310
|
+
variant == "result" && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
14023
14311
|
"div",
|
|
14024
14312
|
{
|
|
14025
14313
|
"data-testid": "quiz-legend",
|
|
14026
14314
|
className: "flex items-center gap-4 text-xs",
|
|
14027
14315
|
children: [
|
|
14028
|
-
/* @__PURE__ */ (0,
|
|
14029
|
-
/* @__PURE__ */ (0,
|
|
14030
|
-
/* @__PURE__ */ (0,
|
|
14316
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
14317
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-primary/70 border border-[#F8CC2E]" }),
|
|
14318
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "\xC1rea correta" })
|
|
14031
14319
|
] }),
|
|
14032
|
-
/* @__PURE__ */ (0,
|
|
14033
|
-
/* @__PURE__ */ (0,
|
|
14034
|
-
/* @__PURE__ */ (0,
|
|
14320
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
14321
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-3 h-3 rounded-full bg-success-600/70 border border-white" }),
|
|
14322
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta correta" })
|
|
14035
14323
|
] }),
|
|
14036
|
-
/* @__PURE__ */ (0,
|
|
14037
|
-
/* @__PURE__ */ (0,
|
|
14038
|
-
/* @__PURE__ */ (0,
|
|
14324
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
14325
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-3 h-3 rounded-full bg-indicator-error/70 border border-white" }),
|
|
14326
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-text-600 font-medium text-sm", children: "Resposta incorreta" })
|
|
14039
14327
|
] })
|
|
14040
14328
|
]
|
|
14041
14329
|
}
|
|
14042
14330
|
),
|
|
14043
|
-
/* @__PURE__ */ (0,
|
|
14331
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
14044
14332
|
"button",
|
|
14045
14333
|
{
|
|
14046
14334
|
"data-testid": "quiz-image-button",
|
|
@@ -14055,7 +14343,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
14055
14343
|
},
|
|
14056
14344
|
"aria-label": "\xC1rea da imagem interativa",
|
|
14057
14345
|
children: [
|
|
14058
|
-
/* @__PURE__ */ (0,
|
|
14346
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
14059
14347
|
"img",
|
|
14060
14348
|
{
|
|
14061
14349
|
"data-testid": "quiz-image",
|
|
@@ -14064,7 +14352,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
14064
14352
|
className: "w-full h-auto rounded-md"
|
|
14065
14353
|
}
|
|
14066
14354
|
),
|
|
14067
|
-
variant === "result" && /* @__PURE__ */ (0,
|
|
14355
|
+
variant === "result" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
14068
14356
|
"div",
|
|
14069
14357
|
{
|
|
14070
14358
|
"data-testid": "quiz-correct-circle",
|
|
@@ -14079,7 +14367,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
14079
14367
|
}
|
|
14080
14368
|
}
|
|
14081
14369
|
),
|
|
14082
|
-
clickPositionRelative && /* @__PURE__ */ (0,
|
|
14370
|
+
clickPositionRelative && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
14083
14371
|
"div",
|
|
14084
14372
|
{
|
|
14085
14373
|
"data-testid": "quiz-user-circle",
|
|
@@ -14104,7 +14392,7 @@ var QuizImageQuestion = ({ paddingBottom }) => {
|
|
|
14104
14392
|
};
|
|
14105
14393
|
|
|
14106
14394
|
// src/components/Quiz/Quiz.tsx
|
|
14107
|
-
var
|
|
14395
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
14108
14396
|
var getQuizTypeConfig = (type) => {
|
|
14109
14397
|
const QUIZ_TYPE_CONFIG = {
|
|
14110
14398
|
["SIMULADO" /* SIMULADO */]: {
|
|
@@ -14141,14 +14429,14 @@ var getFinishConfirmationText = (type) => {
|
|
|
14141
14429
|
const config = getQuizTypeConfig(type);
|
|
14142
14430
|
return `Tem certeza que deseja finalizar ${config.article} ${config.label.toLowerCase()}?`;
|
|
14143
14431
|
};
|
|
14144
|
-
var Quiz = (0,
|
|
14432
|
+
var Quiz = (0, import_react45.forwardRef)(({ children, className, variant = "default", ...props }, ref) => {
|
|
14145
14433
|
const { setVariant } = useQuizStore();
|
|
14146
|
-
(0,
|
|
14434
|
+
(0, import_react45.useEffect)(() => {
|
|
14147
14435
|
setVariant(variant);
|
|
14148
14436
|
}, [variant, setVariant]);
|
|
14149
|
-
return /* @__PURE__ */ (0,
|
|
14437
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { ref, className: cn("flex flex-col", className), ...props, children });
|
|
14150
14438
|
});
|
|
14151
|
-
var QuizTitle = (0,
|
|
14439
|
+
var QuizTitle = (0, import_react45.forwardRef)(({ className, onBack, ...props }, ref) => {
|
|
14152
14440
|
const {
|
|
14153
14441
|
quiz,
|
|
14154
14442
|
currentQuestionIndex,
|
|
@@ -14158,7 +14446,7 @@ var QuizTitle = (0, import_react44.forwardRef)(({ className, onBack, ...props },
|
|
|
14158
14446
|
formatTime: formatTime2,
|
|
14159
14447
|
isStarted
|
|
14160
14448
|
} = useQuizStore();
|
|
14161
|
-
const [showExitConfirmation, setShowExitConfirmation] = (0,
|
|
14449
|
+
const [showExitConfirmation, setShowExitConfirmation] = (0, import_react45.useState)(false);
|
|
14162
14450
|
const totalQuestions = getTotalQuestions();
|
|
14163
14451
|
const quizTitle = getQuizTitle();
|
|
14164
14452
|
const handleBackClick = () => {
|
|
@@ -14182,8 +14470,8 @@ var QuizTitle = (0, import_react44.forwardRef)(({ className, onBack, ...props },
|
|
|
14182
14470
|
const handleCancelExit = () => {
|
|
14183
14471
|
setShowExitConfirmation(false);
|
|
14184
14472
|
};
|
|
14185
|
-
return /* @__PURE__ */ (0,
|
|
14186
|
-
/* @__PURE__ */ (0,
|
|
14473
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
14474
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
14187
14475
|
"div",
|
|
14188
14476
|
{
|
|
14189
14477
|
ref,
|
|
@@ -14193,24 +14481,24 @@ var QuizTitle = (0, import_react44.forwardRef)(({ className, onBack, ...props },
|
|
|
14193
14481
|
),
|
|
14194
14482
|
...props,
|
|
14195
14483
|
children: [
|
|
14196
|
-
/* @__PURE__ */ (0,
|
|
14484
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14197
14485
|
IconButton_default,
|
|
14198
14486
|
{
|
|
14199
|
-
icon: /* @__PURE__ */ (0,
|
|
14487
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_phosphor_react33.CaretLeft, { size: 24 }),
|
|
14200
14488
|
size: "md",
|
|
14201
14489
|
"aria-label": "Voltar",
|
|
14202
14490
|
onClick: handleBackClick
|
|
14203
14491
|
}
|
|
14204
14492
|
),
|
|
14205
|
-
/* @__PURE__ */ (0,
|
|
14206
|
-
/* @__PURE__ */ (0,
|
|
14207
|
-
/* @__PURE__ */ (0,
|
|
14493
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "flex flex-col gap-2 text-center", children: [
|
|
14494
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-text-950 font-bold text-md", children: quizTitle }),
|
|
14495
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-text-600 text-xs", children: totalQuestions > 0 ? `${currentQuestionIndex + 1} de ${totalQuestions}` : "0 de 0" })
|
|
14208
14496
|
] }),
|
|
14209
|
-
/* @__PURE__ */ (0,
|
|
14497
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "flex flex-row items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Badge_default, { variant: "outlined", action: "info", iconLeft: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_phosphor_react33.Clock, {}), children: isStarted ? formatTime2(timeElapsed) : "00:00" }) })
|
|
14210
14498
|
]
|
|
14211
14499
|
}
|
|
14212
14500
|
),
|
|
14213
|
-
/* @__PURE__ */ (0,
|
|
14501
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14214
14502
|
AlertDialog,
|
|
14215
14503
|
{
|
|
14216
14504
|
isOpen: showExitConfirmation,
|
|
@@ -14230,7 +14518,7 @@ var QuizHeader = () => {
|
|
|
14230
14518
|
const currentQuestion = getCurrentQuestion();
|
|
14231
14519
|
let currentId = currentQuestion && "questionId" in currentQuestion ? currentQuestion.questionId : currentQuestion?.id;
|
|
14232
14520
|
const questionIndex = getQuestionIndex(currentId);
|
|
14233
|
-
return /* @__PURE__ */ (0,
|
|
14521
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14234
14522
|
HeaderAlternative,
|
|
14235
14523
|
{
|
|
14236
14524
|
title: currentQuestion ? `Quest\xE3o ${questionIndex.toString().padStart(2, "0")}` : "Quest\xE3o",
|
|
@@ -14252,7 +14540,7 @@ var QuizContent = ({ paddingBottom }) => {
|
|
|
14252
14540
|
["IMAGEM" /* IMAGEM */]: QuizImageQuestion
|
|
14253
14541
|
};
|
|
14254
14542
|
const QuestionComponent = currentQuestion ? questionComponents[currentQuestion.questionType] : null;
|
|
14255
|
-
return QuestionComponent ? /* @__PURE__ */ (0,
|
|
14543
|
+
return QuestionComponent ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(QuestionComponent, { paddingBottom }) : null;
|
|
14256
14544
|
};
|
|
14257
14545
|
var QuizQuestionList = ({
|
|
14258
14546
|
filterType = "all",
|
|
@@ -14299,18 +14587,18 @@ var QuizQuestionList = ({
|
|
|
14299
14587
|
return "Em branco";
|
|
14300
14588
|
}
|
|
14301
14589
|
};
|
|
14302
|
-
return /* @__PURE__ */ (0,
|
|
14303
|
-
Object.entries(filteredGroupedQuestions).length == 0 && /* @__PURE__ */ (0,
|
|
14590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "space-y-6 px-4 h-full", children: [
|
|
14591
|
+
Object.entries(filteredGroupedQuestions).length == 0 && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "flex items-center justify-center text-gray-500 py-8 h-full", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-lg", children: "Nenhum resultado" }) }),
|
|
14304
14592
|
Object.entries(filteredGroupedQuestions).map(
|
|
14305
|
-
([subjectId, questions]) => /* @__PURE__ */ (0,
|
|
14306
|
-
/* @__PURE__ */ (0,
|
|
14307
|
-
/* @__PURE__ */ (0,
|
|
14308
|
-
/* @__PURE__ */ (0,
|
|
14593
|
+
([subjectId, questions]) => /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("section", { className: "flex flex-col gap-2", children: [
|
|
14594
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "pt-6 pb-4 flex flex-row gap-2", children: [
|
|
14595
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "bg-primary-500 p-1 rounded-sm flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_phosphor_react33.BookOpen, { size: 17, className: "text-white" }) }),
|
|
14596
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-text-800 font-bold text-lg", children: questions?.[0]?.knowledgeMatrix?.[0]?.subject?.name ?? "Sem mat\xE9ria" })
|
|
14309
14597
|
] }),
|
|
14310
|
-
/* @__PURE__ */ (0,
|
|
14598
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("ul", { className: "flex flex-col gap-2", children: questions.map((question) => {
|
|
14311
14599
|
const status = getQuestionStatus(question.id);
|
|
14312
14600
|
const questionNumber = getQuestionIndex(question.id);
|
|
14313
|
-
return /* @__PURE__ */ (0,
|
|
14601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14314
14602
|
CardStatus,
|
|
14315
14603
|
{
|
|
14316
14604
|
header: `Quest\xE3o ${questionNumber.toString().padStart(2, "0")}`,
|
|
@@ -14327,7 +14615,7 @@ var QuizQuestionList = ({
|
|
|
14327
14615
|
)
|
|
14328
14616
|
] });
|
|
14329
14617
|
};
|
|
14330
|
-
var QuizFooter = (0,
|
|
14618
|
+
var QuizFooter = (0, import_react45.forwardRef)(
|
|
14331
14619
|
({
|
|
14332
14620
|
className,
|
|
14333
14621
|
onGoToSimulated,
|
|
@@ -14361,8 +14649,8 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14361
14649
|
const currentAnswer = getCurrentAnswer();
|
|
14362
14650
|
const currentQuestion = getCurrentQuestion();
|
|
14363
14651
|
const isCurrentQuestionSkipped = currentQuestion ? getQuestionStatusFromUserAnswers(currentQuestion.id) === "skipped" : false;
|
|
14364
|
-
const [activeModal, setActiveModal] = (0,
|
|
14365
|
-
const [filterType, setFilterType] = (0,
|
|
14652
|
+
const [activeModal, setActiveModal] = (0, import_react45.useState)(null);
|
|
14653
|
+
const [filterType, setFilterType] = (0, import_react45.useState)("all");
|
|
14366
14654
|
const openModal = (modalName) => setActiveModal(modalName);
|
|
14367
14655
|
const closeModal = () => setActiveModal(null);
|
|
14368
14656
|
const isModalOpen = (modalName) => activeModal === modalName;
|
|
@@ -14417,8 +14705,8 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14417
14705
|
return;
|
|
14418
14706
|
}
|
|
14419
14707
|
};
|
|
14420
|
-
return /* @__PURE__ */ (0,
|
|
14421
|
-
/* @__PURE__ */ (0,
|
|
14708
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
14709
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14422
14710
|
"footer",
|
|
14423
14711
|
{
|
|
14424
14712
|
ref,
|
|
@@ -14427,17 +14715,17 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14427
14715
|
className
|
|
14428
14716
|
),
|
|
14429
14717
|
...props,
|
|
14430
|
-
children: variant === "default" ? /* @__PURE__ */ (0,
|
|
14431
|
-
/* @__PURE__ */ (0,
|
|
14432
|
-
/* @__PURE__ */ (0,
|
|
14718
|
+
children: variant === "default" ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
14719
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [
|
|
14720
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14433
14721
|
IconButton_default,
|
|
14434
14722
|
{
|
|
14435
|
-
icon: /* @__PURE__ */ (0,
|
|
14723
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_phosphor_react33.SquaresFour, { size: 24, className: "text-text-950" }),
|
|
14436
14724
|
size: "md",
|
|
14437
14725
|
onClick: () => openModal("modalNavigate")
|
|
14438
14726
|
}
|
|
14439
14727
|
),
|
|
14440
|
-
isFirstQuestion ? /* @__PURE__ */ (0,
|
|
14728
|
+
isFirstQuestion ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14441
14729
|
Button_default,
|
|
14442
14730
|
{
|
|
14443
14731
|
variant: "outline",
|
|
@@ -14448,13 +14736,13 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14448
14736
|
},
|
|
14449
14737
|
children: "Pular"
|
|
14450
14738
|
}
|
|
14451
|
-
) : /* @__PURE__ */ (0,
|
|
14739
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14452
14740
|
Button_default,
|
|
14453
14741
|
{
|
|
14454
14742
|
size: "medium",
|
|
14455
14743
|
variant: "link",
|
|
14456
14744
|
action: "primary",
|
|
14457
|
-
iconLeft: /* @__PURE__ */ (0,
|
|
14745
|
+
iconLeft: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_phosphor_react33.CaretLeft, { size: 18 }),
|
|
14458
14746
|
onClick: () => {
|
|
14459
14747
|
goToPreviousQuestion();
|
|
14460
14748
|
},
|
|
@@ -14462,7 +14750,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14462
14750
|
}
|
|
14463
14751
|
)
|
|
14464
14752
|
] }),
|
|
14465
|
-
!isFirstQuestion && !isLastQuestion && /* @__PURE__ */ (0,
|
|
14753
|
+
!isFirstQuestion && !isLastQuestion && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14466
14754
|
Button_default,
|
|
14467
14755
|
{
|
|
14468
14756
|
size: "small",
|
|
@@ -14475,7 +14763,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14475
14763
|
children: "Pular"
|
|
14476
14764
|
}
|
|
14477
14765
|
),
|
|
14478
|
-
isLastQuestion ? /* @__PURE__ */ (0,
|
|
14766
|
+
isLastQuestion ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14479
14767
|
Button_default,
|
|
14480
14768
|
{
|
|
14481
14769
|
size: "medium",
|
|
@@ -14484,13 +14772,13 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14484
14772
|
onClick: handleFinishQuiz,
|
|
14485
14773
|
children: "Finalizar"
|
|
14486
14774
|
}
|
|
14487
|
-
) : /* @__PURE__ */ (0,
|
|
14775
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14488
14776
|
Button_default,
|
|
14489
14777
|
{
|
|
14490
14778
|
size: "medium",
|
|
14491
14779
|
variant: "link",
|
|
14492
14780
|
action: "primary",
|
|
14493
|
-
iconRight: /* @__PURE__ */ (0,
|
|
14781
|
+
iconRight: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_phosphor_react33.CaretRight, { size: 18 }),
|
|
14494
14782
|
disabled: !currentAnswer && !isCurrentQuestionSkipped,
|
|
14495
14783
|
onClick: () => {
|
|
14496
14784
|
goToNextQuestion();
|
|
@@ -14498,7 +14786,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14498
14786
|
children: "Avan\xE7ar"
|
|
14499
14787
|
}
|
|
14500
14788
|
)
|
|
14501
|
-
] }) : /* @__PURE__ */ (0,
|
|
14789
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "flex flex-row items-center justify-center w-full", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14502
14790
|
Button_default,
|
|
14503
14791
|
{
|
|
14504
14792
|
variant: "link",
|
|
@@ -14510,7 +14798,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14510
14798
|
) })
|
|
14511
14799
|
}
|
|
14512
14800
|
),
|
|
14513
|
-
/* @__PURE__ */ (0,
|
|
14801
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14514
14802
|
AlertDialog,
|
|
14515
14803
|
{
|
|
14516
14804
|
isOpen: isModalOpen("alertDialog"),
|
|
@@ -14522,7 +14810,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14522
14810
|
onSubmit: handleAlertSubmit
|
|
14523
14811
|
}
|
|
14524
14812
|
),
|
|
14525
|
-
/* @__PURE__ */ (0,
|
|
14813
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14526
14814
|
Modal_default,
|
|
14527
14815
|
{
|
|
14528
14816
|
isOpen: isModalOpen("modalResult"),
|
|
@@ -14531,11 +14819,11 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14531
14819
|
closeOnEscape: false,
|
|
14532
14820
|
hideCloseButton: true,
|
|
14533
14821
|
size: "md",
|
|
14534
|
-
children: /* @__PURE__ */ (0,
|
|
14535
|
-
resultImageComponent ? /* @__PURE__ */ (0,
|
|
14536
|
-
/* @__PURE__ */ (0,
|
|
14537
|
-
/* @__PURE__ */ (0,
|
|
14538
|
-
/* @__PURE__ */ (0,
|
|
14822
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
|
|
14823
|
+
resultImageComponent ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-[282px] h-auto", children: resultImageComponent }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-gray-500 text-sm", children: "Imagem de resultado" }) }),
|
|
14824
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
|
|
14825
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: getCompletionTitle(quizType) }),
|
|
14826
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("p", { className: "text-text-500 font-sm", children: [
|
|
14539
14827
|
"Voc\xEA acertou ",
|
|
14540
14828
|
correctAnswers ?? "--",
|
|
14541
14829
|
" de ",
|
|
@@ -14544,8 +14832,8 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14544
14832
|
"quest\xF5es."
|
|
14545
14833
|
] })
|
|
14546
14834
|
] }),
|
|
14547
|
-
/* @__PURE__ */ (0,
|
|
14548
|
-
/* @__PURE__ */ (0,
|
|
14835
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "px-6 flex flex-row items-center gap-2 w-full", children: [
|
|
14836
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14549
14837
|
Button_default,
|
|
14550
14838
|
{
|
|
14551
14839
|
variant: "outline",
|
|
@@ -14555,38 +14843,38 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14555
14843
|
children: quizTypeLabel === "Question\xE1rio" ? "Ir para aulas" : `Ir para ${quizTypeLabel.toLocaleLowerCase()}s`
|
|
14556
14844
|
}
|
|
14557
14845
|
),
|
|
14558
|
-
/* @__PURE__ */ (0,
|
|
14846
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button_default, { className: "w-full", onClick: onDetailResult, children: "Detalhar resultado" })
|
|
14559
14847
|
] })
|
|
14560
14848
|
] })
|
|
14561
14849
|
}
|
|
14562
14850
|
),
|
|
14563
|
-
/* @__PURE__ */ (0,
|
|
14851
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14564
14852
|
Modal_default,
|
|
14565
14853
|
{
|
|
14566
14854
|
isOpen: isModalOpen("modalNavigate"),
|
|
14567
14855
|
onClose: closeModal,
|
|
14568
14856
|
title: "Quest\xF5es",
|
|
14569
14857
|
size: "lg",
|
|
14570
|
-
children: /* @__PURE__ */ (0,
|
|
14571
|
-
/* @__PURE__ */ (0,
|
|
14572
|
-
/* @__PURE__ */ (0,
|
|
14573
|
-
/* @__PURE__ */ (0,
|
|
14574
|
-
/* @__PURE__ */ (0,
|
|
14858
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col w-full not-lg:h-[calc(100vh-200px)] lg:max-h-[687px] lg:h-[687px]", children: [
|
|
14859
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.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: [
|
|
14860
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Filtrar por" }),
|
|
14861
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "max-w-[266px]", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Select_default, { value: filterType, onValueChange: setFilterType, children: [
|
|
14862
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14575
14863
|
SelectTrigger,
|
|
14576
14864
|
{
|
|
14577
14865
|
variant: "rounded",
|
|
14578
14866
|
className: "max-w-[266px] min-w-[160px]",
|
|
14579
|
-
children: /* @__PURE__ */ (0,
|
|
14867
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(SelectValue, { placeholder: "Selecione uma op\xE7\xE3o" })
|
|
14580
14868
|
}
|
|
14581
14869
|
),
|
|
14582
|
-
/* @__PURE__ */ (0,
|
|
14583
|
-
/* @__PURE__ */ (0,
|
|
14584
|
-
/* @__PURE__ */ (0,
|
|
14585
|
-
/* @__PURE__ */ (0,
|
|
14870
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(SelectContent, { children: [
|
|
14871
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(SelectItem, { value: "all", children: "Todas" }),
|
|
14872
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(SelectItem, { value: "unanswered", children: "Em branco" }),
|
|
14873
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(SelectItem, { value: "answered", children: "Respondidas" })
|
|
14586
14874
|
] })
|
|
14587
14875
|
] }) })
|
|
14588
14876
|
] }),
|
|
14589
|
-
/* @__PURE__ */ (0,
|
|
14877
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "flex flex-col gap-2 flex-1 min-h-0 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14590
14878
|
QuizQuestionList,
|
|
14591
14879
|
{
|
|
14592
14880
|
filterType,
|
|
@@ -14596,7 +14884,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14596
14884
|
] })
|
|
14597
14885
|
}
|
|
14598
14886
|
),
|
|
14599
|
-
/* @__PURE__ */ (0,
|
|
14887
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14600
14888
|
Modal_default,
|
|
14601
14889
|
{
|
|
14602
14890
|
isOpen: isModalOpen("modalResolution"),
|
|
@@ -14606,7 +14894,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14606
14894
|
children: currentQuestion?.solutionExplanation
|
|
14607
14895
|
}
|
|
14608
14896
|
),
|
|
14609
|
-
/* @__PURE__ */ (0,
|
|
14897
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14610
14898
|
Modal_default,
|
|
14611
14899
|
{
|
|
14612
14900
|
isOpen: isModalOpen("modalQuestionnaireAllCorrect"),
|
|
@@ -14615,17 +14903,17 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14615
14903
|
closeOnEscape: false,
|
|
14616
14904
|
hideCloseButton: true,
|
|
14617
14905
|
size: "md",
|
|
14618
|
-
children: /* @__PURE__ */ (0,
|
|
14619
|
-
resultImageComponent ? /* @__PURE__ */ (0,
|
|
14620
|
-
/* @__PURE__ */ (0,
|
|
14621
|
-
/* @__PURE__ */ (0,
|
|
14622
|
-
/* @__PURE__ */ (0,
|
|
14906
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
|
|
14907
|
+
resultImageComponent ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-[282px] h-auto", children: resultImageComponent }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-gray-500 text-sm", children: "Imagem de resultado" }) }),
|
|
14908
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
|
|
14909
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: "\u{1F389} Parab\xE9ns!" }),
|
|
14910
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-text-500 font-sm", children: "Voc\xEA concluiu o m\xF3dulo Movimento Uniforme." })
|
|
14623
14911
|
] }),
|
|
14624
|
-
/* @__PURE__ */ (0,
|
|
14912
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "px-6 flex flex-row items-center gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button_default, { className: "w-full", onClick: onGoToNextModule, children: "Pr\xF3ximo m\xF3dulo" }) })
|
|
14625
14913
|
] })
|
|
14626
14914
|
}
|
|
14627
14915
|
),
|
|
14628
|
-
/* @__PURE__ */ (0,
|
|
14916
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14629
14917
|
Modal_default,
|
|
14630
14918
|
{
|
|
14631
14919
|
isOpen: isModalOpen("modalQuestionnaireAllIncorrect"),
|
|
@@ -14634,16 +14922,16 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14634
14922
|
closeOnEscape: false,
|
|
14635
14923
|
hideCloseButton: true,
|
|
14636
14924
|
size: "md",
|
|
14637
|
-
children: /* @__PURE__ */ (0,
|
|
14638
|
-
resultIncorrectImageComponent ? /* @__PURE__ */ (0,
|
|
14639
|
-
/* @__PURE__ */ (0,
|
|
14640
|
-
/* @__PURE__ */ (0,
|
|
14641
|
-
/* @__PURE__ */ (0,
|
|
14642
|
-
/* @__PURE__ */ (0,
|
|
14643
|
-
/* @__PURE__ */ (0,
|
|
14925
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col w-full h-full items-center justify-center gap-4", children: [
|
|
14926
|
+
resultIncorrectImageComponent ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-[282px] h-auto", children: resultIncorrectImageComponent }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-[282px] h-[200px] bg-gray-100 rounded-md flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-gray-500 text-sm", children: "Imagem de resultado" }) }),
|
|
14927
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-2 text-center", children: [
|
|
14928
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h2", { className: "text-text-950 font-bold text-lg", children: "\u{1F615} N\xE3o foi dessa vez..." }),
|
|
14929
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.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." }),
|
|
14930
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.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." }),
|
|
14931
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-text-500 font-sm", children: "Clique em Repetir Question\xE1rio e mostre do que voc\xEA \xE9 capaz! \u{1F4AA}" })
|
|
14644
14932
|
] }),
|
|
14645
|
-
/* @__PURE__ */ (0,
|
|
14646
|
-
/* @__PURE__ */ (0,
|
|
14933
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-row justify-center items-center gap-2 w-full", children: [
|
|
14934
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14647
14935
|
Button_default,
|
|
14648
14936
|
{
|
|
14649
14937
|
type: "button",
|
|
@@ -14657,7 +14945,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14657
14945
|
children: "Tentar depois"
|
|
14658
14946
|
}
|
|
14659
14947
|
),
|
|
14660
|
-
/* @__PURE__ */ (0,
|
|
14948
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14661
14949
|
Button_default,
|
|
14662
14950
|
{
|
|
14663
14951
|
variant: "outline",
|
|
@@ -14667,7 +14955,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14667
14955
|
children: "Detalhar resultado"
|
|
14668
14956
|
}
|
|
14669
14957
|
),
|
|
14670
|
-
/* @__PURE__ */ (0,
|
|
14958
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14671
14959
|
Button_default,
|
|
14672
14960
|
{
|
|
14673
14961
|
className: "w-auto",
|
|
@@ -14680,7 +14968,7 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14680
14968
|
] })
|
|
14681
14969
|
}
|
|
14682
14970
|
),
|
|
14683
|
-
/* @__PURE__ */ (0,
|
|
14971
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14684
14972
|
AlertDialog,
|
|
14685
14973
|
{
|
|
14686
14974
|
isOpen: isModalOpen("alertDialogTryLater"),
|
|
@@ -14704,37 +14992,37 @@ var QuizFooter = (0, import_react44.forwardRef)(
|
|
|
14704
14992
|
);
|
|
14705
14993
|
|
|
14706
14994
|
// src/components/Quiz/QuizResult.tsx
|
|
14707
|
-
var
|
|
14708
|
-
var
|
|
14709
|
-
var
|
|
14995
|
+
var import_react46 = require("react");
|
|
14996
|
+
var import_phosphor_react34 = require("phosphor-react");
|
|
14997
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
14710
14998
|
var QuizBadge = ({
|
|
14711
14999
|
subtype
|
|
14712
15000
|
}) => {
|
|
14713
15001
|
switch (subtype) {
|
|
14714
15002
|
case "PROVA" /* PROVA */:
|
|
14715
|
-
return /* @__PURE__ */ (0,
|
|
15003
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Badge_default, { variant: "examsOutlined", action: "exam2", "data-testid": "quiz-badge", children: "Prova" });
|
|
14716
15004
|
case "ENEM_PROVA_1" /* ENEM_PROVA_1 */:
|
|
14717
15005
|
case "ENEM_PROVA_2" /* ENEM_PROVA_2 */:
|
|
14718
|
-
return /* @__PURE__ */ (0,
|
|
15006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Badge_default, { variant: "examsOutlined", action: "exam1", "data-testid": "quiz-badge", children: "Enem" });
|
|
14719
15007
|
case "VESTIBULAR" /* VESTIBULAR */:
|
|
14720
|
-
return /* @__PURE__ */ (0,
|
|
15008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Badge_default, { variant: "examsOutlined", action: "exam4", "data-testid": "quiz-badge", children: "Vestibular" });
|
|
14721
15009
|
case "SIMULADO" /* SIMULADO */:
|
|
14722
15010
|
case "SIMULADAO" /* SIMULADAO */:
|
|
14723
15011
|
case void 0:
|
|
14724
|
-
return /* @__PURE__ */ (0,
|
|
15012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Badge_default, { variant: "examsOutlined", action: "exam3", "data-testid": "quiz-badge", children: "Simulad\xE3o" });
|
|
14725
15013
|
default:
|
|
14726
|
-
return /* @__PURE__ */ (0,
|
|
15014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Badge_default, { variant: "solid", action: "info", "data-testid": "quiz-badge", children: subtype });
|
|
14727
15015
|
}
|
|
14728
15016
|
};
|
|
14729
|
-
var QuizHeaderResult = (0,
|
|
15017
|
+
var QuizHeaderResult = (0, import_react46.forwardRef)(
|
|
14730
15018
|
({ className, ...props }, ref) => {
|
|
14731
15019
|
const {
|
|
14732
15020
|
getQuestionResultByQuestionId,
|
|
14733
15021
|
getCurrentQuestion,
|
|
14734
15022
|
questionsResult
|
|
14735
15023
|
} = useQuizStore();
|
|
14736
|
-
const [status, setStatus] = (0,
|
|
14737
|
-
(0,
|
|
15024
|
+
const [status, setStatus] = (0, import_react46.useState)(void 0);
|
|
15025
|
+
(0, import_react46.useEffect)(() => {
|
|
14738
15026
|
const cq = getCurrentQuestion();
|
|
14739
15027
|
if (!cq) {
|
|
14740
15028
|
setStatus(void 0);
|
|
@@ -14780,7 +15068,7 @@ var QuizHeaderResult = (0, import_react45.forwardRef)(
|
|
|
14780
15068
|
return "N\xE3o foi dessa vez...voc\xEA deixou a resposta em branco";
|
|
14781
15069
|
}
|
|
14782
15070
|
};
|
|
14783
|
-
return /* @__PURE__ */ (0,
|
|
15071
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
14784
15072
|
"div",
|
|
14785
15073
|
{
|
|
14786
15074
|
ref,
|
|
@@ -14791,16 +15079,16 @@ var QuizHeaderResult = (0, import_react45.forwardRef)(
|
|
|
14791
15079
|
),
|
|
14792
15080
|
...props,
|
|
14793
15081
|
children: [
|
|
14794
|
-
/* @__PURE__ */ (0,
|
|
14795
|
-
/* @__PURE__ */ (0,
|
|
15082
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "text-text-950 font-bold text-lg", children: "Resultado" }),
|
|
15083
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "text-text-700 text-md", children: getLabelByAnswersStatus() })
|
|
14796
15084
|
]
|
|
14797
15085
|
}
|
|
14798
15086
|
);
|
|
14799
15087
|
}
|
|
14800
15088
|
);
|
|
14801
|
-
var QuizResultHeaderTitle = (0,
|
|
15089
|
+
var QuizResultHeaderTitle = (0, import_react46.forwardRef)(({ className, showBadge = true, onRepeat, canRetry, ...props }, ref) => {
|
|
14802
15090
|
const { quiz } = useQuizStore();
|
|
14803
|
-
return /* @__PURE__ */ (0,
|
|
15091
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
14804
15092
|
"div",
|
|
14805
15093
|
{
|
|
14806
15094
|
ref,
|
|
@@ -14810,9 +15098,9 @@ var QuizResultHeaderTitle = (0, import_react45.forwardRef)(({ className, showBad
|
|
|
14810
15098
|
),
|
|
14811
15099
|
...props,
|
|
14812
15100
|
children: [
|
|
14813
|
-
/* @__PURE__ */ (0,
|
|
14814
|
-
/* @__PURE__ */ (0,
|
|
14815
|
-
canRetry && onRepeat && /* @__PURE__ */ (0,
|
|
15101
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: "Resultado" }),
|
|
15102
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-row gap-3 items-center", children: [
|
|
15103
|
+
canRetry && onRepeat && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14816
15104
|
Button_default,
|
|
14817
15105
|
{
|
|
14818
15106
|
variant: "solid",
|
|
@@ -14822,16 +15110,16 @@ var QuizResultHeaderTitle = (0, import_react45.forwardRef)(({ className, showBad
|
|
|
14822
15110
|
children: "Repetir question\xE1rio"
|
|
14823
15111
|
}
|
|
14824
15112
|
),
|
|
14825
|
-
showBadge && /* @__PURE__ */ (0,
|
|
15113
|
+
showBadge && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(QuizBadge, { subtype: quiz?.subtype || void 0 })
|
|
14826
15114
|
] })
|
|
14827
15115
|
]
|
|
14828
15116
|
}
|
|
14829
15117
|
);
|
|
14830
15118
|
});
|
|
14831
|
-
var QuizResultTitle = (0,
|
|
15119
|
+
var QuizResultTitle = (0, import_react46.forwardRef)(({ className, ...props }, ref) => {
|
|
14832
15120
|
const { getQuizTitle } = useQuizStore();
|
|
14833
15121
|
const quizTitle = getQuizTitle();
|
|
14834
|
-
return /* @__PURE__ */ (0,
|
|
15122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14835
15123
|
"p",
|
|
14836
15124
|
{
|
|
14837
15125
|
className: cn("pt-6 pb-4 text-text-950 font-bold text-lg", className),
|
|
@@ -14872,7 +15160,7 @@ var calculateAnswerStatistics = (answers) => {
|
|
|
14872
15160
|
}
|
|
14873
15161
|
return stats;
|
|
14874
15162
|
};
|
|
14875
|
-
var QuizResultPerformance = (0,
|
|
15163
|
+
var QuizResultPerformance = (0, import_react46.forwardRef)(({ showDetails = true, ...props }, ref) => {
|
|
14876
15164
|
const {
|
|
14877
15165
|
getTotalQuestions,
|
|
14878
15166
|
formatTime: formatTime2,
|
|
@@ -14892,7 +15180,7 @@ var QuizResultPerformance = (0, import_react45.forwardRef)(({ showDetails = true
|
|
|
14892
15180
|
};
|
|
14893
15181
|
const percentage = totalQuestions > 0 ? Math.round(stats.correctAnswers / totalQuestions * 100) : 0;
|
|
14894
15182
|
const classesJustifyBetween = showDetails ? "justify-between" : "justify-center";
|
|
14895
|
-
return /* @__PURE__ */ (0,
|
|
15183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
14896
15184
|
"div",
|
|
14897
15185
|
{
|
|
14898
15186
|
className: cn(
|
|
@@ -14902,8 +15190,8 @@ var QuizResultPerformance = (0, import_react45.forwardRef)(({ showDetails = true
|
|
|
14902
15190
|
ref,
|
|
14903
15191
|
...props,
|
|
14904
15192
|
children: [
|
|
14905
|
-
/* @__PURE__ */ (0,
|
|
14906
|
-
/* @__PURE__ */ (0,
|
|
15193
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "relative", children: [
|
|
15194
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14907
15195
|
ProgressCircle_default,
|
|
14908
15196
|
{
|
|
14909
15197
|
size: "medium",
|
|
@@ -14913,24 +15201,24 @@ var QuizResultPerformance = (0, import_react45.forwardRef)(({ showDetails = true
|
|
|
14913
15201
|
label: ""
|
|
14914
15202
|
}
|
|
14915
15203
|
),
|
|
14916
|
-
/* @__PURE__ */ (0,
|
|
14917
|
-
showDetails && /* @__PURE__ */ (0,
|
|
14918
|
-
/* @__PURE__ */ (0,
|
|
14919
|
-
/* @__PURE__ */ (0,
|
|
15204
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "absolute inset-0 flex flex-col items-center justify-center", children: [
|
|
15205
|
+
showDetails && /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex items-center gap-1 mb-1", children: [
|
|
15206
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_phosphor_react34.Clock, { size: 12, weight: "regular", className: "text-text-800" }),
|
|
15207
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-2xs font-medium text-text-800", children: formatTime2(
|
|
14920
15208
|
(getQuestionResultStatistics()?.timeSpent ?? 0) * 60
|
|
14921
15209
|
) })
|
|
14922
15210
|
] }),
|
|
14923
|
-
/* @__PURE__ */ (0,
|
|
15211
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "text-2xl font-medium text-text-800 leading-7", children: [
|
|
14924
15212
|
getQuestionResultStatistics()?.correctAnswers ?? "--",
|
|
14925
15213
|
" de",
|
|
14926
15214
|
" ",
|
|
14927
15215
|
totalQuestions
|
|
14928
15216
|
] }),
|
|
14929
|
-
/* @__PURE__ */ (0,
|
|
15217
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "text-2xs font-medium text-text-600 mt-1", children: "Corretas" })
|
|
14930
15218
|
] })
|
|
14931
15219
|
] }),
|
|
14932
|
-
showDetails && /* @__PURE__ */ (0,
|
|
14933
|
-
/* @__PURE__ */ (0,
|
|
15220
|
+
showDetails && /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col gap-4 w-full", children: [
|
|
15221
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14934
15222
|
ProgressBar_default,
|
|
14935
15223
|
{
|
|
14936
15224
|
className: "w-full",
|
|
@@ -14944,7 +15232,7 @@ var QuizResultPerformance = (0, import_react45.forwardRef)(({ showDetails = true
|
|
|
14944
15232
|
percentageClassName: "text-xs font-medium leading-[14px] text-right"
|
|
14945
15233
|
}
|
|
14946
15234
|
),
|
|
14947
|
-
/* @__PURE__ */ (0,
|
|
15235
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14948
15236
|
ProgressBar_default,
|
|
14949
15237
|
{
|
|
14950
15238
|
className: "w-full",
|
|
@@ -14958,7 +15246,7 @@ var QuizResultPerformance = (0, import_react45.forwardRef)(({ showDetails = true
|
|
|
14958
15246
|
percentageClassName: "text-xs font-medium leading-[14px] text-right"
|
|
14959
15247
|
}
|
|
14960
15248
|
),
|
|
14961
|
-
/* @__PURE__ */ (0,
|
|
15249
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14962
15250
|
ProgressBar_default,
|
|
14963
15251
|
{
|
|
14964
15252
|
className: "w-full",
|
|
@@ -14977,7 +15265,7 @@ var QuizResultPerformance = (0, import_react45.forwardRef)(({ showDetails = true
|
|
|
14977
15265
|
}
|
|
14978
15266
|
);
|
|
14979
15267
|
});
|
|
14980
|
-
var QuizListResult = (0,
|
|
15268
|
+
var QuizListResult = (0, import_react46.forwardRef)(({ className, onSubjectClick, ...props }, ref) => {
|
|
14981
15269
|
const { getQuestionsGroupedBySubject } = useQuizStore();
|
|
14982
15270
|
const { isDark } = useTheme();
|
|
14983
15271
|
const groupedQuestions = getQuestionsGroupedBySubject();
|
|
@@ -15005,9 +15293,9 @@ var QuizListResult = (0, import_react45.forwardRef)(({ className, onSubjectClick
|
|
|
15005
15293
|
};
|
|
15006
15294
|
}
|
|
15007
15295
|
);
|
|
15008
|
-
return /* @__PURE__ */ (0,
|
|
15009
|
-
/* @__PURE__ */ (0,
|
|
15010
|
-
/* @__PURE__ */ (0,
|
|
15296
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("section", { ref, className, ...props, children: [
|
|
15297
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Mat\xE9rias" }),
|
|
15298
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ul", { className: "flex flex-col gap-2", children: subjectsStats.map((subject) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15011
15299
|
CardResults,
|
|
15012
15300
|
{
|
|
15013
15301
|
onClick: () => onSubjectClick?.(subject.subject.id),
|
|
@@ -15031,16 +15319,16 @@ var QuizListResultByMateria = ({
|
|
|
15031
15319
|
const groupedQuestions = getQuestionsGroupedBySubject();
|
|
15032
15320
|
const answeredQuestions = groupedQuestions[subject] || [];
|
|
15033
15321
|
const formattedQuestions = subject == "all" ? Object.values(groupedQuestions).flat() : answeredQuestions;
|
|
15034
|
-
return /* @__PURE__ */ (0,
|
|
15035
|
-
/* @__PURE__ */ (0,
|
|
15036
|
-
/* @__PURE__ */ (0,
|
|
15037
|
-
/* @__PURE__ */ (0,
|
|
15038
|
-
/* @__PURE__ */ (0,
|
|
15322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col", children: [
|
|
15323
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "flex flex-row pt-4 justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "text-text-950 font-bold text-2xl", children: subjectName || formattedQuestions?.[0]?.knowledgeMatrix?.[0]?.subject?.name || "Sem mat\xE9ria" }) }),
|
|
15324
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("section", { className: "flex flex-col ", children: [
|
|
15325
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "pt-6 pb-4 text-text-950 font-bold text-lg", children: "Resultado das quest\xF5es" }),
|
|
15326
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ul", { className: "flex flex-col gap-2 pt-4", children: formattedQuestions.map((question) => {
|
|
15039
15327
|
const questionIndex = getQuestionIndex(
|
|
15040
15328
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15041
15329
|
question.questionId ?? question.id
|
|
15042
15330
|
);
|
|
15043
|
-
return /* @__PURE__ */ (0,
|
|
15331
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15044
15332
|
CardStatus,
|
|
15045
15333
|
{
|
|
15046
15334
|
className: "max-w-full",
|
|
@@ -15066,7 +15354,7 @@ var QuizListResultByMateria = ({
|
|
|
15066
15354
|
|
|
15067
15355
|
// src/components/BreadcrumbMenu/BreadcrumbMenu.tsx
|
|
15068
15356
|
var import_react_router_dom3 = require("react-router-dom");
|
|
15069
|
-
var
|
|
15357
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
15070
15358
|
var BreadcrumbMenu = ({
|
|
15071
15359
|
breadcrumbs,
|
|
15072
15360
|
onBreadcrumbClick,
|
|
@@ -15079,17 +15367,17 @@ var BreadcrumbMenu = ({
|
|
|
15079
15367
|
}
|
|
15080
15368
|
navigate(breadcrumb.url);
|
|
15081
15369
|
};
|
|
15082
|
-
return /* @__PURE__ */ (0,
|
|
15370
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
15083
15371
|
Menu,
|
|
15084
15372
|
{
|
|
15085
15373
|
value: `breadcrumb-${breadcrumbs.length - 1}`,
|
|
15086
15374
|
defaultValue: "breadcrumb-0",
|
|
15087
15375
|
variant: "breadcrumb",
|
|
15088
15376
|
className,
|
|
15089
|
-
children: /* @__PURE__ */ (0,
|
|
15377
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(MenuContent, { className: "w-full flex flex-row flex-wrap gap-2 !px-0", children: breadcrumbs.map((breadcrumb, index) => {
|
|
15090
15378
|
const isLast = index === breadcrumbs.length - 1;
|
|
15091
15379
|
const hasSeparator = !isLast;
|
|
15092
|
-
return /* @__PURE__ */ (0,
|
|
15380
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
15093
15381
|
MenuItem,
|
|
15094
15382
|
{
|
|
15095
15383
|
variant: "breadcrumb",
|
|
@@ -15107,7 +15395,7 @@ var BreadcrumbMenu = ({
|
|
|
15107
15395
|
};
|
|
15108
15396
|
|
|
15109
15397
|
// src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts
|
|
15110
|
-
var
|
|
15398
|
+
var import_react47 = require("react");
|
|
15111
15399
|
|
|
15112
15400
|
// src/components/BreadcrumbMenu/breadcrumbStore.ts
|
|
15113
15401
|
var import_zustand12 = require("zustand");
|
|
@@ -15236,7 +15524,7 @@ var useBreadcrumbBuilder = (config) => {
|
|
|
15236
15524
|
(level) => isBreadcrumbWithData(level) ? level.data : null
|
|
15237
15525
|
);
|
|
15238
15526
|
const levelUrlIds = levels.map((level) => level.urlId);
|
|
15239
|
-
(0,
|
|
15527
|
+
(0, import_react47.useEffect)(() => {
|
|
15240
15528
|
const newBreadcrumbs = [root];
|
|
15241
15529
|
const previousIds = [];
|
|
15242
15530
|
for (const level of levels) {
|
|
@@ -15268,11 +15556,11 @@ var useBreadcrumbBuilder = (config) => {
|
|
|
15268
15556
|
};
|
|
15269
15557
|
|
|
15270
15558
|
// src/components/BreadcrumbMenu/useUrlParams.ts
|
|
15271
|
-
var
|
|
15559
|
+
var import_react48 = require("react");
|
|
15272
15560
|
var import_react_router_dom4 = require("react-router-dom");
|
|
15273
15561
|
var useUrlParams = (config) => {
|
|
15274
15562
|
const location = (0, import_react_router_dom4.useLocation)();
|
|
15275
|
-
return (0,
|
|
15563
|
+
return (0, import_react48.useMemo)(() => {
|
|
15276
15564
|
const segments = location.pathname.split("/").filter(Boolean);
|
|
15277
15565
|
const params = {};
|
|
15278
15566
|
for (const [key, index] of Object.entries(config)) {
|
|
@@ -15283,15 +15571,15 @@ var useUrlParams = (config) => {
|
|
|
15283
15571
|
};
|
|
15284
15572
|
|
|
15285
15573
|
// src/hooks/useAppInitialization.ts
|
|
15286
|
-
var
|
|
15574
|
+
var import_react50 = require("react");
|
|
15287
15575
|
|
|
15288
15576
|
// src/hooks/useInstitution.ts
|
|
15289
|
-
var
|
|
15577
|
+
var import_react49 = require("react");
|
|
15290
15578
|
function useInstitutionId() {
|
|
15291
|
-
const [institutionId, setInstitutionId] = (0,
|
|
15579
|
+
const [institutionId, setInstitutionId] = (0, import_react49.useState)(() => {
|
|
15292
15580
|
return document.querySelector('meta[name="institution-id"]')?.getAttribute("content") ?? null;
|
|
15293
15581
|
});
|
|
15294
|
-
(0,
|
|
15582
|
+
(0, import_react49.useEffect)(() => {
|
|
15295
15583
|
const metaTag = document.querySelector('meta[name="institution-id"]');
|
|
15296
15584
|
if (!metaTag) return;
|
|
15297
15585
|
const observer = new MutationObserver(() => {
|
|
@@ -15458,7 +15746,7 @@ var useAuthStore = (0, import_zustand14.create)()(
|
|
|
15458
15746
|
function useAppInitialization() {
|
|
15459
15747
|
const getInstitutionId = useInstitutionId();
|
|
15460
15748
|
const { initialize, initialized, institutionId } = useAppStore();
|
|
15461
|
-
const authFunctions = (0,
|
|
15749
|
+
const authFunctions = (0, import_react50.useMemo)(
|
|
15462
15750
|
() => ({
|
|
15463
15751
|
checkAuth: async () => {
|
|
15464
15752
|
const { sessionInfo, tokens } = useAuthStore.getState();
|
|
@@ -15495,7 +15783,7 @@ function useAppInitialization() {
|
|
|
15495
15783
|
}
|
|
15496
15784
|
|
|
15497
15785
|
// src/hooks/useAppContent.ts
|
|
15498
|
-
var
|
|
15786
|
+
var import_react51 = require("react");
|
|
15499
15787
|
var import_react_router_dom5 = require("react-router-dom");
|
|
15500
15788
|
function useAppContent(config) {
|
|
15501
15789
|
const navigate = (0, import_react_router_dom5.useNavigate)();
|
|
@@ -15521,20 +15809,20 @@ function useAppContent(config) {
|
|
|
15521
15809
|
navigate("/painel");
|
|
15522
15810
|
}
|
|
15523
15811
|
};
|
|
15524
|
-
const handleSetSelectedProfile = (0,
|
|
15812
|
+
const handleSetSelectedProfile = (0, import_react51.useCallback)(
|
|
15525
15813
|
(profile) => {
|
|
15526
15814
|
setSelectedProfile(profile);
|
|
15527
15815
|
},
|
|
15528
15816
|
[setSelectedProfile]
|
|
15529
15817
|
);
|
|
15530
|
-
const handleClearParamsFromURL = (0,
|
|
15818
|
+
const handleClearParamsFromURL = (0, import_react51.useCallback)(() => {
|
|
15531
15819
|
if (onClearParamsFromURL) {
|
|
15532
15820
|
onClearParamsFromURL();
|
|
15533
15821
|
} else {
|
|
15534
15822
|
globalThis.location.replace("/painel");
|
|
15535
15823
|
}
|
|
15536
15824
|
}, [onClearParamsFromURL]);
|
|
15537
|
-
const handleError = (0,
|
|
15825
|
+
const handleError = (0, import_react51.useCallback)(
|
|
15538
15826
|
(error) => {
|
|
15539
15827
|
if (onError) {
|
|
15540
15828
|
onError(error);
|
|
@@ -15545,7 +15833,7 @@ function useAppContent(config) {
|
|
|
15545
15833
|
},
|
|
15546
15834
|
[navigate, onError]
|
|
15547
15835
|
);
|
|
15548
|
-
const urlAuthConfig = (0,
|
|
15836
|
+
const urlAuthConfig = (0, import_react51.useMemo)(
|
|
15549
15837
|
() => ({
|
|
15550
15838
|
setTokens,
|
|
15551
15839
|
setSessionInfo,
|
|
@@ -15571,10 +15859,10 @@ function useAppContent(config) {
|
|
|
15571
15859
|
);
|
|
15572
15860
|
useUrlAuthentication(urlAuthConfig);
|
|
15573
15861
|
const { sessionInfo } = useAuth();
|
|
15574
|
-
const institutionIdToUse = (0,
|
|
15862
|
+
const institutionIdToUse = (0, import_react51.useMemo)(() => {
|
|
15575
15863
|
return sessionInfo?.institutionId || getInstitutionId;
|
|
15576
15864
|
}, [sessionInfo?.institutionId, getInstitutionId]);
|
|
15577
|
-
(0,
|
|
15865
|
+
(0, import_react51.useEffect)(() => {
|
|
15578
15866
|
if (institutionIdToUse && !initialized) {
|
|
15579
15867
|
initialize(institutionIdToUse);
|
|
15580
15868
|
}
|
|
@@ -15705,6 +15993,7 @@ function useAppContent(config) {
|
|
|
15705
15993
|
TableHead,
|
|
15706
15994
|
TableHeader,
|
|
15707
15995
|
TablePagination,
|
|
15996
|
+
TableProvider,
|
|
15708
15997
|
TableRow,
|
|
15709
15998
|
Text,
|
|
15710
15999
|
TextArea,
|