@salla.sa/twilight-theme-engine 1.0.42 → 1.0.43

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.
Files changed (119) hide show
  1. package/dist/{AddToCartForm-5BC62F3R.js → AddToCartForm-NH4IGB43.js} +3 -3
  2. package/dist/{AddToCartForm-5BC62F3R.js.map → AddToCartForm-NH4IGB43.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-AXBMDC4A.js → BlogAuthorPage-2Z6K4MCA.js} +6 -6
  4. package/dist/{BlogAuthorPage-AXBMDC4A.js.map → BlogAuthorPage-2Z6K4MCA.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-62PLI36J.js → BlogCategoryPage-6X5EY6ZJ.js} +6 -6
  6. package/dist/{BlogCategoryPage-62PLI36J.js.map → BlogCategoryPage-6X5EY6ZJ.js.map} +1 -1
  7. package/dist/{BlogPage-XU42Q4OE.js → BlogPage-TWGMJRZI.js} +5 -5
  8. package/dist/{BlogPage-XU42Q4OE.js.map → BlogPage-TWGMJRZI.js.map} +1 -1
  9. package/dist/{BlogSinglePage-65R4V2RD.js → BlogSinglePage-SACFUYST.js} +5 -5
  10. package/dist/{BlogSinglePage-65R4V2RD.js.map → BlogSinglePage-SACFUYST.js.map} +1 -1
  11. package/dist/{BlogTagPage-JCRFWMPT.js → BlogTagPage-WHXFTE7Q.js} +6 -6
  12. package/dist/{BlogTagPage-JCRFWMPT.js.map → BlogTagPage-WHXFTE7Q.js.map} +1 -1
  13. package/dist/{BrandsPage-DNYKWG3N.js → BrandsPage-Q5VULECJ.js} +5 -5
  14. package/dist/{BrandsPage-DNYKWG3N.js.map → BrandsPage-Q5VULECJ.js.map} +1 -1
  15. package/dist/{Breadcrumb-F2APYNAY.js → Breadcrumb-C65V73N4.js} +5 -5
  16. package/dist/{Breadcrumb-F2APYNAY.js.map → Breadcrumb-C65V73N4.js.map} +1 -1
  17. package/dist/{CartItem-HFUFNE32.js → CartItem-SWCPZ35T.js} +5 -5
  18. package/dist/{CartItem-HFUFNE32.js.map → CartItem-SWCPZ35T.js.map} +1 -1
  19. package/dist/{CartSummary-HENL7N7E.js → CartSummary-7DVZSOKO.js} +5 -5
  20. package/dist/{CartSummary-HENL7N7E.js.map → CartSummary-7DVZSOKO.js.map} +1 -1
  21. package/dist/{Copyright-NIWZHPIB.js → Copyright-23FDPXXV.js} +3 -3
  22. package/dist/{Copyright-NIWZHPIB.js.map → Copyright-23FDPXXV.js.map} +1 -1
  23. package/dist/{CustomerLayout-VQDUAQLZ.js → CustomerLayout-I3BVHHGA.js} +5 -5
  24. package/dist/{CustomerLayout-VQDUAQLZ.js.map → CustomerLayout-I3BVHHGA.js.map} +1 -1
  25. package/dist/{Footer-LATXOF42.js → Footer-V37SDC6R.js} +5 -5
  26. package/dist/{Footer-LATXOF42.js.map → Footer-V37SDC6R.js.map} +1 -1
  27. package/dist/{Header-HADPC4UO.js → Header-76Z364PD.js} +4 -4
  28. package/dist/{Header-HADPC4UO.js.map → Header-76Z364PD.js.map} +1 -1
  29. package/dist/{LoyaltyPage-2HKQMOJY.js → LoyaltyPage-4GSERCUY.js} +5 -5
  30. package/dist/{LoyaltyPage-2HKQMOJY.js.map → LoyaltyPage-4GSERCUY.js.map} +1 -1
  31. package/dist/{MainMenu-5BL4HXTH.js → MainMenu-UQBRVPCS.js} +3 -3
  32. package/dist/{MainMenu-5BL4HXTH.js.map → MainMenu-UQBRVPCS.js.map} +1 -1
  33. package/dist/{MasterLayout-OQABH5SI.js → MasterLayout-CJ5P2E7F.js} +5 -5
  34. package/dist/{MasterLayout-OQABH5SI.js.map → MasterLayout-CJ5P2E7F.js.map} +1 -1
  35. package/dist/{MobileMenu-B7JSNK65.js → MobileMenu-UJXU5TJ7.js} +5 -5
  36. package/dist/{MobileMenu-B7JSNK65.js.map → MobileMenu-UJXU5TJ7.js.map} +1 -1
  37. package/dist/{NotificationsPage-GMLOYCGL.js → NotificationsPage-BWENG66G.js} +5 -5
  38. package/dist/{NotificationsPage-GMLOYCGL.js.map → NotificationsPage-BWENG66G.js.map} +1 -1
  39. package/dist/{OrderSinglePage-KVSBIVFY.js → OrderSinglePage-KAZANLL7.js} +5 -5
  40. package/dist/{OrderSinglePage-KVSBIVFY.js.map → OrderSinglePage-KAZANLL7.js.map} +1 -1
  41. package/dist/{OrdersPage-ZYPBZJWY.js → OrdersPage-FUUV76JR.js} +5 -5
  42. package/dist/{OrdersPage-ZYPBZJWY.js.map → OrdersPage-FUUV76JR.js.map} +1 -1
  43. package/dist/{PageSingle-MZCS2MUY.js → PageSingle-KPFJAKSV.js} +3 -3
  44. package/dist/{PageSingle-MZCS2MUY.js.map → PageSingle-KPFJAKSV.js.map} +1 -1
  45. package/dist/{ProductDetails-GMJTMKSK.js → ProductDetails-B3C4BN4A.js} +3 -3
  46. package/dist/{ProductDetails-GMJTMKSK.js.map → ProductDetails-B3C4BN4A.js.map} +1 -1
  47. package/dist/{ProfilePage-22NIAGC7.js → ProfilePage-6TFJBL47.js} +5 -5
  48. package/dist/{ProfilePage-22NIAGC7.js.map → ProfilePage-6TFJBL47.js.map} +1 -1
  49. package/dist/{SeoCartWidget-6YDAR4T6.js → SeoCartWidget-7G7T4REB.js} +5 -5
  50. package/dist/{SeoCartWidget-6YDAR4T6.js.map → SeoCartWidget-7G7T4REB.js.map} +1 -1
  51. package/dist/{SettingsPage-533JQ7YR.js → SettingsPage-IPLRL5NC.js} +5 -5
  52. package/dist/{SettingsPage-533JQ7YR.js.map → SettingsPage-IPLRL5NC.js.map} +1 -1
  53. package/dist/{StoreClosedNotification-XOCTJAAB.js → StoreClosedNotification-KNBFQMGU.js} +6 -6
  54. package/dist/{StoreClosedNotification-XOCTJAAB.js.map → StoreClosedNotification-KNBFQMGU.js.map} +1 -1
  55. package/dist/{TestimonialsPage-E32NLGDW.js → TestimonialsPage-5T7P4DZ7.js} +3 -3
  56. package/dist/{TestimonialsPage-E32NLGDW.js.map → TestimonialsPage-5T7P4DZ7.js.map} +1 -1
  57. package/dist/{ThankYouPage-XDPBG77G.js → ThankYouPage-5HMXISUX.js} +5 -5
  58. package/dist/{ThankYouPage-XDPBG77G.js.map → ThankYouPage-5HMXISUX.js.map} +1 -1
  59. package/dist/{WalletPage-27QGMDPZ.js → WalletPage-UVBA26JZ.js} +5 -5
  60. package/dist/{WalletPage-27QGMDPZ.js.map → WalletPage-UVBA26JZ.js.map} +1 -1
  61. package/dist/{WishlistPage-TKJJW572.js → WishlistPage-Z6TZWYOH.js} +5 -5
  62. package/dist/{WishlistPage-TKJJW572.js.map → WishlistPage-Z6TZWYOH.js.map} +1 -1
  63. package/dist/{chunk-OQAPNXXF.js → chunk-2L6EBIYS.js} +4 -4
  64. package/dist/{chunk-OQAPNXXF.js.map → chunk-2L6EBIYS.js.map} +1 -1
  65. package/dist/chunk-6F4C65K4.js +14 -0
  66. package/dist/{chunk-PF5GA2IR.js.map → chunk-6F4C65K4.js.map} +1 -1
  67. package/dist/{chunk-PBGBMV2L.js → chunk-BAJOX5CP.js} +4 -4
  68. package/dist/{chunk-PBGBMV2L.js.map → chunk-BAJOX5CP.js.map} +1 -1
  69. package/dist/{chunk-JGSGOJWT.js → chunk-G4BW3B3H.js} +6 -6
  70. package/dist/{chunk-JGSGOJWT.js.map → chunk-G4BW3B3H.js.map} +1 -1
  71. package/dist/{chunk-EVVKPVHE.js → chunk-H3WBKDQJ.js} +3 -3
  72. package/dist/{chunk-EVVKPVHE.js.map → chunk-H3WBKDQJ.js.map} +1 -1
  73. package/dist/{chunk-ZFWFOSS3.js → chunk-L5UMBNJE.js} +4 -4
  74. package/dist/{chunk-ZFWFOSS3.js.map → chunk-L5UMBNJE.js.map} +1 -1
  75. package/dist/{chunk-SI2SV7N6.js → chunk-LFACK3UD.js} +3 -3
  76. package/dist/{chunk-SI2SV7N6.js.map → chunk-LFACK3UD.js.map} +1 -1
  77. package/dist/{chunk-XXA42YJL.js → chunk-Q4OG2KBE.js} +3 -3
  78. package/dist/{chunk-XXA42YJL.js.map → chunk-Q4OG2KBE.js.map} +1 -1
  79. package/dist/{chunk-HRPFW3ML.js → chunk-SA2ZPDWP.js} +7 -7
  80. package/dist/{chunk-HRPFW3ML.js.map → chunk-SA2ZPDWP.js.map} +1 -1
  81. package/dist/{chunk-SSKFUBHZ.js → chunk-W2N4OT5K.js} +3 -3
  82. package/dist/{chunk-SSKFUBHZ.js.map → chunk-W2N4OT5K.js.map} +1 -1
  83. package/dist/{chunk-WSZ5XTWU.js → chunk-Y3ZCJP6L.js} +5 -5
  84. package/dist/{chunk-WSZ5XTWU.js.map → chunk-Y3ZCJP6L.js.map} +1 -1
  85. package/dist/components/cart/index.js +1 -1
  86. package/dist/components/common/index.js +1 -1
  87. package/dist/components/drawer/index.js +3 -3
  88. package/dist/components/home/index.js +5 -5
  89. package/dist/components/layout/index.js +5 -5
  90. package/dist/components/product/index.js +4 -4
  91. package/dist/components/store/index.js +5 -5
  92. package/dist/{document-class-QMYCTOKE.js → document-class-ICBXNUY4.js} +3 -3
  93. package/dist/{document-class-QMYCTOKE.js.map → document-class-ICBXNUY4.js.map} +1 -1
  94. package/dist/hooks/index.js +3 -3
  95. package/dist/hooks/useGtm.js +3 -3
  96. package/dist/hooks/useMoney.js +3 -3
  97. package/dist/hooks/useStore.js +3 -3
  98. package/dist/index.js +3 -3
  99. package/dist/{not-found-NHQ5TPP7.js → not-found-DMEPEPOF.js} +5 -5
  100. package/dist/{not-found-NHQ5TPP7.js.map → not-found-DMEPEPOF.js.map} +1 -1
  101. package/dist/providers/index.js +3 -3
  102. package/dist/routes/account/orders.js +1 -1
  103. package/dist/routes/account.js +6 -6
  104. package/dist/routes/blog.js +5 -5
  105. package/dist/routes/brands.js +1 -1
  106. package/dist/routes/cart.js +7 -7
  107. package/dist/routes/home.js +6 -6
  108. package/dist/routes/loyalty.js +1 -1
  109. package/dist/routes/page.js +1 -1
  110. package/dist/routes/product-listing.js +5 -5
  111. package/dist/routes/product.js +5 -5
  112. package/dist/routes/testimonials.js +1 -1
  113. package/dist/routes/thank-you.js +1 -1
  114. package/dist/skeleton.js +6 -6
  115. package/dist/tanstack.js +2 -2
  116. package/dist/types/salla-sdk.d.ts +38 -9
  117. package/dist/types/salla-sdk.d.ts.map +1 -1
  118. package/package.json +1 -1
  119. package/dist/chunk-PF5GA2IR.js +0 -14
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/account/wishlist/WishlistPage.tsx"],"names":[],"mappings":"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","file":"WishlistPage-TKJJW572.js","sourcesContent":["import { useRef } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { wishlist } from '../../../api/wishlist';\nimport type { Product } from '../../../types';\nimport { HookSlot, useWishlist, useMoney } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { WishlistPageProps } from './types';\nimport { NoContent, Image } from '../../../components/common';\nimport { useLocation } from '../../../providers/NavigationProvider';\n\nfunction WishlistCard({ product: prod }: { product: Product }) {\n const { remove } = useWishlist();\n const { format } = useMoney();\n\n const handleRemove = () => {\n if (prod.id) {\n remove(Number(prod.id));\n }\n };\n\n const displayPrice = prod.sale_price ?? prod.price;\n const regularPrice = prod.regular_price;\n\n return (\n <div id={`wishlist-product-${prod.id}`} className=\"product-entry product-entry--wishlist\">\n <div className=\"flex items-center mb-4 sm:mb-0\">\n <a href={prod.url} className=\"product-entry__image\">\n <Image\n className=\"object-cover w-full h-full\"\n src={prod.image?.url}\n alt={prod.image?.alt ?? prod.name}\n aspectRatio=\"1/1\"\n />\n </a>\n <div className=\"flex-1 rtl:pr-5 ltr:pl-5\">\n <h3 className=\"text-sm text-gray-800 leading-6 mb-1.5 rtl:pl-5 ltr:pr-5 rtl:md:pl-8 ltr:md:pr-8 line-clamp-1\">\n <a href={prod.url}>{prod.name}</a>\n </h3>\n <div className=\"w-full center-between\">\n {prod.is_on_sale && regularPrice ? (\n <div className=\"space-x-1 rtl:space-x-reverse\">\n <h4 className=\"inline-block text-sm font-bold text-red-400\">\n {format(displayPrice)}\n </h4>\n <span className=\"text-sm text-gray-500 line-through\">{format(regularPrice)}</span>\n </div>\n ) : (\n <h4 className=\"text-sm font-bold\">{format(displayPrice)}</h4>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n <SallaAddProductButton\n productStatus={prod.status}\n productId={prod.id}\n productType={prod.type}\n loaderPosition=\"center\"\n fill=\"outline\"\n className=\"flex-grow w-full sm:grow-0 md:w-40\"\n />\n <SallaButton\n loaderPosition=\"center\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n onClick={handleRemove}\n >\n <i className=\"sicon-cancel\" />\n </SallaButton>\n </div>\n </div>\n );\n}\n\nexport function WishlistPage({ query, products, pagination }: WishlistPageProps) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n\n // Track the next page to load (starts at page 2 since page 1 is SSR)\n const nextPageRef = useRef(query.page + 1);\n\n const loader = async () => {\n const pageToLoad = nextPageRef.current;\n const result = await wishlist.list({ page: pageToLoad });\n\n nextPageRef.current = pageToLoad + 1;\n\n return {\n items: result.items,\n next: result.next,\n };\n };\n\n return (\n <div className=\"space-y-5\" id=\"wishlist\">\n <HookSlot name=\"customer:wishlist.items.start\" />\n <ItemsList<Product>\n items={products}\n loader={loader}\n mode={pagination?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-products-list\"\n itemsClassName=\"s-products-list-wrapper s-products-list-row-cards\"\n empty={\n <div className=\"text-center py-16\">\n <NoContent\n icon=\"sicon-heart\"\n message={t('common.errors.no_wishlist', \"You don't have any wishes\")}\n actionLabel={t('pages.offer.continue_shopping', 'Continue shopping')}\n actionUrl=\"/\"\n />\n </div>\n }\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) => items.map((prod) => <WishlistCard key={prod.id} product={prod} />)}\n </ItemsList>\n <HookSlot name=\"customer:wishlist.items.end\" />\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/account/wishlist/WishlistPage.tsx"],"names":[],"mappings":"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","file":"WishlistPage-Z6TZWYOH.js","sourcesContent":["import { useRef } from 'react';\nimport { ItemsList } from '@salla.sa/twilight-components-react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { wishlist } from '../../../api/wishlist';\nimport type { Product } from '../../../types';\nimport { HookSlot, useWishlist, useMoney } from '../../../hooks';\nimport { useTranslation } from '../../../providers/I18nProvider';\nimport type { WishlistPageProps } from './types';\nimport { NoContent, Image } from '../../../components/common';\nimport { useLocation } from '../../../providers/NavigationProvider';\n\nfunction WishlistCard({ product: prod }: { product: Product }) {\n const { remove } = useWishlist();\n const { format } = useMoney();\n\n const handleRemove = () => {\n if (prod.id) {\n remove(Number(prod.id));\n }\n };\n\n const displayPrice = prod.sale_price ?? prod.price;\n const regularPrice = prod.regular_price;\n\n return (\n <div id={`wishlist-product-${prod.id}`} className=\"product-entry product-entry--wishlist\">\n <div className=\"flex items-center mb-4 sm:mb-0\">\n <a href={prod.url} className=\"product-entry__image\">\n <Image\n className=\"object-cover w-full h-full\"\n src={prod.image?.url}\n alt={prod.image?.alt ?? prod.name}\n aspectRatio=\"1/1\"\n />\n </a>\n <div className=\"flex-1 rtl:pr-5 ltr:pl-5\">\n <h3 className=\"text-sm text-gray-800 leading-6 mb-1.5 rtl:pl-5 ltr:pr-5 rtl:md:pl-8 ltr:md:pr-8 line-clamp-1\">\n <a href={prod.url}>{prod.name}</a>\n </h3>\n <div className=\"w-full center-between\">\n {prod.is_on_sale && regularPrice ? (\n <div className=\"space-x-1 rtl:space-x-reverse\">\n <h4 className=\"inline-block text-sm font-bold text-red-400\">\n {format(displayPrice)}\n </h4>\n <span className=\"text-sm text-gray-500 line-through\">{format(regularPrice)}</span>\n </div>\n ) : (\n <h4 className=\"text-sm font-bold\">{format(displayPrice)}</h4>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-4 rtl:space-x-reverse\">\n <SallaAddProductButton\n productStatus={prod.status}\n productId={prod.id}\n productType={prod.type}\n loaderPosition=\"center\"\n fill=\"outline\"\n className=\"flex-grow w-full sm:grow-0 md:w-40\"\n />\n <SallaButton\n loaderPosition=\"center\"\n shape=\"icon\"\n size=\"small\"\n color=\"danger\"\n className=\"btn--delete\"\n onClick={handleRemove}\n >\n <i className=\"sicon-cancel\" />\n </SallaButton>\n </div>\n </div>\n );\n}\n\nexport function WishlistPage({ query, products, pagination }: WishlistPageProps) {\n const { t } = useTranslation();\n const { pathname, searchStr } = useLocation();\n\n // Track the next page to load (starts at page 2 since page 1 is SSR)\n const nextPageRef = useRef(query.page + 1);\n\n const loader = async () => {\n const pageToLoad = nextPageRef.current;\n const result = await wishlist.list({ page: pageToLoad });\n\n nextPageRef.current = pageToLoad + 1;\n\n return {\n items: result.items,\n next: result.next,\n };\n };\n\n return (\n <div className=\"space-y-5\" id=\"wishlist\">\n <HookSlot name=\"customer:wishlist.items.start\" />\n <ItemsList<Product>\n items={products}\n loader={loader}\n mode={pagination?.next ? 'infinite' : 'static'}\n pageUrl={pathname + searchStr}\n className=\"s-products-list\"\n itemsClassName=\"s-products-list-wrapper s-products-list-row-cards\"\n empty={\n <div className=\"text-center py-16\">\n <NoContent\n icon=\"sicon-heart\"\n message={t('common.errors.no_wishlist', \"You don't have any wishes\")}\n actionLabel={t('pages.offer.continue_shopping', 'Continue shopping')}\n actionUrl=\"/\"\n />\n </div>\n }\n t={(key, fallback) => t(key, fallback || key)}\n >\n {(items) => items.map((prod) => <WishlistCard key={prod.id} product={prod} />)}\n </ItemsList>\n <HookSlot name=\"customer:wishlist.items.end\" />\n </div>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { useDate } from './chunk-HRPFW3ML.js';
1
+ import { useDate } from './chunk-SA2ZPDWP.js';
2
2
  import { useTranslation } from './chunk-TYNZ5B2B.js';
3
- import { Image } from './chunk-SI2SV7N6.js';
3
+ import { Image } from './chunk-LFACK3UD.js';
4
4
  import { Link } from './chunk-AXW67SY7.js';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -61,5 +61,5 @@ function BlogListLayout({
61
61
  }
62
62
 
63
63
  export { BlogArticleCard, BlogListLayout };
64
- //# sourceMappingURL=chunk-OQAPNXXF.js.map
65
- //# sourceMappingURL=chunk-OQAPNXXF.js.map
64
+ //# sourceMappingURL=chunk-2L6EBIYS.js.map
65
+ //# sourceMappingURL=chunk-2L6EBIYS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-OQAPNXXF.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/blog/components.tsx"],"names":[],"mappings":"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","file":"chunk-2L6EBIYS.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useDate } from '../../hooks';\nimport { Image, Link } from '../../components/common';\nimport type { BlogCategory, ArticleSummary } from './types';\n\nexport function BlogCategoriesSidebar({ categories }: { categories: BlogCategory[] }) {\n const { t } = useTranslation();\n\n if (!categories.length) return null;\n\n return (\n <nav aria-label=\"Sidebar\" className=\"hidden lg:block lg:sticky shrink-0 top-24 col-span-2\">\n <h2 className=\"font-bold mb-3\">{t('pages.blog_categories.categories')}</h2>\n <ul>\n {categories.map((category) => (\n <li key={category.id} className={category.is_current ? 'text-primary' : ''}>\n <Link className=\"py-3 block text-sm hover:text-primary\" to={category.url}>\n {category.name}\n </Link>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nexport function BlogArticleCard({\n article,\n showAuthor = false,\n}: {\n article: ArticleSummary;\n showAuthor?: boolean;\n}) {\n const { format: formatDate } = useDate();\n\n return (\n <div className=\"list-block post-entry relative h-full transition-shadow duration-500 bg-white hover:shadow-default rounded-lg justify-around overflow-hidden flex flex-col\">\n <Link\n to={article.url}\n className=\"post-entry__image relative overflow-hidden hover:opacity-90 w-full h-56 bg-border-color flex items-center justify-center\"\n >\n {article.image && (\n <Image\n className=\"h-full w-full object-cover\"\n src={article.image}\n alt={article.name}\n aspectRatio=\"16/9\"\n />\n )}\n </Link>\n <div className=\"flex-1 px-5 pt-5 pb-7\">\n <div className=\"mb-2.5 text-gray-500 rounded-md inline-flex text-sm rtl:space-x-reverse space-x-5\">\n <div className=\"flex items-center\">\n <i className=\"sicon-calendar-date rtl:ml-1 ltr:mr-1\"></i>\n <span>{formatDate(article.created_at)}</span>\n </div>\n {showAuthor && article.author && (\n <Link to={article.author.url} className=\"flex items-center hover:text-dark\">\n <i className=\"sicon-user rtl:ml-1 ltr:mr-1\"></i>\n <span>{article.author.name}</span>\n </Link>\n )}\n </div>\n <h3 className=\"post-entry__title text-sm font-bold text-gray-800 leading-6 mb-2.5\">\n <Link to={article.url}>{article.name}</Link>\n </h3>\n <p className=\"text-sm text-gray-500 leading-6 mb-2.5\">{article.description}</p>\n </div>\n </div>\n );\n}\n\nexport function BlogListLayout({\n categories,\n children,\n}: {\n categories: BlogCategory[];\n children: ReactNode;\n}) {\n return (\n <div className=\"grid grid-cols-1 lg:grid-cols-8 gap-8\">\n <BlogCategoriesSidebar categories={categories} />\n <div className=\"main-content lg:col-span-6\">{children}</div>\n </div>\n );\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { lazy } from 'react';
2
+
3
+ // src/components/cart/lazy.ts
4
+ var LazyCartItem = lazy(() => import('./CartItem-SWCPZ35T.js').then((m) => ({ default: m.CartItem })));
5
+ var LazyCartSummary = lazy(
6
+ () => import('./CartSummary-7DVZSOKO.js').then((m) => ({ default: m.CartSummary }))
7
+ );
8
+ var LazySeoCartWidget = lazy(
9
+ () => import('./SeoCartWidget-7G7T4REB.js').then((m) => ({ default: m.SeoCartWidget }))
10
+ );
11
+
12
+ export { LazyCartItem, LazyCartSummary, LazySeoCartWidget };
13
+ //# sourceMappingURL=chunk-6F4C65K4.js.map
14
+ //# sourceMappingURL=chunk-6F4C65K4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/cart/lazy.ts"],"names":[],"mappings":";;;AAMO,IAAM,YAAA,GAAe,IAAA,CAAK,MAAM,OAAO,wBAAY,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,QAAA,GAAW,CAAC;AAE3F,IAAM,eAAA,GAAkB,IAAA;AAAA,EAAK,MAClC,OAAO,2BAAe,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAClE;AAEO,IAAM,iBAAA,GAAoB,IAAA;AAAA,EAAK,MACpC,OAAO,6BAAiB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,aAAA,EAAc,CAAE;AACtE","file":"chunk-PF5GA2IR.js","sourcesContent":["import { lazy } from 'react';\n\n/**\n * Lazy-loaded cart components\n * Use these for code-splitting cart sections\n */\nexport const LazyCartItem = lazy(() => import('./CartItem').then((m) => ({ default: m.CartItem })));\n\nexport const LazyCartSummary = lazy(() =>\n import('./CartSummary').then((m) => ({ default: m.CartSummary }))\n);\n\nexport const LazySeoCartWidget = lazy(() =>\n import('./SeoCartWidget').then((m) => ({ default: m.SeoCartWidget }))\n);\n"]}
1
+ {"version":3,"sources":["../src/components/cart/lazy.ts"],"names":[],"mappings":";;;AAMO,IAAM,YAAA,GAAe,IAAA,CAAK,MAAM,OAAO,wBAAY,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,QAAA,GAAW,CAAC;AAE3F,IAAM,eAAA,GAAkB,IAAA;AAAA,EAAK,MAClC,OAAO,2BAAe,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,WAAA,EAAY,CAAE;AAClE;AAEO,IAAM,iBAAA,GAAoB,IAAA;AAAA,EAAK,MACpC,OAAO,6BAAiB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,aAAA,EAAc,CAAE;AACtE","file":"chunk-6F4C65K4.js","sourcesContent":["import { lazy } from 'react';\n\n/**\n * Lazy-loaded cart components\n * Use these for code-splitting cart sections\n */\nexport const LazyCartItem = lazy(() => import('./CartItem').then((m) => ({ default: m.CartItem })));\n\nexport const LazyCartSummary = lazy(() =>\n import('./CartSummary').then((m) => ({ default: m.CartSummary }))\n);\n\nexport const LazySeoCartWidget = lazy(() =>\n import('./SeoCartWidget').then((m) => ({ default: m.SeoCartWidget }))\n);\n"]}
@@ -48,9 +48,9 @@ async function orderSingleLoader({
48
48
  }
49
49
 
50
50
  // src/routes/account/orders/index.tsx
51
- var LazyOrdersPage = lazy(() => import('./OrdersPage-ZYPBZJWY.js').then((m) => ({ default: m.OrdersPage })));
51
+ var LazyOrdersPage = lazy(() => import('./OrdersPage-FUUV76JR.js').then((m) => ({ default: m.OrdersPage })));
52
52
  var LazyOrderSinglePage = lazy(
53
- () => import('./OrderSinglePage-KVSBIVFY.js').then((m) => ({ default: m.OrderSinglePage }))
53
+ () => import('./OrderSinglePage-KAZANLL7.js').then((m) => ({ default: m.OrderSinglePage }))
54
54
  );
55
55
  var OrdersPage = LazyOrdersPage;
56
56
  var OrderSinglePage = LazyOrderSinglePage;
@@ -102,5 +102,5 @@ var OrderSingle = {
102
102
  };
103
103
 
104
104
  export { OrderSingle, OrderSinglePage, Orders, OrdersPage, orderSingleLoader, ordersLoader };
105
- //# sourceMappingURL=chunk-PBGBMV2L.js.map
106
- //# sourceMappingURL=chunk-PBGBMV2L.js.map
105
+ //# sourceMappingURL=chunk-BAJOX5CP.js.map
106
+ //# sourceMappingURL=chunk-BAJOX5CP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/account/orders/loader.ts","../src/routes/account/orders/index.tsx"],"names":[],"mappings":"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","file":"chunk-PBGBMV2L.js","sourcesContent":["import { order } from '../../../api/order';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\nimport { orUnauthorized } from '../../../providers/NavigationProvider';\nimport type { OrdersPageProps, OrderSinglePageProps, OrdersQuery } from './types';\nimport type { IdParams } from '../../types';\n\nexport async function ordersLoader(\n ctx: { query?: OrdersQuery; with_items?: boolean | number },\n extend?: (\n data: OrdersPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<OrdersPageProps> {\n const query = ctx.query;\n const isPending = query?.status === 'pending';\n const response = await orUnauthorized(\n order.list({\n status: query?.status,\n feedback_status: query?.feedback_status,\n ...(ctx.with_items ? { with_items: ctx.with_items } : {}),\n })\n );\n const i18n = getTwilightContext().i18n;\n const pageData: OrdersPageProps = {\n page: {\n title: isPending\n ? i18n.t('common.titles.pending_orders') || 'Pending Orders'\n : i18n.t('common.titles.orders') || 'Orders',\n slug: 'orders',\n },\n orders: response.data,\n cursor: response.cursor,\n query,\n };\n\n if (extend) {\n const extra = await extend(pageData, { params: {} });\n return { ...pageData, ...extra } as OrdersPageProps;\n }\n return pageData;\n}\n\nexport async function orderSingleLoader({\n params,\n}: {\n params: IdParams;\n}): Promise<OrderSinglePageProps> {\n const data = await order.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n slug: RouteId.CUSTOMER_ORDERS_SINGLE,\n id: String(params.id),\n title: (i18n.t('pages.orders.order_details') || 'Order Details').replace(':id', params.id),\n },\n order: data.order,\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { ordersLoader, orderSingleLoader } from './loader';\nimport type { OrdersPageProps, OrderSinglePageProps, OrdersSearchParams } from './types';\nimport type { IdParams } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\n// Lazy-load components for code-splitting\nconst LazyOrdersPage = lazy(() => import('./OrdersPage').then((m) => ({ default: m.OrdersPage })));\nconst LazyOrderSinglePage = lazy(() =>\n import('./OrderSinglePage').then((m) => ({ default: m.OrderSinglePage }))\n);\n\nexport const OrdersPage = LazyOrdersPage;\nexport const OrderSinglePage = LazyOrderSinglePage;\nexport { ordersLoader, orderSingleLoader } from './loader';\nexport type {\n OrdersPageProps,\n OrderSinglePageProps,\n OrdersSearchParams,\n OrdersQuery,\n} from './types';\n\nasync function ordersLoaderWithExtend(\n ctx: { search?: OrdersSearchParams; locale?: string; with_items?: boolean | number },\n extend?: (\n data: OrdersPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<OrdersPageProps> {\n const query = ctx.search;\n const data = await ordersLoader({ query, with_items: ctx.with_items }, extend);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as OrdersPageProps;\n }\n return data;\n}\n\nfunction ordersHead(ctx: TwilightContext, data: OrdersPageProps): HeadDescriptor {\n const isPending = ctx.location.search?.status === 'pending';\n const base: HeadDescriptor = {\n title: ctx.i18n.t(isPending ? 'common.titles.pending_orders' : 'common.titles.orders'),\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function orderSingleLoaderWithExtend(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: OrderSinglePageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<OrderSinglePageProps> {\n const data = await orderSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as OrderSinglePageProps;\n }\n return data;\n}\n\nfunction orderSingleHead(ctx: TwilightContext, data: OrderSinglePageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Orders = {\n id: RouteId.CUSTOMER_ORDERS_INDEX,\n loader: ordersLoaderWithExtend,\n head: ordersHead,\n Component: LazyOrdersPage,\n} as const;\nexport const OrderSingle = {\n id: RouteId.CUSTOMER_ORDERS_SINGLE,\n loader: orderSingleLoaderWithExtend,\n head: orderSingleHead,\n Component: LazyOrderSinglePage,\n} as const;\n"]}
1
+ {"version":3,"sources":["../src/routes/account/orders/loader.ts","../src/routes/account/orders/index.tsx"],"names":[],"mappings":"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","file":"chunk-BAJOX5CP.js","sourcesContent":["import { order } from '../../../api/order';\nimport { getTwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\nimport { orUnauthorized } from '../../../providers/NavigationProvider';\nimport type { OrdersPageProps, OrderSinglePageProps, OrdersQuery } from './types';\nimport type { IdParams } from '../../types';\n\nexport async function ordersLoader(\n ctx: { query?: OrdersQuery; with_items?: boolean | number },\n extend?: (\n data: OrdersPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<OrdersPageProps> {\n const query = ctx.query;\n const isPending = query?.status === 'pending';\n const response = await orUnauthorized(\n order.list({\n status: query?.status,\n feedback_status: query?.feedback_status,\n ...(ctx.with_items ? { with_items: ctx.with_items } : {}),\n })\n );\n const i18n = getTwilightContext().i18n;\n const pageData: OrdersPageProps = {\n page: {\n title: isPending\n ? i18n.t('common.titles.pending_orders') || 'Pending Orders'\n : i18n.t('common.titles.orders') || 'Orders',\n slug: 'orders',\n },\n orders: response.data,\n cursor: response.cursor,\n query,\n };\n\n if (extend) {\n const extra = await extend(pageData, { params: {} });\n return { ...pageData, ...extra } as OrdersPageProps;\n }\n return pageData;\n}\n\nexport async function orderSingleLoader({\n params,\n}: {\n params: IdParams;\n}): Promise<OrderSinglePageProps> {\n const data = await order.findOrThrow(params.id);\n const i18n = getTwilightContext().i18n;\n return {\n page: {\n slug: RouteId.CUSTOMER_ORDERS_SINGLE,\n id: String(params.id),\n title: (i18n.t('pages.orders.order_details') || 'Order Details').replace(':id', params.id),\n },\n order: data.order,\n };\n}\n","import type { HeadDescriptor } from '../../../utils/head';\nimport { buildHreflangAlternates } from '../../../utils/baseHead';\nimport { lazy } from 'react';\nimport { ordersLoader, orderSingleLoader } from './loader';\nimport type { OrdersPageProps, OrderSinglePageProps, OrdersSearchParams } from './types';\nimport type { IdParams } from '../../types';\nimport type { TwilightContext } from '../../../twilight/context';\nimport { RouteId } from '../../../router/route-ids';\n\n// Lazy-load components for code-splitting\nconst LazyOrdersPage = lazy(() => import('./OrdersPage').then((m) => ({ default: m.OrdersPage })));\nconst LazyOrderSinglePage = lazy(() =>\n import('./OrderSinglePage').then((m) => ({ default: m.OrderSinglePage }))\n);\n\nexport const OrdersPage = LazyOrdersPage;\nexport const OrderSinglePage = LazyOrderSinglePage;\nexport { ordersLoader, orderSingleLoader } from './loader';\nexport type {\n OrdersPageProps,\n OrderSinglePageProps,\n OrdersSearchParams,\n OrdersQuery,\n} from './types';\n\nasync function ordersLoaderWithExtend(\n ctx: { search?: OrdersSearchParams; locale?: string; with_items?: boolean | number },\n extend?: (\n data: OrdersPageProps,\n ctx: { params: Record<string, never> }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<OrdersPageProps> {\n const query = ctx.search;\n const data = await ordersLoader({ query, with_items: ctx.with_items }, extend);\n\n if (extend) {\n const extra = await extend(data, { params: {} });\n return { ...data, ...extra } as OrdersPageProps;\n }\n return data;\n}\n\nfunction ordersHead(ctx: TwilightContext, data: OrdersPageProps): HeadDescriptor {\n const isPending = ctx.location.search?.status === 'pending';\n const base: HeadDescriptor = {\n title: ctx.i18n.t(isPending ? 'common.titles.pending_orders' : 'common.titles.orders'),\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nasync function orderSingleLoaderWithExtend(\n ctx: { params: IdParams; locale?: string },\n extend?: (\n data: OrderSinglePageProps,\n ctx: { params: IdParams }\n ) => Promise<Record<string, unknown>> | Record<string, unknown>\n): Promise<OrderSinglePageProps> {\n const data = await orderSingleLoader({ params: ctx.params });\n\n if (extend) {\n const extra = await extend(data, ctx);\n return { ...data, ...extra } as OrderSinglePageProps;\n }\n return data;\n}\n\nfunction orderSingleHead(ctx: TwilightContext, data: OrderSinglePageProps): HeadDescriptor {\n const base: HeadDescriptor = {\n title: data.page.title,\n description: data.page.description,\n alternateLanguages: buildHreflangAlternates(ctx.settings, ctx.location.pathname),\n };\n\n return base;\n}\n\nexport const Orders = {\n id: RouteId.CUSTOMER_ORDERS_INDEX,\n loader: ordersLoaderWithExtend,\n head: ordersHead,\n Component: LazyOrdersPage,\n} as const;\nexport const OrderSingle = {\n id: RouteId.CUSTOMER_ORDERS_SINGLE,\n loader: orderSingleLoaderWithExtend,\n head: orderSingleHead,\n Component: LazyOrderSinglePage,\n} as const;\n"]}
@@ -1,9 +1,9 @@
1
1
  import { registry } from './chunk-342EPVXN.js';
2
- import { useMoney, useNumber } from './chunk-HRPFW3ML.js';
2
+ import { useMoney, useNumber } from './chunk-SA2ZPDWP.js';
3
3
  import { useAsset } from './chunk-Z653O7MX.js';
4
4
  import { useWishlist } from './chunk-GBWCXUPD.js';
5
5
  import { useTranslation } from './chunk-TYNZ5B2B.js';
6
- import { Image } from './chunk-SI2SV7N6.js';
6
+ import { Image } from './chunk-LFACK3UD.js';
7
7
  import { LazyImageModal } from './chunk-CUG6VOLM.js';
8
8
  import { useTwilight } from './chunk-DF6FBKDN.js';
9
9
  import { lazy, memo, useCallback, useMemo, useState, useEffect, Suspense } from 'react';
@@ -13,10 +13,10 @@ import { jsxs, jsx } from 'react/jsx-runtime';
13
13
  import { SallaSlider } from '@salla.sa/twilight-components-react/slider';
14
14
 
15
15
  var LazyProductDetails = lazy(
16
- () => import('./ProductDetails-GMJTMKSK.js').then((m) => ({ default: m.ProductDetails }))
16
+ () => import('./ProductDetails-B3C4BN4A.js').then((m) => ({ default: m.ProductDetails }))
17
17
  );
18
18
  var LazyAddToCartForm = lazy(
19
- () => import('./AddToCartForm-5BC62F3R.js').then((m) => ({ default: m.AddToCartForm }))
19
+ () => import('./AddToCartForm-NH4IGB43.js').then((m) => ({ default: m.AddToCartForm }))
20
20
  );
21
21
  var PRODUCT_CARD_KEY = "product:card";
22
22
  var PRODUCT_IMAGE_SRCSET_WIDTHS = [150, 300, 450, 600];
@@ -412,5 +412,5 @@ function ThumbSlide({ image, index }) {
412
412
  }
413
413
 
414
414
  export { LazyAddToCartForm, LazyProductDetails, ProductCard, ProductGallery };
415
- //# sourceMappingURL=chunk-JGSGOJWT.js.map
416
- //# sourceMappingURL=chunk-JGSGOJWT.js.map
415
+ //# sourceMappingURL=chunk-G4BW3B3H.js.map
416
+ //# sourceMappingURL=chunk-G4BW3B3H.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/product/lazy.ts","../src/components/product/ProductCard.tsx","../src/components/product/ProductGallery.tsx"],"names":["ProductCardContent","ProductCard","jsxs","jsx","useMemo"],"mappings":";;;;;;;;;;;;;;AAEO,IAAM,kBAAA,GAAqB,IAAA;AAAA,EAAK,MACrC,OAAO,8BAAkB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,cAAA,EAAe,CAAE;AACxE;AAEO,IAAM,iBAAA,GAAoB,IAAA;AAAA,EAAK,MACpC,OAAO,6BAAiB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,aAAA,EAAc,CAAE;AACtE;ACKA,IAAM,gBAAA,GAAmB,cAAA;AAEzB,IAAM,2BAAA,GAA8B,CAAC,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAEvD,IAAM,mBAAA,GAAsB,+BAAA;AAE5B,IAAM,wBAAA,GAA2B,iCAAA;AAoCjC,IAAM,kBAAA,GAAqB,IAAA,CAAK,SAASA,mBAAAA,CAAmB;AAAA,EAC1D,OAAA;AAAA,EACA,MAAA,GAAS,UAAA;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,YAAA,GAAe,KAAA;AAAA,EACf,gBAAA,GAAmB,KAAA;AAAA,EACnB,KAAA,GAAQ,CAAA;AAAA,EACR,aAAA,GAAgB,KAAA;AAAA,EAChB;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,QAAA,EAAS;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAC9B,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,QAAA,EAAS;AACnC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,EAAa,GAAI,SAAA,EAAU;AAG3C,EAAA,MAAM,aAAa,MAAA,KAAW,UAAA;AAC9B,EAAA,MAAM,eAAe,MAAA,KAAW,YAAA;AAChC,EAAA,MAAM,cAAc,MAAA,KAAW,WAAA;AAC/B,EAAA,MAAM,YAAY,MAAA,KAAW,SAAA;AAC7B,EAAA,MAAM,YAAY,MAAA,KAAW,SAAA;AAG7B,EAAA,MAAM,iBAAA,GAAoB,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA;AACjD,EAAA,MAAM,oBAAA,GAAuB,YAAY,MAAM;AAC7C,IAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,EAAE,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,QAAA,EAAU,OAAA,CAAQ,EAAE,CAAC,CAAA;AAGzB,EAAA,MAAM,cAAA,GAAiB,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,QAAA;AAGjD,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,SAAS,QAAA,EAAU,KAAA,IAAS,OAAO,OAAA,CAAQ,QAAA,CAAS,UAAU,QAAA,EAAU;AAC1E,MAAA,2BAAQ,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,QAAA,EAAA,OAAA,CAAQ,SAAS,KAAA,EAAM,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,MAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,kBAAQ,eAAA,EAAgB,CAAA;AAAA,IAClF;AACA,IAAA,IAAI,YAAA,IAAgB,SAAS,QAAA,EAAU;AACrC,MAAA,MAAM,YAAA,GAAe,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA;AAClD,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,2BAA2B,UAAU,CAAA;AAAA,QAAE,GAAA;AAAA,QAAE;AAAA,OAAA,EAC9C,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,YAAA,IAAgB,SAAS,eAAA,EAAiB;AAC5C,MAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,4BACZ,QAAA,EAAA,CAAA,CAAE,6BAAA,EAA+B,cAAc,CAAA,EAClD,CAAA;AAAA,IAEJ;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,UAAA,EAAY;AAC5C,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAE,CAAA;AAAA,QAC/B,QAAQ,aAAA,oBAAiB,GAAA,CAAC,UAAM,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAE;AAAA,OAAA,EACjE,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,+BAAA,EAAiC,eAAe,CAAA,EAAE,CAAA;AAAA,wBACxD,GAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,EAAE;AAAA,OAAA,EACtC,CAAA;AAAA,IAEJ;AACA,IAAA,2BAAQ,IAAA,EAAA,EAAG,SAAA,EAAU,wBAAwB,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAE,CAAA;AAAA,EACrE,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,gBAAA;AAAA,IACA,sBAAA;AAAA,IACA,aAAa,yBAAA,GAA4B,EAAA;AAAA,IACzC,eAAe,2BAAA,GAA8B,EAAA;AAAA,IAC7C,cAAA,IAAkB,aAAa,CAAA,yBAAA,CAAA,GAA8B,EAAA;AAAA,IAC7D,YAAY,wBAAA,GAA2B,EAAA;AAAA,IACvC,cAAc,2BAAA,GAA8B,EAAA;AAAA,IAC5C,YAAY,wBAAA,GAA2B,EAAA;AAAA,IACvC,OAAA,EAAS,WAAW,yBAAA,GAA4B,EAAA;AAAA,IAChD,aAAa,uBAAA,GAA0B,EAAA;AAAA,IACvC,OAAA,EAAS,kBAAkB,6BAAA,GAAgC,EAAA;AAAA,IAC3D;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAGX,EAAA,MAAM,oBAAA,GAAuB,aAAA,CAAc,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAC7D,EAAA,MAAM,aAAA,GAAgB,oBAAA,GAAuB,SAAA,GAAY,cAAA,IAAkB,OAAA;AAE3E,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,CAAA,aAAA,EAAgB,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,MAC9B,SAAA,EAAW,aAAA;AAAA,MACX,mBAAiB,OAAA,CAAQ,EAAA;AAAA,MACzB,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,CAAA,EAAG,KAAA,GAAQ,GAAG,CAAA,EAAA;AAAA,OAChC;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,WAAA,GAAc,2BAAA,GAA8B,sBAAA,EAC1D,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,GAAA,EAAA,EAAE,MAAM,OAAA,CAAQ,GAAA,EAAK,cAAY,OAAA,CAAQ,KAAA,EAAO,GAAA,IAAO,OAAA,CAAQ,IAAA,EAC9D,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,wBAAwB,aAAa,CAAA,CAAA;AAAA,gBAChD,GAAA,EAAK,QAAQ,KAAA,EAAO,GAAA;AAAA,gBACpB,GAAA,EAAK,OAAA,CAAQ,KAAA,EAAO,GAAA,IAAO,OAAA,CAAQ,IAAA;AAAA,gBACnC,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAQ,GAAA;AAAA,gBACR,KAAA,EACE,KAAA,KAAU,WAAA,IAAe,SAAA,GAAY,wBAAA,GAA2B,mBAAA,CAAA;AAAA,gBAElE,YAAA,EAAc,2BAAA;AAAA,gBACd,WAAA,EAAY,KAAA;AAAA,gBACZ,QAAA,EAAU;AAAA;AAAA,aACZ;AAAA,YACC,CAAC,WAAA,IAAe,CAAC,SAAA,IAAa,eAAA;AAAgB,WAAA,EACjD,CAAA;AAAA,UACC,WAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,OAAA,CAAQ,KAAK,YAAA,EAAY,OAAA,CAAQ,IAAA,EAAM,SAAA,EAAU,wBAAA,EAAyB,CAAA;AAAA,UAEpF,CAAC,YAAA,IAAgB,CAAC,WAAA,oBACjB,GAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAK,SAAA;AAAA,cACL,KAAA,EAAM,OAAA;AAAA,cACN,SAAA,EAAW,CAAA,CAAE,uBAAA,EAAyB,2BAA2B,CAAA;AAAA,cACjE,SAAA,EAAW,CAAA,qCAAA,EAAwC,iBAAA,GAAoB,2CAAA,GAA8C,wBAAwB,CAAA,CAAA;AAAA,cAC7I,OAAA,EAAS,oBAAA;AAAA,cACT,WAAS,OAAA,CAAQ,EAAA;AAAA,cAEjB,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAC7B,SAAA,EAEJ,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAEZ,QAAA,EAAA;AAAA,UAAA,SAAA,IAAa,OAAA,EAAS,QAAA,oBACrB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA,EAAE,CAAA;AAAA,cAClC,CAAA,CAAE,2BAA2B,UAAU;AAAA,aAAA,EAC1C,CAAA;AAAA,4BACA,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,4BAAA;AAAA,gBACN,OAAA,EAAQ,aAAA;AAAA,gBACR,SAAA,EAAU,gCAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,QAAA,EAAA,EAAO,IAAG,IAAA,EAAK,EAAA,EAAG,MAAK,CAAA,EAAE,SAAA,EAAU,WAAU,qCAAA,EAAsC,CAAA;AAAA,kCACpF,GAAA,CAAC,YAAO,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,CAAA,EAAE,SAAA,EAAU,SAAA,EAAU,oCAAA,EAAqC;AAAA;AAAA;AAAA;AACrF,WAAA,EACF,CAAA;AAAA,0BAGF,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,4BAAA,EAA+B,SAAA,GAAY,sCAAA,GAAyC,EAAE,CAAA,CAAA;AAAA,cAEjG,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,8BAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,MAAM,OAAA,CAAQ,GAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA,EACtC,CAAA;AAAA,gBACC,OAAA,CAAQ,YAAY,CAAC,SAAA,wBACnB,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EAA8C,QAAA,EAAA,OAAA,CAAQ,QAAA,EAAS;AAAA;AAAA;AAAA,WAEhF;AAAA,0BAEA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,2BAAA,EAA8B,SAAA,GAAY,sCAAA,GAAyC,EAAE,CAAA,CAAA;AAAA,cAE/F,QAAA,EAAA;AAAA,gBAAA,CAAC,OAAA,EAAS,QAAA,EAAU,UAAA,IAAc,eAAA,EAAgB;AAAA,gBAClD,QAAQ,MAAA,EAAQ,KAAA,oBACf,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACb,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,oCAAA,EAAqC,CAAA;AAAA,kCAClD,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAM;AAAA,iBAAA,EAC9B;AAAA;AAAA;AAAA,WAEJ;AAAA,UAEC,CAAC,gBAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qCAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,SAAA;AAAA,gBACL,KAAA,EAAM,MAAA;AAAA,gBACN,WAAW,OAAA,CAAQ,EAAA;AAAA,gBACnB,eAAe,OAAA,CAAQ,MAAA;AAAA,gBACvB,aAAa,OAAA,CAAQ,IAAA;AAAA,gBACrB,aAAa,OAAA,CAAQ;AAAA;AAAA,aACvB;AAAA,YAAA,CACE,gBAAgB,WAAA,qBAChB,GAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,MAAA;AAAA,gBACN,IAAA,EAAK,SAAA;AAAA,gBACL,KAAA,EAAM,OAAA;AAAA,gBACN,SAAA,EAAW,CAAA,CAAE,uBAAA,EAAyB,2BAA2B,CAAA;AAAA,gBACjE,SAAA,EAAW,CAAA,qCAAA,EAAwC,iBAAA,GAAoB,2CAAA,GAA8C,wBAAwB,CAAA,CAAA;AAAA,gBAC7I,OAAA,EAAS,oBAAA;AAAA,gBACT,WAAS,OAAA,CAAQ,EAAA;AAAA,gBAEjB,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAC7B,WAAA,EAEJ;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC,CAAA;AAEM,IAAM,WAAA,GAAc,IAAA,CAAK,SAASC,YAAAA,CAAY,KAAA,EAAyB;AAC5E,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM;AAC9B,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,WAAA,CAA8B,gBAAgB,CAAA,KAAM,IAAA;AACjF,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,OAAO,QAAA,CAAS,QAA0B,gBAAgB,CAAA;AAAA,IAC5D;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAO,GAAA,CAAC,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EAC/B;AAEA,EAAA,uBAAO,GAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,KAAA,EAAO,CAAA;AACxC,CAAC;ACtRD,IAAM,mBAAA,GAAsB,iBAAA;AAS5B,SAAS,qBAAA,CAAsB,EAAE,OAAA,EAAQ,EAAwB;AAC/D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAC9B,EAAA,MAAM,QAAA,GAAW,CAAA,eAAA,EAAkB,OAAA,CAAQ,EAAE,CAAA,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAA,CAAS,sBAAA,IAA0B,OAAA;AAG3D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAA8B,IAAI,CAAA;AAEhE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,GAAA,GAAM,sBAAsB,MAAM;AACtC,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,cAAA,CAAe,QAAQ,CAAA;AAC3C,MAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACxB,MAAA,MAAM,EAAE,aAAA,EAAe,WAAA,EAAY,GAAI,EAAA;AACvC,MAAA,aAAA,CAAc,YAAY,EAAE,CAAA;AAC5B,MAAA,aAAA,CAAc,YAAA,CAAa,IAAI,WAAW,CAAA;AAAA,IAC5C,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,qBAAqB,GAAG,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAIb,EAAA,MAAM,SACJ,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAA,GACtC,OAAA,CAAQ,MAAA,GACR,OAAA,CAAQ,OAAO,GAAA,GACb,CAAC,OAAA,CAAQ,KAAK,IACd,EAAC;AAET,EAAA,MAAM,aAAA,GAAgB,OAAO,MAAA,GAAS,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,OAAA,CAAsB,CAAC,KAAA,KAAU;AAC5D,IAAA,IAAI,KAAA,CAAM,iBAAA,EAAmB,OAAO,CAAC,EAAE,KAAK,KAAA,CAAM,iBAAA,EAAmB,IAAA,EAAM,UAAA,EAAY,CAAA;AACvF,IAAA,IAAI,KAAA,CAAM,SAAA,EAAW,OAAO,CAAC,EAAE,KAAK,KAAA,CAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,CAAA;AACpE,IAAA,OAAO,KAAA,CAAM,GAAA,GAAM,CAAC,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,CAAA,GAAI,EAAC;AAAA,EAC5D,CAAC,CAAA;AACD,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,CAAC,MAAA,CAAO,KAAA,EAAO,MAAA,EAAQ,SAAA,MAAe,OAAO,KAAA;AACjD,IAAA,MAAA,CAAO,MAAM,KAAA,CAAM,QAAA,CAAS,wBAAwB,EAAE,MAAA,EAAQ,eAAe,CAAA;AAC7E,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,QAAA;AAAA,QACJ,SAAA,EAAU,wCAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,KAAA;AAAA,QACN,UAAA,EAAU,IAAA;AAAA,QACV,wBAAA,EAAwB,IAAA;AAAA,QACxB,kBAAA,EAAoB,KAAA;AAAA,QACpB,YAAA,EAAc,EAAE,aAAA,EAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,QAErD,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,mCACPC,GAAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EAAmB,kBAAQ,eAAA,EAAgB,CAAA;AAAA,UAG3D,QAAQ,QAAA,oBACPD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iJAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6CAAA,EAA+C,kBAAQ,QAAA,EAAS,CAAA;AAAA,4BAChFA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBACb,QAAA,EAAA,CAAA,CAAE,yBAAA,EAA2B,UAAU,CAAA,EAC1C;AAAA,WAAA,EACF,CAAA;AAAA,0BAGFA,GAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,OAAA,EACP,iBAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBAClBA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cAEC,KAAA;AAAA,cACA,OAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAA;AAAA,cACA,SAAA,EAAW,UAAA;AAAA,cACX,YAAA,EAAc;AAAA,aAAA;AAAA,YANT,MAAM,EAAA,IAAM,KAAA,CAAM,iBAAA,IAAqB,KAAA,CAAM,aAAa,KAAA,CAAM;AAAA,WAQxE,CAAA,EACH,CAAA;AAAA,UAEC,aAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,QAAA,EACP,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBAClBA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cAEC,KAAA;AAAA,cACA;AAAA,aAAA;AAAA,YAFK,MAAM,EAAA,IAAM,KAAA,CAAM,iBAAA,IAAqB,KAAA,CAAM,aAAa,KAAA,CAAM;AAAA,WAIxE,CAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,oBAEAA,GAAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAU,MAClB,QAAA,kBAAAA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,CAAC,CAAC,OAAA;AAAA,QACV,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC9B,GAAA,EAAK,SAAS,GAAA,IAAO,EAAA;AAAA,QACrB,KAAK,OAAA,EAAS;AAAA;AAAA,KAChB,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,eAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,SAAA,GAAYC,QAAQ,MAAM;AAC9B,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,CAA6B,mBAAmB,CAAA;AAG1E,IAAA,OAAO,QAAA,KAAa,iBAAiB,IAAA,GAAO,QAAA;AAAA,EAC9C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAOD,GAAAA,CAAC,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EAC/B;AAEA,EAAA,uBAAOA,GAAAA,CAAC,qBAAA,EAAA,EAAuB,GAAG,KAAA,EAAO,CAAA;AAC3C;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA;AAEvC,EAAA,IAAI,MAAM,iBAAA,EAAmB;AAC3B,IAAA;AAAA;AAAA,sBAEEA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,SAAA,EAAW,OAAA,EAAQ;AAAA,UAC5B,SAAA,EAAU,wCAAA;AAAA,UACV,OAAA,EAAQ,MAAA;AAAA,UACR,iBAAA,EAAe,IAAA;AAAA,UACf,cAAA,EAAa,OAAA;AAAA,UACb,aAAA,EAAW,IAAA;AAAA,UACX,MAAA,EAAQ,MAAM,GAAA,IAAO,MAAA;AAAA,UACrB,KAAK,KAAA,CAAM,iBAAA;AAAA,UACX,kBAAA,EAAiB,GAAA;AAAA,UACjB,KAAK,KAAA,CAAM,GAAA;AAAA,UACX,OAAA,EAAS;AAAA;AAAA;AACV;AAAA,EAEL;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAiB,CAAA,QAAA,EAAW,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,MACtC,eAAa,KAAA,CAAM,EAAA;AAAA,MACnB,iBAAA,EAAiB,KAAA;AAAA,MAChB,GAAI,MAAM,SAAA,GAAY,EAAE,kBAAkB,KAAA,CAAM,SAAA,KAAc,EAAC;AAAA,MAChE,gBAAc,KAAA,CAAM,GAAA;AAAA,MACpB,eAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA,GAAY,OAAA;AAAA,MACzC,IAAA,EAAM,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,GAAA;AAAA,MAG9B,GAAI,UAAU,EAAE,MAAA,EAAQ,UAAU,GAAA,EAAK,qBAAA,KAA0B,EAAC;AAAA,MACnE,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,IAAI,cAAa,EAAG;AAClB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,OAAA,IAAW,CAAC,KAAA,CAAM,GAAA,EAAK;AAC3B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,SAAA,CAAU,EAAE,KAAK,KAAA,CAAM,GAAA,EAAK,KAAK,KAAA,CAAM,GAAA,IAAO,OAAA,CAAQ,IAAA,EAAM,CAAA;AAAA,MAC9D,CAAA;AAAA,MACA,cAAY,OAAA,CAAQ,IAAA;AAAA,MACpB,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,SAAA,GAAY,gBAAgB,EAAE,CAAA,CAAA;AAAA,MAEjG,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,UAAU,MAAA,GAAS,EAAA,GAAK,yCAAyC,CAAA,CAAA,EAC/E,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA;AAAA,UACnB,KAAK,KAAA,CAAM,GAAA;AAAA,UACX,GAAA,EAAK,KAAA,CAAM,GAAA,IAAO,OAAA,CAAQ,IAAA;AAAA,UAC1B,SAAA,EAAW,wBAAwB,SAAS,CAAA,CAAA;AAAA,UAC5C,WAAA,EAAY,KAAA;AAAA,UACZ,UAAU,KAAA,KAAU,CAAA;AAAA,UACpB,SAAA,EAAS,IAAA;AAAA,UACT,MAAA,EAAQ,MAAM,SAAA,CAAU,IAAI;AAAA;AAAA,OAC9B,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,EAAM,EAA2C;AAC5E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAA,kBAAA,EAAqB,KAAA,CAAM,SAAA,GAAY,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,iBAAA,GAAoB,aAAA,GAAgB,EAAE,CAAA,CAAA;AAAA,MACpH,gBAAc,KAAA,CAAM,GAAA;AAAA,MAEpB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAK,KAAA,CAAM,GAAA;AAAA,UACX,GAAA,EAAK,MAAM,GAAA,IAAO,EAAA;AAAA,UAClB,SAAA,EAAU,mEAAA;AAAA,UACV,OAAO,KAAA,CAAM,GAAA;AAAA,UACb,UAAU,KAAA,GAAQ,CAAA;AAAA,UAClB,SAAA,EAAS;AAAA;AAAA;AACX;AAAA,GACF;AAEJ","file":"chunk-JGSGOJWT.js","sourcesContent":["import { lazy } from 'react';\n\nexport const LazyProductDetails = lazy(() =>\n import('./ProductDetails').then((m) => ({ default: m.ProductDetails }))\n);\n\nexport const LazyAddToCartForm = lazy(() =>\n import('./AddToCartForm').then((m) => ({ default: m.AddToCartForm }))\n);\n","import { memo, useCallback, useMemo } from 'react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { useMoney } from '../../hooks/useMoney';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useWishlist } from '../../hooks/useWishlist';\nimport { useAsset } from '../../hooks/useAsset';\nimport { useNumber } from '../../hooks/useNumber';\nimport { registry } from '../ComponentRegistry';\nimport { Image } from '../common';\nimport type { Product } from '../../types';\n\nconst PRODUCT_CARD_KEY = 'product:card';\n\nconst PRODUCT_IMAGE_SRCSET_WIDTHS = [150, 300, 450, 600] as const;\n/** Matches `.s-products-list-vertical-cards`: 2-col below 768px, 4-col above. */\nconst PRODUCT_IMAGE_SIZES = '(min-width: 768px) 25vw, 50vw';\n/** fullImage / minimal slots in FeaturedProductsStyle3 (`lg:grid-cols-2`). */\nconst PRODUCT_WIDE_IMAGE_SIZES = '(min-width: 1024px) 50vw, 100vw';\n\n/** Product card layout variants - mutually exclusive */\nexport type ProductCardLayout = 'vertical' | 'horizontal' | 'fullImage' | 'minimal' | 'special';\n\nexport interface ProductCardProps {\n product: Product;\n layout?: ProductCardLayout;\n className?: string;\n withShadow?: boolean;\n withQuantity?: boolean;\n withoutAddButton?: boolean;\n index?: number;\n imagePriority?: boolean;\n /** Overrides the layout-based image `sizes` hint. */\n sizes?: string;\n}\n\n/**\n * ProductCard - Displays a product in various layouts\n *\n * Layouts:\n * - vertical: Default card with image top, content bottom\n * - horizontal: Side-by-side image and content\n * - fullImage: Full bleed image with overlay content\n * - minimal: Compact version with reduced info\n * - special: Featured card with quantity pie chart\n *\n * Features:\n * - Native lazy loading for images\n * - Product badges (promotion, preorder, quantity, out of stock)\n * - Wishlist toggle button\n * - Price display (sale, starting, regular)\n * - Rating display\n * - Add to cart button via SallaAddProductButton (handles labels internally)\n */\nconst ProductCardContent = memo(function ProductCardContent({\n product,\n layout = 'vertical',\n className = '',\n withShadow = false,\n withQuantity = false,\n withoutAddButton = false,\n index = 0,\n imagePriority = false,\n sizes,\n}: ProductCardProps) {\n const { format } = useMoney();\n const { t } = useTranslation();\n const { store } = useTwilight();\n const wishlist = useWishlist();\n const { isPlaceholder } = useAsset();\n const { format: formatNumber } = useNumber();\n\n // Layout flags\n const isVertical = layout === 'vertical';\n const isHorizontal = layout === 'horizontal';\n const isFullImage = layout === 'fullImage';\n const isMinimal = layout === 'minimal';\n const isSpecial = layout === 'special';\n\n // Wishlist status\n const productInWishlist = wishlist.has(product.id);\n const handleWishlistToggle = useCallback(() => {\n wishlist.toggle(product.id);\n }, [wishlist, product.id]);\n\n // Get image fit type from store settings\n const fitImageHeight = store?.settings?.product?.fit_type;\n\n // Product badge component\n const getProductBadge = () => {\n if (product?.preorder?.label && typeof product.preorder.label === 'string') {\n return <div className=\"s-product-card-promotion-title\">{product.preorder.label}</div>;\n }\n if (product.promotion_title) {\n return <div className=\"s-product-card-promotion-title\">{product.promotion_title}</div>;\n }\n if (withQuantity && product?.quantity) {\n const formattedQty = formatNumber(product.quantity);\n return (\n <div className=\"s-product-card-quantity\">\n {t('pages.products.remained', 'Remained')} {formattedQty}\n </div>\n );\n }\n if (withQuantity && product?.is_out_of_stock) {\n return (\n <div className=\"s-product-card-out-badge\">\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n );\n }\n return null;\n };\n\n // Price display component\n const getProductPrice = () => {\n if (product.is_on_sale && product.sale_price) {\n return (\n <div className=\"s-product-card-sale-price\">\n <h4>{format(product.sale_price)}</h4>\n {product.regular_price && <span>{format(product.regular_price)}</span>}\n </div>\n );\n }\n if (product.starting_price) {\n return (\n <div className=\"s-product-card-starting-price\">\n <p>{t('pages.products.starting_price', 'Starting from')}</p>\n <h4>{format(product.starting_price)}</h4>\n </div>\n );\n }\n return <h4 className=\"s-product-card-price\">{format(product.price)}</h4>;\n };\n\n // Build card class names\n const cardClassName = [\n 's-product-card',\n 's-product-card-entry',\n isVertical ? 's-product-card-vertical' : '',\n isHorizontal ? 's-product-card-horizontal' : '',\n fitImageHeight && isVertical ? `s-product-card-fit-height` : '',\n isSpecial ? 's-product-card-special' : '',\n isFullImage ? 's-product-card-full-image' : '',\n isMinimal ? 's-product-card-minimal' : '',\n product?.donation ? 's-product-card-donation' : '',\n withShadow ? 's-product-card-shadow' : '',\n product?.is_out_of_stock ? 's-product-card-out-of-stock' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Image fit class\n const isProductPlaceholder = isPlaceholder(product.image?.url);\n const imageFitClass = isProductPlaceholder ? 'contain' : fitImageHeight || 'cover';\n\n return (\n <div\n id={`product-card-${product.id}`}\n className={cardClassName}\n data-product-id={product.id}\n style={{\n animationDelay: `${index * 100}ms`,\n }}\n >\n <div className={isFullImage ? 's-product-card-image-full' : 's-product-card-image'}>\n <a href={product.url} aria-label={product.image?.alt || product.name}>\n <Image\n className={`s-product-card-image-${imageFitClass}`}\n src={product.image?.url}\n alt={product.image?.alt ?? product.name}\n width={300}\n height={300}\n sizes={\n sizes ?? (isFullImage || isMinimal ? PRODUCT_WIDE_IMAGE_SIZES : PRODUCT_IMAGE_SIZES)\n }\n srcSetWidths={PRODUCT_IMAGE_SRCSET_WIDTHS}\n aspectRatio=\"1/1\"\n priority={imagePriority}\n />\n {!isFullImage && !isMinimal && getProductBadge()}\n </a>\n {isFullImage && (\n <a href={product.url} aria-label={product.name} className=\"s-product-card-overlay\" />\n )}\n {!isHorizontal && !isFullImage && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n <div className=\"s-product-card-content\">\n {/* Special card: quantity pie */}\n {isSpecial && product?.quantity && (\n <div className=\"s-product-card-content-pie\">\n <span>\n <b>{formatNumber(product.quantity)}</b>\n {t('pages.products.remained', 'Remained')}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-2 -1 36 34\"\n className=\"s-product-card-content-pie-svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-base\" />\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-bar\" />\n </svg>\n </div>\n )}\n\n <div\n className={`s-product-card-content-main ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n <h3 className=\"s-product-card-content-title\">\n <a href={product.url}>{product.name}</a>\n </h3>\n {product.subtitle && !isMinimal && (\n <p className=\"s-product-card-content-subtitle opacity-80\">{product.subtitle}</p>\n )}\n </div>\n\n <div\n className={`s-product-card-content-sub ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n {!product?.donation?.can_donate && getProductPrice()}\n {product.rating?.stars && (\n <div className=\"s-product-card-rating\">\n <i className=\"sicon-star2 before:text-orange-300\" />\n <span>{product.rating.stars}</span>\n </div>\n )}\n </div>\n\n {!withoutAddButton && (\n <div className=\"s-product-card-content-footer gap-2\">\n <SallaAddProductButton\n fill=\"outline\"\n width=\"wide\"\n productId={product.id}\n productStatus={product.status}\n productType={product.type}\n hasPreOrder={product.has_preorder_campaign}\n />\n {(isHorizontal || isFullImage) && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n )}\n </div>\n </div>\n );\n});\n\nexport const ProductCard = memo(function ProductCard(props: ProductCardProps) {\n const Component = useMemo(() => {\n const hasOverride = registry.getOriginal<ProductCardProps>(PRODUCT_CARD_KEY) !== null;\n if (hasOverride) {\n return registry.resolve<ProductCardProps>(PRODUCT_CARD_KEY);\n }\n return null;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductCardContent {...props} />;\n});\n\nexport default ProductCard;\n","import { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { Suspense, useEffect, useMemo, useState } from 'react';\nimport { registry } from '../ComponentRegistry';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { Product, ProductImage } from '../../types';\nimport { Image } from '../common/Image';\nimport { ImageModal } from '../modal';\n\nconst PRODUCT_GALLERY_KEY = 'product:gallery';\n\nexport interface ProductGalleryProps {\n product: Product;\n}\n\ntype ImagePreview = { src: string; alt: string };\ntype GalleryMedia = { url: string; type: 'image' | 'video' | '3d-image' };\n\nfunction ProductGalleryContent({ product }: ProductGalleryProps) {\n const { t } = useTranslation();\n const { theme } = useTwilight();\n const sliderId = `details-slider-${product.id}`;\n const objectFit = theme.settings.slider_background_size ?? 'cover';\n\n // Clicking an image opens an in-app lightbox instead of navigating to the CDN URL.\n const [preview, setPreview] = useState<ImagePreview | null>(null);\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => {\n const el = document.getElementById(sliderId);\n if (!el?.parentElement) return;\n const { parentElement, nextSibling } = el;\n parentElement.removeChild(el);\n parentElement.insertBefore(el, nextSibling);\n });\n return () => cancelAnimationFrame(raf);\n }, [sliderId]);\n\n // The product-details API only returns `image` (singular).\n // Fall back so the main image always renders even without the full gallery array.\n const images: ProductImage[] =\n product.images && product.images.length > 0\n ? product.images\n : product.image?.url\n ? [product.image]\n : [];\n\n const hasManyImages = images.length > 1;\n const nativeGallery = images.flatMap<GalleryMedia>((image) => {\n if (image.three_d_image_url) return [{ url: image.three_d_image_url, type: '3d-image' }];\n if (image.video_url) return [{ url: image.video_url, type: 'video' }];\n return image.url ? [{ url: image.url, type: 'image' }] : [];\n });\n const openNativeGallery = () => {\n if (!window.salla?.mobile?.isEnabled?.()) return false;\n window.salla.event.dispatch('mobile::gallery.open', { images: nativeGallery });\n return true;\n };\n\n return (\n <div className=\"sidebar md:sticky top-24 w-full md:!w-2/4 rtl:ml-8 ltr:mr-8 pb-8 md:pb-16 overflow-hidden shrink-0\">\n <SallaSlider\n id={sliderId}\n className=\"details-slider rounded-md image-slider\"\n type=\"thumbs\"\n loop={false}\n autoHeight\n listenToThumbnailsOption\n showThumbsControls={false}\n sliderConfig={{ watchOverflow: true, autoHeight: true }}\n >\n {product.promotion_title && (\n <div className=\"promotion-title\">{product.promotion_title}</div>\n )}\n\n {product.calories && (\n <div className=\"absolute z-[2] top-4 rtl:left-4 ltr:right-4 bg-white shadow-sm flex flex-col justify-center items-center rounded-full w-20 h-20 md:w-24 md:h-24\">\n <span className=\"text-red-500 text-xl leading-none font-bold\">{product.calories}</span>\n <span className=\"text-xs text-gray-500\">\n {t('pages.products.calories', 'Calories')}\n </span>\n </div>\n )}\n\n <div slot=\"items\">\n {images.map((image, index) => (\n <ImageSlide\n key={image.id ?? image.three_d_image_url ?? image.video_url ?? image.url}\n image={image}\n product={product}\n index={index}\n objectFit={objectFit}\n onPreview={setPreview}\n onNativeOpen={openNativeGallery}\n />\n ))}\n </div>\n\n {hasManyImages && (\n <div slot=\"thumbs\">\n {images.map((image, index) => (\n <ThumbSlide\n key={image.id ?? image.three_d_image_url ?? image.video_url ?? image.url}\n image={image}\n index={index}\n />\n ))}\n </div>\n )}\n </SallaSlider>\n\n <Suspense fallback={null}>\n <ImageModal\n isOpen={!!preview}\n onClose={() => setPreview(null)}\n src={preview?.src ?? ''}\n alt={preview?.alt}\n />\n </Suspense>\n </div>\n );\n}\n\nexport function ProductGallery(props: ProductGalleryProps) {\n const Component = useMemo(() => {\n const resolved = registry.resolve<ProductGalleryProps>(PRODUCT_GALLERY_KEY);\n // A theme that seeds the key with this component (register + override) would\n // otherwise recurse into itself when it has not actually overridden anything.\n return resolved === ProductGallery ? null : resolved;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductGalleryContent {...props} />;\n}\n\nfunction ImageSlide({\n image,\n product,\n index,\n objectFit,\n onPreview,\n onNativeOpen,\n}: {\n image: ProductImage;\n product: Product;\n index: number;\n objectFit: 'cover' | 'contain';\n onPreview: (preview: ImagePreview) => void;\n onNativeOpen: () => boolean;\n}) {\n const [loaded, setLoaded] = useState(false);\n const isVideo = Boolean(image.video_url);\n\n if (image.three_d_image_url) {\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: model-viewer is an interactive web component.\n <model-viewer\n style={{ minHeight: '500px' }}\n className=\"swiper-slide model-entry w-full h-full\"\n loading=\"lazy\"\n camera-controls\n touch-action=\"pan-y\"\n auto-rotate\n poster={image.url || undefined}\n src={image.three_d_image_url}\n shadow-intensity=\"1\"\n alt={image.alt}\n onClick={onNativeOpen}\n ></model-viewer>\n );\n }\n\n return (\n <a\n data-fslightbox={`product_${product.id}`}\n data-img-id={image.id}\n data-slid-index={index}\n {...(image.video_url ? { 'data-video-src': image.video_url } : {})}\n data-caption={image.alt}\n data-infinite=\"false\"\n data-type={image.video_url ? 'youtube' : 'image'}\n href={image.video_url || image.url}\n // FsLightbox isn't loaded in this React theme, so the bare href would leave the SPA.\n // Open images in an in-app lightbox; let videos open in a new tab.\n {...(isVideo ? { target: '_blank', rel: 'noopener noreferrer' } : {})}\n onClick={(event) => {\n if (onNativeOpen()) {\n event.preventDefault();\n return;\n }\n if (isVideo || !image.url) return;\n event.preventDefault();\n onPreview({ src: image.url, alt: image.alt || product.name });\n }}\n aria-label={product.name}\n className={`swiper-slide magnify-wrapper homeslider__slide ${image.video_url ? 'video-entry' : ''}`}\n >\n <div className={`w-full ${loaded ? '' : 'aspect-square bg-gray-100 animate-pulse'}`}>\n <Image\n id={String(image.id)}\n src={image.url}\n alt={image.alt || product.name}\n className={`h-full w-full object-${objectFit}`}\n aspectRatio=\"1/1\"\n priority={index === 0}\n noWrapper\n onLoad={() => setLoaded(true)}\n />\n </div>\n </a>\n );\n}\n\nfunction ThumbSlide({ image, index }: { image: ProductImage; index: number }) {\n return (\n <div\n className={`slide--one-fourth ${image.video_url ? 'video-entry' : ''} ${image.three_d_image_url ? 'model-entry' : ''}`}\n data-caption={image.alt}\n >\n <Image\n src={image.url}\n alt={image.alt || ''}\n className=\"object-cover w-full h-full bg-gray-100 rounded-md overflow-hidden\"\n title={image.alt}\n priority={index < 5}\n noWrapper\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/product/lazy.ts","../src/components/product/ProductCard.tsx","../src/components/product/ProductGallery.tsx"],"names":["ProductCardContent","ProductCard","jsxs","jsx","useMemo"],"mappings":";;;;;;;;;;;;;;AAEO,IAAM,kBAAA,GAAqB,IAAA;AAAA,EAAK,MACrC,OAAO,8BAAkB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,cAAA,EAAe,CAAE;AACxE;AAEO,IAAM,iBAAA,GAAoB,IAAA;AAAA,EAAK,MACpC,OAAO,6BAAiB,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,MAAO,EAAE,OAAA,EAAS,CAAA,CAAE,aAAA,EAAc,CAAE;AACtE;ACKA,IAAM,gBAAA,GAAmB,cAAA;AAEzB,IAAM,2BAAA,GAA8B,CAAC,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAEvD,IAAM,mBAAA,GAAsB,+BAAA;AAE5B,IAAM,wBAAA,GAA2B,iCAAA;AAoCjC,IAAM,kBAAA,GAAqB,IAAA,CAAK,SAASA,mBAAAA,CAAmB;AAAA,EAC1D,OAAA;AAAA,EACA,MAAA,GAAS,UAAA;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ,UAAA,GAAa,KAAA;AAAA,EACb,YAAA,GAAe,KAAA;AAAA,EACf,gBAAA,GAAmB,KAAA;AAAA,EACnB,KAAA,GAAQ,CAAA;AAAA,EACR,aAAA,GAAgB,KAAA;AAAA,EAChB;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,QAAA,EAAS;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAC9B,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,QAAA,EAAS;AACnC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAA,EAAa,GAAI,SAAA,EAAU;AAG3C,EAAA,MAAM,aAAa,MAAA,KAAW,UAAA;AAC9B,EAAA,MAAM,eAAe,MAAA,KAAW,YAAA;AAChC,EAAA,MAAM,cAAc,MAAA,KAAW,WAAA;AAC/B,EAAA,MAAM,YAAY,MAAA,KAAW,SAAA;AAC7B,EAAA,MAAM,YAAY,MAAA,KAAW,SAAA;AAG7B,EAAA,MAAM,iBAAA,GAAoB,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA;AACjD,EAAA,MAAM,oBAAA,GAAuB,YAAY,MAAM;AAC7C,IAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,EAAE,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,QAAA,EAAU,OAAA,CAAQ,EAAE,CAAC,CAAA;AAGzB,EAAA,MAAM,cAAA,GAAiB,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,QAAA;AAGjD,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,SAAS,QAAA,EAAU,KAAA,IAAS,OAAO,OAAA,CAAQ,QAAA,CAAS,UAAU,QAAA,EAAU;AAC1E,MAAA,2BAAQ,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,QAAA,EAAA,OAAA,CAAQ,SAAS,KAAA,EAAM,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,QAAQ,eAAA,EAAiB;AAC3B,MAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,kBAAQ,eAAA,EAAgB,CAAA;AAAA,IAClF;AACA,IAAA,IAAI,YAAA,IAAgB,SAAS,QAAA,EAAU;AACrC,MAAA,MAAM,YAAA,GAAe,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA;AAClD,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,2BAA2B,UAAU,CAAA;AAAA,QAAE,GAAA;AAAA,QAAE;AAAA,OAAA,EAC9C,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,YAAA,IAAgB,SAAS,eAAA,EAAiB;AAC5C,MAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,4BACZ,QAAA,EAAA,CAAA,CAAE,6BAAA,EAA+B,cAAc,CAAA,EAClD,CAAA;AAAA,IAEJ;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,UAAA,EAAY;AAC5C,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAE,CAAA;AAAA,QAC/B,QAAQ,aAAA,oBAAiB,GAAA,CAAC,UAAM,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAE;AAAA,OAAA,EACjE,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,QAAQ,cAAA,EAAgB;AAC1B,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,+BAAA,EAAiC,eAAe,CAAA,EAAE,CAAA;AAAA,wBACxD,GAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,EAAE;AAAA,OAAA,EACtC,CAAA;AAAA,IAEJ;AACA,IAAA,2BAAQ,IAAA,EAAA,EAAG,SAAA,EAAU,wBAAwB,QAAA,EAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAE,CAAA;AAAA,EACrE,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,gBAAA;AAAA,IACA,sBAAA;AAAA,IACA,aAAa,yBAAA,GAA4B,EAAA;AAAA,IACzC,eAAe,2BAAA,GAA8B,EAAA;AAAA,IAC7C,cAAA,IAAkB,aAAa,CAAA,yBAAA,CAAA,GAA8B,EAAA;AAAA,IAC7D,YAAY,wBAAA,GAA2B,EAAA;AAAA,IACvC,cAAc,2BAAA,GAA8B,EAAA;AAAA,IAC5C,YAAY,wBAAA,GAA2B,EAAA;AAAA,IACvC,OAAA,EAAS,WAAW,yBAAA,GAA4B,EAAA;AAAA,IAChD,aAAa,uBAAA,GAA0B,EAAA;AAAA,IACvC,OAAA,EAAS,kBAAkB,6BAAA,GAAgC,EAAA;AAAA,IAC3D;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAGX,EAAA,MAAM,oBAAA,GAAuB,aAAA,CAAc,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAC7D,EAAA,MAAM,aAAA,GAAgB,oBAAA,GAAuB,SAAA,GAAY,cAAA,IAAkB,OAAA;AAE3E,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,CAAA,aAAA,EAAgB,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,MAC9B,SAAA,EAAW,aAAA;AAAA,MACX,mBAAiB,OAAA,CAAQ,EAAA;AAAA,MACzB,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,CAAA,EAAG,KAAA,GAAQ,GAAG,CAAA,EAAA;AAAA,OAChC;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,WAAA,GAAc,2BAAA,GAA8B,sBAAA,EAC1D,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,GAAA,EAAA,EAAE,MAAM,OAAA,CAAQ,GAAA,EAAK,cAAY,OAAA,CAAQ,KAAA,EAAO,GAAA,IAAO,OAAA,CAAQ,IAAA,EAC9D,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,wBAAwB,aAAa,CAAA,CAAA;AAAA,gBAChD,GAAA,EAAK,QAAQ,KAAA,EAAO,GAAA;AAAA,gBACpB,GAAA,EAAK,OAAA,CAAQ,KAAA,EAAO,GAAA,IAAO,OAAA,CAAQ,IAAA;AAAA,gBACnC,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAQ,GAAA;AAAA,gBACR,KAAA,EACE,KAAA,KAAU,WAAA,IAAe,SAAA,GAAY,wBAAA,GAA2B,mBAAA,CAAA;AAAA,gBAElE,YAAA,EAAc,2BAAA;AAAA,gBACd,WAAA,EAAY,KAAA;AAAA,gBACZ,QAAA,EAAU;AAAA;AAAA,aACZ;AAAA,YACC,CAAC,WAAA,IAAe,CAAC,SAAA,IAAa,eAAA;AAAgB,WAAA,EACjD,CAAA;AAAA,UACC,WAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,OAAA,CAAQ,KAAK,YAAA,EAAY,OAAA,CAAQ,IAAA,EAAM,SAAA,EAAU,wBAAA,EAAyB,CAAA;AAAA,UAEpF,CAAC,YAAA,IAAgB,CAAC,WAAA,oBACjB,GAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAK,SAAA;AAAA,cACL,KAAA,EAAM,OAAA;AAAA,cACN,SAAA,EAAW,CAAA,CAAE,uBAAA,EAAyB,2BAA2B,CAAA;AAAA,cACjE,SAAA,EAAW,CAAA,qCAAA,EAAwC,iBAAA,GAAoB,2CAAA,GAA8C,wBAAwB,CAAA,CAAA;AAAA,cAC7I,OAAA,EAAS,oBAAA;AAAA,cACT,WAAS,OAAA,CAAQ,EAAA;AAAA,cAEjB,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAC7B,SAAA,EAEJ,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAEZ,QAAA,EAAA;AAAA,UAAA,SAAA,IAAa,OAAA,EAAS,QAAA,oBACrB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA,EAAE,CAAA;AAAA,cAClC,CAAA,CAAE,2BAA2B,UAAU;AAAA,aAAA,EAC1C,CAAA;AAAA,4BACA,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,4BAAA;AAAA,gBACN,OAAA,EAAQ,aAAA;AAAA,gBACR,SAAA,EAAU,gCAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,QAAA,EAAA,EAAO,IAAG,IAAA,EAAK,EAAA,EAAG,MAAK,CAAA,EAAE,SAAA,EAAU,WAAU,qCAAA,EAAsC,CAAA;AAAA,kCACpF,GAAA,CAAC,YAAO,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,CAAA,EAAE,SAAA,EAAU,SAAA,EAAU,oCAAA,EAAqC;AAAA;AAAA;AAAA;AACrF,WAAA,EACF,CAAA;AAAA,0BAGF,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,4BAAA,EAA+B,SAAA,GAAY,sCAAA,GAAyC,EAAE,CAAA,CAAA;AAAA,cAEjG,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,8BAAA,EACZ,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,MAAM,OAAA,CAAQ,GAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,IAAA,EAAK,CAAA,EACtC,CAAA;AAAA,gBACC,OAAA,CAAQ,YAAY,CAAC,SAAA,wBACnB,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EAA8C,QAAA,EAAA,OAAA,CAAQ,QAAA,EAAS;AAAA;AAAA;AAAA,WAEhF;AAAA,0BAEA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,CAAA,2BAAA,EAA8B,SAAA,GAAY,sCAAA,GAAyC,EAAE,CAAA,CAAA;AAAA,cAE/F,QAAA,EAAA;AAAA,gBAAA,CAAC,OAAA,EAAS,QAAA,EAAU,UAAA,IAAc,eAAA,EAAgB;AAAA,gBAClD,QAAQ,MAAA,EAAQ,KAAA,oBACf,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACb,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,oCAAA,EAAqC,CAAA;AAAA,kCAClD,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAM;AAAA,iBAAA,EAC9B;AAAA;AAAA;AAAA,WAEJ;AAAA,UAEC,CAAC,gBAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qCAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,SAAA;AAAA,gBACL,KAAA,EAAM,MAAA;AAAA,gBACN,WAAW,OAAA,CAAQ,EAAA;AAAA,gBACnB,eAAe,OAAA,CAAQ,MAAA;AAAA,gBACvB,aAAa,OAAA,CAAQ,IAAA;AAAA,gBACrB,aAAa,OAAA,CAAQ;AAAA;AAAA,aACvB;AAAA,YAAA,CACE,gBAAgB,WAAA,qBAChB,GAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,MAAA;AAAA,gBACN,IAAA,EAAK,SAAA;AAAA,gBACL,KAAA,EAAM,OAAA;AAAA,gBACN,SAAA,EAAW,CAAA,CAAE,uBAAA,EAAyB,2BAA2B,CAAA;AAAA,gBACjE,SAAA,EAAW,CAAA,qCAAA,EAAwC,iBAAA,GAAoB,2CAAA,GAA8C,wBAAwB,CAAA,CAAA;AAAA,gBAC7I,OAAA,EAAS,oBAAA;AAAA,gBACT,WAAS,OAAA,CAAQ,EAAA;AAAA,gBAEjB,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAC7B,WAAA,EAEJ;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC,CAAA;AAEM,IAAM,WAAA,GAAc,IAAA,CAAK,SAASC,YAAAA,CAAY,KAAA,EAAyB;AAC5E,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM;AAC9B,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,WAAA,CAA8B,gBAAgB,CAAA,KAAM,IAAA;AACjF,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,OAAO,QAAA,CAAS,QAA0B,gBAAgB,CAAA;AAAA,IAC5D;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAO,GAAA,CAAC,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EAC/B;AAEA,EAAA,uBAAO,GAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,KAAA,EAAO,CAAA;AACxC,CAAC;ACtRD,IAAM,mBAAA,GAAsB,iBAAA;AAS5B,SAAS,qBAAA,CAAsB,EAAE,OAAA,EAAQ,EAAwB;AAC/D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAC9B,EAAA,MAAM,QAAA,GAAW,CAAA,eAAA,EAAkB,OAAA,CAAQ,EAAE,CAAA,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAA,CAAS,sBAAA,IAA0B,OAAA;AAG3D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAA8B,IAAI,CAAA;AAEhE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,GAAA,GAAM,sBAAsB,MAAM;AACtC,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,cAAA,CAAe,QAAQ,CAAA;AAC3C,MAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACxB,MAAA,MAAM,EAAE,aAAA,EAAe,WAAA,EAAY,GAAI,EAAA;AACvC,MAAA,aAAA,CAAc,YAAY,EAAE,CAAA;AAC5B,MAAA,aAAA,CAAc,YAAA,CAAa,IAAI,WAAW,CAAA;AAAA,IAC5C,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,qBAAqB,GAAG,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAIb,EAAA,MAAM,SACJ,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAA,GACtC,OAAA,CAAQ,MAAA,GACR,OAAA,CAAQ,OAAO,GAAA,GACb,CAAC,OAAA,CAAQ,KAAK,IACd,EAAC;AAET,EAAA,MAAM,aAAA,GAAgB,OAAO,MAAA,GAAS,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,OAAA,CAAsB,CAAC,KAAA,KAAU;AAC5D,IAAA,IAAI,KAAA,CAAM,iBAAA,EAAmB,OAAO,CAAC,EAAE,KAAK,KAAA,CAAM,iBAAA,EAAmB,IAAA,EAAM,UAAA,EAAY,CAAA;AACvF,IAAA,IAAI,KAAA,CAAM,SAAA,EAAW,OAAO,CAAC,EAAE,KAAK,KAAA,CAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,CAAA;AACpE,IAAA,OAAO,KAAA,CAAM,GAAA,GAAM,CAAC,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,CAAA,GAAI,EAAC;AAAA,EAC5D,CAAC,CAAA;AACD,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,CAAC,MAAA,CAAO,KAAA,EAAO,MAAA,EAAQ,SAAA,MAAe,OAAO,KAAA;AACjD,IAAA,MAAA,CAAO,MAAM,KAAA,CAAM,QAAA,CAAS,wBAAwB,EAAE,MAAA,EAAQ,eAAe,CAAA;AAC7E,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,QAAA;AAAA,QACJ,SAAA,EAAU,wCAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,KAAA;AAAA,QACN,UAAA,EAAU,IAAA;AAAA,QACV,wBAAA,EAAwB,IAAA;AAAA,QACxB,kBAAA,EAAoB,KAAA;AAAA,QACpB,YAAA,EAAc,EAAE,aAAA,EAAe,IAAA,EAAM,YAAY,IAAA,EAAK;AAAA,QAErD,QAAA,EAAA;AAAA,UAAA,OAAA,CAAQ,mCACPC,GAAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EAAmB,kBAAQ,eAAA,EAAgB,CAAA;AAAA,UAG3D,QAAQ,QAAA,oBACPD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iJAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6CAAA,EAA+C,kBAAQ,QAAA,EAAS,CAAA;AAAA,4BAChFA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBACb,QAAA,EAAA,CAAA,CAAE,yBAAA,EAA2B,UAAU,CAAA,EAC1C;AAAA,WAAA,EACF,CAAA;AAAA,0BAGFA,GAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,OAAA,EACP,iBAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBAClBA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cAEC,KAAA;AAAA,cACA,OAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAA;AAAA,cACA,SAAA,EAAW,UAAA;AAAA,cACX,YAAA,EAAc;AAAA,aAAA;AAAA,YANT,MAAM,EAAA,IAAM,KAAA,CAAM,iBAAA,IAAqB,KAAA,CAAM,aAAa,KAAA,CAAM;AAAA,WAQxE,CAAA,EACH,CAAA;AAAA,UAEC,aAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,QAAA,EACP,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBAClBA,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cAEC,KAAA;AAAA,cACA;AAAA,aAAA;AAAA,YAFK,MAAM,EAAA,IAAM,KAAA,CAAM,iBAAA,IAAqB,KAAA,CAAM,aAAa,KAAA,CAAM;AAAA,WAIxE,CAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,oBAEAA,GAAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAU,MAClB,QAAA,kBAAAA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,CAAC,CAAC,OAAA;AAAA,QACV,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC9B,GAAA,EAAK,SAAS,GAAA,IAAO,EAAA;AAAA,QACrB,KAAK,OAAA,EAAS;AAAA;AAAA,KAChB,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,eAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,SAAA,GAAYC,QAAQ,MAAM;AAC9B,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,CAA6B,mBAAmB,CAAA;AAG1E,IAAA,OAAO,QAAA,KAAa,iBAAiB,IAAA,GAAO,QAAA;AAAA,EAC9C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAOD,GAAAA,CAAC,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAAA,EAC/B;AAEA,EAAA,uBAAOA,GAAAA,CAAC,qBAAA,EAAA,EAAuB,GAAG,KAAA,EAAO,CAAA;AAC3C;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA;AAEvC,EAAA,IAAI,MAAM,iBAAA,EAAmB;AAC3B,IAAA;AAAA;AAAA,sBAEEA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,SAAA,EAAW,OAAA,EAAQ;AAAA,UAC5B,SAAA,EAAU,wCAAA;AAAA,UACV,OAAA,EAAQ,MAAA;AAAA,UACR,iBAAA,EAAe,IAAA;AAAA,UACf,cAAA,EAAa,OAAA;AAAA,UACb,aAAA,EAAW,IAAA;AAAA,UACX,MAAA,EAAQ,MAAM,GAAA,IAAO,MAAA;AAAA,UACrB,KAAK,KAAA,CAAM,iBAAA;AAAA,UACX,kBAAA,EAAiB,GAAA;AAAA,UACjB,KAAK,KAAA,CAAM,GAAA;AAAA,UACX,OAAA,EAAS;AAAA;AAAA;AACV;AAAA,EAEL;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAiB,CAAA,QAAA,EAAW,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,MACtC,eAAa,KAAA,CAAM,EAAA;AAAA,MACnB,iBAAA,EAAiB,KAAA;AAAA,MAChB,GAAI,MAAM,SAAA,GAAY,EAAE,kBAAkB,KAAA,CAAM,SAAA,KAAc,EAAC;AAAA,MAChE,gBAAc,KAAA,CAAM,GAAA;AAAA,MACpB,eAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA,GAAY,OAAA;AAAA,MACzC,IAAA,EAAM,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,GAAA;AAAA,MAG9B,GAAI,UAAU,EAAE,MAAA,EAAQ,UAAU,GAAA,EAAK,qBAAA,KAA0B,EAAC;AAAA,MACnE,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,IAAI,cAAa,EAAG;AAClB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,OAAA,IAAW,CAAC,KAAA,CAAM,GAAA,EAAK;AAC3B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,SAAA,CAAU,EAAE,KAAK,KAAA,CAAM,GAAA,EAAK,KAAK,KAAA,CAAM,GAAA,IAAO,OAAA,CAAQ,IAAA,EAAM,CAAA;AAAA,MAC9D,CAAA;AAAA,MACA,cAAY,OAAA,CAAQ,IAAA;AAAA,MACpB,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,SAAA,GAAY,gBAAgB,EAAE,CAAA,CAAA;AAAA,MAEjG,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,UAAU,MAAA,GAAS,EAAA,GAAK,yCAAyC,CAAA,CAAA,EAC/E,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAA;AAAA,UACnB,KAAK,KAAA,CAAM,GAAA;AAAA,UACX,GAAA,EAAK,KAAA,CAAM,GAAA,IAAO,OAAA,CAAQ,IAAA;AAAA,UAC1B,SAAA,EAAW,wBAAwB,SAAS,CAAA,CAAA;AAAA,UAC5C,WAAA,EAAY,KAAA;AAAA,UACZ,UAAU,KAAA,KAAU,CAAA;AAAA,UACpB,SAAA,EAAS,IAAA;AAAA,UACT,MAAA,EAAQ,MAAM,SAAA,CAAU,IAAI;AAAA;AAAA,OAC9B,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,EAAM,EAA2C;AAC5E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAA,kBAAA,EAAqB,KAAA,CAAM,SAAA,GAAY,aAAA,GAAgB,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,iBAAA,GAAoB,aAAA,GAAgB,EAAE,CAAA,CAAA;AAAA,MACpH,gBAAc,KAAA,CAAM,GAAA;AAAA,MAEpB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAK,KAAA,CAAM,GAAA;AAAA,UACX,GAAA,EAAK,MAAM,GAAA,IAAO,EAAA;AAAA,UAClB,SAAA,EAAU,mEAAA;AAAA,UACV,OAAO,KAAA,CAAM,GAAA;AAAA,UACb,UAAU,KAAA,GAAQ,CAAA;AAAA,UAClB,SAAA,EAAS;AAAA;AAAA;AACX;AAAA,GACF;AAEJ","file":"chunk-G4BW3B3H.js","sourcesContent":["import { lazy } from 'react';\n\nexport const LazyProductDetails = lazy(() =>\n import('./ProductDetails').then((m) => ({ default: m.ProductDetails }))\n);\n\nexport const LazyAddToCartForm = lazy(() =>\n import('./AddToCartForm').then((m) => ({ default: m.AddToCartForm }))\n);\n","import { memo, useCallback, useMemo } from 'react';\nimport { SallaAddProductButton } from '@salla.sa/twilight-components-react/add-product-button';\nimport { SallaButton } from '@salla.sa/twilight-components-react/button';\nimport { useMoney } from '../../hooks/useMoney';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useWishlist } from '../../hooks/useWishlist';\nimport { useAsset } from '../../hooks/useAsset';\nimport { useNumber } from '../../hooks/useNumber';\nimport { registry } from '../ComponentRegistry';\nimport { Image } from '../common';\nimport type { Product } from '../../types';\n\nconst PRODUCT_CARD_KEY = 'product:card';\n\nconst PRODUCT_IMAGE_SRCSET_WIDTHS = [150, 300, 450, 600] as const;\n/** Matches `.s-products-list-vertical-cards`: 2-col below 768px, 4-col above. */\nconst PRODUCT_IMAGE_SIZES = '(min-width: 768px) 25vw, 50vw';\n/** fullImage / minimal slots in FeaturedProductsStyle3 (`lg:grid-cols-2`). */\nconst PRODUCT_WIDE_IMAGE_SIZES = '(min-width: 1024px) 50vw, 100vw';\n\n/** Product card layout variants - mutually exclusive */\nexport type ProductCardLayout = 'vertical' | 'horizontal' | 'fullImage' | 'minimal' | 'special';\n\nexport interface ProductCardProps {\n product: Product;\n layout?: ProductCardLayout;\n className?: string;\n withShadow?: boolean;\n withQuantity?: boolean;\n withoutAddButton?: boolean;\n index?: number;\n imagePriority?: boolean;\n /** Overrides the layout-based image `sizes` hint. */\n sizes?: string;\n}\n\n/**\n * ProductCard - Displays a product in various layouts\n *\n * Layouts:\n * - vertical: Default card with image top, content bottom\n * - horizontal: Side-by-side image and content\n * - fullImage: Full bleed image with overlay content\n * - minimal: Compact version with reduced info\n * - special: Featured card with quantity pie chart\n *\n * Features:\n * - Native lazy loading for images\n * - Product badges (promotion, preorder, quantity, out of stock)\n * - Wishlist toggle button\n * - Price display (sale, starting, regular)\n * - Rating display\n * - Add to cart button via SallaAddProductButton (handles labels internally)\n */\nconst ProductCardContent = memo(function ProductCardContent({\n product,\n layout = 'vertical',\n className = '',\n withShadow = false,\n withQuantity = false,\n withoutAddButton = false,\n index = 0,\n imagePriority = false,\n sizes,\n}: ProductCardProps) {\n const { format } = useMoney();\n const { t } = useTranslation();\n const { store } = useTwilight();\n const wishlist = useWishlist();\n const { isPlaceholder } = useAsset();\n const { format: formatNumber } = useNumber();\n\n // Layout flags\n const isVertical = layout === 'vertical';\n const isHorizontal = layout === 'horizontal';\n const isFullImage = layout === 'fullImage';\n const isMinimal = layout === 'minimal';\n const isSpecial = layout === 'special';\n\n // Wishlist status\n const productInWishlist = wishlist.has(product.id);\n const handleWishlistToggle = useCallback(() => {\n wishlist.toggle(product.id);\n }, [wishlist, product.id]);\n\n // Get image fit type from store settings\n const fitImageHeight = store?.settings?.product?.fit_type;\n\n // Product badge component\n const getProductBadge = () => {\n if (product?.preorder?.label && typeof product.preorder.label === 'string') {\n return <div className=\"s-product-card-promotion-title\">{product.preorder.label}</div>;\n }\n if (product.promotion_title) {\n return <div className=\"s-product-card-promotion-title\">{product.promotion_title}</div>;\n }\n if (withQuantity && product?.quantity) {\n const formattedQty = formatNumber(product.quantity);\n return (\n <div className=\"s-product-card-quantity\">\n {t('pages.products.remained', 'Remained')} {formattedQty}\n </div>\n );\n }\n if (withQuantity && product?.is_out_of_stock) {\n return (\n <div className=\"s-product-card-out-badge\">\n {t('pages.products.out_of_stock', 'Out of Stock')}\n </div>\n );\n }\n return null;\n };\n\n // Price display component\n const getProductPrice = () => {\n if (product.is_on_sale && product.sale_price) {\n return (\n <div className=\"s-product-card-sale-price\">\n <h4>{format(product.sale_price)}</h4>\n {product.regular_price && <span>{format(product.regular_price)}</span>}\n </div>\n );\n }\n if (product.starting_price) {\n return (\n <div className=\"s-product-card-starting-price\">\n <p>{t('pages.products.starting_price', 'Starting from')}</p>\n <h4>{format(product.starting_price)}</h4>\n </div>\n );\n }\n return <h4 className=\"s-product-card-price\">{format(product.price)}</h4>;\n };\n\n // Build card class names\n const cardClassName = [\n 's-product-card',\n 's-product-card-entry',\n isVertical ? 's-product-card-vertical' : '',\n isHorizontal ? 's-product-card-horizontal' : '',\n fitImageHeight && isVertical ? `s-product-card-fit-height` : '',\n isSpecial ? 's-product-card-special' : '',\n isFullImage ? 's-product-card-full-image' : '',\n isMinimal ? 's-product-card-minimal' : '',\n product?.donation ? 's-product-card-donation' : '',\n withShadow ? 's-product-card-shadow' : '',\n product?.is_out_of_stock ? 's-product-card-out-of-stock' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Image fit class\n const isProductPlaceholder = isPlaceholder(product.image?.url);\n const imageFitClass = isProductPlaceholder ? 'contain' : fitImageHeight || 'cover';\n\n return (\n <div\n id={`product-card-${product.id}`}\n className={cardClassName}\n data-product-id={product.id}\n style={{\n animationDelay: `${index * 100}ms`,\n }}\n >\n <div className={isFullImage ? 's-product-card-image-full' : 's-product-card-image'}>\n <a href={product.url} aria-label={product.image?.alt || product.name}>\n <Image\n className={`s-product-card-image-${imageFitClass}`}\n src={product.image?.url}\n alt={product.image?.alt ?? product.name}\n width={300}\n height={300}\n sizes={\n sizes ?? (isFullImage || isMinimal ? PRODUCT_WIDE_IMAGE_SIZES : PRODUCT_IMAGE_SIZES)\n }\n srcSetWidths={PRODUCT_IMAGE_SRCSET_WIDTHS}\n aspectRatio=\"1/1\"\n priority={imagePriority}\n />\n {!isFullImage && !isMinimal && getProductBadge()}\n </a>\n {isFullImage && (\n <a href={product.url} aria-label={product.name} className=\"s-product-card-overlay\" />\n )}\n {!isHorizontal && !isFullImage && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n <div className=\"s-product-card-content\">\n {/* Special card: quantity pie */}\n {isSpecial && product?.quantity && (\n <div className=\"s-product-card-content-pie\">\n <span>\n <b>{formatNumber(product.quantity)}</b>\n {t('pages.products.remained', 'Remained')}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-2 -1 36 34\"\n className=\"s-product-card-content-pie-svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-base\" />\n <circle cx=\"16\" cy=\"16\" r=\"15.9155\" className=\"s-product-card-content-pie-svg-bar\" />\n </svg>\n </div>\n )}\n\n <div\n className={`s-product-card-content-main ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n <h3 className=\"s-product-card-content-title\">\n <a href={product.url}>{product.name}</a>\n </h3>\n {product.subtitle && !isMinimal && (\n <p className=\"s-product-card-content-subtitle opacity-80\">{product.subtitle}</p>\n )}\n </div>\n\n <div\n className={`s-product-card-content-sub ${isSpecial ? 's-product-card-content-extra-padding' : ''}`}\n >\n {!product?.donation?.can_donate && getProductPrice()}\n {product.rating?.stars && (\n <div className=\"s-product-card-rating\">\n <i className=\"sicon-star2 before:text-orange-300\" />\n <span>{product.rating.stars}</span>\n </div>\n )}\n </div>\n\n {!withoutAddButton && (\n <div className=\"s-product-card-content-footer gap-2\">\n <SallaAddProductButton\n fill=\"outline\"\n width=\"wide\"\n productId={product.id}\n productStatus={product.status}\n productType={product.type}\n hasPreOrder={product.has_preorder_campaign}\n />\n {(isHorizontal || isFullImage) && (\n <SallaButton\n shape=\"icon\"\n fill=\"outline\"\n color=\"light\"\n ariaLabel={t('pages.wishlist.toggle', 'Add or remove to wishlist')}\n className={`s-product-card-wishlist-btn animated ${productInWishlist ? 's-product-card-wishlist-added pulse-anime' : 'not-added un-favorited'}`}\n onClick={handleWishlistToggle}\n data-id={product.id}\n >\n <i className=\"sicon-heart\" />\n </SallaButton>\n )}\n </div>\n )}\n </div>\n </div>\n );\n});\n\nexport const ProductCard = memo(function ProductCard(props: ProductCardProps) {\n const Component = useMemo(() => {\n const hasOverride = registry.getOriginal<ProductCardProps>(PRODUCT_CARD_KEY) !== null;\n if (hasOverride) {\n return registry.resolve<ProductCardProps>(PRODUCT_CARD_KEY);\n }\n return null;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductCardContent {...props} />;\n});\n\nexport default ProductCard;\n","import { SallaSlider } from '@salla.sa/twilight-components-react/slider';\nimport { Suspense, useEffect, useMemo, useState } from 'react';\nimport { registry } from '../ComponentRegistry';\nimport { useTwilight } from '../../providers/TwilightProvider';\nimport { useTranslation } from '../../providers/I18nProvider';\nimport type { Product, ProductImage } from '../../types';\nimport { Image } from '../common/Image';\nimport { ImageModal } from '../modal';\n\nconst PRODUCT_GALLERY_KEY = 'product:gallery';\n\nexport interface ProductGalleryProps {\n product: Product;\n}\n\ntype ImagePreview = { src: string; alt: string };\ntype GalleryMedia = { url: string; type: 'image' | 'video' | '3d-image' };\n\nfunction ProductGalleryContent({ product }: ProductGalleryProps) {\n const { t } = useTranslation();\n const { theme } = useTwilight();\n const sliderId = `details-slider-${product.id}`;\n const objectFit = theme.settings.slider_background_size ?? 'cover';\n\n // Clicking an image opens an in-app lightbox instead of navigating to the CDN URL.\n const [preview, setPreview] = useState<ImagePreview | null>(null);\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => {\n const el = document.getElementById(sliderId);\n if (!el?.parentElement) return;\n const { parentElement, nextSibling } = el;\n parentElement.removeChild(el);\n parentElement.insertBefore(el, nextSibling);\n });\n return () => cancelAnimationFrame(raf);\n }, [sliderId]);\n\n // The product-details API only returns `image` (singular).\n // Fall back so the main image always renders even without the full gallery array.\n const images: ProductImage[] =\n product.images && product.images.length > 0\n ? product.images\n : product.image?.url\n ? [product.image]\n : [];\n\n const hasManyImages = images.length > 1;\n const nativeGallery = images.flatMap<GalleryMedia>((image) => {\n if (image.three_d_image_url) return [{ url: image.three_d_image_url, type: '3d-image' }];\n if (image.video_url) return [{ url: image.video_url, type: 'video' }];\n return image.url ? [{ url: image.url, type: 'image' }] : [];\n });\n const openNativeGallery = () => {\n if (!window.salla?.mobile?.isEnabled?.()) return false;\n window.salla.event.dispatch('mobile::gallery.open', { images: nativeGallery });\n return true;\n };\n\n return (\n <div className=\"sidebar md:sticky top-24 w-full md:!w-2/4 rtl:ml-8 ltr:mr-8 pb-8 md:pb-16 overflow-hidden shrink-0\">\n <SallaSlider\n id={sliderId}\n className=\"details-slider rounded-md image-slider\"\n type=\"thumbs\"\n loop={false}\n autoHeight\n listenToThumbnailsOption\n showThumbsControls={false}\n sliderConfig={{ watchOverflow: true, autoHeight: true }}\n >\n {product.promotion_title && (\n <div className=\"promotion-title\">{product.promotion_title}</div>\n )}\n\n {product.calories && (\n <div className=\"absolute z-[2] top-4 rtl:left-4 ltr:right-4 bg-white shadow-sm flex flex-col justify-center items-center rounded-full w-20 h-20 md:w-24 md:h-24\">\n <span className=\"text-red-500 text-xl leading-none font-bold\">{product.calories}</span>\n <span className=\"text-xs text-gray-500\">\n {t('pages.products.calories', 'Calories')}\n </span>\n </div>\n )}\n\n <div slot=\"items\">\n {images.map((image, index) => (\n <ImageSlide\n key={image.id ?? image.three_d_image_url ?? image.video_url ?? image.url}\n image={image}\n product={product}\n index={index}\n objectFit={objectFit}\n onPreview={setPreview}\n onNativeOpen={openNativeGallery}\n />\n ))}\n </div>\n\n {hasManyImages && (\n <div slot=\"thumbs\">\n {images.map((image, index) => (\n <ThumbSlide\n key={image.id ?? image.three_d_image_url ?? image.video_url ?? image.url}\n image={image}\n index={index}\n />\n ))}\n </div>\n )}\n </SallaSlider>\n\n <Suspense fallback={null}>\n <ImageModal\n isOpen={!!preview}\n onClose={() => setPreview(null)}\n src={preview?.src ?? ''}\n alt={preview?.alt}\n />\n </Suspense>\n </div>\n );\n}\n\nexport function ProductGallery(props: ProductGalleryProps) {\n const Component = useMemo(() => {\n const resolved = registry.resolve<ProductGalleryProps>(PRODUCT_GALLERY_KEY);\n // A theme that seeds the key with this component (register + override) would\n // otherwise recurse into itself when it has not actually overridden anything.\n return resolved === ProductGallery ? null : resolved;\n }, []);\n\n if (Component) {\n return <Component {...props} />;\n }\n\n return <ProductGalleryContent {...props} />;\n}\n\nfunction ImageSlide({\n image,\n product,\n index,\n objectFit,\n onPreview,\n onNativeOpen,\n}: {\n image: ProductImage;\n product: Product;\n index: number;\n objectFit: 'cover' | 'contain';\n onPreview: (preview: ImagePreview) => void;\n onNativeOpen: () => boolean;\n}) {\n const [loaded, setLoaded] = useState(false);\n const isVideo = Boolean(image.video_url);\n\n if (image.three_d_image_url) {\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: model-viewer is an interactive web component.\n <model-viewer\n style={{ minHeight: '500px' }}\n className=\"swiper-slide model-entry w-full h-full\"\n loading=\"lazy\"\n camera-controls\n touch-action=\"pan-y\"\n auto-rotate\n poster={image.url || undefined}\n src={image.three_d_image_url}\n shadow-intensity=\"1\"\n alt={image.alt}\n onClick={onNativeOpen}\n ></model-viewer>\n );\n }\n\n return (\n <a\n data-fslightbox={`product_${product.id}`}\n data-img-id={image.id}\n data-slid-index={index}\n {...(image.video_url ? { 'data-video-src': image.video_url } : {})}\n data-caption={image.alt}\n data-infinite=\"false\"\n data-type={image.video_url ? 'youtube' : 'image'}\n href={image.video_url || image.url}\n // FsLightbox isn't loaded in this React theme, so the bare href would leave the SPA.\n // Open images in an in-app lightbox; let videos open in a new tab.\n {...(isVideo ? { target: '_blank', rel: 'noopener noreferrer' } : {})}\n onClick={(event) => {\n if (onNativeOpen()) {\n event.preventDefault();\n return;\n }\n if (isVideo || !image.url) return;\n event.preventDefault();\n onPreview({ src: image.url, alt: image.alt || product.name });\n }}\n aria-label={product.name}\n className={`swiper-slide magnify-wrapper homeslider__slide ${image.video_url ? 'video-entry' : ''}`}\n >\n <div className={`w-full ${loaded ? '' : 'aspect-square bg-gray-100 animate-pulse'}`}>\n <Image\n id={String(image.id)}\n src={image.url}\n alt={image.alt || product.name}\n className={`h-full w-full object-${objectFit}`}\n aspectRatio=\"1/1\"\n priority={index === 0}\n noWrapper\n onLoad={() => setLoaded(true)}\n />\n </div>\n </a>\n );\n}\n\nfunction ThumbSlide({ image, index }: { image: ProductImage; index: number }) {\n return (\n <div\n className={`slide--one-fourth ${image.video_url ? 'video-entry' : ''} ${image.three_d_image_url ? 'model-entry' : ''}`}\n data-caption={image.alt}\n >\n <Image\n src={image.url}\n alt={image.alt || ''}\n className=\"object-cover w-full h-full bg-gray-100 rounded-md overflow-hidden\"\n title={image.alt}\n priority={index < 5}\n noWrapper\n />\n </div>\n );\n}\n"]}
@@ -388,7 +388,7 @@ function resolveRouteId(tanstackId) {
388
388
  return TANSTACK_ROUTE_ID_MAP[tanstackId] ?? tanstackId;
389
389
  }
390
390
  var LazyNotFoundPage = lazy(
391
- () => import('./not-found-NHQ5TPP7.js').then((m) => ({ default: m.NotFoundPage }))
391
+ () => import('./not-found-DMEPEPOF.js').then((m) => ({ default: m.NotFoundPage }))
392
392
  );
393
393
  function StoreUnavailablePage() {
394
394
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
@@ -713,5 +713,5 @@ function tanstackDocumentAdapter(descriptor) {
713
713
  }
714
714
 
715
715
  export { RouteDocumentSync, TanStackDocumentSync, createRouter, createTwilightRootRoute, rootHead, tanstackDocumentAdapter, useTanstackDocumentAttrs };
716
- //# sourceMappingURL=chunk-EVVKPVHE.js.map
717
- //# sourceMappingURL=chunk-EVVKPVHE.js.map
716
+ //# sourceMappingURL=chunk-H3WBKDQJ.js.map
717
+ //# sourceMappingURL=chunk-H3WBKDQJ.js.map