From ae1605c82dbf6cfbb6ba76746fae764212dd8dc8 Mon Sep 17 00:00:00 2001 From: FragginWagon Date: Thu, 10 Sep 2026 06:03:48 -0400 Subject: [PATCH] feat: extract review and list workflow step --- .../components/molecules/ReviewListStep.scss | 9 ++++ .../molecules/ReviewListStep.stories.js | 16 ++++++ .../components/molecules/ReviewListStep.vue | 50 +++++++++++++++++++ apps/web/src/pages/AdminHomePage.vue | 45 ++++------------- docs/IMPLEMENTATION-STATUS.md | 2 + 5 files changed, 87 insertions(+), 35 deletions(-) create mode 100644 apps/web/src/components/molecules/ReviewListStep.scss create mode 100644 apps/web/src/components/molecules/ReviewListStep.stories.js create mode 100644 apps/web/src/components/molecules/ReviewListStep.vue diff --git a/apps/web/src/components/molecules/ReviewListStep.scss b/apps/web/src/components/molecules/ReviewListStep.scss new file mode 100644 index 0000000..cd51093 --- /dev/null +++ b/apps/web/src/components/molecules/ReviewListStep.scss @@ -0,0 +1,9 @@ +.review-list-step { + align-content: start; +} + +.review-list-step__intro { + margin: var(--space-2) 0 0; + color: var(--color-text-muted); + font-size: var(--text-sm); +} diff --git a/apps/web/src/components/molecules/ReviewListStep.stories.js b/apps/web/src/components/molecules/ReviewListStep.stories.js new file mode 100644 index 0000000..e643359 --- /dev/null +++ b/apps/web/src/components/molecules/ReviewListStep.stories.js @@ -0,0 +1,16 @@ +import ReviewListStep from './ReviewListStep.vue'; + +export default { title: 'Molecules/ReviewListStep', component: ReviewListStep }; + +const inventory = [ + { id: 'copy-1', status: 'ACTIVE' }, + { id: 'copy-2', status: 'ARCHIVED' }, +]; + +export const Ready = { + args: { inventoryItemId: 'copy-1', askingPrice: '2499', inventory, isSaving: false }, +}; + +export const Empty = { + args: { inventoryItemId: '', askingPrice: '', inventory, isSaving: false }, +}; diff --git a/apps/web/src/components/molecules/ReviewListStep.vue b/apps/web/src/components/molecules/ReviewListStep.vue new file mode 100644 index 0000000..1a718aa --- /dev/null +++ b/apps/web/src/components/molecules/ReviewListStep.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/apps/web/src/pages/AdminHomePage.vue b/apps/web/src/pages/AdminHomePage.vue index e784884..ea3f369 100644 --- a/apps/web/src/pages/AdminHomePage.vue +++ b/apps/web/src/pages/AdminHomePage.vue @@ -9,6 +9,7 @@ import ProviderMappingStep from "@/components/molecules/ProviderMappingStep.vue" import InventoryCopyStep from "@/components/molecules/InventoryCopyStep.vue"; import InventoryImagesStep from "@/components/molecules/InventoryImagesStep.vue"; import PricingReviewStep from "@/components/molecules/PricingReviewStep.vue"; +import ReviewListStep from "@/components/molecules/ReviewListStep.vue"; import { createAdminInventory, createAdminProduct, @@ -714,41 +715,15 @@ onMounted(load); @update:condition-id="conditionId = $event" @submit="createInventory" /> -
-

Create listing draft

- - - - - -
+

Record sale

diff --git a/docs/IMPLEMENTATION-STATUS.md b/docs/IMPLEMENTATION-STATUS.md index c3ada73..3ccfbd6 100644 --- a/docs/IMPLEMENTATION-STATUS.md +++ b/docs/IMPLEMENTATION-STATUS.md @@ -172,6 +172,8 @@ Remaining roadmap areas are approved external provider credentials/adapters, bro - Physical inventory creation is now an extracted `InventoryCopyStep` molecule with Product and condition selection states, while preserving the existing seller-scoped create-copy API workflow. - Image management is now surfaced as an extracted `InventoryImagesStep` molecule with missing-image status and direct links to the existing upload/processing manager route. - Pricing is now an extracted `PricingReviewStep` molecule covering observations, provider refresh, and reasoned manual overrides while preserving existing pricing API behavior. +- Review and listing is now an extracted `ReviewListStep` molecule covering physical-copy selection and asking-price confirmation while preserving existing draft creation and publication lifecycle behavior. +- The guided inventory workflow now has extracted Product, Source Mapping, Physical Copy, Images, Pricing, and Review/List frontend stages, each with colocated Storybook coverage. - Public catalog sorting now supports latest manual/calculated market value low-to-high and high-to-low, with null values placed last. - Public catalog filters now collapse behind an accessible mobile disclosure, show an active-filter count, and provide a reset action while preserving URL synchronization.