From d694040bf782e0df9c708496d377af0d3fc0e481 Mon Sep 17 00:00:00 2001 From: Arda Samadi Date: Mon, 13 Jul 2026 13:21:17 +0330 Subject: [PATCH] fix(pwa): apply top safe-area inset to page headers (iOS notch) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MyLayout only pads the bottom inset globally; each top bar must add its own top inset. Several inline page headers omitted it, so their content slid under the notch in the iOS standalone PWA (home was fine — its bar has it). Wrap the back-button headers the same way ProfilePagesHeader already does (outer sticky element carries pt-[env(safe-area-inset-top)]; inner relative bar holds the content) so the absolute back arrow stays out of the notch. Fixed: /profile hub, /discounts, /collections, /collection/:id, /sellers, seller store index, and financial transactions. Co-Authored-By: Claude Opus 4.8 --- app/routes/collection.$id.tsx | 42 +++++++++++-------- app/routes/collections.tsx | 14 ++++--- app/routes/discounts.tsx | 14 ++++--- app/routes/profile._index.tsx | 2 +- app/routes/sellers.tsx | 14 ++++--- app/routes/store.$storeId._index.tsx | 2 +- ...oreId.financial-dashboard.transactions.tsx | 42 ++++++++++--------- 7 files changed, 72 insertions(+), 58 deletions(-) diff --git a/app/routes/collection.$id.tsx b/app/routes/collection.$id.tsx index 425dc42..766827c 100644 --- a/app/routes/collection.$id.tsx +++ b/app/routes/collection.$id.tsx @@ -61,12 +61,14 @@ export default function CollectionDetail() { return (
{/* Header */} -
- -

جزئیات کالکشن

+
+
+ +

جزئیات کالکشن

+
{/* Loading Skeleton */} @@ -94,12 +96,14 @@ export default function CollectionDetail() { return (
{/* Header */} -
- -

جزئیات کالکشن

+
+
+ +

جزئیات کالکشن

+
{/* Error State */} @@ -130,12 +134,14 @@ export default function CollectionDetail() { return (
{/* Header (mobile) */} -
- -

جزئیات کالکشن

+
+
+ +

جزئیات کالکشن

+
{/* Content */} diff --git a/app/routes/collections.tsx b/app/routes/collections.tsx index b360846..8c02310 100644 --- a/app/routes/collections.tsx +++ b/app/routes/collections.tsx @@ -118,12 +118,14 @@ export default function Collections() { return (
{/* Header (mobile) */} -
- -

کالکشن‌ها

+
+
+ +

کالکشن‌ها

+
{/* Content */} diff --git a/app/routes/discounts.tsx b/app/routes/discounts.tsx index 937ce59..238f589 100644 --- a/app/routes/discounts.tsx +++ b/app/routes/discounts.tsx @@ -25,12 +25,14 @@ export default function Discounts() { return (
{/* Header (mobile) */} -
- -

تخفیف‌ها

+
+
+ +

تخفیف‌ها

+
{/* Content */} diff --git a/app/routes/profile._index.tsx b/app/routes/profile._index.tsx index bdbe81d..bd6c7ac 100644 --- a/app/routes/profile._index.tsx +++ b/app/routes/profile._index.tsx @@ -199,7 +199,7 @@ export default function Profile() { {/* Mobile: account hub */}
{/* Header: avatar + name + phone + edit */} -
+

diff --git a/app/routes/sellers.tsx b/app/routes/sellers.tsx index 9fdfa6d..05bff25 100644 --- a/app/routes/sellers.tsx +++ b/app/routes/sellers.tsx @@ -62,12 +62,14 @@ export default function Sellers() { return (
{/* Header (mobile) */} -
- -

فروشگاه‌ها

+
+
+ +

فروشگاه‌ها

+
{/* Content */} diff --git a/app/routes/store.$storeId._index.tsx b/app/routes/store.$storeId._index.tsx index 88b7358..db90e94 100644 --- a/app/routes/store.$storeId._index.tsx +++ b/app/routes/store.$storeId._index.tsx @@ -558,7 +558,7 @@ function SellerDetailHeader({ }; return ( -
+
safeGoBack(navigate)} />
diff --git a/app/routes/store.$storeId.financial-dashboard.transactions.tsx b/app/routes/store.$storeId.financial-dashboard.transactions.tsx index 0490c0a..6fbaf66 100644 --- a/app/routes/store.$storeId.financial-dashboard.transactions.tsx +++ b/app/routes/store.$storeId.financial-dashboard.transactions.tsx @@ -136,27 +136,29 @@ export default function Transactions() { return (
{/* Header (keeps the filter button; just constrained on desktop) */} -
- -

لیست تراکنش‌ها

-
{ - filterIconClicked(); - }} - role="button" - tabIndex={0} - onKeyDown={(e) => { - if (e.key === "Enter") { +
+
+ +

لیست تراکنش‌ها

+
{ filterIconClicked(); - } - }} - className="absolute top-4 h-8 w-8 left-5 rounded-full bg-WHITE shadow-xl flex items-center justify-center" - > - filter + }} + role="button" + tabIndex={0} + onKeyDown={(e) => { + if (e.key === "Enter") { + filterIconClicked(); + } + }} + className="absolute top-4 h-8 w-8 left-5 rounded-full bg-WHITE shadow-xl flex items-center justify-center" + > + filter +