@salla.sa/twilight-theme-engine 1.0.86 → 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/README.md +4 -3
- package/bin/twilight-check-manifest.mjs +16 -0
- package/dist/{AddToCartForm-5X2WZDWR.js → AddToCartForm-YY7DDANL.js} +4 -4
- package/dist/{AddToCartForm-5X2WZDWR.js.map → AddToCartForm-YY7DDANL.js.map} +1 -1
- package/dist/{BlogAuthorPage-LO7FSSJR.js → BlogAuthorPage-4IXOEQA4.js} +9 -9
- package/dist/{BlogAuthorPage-LO7FSSJR.js.map → BlogAuthorPage-4IXOEQA4.js.map} +1 -1
- package/dist/{BlogCategoryPage-KKFQ3PGR.js → BlogCategoryPage-NYB7EMKQ.js} +9 -9
- package/dist/{BlogCategoryPage-KKFQ3PGR.js.map → BlogCategoryPage-NYB7EMKQ.js.map} +1 -1
- package/dist/{BlogPage-VLF3NSGE.js → BlogPage-B2A47OBZ.js} +8 -8
- package/dist/{BlogPage-VLF3NSGE.js.map → BlogPage-B2A47OBZ.js.map} +1 -1
- package/dist/{BlogSinglePage-AVK535IW.js → BlogSinglePage-ZSOHP2GJ.js} +8 -8
- package/dist/{BlogSinglePage-AVK535IW.js.map → BlogSinglePage-ZSOHP2GJ.js.map} +1 -1
- package/dist/{BlogTagPage-F3T4D7RH.js → BlogTagPage-24MZSPCO.js} +9 -9
- package/dist/{BlogTagPage-F3T4D7RH.js.map → BlogTagPage-24MZSPCO.js.map} +1 -1
- package/dist/{BrandsPage-LVSBZSVC.js → BrandsPage-WJUCPMKH.js} +8 -8
- package/dist/{BrandsPage-LVSBZSVC.js.map → BrandsPage-WJUCPMKH.js.map} +1 -1
- package/dist/{Breadcrumb-VLFTXRFC.js → Breadcrumb-TMUSQ2XY.js} +8 -8
- package/dist/{Breadcrumb-VLFTXRFC.js.map → Breadcrumb-TMUSQ2XY.js.map} +1 -1
- package/dist/{CartItem-G3H34GW6.js → CartItem-QH6X7576.js} +8 -8
- package/dist/{CartItem-G3H34GW6.js.map → CartItem-QH6X7576.js.map} +1 -1
- package/dist/{CartSummary-VH37RPUI.js → CartSummary-MERS5R3X.js} +8 -8
- package/dist/{CartSummary-VH37RPUI.js.map → CartSummary-MERS5R3X.js.map} +1 -1
- package/dist/{Copyright-HE5ZWINZ.js → Copyright-JPOX7PLQ.js} +4 -4
- package/dist/{Copyright-HE5ZWINZ.js.map → Copyright-JPOX7PLQ.js.map} +1 -1
- package/dist/{CustomerLayout-LKBLOAVW.js → CustomerLayout-ER5SZO7U.js} +8 -8
- package/dist/{CustomerLayout-LKBLOAVW.js.map → CustomerLayout-ER5SZO7U.js.map} +1 -1
- package/dist/{Footer-HHXAST72.js → Footer-7O5CQ72M.js} +5 -5
- package/dist/{Footer-HHXAST72.js.map → Footer-7O5CQ72M.js.map} +1 -1
- package/dist/{Header-GEVZM2YG.js → Header-CH56KO3D.js} +5 -5
- package/dist/{Header-GEVZM2YG.js.map → Header-CH56KO3D.js.map} +1 -1
- package/dist/{LoyaltyPage-M5CT3CFD.js → LoyaltyPage-S74ZELSW.js} +8 -8
- package/dist/{LoyaltyPage-M5CT3CFD.js.map → LoyaltyPage-S74ZELSW.js.map} +1 -1
- package/dist/{LoyaltyPointsPage-SDJB52U6.js → LoyaltyPointsPage-TCKZTXSB.js} +3 -3
- package/dist/{LoyaltyPointsPage-SDJB52U6.js.map → LoyaltyPointsPage-TCKZTXSB.js.map} +1 -1
- package/dist/{MainMenu-I7EYS752.js → MainMenu-3WDXPG2J.js} +4 -4
- package/dist/{MainMenu-I7EYS752.js.map → MainMenu-3WDXPG2J.js.map} +1 -1
- package/dist/{MasterLayout-QDK4T3NE.js → MasterLayout-EC6LIXFB.js} +8 -8
- package/dist/{MasterLayout-QDK4T3NE.js.map → MasterLayout-EC6LIXFB.js.map} +1 -1
- package/dist/{MobileMenu-7VTCWAVJ.js → MobileMenu-VIMGPLKV.js} +8 -8
- package/dist/{MobileMenu-7VTCWAVJ.js.map → MobileMenu-VIMGPLKV.js.map} +1 -1
- package/dist/{NotificationsPage-QCABE6QD.js → NotificationsPage-HYID6XAA.js} +8 -8
- package/dist/{NotificationsPage-QCABE6QD.js.map → NotificationsPage-HYID6XAA.js.map} +1 -1
- package/dist/{OrderSinglePage-2HVBKBG4.js → OrderSinglePage-5GMYPKA6.js} +8 -8
- package/dist/{OrderSinglePage-2HVBKBG4.js.map → OrderSinglePage-5GMYPKA6.js.map} +1 -1
- package/dist/{OrdersPage-5MNCPCM3.js → OrdersPage-SKTTDOJ6.js} +8 -8
- package/dist/{OrdersPage-5MNCPCM3.js.map → OrdersPage-SKTTDOJ6.js.map} +1 -1
- package/dist/{PageSingle-EN5XIM2B.js → PageSingle-RNWFQQEM.js} +4 -4
- package/dist/{PageSingle-EN5XIM2B.js.map → PageSingle-RNWFQQEM.js.map} +1 -1
- package/dist/{ProductDetails-UEWQPPDZ.js → ProductDetails-OYPJ6MW7.js} +4 -4
- package/dist/{ProductDetails-UEWQPPDZ.js.map → ProductDetails-OYPJ6MW7.js.map} +1 -1
- package/dist/{ProfilePage-TZSU3GHZ.js → ProfilePage-BQE63RHK.js} +8 -8
- package/dist/{ProfilePage-TZSU3GHZ.js.map → ProfilePage-BQE63RHK.js.map} +1 -1
- package/dist/{ReviewsPage-WYZ6CHF2.js → ReviewsPage-VEYN7BSR.js} +4 -4
- package/dist/{ReviewsPage-WYZ6CHF2.js.map → ReviewsPage-VEYN7BSR.js.map} +1 -1
- package/dist/{SeoCartWidget-5JR5RXQM.js → SeoCartWidget-3BVMA4WY.js} +8 -8
- package/dist/{SeoCartWidget-5JR5RXQM.js.map → SeoCartWidget-3BVMA4WY.js.map} +1 -1
- package/dist/{SettingsPage-DIDRQXMM.js → SettingsPage-QLKKYVGH.js} +8 -8
- package/dist/{SettingsPage-DIDRQXMM.js.map → SettingsPage-QLKKYVGH.js.map} +1 -1
- package/dist/{StoreClosedNotification-C2G32E34.js → StoreClosedNotification-LQXGW2SB.js} +9 -9
- package/dist/{StoreClosedNotification-C2G32E34.js.map → StoreClosedNotification-LQXGW2SB.js.map} +1 -1
- package/dist/{TestimonialsPage-XPHFRBZ7.js → TestimonialsPage-OKDDAMJL.js} +4 -4
- package/dist/{TestimonialsPage-XPHFRBZ7.js.map → TestimonialsPage-OKDDAMJL.js.map} +1 -1
- package/dist/{ThankYouPage-UA6YYFB2.js → ThankYouPage-YWLG6UF7.js} +8 -8
- package/dist/{ThankYouPage-UA6YYFB2.js.map → ThankYouPage-YWLG6UF7.js.map} +1 -1
- package/dist/{WalletPage-AJVV7LVL.js → WalletPage-UEYRVSWR.js} +8 -8
- package/dist/{WalletPage-AJVV7LVL.js.map → WalletPage-UEYRVSWR.js.map} +1 -1
- package/dist/{WishlistPage-UW6LJLSW.js → WishlistPage-7257GI3Y.js} +8 -8
- package/dist/{WishlistPage-UW6LJLSW.js.map → WishlistPage-7257GI3Y.js.map} +1 -1
- package/dist/{chunk-4WVJJ7SN.js → chunk-6VOF5SB4.js} +3 -3
- package/dist/{chunk-4WVJJ7SN.js.map → chunk-6VOF5SB4.js.map} +1 -1
- package/dist/{chunk-WSDG4ZRI.js → chunk-7JVKUFFT.js} +4 -4
- package/dist/{chunk-WSDG4ZRI.js.map → chunk-7JVKUFFT.js.map} +1 -1
- package/dist/{chunk-BAYGWTNM.js → chunk-7PQPQEDN.js} +3 -3
- package/dist/{chunk-BAYGWTNM.js.map → chunk-7PQPQEDN.js.map} +1 -1
- package/dist/{chunk-E26YG3AO.js → chunk-A64SSH6M.js} +4 -4
- package/dist/{chunk-E26YG3AO.js.map → chunk-A64SSH6M.js.map} +1 -1
- package/dist/chunk-AUC6QMF7.js +14 -0
- package/dist/{chunk-QJYUTRAQ.js.map → chunk-AUC6QMF7.js.map} +1 -1
- package/dist/{chunk-PWTXR4RR.js → chunk-CTCVO7YU.js} +8 -9
- package/dist/chunk-CTCVO7YU.js.map +1 -0
- package/dist/{chunk-HQ7WA37L.js → chunk-H42Z4YFB.js} +7 -7
- package/dist/{chunk-HQ7WA37L.js.map → chunk-H42Z4YFB.js.map} +1 -1
- package/dist/{chunk-CLBFF2CY.js → chunk-NB7KGKLY.js} +3 -3
- package/dist/{chunk-CLBFF2CY.js.map → chunk-NB7KGKLY.js.map} +1 -1
- package/dist/{chunk-2HCCIHU7.js → chunk-NNNTEVFU.js} +4 -4
- package/dist/{chunk-2HCCIHU7.js.map → chunk-NNNTEVFU.js.map} +1 -1
- package/dist/{chunk-X54QP332.js → chunk-PKXEZRSJ.js} +5 -5
- package/dist/{chunk-X54QP332.js.map → chunk-PKXEZRSJ.js.map} +1 -1
- package/dist/{chunk-U55ZJC2X.js → chunk-SYVIMWYW.js} +18 -21
- package/dist/chunk-SYVIMWYW.js.map +1 -0
- package/dist/{chunk-KP3VYG4F.js → chunk-UKLZQK2J.js} +6 -6
- package/dist/{chunk-KP3VYG4F.js.map → chunk-UKLZQK2J.js.map} +1 -1
- package/dist/{chunk-DBXH3EMJ.js → chunk-V5OF7CV4.js} +3 -3
- package/dist/{chunk-DBXH3EMJ.js.map → chunk-V5OF7CV4.js.map} +1 -1
- package/dist/chunk-X5NK4TZH.js +228 -0
- package/dist/chunk-X5NK4TZH.js.map +1 -0
- package/dist/cli/check-manifest.d.ts +10 -0
- package/dist/cli/check-manifest.d.ts.map +1 -0
- package/dist/cli/check-manifest.js +44 -0
- package/dist/cli/check-manifest.js.map +1 -0
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/index.js +2 -2
- package/dist/components/drawer/index.js +6 -6
- package/dist/components/home/index.js +8 -8
- package/dist/components/layout/Footer.d.ts.map +1 -1
- package/dist/components/layout/MasterLayout.d.ts.map +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/product/index.js +7 -7
- package/dist/components/store/index.js +8 -8
- package/dist/{document-class-7AXAAWGZ.js → document-class-WMKWZN7O.js} +3 -3
- package/dist/{document-class-7AXAAWGZ.js.map → document-class-WMKWZN7O.js.map} +1 -1
- package/dist/hooks/index.js +6 -6
- package/dist/hooks/useGtm.js +6 -6
- package/dist/hooks/useMoney.js +6 -6
- package/dist/hooks/useStore.js +6 -6
- package/dist/index.js +6 -6
- package/dist/{not-found-3EEMQZMU.js → not-found-NAXLRGC2.js} +8 -8
- package/dist/{not-found-3EEMQZMU.js.map → not-found-NAXLRGC2.js.map} +1 -1
- package/dist/providers/index.js +6 -6
- 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 +10 -10
- package/dist/routes/home.js +9 -9
- package/dist/routes/loyalty.js +2 -2
- package/dist/routes/page.js +1 -1
- package/dist/routes/product-listing.js +8 -8
- package/dist/routes/product.js +8 -8
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +1 -1
- package/dist/skeleton.js +9 -9
- package/dist/tanstack.js +3 -3
- package/dist/utils/index.js +1 -1
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +15 -26
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/plugins/twilight-manifest.d.ts +23 -0
- package/dist/vite/plugins/twilight-manifest.d.ts.map +1 -1
- package/dist/vite/plugins/twilight-schema.plugin.d.ts.map +1 -1
- package/package.json +5 -1
- package/tailwind/components/layout/Footer.tsx.txt +20 -19
- package/tailwind/components/layout/MasterLayout.tsx.txt +0 -1
- package/dist/chunk-PWTXR4RR.js.map +0 -1
- package/dist/chunk-QJYUTRAQ.js +0 -14
- package/dist/chunk-U55ZJC2X.js.map +0 -1
package/dist/hooks/useStore.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { useStore } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-2JV6WZ6O.js';
|
|
1
|
+
export { useStore } from '../chunk-CTCVO7YU.js';
|
|
2
|
+
import '../chunk-PKXEZRSJ.js';
|
|
3
|
+
import '../chunk-SYVIMWYW.js';
|
|
5
4
|
import '../chunk-E7WWO3V3.js';
|
|
5
|
+
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
7
7
|
import '../chunk-ZVZGLEZ6.js';
|
|
8
8
|
import '../chunk-VVZNW5CB.js';
|
|
@@ -32,10 +32,10 @@ import '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
import '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-V5OF7CV4.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
|
-
import '../chunk-SKLEJJ6M.js';
|
|
38
37
|
import '../chunk-BYMOPN2S.js';
|
|
38
|
+
import '../chunk-SKLEJJ6M.js';
|
|
39
39
|
import '../chunk-6BZ5TKEV.js';
|
|
40
40
|
import '../chunk-FZKRSGLP.js';
|
|
41
41
|
import '../chunk-7V5HOZW4.js';
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { registry } from './chunk-Y32RHCOH.js';
|
|
2
2
|
export { ComponentRegistry, registry } from './chunk-Y32RHCOH.js';
|
|
3
|
-
export { TwilightProvider } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-2JV6WZ6O.js';
|
|
3
|
+
export { TwilightProvider } from './chunk-CTCVO7YU.js';
|
|
4
|
+
import './chunk-PKXEZRSJ.js';
|
|
5
|
+
import './chunk-SYVIMWYW.js';
|
|
7
6
|
import './chunk-E7WWO3V3.js';
|
|
7
|
+
import './chunk-2JV6WZ6O.js';
|
|
8
8
|
import './chunk-RV54D2D7.js';
|
|
9
9
|
import './chunk-ZVZGLEZ6.js';
|
|
10
10
|
import './chunk-VVZNW5CB.js';
|
|
@@ -34,10 +34,10 @@ import './chunk-5XDPAKF5.js';
|
|
|
34
34
|
import './chunk-GCPEMNSU.js';
|
|
35
35
|
import './chunk-QGOPTVV5.js';
|
|
36
36
|
import './chunk-TYNZ5B2B.js';
|
|
37
|
-
import './chunk-
|
|
37
|
+
import './chunk-V5OF7CV4.js';
|
|
38
38
|
import './chunk-AXW67SY7.js';
|
|
39
|
-
import './chunk-SKLEJJ6M.js';
|
|
40
39
|
import './chunk-BYMOPN2S.js';
|
|
40
|
+
import './chunk-SKLEJJ6M.js';
|
|
41
41
|
import './chunk-6BZ5TKEV.js';
|
|
42
42
|
import './chunk-FZKRSGLP.js';
|
|
43
43
|
import './chunk-7V5HOZW4.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { product } from './chunk-556OT3BN.js';
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-2JV6WZ6O.js';
|
|
2
|
+
import './chunk-CTCVO7YU.js';
|
|
3
|
+
import './chunk-PKXEZRSJ.js';
|
|
4
|
+
import './chunk-SYVIMWYW.js';
|
|
6
5
|
import './chunk-E7WWO3V3.js';
|
|
6
|
+
import './chunk-2JV6WZ6O.js';
|
|
7
7
|
import './chunk-RV54D2D7.js';
|
|
8
8
|
import './chunk-ZVZGLEZ6.js';
|
|
9
9
|
import './chunk-VVZNW5CB.js';
|
|
@@ -33,10 +33,10 @@ import { HookSlot } from './chunk-5XDPAKF5.js';
|
|
|
33
33
|
import './chunk-GCPEMNSU.js';
|
|
34
34
|
import './chunk-QGOPTVV5.js';
|
|
35
35
|
import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
36
|
-
import { LazyErrorPage } from './chunk-
|
|
36
|
+
import { LazyErrorPage } from './chunk-V5OF7CV4.js';
|
|
37
37
|
import './chunk-AXW67SY7.js';
|
|
38
|
-
import './chunk-SKLEJJ6M.js';
|
|
39
38
|
import './chunk-BYMOPN2S.js';
|
|
39
|
+
import './chunk-SKLEJJ6M.js';
|
|
40
40
|
import './chunk-6BZ5TKEV.js';
|
|
41
41
|
import './chunk-FZKRSGLP.js';
|
|
42
42
|
import './chunk-7V5HOZW4.js';
|
|
@@ -149,5 +149,5 @@ function NotFoundPage(props = {}) {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
export { NotFoundPage };
|
|
152
|
-
//# sourceMappingURL=not-found-
|
|
153
|
-
//# sourceMappingURL=not-found-
|
|
152
|
+
//# sourceMappingURL=not-found-NAXLRGC2.js.map
|
|
153
|
+
//# sourceMappingURL=not-found-NAXLRGC2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/product-short-link.ts","../src/routes/not-found.tsx"],"names":[],"mappings":"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","file":"not-found-3EEMQZMU.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport { product } from '../api/product';\nimport { isLocale } from '../providers/locale-constants';\nimport { useLocation, useNavigate } from '../providers/NavigationProvider';\n\n/** Short codes are 5-10 letters/digits (e.g. `lvXvzln`). */\nconst SHORT_CODE = /^[A-Za-z0-9]{5,10}$/;\n\n/**\n * The product short code in a path shaped `/{locale}/{code}` or `/{code}` (the\n * store base is already stripped from the router's location), plus the locale\n * segment to keep when redirecting. `null` for any other path.\n */\nexport function parseShortLinkPath(pathname: string): { code: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n if (segments.length === 2 && isLocale(segments[0]) && SHORT_CODE.test(segments[1])) {\n return { code: segments[1], locale: segments[0] };\n }\n if (segments.length === 1 && !isLocale(segments[0]) && SHORT_CODE.test(segments[0])) {\n return { code: segments[0] };\n }\n return null;\n}\n\n/** A product URL in the stores' \"new URLs\" format: `{sku}-{name}`, or `p{id}-{name}` without a SKU. */\nconst PRODUCT_KEY = /^([0-9A-Za-z]+)-./;\n\n/** The `{sku}` or `p{id}` key of `/{locale}/{sku}-{name}` or `/{sku}-{name}`, with that locale. */\nexport function parseProductKeyPath(pathname: string): { key: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n const hasLocale = segments.length === 2 && isLocale(segments[0]);\n if (!hasLocale && (segments.length !== 1 || isLocale(segments[0]))) return null;\n const key = segments[segments.length - 1].match(PRODUCT_KEY)?.[1];\n if (!key) return null;\n return hasLocale ? { key, locale: segments[0] } : { key };\n}\n\nfunction productKeyOf(url: string | undefined): string | undefined {\n try {\n const last = new URL(url ?? '').pathname.split('/').filter(Boolean).pop() ?? '';\n return last.match(PRODUCT_KEY)?.[1];\n } catch {\n return undefined;\n }\n}\n\n/** Like Laravel: `p{id}` is the id; anything else is a SKU, which only search can find. */\nasync function findByProductKey(key: string): Promise<number | null> {\n const id = key.match(/^p(\\d+)$/)?.[1];\n if (id) return Number(id);\n const { items } = await product.list({ source: 'search', keyword: key, perPage: 50 });\n const found = items.find((item) => productKeyOf(item.url) === key);\n return found ? Number(found.id) : null;\n}\n\n/** The SEO slug from a product URL (`…/{slug}/p{id}`), `-` when it has none. */\nexport function slugFromProductUrl(url: string | undefined): string {\n try {\n const segments = new URL(url ?? '').pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n return /^p\\d+$/.test(last) && segments.length > 1 ? segments[segments.length - 2] : '-';\n } catch {\n return '-';\n }\n}\n\n/**\n * Resolves a product URL that matched no route, a short link (`/ar/lvXvzln`) or\n * a \"new URLs\" one (`/ar/1213asa-chocolate`), and replaces the URL with the\n * product's page. Returns `true` while a lookup is in flight (so the 404 isn't\n * flashed); settles to `false` when the path is neither or doesn't resolve.\n */\nexport function useProductShortLink(): boolean {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const shortLink = parseShortLinkPath(pathname);\n const productKey = parseProductKeyPath(pathname);\n const lookup = shortLink?.code ?? productKey?.key;\n const locale = shortLink?.locale ?? productKey?.locale;\n const isShortLink = !!shortLink;\n const [failed, setFailed] = useState<string | null>(null);\n\n useEffect(() => {\n if (!lookup) return;\n let cancelled = false;\n const productPath = isShortLink\n ? product\n .find(lookup)\n .then((found) => (found?.id ? `${slugFromProductUrl(found.url)}/p${found.id}` : null))\n : findByProductKey(lookup).then((id) => (id ? `-/p${id}` : null));\n productPath\n .then((path) => {\n if (cancelled) return;\n if (!path) return setFailed(lookup);\n navigate(`${locale ? `/${locale}` : ''}/${path}`, { replace: true });\n })\n .catch(() => !cancelled && setFailed(lookup));\n return () => {\n cancelled = true;\n };\n }, [lookup, isShortLink, locale, navigate]);\n\n return !!lookup && failed !== lookup;\n}\n","import type { ComponentType, ReactNode } from 'react';\nimport { HookSlot } from '../hooks';\nimport { useTranslation } from '../providers/I18nProvider';\nimport { ErrorPage } from '../components/common';\nimport { useProductShortLink } from './product-short-link';\n\nexport interface NotFoundPageProps {\n title?: string;\n message?: string;\n showHomeLink?: boolean;\n homeLinkText?: string;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n}\n\nexport function NotFoundPage(props: NotFoundPageProps = {}) {\n const { t } = useTranslation();\n // A product short link (`/ar/lvXvzln`) or \"new URLs\" link (`/ar/1213asa-name`) matches no route; resolve it instead of 404ing.\n const resolvingShortLink = useProductShortLink();\n\n const {\n title = t('common.errors.404') || 'Page Not Found',\n message = t('common.errors.error_occurred') ||\n 'The page you are looking for does not exist or has been moved.',\n showHomeLink = true,\n homeLinkText = t('common.elements.back_home') || 'Back to Home',\n LinkComponent,\n } = props;\n\n if (resolvingShortLink) return null;\n\n return (\n <ErrorPage\n code={404}\n title={title}\n message={message}\n showAction={showHomeLink}\n actionText={homeLinkText}\n LinkComponent={LinkComponent}\n >\n <HookSlot name=\"notfound:start\" />\n <HookSlot name=\"notfound:content\" />\n <HookSlot name=\"notfound:end\" />\n </ErrorPage>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/routes/product-short-link.ts","../src/routes/not-found.tsx"],"names":[],"mappings":"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","file":"not-found-NAXLRGC2.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport { product } from '../api/product';\nimport { isLocale } from '../providers/locale-constants';\nimport { useLocation, useNavigate } from '../providers/NavigationProvider';\n\n/** Short codes are 5-10 letters/digits (e.g. `lvXvzln`). */\nconst SHORT_CODE = /^[A-Za-z0-9]{5,10}$/;\n\n/**\n * The product short code in a path shaped `/{locale}/{code}` or `/{code}` (the\n * store base is already stripped from the router's location), plus the locale\n * segment to keep when redirecting. `null` for any other path.\n */\nexport function parseShortLinkPath(pathname: string): { code: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n if (segments.length === 2 && isLocale(segments[0]) && SHORT_CODE.test(segments[1])) {\n return { code: segments[1], locale: segments[0] };\n }\n if (segments.length === 1 && !isLocale(segments[0]) && SHORT_CODE.test(segments[0])) {\n return { code: segments[0] };\n }\n return null;\n}\n\n/** A product URL in the stores' \"new URLs\" format: `{sku}-{name}`, or `p{id}-{name}` without a SKU. */\nconst PRODUCT_KEY = /^([0-9A-Za-z]+)-./;\n\n/** The `{sku}` or `p{id}` key of `/{locale}/{sku}-{name}` or `/{sku}-{name}`, with that locale. */\nexport function parseProductKeyPath(pathname: string): { key: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n const hasLocale = segments.length === 2 && isLocale(segments[0]);\n if (!hasLocale && (segments.length !== 1 || isLocale(segments[0]))) return null;\n const key = segments[segments.length - 1].match(PRODUCT_KEY)?.[1];\n if (!key) return null;\n return hasLocale ? { key, locale: segments[0] } : { key };\n}\n\nfunction productKeyOf(url: string | undefined): string | undefined {\n try {\n const last = new URL(url ?? '').pathname.split('/').filter(Boolean).pop() ?? '';\n return last.match(PRODUCT_KEY)?.[1];\n } catch {\n return undefined;\n }\n}\n\n/** Like Laravel: `p{id}` is the id; anything else is a SKU, which only search can find. */\nasync function findByProductKey(key: string): Promise<number | null> {\n const id = key.match(/^p(\\d+)$/)?.[1];\n if (id) return Number(id);\n const { items } = await product.list({ source: 'search', keyword: key, perPage: 50 });\n const found = items.find((item) => productKeyOf(item.url) === key);\n return found ? Number(found.id) : null;\n}\n\n/** The SEO slug from a product URL (`…/{slug}/p{id}`), `-` when it has none. */\nexport function slugFromProductUrl(url: string | undefined): string {\n try {\n const segments = new URL(url ?? '').pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n return /^p\\d+$/.test(last) && segments.length > 1 ? segments[segments.length - 2] : '-';\n } catch {\n return '-';\n }\n}\n\n/**\n * Resolves a product URL that matched no route, a short link (`/ar/lvXvzln`) or\n * a \"new URLs\" one (`/ar/1213asa-chocolate`), and replaces the URL with the\n * product's page. Returns `true` while a lookup is in flight (so the 404 isn't\n * flashed); settles to `false` when the path is neither or doesn't resolve.\n */\nexport function useProductShortLink(): boolean {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const shortLink = parseShortLinkPath(pathname);\n const productKey = parseProductKeyPath(pathname);\n const lookup = shortLink?.code ?? productKey?.key;\n const locale = shortLink?.locale ?? productKey?.locale;\n const isShortLink = !!shortLink;\n const [failed, setFailed] = useState<string | null>(null);\n\n useEffect(() => {\n if (!lookup) return;\n let cancelled = false;\n const productPath = isShortLink\n ? product\n .find(lookup)\n .then((found) => (found?.id ? `${slugFromProductUrl(found.url)}/p${found.id}` : null))\n : findByProductKey(lookup).then((id) => (id ? `-/p${id}` : null));\n productPath\n .then((path) => {\n if (cancelled) return;\n if (!path) return setFailed(lookup);\n navigate(`${locale ? `/${locale}` : ''}/${path}`, { replace: true });\n })\n .catch(() => !cancelled && setFailed(lookup));\n return () => {\n cancelled = true;\n };\n }, [lookup, isShortLink, locale, navigate]);\n\n return !!lookup && failed !== lookup;\n}\n","import type { ComponentType, ReactNode } from 'react';\nimport { HookSlot } from '../hooks';\nimport { useTranslation } from '../providers/I18nProvider';\nimport { ErrorPage } from '../components/common';\nimport { useProductShortLink } from './product-short-link';\n\nexport interface NotFoundPageProps {\n title?: string;\n message?: string;\n showHomeLink?: boolean;\n homeLinkText?: string;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n}\n\nexport function NotFoundPage(props: NotFoundPageProps = {}) {\n const { t } = useTranslation();\n // A product short link (`/ar/lvXvzln`) or \"new URLs\" link (`/ar/1213asa-name`) matches no route; resolve it instead of 404ing.\n const resolvingShortLink = useProductShortLink();\n\n const {\n title = t('common.errors.404') || 'Page Not Found',\n message = t('common.errors.error_occurred') ||\n 'The page you are looking for does not exist or has been moved.',\n showHomeLink = true,\n homeLinkText = t('common.elements.back_home') || 'Back to Home',\n LinkComponent,\n } = props;\n\n if (resolvingShortLink) return null;\n\n return (\n <ErrorPage\n code={404}\n title={title}\n message={message}\n showAction={showHomeLink}\n actionText={homeLinkText}\n LinkComponent={LinkComponent}\n >\n <HookSlot name=\"notfound:start\" />\n <HookSlot name=\"notfound:content\" />\n <HookSlot name=\"notfound:end\" />\n </ErrorPage>\n );\n}\n"]}
|
package/dist/providers/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { TwilightProvider, registerDocumentSync, routeDocumentSyncs } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-2JV6WZ6O.js';
|
|
1
|
+
export { TwilightProvider, registerDocumentSync, routeDocumentSyncs } from '../chunk-CTCVO7YU.js';
|
|
2
|
+
import '../chunk-PKXEZRSJ.js';
|
|
3
|
+
import '../chunk-SYVIMWYW.js';
|
|
5
4
|
import '../chunk-E7WWO3V3.js';
|
|
5
|
+
import '../chunk-2JV6WZ6O.js';
|
|
6
6
|
import '../chunk-RV54D2D7.js';
|
|
7
7
|
import '../chunk-ZVZGLEZ6.js';
|
|
8
8
|
import '../chunk-VVZNW5CB.js';
|
|
@@ -32,10 +32,10 @@ import '../chunk-5XDPAKF5.js';
|
|
|
32
32
|
import '../chunk-GCPEMNSU.js';
|
|
33
33
|
import '../chunk-QGOPTVV5.js';
|
|
34
34
|
import '../chunk-TYNZ5B2B.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-V5OF7CV4.js';
|
|
36
36
|
import '../chunk-AXW67SY7.js';
|
|
37
|
-
import '../chunk-SKLEJJ6M.js';
|
|
38
37
|
export { LinkProvider, LinkProviderError, createLinkWithAdapter, useLinkAdapter } from '../chunk-BYMOPN2S.js';
|
|
38
|
+
import '../chunk-SKLEJJ6M.js';
|
|
39
39
|
import '../chunk-6BZ5TKEV.js';
|
|
40
40
|
import '../chunk-FZKRSGLP.js';
|
|
41
41
|
import '../chunk-7V5HOZW4.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-
|
|
1
|
+
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../../chunk-A64SSH6M.js';
|
|
2
2
|
import '../../chunk-YGJMUJVR.js';
|
|
3
3
|
import '../../chunk-TZ3E5BN4.js';
|
|
4
4
|
import '../../chunk-6ZMNTJM3.js';
|
package/dist/routes/account.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { wallet } from '../chunk-HQAFPDJK.js';
|
|
2
|
-
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-
|
|
2
|
+
export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader } from '../chunk-A64SSH6M.js';
|
|
3
3
|
import '../chunk-YGJMUJVR.js';
|
|
4
4
|
import { notification } from '../chunk-6OOTDFC7.js';
|
|
5
5
|
import { wishlist } from '../chunk-I4LYRR2O.js';
|
|
@@ -29,7 +29,7 @@ async function profileLoader(_ctx) {
|
|
|
29
29
|
|
|
30
30
|
// src/routes/account/profile/index.tsx
|
|
31
31
|
var LazyProfilePage = lazy(
|
|
32
|
-
() => import('../ProfilePage-
|
|
32
|
+
() => import('../ProfilePage-BQE63RHK.js').then((m) => ({ default: m.ProfilePage }))
|
|
33
33
|
);
|
|
34
34
|
var ProfilePage = LazyProfilePage;
|
|
35
35
|
var Profile = {
|
|
@@ -71,7 +71,7 @@ async function wishlistLoader(ctx) {
|
|
|
71
71
|
|
|
72
72
|
// src/routes/account/wishlist/index.tsx
|
|
73
73
|
var LazyWishlistPage = lazy(
|
|
74
|
-
() => import('../WishlistPage-
|
|
74
|
+
() => import('../WishlistPage-7257GI3Y.js').then((m) => ({ default: m.WishlistPage }))
|
|
75
75
|
);
|
|
76
76
|
var WishlistPage = LazyWishlistPage;
|
|
77
77
|
var Wishlist = {
|
|
@@ -113,7 +113,7 @@ async function walletLoader(ctx) {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
// src/routes/account/wallet/index.tsx
|
|
116
|
-
var LazyWalletPage = lazy(() => import('../WalletPage-
|
|
116
|
+
var LazyWalletPage = lazy(() => import('../WalletPage-UEYRVSWR.js').then((m) => ({ default: m.WalletPage })));
|
|
117
117
|
var WalletPage = LazyWalletPage;
|
|
118
118
|
var Wallet = {
|
|
119
119
|
id: RouteId.CUSTOMER_WALLET,
|
|
@@ -149,7 +149,7 @@ async function notificationsLoader(_ctx) {
|
|
|
149
149
|
|
|
150
150
|
// src/routes/account/notifications/index.tsx
|
|
151
151
|
var LazyNotificationsPage = lazy(
|
|
152
|
-
() => import('../NotificationsPage-
|
|
152
|
+
() => import('../NotificationsPage-HYID6XAA.js').then((m) => ({ default: m.NotificationsPage }))
|
|
153
153
|
);
|
|
154
154
|
var NotificationsPage = LazyNotificationsPage;
|
|
155
155
|
var Notifications = {
|
|
@@ -182,7 +182,7 @@ async function settingsLoader(_ctx) {
|
|
|
182
182
|
|
|
183
183
|
// src/routes/account/settings/index.tsx
|
|
184
184
|
var LazySettingsPage = lazy(
|
|
185
|
-
() => import('../SettingsPage-
|
|
185
|
+
() => import('../SettingsPage-QLKKYVGH.js').then((m) => ({ default: m.SettingsPage }))
|
|
186
186
|
);
|
|
187
187
|
var SettingsPage = LazySettingsPage;
|
|
188
188
|
var Settings = {
|
package/dist/routes/blog.js
CHANGED
|
@@ -143,18 +143,18 @@ async function blogTagLoader({
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
// src/routes/blog/index.tsx
|
|
146
|
-
var LazyBlogPage = lazy(() => import('../BlogPage-
|
|
146
|
+
var LazyBlogPage = lazy(() => import('../BlogPage-B2A47OBZ.js').then((m) => ({ default: m.BlogPage })));
|
|
147
147
|
var LazyBlogSinglePage = lazy(
|
|
148
|
-
() => import('../BlogSinglePage-
|
|
148
|
+
() => import('../BlogSinglePage-ZSOHP2GJ.js').then((m) => ({ default: m.BlogSinglePage }))
|
|
149
149
|
);
|
|
150
150
|
var LazyBlogAuthorPage = lazy(
|
|
151
|
-
() => import('../BlogAuthorPage-
|
|
151
|
+
() => import('../BlogAuthorPage-4IXOEQA4.js').then((m) => ({ default: m.BlogAuthorPage }))
|
|
152
152
|
);
|
|
153
153
|
var LazyBlogCategoryPage = lazy(
|
|
154
|
-
() => import('../BlogCategoryPage-
|
|
154
|
+
() => import('../BlogCategoryPage-NYB7EMKQ.js').then((m) => ({ default: m.BlogCategoryPage }))
|
|
155
155
|
);
|
|
156
156
|
var LazyBlogTagPage = lazy(
|
|
157
|
-
() => import('../BlogTagPage-
|
|
157
|
+
() => import('../BlogTagPage-24MZSPCO.js').then((m) => ({ default: m.BlogTagPage }))
|
|
158
158
|
);
|
|
159
159
|
var BlogPage = LazyBlogPage;
|
|
160
160
|
var BlogSinglePage = LazyBlogSinglePage;
|
package/dist/routes/brands.js
CHANGED
|
@@ -22,7 +22,7 @@ async function brandsLoader() {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// src/routes/brands/index.tsx
|
|
25
|
-
var LazyBrandsPage = lazy(() => import('../BrandsPage-
|
|
25
|
+
var LazyBrandsPage = lazy(() => import('../BrandsPage-WJUCPMKH.js').then((m) => ({ default: m.BrandsPage })));
|
|
26
26
|
var BrandsPage = LazyBrandsPage;
|
|
27
27
|
async function brandsLoaderWithExtend(_ctx, extend) {
|
|
28
28
|
const data = await brandsLoader();
|
package/dist/routes/cart.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { cart } from '../chunk-27Z442XF.js';
|
|
2
2
|
import { loyalty } from '../chunk-B2G7S4UR.js';
|
|
3
3
|
import { CartSkeleton } from '../chunk-N7CCSGZF.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-7PQPQEDN.js';
|
|
5
|
+
import '../chunk-7JVKUFFT.js';
|
|
6
6
|
import '../chunk-FZYR4BA2.js';
|
|
7
7
|
import '../chunk-556OT3BN.js';
|
|
8
|
-
import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-
|
|
9
|
-
import '../chunk-
|
|
8
|
+
import { LazySeoCartWidget, LazyCartItem, LazyCartSummary } from '../chunk-AUC6QMF7.js';
|
|
9
|
+
import '../chunk-UKLZQK2J.js';
|
|
10
10
|
import '../chunk-Y32RHCOH.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
14
|
-
import '../chunk-2JV6WZ6O.js';
|
|
11
|
+
import '../chunk-CTCVO7YU.js';
|
|
12
|
+
import '../chunk-PKXEZRSJ.js';
|
|
13
|
+
import '../chunk-SYVIMWYW.js';
|
|
15
14
|
import '../chunk-E7WWO3V3.js';
|
|
15
|
+
import '../chunk-2JV6WZ6O.js';
|
|
16
16
|
import '../chunk-RV54D2D7.js';
|
|
17
17
|
import '../chunk-ZVZGLEZ6.js';
|
|
18
18
|
import '../chunk-VVZNW5CB.js';
|
|
@@ -42,10 +42,10 @@ import { HookSlot } from '../chunk-5XDPAKF5.js';
|
|
|
42
42
|
import '../chunk-GCPEMNSU.js';
|
|
43
43
|
import '../chunk-QGOPTVV5.js';
|
|
44
44
|
import { useTranslation } from '../chunk-TYNZ5B2B.js';
|
|
45
|
-
import { LazyBreadcrumb, LazyNoContent } from '../chunk-
|
|
45
|
+
import { LazyBreadcrumb, LazyNoContent } from '../chunk-V5OF7CV4.js';
|
|
46
46
|
import '../chunk-AXW67SY7.js';
|
|
47
|
-
import '../chunk-SKLEJJ6M.js';
|
|
48
47
|
import '../chunk-BYMOPN2S.js';
|
|
48
|
+
import '../chunk-SKLEJJ6M.js';
|
|
49
49
|
import '../chunk-6BZ5TKEV.js';
|
|
50
50
|
import '../chunk-FZKRSGLP.js';
|
|
51
51
|
import '../chunk-7V5HOZW4.js';
|
package/dist/routes/home.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export { Home, HomeSkeleton, homeLoader } from '../chunk-
|
|
2
|
-
export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-
|
|
1
|
+
export { Home, HomeSkeleton, homeLoader } from '../chunk-7PQPQEDN.js';
|
|
2
|
+
export { DefaultHomeComponents, registerHomeComponentConfig, registerHomeComponents } from '../chunk-7JVKUFFT.js';
|
|
3
3
|
import '../chunk-FZYR4BA2.js';
|
|
4
4
|
import '../chunk-556OT3BN.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-UKLZQK2J.js';
|
|
6
6
|
import '../chunk-Y32RHCOH.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
import '../chunk-2JV6WZ6O.js';
|
|
7
|
+
import '../chunk-CTCVO7YU.js';
|
|
8
|
+
import '../chunk-PKXEZRSJ.js';
|
|
9
|
+
import '../chunk-SYVIMWYW.js';
|
|
11
10
|
import '../chunk-E7WWO3V3.js';
|
|
11
|
+
import '../chunk-2JV6WZ6O.js';
|
|
12
12
|
import '../chunk-RV54D2D7.js';
|
|
13
13
|
import '../chunk-ZVZGLEZ6.js';
|
|
14
14
|
import '../chunk-VVZNW5CB.js';
|
|
@@ -38,10 +38,10 @@ import '../chunk-5XDPAKF5.js';
|
|
|
38
38
|
import '../chunk-GCPEMNSU.js';
|
|
39
39
|
import '../chunk-QGOPTVV5.js';
|
|
40
40
|
import '../chunk-TYNZ5B2B.js';
|
|
41
|
-
import '../chunk-
|
|
41
|
+
import '../chunk-V5OF7CV4.js';
|
|
42
42
|
import '../chunk-AXW67SY7.js';
|
|
43
|
-
import '../chunk-SKLEJJ6M.js';
|
|
44
43
|
import '../chunk-BYMOPN2S.js';
|
|
44
|
+
import '../chunk-SKLEJJ6M.js';
|
|
45
45
|
import '../chunk-6BZ5TKEV.js';
|
|
46
46
|
import '../chunk-FZKRSGLP.js';
|
|
47
47
|
import '../chunk-7V5HOZW4.js';
|
package/dist/routes/loyalty.js
CHANGED
|
@@ -56,10 +56,10 @@ async function loyaltyPointsLoader(locale) {
|
|
|
56
56
|
|
|
57
57
|
// src/routes/loyalty/index.tsx
|
|
58
58
|
var LazyLoyaltyPage = lazy(
|
|
59
|
-
() => import('../LoyaltyPage-
|
|
59
|
+
() => import('../LoyaltyPage-S74ZELSW.js').then((m) => ({ default: m.LoyaltyPage }))
|
|
60
60
|
);
|
|
61
61
|
var LazyLoyaltyPointsPage = lazy(
|
|
62
|
-
() => import('../LoyaltyPointsPage-
|
|
62
|
+
() => import('../LoyaltyPointsPage-TCKZTXSB.js').then((m) => ({ default: m.LoyaltyPointsPage }))
|
|
63
63
|
);
|
|
64
64
|
var LoyaltyPage = LazyLoyaltyPage;
|
|
65
65
|
var LoyaltyPointsPage = LazyLoyaltyPointsPage;
|
package/dist/routes/page.js
CHANGED
|
@@ -27,7 +27,7 @@ async function pageSingleLoader({ params }) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// src/routes/page/index.tsx
|
|
30
|
-
var LazyPageSingle = lazy(() => import('../PageSingle-
|
|
30
|
+
var LazyPageSingle = lazy(() => import('../PageSingle-RNWFQQEM.js').then((m) => ({ default: m.PageSingle })));
|
|
31
31
|
var PageSingleLazy = LazyPageSingle;
|
|
32
32
|
async function loader(ctx, extend) {
|
|
33
33
|
const data = await pageSingleLoader({ params: ctx.params });
|
|
@@ -1,17 +1,17 @@
|
|
|
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-
|
|
13
|
-
import '../chunk-2JV6WZ6O.js';
|
|
10
|
+
import { useStore } from '../chunk-CTCVO7YU.js';
|
|
11
|
+
import '../chunk-PKXEZRSJ.js';
|
|
12
|
+
import '../chunk-SYVIMWYW.js';
|
|
14
13
|
import '../chunk-E7WWO3V3.js';
|
|
14
|
+
import '../chunk-2JV6WZ6O.js';
|
|
15
15
|
import '../chunk-RV54D2D7.js';
|
|
16
16
|
import '../chunk-ZVZGLEZ6.js';
|
|
17
17
|
import '../chunk-VVZNW5CB.js';
|
|
@@ -41,10 +41,10 @@ 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
|
-
import '../chunk-SKLEJJ6M.js';
|
|
47
46
|
import '../chunk-BYMOPN2S.js';
|
|
47
|
+
import '../chunk-SKLEJJ6M.js';
|
|
48
48
|
import '../chunk-6BZ5TKEV.js';
|
|
49
49
|
import '../chunk-FZKRSGLP.js';
|
|
50
50
|
import '../chunk-7V5HOZW4.js';
|
package/dist/routes/product.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
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-
|
|
9
|
-
import '../chunk-2JV6WZ6O.js';
|
|
6
|
+
import { fastCheckoutScript } from '../chunk-CTCVO7YU.js';
|
|
7
|
+
import '../chunk-PKXEZRSJ.js';
|
|
8
|
+
import '../chunk-SYVIMWYW.js';
|
|
10
9
|
import '../chunk-E7WWO3V3.js';
|
|
10
|
+
import '../chunk-2JV6WZ6O.js';
|
|
11
11
|
import '../chunk-RV54D2D7.js';
|
|
12
12
|
import '../chunk-ZVZGLEZ6.js';
|
|
13
13
|
import '../chunk-VVZNW5CB.js';
|
|
@@ -37,10 +37,10 @@ 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
|
-
import '../chunk-SKLEJJ6M.js';
|
|
43
42
|
import '../chunk-BYMOPN2S.js';
|
|
43
|
+
import '../chunk-SKLEJJ6M.js';
|
|
44
44
|
import '../chunk-6BZ5TKEV.js';
|
|
45
45
|
import '../chunk-FZKRSGLP.js';
|
|
46
46
|
import '../chunk-7V5HOZW4.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,15 +1,15 @@
|
|
|
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-
|
|
11
|
-
import './chunk-2JV6WZ6O.js';
|
|
8
|
+
import './chunk-CTCVO7YU.js';
|
|
9
|
+
import './chunk-PKXEZRSJ.js';
|
|
10
|
+
import './chunk-SYVIMWYW.js';
|
|
12
11
|
import './chunk-E7WWO3V3.js';
|
|
12
|
+
import './chunk-2JV6WZ6O.js';
|
|
13
13
|
import './chunk-RV54D2D7.js';
|
|
14
14
|
import './chunk-ZVZGLEZ6.js';
|
|
15
15
|
import './chunk-VVZNW5CB.js';
|
|
@@ -39,10 +39,10 @@ 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
|
-
import './chunk-SKLEJJ6M.js';
|
|
45
44
|
import './chunk-BYMOPN2S.js';
|
|
45
|
+
import './chunk-SKLEJJ6M.js';
|
|
46
46
|
import './chunk-6BZ5TKEV.js';
|
|
47
47
|
import './chunk-FZKRSGLP.js';
|
|
48
48
|
import './chunk-7V5HOZW4.js';
|
package/dist/tanstack.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-
|
|
2
|
-
import './chunk-Z4Y55HWX.js';
|
|
3
|
-
import { CRITICAL_STYLE_HREF } from './chunk-4FJGZQD3.js';
|
|
1
|
+
export { tanstackDocumentAdapter as attrs, createRouter, createTwilightRootRoute, useTanstackDocumentAttrs as useAttrs } from './chunk-6VOF5SB4.js';
|
|
4
2
|
import { requestHostOf } from './chunk-UGLZPGPF.js';
|
|
5
3
|
export { TanStackLinkAdapter, TanStackNavigationProvider, createTanStackLinkAdapter } from './chunk-UGLZPGPF.js';
|
|
4
|
+
import './chunk-Z4Y55HWX.js';
|
|
5
|
+
import { CRITICAL_STYLE_HREF } from './chunk-4FJGZQD3.js';
|
|
6
6
|
export { tanstackHeadAdapter as head, withHead } from './chunk-3LXB4VFK.js';
|
|
7
7
|
import './chunk-MKVCFBVF.js';
|
|
8
8
|
import './chunk-BNI6SKFL.js';
|
package/dist/utils/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { stripUnsafeHtml } from '../chunk-RUHSV4Z6.js';
|
|
2
1
|
export { formatSallaPlural } from '../chunk-BT6HEEAP.js';
|
|
2
|
+
export { stripUnsafeHtml } from '../chunk-RUHSV4Z6.js';
|
|
3
3
|
export { dispatchRouteChanged } from '../chunk-MKVCFBVF.js';
|
|
4
4
|
export { sortOptions } from '../chunk-6Z4MOC4S.js';
|
|
5
5
|
export { color } from '../chunk-VVZNW5CB.js';
|
package/dist/vite/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { default } from './twilight-react';
|
|
|
3
3
|
export { getFrameworkAdapter, tanstackAdapter as tanstack, nextjsAdapter as nextjs, } from './adapters';
|
|
4
4
|
export { bestPracticesPlugin } from './plugins/best-practices/best-practices.plugin';
|
|
5
5
|
export type { BestPracticesOptions } from './plugins/best-practices/types';
|
|
6
|
-
export { REACT_THEME_TYPE, getThemeType, isReactThemeManifest, describeThemeTypeIssue, type TwilightManifest, } from './plugins/twilight-manifest';
|
|
6
|
+
export { REACT_THEME_TYPE, getThemeType, isReactThemeManifest, describeThemeTypeIssue, validateTwilightManifest, type ManifestIssue, type ManifestValidation, type TwilightManifest, } from './plugins/twilight-manifest';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/vite/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,eAAe,IAAI,QAAQ,EAC3B,aAAa,IAAI,MAAM,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAI3E,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,eAAe,IAAI,QAAQ,EAC3B,aAAa,IAAI,MAAM,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAI3E,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC"}
|
package/dist/vite/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { nextjsHeadAdapter } from '../chunk-HOSHJBPS.js';
|
|
2
1
|
import { tanstackHeadAdapter } from '../chunk-3LXB4VFK.js';
|
|
2
|
+
import { nextjsHeadAdapter } from '../chunk-HOSHJBPS.js';
|
|
3
|
+
import { validateTwilightManifest } from '../chunk-X5NK4TZH.js';
|
|
4
|
+
export { REACT_THEME_TYPE, describeThemeTypeIssue, getThemeType, isReactThemeManifest, validateTwilightManifest } from '../chunk-X5NK4TZH.js';
|
|
3
5
|
import '../chunk-RV54D2D7.js';
|
|
4
6
|
import { setHeadAdapter } from '../chunk-GD26FI4J.js';
|
|
5
7
|
import { RouteId } from '../chunk-OUW6WESU.js';
|
|
@@ -271,28 +273,6 @@ function buildTwilightSchema(raw) {
|
|
|
271
273
|
};
|
|
272
274
|
}
|
|
273
275
|
|
|
274
|
-
// src/vite/plugins/twilight-manifest.ts
|
|
275
|
-
var REACT_THEME_TYPE = "react";
|
|
276
|
-
function getThemeType(raw) {
|
|
277
|
-
if (!raw || typeof raw !== "object") return void 0;
|
|
278
|
-
const { type } = raw;
|
|
279
|
-
return typeof type === "string" && type.trim() ? type : void 0;
|
|
280
|
-
}
|
|
281
|
-
function isReactThemeManifest(raw) {
|
|
282
|
-
return getThemeType(raw) === REACT_THEME_TYPE;
|
|
283
|
-
}
|
|
284
|
-
function describeThemeTypeIssue(raw, fileLabel = "twilight.json") {
|
|
285
|
-
const type = getThemeType(raw);
|
|
286
|
-
if (type === REACT_THEME_TYPE) return null;
|
|
287
|
-
if (!type) {
|
|
288
|
-
return `${fileLabel} has no "type": "${REACT_THEME_TYPE}" \u2014 the Salla CLI treats a manifest without it as a twig theme, so \`salla theme dev\` and publishing will take the wrong path. Add "type": "${REACT_THEME_TYPE}" as the first key.`;
|
|
289
|
-
}
|
|
290
|
-
if (type.trim() === REACT_THEME_TYPE) {
|
|
291
|
-
return `${fileLabel} declares "type": ${JSON.stringify(type)} \u2014 the Salla CLI compares this value exactly, so the surrounding whitespace still routes the theme to the twig path. Use "type": "${REACT_THEME_TYPE}".`;
|
|
292
|
-
}
|
|
293
|
-
return `${fileLabel} declares "type": "${type}", but this theme is built with the React theme engine. Change it to "${REACT_THEME_TYPE}" so the Salla CLI routes it correctly.`;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
276
|
// src/dev/schema-types.ts
|
|
297
277
|
var EMPTY_DEV_SCHEMA = {
|
|
298
278
|
settings: [],
|
|
@@ -306,6 +286,7 @@ var VIRTUAL_ID2 = "virtual:twilight/schema";
|
|
|
306
286
|
var RESOLVED_ID2 = "\0" + VIRTUAL_ID2;
|
|
307
287
|
var EMPTY_MODULE = `export default ${JSON.stringify(EMPTY_DEV_SCHEMA)};`;
|
|
308
288
|
var LOG_PREFIX = "[twilight-react:schema]";
|
|
289
|
+
var MAX_REPORTED = 8;
|
|
309
290
|
function twilightSchemaPlugin(twilightJsonPath = "twilight.json") {
|
|
310
291
|
let filePath;
|
|
311
292
|
let isDevServer = false;
|
|
@@ -318,8 +299,16 @@ function twilightSchemaPlugin(twilightJsonPath = "twilight.json") {
|
|
|
318
299
|
return;
|
|
319
300
|
}
|
|
320
301
|
try {
|
|
321
|
-
const
|
|
322
|
-
|
|
302
|
+
const { errors: issues } = validateTwilightManifest(JSON.parse(raw), twilightJsonPath);
|
|
303
|
+
for (const issue of issues.slice(0, MAX_REPORTED)) {
|
|
304
|
+
const where = issue.path ? `${twilightJsonPath} ${issue.path}: ` : "";
|
|
305
|
+
console.warn(`${LOG_PREFIX} ${where}${issue.message}`);
|
|
306
|
+
}
|
|
307
|
+
if (issues.length > MAX_REPORTED) {
|
|
308
|
+
console.warn(
|
|
309
|
+
`${LOG_PREFIX} ...and ${issues.length - MAX_REPORTED} more. Run \`pnpm check:manifest\` for the full list.`
|
|
310
|
+
);
|
|
311
|
+
}
|
|
323
312
|
} catch {
|
|
324
313
|
console.warn(
|
|
325
314
|
`${LOG_PREFIX} ${twilightJsonPath} is not valid JSON \u2014 theme settings and the dev widget will be empty.`
|
|
@@ -2799,6 +2788,6 @@ async function twilightReact(options = {}) {
|
|
|
2799
2788
|
}
|
|
2800
2789
|
var twilight_react_default = twilightReact;
|
|
2801
2790
|
|
|
2802
|
-
export {
|
|
2791
|
+
export { bestPracticesPlugin, twilight_react_default as default, getFrameworkAdapter, nextjsAdapter as nextjs, tanstackAdapter as tanstack, twilightReact };
|
|
2803
2792
|
//# sourceMappingURL=index.js.map
|
|
2804
2793
|
//# sourceMappingURL=index.js.map
|