Add admin management tabs and TV/mobile fixes

This commit is contained in:
kihong.kim
2026-01-24 21:44:13 +09:00
parent 807df3d678
commit 29881aa442
10 changed files with 522 additions and 105 deletions

View File

@@ -20,8 +20,7 @@ class CalendarWidget extends StatelessWidget {
// If we want Sun start: Sun=0, Mon=1...
// Let's adjust so Sunday is first.
int offset =
startingWeekday %
int offset = startingWeekday %
7; // If startingWeekday is 7 (Sun), offset is 0. If 1 (Mon), offset is 1.
return Container(
@@ -39,9 +38,9 @@ class CalendarWidget extends StatelessWidget {
Text(
DateFormat('MMMM yyyy').format(now),
style: Theme.of(context).textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.bold,
color: Colors.white,
),
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
const Icon(Icons.calendar_today, color: Colors.white54),
],
@@ -67,42 +66,50 @@ class CalendarWidget extends StatelessWidget {
const SizedBox(height: 8),
// Days Grid
Expanded(
child: GridView.builder(
physics: const NeverScrollableScrollPhysics(),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 7,
childAspectRatio: 1.0,
),
itemCount: 42, // 6 rows max to be safe
itemBuilder: (context, index) {
final dayNumber = index - offset + 1;
if (dayNumber < 1 || dayNumber > daysInMonth) {
return const SizedBox.shrink();
}
child: Column(
children: List.generate(6, (row) {
return Expanded(
child: Row(
children: List.generate(7, (col) {
final index = row * 7 + col;
final dayNumber = index - offset + 1;
final isToday = dayNumber == now.day;
if (dayNumber < 1 || dayNumber > daysInMonth) {
return const Expanded(child: SizedBox.shrink());
}
return Container(
margin: const EdgeInsets.all(4),
decoration: isToday
? BoxDecoration(
color: Theme.of(context).colorScheme.primary,
shape: BoxShape.circle,
)
: null,
child: Center(
child: Text(
'$dayNumber',
style: TextStyle(
color: isToday ? Colors.black : Colors.white,
fontWeight: isToday
? FontWeight.bold
: FontWeight.normal,
),
),
final isToday = dayNumber == now.day;
return Expanded(
child: Container(
margin: const EdgeInsets.all(2),
decoration: isToday
? BoxDecoration(
color: Theme.of(context).colorScheme.primary,
shape: BoxShape.circle,
)
: null,
child: Center(
child: FittedBox(
fit: BoxFit.scaleDown,
child: Text(
'$dayNumber',
style: TextStyle(
color: isToday ? Colors.black : Colors.white,
fontWeight: isToday
? FontWeight.bold
: FontWeight.normal,
fontSize: 12,
),
),
),
),
),
);
}),
),
);
},
}),
),
),
],