@salla.sa/twilight-theme-engine 1.0.63 → 1.0.65
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-365O6IQY.js → AddToCartForm-NKXOZ6TW.js} +3 -3
- package/dist/{AddToCartForm-365O6IQY.js.map → AddToCartForm-NKXOZ6TW.js.map} +1 -1
- package/dist/{BlogAuthorPage-QIII3YRK.js → BlogAuthorPage-GQPWTGT2.js} +9 -9
- package/dist/{BlogAuthorPage-QIII3YRK.js.map → BlogAuthorPage-GQPWTGT2.js.map} +1 -1
- package/dist/{BlogCategoryPage-HNGWYTN6.js → BlogCategoryPage-LTSZDBIZ.js} +9 -9
- package/dist/{BlogCategoryPage-HNGWYTN6.js.map → BlogCategoryPage-LTSZDBIZ.js.map} +1 -1
- package/dist/{BlogPage-7NGO5VLL.js → BlogPage-QN7QL562.js} +7 -7
- package/dist/{BlogPage-7NGO5VLL.js.map → BlogPage-QN7QL562.js.map} +1 -1
- package/dist/{BlogSinglePage-Y42LPA2L.js → BlogSinglePage-7GVVVVBL.js} +7 -7
- package/dist/{BlogSinglePage-Y42LPA2L.js.map → BlogSinglePage-7GVVVVBL.js.map} +1 -1
- package/dist/{BlogTagPage-ZCFYLXH6.js → BlogTagPage-QKYXFRET.js} +9 -9
- package/dist/{BlogTagPage-ZCFYLXH6.js.map → BlogTagPage-QKYXFRET.js.map} +1 -1
- package/dist/{BrandsPage-PPJVASUW.js → BrandsPage-LF5NVBUE.js} +8 -8
- package/dist/{BrandsPage-PPJVASUW.js.map → BrandsPage-LF5NVBUE.js.map} +1 -1
- package/dist/{Breadcrumb-4DUAJK3V.js → Breadcrumb-E7KDHZX4.js} +7 -7
- package/dist/{Breadcrumb-4DUAJK3V.js.map → Breadcrumb-E7KDHZX4.js.map} +1 -1
- package/dist/{CartItem-T4N3HMXU.js → CartItem-RB5CTJT6.js} +7 -7
- package/dist/{CartItem-T4N3HMXU.js.map → CartItem-RB5CTJT6.js.map} +1 -1
- package/dist/{CartSummary-Z25JDFWN.js → CartSummary-JCYQ2SQD.js} +12 -7
- package/dist/CartSummary-JCYQ2SQD.js.map +1 -0
- package/dist/{Copyright-WNJIDKSR.js → Copyright-XXSKQ3TB.js} +3 -3
- package/dist/{Copyright-WNJIDKSR.js.map → Copyright-XXSKQ3TB.js.map} +1 -1
- package/dist/{CustomerLayout-A6DVYYC3.js → CustomerLayout-CBFF4QEB.js} +27 -11
- package/dist/CustomerLayout-CBFF4QEB.js.map +1 -0
- package/dist/{Footer-3YBOSAO5.js → Footer-NFN2EMI2.js} +7 -7
- package/dist/{Footer-3YBOSAO5.js.map → Footer-NFN2EMI2.js.map} +1 -1
- package/dist/{Header-6M7TVMSW.js → Header-THQIZ2IR.js} +5 -5
- package/dist/{Header-6M7TVMSW.js.map → Header-THQIZ2IR.js.map} +1 -1
- package/dist/{LoyaltyPage-XQJ6RDT6.js → LoyaltyPage-5SLR7TJX.js} +7 -7
- package/dist/{LoyaltyPage-XQJ6RDT6.js.map → LoyaltyPage-5SLR7TJX.js.map} +1 -1
- package/dist/{LoyaltyPointsPage-K75LJNNP.js → LoyaltyPointsPage-HSXFTJUH.js} +3 -3
- package/dist/{LoyaltyPointsPage-K75LJNNP.js.map → LoyaltyPointsPage-HSXFTJUH.js.map} +1 -1
- package/dist/{MainMenu-V7GPKDTU.js → MainMenu-7SVMOZ6P.js} +3 -3
- package/dist/{MainMenu-V7GPKDTU.js.map → MainMenu-7SVMOZ6P.js.map} +1 -1
- package/dist/{MasterLayout-MBQ4JM3D.js → MasterLayout-7IHDLNPZ.js} +7 -7
- package/dist/{MasterLayout-MBQ4JM3D.js.map → MasterLayout-7IHDLNPZ.js.map} +1 -1
- package/dist/{MobileMenu-UFX4ZHW7.js → MobileMenu-7HKRWQBQ.js} +7 -7
- package/dist/{MobileMenu-UFX4ZHW7.js.map → MobileMenu-7HKRWQBQ.js.map} +1 -1
- package/dist/{NotificationsPage-M3YK2HRM.js → NotificationsPage-4JX7GFXF.js} +7 -7
- package/dist/{NotificationsPage-M3YK2HRM.js.map → NotificationsPage-4JX7GFXF.js.map} +1 -1
- package/dist/OrderSinglePage-B7TBZ7TX.js +719 -0
- package/dist/OrderSinglePage-B7TBZ7TX.js.map +1 -0
- package/dist/OrdersPage-XZ2DAJYB.js +68 -0
- package/dist/OrdersPage-XZ2DAJYB.js.map +1 -0
- package/dist/{PageSingle-HRMSVNHN.js → PageSingle-QWT77P4S.js} +3 -3
- package/dist/{PageSingle-HRMSVNHN.js.map → PageSingle-QWT77P4S.js.map} +1 -1
- package/dist/{ProductDetails-GAC3NYQM.js → ProductDetails-5IQHNQPS.js} +3 -3
- package/dist/{ProductDetails-GAC3NYQM.js.map → ProductDetails-5IQHNQPS.js.map} +1 -1
- package/dist/{ProfilePage-33I2XTJ6.js → ProfilePage-R2JDY6BF.js} +7 -7
- package/dist/{ProfilePage-33I2XTJ6.js.map → ProfilePage-R2JDY6BF.js.map} +1 -1
- package/dist/{SeoCartWidget-AEG2YLEF.js → SeoCartWidget-I2FBWKI4.js} +7 -7
- package/dist/{SeoCartWidget-AEG2YLEF.js.map → SeoCartWidget-I2FBWKI4.js.map} +1 -1
- package/dist/{SettingsPage-N3M677LP.js → SettingsPage-7X5YPAXL.js} +7 -7
- package/dist/{SettingsPage-N3M677LP.js.map → SettingsPage-7X5YPAXL.js.map} +1 -1
- package/dist/{StoreClosedNotification-5MTDRRC3.js → StoreClosedNotification-5F4I3N27.js} +8 -8
- package/dist/{StoreClosedNotification-5MTDRRC3.js.map → StoreClosedNotification-5F4I3N27.js.map} +1 -1
- package/dist/{TestimonialsPage-Z64P6MZX.js → TestimonialsPage-7YXSU33Z.js} +3 -3
- package/dist/{TestimonialsPage-Z64P6MZX.js.map → TestimonialsPage-7YXSU33Z.js.map} +1 -1
- package/dist/{ThankYouPage-ZXQZMWCX.js → ThankYouPage-7BN53JTK.js} +7 -7
- package/dist/{ThankYouPage-ZXQZMWCX.js.map → ThankYouPage-7BN53JTK.js.map} +1 -1
- package/dist/{WalletPage-557AU5GH.js → WalletPage-JKXQSYPX.js} +7 -7
- package/dist/{WalletPage-557AU5GH.js.map → WalletPage-JKXQSYPX.js.map} +1 -1
- package/dist/{WishlistPage-HTDQW2N2.js → WishlistPage-CSFHKERP.js} +9 -9
- package/dist/{WishlistPage-HTDQW2N2.js.map → WishlistPage-CSFHKERP.js.map} +1 -1
- package/dist/api/brands.js +2 -2
- package/dist/api/cart.d.ts +5 -0
- package/dist/api/cart.d.ts.map +1 -1
- package/dist/api/cart.js +2 -2
- package/dist/api/category.js +2 -2
- package/dist/api/loyalty.js +2 -2
- package/dist/api/order.d.ts +22 -0
- package/dist/api/order.d.ts.map +1 -1
- package/dist/api/order.js +2 -2
- package/dist/api/page.js +2 -2
- package/dist/api/product.js +2 -2
- package/dist/api/wishlist.js +3 -3
- package/dist/{chunk-Q5UYV2EN.js → chunk-24QOBDMC.js} +8 -4
- package/dist/chunk-24QOBDMC.js.map +1 -0
- package/dist/{chunk-KILNHLWE.js → chunk-2BRCE7MK.js} +4 -4
- package/dist/{chunk-KILNHLWE.js.map → chunk-2BRCE7MK.js.map} +1 -1
- package/dist/{chunk-YEY3SO23.js → chunk-2QNDO2OY.js} +12 -3
- package/dist/chunk-2QNDO2OY.js.map +1 -0
- package/dist/{chunk-LUTMPFRW.js → chunk-347K33DP.js} +3 -3
- package/dist/{chunk-LUTMPFRW.js.map → chunk-347K33DP.js.map} +1 -1
- package/dist/{chunk-KHRIGLYL.js → chunk-43XFO6KF.js} +3 -3
- package/dist/{chunk-KHRIGLYL.js.map → chunk-43XFO6KF.js.map} +1 -1
- package/dist/{chunk-EIJXSBL6.js → chunk-55VTMG2H.js} +31 -51
- package/dist/chunk-55VTMG2H.js.map +1 -0
- package/dist/{chunk-UFPZXWGM.js → chunk-65JM62NV.js} +4 -4
- package/dist/{chunk-UFPZXWGM.js.map → chunk-65JM62NV.js.map} +1 -1
- package/dist/{chunk-HSVGQ2DV.js → chunk-6AV7RQ6H.js} +27 -21
- package/dist/chunk-6AV7RQ6H.js.map +1 -0
- package/dist/{chunk-KWHCKGLL.js → chunk-A6SKDX5E.js} +3 -3
- package/dist/{chunk-KWHCKGLL.js.map → chunk-A6SKDX5E.js.map} +1 -1
- package/dist/chunk-D5UIBY3V.js +47 -0
- package/dist/chunk-D5UIBY3V.js.map +1 -0
- package/dist/{chunk-Y7HKVYDG.js → chunk-EBMMJWX6.js} +7 -7
- package/dist/{chunk-Y7HKVYDG.js.map → chunk-EBMMJWX6.js.map} +1 -1
- package/dist/{chunk-YLPI4HDD.js → chunk-FY573DJA.js} +6 -6
- package/dist/{chunk-YLPI4HDD.js.map → chunk-FY573DJA.js.map} +1 -1
- package/dist/{chunk-EXKTSWBC.js → chunk-GRV7ELSP.js} +5 -5
- package/dist/{chunk-EXKTSWBC.js.map → chunk-GRV7ELSP.js.map} +1 -1
- package/dist/{chunk-PE3LLBNR.js → chunk-GXDBY4WB.js} +3 -3
- package/dist/{chunk-PE3LLBNR.js.map → chunk-GXDBY4WB.js.map} +1 -1
- package/dist/{chunk-I62RENKM.js → chunk-KBQXQKPZ.js} +14 -2
- package/dist/chunk-KBQXQKPZ.js.map +1 -0
- package/dist/{chunk-IC7YN4OQ.js → chunk-OJPJP7ML.js} +3 -3
- package/dist/{chunk-IC7YN4OQ.js.map → chunk-OJPJP7ML.js.map} +1 -1
- package/dist/{chunk-VLBQPVHM.js → chunk-P6DV6EHM.js} +3 -3
- package/dist/{chunk-VLBQPVHM.js.map → chunk-P6DV6EHM.js.map} +1 -1
- package/dist/{chunk-NPEI4SAZ.js → chunk-PDMVQCEV.js} +3 -3
- package/dist/{chunk-NPEI4SAZ.js.map → chunk-PDMVQCEV.js.map} +1 -1
- package/dist/{chunk-W66OHTSM.js → chunk-QYUYQPXN.js} +3 -3
- package/dist/{chunk-W66OHTSM.js.map → chunk-QYUYQPXN.js.map} +1 -1
- package/dist/{chunk-XFCJM6RN.js → chunk-RWTZH6G3.js} +16 -12
- package/dist/chunk-RWTZH6G3.js.map +1 -0
- package/dist/{chunk-OBSAH7K6.js → chunk-SVPXQCOA.js} +12 -4
- package/dist/chunk-SVPXQCOA.js.map +1 -0
- package/dist/{chunk-4KTY2FT6.js → chunk-UEKIAED3.js} +6 -6
- package/dist/{chunk-4KTY2FT6.js.map → chunk-UEKIAED3.js.map} +1 -1
- package/dist/{chunk-UH5ZXDEO.js → chunk-WF7DYPR6.js} +3 -3
- package/dist/{chunk-UH5ZXDEO.js.map → chunk-WF7DYPR6.js.map} +1 -1
- package/dist/chunk-XMZPFHE7.js +14 -0
- package/dist/{chunk-JKT44Y2M.js.map → chunk-XMZPFHE7.js.map} +1 -1
- package/dist/{chunk-S3CC2YGF.js → chunk-ZBARSETM.js} +3 -3
- package/dist/{chunk-S3CC2YGF.js.map → chunk-ZBARSETM.js.map} +1 -1
- package/dist/components/cart/CartSummary.d.ts.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 +5 -5
- package/dist/components/home/index.js +8 -8
- package/dist/components/layout/CustomerLayout.d.ts.map +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/product/index.js +6 -6
- package/dist/components/store/index.js +7 -7
- package/dist/components/toast/Toaster.d.ts.map +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/{document-class-SKCL6IJF.js → document-class-ZLPAWZEX.js} +5 -5
- package/dist/{document-class-SKCL6IJF.js.map → document-class-ZLPAWZEX.js.map} +1 -1
- package/dist/hooks/index.js +5 -5
- package/dist/hooks/useGtm.js +5 -5
- package/dist/hooks/useMoney.d.ts +3 -3
- package/dist/hooks/useMoney.d.ts.map +1 -1
- package/dist/hooks/useMoney.js +5 -5
- package/dist/hooks/useStore.js +5 -5
- package/dist/index.js +5 -5
- package/dist/{navigation-YKRXGGSL.js → navigation-DU3BF72V.js} +3 -3
- package/dist/{navigation-YKRXGGSL.js.map → navigation-DU3BF72V.js.map} +1 -1
- package/dist/{navigation-ESPAHRXM.js → navigation-WB75NC6Y.js} +4 -4
- package/dist/{navigation-ESPAHRXM.js.map → navigation-WB75NC6Y.js.map} +1 -1
- package/dist/{not-found-KBOXJ3AG.js → not-found-MA54AXJB.js} +8 -8
- package/dist/{not-found-KBOXJ3AG.js.map → not-found-MA54AXJB.js.map} +1 -1
- package/dist/providers/NavigationProvider.d.ts.map +1 -1
- package/dist/providers/index.js +5 -5
- package/dist/providers/twilight-init.d.ts.map +1 -1
- package/dist/routes/account/notifications/loader.d.ts.map +1 -1
- package/dist/routes/account/orders/OrderSinglePage.d.ts +7 -1
- package/dist/routes/account/orders/OrderSinglePage.d.ts.map +1 -1
- package/dist/routes/account/orders/OrdersPage.d.ts +2 -1
- package/dist/routes/account/orders/OrdersPage.d.ts.map +1 -1
- package/dist/routes/account/orders/loader.d.ts.map +1 -1
- package/dist/routes/account/orders/single/OrderActions.d.ts +7 -0
- package/dist/routes/account/orders/single/OrderActions.d.ts.map +1 -0
- package/dist/routes/account/orders/single/OrderHeader.d.ts +8 -0
- package/dist/routes/account/orders/single/OrderHeader.d.ts.map +1 -0
- package/dist/routes/account/orders/single/OrderItemRow.d.ts +9 -0
- package/dist/routes/account/orders/single/OrderItemRow.d.ts.map +1 -0
- package/dist/routes/account/orders/single/OrderSections.d.ts +23 -0
- package/dist/routes/account/orders/single/OrderSections.d.ts.map +1 -0
- package/dist/routes/account/orders/single/types.d.ts +53 -0
- package/dist/routes/account/orders/single/types.d.ts.map +1 -0
- package/dist/routes/account/orders/types.d.ts +3 -0
- package/dist/routes/account/orders/types.d.ts.map +1 -1
- package/dist/routes/account/orders.js +3 -3
- package/dist/routes/account/profile/loader.d.ts.map +1 -1
- package/dist/routes/account/settings/loader.d.ts.map +1 -1
- package/dist/routes/account/wallet/loader.d.ts.map +1 -1
- package/dist/routes/account/wishlist/loader.d.ts.map +1 -1
- package/dist/routes/account.js +16 -15
- package/dist/routes/account.js.map +1 -1
- package/dist/routes/blog.js +7 -7
- package/dist/routes/brands.js +3 -3
- package/dist/routes/cart/CartPage.d.ts.map +1 -1
- package/dist/routes/cart.js +14 -18
- package/dist/routes/cart.js.map +1 -1
- package/dist/routes/home.js +9 -9
- package/dist/routes/index.js +2 -2
- package/dist/routes/loyalty.js +4 -4
- package/dist/routes/page.js +3 -3
- package/dist/routes/product-listing.js +12 -11
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +8 -8
- package/dist/routes/seo-redirects.d.ts +4 -0
- package/dist/routes/seo-redirects.d.ts.map +1 -1
- package/dist/routes/seo-redirects.js +2 -2
- package/dist/routes/testimonials.js +1 -1
- package/dist/routes/thank-you.js +3 -3
- package/dist/skeleton.js +9 -9
- package/dist/tanstack/document-class.d.ts.map +1 -1
- package/dist/tanstack/router.d.ts.map +1 -1
- package/dist/tanstack.js +6 -6
- package/dist/types/salla-sdk.d.ts +1 -1
- package/dist/types/salla-sdk.d.ts.map +1 -1
- package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
- package/dist/vite/index.js +12 -2
- package/dist/vite/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/CartSummary-Z25JDFWN.js.map +0 -1
- package/dist/CustomerLayout-A6DVYYC3.js.map +0 -1
- package/dist/OrderSinglePage-7LIUMNRB.js +0 -502
- package/dist/OrderSinglePage-7LIUMNRB.js.map +0 -1
- package/dist/OrdersPage-WI4OSGBF.js +0 -252
- package/dist/OrdersPage-WI4OSGBF.js.map +0 -1
- package/dist/chunk-EIJXSBL6.js.map +0 -1
- package/dist/chunk-HSVGQ2DV.js.map +0 -1
- package/dist/chunk-I62RENKM.js.map +0 -1
- package/dist/chunk-IIYK56TI.js +0 -29
- package/dist/chunk-IIYK56TI.js.map +0 -1
- package/dist/chunk-JKT44Y2M.js +0 -14
- package/dist/chunk-OBSAH7K6.js.map +0 -1
- package/dist/chunk-Q5UYV2EN.js.map +0 -1
- package/dist/chunk-XFCJM6RN.js.map +0 -1
- package/dist/chunk-YEY3SO23.js.map +0 -1
package/dist/api/order.d.ts
CHANGED
|
@@ -3,6 +3,27 @@ import type { Pagination } from './types';
|
|
|
3
3
|
export interface OrderDetailResponse {
|
|
4
4
|
order: Order;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* The order in the shape the Twilight web components read (`salla-order-details`,
|
|
8
|
+
* `salla-order-totals-card`) and the Twig themes render: the API answers `orders/{id}` this
|
|
9
|
+
* way when the request does not say it comes from a React theme (`s-theme-type`).
|
|
10
|
+
*/
|
|
11
|
+
export interface TwilightOrder {
|
|
12
|
+
items: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
quantity: number;
|
|
15
|
+
product?: {
|
|
16
|
+
id: number;
|
|
17
|
+
url?: string;
|
|
18
|
+
type?: string;
|
|
19
|
+
image?: {
|
|
20
|
+
url?: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
options?: unknown[];
|
|
24
|
+
}>;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
6
27
|
export interface CheckoutThankYouData {
|
|
7
28
|
thank_you_title?: string;
|
|
8
29
|
messages?: string[];
|
|
@@ -25,6 +46,7 @@ export interface OrdersListParams {
|
|
|
25
46
|
export declare const order: {
|
|
26
47
|
list: (params?: OrdersListParams) => Promise<OrdersListResponse>;
|
|
27
48
|
find: (id: string) => Promise<OrderDetailResponse>;
|
|
49
|
+
findForComponents: (id: string) => Promise<TwilightOrder>;
|
|
28
50
|
shipments: (orderId: string) => Promise<OrderShipmentItem[]>;
|
|
29
51
|
ratings: (orderId: string) => Promise<OrderRatingItem[]>;
|
|
30
52
|
findOrThrow: (id: string) => Promise<OrderDetailResponse>;
|
package/dist/api/order.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/api/order.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,KAAK;oBACM,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAAC;eA8BnD,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/api/order.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;QAChF,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC,CAAC;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,KAAK;oBACM,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAAC;eA8BnD,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;4BAMxB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;yBAYlC,MAAM,KAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;uBAOvC,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC;sBAK1C,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAAC;wBAE7B,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAAC;+BAOrC,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAAC;;wBAI/C,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;;mBAKrC,MAAM;;;6BAKI,MAAM;;;2BAKR,MAAM;;;4BAKL,MAAM;;;;CAM7B,CAAC"}
|
package/dist/api/order.js
CHANGED
package/dist/api/page.js
CHANGED
package/dist/api/product.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { getProductPreview, isProductPreviewQuery, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { getProductPreview, isProductPreviewQuery, product, productDetailQueryKey, productPreviewQueryKey, rememberProductPreview, shouldDehydrateQuery } from '../chunk-QYUYQPXN.js';
|
|
2
|
+
import '../chunk-KBQXQKPZ.js';
|
|
3
3
|
import '../chunk-ZGHRSRDO.js';
|
|
4
4
|
import '../chunk-P3OPJL6I.js';
|
|
5
5
|
import '../chunk-WY4IYO3G.js';
|
package/dist/api/wishlist.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { wishlist } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { wishlist } from '../chunk-P6DV6EHM.js';
|
|
2
|
+
import '../chunk-QYUYQPXN.js';
|
|
3
|
+
import '../chunk-KBQXQKPZ.js';
|
|
4
4
|
import '../chunk-ZGHRSRDO.js';
|
|
5
5
|
import '../chunk-P3OPJL6I.js';
|
|
6
6
|
import '../chunk-WY4IYO3G.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { redirect } from './chunk-
|
|
1
|
+
import { redirect } from './chunk-KBQXQKPZ.js';
|
|
2
2
|
import { clearAuthTokenCookie } from './chunk-SR4OTLTJ.js';
|
|
3
3
|
import { FALLBACK_LOCALE } from './chunk-T72DAX7R.js';
|
|
4
4
|
import { useEffect } from 'react';
|
|
@@ -11,6 +11,10 @@ async function pendingOrdersRedirectLoader(ctx = { params: {} }) {
|
|
|
11
11
|
const locale = ctx.params.locale || FALLBACK_LOCALE;
|
|
12
12
|
throw redirect(`/${locale}/account/orders?status=pending`);
|
|
13
13
|
}
|
|
14
|
+
async function ratingRedirectLoader(ctx = { params: {} }) {
|
|
15
|
+
const locale = ctx.params.locale || FALLBACK_LOCALE;
|
|
16
|
+
throw redirect(`/${locale}/account/orders`);
|
|
17
|
+
}
|
|
14
18
|
function LogoutRedirect() {
|
|
15
19
|
useEffect(() => {
|
|
16
20
|
clearAuthTokenCookie();
|
|
@@ -19,6 +23,6 @@ function LogoutRedirect() {
|
|
|
19
23
|
return null;
|
|
20
24
|
}
|
|
21
25
|
|
|
22
|
-
export { LogoutRedirect, pendingOrdersRedirectLoader, slugBrandRedirectLoader };
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
export { LogoutRedirect, pendingOrdersRedirectLoader, ratingRedirectLoader, slugBrandRedirectLoader };
|
|
27
|
+
//# sourceMappingURL=chunk-24QOBDMC.js.map
|
|
28
|
+
//# sourceMappingURL=chunk-24QOBDMC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/routes/seo-redirects.ts"],"names":[],"mappings":";;;;;AAcA,eAAsB,wBAAwB,GAAA,EAAkD;AAC9F,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,SAAS,CAAA,CAAA,EAAI,MAAM,WAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,CAAE,CAAA;AACrD;AAOA,eAAsB,4BACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAC3D;AAGA,eAAsB,qBACpB,GAAA,GAA+C,EAAE,MAAA,EAAQ,IAAG,EAC5C;AAChB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,eAAA;AACpC,EAAA,MAAM,QAAA,CAAS,CAAA,CAAA,EAAI,MAAM,CAAA,eAAA,CAAiB,CAAA;AAC5C;AAUO,SAAS,cAAA,GAAuB;AACrC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,oBAAA,EAAqB;AAErB,IAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,MAAA,CAAO,QAAA,CAAS,KAAK,OAAA,CAAQ,8BAAA,EAAgC,EAAE,CAAC,CAAA;AAAA,EAC1F,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO,IAAA;AACT","file":"chunk-24QOBDMC.js","sourcesContent":["import { useEffect } from 'react';\nimport { redirect } from '../providers/NavigationProvider';\nimport { FALLBACK_LOCALE } from '../providers/locale-constants';\nimport { clearAuthTokenCookie } from '../utils/cookies';\n\nexport interface SlugBrandParams {\n /** SEO slug segment (ignored — only here to match the route pattern). */\n slug: string;\n /** Brand numeric ID to redirect to. */\n id: string;\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function slugBrandRedirectLoader(ctx: { params: SlugBrandParams }): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/brands/${ctx.params.id}`);\n}\n\nexport interface PendingOrdersRedirectParams {\n /** Active locale from the `/$locale` parent layout (e.g. `'ar'`, `'en'`). */\n locale?: string;\n}\n\nexport async function pendingOrdersRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders?status=pending`);\n}\n\n/** `/account/rating`: the loyalty \"rate your orders\" link. Twig Raed has no rating page and sends it to the orders list. */\nexport async function ratingRedirectLoader(\n ctx: { params: PendingOrdersRedirectParams } = { params: {} }\n): Promise<never> {\n const locale = ctx.params.locale || FALLBACK_LOCALE;\n throw redirect(`/${locale}/account/orders`);\n}\n\n/**\n * `/logout` — where the SDK sends the browser once `salla.auth.logout()` has run\n * (`salla.url.get('logout?from=…')`). The Twig storefront serves that URL server-side. Here\n * it renders nothing and, in the browser, removes the theme's own `token` cookie (the SDK's\n * `cookie.clearAll()` leaves it) and then does a full navigation home. It has to be a\n * component, not a loader redirect: a loader runs during server rendering, where the cookie\n * can't be cleared, so the redirect would leave the visitor signed in on the next request.\n */\nexport function LogoutRedirect(): null {\n useEffect(() => {\n clearAuthTokenCookie();\n // `/{store base}/{locale}/logout?from=…` → `/{store base}/{locale}`\n window.location.replace(window.location.href.replace(/\\/logout\\/?(\\?[^#]*)?(#.*)?$/, ''));\n }, []);\n return null;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { useDate } from './chunk-
|
|
1
|
+
import { useDate } from './chunk-55VTMG2H.js';
|
|
2
2
|
import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
3
|
-
import { Image } from './chunk-
|
|
3
|
+
import { Image } from './chunk-WF7DYPR6.js';
|
|
4
4
|
import { Link } from './chunk-AXW67SY7.js';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -61,5 +61,5 @@ function BlogListLayout({
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export { BlogArticleCard, BlogListLayout };
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-2BRCE7MK.js.map
|
|
65
|
+
//# sourceMappingURL=chunk-2BRCE7MK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-2BRCE7MK.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { orThrow, orUnauthorized } from './chunk-
|
|
1
|
+
import { orThrow, orUnauthorized } from './chunk-KBQXQKPZ.js';
|
|
2
2
|
import { api } from './chunk-P3OPJL6I.js';
|
|
3
3
|
import { queryOptions } from '@tanstack/react-query';
|
|
4
4
|
|
|
@@ -30,6 +30,15 @@ var order = {
|
|
|
30
30
|
const response = await api.get(`orders/${id}`).json();
|
|
31
31
|
return { order: response.data };
|
|
32
32
|
},
|
|
33
|
+
findForComponents: async (id) => {
|
|
34
|
+
const response = await api.get(`orders/${id}`, {
|
|
35
|
+
hooks: {
|
|
36
|
+
// Runs after the client's own hook, which marks every request as from a React theme.
|
|
37
|
+
beforeRequest: [({ request }) => request.headers.delete("s-theme-type")]
|
|
38
|
+
}
|
|
39
|
+
}).json();
|
|
40
|
+
return response.data;
|
|
41
|
+
},
|
|
33
42
|
shipments: async (orderId) => {
|
|
34
43
|
const response = await api.get(`orders/${orderId}/shipments`).json();
|
|
35
44
|
return response.data ?? [];
|
|
@@ -69,5 +78,5 @@ var order = {
|
|
|
69
78
|
};
|
|
70
79
|
|
|
71
80
|
export { order };
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-2QNDO2OY.js.map
|
|
82
|
+
//# sourceMappingURL=chunk-2QNDO2OY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/order.ts"],"names":[],"mappings":";;;;AAoDO,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAM,OAAO,MAAA,KAA2D;AACtE,IAAA,MAAM;AAAA,MACJ,IAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,eAAA,EAAiB,cAAA;AAAA,MACjB,UAAA,EAAY,SAAA;AAAA,MACZ;AAAA,KACF,GAAI,UAAU,EAAC;AAEf,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AACzC,IAAA,IAAI,SAAS,MAAA,EAAW,YAAA,CAAa,IAAI,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAC,CAAA;AAC7D,IAAA,IAAI,MAAA,EAAQ,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,MAAM,CAAA;AAC7C,IAAA,IAAI,MAAA,EAAQ,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,MAAM,CAAA;AAC7C,IAAA,IAAI,cAAA,EAAgB,YAAA,CAAa,GAAA,CAAI,iBAAA,EAAmB,cAAc,CAAA;AACtE,IAAA,IAAI,SAAA,EAAW,YAAA,CAAa,GAAA,CAAI,YAAA,EAAc,GAAG,CAAA;AAEjD,IAAA,MAAM,UAAmC,EAAC;AAC1C,IAAA,IAAI,MAAA,UAAgB,MAAA,GAAS,MAAA;AAE7B,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CACpB,GAAA,CAAI,CAAA,OAAA,EAAU,YAAA,CAAa,QAAA,EAAU,CAAA,CAAA,EAAI,OAAc,CAAA,CACvD,IAAA,EAA4D;AAE/D,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,QAAA,CAAS,IAAA,IAAQ,EAAC;AAAA,MACxB,QAAQ,QAAA,CAAS;AAAA,KACnB;AAAA,EACF,CAAA;AAAA,EAEA,IAAA,EAAM,OAAO,EAAA,KAA6C;AACxD,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,EAAE,CAAA,CAAE,EAAE,IAAA,EAAsB;AAErE,IAAA,OAAO,EAAE,KAAA,EAAO,QAAA,CAAS,IAAA,EAAK;AAAA,EAChC,CAAA;AAAA,EAEA,iBAAA,EAAmB,OAAO,EAAA,KAAuC;AAC/D,IAAA,MAAM,WAAW,MAAM,GAAA,CACpB,GAAA,CAAI,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI;AAAA,MACnB,KAAA,EAAO;AAAA;AAAA,QAEL,aAAA,EAAe,CAAC,CAAC,EAAE,OAAA,OAAc,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAC;AAAA;AACzE,KACD,EACA,IAAA,EAA8B;AACjC,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB,CAAA;AAAA,EAEA,SAAA,EAAW,OAAO,OAAA,KAAkD;AAClE,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CACpB,GAAA,CAAI,UAAU,OAAO,CAAA,UAAA,CAAY,EACjC,IAAA,EAAoC;AACvC,IAAA,OAAO,QAAA,CAAS,QAAQ,EAAC;AAAA,EAC3B,CAAA;AAAA,EAEA,OAAA,EAAS,OAAO,OAAA,KAAgD;AAC9D,IAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAO,CAAA,QAAA,CAAU,EAAE,IAAA,EAAkC;AAC9F,IAAA,OAAO,QAAA,CAAS,QAAQ,EAAC;AAAA,EAC3B,CAAA;AAAA,EAEA,aAAa,CAAC,EAAA,KAA6C,eAAe,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,EAExF,QAAA,EAAU,OAAO,OAAA,KAAmD;AAClE,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CACpB,IAAI,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAE,CAAA,CACnC,IAAA,EAAqC;AACxC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA,EAEA,iBAAiB,CAAC,OAAA,KAChB,QAAQ,KAAA,CAAM,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,EAEjC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,CAAC,MAAA,KACL,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,QAAA,EAAU,MAAA,EAAQ,MAAM,CAAA;AAAA,MACnC,OAAA,EAAS,CAAC,EAAE,MAAA,EAAO,KAAM,KAAA,CAAM,IAAA,CAAK,EAAE,GAAG,MAAA,EAAQ,MAAA,EAAQ;AAAA,KAC1D,CAAA;AAAA,IACH,IAAA,EAAM,CAAC,EAAA,KACL,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,QAAA,EAAU,QAAA,EAAU,EAAE,CAAA;AAAA,MACjC,OAAA,EAAS,MAAM,KAAA,CAAM,IAAA,CAAK,EAAE;AAAA,KAC7B,CAAA;AAAA,IACH,SAAA,EAAW,CAAC,OAAA,KACV,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,QAAA,EAAU,WAAA,EAAa,OAAO,CAAA;AAAA,MACzC,OAAA,EAAS,MAAM,KAAA,CAAM,SAAA,CAAU,OAAO;AAAA,KACvC,CAAA;AAAA,IACH,OAAA,EAAS,CAAC,OAAA,KACR,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,QAAA,EAAU,SAAA,EAAW,OAAO,CAAA;AAAA,MACvC,OAAA,EAAS,MAAM,KAAA,CAAM,OAAA,CAAQ,OAAO;AAAA,KACrC,CAAA;AAAA,IACH,QAAA,EAAU,CAAC,OAAA,KACT,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,QAAA,EAAU,UAAA,EAAY,OAAO,CAAA;AAAA,MACxC,OAAA,EAAS,MAAM,KAAA,CAAM,QAAA,CAAS,OAAO;AAAA,KACtC;AAAA;AAEP","file":"chunk-2QNDO2OY.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type {\n Order,\n OrderListItem,\n OrderShipmentItem,\n OrderRatingItem,\n} from '../routes/account/types';\nimport type { Pagination } from './types';\nimport { orThrow, orUnauthorized } from '../providers/NavigationProvider';\n\nexport interface OrderDetailResponse {\n order: Order;\n}\n\n/**\n * The order in the shape the Twilight web components read (`salla-order-details`,\n * `salla-order-totals-card`) and the Twig themes render: the API answers `orders/{id}` this\n * way when the request does not say it comes from a React theme (`s-theme-type`).\n */\nexport interface TwilightOrder {\n items: Array<{\n name: string;\n quantity: number;\n product?: { id: number; url?: string; type?: string; image?: { url?: string } };\n options?: unknown[];\n }>;\n [key: string]: unknown;\n}\n\nexport interface CheckoutThankYouData {\n thank_you_title?: string;\n messages?: string[];\n share_message?: string;\n short_share_message?: string;\n}\n\nexport interface OrdersListResponse {\n data: OrderListItem[];\n cursor?: Pagination;\n}\n\nexport interface OrdersListParams {\n page?: number;\n cursor?: string | null;\n status?: string;\n feedback_status?: string;\n /** When set, the list payload includes each order's `items[]` (`with_items=1`). */\n with_items?: boolean | number;\n signal?: AbortSignal;\n}\n\nexport const order = {\n list: async (params?: OrdersListParams): Promise<OrdersListResponse> => {\n const {\n page,\n cursor,\n status,\n feedback_status: feedbackStatus,\n with_items: withItems,\n signal,\n } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (status) searchParams.set('status', status);\n if (feedbackStatus) searchParams.set('feedback_status', feedbackStatus);\n if (withItems) searchParams.set('with_items', '1');\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`orders?${searchParams.toString()}`, options as any)\n .json<{ data: OrderListItem[] | null; cursor?: Pagination }>();\n\n return {\n data: response.data ?? [],\n cursor: response.cursor,\n };\n },\n\n find: async (id: string): Promise<OrderDetailResponse> => {\n const response = await api.get(`orders/${id}`).json<{ data: Order }>();\n\n return { order: response.data };\n },\n\n findForComponents: async (id: string): Promise<TwilightOrder> => {\n const response = await api\n .get(`orders/${id}`, {\n hooks: {\n // Runs after the client's own hook, which marks every request as from a React theme.\n beforeRequest: [({ request }) => request.headers.delete('s-theme-type')],\n },\n })\n .json<{ data: TwilightOrder }>();\n return response.data;\n },\n\n shipments: async (orderId: string): Promise<OrderShipmentItem[]> => {\n const response = await api\n .get(`orders/${orderId}/shipments`)\n .json<{ data: OrderShipmentItem[] }>();\n return response.data ?? [];\n },\n\n ratings: async (orderId: string): Promise<OrderRatingItem[]> => {\n const response = await api.get(`orders/${orderId}/ratings`).json<{ data: OrderRatingItem[] }>();\n return response.data ?? [];\n },\n\n findOrThrow: (id: string): Promise<OrderDetailResponse> => orUnauthorized(order.find(id)),\n\n thankYou: async (orderId: string): Promise<CheckoutThankYouData> => {\n const { data } = await api\n .get(`checkout/thank-you/${orderId}`)\n .json<{ data: CheckoutThankYouData }>();\n return data;\n },\n\n thankYouOrThrow: (orderId: string): Promise<CheckoutThankYouData> =>\n orThrow(order.thankYou(orderId)),\n\n queries: {\n list: (params?: Omit<OrdersListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['orders', 'list', params],\n queryFn: ({ signal }) => order.list({ ...params, signal }),\n }),\n find: (id: string) =>\n queryOptions({\n queryKey: ['orders', 'detail', id],\n queryFn: () => order.find(id),\n }),\n shipments: (orderId: string) =>\n queryOptions({\n queryKey: ['orders', 'shipments', orderId],\n queryFn: () => order.shipments(orderId),\n }),\n ratings: (orderId: string) =>\n queryOptions({\n queryKey: ['orders', 'ratings', orderId],\n queryFn: () => order.ratings(orderId),\n }),\n thankYou: (orderId: string) =>\n queryOptions({\n queryKey: ['orders', 'thankYou', orderId],\n queryFn: () => order.thankYou(orderId),\n }),\n },\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { home } from './chunk-NQVJ7NJ6.js';
|
|
2
2
|
import { buildHreflangAlternates } from './chunk-TZ3E5BN4.js';
|
|
3
|
-
import { HomeComponentRenderer } from './chunk-
|
|
3
|
+
import { HomeComponentRenderer } from './chunk-GRV7ELSP.js';
|
|
4
4
|
import { useDevHomeComponentOverrides } from './chunk-2JV6WZ6O.js';
|
|
5
5
|
import { RouteId } from './chunk-ZGHRSRDO.js';
|
|
6
6
|
import { getTwilightContext } from './chunk-N2S25NXP.js';
|
|
@@ -84,5 +84,5 @@ function head(ctx) {
|
|
|
84
84
|
var Home = { id: RouteId.INDEX, loader, head, Component: HomePage };
|
|
85
85
|
|
|
86
86
|
export { Home, HomeSkeleton, homeLoader };
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
//# sourceMappingURL=chunk-347K33DP.js.map
|
|
88
|
+
//# sourceMappingURL=chunk-347K33DP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/home/loader.ts","../src/routes/home/HomePage.tsx","../src/routes/home/index.tsx"],"names":["HomeSkeleton","HomePage"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/routes/home/loader.ts","../src/routes/home/HomePage.tsx","../src/routes/home/index.tsx"],"names":["HomeSkeleton","HomePage"],"mappings":"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","file":"chunk-347K33DP.js","sourcesContent":["import { getTwilightContext } from '../../twilight/context';\nimport { home } from '../../api/home';\nimport type { HomeComponentData } from '../../types';\nimport { RouteId } from '../../router/route-ids';\n\nexport interface HomeLoaderData {\n locale: string;\n components: HomeComponentData[];\n page: { slug: string };\n}\n\nexport async function homeLoader(ctx?: { locale?: string }): Promise<HomeLoaderData> {\n const { queryClient } = getTwilightContext();\n const components = await queryClient.ensureQueryData(home.queries.components());\n const result = {\n locale: ctx?.locale || 'ar',\n components: components.map((comp) => ({\n ...comp,\n path: comp.path?.replace('home.', '') || comp.path,\n })),\n page: { slug: RouteId.INDEX },\n };\n return result;\n}\n","import { memo } from 'react';\nimport { useDevHomeComponentOverrides } from '../../dev/dev-settings-store';\nimport { HookSlot } from '../../hooks';\nimport { HomeComponentRenderer } from '../../components/home';\nimport type { HomePageProps } from './types';\nimport { Pulse } from '@salla.sa/twilight-components-react';\n\nexport const HomeSkeleton = memo(function HomeSkeleton() {\n return (\n <>\n <div className=\"s-block container skeleton-block-hero\">\n <Pulse className=\"h-64 sm:h-80 rounded-md\" />\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n <div className=\"s-block container skeleton-block-products\">\n <Pulse className=\"h-10 w-48 mb-4\" />\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <Pulse key={i} className=\"h-56\" />\n ))}\n </div>\n </div>\n </>\n );\n});\n\nexport const HomePage = memo(function HomePage({ components = [] }: HomePageProps) {\n // Dev-mode only: overlay DevSettingsWidget component-field overrides onto the\n // blocks so edits render live. No-op passthrough in production builds.\n const renderedComponents = useDevHomeComponentOverrides(components);\n return (\n <>\n <HookSlot name=\"home:start\" />\n <HookSlot name=\"home:content\" />\n {renderedComponents.map((data, index) => (\n // `data.key` is the twilight.json catalog id, shared by every placement\n // of that block. Platform blocks send null. Position is unique.\n <HomeComponentRenderer key={index} data={data} index={index} />\n ))}\n <HookSlot name=\"home:end\" />\n </>\n );\n});\n\nexport { HomePage as default };\n","import type { HeadDescriptor } from '../../utils/head';\nimport { buildHreflangAlternates } from '../../utils/baseHead';\nimport type { HomeLoaderData } from './loader';\nimport { homeLoader } from './loader';\nimport type { TwilightContext } from '../../twilight/context';\nimport { HomePage } from './HomePage';\nimport { RouteId } from '../../router/route-ids';\n\nexport { HomeSkeleton } from './HomePage';\nexport { registerHomeComponents, DefaultHomeComponents } from '../../components/home/register';\nexport { registerHomeComponentConfig } from '../../components/home';\nexport type { HomePageProps } from './types';\nexport type { HomeLoaderData } from './loader';\nexport type {\n HomeComponentsProps,\n AnyHomeComponent,\n HomeComponentConfig,\n} from '../../components/home';\n\nfunction loader(_ctx?: { locale?: string }): Promise<HomeLoaderData> {\n return homeLoader({ locale: _ctx?.locale });\n}\n\nfunction head(ctx: TwilightContext): HeadDescriptor {\n const store = ctx.settings?.store;\n if (!store) return {};\n\n const title = store.meta?.title ?? store.name;\n const description = store.meta?.description ?? store.description;\n const keywords = store.meta?.keywords;\n\n return {\n title,\n description,\n keywords,\n canonical: store.url,\n openGraph: {\n type: 'website',\n title,\n description,\n images: store.logo,\n url: store.url,\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n images: store.logo,\n },\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n}\n\nexport const Home = { id: RouteId.INDEX, loader, head, Component: HomePage } as const;\n\nexport { homeLoader };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { orThrow } from './chunk-
|
|
1
|
+
import { orThrow } from './chunk-KBQXQKPZ.js';
|
|
2
2
|
import { api } from './chunk-P3OPJL6I.js';
|
|
3
3
|
import { queryOptions } from '@tanstack/react-query';
|
|
4
4
|
|
|
@@ -63,5 +63,5 @@ var blog = {
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
export { blog };
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-43XFO6KF.js.map
|
|
67
|
+
//# sourceMappingURL=chunk-43XFO6KF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/api/blog.ts"],"names":[],"mappings":"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","file":"chunk-43XFO6KF.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { Options as KyOptions } from 'ky';\nimport { api } from './client';\nimport type { Pagination } from './types';\nimport type {\n ArticleSummary,\n ArticleDetail,\n BlogAuthor,\n BlogCategory,\n BlogTag,\n BlogOverview,\n} from '../routes/blog/types';\nimport { orThrow } from '../providers/NavigationProvider';\n\nexport interface BlogArticlesListParams {\n category?: string;\n author?: string;\n tag?: string;\n page?: number;\n cursor?: string | null;\n signal?: AbortSignal;\n}\n\nexport interface BlogArticlesListResponse {\n data: ArticleSummary[];\n categories?: BlogCategory[];\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n}\n\nexport interface BlogGetResponse {\n data: {\n categories: BlogCategory[] | null;\n slides: ArticleSummary[] | null;\n articles: ArticleSummary[] | null;\n popular: ArticleSummary[] | null;\n };\n}\n\nexport const blog = {\n get: async (signal?: AbortSignal): Promise<BlogOverview> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api.get('blog', options as KyOptions).json<BlogGetResponse>();\n\n return {\n categories: response.data.categories ?? [],\n slides: response.data.slides ?? [],\n articles: response.data.articles ?? [],\n popular: response.data.popular ?? [],\n };\n },\n\n articles: {\n list: async (params?: BlogArticlesListParams): Promise<BlogArticlesListResponse> => {\n const { category, author, tag, page, cursor, signal } = params ?? {};\n\n const searchParams = new URLSearchParams();\n if (page !== undefined) searchParams.set('page', String(page));\n if (cursor) searchParams.set('cursor', cursor);\n if (category) searchParams.set('category', category);\n if (author) searchParams.set('author', author);\n if (tag) searchParams.set('tag', tag);\n\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles?${searchParams.toString()}`, options as KyOptions)\n .json<{\n data: ArticleSummary[] | null;\n categories?: BlogCategory[] | null;\n category: BlogCategory;\n author: BlogAuthor;\n tag: BlogTag;\n cursor: Pagination;\n }>();\n\n return {\n data: response.data ?? [],\n categories: response.categories ?? undefined,\n category: response.category,\n author: response.author,\n tag: response.tag,\n cursor: response.cursor,\n };\n },\n\n find: async (id: string, signal?: AbortSignal): Promise<ArticleDetail> => {\n const options: Record<string, unknown> = {};\n if (signal) options.signal = signal;\n\n const response = await api\n .get(`blog/articles/${id}`, options as KyOptions)\n .json<{ data: ArticleDetail | null }>();\n\n if (!response.data) {\n throw new Error(`Article ${id} not found`);\n }\n\n return response.data;\n },\n\n findOrThrow: (id: string, signal?: AbortSignal): Promise<ArticleDetail> =>\n orThrow(blog.articles.find(id, signal)),\n },\n\n queries: {\n overview: () =>\n queryOptions({\n queryKey: ['blog', 'overview'],\n queryFn: ({ signal }) => blog.get(signal),\n }),\n articles: (params?: Omit<BlogArticlesListParams, 'signal'>) =>\n queryOptions({\n queryKey: ['blog', 'articles', params],\n queryFn: ({ signal }) => blog.articles.list({ ...params, signal }),\n }),\n article: (id: string) =>\n queryOptions({\n queryKey: ['blog', 'article', id],\n queryFn: ({ signal }) => blog.articles.find(id, signal),\n }),\n },\n};\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Header } from './chunk-
|
|
1
|
+
import { Header } from './chunk-UEKIAED3.js';
|
|
2
2
|
import { Copyright } from './chunk-JKIRRMBU.js';
|
|
3
3
|
import { useDevSettingsOverrides } from './chunk-2JV6WZ6O.js';
|
|
4
4
|
import { apps } from './chunk-UIOLSYKV.js';
|
|
5
5
|
import { color } from './chunk-VVZNW5CB.js';
|
|
6
6
|
import { applyThemeHookSlots, installAppScope } from './chunk-2XGQSJKH.js';
|
|
7
|
-
import { useLocation, useIsHome, NavigationInterceptor } from './chunk-
|
|
7
|
+
import { useLocation, useIsHome, NavigationInterceptor } from './chunk-KBQXQKPZ.js';
|
|
8
8
|
import { useUser } from './chunk-UZKTK6YV.js';
|
|
9
9
|
import { syncSdkLocale } from './chunk-WY4IYO3G.js';
|
|
10
10
|
import { AUTH_TOKEN_COOKIE_NAME, rememberDevStoreId, clearAuthTokenCookie, syncScopeCookie } from './chunk-SR4OTLTJ.js';
|
|
@@ -16,10 +16,10 @@ import { FALLBACK_LOCALE, getLanguageInfo } from './chunk-T72DAX7R.js';
|
|
|
16
16
|
import { WidgetHead } from './chunk-RJPPO3ET.js';
|
|
17
17
|
import { HookSlot } from './chunk-Q7VWURUR.js';
|
|
18
18
|
import { hookRegistry } from './chunk-GU2KUQVD.js';
|
|
19
|
-
import { Image } from './chunk-
|
|
19
|
+
import { Image } from './chunk-WF7DYPR6.js';
|
|
20
20
|
import { Link } from './chunk-AXW67SY7.js';
|
|
21
21
|
import { LazyImageModal } from './chunk-CUG6VOLM.js';
|
|
22
|
-
import { Toaster } from './chunk-
|
|
22
|
+
import { Toaster } from './chunk-SVPXQCOA.js';
|
|
23
23
|
import { useTwilight, TwilightContext } from './chunk-DF6FBKDN.js';
|
|
24
24
|
import React2, { lazy, Suspense, useEffect, useCallback, useMemo, useRef, useState } from 'react';
|
|
25
25
|
import { SallaAppsIcons } from '@salla.sa/twilight-components-react/apps-icons';
|
|
@@ -109,7 +109,7 @@ function ThemeDocumentSync({
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
// src/utils/engine-version.ts
|
|
112
|
-
var ENGINE_VERSION = "1.0.
|
|
112
|
+
var ENGINE_VERSION = "1.0.65" ;
|
|
113
113
|
|
|
114
114
|
// src/providers/twilight-init.ts
|
|
115
115
|
function getSalla() {
|
|
@@ -132,6 +132,7 @@ function withSettingsUser(sdk, settings) {
|
|
|
132
132
|
user: { ...visitor, currency_code: sdk.cookie?.get?.("s-curr") ?? SDK_GUEST_CURRENCY }
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
|
+
var initializedSdks = /* @__PURE__ */ new WeakSet();
|
|
135
136
|
function useTwilightInit({
|
|
136
137
|
debug: _debug,
|
|
137
138
|
initialData,
|
|
@@ -196,7 +197,10 @@ function useTwilightInit({
|
|
|
196
197
|
url: pageCtx.url ?? ctx.location.pathname + ctx.location.searchStr
|
|
197
198
|
}
|
|
198
199
|
} : baseData;
|
|
199
|
-
|
|
200
|
+
if (!initializedSdks.has(sdk)) {
|
|
201
|
+
initializedSdks.add(sdk);
|
|
202
|
+
sdk.init(initData);
|
|
203
|
+
}
|
|
200
204
|
const initSdk = async () => {
|
|
201
205
|
try {
|
|
202
206
|
await sdk.onReady();
|
|
@@ -224,13 +228,13 @@ function useTwilightInit({
|
|
|
224
228
|
}
|
|
225
229
|
var navigationSetups = {
|
|
226
230
|
tanstack: lazy(
|
|
227
|
-
() => import('./navigation-
|
|
231
|
+
() => import('./navigation-WB75NC6Y.js').then((m) => ({ default: m.NavigationSetup }))
|
|
228
232
|
),
|
|
229
|
-
nextjs: lazy(() => import('./navigation-
|
|
233
|
+
nextjs: lazy(() => import('./navigation-DU3BF72V.js').then((m) => ({ default: m.NavigationSetup })))
|
|
230
234
|
};
|
|
231
235
|
var routeDocumentSyncs = {
|
|
232
236
|
tanstack: lazy(
|
|
233
|
-
() => import('./document-class-
|
|
237
|
+
() => import('./document-class-ZLPAWZEX.js').then((m) => ({
|
|
234
238
|
default: m.TanStackDocumentSync
|
|
235
239
|
}))
|
|
236
240
|
)
|
|
@@ -317,18 +321,14 @@ function useNumber() {
|
|
|
317
321
|
useArabicNumerals
|
|
318
322
|
};
|
|
319
323
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
var
|
|
323
|
-
function
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
if (!fmt) {
|
|
327
|
-
fmt = new Intl.NumberFormat(loc, opts);
|
|
328
|
-
intlCache.set(key, fmt);
|
|
329
|
-
}
|
|
330
|
-
return fmt;
|
|
324
|
+
|
|
325
|
+
// src/utils/number.ts
|
|
326
|
+
var ARABIC_NUMERALS2 = ["\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"];
|
|
327
|
+
function toArabicNumerals(input) {
|
|
328
|
+
const str = String(input);
|
|
329
|
+
return str.replace(/[0-9]/g, (d) => ARABIC_NUMERALS2[parseInt(d)]);
|
|
331
330
|
}
|
|
331
|
+
var SAR_SYMBOLS = ["SAR", "\u0631.\u0633"];
|
|
332
332
|
var parse = (moneyString) => {
|
|
333
333
|
const cleaned = moneyString.replace(/[^\d.,٬٫]/g, "");
|
|
334
334
|
const normalized = cleaned.replace(/٬/g, "").replace(/٫/g, ".");
|
|
@@ -347,48 +347,28 @@ var isValid = (value) => {
|
|
|
347
347
|
return false;
|
|
348
348
|
};
|
|
349
349
|
function useMoney() {
|
|
350
|
-
const { store } = useTwilight();
|
|
351
|
-
const { locale } = useTranslation();
|
|
350
|
+
const { store, settings } = useTwilight();
|
|
352
351
|
const useArabicNumerals = store?.settings?.arabic_numbers_enabled ?? false;
|
|
352
|
+
const useSarSymbol = store?.settings?.use_sar_symbol ?? false;
|
|
353
353
|
const format = (amount, options) => {
|
|
354
354
|
const currency = options?.currency ?? "SAR";
|
|
355
|
-
const loc = options?.locale ?? locale;
|
|
356
355
|
const type = options?.type ?? "product";
|
|
357
356
|
if (amount == null || amount === "") {
|
|
358
357
|
const showDash = type === "product" ? store?.settings?.product?.show_price_as_dash : false;
|
|
359
358
|
return showDash ? "-" : "";
|
|
360
359
|
}
|
|
361
|
-
const numericAmount = typeof amount === "string" ? parseFloat(amount) : amount;
|
|
362
360
|
if (typeof amount === "string" && amount === "-") return amount;
|
|
363
|
-
if (isNaN(
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
}
|
|
368
|
-
let formatted = getCachedIntl(loc, {
|
|
369
|
-
minimumFractionDigits: 2,
|
|
370
|
-
maximumFractionDigits: 2
|
|
371
|
-
}).format(numericAmount);
|
|
372
|
-
if (useArabicNumerals && loc.startsWith(AR_LOCALE)) {
|
|
373
|
-
formatted = formatted.replace(/[0-9]/g, (d) => "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669"[parseInt(d)]);
|
|
374
|
-
}
|
|
375
|
-
if (currency === SAR_CURRENCY) {
|
|
361
|
+
if (isNaN(typeof amount === "string" ? parseFloat(amount) : amount)) return String(amount);
|
|
362
|
+
const number = useArabicNumerals ? toArabicNumerals(amount).replace(".", "\u066B") : String(amount);
|
|
363
|
+
const symbol = settings?.currencies?.[currency]?.symbol ?? currency;
|
|
364
|
+
if (useSarSymbol && SAR_SYMBOLS.includes(symbol)) {
|
|
376
365
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
377
|
-
|
|
366
|
+
number,
|
|
378
367
|
" ",
|
|
379
368
|
/* @__PURE__ */ jsx("i", { className: "sicon-sar" })
|
|
380
369
|
] });
|
|
381
370
|
}
|
|
382
|
-
|
|
383
|
-
return getCachedIntl(loc, {
|
|
384
|
-
style: "currency",
|
|
385
|
-
currency,
|
|
386
|
-
minimumFractionDigits: 2,
|
|
387
|
-
maximumFractionDigits: 2
|
|
388
|
-
}).format(numericAmount);
|
|
389
|
-
} catch {
|
|
390
|
-
return `${formatted} ${currency}`;
|
|
391
|
-
}
|
|
371
|
+
return `${number} ${symbol}`;
|
|
392
372
|
};
|
|
393
373
|
return { format, parse, isValid };
|
|
394
374
|
}
|
|
@@ -774,7 +754,7 @@ var LazySiftSnippet = lazy(
|
|
|
774
754
|
() => import('./SiftSnippet-5FCU6TR6.js').then((m) => ({ default: m.SiftSnippet }))
|
|
775
755
|
);
|
|
776
756
|
var LazyStoreClosedNotification = lazy(
|
|
777
|
-
() => import('./StoreClosedNotification-
|
|
757
|
+
() => import('./StoreClosedNotification-5F4I3N27.js').then((m) => ({
|
|
778
758
|
default: m.StoreClosedNotification
|
|
779
759
|
}))
|
|
780
760
|
);
|
|
@@ -1357,5 +1337,5 @@ function useStore() {
|
|
|
1357
1337
|
}
|
|
1358
1338
|
|
|
1359
1339
|
export { Footer, MasterLayout, TwilightProvider, fastCheckoutScript, registerDefaultHooks, registerDocumentSync, routeDocumentSyncs, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore };
|
|
1360
|
-
//# sourceMappingURL=chunk-
|
|
1361
|
-
//# sourceMappingURL=chunk-
|
|
1340
|
+
//# sourceMappingURL=chunk-55VTMG2H.js.map
|
|
1341
|
+
//# sourceMappingURL=chunk-55VTMG2H.js.map
|