feat: Abwesenheiten-Screen in Mobile-App
- MobileAbsencesScreen.tsx: - Urlaubskonto-Karte (verbleibende Tage + Fortschrittsbalken) - Liste eigener Abwesenheiten (aktuell/geplant + vergangen) - Farbpunkt pro Abwesenheitstyp, Status-Badge - Bottom-Sheet Modal: Antrag stellen oder Krank melden - Start-/Enddatum-Picker, Typ-Auswahl, optionale Notiz - SICK-Typ → quick-sick Endpoint, sonst POST /absences/ - MobileBottomNav: 4. Tab 'Urlaub' (war 3 Tabs) - MobilePage: Screen 'absences' eingebunden Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
type Screen = 'stamp' | 'today' | 'profile'
|
||||
type Screen = 'stamp' | 'today' | 'absences' | 'profile'
|
||||
|
||||
interface Props {
|
||||
active: Screen
|
||||
@@ -29,6 +29,16 @@ export function MobileBottomNav({ active, onChange }: Props) {
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: 'absences',
|
||||
label: 'Urlaub',
|
||||
icon: (
|
||||
<svg className='w-6 h-6' fill='none' viewBox='0 0 24 24' stroke='currentColor' strokeWidth={1.75}>
|
||||
<path strokeLinecap='round' strokeLinejoin='round' d='M3 17l4-8 4 4 4-6 4 10' />
|
||||
<path strokeLinecap='round' strokeLinejoin='round' d='M3 20h18' />
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: 'profile',
|
||||
label: 'Profil',
|
||||
@@ -52,9 +62,7 @@ export function MobileBottomNav({ active, onChange }: Props) {
|
||||
key={item.id}
|
||||
onClick={() => onChange(item.id)}
|
||||
className={`flex-1 flex flex-col items-center justify-center gap-1 min-h-[56px] py-2 transition-colors ${
|
||||
active === item.id
|
||||
? 'text-blue-600'
|
||||
: 'text-gray-400'
|
||||
active === item.id ? 'text-blue-600' : 'text-gray-400'
|
||||
}`}
|
||||
>
|
||||
{item.icon}
|
||||
|
||||
Reference in New Issue
Block a user