23 Commits

Author SHA1 Message Date
xfy
a44ef44b42 Refactor collapse animation to overlay selected row instead of shrinking rows
Selected row now moves up via offset + zIndex to cover other rows, which
stay in place. Collapse offset calculation excludes MonthHeader and
WeekdayHeader heights so only the grid portion is collapsed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 15:44:00 +08:00
xfy
edf8ea9851 Fix first-frame flicker by deferring row height until measured
When rowHeightPx is 0 (first frame), use aspectRatio-based natural
height instead of collapsing to 0.dp, preventing a visible flash.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 15:27:26 +08:00
xfy
d7552e469f Add KDoc and inline comments per COMMENTS.md conventions
- Add KDoc to all public Composable functions with parameter descriptions
- Add inline comments for non-obvious algorithms (42-cell grid, pager mapping)
- Add @Suppress reason comments for monthNumber deprecation
- Document collapseProgress range and physical meaning
- Add named constant comments for START_PAGE
- Add Preview name to App()

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 15:22:49 +08:00
xfy
0b9a516ed3 Fix BottomCard positioning by tracking expanded calendar height separately
Use expandedCalendarHeightPx to preserve full height during collapse animation,
and compute cardTopPx based on collapse state instead of offset arithmetic.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 15:13:45 +08:00
xfy
6c3e773a38 Add commenting conventions document for the project
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 15:10:26 +08:00
xfy
f64a1c1851 Simplify BottomCard positioning with cardTopPx calculation instead of offset
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 14:48:05 +08:00
xfy
0bc5057986 Replace Column weight layout with Box absolute positioning for BottomCard collapse animation
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 14:44:45 +08:00
xfy
b734e26645 Replace button-triggered collapse with vertical drag gesture
ViewModel now exposes onDrag/onDragEnd so BottomCard drives the
collapse animation via detectVerticalDragGestures instead of a
discrete collapse() call. Drag maps to 0–1 progress over 200dp;
on release the animatable snaps to the nearest end with spring.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 14:39:50 +08:00
xfy
35cbcaf430 Move collapse animation from animateFloatAsState to ViewModel Animatable with spring spec
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 14:32:43 +08:00
xfy
e53c3d8705 Add week/month view toggle with collapse animation and bottom card
Add isCollapsed/collapseProgress state to CalendarViewModel for toggling
between month and week views. CalendarMonthPage animates non-selected
weeks out with offset and alpha. Introduce WeekPager for single-week
HorizontalPager and BottomCard with drag-to-collapse gesture.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 14:28:05 +08:00
xfy
624fd8905c Add CLAUDE.md with project conventions and architecture docs
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 14:05:55 +08:00
xfy
f3191aeac9 Move WeekdayHeader out of pager to keep it fixed across pages
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:56:15 +08:00
xfy
9424c518f3 Move horizontal padding from MonthHeader to CalendarMonthView outer column
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:52:13 +08:00
xfy
d7f09fb1f7 Add status bars padding and refine month header layout
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:49:01 +08:00
xfy
eb8b16047a Implement swipeable month view with HorizontalPager and assemble app
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:29:18 +08:00
xfy
edf881d1cc Add CalendarMonthPage with 6x7 day grid layout
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:21:38 +08:00
xfy
00a24e58fd Add MonthHeader, WeekdayHeader, and DayCell UI components
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:20:32 +08:00
xfy
298631c8b5 Add CalendarViewModel with ISO week calculation and month grid generation
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:18:49 +08:00
xfy
2c0a63e930 Add kotlinx-datetime dependency for date handling
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 13:11:33 +08:00
xfy
07f6b779c6 Refactor KMP project structure for AGP 9.0 compatibility
Split composeApp into shared (KMP library) and androidApp (Android application)
modules to resolve KMP + AGP 9.0 incompatibility. Remove deprecated gradle
properties and add performance optimization settings.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 11:47:26 +08:00
xfy
758cd9947f Remove foojay plugin and use local JDK for Gradle toolchain
Remove foojay-resolver-convention plugin to avoid downloading JDK from
foojay.io. Simplify gradle-daemon-jvm.properties to only specify
toolchainVersion=21. Upgrade JVM target from 11 to 17 in composeApp.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 10:52:29 +08:00
xfy
f45342f4ea Upgrade AGP to 9.2.1 and Gradle to 9.4.1, add Android build properties
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 10:27:30 +08:00
xfy
3b564cb29a Initial commit: Kotlin Multiplatform project setup
Configure Compose Multiplatform targeting Android and iOS with Gradle build system.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 10:27:30 +08:00