Lychee icon indicating copy to clipboard operation
Lychee copied to clipboard

Add frontend (without translations)

Open ildyria opened this issue 1 month ago • 2 comments

Summary by CodeRabbit

  • New Features

    • Shopping cart, basket and purchasable albums/photos with flexible pricing
    • Multi-step checkout (online/offline) with Mollie and card support, order list/download, and order actions
    • Checkout UI: payment forms, order summary, disclaimers and guest/consent flows
    • Admin maintenance tools for cleaning/fulfilling old orders
  • Chores

    • Added Mollie and Stripe client dependencies for payment integrations

✏️ Tip: You can customize this high-level summary in your review settings.

ildyria avatar Nov 26 '25 21:11 ildyria

📝 Walkthrough

Walkthrough

Adds a webshop subsystem: new frontend views, components, Pinia stores, composables, and services for catalog/order/checkout and purchasable items; introduces payment integrations (Mollie/Stripe deps), maintenance endpoints, routing, type/ext constants, and many presentational Tailwind-like class adjustments across the UI.

Changes

Cohort / File(s) Summary
Package & deps
package.json
Added @mollie/api-client and @stripe/stripe-js to dependencies.
Webshop views & routes
resources/js/views/webshop/*, resources/views/components/webshop.blade.php, resources/views/vueapp.blade.php, resources/js/router/routes.ts
New webshop pages (BasketList, CheckoutPage, OrderList, OrderDownload, PurchasablesList), blade updates to include webshop component and conditional external scripts, and new routes (/purchasables, /basket, /checkout/:step?, /orders, /order/:orderId?/:transactionId?).
Webshop UI components
resources/js/components/webshop/*, resources/js/components/forms/gallery-dialogs/BuyMeDialog.vue, resources/js/components/webshop/QrCodeLink.vue, resources/js/components/webshop/ThankYou.vue
Added multiple webshop UI components: Disclaimer, InfoSection, OrderDate, OrderLegend, OrderListAction, OrderStatus, OrderSummary, PaymentForm, PaymentInProgress, TransactionIdLink, UsernameEmail, QrCodeLink, ThankYou, and BuyMe dialog.
Payment & card widgets
resources/js/components/forms/card/*, resources/js/components/forms/basic/InputCurrency.vue
New Card preview, CardForm, cardTypes, images asset module, and InputCurrency component for currency input and card entry handling.
Checkout composables
resources/js/composables/checkout/*
New composables: useMollie, useOrder, useStepOne, useStepTwo, useStepOffline, useSteps to orchestrate checkout and payment flows.
Buy flow composable
resources/js/composables/album/buyMeActions.ts
New useBuyMeActions composable managing buy dialog state, price selection, and add-to-order flows.
Services
resources/js/services/webshop-service.ts, resources/js/services/shop-management-service.ts, resources/js/services/maintenance-service.ts
New WebshopService (Catalog/Order/Checkout), ShopManagementService (purchasable CRUD and types), and added maintenance methods (oldOrdersCheck/Do, fulfillOrdersCheck/Do).
Pinia stores
resources/js/stores/OrderManagement.ts, resources/js/stores/CatalogState.ts, resources/js/stores/ShopManagement.ts, updates to resources/js/stores/LycheeState.ts, resources/js/stores/UsersAndGroupsState.ts
Added order/catalog/shop-management stores, type aliases, and converted some load() actions to async.
Album/photo purchasable integration
resources/js/components/forms/album/AlbumPurchasable.vue, resources/js/components/forms/shop-management/PricesInput.vue, resources/js/components/gallery/albumModule/*, resources/js/components/gallery/albumModule/thumbs/*, resources/js/components/drawers/AlbumEdit.vue
New admin UI for purchasables, prices input component, thumbnail buy button (ThumbBuyMe), buy-flow wiring across PhotoThumb/PhotoThumbPanel/AlbumPanel, and AlbumEdit purchasable tab.
Gallery/header/menu/routing
resources/js/components/headers/*, resources/js/composables/contextMenus/leftMenu.ts, resources/js/views/gallery-panels/*, resources/js/menus/LeftMenu.vue
Basket UI in headers, left menu orders/purchasables entries, event propagation for buy actions, added store usage in gallery views, and adjusted menu class utilities.
Type defs & constants
resources/js/lychee.d.ts, resources/js/config/constants.ts, resources/js/style/preset.ts
Extended types for shop/order/embed, added CheckoutSteps and currencyOptions with builder, and theme/preset updates (stepper/datatable hover styling). Note: duplicate currencyOptions/builders observed.
Maintenance UI
resources/js/components/maintenance/*, resources/js/views/Maintenance.vue
Added MaintenanceOldOrders and MaintenanceFulfillOrders components, integrated new maintenance service methods into the Maintenance view.
Styling utility mass edits
many resources/js/components/**, resources/js/views/*
Wide set of presentational class adjustments (e.g., bg-gradient-to-bbg-linear-to-b, flex-growgrow, border-1border, spacing/token conversions) across numerous components.
Small UI tweaks & cleanups
assorted files (Fieldset.vue, PhotoDetails.vue, AlbumProperties.vue, AlbumVisibility.vue, etc.)
Minor template/class tweaks and small refactors (removed unused import, adjusted min-width utilities, minor class name fixes).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60–90 minutes

Areas to focus review on:

  • Checkout orchestration: useStepOne/useStepTwo/useMollie and Mollie mount/unmount lifecycle and token/session flows.
  • Payment handling and security: CardForm formatting/validation, InputCurrency conversions, and how card data/tokenization paths are used.
  • API surface and typings: WebshopService and ShopManagementService signatures vs backend contract and new lychee.d.ts additions (orders, checkout fields).
  • Pinia stores: concurrency guards, load()/refresh() logic, and interaction between OrderManagement, CatalogState, and ShopManagement.
  • buyMeActions and buy flow wiring: price filtering, auto-add vs dialog, event propagation across PhotoThumbPanel/PhotoThumb/PhotoThumbPanelList.
  • Large-scale styling replacements: verify gradient, spacing and grow/shrink utility changes for regressions.
  • Duplicate declarations: currencyOptions/buildCurrencySelection appear duplicated in constants.ts — check for accidental dupes.

Poem

🐇
I hopped from thumb to checkout lane,
With carrot coins and gentle mane.
A tiny cart, a little cheer,
I nudged "buy" — the sale was near.
The rabbit dances — webshop's here!

Pre-merge checks

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.51% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Nov 26 '25 21:11 coderabbitai[bot]

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 90.27%. Comparing base (aea38d1) to head (d11f742).

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Nov 28 '25 21:11 codecov[bot]