All checks were successful
Deploy Development / deploy (push) Successful in 34s
Test Suite / pytest-backend (push) Successful in 24s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 7s
Test Suite / playwright-tests (push) Successful in 23s
- Added a new endpoint for superadmins and platform admins to reset passwords for other profiles. - Introduced a management password reset feature in the admin user management page, allowing for secure password updates. - Enhanced user interface to support password reset actions, including validation and feedback for successful updates. - Updated API utility functions to handle the new password reset request.
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
import {
|
|
LayoutDashboard,
|
|
BookOpen,
|
|
Calendar,
|
|
Images,
|
|
Building2,
|
|
Settings,
|
|
Shield,
|
|
Inbox
|
|
} from 'lucide-react'
|
|
|
|
/**
|
|
* Shinkan Navigation Configuration
|
|
* Single source of truth für Bottom-Nav (Mobile) + Desktop-Sidebar
|
|
*
|
|
* @typedef {{ to: string, label: string, shortLabel?: string, end?: boolean, Icon: import('react').ForwardRefExoticComponent }} AppNavItem
|
|
*/
|
|
|
|
/** @param {{ showInbox?: boolean }} opts */
|
|
function baseItems(opts = {}) {
|
|
const showInbox = !!opts.showInbox
|
|
const items = [
|
|
{ to: '/', label: 'Übersicht', end: true },
|
|
...(showInbox ? [{ to: '/inbox', label: 'Posteingang', shortLabel: 'Post' }] : []),
|
|
{ to: '/exercises', label: 'Übungen', shortLabel: 'Übungen' },
|
|
{ to: '/planning', label: 'Planung' },
|
|
{ to: '/media', label: 'Medien', shortLabel: 'Medien' },
|
|
{ to: '/clubs', label: 'Vereine' },
|
|
{ to: '/settings', label: 'Einstellungen', shortLabel: 'Einst.' }
|
|
]
|
|
return items
|
|
}
|
|
|
|
/** @param {boolean} isAdmin @param {{ showInbox?: boolean }} opts */
|
|
export function getMainNavItems(isAdmin, opts = {}) {
|
|
const showInbox = !!opts.showInbox
|
|
const icons = [
|
|
LayoutDashboard,
|
|
...(showInbox ? [Inbox] : []),
|
|
BookOpen,
|
|
Calendar,
|
|
Images,
|
|
Building2,
|
|
Settings,
|
|
]
|
|
|
|
const raw = baseItems(opts).map((item, i) => ({
|
|
...item,
|
|
Icon: icons[i]
|
|
}))
|
|
|
|
if (isAdmin) {
|
|
raw.push({ to: '/admin', label: 'Admin', end: false, Icon: Shield })
|
|
}
|
|
|
|
return raw
|
|
}
|