Vitron-Front/app/components
fazli 83b93fe523 feat(seller-editor): 9x9 color grid, mandatory size, two-step category, robust image + discount save
- app/components/store/ColorSelector.tsx: renders as a 9-column grid sorted
  by info.sortOrder. Compact aspect-square swatches; Persian name lives in
  title/aria-label so 81 swatches breathe on mobile. Checkmark ink flips by
  swatch luminance so it stays visible on both سفید and مشکی.
- app/components/store/SizeSelector.tsx + ProductVariantDrawer.tsx: dropped
  the "بدون مشخص کردن سایز" toggle now that "FreeSize" exists in the
  palette. Every product must pick a size (or FreeSize) on save.
- app/routes/store.add.manual.$storeId.tsx:
    - two-step category picker (parent → sub) driven by category.parentId,
      with edit-mode pre-fill deriving the parent from the sub's parentId.
    - getFinalImageUrls now uploads in parallel with concurrency 3, retries
      each image once, persists successful uploads to state as they land so
      a resubmit only retries the still-failing ones. If every upload fails
      we refuse to submit rather than sending an empty gallery.
    - only ship discountPrice when it's a REAL discount (finalNum > 0 and
      < priceNum) — otherwise pass null so the backend clears any stale
      value. Closes the "phantom discount" hole where PricingForm's
      "no discount" radio still shipped the previous typed number.
    - isStep1Valid requires every variant to have a real (non-"unselected")
      size, matching the new mandatory-size rule.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-18 13:19:13 +00:00
..
cart feat(cart): mockup-style item rows + separate-shipping note 2026-06-27 23:16:42 +03:30
desktop feat(desktop-header): surface "ورود به فروشگاه من" CTA for sellers and staff 2026-07-07 10:57:14 +00:00
explore feat(search/explore): home-style product tiles with seller brand chip 2026-06-27 17:09:58 +03:30
home fix(notif+auth): camelCase badge fields, seller push prompt, only 401 signs out 2026-07-18 13:18:08 +00:00
notifications feat(notifications): web push opt-in + unread nav badges 2026-06-17 14:02:56 +03:30
product fix(pwa): top safe-area inset on products page + owner product carousel 2026-07-13 15:16:28 +03:30
seller fix(seller): make inline price editor obviously tappable on touch 2026-07-09 12:51:36 +03:30
sets first 2026-04-29 01:44:16 +03:30
store feat(seller-editor): 9x9 color grid, mandatory size, two-step category, robust image + discount save 2026-07-18 13:19:13 +00:00
thread feat(chat): share the product into the chat + fix empty-thread preview 2026-07-13 15:09:01 +03:30
ui first 2026-04-29 01:44:16 +03:30
AIPromoteModal.tsx first 2026-04-29 01:44:16 +03:30
AppInput.tsx first 2026-04-29 01:44:16 +03:30
AppSelectBox.tsx first 2026-04-29 01:44:16 +03:30
AppTextArea.tsx first 2026-04-29 01:44:16 +03:30
BankLogo.tsx first 2026-04-29 01:44:16 +03:30
CallDialog.tsx first 2026-04-29 01:44:16 +03:30
ClientOnly.tsx first 2026-04-29 01:44:16 +03:30
FilterDrawer.tsx first 2026-04-29 01:44:16 +03:30
HeaderWithSupport.tsx fix(desktop): lay out dashboard sub-pages + form pages for wide screens 2026-07-09 12:06:13 +03:30
HorizontalCollectionsList.tsx Desktop polish: seller header contrast, collection image crop, infinite scroll 2026-06-14 22:19:40 +03:30
HorizontalProductList.tsx feat(home): seller brand chip (logo + name) on product tiles 2026-06-27 16:38:44 +03:30
InteractiveMap.tsx feat(address-map): click-to-select + "use my current location" 2026-06-28 16:43:55 +03:30
LoginRequiredDialog.tsx fix(auth): 6-digit OTP in LoginRequiredDialog 2026-06-18 17:53:01 +03:30
MondrianProductList.tsx feat(home): seller brand chip (logo + name) on product tiles 2026-06-27 16:38:44 +03:30
MyLayout.tsx fix(notif+auth): camelCase badge fields, seller push prompt, only 401 signs out 2026-07-18 13:18:08 +00:00
PersianDatePicker.tsx first 2026-04-29 01:44:16 +03:30
ProfilePagesHeader.tsx fix(ios): respect safe-area insets so chrome clears the notch/home bar 2026-06-18 13:42:51 +03:30
SearchTopBar.tsx fix(ios): respect safe-area insets so chrome clears the notch/home bar 2026-06-18 13:42:51 +03:30
SellerChip.tsx feat(home): seller brand chip (logo + name) on product tiles 2026-06-27 16:38:44 +03:30
SellerLogo.tsx first 2026-04-29 01:44:16 +03:30
SellerTilesGrid.tsx feat(seller-tiles): remove seller name overlay on desktop grid 2026-07-01 09:15:42 +00:00
SunMoonToggle.tsx first 2026-04-29 01:44:16 +03:30
ThemeToggle.css first 2026-04-29 01:44:16 +03:30
ThemeToggle.tsx first 2026-04-29 01:44:16 +03:30
UiProvider.tsx first 2026-04-29 01:44:16 +03:30