@@ -535,7 +535,7 @@ export const AdminInvitationWizardPage: React.FC = () => {
)}
- {/* â•â•â• STEP 4: INSTANCE INVITEES â•â•â• */}
+ {/* ── STEP 4: INSTANCE INVITEES ── */}
{step === 4 && !skipInstance && selectedInstance && (
@@ -559,7 +559,7 @@ export const AdminInvitationWizardPage: React.FC = () => {
)}
- {/* â•â•â• DISPATCH / SUMMARY STEP â•â•â• */}
+ {/* ── DISPATCH / SUMMARY STEP ── */}
{((step === 3 && skipInstance) || (step === 5 && !dispatchResults)) && (
Zusammenfassung & Versand
@@ -610,7 +610,7 @@ export const AdminInvitationWizardPage: React.FC = () => {
)}
- {/* â•â•â• RESULTS â•â•â• */}
+ {/* ── RESULTS ── */}
{step === 5 && dispatchResults && (
Ergebnis
diff --git a/src/pages/admin/AdminMandateWizardPage.tsx b/src/pages/admin/wizards/AdminMandateWizardPage.tsx
similarity index 77%
rename from src/pages/admin/AdminMandateWizardPage.tsx
rename to src/pages/admin/wizards/AdminMandateWizardPage.tsx
index 1f431d6..c44b90a 100644
--- a/src/pages/admin/AdminMandateWizardPage.tsx
+++ b/src/pages/admin/wizards/AdminMandateWizardPage.tsx
@@ -14,17 +14,17 @@ import {
type MandateUser,
type Mandate,
type Role,
-} from '../../hooks/useUserMandates';
+} from '../../../hooks/useUserMandates';
import {
useFeatureAccess,
type FeatureInstance,
type FeatureAccessUser,
type FeatureInstanceRole,
type Feature,
-} from '../../hooks/useFeatureAccess';
-import { useToast } from '../../contexts/ToastContext';
-import api from '../../api';
-import styles from './Admin.module.css';
+} from '../../../hooks/useFeatureAccess';
+import { useToast } from '../../../contexts/ToastContext';
+import api from '../../../api';
+import styles from '../Admin.module.css';
const TOTAL_STEPS = 4;
const STEP_LABELS = ['Mandant', 'Benutzer', 'Instances', 'Feature-Benutzer'];
@@ -89,9 +89,9 @@ export const AdminMandateWizardPage: React.FC = () => {
const [isAddingInstanceUser, setIsAddingInstanceUser] = useState(false);
const [addInstanceUserForm, setAddInstanceUserForm] = useState({ userId: '', roleIds: [] as string[] });
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// HELPERS
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const getMandateName = (m: Mandate | Record): string => {
if (m.label) return m.label;
@@ -117,9 +117,9 @@ export const AdminMandateWizardPage: React.FC = () => {
return parts.length > 0 ? parts.join(' ') : u.username;
};
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// DATA LOADING
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const loadMandates = useCallback(async () => {
try {
@@ -194,9 +194,9 @@ export const AdminMandateWizardPage: React.FC = () => {
}
}, [step, selectedInstance, loadInstanceUsers, loadInstanceRoles, loadMandateUsers]);
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// HANDLERS
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const handleCreateMandate = async () => {
if (!mandateForm.name.trim()) { setError('Name ist erforderlich'); return; }
@@ -318,9 +318,9 @@ export const AdminMandateWizardPage: React.FC = () => {
}
};
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// COMPUTED
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const availableUsersForMandate = allSystemUsers.filter(
u => !mandateUsers.some(mu => mu.userId === u.id)
@@ -330,9 +330,9 @@ export const AdminMandateWizardPage: React.FC = () => {
mu => !instanceUsers.some(iu => iu.userId === mu.userId)
);
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// SHARED UI
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const renderUserTable = (
users: Array<{ userId?: string; id?: string; username: string; email?: string | null; fullName?: string; firstname?: string | null; lastname?: string | null; enabled?: boolean; roleLabels?: string[] }>,
@@ -454,9 +454,9 @@ export const AdminMandateWizardPage: React.FC = () => {
);
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// STEP INDICATOR
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const renderStepIndicator = () => (
@@ -492,9 +492,9 @@ export const AdminMandateWizardPage: React.FC = () => {
);
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// CARD WRAPPER (reusable section container matching poweron theme)
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
const cardStyle: React.CSSProperties = {
background: 'var(--surface-color, #fff)',
@@ -503,9 +503,9 @@ export const AdminMandateWizardPage: React.FC = () => {
padding: '24px',
};
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
// RENDER
- // â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ // ─────────────────────────────────────────────────────────────────────────
return (
@@ -529,7 +529,7 @@ export const AdminMandateWizardPage: React.FC = () => {
{renderStepIndicator()}
- {/* â•â•â• STEP 1: MANDATE â•â•â• */}
+ {/* ── STEP 1: MANDATE ── */}
{step === 1 && (
Mandant auswählen oder erstellen
@@ -590,7 +590,7 @@ export const AdminMandateWizardPage: React.FC = () => {
)}
- {/* â•â•â• STEP 2: MANDATE USERS â•â•â• */}
+ {/* ── STEP 2: MANDATE USERS ── */}
{step === 2 && selectedMandate && (
@@ -632,7 +632,7 @@ export const AdminMandateWizardPage: React.FC = () => {
)}
- {/* â•â•â• STEP 3: INSTANCES â•â•â• */}
+ {/* ── STEP 3: INSTANCES ── */}
{step === 3 && selectedMandate && (
@@ -754,7 +754,7 @@ export const AdminMandateWizardPage: React.FC = () => {
)}
- {/* â•â•â• STEP 4: FEATURE INSTANCE USERS â•â•â• */}
+ {/* ── STEP 4: FEATURE INSTANCE USERS ── */}
{step === 4 && selectedMandate && selectedInstance && (
@@ -807,4 +807,3 @@ export const AdminMandateWizardPage: React.FC = () => {
};
export default AdminMandateWizardPage;
-
diff --git a/src/pages/admin/FeatureInstanceWizard.module.css b/src/pages/admin/wizards/FeatureInstanceWizard.module.css
similarity index 100%
rename from src/pages/admin/FeatureInstanceWizard.module.css
rename to src/pages/admin/wizards/FeatureInstanceWizard.module.css
diff --git a/src/pages/admin/FeatureInstanceWizard.tsx b/src/pages/admin/wizards/FeatureInstanceWizard.tsx
similarity index 96%
rename from src/pages/admin/FeatureInstanceWizard.tsx
rename to src/pages/admin/wizards/FeatureInstanceWizard.tsx
index 3d4fb9d..927c7c6 100644
--- a/src/pages/admin/FeatureInstanceWizard.tsx
+++ b/src/pages/admin/wizards/FeatureInstanceWizard.tsx
@@ -5,13 +5,13 @@
*/
import React, { useState, useMemo } from 'react';
-import { useFeatureAccess } from '../../hooks/useFeatureAccess';
-import { FormGeneratorForm, type AttributeDefinition } from '../../components/FormGenerator/FormGeneratorForm';
-import { useToast } from '../../contexts/ToastContext';
-import api from '../../api';
-import type { Mandate } from '../../hooks/useUserMandates';
-import type { Feature } from '../../hooks/useFeatureAccess';
-import styles from './Admin.module.css';
+import { useFeatureAccess } from '../../../hooks/useFeatureAccess';
+import { FormGeneratorForm, type AttributeDefinition } from '../../../components/FormGenerator/FormGeneratorForm';
+import { useToast } from '../../../contexts/ToastContext';
+import api from '../../../api';
+import type { Mandate } from '../../../hooks/useUserMandates';
+import type { Feature } from '../../../hooks/useFeatureAccess';
+import styles from '../Admin.module.css';
import wizardStyles from './FeatureInstanceWizard.module.css';
function getMandateName(m: Mandate): string {
diff --git a/src/pages/admin/wizards/index.ts b/src/pages/admin/wizards/index.ts
new file mode 100644
index 0000000..cc6c011
--- /dev/null
+++ b/src/pages/admin/wizards/index.ts
@@ -0,0 +1,9 @@
+/**
+ * Wizards Index
+ *
+ * Export wizard pages and components for easy importing
+ */
+
+export { default as AdminMandateWizardPage } from './AdminMandateWizardPage';
+export { default as AdminInvitationWizardPage } from './AdminInvitationWizardPage';
+export { default as FeatureInstanceWizard } from './FeatureInstanceWizard';