Vitron-Front/app/components
Arda Samadi fef53fd003 feat(notifications): web push opt-in + unread nav badges
Surfaces three events without a full notification center:
- service worker (public/sw.js) gains push + notificationclick handlers
  (RTL, focuses an existing tab or opens the target URL).
- usePushNotifications hook: permission + VAPID subscribe/unsubscribe
  against the backend push endpoints.
- opt-in UI both ways: a one-time dismissible post-login banner
  (PushPermissionBanner, rendered in MyLayout) and a permanent toggle
  (PushSettingToggle) on buyer profile settings and seller store settings.
- useBadgeCounts polls /api/notif/v1/badges/; small red badges on the
  bottom-nav profile icon (chat + order updates), the profile sidebar
  (پیام‌ها / سفارش‌ها) and the seller dashboard sidebar. Visiting orders
  clears its badge.

Degrades gracefully: if the backend endpoints are absent the counts fall
back to zero and nothing throws.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 14:02:56 +03:30
..
cart Desktop: cart checkout two-column + profile account grid 2026-06-16 11:19:55 +03:30
desktop Desktop: sticky-footer layout (remove gray gap above + empty area below footer) 2026-06-16 14:46:39 +03:30
explore Desktop: explore page (category grid + contained layout) 2026-06-16 11:11:46 +03:30
home first 2026-04-29 01:44:16 +03:30
notifications feat(notifications): web push opt-in + unread nav badges 2026-06-17 14:02:56 +03:30
product Desktop: seller dashboard shell + gate carousel arrows to product gallery 2026-06-17 12:28:59 +03:30
sets first 2026-04-29 01:44:16 +03:30
store first 2026-04-29 01:44:16 +03:30
thread first 2026-04-29 01:44:16 +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 first 2026-04-29 01:44:16 +03:30
HorizontalCollectionsList.tsx Desktop polish: seller header contrast, collection image crop, infinite scroll 2026-06-14 22:19:40 +03:30
HorizontalProductList.tsx first 2026-04-29 01:44:16 +03:30
InteractiveMap.tsx first 2026-04-29 01:44:16 +03:30
LoginRequiredDialog.tsx first 2026-04-29 01:44:16 +03:30
MondrianProductList.tsx Desktop fixes: product seller + actions, collection cover, masonry skeleton 2026-06-14 22:59:24 +03:30
MyLayout.tsx feat(notifications): web push opt-in + unread nav badges 2026-06-17 14:02:56 +03:30
PersianDatePicker.tsx first 2026-04-29 01:44:16 +03:30
ProfilePagesHeader.tsx Desktop: account area (shared sidebar) + brands list 2026-06-16 12:46:22 +03:30
SearchTopBar.tsx first 2026-04-29 01:44:16 +03:30
SellerLogo.tsx first 2026-04-29 01:44:16 +03:30
SellerTilesGrid.tsx Add responsive desktop layout for home page 2026-06-14 20:07:47 +03:30
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