Reworks the coach shell per feedback that the previous dark-ink header didn't read as visually distinct from Member mode's own navy header, and that the rounded "sheet overlaps header" treatment wasn't landing: - .coach-header is now solid ice-blue (--color-ice, never club-themed -- Coach mode's own signature colour) with --color-ice-ink foreground text, instead of dark ink with white text. Every header_extra block across the coach templates (attendance, lineup) is recoloured to match. - .coach-sheet drops the 20px rounded-top/negative-margin overlap -- flush edge-to-edge below the header now, same join the member shell already uses. - The header's "Head coach" label was hardcoded regardless of the account's actual role -- CoachScopeMixin now resolves active_team_role from the person's own current-season StaffAssignment.position on the active team, so a team manager or physio sees their real title, not someone else's. Tab bar is now Today / Squad / [+] / Schedule -- no Me tab (the account's own settings already live in Member mode via the role switcher, no need for a second one). Squad (CoachSquadView) is a new roster+staff screen for the active team; Schedule (CoachScheduleView) is a new full upcoming-events list for the team, each row routed straight to the coach-relevant action (Attendance for a practice, Line-up for a game) rather than the Member- shell RSVP page. The "+" is a raised ice-blue circle opening a small popup with New event/New post/Add player -- three genuinely different actions, so the button opens a menu rather than committing to one destination. Today's own inline New event/New post/Add player buttons are gone now that the tab bar covers the same ground. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ECGMEwrc2k4D8VQuwjstj9
38 lines
2.5 KiB
Python
38 lines
2.5 KiB
Python
from django.urls import path
|
|
|
|
from . import coach_views, views
|
|
|
|
app_name = "mobile"
|
|
|
|
urlpatterns = [
|
|
# PWA plumbing.
|
|
path("manifest.webmanifest", views.ManifestView.as_view(), name="manifest"),
|
|
path("sw.js", views.ServiceWorkerView.as_view(), name="service_worker"),
|
|
path("icon/<int:size>.png", views.AppIconView.as_view(), name="icon"),
|
|
path("push/subscribe/", views.PushSubscribeView.as_view(), name="push_subscribe"),
|
|
path("calendar/<str:token>.ics", views.CalendarFeedView.as_view(), name="calendar_feed"),
|
|
# Member mode (M1-M7).
|
|
path("", views.HomeView.as_view(), name="home"),
|
|
path("calendar/", views.CalendarView.as_view(), name="calendar"),
|
|
path("events/<uuid:pk>/", views.EventDetailView.as_view(), name="event_detail"),
|
|
path("news/", views.NewsListView.as_view(), name="news_list"),
|
|
path("news/<slug:slug>/", views.NewsDetailView.as_view(), name="news_detail"),
|
|
path("me/", views.MeView.as_view(), name="me"),
|
|
path("me/payments/", views.PaymentsView.as_view(), name="payments"),
|
|
path("me/calendar-sync/", views.CalendarFeedSettingsView.as_view(), name="calendar_feed_settings"),
|
|
path("me/<uuid:member_id>/edit/", views.EditProfileView.as_view(), name="edit_profile"),
|
|
path("notifications/", views.NotificationsView.as_view(), name="notifications"),
|
|
# Coach mode (C1-C6).
|
|
path("coach/", coach_views.CoachTodayView.as_view(), name="coach_today"),
|
|
path("coach/squad/", coach_views.CoachSquadView.as_view(), name="coach_squad"),
|
|
path("coach/schedule/", coach_views.CoachScheduleView.as_view(), name="coach_schedule"),
|
|
path("coach/attendance/<uuid:event_id>/", coach_views.CoachAttendanceView.as_view(), name="coach_attendance"),
|
|
path("coach/events/new/", coach_views.CoachCreateEventView.as_view(), name="coach_create_event"),
|
|
path("coach/news/new/", coach_views.CoachCreateNewsView.as_view(), name="coach_create_news"),
|
|
path("coach/roster/add/", coach_views.CoachAddPlayerView.as_view(), name="coach_add_player"),
|
|
path("coach/lineup/<uuid:event_id>/", coach_views.CoachLineupView.as_view(), name="coach_lineup"),
|
|
path("coach/lineup/<uuid:event_id>/units/add/", coach_views.CoachLineupAddUnitView.as_view(), name="coach_lineup_add_unit"),
|
|
path("coach/lineup/units/<uuid:unit_id>/slots/add/", coach_views.CoachLineupAddSlotView.as_view(), name="coach_lineup_add_slot"),
|
|
path("coach/lineup/<uuid:event_id>/publish/", coach_views.CoachLineupPublishView.as_view(), name="coach_lineup_publish"),
|
|
]
|