feat: redesign Exams List page to show submitted custom exams
- Added Custom Exams tab showing all exams from Generation page - Displays title, module badges, duration, and status - Added Create Exam button - Kept Exam Sessions tab for institutional sessions - Search filters across exams Made-with: Cursor
This commit is contained in:
218
node_modules/.vite/deps/@radix-ui_react-progress.js
generated
vendored
Normal file
218
node_modules/.vite/deps/@radix-ui_react-progress.js
generated
vendored
Normal file
@@ -0,0 +1,218 @@
|
||||
"use client";
|
||||
import {
|
||||
createSlot
|
||||
} from "./chunk-GTF7DNNX.js";
|
||||
import {
|
||||
require_react_dom
|
||||
} from "./chunk-T2SWDQEL.js";
|
||||
import "./chunk-JDYSANEB.js";
|
||||
import {
|
||||
require_jsx_runtime
|
||||
} from "./chunk-KBTYAULA.js";
|
||||
import {
|
||||
require_react
|
||||
} from "./chunk-QCHXOAYK.js";
|
||||
import {
|
||||
__toESM
|
||||
} from "./chunk-WOOG5QLI.js";
|
||||
|
||||
// node_modules/@radix-ui/react-progress/dist/index.mjs
|
||||
var React3 = __toESM(require_react(), 1);
|
||||
|
||||
// node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context/dist/index.mjs
|
||||
var React = __toESM(require_react(), 1);
|
||||
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
||||
function createContextScope(scopeName, createContextScopeDeps = []) {
|
||||
let defaultContexts = [];
|
||||
function createContext3(rootComponentName, defaultContext) {
|
||||
const BaseContext = React.createContext(defaultContext);
|
||||
BaseContext.displayName = rootComponentName + "Context";
|
||||
const index = defaultContexts.length;
|
||||
defaultContexts = [...defaultContexts, defaultContext];
|
||||
const Provider = (props) => {
|
||||
var _a;
|
||||
const { scope, children, ...context } = props;
|
||||
const Context = ((_a = scope == null ? void 0 : scope[scopeName]) == null ? void 0 : _a[index]) || BaseContext;
|
||||
const value = React.useMemo(() => context, Object.values(context));
|
||||
return (0, import_jsx_runtime.jsx)(Context.Provider, { value, children });
|
||||
};
|
||||
Provider.displayName = rootComponentName + "Provider";
|
||||
function useContext2(consumerName, scope) {
|
||||
var _a;
|
||||
const Context = ((_a = scope == null ? void 0 : scope[scopeName]) == null ? void 0 : _a[index]) || BaseContext;
|
||||
const context = React.useContext(Context);
|
||||
if (context) return context;
|
||||
if (defaultContext !== void 0) return defaultContext;
|
||||
throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
|
||||
}
|
||||
return [Provider, useContext2];
|
||||
}
|
||||
const createScope = () => {
|
||||
const scopeContexts = defaultContexts.map((defaultContext) => {
|
||||
return React.createContext(defaultContext);
|
||||
});
|
||||
return function useScope(scope) {
|
||||
const contexts = (scope == null ? void 0 : scope[scopeName]) || scopeContexts;
|
||||
return React.useMemo(
|
||||
() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),
|
||||
[scope, contexts]
|
||||
);
|
||||
};
|
||||
};
|
||||
createScope.scopeName = scopeName;
|
||||
return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];
|
||||
}
|
||||
function composeContextScopes(...scopes) {
|
||||
const baseScope = scopes[0];
|
||||
if (scopes.length === 1) return baseScope;
|
||||
const createScope = () => {
|
||||
const scopeHooks = scopes.map((createScope2) => ({
|
||||
useScope: createScope2(),
|
||||
scopeName: createScope2.scopeName
|
||||
}));
|
||||
return function useComposedScopes(overrideScopes) {
|
||||
const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {
|
||||
const scopeProps = useScope(overrideScopes);
|
||||
const currentScope = scopeProps[`__scope${scopeName}`];
|
||||
return { ...nextScopes2, ...currentScope };
|
||||
}, {});
|
||||
return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
|
||||
};
|
||||
};
|
||||
createScope.scopeName = baseScope.scopeName;
|
||||
return createScope;
|
||||
}
|
||||
|
||||
// node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
||||
var React2 = __toESM(require_react(), 1);
|
||||
var ReactDOM = __toESM(require_react_dom(), 1);
|
||||
var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
|
||||
var NODES = [
|
||||
"a",
|
||||
"button",
|
||||
"div",
|
||||
"form",
|
||||
"h2",
|
||||
"h3",
|
||||
"img",
|
||||
"input",
|
||||
"label",
|
||||
"li",
|
||||
"nav",
|
||||
"ol",
|
||||
"p",
|
||||
"select",
|
||||
"span",
|
||||
"svg",
|
||||
"ul"
|
||||
];
|
||||
var Primitive = NODES.reduce((primitive, node) => {
|
||||
const Slot = createSlot(`Primitive.${node}`);
|
||||
const Node = React2.forwardRef((props, forwardedRef) => {
|
||||
const { asChild, ...primitiveProps } = props;
|
||||
const Comp = asChild ? Slot : node;
|
||||
if (typeof window !== "undefined") {
|
||||
window[Symbol.for("radix-ui")] = true;
|
||||
}
|
||||
return (0, import_jsx_runtime2.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
|
||||
});
|
||||
Node.displayName = `Primitive.${node}`;
|
||||
return { ...primitive, [node]: Node };
|
||||
}, {});
|
||||
|
||||
// node_modules/@radix-ui/react-progress/dist/index.mjs
|
||||
var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
|
||||
var PROGRESS_NAME = "Progress";
|
||||
var DEFAULT_MAX = 100;
|
||||
var [createProgressContext, createProgressScope] = createContextScope(PROGRESS_NAME);
|
||||
var [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME);
|
||||
var Progress = React3.forwardRef(
|
||||
(props, forwardedRef) => {
|
||||
const {
|
||||
__scopeProgress,
|
||||
value: valueProp = null,
|
||||
max: maxProp,
|
||||
getValueLabel = defaultGetValueLabel,
|
||||
...progressProps
|
||||
} = props;
|
||||
if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) {
|
||||
console.error(getInvalidMaxError(`${maxProp}`, "Progress"));
|
||||
}
|
||||
const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;
|
||||
if (valueProp !== null && !isValidValueNumber(valueProp, max)) {
|
||||
console.error(getInvalidValueError(`${valueProp}`, "Progress"));
|
||||
}
|
||||
const value = isValidValueNumber(valueProp, max) ? valueProp : null;
|
||||
const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0;
|
||||
return (0, import_jsx_runtime3.jsx)(ProgressProvider, { scope: __scopeProgress, value, max, children: (0, import_jsx_runtime3.jsx)(
|
||||
Primitive.div,
|
||||
{
|
||||
"aria-valuemax": max,
|
||||
"aria-valuemin": 0,
|
||||
"aria-valuenow": isNumber(value) ? value : void 0,
|
||||
"aria-valuetext": valueLabel,
|
||||
role: "progressbar",
|
||||
"data-state": getProgressState(value, max),
|
||||
"data-value": value ?? void 0,
|
||||
"data-max": max,
|
||||
...progressProps,
|
||||
ref: forwardedRef
|
||||
}
|
||||
) });
|
||||
}
|
||||
);
|
||||
Progress.displayName = PROGRESS_NAME;
|
||||
var INDICATOR_NAME = "ProgressIndicator";
|
||||
var ProgressIndicator = React3.forwardRef(
|
||||
(props, forwardedRef) => {
|
||||
const { __scopeProgress, ...indicatorProps } = props;
|
||||
const context = useProgressContext(INDICATOR_NAME, __scopeProgress);
|
||||
return (0, import_jsx_runtime3.jsx)(
|
||||
Primitive.div,
|
||||
{
|
||||
"data-state": getProgressState(context.value, context.max),
|
||||
"data-value": context.value ?? void 0,
|
||||
"data-max": context.max,
|
||||
...indicatorProps,
|
||||
ref: forwardedRef
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
ProgressIndicator.displayName = INDICATOR_NAME;
|
||||
function defaultGetValueLabel(value, max) {
|
||||
return `${Math.round(value / max * 100)}%`;
|
||||
}
|
||||
function getProgressState(value, maxValue) {
|
||||
return value == null ? "indeterminate" : value === maxValue ? "complete" : "loading";
|
||||
}
|
||||
function isNumber(value) {
|
||||
return typeof value === "number";
|
||||
}
|
||||
function isValidMaxNumber(max) {
|
||||
return isNumber(max) && !isNaN(max) && max > 0;
|
||||
}
|
||||
function isValidValueNumber(value, max) {
|
||||
return isNumber(value) && !isNaN(value) && value <= max && value >= 0;
|
||||
}
|
||||
function getInvalidMaxError(propValue, componentName) {
|
||||
return `Invalid prop \`max\` of value \`${propValue}\` supplied to \`${componentName}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${DEFAULT_MAX}\`.`;
|
||||
}
|
||||
function getInvalidValueError(propValue, componentName) {
|
||||
return `Invalid prop \`value\` of value \`${propValue}\` supplied to \`${componentName}\`. The \`value\` prop must be:
|
||||
- a positive number
|
||||
- less than the value passed to \`max\` (or ${DEFAULT_MAX} if no \`max\` prop is set)
|
||||
- \`null\` or \`undefined\` if the progress is indeterminate.
|
||||
|
||||
Defaulting to \`null\`.`;
|
||||
}
|
||||
var Root = Progress;
|
||||
var Indicator = ProgressIndicator;
|
||||
export {
|
||||
Indicator,
|
||||
Progress,
|
||||
ProgressIndicator,
|
||||
Root,
|
||||
createProgressScope
|
||||
};
|
||||
//# sourceMappingURL=@radix-ui_react-progress.js.map
|
||||
Reference in New Issue
Block a user