Merge branch 'css-rework-sidenav' of https://github.com/sendou-ink/sendou.ink into css-rework-sidenav

This commit is contained in:
hfcRed 2026-01-11 13:55:35 +01:00
commit 49d5d634ff
16 changed files with 109 additions and 56 deletions

View File

@ -1,21 +1,22 @@
---
# sendou.ink-0q9m
title: My calendar page and components
title: My Events page and components
status: todo
type: task
priority: normal
created_at: 2026-01-11T11:45:35Z
updated_at: 2026-01-11T11:45:35Z
updated_at: 2026-01-11T12:50:56Z
parent: sendou.ink-om3i
---
## Summary
Build the `/my-calendar` page with list view and event card components.
Build the `/my-events` page with list view and event card components.
## Details
**Page requirements:**
- Route: `/my-calendar`
- Route: `/my-events`
- Login required (redirect if not authenticated)
- List view grouped by day (chronological)
- Empty state with links to /calendar and /scrims
@ -28,7 +29,7 @@ Build the `/my-calendar` page with list view and event card components.
- Click navigates directly to tournament/scrim page
**Component sharing:**
- Build components that can be reused by sidebar My Calendar section
- Build components that can be reused by sidebar Events section
- Handle both tournament and scrim event types
## Checklist

View File

@ -1,19 +1,19 @@
---
# sendou.ink-1kb8
title: Show times on mobile My Calendar panel
title: Show times on mobile Events panel
status: todo
type: task
priority: normal
tags:
- my-calendar-epic
- my-events-epic
created_at: 2026-01-11T09:48:18Z
updated_at: 2026-01-11T11:45:42Z
updated_at: 2026-01-11T12:51:46Z
parent: sendou.ink-6eko
---
## Summary
The mobile My Calendar panel currently only shows tournament names without any time information. Add day headers and event times to help players know when things are happening.
The mobile Events panel currently only shows tournament names without any time information. Add day headers and event times to help players know when things are happening.
## Current state

View File

@ -0,0 +1,11 @@
---
# sendou.ink-36dp
title: Check if pagination styles can be improved
status: todo
type: task
created_at: 2026-01-11T12:35:22Z
updated_at: 2026-01-11T12:35:22Z
parent: sendou.ink-1l22
---
Review the current pagination component styling and identify potential improvements that align with the CSS rework goals (modern practices, theming, accessibility).

View File

@ -0,0 +1,22 @@
---
# sendou.ink-3hgl
title: Fix black background on date/time inputs in Chrome
status: todo
type: bug
created_at: 2026-01-11T12:36:28Z
updated_at: 2026-01-11T12:36:28Z
parent: sendou.ink-1l22
---
Some native input types (time, datetime-local, week, month) display with black backgrounds or styling issues in Chrome. Need to investigate the root cause and apply a consistent fix across all affected input types.
## Details
- Affected inputs: time, datetime-local, week, month (and possibly others)
- Browser: Chrome
- The icons and placeholder text appear correctly but there seems to be a color scheme conflict
## Checklist
- [ ] Identify which CSS rules cause the black background
- [ ] Check if it's related to color-scheme property or browser defaults
- [ ] Apply a fix that works for all affected input types at once
- [ ] Test in Chrome and other browsers

View File

@ -1,16 +1,17 @@
---
# sendou.ink-d6vh
title: My calendar data layer
title: My Events data layer
status: todo
type: task
priority: normal
created_at: 2026-01-11T11:45:35Z
updated_at: 2026-01-11T11:45:35Z
updated_at: 2026-01-11T12:51:07Z
parent: sendou.ink-om3i
---
## Summary
Create the data fetching layer for the My Calendar page that combines tournaments and scrims into a unified event list.
Create the data fetching layer for the My Events page that combines tournaments and scrims into a unified event list.
## Details
@ -28,7 +29,7 @@ Create the data fetching layer for the My Calendar page that combines tournament
## Technical approach
- Create loader at `/my-calendar` route
- Create loader at `/my-events` route
- Repository functions to fetch user tournaments and scrims
- Merge and sort by start time
- Design data structure that works for both page and sidebar (shared)

View File

@ -1,23 +1,23 @@
---
# sendou.ink-kw6u
title: Show scrims in My calendar
title: Show scrims in Events
status: todo
type: task
priority: normal
tags:
- my-calendar-epic
- my-events-epic
created_at: 2026-01-11T09:44:26Z
updated_at: 2026-01-11T11:45:42Z
updated_at: 2026-01-11T12:51:46Z
parent: sendou.ink-6eko
---
## Summary
Display scrims (both scheduled and looking-for-match) in the sidebar's "My calendar" section.
Display scrims (both scheduled and looking-for-match) in the sidebar's "Events" section.
## Details
The My calendar section currently shows tournament calendar entries. It should also include:
The Events section currently shows tournament calendar entries. It should also include:
1. **Scheduled scrims** - Scrims where the user's team has a confirmed match scheduled
2. **Looking-for-match scrims** - Active scrim postings where user's team is still searching for opponents
@ -27,6 +27,6 @@ This gives competitive players visibility into their upcoming scrim commitments
## Checklist
- [ ] Identify where scrim data is fetched/stored
- [ ] Add scrim entries to My calendar data source
- [ ] Add scrim entries to Events data source
- [ ] Distinguish between scheduled vs looking-for-match scrims visually
- [ ] Test with various scrim states

View File

@ -1,10 +1,11 @@
---
# sendou.ink-n3wk
title: Rename mobile menu tab from Calendar to avoid confusion
status: todo
status: completed
type: bug
priority: normal
created_at: 2026-01-11T09:38:36Z
updated_at: 2026-01-11T09:38:36Z
updated_at: 2026-01-11T12:48:03Z
parent: sendou.ink-6eko
---

View File

@ -1,31 +1,32 @@
---
# sendou.ink-oiw2
title: My calendar navigation links
title: My Events navigation links
status: todo
type: task
priority: normal
created_at: 2026-01-11T11:45:36Z
updated_at: 2026-01-11T11:45:36Z
updated_at: 2026-01-11T12:50:48Z
parent: sendou.ink-om3i
---
## Summary
Add links to My Calendar page in sidebar (desktop) and mobile menu.
Add links to My Events page in sidebar (desktop) and mobile menu.
## Details
**Desktop sidebar:**
- Add "My Calendar" link
- Add "My Events" link
- Placement TBD (near existing Calendar link?)
- Only show when logged in
**Mobile menu:**
- Add "My Calendar" link in appropriate location
- Add "My Events" link in appropriate location
- Only show when logged in
## Checklist
- [ ] Add My Calendar link to desktop sidebar
- [ ] Add My Calendar link to mobile menu
- [ ] Add My Events link to desktop sidebar
- [ ] Add My Events link to mobile menu
- [ ] Ensure links only appear when authenticated
- [ ] Add translations for link text

View File

@ -1,16 +1,16 @@
---
# sendou.ink-om3i
title: My calendar page
title: My Events page
status: todo
type: epic
priority: normal
created_at: 2026-01-11T09:45:51Z
updated_at: 2026-01-11T10:37:00Z
updated_at: 2026-01-11T12:50:40Z
---
## Summary
A dedicated page (`/my-calendar`) for viewing the user's personal calendar with all their upcoming commitments in one centralized view.
A dedicated page (`/my-events`) for viewing the user's personal events with all their upcoming commitments in one centralized view.
## Why
@ -44,7 +44,7 @@ Users struggle to see all their commitments (tournaments, scrims) in one place.
**Interaction:** Clicking an event navigates directly to the tournament/scrim page
**URL:** `/my-calendar` (login required)
**URL:** `/my-events` (login required)
**Empty state:** Simple message ("No upcoming events") with links to /calendar and /scrims
@ -52,7 +52,7 @@ Users struggle to see all their commitments (tournaments, scrims) in one place.
## Technical Notes
- Share components and data fetching logic with sidebar "My Calendar" section
- Share components and data fetching logic with sidebar "Events" section
- Related tasks: `sendou.ink-kw6u` (scrims in sidebar), `sendou.ink-1kb8` (times on mobile panel)
## Navigation

View File

@ -1,10 +1,11 @@
---
# sendou.ink-svz2
title: Inline function in NotificationPopover
status: todo
status: completed
type: task
priority: normal
created_at: 2026-01-11T08:58:55Z
updated_at: 2026-01-11T08:58:55Z
updated_at: 2026-01-11T12:41:51Z
parent: sendou.ink-6eko
---

View File

@ -0,0 +1,20 @@
---
# sendou.ink-v42i
title: Check brackets UI design
status: todo
type: task
created_at: 2026-01-11T12:34:21Z
updated_at: 2026-01-11T12:34:21Z
parent: sendou.ink-6eko
---
## Description
Review the brackets UI and decide on design questions:
## Checklist
- [ ] Should tabs (Main/Underground) be "attached" to brackets outline?
- [ ] Should "Add sub" link to a different page?
- [ ] Compactify button restyle needed?
- [ ] Do we need "Go to match" button when match info is already in the sidebar?

View File

@ -1,16 +1,17 @@
---
# sendou.ink-yyzj
title: My calendar iCal export
title: My Events iCal export
status: todo
type: task
priority: normal
created_at: 2026-01-11T11:45:35Z
updated_at: 2026-01-11T11:45:35Z
updated_at: 2026-01-11T12:51:39Z
parent: sendou.ink-om3i
---
## Summary
Add .ics file export for the user's personal calendar, allowing subscription in external calendar apps.
Add .ics file export for the user's personal events, allowing subscription in external calendar apps.
## Details
@ -28,8 +29,8 @@ Add .ics file export for the user's personal calendar, allowing subscription in
## Checklist
- [ ] Research existing /calendar iCal implementation
- [ ] Create endpoint for personal calendar .ics
- [ ] Create endpoint for personal events .ics
- [ ] Generate iCal events from user's tournaments
- [ ] Generate iCal events from user's scrims
- [ ] Add subscription URL/button to My Calendar page
- [ ] Add subscription URL/button to My Events page
- [ ] Test subscription in external calendar app

View File

@ -117,7 +117,7 @@ function MobileTabBar({
/>
<MobileTab
icon={<Calendar />}
label={t("common:pages.calendar")}
label={t("front:sideNav.myCalendar")}
isActive={activePanel === "tourneys"}
onPress={() => onTabPress("tourneys")}
/>

View File

@ -1,4 +1,3 @@
import clsx from "clsx";
import { Bell, RefreshCcw } from "lucide-react";
import * as React from "react";
import { useTranslation } from "react-i18next";
@ -37,12 +36,6 @@ export function useNotifications() {
return { notifications, unseenIds };
}
export function notificationPopoverClassName(notificationsLength: number) {
return clsx(styles.popoverContainer, {
[styles.noNotificationsContainer]: notificationsLength === 0,
});
}
export function NotificationContent({
notifications,
unseenIds,

View File

@ -36,11 +36,8 @@ import { Footer } from "./Footer";
import styles from "./index.module.css";
import { LogInButtonContainer } from "./LogInButtonContainer";
import { NavDialog } from "./NavDialog";
import {
NotificationContent,
notificationPopoverClassName,
useNotifications,
} from "./NotificationPopover";
import { NotificationContent, useNotifications } from "./NotificationPopover";
import notificationPopoverStyles from "./NotificationPopover.module.css";
import { TopNavMenus } from "./TopNavMenus";
import { TopRightButtons } from "./TopRightButtons";
@ -386,8 +383,12 @@ function SideNavUserPanel() {
<Bell />
</Button>
}
popoverClassName={notificationPopoverClassName(
notifications.length,
popoverClassName={clsx(
notificationPopoverStyles.popoverContainer,
{
[notificationPopoverStyles.noNotificationsContainer]:
notifications.length === 0,
},
)}
>
<NotificationContent

View File

@ -20,7 +20,7 @@
"leaderboards.viewFull": "View full leaderboard",
"updates.header": "Updates",
"updates.viewPast": "View past updates",
"sideNav.myCalendar": "My Calendar",
"sideNav.myCalendar": "Events",
"sideNav.noEvents": "No upcoming events",
"sideNav.friends": "Friends",
"sideNav.streams": "Streams",