From 3a29aca0dbc834cfb1a6300d397ba07b237d4f3e Mon Sep 17 00:00:00 2001 From: richarjiang Date: Thu, 2 Apr 2026 14:35:17 +0800 Subject: [PATCH] feat(app): implement home, booking, and profile pages Home: brand banner, studio info swiper, smart quick entries based on membership status, upcoming bookings, card shop horizontal scroll Booking: 7-day date selector, time period filter, slot cards with status, booking confirm popup with membership picker Profile: user card with login, training stats, menu with admin entry 8 reusable components: BrandBanner, StudioInfo, QuickEntry, UpcomingBooking, CardShop, DateSelector, SlotCard, BookingConfirmPopup, TimePeriodFilter, UserCard, TrainingStats, ProfileMenu --- .../src/components/BookingConfirmPopup.vue | 429 ++++++++++++ packages/app/src/components/BrandBanner.vue | 118 ++++ packages/app/src/components/CardShop.vue | 320 +++++++++ packages/app/src/components/DateSelector.vue | 126 ++++ packages/app/src/components/ProfileMenu.vue | 163 +++++ packages/app/src/components/QuickEntry.vue | 318 +++++++++ packages/app/src/components/SlotCard.vue | 228 +++++++ packages/app/src/components/StudioInfo.vue | 203 ++++++ .../app/src/components/TimePeriodFilter.vue | 92 +++ packages/app/src/components/TrainingStats.vue | 84 +++ .../app/src/components/UpcomingBooking.vue | 229 +++++++ packages/app/src/components/UserCard.vue | 176 +++++ packages/app/src/pages/admin/card-types.vue | 628 +++++++++++++++++- packages/app/src/pages/admin/index.vue | 232 ++++++- packages/app/src/pages/admin/members.vue | 347 +++++++++- packages/app/src/pages/admin/orders.vue | 342 +++++++++- packages/app/src/pages/admin/slot-adjust.vue | 505 +++++++++++++- packages/app/src/pages/admin/studio.vue | 410 +++++++++++- .../app/src/pages/admin/week-template.vue | 617 ++++++++++++++++- packages/app/src/pages/booking/index.vue | 299 ++++++++- packages/app/src/pages/card/detail.vue | 556 +++++++++++++++- packages/app/src/pages/home/index.vue | 103 ++- packages/app/src/pages/profile/bookings.vue | 438 +++++++++++- packages/app/src/pages/profile/index.vue | 102 ++- packages/app/src/pages/profile/info.vue | 343 +++++++++- packages/app/src/pages/profile/membership.vue | 432 +++++++++++- 26 files changed, 7766 insertions(+), 74 deletions(-) create mode 100644 packages/app/src/components/BookingConfirmPopup.vue create mode 100644 packages/app/src/components/BrandBanner.vue create mode 100644 packages/app/src/components/CardShop.vue create mode 100644 packages/app/src/components/DateSelector.vue create mode 100644 packages/app/src/components/ProfileMenu.vue create mode 100644 packages/app/src/components/QuickEntry.vue create mode 100644 packages/app/src/components/SlotCard.vue create mode 100644 packages/app/src/components/StudioInfo.vue create mode 100644 packages/app/src/components/TimePeriodFilter.vue create mode 100644 packages/app/src/components/TrainingStats.vue create mode 100644 packages/app/src/components/UpcomingBooking.vue create mode 100644 packages/app/src/components/UserCard.vue diff --git a/packages/app/src/components/BookingConfirmPopup.vue b/packages/app/src/components/BookingConfirmPopup.vue new file mode 100644 index 0000000..24cc2a6 --- /dev/null +++ b/packages/app/src/components/BookingConfirmPopup.vue @@ -0,0 +1,429 @@ + + + + + diff --git a/packages/app/src/components/BrandBanner.vue b/packages/app/src/components/BrandBanner.vue new file mode 100644 index 0000000..2bee51e --- /dev/null +++ b/packages/app/src/components/BrandBanner.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/packages/app/src/components/CardShop.vue b/packages/app/src/components/CardShop.vue new file mode 100644 index 0000000..773856f --- /dev/null +++ b/packages/app/src/components/CardShop.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/packages/app/src/components/DateSelector.vue b/packages/app/src/components/DateSelector.vue new file mode 100644 index 0000000..c12b0ee --- /dev/null +++ b/packages/app/src/components/DateSelector.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/packages/app/src/components/ProfileMenu.vue b/packages/app/src/components/ProfileMenu.vue new file mode 100644 index 0000000..9e596b0 --- /dev/null +++ b/packages/app/src/components/ProfileMenu.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/packages/app/src/components/QuickEntry.vue b/packages/app/src/components/QuickEntry.vue new file mode 100644 index 0000000..1e8c052 --- /dev/null +++ b/packages/app/src/components/QuickEntry.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/packages/app/src/components/SlotCard.vue b/packages/app/src/components/SlotCard.vue new file mode 100644 index 0000000..34b80dd --- /dev/null +++ b/packages/app/src/components/SlotCard.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/packages/app/src/components/StudioInfo.vue b/packages/app/src/components/StudioInfo.vue new file mode 100644 index 0000000..36417b2 --- /dev/null +++ b/packages/app/src/components/StudioInfo.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/packages/app/src/components/TimePeriodFilter.vue b/packages/app/src/components/TimePeriodFilter.vue new file mode 100644 index 0000000..0f7eb9c --- /dev/null +++ b/packages/app/src/components/TimePeriodFilter.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/packages/app/src/components/TrainingStats.vue b/packages/app/src/components/TrainingStats.vue new file mode 100644 index 0000000..1a4c728 --- /dev/null +++ b/packages/app/src/components/TrainingStats.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/packages/app/src/components/UpcomingBooking.vue b/packages/app/src/components/UpcomingBooking.vue new file mode 100644 index 0000000..20789ea --- /dev/null +++ b/packages/app/src/components/UpcomingBooking.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/packages/app/src/components/UserCard.vue b/packages/app/src/components/UserCard.vue new file mode 100644 index 0000000..01c88c6 --- /dev/null +++ b/packages/app/src/components/UserCard.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/packages/app/src/pages/admin/card-types.vue b/packages/app/src/pages/admin/card-types.vue index 670b80d..b0b3b6b 100644 --- a/packages/app/src/pages/admin/card-types.vue +++ b/packages/app/src/pages/admin/card-types.vue @@ -1,15 +1,635 @@