@salla.sa/twilight-theme-engine 1.0.87 → 1.0.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AddToCartForm-P644O2QL.js → AddToCartForm-YY7DDANL.js} +3 -3
- package/dist/{AddToCartForm-P644O2QL.js.map → AddToCartForm-YY7DDANL.js.map} +1 -1
- package/dist/{BlogAuthorPage-VWSO6MPY.js → BlogAuthorPage-4IXOEQA4.js} +7 -7
- package/dist/{BlogAuthorPage-VWSO6MPY.js.map → BlogAuthorPage-4IXOEQA4.js.map} +1 -1
- package/dist/{BlogCategoryPage-K2KSQ6T6.js → BlogCategoryPage-NYB7EMKQ.js} +7 -7
- package/dist/{BlogCategoryPage-K2KSQ6T6.js.map → BlogCategoryPage-NYB7EMKQ.js.map} +1 -1
- package/dist/{BlogPage-XRM7VWOZ.js → BlogPage-B2A47OBZ.js} +6 -6
- package/dist/{BlogPage-XRM7VWOZ.js.map → BlogPage-B2A47OBZ.js.map} +1 -1
- package/dist/{BlogSinglePage-XIAXT54H.js → BlogSinglePage-ZSOHP2GJ.js} +6 -6
- package/dist/{BlogSinglePage-XIAXT54H.js.map → BlogSinglePage-ZSOHP2GJ.js.map} +1 -1
- package/dist/{BlogTagPage-IHOA267V.js → BlogTagPage-24MZSPCO.js} +7 -7
- package/dist/{BlogTagPage-IHOA267V.js.map → BlogTagPage-24MZSPCO.js.map} +1 -1
- package/dist/{BrandsPage-ZFEILRT3.js → BrandsPage-WJUCPMKH.js} +6 -6
- package/dist/{BrandsPage-ZFEILRT3.js.map → BrandsPage-WJUCPMKH.js.map} +1 -1
- package/dist/{Breadcrumb-CVSISL2K.js → Breadcrumb-TMUSQ2XY.js} +6 -6
- package/dist/{Breadcrumb-CVSISL2K.js.map → Breadcrumb-TMUSQ2XY.js.map} +1 -1
- package/dist/{CartItem-EOI7P3JA.js → CartItem-QH6X7576.js} +6 -6
- package/dist/{CartItem-EOI7P3JA.js.map → CartItem-QH6X7576.js.map} +1 -1
- package/dist/{CartSummary-RZGUBDKJ.js → CartSummary-MERS5R3X.js} +6 -6
- package/dist/{CartSummary-RZGUBDKJ.js.map → CartSummary-MERS5R3X.js.map} +1 -1
- package/dist/{Copyright-5BLYSP24.js → Copyright-JPOX7PLQ.js} +3 -3
- package/dist/{Copyright-5BLYSP24.js.map → Copyright-JPOX7PLQ.js.map} +1 -1
- package/dist/{CustomerLayout-6F4BJAMU.js → CustomerLayout-ER5SZO7U.js} +6 -6
- package/dist/{CustomerLayout-6F4BJAMU.js.map → CustomerLayout-ER5SZO7U.js.map} +1 -1
- package/dist/{Footer-NF2NLDLR.js → Footer-7O5CQ72M.js} +4 -4
- package/dist/{Footer-NF2NLDLR.js.map → Footer-7O5CQ72M.js.map} +1 -1
- package/dist/{Header-6DQJ5X7J.js → Header-CH56KO3D.js} +4 -4
- package/dist/{Header-6DQJ5X7J.js.map → Header-CH56KO3D.js.map} +1 -1
- package/dist/{LoyaltyPage-YHWHIWCS.js → LoyaltyPage-S74ZELSW.js} +6 -6
- package/dist/{LoyaltyPage-YHWHIWCS.js.map → LoyaltyPage-S74ZELSW.js.map} +1 -1
- package/dist/{LoyaltyPointsPage-T6K3H5A5.js → LoyaltyPointsPage-TCKZTXSB.js} +3 -3
- package/dist/{LoyaltyPointsPage-T6K3H5A5.js.map → LoyaltyPointsPage-TCKZTXSB.js.map} +1 -1
- package/dist/{MainMenu-Y2TAM7DK.js → MainMenu-3WDXPG2J.js} +3 -3
- package/dist/{MainMenu-Y2TAM7DK.js.map → MainMenu-3WDXPG2J.js.map} +1 -1
- package/dist/{MasterLayout-GBEEFFPG.js → MasterLayout-EC6LIXFB.js} +6 -6
- package/dist/{MasterLayout-GBEEFFPG.js.map → MasterLayout-EC6LIXFB.js.map} +1 -1
- package/dist/{MobileMenu-RE5XVGZL.js → MobileMenu-VIMGPLKV.js} +6 -6
- package/dist/{MobileMenu-RE5XVGZL.js.map → MobileMenu-VIMGPLKV.js.map} +1 -1
- package/dist/{NotificationsPage-QAFWZAS3.js → NotificationsPage-HYID6XAA.js} +6 -6
- package/dist/{NotificationsPage-QAFWZAS3.js.map → NotificationsPage-HYID6XAA.js.map} +1 -1
- package/dist/{OrderSinglePage-T4PRXTKG.js → OrderSinglePage-5GMYPKA6.js} +6 -6
- package/dist/{OrderSinglePage-T4PRXTKG.js.map → OrderSinglePage-5GMYPKA6.js.map} +1 -1
- package/dist/{OrdersPage-3S6ZS56E.js → OrdersPage-SKTTDOJ6.js} +6 -6
- package/dist/{OrdersPage-3S6ZS56E.js.map → OrdersPage-SKTTDOJ6.js.map} +1 -1
- package/dist/{PageSingle-W3UTXDOW.js → PageSingle-RNWFQQEM.js} +3 -3
- package/dist/{PageSingle-W3UTXDOW.js.map → PageSingle-RNWFQQEM.js.map} +1 -1
- package/dist/{ProductDetails-X5A7TG3F.js → ProductDetails-OYPJ6MW7.js} +3 -3
- package/dist/{ProductDetails-X5A7TG3F.js.map → ProductDetails-OYPJ6MW7.js.map} +1 -1
- package/dist/{ProfilePage-DUH3AILJ.js → ProfilePage-BQE63RHK.js} +6 -6
- package/dist/{ProfilePage-DUH3AILJ.js.map → ProfilePage-BQE63RHK.js.map} +1 -1
- package/dist/{ReviewsPage-2C2P7VS3.js → ReviewsPage-VEYN7BSR.js} +3 -3
- package/dist/{ReviewsPage-2C2P7VS3.js.map → ReviewsPage-VEYN7BSR.js.map} +1 -1
- package/dist/{SeoCartWidget-VYLGEW2I.js → SeoCartWidget-3BVMA4WY.js} +6 -6
- package/dist/{SeoCartWidget-VYLGEW2I.js.map → SeoCartWidget-3BVMA4WY.js.map} +1 -1
- package/dist/{SettingsPage-OZJEW6CW.js → SettingsPage-QLKKYVGH.js} +6 -6
- package/dist/{SettingsPage-OZJEW6CW.js.map → SettingsPage-QLKKYVGH.js.map} +1 -1
- package/dist/{StoreClosedNotification-QHIZBNXO.js → StoreClosedNotification-LQXGW2SB.js} +7 -7
- package/dist/{StoreClosedNotification-QHIZBNXO.js.map → StoreClosedNotification-LQXGW2SB.js.map} +1 -1
- package/dist/{TestimonialsPage-K6WJKKME.js → TestimonialsPage-OKDDAMJL.js} +3 -3
- package/dist/{TestimonialsPage-K6WJKKME.js.map → TestimonialsPage-OKDDAMJL.js.map} +1 -1
- package/dist/{ThankYouPage-H6QQEI5R.js → ThankYouPage-YWLG6UF7.js} +6 -6
- package/dist/{ThankYouPage-H6QQEI5R.js.map → ThankYouPage-YWLG6UF7.js.map} +1 -1
- package/dist/{WalletPage-G5IBGN6B.js → WalletPage-UEYRVSWR.js} +6 -6
- package/dist/{WalletPage-G5IBGN6B.js.map → WalletPage-UEYRVSWR.js.map} +1 -1
- package/dist/{WishlistPage-AIOTAB6L.js → WishlistPage-7257GI3Y.js} +6 -6
- package/dist/{WishlistPage-AIOTAB6L.js.map → WishlistPage-7257GI3Y.js.map} +1 -1
- package/dist/{chunk-BCJTF3V7.js → chunk-6VOF5SB4.js} +3 -3
- package/dist/{chunk-BCJTF3V7.js.map → chunk-6VOF5SB4.js.map} +1 -1
- package/dist/{chunk-N3BCZIGS.js → chunk-7JVKUFFT.js} +4 -4
- package/dist/{chunk-N3BCZIGS.js.map → chunk-7JVKUFFT.js.map} +1 -1
- package/dist/{chunk-PCURRKIH.js → chunk-7PQPQEDN.js} +3 -3
- package/dist/{chunk-PCURRKIH.js.map → chunk-7PQPQEDN.js.map} +1 -1
- package/dist/{chunk-FYHF62KI.js → chunk-A64SSH6M.js} +4 -4
- package/dist/{chunk-FYHF62KI.js.map → chunk-A64SSH6M.js.map} +1 -1
- package/dist/chunk-AUC6QMF7.js +14 -0
- package/dist/{chunk-LWPKBVIE.js.map → chunk-AUC6QMF7.js.map} +1 -1
- package/dist/{chunk-PU2LHFDQ.js → chunk-CTCVO7YU.js} +7 -7
- package/dist/{chunk-PU2LHFDQ.js.map → chunk-CTCVO7YU.js.map} +1 -1
- package/dist/{chunk-GJ5IMPNY.js → chunk-H42Z4YFB.js} +7 -7
- package/dist/{chunk-GJ5IMPNY.js.map → chunk-H42Z4YFB.js.map} +1 -1
- package/dist/{chunk-UQIVX4YA.js → chunk-NB7KGKLY.js} +3 -3
- package/dist/{chunk-UQIVX4YA.js.map → chunk-NB7KGKLY.js.map} +1 -1
- package/dist/{chunk-EZHXVHXY.js → chunk-NNNTEVFU.js} +4 -4
- package/dist/{chunk-EZHXVHXY.js.map → chunk-NNNTEVFU.js.map} +1 -1
- package/dist/{chunk-NXQZ4RLM.js → chunk-PKXEZRSJ.js} +5 -5
- package/dist/{chunk-NXQZ4RLM.js.map → chunk-PKXEZRSJ.js.map} +1 -1
- package/dist/{chunk-FWYKOQV5.js → chunk-SYVIMWYW.js} +17 -20
- package/dist/chunk-SYVIMWYW.js.map +1 -0
- package/dist/{chunk-XKNXYQ2K.js → chunk-UKLZQK2J.js} +6 -6
- package/dist/{chunk-XKNXYQ2K.js.map → chunk-UKLZQK2J.js.map} +1 -1
- package/dist/{chunk-XO7B3VWS.js → chunk-V5OF7CV4.js} +3 -3
- package/dist/{chunk-XO7B3VWS.js.map → chunk-V5OF7CV4.js.map} +1 -1
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/drawer/index.js +4 -4
- package/dist/components/home/index.js +6 -6
- package/dist/components/layout/Footer.d.ts.map +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/product/index.js +5 -5
- package/dist/components/store/index.js +6 -6
- package/dist/{document-class-FRL7JHWD.js → document-class-WMKWZN7O.js} +3 -3
- package/dist/{document-class-FRL7JHWD.js.map → document-class-WMKWZN7O.js.map} +1 -1
- package/dist/hooks/index.js +4 -4
- package/dist/hooks/useGtm.js +4 -4
- package/dist/hooks/useMoney.js +4 -4
- package/dist/hooks/useStore.js +4 -4
- package/dist/index.js +4 -4
- package/dist/{not-found-E6AR4CZ4.js → not-found-NAXLRGC2.js} +6 -6
- package/dist/{not-found-E6AR4CZ4.js.map → not-found-NAXLRGC2.js.map} +1 -1
- package/dist/providers/index.js +4 -4
- package/dist/routes/account/orders.js +1 -1
- package/dist/routes/account.js +6 -6
- package/dist/routes/blog.js +5 -5
- package/dist/routes/brands.js +1 -1
- package/dist/routes/cart.js +8 -8
- package/dist/routes/home.js +7 -7
- package/dist/routes/loyalty.js +2 -2
- package/dist/routes/page.js +1 -1
- package/dist/routes/product-listing.js +6 -6
- package/dist/routes/product.js +6 -6
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +1 -1
- package/dist/skeleton.js +7 -7
- package/dist/tanstack.js +1 -1
- package/package.json +1 -1
- package/tailwind/components/layout/Footer.tsx.txt +19 -16
- package/dist/chunk-FWYKOQV5.js.map +0 -1
- package/dist/chunk-LWPKBVIE.js +0 -14
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { sortOptions } from '../chunk-6Z4MOC4S.js';
|
|
2
2
|
import { category } from '../chunk-GAXVDCMA.js';
|
|
3
3
|
import { brand } from '../chunk-7X4XGKXO.js';
|
|
4
|
-
import { useReorderButtons, LazyTestimonials } from '../chunk-
|
|
4
|
+
import { useReorderButtons, LazyTestimonials } from '../chunk-7JVKUFFT.js';
|
|
5
5
|
import '../chunk-FZYR4BA2.js';
|
|
6
6
|
import { product, parseNextPageToken } from '../chunk-556OT3BN.js';
|
|
7
7
|
import { Drawer } from '../chunk-6TKIUG5C.js';
|
|
8
|
-
import { ProductCard } from '../chunk-
|
|
8
|
+
import { ProductCard } from '../chunk-UKLZQK2J.js';
|
|
9
9
|
import { registry, COMPONENT_KEYS } from '../chunk-Y32RHCOH.js';
|
|
10
|
-
import { useStore } from '../chunk-
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
10
|
+
import { useStore } from '../chunk-CTCVO7YU.js';
|
|
11
|
+
import '../chunk-PKXEZRSJ.js';
|
|
12
|
+
import '../chunk-SYVIMWYW.js';
|
|
13
13
|
import '../chunk-E7WWO3V3.js';
|
|
14
14
|
import '../chunk-2JV6WZ6O.js';
|
|
15
15
|
import '../chunk-RV54D2D7.js';
|
|
@@ -41,7 +41,7 @@ import { HookSlot } from '../chunk-5XDPAKF5.js';
|
|
|
41
41
|
import '../chunk-GCPEMNSU.js';
|
|
42
42
|
import { getAuthToken } from '../chunk-QGOPTVV5.js';
|
|
43
43
|
import { useTranslation } from '../chunk-TYNZ5B2B.js';
|
|
44
|
-
import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-
|
|
44
|
+
import { LazyBreadcrumb, Image, LazyNoContent, ProductCardSkeleton, LazyRenderWhenVisible } from '../chunk-V5OF7CV4.js';
|
|
45
45
|
import '../chunk-AXW67SY7.js';
|
|
46
46
|
import '../chunk-BYMOPN2S.js';
|
|
47
47
|
import '../chunk-SKLEJJ6M.js';
|
package/dist/routes/product.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ProductsSlider, LazyTestimonials } from '../chunk-
|
|
1
|
+
import { ProductsSlider, LazyTestimonials } from '../chunk-7JVKUFFT.js';
|
|
2
2
|
import '../chunk-FZYR4BA2.js';
|
|
3
3
|
import { product } from '../chunk-556OT3BN.js';
|
|
4
|
-
import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-
|
|
4
|
+
import { ProductGallery, LazyProductDetails, LazyAddToCartForm } from '../chunk-UKLZQK2J.js';
|
|
5
5
|
import '../chunk-Y32RHCOH.js';
|
|
6
|
-
import { fastCheckoutScript } from '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
6
|
+
import { fastCheckoutScript } from '../chunk-CTCVO7YU.js';
|
|
7
|
+
import '../chunk-PKXEZRSJ.js';
|
|
8
|
+
import '../chunk-SYVIMWYW.js';
|
|
9
9
|
import '../chunk-E7WWO3V3.js';
|
|
10
10
|
import '../chunk-2JV6WZ6O.js';
|
|
11
11
|
import '../chunk-RV54D2D7.js';
|
|
@@ -37,7 +37,7 @@ import { HookSlot } from '../chunk-5XDPAKF5.js';
|
|
|
37
37
|
import '../chunk-GCPEMNSU.js';
|
|
38
38
|
import { getActiveCurrency } from '../chunk-QGOPTVV5.js';
|
|
39
39
|
import { useTranslation } from '../chunk-TYNZ5B2B.js';
|
|
40
|
-
import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-
|
|
40
|
+
import { LazyBreadcrumb, LazyRenderWhenVisible } from '../chunk-V5OF7CV4.js';
|
|
41
41
|
import '../chunk-AXW67SY7.js';
|
|
42
42
|
import '../chunk-BYMOPN2S.js';
|
|
43
43
|
import '../chunk-SKLEJJ6M.js';
|
|
@@ -32,10 +32,10 @@ async function reviewsLoader() {
|
|
|
32
32
|
|
|
33
33
|
// src/routes/testimonials/index.tsx
|
|
34
34
|
var LazyTestimonialsPage = lazy(
|
|
35
|
-
() => import('../TestimonialsPage-
|
|
35
|
+
() => import('../TestimonialsPage-OKDDAMJL.js').then((m) => ({ default: m.TestimonialsPage }))
|
|
36
36
|
);
|
|
37
37
|
var LazyReviewsPage = lazy(
|
|
38
|
-
() => import('../ReviewsPage-
|
|
38
|
+
() => import('../ReviewsPage-VEYN7BSR.js').then((m) => ({ default: m.ReviewsPage }))
|
|
39
39
|
);
|
|
40
40
|
var TestimonialsPage = LazyTestimonialsPage;
|
|
41
41
|
var ReviewsPage = LazyReviewsPage;
|
package/dist/routes/thank-you.js
CHANGED
|
@@ -38,7 +38,7 @@ async function thankYouLoader({
|
|
|
38
38
|
|
|
39
39
|
// src/routes/thank-you/index.tsx
|
|
40
40
|
var LazyThankYouPage = lazy(
|
|
41
|
-
() => import('../ThankYouPage-
|
|
41
|
+
() => import('../ThankYouPage-YWLG6UF7.js').then((m) => ({ default: m.ThankYouPage }))
|
|
42
42
|
);
|
|
43
43
|
var ThankYouPage = LazyThankYouPage;
|
|
44
44
|
async function loader(ctx, extend) {
|
package/dist/skeleton.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export { BlogSkeleton, BreadcrumbSkeleton, CartSkeleton, CustomerLayoutSkeleton, CustomerPageSkeleton, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, SkeletonPulse } from './chunk-N7CCSGZF.js';
|
|
2
|
-
export { HomeSkeleton } from './chunk-
|
|
3
|
-
import './chunk-
|
|
2
|
+
export { HomeSkeleton } from './chunk-7PQPQEDN.js';
|
|
3
|
+
import './chunk-7JVKUFFT.js';
|
|
4
4
|
import './chunk-FZYR4BA2.js';
|
|
5
5
|
import './chunk-556OT3BN.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-UKLZQK2J.js';
|
|
7
7
|
import './chunk-Y32RHCOH.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
8
|
+
import './chunk-CTCVO7YU.js';
|
|
9
|
+
import './chunk-PKXEZRSJ.js';
|
|
10
|
+
import './chunk-SYVIMWYW.js';
|
|
11
11
|
import './chunk-E7WWO3V3.js';
|
|
12
12
|
import './chunk-2JV6WZ6O.js';
|
|
13
13
|
import './chunk-RV54D2D7.js';
|
|
@@ -39,7 +39,7 @@ import './chunk-5XDPAKF5.js';
|
|
|
39
39
|
import './chunk-GCPEMNSU.js';
|
|
40
40
|
import './chunk-QGOPTVV5.js';
|
|
41
41
|
import './chunk-TYNZ5B2B.js';
|
|
42
|
-
import './chunk-
|
|
42
|
+
import './chunk-V5OF7CV4.js';
|
|
43
43
|
import './chunk-AXW67SY7.js';
|
|
44
44
|
import './chunk-BYMOPN2S.js';
|
|
45
45
|
import './chunk-SKLEJJ6M.js';
|
package/dist/tanstack.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-
|
|
1
|
+
export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-6VOF5SB4.js';
|
|
2
2
|
import { requestHostOf } from './chunk-UGLZPGPF.js';
|
|
3
3
|
export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-UGLZPGPF.js';
|
|
4
4
|
import './chunk-Z4Y55HWX.js';
|
package/package.json
CHANGED
|
@@ -162,6 +162,23 @@ function FooterLinksMenu({
|
|
|
162
162
|
);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
/** App-store / Google-Play buttons. Nothing shows -- not even the wrapping
|
|
166
|
+
* div -- when the store has neither link set. */
|
|
167
|
+
function FooterApps({ className }: { className: string }) {
|
|
168
|
+
const { store } = useTwilight();
|
|
169
|
+
const { t } = useTranslation();
|
|
170
|
+
if (!store.apps?.appstore && !store.apps?.googleplay) return null;
|
|
171
|
+
|
|
172
|
+
return (
|
|
173
|
+
<div data-testid="store-footer-apps" className={`store-footer__apps ${className}`}>
|
|
174
|
+
<SallaAppsIcons
|
|
175
|
+
apps={store.apps}
|
|
176
|
+
appsTitle={t('blocks.footer.download_apps', 'Get our apps')}
|
|
177
|
+
/>
|
|
178
|
+
</div>
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
|
|
165
182
|
/** The logo link, same shape in both layouts -- only its own spacing differs. */
|
|
166
183
|
function FooterLogo({ className }: { className: string }) {
|
|
167
184
|
const { store } = useTwilight();
|
|
@@ -198,9 +215,6 @@ function FooterDescription({ className }: { className: string }) {
|
|
|
198
215
|
/** Centered layout: logo, description, social, footer menu, trust badges and
|
|
199
216
|
* app buttons stacked as one centered column. */
|
|
200
217
|
function FooterCenteredBody({ inSheet, isDark }: { inSheet: boolean; isDark: boolean }) {
|
|
201
|
-
const { store } = useTwilight();
|
|
202
|
-
const { t } = useTranslation();
|
|
203
|
-
|
|
204
218
|
return (
|
|
205
219
|
<div className="container mx-auto flex max-w-2xl flex-col items-center gap-6 text-center">
|
|
206
220
|
<FooterLogo className="" />
|
|
@@ -215,12 +229,7 @@ function FooterCenteredBody({ inSheet, isDark }: { inSheet: boolean; isDark: boo
|
|
|
215
229
|
|
|
216
230
|
<FooterTrust dark={isDark} centered />
|
|
217
231
|
|
|
218
|
-
<
|
|
219
|
-
<SallaAppsIcons
|
|
220
|
-
apps={store.apps}
|
|
221
|
-
appsTitle={t('blocks.footer.download_apps', 'Get our apps')}
|
|
222
|
-
/>
|
|
223
|
-
</div>
|
|
232
|
+
<FooterApps className="flex flex-col items-center gap-3" />
|
|
224
233
|
</div>
|
|
225
234
|
);
|
|
226
235
|
}
|
|
@@ -228,7 +237,6 @@ function FooterCenteredBody({ inSheet, isDark }: { inSheet: boolean; isDark: boo
|
|
|
228
237
|
/** Columns layout: brand (logo / description / social / trust) and app
|
|
229
238
|
* buttons side by side, with the footer menu as its own labeled column. */
|
|
230
239
|
function FooterColumnsBody({ inSheet, isDark }: { inSheet: boolean; isDark: boolean }) {
|
|
231
|
-
const { store } = useTwilight();
|
|
232
240
|
const { t } = useTranslation();
|
|
233
241
|
|
|
234
242
|
return (
|
|
@@ -247,12 +255,7 @@ function FooterColumnsBody({ inSheet, isDark }: { inSheet: boolean; isDark: bool
|
|
|
247
255
|
dark={isDark}
|
|
248
256
|
/>
|
|
249
257
|
|
|
250
|
-
<
|
|
251
|
-
<SallaAppsIcons
|
|
252
|
-
apps={store.apps}
|
|
253
|
-
appsTitle={t('blocks.footer.download_apps', 'Get our apps')}
|
|
254
|
-
/>
|
|
255
|
-
</div>
|
|
258
|
+
<FooterApps className="" />
|
|
256
259
|
</div>
|
|
257
260
|
);
|
|
258
261
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/Footer.tsx"],"names":[],"mappings":"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","file":"chunk-FWYKOQV5.js","sourcesContent":["import { useState } from 'react';\nimport { SallaAppsIcons } from '@salla.sa/twilight-components-react/apps-icons';\nimport { SallaSocial } from '@salla.sa/twilight-components-react/social';\nimport { SallaMenu } from '@salla.sa/twilight-components-react/menu';\nimport { SallaTrustBadges } from '@salla.sa/twilight-components-react/trust-badges';\nimport { SallaPayments } from '@salla.sa/twilight-components-react/payments';\nimport { useTwilight } from '../../providers/twilight-context';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { HookSlot } from '../../hooks/HookSlot';\nimport { Link, Image } from '../common';\nimport { ImageModal } from '../modal';\n\n/** Salla's value-added-tax badge icon (70×70, CDN-resized) — a platform\n * asset shared by every store, not specific to any one theme. */\nconst TAX_ICON_URL =\n 'https://cdn.salla.network/cdn-cgi/image/fit=scale-down,width=70,height=70,onerror=redirect,format=auto/images/tax.png?v=2.0.5';\n\n/**\n * The store's value-added-tax registration: the tax number, plus the certificate as\n * the tax icon that opens the certificate image full size in a modal. Nothing shows\n * when the store has no tax number.\n */\nfunction FooterTax({ dark }: { dark: boolean }) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const number = store.settings?.tax?.number;\n const certificate = store.settings?.tax?.certificate;\n if (!number) return null;\n\n return (\n <div\n data-testid=\"store-footer-tax\"\n className=\"store-footer__tax flex items-end gap-2 rtl:space-x-reverse\"\n >\n {certificate && (\n <>\n <button\n type=\"button\"\n data-testid=\"store-footer-tax-certificate\"\n className=\"store-footer__tax-cert shrink-0\"\n aria-label={t('common.elements.tax_certificate', 'Tax Certificate')}\n aria-haspopup=\"dialog\"\n onClick={() => setOpen(true)}\n >\n <img\n src={TAX_ICON_URL}\n alt={t('common.elements.tax_certificate', 'Tax Certificate')}\n width={40}\n height={50}\n loading=\"lazy\"\n decoding=\"async\"\n className=\"w-10 rounded-sm transition-opacity hover:opacity-80\"\n />\n </button>\n <ImageModal\n isOpen={open}\n onClose={() => setOpen(false)}\n src={certificate}\n alt={t('common.elements.tax_certificate', 'Tax Certificate')}\n title={t('common.elements.tax_certificate', 'Tax Certificate')}\n />\n </>\n )}\n <div>\n <p className={`mb-1 text-sm opacity-70 ${dark ? 'text-white' : ''}`}>\n {t('common.elements.tax_number', 'Tax Number')}\n </p>\n <b className=\"text-sm\">{number}</b>\n </div>\n </div>\n );\n}\n\n/** Saudi Business Center (SBC) logo, CDN-versioned like the tax icon -- also a\n * platform asset, not theme-specific. */\nconst SBC_ICON_URL = 'https://cdn.salla.network/images/sbc.png?v=2.0.5';\n\n/**\n * The store's Saudi Business Center certificate: a \"Trusted by Business Platform\" badge that\n * opens the certificate's page on the SBC site so visitors can verify the merchant. Nothing\n * shows when the store has no certificate.\n */\nfunction FooterSbc({ dark }: { dark: boolean }) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n const id = store.settings?.certificate?.id;\n if (!id) return null;\n\n return (\n <a\n href={`https://eauthenticate.saudibusiness.gov.sa/certificate-details/${encodeURIComponent(id)}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n data-testid=\"store-footer-sbc\"\n className=\"store-footer__sbc flex items-center gap-2.5 transition-opacity hover:opacity-75\"\n >\n <img\n src={SBC_ICON_URL}\n alt={`SBC ${id}`}\n width={56}\n height={40}\n loading=\"lazy\"\n decoding=\"async\"\n className=\"h-10 w-14 rounded-sm\"\n />\n <div>\n <p className={`text-xs opacity-70 ${dark ? 'text-white' : ''}`}>\n {t('blocks.footer.sbc_trusted_by', 'Trusted by')}\n </p>\n <b className=\"text-sm\">{t('blocks.footer.sbc_platform', 'Business Platform')}</b>\n </div>\n </a>\n );\n}\n\n/** Trust badges, the tax registration and the SBC badge, side by side (wrapping on narrow columns). */\nfunction FooterTrust({ dark, centered }: { dark: boolean; centered: boolean }) {\n return (\n <div\n data-testid=\"store-footer-trust\"\n className={`store-footer__trust flex flex-wrap items-end gap-x-6 gap-y-3${centered ? ' justify-center' : ''}`}\n >\n <FooterTax dark={dark} />\n <FooterSbc dark={dark} />\n <SallaTrustBadges {...(dark ? { dark: true } : {})} />\n </div>\n );\n}\n\n/**\n * The footer's own menu of (\"important\") links -- skipped entirely when\n * `inSheet`, for a theme that opens it from somewhere else of its own (a\n * mobile account sheet, a dedicated links screen, …) instead; showing it\n * again down here would just be a redundant second copy. `heading` wraps it\n * in the grid layout's own `.store-footer__links` column; the centered\n * layout's inline row has none.\n */\nfunction FooterLinksMenu({\n inSheet,\n className,\n heading,\n dark,\n}: {\n inSheet: boolean;\n className: string;\n heading?: string;\n dark: boolean;\n}) {\n if (inSheet) return null;\n\n const menu = <SallaMenu source=\"footer\" className={className} suppressHydrationWarning />;\n if (!heading) return menu;\n\n return (\n <div className=\"store-footer__links\">\n <h3 className={`mb-3 text-lg font-bold lg:mb-5 ${dark ? 'text-white' : 'text-gray-900'}`}>\n {heading}\n </h3>\n {menu}\n </div>\n );\n}\n\n/** The logo link, same shape in both layouts -- only its own spacing differs. */\nfunction FooterLogo({ className }: { className: string }) {\n const { store } = useTwilight();\n return (\n <Link\n to=\"/\"\n className={`store-footer__logo inline-flex items-center m-0 transition-opacity hover:opacity-75 ${className}`}\n >\n <Image\n src={store.logo}\n alt={store.name || 'Store'}\n width={150}\n height={44}\n objectFit=\"contain\"\n className=\"h-11 w-auto max-w-[180px]\"\n />\n </Link>\n );\n}\n\n/** Merchant-authored description HTML -- mirrors the Twig theme's\n * `store.description|raw`. Renders nothing when the store has none set. */\nfunction FooterDescription({ className }: { className: string }) {\n const { store } = useTwilight();\n if (!store.description) return null;\n return (\n <div\n className={`store-footer__desc opacity-80 ${className}`}\n dangerouslySetInnerHTML={{ __html: store.description }}\n />\n );\n}\n\n/** Centered layout: logo, description, social, footer menu, trust badges and\n * app buttons stacked as one centered column. */\nfunction FooterCenteredBody({ inSheet, isDark }: { inSheet: boolean; isDark: boolean }) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n\n return (\n <div className=\"container mx-auto flex max-w-2xl flex-col items-center gap-6 text-center\">\n <FooterLogo className=\"\" />\n <FooterDescription className=\"\" />\n <SallaSocial />\n\n <FooterLinksMenu\n inSheet={inSheet}\n className=\"store-footer__menu store-footer__menu--inline\"\n dark={isDark}\n />\n\n <FooterTrust dark={isDark} centered />\n\n <div className=\"store-footer__apps flex flex-col items-center gap-3\">\n <SallaAppsIcons\n apps={store.apps}\n appsTitle={t('blocks.footer.download_apps', 'Get our apps')}\n />\n </div>\n </div>\n );\n}\n\n/** Columns layout: brand (logo / description / social / trust) and app\n * buttons side by side, with the footer menu as its own labeled column. */\nfunction FooterColumnsBody({ inSheet, isDark }: { inSheet: boolean; isDark: boolean }) {\n const { store } = useTwilight();\n const { t } = useTranslation();\n\n return (\n <div className=\"container grid grid-cols-1 gap-10 sm:grid-cols-2 lg:grid-cols-4 lg:gap-16\">\n <div className=\"store-footer__brand rtl:lg:pl-16 ltr:lg:pr-16 sm:col-span-2\">\n <FooterLogo className=\"mb-5\" />\n <FooterDescription className=\"max-w-sm leading-6 my-5\" />\n <SallaSocial className=\"block mb-6\" />\n <FooterTrust dark={isDark} centered={false} />\n </div>\n\n <FooterLinksMenu\n inSheet={inSheet}\n className=\"store-footer__menu store-footer__menu--stacked\"\n heading={t('blocks.footer.important_links', 'Important links')}\n dark={isDark}\n />\n\n <div className=\"store-footer__apps\">\n <SallaAppsIcons\n apps={store.apps}\n appsTitle={t('blocks.footer.download_apps', 'Get our apps')}\n />\n </div>\n </div>\n );\n}\n\nexport interface FooterProps {\n /**\n * Renders as a plain `<div>` (no second `<footer>` landmark) with the\n * `footer:start` / `footer:end` hook slots skipped -- for a theme that\n * repeats these widgets somewhere other than the page's own footer (a\n * mobile sheet, for example) rather than rendering the real page footer a\n * second time.\n */\n inSheet?: boolean;\n}\n\n/**\n * Storefront footer.\n *\n * Two layouts, chosen by the `footer_layout` theme setting:\n * - **columns** (default): logo / description / social / trust badges, the\n * footer menu (\"important links\"), and app-store buttons, side by side.\n * - **centered**: the same pieces stacked as one centered column, with the\n * footer menu laid out as an inline, pipe-separated row.\n *\n * Styling for the handful of pieces rendered by web components this owns no\n * markup for (`<salla-social>`'s `.social-link` icons, `<salla-menu>`'s\n * `.s-menu-footer-item` rows, `<salla-payments>`'s `.s-payments-list-item`\n * icons) is the consuming theme's own responsibility, the same way\n * `inSheet`'s own presentation is -- this component owns structure and data,\n * not every pixel.\n */\nexport function Footer({ inSheet = false }: FooterProps = {}) {\n const { store, theme } = useTwilight();\n const { t } = useTranslation();\n const year = new Date().getFullYear();\n const isCentered = theme.settings?.footer_layout === 'centered';\n const isDark = !!theme.settings?.footer_is_dark;\n\n const Root = inSheet ? 'div' : 'footer';\n\n return (\n <Root\n className={`store-footer store-footer--${isCentered ? 'centered' : 'columns'}${\n inSheet ? ' store-footer--sheet' : ''\n } relative mt-8 sm:mt-16 ${isDark ? 'bg-[#0E0F0F] text-white' : 'bg-[#F4F7F2] text-gray-600'}`}\n suppressHydrationWarning\n >\n {!inSheet && <HookSlot name=\"footer:start\" />}\n\n <div\n aria-label=\"footer\"\n className={`store-footer__inner border-b py-8 lg:py-16 ${\n isDark ? 'bg-[#1D1F1F] border-dashed border-white/10' : 'bg-transparent border-gray-200'\n }`}\n >\n {isCentered ? (\n <FooterCenteredBody inSheet={inSheet} isDark={isDark} />\n ) : (\n <FooterColumnsBody inSheet={inSheet} isDark={isDark} />\n )}\n </div>\n\n <div className=\"store-footer__bottom container md:flex items-center justify-between gap-4 py-4 lg:py-7 text-center\">\n <span className={`text-sm copyright-text ${isDark ? 'text-gray-400' : 'text-gray-700'}`}>\n <HookSlot\n name=\"copyright\"\n context={{ storeName: store.name }}\n fallback={\n <>\n {t('blocks.footer.copyright', 'All rights reserved')}{' '}\n <Link to=\"/\" className=\"transition-opacity hover:opacity-75 hover:text-primary\">\n {store.name}\n </Link>{' '}\n © {year}\n </>\n }\n />\n </span>\n\n <SallaPayments />\n </div>\n\n {!inSheet && <HookSlot name=\"footer:end\" />}\n </Root>\n );\n}\n"]}
|
package/dist/chunk-LWPKBVIE.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { lazy } from 'react';
|
|
2
|
-
|
|
3
|
-
// src/components/cart/lazy.ts
|
|
4
|
-
var LazyCartItem = lazy(() => import('./CartItem-EOI7P3JA.js').then((m) => ({ default: m.CartItem })));
|
|
5
|
-
var LazyCartSummary = lazy(
|
|
6
|
-
() => import('./CartSummary-RZGUBDKJ.js').then((m) => ({ default: m.CartSummary }))
|
|
7
|
-
);
|
|
8
|
-
var LazySeoCartWidget = lazy(
|
|
9
|
-
() => import('./SeoCartWidget-VYLGEW2I.js').then((m) => ({ default: m.SeoCartWidget }))
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
export { LazyCartItem, LazyCartSummary, LazySeoCartWidget };
|
|
13
|
-
//# sourceMappingURL=chunk-LWPKBVIE.js.map
|
|
14
|
-
//# sourceMappingURL=chunk-LWPKBVIE.js.map
|