hey-pharmacist-ecommerce 1.1.16 → 1.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +36 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +36 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/ProductCard.tsx +28 -8
- package/src/components/QuickViewModal.tsx +11 -7
- package/src/screens/CartScreen.tsx +1 -1
- package/src/screens/CheckoutScreen.tsx +2 -2
- package/src/screens/ProductDetailScreen.tsx +8 -8
- package/src/screens/ShopScreen.tsx +3 -3
package/dist/index.js
CHANGED
|
@@ -7301,7 +7301,11 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
7301
7301
|
};
|
|
7302
7302
|
const selectedVariant = product.productVariants[selectedVariantIndex];
|
|
7303
7303
|
selectedVariant.productMedia[selectedSizeIndex];
|
|
7304
|
-
const displayPrice =
|
|
7304
|
+
const displayPrice = selectedVariant.finalPrice;
|
|
7305
|
+
const displayOriginalPrice = selectedVariant.retailPrice;
|
|
7306
|
+
const isDiscounted = selectedVariant.isDiscounted;
|
|
7307
|
+
const discountAmount = selectedVariant.discountAmount;
|
|
7308
|
+
const displayName = selectedVariant.name || product.name;
|
|
7305
7309
|
const handleAddToCart = async () => {
|
|
7306
7310
|
if (!product || !selectedVariant) return;
|
|
7307
7311
|
setIsAddingToCart(true);
|
|
@@ -7338,7 +7342,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
7338
7342
|
className: "bg-white rounded-[32px] max-w-5xl w-full max-h-[90vh] overflow-y-auto",
|
|
7339
7343
|
onClick: (e) => e.stopPropagation()
|
|
7340
7344
|
},
|
|
7341
|
-
/* @__PURE__ */ React.createElement("div", { className: "p-8" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-start justify-between mb-6" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "font-['Poppins',sans-serif] text-[11px] text-primary uppercase tracking-wide font-medium mb-2" }, product.brand, " \u2022 ", product.parentCategories[0].name), /* @__PURE__ */ React.createElement("h2", { className: "font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1px]" },
|
|
7345
|
+
/* @__PURE__ */ React.createElement("div", { className: "p-8" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-start justify-between mb-6" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", { className: "font-['Poppins',sans-serif] text-[11px] text-primary uppercase tracking-wide font-medium mb-2" }, product.brand, " \u2022 ", product.parentCategories[0].name), /* @__PURE__ */ React.createElement("h2", { className: "font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1px]" }, displayName), /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2 mt-2" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-0.5" }, [...Array(5)].map((_, i) => /* @__PURE__ */ React.createElement(
|
|
7342
7346
|
lucideReact.Star,
|
|
7343
7347
|
{
|
|
7344
7348
|
key: i,
|
|
@@ -7358,7 +7362,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
7358
7362
|
alt: product.name,
|
|
7359
7363
|
className: "w-full h-full object-cover"
|
|
7360
7364
|
}
|
|
7361
|
-
), /* @__PURE__ */ React.createElement("div", { className: "absolute top-4 left-4 flex flex-col gap-2" },
|
|
7365
|
+
), /* @__PURE__ */ React.createElement("div", { className: "absolute top-4 left-4 flex flex-col gap-2" }, isDiscounted && /* @__PURE__ */ React.createElement("div", { className: "bg-accent text-white rounded-full px-3 py-1.5" }, /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[11px] uppercase" }, "-", discountAmount, "%")))), selectedVariant.productMedia.length > 1 && /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-4 gap-3" }, selectedVariant.productMedia.map((image, index) => /* @__PURE__ */ React.createElement(
|
|
7362
7366
|
"div",
|
|
7363
7367
|
{
|
|
7364
7368
|
key: index,
|
|
@@ -7373,7 +7377,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
7373
7377
|
className: "w-full h-full object-cover"
|
|
7374
7378
|
}
|
|
7375
7379
|
)
|
|
7376
|
-
)))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-3 mb-4" }, /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[32px] text-accent" }, "$", displayPrice.toFixed(2)),
|
|
7380
|
+
)))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-3 mb-4" }, /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[32px] text-accent" }, "$", displayPrice.toFixed(2)), isDiscounted && /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] text-[20px] text-muted line-through" }, "$", displayOriginalPrice.toFixed(2))), /* @__PURE__ */ React.createElement("div", { className: "mb-6" }, selectedVariant.inventoryCount === 0 ? /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] text-[12px] text-red-500 font-medium" }, "Out of Stock") : selectedVariant.inventoryCount <= 10 ? /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] text-[12px] text-primary font-medium flex items-center gap-1" }, /* @__PURE__ */ React.createElement(lucideReact.Package, { className: "size-3" }), "Only ", selectedVariant.inventoryCount, " left in stock") : /* @__PURE__ */ React.createElement("span", { className: "font-['Poppins',sans-serif] text-[12px] text-green-600 font-medium flex items-center gap-1" }, /* @__PURE__ */ React.createElement(lucideReact.Package, { className: "size-3" }), "In Stock")), /* @__PURE__ */ React.createElement("p", { className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-6" }, /* @__PURE__ */ React.createElement("div", { dangerouslySetInnerHTML: { __html: product.description } })), /* @__PURE__ */ React.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React.createElement("h3", { className: "font-['Poppins',sans-serif] font-semibold text-[13px] text-secondary mb-3" }, "Selected Variant: ", /* @__PURE__ */ React.createElement("span", { className: "font-normal text-muted" }, product.productVariants[selectedVariantIndex].name)), /* @__PURE__ */ React.createElement("div", { className: "flex flex-wrap gap-3" }, product.productVariants.map((variant, index) => /* @__PURE__ */ React.createElement(
|
|
7377
7381
|
"button",
|
|
7378
7382
|
{
|
|
7379
7383
|
key: variant.id,
|
|
@@ -7506,6 +7510,21 @@ function ProductCard({
|
|
|
7506
7510
|
const displayName = React21.useMemo(() => {
|
|
7507
7511
|
return selectedVariant?.name || product.name;
|
|
7508
7512
|
}, [selectedVariant, product.name]);
|
|
7513
|
+
const displayFinalPrice = React21.useMemo(() => {
|
|
7514
|
+
return selectedVariant?.finalPrice ?? product.finalPrice;
|
|
7515
|
+
}, [selectedVariant, product.finalPrice]);
|
|
7516
|
+
const displayPriceBeforeDiscount = React21.useMemo(() => {
|
|
7517
|
+
return selectedVariant?.retailPrice ?? product.priceBeforeDiscount;
|
|
7518
|
+
}, [selectedVariant, product.priceBeforeDiscount]);
|
|
7519
|
+
const displayIsDiscounted = React21.useMemo(() => {
|
|
7520
|
+
return selectedVariant ? selectedVariant.isDiscounted : product.isDiscounted;
|
|
7521
|
+
}, [selectedVariant, product.isDiscounted]);
|
|
7522
|
+
const displayDiscountAmount = React21.useMemo(() => {
|
|
7523
|
+
return selectedVariant ? selectedVariant.discountAmount : product.discountAmount;
|
|
7524
|
+
}, [selectedVariant, product.discountAmount]);
|
|
7525
|
+
const displayInventoryCount = React21.useMemo(() => {
|
|
7526
|
+
return selectedVariant ? selectedVariant.inventoryCount : product.inventoryCount;
|
|
7527
|
+
}, [selectedVariant, product.inventoryCount]);
|
|
7509
7528
|
const imageSource = React21.useMemo(() => {
|
|
7510
7529
|
const src = selectedVariantImage || product.productMedia?.[0]?.file || "/placeholder-product.jpg";
|
|
7511
7530
|
return {
|
|
@@ -7560,15 +7579,15 @@ function ProductCard({
|
|
|
7560
7579
|
},
|
|
7561
7580
|
/* @__PURE__ */ React21__default.default.createElement(lucideReact.Eye, { className: "size-4 text-[#2B4B7C]" })
|
|
7562
7581
|
),
|
|
7563
|
-
|
|
7582
|
+
displayInventoryCount === 0 && /* @__PURE__ */ React21__default.default.createElement("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "bg-white rounded-full px-4 py-2" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[11px] text-[#2B4B7C] uppercase" }, "Out of Stock")))
|
|
7564
7583
|
),
|
|
7565
|
-
/* @__PURE__ */ React21__default.default.createElement("div", { className: "p-4 flex-1 flex flex-col" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "p-0 flex-1 flex flex-col" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1 mb-2 flex-wrap" },
|
|
7584
|
+
/* @__PURE__ */ React21__default.default.createElement("div", { className: "p-4 flex-1 flex flex-col" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "p-0 flex-1 flex flex-col" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1 mb-2 flex-wrap" }, displayIsDiscounted && /* @__PURE__ */ React21__default.default.createElement("span", { className: "bg-[#E67E50] text-white rounded-full px-2 py-0.5 flex items-center gap-1" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[8px] uppercase" }, "-", displayDiscountAmount, "%"))), /* @__PURE__ */ React21__default.default.createElement("div", { className: "mb-1" }, /* @__PURE__ */ React21__default.default.createElement("p", { className: "font-['Poppins',sans-serif] text-xs text-[#5B9BD5] uppercase tracking-wide font-medium" }, product.brand)), /* @__PURE__ */ React21__default.default.createElement("h3", { className: "text-sm font-['Poppins',sans-serif] font-semibold text-[#2B4B7C] mb-3" }, displayName), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1.5 mb-2" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-0.5" }, [...Array(5)].map((_, i) => /* @__PURE__ */ React21__default.default.createElement(
|
|
7566
7585
|
lucideReact.Star,
|
|
7567
7586
|
{
|
|
7568
7587
|
key: i,
|
|
7569
7588
|
className: `size-4 ${i < Math.floor(product.rating ? product.rating : 0) ? "text-[#E67E50] fill-[#E67E50]" : "text-gray-300"}`
|
|
7570
7589
|
}
|
|
7571
|
-
))), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[10px] text-[#676c80]" }, "(", product.reviews?.length || 0, ")")), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1.5 mb-3" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-md text-primary-600" }, "$",
|
|
7590
|
+
))), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[10px] text-[#676c80]" }, "(", product.reviews?.length || 0, ")")), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1.5 mb-3" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-md text-primary-600" }, "$", displayFinalPrice.toFixed(2)), displayIsDiscounted && /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-sm text-[#676c80] line-through" }, "$", formatPrice(displayPriceBeforeDiscount))), variantImages.length > 0 && /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1.5 mb-3" }, variantImages.map((variant, index) => /* @__PURE__ */ React21__default.default.createElement(
|
|
7572
7591
|
"button",
|
|
7573
7592
|
{
|
|
7574
7593
|
key: variant.variantId || index,
|
|
@@ -7620,11 +7639,11 @@ function ProductCard({
|
|
|
7620
7639
|
console.error("Failed to add to cart", error);
|
|
7621
7640
|
}
|
|
7622
7641
|
},
|
|
7623
|
-
disabled: isAddingToCart || variantImages.length > 0 && !selectedVariantId,
|
|
7642
|
+
disabled: isAddingToCart || variantImages.length > 0 && !selectedVariantId || displayInventoryCount === 0,
|
|
7624
7643
|
className: "w-full font-['Poppins',sans-serif] font-medium text-[11px] px-3 py-2 rounded-full bg-[#5B9BD5] text-white hover:bg-[#4a8ac4] hover:shadow-lg transition-all duration-300 flex items-center justify-center gap-1.5 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
7625
7644
|
},
|
|
7626
7645
|
/* @__PURE__ */ React21__default.default.createElement(lucideReact.ShoppingCart, { className: "h-4 w-4" }),
|
|
7627
|
-
|
|
7646
|
+
displayInventoryCount === 0 ? "Out of Stock" : "Add to Cart"
|
|
7628
7647
|
))
|
|
7629
7648
|
), showQuickView && /* @__PURE__ */ React21__default.default.createElement(
|
|
7630
7649
|
QuickViewModal,
|
|
@@ -8469,7 +8488,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8469
8488
|
animate: { opacity: 1, y: 0 },
|
|
8470
8489
|
className: "max-w-4xl mx-auto space-y-6 text-center"
|
|
8471
8490
|
},
|
|
8472
|
-
/* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-center gap-2 mb-4" }, /* @__PURE__ */ React21__default.default.createElement(lucideReact.Star, { className: "h-5 w-5 text-
|
|
8491
|
+
/* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-center gap-2 mb-4" }, /* @__PURE__ */ React21__default.default.createElement(lucideReact.Star, { className: "h-5 w-5 text-primary fill-primary" }), /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-sm font-semibold uppercase tracking-wider text-primary" }, "COMPLETE PHARMACY SHOP")),
|
|
8473
8492
|
/* @__PURE__ */ React21__default.default.createElement("h1", { className: "text-3xl md:text-4xl font-bold text-slate-900 leading-tight" }, "Medical Supplies & Wellness Products"),
|
|
8474
8493
|
/* @__PURE__ */ React21__default.default.createElement("p", { className: "text-base md:text-lg text-slate-600 max-w-2xl mx-auto" }, "From professional scrubs to vitamins, medicines to personal care - everything you need for health and wellness."),
|
|
8475
8494
|
/* @__PURE__ */ React21__default.default.createElement(
|
|
@@ -8491,7 +8510,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8491
8510
|
}
|
|
8492
8511
|
))
|
|
8493
8512
|
)
|
|
8494
|
-
))), /* @__PURE__ */ React21__default.default.createElement("section", { className: "py-8 bg-white" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "
|
|
8513
|
+
))), /* @__PURE__ */ React21__default.default.createElement("section", { className: "py-8 bg-white" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21__default.default.createElement("h2", { className: "text-2xl md:text-3xl font-['Poppins',sans-serif] font-semibold text-secondary mb-6" }, "Shop by Category"), /* @__PURE__ */ React21__default.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4" }, displayCategories.map((category, index) => {
|
|
8495
8514
|
const Icon = getCategoryIcon(category.name ?? "");
|
|
8496
8515
|
const isSelected = categoryFilter === category.id;
|
|
8497
8516
|
return /* @__PURE__ */ React21__default.default.createElement(React21__default.default.Fragment, null, /* @__PURE__ */ React21__default.default.createElement(
|
|
@@ -8726,6 +8745,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8726
8745
|
const variantImages = getVariantImages();
|
|
8727
8746
|
const variantPrice = selectedVariant?.finalPrice || currentVariant?.finalPrice || product?.price || 0;
|
|
8728
8747
|
const variantComparePrice = selectedVariant?.retailPrice || (currentVariant && "retailPrice" in currentVariant ? currentVariant.retailPrice : null) || product?.compareAtPrice;
|
|
8748
|
+
const discount = variantComparePrice && variantPrice && variantComparePrice > variantPrice ? Math.round((variantComparePrice - variantPrice) / variantComparePrice * 100) : 0;
|
|
8729
8749
|
const lastUpdatedLabel = safeFormatDate(
|
|
8730
8750
|
currentVariant && "updatedAt" in currentVariant && currentVariant.updatedAt ? currentVariant.updatedAt : product?.updatedAt
|
|
8731
8751
|
);
|
|
@@ -8870,7 +8890,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8870
8890
|
className: "object-contain"
|
|
8871
8891
|
}
|
|
8872
8892
|
) : null,
|
|
8873
|
-
/* @__PURE__ */ React21__default.default.createElement("div", { className: "absolute top-6 left-6 flex flex-col gap-3" },
|
|
8893
|
+
/* @__PURE__ */ React21__default.default.createElement("div", { className: "absolute top-6 left-6 flex flex-col gap-3" }, discount > 0 && /* @__PURE__ */ React21__default.default.createElement("div", { className: "bg-[#E67E50] text-white rounded-full px-4 py-2" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[12px] uppercase tracking-wide" }, "Save ", discount, "%")))
|
|
8874
8894
|
), variantImages.length > 0 && /* @__PURE__ */ React21__default.default.createElement("div", { className: "grid grid-cols-8 gap-2" }, variantImages.map((image, index) => /* @__PURE__ */ React21__default.default.createElement(
|
|
8875
8895
|
"button",
|
|
8876
8896
|
{
|
|
@@ -8890,13 +8910,13 @@ function ProductDetailScreen({ productId }) {
|
|
|
8890
8910
|
unoptimized: true
|
|
8891
8911
|
}
|
|
8892
8912
|
)
|
|
8893
|
-
)))))), /* @__PURE__ */ React21__default.default.createElement("aside", { className: "space-y-6 lg:sticky lg:top-24" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React21__default.default.createElement("p", { className: "font-['Poppins',sans-serif] text-[12px] text-primary uppercase tracking-wide font-medium mb-2" }, product.brand, " \u2022 ", product.parentCategories?.[0].name), /* @__PURE__ */ React21__default.default.createElement("h1", { className: "text-3xl font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1.5px] mb-3" }, product.name), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1" }, [...Array(5)].map((_, i) => /* @__PURE__ */ React21__default.default.createElement(
|
|
8913
|
+
)))))), /* @__PURE__ */ React21__default.default.createElement("aside", { className: "space-y-6 lg:sticky lg:top-24" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React21__default.default.createElement("p", { className: "font-['Poppins',sans-serif] text-[12px] text-primary uppercase tracking-wide font-medium mb-2" }, product.brand, " \u2022 ", product.parentCategories?.[0].name), /* @__PURE__ */ React21__default.default.createElement("h1", { className: "text-3xl font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1.5px] mb-3" }, selectedVariant?.name || product.name), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-1" }, [...Array(5)].map((_, i) => /* @__PURE__ */ React21__default.default.createElement(
|
|
8894
8914
|
lucideReact.Star,
|
|
8895
8915
|
{
|
|
8896
8916
|
key: i,
|
|
8897
8917
|
className: `size-4 ${i < Math.floor(product.rating) ? "text-[#E67E50] fill-[#E67E50]" : "text-gray-300"}`
|
|
8898
8918
|
}
|
|
8899
|
-
))), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[14px] text-muted" }, product.rating, " (", product.reviewCount ? product.reviewCount : 0, " reviews)")), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-3 mb-6 pb-6 border-b-2 border-gray-100" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[40px] text-[#E67E50]" },
|
|
8919
|
+
))), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[14px] text-muted" }, product.rating, " (", product.reviewCount ? product.reviewCount : 0, " reviews)")), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-3 mb-6 pb-6 border-b-2 border-gray-100" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-bold text-[40px] text-[#E67E50]" }, "$", variantPrice.toFixed(2)), variantComparePrice && variantComparePrice > variantPrice && /* @__PURE__ */ React21__default.default.createElement(React21__default.default.Fragment, null, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[24px] text-muted line-through" }, "$", variantComparePrice.toFixed(2)), /* @__PURE__ */ React21__default.default.createElement("div", { className: "px-3 py-1 rounded-full bg-[#E67E50]/10" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-semibold text-[13px] text-[#E67E50]" }, "Save $", formatPrice(variantComparePrice - variantPrice))))), selectedVariant && /* @__PURE__ */ React21__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-2 mb-2" }, selectedVariant.inventoryStatus === "OUT_OF_STOCK" /* OUTOFSTOCK */ || selectedVariant.inventoryStatus === "LOW_STOCK" /* LOWSTOCK */ ? /* @__PURE__ */ React21__default.default.createElement(React21__default.default.Fragment, null, /* @__PURE__ */ React21__default.default.createElement("div", { className: "size-3 rounded-full bg-red-500" }), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[13px] text-red-600 font-medium" }, "Out of Stock")) : selectedVariant.inventoryCount <= 10 ? /* @__PURE__ */ React21__default.default.createElement(React21__default.default.Fragment, null, /* @__PURE__ */ React21__default.default.createElement("div", { className: "size-3 rounded-full bg-primary animate-pulse" }), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[13px] text-primary font-medium" }, "Only ", selectedVariant.inventoryCount, " left in stock - Order soon!")) : /* @__PURE__ */ React21__default.default.createElement(React21__default.default.Fragment, null, /* @__PURE__ */ React21__default.default.createElement("div", { className: "size-3 rounded-full bg-green-500" }), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[13px] text-green-600 font-medium" }, "In Stock"))), /* @__PURE__ */ React21__default.default.createElement("p", { className: "font-['Poppins',sans-serif] text-[12px] text-muted" }, "SKU: ", selectedVariant?.sku)), product.description && /* @__PURE__ */ React21__default.default.createElement("p", { className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-8" }, /* @__PURE__ */ React21__default.default.createElement("div", { dangerouslySetInnerHTML: { __html: product.description } })), product?.productVariants && product.productVariants.length > 0 && /* @__PURE__ */ React21__default.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React21__default.default.createElement("h3", { className: "font-['Poppins',sans-serif] font-semibold text-[14px] text-secondary mb-3" }, "Select Variant"), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex flex-wrap gap-3" }, product.productVariants.map((variant) => {
|
|
8900
8920
|
const isSelected = selectedVariant?.id === variant.id;
|
|
8901
8921
|
const variantImage = variant.productMedia?.[0]?.file || product.productMedia?.[0]?.file || product.images?.[0] || "/placeholder-product.jpg";
|
|
8902
8922
|
return /* @__PURE__ */ React21__default.default.createElement(
|
|
@@ -9104,7 +9124,7 @@ function CartScreen() {
|
|
|
9104
9124
|
transition: { delay: 0.1 },
|
|
9105
9125
|
className: "space-y-6 lg:sticky lg:top-24 h-fit lg:col-span-1"
|
|
9106
9126
|
},
|
|
9107
|
-
/* @__PURE__ */ React21__default.default.createElement("div", { className: "bg-gradient-to-br from-[#5B9BD5]/10 to-[#2B4B7C]/10 rounded-[24px] p-8 border-2 border-[#5B9BD5]/20 sticky top-24" }, /* @__PURE__ */ React21__default.default.createElement("h2", { className: "font-['Poppins',sans-serif] font-semibold text-secondary mb-6" }, "Order Summary"), /* @__PURE__ */ React21__default.default.createElement("div", { className: "space-y-4 mb-6" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[14px] text-muted" }, "Subtotal (", itemCount, " ", itemCount === 1 ? "item" : "items", ")"), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-semibold text-[14px] text-secondary" }, formatPrice(subtotal))), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-between text-sm" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-gray-600" }, "Shipping"), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-semibold text-green-600" }, "Will be calculated at checkout")), /* @__PURE__ */ React21__default.default.createElement("div", { className: "border-t border-gray-200 pt-4 mt-4" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-lg font-bold text-secondary" }, "Total"), /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-2xl font-bold text-
|
|
9127
|
+
/* @__PURE__ */ React21__default.default.createElement("div", { className: "bg-gradient-to-br from-[#5B9BD5]/10 to-[#2B4B7C]/10 rounded-[24px] p-8 border-2 border-[#5B9BD5]/20 sticky top-24" }, /* @__PURE__ */ React21__default.default.createElement("h2", { className: "font-['Poppins',sans-serif] font-semibold text-secondary mb-6" }, "Order Summary"), /* @__PURE__ */ React21__default.default.createElement("div", { className: "space-y-4 mb-6" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] text-[14px] text-muted" }, "Subtotal (", itemCount, " ", itemCount === 1 ? "item" : "items", ")"), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-['Poppins',sans-serif] font-semibold text-[14px] text-secondary" }, formatPrice(subtotal))), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-between text-sm" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-gray-600" }, "Shipping"), /* @__PURE__ */ React21__default.default.createElement("span", { className: "font-semibold text-green-600" }, "Will be calculated at checkout")), /* @__PURE__ */ React21__default.default.createElement("div", { className: "border-t border-gray-200 pt-4 mt-4" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-lg font-bold text-secondary" }, "Total"), /* @__PURE__ */ React21__default.default.createElement("span", { className: "text-2xl font-bold text-primary" }, formatPrice(total))))), /* @__PURE__ */ React21__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21__default.default.createElement(
|
|
9108
9128
|
"button",
|
|
9109
9129
|
{
|
|
9110
9130
|
type: "submit",
|
|
@@ -9856,7 +9876,7 @@ function CheckoutScreen() {
|
|
|
9856
9876
|
width: 48,
|
|
9857
9877
|
height: 48
|
|
9858
9878
|
}
|
|
9859
|
-
)), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-2 mb-2" }, /* @__PURE__ */ React21__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, rate.provider, " ", rate.servicelevel?.name), isTest && /* @__PURE__ */ React21__default.default.createElement("span", { className: "px-2 py-1 text-xs font-medium bg-
|
|
9879
|
+
)), /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex items-center gap-2 mb-2" }, /* @__PURE__ */ React21__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, rate.provider, " ", rate.servicelevel?.name), isTest && /* @__PURE__ */ React21__default.default.createElement("span", { className: "px-2 py-1 text-xs font-medium bg-primary-100 text-primary-800 rounded-full" }, "TEST")), hasAttributes && /* @__PURE__ */ React21__default.default.createElement("div", { className: "flex flex-wrap gap-2 mb-3" }, rate.attributes.map((attr) => /* @__PURE__ */ React21__default.default.createElement(
|
|
9860
9880
|
"span",
|
|
9861
9881
|
{
|
|
9862
9882
|
key: attr,
|