@salla.sa/twilight-theme-engine 1.0.23 → 1.0.25
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-5P2QQGOG.js → AddToCartForm-WPIPBUQL.js} +3 -3
- package/dist/{AddToCartForm-5P2QQGOG.js.map → AddToCartForm-WPIPBUQL.js.map} +1 -1
- package/dist/{BlogAuthorPage-QJLGMSK3.js → BlogAuthorPage-2BNMHWWQ.js} +15 -13
- package/dist/BlogAuthorPage-2BNMHWWQ.js.map +1 -0
- package/dist/{BlogCategoryPage-H7VYN7OV.js → BlogCategoryPage-EW4BRQ6M.js} +15 -13
- package/dist/BlogCategoryPage-EW4BRQ6M.js.map +1 -0
- package/dist/{BlogPage-LWAQ6ZVO.js → BlogPage-CMBLRPXE.js} +13 -11
- package/dist/BlogPage-CMBLRPXE.js.map +1 -0
- package/dist/{BlogSinglePage-DMAMK26P.js → BlogSinglePage-RQ426KJV.js} +13 -11
- package/dist/BlogSinglePage-RQ426KJV.js.map +1 -0
- package/dist/{BlogTagPage-6URVT6AD.js → BlogTagPage-PR2PCR3G.js} +15 -13
- package/dist/BlogTagPage-PR2PCR3G.js.map +1 -0
- package/dist/{BrandsPage-AANQU2O3.js → BrandsPage-OML3YEZW.js} +13 -11
- package/dist/BrandsPage-OML3YEZW.js.map +1 -0
- package/dist/{Breadcrumb-UAMFZYT6.js → Breadcrumb-VZTVPMBA.js} +13 -11
- package/dist/Breadcrumb-VZTVPMBA.js.map +1 -0
- package/dist/{CartItem-3677CNHU.js → CartItem-R6CX4WWE.js} +13 -11
- package/dist/CartItem-R6CX4WWE.js.map +1 -0
- package/dist/{CartSummary-BJJNE6C5.js → CartSummary-SF7ZVGB5.js} +13 -11
- package/dist/CartSummary-SF7ZVGB5.js.map +1 -0
- package/dist/{Copyright-DHEUTAZQ.js → Copyright-WY4ULIVM.js} +3 -3
- package/dist/{Copyright-DHEUTAZQ.js.map → Copyright-WY4ULIVM.js.map} +1 -1
- package/dist/{CustomerLayout-SG2CUIJU.js → CustomerLayout-ZMGTIPRX.js} +13 -11
- package/dist/CustomerLayout-ZMGTIPRX.js.map +1 -0
- package/dist/{Footer-OHHHBUAR.js → Footer-LY6XFRXY.js} +13 -11
- package/dist/{Footer-OHHHBUAR.js.map → Footer-LY6XFRXY.js.map} +1 -1
- package/dist/{Header-NIEPJXYE.js → Header-5Y7JZ3L2.js} +6 -6
- package/dist/{Header-NIEPJXYE.js.map → Header-5Y7JZ3L2.js.map} +1 -1
- package/dist/{LoyaltyPage-YBVHG57L.js → LoyaltyPage-HZNW4DKC.js} +14 -12
- package/dist/LoyaltyPage-HZNW4DKC.js.map +1 -0
- package/dist/{MainMenu-U6WGGXHK.js → MainMenu-LNNQ7UJP.js} +7 -7
- package/dist/{MainMenu-U6WGGXHK.js.map → MainMenu-LNNQ7UJP.js.map} +1 -1
- package/dist/{MasterLayout-YOBUFJNN.js → MasterLayout-UX5OGXUM.js} +13 -11
- package/dist/{MasterLayout-YOBUFJNN.js.map → MasterLayout-UX5OGXUM.js.map} +1 -1
- package/dist/{MobileMenu-DNMUVXPY.js → MobileMenu-P42OPEOC.js} +14 -12
- package/dist/MobileMenu-P42OPEOC.js.map +1 -0
- package/dist/{NotificationsPage-X7PIHUNY.js → NotificationsPage-U2FJRK6D.js} +13 -11
- package/dist/NotificationsPage-U2FJRK6D.js.map +1 -0
- package/dist/{OrderSinglePage-E7SXRGRF.js → OrderSinglePage-HCP2JVON.js} +14 -12
- package/dist/OrderSinglePage-HCP2JVON.js.map +1 -0
- package/dist/{OrdersPage-G6HBVJKI.js → OrdersPage-XBDTYHXF.js} +14 -12
- package/dist/OrdersPage-XBDTYHXF.js.map +1 -0
- package/dist/{PageSingle-PVGXNR42.js → PageSingle-RT7X3DYA.js} +3 -3
- package/dist/{PageSingle-PVGXNR42.js.map → PageSingle-RT7X3DYA.js.map} +1 -1
- package/dist/{ProductDetails-XG26QCTN.js → ProductDetails-ICIVXSUS.js} +3 -3
- package/dist/{ProductDetails-XG26QCTN.js.map → ProductDetails-ICIVXSUS.js.map} +1 -1
- package/dist/{ProfilePage-6QDPXYNR.js → ProfilePage-LUSVWS2Z.js} +13 -11
- package/dist/ProfilePage-LUSVWS2Z.js.map +1 -0
- package/dist/{SeoCartWidget-GR6PYXDP.js → SeoCartWidget-DJ3NGKCD.js} +13 -11
- package/dist/SeoCartWidget-DJ3NGKCD.js.map +1 -0
- package/dist/{SettingsPage-2OVEIVCT.js → SettingsPage-JGHLXCSF.js} +13 -11
- package/dist/SettingsPage-JGHLXCSF.js.map +1 -0
- package/dist/{StoreClosedNotification-NU5QC2TG.js → StoreClosedNotification-RZ77HAKH.js} +14 -12
- package/dist/{StoreClosedNotification-NU5QC2TG.js.map → StoreClosedNotification-RZ77HAKH.js.map} +1 -1
- package/dist/{TestimonialsPage-4UJWE4X4.js → TestimonialsPage-QOKYHLYM.js} +3 -3
- package/dist/{TestimonialsPage-4UJWE4X4.js.map → TestimonialsPage-QOKYHLYM.js.map} +1 -1
- package/dist/{ThankYouPage-5IDWYLTL.js → ThankYouPage-TXVYZFWX.js} +13 -11
- package/dist/ThankYouPage-TXVYZFWX.js.map +1 -0
- package/dist/{WalletPage-MQR4UAMN.js → WalletPage-LUSVCXGA.js} +14 -12
- package/dist/WalletPage-LUSVCXGA.js.map +1 -0
- package/dist/{WishlistPage-4YADKHYB.js → WishlistPage-ZFRSOB43.js} +14 -12
- package/dist/WishlistPage-ZFRSOB43.js.map +1 -0
- package/dist/api/apps.d.ts +40 -10
- package/dist/api/apps.d.ts.map +1 -1
- package/dist/api/apps.js +4 -22
- package/dist/api/apps.js.map +1 -1
- package/dist/api/brands.js +5 -5
- package/dist/api/cart.js +5 -5
- package/dist/api/category.js +5 -5
- package/dist/api/client.d.ts +6 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +3 -3
- package/dist/api/home.js +4 -4
- package/dist/api/loyalty.js +5 -5
- package/dist/api/menu.js +4 -4
- package/dist/api/notification.js +4 -4
- package/dist/api/order.js +5 -5
- package/dist/api/page.js +5 -5
- package/dist/api/product.js +5 -5
- package/dist/api/profile.js +3 -3
- package/dist/api/store.js +4 -4
- package/dist/api/translations.js +4 -4
- package/dist/api/user.js +4 -4
- package/dist/api/wishlist.js +4 -4
- package/dist/{chunk-QQGFEBYP.js → chunk-2FDMBW2G.js} +3 -3
- package/dist/{chunk-QQGFEBYP.js.map → chunk-2FDMBW2G.js.map} +1 -1
- package/dist/{chunk-A5XHG5DY.js → chunk-2JHVZBQ7.js} +3 -3
- package/dist/{chunk-A5XHG5DY.js.map → chunk-2JHVZBQ7.js.map} +1 -1
- package/dist/{chunk-FUH74TV3.js → chunk-2WNYE75P.js} +39 -4
- package/dist/chunk-2WNYE75P.js.map +1 -0
- package/dist/{chunk-ODXQLAF4.js → chunk-4BIYLPIT.js} +5 -5
- package/dist/{chunk-ODXQLAF4.js.map → chunk-4BIYLPIT.js.map} +1 -1
- package/dist/{chunk-PASKA2UT.js → chunk-4EHNAFYR.js} +4 -4
- package/dist/{chunk-PASKA2UT.js.map → chunk-4EHNAFYR.js.map} +1 -1
- package/dist/{chunk-OY3VMBTA.js → chunk-53AXOEUK.js} +4 -4
- package/dist/{chunk-OY3VMBTA.js.map → chunk-53AXOEUK.js.map} +1 -1
- package/dist/{chunk-VOTDCMG3.js → chunk-AY6KRPHL.js} +3 -3
- package/dist/{chunk-VOTDCMG3.js.map → chunk-AY6KRPHL.js.map} +1 -1
- package/dist/{chunk-R5VMDBV2.js → chunk-BR26I5WV.js} +4 -4
- package/dist/{chunk-R5VMDBV2.js.map → chunk-BR26I5WV.js.map} +1 -1
- package/dist/{chunk-UXCLRJ3Q.js → chunk-DBFD6F25.js} +6 -6
- package/dist/{chunk-UXCLRJ3Q.js.map → chunk-DBFD6F25.js.map} +1 -1
- package/dist/chunk-E2FO6OSL.js +136 -0
- package/dist/chunk-E2FO6OSL.js.map +1 -0
- package/dist/{chunk-MD35JQVL.js → chunk-EGXKYLBD.js} +4 -4
- package/dist/{chunk-MD35JQVL.js.map → chunk-EGXKYLBD.js.map} +1 -1
- package/dist/{chunk-HPR6QACC.js → chunk-EXYGVSRB.js} +3 -3
- package/dist/{chunk-HPR6QACC.js.map → chunk-EXYGVSRB.js.map} +1 -1
- package/dist/{chunk-KOVPH7TW.js → chunk-F7TFLW56.js} +5 -4
- package/dist/chunk-F7TFLW56.js.map +1 -0
- package/dist/{chunk-Y73ZOE3I.js → chunk-FALZ7SZO.js} +4 -4
- package/dist/{chunk-Y73ZOE3I.js.map → chunk-FALZ7SZO.js.map} +1 -1
- package/dist/{chunk-POU6ARSQ.js → chunk-FHLQQE23.js} +4 -4
- package/dist/{chunk-POU6ARSQ.js.map → chunk-FHLQQE23.js.map} +1 -1
- package/dist/{chunk-IIQKLIII.js → chunk-GIQETPP2.js} +247 -156
- package/dist/chunk-GIQETPP2.js.map +1 -0
- package/dist/{chunk-2PWN27HQ.js → chunk-GVMWHNQ5.js} +4 -4
- package/dist/{chunk-2PWN27HQ.js.map → chunk-GVMWHNQ5.js.map} +1 -1
- package/dist/{chunk-X4Z6MIBG.js → chunk-IWPQF6VZ.js} +6 -6
- package/dist/{chunk-X4Z6MIBG.js.map → chunk-IWPQF6VZ.js.map} +1 -1
- package/dist/{chunk-RW2WZ4BN.js → chunk-LP3IE6UV.js} +4 -4
- package/dist/{chunk-RW2WZ4BN.js.map → chunk-LP3IE6UV.js.map} +1 -1
- package/dist/{chunk-2WBVZR4E.js → chunk-LUFVVUWZ.js} +4 -4
- package/dist/{chunk-2WBVZR4E.js.map → chunk-LUFVVUWZ.js.map} +1 -1
- package/dist/{chunk-BH6NMIAK.js → chunk-M75FIT2Y.js} +116 -13
- package/dist/chunk-M75FIT2Y.js.map +1 -0
- package/dist/{chunk-DFIZHPDP.js → chunk-NUPOX7ID.js} +4 -4
- package/dist/{chunk-DFIZHPDP.js.map → chunk-NUPOX7ID.js.map} +1 -1
- package/dist/{chunk-DA43QUYK.js → chunk-ONGTNGTR.js} +3 -3
- package/dist/{chunk-DA43QUYK.js.map → chunk-ONGTNGTR.js.map} +1 -1
- package/dist/{chunk-WI7TR7RK.js → chunk-OPKTJIZQ.js} +10 -2
- package/dist/chunk-OPKTJIZQ.js.map +1 -0
- package/dist/{chunk-ZBTCQZVO.js → chunk-PQNPO2J3.js} +3 -3
- package/dist/{chunk-ZBTCQZVO.js.map → chunk-PQNPO2J3.js.map} +1 -1
- package/dist/{chunk-DIKZRWOS.js → chunk-PSYBJK2L.js} +4 -4
- package/dist/{chunk-DIKZRWOS.js.map → chunk-PSYBJK2L.js.map} +1 -1
- package/dist/{chunk-2CRMGVH6.js → chunk-Q5DFI4WQ.js} +3 -3
- package/dist/{chunk-2CRMGVH6.js.map → chunk-Q5DFI4WQ.js.map} +1 -1
- package/dist/{chunk-EEYZYG36.js → chunk-QMT3KQ3V.js} +4 -4
- package/dist/{chunk-EEYZYG36.js.map → chunk-QMT3KQ3V.js.map} +1 -1
- package/dist/{chunk-4BH3L5ZI.js → chunk-SBDHJUNI.js} +3 -3
- package/dist/{chunk-4BH3L5ZI.js.map → chunk-SBDHJUNI.js.map} +1 -1
- package/dist/{chunk-FXXATUWJ.js → chunk-T5WDJAVS.js} +5 -5
- package/dist/{chunk-FXXATUWJ.js.map → chunk-T5WDJAVS.js.map} +1 -1
- package/dist/{chunk-TFDN2SKC.js → chunk-U3S6RFYL.js} +3 -3
- package/dist/{chunk-TFDN2SKC.js.map → chunk-U3S6RFYL.js.map} +1 -1
- package/dist/chunk-ULAPZSHY.js +44 -0
- package/dist/chunk-ULAPZSHY.js.map +1 -0
- package/dist/{chunk-KN6YUQ6L.js → chunk-UNGQL6AB.js} +3 -3
- package/dist/{chunk-KN6YUQ6L.js.map → chunk-UNGQL6AB.js.map} +1 -1
- package/dist/{chunk-7P3CT2PM.js → chunk-UQ2MAJXN.js} +14 -4
- package/dist/chunk-UQ2MAJXN.js.map +1 -0
- package/dist/{chunk-QHDMWYJO.js → chunk-URH4CDTN.js} +4 -4
- package/dist/{chunk-QHDMWYJO.js.map → chunk-URH4CDTN.js.map} +1 -1
- package/dist/{chunk-H3QMQIKP.js → chunk-VIRPVAK3.js} +3 -3
- package/dist/{chunk-H3QMQIKP.js.map → chunk-VIRPVAK3.js.map} +1 -1
- package/dist/{chunk-MSBPOHMV.js → chunk-WPX5U2PA.js} +7 -7
- package/dist/{chunk-MSBPOHMV.js.map → chunk-WPX5U2PA.js.map} +1 -1
- package/dist/chunk-ZC6SZKXH.js +14 -0
- package/dist/{chunk-W64WJKTH.js.map → chunk-ZC6SZKXH.js.map} +1 -1
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/drawer/index.js +11 -9
- package/dist/components/home/index.js +14 -12
- package/dist/components/layout/index.js +5 -5
- package/dist/components/product/index.js +12 -10
- package/dist/components/snippets/AppsSnippets.d.ts +18 -0
- package/dist/components/snippets/AppsSnippets.d.ts.map +1 -0
- package/dist/components/snippets/index.d.ts +2 -0
- package/dist/components/snippets/index.d.ts.map +1 -0
- package/dist/components/store/index.js +13 -11
- package/dist/components/store/index.js.map +1 -1
- package/dist/document-class-3RZJGYJF.js +23 -0
- package/dist/{document-class-224GXQZQ.js.map → document-class-3RZJGYJF.js.map} +1 -1
- package/dist/hooks/index.js +11 -9
- package/dist/hooks/useGtm.js +11 -9
- package/dist/hooks/useMoney.js +11 -9
- package/dist/hooks/useStore.js +11 -9
- package/dist/hooks/useUser.js +5 -5
- package/dist/index.js +11 -9
- package/dist/index.js.map +1 -1
- package/dist/{navigation-SXCM653S.js → navigation-WMJ77B6H.js} +4 -4
- package/dist/{navigation-SXCM653S.js.map → navigation-WMJ77B6H.js.map} +1 -1
- package/dist/{navigation-B6FATNWM.js → navigation-WXELHHVJ.js} +5 -5
- package/dist/{navigation-B6FATNWM.js.map → navigation-WXELHHVJ.js.map} +1 -1
- package/dist/{not-found-EMPUSRN4.js → not-found-Z6DJND5N.js} +13 -11
- package/dist/not-found-Z6DJND5N.js.map +1 -0
- package/dist/providers/TwilightProvider.d.ts.map +1 -1
- package/dist/providers/index.js +11 -9
- package/dist/routes/account/orders.js +6 -6
- package/dist/routes/account.js +14 -14
- package/dist/routes/blog.js +10 -10
- package/dist/routes/brands.js +6 -6
- package/dist/routes/cart.js +19 -17
- package/dist/routes/cart.js.map +1 -1
- package/dist/routes/home.js +16 -14
- package/dist/routes/index.js +3 -3
- package/dist/routes/loyalty.js +6 -6
- package/dist/routes/page.js +6 -6
- package/dist/routes/product-listing.js +16 -14
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +14 -12
- package/dist/routes/product.js.map +1 -1
- package/dist/routes/root/beforeLoad.d.ts +7 -0
- package/dist/routes/root/beforeLoad.d.ts.map +1 -1
- package/dist/routes/root/head.d.ts +14 -0
- package/dist/routes/root/head.d.ts.map +1 -1
- package/dist/routes/seo-redirects.js +3 -3
- package/dist/routes/testimonials.js +2 -2
- package/dist/routes/thank-you.js +6 -6
- package/dist/skeleton.js +16 -14
- package/dist/tanstack/router.d.ts.map +1 -1
- package/dist/tanstack.js +14 -12
- package/dist/tanstack.js.map +1 -1
- package/dist/twilight/context.d.ts +7 -0
- package/dist/twilight/context.d.ts.map +1 -1
- package/dist/twilight/ensure-context.d.ts.map +1 -1
- package/dist/types/salla-sdk.d.ts +15 -0
- package/dist/types/salla-sdk.d.ts.map +1 -1
- package/dist/utils/app-scope.d.ts +46 -0
- package/dist/utils/app-scope.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/inline-script.d.ts +8 -0
- package/dist/utils/inline-script.d.ts.map +1 -0
- package/dist/utils/runtime-env.d.ts +34 -0
- package/dist/utils/runtime-env.d.ts.map +1 -0
- package/dist/utils/sdk-helpers.d.ts +4 -2
- package/dist/utils/sdk-helpers.d.ts.map +1 -1
- package/dist/utils/theme-hook-slots.d.ts +36 -0
- package/dist/utils/theme-hook-slots.d.ts.map +1 -0
- package/dist/vite/index.js +2 -2
- package/package.json +2 -2
- package/dist/BlogAuthorPage-QJLGMSK3.js.map +0 -1
- package/dist/BlogCategoryPage-H7VYN7OV.js.map +0 -1
- package/dist/BlogPage-LWAQ6ZVO.js.map +0 -1
- package/dist/BlogSinglePage-DMAMK26P.js.map +0 -1
- package/dist/BlogTagPage-6URVT6AD.js.map +0 -1
- package/dist/BrandsPage-AANQU2O3.js.map +0 -1
- package/dist/Breadcrumb-UAMFZYT6.js.map +0 -1
- package/dist/CartItem-3677CNHU.js.map +0 -1
- package/dist/CartSummary-BJJNE6C5.js.map +0 -1
- package/dist/CustomerLayout-SG2CUIJU.js.map +0 -1
- package/dist/LoyaltyPage-YBVHG57L.js.map +0 -1
- package/dist/MobileMenu-DNMUVXPY.js.map +0 -1
- package/dist/NotificationsPage-X7PIHUNY.js.map +0 -1
- package/dist/OrderSinglePage-E7SXRGRF.js.map +0 -1
- package/dist/OrdersPage-G6HBVJKI.js.map +0 -1
- package/dist/ProfilePage-6QDPXYNR.js.map +0 -1
- package/dist/SeoCartWidget-GR6PYXDP.js.map +0 -1
- package/dist/SettingsPage-2OVEIVCT.js.map +0 -1
- package/dist/ThankYouPage-5IDWYLTL.js.map +0 -1
- package/dist/WalletPage-MQR4UAMN.js.map +0 -1
- package/dist/WishlistPage-4YADKHYB.js.map +0 -1
- package/dist/chunk-7P3CT2PM.js.map +0 -1
- package/dist/chunk-BH6NMIAK.js.map +0 -1
- package/dist/chunk-FUH74TV3.js.map +0 -1
- package/dist/chunk-IIQKLIII.js.map +0 -1
- package/dist/chunk-KOVPH7TW.js.map +0 -1
- package/dist/chunk-W64WJKTH.js +0 -14
- package/dist/chunk-WI7TR7RK.js.map +0 -1
- package/dist/document-class-224GXQZQ.js +0 -21
- package/dist/not-found-EMPUSRN4.js.map +0 -1
package/dist/tanstack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tanstack/middleware/twilight.ts","../src/tanstack/middleware/earlyHints.ts"],"names":["createMiddleware"],"mappings":"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","file":"tanstack.js","sourcesContent":["import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport {\n extractTokenFromCookies,\n extractScopeIdFromCookies,\n AUTH_TOKEN_COOKIE_NAME,\n} from '../../utils/cookies';\nimport { runWithTwilightContext } from '../../twilight/context';\n\ninterface TwilightMiddlewareOptions {\n cookieName?: string;\n}\n\nexport const twilightMiddleware = (options?: TwilightMiddlewareOptions): AnyRequestMiddleware => {\n const cookieName = options?.cookieName ?? AUTH_TOKEN_COOKIE_NAME;\n\n return createMiddleware().server(({ request, next }) => {\n const cookieHeader = request.headers.get('Cookie');\n const authToken = extractTokenFromCookies(cookieHeader, cookieName);\n const scopeId = extractScopeIdFromCookies(cookieHeader);\n\n return runWithTwilightContext({ authToken, scopeId }, () => next({ context: { authToken } }));\n });\n};\n","import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport { tsrStartManifest } from 'tanstack-start-manifest:v';\nimport { rootHead } from '../../routes/root/head';\n\n/** Known critical assets that should always be preloaded */\nconst CRITICAL_ASSETS = [\n { rel: 'modulepreload', href: 'https://cdn.assets.salla.network/static/lit/3.3.3/lit.js' },\n { rel: 'preconnect', href: 'https://api.salla.dev' },\n { rel: 'preconnect', href: 'https://cdn.salla.sa' },\n { rel: 'preconnect', href: 'https://cdn.assets.salla.network', crossOrigin: 'anonymous' },\n { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'anonymous' },\n] as const;\n\n/** Extract locale from URL path (e.g., /ar/products → 'ar') */\nfunction extractLocale(url: string): string | undefined {\n const match = url.match(/^\\/([a-z]{2})(\\/|$)/);\n return match?.[1];\n}\n\n/** Build Link header value from a link descriptor */\nfunction buildLinkHeader(link: Record<string, unknown>): string | null {\n const href = link.href as string | undefined;\n const rel = link.rel as string | undefined;\n if (!href || !rel) return null;\n\n // Skip print-media stylesheets (already non-blocking)\n if (rel === 'stylesheet') {\n const media = link.media as string | undefined;\n if (media === 'print') return null;\n return `<${href}>; rel=preload; as=style`;\n }\n\n if (rel === 'preload') {\n const asType = link.as as string | undefined;\n if (!asType) return null;\n const parts = [`<${href}>`, 'rel=preload', `as=${asType}`];\n if (asType === 'font' || link.crossOrigin) {\n parts.push('crossorigin');\n }\n return parts.join('; ');\n }\n\n if (rel === 'modulepreload') {\n return `<${href}>; rel=modulepreload`;\n }\n\n return null;\n}\n\nexport const earlyHintsMiddleware = (): AnyRequestMiddleware => {\n let cachedManifestPaths: string[] | null = null;\n\n return createMiddleware().server(async ({ request, next }) => {\n const response = await next();\n\n const accept = request.headers.get('Accept') ?? '';\n if (!accept.includes('text/html') && accept !== '*/*') return response;\n if (!(response instanceof Response)) return response;\n\n const linkHeaders: string[] = [];\n\n // 1. Add critical assets from rootHead (fonts, icons, SDK, etc.)\n try {\n const url = new URL(request.url);\n const locale = extractLocale(url.pathname);\n if (locale) {\n const headResult = rootHead({ params: { locale } });\n const links = (headResult.links as Record<string, unknown>[]) ?? [];\n for (const link of links) {\n const header = buildLinkHeader(link);\n if (header) linkHeaders.push(header);\n }\n }\n } catch (e) {\n // rootHead failed — log why, then fall back to known critical assets\n console.warn('[earlyHints] rootHead failed:', e instanceof Error ? e.message : e);\n for (const asset of CRITICAL_ASSETS) {\n const co = 'crossOrigin' in asset ? asset.crossOrigin : undefined;\n linkHeaders.push(`<${asset.href}>; rel=${asset.rel}${co ? '; crossorigin' : ''}`);\n }\n }\n\n // 2. Add CSS from TanStack Start manifest (bundled theme CSS)\n if (!cachedManifestPaths) {\n try {\n const manifest = tsrStartManifest();\n const rootAssets = manifest.routes['__root__']?.assets ?? [];\n const seen = new Set<string>();\n cachedManifestPaths = [];\n for (const asset of rootAssets) {\n if (asset.tag === 'link' && asset.attrs?.href?.endsWith('.css')) {\n if (!seen.has(asset.attrs.href)) {\n seen.add(asset.attrs.href);\n cachedManifestPaths.push(asset.attrs.href);\n }\n }\n }\n } catch (e) {\n // manifest not available — skip\n console.warn('[earlyHints] tsrStartManifest failed:', e instanceof Error ? e.message : e);\n }\n }\n\n if (cachedManifestPaths) {\n for (const href of cachedManifestPaths) {\n linkHeaders.push(`<${href}>; rel=preload; as=style`);\n }\n }\n\n // Apply Link headers if we have any\n if (linkHeaders.length === 0) {\n console.warn('[earlyHints] no critical assets found — no Link headers added');\n return response;\n }\n\n const headers = new Headers(response.headers);\n for (const linkHeader of linkHeaders) {\n headers.append('Link', linkHeader);\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n });\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tanstack/middleware/twilight.ts","../src/tanstack/middleware/earlyHints.ts"],"names":["createMiddleware"],"mappings":"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","file":"tanstack.js","sourcesContent":["import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport {\n extractTokenFromCookies,\n extractScopeIdFromCookies,\n AUTH_TOKEN_COOKIE_NAME,\n} from '../../utils/cookies';\nimport { runWithTwilightContext } from '../../twilight/context';\n\ninterface TwilightMiddlewareOptions {\n cookieName?: string;\n}\n\nexport const twilightMiddleware = (options?: TwilightMiddlewareOptions): AnyRequestMiddleware => {\n const cookieName = options?.cookieName ?? AUTH_TOKEN_COOKIE_NAME;\n\n return createMiddleware().server(({ request, next }) => {\n const cookieHeader = request.headers.get('Cookie');\n const authToken = extractTokenFromCookies(cookieHeader, cookieName);\n const scopeId = extractScopeIdFromCookies(cookieHeader);\n\n return runWithTwilightContext({ authToken, scopeId }, () => next({ context: { authToken } }));\n });\n};\n","import type { AnyRequestMiddleware } from '@tanstack/react-start';\nimport { createMiddleware } from '@tanstack/react-start';\nimport { tsrStartManifest } from 'tanstack-start-manifest:v';\nimport { rootHead } from '../../routes/root/head';\n\n/** Known critical assets that should always be preloaded */\nconst CRITICAL_ASSETS = [\n { rel: 'modulepreload', href: 'https://cdn.assets.salla.network/static/lit/3.3.3/lit.js' },\n { rel: 'preconnect', href: 'https://api.salla.dev' },\n { rel: 'preconnect', href: 'https://cdn.salla.sa' },\n { rel: 'preconnect', href: 'https://cdn.assets.salla.network', crossOrigin: 'anonymous' },\n { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'anonymous' },\n] as const;\n\n/** Extract locale from URL path (e.g., /ar/products → 'ar') */\nfunction extractLocale(url: string): string | undefined {\n const match = url.match(/^\\/([a-z]{2})(\\/|$)/);\n return match?.[1];\n}\n\n/** Build Link header value from a link descriptor */\nfunction buildLinkHeader(link: Record<string, unknown>): string | null {\n const href = link.href as string | undefined;\n const rel = link.rel as string | undefined;\n if (!href || !rel) return null;\n\n // Skip print-media stylesheets (already non-blocking)\n if (rel === 'stylesheet') {\n const media = link.media as string | undefined;\n if (media === 'print') return null;\n return `<${href}>; rel=preload; as=style`;\n }\n\n if (rel === 'preload') {\n const asType = link.as as string | undefined;\n if (!asType) return null;\n const parts = [`<${href}>`, 'rel=preload', `as=${asType}`];\n if (asType === 'font' || link.crossOrigin) {\n parts.push('crossorigin');\n }\n return parts.join('; ');\n }\n\n if (rel === 'modulepreload') {\n return `<${href}>; rel=modulepreload`;\n }\n\n return null;\n}\n\nexport const earlyHintsMiddleware = (): AnyRequestMiddleware => {\n let cachedManifestPaths: string[] | null = null;\n\n return createMiddleware().server(async ({ request, next }) => {\n const response = await next();\n\n const accept = request.headers.get('Accept') ?? '';\n if (!accept.includes('text/html') && accept !== '*/*') return response;\n if (!(response instanceof Response)) return response;\n\n const linkHeaders: string[] = [];\n\n // 1. Add critical assets from rootHead (fonts, icons, SDK, etc.)\n try {\n const url = new URL(request.url);\n const locale = extractLocale(url.pathname);\n if (locale) {\n const headResult = rootHead({ params: { locale } });\n const links = (headResult.links as Record<string, unknown>[]) ?? [];\n for (const link of links) {\n const header = buildLinkHeader(link);\n if (header) linkHeaders.push(header);\n }\n }\n } catch (e) {\n // rootHead failed — log why, then fall back to known critical assets\n console.warn('[earlyHints] rootHead failed:', e instanceof Error ? e.message : e);\n for (const asset of CRITICAL_ASSETS) {\n const co = 'crossOrigin' in asset ? asset.crossOrigin : undefined;\n linkHeaders.push(`<${asset.href}>; rel=${asset.rel}${co ? '; crossorigin' : ''}`);\n }\n }\n\n // 2. Add CSS from TanStack Start manifest (bundled theme CSS)\n if (!cachedManifestPaths) {\n try {\n const manifest = tsrStartManifest();\n const rootAssets = manifest.routes['__root__']?.assets ?? [];\n const seen = new Set<string>();\n cachedManifestPaths = [];\n for (const asset of rootAssets) {\n if (asset.tag === 'link' && asset.attrs?.href?.endsWith('.css')) {\n if (!seen.has(asset.attrs.href)) {\n seen.add(asset.attrs.href);\n cachedManifestPaths.push(asset.attrs.href);\n }\n }\n }\n } catch (e) {\n // manifest not available — skip\n console.warn('[earlyHints] tsrStartManifest failed:', e instanceof Error ? e.message : e);\n }\n }\n\n if (cachedManifestPaths) {\n for (const href of cachedManifestPaths) {\n linkHeaders.push(`<${href}>; rel=preload; as=style`);\n }\n }\n\n // Apply Link headers if we have any\n if (linkHeaders.length === 0) {\n console.warn('[earlyHints] no critical assets found — no Link headers added');\n return response;\n }\n\n const headers = new Headers(response.headers);\n for (const linkHeader of linkHeaders) {\n headers.append('Link', linkHeader);\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n });\n};\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { QueryClient } from '@tanstack/react-query';
|
|
2
2
|
import type { i18n } from 'i18next';
|
|
3
3
|
import type { StoreContext } from '../api/store';
|
|
4
|
+
import type { AppSnippet, AppSettings } from '../api/apps';
|
|
4
5
|
export interface TwilightLocation<TSearch = Record<string, unknown>> {
|
|
5
6
|
href: string;
|
|
6
7
|
pathname: string;
|
|
@@ -35,6 +36,12 @@ export interface TwilightContext {
|
|
|
35
36
|
i18n: i18n;
|
|
36
37
|
dir: 'ltr' | 'rtl';
|
|
37
38
|
page?: PageContext;
|
|
39
|
+
/** Installed apps' snippets, fetched in rootBeforeLoad so AppsSnippets can render CDN
|
|
40
|
+
* <script> tags during SSR (React Query isn't dehydrated here, so useQuery has no SSR data). */
|
|
41
|
+
appsSnippets?: AppSnippet[];
|
|
42
|
+
/** Per-app public `app.*` buckets, fetched in rootBeforeLoad so rootHead can install the
|
|
43
|
+
* `Salla.appScope` factory inline at parse time — ahead of the snippets' onReady callbacks. */
|
|
44
|
+
appsSettings?: AppSettings;
|
|
38
45
|
extras?: Record<string, unknown>;
|
|
39
46
|
}
|
|
40
47
|
export declare function runWithTwilightContext<T>(partial: Partial<TwilightContext>, fn: () => T): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/twilight/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/twilight/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU3D,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;qGACiG;IACjG,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B;oGACgG;IAChG,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAwGD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQ3F;AAMD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKlE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAM7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAM7C;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAkDpD;AAED,wCAAwC;AACxC,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-context.d.ts","sourceRoot":"","sources":["../../src/twilight/ensure-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ensure-context.d.ts","sourceRoot":"","sources":["../../src/twilight/ensure-context.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAsBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,GACnD,OAAO,CAoBT"}
|
|
@@ -296,6 +296,14 @@ export interface SallaWishlist {
|
|
|
296
296
|
toggle: (_productId: number | string) => Promise<void>;
|
|
297
297
|
event?: SallaWishlistEvent;
|
|
298
298
|
}
|
|
299
|
+
export interface SallaHooks {
|
|
300
|
+
/**
|
|
301
|
+
* Whitelist of theme-rendered slot names that apps are allowed to mount into. The SDK
|
|
302
|
+
* rejects `mount()` for any name absent from it; see `registerThemeHookSlots`.
|
|
303
|
+
*/
|
|
304
|
+
_themeSlots?: string[];
|
|
305
|
+
mount?: (_slot: string, ..._args: unknown[]) => unknown;
|
|
306
|
+
}
|
|
299
307
|
export interface SallaLogger {
|
|
300
308
|
debug: (...args: unknown[]) => void;
|
|
301
309
|
info: (...args: unknown[]) => void;
|
|
@@ -316,6 +324,8 @@ export interface SallaSDK {
|
|
|
316
324
|
product: SallaProduct;
|
|
317
325
|
wishlist: SallaWishlist;
|
|
318
326
|
logger: SallaLogger;
|
|
327
|
+
/** Slot registry apps mount into; present once the SDK's hooks module has loaded. */
|
|
328
|
+
hooks?: SallaHooks;
|
|
319
329
|
notify: SallaNotify;
|
|
320
330
|
comment: SallaComment;
|
|
321
331
|
order: SallaOrder;
|
|
@@ -332,6 +342,11 @@ export interface SallaSDK {
|
|
|
332
342
|
/** Native-webview bridge (twilight Salla.mobile); self-gated, no-op on web. */
|
|
333
343
|
mobile?: SallaMobile;
|
|
334
344
|
onReady: (callback?: (event: Event) => unknown) => Promise<void>;
|
|
345
|
+
/**
|
|
346
|
+
* Per-app `salla` facade: `config` resolves `app.*` to one app's bucket, else the real SDK.
|
|
347
|
+
* CDN snippets call it with their `data-scope-id`. Installed inline (SSR head) or by `installAppScope`.
|
|
348
|
+
*/
|
|
349
|
+
appScope?: (appScopeId: string) => SallaSDK;
|
|
335
350
|
[key: string]: unknown;
|
|
336
351
|
}
|
|
337
352
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salla-sdk.d.ts","sourceRoot":"","sources":["../../src/types/salla-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IACtE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CACzE;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC/D,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IACT,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,QAAQ;IACvB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CACP,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,2FAA2F;IAC3F,eAAe,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C;mEAC+D;IAC/D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,OAAO,CAAC;YAAE,IAAI,EAAE,OAAO,EAAE,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,CACP,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,CAAC,EAAE,MAAM,EAAE,KAClB,OAAO,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,OAAO,CAAC;YACjB,IAAI,EAAE;gBAAE,IAAI,EAAE,oBAAoB,CAAC;gBAAC,UAAU,EAAE,OAAO,EAAE,CAAA;aAAE,CAAC;SAC7D,CAAC,CAAC;KACJ,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,CACV,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC,EAAE,KAC7E,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,QAAQ,EAAE;YAChB,MAAM,EAAE,MAAM,CAAC;YACf,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;SACnC,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE;QACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC/C,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,+FAA+F;QAC/F,OAAO,EAAE,CAAC,QAAQ,EAAE;YAClB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,6EAA6E;QAC7E,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC;IACF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,OAAO,EAAE;QACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;KAC3C,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AACrC,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAE/F,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CACb,SAAS,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,KAC/E,IAAI,CAAC;CACX;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,QAAQ,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,mBAAmB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAClD,CAAC;IACF,IAAI,EAAE,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,mBAAmB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,CACd,SAAS,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,KACnF,IAAI,CAAC;CACX;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CACR,mBAAmB,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,KAC5C,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,GAAG,EAAE;QACH,UAAU,EAAE,CACV,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,UAAU,CAAC,EAAE,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC,EAAE,KAC7E,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,QAAQ,EAAE;YAChB,MAAM,EAAE,MAAM,CAAC;YACf,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;SACnC,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAClC,CAAC;IACF,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IACxE,mEAAmE;IACnE,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IACxD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC;IAC1C,GAAG,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IACrE,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;CAC3E;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC7C,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACzE,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACzD,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,6DAA6D;QAC7D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,0BAA0B;QAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,4BAA4B;QAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACjD,CAAC;IACF,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,KAAK,CAAC,EAAE,QAAQ,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAClB,uBAAuB,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KACvD;CACF;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"salla-sdk.d.ts","sourceRoot":"","sources":["../../src/types/salla-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SallaSDK } from '../types/salla-sdk';
|
|
2
|
+
/** One app's private `app.*` bag, keyed without the `app.` prefix (`app.color` → `color`). */
|
|
3
|
+
export type AppConfigBag = Record<string, unknown>;
|
|
4
|
+
/** One public `app.*` bucket per app, keyed by appScopeId. Everything else is read from the
|
|
5
|
+
* real `salla.config` at runtime. */
|
|
6
|
+
export interface AppScopeContexts {
|
|
7
|
+
apps: Record<string, AppConfigBag>;
|
|
8
|
+
}
|
|
9
|
+
/** Builds the `scopeId → sandboxed SDK` factory over a live bucket bag. */
|
|
10
|
+
export type AppScopeFactoryBuilder = (w: any, appCtx: Record<string, AppConfigBag>) => (scopeId: string) => SallaSDK;
|
|
11
|
+
/**
|
|
12
|
+
* The sandbox itself: proxies that resolve `app.*` against the app's own bucket and pass
|
|
13
|
+
* everything else through to the real SDK.
|
|
14
|
+
*
|
|
15
|
+
* MUST stay self-contained (only `Object`/`Proxy` and its two arguments): it is serialized via
|
|
16
|
+
* `.toString()` next to {@link appScopeBootstrap} and handed in as an argument, so anything it
|
|
17
|
+
* closed over at module scope would be undefined in the inline head copy. Split out from the
|
|
18
|
+
* bootstrap purely to keep both halves reviewable.
|
|
19
|
+
*/
|
|
20
|
+
export declare const createAppScopeFactory: AppScopeFactoryBuilder;
|
|
21
|
+
/**
|
|
22
|
+
* Installs `window.Salla.appScope`, seeded with `contexts` and sandboxed by `makeFactory`.
|
|
23
|
+
*
|
|
24
|
+
* MUST stay self-contained (only `window`/`Object` and its arguments): it's serialized via
|
|
25
|
+
* `.toString()` and inlined into the SSR head so the factory exists at parse time — before the
|
|
26
|
+
* SDK init/hydration a CDN snippet's `onReady` races, else it throws `Salla.appScope is not a
|
|
27
|
+
* function`. `makeFactory` is passed in rather than imported for exactly that reason. Also
|
|
28
|
+
* called directly by `installAppScope` (tests/fallback).
|
|
29
|
+
*
|
|
30
|
+
* Idempotent: the factory is first-write-wins, while buckets are merged per scope (also
|
|
31
|
+
* first-write-wins) so a later call can seed scopes the first one had no data for. `appCtx` is
|
|
32
|
+
* closure-private (namespacing, not security: buckets are public-only and the boundary is
|
|
33
|
+
* server-side).
|
|
34
|
+
*/
|
|
35
|
+
export declare function appScopeBootstrap(contexts: AppScopeContexts, makeFactory: AppScopeFactoryBuilder): void;
|
|
36
|
+
/** Overlay preview mocks onto one app's bucket (over its pristine values). Delegates to the
|
|
37
|
+
* bootstrap's `__appScopeMock`, so it works for both install paths. False if unknown/uninstalled. */
|
|
38
|
+
export declare function applyAppScopeMocks(appScopeId: string, mocks: AppConfigBag): boolean;
|
|
39
|
+
/** Serialize the installer into an inline `<script>` body seeded with `contexts` — both halves
|
|
40
|
+
* via `.toString()`, hence their self-contained requirement. See `rootHead`. */
|
|
41
|
+
export declare function renderAppScopeInstallScript(contexts: AppScopeContexts): string;
|
|
42
|
+
/** Install `Salla.appScope` on the client, or seed buckets into the inline SSR head copy that
|
|
43
|
+
* already installed it. No-op on the server. Fallback for unseeded loads + the unit-test entry
|
|
44
|
+
* point. */
|
|
45
|
+
export declare function installAppScope(contexts: AppScopeContexts): void;
|
|
46
|
+
//# sourceMappingURL=app-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-scope.d.ts","sourceRoot":"","sources":["../../src/utils/app-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,8FAA8F;AAC9F,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEnD;sCACsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACpC;AAED,2EAA2E;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CAEnC,CAAC,EAAE,GAAG,EACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KACjC,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC;AAEnC;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,sBA0EnC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,sBAAsB,GAClC,IAAI,CA8CN;AAED;sGACsG;AACtG,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAKnF;AAID;iFACiF;AACjF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAK9E;AAED;;aAEa;AACb,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAGhE"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export { buildBaseHead, buildHreflangAlternates, localeToOgLocale } from './base
|
|
|
15
15
|
export { normalizeClasses, mergeElementAttrs, toReactProps, mergeDocumentDescriptors, syncAttrsToElement, type DocumentElementAttrs, type DocumentElementDescriptor, } from './document-class';
|
|
16
16
|
export { getStoreIdentifier, getSallaSDK, type StoreContext } from './sdk-helpers';
|
|
17
17
|
export { dispatchRouteChanged, type RouteChangedEvent } from './sdk-events';
|
|
18
|
+
export { applyAppScopeMocks, type AppScopeContexts, type AppConfigBag } from './app-scope';
|
|
19
|
+
export { registerThemeHookSlots } from './theme-hook-slots';
|
|
18
20
|
export { sortOptions } from './sort-options';
|
|
19
21
|
export { stripUnsafeHtml } from './sanitize';
|
|
20
22
|
export { getMobileOS, resolveAppStoreUrl, type MobileOS } from './device';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAM5E,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG1E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export { formatSallaPlural } from '../chunk-BT6HEEAP.js';
|
|
2
2
|
export { stripUnsafeHtml } from '../chunk-RUHSV4Z6.js';
|
|
3
|
-
export { dispatchRouteChanged } from '../chunk-
|
|
3
|
+
export { dispatchRouteChanged } from '../chunk-Q5DFI4WQ.js';
|
|
4
4
|
export { mergeHead, resolveHead, setHeadAdapter } from '../chunk-B3EFOE57.js';
|
|
5
5
|
export { sortOptions } from '../chunk-6Z4MOC4S.js';
|
|
6
6
|
export { buildBaseHead, buildHreflangAlternates, localeToOgLocale } from '../chunk-TZ3E5BN4.js';
|
|
7
7
|
export { color } from '../chunk-VVZNW5CB.js';
|
|
8
|
-
export {
|
|
9
|
-
|
|
8
|
+
export { applyAppScopeMocks, registerThemeHookSlots } from '../chunk-E2FO6OSL.js';
|
|
9
|
+
export { AUTH_TOKEN_COOKIE_NAME, clearAuthTokenCookie, extractTokenFromCookies, getSallaSDK, getStoreIdentifier } from '../chunk-2WNYE75P.js';
|
|
10
|
+
import '../chunk-OPKTJIZQ.js';
|
|
10
11
|
export { asset, cdn, isPlaceholder } from '../chunk-ZCH7W7DZ.js';
|
|
11
12
|
export { mergeDocumentDescriptors, mergeElementAttrs, normalizeClasses, syncAttrsToElement, toReactProps } from '../chunk-CW625T2E.js';
|
|
12
13
|
import '../chunk-T72DAX7R.js';
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/device.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/utils/device.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASO,SAAS,WAAA,GAAwB;AACtC,EAAA,IAAI,OAAO,SAAA,KAAc,WAAA,EAAa,OAAO,OAAA;AAC7C,EAAA,MAAM,EAAA,GAAK,UAAU,SAAA,IAAa,EAAA;AAClC,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA,EAAG,OAAO,SAAA;AAEhC,EAAA,IAAI,kBAAA,CAAmB,IAAA,CAAK,EAAE,CAAA,IAAM,WAAA,CAAY,KAAK,EAAE,CAAA,IAAK,SAAA,CAAU,cAAA,GAAiB,CAAA,EAAI;AACzF,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,OAAA;AACT;AAWO,SAAS,kBAAA,CACd,IAAA,EACA,EAAA,GAAe,WAAA,EAAY,EACP;AACpB,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,IAAI,EAAA,KAAO,SAAA,EAAW,OAAO,IAAA,CAAK,cAAc,IAAA,CAAK,QAAA;AACrD,EAAA,OAAO,IAAA,CAAK,YAAY,IAAA,CAAK,UAAA;AAC/B","file":"index.js","sourcesContent":["import type { StoreApps } from '../types';\n\n/** The visitor's mobile operating system, or `'other'` (desktop/unknown/server). */\nexport type MobileOS = 'ios' | 'android' | 'other';\n\n/**\n * Detects the current mobile OS from the User-Agent.\n * Returns `'other'` on the server (no `navigator`) and on desktop/unknown agents.\n */\nexport function getMobileOS(): MobileOS {\n if (typeof navigator === 'undefined') return 'other';\n const ua = navigator.userAgent || '';\n if (/android/i.test(ua)) return 'android';\n // iOS, incl. iPadOS which reports a desktop \"Macintosh\" UA but exposes touch\n if (/iPad|iPhone|iPod/.test(ua) || (/Macintosh/.test(ua) && navigator.maxTouchPoints > 1)) {\n return 'ios';\n }\n return 'other';\n}\n\n/**\n * Picks the mobile-app store URL for the given OS:\n * - `ios` → App Store, falling back to Google Play\n * - `android` → Google Play, falling back to App Store\n * - `other` → App Store, falling back to Google Play\n *\n * `os` defaults to {@link getMobileOS}; pass `'other'` during SSR/first render\n * to keep the output stable and avoid a hydration mismatch on the resolved URL.\n */\nexport function resolveAppStoreUrl(\n apps?: StoreApps,\n os: MobileOS = getMobileOS()\n): string | undefined {\n if (!apps) return undefined;\n if (os === 'android') return apps.googleplay || apps.appstore;\n return apps.appstore || apps.googleplay;\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escape a JSON-stringified value for safe embedding inside an inline `<script>` body.
|
|
3
|
+
*
|
|
4
|
+
* The head injects script bodies raw, so a `</script>` inside partner-set data would break out
|
|
5
|
+
* of the tag; U+2028/U+2029 are line terminators in JS but not in JSON, so they must go too.
|
|
6
|
+
*/
|
|
7
|
+
export declare function escapeForInlineScript(value: string): string;
|
|
8
|
+
//# sourceMappingURL=inline-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-script.d.ts","sourceRoot":"","sources":["../../src/utils/inline-script.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO3D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** The env values that must agree between the SSR render and the hydrated client. */
|
|
2
|
+
export interface RuntimeEnv {
|
|
3
|
+
/** Store API base — `VITE_API_URL`. */
|
|
4
|
+
apiBase?: string;
|
|
5
|
+
/** Store identifier — `VITE_STORE_DOMAIN`. */
|
|
6
|
+
storeIdentifier?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A build-time `import.meta.env` var, falling back to the worker's runtime `process.env`
|
|
10
|
+
* (wrangler `vars`, exposed via the `nodejs_compat_populate_process_env` flag).
|
|
11
|
+
*/
|
|
12
|
+
export declare function readEnv(key: string): string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* What this runtime resolves from its own env — server-side that includes the worker vars.
|
|
15
|
+
* Prefers what the server already published, so re-rendering the head during hydration yields
|
|
16
|
+
* the same script instead of dropping it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveRuntimeEnv(): RuntimeEnv;
|
|
19
|
+
/**
|
|
20
|
+
* The env the SSR worker resolved, as handed to the browser by `rootHead`. Empty on the server
|
|
21
|
+
* and on a client whose head carried nothing.
|
|
22
|
+
*
|
|
23
|
+
* Worker `vars` are *runtime* env: they live in `process.env` on the server only, while
|
|
24
|
+
* `import.meta.env` is substituted at build time. A bundle built without those vars therefore
|
|
25
|
+
* sees `undefined` in the browser and silently falls back to the production defaults — SSR
|
|
26
|
+
* would render off the configured backend while every post-hydration fetch hits another one.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getInjectedRuntimeEnv(): RuntimeEnv;
|
|
29
|
+
/**
|
|
30
|
+
* Inline head `<script>` body publishing the server-resolved env, or null when there is nothing
|
|
31
|
+
* to publish (no overrides configured — the defaults already agree on both sides).
|
|
32
|
+
*/
|
|
33
|
+
export declare function renderRuntimeEnvScript(env?: RuntimeEnv): string | null;
|
|
34
|
+
//# sourceMappingURL=runtime-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-env.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUvD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,CAM9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,UAAU,CAGlD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,UAAgC,GAAG,MAAM,GAAG,IAAI,CAK3F"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export type { StoreContext } from '../api/store';
|
|
2
2
|
/**
|
|
3
|
-
* Get the store identifier
|
|
4
|
-
*
|
|
3
|
+
* Get the store identifier. Priority: explicit > VITE_STORE_DOMAIN (build-time) > the identifier
|
|
4
|
+
* the SSR worker resolved (published into the head — wrangler `vars` are server-only, so
|
|
5
|
+
* without this the browser would fall back to its own host and request a different store than
|
|
6
|
+
* the one that was rendered) > window.location.host > runtime env (process.env).
|
|
5
7
|
*/
|
|
6
8
|
export declare function getStoreIdentifier(explicit?: string): string;
|
|
7
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/sdk-helpers.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/sdk-helpers.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB5D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,MAAM,CAAC,KAAK,GAAG,SAAS,CAG7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAYlD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declare hook slots the theme renders itself so apps may mount into them.
|
|
3
|
+
*
|
|
4
|
+
* The SDK rejects `mount()` for any name absent from its `_themeSlots` whitelist, so a theme
|
|
5
|
+
* rendering its own `<salla-hook>` must register the name. Call at module scope; the engine
|
|
6
|
+
* applies the names via {@link applyThemeHookSlots}.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerThemeHookSlots(...names: string[]): void;
|
|
9
|
+
/**
|
|
10
|
+
* Push every registered slot name into the SDK whitelist. Idempotent. Engine-only.
|
|
11
|
+
*
|
|
12
|
+
* The SDK's hooks module may attach after this runs, so a first no-op falls back to a
|
|
13
|
+
* one-shot retry on `twilight::initiated` — still before apps mount from their own onReady.
|
|
14
|
+
*
|
|
15
|
+
* This is only the late backstop: the whitelist is primarily seeded at parse time by the
|
|
16
|
+
* inline head script from {@link renderThemeHookSlotsScript}, because an app's snippet
|
|
17
|
+
* registers its `onReady` callback before React ever hydrates.
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyThemeHookSlots(): void;
|
|
20
|
+
/** The slot names registered so far. Read by `rootHead` when rendering the inline script. */
|
|
21
|
+
export declare function getRegisteredThemeHookSlots(): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Serialize the whitelist push into an inline head `<script>` body, so the slots are
|
|
24
|
+
* registered at parse time.
|
|
25
|
+
*
|
|
26
|
+
* Ordering is the whole point: CDN snippets are parser-inserted `<script defer>` tags in the
|
|
27
|
+
* body, so an app's `Salla.onReady` callback is registered long before React hydrates and runs
|
|
28
|
+
* {@link applyThemeHookSlots}. Whichever `twilight::initiated` listener was added first runs
|
|
29
|
+
* first, so the push must be armed from the head — otherwise the SDK rejects the app's
|
|
30
|
+
* `hooks.mount()` with "Hook <name> is not allowed" and the app never renders.
|
|
31
|
+
*
|
|
32
|
+
* Returns null when the theme registered no slots. Kept self-contained (only `window`) since
|
|
33
|
+
* it ships as raw source, not as a bundled module.
|
|
34
|
+
*/
|
|
35
|
+
export declare function renderThemeHookSlotsScript(names?: string[]): string | null;
|
|
36
|
+
//# sourceMappingURL=theme-hook-slots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-hook-slots.d.ts","sourceRoot":"","sources":["../../src/utils/theme-hook-slots.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAE/D;AAUD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAED,6FAA6F;AAC7F,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,GAAE,MAAM,EAAkC,iBAezF"}
|
package/dist/vite/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { tanstackHeadAdapter } from '../chunk-
|
|
1
|
+
import { tanstackHeadAdapter } from '../chunk-UQ2MAJXN.js';
|
|
2
2
|
import { nextjsHeadAdapter } from '../chunk-HOSHJBPS.js';
|
|
3
3
|
import { setHeadAdapter } from '../chunk-B3EFOE57.js';
|
|
4
4
|
import { RouteId } from '../chunk-MTONGOJD.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-OPKTJIZQ.js';
|
|
6
6
|
import '../chunk-T72DAX7R.js';
|
|
7
7
|
import '../chunk-DGUM43GV.js';
|
|
8
8
|
import { readFile, readdir } from 'fs/promises';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salla.sa/twilight-theme-engine",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -478,6 +478,6 @@
|
|
|
478
478
|
"oxc-parser": "^0.143.0",
|
|
479
479
|
"react-i18next": "^17.0.11",
|
|
480
480
|
"sonner": "^2.0.7",
|
|
481
|
-
"wrangler": "
|
|
481
|
+
"wrangler": "4.121.0"
|
|
482
482
|
}
|
|
483
483
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/blog/BlogAuthorPage.tsx"],"names":[],"mappings":"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","file":"BlogAuthorPage-QJLGMSK3.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogAuthorLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogAuthorLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogAuthorPage({\n page,\n author,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogAuthorLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ author: author.name, cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [author.name]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:author.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:author.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:author.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{author.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => <BlogArticleCard key={article.id} article={article} />)\n }\n </ItemsList>\n\n <HookSlot name=\"blog:author.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/blog/BlogCategoryPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,mBAAyD,EAAC;AAChE,IAAM,iBAAmC,EAAC;AAEnC,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA,GAAa,gBAAA;AAAA,EACb,QAAA,GAAW,cAAA;AAAA,EACX;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAI,WAAA,EAAY;AAC5C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAsB,MAAA,EAAQ,IAAA,IAAQ,IAAI,CAAA;AAEhE,EAAA,MAAM,MAAA,GAAS,YAAY,YAAY;AACrC,IAAA,MAAM,UAAU,aAAA,CAAc,OAAA;AAC9B,IAAA,MAAM,WAAA,GAAc,OAAA,EAAS,KAAA,CAAM,oBAAoB,CAAA;AACvD,IAAA,MAAM,cAAc,WAAA,GAAc,kBAAA,CAAmB,YAAY,CAAC,CAAC,IAAK,OAAA,IAAW,MAAA;AAEnF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,EAAE,QAAA,EAAU,YAAA,CAAa,EAAA,EAAI,MAAA,EAAQ,WAAA,EAAa,CAAA;AAC1F,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA,CAAO,MAAA,EAAQ,IAAA,IAAQ,IAAA;AAE/C,IAAA,OAAO;AAAA,MACL,OAAO,MAAA,CAAO,IAAA;AAAA,MACd,IAAA,EAAM,MAAA,CAAO,MAAA,EAAQ,IAAA,IAAQ;AAAA,KAC/B;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,CAAa,EAAE,CAAC,CAAA;AAEpB,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,sBACxB,IAAA,CAAC,kBAAe,UAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,qBAAA,EAAsB,CAAA;AAAA,4BACpC,aAAA,EAAA,EAAU,IAAA,EAAK,eAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,wBAC7E,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,mBAAA,EAAoB;AAAA,OAAA,EACrC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,kBAAW,IAAA,EAAY,CAAA;AAAA,oBAExB,IAAA,CAAC,kBAAe,UAAA,EACd,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,qBAAA,EAAsB,CAAA;AAAA,sBAErC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAA,GAAA,CAAC,QAAG,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,YAAA,CAAa,IAAA,EAAK,CAAA,EACvD,CAAA;AAAA,sBAEA,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,QAAA;AAAA,UACP,MAAA,EAAQ,MAAA,EAAQ,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,UAChC,IAAA,EAAM,MAAA,EAAQ,IAAA,GAAO,UAAA,GAAa,QAAA;AAAA,UAClC,SAAS,QAAA,GAAW,SAAA;AAAA,UACpB,SAAA,EAAU,aAAA;AAAA,UACV,cAAA,EAAe,sCAAA;AAAA,UACf,KAAA,sBAAQ,aAAA,EAAA,EAAU,IAAA,EAAK,eAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,UACpF,GAAG,CAAC,GAAA,EAAK,aAAa,CAAA,CAAE,GAAA,EAAK,YAAY,GAAG,CAAA;AAAA,UAE3C,QAAA,EAAA,CAAC,KAAA,KACA,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,qBACT,GAAA,CAAC,eAAA,EAAA,EAAiC,OAAA,EAAkB,UAAA,EAAU,IAAA,EAAA,EAAxC,OAAA,CAAQ,EAAiC,CAChE;AAAA;AAAA,OAEL;AAAA,sBAEA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,mBAAA,EAAoB;AAAA,KAAA,EACrC;AAAA,GAAA,EACF,CAAA;AAEJ","file":"BlogCategoryPage-H7VYN7OV.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogCategoryLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogCategoryLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogCategoryPage({\n page,\n blogCategory,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogCategoryLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ category: blogCategory.id, cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [blogCategory.id]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:category.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:category.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:category.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{blogCategory.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => (\n <BlogArticleCard key={article.id} article={article} showAuthor />\n ))\n }\n </ItemsList>\n\n <HookSlot name=\"blog:category.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/blog/BlogPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAM,mBAA6D,EAAC;AACpE,IAAM,iBAAmC,EAAC;AAC1C,IAAM,eAAqD,EAAC;AAErD,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA;AAAA,EACA,UAAA,GAAa,gBAAA;AAAA,EACb,QAAA,GAAW,cAAA;AAAA,EACX,MAAA,GAAS;AACX,CAAA,EAAkB;AAChB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,OAAA,EAAQ;AAEvC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAW,MAAY,CAAA,EAC1B,CAAA;AAAA,oBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,SAAA,EAAU,SAAA,EAAU,sDAAA,EAClC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,CAAA,CAAE,kCAAkC,CAAA,EAAE,CAAA;AAAA,wBACtE,GAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,QAAA,qBACf,GAAA,CAAC,IAAA,EAAA,EAAqB,SAAA,EAAW,QAAA,CAAS,UAAA,GAAa,cAAA,GAAiB,EAAA,EACtE,8BAAC,IAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAwC,EAAA,EAAI,QAAA,CAAS,GAAA,EAClE,QAAA,EAAA,QAAA,CAAS,IAAA,EACZ,CAAA,EAAA,EAHO,QAAA,CAAS,EAIlB,CACD,CAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,sBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,YAAA,EAAa,CAAA;AAAA,QAE3B,MAAA,CAAO,SAAS,CAAA,oBACf,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,kBAAA;AAAA,YACH,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAQ,IAAA;AAAA,YACR,UAAA,EAAU,IAAA;AAAA,YACV,YAAA,EAAc,KAAA;AAAA,YACd,UAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAU,0DAAA;AAAA,YACV,YAAA,EAAc,EAAE,aAAA,EAAe,IAAA,EAAK;AAAA,YAEpC,QAAA,kBAAA,GAAA,CAAC,SAAI,IAAA,EAAK,OAAA,EACP,iBAAO,GAAA,CAAI,CAAC,SAAS,KAAA,qBACpB,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,iHAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,4BAAA;AAAA,sBACV,KAAK,OAAA,CAAQ,KAAA;AAAA,sBACb,KAAK,OAAA,CAAQ,IAAA;AAAA,sBACb,WAAA,EAAY,KAAA;AAAA,sBACZ,UAAU,KAAA,KAAU;AAAA;AAAA,mBACtB;AAAA,kCACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4FAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,oCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qEAAA,EACb,QAAA,EAAA;AAAA,wCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,0CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uCAAA,EAAwC,CAAA;AAAA,8CACpD,MAAA,EAAA,EAAK,SAAA,EAAU,qBACb,QAAA,EAAA,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,EAChC;AAAA,yBAAA,EACF,CAAA;AAAA,wCACA,IAAA;AAAA,0BAAC,IAAA;AAAA,0BAAA;AAAA,4BACC,EAAA,EAAI,OAAA,CAAQ,MAAA,EAAQ,GAAA,IAAO,GAAA;AAAA,4BAC3B,SAAA,EAAU,mCAAA;AAAA,4BAEV,QAAA,EAAA;AAAA,8CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,8BAAA,EAA+B,CAAA;AAAA,kDAC3C,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,OAAA,CAAQ,QAAQ,IAAA,EAAK;AAAA;AAAA;AAAA;AAC5D,uBAAA,EACF,CAAA;AAAA,sCACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAI,OAAA,CAAQ,GAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA,EACvC;AAAA,qBAAA,EACF,CAAA;AAAA,oCACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EACV,kBAAQ,WAAA,EACX;AAAA,mBAAA,EACF,GACF,CAAA,EACF;AAAA;AAAA,eAAA;AAAA,cAtCK,OAAA,CAAQ;AAAA,aAwChB,CAAA,EACH;AAAA;AAAA,SACF;AAAA,QAGD,CAAC,MAAA,CAAO,MAAA,oBACP,GAAA,CAAC,SAAI,SAAA,EAAU,wBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,6CAAA,EACX,QAAA,EAAA,CAAA,CAAE,oBAAoB,GACzB,CAAA,EACF,CAAA;AAAA,QAGD,MAAA,CAAO,SAAS,CAAA,oBAAK,GAAA,CAAC,QAAG,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,CAAA,CAAE,oBAAoB,CAAA,EAAE,CAAA;AAAA,QAEtE,QAAA,CAAS,MAAA,GAAS,CAAA,mBACjB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAK,kBAAA,EAAmB,CAAA;AAAA,8BACjC,KAAA,EAAA,EAAI,SAAA,EAAU,wCACZ,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,qBACb,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAU,4JAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,IAAI,OAAA,CAAQ,GAAA;AAAA,oBACZ,SAAA,EAAU,0HAAA;AAAA,oBAEV,QAAA,kBAAA,GAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,4BAAA;AAAA,wBACV,KAAK,OAAA,CAAQ,KAAA;AAAA,wBACb,KAAK,OAAA,CAAQ,IAAA;AAAA,wBACb,WAAA,EAAY;AAAA;AAAA;AACd;AAAA,iBACF;AAAA,gCAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,kCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mFAAA,EACb,QAAA,EAAA;AAAA,oCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uCAAA,EAAwC,CAAA;AAAA,sCACrD,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,EAAE;AAAA,qBAAA,EACxC,CAAA;AAAA,oCACA,IAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,EAAA,EAAI,OAAA,CAAQ,MAAA,EAAQ,GAAA,IAAO,GAAA;AAAA,wBAC3B,SAAA,EAAU,mCAAA;AAAA,wBAEV,QAAA,EAAA;AAAA,0CAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,8BAAA,EAA+B,CAAA;AAAA,0CAC5C,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,MAAA,EAAQ,IAAA,EAAK;AAAA;AAAA;AAAA;AAC9B,mBAAA,EACF,CAAA;AAAA,kCAEA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oEAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAI,OAAA,CAAQ,GAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA,EACvC,CAAA;AAAA,kCACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAA,EACV,kBAAQ,WAAA,EACX,CAAA;AAAA,kBAAA,CAAA,CAEG,OAAA,CAAQ,KAAA,EAAO,KAAA,IAAS,CAAA,IAAK,CAAA,IAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,QAAA,IAAY,CAAA,IAAK,CAAA,qBACpE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mEAAA,EACX,QAAA,EAAA;AAAA,oBAAA,CAAA,OAAA,CAAQ,OAAO,KAAA,IAAS,CAAA,IAAK,qBAC7B,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,iBAAA,EAAkB,CAAA;AAAA,sBAC9B,QAAQ,KAAA,EAAO;AAAA,qBAAA,EAClB,CAAA;AAAA,oBAAA,CAEA,OAAA,CAAQ,OAAO,QAAA,IAAY,CAAA,IAAK,qBAChC,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,YAAA,EAAa,CAAA;AAAA,sBACzB,QAAQ,KAAA,EAAO;AAAA,qBAAA,EAClB;AAAA,mBAAA,EAEJ;AAAA,iBAAA,EAEJ,CAAA;AAAA,gBAEC,OAAA,CAAQ,IAAA,IAAQ,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,oBACrC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,qBACjB,IAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBAEC,IAAI,GAAA,CAAI,GAAA;AAAA,oBACR,SAAA,EAAU,uGAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,6CAAA,EAA8C,CAAA;AAAA,sCAC3D,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAAA,EAA+B,cAAI,IAAA,EAAK;AAAA;AAAA,mBAAA;AAAA,kBALnD,GAAA,CAAI;AAAA,iBAOZ,CAAA,EACH;AAAA;AAAA,aAAA;AAAA,YAnEG,OAAA,CAAQ;AAAA,WAsEhB,CAAA,EACH,CAAA;AAAA,0BACA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB;AAAA,SAAA,EAClC,CAAA,GAEA,CAAC,MAAA,CAAO,MAAA,oBACN,GAAA,CAAC,aAAA,EAAA,EAAU,IAAA,EAAK,aAAA,EAAc,OAAA,EAAS,CAAA,CAAE,iCAAiC,CAAA,EAAG,CAAA;AAAA,wBAIjF,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAK,UAAA,EAAW;AAAA,OAAA,EAC5B;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"BlogPage-LWAQ6ZVO.js","sourcesContent":["import { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { HookSlot, useDate } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BlogPageProps, ArticleSummary } from './types';\nimport { Breadcrumb, NoContent, Link, Image } from '../../components/common';\n\nconst EMPTY_CATEGORIES: NonNullable<BlogPageProps['categories']> = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\nconst EMPTY_SLIDES: NonNullable<BlogPageProps['slides']> = [];\n\nexport function BlogPage({\n page,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n slides = EMPTY_SLIDES,\n}: BlogPageProps) {\n const { t } = useTranslation();\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <div className=\"center-between\">\n <Breadcrumb page={page} />\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\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 <div className=\"main-content lg:col-span-6\">\n <HookSlot name=\"blog:start\" />\n\n {slides.length > 0 && (\n <SallaSlider\n id=\"blog-home-slider\"\n type=\"blog\"\n autoPlay\n autoHeight\n showControls={false}\n pagination\n className=\"blog-slider block rounded overflow-hidden mb-2.5 lg:mb-8\"\n sliderConfig={{ watchOverflow: true }}\n >\n <div slot=\"items\">\n {slides.map((article, index) => (\n <div\n key={article.id}\n className=\"swiper-slide has-overlay blog-slider__slide h-[300px] md:h-[400px] relative bg-border-color flex justify-center\"\n >\n <Image\n className=\"object-cover h-full w-full\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"3/1\"\n priority={index === 0}\n />\n <div className=\"absolute z-10 bottom-0 rtl:right-0 ltr:left-0 p-4 pb-10 rtl:lg:pr-10 ltr:lg:pl-10 lg:pb-20\">\n <div className=\"blog-slider__content relative\">\n <div className=\"z-20 w-full md:w-5/6 lg:w-6/12 text-white\">\n <div className=\"block-slide-anime\">\n <div className=\"mb-2.5 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 className=\"whitespace-nowrap\">\n {formatDate(article.created_at)}\n </span>\n </div>\n <Link\n to={article.author?.url || '#'}\n className=\"flex items-center hover:underline\"\n >\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span className=\"whitespace-nowrap\">{article.author?.name}</span>\n </Link>\n </div>\n <h3 className=\"text-sm font-bold leading-normal mb-4\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n </div>\n <p className=\"line-clamp-2 block-slide-anime description\">\n {article.description}\n </p>\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </SallaSlider>\n )}\n\n {!slides.length && (\n <div className=\"sr-only lg:not-sr-only\">\n <h1 className=\"blog-category__title font-bold text-lg mb-8\">\n {t('blocks.footer.blog')}\n </h1>\n </div>\n )}\n\n {slides.length > 0 && <h1 className=\"sr-only\">{t('blocks.footer.blog')}</h1>}\n\n {articles.length > 0 ? (\n <>\n <HookSlot name=\"blog:items.start\" />\n <div className=\"grid md:grid-cols-2 gap-2.5 md:gap-8\">\n {articles.map((article) => (\n <div\n key={article.id}\n 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 >\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 <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n </Link>\n\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 <Link\n to={article.author?.url || '#'}\n className=\"flex items-center hover:text-dark\"\n >\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author?.name}</span>\n </Link>\n </div>\n\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\">\n {article.description}\n </p>\n\n {((article.stats?.likes ?? 0) > 0 || (article.stats?.comments ?? 0) > 0) && (\n <div className=\"post-entry__icons flex items-center gap-2.5 text-gray-500 text-sm\">\n {(article.stats?.likes ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-thumbs-up\"></i>\n {article.stats?.likes}\n </div>\n )}\n {(article.stats?.comments ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-chat\"></i>\n {article.stats?.comments}\n </div>\n )}\n </div>\n )}\n </div>\n\n {article.tags && article.tags.length > 0 && (\n <div className=\"p-4 flex flex-wrap items-center border-t border-gray-200\">\n {article.tags.map((tag) => (\n <Link\n key={tag.id}\n to={tag.url}\n className=\"py-2 px-4 rounded-large inline-flex items-center text-gray-500 hover:text-dark justify-center text-sm\"\n >\n <i className=\"font-medium sicon-tag rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align whitespace-nowrap\">{tag.name}</span>\n </Link>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n <HookSlot name=\"blog:items.end\" />\n </>\n ) : (\n !slides.length && (\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n )\n )}\n\n <HookSlot name=\"blog:end\" />\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/blog/BlogSinglePage.tsx"],"names":[],"mappings":"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","file":"BlogSinglePage-DMAMK26P.js","sourcesContent":["import { SallaComments } from '@salla.sa/twilight-components-react/comments';\nimport { HookSlot, useAsset, useDate } from '../../hooks';\nimport { useBlogLike } from '../../hooks/useBlogLike';\nimport { useComments } from '../../hooks/useComments';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BlogSinglePageProps } from './types';\nimport { Breadcrumb, Image, Link } from '../../components/common';\nimport { useTwilight } from '../../providers/twilight-context';\n\nexport function BlogSinglePage({ page, article, related = [] }: BlogSinglePageProps) {\n const { t } = useTranslation();\n const { store } = useTwilight();\n const { cdn } = useAsset();\n const { format: formatDate } = useDate();\n const { active, count, toggle, loading } = useBlogLike(\n Number(article.id) || 0,\n article.stats?.likes ?? 0\n );\n const { commentsKey } = useComments();\n\n return (\n <div key={article.id} className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <div className=\"md:flex items-start\">\n <div className=\"main-content blog-category md:w-96 flex-1 bg-white lg:p-8 rounded-md mb-10 md:mb-0\">\n <HookSlot name=\"blog:single.start\" />\n\n <h1 className=\"font-bold text-3xl mb-5 leading-10\">{article.name}</h1>\n\n <div className=\"mb-10 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 <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 </div>\n\n {article.image && (\n <Image\n src={article.image}\n alt={article.name}\n className=\"h-80 mb-10 w-full rounded-md\"\n aspectRatio=\"16/9\"\n priority\n noWrapper\n />\n )}\n\n {store.settings?.blog?.allow_likes_and_comments && (\n <div className=\"flex items-center gap-2.5 text-gray-500 text-base mb-2\">\n <button\n type=\"button\"\n id=\"blog-like\"\n data-blog-id={article.id}\n className={`flex items-center gap-1 transition-colors ${active ? 'text-primary font-semibold liked' : ''}`}\n onClick={toggle}\n disabled={loading}\n >\n {loading ? (\n <span className=\"loader loader--small\"></span>\n ) : (\n <i className={`sicon-thumbs-up ${active ? 'text-primary' : ''}`}></i>\n )}\n <span>{count}</span>\n </button>\n {(article.stats?.comments ?? 0) > 0 && (\n <div className=\"flex items-center gap-1\">\n <i className=\"sicon-chat text-primary\"></i>\n {article.stats?.comments}\n </div>\n )}\n </div>\n )}\n\n <article\n className=\"leading-7 text-sm mb-10\"\n dangerouslySetInnerHTML={{ __html: article.description?.replace(/ /g, ' ') || '' }}\n />\n\n {article.tags && article.tags.length > 0 && (\n <div className=\"p-4 flex flex-wrap items-center border-t border-gray-200\">\n {article.tags.map((tag) => (\n <Link\n key={tag.id}\n to={tag.url}\n className=\"py-2 px-4 rounded-large inline-flex items-center text-gray-500 hover:text-dark justify-center text-sm\"\n >\n <i className=\"font-medium sicon-tag rtl:ml-1.5 ltr:mr-1.5\"></i>\n <span className=\"fix-align whitespace-nowrap\">{tag.name}</span>\n </Link>\n ))}\n </div>\n )}\n\n {store.settings?.blog?.allow_likes_and_comments && (\n <SallaComments\n key={commentsKey}\n itemId={Number(article.id) || 0}\n type={'blog' as any}\n />\n )}\n\n <HookSlot name=\"blog:single.end\" />\n </div>\n\n <aside\n aria-label=\"Sidebar\"\n className=\"sticky shrink-0 top-24 md:w-96 rtl:lg:mr-8 ltr:lg:ml-8 pb-11\"\n >\n {related.length > 0 && (\n <>\n <h2 className=\"font-bold mb-3\">{t('pages.blog_articles.related')}</h2>\n\n <HookSlot name=\"blog:single.related.start\" />\n\n {related.map((relatedArticle) => (\n <div\n key={relatedArticle.id}\n className=\"mt-5 flex items-center bg-white p-5 rounded-md\"\n >\n <div className=\"shrink-0\">\n <Link\n to={relatedArticle.url}\n className=\"bg-border-color h-24 w-24 rounded-md overflow-hidden flex items-center justify-center\"\n >\n <span className=\"sr-only\">{relatedArticle.name}</span>\n {relatedArticle.image ? (\n <Image\n className=\"h-full w-full object-cover\"\n src={relatedArticle.image}\n alt={relatedArticle.name}\n aspectRatio=\"1/1\"\n />\n ) : (\n <Image\n className=\"sm:h-full w-10 object-contain opacity-60\"\n src={cdn('/images/placeholder.png')}\n alt=\"post image\"\n />\n )}\n </Link>\n </div>\n <div className=\"rtl:mr-3 ltr:ml-3\">\n <div className=\"flex items-center text-sm text-gray-500 mb-2\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1 rtl:pl-px ltr:pr-px\"></i>\n <time>{formatDate(relatedArticle.created_at)}</time>\n </div>\n <h3 className=\"text-sm font-bold text-gray-800 leading-6\">\n <Link to={relatedArticle.url} className=\"hover:underline\">\n {relatedArticle.name}\n </Link>\n </h3>\n </div>\n </div>\n ))}\n\n <HookSlot name=\"blog:single.related.end\" />\n </>\n )}\n </aside>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/blog/BlogTagPage.tsx"],"names":[],"mappings":"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","file":"BlogTagPage-6URVT6AD.js","sourcesContent":["import { useRef, useCallback } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useLocation } from '../../providers/NavigationProvider';\nimport { Breadcrumb, NoContent } from '../../components/common';\nimport { blog } from '../../api/blog';\nimport { BlogArticleCard, BlogListLayout } from './components';\nimport type { BlogTagLoaderData, ArticleSummary } from './types';\n\nconst EMPTY_CATEGORIES: BlogTagLoaderData['categories'] = [];\nconst EMPTY_ARTICLES: ArticleSummary[] = [];\n\nexport function BlogTagPage({\n page,\n blogTag,\n categories = EMPTY_CATEGORIES,\n articles = EMPTY_ARTICLES,\n cursor,\n}: BlogTagLoaderData) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n const nextCursorRef = useRef<string | null>(cursor?.next ?? null);\n\n const loader = useCallback(async () => {\n const nextUrl = nextCursorRef.current;\n const cursorMatch = nextUrl?.match(/[?&]cursor=([^&]+)/);\n const cursorValue = cursorMatch ? decodeURIComponent(cursorMatch[1]) : (nextUrl ?? undefined);\n\n const result = await blog.articles.list({ tag: String(blogTag.id), cursor: cursorValue });\n nextCursorRef.current = result.cursor?.next ?? null;\n\n return {\n items: result.data,\n next: result.cursor?.next ?? null,\n };\n }, [blogTag.id]);\n\n if (articles.length === 0) {\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:tag.start\" />\n <NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />\n <HookSlot name=\"blog:tag.end\" />\n </BlogListLayout>\n </div>\n );\n }\n\n return (\n <div className=\"container mb-8 sm:mb-24\">\n <Breadcrumb page={page} />\n\n <BlogListLayout categories={categories}>\n <HookSlot name=\"blog:tag.start\" />\n\n <div className=\"mb-6\">\n <h1 className=\"font-bold text-xl\">{blogTag.name}</h1>\n </div>\n\n <ItemsList<ArticleSummary>\n items={articles}\n loader={cursor?.next ? loader : undefined}\n mode={cursor?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-blog-list\"\n itemsClassName=\"grid md:grid-cols-2 gap-2.5 md:gap-8\"\n empty={<NoContent icon=\"sicon-inbox\" message={t('pages.blog_articles.no_articles')} />}\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) =>\n items.map((article) => (\n <BlogArticleCard key={article.id} article={article} showAuthor />\n ))\n }\n </ItemsList>\n\n <HookSlot name=\"blog:tag.end\" />\n </BlogListLayout>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/routes/brands/BrandsPage.tsx"],"names":[],"mappings":"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","file":"BrandsPage-AANQU2O3.js","sourcesContent":["import { memo, useState, useRef, useCallback } from 'react';\nimport { useWindowScroll } from '@uidotdev/usehooks';\nimport { Link, Breadcrumb, NoContent, Image } from '../../components/common';\nimport { HookSlot } from '../../hooks';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { BrandsPageProps } from './types';\n\nfunction BrandsPageComponent({ page, brands }: BrandsPageProps) {\n const { t } = useTranslation();\n const brandEntries = Object.entries(brands);\n\n const hasBrands = brandEntries.length > 0;\n const [selectedChar, setSelectedChar] = useState<string | null>(null);\n const sectionRefs = useRef<Record<string, HTMLElement | null>>({});\n\n // Use useWindowScroll hook instead of manual listener\n const [{ y }] = useWindowScroll();\n const isSticky = (y ?? 0) > 200;\n\n // Handle brand nav item click - matches brands.js toggle class logic\n const handleBrandClick = useCallback((e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n const char = e.currentTarget.dataset.id;\n if (char) {\n setSelectedChar(char);\n sectionRefs.current[char]?.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n return (\n <div className=\"container mb-20\">\n <Breadcrumb page={page} />\n\n <div className=\"flex justify-between pt-2 pb-6\">\n <h1 className=\"font-bold mb-6 md:mb-0\">{page.title}</h1>\n </div>\n\n {hasBrands ? (\n <>\n <div className=\"brands-nav-wrap\">\n <ul\n id=\"brands-nav\"\n className={`brands-nav ${isSticky ? 'is-sticky' : 'is-not-sticky'}`}\n >\n <li></li>\n {brandEntries?.map(([char]) => (\n <li key={char}>\n <a\n className={`brands-nav__item ${selectedChar === char ? 'is-selected' : 'unselected'}`}\n href={`#brand-section-${char}`}\n onClick={handleBrandClick}\n data-id={char}\n >\n <span className=\"fix-align\">{char}</span>\n </a>\n </li>\n ))}\n </ul>\n </div>\n\n <div className=\"px-8 xl:px-0\">\n <HookSlot name=\"brands:index.items.start\" />\n\n {brandEntries.map(([char, brandGroup]) => (\n <section\n key={char}\n id={`brand-section-${char}`}\n ref={(el) => {\n sectionRefs.current[char] = el;\n }}\n className=\"pt-24 first:pt-16 md:first:pt-24\"\n >\n <div className=\"flex items-center mb-10\">\n <span data-id={char} className=\"brand-char\">\n <span className=\"fix-align\">{char}</span>\n </span>\n <div className=\"bg-border-color h-px flex-1\"></div>\n </div>\n <div className=\"grid grid-cols-3 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 grid-flow-row gap-4 md:gap-8\">\n {brandGroup.map((brand) => (\n <Link key={brand.id} to={`/brands/${brand.id}`} className=\"brand-item\">\n <Image\n className=\"max-h-full\"\n width={400}\n height={300}\n src={brand.logo}\n alt={brand.name}\n />\n </Link>\n ))}\n </div>\n </section>\n ))}\n\n <HookSlot name=\"brands:index.items.end\" />\n </div>\n </>\n ) : (\n <NoContent\n icon=\"sicon-award-ribbon\"\n message={t('pages.brands.non_brands')}\n actionLabel={t('common.elements.back_home')}\n />\n )}\n </div>\n );\n}\n\nexport const BrandsPage = memo(BrandsPageComponent);\n"]}
|