1. Navbar mobile dropdown
- Fixed potential clipping: added z-50 and top-full to dropdown panel
- Added overflow-visible to nav wrapper so dropdown is not cut off
- Wider panel (min-w-52), larger tap targets (py-2.5 per link)
- Active route indicated by colored dot + bold text
- Trigger button now shows hamburger icon + page name
2. KPI cards (section-dashboard)
- grid-cols-2 on mobile (was single column), sm:3, xl:5
- Reduced padding px-3 py-2.5 (was p-4) and font text-xl (was text-2xl)
- flex-col gap-0.5 layout for tighter vertical rhythm
3. Test Toast removed
- Deleted ToastTrigger.jsx component entirely
- Removed import and conditional render from Layout.astro
- Removed unused isDev variable from Layout.astro
4. AnimatedDataTable improvements
- Replaced plain-text loading placeholder with animated skeleton rows
(pulse animation with variable-width grey bars per column)
- Added horizontal scroll fade indicators: left/right gradient overlays
appear automatically via ResizeObserver + scroll event listener
- scroll-smooth touch scrolling on mobile (WebkitOverflowScrolling, scrollbarWidth)
- Added scope=col on th elements and aria-label / aria-busy props
- Slightly snappier spring config (tension 260, friction 28)
- leave animation reduced to 4px shift (was 8px) for less jarring removal
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Zadrzava Navbar i ostale UI otoke kroz Astro tranzicije te sinkronizira aktivni path preko astro:page-load kako bi react-spring indikator animirao iz trenutne pozicije.
Uklanja bijeli splash pri promjeni stranice i prelasku teme postavljanjem html background boje inline, prilagodbom ThemeToggle logike i uklanjanjem body color tranzicije.
Dodano je i TTL kesiranje za dashboard/task dohvat kako bi se smanjili redundantni API pozivi pri navigaciji.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- TaskCalendarPortal u Layout.astro (van AnimatedPage transforma) pa fixed
pozicija uvijek prati viewport rub bez probijanja sadržaja
- Kalendar widgeta panel koristi clipping wrapper (overflow:hidden + animirana
width) umjesto translate3d — potpuno skriva sjenu i border kad je zatvoren
- Serviser vidi samo svoje taskove, supervisor vidi sve; neprijavljeni korisnik
ne vidi widget (return null)
- FleetDashboardShell sluša calendar:open-task event i otvara TaskServiceRecordsModal
- Servisi danas broji Taskove (scheduled_date=danas, status aktivan/servis)
umjesto Servisnih zapisa
- downloadGeneratedPdfByUrl hvata grešku i prikazuje Toast (npr. PDF nije
dostupan ili je istekao)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Dodano polje 'display_code' na WorkOrder model (format: 2 inicijala + ddmmyy)
- Migracije za kreiranje polja i backfill postojećih naloga
- Ažuriran WorkOrderSerializer za validaciju i serijalizaciju display_code
- Backend tasks za auto-generiranje display_code pri kreiranju
- Frontend komponente ažurirane za prikaz display_code umjesto UUID:
* FleetDashboardShell tablica putnih naloga
* WorkOrderDetailModal
* TaskCreateModal
* Sve PDF stranice
- displayIds.js utility za formatiranjeDisplay ID-eva
- Admin interface prikazuje display_code
Uklonjen je paralelni ToastProvider iz Layout.astro kako bi ostao samo postojeći ToastContainer (nanostore), čime se sprječava hydration crash i null.map greška na /putni-nalozi.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>