UNPKG

@defikitdotnet/education-module-ai

Version:
65 lines (64 loc) 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UserRoleSelect = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = require("react"); var select_1 = require("../components/ui/select"); var badge_1 = require("../components/ui/badge"); // Predefined roles with permissions based on the education module's existing roles var PREDEFINED_ROLES = [ { id: "admin", name: "Administrator", permissions: [ "manage_users", "manage_courses", "manage_content", "view_reports", "manage_settings", ], }, { id: "instructor", name: "Instructor", permissions: [ "manage_courses", "manage_content", "view_reports", "grade_assignments", ], }, { id: "student", name: "Student", permissions: [ "view_courses", "submit_assignments", "participate_discussions", ], }, ]; var UserRoleSelect = function (_a) { var value = _a.value, onChange = _a.onChange, _b = _a.disabled, disabled = _b === void 0 ? false : _b; var _c = (0, react_1.useState)(PREDEFINED_ROLES.find(function (role) { return role.id === value; }) || null), selectedRole = _c[0], setSelectedRole = _c[1]; // Update selected role when value prop changes (0, react_1.useEffect)(function () { var role = PREDEFINED_ROLES.find(function (role) { return role.id === value; }); if (role) { setSelectedRole(role); } }, [value]); // Handle role change var handleRoleChange = function (roleId) { onChange(roleId); var role = PREDEFINED_ROLES.find(function (r) { return r.id === roleId; }); if (role) { setSelectedRole(role); } }; return ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsxs)(select_1.Select, { value: value, onValueChange: function (value) { return handleRoleChange(value); }, children: [(0, jsx_runtime_1.jsx)(select_1.SelectTrigger, { className: "w-full", children: (0, jsx_runtime_1.jsx)(select_1.SelectValue, { placeholder: "Select a role" }) }), (0, jsx_runtime_1.jsx)(select_1.SelectContent, { children: PREDEFINED_ROLES.map(function (role) { return ((0, jsx_runtime_1.jsx)(select_1.SelectItem, { value: role.id, children: role.name }, role.id)); }) })] }), selectedRole && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm font-medium", children: "Permissions:" }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-wrap gap-2", children: selectedRole.permissions.map(function (permission) { return ((0, jsx_runtime_1.jsx)(badge_1.Badge, { variant: "secondary", children: permission .split("_") .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); }) .join(" ") }, permission)); }) })] }))] })); }; exports.UserRoleSelect = UserRoleSelect;