Skip to content

Commit 378db68

Browse files
JacobCoffeeclaude
andcommitted
consolidate schedule header — single row with day tabs
- Remove All/Favorites segment, replace with star toggle icon - Move day selector to main toolbar row - Change Filter text to funnel icon - Search bar below header in content area - Today's tab highlighted in purple with bold weight - Muted gray action icons that don't compete with day tabs Resolves: PYMOBIL-67 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3e2dbe8 commit 378db68

File tree

3 files changed

+72
-57
lines changed

3 files changed

+72
-57
lines changed

src/app/pages/schedule/schedule.html

Lines changed: 13 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,34 @@
11
<ion-header translucent="true">
2-
<ion-toolbar>
3-
<ion-buttons *ngIf="!showSearchbar" slot="start">
2+
<ion-toolbar class="schedule-toolbar">
3+
<ion-buttons slot="start">
44
<ion-menu-button [color]="liveUpdateService.needsUpdate ? 'primary' : 'medium'"></ion-menu-button>
55
<ion-badge *ngIf="liveUpdateService.needsUpdate" size=sm>1</ion-badge>
66
</ion-buttons>
7-
<ion-segment *ngIf="ios" [(ngModel)]="segment" (ionChange)="updateSchedule()">
8-
<ion-segment-button value="all">
9-
All
10-
</ion-segment-button>
11-
<ion-segment-button value="favorites">
12-
Favorites
7+
<ion-segment [(ngModel)]="dayIndex" (ionChange)="updateSchedule()" class="day-segment">
8+
<ion-segment-button *ngFor="let day of days" value="{{day.index}}" [class.today-tab]="day.index === todayIndex">
9+
{{day.day}}
1310
</ion-segment-button>
1411
</ion-segment>
15-
<ion-title *ngIf="!ios && !showSearchbar">Schedule</ion-title>
16-
<ion-searchbar #search *ngIf="showSearchbar" showCancelButton="always" [(ngModel)]="queryText" (ionChange)="updateSchedule()" (ionCancel)="showSearchbar = false" placeholder="Search"></ion-searchbar>
1712
<ion-buttons slot="end">
18-
<ion-button *ngIf="!ios && !showSearchbar" (click)="showSearchbar = true && focusButton()">
19-
<ion-icon slot="icon-only" name="search"></ion-icon>
13+
<ion-button (click)="toggleFavorites()" class="header-action">
14+
<ion-icon slot="icon-only" [name]="segment === 'favorites' ? 'star' : 'star-outline'"></ion-icon>
2015
</ion-button>
21-
<ion-button *ngIf="!showSearchbar" (click)="presentFilter()">
22-
<span *ngIf="ios">Filter</span>
23-
<span *ngIf="!ios">
24-
<ion-icon slot="icon-only" name="options"></ion-icon>
25-
</span>
16+
<ion-button (click)="presentFilter()" class="header-action">
17+
<ion-icon slot="icon-only" name="funnel-outline"></ion-icon>
2618
</ion-button>
2719
</ion-buttons>
2820
</ion-toolbar>
29-
<ion-toolbar *ngIf="ios">
30-
<ion-segment [(ngModel)]="dayIndex" (ionChange)="updateSchedule()">
31-
<ion-segment-button *ngFor="let day of days" value="{{day.index}}" [class.today-tab]="day.index === todayIndex">
32-
{{day.day}}
33-
</ion-segment-button>
34-
</ion-segment>
35-
</ion-toolbar>
36-
<ion-toolbar *ngIf="!ios">
37-
<ion-segment [(ngModel)]="segment" (ionChange)="updateSchedule()">
38-
<ion-segment-button value="all">
39-
All
40-
</ion-segment-button>
41-
<ion-segment-button value="favorites">
42-
Favorites
43-
</ion-segment-button>
44-
</ion-segment>
45-
</ion-toolbar>
46-
<ion-toolbar *ngIf="!ios">
47-
<ion-segment [(ngModel)]="dayIndex" (ionChange)="updateSchedule()">
48-
<ion-segment-button *ngFor="let day of days" value="{{day.index}}" [class.today-tab]="day.index === todayIndex">
49-
{{day.day}}
50-
</ion-segment-button>
51-
</ion-segment>
52-
</ion-toolbar>
5321
</ion-header>
5422

5523
<ion-content fullscreen="true">
5624
<ion-refresher slot="fixed" (ionRefresh)="handleRefresh($event)">
5725
<ion-refresher-content></ion-refresher-content>
5826
</ion-refresher>
5927

60-
<ion-header collapse="condense">
61-
<ion-toolbar>
62-
<ion-title size="large">Schedule</ion-title>
63-
</ion-toolbar>
64-
<ion-toolbar>
65-
<ion-searchbar [(ngModel)]="queryText" (ionChange)="updateSchedule()" placeholder="Search"></ion-searchbar>
66-
</ion-toolbar>
67-
</ion-header>
28+
<ion-toolbar class="search-toolbar">
29+
<ion-searchbar [(ngModel)]="queryText" (ionChange)="updateSchedule()" placeholder="Search sessions"></ion-searchbar>
30+
</ion-toolbar>
31+
6832

6933
<ion-list #scheduleList [hidden]="shownSessions !== 0">
7034
<ion-item>

src/app/pages/schedule/schedule.scss

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,64 @@ $tracks: (
3636
}
3737
}
3838

39-
ion-segment-button {
39+
:host {
40+
--pycon-accent: #680579;
41+
}
42+
43+
@media (prefers-color-scheme: dark) {
44+
:host {
45+
--pycon-accent: #DD04D2;
46+
}
47+
}
48+
49+
.schedule-toolbar {
50+
--padding-start: 0;
51+
--padding-end: 0;
52+
}
53+
54+
.day-segment {
55+
--background: transparent;
56+
}
57+
58+
.day-segment ion-segment-button {
59+
--indicator-height: 3px;
60+
--indicator-color: var(--pycon-accent, #680579);
61+
--color: var(--ion-color-step-500, #808080);
62+
--color-checked: var(--pycon-accent, #680579);
4063
min-width: auto;
64+
font-size: 0.85rem;
65+
font-weight: 500;
66+
letter-spacing: 0.02em;
67+
text-transform: none;
4168
}
4269

43-
ion-segment-button.today-tab {
44-
--indicator-color: #680579;
45-
--color: #680579;
46-
--color-checked: #ffffff;
47-
--background-checked: #680579;
70+
.day-segment ion-segment-button.today-tab {
71+
--color: var(--pycon-accent, #680579);
4872
font-weight: 700;
49-
border-radius: 8px;
50-
border-bottom: 3px solid #680579;
73+
}
74+
75+
.header-action {
76+
--color: var(--ion-color-step-500, #808080);
77+
font-size: 1.1rem;
78+
79+
&:active {
80+
--color: #680579;
81+
}
82+
}
83+
84+
.search-toolbar {
85+
--background: transparent;
86+
--border-width: 0;
87+
padding: 0 8px 4px;
88+
}
89+
90+
.search-toolbar ion-searchbar {
91+
--border-radius: 10px;
92+
--box-shadow: none;
93+
--background: var(--ion-color-step-50, #f2f2f2);
94+
font-size: 0.9rem;
95+
padding: 0;
96+
height: 36px;
5197
}
5298

5399
.jump-now-wrapper {

src/app/pages/schedule/schedule.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ export class SchedulePage implements OnInit, OnDestroy {
168168
});
169169
}
170170

171+
toggleFavorites() {
172+
this.segment = this.segment === 'favorites' ? 'all' : 'favorites';
173+
this.updateSchedule();
174+
}
175+
171176
searchAllDays() {
172177
let found = false;
173178
let checked = 0;

0 commit comments

Comments
 (0)