Vitron-Front/app/components
fazli 225161249e feat(chat+push): image attachments, day-labeled inbox with reply state, sub self-heal
- MessageInput: paperclip button (team-only, controlled by teamUserIds
  from ThreadDetail) uploads through the media service and hands the URL
  to the WebSocket; Enter now inserts a newline — sending is button-only
  since accidental Enter-sends were noisy for staff replies.
- MessageBubble: renders image messages inline (tap to open), shows the
  coworker's username at the top of team-side bubbles so staff can tell
  who typed what.
- MessageList / ThreadChatPage: any message from a store team member
  (owner or active staff) renders on the "our" side of the bubble even
  for a viewer who isn't the sender, using team_user_ids from
  ThreadDetail. Delete option stays gated to the actual sender.
- ThreadsPage: inbox now shows smart-relative timestamps
  (today HH:MM / دیروز HH:MM / N روز پیش / Persian date), plus a
  reply-state icon per row (red bell = customer waiting, blue double-check
  = you replied and they've seen it, nothing = you replied not yet seen).
  Image-only last messages preview as "📷 تصویر".
- Push notifications: on mount we re-POST the current PushSubscription so
  a browser-rotated sub or a backend row deleted after a 410 auto-heals.
- useWebSocket: SendMessagePayload and NewMessageEvent carry image_url so
  the server relay can round-trip images.
- API types: MessageList.imageUrl, LastMessage.imageUrl,
  ThreadList.lastMessageFromTeam/otherPartySeenLast, ThreadDetail.teamUserIds.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-19 13:22:44 +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 feat(product-detail): ProductDescription section + strict discount guard + category types 2026-07-18 13:19:27 +00:00
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+push): image attachments, day-labeled inbox with reply state, sub self-heal 2026-07-19 13:22:44 +00:00
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