diff --git a/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md b/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md
index 4495fb80c..b2e73b957 100644
--- a/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md
+++ b/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md
@@ -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
diff --git a/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md b/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md
index 4cbb70a99..4aab090d6 100644
--- a/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md
+++ b/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md
@@ -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
diff --git a/.beans/sendou.ink-36dp--check-if-pagination-styles-can-be-improved.md b/.beans/sendou.ink-36dp--check-if-pagination-styles-can-be-improved.md
new file mode 100644
index 000000000..ed18d8686
--- /dev/null
+++ b/.beans/sendou.ink-36dp--check-if-pagination-styles-can-be-improved.md
@@ -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).
\ No newline at end of file
diff --git a/.beans/sendou.ink-3hgl--fix-black-background-on-datetime-inputs-in-chrome.md b/.beans/sendou.ink-3hgl--fix-black-background-on-datetime-inputs-in-chrome.md
new file mode 100644
index 000000000..2094ff444
--- /dev/null
+++ b/.beans/sendou.ink-3hgl--fix-black-background-on-datetime-inputs-in-chrome.md
@@ -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
\ No newline at end of file
diff --git a/.beans/sendou.ink-d6vh--my-calendar-data-layer.md b/.beans/sendou.ink-d6vh--my-calendar-data-layer.md
index b0025be2a..26a676d87 100644
--- a/.beans/sendou.ink-d6vh--my-calendar-data-layer.md
+++ b/.beans/sendou.ink-d6vh--my-calendar-data-layer.md
@@ -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)
diff --git a/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md b/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md
index ef77290ee..11b35494f 100644
--- a/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md
+++ b/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md
@@ -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
\ No newline at end of file
diff --git a/.beans/sendou.ink-n3wk--rename-mobile-menu-tab-from-calendar-to-avoid-conf.md b/.beans/sendou.ink-n3wk--rename-mobile-menu-tab-from-calendar-to-avoid-conf.md
index 770f396b0..e093bd820 100644
--- a/.beans/sendou.ink-n3wk--rename-mobile-menu-tab-from-calendar-to-avoid-conf.md
+++ b/.beans/sendou.ink-n3wk--rename-mobile-menu-tab-from-calendar-to-avoid-conf.md
@@ -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
---
diff --git a/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md b/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md
index e19e9b5c0..ac3948fe9 100644
--- a/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md
+++ b/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md
@@ -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
\ No newline at end of file
diff --git a/.beans/sendou.ink-om3i--my-calendar-page.md b/.beans/sendou.ink-om3i--my-calendar-page.md
index 2b44bc212..180f7f9fa 100644
--- a/.beans/sendou.ink-om3i--my-calendar-page.md
+++ b/.beans/sendou.ink-om3i--my-calendar-page.md
@@ -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
diff --git a/.beans/sendou.ink-svz2--inline-function-in-notificationpopover.md b/.beans/sendou.ink-svz2--inline-function-in-notificationpopover.md
index 6957505ec..b1233795c 100644
--- a/.beans/sendou.ink-svz2--inline-function-in-notificationpopover.md
+++ b/.beans/sendou.ink-svz2--inline-function-in-notificationpopover.md
@@ -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
---
diff --git a/.beans/sendou.ink-v42i--check-brackets-ui-design.md b/.beans/sendou.ink-v42i--check-brackets-ui-design.md
new file mode 100644
index 000000000..653bd087d
--- /dev/null
+++ b/.beans/sendou.ink-v42i--check-brackets-ui-design.md
@@ -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?
diff --git a/.beans/sendou.ink-yyzj--my-calendar-ical-export.md b/.beans/sendou.ink-yyzj--my-calendar-ical-export.md
index cee1943a1..2905d01e3 100644
--- a/.beans/sendou.ink-yyzj--my-calendar-ical-export.md
+++ b/.beans/sendou.ink-yyzj--my-calendar-ical-export.md
@@ -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
\ No newline at end of file
diff --git a/app/components/MobileNav.tsx b/app/components/MobileNav.tsx
index d6b85794e..400ac21f8 100644
--- a/app/components/MobileNav.tsx
+++ b/app/components/MobileNav.tsx
@@ -117,7 +117,7 @@ function MobileTabBar({
/>
}
- label={t("common:pages.calendar")}
+ label={t("front:sideNav.myCalendar")}
isActive={activePanel === "tourneys"}
onPress={() => onTabPress("tourneys")}
/>
diff --git a/app/components/layout/NotificationPopover.tsx b/app/components/layout/NotificationPopover.tsx
index 94f57686d..58042d12c 100644
--- a/app/components/layout/NotificationPopover.tsx
+++ b/app/components/layout/NotificationPopover.tsx
@@ -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,
diff --git a/app/components/layout/index.tsx b/app/components/layout/index.tsx
index 83c618b63..909a69c7c 100644
--- a/app/components/layout/index.tsx
+++ b/app/components/layout/index.tsx
@@ -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() {
}
- popoverClassName={notificationPopoverClassName(
- notifications.length,
+ popoverClassName={clsx(
+ notificationPopoverStyles.popoverContainer,
+ {
+ [notificationPopoverStyles.noNotificationsContainer]:
+ notifications.length === 0,
+ },
)}
>