537 lines
34 KiB
JavaScript
537 lines
34 KiB
JavaScript
(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push([typeof document === "object" ? document.currentScript : undefined,
|
|
"[project]/app/roles/page.tsx [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"default",
|
|
()=>RolesPage
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$shield$2d$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ShieldCheck$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/shield-check.mjs [app-client] (ecmascript) <export default as ShieldCheck>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Plus$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/plus.mjs [app-client] (ecmascript) <export default as Plus>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.mjs [app-client] (ecmascript) <export default as X>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/check.mjs [app-client] (ecmascript) <export default as Check>");
|
|
;
|
|
var _s = __turbopack_context__.k.signature();
|
|
// /opt/erp-system/app/roles/page.tsx
|
|
'use client';
|
|
;
|
|
;
|
|
const AVAILABLE_PERMISSIONS = [
|
|
{
|
|
id: 'TICKETS_VIEW',
|
|
label: 'Tickets ansehen'
|
|
},
|
|
{
|
|
id: 'TICKETS_EDIT',
|
|
label: 'Tickets bearbeiten / Zeit buchen'
|
|
},
|
|
{
|
|
id: 'CUSTOMERS_MANAGE',
|
|
label: 'Kundenstamm verwalten'
|
|
},
|
|
{
|
|
id: 'TEAM_MANAGE',
|
|
label: 'Mitarbeiter & Rollen verwalten'
|
|
},
|
|
{
|
|
id: 'SYSTEM_SETTINGS',
|
|
label: 'Globale Einstellungen'
|
|
}
|
|
];
|
|
function RolesPage() {
|
|
_s();
|
|
const [roles, setRoles] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]);
|
|
const [showForm, setShowForm] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
|
|
const [formData, setFormData] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({
|
|
name: '',
|
|
permissions: []
|
|
});
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
|
|
"RolesPage.useEffect": ()=>{
|
|
fetchRoles();
|
|
}
|
|
}["RolesPage.useEffect"], []);
|
|
const fetchRoles = async ()=>{
|
|
const res = await fetch('/api/roles');
|
|
if (res.ok) setRoles(await res.json());
|
|
};
|
|
const togglePermission = (permId)=>{
|
|
setFormData((prev)=>({
|
|
...prev,
|
|
permissions: prev.permissions.includes(permId) ? prev.permissions.filter((p)=>p !== permId) : [
|
|
...prev.permissions,
|
|
permId
|
|
]
|
|
}));
|
|
};
|
|
const handleSubmit = async (e)=>{
|
|
e.preventDefault();
|
|
const res = await fetch('/api/roles', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify(formData)
|
|
});
|
|
if (res.ok) {
|
|
setFormData({
|
|
name: '',
|
|
permissions: []
|
|
});
|
|
setShowForm(false);
|
|
fetchRoles();
|
|
}
|
|
};
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "max-w-7xl mx-auto space-y-6",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex items-center justify-between",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h1", {
|
|
className: "text-2xl font-bold text-slate-900 flex items-center gap-2",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$shield$2d$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ShieldCheck$3e$__["ShieldCheck"], {
|
|
className: "w-6 h-6 text-indigo-600"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 55,
|
|
columnNumber: 13
|
|
}, this),
|
|
" Berechtigungsgruppen"
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 54,
|
|
columnNumber: 11
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
|
className: "text-slate-500 mt-1",
|
|
children: "Definiere Rollen und weise granulare Rechte zu."
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 57,
|
|
columnNumber: 11
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 53,
|
|
columnNumber: 9
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: ()=>setShowForm(!showForm),
|
|
className: "bg-indigo-600 text-white px-4 py-2 rounded-lg hover:bg-indigo-700 transition flex items-center gap-2 font-medium",
|
|
children: [
|
|
showForm ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__["X"], {
|
|
className: "w-4 h-4"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 60,
|
|
columnNumber: 23
|
|
}, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Plus$3e$__["Plus"], {
|
|
className: "w-4 h-4"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 60,
|
|
columnNumber: 51
|
|
}, this),
|
|
showForm ? 'Abbrechen' : 'Neue Gruppe'
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 59,
|
|
columnNumber: 9
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 52,
|
|
columnNumber: 7
|
|
}, this),
|
|
showForm && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "bg-white p-6 rounded-xl shadow-sm border border-slate-200 animate-in fade-in slide-in-from-top-4",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("form", {
|
|
onSubmit: handleSubmit,
|
|
className: "space-y-6",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
|
|
className: "block text-sm font-medium text-slate-700 mb-1",
|
|
children: "Name der Gruppe (z.B. Supporter, Buchhaltung) *"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 69,
|
|
columnNumber: 15
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("input", {
|
|
type: "text",
|
|
required: true,
|
|
className: "w-full md:w-1/2 border border-slate-300 p-2.5 rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none",
|
|
value: formData.name,
|
|
onChange: (e)=>setFormData({
|
|
...formData,
|
|
name: e.target.value
|
|
})
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 70,
|
|
columnNumber: 15
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 68,
|
|
columnNumber: 13
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
|
|
className: "block text-sm font-medium text-slate-700 mb-3",
|
|
children: "Zugeordnete Berechtigungen"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 74,
|
|
columnNumber: 15
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",
|
|
children: AVAILABLE_PERMISSIONS.map((perm)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
|
|
className: `flex items-center gap-3 p-3 rounded-lg border cursor-pointer transition-colors ${formData.permissions.includes(perm.id) ? 'bg-indigo-50 border-indigo-200 text-indigo-900' : 'bg-white border-slate-200 hover:bg-slate-50'}`,
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: `w-5 h-5 rounded flex items-center justify-center border ${formData.permissions.includes(perm.id) ? 'bg-indigo-600 border-indigo-600 text-white' : 'border-slate-300'}`,
|
|
children: formData.permissions.includes(perm.id) && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
|
|
className: "w-3 h-3"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 79,
|
|
columnNumber: 66
|
|
}, this)
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 78,
|
|
columnNumber: 21
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
|
className: "font-medium text-sm",
|
|
children: perm.label
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 81,
|
|
columnNumber: 21
|
|
}, this)
|
|
]
|
|
}, perm.id, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 77,
|
|
columnNumber: 19
|
|
}, this))
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 75,
|
|
columnNumber: 15
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 73,
|
|
columnNumber: 13
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex justify-end pt-2",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
type: "submit",
|
|
className: "bg-slate-900 text-white px-6 py-2.5 rounded-lg hover:bg-slate-800 transition font-medium",
|
|
children: "Gruppe speichern"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 88,
|
|
columnNumber: 15
|
|
}, this)
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 87,
|
|
columnNumber: 13
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 67,
|
|
columnNumber: 11
|
|
}, this)
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 66,
|
|
columnNumber: 9
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "grid grid-cols-1 md:grid-cols-3 gap-6",
|
|
children: roles.map((role)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "bg-white rounded-xl shadow-sm border border-slate-200 p-6 flex flex-col h-full",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex justify-between items-start mb-4",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
|
|
className: "font-bold text-lg text-slate-900",
|
|
children: role.name
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 100,
|
|
columnNumber: 15
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
|
className: "bg-slate-100 text-slate-600 px-2.5 py-1 rounded-full text-xs font-semibold",
|
|
children: [
|
|
role._count.users,
|
|
" Nutzer"
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 101,
|
|
columnNumber: 15
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 99,
|
|
columnNumber: 13
|
|
}, this),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex-1 space-y-2",
|
|
children: [
|
|
role.permissions.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "text-sm text-slate-600 flex items-center gap-2",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "w-1.5 h-1.5 rounded-full bg-indigo-400"
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 106,
|
|
columnNumber: 19
|
|
}, this),
|
|
AVAILABLE_PERMISSIONS.find((ap)=>ap.id === p)?.label || p
|
|
]
|
|
}, p, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 105,
|
|
columnNumber: 17
|
|
}, this)),
|
|
role.permissions.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
|
className: "text-sm text-slate-400 italic",
|
|
children: "Keine Rechte zugewiesen."
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 110,
|
|
columnNumber: 49
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 103,
|
|
columnNumber: 13
|
|
}, this)
|
|
]
|
|
}, role.id, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 98,
|
|
columnNumber: 11
|
|
}, this))
|
|
}, void 0, false, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 96,
|
|
columnNumber: 7
|
|
}, this)
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/app/roles/page.tsx",
|
|
lineNumber: 51,
|
|
columnNumber: 5
|
|
}, this);
|
|
}
|
|
_s(RolesPage, "SbedxIFPL3yP0P5DTQEh0WcJTdE=");
|
|
_c = RolesPage;
|
|
var _c;
|
|
__turbopack_context__.k.register(_c, "RolesPage");
|
|
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
|
|
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
|
|
}
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/shield-check.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>ShieldCheck
|
|
]);
|
|
/**
|
|
* @license lucide-react v1.14.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.mjs [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
|
|
key: "oel41y"
|
|
}
|
|
],
|
|
[
|
|
"path",
|
|
{
|
|
d: "m9 12 2 2 4-4",
|
|
key: "dzmm74"
|
|
}
|
|
]
|
|
];
|
|
const ShieldCheck = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("shield-check", __iconNode);
|
|
;
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/shield-check.mjs [app-client] (ecmascript) <export default as ShieldCheck>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"ShieldCheck",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$shield$2d$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$shield$2d$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/shield-check.mjs [app-client] (ecmascript)");
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/plus.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>Plus
|
|
]);
|
|
/**
|
|
* @license lucide-react v1.14.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.mjs [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M5 12h14",
|
|
key: "1ays0h"
|
|
}
|
|
],
|
|
[
|
|
"path",
|
|
{
|
|
d: "M12 5v14",
|
|
key: "s699le"
|
|
}
|
|
]
|
|
];
|
|
const Plus = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("plus", __iconNode);
|
|
;
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/plus.mjs [app-client] (ecmascript) <export default as Plus>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Plus",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/plus.mjs [app-client] (ecmascript)");
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/x.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>X
|
|
]);
|
|
/**
|
|
* @license lucide-react v1.14.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.mjs [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M18 6 6 18",
|
|
key: "1bl5f8"
|
|
}
|
|
],
|
|
[
|
|
"path",
|
|
{
|
|
d: "m6 6 12 12",
|
|
key: "d8bk6v"
|
|
}
|
|
]
|
|
];
|
|
const X = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("x", __iconNode);
|
|
;
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/x.mjs [app-client] (ecmascript) <export default as X>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"X",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.mjs [app-client] (ecmascript)");
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/check.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>Check
|
|
]);
|
|
/**
|
|
* @license lucide-react v1.14.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.mjs [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M20 6 9 17l-5-5",
|
|
key: "1gmf2c"
|
|
}
|
|
]
|
|
];
|
|
const Check = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("check", __iconNode);
|
|
;
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/check.mjs [app-client] (ecmascript) <export default as Check>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Check",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/check.mjs [app-client] (ecmascript)");
|
|
}),
|
|
]);
|
|
|
|
//# sourceMappingURL=_0sq50zl._.js.map
|