hey-pharmacist-ecommerce 1.1.7 → 1.1.8
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 +595 -595
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +399 -399
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/AddressFormModal.tsx +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import
|
|
2
|
+
import React21, { createContext, forwardRef, useContext, useEffect, useState, useCallback, useMemo, useRef } from 'react';
|
|
3
3
|
import globalAxios4 from 'axios';
|
|
4
4
|
import { Toaster, toast } from 'sonner';
|
|
5
5
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
@@ -198,7 +198,7 @@ function ThemeProvider({ config, children }) {
|
|
|
198
198
|
root.style.setProperty(`--header-to`, secondaryShades[600]);
|
|
199
199
|
}
|
|
200
200
|
}, [config]);
|
|
201
|
-
return /* @__PURE__ */
|
|
201
|
+
return /* @__PURE__ */ React21.createElement(ThemeContext.Provider, { value: { config } }, children);
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
// src/providers/AuthProvider.tsx
|
|
@@ -2048,7 +2048,7 @@ function AuthProvider({ children }) {
|
|
|
2048
2048
|
updateUser,
|
|
2049
2049
|
refreshUser
|
|
2050
2050
|
};
|
|
2051
|
-
return /* @__PURE__ */
|
|
2051
|
+
return /* @__PURE__ */ React21.createElement(AuthContext.Provider, { value }, children);
|
|
2052
2052
|
}
|
|
2053
2053
|
var AddressesApiAxiosParamCreator = function(configuration) {
|
|
2054
2054
|
return {
|
|
@@ -6844,7 +6844,7 @@ function CartProvider({ children }) {
|
|
|
6844
6844
|
clearCart,
|
|
6845
6845
|
refreshCart
|
|
6846
6846
|
};
|
|
6847
|
-
return /* @__PURE__ */
|
|
6847
|
+
return /* @__PURE__ */ React21.createElement(CartContext.Provider, { value }, children);
|
|
6848
6848
|
}
|
|
6849
6849
|
|
|
6850
6850
|
// src/lib/Apis/wrapper.ts
|
|
@@ -6987,7 +6987,7 @@ function WishlistProvider({ children }) {
|
|
|
6987
6987
|
const refreshWishlist = async () => {
|
|
6988
6988
|
await fetchWishlist();
|
|
6989
6989
|
};
|
|
6990
|
-
return /* @__PURE__ */
|
|
6990
|
+
return /* @__PURE__ */ React21.createElement(
|
|
6991
6991
|
WishlistContext.Provider,
|
|
6992
6992
|
{
|
|
6993
6993
|
value: {
|
|
@@ -7020,7 +7020,7 @@ function BasePathProvider({ basePath = "", children }) {
|
|
|
7020
7020
|
if (path.startsWith("/")) return `${normalized}${path}`;
|
|
7021
7021
|
return `${normalized}/${path}`;
|
|
7022
7022
|
};
|
|
7023
|
-
return /* @__PURE__ */
|
|
7023
|
+
return /* @__PURE__ */ React21.createElement(BasePathContext.Provider, { value: { basePath: normalized, buildPath } }, children);
|
|
7024
7024
|
}
|
|
7025
7025
|
function useBasePath() {
|
|
7026
7026
|
const ctx = useContext(BasePathContext);
|
|
@@ -7031,10 +7031,10 @@ function EcommerceProvider({ config, children, withToaster = true, basePath = ""
|
|
|
7031
7031
|
useEffect(() => {
|
|
7032
7032
|
initializeApiAdapter(config);
|
|
7033
7033
|
}, [config]);
|
|
7034
|
-
const [client] =
|
|
7034
|
+
const [client] = React21.useState(
|
|
7035
7035
|
new QueryClient({ defaultOptions: { queries: { staleTime: 5e3 } } })
|
|
7036
7036
|
);
|
|
7037
|
-
return /* @__PURE__ */
|
|
7037
|
+
return /* @__PURE__ */ React21.createElement(QueryClientProvider, { client }, /* @__PURE__ */ React21.createElement(ThemeProvider, { config }, /* @__PURE__ */ React21.createElement(BasePathProvider, { basePath }, /* @__PURE__ */ React21.createElement(AuthProvider, null, /* @__PURE__ */ React21.createElement(CartProvider, null, /* @__PURE__ */ React21.createElement(WishlistProvider, null, children, withToaster && /* @__PURE__ */ React21.createElement(Toaster, { position: "top-right", richColors: true })))))));
|
|
7038
7038
|
}
|
|
7039
7039
|
|
|
7040
7040
|
// src/lib/utils/format.ts
|
|
@@ -7124,7 +7124,7 @@ function ProductCard({
|
|
|
7124
7124
|
alt: product.name || "Product image"
|
|
7125
7125
|
};
|
|
7126
7126
|
}, [product.productMedia, product.name]);
|
|
7127
|
-
return /* @__PURE__ */
|
|
7127
|
+
return /* @__PURE__ */ React21.createElement(
|
|
7128
7128
|
motion.article,
|
|
7129
7129
|
{
|
|
7130
7130
|
className: "relative group bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-all duration-300 border border-gray-100 hover:border-gray-200 flex h-[420px] flex-col",
|
|
@@ -7137,7 +7137,7 @@ function ProductCard({
|
|
|
7137
7137
|
onClick: handleCardClick,
|
|
7138
7138
|
onKeyDown: handleKeyDown
|
|
7139
7139
|
},
|
|
7140
|
-
/* @__PURE__ */
|
|
7140
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative h-48 w-full overflow-hidden bg-gray-50" }, /* @__PURE__ */ React21.createElement(AnimatePresence, null, !isImageLoaded && /* @__PURE__ */ React21.createElement(
|
|
7141
7141
|
motion.div,
|
|
7142
7142
|
{
|
|
7143
7143
|
className: "absolute inset-0 bg-gray-200 animate-pulse",
|
|
@@ -7145,7 +7145,7 @@ function ProductCard({
|
|
|
7145
7145
|
exit: { opacity: 0 },
|
|
7146
7146
|
transition: { duration: 0.2 }
|
|
7147
7147
|
}
|
|
7148
|
-
)), product.productMedia?.[0]?.file && /* @__PURE__ */
|
|
7148
|
+
)), product.productMedia?.[0]?.file && /* @__PURE__ */ React21.createElement(
|
|
7149
7149
|
Image3,
|
|
7150
7150
|
{
|
|
7151
7151
|
src: product.productMedia?.[0]?.file || "/placeholder-product.jpg",
|
|
@@ -7156,7 +7156,7 @@ function ProductCard({
|
|
|
7156
7156
|
priority: false,
|
|
7157
7157
|
onLoad: handleImageLoad
|
|
7158
7158
|
}
|
|
7159
|
-
), /* @__PURE__ */
|
|
7159
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "absolute top-3 left-3 flex flex-col gap-2 z-10" }, product.isDiscounted && /* @__PURE__ */ React21.createElement(
|
|
7160
7160
|
motion.span,
|
|
7161
7161
|
{
|
|
7162
7162
|
initial: { scale: 0.9, opacity: 0 },
|
|
@@ -7166,7 +7166,7 @@ function ProductCard({
|
|
|
7166
7166
|
"-",
|
|
7167
7167
|
product.discountAmount,
|
|
7168
7168
|
"%"
|
|
7169
|
-
), product.inventoryCount === 0 && /* @__PURE__ */
|
|
7169
|
+
), product.inventoryCount === 0 && /* @__PURE__ */ React21.createElement(
|
|
7170
7170
|
motion.span,
|
|
7171
7171
|
{
|
|
7172
7172
|
initial: { scale: 0.9, opacity: 0 },
|
|
@@ -7174,7 +7174,7 @@ function ProductCard({
|
|
|
7174
7174
|
className: "inline-flex items-center justify-center px-2.5 py-1 rounded-full text-xs font-bold text-white bg-red-600"
|
|
7175
7175
|
},
|
|
7176
7176
|
"Out of Stock"
|
|
7177
|
-
)), showFavoriteButton && /* @__PURE__ */
|
|
7177
|
+
)), showFavoriteButton && /* @__PURE__ */ React21.createElement(
|
|
7178
7178
|
motion.button,
|
|
7179
7179
|
{
|
|
7180
7180
|
type: "button",
|
|
@@ -7184,10 +7184,10 @@ function ProductCard({
|
|
|
7184
7184
|
whileTap: { scale: 0.95 },
|
|
7185
7185
|
"aria-label": isFavorite ? "Remove from wishlist" : "Add to wishlist"
|
|
7186
7186
|
},
|
|
7187
|
-
/* @__PURE__ */
|
|
7187
|
+
/* @__PURE__ */ React21.createElement(Heart, { className: `w-5 h-5 ${isFavorite ? "fill-current" : ""}` })
|
|
7188
7188
|
)),
|
|
7189
|
-
/* @__PURE__ */
|
|
7190
|
-
showFavoriteButton && /* @__PURE__ */
|
|
7189
|
+
/* @__PURE__ */ React21.createElement("div", { className: "absolute top-4 left-4 flex flex-col gap-2" }, product.inventoryCount === 0 && /* @__PURE__ */ React21.createElement("span", { className: "px-3 py-1 rounded-full text-sm font-bold bg-red-100 text-red-800" }, "Out of Stock")),
|
|
7190
|
+
showFavoriteButton && /* @__PURE__ */ React21.createElement(
|
|
7191
7191
|
"button",
|
|
7192
7192
|
{
|
|
7193
7193
|
type: "button",
|
|
@@ -7195,10 +7195,10 @@ function ProductCard({
|
|
|
7195
7195
|
className: `absolute top-2 right-2 p-2 rounded-full transition-colors ${isFavorite ? "text-red-500" : "text-gray-400 hover:text-red-500"}`,
|
|
7196
7196
|
"aria-label": isFavorite ? "Remove from wishlist" : "Add to wishlist"
|
|
7197
7197
|
},
|
|
7198
|
-
/* @__PURE__ */
|
|
7198
|
+
/* @__PURE__ */ React21.createElement(Heart, { className: `w-5 h-5 ${isFavorite ? "fill-current" : ""}` })
|
|
7199
7199
|
),
|
|
7200
|
-
/* @__PURE__ */
|
|
7201
|
-
/* @__PURE__ */
|
|
7200
|
+
/* @__PURE__ */ React21.createElement("div", { className: "p-4" }, product.parentCategories && product.parentCategories?.length > 0 && /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-gray-500 uppercase tracking-wider mb-2" }, product.parentCategories?.map((category) => category?.name).join(", ") || "No categories"), /* @__PURE__ */ React21.createElement("div", { className: "mb-2" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-gray-900 line-clamp-1 group-hover:text-primary-600 transition-colors" }, product.name), product?.sku && /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-gray-400 mt-1" }, "SKU: ", product.sku)), /* @__PURE__ */ React21.createElement("div", { className: "flex items-baseline gap-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React21.createElement("span", { className: "text-2xl font-bold text-gray-900" }, formatPrice(product.finalPrice)), product.inventoryCount > 0 && /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-gray-500" }, product.inventoryCount > 0 ? "In Stock" : "Out of Stock")), product.priceBeforeDiscount && product.priceBeforeDiscount > product.finalPrice && /* @__PURE__ */ React21.createElement("span", { className: "text-sm text-gray-500 line-through" }, formatPrice(product.priceBeforeDiscount)))),
|
|
7201
|
+
/* @__PURE__ */ React21.createElement("div", { className: "mt-auto p-4 pt-0" }, /* @__PURE__ */ React21.createElement(
|
|
7202
7202
|
"button",
|
|
7203
7203
|
{
|
|
7204
7204
|
type: "button",
|
|
@@ -7209,7 +7209,7 @@ function ProductCard({
|
|
|
7209
7209
|
className: `w-full flex items-center justify-center rounded-md px-3 py-2 text-sm font-medium bg-primary-600 hover:bg-primary-700 text-white`
|
|
7210
7210
|
},
|
|
7211
7211
|
"View Product"
|
|
7212
|
-
), showFavoriteButton && /* @__PURE__ */
|
|
7212
|
+
), showFavoriteButton && /* @__PURE__ */ React21.createElement(
|
|
7213
7213
|
"button",
|
|
7214
7214
|
{
|
|
7215
7215
|
type: "button",
|
|
@@ -7217,7 +7217,7 @@ function ProductCard({
|
|
|
7217
7217
|
className: "mt-2 w-full flex items-center justify-center rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-primary-600 hover:bg-gray-50",
|
|
7218
7218
|
"aria-label": isFavorite ? "Remove from wishlist" : "Add to wishlist"
|
|
7219
7219
|
},
|
|
7220
|
-
/* @__PURE__ */
|
|
7220
|
+
/* @__PURE__ */ React21.createElement(
|
|
7221
7221
|
Heart,
|
|
7222
7222
|
{
|
|
7223
7223
|
className: `mr-2 h-4 w-4 ${isFavorite ? "fill-red-500 text-red-500" : "text-primary-600"}`
|
|
@@ -7228,13 +7228,13 @@ function ProductCard({
|
|
|
7228
7228
|
);
|
|
7229
7229
|
}
|
|
7230
7230
|
function Skeleton({ className = "" }) {
|
|
7231
|
-
return /* @__PURE__ */
|
|
7231
|
+
return /* @__PURE__ */ React21.createElement("div", { className: `animate-pulse bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] rounded ${className}` });
|
|
7232
7232
|
}
|
|
7233
7233
|
function ProductCardSkeleton() {
|
|
7234
|
-
return /* @__PURE__ */
|
|
7234
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "bg-white rounded-2xl overflow-hidden shadow-sm" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-64 w-full" }), /* @__PURE__ */ React21.createElement("div", { className: "p-4 space-y-3" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-6 w-3/4" }), /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-4 w-1/2" }), /* @__PURE__ */ React21.createElement("div", { className: "flex justify-between items-center pt-2" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-8 w-24" }), /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-10 w-10 rounded-full" }))));
|
|
7235
7235
|
}
|
|
7236
7236
|
function OrderCardSkeleton() {
|
|
7237
|
-
return /* @__PURE__ */
|
|
7237
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "bg-white rounded-2xl p-6 shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "flex justify-between items-start mb-4" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-2 flex-1" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-6 w-32" }), /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-4 w-48" })), /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-6 w-20 rounded-full" })), /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-4 w-full" }), /* @__PURE__ */ React21.createElement(Skeleton, { className: "h-4 w-2/3" })));
|
|
7238
7238
|
}
|
|
7239
7239
|
var MotionDiv = dynamic(() => import('framer-motion').then((mod) => mod.motion.div), {
|
|
7240
7240
|
ssr: false
|
|
@@ -7260,14 +7260,14 @@ function Button({
|
|
|
7260
7260
|
md: "px-6 py-3 text-base",
|
|
7261
7261
|
lg: "px-8 py-4 text-lg"
|
|
7262
7262
|
};
|
|
7263
|
-
return /* @__PURE__ */
|
|
7263
|
+
return /* @__PURE__ */ React21.createElement(
|
|
7264
7264
|
MotionDiv,
|
|
7265
7265
|
{
|
|
7266
7266
|
whileHover: { scale: 1.02 },
|
|
7267
7267
|
whileTap: { scale: 0.98 },
|
|
7268
7268
|
className: "inline-block"
|
|
7269
7269
|
},
|
|
7270
|
-
/* @__PURE__ */
|
|
7270
|
+
/* @__PURE__ */ React21.createElement(
|
|
7271
7271
|
"button",
|
|
7272
7272
|
{
|
|
7273
7273
|
className: `${baseStyles} ${variants[variant]} ${sizes[size]} ${className}`,
|
|
@@ -7276,18 +7276,18 @@ function Button({
|
|
|
7276
7276
|
"aria-busy": isLoading,
|
|
7277
7277
|
...props
|
|
7278
7278
|
},
|
|
7279
|
-
isLoading ? /* @__PURE__ */
|
|
7279
|
+
isLoading ? /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("svg", { className: "animate-spin h-5 w-5", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true" }, /* @__PURE__ */ React21.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React21.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })), "Loading...") : children
|
|
7280
7280
|
)
|
|
7281
7281
|
);
|
|
7282
7282
|
}
|
|
7283
7283
|
|
|
7284
7284
|
// src/components/EmptyState.tsx
|
|
7285
7285
|
function EmptyState({ icon: Icon, title, description, actionLabel, onAction }) {
|
|
7286
|
-
return /* @__PURE__ */
|
|
7286
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col items-center justify-center py-16 px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "w-24 h-24 bg-gray-100 rounded-full flex items-center justify-center mb-6" }, /* @__PURE__ */ React21.createElement(Icon, { className: "w-12 h-12 text-gray-400" })), /* @__PURE__ */ React21.createElement("h3", { className: "text-2xl font-bold text-gray-900 mb-2" }, title), /* @__PURE__ */ React21.createElement("p", { className: "text-gray-600 text-center max-w-md mb-8" }, description), actionLabel && onAction && /* @__PURE__ */ React21.createElement(Button, { onClick: onAction }, actionLabel));
|
|
7287
7287
|
}
|
|
7288
7288
|
var Input = forwardRef(
|
|
7289
7289
|
({ label, error, helperText, className = "", ...props }, ref) => {
|
|
7290
|
-
return /* @__PURE__ */
|
|
7290
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "w-full" }, label && /* @__PURE__ */ React21.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, label), /* @__PURE__ */ React21.createElement(
|
|
7291
7291
|
"input",
|
|
7292
7292
|
{
|
|
7293
7293
|
ref,
|
|
@@ -7301,7 +7301,7 @@ var Input = forwardRef(
|
|
|
7301
7301
|
`,
|
|
7302
7302
|
...props
|
|
7303
7303
|
}
|
|
7304
|
-
), error && /* @__PURE__ */
|
|
7304
|
+
), error && /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-sm text-red-600" }, error), helperText && !error && /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-sm text-gray-500" }, helperText));
|
|
7305
7305
|
}
|
|
7306
7306
|
);
|
|
7307
7307
|
Input.displayName = "Input";
|
|
@@ -7863,7 +7863,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7863
7863
|
]);
|
|
7864
7864
|
const hasActiveFilters = activeFilterChips.length > 0;
|
|
7865
7865
|
const isCustomPriceDirty = customPrice.min.trim() !== "" || customPrice.max.trim() !== "";
|
|
7866
|
-
const renderFiltersPanel = () => /* @__PURE__ */
|
|
7866
|
+
const renderFiltersPanel = () => /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "space-y-8" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-8" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-start justify-between gap-3" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, "Refine results"), /* @__PURE__ */ React21.createElement("p", { className: "mt-1 text-sm text-gray-500" }, "Filter by category, price, and availability to find the perfect fit faster.")), hasActiveFilters && /* @__PURE__ */ React21.createElement(
|
|
7867
7867
|
"button",
|
|
7868
7868
|
{
|
|
7869
7869
|
type: "button",
|
|
@@ -7871,10 +7871,10 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7871
7871
|
className: "text-sm font-semibold text-primary-600 hover:text-primary-700"
|
|
7872
7872
|
},
|
|
7873
7873
|
"Clear all"
|
|
7874
|
-
)), /* @__PURE__ */
|
|
7874
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement("h4", { className: "text-xs font-semibold uppercase tracking-[0.2em] text-gray-500" }, "Categories"), /* @__PURE__ */ React21.createElement("div", { className: "space-y-2" }, sortedCategories.length === 0 && /* @__PURE__ */ React21.createElement("span", { className: "text-sm text-gray-500" }, "No categories available yet."), sortedCategories.map((category) => {
|
|
7875
7875
|
const isCategoryActive = categoryFilter === category.id;
|
|
7876
7876
|
const isExpanded = !!expandedCategories[category.id];
|
|
7877
|
-
return /* @__PURE__ */
|
|
7877
|
+
return /* @__PURE__ */ React21.createElement("div", { key: category.id, className: "rounded-xl border-gray-100 bg-white/50" }, /* @__PURE__ */ React21.createElement(
|
|
7878
7878
|
"div",
|
|
7879
7879
|
{
|
|
7880
7880
|
role: "button",
|
|
@@ -7885,8 +7885,8 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7885
7885
|
},
|
|
7886
7886
|
className: `flex w-full items-center justify-between rounded-xl px-3 py-2 text-sm font-medium transition ${isCategoryActive ? "text-primary-700 bg-primary-50" : "text-gray-700 hover:text-primary-700 hover:bg-primary-50/50"}`
|
|
7887
7887
|
},
|
|
7888
|
-
/* @__PURE__ */
|
|
7889
|
-
/* @__PURE__ */
|
|
7888
|
+
/* @__PURE__ */ React21.createElement("span", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("span", { className: "font-medium" }, category.name), category.productCount > 0 && /* @__PURE__ */ React21.createElement("span", { className: `ml-1 rounded-full bg-gray-100 px-2 py-0.5 text-xs ${isCategoryActive ? "text-primary-700" : "text-gray-500"}` }, category.productCount)),
|
|
7889
|
+
/* @__PURE__ */ React21.createElement(
|
|
7890
7890
|
"button",
|
|
7891
7891
|
{
|
|
7892
7892
|
type: "button",
|
|
@@ -7898,11 +7898,11 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7898
7898
|
className: "rounded-md p-1 hover:bg-gray-100",
|
|
7899
7899
|
"aria-label": isExpanded ? "Collapse" : "Expand"
|
|
7900
7900
|
},
|
|
7901
|
-
/* @__PURE__ */
|
|
7901
|
+
/* @__PURE__ */ React21.createElement(ChevronDown, { className: `h-4 w-4 transition-transform ${isExpanded ? "rotate-180 text-primary-600" : "rotate-0 text-gray-400"}` })
|
|
7902
7902
|
)
|
|
7903
|
-
), isExpanded && Array.isArray(category.categorySubCategories) && category.categorySubCategories.length > 0 && /* @__PURE__ */
|
|
7903
|
+
), isExpanded && Array.isArray(category.categorySubCategories) && category.categorySubCategories.length > 0 && /* @__PURE__ */ React21.createElement("div", { className: "mt-1 border-gray-100 px-2 pb-2 pl-4" }, /* @__PURE__ */ React21.createElement("div", { className: "divide-y divide-gray-100" }, category.categorySubCategories.map((sub) => {
|
|
7904
7904
|
const isSubActive = subCategoryFilter === sub.id;
|
|
7905
|
-
return /* @__PURE__ */
|
|
7905
|
+
return /* @__PURE__ */ React21.createElement(
|
|
7906
7906
|
"button",
|
|
7907
7907
|
{
|
|
7908
7908
|
key: sub.id,
|
|
@@ -7913,9 +7913,9 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7913
7913
|
sub.name
|
|
7914
7914
|
);
|
|
7915
7915
|
}))));
|
|
7916
|
-
}))))), /* @__PURE__ */
|
|
7916
|
+
}))))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React21.createElement("h4", { className: "text-xs font-semibold uppercase tracking-[0.2em] text-gray-500" }, "Price"), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-2" }, priceRanges.map((range) => {
|
|
7917
7917
|
const isActive = selectedPriceRange === range.value;
|
|
7918
|
-
return /* @__PURE__ */
|
|
7918
|
+
return /* @__PURE__ */ React21.createElement(
|
|
7919
7919
|
"button",
|
|
7920
7920
|
{
|
|
7921
7921
|
type: "button",
|
|
@@ -7925,7 +7925,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7925
7925
|
},
|
|
7926
7926
|
range.label
|
|
7927
7927
|
);
|
|
7928
|
-
})), /* @__PURE__ */
|
|
7928
|
+
})), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-2 gap-3" }, /* @__PURE__ */ React21.createElement(
|
|
7929
7929
|
Input,
|
|
7930
7930
|
{
|
|
7931
7931
|
type: "number",
|
|
@@ -7934,7 +7934,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7934
7934
|
value: customPrice.min,
|
|
7935
7935
|
onChange: (event) => setCustomPrice((current) => ({ ...current, min: event.target.value }))
|
|
7936
7936
|
}
|
|
7937
|
-
), /* @__PURE__ */
|
|
7937
|
+
), /* @__PURE__ */ React21.createElement(
|
|
7938
7938
|
Input,
|
|
7939
7939
|
{
|
|
7940
7940
|
type: "number",
|
|
@@ -7943,7 +7943,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7943
7943
|
value: customPrice.max,
|
|
7944
7944
|
onChange: (event) => setCustomPrice((current) => ({ ...current, max: event.target.value }))
|
|
7945
7945
|
}
|
|
7946
|
-
)), /* @__PURE__ */
|
|
7946
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
7947
7947
|
"button",
|
|
7948
7948
|
{
|
|
7949
7949
|
type: "button",
|
|
@@ -7952,48 +7952,48 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
7952
7952
|
className: "w-full rounded-xl border border-primary-500 bg-primary-500/10 px-4 py-2.5 text-sm font-semibold text-primary-700 transition hover:bg-primary-500/20 disabled:cursor-not-allowed disabled:border-gray-200 disabled:text-gray-400"
|
|
7953
7953
|
},
|
|
7954
7954
|
"Apply price range"
|
|
7955
|
-
)), /* @__PURE__ */
|
|
7955
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement("h4", { className: "text-xs font-semibold uppercase tracking-[0.2em] text-gray-500" }, "Availability"), /* @__PURE__ */ React21.createElement(
|
|
7956
7956
|
"button",
|
|
7957
7957
|
{
|
|
7958
7958
|
type: "button",
|
|
7959
7959
|
onClick: handleToggleStock,
|
|
7960
7960
|
className: `flex w-full items-center justify-between rounded-xl border px-4 py-3 text-sm font-medium transition ${inStockOnly ? "border-primary-500 bg-primary-50 text-primary-700" : "border-gray-200 bg-white text-gray-600 hover:border-primary-300 hover:text-primary-600"}`
|
|
7961
7961
|
},
|
|
7962
|
-
/* @__PURE__ */
|
|
7963
|
-
/* @__PURE__ */
|
|
7964
|
-
), /* @__PURE__ */
|
|
7962
|
+
/* @__PURE__ */ React21.createElement("span", null, "In stock only"),
|
|
7963
|
+
/* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4 text-primary-500" })
|
|
7964
|
+
), /* @__PURE__ */ React21.createElement(
|
|
7965
7965
|
"button",
|
|
7966
7966
|
{
|
|
7967
7967
|
type: "button",
|
|
7968
7968
|
onClick: handleToggleNewArrivals,
|
|
7969
7969
|
className: `mt-2 flex w-full items-center justify-between rounded-xl border px-4 py-3 text-sm font-medium transition ${newArrivals ? "border-secondary-500 bg-secondary-50 text-secondary-700" : "border-gray-200 bg-white text-gray-600 hover:border-secondary-300 hover:text-secondary-600"}`
|
|
7970
7970
|
},
|
|
7971
|
-
/* @__PURE__ */
|
|
7972
|
-
/* @__PURE__ */
|
|
7971
|
+
/* @__PURE__ */ React21.createElement("span", null, "New arrivals (last 30 days)"),
|
|
7972
|
+
/* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4 text-secondary-500" })
|
|
7973
7973
|
))));
|
|
7974
|
-
return /* @__PURE__ */
|
|
7974
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white" }, /* @__PURE__ */ React21.createElement(
|
|
7975
7975
|
"div",
|
|
7976
7976
|
{
|
|
7977
7977
|
className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]",
|
|
7978
7978
|
"aria-hidden": "true"
|
|
7979
7979
|
}
|
|
7980
|
-
), /* @__PURE__ */
|
|
7980
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_bottom_right,_rgba(94,234,212,0.35),_transparent_55%)] opacity-60" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-24" }, /* @__PURE__ */ React21.createElement(
|
|
7981
7981
|
motion.div,
|
|
7982
7982
|
{
|
|
7983
7983
|
initial: { opacity: 0, y: 24 },
|
|
7984
7984
|
animate: { opacity: 1, y: 0 },
|
|
7985
7985
|
className: "max-w-3xl space-y-8 text-center md:mx-auto md:text-left"
|
|
7986
7986
|
},
|
|
7987
|
-
/* @__PURE__ */
|
|
7988
|
-
/* @__PURE__ */
|
|
7989
|
-
/* @__PURE__ */
|
|
7990
|
-
/* @__PURE__ */
|
|
7987
|
+
/* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/10 px-4 py-2 text-sm font-semibold tracking-wide text-white/80 backdrop-blur" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4" }), "Wellness products, curated for you"),
|
|
7988
|
+
/* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold leading-tight md:text-6xl" }, "Find pharmacy favorites crafted to keep your family thriving"),
|
|
7989
|
+
/* @__PURE__ */ React21.createElement("p", { className: "text-lg text-white/80 md:text-xl" }, "Explore a modern storefront with real-time inventory, smart filters, and rich product details designed to make healthier choices easier."),
|
|
7990
|
+
/* @__PURE__ */ React21.createElement(
|
|
7991
7991
|
"form",
|
|
7992
7992
|
{
|
|
7993
7993
|
onSubmit: handleSearch,
|
|
7994
7994
|
className: "mx-auto max-w-2xl md:mx-0"
|
|
7995
7995
|
},
|
|
7996
|
-
/* @__PURE__ */
|
|
7996
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React21.createElement(
|
|
7997
7997
|
"input",
|
|
7998
7998
|
{
|
|
7999
7999
|
type: "search",
|
|
@@ -8004,17 +8004,17 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8004
8004
|
className: "flex h-12 w-full rounded-xl border border-white/20 bg-white/10 px-4 py-2 pr-14 text-lg text-white placeholder-white/60 shadow-2xl shadow-primary-900/20 backdrop-blur focus:border-white/30 focus:outline-none focus:ring-2 focus:ring-white/20 disabled:opacity-50",
|
|
8005
8005
|
disabled: isSearching
|
|
8006
8006
|
}
|
|
8007
|
-
), /* @__PURE__ */
|
|
8007
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8008
8008
|
"button",
|
|
8009
8009
|
{
|
|
8010
8010
|
type: "submit",
|
|
8011
8011
|
className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-xl bg-white/20 p-3 text-white transition hover:bg-white/30 disabled:opacity-50",
|
|
8012
8012
|
disabled: !searchQuery.trim() || isSearching
|
|
8013
8013
|
},
|
|
8014
|
-
isSearching ? /* @__PURE__ */
|
|
8014
|
+
isSearching ? /* @__PURE__ */ React21.createElement("div", { className: "h-5 w-5 animate-spin rounded-full border-2 border-white border-t-transparent" }) : /* @__PURE__ */ React21.createElement(Search, { className: "h-5 w-5" })
|
|
8015
8015
|
))
|
|
8016
8016
|
)
|
|
8017
|
-
), /* @__PURE__ */
|
|
8017
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8018
8018
|
motion.div,
|
|
8019
8019
|
{
|
|
8020
8020
|
initial: { opacity: 0, y: 24 },
|
|
@@ -8022,7 +8022,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8022
8022
|
transition: { delay: 0.15 },
|
|
8023
8023
|
className: "mt-12 flex flex-col gap-6 rounded-3xl border border-white/20 bg-white/10 p-6 backdrop-blur md:flex-row md:items-center md:justify-between"
|
|
8024
8024
|
},
|
|
8025
|
-
/* @__PURE__ */
|
|
8025
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.3em] text-white/60" }, "Explore popular searches"), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-2" }, quickSearches.map((term) => /* @__PURE__ */ React21.createElement(
|
|
8026
8026
|
"button",
|
|
8027
8027
|
{
|
|
8028
8028
|
key: term,
|
|
@@ -8032,7 +8032,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8032
8032
|
},
|
|
8033
8033
|
term
|
|
8034
8034
|
)))),
|
|
8035
|
-
topCategories.length > 0 && /* @__PURE__ */
|
|
8035
|
+
topCategories.length > 0 && /* @__PURE__ */ React21.createElement("div", { className: "space-y-3 md:text-right" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.3em] text-white/60" }, "Trending categories"), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap justify-start gap-2 md:justify-end" }, topCategories.map((category) => /* @__PURE__ */ React21.createElement(
|
|
8036
8036
|
"button",
|
|
8037
8037
|
{
|
|
8038
8038
|
key: category.id,
|
|
@@ -8042,9 +8042,9 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8042
8042
|
},
|
|
8043
8043
|
category.name
|
|
8044
8044
|
))))
|
|
8045
|
-
), /* @__PURE__ */
|
|
8045
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "mt-10 grid gap-4 md:grid-cols-3" }, insightCards.map((card, index) => {
|
|
8046
8046
|
const Icon = card.icon;
|
|
8047
|
-
return /* @__PURE__ */
|
|
8047
|
+
return /* @__PURE__ */ React21.createElement(
|
|
8048
8048
|
motion.div,
|
|
8049
8049
|
{
|
|
8050
8050
|
key: card.id,
|
|
@@ -8057,10 +8057,10 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8057
8057
|
"aria-pressed": card.id === "new" ? newArrivals ? "true" : "false" : void 0,
|
|
8058
8058
|
title: card.id === "new" ? newArrivals ? "Filter active: showing products from the last 30 days" : "Click to filter products from the last 30 days" : void 0
|
|
8059
8059
|
},
|
|
8060
|
-
/* @__PURE__ */
|
|
8061
|
-
/* @__PURE__ */
|
|
8060
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.3em] text-white/60" }, card.label), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-3xl font-semibold text-white" }, card.value)), /* @__PURE__ */ React21.createElement("span", { className: "rounded-full bg-white/20 p-3 text-white" }, /* @__PURE__ */ React21.createElement(Icon, { className: "h-5 w-5" }))),
|
|
8061
|
+
/* @__PURE__ */ React21.createElement("p", { className: "mt-3 text-sm text-white/70" }, card.helper)
|
|
8062
8062
|
);
|
|
8063
|
-
})))), /* @__PURE__ */
|
|
8063
|
+
})))), /* @__PURE__ */ React21.createElement("div", { className: "relative z-10 -mt-12 pb-16" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-8 lg:flex-row" }, /* @__PURE__ */ React21.createElement("aside", { className: "hidden w-72 flex-shrink-0 lg:block" }, /* @__PURE__ */ React21.createElement("div", { className: "sticky top-24 rounded-3xl border border-gray-100 bg-white p-6 shadow-xl shadow-gray-200/40" }, renderFiltersPanel())), /* @__PURE__ */ React21.createElement("main", { className: "flex-1 space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-gray-100 bg-white p-6 shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h2", { className: "text-2xl font-bold text-gray-900" }, "All products"), /* @__PURE__ */ React21.createElement("p", { className: "mt-1 text-sm text-gray-500" }, "Browse a pharmacy-grade catalogue with smart merchandising and modern UI.")), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3 md:flex-row md:items-center" }, /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(ArrowUpDown, { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }), /* @__PURE__ */ React21.createElement(
|
|
8064
8064
|
"select",
|
|
8065
8065
|
{
|
|
8066
8066
|
value: sortOption,
|
|
@@ -8069,11 +8069,11 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8069
8069
|
},
|
|
8070
8070
|
className: "appearance-none rounded-xl border border-gray-200 bg-white py-2.5 pl-10 pr-9 text-sm font-medium text-gray-700 shadow-sm transition focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/30"
|
|
8071
8071
|
},
|
|
8072
|
-
/* @__PURE__ */
|
|
8073
|
-
/* @__PURE__ */
|
|
8074
|
-
/* @__PURE__ */
|
|
8075
|
-
/* @__PURE__ */
|
|
8076
|
-
), /* @__PURE__ */
|
|
8072
|
+
/* @__PURE__ */ React21.createElement("option", { value: "featured" }, "Featured products"),
|
|
8073
|
+
/* @__PURE__ */ React21.createElement("option", { value: "price-low-high" }, "Price: low to high"),
|
|
8074
|
+
/* @__PURE__ */ React21.createElement("option", { value: "price-high-low" }, "Price: high to low"),
|
|
8075
|
+
/* @__PURE__ */ React21.createElement("option", { value: "newest" }, "Newest arrivals")
|
|
8076
|
+
), /* @__PURE__ */ React21.createElement(ChevronDown, { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" })), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center rounded-xl border border-gray-200 bg-white shadow-sm" }, /* @__PURE__ */ React21.createElement(
|
|
8077
8077
|
"button",
|
|
8078
8078
|
{
|
|
8079
8079
|
type: "button",
|
|
@@ -8081,9 +8081,9 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8081
8081
|
className: `flex items-center gap-2 rounded-l-xl px-4 py-2 text-sm font-medium transition ${viewMode === "grid" ? "bg-primary-50 text-primary-600" : "text-gray-500 hover:text-gray-700"}`,
|
|
8082
8082
|
"aria-pressed": viewMode === "grid"
|
|
8083
8083
|
},
|
|
8084
|
-
/* @__PURE__ */
|
|
8084
|
+
/* @__PURE__ */ React21.createElement(LayoutGrid, { className: "h-4 w-4" }),
|
|
8085
8085
|
"Grid"
|
|
8086
|
-
), /* @__PURE__ */
|
|
8086
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8087
8087
|
"button",
|
|
8088
8088
|
{
|
|
8089
8089
|
type: "button",
|
|
@@ -8091,19 +8091,19 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8091
8091
|
className: `flex items-center gap-2 rounded-r-xl px-4 py-2 text-sm font-medium transition ${viewMode === "list" ? "bg-primary-50 text-primary-600" : "text-gray-500 hover:text-gray-700"}`,
|
|
8092
8092
|
"aria-pressed": viewMode === "list"
|
|
8093
8093
|
},
|
|
8094
|
-
/* @__PURE__ */
|
|
8094
|
+
/* @__PURE__ */ React21.createElement(LayoutList, { className: "h-4 w-4" }),
|
|
8095
8095
|
"List"
|
|
8096
|
-
)))), /* @__PURE__ */
|
|
8096
|
+
)))), /* @__PURE__ */ React21.createElement("div", { className: "mt-4 md:hidden" }, /* @__PURE__ */ React21.createElement(
|
|
8097
8097
|
Button,
|
|
8098
8098
|
{
|
|
8099
8099
|
variant: "outline",
|
|
8100
8100
|
className: "w-full",
|
|
8101
8101
|
onClick: () => setShowFilters(true)
|
|
8102
8102
|
},
|
|
8103
|
-
/* @__PURE__ */
|
|
8103
|
+
/* @__PURE__ */ React21.createElement(SlidersHorizontal, { className: "h-5 w-5" }),
|
|
8104
8104
|
"Filters",
|
|
8105
|
-
hasActiveFilters && /* @__PURE__ */
|
|
8106
|
-
)), hasActiveFilters && /* @__PURE__ */
|
|
8105
|
+
hasActiveFilters && /* @__PURE__ */ React21.createElement("span", { className: "ml-2 rounded-full bg-primary-600 px-2 py-0.5 text-xs font-semibold text-white" }, activeFilterChips.length)
|
|
8106
|
+
)), hasActiveFilters && /* @__PURE__ */ React21.createElement("div", { className: "mt-6 flex flex-wrap items-center gap-2 border-t border-gray-100 pt-4" }, activeFilterChips.map((chip) => /* @__PURE__ */ React21.createElement(
|
|
8107
8107
|
"button",
|
|
8108
8108
|
{
|
|
8109
8109
|
key: chip.key,
|
|
@@ -8112,8 +8112,8 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8112
8112
|
className: "group flex items-center gap-2 rounded-full bg-primary-50 px-3 py-1.5 text-sm font-medium text-primary-700 transition hover:bg-primary-100"
|
|
8113
8113
|
},
|
|
8114
8114
|
chip.label,
|
|
8115
|
-
/* @__PURE__ */
|
|
8116
|
-
)), /* @__PURE__ */
|
|
8115
|
+
/* @__PURE__ */ React21.createElement(X, { className: "h-4 w-4 text-primary-500 group-hover:text-primary-700" })
|
|
8116
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
8117
8117
|
"button",
|
|
8118
8118
|
{
|
|
8119
8119
|
type: "button",
|
|
@@ -8121,7 +8121,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8121
8121
|
className: "text-sm font-semibold text-gray-500 hover:text-gray-700"
|
|
8122
8122
|
},
|
|
8123
8123
|
"Reset all"
|
|
8124
|
-
))), /* @__PURE__ */
|
|
8124
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-gray-100 bg-white p-6 shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3 text-sm text-gray-600 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement("span", null, isLoading ? "Loading products..." : `Showing ${displayedProducts.length} of ${pagination.total || displayedProducts.length} products`), /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 text-gray-400" }, /* @__PURE__ */ React21.createElement(Clock, { className: "h-4 w-4" }), "Updated a moment ago")), /* @__PURE__ */ React21.createElement("div", { className: "mt-6" }, isLoading ? /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-3" }, Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ React21.createElement(ProductCardSkeleton, { key: index }))) : displayedProducts.length > 0 ? viewMode === "grid" ? /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-3" }, displayedProducts.map((product) => /* @__PURE__ */ React21.createElement("div", { key: product.id, className: "h-full" }, /* @__PURE__ */ React21.createElement(
|
|
8125
8125
|
ProductCard,
|
|
8126
8126
|
{
|
|
8127
8127
|
product,
|
|
@@ -8130,11 +8130,11 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8130
8130
|
router.push(buildPath(`/products/${item.id}?product=${productData}`));
|
|
8131
8131
|
}
|
|
8132
8132
|
}
|
|
8133
|
-
)))) : /* @__PURE__ */
|
|
8133
|
+
)))) : /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, displayedProducts.map((product) => {
|
|
8134
8134
|
product.priceBeforeDiscount && product.priceBeforeDiscount > product.finalPrice ? Math.round(
|
|
8135
8135
|
(product.priceBeforeDiscount - product.finalPrice) / product.priceBeforeDiscount * 100
|
|
8136
8136
|
) : 0;
|
|
8137
|
-
return /* @__PURE__ */
|
|
8137
|
+
return /* @__PURE__ */ React21.createElement(
|
|
8138
8138
|
motion.div,
|
|
8139
8139
|
{
|
|
8140
8140
|
key: product.id,
|
|
@@ -8142,7 +8142,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8142
8142
|
className: "group flex cursor-pointer flex-col gap-6 rounded-2xl border border-gray-100 bg-white p-5 shadow-sm transition hover:shadow-xl md:flex-row md:items-start",
|
|
8143
8143
|
onClick: () => router.push(buildPath(`/products/${product.id}`))
|
|
8144
8144
|
},
|
|
8145
|
-
/* @__PURE__ */
|
|
8145
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative h-48 w-full overflow-hidden rounded-2xl bg-gray-100 md:h-40 md:w-40" }, /* @__PURE__ */ React21.createElement(
|
|
8146
8146
|
Image3,
|
|
8147
8147
|
{
|
|
8148
8148
|
src: product.productMedia[0]?.file || "/placeholder-product.jpg",
|
|
@@ -8151,15 +8151,15 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8151
8151
|
className: "object-cover transition duration-500 group-hover:scale-105"
|
|
8152
8152
|
}
|
|
8153
8153
|
)),
|
|
8154
|
-
/* @__PURE__ */
|
|
8154
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex-1 space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-2 text-xs font-semibold uppercase tracking-wide text-primary-600" }, product.parentCategories.length > 0 && /* @__PURE__ */ React21.createElement("span", { className: "rounded-full bg-primary-50 px-3 py-1 text-primary-700" }, product.parentCategories.map((category) => category?.name).join(", ")), product.tags?.slice(0, 3).map((tag) => /* @__PURE__ */ React21.createElement(
|
|
8155
8155
|
"span",
|
|
8156
8156
|
{
|
|
8157
8157
|
key: tag,
|
|
8158
8158
|
className: "rounded-full bg-slate-100 px-3 py-1 text-gray-600"
|
|
8159
8159
|
},
|
|
8160
8160
|
tag
|
|
8161
|
-
))), /* @__PURE__ */
|
|
8162
|
-
/* @__PURE__ */
|
|
8161
|
+
))), /* @__PURE__ */ React21.createElement("h3", { className: "text-xl font-semibold text-gray-900" }, product.name), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-4 text-sm text-gray-500" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 font-medium text-primary-600" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "h-4 w-4" }), product.inventoryCount > 0 ? "In stock & ready to ship" : "Restocking soon"), /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(Clock, { className: "h-4 w-4 text-primary-500" }), "Added ", new Date(product.createdAt).toLocaleDateString()))),
|
|
8162
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex w-full flex-col items-end gap-3 md:w-auto" }, /* @__PURE__ */ React21.createElement("div", { className: "text-right" }, /* @__PURE__ */ React21.createElement("p", { className: "text-3xl font-semibold text-gray-900" }, formatPrice(product.finalPrice)), product.priceBeforeDiscount && /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-gray-400 line-through" }, formatPrice(product.priceBeforeDiscount))), /* @__PURE__ */ React21.createElement(
|
|
8163
8163
|
Button,
|
|
8164
8164
|
{
|
|
8165
8165
|
size: "sm",
|
|
@@ -8171,7 +8171,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8171
8171
|
"View product"
|
|
8172
8172
|
))
|
|
8173
8173
|
);
|
|
8174
|
-
})) : /* @__PURE__ */
|
|
8174
|
+
})) : /* @__PURE__ */ React21.createElement(
|
|
8175
8175
|
EmptyState,
|
|
8176
8176
|
{
|
|
8177
8177
|
icon: Package,
|
|
@@ -8180,7 +8180,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8180
8180
|
actionLabel: hasActiveFilters ? "Clear filters" : void 0,
|
|
8181
8181
|
onAction: hasActiveFilters ? handleClearFilters : void 0
|
|
8182
8182
|
}
|
|
8183
|
-
)), pagination.totalPages > 1 && /* @__PURE__ */
|
|
8183
|
+
)), pagination.totalPages > 1 && /* @__PURE__ */ React21.createElement("div", { className: "mt-10 flex flex-wrap items-center justify-center gap-3" }, /* @__PURE__ */ React21.createElement(
|
|
8184
8184
|
Button,
|
|
8185
8185
|
{
|
|
8186
8186
|
variant: "outline",
|
|
@@ -8188,7 +8188,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8188
8188
|
disabled: page === 1
|
|
8189
8189
|
},
|
|
8190
8190
|
"Previous"
|
|
8191
|
-
), /* @__PURE__ */
|
|
8191
|
+
), /* @__PURE__ */ React21.createElement("span", { className: "text-sm font-semibold text-gray-600" }, "Page ", page, " of ", pagination.totalPages), /* @__PURE__ */ React21.createElement(
|
|
8192
8192
|
Button,
|
|
8193
8193
|
{
|
|
8194
8194
|
variant: "outline",
|
|
@@ -8196,7 +8196,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8196
8196
|
disabled: page === pagination.totalPages
|
|
8197
8197
|
},
|
|
8198
8198
|
"Next"
|
|
8199
|
-
))))))), /* @__PURE__ */
|
|
8199
|
+
))))))), /* @__PURE__ */ React21.createElement(AnimatePresence, null, showFilters && /* @__PURE__ */ React21.createElement(
|
|
8200
8200
|
motion.div,
|
|
8201
8201
|
{
|
|
8202
8202
|
initial: { opacity: 0 },
|
|
@@ -8204,7 +8204,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8204
8204
|
exit: { opacity: 0 },
|
|
8205
8205
|
className: "fixed inset-0 z-50 bg-black/40 backdrop-blur-sm lg:hidden"
|
|
8206
8206
|
},
|
|
8207
|
-
/* @__PURE__ */
|
|
8207
|
+
/* @__PURE__ */ React21.createElement(
|
|
8208
8208
|
motion.div,
|
|
8209
8209
|
{
|
|
8210
8210
|
initial: { y: "100%" },
|
|
@@ -8213,14 +8213,14 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
8213
8213
|
transition: { type: "spring", stiffness: 260, damping: 26 },
|
|
8214
8214
|
className: "absolute inset-x-0 bottom-0 max-h-[85vh] overflow-y-auto rounded-t-3xl bg-white p-6 shadow-2xl"
|
|
8215
8215
|
},
|
|
8216
|
-
/* @__PURE__ */
|
|
8216
|
+
/* @__PURE__ */ React21.createElement("div", { className: "mb-6 flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, "Filters"), /* @__PURE__ */ React21.createElement(
|
|
8217
8217
|
"button",
|
|
8218
8218
|
{
|
|
8219
8219
|
type: "button",
|
|
8220
8220
|
onClick: () => setShowFilters(false),
|
|
8221
8221
|
className: "rounded-full border border-gray-200 p-2 text-gray-500 hover:text-gray-700"
|
|
8222
8222
|
},
|
|
8223
|
-
/* @__PURE__ */
|
|
8223
|
+
/* @__PURE__ */ React21.createElement(X, { className: "h-4 w-4" })
|
|
8224
8224
|
)),
|
|
8225
8225
|
renderFiltersPanel()
|
|
8226
8226
|
)
|
|
@@ -8239,7 +8239,7 @@ function Badge({ children, variant = "primary", size = "md", className = "" }) {
|
|
|
8239
8239
|
sm: "px-2 py-1 text-xs",
|
|
8240
8240
|
md: "px-3 py-1 text-sm"
|
|
8241
8241
|
};
|
|
8242
|
-
return /* @__PURE__ */
|
|
8242
|
+
return /* @__PURE__ */ React21.createElement("span", { className: `inline-flex items-center font-medium rounded-full border ${variants[variant]} ${sizes[size]} ${className}` }, children);
|
|
8243
8243
|
}
|
|
8244
8244
|
var safeFormatDate = (date, format = "long") => {
|
|
8245
8245
|
if (!date) return "N/A";
|
|
@@ -8399,10 +8399,10 @@ function ProductDetailScreen({ productId }) {
|
|
|
8399
8399
|
}
|
|
8400
8400
|
};
|
|
8401
8401
|
if (isLoading) {
|
|
8402
|
-
return /* @__PURE__ */
|
|
8402
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "h-[520px] animate-pulse rounded-3xl bg-slate-200" }), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-3 gap-4" }, Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ React21.createElement("div", { key: index, className: "h-32 animate-pulse rounded-2xl bg-slate-200" })))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-4 rounded-3xl bg-white p-6 shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "h-8 w-32 animate-pulse rounded-full bg-slate-200" }), /* @__PURE__ */ React21.createElement("div", { className: "h-10 w-48 animate-pulse rounded-full bg-slate-200" }), /* @__PURE__ */ React21.createElement("div", { className: "h-6 w-full animate-pulse rounded-full bg-slate-200" }), /* @__PURE__ */ React21.createElement("div", { className: "h-12 w-full animate-pulse rounded-2xl bg-slate-200" }), /* @__PURE__ */ React21.createElement("div", { className: "h-12 w-full animate-pulse rounded-2xl bg-slate-200" })))));
|
|
8403
8403
|
}
|
|
8404
8404
|
if (!product) {
|
|
8405
|
-
return /* @__PURE__ */
|
|
8405
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl bg-white p-10 text-center shadow-sm" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "mx-auto h-10 w-10 text-primary-500" }), /* @__PURE__ */ React21.createElement("h1", { className: "mt-6 text-2xl font-semibold text-gray-900" }, "Product not found"), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-gray-600" }, "It may have been removed or is temporarily unavailable. Discover other pharmacy essentials in our catalogue."), /* @__PURE__ */ React21.createElement("div", { className: "mt-6" }, /* @__PURE__ */ React21.createElement(Link8, { href: "/shop", className: "inline-block" }, /* @__PURE__ */ React21.createElement(Button, null, "Browse products"))))));
|
|
8406
8406
|
}
|
|
8407
8407
|
product.tags && product.tags.length > 0 ? product.tags.slice(0, 6) : ["Pharmacist approved", "Gentle on daily routines", "Backed by real customers"];
|
|
8408
8408
|
const highlightCards = [
|
|
@@ -8422,29 +8422,29 @@ function ProductDetailScreen({ productId }) {
|
|
|
8422
8422
|
description: "Average rating 4.8/5 with over 120 verified customer experiences."
|
|
8423
8423
|
}
|
|
8424
8424
|
];
|
|
8425
|
-
return /* @__PURE__ */
|
|
8425
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8" }, /* @__PURE__ */ React21.createElement(
|
|
8426
8426
|
"div",
|
|
8427
8427
|
{
|
|
8428
8428
|
className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]",
|
|
8429
8429
|
"aria-hidden": "true"
|
|
8430
8430
|
}
|
|
8431
|
-
), /* @__PURE__ */
|
|
8431
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_bottom_right,_rgba(255,255,255,0.25),_transparent_55%)] opacity-70" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement(
|
|
8432
8432
|
Button,
|
|
8433
8433
|
{
|
|
8434
8434
|
variant: "ghost",
|
|
8435
8435
|
className: "text-white hover:bg-white/10",
|
|
8436
8436
|
onClick: () => router.push(buildPath("/shop"))
|
|
8437
8437
|
},
|
|
8438
|
-
/* @__PURE__ */
|
|
8438
|
+
/* @__PURE__ */ React21.createElement(ArrowLeft, { className: "h-5 w-5" }),
|
|
8439
8439
|
"Continue shopping"
|
|
8440
|
-
), /* @__PURE__ */
|
|
8440
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "hidden items-center gap-3 text-sm text-white/80 md:flex" }, /* @__PURE__ */ React21.createElement(Link8, { href: buildPath("/"), className: "transition hover:text-white" }, "Home"), /* @__PURE__ */ React21.createElement(ChevronRight, { className: "h-4 w-4" }), /* @__PURE__ */ React21.createElement(Link8, { href: buildPath("/shop"), className: "transition hover:text-white" }, "Shop"), /* @__PURE__ */ React21.createElement(ChevronRight, { className: "h-4 w-4" }), /* @__PURE__ */ React21.createElement("span", { className: "truncate font-medium text-white" }, product.name))), /* @__PURE__ */ React21.createElement(
|
|
8441
8441
|
motion.div,
|
|
8442
8442
|
{
|
|
8443
8443
|
initial: { opacity: 0, y: 24 },
|
|
8444
8444
|
animate: { opacity: 1, y: 0 },
|
|
8445
8445
|
className: "max-w-3xl space-y-4"
|
|
8446
8446
|
},
|
|
8447
|
-
product.category && /* @__PURE__ */
|
|
8447
|
+
product.category && /* @__PURE__ */ React21.createElement(
|
|
8448
8448
|
Badge,
|
|
8449
8449
|
{
|
|
8450
8450
|
variant: "secondary",
|
|
@@ -8452,9 +8452,9 @@ function ProductDetailScreen({ productId }) {
|
|
|
8452
8452
|
},
|
|
8453
8453
|
product.category
|
|
8454
8454
|
),
|
|
8455
|
-
/* @__PURE__ */
|
|
8456
|
-
/* @__PURE__ */
|
|
8457
|
-
)))), /* @__PURE__ */
|
|
8455
|
+
/* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold leading-tight md:text-5xl" }, product.name),
|
|
8456
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-3 text-sm text-white/80" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1 font-medium text-white" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4" }), "Ready to ship today"), /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1 font-medium text-white" }, /* @__PURE__ */ React21.createElement(Shield, { className: "h-4 w-4" }), "30-day happiness guarantee"))
|
|
8457
|
+
)))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-20" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-10" }, /* @__PURE__ */ React21.createElement("section", { className: "rounded-3xl border border-white bg-white/70 p-6 shadow-xl shadow-primary-100/40 backdrop-blur" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-6 lg:grid-cols-[minmax(0,1fr)_220px]" }, /* @__PURE__ */ React21.createElement(
|
|
8458
8458
|
motion.div,
|
|
8459
8459
|
{
|
|
8460
8460
|
key: variantImages[activeImageIndex],
|
|
@@ -8463,7 +8463,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8463
8463
|
transition: { duration: 0.35 },
|
|
8464
8464
|
className: "relative overflow-hidden rounded-3xl bg-slate-100 h-[420px] md:h-[560px]"
|
|
8465
8465
|
},
|
|
8466
|
-
/* @__PURE__ */
|
|
8466
|
+
/* @__PURE__ */ React21.createElement(
|
|
8467
8467
|
Image3,
|
|
8468
8468
|
{
|
|
8469
8469
|
src: variantImages[activeImageIndex],
|
|
@@ -8474,7 +8474,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8474
8474
|
className: "object-contain"
|
|
8475
8475
|
}
|
|
8476
8476
|
),
|
|
8477
|
-
discount > 0 && /* @__PURE__ */
|
|
8477
|
+
discount > 0 && /* @__PURE__ */ React21.createElement(
|
|
8478
8478
|
Badge,
|
|
8479
8479
|
{
|
|
8480
8480
|
variant: "danger",
|
|
@@ -8484,7 +8484,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8484
8484
|
discount,
|
|
8485
8485
|
"%"
|
|
8486
8486
|
),
|
|
8487
|
-
!variantInStock && /* @__PURE__ */
|
|
8487
|
+
!variantInStock && /* @__PURE__ */ React21.createElement(
|
|
8488
8488
|
Badge,
|
|
8489
8489
|
{
|
|
8490
8490
|
variant: "secondary",
|
|
@@ -8492,7 +8492,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8492
8492
|
},
|
|
8493
8493
|
"Out of Stock"
|
|
8494
8494
|
)
|
|
8495
|
-
), /* @__PURE__ */
|
|
8495
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-4" }, product?.productVariants?.length > 0 && /* @__PURE__ */ React21.createElement("div", { className: "rounded-2xl border border-slate-200 bg-white p-4 shadow-sm" }, /* @__PURE__ */ React21.createElement("p", { className: "mb-2 text-sm font-semibold uppercase tracking-[0.25em] text-slate-400" }, "Variant"), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-2" }, product?.productVariants?.map((variant, index) => /* @__PURE__ */ React21.createElement(
|
|
8496
8496
|
"button",
|
|
8497
8497
|
{
|
|
8498
8498
|
key: variant.id,
|
|
@@ -8501,7 +8501,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8501
8501
|
className: `rounded-full px-4 py-2 text-sm font-medium transition ${selectedVariant?.id === variant.id ? "bg-primary-600 text-white" : "bg-slate-100 text-slate-700 hover:bg-slate-200"}`
|
|
8502
8502
|
},
|
|
8503
8503
|
variant.name
|
|
8504
|
-
)))), /* @__PURE__ */
|
|
8504
|
+
)))), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-3 gap-3" }, variantImages.map((image, index) => /* @__PURE__ */ React21.createElement(
|
|
8505
8505
|
"button",
|
|
8506
8506
|
{
|
|
8507
8507
|
key: image.src + index,
|
|
@@ -8509,7 +8509,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
8509
8509
|
onClick: () => setActiveImageIndex(index),
|
|
8510
8510
|
className: `relative aspect-square overflow-hidden rounded-2xl border transition ${activeImageIndex === index ? "border-primary-500 shadow-lg shadow-primary-200/60" : "border-transparent hover:border-primary-200"}`
|
|
8511
8511
|
},
|
|
8512
|
-
/* @__PURE__ */
|
|
8512
|
+
/* @__PURE__ */ React21.createElement(
|
|
8513
8513
|
Image3,
|
|
8514
8514
|
{
|
|
8515
8515
|
src: image.src,
|
|
@@ -8520,18 +8520,18 @@ function ProductDetailScreen({ productId }) {
|
|
|
8520
8520
|
unoptimized: true
|
|
8521
8521
|
}
|
|
8522
8522
|
)
|
|
8523
|
-
)))))), /* @__PURE__ */
|
|
8523
|
+
)))))), /* @__PURE__ */ React21.createElement("section", { className: "grid gap-6 lg:grid-cols-3" }, highlightCards.map((card) => {
|
|
8524
8524
|
const Icon = card.icon;
|
|
8525
|
-
return /* @__PURE__ */
|
|
8525
|
+
return /* @__PURE__ */ React21.createElement(
|
|
8526
8526
|
"div",
|
|
8527
8527
|
{
|
|
8528
8528
|
key: card.title,
|
|
8529
8529
|
className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-sm transition hover:-translate-y-1 hover:shadow-lg"
|
|
8530
8530
|
},
|
|
8531
|
-
/* @__PURE__ */
|
|
8532
|
-
/* @__PURE__ */
|
|
8531
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement("span", { className: "rounded-2xl bg-primary-50 p-3 text-primary-600" }, /* @__PURE__ */ React21.createElement(Icon, { className: "h-5 w-5" })), /* @__PURE__ */ React21.createElement("h3", { className: "text-base font-semibold text-slate-900" }, card.title)),
|
|
8532
|
+
/* @__PURE__ */ React21.createElement("p", { className: "mt-3 text-sm leading-relaxed text-slate-600" }, card.description)
|
|
8533
8533
|
);
|
|
8534
|
-
})), /* @__PURE__ */
|
|
8534
|
+
})), /* @__PURE__ */ React21.createElement("section", { className: "grid gap-6 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" }, /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-8 shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-4 pb-6" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-1 text-amber-500" }, Array.from({ length: 5 }).map((_, index) => /* @__PURE__ */ React21.createElement(Star, { key: index, className: "h-4 w-4 fill-current" }))), /* @__PURE__ */ React21.createElement("span", { className: "text-sm font-medium text-slate-500" }, "Rated 4.8 \u2022 Patients love the results")), /* @__PURE__ */ React21.createElement("div", { className: "space-y-8" }, product.description && /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-slate-900" }, "Description"), /* @__PURE__ */ React21.createElement("p", { className: "text-base leading-relaxed text-slate-600", dangerouslySetInnerHTML: { __html: product.description } })))), /* @__PURE__ */ React21.createElement("div", { className: "h-full rounded-3xl border border-slate-100 bg-gradient-to-br from-primary-50 via-white to-secondary-50 p-8 shadow-sm" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-sm font-semibold uppercase tracking-[0.3em] text-primary-500" }, "Care tips"), /* @__PURE__ */ React21.createElement("div", { className: "mt-4 space-y-4 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("p", { className: "leading-relaxed" }, "Store in a cool, dry place away from direct sunlight. Check packaging for allergen statements."), /* @__PURE__ */ React21.createElement("p", { className: "leading-relaxed" }, "Consult with your local pharmacist if you are combining with other treatments or have chronic conditions."), /* @__PURE__ */ React21.createElement("p", { className: "rounded-2xl bg-white/60 p-4 leading-relaxed text-primary-700" }, "Questions? Our care team is on standby \u2014 reach us via chat for tailored support before you checkout.")))), /* @__PURE__ */ React21.createElement("section", { className: "rounded-3xl border border-slate-100 bg-white p-8 shadow-sm" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-xl font-semibold text-slate-900" }, "Product insights"), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 grid gap-6 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement("div", { className: "rounded-2xl border border-slate-200 bg-slate-50/60 p-5" }, /* @__PURE__ */ React21.createElement("p", { className: "text-xs font-semibold uppercase tracking-[0.3em] text-slate-500" }, "Availability"), /* @__PURE__ */ React21.createElement("div", { className: "mt-3 flex items-center gap-2 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement(Check, { className: "h-4 w-4 text-primary-500" }), product.inStock ? "Available for dispatch today" : "Currently restocking"), product.stock !== void 0 && /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-xs text-slate-500" }, product.stock > 0 ? `${product.stock} units remaining in inventory` : "Join the waitlist to be notified first")), /* @__PURE__ */ React21.createElement("div", { className: "rounded-2xl border border-slate-200 bg-slate-50/60 p-5" }, /* @__PURE__ */ React21.createElement("p", { className: "text-xs font-semibold uppercase tracking-[0.3em] text-slate-500" }, "Product details"), /* @__PURE__ */ React21.createElement("div", { className: "mt-3 space-y-2 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("p", null, /* @__PURE__ */ React21.createElement("span", { className: "font-medium text-slate-700" }, "Variant:"), " ", currentVariant.name), /* @__PURE__ */ React21.createElement("p", null, /* @__PURE__ */ React21.createElement("span", { className: "font-medium text-slate-700" }, "SKU:"), " ", variantSku), /* @__PURE__ */ React21.createElement("p", null, /* @__PURE__ */ React21.createElement("span", { className: "font-medium text-slate-700" }, "Status:"), " ", /* @__PURE__ */ React21.createElement("span", { className: variantInStock ? "text-green-600" : "text-amber-600" }, variantInStock ? "In Stock" : "Out of Stock")), /* @__PURE__ */ React21.createElement("p", null, /* @__PURE__ */ React21.createElement("span", { className: "font-medium text-slate-700" }, "Last updated:"), " ", lastUpdatedLabel), /* @__PURE__ */ React21.createElement("p", null, /* @__PURE__ */ React21.createElement("span", { className: "font-medium text-slate-700" }, "Ships from:"), " Local pharmacy distribution center")))))), /* @__PURE__ */ React21.createElement("aside", { className: "space-y-6 lg:sticky lg:top-24" }, /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-100/40" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-baseline gap-3" }, /* @__PURE__ */ React21.createElement("p", { className: "text-3xl font-bold text-slate-900" }, selectedVariant ? formatPrice(selectedVariant.finalPrice) : formatPrice(product.price)), variantComparePrice && variantComparePrice > variantPrice && /* @__PURE__ */ React21.createElement("p", { className: "text-base text-slate-400 line-through" }, formatPrice(variantComparePrice)), discount > 0 && /* @__PURE__ */ React21.createElement(Badge, { variant: "danger", size: "sm" }, "-", discount, "%")), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 space-y-4" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 rounded-2xl bg-primary-50/80 px-4 py-3 text-sm font-medium text-primary-700" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "h-4 w-4" }), "Pharmacist verified product"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between rounded-2xl border border-slate-200 px-4 py-3" }, /* @__PURE__ */ React21.createElement("span", { className: "text-sm font-medium text-slate-600" }, "Qty"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center rounded-full border border-slate-200 bg-slate-50" }, /* @__PURE__ */ React21.createElement(
|
|
8535
8535
|
"button",
|
|
8536
8536
|
{
|
|
8537
8537
|
type: "button",
|
|
@@ -8539,8 +8539,8 @@ function ProductDetailScreen({ productId }) {
|
|
|
8539
8539
|
className: "rounded-l-full p-2 hover:bg-primary-100/60",
|
|
8540
8540
|
"aria-label": "Decrease quantity"
|
|
8541
8541
|
},
|
|
8542
|
-
/* @__PURE__ */
|
|
8543
|
-
), /* @__PURE__ */
|
|
8542
|
+
/* @__PURE__ */ React21.createElement(Minus, { className: "h-4 w-4" })
|
|
8543
|
+
), /* @__PURE__ */ React21.createElement("span", { className: "w-12 text-center text-sm font-semibold text-slate-700" }, quantity), /* @__PURE__ */ React21.createElement(
|
|
8544
8544
|
"button",
|
|
8545
8545
|
{
|
|
8546
8546
|
type: "button",
|
|
@@ -8548,8 +8548,8 @@ function ProductDetailScreen({ productId }) {
|
|
|
8548
8548
|
className: "rounded-r-full p-2 hover:bg-primary-100/60",
|
|
8549
8549
|
"aria-label": "Increase quantity"
|
|
8550
8550
|
},
|
|
8551
|
-
/* @__PURE__ */
|
|
8552
|
-
)))), selectedVariant && /* @__PURE__ */
|
|
8551
|
+
/* @__PURE__ */ React21.createElement(Plus, { className: "h-4 w-4" })
|
|
8552
|
+
)))), selectedVariant && /* @__PURE__ */ React21.createElement("div", { className: "mt-4 text-sm" }, selectedVariant.inventoryStatus === "OUT_OF_STOCK" /* OUTOFSTOCK */ || selectedVariant.inventoryStatus === "LOW_STOCK" /* LOWSTOCK */ ? /* @__PURE__ */ React21.createElement("div", { className: "text-red-600 font-medium" }, "Out of Stock") : /* @__PURE__ */ React21.createElement("div", { className: "text-green-600 font-medium" }, "In Stock")), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 space-x-3" }, /* @__PURE__ */ React21.createElement(
|
|
8553
8553
|
Button,
|
|
8554
8554
|
{
|
|
8555
8555
|
size: "lg",
|
|
@@ -8558,9 +8558,9 @@ function ProductDetailScreen({ productId }) {
|
|
|
8558
8558
|
isLoading: isAddingToCart,
|
|
8559
8559
|
disabled: !selectedVariant || selectedVariant.inventoryStatus === "OUT_OF_STOCK" /* OUTOFSTOCK */
|
|
8560
8560
|
},
|
|
8561
|
-
/* @__PURE__ */
|
|
8561
|
+
/* @__PURE__ */ React21.createElement(ShoppingCart, { className: "h-5 w-5" }),
|
|
8562
8562
|
!selectedVariant ? "Select a variant" : selectedVariant.inventoryStatus === "OUT_OF_STOCK" /* OUTOFSTOCK */ ? "Out of Stock" : `Add to Cart`
|
|
8563
|
-
), /* @__PURE__ */
|
|
8563
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8564
8564
|
Button,
|
|
8565
8565
|
{
|
|
8566
8566
|
size: "lg",
|
|
@@ -8568,14 +8568,14 @@ function ProductDetailScreen({ productId }) {
|
|
|
8568
8568
|
className: "w-full",
|
|
8569
8569
|
onClick: handleToggleFavorite
|
|
8570
8570
|
},
|
|
8571
|
-
/* @__PURE__ */
|
|
8571
|
+
/* @__PURE__ */ React21.createElement(
|
|
8572
8572
|
Heart,
|
|
8573
8573
|
{
|
|
8574
8574
|
className: `h-5 w-5 ${isFavorited ? "fill-red-500 text-red-500" : "text-slate-500"}`
|
|
8575
8575
|
}
|
|
8576
8576
|
),
|
|
8577
8577
|
isFavorited ? "Saved" : "Save for later"
|
|
8578
|
-
))), /* @__PURE__ */
|
|
8578
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm" }, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold uppercase tracking-[0.25em]" }, "Need advice?"), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 leading-relaxed" }, "Chat with a pharmacist in real time before completing your purchase. We will help you choose supporting supplements and answer dosing questions.")))), relatedProducts.length > 0 && /* @__PURE__ */ React21.createElement("section", { className: "mt-20" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h2", { className: "text-2xl font-semibold text-slate-900" }, "You may also like"), /* @__PURE__ */ React21.createElement("p", { className: "mt-1 text-sm text-slate-500" }, "Hand-picked recommendations that pair nicely with this product.")), /* @__PURE__ */ React21.createElement(Link8, { href: "/shop", className: "hidden md:inline-flex" }, /* @__PURE__ */ React21.createElement(Button, { variant: "ghost", className: "text-primary-600" }, "View all products"))), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-4" }, relatedProducts?.map((relatedProduct) => /* @__PURE__ */ React21.createElement(ProductCard, { key: relatedProduct.id, product: relatedProduct })))))));
|
|
8579
8579
|
}
|
|
8580
8580
|
function CartItem({ item }) {
|
|
8581
8581
|
const { updateQuantity, removeFromCart } = useCart();
|
|
@@ -8593,7 +8593,7 @@ function CartItem({ item }) {
|
|
|
8593
8593
|
await removeFromCart(item.productVariantId);
|
|
8594
8594
|
};
|
|
8595
8595
|
const itemTotal = item.productVariantData.finalPrice * item.quantity;
|
|
8596
|
-
return /* @__PURE__ */
|
|
8596
|
+
return /* @__PURE__ */ React21.createElement(
|
|
8597
8597
|
motion.div,
|
|
8598
8598
|
{
|
|
8599
8599
|
layout: true,
|
|
@@ -8602,7 +8602,7 @@ function CartItem({ item }) {
|
|
|
8602
8602
|
exit: { opacity: 0, x: -100 },
|
|
8603
8603
|
className: "flex gap-4 bg-white p-4 rounded-xl border border-gray-200 hover:border-primary-300 transition-colors"
|
|
8604
8604
|
},
|
|
8605
|
-
/* @__PURE__ */
|
|
8605
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative w-24 h-24 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100" }, /* @__PURE__ */ React21.createElement(
|
|
8606
8606
|
Image3,
|
|
8607
8607
|
{
|
|
8608
8608
|
src: item.productVariantData.productMedia[0]?.file || "/placeholder-product.jpg",
|
|
@@ -8611,32 +8611,32 @@ function CartItem({ item }) {
|
|
|
8611
8611
|
className: "object-cover"
|
|
8612
8612
|
}
|
|
8613
8613
|
)),
|
|
8614
|
-
/* @__PURE__ */
|
|
8614
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-gray-900 truncate" }, item.productVariantData.name), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-gray-500 mt-1" }, formatPrice(item.productVariantData.finalPrice), " each"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 mt-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center border-2 border-gray-200 rounded-lg" }, /* @__PURE__ */ React21.createElement(
|
|
8615
8615
|
"button",
|
|
8616
8616
|
{
|
|
8617
8617
|
onClick: () => handleUpdateQuantity(item.quantity - 1),
|
|
8618
8618
|
disabled: isUpdating || item.quantity <= 0,
|
|
8619
8619
|
className: "p-2 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors"
|
|
8620
8620
|
},
|
|
8621
|
-
/* @__PURE__ */
|
|
8622
|
-
), /* @__PURE__ */
|
|
8621
|
+
/* @__PURE__ */ React21.createElement(Minus, { className: "w-4 h-4" })
|
|
8622
|
+
), /* @__PURE__ */ React21.createElement("span", { className: "px-4 font-medium min-w-[3rem] text-center" }, isUpdating ? /* @__PURE__ */ React21.createElement("span", { className: "inline-block h-4 w-4 align-middle animate-spin rounded-full border-2 border-gray-300 border-t-gray-600" }) : item.quantity), /* @__PURE__ */ React21.createElement(
|
|
8623
8623
|
"button",
|
|
8624
8624
|
{
|
|
8625
8625
|
onClick: () => handleUpdateQuantity(item.quantity + 1),
|
|
8626
8626
|
disabled: isUpdating || item.quantity >= item.productVariantData.inventoryCount,
|
|
8627
8627
|
className: "p-2 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors"
|
|
8628
8628
|
},
|
|
8629
|
-
/* @__PURE__ */
|
|
8630
|
-
)), /* @__PURE__ */
|
|
8629
|
+
/* @__PURE__ */ React21.createElement(Plus, { className: "w-4 h-4" })
|
|
8630
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
8631
8631
|
"button",
|
|
8632
8632
|
{
|
|
8633
8633
|
onClick: handleRemove,
|
|
8634
8634
|
className: "p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors",
|
|
8635
8635
|
"aria-label": "Remove item"
|
|
8636
8636
|
},
|
|
8637
|
-
/* @__PURE__ */
|
|
8637
|
+
/* @__PURE__ */ React21.createElement(Trash2, { className: "w-5 h-5" })
|
|
8638
8638
|
))),
|
|
8639
|
-
/* @__PURE__ */
|
|
8639
|
+
/* @__PURE__ */ React21.createElement("div", { className: "text-right" }, /* @__PURE__ */ React21.createElement("p", { className: "text-xl font-bold text-gray-900" }, formatPrice(itemTotal)))
|
|
8640
8640
|
);
|
|
8641
8641
|
}
|
|
8642
8642
|
function CartScreen() {
|
|
@@ -8644,7 +8644,7 @@ function CartScreen() {
|
|
|
8644
8644
|
const { cart, isLoading } = useCart();
|
|
8645
8645
|
const { buildPath } = useBasePath();
|
|
8646
8646
|
if (!cart || cart.cartBody.items.length === 0) {
|
|
8647
|
-
return /* @__PURE__ */
|
|
8647
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-gradient-to-br from-primary-700 via-primary-600 to-secondary-600 flex items-center justify-center" }, /* @__PURE__ */ React21.createElement("div", { className: "mx-auto px-20 py-5 bg-white rounded-3xl" }, /* @__PURE__ */ React21.createElement(
|
|
8648
8648
|
EmptyState,
|
|
8649
8649
|
{
|
|
8650
8650
|
icon: ShoppingBag,
|
|
@@ -8659,16 +8659,16 @@ function CartScreen() {
|
|
|
8659
8659
|
const shipping = 0;
|
|
8660
8660
|
const tax = 0;
|
|
8661
8661
|
const total = subtotal + shipping + tax;
|
|
8662
|
-
return /* @__PURE__ */
|
|
8662
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16 mb-8" }, /* @__PURE__ */ React21.createElement(
|
|
8663
8663
|
motion.div,
|
|
8664
8664
|
{
|
|
8665
8665
|
initial: { opacity: 0, y: 24 },
|
|
8666
8666
|
animate: { opacity: 1, y: 0 },
|
|
8667
8667
|
className: "flex flex-col gap-6 md:flex-row md:items-center md:justify-between"
|
|
8668
8668
|
},
|
|
8669
|
-
/* @__PURE__ */
|
|
8670
|
-
/* @__PURE__ */
|
|
8671
|
-
))), /* @__PURE__ */
|
|
8669
|
+
/* @__PURE__ */ React21.createElement("div", { className: "max-w-2xl space-y-4" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold tracking-wide text-white/80 backdrop-blur" }, /* @__PURE__ */ React21.createElement(HeartPulse, { className: "h-4 w-4" }), "Wellness essentials, ready when you are"), /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "Your curated cart"), /* @__PURE__ */ React21.createElement("p", { className: "text-white/75 md:text-lg" }, "Review your selections, unlock exclusive perks, and check out with pharmacist-backed confidence.")),
|
|
8670
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl bg-white/15 p-6 backdrop-blur-md" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.35em] text-white/70" }, "Cart summary"), /* @__PURE__ */ React21.createElement("p", { className: "mt-4 text-4xl font-semibold" }, formatPrice(total)), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-white/70" }, "Taxes and shipping calculated below"))
|
|
8671
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-20" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" }, /* @__PURE__ */ React21.createElement(
|
|
8672
8672
|
motion.section,
|
|
8673
8673
|
{
|
|
8674
8674
|
initial: { opacity: 0, y: 24 },
|
|
@@ -8676,10 +8676,10 @@ function CartScreen() {
|
|
|
8676
8676
|
transition: { delay: 0.05 },
|
|
8677
8677
|
className: "space-y-6 rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50"
|
|
8678
8678
|
},
|
|
8679
|
-
/* @__PURE__ */
|
|
8680
|
-
isLoading && /* @__PURE__ */
|
|
8681
|
-
/* @__PURE__ */
|
|
8682
|
-
), /* @__PURE__ */
|
|
8679
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center justify-between gap-4" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-xl font-semibold text-slate-900" }, "Items (", cart.cartBody.items.length, ")"), /* @__PURE__ */ React21.createElement("div", { className: "inline-flex items-center gap-2 rounded-full bg-primary-50 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-primary-700" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "h-4 w-4" }), "Guaranteed cold-chain handling")),
|
|
8680
|
+
isLoading && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-3 py-2 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-block h-3 w-3 animate-spin rounded-full border-2 border-slate-300 border-t-slate-600" }), "Updating cart\u2026"),
|
|
8681
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-5" }, cart.cartBody.items.map((item) => /* @__PURE__ */ React21.createElement(CartItem, { key: item.productVariantId, item })))
|
|
8682
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8683
8683
|
motion.aside,
|
|
8684
8684
|
{
|
|
8685
8685
|
initial: { opacity: 0, y: 24 },
|
|
@@ -8687,7 +8687,7 @@ function CartScreen() {
|
|
|
8687
8687
|
transition: { delay: 0.1 },
|
|
8688
8688
|
className: "space-y-6 lg:sticky lg:top-28"
|
|
8689
8689
|
},
|
|
8690
|
-
/* @__PURE__ */
|
|
8690
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-xl font-semibold text-slate-900" }, "Checkout summary"), /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-primary-50 px-3 py-1 text-xs font-semibold text-primary-700" }, /* @__PURE__ */ React21.createElement(BadgePercent, { className: "h-4 w-4" }), "Savings applied")), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 space-y-4 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("span", null, "Subtotal"), /* @__PURE__ */ React21.createElement("span", { className: "font-semibold text-slate-900" }, formatPrice(subtotal))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("span", null, "Shipping"), /* @__PURE__ */ React21.createElement("span", { className: "font-semibold" }, "Will be calculated at checkout")), /* @__PURE__ */ React21.createElement("div", { className: "rounded-2xl bg-slate-50 p-4" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between text-base font-semibold text-slate-900" }, /* @__PURE__ */ React21.createElement("span", null, "Order total"), /* @__PURE__ */ React21.createElement("span", null, formatPrice(total))), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-xs text-slate-500" }, "Prices include pharmacy-grade quality control and packaging."))), /* @__PURE__ */ React21.createElement(
|
|
8691
8691
|
Button,
|
|
8692
8692
|
{
|
|
8693
8693
|
size: "lg",
|
|
@@ -8695,8 +8695,8 @@ function CartScreen() {
|
|
|
8695
8695
|
onClick: () => router.push(buildPath("/checkout"))
|
|
8696
8696
|
},
|
|
8697
8697
|
"Secure checkout",
|
|
8698
|
-
/* @__PURE__ */
|
|
8699
|
-
), /* @__PURE__ */
|
|
8698
|
+
/* @__PURE__ */ React21.createElement(ArrowRight, { className: "h-5 w-5" })
|
|
8699
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8700
8700
|
"button",
|
|
8701
8701
|
{
|
|
8702
8702
|
type: "button",
|
|
@@ -8705,7 +8705,7 @@ function CartScreen() {
|
|
|
8705
8705
|
},
|
|
8706
8706
|
"Continue shopping"
|
|
8707
8707
|
)),
|
|
8708
|
-
/* @__PURE__ */
|
|
8708
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm" }, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold uppercase tracking-[0.3em]" }, "Need help?"), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 leading-relaxed" }, "Chat with a pharmacist to optimize your regimen or discuss substitutions before you check out."))
|
|
8709
8709
|
)))));
|
|
8710
8710
|
}
|
|
8711
8711
|
function useAddresses() {
|
|
@@ -8767,7 +8767,7 @@ function useAddresses() {
|
|
|
8767
8767
|
};
|
|
8768
8768
|
}
|
|
8769
8769
|
function Card({ className = "", ...props }) {
|
|
8770
|
-
return /* @__PURE__ */
|
|
8770
|
+
return /* @__PURE__ */ React21.createElement(
|
|
8771
8771
|
"div",
|
|
8772
8772
|
{
|
|
8773
8773
|
className: `rounded-lg border bg-white shadow-sm ${className}`,
|
|
@@ -8793,7 +8793,7 @@ function Modal({ isOpen, onClose, title, children, size = "md" }) {
|
|
|
8793
8793
|
lg: "max-w-2xl",
|
|
8794
8794
|
xl: "max-w-4xl"
|
|
8795
8795
|
};
|
|
8796
|
-
return /* @__PURE__ */
|
|
8796
|
+
return /* @__PURE__ */ React21.createElement(AnimatePresence, null, isOpen && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement(
|
|
8797
8797
|
motion.div,
|
|
8798
8798
|
{
|
|
8799
8799
|
initial: { opacity: 0 },
|
|
@@ -8802,7 +8802,7 @@ function Modal({ isOpen, onClose, title, children, size = "md" }) {
|
|
|
8802
8802
|
onClick: onClose,
|
|
8803
8803
|
className: "fixed inset-0 bg-black/50 backdrop-blur-sm z-50"
|
|
8804
8804
|
}
|
|
8805
|
-
), /* @__PURE__ */
|
|
8805
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4" }, /* @__PURE__ */ React21.createElement(
|
|
8806
8806
|
motion.div,
|
|
8807
8807
|
{
|
|
8808
8808
|
initial: { opacity: 0, scale: 0.95, y: 20 },
|
|
@@ -8810,15 +8810,15 @@ function Modal({ isOpen, onClose, title, children, size = "md" }) {
|
|
|
8810
8810
|
exit: { opacity: 0, scale: 0.95, y: 20 },
|
|
8811
8811
|
className: `bg-white rounded-2xl shadow-2xl w-full ${sizes[size]} max-h-[90vh] overflow-hidden flex flex-col`
|
|
8812
8812
|
},
|
|
8813
|
-
title && /* @__PURE__ */
|
|
8813
|
+
title && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between p-6 border-b border-gray-200" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-2xl font-bold text-gray-900" }, title), /* @__PURE__ */ React21.createElement(
|
|
8814
8814
|
"button",
|
|
8815
8815
|
{
|
|
8816
8816
|
onClick: onClose,
|
|
8817
8817
|
className: "p-2 hover:bg-gray-100 rounded-lg transition-colors"
|
|
8818
8818
|
},
|
|
8819
|
-
/* @__PURE__ */
|
|
8819
|
+
/* @__PURE__ */ React21.createElement(X, { className: "w-5 h-5" })
|
|
8820
8820
|
)),
|
|
8821
|
-
/* @__PURE__ */
|
|
8821
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex-1 overflow-y-auto p-6" }, children)
|
|
8822
8822
|
))));
|
|
8823
8823
|
}
|
|
8824
8824
|
var addressSchema = z.object({
|
|
@@ -8908,7 +8908,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8908
8908
|
setIsSubmitting(false);
|
|
8909
8909
|
}
|
|
8910
8910
|
};
|
|
8911
|
-
return /* @__PURE__ */
|
|
8911
|
+
return /* @__PURE__ */ React21.createElement(
|
|
8912
8912
|
Modal,
|
|
8913
8913
|
{
|
|
8914
8914
|
isOpen,
|
|
@@ -8916,7 +8916,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8916
8916
|
title: initialAddress ? "Edit Address" : "Add New Address",
|
|
8917
8917
|
size: "lg"
|
|
8918
8918
|
},
|
|
8919
|
-
/* @__PURE__ */
|
|
8919
|
+
/* @__PURE__ */ React21.createElement("form", { onSubmit: handleSubmit(onSubmit), className: "space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React21.createElement(
|
|
8920
8920
|
Input,
|
|
8921
8921
|
{
|
|
8922
8922
|
label: "Full name",
|
|
@@ -8924,7 +8924,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8924
8924
|
...register("name"),
|
|
8925
8925
|
error: errors.name?.message
|
|
8926
8926
|
}
|
|
8927
|
-
), /* @__PURE__ */
|
|
8927
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8928
8928
|
Input,
|
|
8929
8929
|
{
|
|
8930
8930
|
label: "Phone number",
|
|
@@ -8932,7 +8932,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8932
8932
|
...register("phone"),
|
|
8933
8933
|
error: errors.phone?.message
|
|
8934
8934
|
}
|
|
8935
|
-
), /* @__PURE__ */
|
|
8935
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "md:col-span-2" }, /* @__PURE__ */ React21.createElement(
|
|
8936
8936
|
Input,
|
|
8937
8937
|
{
|
|
8938
8938
|
label: "Address line 1",
|
|
@@ -8940,14 +8940,14 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8940
8940
|
...register("street1"),
|
|
8941
8941
|
error: errors.street1?.message
|
|
8942
8942
|
}
|
|
8943
|
-
)), /* @__PURE__ */
|
|
8943
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "md:col-span-2" }, /* @__PURE__ */ React21.createElement(
|
|
8944
8944
|
Input,
|
|
8945
8945
|
{
|
|
8946
8946
|
label: "Address line 2 (optional)",
|
|
8947
8947
|
placeholder: "Apt 4B",
|
|
8948
8948
|
...register("street2")
|
|
8949
8949
|
}
|
|
8950
|
-
)), /* @__PURE__ */
|
|
8950
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
8951
8951
|
Input,
|
|
8952
8952
|
{
|
|
8953
8953
|
label: "City",
|
|
@@ -8955,7 +8955,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8955
8955
|
...register("city"),
|
|
8956
8956
|
error: errors.city?.message
|
|
8957
8957
|
}
|
|
8958
|
-
), /* @__PURE__ */
|
|
8958
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8959
8959
|
Input,
|
|
8960
8960
|
{
|
|
8961
8961
|
label: "State",
|
|
@@ -8963,7 +8963,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8963
8963
|
...register("state"),
|
|
8964
8964
|
error: errors.state?.message
|
|
8965
8965
|
}
|
|
8966
|
-
), /* @__PURE__ */
|
|
8966
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8967
8967
|
Input,
|
|
8968
8968
|
{
|
|
8969
8969
|
label: "ZIP code",
|
|
@@ -8971,7 +8971,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8971
8971
|
...register("zip"),
|
|
8972
8972
|
error: errors.zip?.message
|
|
8973
8973
|
}
|
|
8974
|
-
), /* @__PURE__ */
|
|
8974
|
+
), /* @__PURE__ */ React21.createElement(
|
|
8975
8975
|
Input,
|
|
8976
8976
|
{
|
|
8977
8977
|
label: "Country",
|
|
@@ -8979,7 +8979,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8979
8979
|
...register("country"),
|
|
8980
8980
|
error: errors.country?.message
|
|
8981
8981
|
}
|
|
8982
|
-
)), /* @__PURE__ */
|
|
8982
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "flex justify-end gap-4" }, /* @__PURE__ */ React21.createElement(
|
|
8983
8983
|
Button,
|
|
8984
8984
|
{
|
|
8985
8985
|
type: "button",
|
|
@@ -8987,7 +8987,7 @@ function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, i
|
|
|
8987
8987
|
onClick: onClose
|
|
8988
8988
|
},
|
|
8989
8989
|
"Cancel"
|
|
8990
|
-
), /* @__PURE__ */
|
|
8990
|
+
), /* @__PURE__ */ React21.createElement(Button, { type: "submit", disabled: isSubmitting }, isSubmitting ? "Adding Address..." : "Add Address")))
|
|
8991
8991
|
);
|
|
8992
8992
|
}
|
|
8993
8993
|
var checkoutSchema = z.object({
|
|
@@ -8999,7 +8999,7 @@ var PAYMENT_METHODS = [
|
|
|
8999
8999
|
{
|
|
9000
9000
|
label: "Card",
|
|
9001
9001
|
value: "Card",
|
|
9002
|
-
icon: /* @__PURE__ */
|
|
9002
|
+
icon: /* @__PURE__ */ React21.createElement(CreditCard, { className: "w-5 h-5" }),
|
|
9003
9003
|
description: "Pay securely with your credit or debit card",
|
|
9004
9004
|
className: "border-blue-500 hover:bg-blue-50",
|
|
9005
9005
|
activeClass: "bg-blue-50 border-blue-500 text-blue-700"
|
|
@@ -9007,7 +9007,7 @@ var PAYMENT_METHODS = [
|
|
|
9007
9007
|
{
|
|
9008
9008
|
label: "Cash",
|
|
9009
9009
|
value: "Cash",
|
|
9010
|
-
icon: /* @__PURE__ */
|
|
9010
|
+
icon: /* @__PURE__ */ React21.createElement(PackageCheck, { className: "w-5 h-5" }),
|
|
9011
9011
|
description: "Pay with cash on delivery or at pickup",
|
|
9012
9012
|
className: "border-amber-500 hover:bg-amber-50",
|
|
9013
9013
|
activeClass: "bg-amber-50 border-amber-500 text-amber-700"
|
|
@@ -9015,7 +9015,7 @@ var PAYMENT_METHODS = [
|
|
|
9015
9015
|
{
|
|
9016
9016
|
label: "Credit",
|
|
9017
9017
|
value: "Credit",
|
|
9018
|
-
icon: /* @__PURE__ */
|
|
9018
|
+
icon: /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "w-5 h-5" }),
|
|
9019
9019
|
description: "Use your account credit",
|
|
9020
9020
|
className: "border-emerald-500 hover:bg-emerald-50",
|
|
9021
9021
|
activeClass: "bg-emerald-50 border-emerald-500 text-emerald-700"
|
|
@@ -9219,7 +9219,7 @@ function CheckoutScreen() {
|
|
|
9219
9219
|
}
|
|
9220
9220
|
}
|
|
9221
9221
|
setIsSubmitting(true);
|
|
9222
|
-
toast("Submitting order...", { icon: /* @__PURE__ */
|
|
9222
|
+
toast("Submitting order...", { icon: /* @__PURE__ */ React21.createElement(CreditCard, { className: "h-4 w-4" }) });
|
|
9223
9223
|
try {
|
|
9224
9224
|
const items = (cart?.cartBody?.items || []).map((item) => ({
|
|
9225
9225
|
productVariantId: String(item.productVariantId),
|
|
@@ -9284,33 +9284,33 @@ function CheckoutScreen() {
|
|
|
9284
9284
|
const subtotal = cart.total;
|
|
9285
9285
|
const tax = 0;
|
|
9286
9286
|
const total = subtotal + shippingPrice + tax;
|
|
9287
|
-
return /* @__PURE__ */
|
|
9287
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" }, /* @__PURE__ */ React21.createElement(
|
|
9288
9288
|
motion.div,
|
|
9289
9289
|
{
|
|
9290
9290
|
initial: { opacity: 0, y: 24 },
|
|
9291
9291
|
animate: { opacity: 1, y: 0 },
|
|
9292
9292
|
className: "space-y-6"
|
|
9293
9293
|
},
|
|
9294
|
-
/* @__PURE__ */
|
|
9295
|
-
/* @__PURE__ */
|
|
9296
|
-
/* @__PURE__ */
|
|
9297
|
-
/* @__PURE__ */
|
|
9294
|
+
/* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "h-4 w-4" }), "Secure checkout"),
|
|
9295
|
+
/* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "Provide delivery details"),
|
|
9296
|
+
/* @__PURE__ */ React21.createElement("p", { className: "text-white/75 md:text-lg" }, "Our pharmacists handle every package with care. Share your shipping and billing information so we can dispatch your order within the next 12 hours."),
|
|
9297
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-3" }, checkoutSteps.map((step) => /* @__PURE__ */ React21.createElement(
|
|
9298
9298
|
"div",
|
|
9299
9299
|
{
|
|
9300
9300
|
key: step.id,
|
|
9301
9301
|
className: `flex items-center gap-3 rounded-2xl px-4 py-2 text-sm font-semibold ${step.status === "complete" ? "bg-white/20 text-white" : step.status === "current" ? "bg-white text-primary-700" : "bg-white/10 text-white/60"}`
|
|
9302
9302
|
},
|
|
9303
|
-
/* @__PURE__ */
|
|
9303
|
+
/* @__PURE__ */ React21.createElement("span", { className: "flex h-7 w-7 items-center justify-center rounded-full bg-white/20 text-xs font-bold" }, step.id),
|
|
9304
9304
|
step.label
|
|
9305
9305
|
)))
|
|
9306
|
-
)))), /* @__PURE__ */
|
|
9306
|
+
)))), /* @__PURE__ */ React21.createElement("form", { onSubmit: handleSubmit(onSubmit) }, error && /* @__PURE__ */ React21.createElement("div", { className: "mb-4 text-red-600 font-semibold" }, error), /* @__PURE__ */ React21.createElement("div", { className: "pt-12 container mx-auto grid gap-10 px-4 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]" }, /* @__PURE__ */ React21.createElement(
|
|
9307
9307
|
motion.div,
|
|
9308
9308
|
{
|
|
9309
9309
|
initial: { opacity: 0, y: 24 },
|
|
9310
9310
|
animate: { opacity: 1, y: 0 },
|
|
9311
9311
|
className: "space-y-8"
|
|
9312
9312
|
},
|
|
9313
|
-
/* @__PURE__ */
|
|
9313
|
+
/* @__PURE__ */ React21.createElement("section", { className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center justify-between gap-4" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h2", { className: "text-xl font-semibold text-slate-900" }, "Shipping information"), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, "We use temperature-aware packaging and real-time tracking on every shipment.")), /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-primary-50 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-primary-700" }, /* @__PURE__ */ React21.createElement(Truck, { className: "h-4 w-4" }), "Dispatch in 12h")), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 grid grid-cols-1 gap-4 md:grid-cols-2" }, isDelivery && /* @__PURE__ */ React21.createElement("div", { className: "md:col-span-2 space-y-4" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("label", { className: "block font-semibold" }, "Select Address"), /* @__PURE__ */ React21.createElement(
|
|
9314
9314
|
Button,
|
|
9315
9315
|
{
|
|
9316
9316
|
type: "button",
|
|
@@ -9321,15 +9321,15 @@ function CheckoutScreen() {
|
|
|
9321
9321
|
setIsAddressModalOpen(true);
|
|
9322
9322
|
}
|
|
9323
9323
|
},
|
|
9324
|
-
/* @__PURE__ */
|
|
9324
|
+
/* @__PURE__ */ React21.createElement(Plus, { className: "h-4 w-4 mr-2" }),
|
|
9325
9325
|
"Add New Address"
|
|
9326
|
-
)), userAddresses.length > 0 ? /* @__PURE__ */
|
|
9326
|
+
)), userAddresses.length > 0 ? /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4" }, userAddresses.map((addr) => /* @__PURE__ */ React21.createElement(
|
|
9327
9327
|
"label",
|
|
9328
9328
|
{
|
|
9329
9329
|
key: addr.id,
|
|
9330
9330
|
className: `group relative flex items-start gap-3 p-4 rounded-2xl border ${selectedAddressId === addr.id ? "border-primary-500 bg-primary-50 shadow-sm" : "border-slate-200 bg-white"} cursor-pointer hover:border-primary-300 transition-colors`
|
|
9331
9331
|
},
|
|
9332
|
-
/* @__PURE__ */
|
|
9332
|
+
/* @__PURE__ */ React21.createElement(
|
|
9333
9333
|
"input",
|
|
9334
9334
|
{
|
|
9335
9335
|
type: "radio",
|
|
@@ -9350,7 +9350,7 @@ function CheckoutScreen() {
|
|
|
9350
9350
|
className: "mt-1"
|
|
9351
9351
|
}
|
|
9352
9352
|
),
|
|
9353
|
-
/* @__PURE__ */
|
|
9353
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-slate-900" }, addr.name), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-600" }, addr.street1), addr.street2 && /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-600" }, addr.street2), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-600" }, addr.city, ", ", addr.state, " ", addr.zip), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-600" }, addr.country), addr.phone && /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-600 mt-1" }, addr.phone), /* @__PURE__ */ React21.createElement("div", { className: "mt-3 flex items-center gap-2" }, addr.isDefault && /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-primary-100 px-2.5 py-0.5 text-xs font-semibold text-primary-700" }, "Default"), /* @__PURE__ */ React21.createElement(
|
|
9354
9354
|
"button",
|
|
9355
9355
|
{
|
|
9356
9356
|
type: "button",
|
|
@@ -9361,9 +9361,9 @@ function CheckoutScreen() {
|
|
|
9361
9361
|
},
|
|
9362
9362
|
className: "inline-flex items-center gap-1 rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-medium text-slate-600 hover:border-primary-300 hover:text-primary-600"
|
|
9363
9363
|
},
|
|
9364
|
-
/* @__PURE__ */
|
|
9364
|
+
/* @__PURE__ */ React21.createElement(Edit3, { className: "h-3.5 w-3.5" }),
|
|
9365
9365
|
" Edit"
|
|
9366
|
-
), /* @__PURE__ */
|
|
9366
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9367
9367
|
"button",
|
|
9368
9368
|
{
|
|
9369
9369
|
type: "button",
|
|
@@ -9381,23 +9381,23 @@ function CheckoutScreen() {
|
|
|
9381
9381
|
},
|
|
9382
9382
|
className: "inline-flex items-center gap-1 rounded-full border border-red-200 px-2.5 py-0.5 text-xs font-semibold text-red-600 hover:border-red-300 hover:text-red-700"
|
|
9383
9383
|
},
|
|
9384
|
-
/* @__PURE__ */
|
|
9384
|
+
/* @__PURE__ */ React21.createElement(Trash2, { className: "h-3.5 w-3.5" }),
|
|
9385
9385
|
" Delete"
|
|
9386
9386
|
)))
|
|
9387
|
-
))) : /* @__PURE__ */
|
|
9387
|
+
))) : /* @__PURE__ */ React21.createElement("div", { className: "text-center py-8 bg-slate-50 rounded-lg" }, /* @__PURE__ */ React21.createElement(MapPin, { className: "h-12 w-12 mx-auto text-slate-400" }), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 text-slate-600" }, "No addresses found"), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, "Add a new address to continue"))), !isDelivery && storeAddresses.length > 0 && /* @__PURE__ */ React21.createElement("div", { className: "md:col-span-2" }, /* @__PURE__ */ React21.createElement("label", { className: "block mb-2 font-semibold" }, "Select Pickup Location"), /* @__PURE__ */ React21.createElement(
|
|
9388
9388
|
"select",
|
|
9389
9389
|
{
|
|
9390
9390
|
className: "w-full border rounded p-2",
|
|
9391
9391
|
value: selectedStoreAddressId || "",
|
|
9392
9392
|
onChange: (e) => setSelectedStoreAddressId(e.target.value)
|
|
9393
9393
|
},
|
|
9394
|
-
storeAddresses.map((addr) => /* @__PURE__ */
|
|
9394
|
+
storeAddresses.map((addr) => /* @__PURE__ */ React21.createElement("option", { key: addr.id, value: addr.id }, addr.name, " - ", addr.street1, ", ", addr.city))
|
|
9395
9395
|
)))),
|
|
9396
|
-
isDelivery && selectedAddressId && /* @__PURE__ */
|
|
9396
|
+
isDelivery && selectedAddressId && /* @__PURE__ */ React21.createElement(Card, { className: "p-6 border border-gray-200 rounded-xl shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 text-xl font-semibold text-gray-900 pb-4 mb-6 border-b" }, /* @__PURE__ */ React21.createElement(Truck, { className: "text-accent w-6 h-6" }), /* @__PURE__ */ React21.createElement("span", null, "Shipping Options")), shippingRatesLoading ? /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-center py-12" }, /* @__PURE__ */ React21.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-accent" }), /* @__PURE__ */ React21.createElement("span", { className: "ml-3 text-gray-600" }, "Loading shipping options...")) : shippingRatesError ? /* @__PURE__ */ React21.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React21.createElement("div", { className: "w-16 h-16 mx-auto mb-4 bg-red-100 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React21.createElement("svg", { className: "w-8 h-8 text-red-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }))), /* @__PURE__ */ React21.createElement("p", { className: "text-red-500 text-lg font-medium" }, "Error loading shipping options"), /* @__PURE__ */ React21.createElement("p", { className: "text-red-400 text-sm mt-1" }, shippingRatesError)) : shippingRates && shippingRates.length > 0 ? /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, shippingRates.map((rate) => {
|
|
9397
9397
|
const isSelected = !!selectedShippingRateId && selectedShippingRateId === rate.objectId;
|
|
9398
9398
|
const isTest = rate.test;
|
|
9399
9399
|
const hasAttributes = rate.attributes && rate.attributes.length > 0;
|
|
9400
|
-
return /* @__PURE__ */
|
|
9400
|
+
return /* @__PURE__ */ React21.createElement(
|
|
9401
9401
|
"div",
|
|
9402
9402
|
{
|
|
9403
9403
|
key: rate.objectId,
|
|
@@ -9406,7 +9406,7 @@ function CheckoutScreen() {
|
|
|
9406
9406
|
onMouseLeave: () => setShippingPrice(parseFloat(rate.amountLocal)),
|
|
9407
9407
|
className: `relative p-5 border-2 rounded-xl cursor-pointer transition-all duration-200 hover:shadow-md ${isSelected ? "border-primary-500 bg-primary-50 ring-2 ring-primary-200" : "border-gray-200 hover:border-gray-300"}`
|
|
9408
9408
|
},
|
|
9409
|
-
/* @__PURE__ */
|
|
9409
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-start justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-4 flex-1" }, /* @__PURE__ */ React21.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React21.createElement(
|
|
9410
9410
|
Image3,
|
|
9411
9411
|
{
|
|
9412
9412
|
src: rate.providerImage75 || "/placeholder-product.jpg",
|
|
@@ -9419,18 +9419,18 @@ function CheckoutScreen() {
|
|
|
9419
9419
|
width: 48,
|
|
9420
9420
|
height: 48
|
|
9421
9421
|
}
|
|
9422
|
-
)), /* @__PURE__ */
|
|
9422
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 mb-2" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, rate.provider, " ", rate.servicelevel?.name), isTest && /* @__PURE__ */ React21.createElement("span", { className: "px-2 py-1 text-xs font-medium bg-orange-100 text-orange-800 rounded-full" }, "TEST")), hasAttributes && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-2 mb-3" }, rate.attributes.map((attr) => /* @__PURE__ */ React21.createElement(
|
|
9423
9423
|
"span",
|
|
9424
9424
|
{
|
|
9425
9425
|
key: attr,
|
|
9426
9426
|
className: `px-2 py-1 text-xs font-medium rounded-full ${attr === "FASTEST" ? "bg-green-100 text-green-800" : attr === "BESTVALUE" ? "bg-blue-100 text-blue-800" : attr === "CHEAPEST" ? "bg-purple-100 text-purple-800" : "bg-gray-100 text-gray-800"}`
|
|
9427
9427
|
},
|
|
9428
9428
|
attr
|
|
9429
|
-
))), /* @__PURE__ */
|
|
9430
|
-
isSelected && /* @__PURE__ */
|
|
9429
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "space-y-1 text-sm text-gray-600" }, rate.durationTerms && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("svg", { className: "w-4 h-4 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" })), /* @__PURE__ */ React21.createElement("span", null, rate.durationTerms)), rate.estimatedDays && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("svg", { className: "w-4 h-4 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" })), /* @__PURE__ */ React21.createElement("span", null, "Estimated ", rate.estimatedDays, " day", rate.estimatedDays !== 1 ? "s" : "")), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("svg", { className: "w-4 h-4 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" })), /* @__PURE__ */ React21.createElement("span", null, "Carrier: ", rate.provider)), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("svg", { className: "w-4 h-4 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1" })), /* @__PURE__ */ React21.createElement("span", null, "Currency: ", rate.currency))))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col items-end" }, /* @__PURE__ */ React21.createElement("div", { className: "text-2xl font-bold text-gray-900" }, formatPrice(parseFloat(rate.amount))), rate.amount !== rate.amountLocal && /* @__PURE__ */ React21.createElement("div", { className: "text-sm text-gray-500" }, rate.amountLocal, " ", rate.currencyLocal))),
|
|
9430
|
+
isSelected && /* @__PURE__ */ React21.createElement("div", { className: "absolute top-3 right-3" }, /* @__PURE__ */ React21.createElement("div", { className: "w-6 h-6 bg-primary-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React21.createElement(Check, { className: "w-4 h-4 text-white" })))
|
|
9431
9431
|
);
|
|
9432
|
-
})) : /* @__PURE__ */
|
|
9433
|
-
), /* @__PURE__ */
|
|
9432
|
+
})) : /* @__PURE__ */ React21.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React21.createElement("div", { className: "w-16 h-16 mx-auto mb-4 bg-gray-100 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React21.createElement(Truck, { className: "w-8 h-8 text-gray-400" })), /* @__PURE__ */ React21.createElement("p", { className: "text-gray-500 text-lg font-medium" }, "No shipping options available"), /* @__PURE__ */ React21.createElement("p", { className: "text-gray-400 text-sm mt-1" }, "Please check the shipping address or try a different location.")))
|
|
9433
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9434
9434
|
motion.aside,
|
|
9435
9435
|
{
|
|
9436
9436
|
initial: { opacity: 0, y: 32 },
|
|
@@ -9438,22 +9438,22 @@ function CheckoutScreen() {
|
|
|
9438
9438
|
transition: { duration: 0.5, ease: "easeOut", delay: 0.1 },
|
|
9439
9439
|
className: "space-y-10 lg:sticky lg:top-24"
|
|
9440
9440
|
},
|
|
9441
|
-
/* @__PURE__ */
|
|
9441
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-xl shadow-primary-50/50 transition hover:shadow-primary-100/60" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-2xl font-semibold text-slate-900" }, "Order Summary"), /* @__PURE__ */ React21.createElement("section", { className: "mt-6 space-y-4" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-xs font-semibold text-slate-700 uppercase tracking-wider" }, "Delivery Method"), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-3" }, [
|
|
9442
9442
|
{
|
|
9443
9443
|
label: "Delivery",
|
|
9444
|
-
icon: /* @__PURE__ */
|
|
9444
|
+
icon: /* @__PURE__ */ React21.createElement(Truck, { className: "w-5 h-5" }),
|
|
9445
9445
|
value: true,
|
|
9446
9446
|
desc: "Shipped to your address"
|
|
9447
9447
|
},
|
|
9448
9448
|
{
|
|
9449
9449
|
label: "Pickup",
|
|
9450
|
-
icon: /* @__PURE__ */
|
|
9450
|
+
icon: /* @__PURE__ */ React21.createElement(MapPin, { className: "w-5 h-5" }),
|
|
9451
9451
|
value: false,
|
|
9452
9452
|
desc: "Collect from pharmacy"
|
|
9453
9453
|
}
|
|
9454
9454
|
].map((option) => {
|
|
9455
9455
|
const active = isDelivery === option.value;
|
|
9456
|
-
return /* @__PURE__ */
|
|
9456
|
+
return /* @__PURE__ */ React21.createElement(
|
|
9457
9457
|
"button",
|
|
9458
9458
|
{
|
|
9459
9459
|
key: option.label,
|
|
@@ -9462,18 +9462,18 @@ function CheckoutScreen() {
|
|
|
9462
9462
|
"aria-pressed": active,
|
|
9463
9463
|
className: `relative flex w-full items-center justify-between rounded-xl border-2 p-3 transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400 focus-visible:ring-offset-2 ${active ? "border-primary-500 bg-primary-50 shadow-sm" : "border-slate-200 bg-white hover:border-primary-200 hover:bg-primary-50/40"}`
|
|
9464
9464
|
},
|
|
9465
|
-
/* @__PURE__ */
|
|
9465
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(
|
|
9466
9466
|
"div",
|
|
9467
9467
|
{
|
|
9468
9468
|
className: `p-2 rounded-lg ${active ? "bg-primary-100 text-primary-600" : "bg-slate-100 text-slate-600 group-hover:bg-slate-50"}`
|
|
9469
9469
|
},
|
|
9470
9470
|
option.icon
|
|
9471
|
-
), /* @__PURE__ */
|
|
9472
|
-
active && /* @__PURE__ */
|
|
9471
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "text-left" }, /* @__PURE__ */ React21.createElement("div", { className: "font-medium text-slate-900" }, option.label), /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-slate-500" }, option.desc))),
|
|
9472
|
+
active && /* @__PURE__ */ React21.createElement("div", { className: "w-5 h-5 rounded-full bg-primary-500 flex items-center justify-center text-white shadow-sm" }, /* @__PURE__ */ React21.createElement(Check, { className: "w-3 h-3" }))
|
|
9473
9473
|
);
|
|
9474
|
-
}))), /* @__PURE__ */
|
|
9474
|
+
}))), /* @__PURE__ */ React21.createElement("section", { className: "mt-8 space-y-4" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-xs font-semibold text-slate-700 uppercase tracking-wider" }, "Payment Method"), /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, PAYMENT_METHODS.map((pm) => {
|
|
9475
9475
|
const active = paymentMethod === pm.value;
|
|
9476
|
-
return /* @__PURE__ */
|
|
9476
|
+
return /* @__PURE__ */ React21.createElement(
|
|
9477
9477
|
"button",
|
|
9478
9478
|
{
|
|
9479
9479
|
key: pm.value,
|
|
@@ -9481,22 +9481,22 @@ function CheckoutScreen() {
|
|
|
9481
9481
|
onClick: () => setPaymentMethod(pm.value),
|
|
9482
9482
|
className: `w-full flex items-center justify-between rounded-xl border-2 p-3 transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${active ? `${pm.activeClass} border-current shadow-sm` : `${pm.className} border-slate-200 hover:border-primary-200 hover:shadow-sm`}`
|
|
9483
9483
|
},
|
|
9484
|
-
/* @__PURE__ */
|
|
9484
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(
|
|
9485
9485
|
"div",
|
|
9486
9486
|
{
|
|
9487
9487
|
className: `p-1.5 rounded-md ${pm.value === "Card" ? "bg-blue-100 text-blue-600" : pm.value === "Cash" ? "bg-amber-100 text-amber-600" : "bg-emerald-100 text-emerald-600"} ${active ? "bg-opacity-30" : "bg-opacity-100"}`
|
|
9488
9488
|
},
|
|
9489
9489
|
pm.icon
|
|
9490
|
-
), /* @__PURE__ */
|
|
9491
|
-
active && /* @__PURE__ */
|
|
9490
|
+
), /* @__PURE__ */ React21.createElement("span", { className: "text-sm font-medium text-slate-900" }, pm.label)),
|
|
9491
|
+
active && /* @__PURE__ */ React21.createElement("div", { className: "w-4 h-4 rounded-full bg-primary-500 flex items-center justify-center text-white shadow-sm" }, /* @__PURE__ */ React21.createElement(Check, { className: "w-2.5 h-2.5" }))
|
|
9492
9492
|
);
|
|
9493
|
-
})), /* @__PURE__ */
|
|
9493
|
+
})), /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-slate-500 mt-2 pl-1 leading-relaxed" }, paymentMethod === "Card" && "You will be redirected to a secure payment page.", paymentMethod === "Cash" && "Pay with cash at the time of delivery or pickup.", paymentMethod === "Credit" && "Use your available account credit for this order.")), /* @__PURE__ */ React21.createElement("section", { className: "mt-8 pt-6 border-t border-slate-100" }, /* @__PURE__ */ React21.createElement("div", { className: "max-h-60 space-y-4 overflow-y-auto pr-2 scrollbar-thin scrollbar-thumb-slate-200 hover:scrollbar-thumb-slate-300" }, cart?.cartBody?.items?.map((item) => /* @__PURE__ */ React21.createElement(
|
|
9494
9494
|
"div",
|
|
9495
9495
|
{
|
|
9496
9496
|
key: item.productId,
|
|
9497
9497
|
className: "flex gap-4 rounded-2xl border border-slate-100 p-4 hover:bg-slate-50/50 transition"
|
|
9498
9498
|
},
|
|
9499
|
-
/* @__PURE__ */
|
|
9499
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex h-16 w-16 items-center justify-center rounded-xl bg-slate-100 text-slate-400" }, /* @__PURE__ */ React21.createElement(
|
|
9500
9500
|
Image3,
|
|
9501
9501
|
{
|
|
9502
9502
|
src: item.productVariantData.productMedia?.[0]?.file || "/placeholder-product.jpg",
|
|
@@ -9506,9 +9506,9 @@ function CheckoutScreen() {
|
|
|
9506
9506
|
className: "object-contain"
|
|
9507
9507
|
}
|
|
9508
9508
|
)),
|
|
9509
|
-
/* @__PURE__ */
|
|
9510
|
-
/* @__PURE__ */
|
|
9511
|
-
))), /* @__PURE__ */
|
|
9509
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold text-slate-900" }, item?.productVariantData?.name), /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-slate-500" }, "Qty ", item.quantity)),
|
|
9510
|
+
/* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold text-slate-900" }, formatPrice(item.productVariantData.finalPrice * item.quantity))
|
|
9511
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "mt-6 space-y-3 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("span", null, "Subtotal"), /* @__PURE__ */ React21.createElement("span", { className: "font-semibold text-slate-900" }, formatPrice(subtotal))), isDelivery && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("span", null, "Shipping"), /* @__PURE__ */ React21.createElement("span", { className: "font-semibold" }, formatPrice(shippingPrice))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("span", null, "Estimated tax"), /* @__PURE__ */ React21.createElement("span", { className: "font-semibold" }, formatPrice(tax))), /* @__PURE__ */ React21.createElement("div", { className: "rounded-2xl bg-slate-50 p-4" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between text-base font-semibold text-slate-900" }, /* @__PURE__ */ React21.createElement("span", null, "Total Due"), /* @__PURE__ */ React21.createElement("span", null, formatPrice(total))), /* @__PURE__ */ React21.createElement("p", { className: "mt-1 text-xs text-slate-500" }, "Tax is estimated. Final amount confirmed after payment.")))), /* @__PURE__ */ React21.createElement(
|
|
9512
9512
|
Button,
|
|
9513
9513
|
{
|
|
9514
9514
|
type: "submit",
|
|
@@ -9516,11 +9516,11 @@ function CheckoutScreen() {
|
|
|
9516
9516
|
isLoading: isSubmitting,
|
|
9517
9517
|
className: "mt-6 w-full transition-transform hover:scale-[1.02] active:scale-[0.99]"
|
|
9518
9518
|
},
|
|
9519
|
-
/* @__PURE__ */
|
|
9519
|
+
/* @__PURE__ */ React21.createElement(CreditCard, { className: "h-5 w-5" }),
|
|
9520
9520
|
isSubmitting ? "Placing order..." : "Place Secure Order"
|
|
9521
|
-
), /* @__PURE__ */
|
|
9522
|
-
/* @__PURE__ */
|
|
9523
|
-
))), /* @__PURE__ */
|
|
9521
|
+
), /* @__PURE__ */ React21.createElement("p", { className: "mt-4 flex items-center justify-center gap-2 text-xs text-slate-500" }, /* @__PURE__ */ React21.createElement(Lock, { className: "h-4 w-4" }), "Fully encrypted checkout \u2014 cancel anytime before shipment.")),
|
|
9522
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-primary-100 bg-primary-50/80 p-6 text-sm text-primary-700 shadow-sm hover:shadow-md transition-shadow" }, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold uppercase tracking-[0.3em] text-primary-800" }, "Why Patients Choose Us"), /* @__PURE__ */ React21.createElement("ul", { className: "mt-4 space-y-3 text-primary-700 leading-relaxed" }, /* @__PURE__ */ React21.createElement("li", { className: "flex items-start gap-3" }, /* @__PURE__ */ React21.createElement(PackageCheck, { className: "mt-0.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ React21.createElement("span", null, "Pharmacy-grade verification on every order.")), /* @__PURE__ */ React21.createElement("li", { className: "flex items-start gap-3" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "mt-0.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ React21.createElement("span", null, "Cold-chain logistics for sensitive medications.")), /* @__PURE__ */ React21.createElement("li", { className: "flex items-start gap-3" }, /* @__PURE__ */ React21.createElement(Truck, { className: "mt-0.5 h-4 w-4 shrink-0" }), /* @__PURE__ */ React21.createElement("span", null, "Real-time tracking and SMS updates from prep to delivery."))))
|
|
9523
|
+
))), /* @__PURE__ */ React21.createElement(
|
|
9524
9524
|
AddressFormModal,
|
|
9525
9525
|
{
|
|
9526
9526
|
isOpen: isAddressModalOpen,
|
|
@@ -9576,7 +9576,7 @@ function LoginScreen() {
|
|
|
9576
9576
|
setIsSubmitting(false);
|
|
9577
9577
|
}
|
|
9578
9578
|
};
|
|
9579
|
-
return /* @__PURE__ */
|
|
9579
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("div", { className: "grid min-h-screen overflow-hidden bg-white lg:grid-cols-[1.1fr_0.9fr]" }, /* @__PURE__ */ React21.createElement(
|
|
9580
9580
|
motion.section,
|
|
9581
9581
|
{
|
|
9582
9582
|
initial: { opacity: 0, x: -24 },
|
|
@@ -9584,18 +9584,18 @@ function LoginScreen() {
|
|
|
9584
9584
|
transition: { duration: 0.4 },
|
|
9585
9585
|
className: "relative flex flex-col justify-between bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] px-10 py-14 text-white"
|
|
9586
9586
|
},
|
|
9587
|
-
/* @__PURE__ */
|
|
9588
|
-
/* @__PURE__ */
|
|
9589
|
-
/* @__PURE__ */
|
|
9587
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(HeartPulse, { className: "h-4 w-4" }), "Hey Pharmacist"), /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold leading-tight lg:text-5xl" }, "Pharmacy-grade care for your household"), /* @__PURE__ */ React21.createElement("p", { className: "max-w-xl text-white/80" }, "Log in to unlock personalized regimens, pharmacist support, and fast delivery on wellness essentials curated just for you.")),
|
|
9588
|
+
/* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 rounded-3xl bg-white/10 p-6 backdrop-blur" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "h-5 w-5 text-white" }), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-white/80" }, "HIPAA-compliant security keeps your health information protected.")), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-5 w-5 text-white" }), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-white/80" }, "Pharmacists ready to chat in under 10 minutes for medication support."))),
|
|
9589
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-6 text-sm text-white/80" }, /* @__PURE__ */ React21.createElement("span", null, "Need an account?"), /* @__PURE__ */ React21.createElement(
|
|
9590
9590
|
Link8,
|
|
9591
9591
|
{
|
|
9592
9592
|
href: "/register",
|
|
9593
9593
|
className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-4 py-2 font-semibold transition hover:bg-white/25"
|
|
9594
9594
|
},
|
|
9595
9595
|
"Create one now",
|
|
9596
|
-
/* @__PURE__ */
|
|
9596
|
+
/* @__PURE__ */ React21.createElement(ArrowRight, { className: "h-4 w-4" })
|
|
9597
9597
|
))
|
|
9598
|
-
), /* @__PURE__ */
|
|
9598
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9599
9599
|
motion.section,
|
|
9600
9600
|
{
|
|
9601
9601
|
initial: { opacity: 0, x: 24 },
|
|
@@ -9603,7 +9603,7 @@ function LoginScreen() {
|
|
|
9603
9603
|
transition: { duration: 0.4 },
|
|
9604
9604
|
className: "flex items-center justify-center px-6 py-12 lg:px-16"
|
|
9605
9605
|
},
|
|
9606
|
-
/* @__PURE__ */
|
|
9606
|
+
/* @__PURE__ */ React21.createElement("div", { className: "w-full max-w-md space-y-10" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-3xl font-bold text-slate-900" }, "Sign in"), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, "Welcome back! Enter your details to continue your personalized care plan.")), /* @__PURE__ */ React21.createElement("form", { onSubmit: handleSubmit(onSubmit), className: "space-y-6 rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement(
|
|
9607
9607
|
Input,
|
|
9608
9608
|
{
|
|
9609
9609
|
type: "email",
|
|
@@ -9612,7 +9612,7 @@ function LoginScreen() {
|
|
|
9612
9612
|
...register("email"),
|
|
9613
9613
|
error: errors.email?.message
|
|
9614
9614
|
}
|
|
9615
|
-
)), /* @__PURE__ */
|
|
9615
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
9616
9616
|
Input,
|
|
9617
9617
|
{
|
|
9618
9618
|
type: showPassword ? "text" : "password",
|
|
@@ -9621,28 +9621,28 @@ function LoginScreen() {
|
|
|
9621
9621
|
...register("password"),
|
|
9622
9622
|
error: errors.password?.message
|
|
9623
9623
|
}
|
|
9624
|
-
), /* @__PURE__ */
|
|
9624
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9625
9625
|
"button",
|
|
9626
9626
|
{
|
|
9627
9627
|
type: "button",
|
|
9628
9628
|
onClick: () => setShowPassword((prev) => !prev),
|
|
9629
9629
|
className: "absolute right-3 top-[42px] text-slate-400 transition hover:text-slate-600"
|
|
9630
9630
|
},
|
|
9631
|
-
showPassword ? /* @__PURE__ */
|
|
9632
|
-
)), /* @__PURE__ */
|
|
9631
|
+
showPassword ? /* @__PURE__ */ React21.createElement(EyeOff, { className: "h-5 w-5" }) : /* @__PURE__ */ React21.createElement(Eye, { className: "h-5 w-5" })
|
|
9632
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between text-sm" }, /* @__PURE__ */ React21.createElement("label", { className: "flex items-center gap-2 text-slate-600" }, /* @__PURE__ */ React21.createElement(
|
|
9633
9633
|
"input",
|
|
9634
9634
|
{
|
|
9635
9635
|
type: "checkbox",
|
|
9636
9636
|
className: "h-4 w-4 rounded border-slate-300 text-primary-600 focus:ring-primary-500"
|
|
9637
9637
|
}
|
|
9638
|
-
), "Remember me"), /* @__PURE__ */
|
|
9638
|
+
), "Remember me"), /* @__PURE__ */ React21.createElement(
|
|
9639
9639
|
Link8,
|
|
9640
9640
|
{
|
|
9641
9641
|
href: "/forgot-password",
|
|
9642
9642
|
className: "font-medium text-primary-600 transition hover:text-primary-700"
|
|
9643
9643
|
},
|
|
9644
9644
|
"Forgot password?"
|
|
9645
|
-
)), /* @__PURE__ */
|
|
9645
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
9646
9646
|
Button,
|
|
9647
9647
|
{
|
|
9648
9648
|
type: "submit",
|
|
@@ -9651,7 +9651,7 @@ function LoginScreen() {
|
|
|
9651
9651
|
className: "w-full"
|
|
9652
9652
|
},
|
|
9653
9653
|
"Sign in securely"
|
|
9654
|
-
)), /* @__PURE__ */
|
|
9654
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-slate-50 p-6 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React21.createElement(Lock, { className: "mt-0.5 h-5 w-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-slate-800" }, "Secure by design"), /* @__PURE__ */ React21.createElement("p", null, "Encrypted sessions, multi-factor ready, and privacy-first policies keep your personal data safe.")))))
|
|
9655
9655
|
)));
|
|
9656
9656
|
}
|
|
9657
9657
|
var registerSchema = z.object({
|
|
@@ -9702,7 +9702,7 @@ function RegisterScreen() {
|
|
|
9702
9702
|
setIsSubmitting(false);
|
|
9703
9703
|
}
|
|
9704
9704
|
};
|
|
9705
|
-
return /* @__PURE__ */
|
|
9705
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("div", { className: "grid min-h-screen overflow-hidden bg-white lg:grid-cols-[0.95fr_1.05fr]" }, /* @__PURE__ */ React21.createElement(
|
|
9706
9706
|
motion.section,
|
|
9707
9707
|
{
|
|
9708
9708
|
initial: { opacity: 0, x: -24 },
|
|
@@ -9710,9 +9710,9 @@ function RegisterScreen() {
|
|
|
9710
9710
|
transition: { duration: 0.4 },
|
|
9711
9711
|
className: "flex flex-col justify-between bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] px-10 py-14 text-white"
|
|
9712
9712
|
},
|
|
9713
|
-
/* @__PURE__ */
|
|
9714
|
-
/* @__PURE__ */
|
|
9715
|
-
/* @__PURE__ */
|
|
9713
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(HeartPulse, { className: "h-4 w-4" }), "Join Hey Pharmacist"), /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold leading-tight lg:text-5xl" }, "Create your wellness account"), /* @__PURE__ */ React21.createElement("p", { className: "max-w-xl text-white/80" }, "Unlock concierge-level pharmacy support, curated product recommendations, and smarter refills designed for busy families.")),
|
|
9714
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-4 rounded-3xl bg-white/10 p-6 backdrop-blur" }, BENEFITS.map((benefit) => /* @__PURE__ */ React21.createElement("div", { key: benefit, className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(CheckCircle2, { className: "h-5 w-5 text-white" }), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-white/85" }, benefit)))),
|
|
9715
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-6 text-sm text-white/80" }, /* @__PURE__ */ React21.createElement("span", null, "Already part of the community?"), /* @__PURE__ */ React21.createElement(
|
|
9716
9716
|
Link8,
|
|
9717
9717
|
{
|
|
9718
9718
|
href: "/login",
|
|
@@ -9720,7 +9720,7 @@ function RegisterScreen() {
|
|
|
9720
9720
|
},
|
|
9721
9721
|
"Sign in"
|
|
9722
9722
|
))
|
|
9723
|
-
), /* @__PURE__ */
|
|
9723
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9724
9724
|
motion.section,
|
|
9725
9725
|
{
|
|
9726
9726
|
initial: { opacity: 0, x: 24 },
|
|
@@ -9728,13 +9728,13 @@ function RegisterScreen() {
|
|
|
9728
9728
|
transition: { duration: 0.4 },
|
|
9729
9729
|
className: "flex items-center justify-center px-6 py-12 lg:px-16"
|
|
9730
9730
|
},
|
|
9731
|
-
/* @__PURE__ */
|
|
9731
|
+
/* @__PURE__ */ React21.createElement("div", { className: "w-full max-w-lg space-y-10" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-3xl font-bold text-slate-900" }, "Create an account"), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, "Start your personalized care journey with pharmacist-backed guidance.")), /* @__PURE__ */ React21.createElement(
|
|
9732
9732
|
"form",
|
|
9733
9733
|
{
|
|
9734
9734
|
onSubmit: handleSubmit(onSubmit),
|
|
9735
9735
|
className: "space-y-6 rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-50"
|
|
9736
9736
|
},
|
|
9737
|
-
/* @__PURE__ */
|
|
9737
|
+
/* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement(
|
|
9738
9738
|
Input,
|
|
9739
9739
|
{
|
|
9740
9740
|
label: "First name",
|
|
@@ -9742,7 +9742,7 @@ function RegisterScreen() {
|
|
|
9742
9742
|
...register("firstName"),
|
|
9743
9743
|
error: errors.firstName?.message
|
|
9744
9744
|
}
|
|
9745
|
-
), /* @__PURE__ */
|
|
9745
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9746
9746
|
Input,
|
|
9747
9747
|
{
|
|
9748
9748
|
label: "Last name",
|
|
@@ -9751,7 +9751,7 @@ function RegisterScreen() {
|
|
|
9751
9751
|
error: errors.lastName?.message
|
|
9752
9752
|
}
|
|
9753
9753
|
)),
|
|
9754
|
-
/* @__PURE__ */
|
|
9754
|
+
/* @__PURE__ */ React21.createElement(
|
|
9755
9755
|
Input,
|
|
9756
9756
|
{
|
|
9757
9757
|
type: "email",
|
|
@@ -9761,7 +9761,7 @@ function RegisterScreen() {
|
|
|
9761
9761
|
error: errors.email?.message
|
|
9762
9762
|
}
|
|
9763
9763
|
),
|
|
9764
|
-
/* @__PURE__ */
|
|
9764
|
+
/* @__PURE__ */ React21.createElement(
|
|
9765
9765
|
Input,
|
|
9766
9766
|
{
|
|
9767
9767
|
type: "tel",
|
|
@@ -9771,7 +9771,7 @@ function RegisterScreen() {
|
|
|
9771
9771
|
error: errors.phone?.message
|
|
9772
9772
|
}
|
|
9773
9773
|
),
|
|
9774
|
-
/* @__PURE__ */
|
|
9774
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
9775
9775
|
Input,
|
|
9776
9776
|
{
|
|
9777
9777
|
type: showPassword ? "text" : "password",
|
|
@@ -9780,16 +9780,16 @@ function RegisterScreen() {
|
|
|
9780
9780
|
...register("password"),
|
|
9781
9781
|
error: errors.password?.message
|
|
9782
9782
|
}
|
|
9783
|
-
), /* @__PURE__ */
|
|
9783
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9784
9784
|
"button",
|
|
9785
9785
|
{
|
|
9786
9786
|
type: "button",
|
|
9787
9787
|
onClick: () => setShowPassword((prev) => !prev),
|
|
9788
9788
|
className: "absolute right-3 top-[42px] text-slate-400 transition hover:text-slate-600"
|
|
9789
9789
|
},
|
|
9790
|
-
showPassword ? /* @__PURE__ */
|
|
9790
|
+
showPassword ? /* @__PURE__ */ React21.createElement(EyeOff, { className: "h-5 w-5" }) : /* @__PURE__ */ React21.createElement(Eye, { className: "h-5 w-5" })
|
|
9791
9791
|
)),
|
|
9792
|
-
/* @__PURE__ */
|
|
9792
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
9793
9793
|
Input,
|
|
9794
9794
|
{
|
|
9795
9795
|
type: showConfirmPassword ? "text" : "password",
|
|
@@ -9798,16 +9798,16 @@ function RegisterScreen() {
|
|
|
9798
9798
|
...register("confirmPassword"),
|
|
9799
9799
|
error: errors.confirmPassword?.message
|
|
9800
9800
|
}
|
|
9801
|
-
), /* @__PURE__ */
|
|
9801
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9802
9802
|
"button",
|
|
9803
9803
|
{
|
|
9804
9804
|
type: "button",
|
|
9805
9805
|
onClick: () => setShowConfirmPassword((prev) => !prev),
|
|
9806
9806
|
className: "absolute right-3 top-[42px] text-slate-400 transition hover:text-slate-600"
|
|
9807
9807
|
},
|
|
9808
|
-
showConfirmPassword ? /* @__PURE__ */
|
|
9808
|
+
showConfirmPassword ? /* @__PURE__ */ React21.createElement(EyeOff, { className: "h-5 w-5" }) : /* @__PURE__ */ React21.createElement(Eye, { className: "h-5 w-5" })
|
|
9809
9809
|
)),
|
|
9810
|
-
/* @__PURE__ */
|
|
9810
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3 rounded-2xl bg-slate-50 p-4 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement(Shield, { className: "mt-0.5 h-5 w-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("span", null, "By creating an account, you agree to our", " ", /* @__PURE__ */ React21.createElement(Link8, { href: "/terms", className: "font-semibold text-primary-600 hover:text-primary-700" }, "Terms of Service"), " ", "and", " ", /* @__PURE__ */ React21.createElement(
|
|
9811
9811
|
Link8,
|
|
9812
9812
|
{
|
|
9813
9813
|
href: "/privacy",
|
|
@@ -9815,7 +9815,7 @@ function RegisterScreen() {
|
|
|
9815
9815
|
},
|
|
9816
9816
|
"Privacy Policy"
|
|
9817
9817
|
), ". We protect your information with bank-level encryption.")),
|
|
9818
|
-
/* @__PURE__ */
|
|
9818
|
+
/* @__PURE__ */ React21.createElement(
|
|
9819
9819
|
Button,
|
|
9820
9820
|
{
|
|
9821
9821
|
type: "submit",
|
|
@@ -9823,10 +9823,10 @@ function RegisterScreen() {
|
|
|
9823
9823
|
isLoading: isSubmitting,
|
|
9824
9824
|
className: "w-full"
|
|
9825
9825
|
},
|
|
9826
|
-
/* @__PURE__ */
|
|
9826
|
+
/* @__PURE__ */ React21.createElement(UserPlus, { className: "h-5 w-5" }),
|
|
9827
9827
|
"Create my account"
|
|
9828
9828
|
)
|
|
9829
|
-
), /* @__PURE__ */
|
|
9829
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-slate-50 p-6 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React21.createElement(Heart, { className: "mt-0.5 h-5 w-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-slate-800" }, "Members love us"), /* @__PURE__ */ React21.createElement("p", null, "92% of patients report improved adherence after receiving pharmacist touchpoints through their Hey Pharmacist account.")))))
|
|
9830
9830
|
)));
|
|
9831
9831
|
}
|
|
9832
9832
|
var profileSchema = z.object({
|
|
@@ -9893,15 +9893,15 @@ function ProfileScreen() {
|
|
|
9893
9893
|
href: buildPath("/account/addresses")
|
|
9894
9894
|
}
|
|
9895
9895
|
];
|
|
9896
|
-
return /* @__PURE__ */
|
|
9896
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement(
|
|
9897
9897
|
motion.div,
|
|
9898
9898
|
{
|
|
9899
9899
|
initial: { opacity: 0, y: 24 },
|
|
9900
9900
|
animate: { opacity: 1, y: 0 },
|
|
9901
9901
|
className: "flex flex-col gap-8 md:flex-row md:items-center md:justify-between"
|
|
9902
9902
|
},
|
|
9903
|
-
/* @__PURE__ */
|
|
9904
|
-
/* @__PURE__ */
|
|
9903
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-5" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(HeartPulse, { className: "h-4 w-4" }), "My account"), /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "Hello, ", user.firstname, " ", user.lastname), /* @__PURE__ */ React21.createElement("p", { className: "max-w-2xl text-white/80 md:text-lg" }, "Manage profile details, shipping preferences, and personalized recommendations. Our pharmacists keep your care plan up to date."), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-4 text-sm text-white/80" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-4 py-2" }, /* @__PURE__ */ React21.createElement(ShieldCheck, { className: "h-4 w-4" }), "Account secured with multi-factor ready login"))),
|
|
9904
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-col items-center gap-4 rounded-3xl bg-white/15 p-6 text-center backdrop-blur" }, /* @__PURE__ */ React21.createElement("div", { className: "flex h-24 w-24 items-center justify-center rounded-full bg-white/20 text-3xl font-bold text-white" }, getInitials(user?.firstname || "", user?.lastname || "") || ""), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-white/80" }, user.email), /* @__PURE__ */ React21.createElement(
|
|
9905
9905
|
Button,
|
|
9906
9906
|
{
|
|
9907
9907
|
variant: "ghost",
|
|
@@ -9910,14 +9910,14 @@ function ProfileScreen() {
|
|
|
9910
9910
|
},
|
|
9911
9911
|
"Change password"
|
|
9912
9912
|
))
|
|
9913
|
-
))), /* @__PURE__ */
|
|
9913
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-20" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]" }, /* @__PURE__ */ React21.createElement(
|
|
9914
9914
|
motion.div,
|
|
9915
9915
|
{
|
|
9916
9916
|
initial: { opacity: 0, y: 24 },
|
|
9917
9917
|
animate: { opacity: 1, y: 0 },
|
|
9918
9918
|
className: "space-y-6"
|
|
9919
9919
|
},
|
|
9920
|
-
/* @__PURE__ */
|
|
9920
|
+
/* @__PURE__ */ React21.createElement("section", { className: "rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-xl font-semibold text-slate-900" }, "Personal information"), /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-5 w-5 text-primary-500" })), /* @__PURE__ */ React21.createElement("form", { onSubmit: handleSubmit(onSubmit), className: "mt-6 space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement(
|
|
9921
9921
|
Input,
|
|
9922
9922
|
{
|
|
9923
9923
|
label: "First name",
|
|
@@ -9925,7 +9925,7 @@ function ProfileScreen() {
|
|
|
9925
9925
|
...register("firstName"),
|
|
9926
9926
|
error: errors.firstName?.message
|
|
9927
9927
|
}
|
|
9928
|
-
), /* @__PURE__ */
|
|
9928
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9929
9929
|
Input,
|
|
9930
9930
|
{
|
|
9931
9931
|
label: "Last name",
|
|
@@ -9933,7 +9933,7 @@ function ProfileScreen() {
|
|
|
9933
9933
|
...register("lastName"),
|
|
9934
9934
|
error: errors.lastName?.message
|
|
9935
9935
|
}
|
|
9936
|
-
)), /* @__PURE__ */
|
|
9936
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
9937
9937
|
Input,
|
|
9938
9938
|
{
|
|
9939
9939
|
type: "email",
|
|
@@ -9943,7 +9943,7 @@ function ProfileScreen() {
|
|
|
9943
9943
|
...register("email"),
|
|
9944
9944
|
error: errors.email?.message
|
|
9945
9945
|
}
|
|
9946
|
-
), /* @__PURE__ */
|
|
9946
|
+
), /* @__PURE__ */ React21.createElement(Mail, { className: "absolute left-3 top-[38px] h-4 w-4 text-slate-400" })), /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
9947
9947
|
Input,
|
|
9948
9948
|
{
|
|
9949
9949
|
type: "tel",
|
|
@@ -9953,7 +9953,7 @@ function ProfileScreen() {
|
|
|
9953
9953
|
...register("phone"),
|
|
9954
9954
|
error: errors.phone?.message
|
|
9955
9955
|
}
|
|
9956
|
-
), /* @__PURE__ */
|
|
9956
|
+
), /* @__PURE__ */ React21.createElement(Phone, { className: "absolute left-3 top-[38px] h-4 w-4 text-slate-400" })), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-4" }, /* @__PURE__ */ React21.createElement(
|
|
9957
9957
|
Button,
|
|
9958
9958
|
{
|
|
9959
9959
|
type: "submit",
|
|
@@ -9961,7 +9961,7 @@ function ProfileScreen() {
|
|
|
9961
9961
|
isLoading: isSubmitting
|
|
9962
9962
|
},
|
|
9963
9963
|
"Save changes"
|
|
9964
|
-
), /* @__PURE__ */
|
|
9964
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9965
9965
|
Button,
|
|
9966
9966
|
{
|
|
9967
9967
|
type: "button",
|
|
@@ -9971,16 +9971,16 @@ function ProfileScreen() {
|
|
|
9971
9971
|
},
|
|
9972
9972
|
"View recent orders"
|
|
9973
9973
|
)))),
|
|
9974
|
-
/* @__PURE__ */
|
|
9974
|
+
/* @__PURE__ */ React21.createElement("section", { className: "grid gap-4 md:grid-cols-2" }, quickLinks.map((item) => /* @__PURE__ */ React21.createElement(
|
|
9975
9975
|
Link8,
|
|
9976
9976
|
{
|
|
9977
9977
|
key: item.href,
|
|
9978
9978
|
href: item.href,
|
|
9979
9979
|
className: "group rounded-3xl border border-slate-100 bg-white p-6 shadow-sm transition hover:-translate-y-1 hover:shadow-lg"
|
|
9980
9980
|
},
|
|
9981
|
-
/* @__PURE__ */
|
|
9981
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement("span", { className: "rounded-2xl bg-primary-50 p-3 text-primary-600" }, /* @__PURE__ */ React21.createElement(item.icon, { className: "h-5 w-5" })), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "text-base font-semibold text-slate-900 group-hover:text-primary-600" }, item.label), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, item.description)))
|
|
9982
9982
|
)))
|
|
9983
|
-
), /* @__PURE__ */
|
|
9983
|
+
), /* @__PURE__ */ React21.createElement(
|
|
9984
9984
|
motion.aside,
|
|
9985
9985
|
{
|
|
9986
9986
|
initial: { opacity: 0, y: 24 },
|
|
@@ -9988,7 +9988,7 @@ function ProfileScreen() {
|
|
|
9988
9988
|
transition: { delay: 0.1 },
|
|
9989
9989
|
className: "space-y-6"
|
|
9990
9990
|
},
|
|
9991
|
-
/* @__PURE__ */
|
|
9991
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-slate-900" }, "Care preferences"), /* @__PURE__ */ React21.createElement("p", { className: "mt-3 text-sm text-slate-600" }, "Customize how we support you. Set refill reminders or manage communication preferences to stay aligned with your wellness goals."), /* @__PURE__ */ React21.createElement(
|
|
9992
9992
|
Button,
|
|
9993
9993
|
{
|
|
9994
9994
|
variant: "outline",
|
|
@@ -9997,14 +9997,14 @@ function ProfileScreen() {
|
|
|
9997
9997
|
},
|
|
9998
9998
|
"Manage preferences"
|
|
9999
9999
|
)),
|
|
10000
|
-
/* @__PURE__ */
|
|
10001
|
-
/* @__PURE__ */
|
|
10000
|
+
/* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm" }, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold uppercase tracking-[0.3em]" }, "Pharmacist tip"), /* @__PURE__ */ React21.createElement("p", { className: "mt-3 leading-relaxed" }, "Keep your phone number current so pharmacists can reach you quickly with dosage advice or time-sensitive updates about your order.")),
|
|
10001
|
+
/* @__PURE__ */ React21.createElement(
|
|
10002
10002
|
"button",
|
|
10003
10003
|
{
|
|
10004
10004
|
onClick: handleLogout,
|
|
10005
10005
|
className: "flex w-full items-center justify-center gap-2 rounded-3xl border border-red-200 bg-red-50 px-4 py-3 text-sm font-semibold text-red-600 transition hover:bg-red-100"
|
|
10006
10006
|
},
|
|
10007
|
-
/* @__PURE__ */
|
|
10007
|
+
/* @__PURE__ */ React21.createElement(LogOut, { className: "h-4 w-4" }),
|
|
10008
10008
|
"Log out"
|
|
10009
10009
|
)
|
|
10010
10010
|
)))));
|
|
@@ -10012,7 +10012,7 @@ function ProfileScreen() {
|
|
|
10012
10012
|
function OrderCard({ order }) {
|
|
10013
10013
|
const { buildPath } = useBasePath();
|
|
10014
10014
|
const config = order.orderStatus;
|
|
10015
|
-
return /* @__PURE__ */
|
|
10015
|
+
return /* @__PURE__ */ React21.createElement(
|
|
10016
10016
|
motion.div,
|
|
10017
10017
|
{
|
|
10018
10018
|
initial: { opacity: 0, y: 20 },
|
|
@@ -10020,9 +10020,9 @@ function OrderCard({ order }) {
|
|
|
10020
10020
|
whileHover: { y: -4 },
|
|
10021
10021
|
className: "bg-white rounded-2xl p-6 shadow-sm hover:shadow-xl transition-all duration-300 border border-gray-100"
|
|
10022
10022
|
},
|
|
10023
|
-
/* @__PURE__ */
|
|
10024
|
-
/* @__PURE__ */
|
|
10025
|
-
/* @__PURE__ */
|
|
10023
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex justify-between items-start mb-4" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-bold text-gray-900 flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(Package, { className: "w-5 h-5 text-primary-600" }), "Order #", order?._id?.slice(0, 6) || ""), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-gray-500 mt-1 flex items-center gap-2" }, /* @__PURE__ */ React21.createElement(Calendar, { className: "w-4 h-4" }), formatDate(order.createdAt || /* @__PURE__ */ new Date(), "long"))), /* @__PURE__ */ React21.createElement(Badge, { variant: config }, config)),
|
|
10024
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-2 mb-4" }, order.items?.slice(0, 2).map((item) => /* @__PURE__ */ React21.createElement("div", { key: item.productVariantId, className: "flex items-center gap-3 text-sm" }, /* @__PURE__ */ React21.createElement(Image3, { src: item?.productVariantData?.productMedia?.[0]?.file || "/placeholder-product.jpg", alt: item?.productVariantData?.name || "Product image", width: 48, height: 48, className: "w-12 h-12 rounded-lg bg-gray-100 flex-shrink-0" }), /* @__PURE__ */ React21.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React21.createElement("p", { className: "font-medium text-gray-900 truncate" }, item.productVariantData.name), /* @__PURE__ */ React21.createElement("p", { className: "text-gray-500" }, "Qty: ", item.quantity)), /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-gray-900" }, formatPrice(item.productVariantData.finalPrice)))), order.items?.length && order.items?.length > 2 && /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-gray-500 pl-15" }, "+", order.items.length - 2, " more item", order.items.length - 2 > 1 ? "s" : "")),
|
|
10025
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex justify-between items-center pt-4 border-t border-gray-200" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-gray-500" }, "Total Amount"), /* @__PURE__ */ React21.createElement("p", { className: "text-2xl font-bold text-gray-900" }, formatPrice(order.grandTotal || 0))), /* @__PURE__ */ React21.createElement("div", { className: "flex gap-2" }, order.payment.paymentStatus !== "Paid" /* Paid */ && order.payment.paymentMethod === "Card" /* Card */ && /* @__PURE__ */ React21.createElement(
|
|
10026
10026
|
"a",
|
|
10027
10027
|
{
|
|
10028
10028
|
href: order?.payment?.paymentIntent?.hostedInvoiceUrl || "",
|
|
@@ -10030,7 +10030,7 @@ function OrderCard({ order }) {
|
|
|
10030
10030
|
rel: "noopener noreferrer",
|
|
10031
10031
|
className: "inline-flex items-center gap-2 px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors"
|
|
10032
10032
|
},
|
|
10033
|
-
/* @__PURE__ */
|
|
10033
|
+
/* @__PURE__ */ React21.createElement(CreditCard, { className: "w-4 h-4" }),
|
|
10034
10034
|
"Pay Now"
|
|
10035
10035
|
)))
|
|
10036
10036
|
);
|
|
@@ -10186,7 +10186,7 @@ function FilterChips({
|
|
|
10186
10186
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
10187
10187
|
};
|
|
10188
10188
|
}, [isOverflowOpen]);
|
|
10189
|
-
return /* @__PURE__ */
|
|
10189
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3 md:flex-row md:items-center md:gap-4" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full border border-slate-200 bg-slate-50 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-slate-600" }, /* @__PURE__ */ React21.createElement(Icon, { className: "h-4 w-4" }), label), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-2" }, visibleFilters.map((filter) => /* @__PURE__ */ React21.createElement(
|
|
10190
10190
|
"button",
|
|
10191
10191
|
{
|
|
10192
10192
|
key: filter,
|
|
@@ -10195,16 +10195,16 @@ function FilterChips({
|
|
|
10195
10195
|
className: `rounded-full border px-3 py-1 text-sm font-medium transition ${selected === filter ? `border-${color}-600 bg-${color}-600 text-white shadow-lg shadow-${color}-500/30` : `border-slate-200 bg-slate-50 text-slate-600 hover:border-${color}-300 hover:text-${color}-600`}`
|
|
10196
10196
|
},
|
|
10197
10197
|
filter
|
|
10198
|
-
))), overflowFilters.length > 0 && /* @__PURE__ */
|
|
10198
|
+
))), overflowFilters.length > 0 && /* @__PURE__ */ React21.createElement("div", { className: "relative", ref: overflowMenuRef }, /* @__PURE__ */ React21.createElement(
|
|
10199
10199
|
"button",
|
|
10200
10200
|
{
|
|
10201
10201
|
type: "button",
|
|
10202
10202
|
onClick: () => setIsOverflowOpen((prev) => !prev),
|
|
10203
10203
|
className: `flex items-center gap-2 rounded-full border px-3 py-1 text-sm font-medium transition ${overflowFilters.includes(selected) ? `border-${color}-600 bg-${color}-50 text-${color}-700 shadow-lg shadow-${color}-500/20` : "border-slate-200 bg-white text-slate-600 hover:border-slate-300"}`
|
|
10204
10204
|
},
|
|
10205
|
-
/* @__PURE__ */
|
|
10206
|
-
/* @__PURE__ */
|
|
10207
|
-
), /* @__PURE__ */
|
|
10205
|
+
/* @__PURE__ */ React21.createElement("span", null, overflowFilters.includes(selected) ? selected : "More"),
|
|
10206
|
+
/* @__PURE__ */ React21.createElement("span", { className: `inline-flex h-5 min-w-[1.5rem] items-center justify-center rounded-full bg-${color}-100 px-1 text-xs font-semibold text-${color}-600` }, overflowFilters.length)
|
|
10207
|
+
), /* @__PURE__ */ React21.createElement(AnimatePresence, null, isOverflowOpen && /* @__PURE__ */ React21.createElement(
|
|
10208
10208
|
motion.div,
|
|
10209
10209
|
{
|
|
10210
10210
|
initial: { opacity: 0, y: 8 },
|
|
@@ -10213,7 +10213,7 @@ function FilterChips({
|
|
|
10213
10213
|
transition: { duration: 0.15 },
|
|
10214
10214
|
className: "absolute right-0 z-50 mt-2 w-64 rounded-2xl border border-slate-100 bg-white shadow-xl shadow-primary-50"
|
|
10215
10215
|
},
|
|
10216
|
-
/* @__PURE__ */
|
|
10216
|
+
/* @__PURE__ */ React21.createElement("div", { className: "border-b border-slate-100 px-4 py-3" }, /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(Search, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400" }), /* @__PURE__ */ React21.createElement(
|
|
10217
10217
|
"input",
|
|
10218
10218
|
{
|
|
10219
10219
|
type: "text",
|
|
@@ -10223,7 +10223,7 @@ function FilterChips({
|
|
|
10223
10223
|
className: "w-full rounded-full border border-slate-200 bg-slate-50 py-2 pl-9 pr-3 text-sm text-slate-600 outline-none transition focus:border-primary-300 focus:bg-white focus:ring-2 focus:ring-primary-200"
|
|
10224
10224
|
}
|
|
10225
10225
|
))),
|
|
10226
|
-
/* @__PURE__ */
|
|
10226
|
+
/* @__PURE__ */ React21.createElement("div", { className: "max-h-60 overflow-y-auto px-2 py-2" }, filteredOverflowFilters.length > 0 ? filteredOverflowFilters.map((filter) => /* @__PURE__ */ React21.createElement(
|
|
10227
10227
|
"button",
|
|
10228
10228
|
{
|
|
10229
10229
|
key: filter,
|
|
@@ -10234,10 +10234,10 @@ function FilterChips({
|
|
|
10234
10234
|
},
|
|
10235
10235
|
className: `flex w-full items-center justify-between rounded-xl px-3 py-2 text-sm font-medium transition ${selected === filter ? `bg-${color}-600 text-white shadow-lg shadow-${color}-500/30` : "text-slate-600 hover:bg-slate-100"}`
|
|
10236
10236
|
},
|
|
10237
|
-
/* @__PURE__ */
|
|
10238
|
-
selected === filter && /* @__PURE__ */
|
|
10239
|
-
)) : /* @__PURE__ */
|
|
10240
|
-
/* @__PURE__ */
|
|
10237
|
+
/* @__PURE__ */ React21.createElement("span", null, filter),
|
|
10238
|
+
selected === filter && /* @__PURE__ */ React21.createElement(Check, { className: "h-4 w-4" })
|
|
10239
|
+
)) : /* @__PURE__ */ React21.createElement("p", { className: "px-3 py-4 text-sm text-slate-500" }, "No items found.")),
|
|
10240
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between gap-2 border-t border-slate-100 px-4 py-3" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs font-semibold uppercase tracking-wide text-slate-400" }, "Quick actions"), /* @__PURE__ */ React21.createElement(
|
|
10241
10241
|
"button",
|
|
10242
10242
|
{
|
|
10243
10243
|
type: "button",
|
|
@@ -10295,23 +10295,23 @@ function OrdersScreen() {
|
|
|
10295
10295
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
10296
10296
|
};
|
|
10297
10297
|
}, [isOverflowOpen]);
|
|
10298
|
-
return /* @__PURE__ */
|
|
10298
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement(
|
|
10299
10299
|
motion.div,
|
|
10300
10300
|
{
|
|
10301
10301
|
initial: { opacity: 0, y: 24 },
|
|
10302
10302
|
animate: { opacity: 1, y: 0 },
|
|
10303
10303
|
className: "space-y-6"
|
|
10304
10304
|
},
|
|
10305
|
-
/* @__PURE__ */
|
|
10306
|
-
/* @__PURE__ */
|
|
10307
|
-
))), /* @__PURE__ */
|
|
10305
|
+
/* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(CalendarDays, { className: "h-4 w-4" }), "Order history"),
|
|
10306
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "All of your pharmacy orders"), /* @__PURE__ */ React21.createElement("p", { className: "max-w-2xl text-white/80 md:text-lg" }, "Access receipts, shipping statuses, and reorder suggestions in one organized timeline curated by our pharmacists.")), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl bg-white/15 p-6 backdrop-blur" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.35em] text-white/70" }, "Quick tip"), /* @__PURE__ */ React21.createElement("p", { className: "mt-3 text-sm text-white/80" }, "Use filters to review previous prescriptions, reorder favorites, or download invoices for insurance claims.")))
|
|
10307
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-16 container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement(
|
|
10308
10308
|
motion.div,
|
|
10309
10309
|
{
|
|
10310
10310
|
initial: { opacity: 0, y: 24 },
|
|
10311
10311
|
animate: { opacity: 1, y: 0 },
|
|
10312
10312
|
className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50"
|
|
10313
10313
|
},
|
|
10314
|
-
/* @__PURE__ */
|
|
10314
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 text-sm text-slate-500" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4 text-primary-500" }), /* @__PURE__ */ React21.createElement("span", null, "Explore your complete order archive with pharmacist notes.")), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-4 md:items-end" }, /* @__PURE__ */ React21.createElement(
|
|
10315
10315
|
FilterChips,
|
|
10316
10316
|
{
|
|
10317
10317
|
label: "Status filters",
|
|
@@ -10325,7 +10325,7 @@ function OrdersScreen() {
|
|
|
10325
10325
|
maxVisible: MAX_VISIBLE_FILTERS,
|
|
10326
10326
|
variant: "primary"
|
|
10327
10327
|
}
|
|
10328
|
-
), /* @__PURE__ */
|
|
10328
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10329
10329
|
FilterChips,
|
|
10330
10330
|
{
|
|
10331
10331
|
label: "Payment status",
|
|
@@ -10340,7 +10340,7 @@ function OrdersScreen() {
|
|
|
10340
10340
|
variant: "primary"
|
|
10341
10341
|
}
|
|
10342
10342
|
))),
|
|
10343
|
-
/* @__PURE__ */
|
|
10343
|
+
/* @__PURE__ */ React21.createElement("div", { className: "mt-6 space-y-4" }, isLoading ? Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ React21.createElement(OrderCardSkeleton, { key: index })) : hasOrders ? filteredOrders.map((order) => /* @__PURE__ */ React21.createElement(OrderCard, { key: order.id, order })) : /* @__PURE__ */ React21.createElement(
|
|
10344
10344
|
EmptyState,
|
|
10345
10345
|
{
|
|
10346
10346
|
icon: Package,
|
|
@@ -10350,16 +10350,16 @@ function OrdersScreen() {
|
|
|
10350
10350
|
onAction: () => router.push(buildPath("/shop"))
|
|
10351
10351
|
}
|
|
10352
10352
|
)),
|
|
10353
|
-
!isLoading && pagination.totalPages > 1 && hasOrders && /* @__PURE__ */
|
|
10353
|
+
!isLoading && pagination.totalPages > 1 && hasOrders && /* @__PURE__ */ React21.createElement("div", { className: "mt-10 flex flex-wrap items-center justify-center gap-4" }, /* @__PURE__ */ React21.createElement(
|
|
10354
10354
|
Button,
|
|
10355
10355
|
{
|
|
10356
10356
|
variant: "outline",
|
|
10357
10357
|
onClick: () => setPage((current) => Math.max(1, current - 1)),
|
|
10358
10358
|
disabled: page === 1
|
|
10359
10359
|
},
|
|
10360
|
-
/* @__PURE__ */
|
|
10360
|
+
/* @__PURE__ */ React21.createElement(ChevronLeft, { className: "h-5 w-5" }),
|
|
10361
10361
|
"Previous"
|
|
10362
|
-
), /* @__PURE__ */
|
|
10362
|
+
), /* @__PURE__ */ React21.createElement("span", { className: "text-sm font-semibold text-slate-600" }, "Page ", page, " of ", pagination.totalPages), /* @__PURE__ */ React21.createElement(
|
|
10363
10363
|
Button,
|
|
10364
10364
|
{
|
|
10365
10365
|
variant: "outline",
|
|
@@ -10367,7 +10367,7 @@ function OrdersScreen() {
|
|
|
10367
10367
|
disabled: page === pagination.totalPages
|
|
10368
10368
|
},
|
|
10369
10369
|
"Next",
|
|
10370
|
-
/* @__PURE__ */
|
|
10370
|
+
/* @__PURE__ */ React21.createElement(ChevronRight, { className: "h-5 w-5" })
|
|
10371
10371
|
))
|
|
10372
10372
|
))));
|
|
10373
10373
|
}
|
|
@@ -10376,17 +10376,17 @@ function CurrentOrdersScreen() {
|
|
|
10376
10376
|
const { orders, isLoading } = useCurrentOrders();
|
|
10377
10377
|
const { buildPath } = useBasePath();
|
|
10378
10378
|
const hasOrders = orders.length > 0;
|
|
10379
|
-
return /* @__PURE__ */
|
|
10379
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement(
|
|
10380
10380
|
motion.div,
|
|
10381
10381
|
{
|
|
10382
10382
|
initial: { opacity: 0, y: 24 },
|
|
10383
10383
|
animate: { opacity: 1, y: 0 },
|
|
10384
10384
|
className: "space-y-4"
|
|
10385
10385
|
},
|
|
10386
|
-
/* @__PURE__ */
|
|
10387
|
-
/* @__PURE__ */
|
|
10388
|
-
/* @__PURE__ */
|
|
10389
|
-
), /* @__PURE__ */
|
|
10386
|
+
/* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(Truck, { className: "h-4 w-4" }), "Live order tracking"),
|
|
10387
|
+
/* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "Current orders"),
|
|
10388
|
+
/* @__PURE__ */ React21.createElement("p", { className: "max-w-2xl text-white/80 md:text-lg" }, "Follow your pharmacy orders from preparation to delivery. Real-time updates, SMS alerts, and pharmacist oversight come standard.")
|
|
10389
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10390
10390
|
motion.div,
|
|
10391
10391
|
{
|
|
10392
10392
|
initial: { opacity: 0, y: 24 },
|
|
@@ -10394,24 +10394,24 @@ function CurrentOrdersScreen() {
|
|
|
10394
10394
|
transition: { delay: 0.1 },
|
|
10395
10395
|
className: "rounded-3xl bg-white/15 p-6 backdrop-blur"
|
|
10396
10396
|
},
|
|
10397
|
-
/* @__PURE__ */
|
|
10398
|
-
/* @__PURE__ */
|
|
10397
|
+
/* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.35em] text-white/70" }, "Quick actions"),
|
|
10398
|
+
/* @__PURE__ */ React21.createElement("div", { className: "mt-4 space-y-3 text-sm text-white/80" }, /* @__PURE__ */ React21.createElement(
|
|
10399
10399
|
Link8,
|
|
10400
10400
|
{
|
|
10401
10401
|
href: buildPath("/orders"),
|
|
10402
10402
|
className: "flex items-center justify-between rounded-2xl bg-white/10 px-4 py-3 transition hover:bg-white/20"
|
|
10403
10403
|
},
|
|
10404
|
-
/* @__PURE__ */
|
|
10405
|
-
/* @__PURE__ */
|
|
10406
|
-
), /* @__PURE__ */
|
|
10407
|
-
)))), /* @__PURE__ */
|
|
10404
|
+
/* @__PURE__ */ React21.createElement("span", { className: "font-semibold text-white" }, "View order history"),
|
|
10405
|
+
/* @__PURE__ */ React21.createElement(ArrowUpRight, { className: "h-4 w-4" })
|
|
10406
|
+
), /* @__PURE__ */ React21.createElement("p", null, "Need help fast? Chat with a pharmacist and we will triage your request in under 10 minutes."))
|
|
10407
|
+
)))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-16" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement(
|
|
10408
10408
|
motion.section,
|
|
10409
10409
|
{
|
|
10410
10410
|
initial: { opacity: 0, y: 24 },
|
|
10411
10411
|
animate: { opacity: 1, y: 0 },
|
|
10412
10412
|
className: "grid gap-6 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]"
|
|
10413
10413
|
},
|
|
10414
|
-
/* @__PURE__ */
|
|
10414
|
+
/* @__PURE__ */ React21.createElement("div", { className: "space-y-6" }, isLoading ? /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ React21.createElement(OrderCardSkeleton, { key: index }))) : hasOrders ? /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, orders.map((order) => /* @__PURE__ */ React21.createElement(OrderCard, { key: order.id, order }))) : /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-10 shadow-sm" }, /* @__PURE__ */ React21.createElement(
|
|
10415
10415
|
EmptyState,
|
|
10416
10416
|
{
|
|
10417
10417
|
icon: PackageCheck,
|
|
@@ -10421,7 +10421,7 @@ function CurrentOrdersScreen() {
|
|
|
10421
10421
|
onAction: () => router.push(buildPath("/shop"))
|
|
10422
10422
|
}
|
|
10423
10423
|
))),
|
|
10424
|
-
/* @__PURE__ */
|
|
10424
|
+
/* @__PURE__ */ React21.createElement("aside", { className: "space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-lg font-semibold text-slate-900" }, "Real-time milestones"), /* @__PURE__ */ React21.createElement("div", { className: "mt-4 space-y-4 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3 rounded-2xl bg-slate-50 p-4" }, /* @__PURE__ */ React21.createElement(Warehouse, { className: "h-5 w-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-slate-800" }, "Preparation"), /* @__PURE__ */ React21.createElement("p", null, "Our pharmacists verify ingredients and pack thermo-sensitive items."))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3 rounded-2xl bg-slate-50 p-4" }, /* @__PURE__ */ React21.createElement(Truck, { className: "h-5 w-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-slate-800" }, "In transit"), /* @__PURE__ */ React21.createElement("p", null, "Track live courier location with ETA updates tailored to your delivery window."))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3 rounded-2xl bg-slate-50 p-4" }, /* @__PURE__ */ React21.createElement(BellRing, { className: "h-5 w-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold text-slate-800" }, "Arrival alerts"), /* @__PURE__ */ React21.createElement("p", null, "Receive SMS and email notifications when parcels are out for delivery."))))), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm" }, /* @__PURE__ */ React21.createElement("p", { className: "font-semibold uppercase tracking-[0.3em]" }, "Need support?"), /* @__PURE__ */ React21.createElement("p", { className: "mt-3 leading-relaxed" }, "Our fulfillment team is online 7 days a week. Message us if you need to adjust delivery instructions or review dosage guidance.")))
|
|
10425
10425
|
))));
|
|
10426
10426
|
}
|
|
10427
10427
|
var addressFormSchema = z.object({
|
|
@@ -10454,12 +10454,12 @@ function formatAddressSnippet(address) {
|
|
|
10454
10454
|
function getAddressTypeCopy(type) {
|
|
10455
10455
|
switch (type) {
|
|
10456
10456
|
case "Billing":
|
|
10457
|
-
return { label: "Billing", icon: /* @__PURE__ */
|
|
10457
|
+
return { label: "Billing", icon: /* @__PURE__ */ React21.createElement(Home, { className: "h-4 w-4" }) };
|
|
10458
10458
|
case "Both":
|
|
10459
|
-
return { label: "Billing & Shipping", icon: /* @__PURE__ */
|
|
10459
|
+
return { label: "Billing & Shipping", icon: /* @__PURE__ */ React21.createElement(Globe, { className: "h-4 w-4" }) };
|
|
10460
10460
|
case "Shipping":
|
|
10461
10461
|
default:
|
|
10462
|
-
return { label: "Shipping", icon: /* @__PURE__ */
|
|
10462
|
+
return { label: "Shipping", icon: /* @__PURE__ */ React21.createElement(MapPin, { className: "h-4 w-4" }) };
|
|
10463
10463
|
}
|
|
10464
10464
|
}
|
|
10465
10465
|
function AddressesScreen() {
|
|
@@ -10603,18 +10603,18 @@ You can add it back at any time.`
|
|
|
10603
10603
|
}
|
|
10604
10604
|
];
|
|
10605
10605
|
}, [addresses]);
|
|
10606
|
-
return /* @__PURE__ */
|
|
10606
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.3),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement(
|
|
10607
10607
|
motion.div,
|
|
10608
10608
|
{
|
|
10609
10609
|
initial: { opacity: 0, y: 24 },
|
|
10610
10610
|
animate: { opacity: 1, y: 0 },
|
|
10611
10611
|
className: "space-y-5"
|
|
10612
10612
|
},
|
|
10613
|
-
/* @__PURE__ */
|
|
10614
|
-
/* @__PURE__ */
|
|
10615
|
-
/* @__PURE__ */
|
|
10616
|
-
/* @__PURE__ */
|
|
10617
|
-
), /* @__PURE__ */
|
|
10613
|
+
/* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(MapPin, { className: "h-4 w-4" }), "Address book"),
|
|
10614
|
+
/* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "Manage where your care arrives"),
|
|
10615
|
+
/* @__PURE__ */ React21.createElement("p", { className: "max-w-2xl text-white/80 md:text-lg" }, "Add home, office, or loved ones' addresses and toggle a default for lightning-fast checkout and delivery."),
|
|
10616
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-3 text-sm text-white/75" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4 text-white" }), "Default address: ", defaultAddress ? defaultAddress.name : "Not set"), /* @__PURE__ */ React21.createElement(Button, { variant: "ghost", className: "text-white hover:bg-white/10", onClick: openCreateModal }, /* @__PURE__ */ React21.createElement(Plus, { className: "h-5 w-5" }), "Add address"))
|
|
10617
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10618
10618
|
motion.div,
|
|
10619
10619
|
{
|
|
10620
10620
|
initial: { opacity: 0, y: 24 },
|
|
@@ -10622,14 +10622,14 @@ You can add it back at any time.`
|
|
|
10622
10622
|
transition: { delay: 0.1 },
|
|
10623
10623
|
className: "grid gap-4 rounded-3xl bg-white/15 p-6 text-sm text-white/80 backdrop-blur"
|
|
10624
10624
|
},
|
|
10625
|
-
stats.map((stat) => /* @__PURE__ */
|
|
10626
|
-
)))), /* @__PURE__ */
|
|
10625
|
+
stats.map((stat) => /* @__PURE__ */ React21.createElement("div", { key: stat.id, className: "flex items-center justify-between" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "text-xs font-semibold uppercase tracking-[0.3em] text-white/70" }, stat.label), /* @__PURE__ */ React21.createElement("p", { className: "text-white" }, stat.helper)), /* @__PURE__ */ React21.createElement("span", { className: "text-3xl font-semibold text-white" }, stat.value)))
|
|
10626
|
+
)))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-20" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, isLoading ? /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-3" }, Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ React21.createElement(
|
|
10627
10627
|
"div",
|
|
10628
10628
|
{
|
|
10629
10629
|
key: index,
|
|
10630
10630
|
className: "h-56 animate-pulse rounded-3xl border border-slate-100 bg-white"
|
|
10631
10631
|
}
|
|
10632
|
-
))) : error ? /* @__PURE__ */
|
|
10632
|
+
))) : error ? /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-red-100 bg-red-50 p-6 text-sm text-red-700" }, error.message) : addresses.length === 0 ? /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl border border-slate-100 bg-white p-12 shadow-sm" }, /* @__PURE__ */ React21.createElement(
|
|
10633
10633
|
EmptyState,
|
|
10634
10634
|
{
|
|
10635
10635
|
icon: MapPin,
|
|
@@ -10638,9 +10638,9 @@ You can add it back at any time.`
|
|
|
10638
10638
|
actionLabel: "Add your first address",
|
|
10639
10639
|
onAction: openCreateModal
|
|
10640
10640
|
}
|
|
10641
|
-
)) : /* @__PURE__ */
|
|
10641
|
+
)) : /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-3" }, addresses.map((address) => {
|
|
10642
10642
|
const typeCopy = getAddressTypeCopy(address.addressType);
|
|
10643
|
-
return /* @__PURE__ */
|
|
10643
|
+
return /* @__PURE__ */ React21.createElement(
|
|
10644
10644
|
motion.div,
|
|
10645
10645
|
{
|
|
10646
10646
|
key: address.id,
|
|
@@ -10648,39 +10648,39 @@ You can add it back at any time.`
|
|
|
10648
10648
|
animate: { opacity: 1, y: 0 },
|
|
10649
10649
|
className: "group relative flex h-full flex-col rounded-3xl border border-slate-100 bg-white p-6 shadow-sm transition hover:-translate-y-1 hover:shadow-xl"
|
|
10650
10650
|
},
|
|
10651
|
-
address.isDefault && /* @__PURE__ */
|
|
10652
|
-
/* @__PURE__ */
|
|
10653
|
-
/* @__PURE__ */
|
|
10654
|
-
/* @__PURE__ */
|
|
10651
|
+
address.isDefault && /* @__PURE__ */ React21.createElement("span", { className: "absolute right-6 top-6 inline-flex items-center gap-2 rounded-full bg-amber-100 px-3 py-1 text-xs font-semibold text-amber-700" }, /* @__PURE__ */ React21.createElement(Crown, { className: "h-4 w-4" }), "Default"),
|
|
10652
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement("span", { className: "rounded-full bg-primary-50 p-3 text-primary-600" }, /* @__PURE__ */ React21.createElement(User, { className: "h-5 w-5" })), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("p", { className: "text-base font-semibold text-slate-900" }, address.name), /* @__PURE__ */ React21.createElement("p", { className: "text-xs uppercase tracking-[0.3em] text-slate-400" }, typeCopy.label))),
|
|
10653
|
+
/* @__PURE__ */ React21.createElement("div", { className: "mt-6 flex flex-1 flex-col gap-3 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("p", null, formatAddressSnippet(address)), /* @__PURE__ */ React21.createElement("p", { className: "inline-flex items-center gap-2 text-slate-500" }, /* @__PURE__ */ React21.createElement(Phone, { className: "h-4 w-4 text-slate-400" }), address.phone || "Not provided")),
|
|
10654
|
+
/* @__PURE__ */ React21.createElement("div", { className: "mt-6 flex items-center justify-between gap-3" }, /* @__PURE__ */ React21.createElement(
|
|
10655
10655
|
"button",
|
|
10656
10656
|
{
|
|
10657
10657
|
type: "button",
|
|
10658
10658
|
onClick: () => openEditModal(address),
|
|
10659
10659
|
className: "inline-flex items-center gap-2 rounded-full border border-slate-200 px-3 py-1 text-sm font-medium text-slate-600 transition hover:border-primary-300 hover:text-primary-600"
|
|
10660
10660
|
},
|
|
10661
|
-
/* @__PURE__ */
|
|
10661
|
+
/* @__PURE__ */ React21.createElement(Edit3, { className: "h-4 w-4" }),
|
|
10662
10662
|
"Edit"
|
|
10663
|
-
), /* @__PURE__ */
|
|
10663
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, !address.isDefault && /* @__PURE__ */ React21.createElement(
|
|
10664
10664
|
"button",
|
|
10665
10665
|
{
|
|
10666
10666
|
type: "button",
|
|
10667
10667
|
onClick: () => handleSetDefault(address),
|
|
10668
10668
|
className: "inline-flex items-center gap-2 rounded-full border border-amber-200 px-3 py-1 text-sm font-semibold text-amber-600 transition hover:border-amber-300 hover:text-amber-700"
|
|
10669
10669
|
},
|
|
10670
|
-
/* @__PURE__ */
|
|
10670
|
+
/* @__PURE__ */ React21.createElement(Star, { className: "h-4 w-4" }),
|
|
10671
10671
|
"Make default"
|
|
10672
|
-
), /* @__PURE__ */
|
|
10672
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10673
10673
|
"button",
|
|
10674
10674
|
{
|
|
10675
10675
|
type: "button",
|
|
10676
10676
|
onClick: () => handleDelete(address),
|
|
10677
10677
|
className: "inline-flex items-center gap-2 rounded-full border border-red-200 px-3 py-1 text-sm font-semibold text-red-600 transition hover:border-red-300 hover:text-red-700"
|
|
10678
10678
|
},
|
|
10679
|
-
/* @__PURE__ */
|
|
10679
|
+
/* @__PURE__ */ React21.createElement(Trash2, { className: "h-4 w-4" }),
|
|
10680
10680
|
"Delete"
|
|
10681
10681
|
)))
|
|
10682
10682
|
);
|
|
10683
|
-
})))), /* @__PURE__ */
|
|
10683
|
+
})))), /* @__PURE__ */ React21.createElement(
|
|
10684
10684
|
Modal,
|
|
10685
10685
|
{
|
|
10686
10686
|
isOpen: isModalOpen,
|
|
@@ -10688,7 +10688,7 @@ You can add it back at any time.`
|
|
|
10688
10688
|
title: editingAddress ? "Edit address" : "Add new address",
|
|
10689
10689
|
size: "lg"
|
|
10690
10690
|
},
|
|
10691
|
-
/* @__PURE__ */
|
|
10691
|
+
/* @__PURE__ */ React21.createElement("form", { onSubmit: handleSubmit(onSubmit), className: "space-y-6" }, /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement(
|
|
10692
10692
|
Input,
|
|
10693
10693
|
{
|
|
10694
10694
|
label: "Full name",
|
|
@@ -10696,7 +10696,7 @@ You can add it back at any time.`
|
|
|
10696
10696
|
...register("fullName"),
|
|
10697
10697
|
error: errors.fullName?.message
|
|
10698
10698
|
}
|
|
10699
|
-
), /* @__PURE__ */
|
|
10699
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10700
10700
|
Input,
|
|
10701
10701
|
{
|
|
10702
10702
|
label: "Phone number",
|
|
@@ -10704,7 +10704,7 @@ You can add it back at any time.`
|
|
|
10704
10704
|
...register("phone"),
|
|
10705
10705
|
error: errors.phone?.message
|
|
10706
10706
|
}
|
|
10707
|
-
)), /* @__PURE__ */
|
|
10707
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
10708
10708
|
Input,
|
|
10709
10709
|
{
|
|
10710
10710
|
label: "Address line 1",
|
|
@@ -10712,7 +10712,7 @@ You can add it back at any time.`
|
|
|
10712
10712
|
...register("addressLine1"),
|
|
10713
10713
|
error: errors.addressLine1?.message
|
|
10714
10714
|
}
|
|
10715
|
-
), /* @__PURE__ */
|
|
10715
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10716
10716
|
Input,
|
|
10717
10717
|
{
|
|
10718
10718
|
label: "Address line 2 (optional)",
|
|
@@ -10720,7 +10720,7 @@ You can add it back at any time.`
|
|
|
10720
10720
|
...register("addressLine2"),
|
|
10721
10721
|
error: errors.addressLine2?.message
|
|
10722
10722
|
}
|
|
10723
|
-
), /* @__PURE__ */
|
|
10723
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement(
|
|
10724
10724
|
Input,
|
|
10725
10725
|
{
|
|
10726
10726
|
label: "City",
|
|
@@ -10728,7 +10728,7 @@ You can add it back at any time.`
|
|
|
10728
10728
|
...register("city"),
|
|
10729
10729
|
error: errors.city?.message
|
|
10730
10730
|
}
|
|
10731
|
-
), /* @__PURE__ */
|
|
10731
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10732
10732
|
Input,
|
|
10733
10733
|
{
|
|
10734
10734
|
label: "State / Region",
|
|
@@ -10736,7 +10736,7 @@ You can add it back at any time.`
|
|
|
10736
10736
|
...register("state"),
|
|
10737
10737
|
error: errors.state?.message
|
|
10738
10738
|
}
|
|
10739
|
-
)), /* @__PURE__ */
|
|
10739
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement(
|
|
10740
10740
|
Input,
|
|
10741
10741
|
{
|
|
10742
10742
|
label: "Postal code",
|
|
@@ -10744,7 +10744,7 @@ You can add it back at any time.`
|
|
|
10744
10744
|
...register("zipCode"),
|
|
10745
10745
|
error: errors.zipCode?.message
|
|
10746
10746
|
}
|
|
10747
|
-
), /* @__PURE__ */
|
|
10747
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10748
10748
|
Input,
|
|
10749
10749
|
{
|
|
10750
10750
|
label: "Country",
|
|
@@ -10752,23 +10752,23 @@ You can add it back at any time.`
|
|
|
10752
10752
|
...register("country"),
|
|
10753
10753
|
error: errors.country?.message
|
|
10754
10754
|
}
|
|
10755
|
-
)), /* @__PURE__ */
|
|
10755
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ React21.createElement("label", { className: "flex flex-col gap-2 rounded-2xl border border-slate-200 p-4" }, /* @__PURE__ */ React21.createElement("span", { className: "text-sm font-semibold text-slate-700" }, "Address type"), /* @__PURE__ */ React21.createElement(
|
|
10756
10756
|
"select",
|
|
10757
10757
|
{
|
|
10758
10758
|
...register("addressType"),
|
|
10759
10759
|
className: "rounded-xl border border-slate-200 px-3 py-2 text-sm text-slate-700 focus:border-primary-400 focus:outline-none focus:ring-2 focus:ring-primary-500/20"
|
|
10760
10760
|
},
|
|
10761
|
-
/* @__PURE__ */
|
|
10762
|
-
/* @__PURE__ */
|
|
10763
|
-
/* @__PURE__ */
|
|
10764
|
-
)), /* @__PURE__ */
|
|
10761
|
+
/* @__PURE__ */ React21.createElement("option", { value: "Shipping" }, "Shipping"),
|
|
10762
|
+
/* @__PURE__ */ React21.createElement("option", { value: "Billing" }, "Billing"),
|
|
10763
|
+
/* @__PURE__ */ React21.createElement("option", { value: "Both" }, "Billing & Shipping")
|
|
10764
|
+
)), /* @__PURE__ */ React21.createElement("label", { className: "flex items-center justify-between gap-4 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm font-medium text-slate-700" }, /* @__PURE__ */ React21.createElement("span", null, "Set as default address"), /* @__PURE__ */ React21.createElement(
|
|
10765
10765
|
"input",
|
|
10766
10766
|
{
|
|
10767
10767
|
type: "checkbox",
|
|
10768
10768
|
...register("isDefault"),
|
|
10769
10769
|
className: "h-4 w-4 rounded border-primary-300 text-primary-600 focus:ring-primary-500"
|
|
10770
10770
|
}
|
|
10771
|
-
))), /* @__PURE__ */
|
|
10771
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-end gap-3" }, /* @__PURE__ */ React21.createElement(Button, { type: "button", variant: "outline", onClick: closeModal }, "Cancel"), /* @__PURE__ */ React21.createElement(Button, { type: "submit", isLoading: isSubmitting }, editingAddress ? "Save changes" : "Save address")))
|
|
10772
10772
|
));
|
|
10773
10773
|
}
|
|
10774
10774
|
function useWishlistProducts(productIds = []) {
|
|
@@ -10908,14 +10908,14 @@ function WishlistScreen() {
|
|
|
10908
10908
|
return list;
|
|
10909
10909
|
}, [wishlistProducts, onlyInStock, sortOption]);
|
|
10910
10910
|
const emptyAfterFiltering = !isLoading && wishlistProducts.length > 0 && processedProducts.length === 0;
|
|
10911
|
-
return /* @__PURE__ */
|
|
10911
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50 pb-16" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] pb-32 pt-16 text-white" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 opacity-40 mix-blend-soft-light", "aria-hidden": "true" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute -top-1/2 right-1/2 h-[40rem] w-[40rem] rounded-full bg-white/10 blur-3xl" }), /* @__PURE__ */ React21.createElement("div", { className: "absolute left-1/4 top-1/4 h-48 w-48 rounded-full bg-white/20 blur-2xl" })), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-3xl space-y-6" }, /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-4 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(Heart, { className: "h-4 w-4" }), "Wishlist"), /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold leading-tight md:text-5xl" }, "Curate your pharmacy must-haves in one calming space"), /* @__PURE__ */ React21.createElement("p", { className: "max-w-2xl text-white/80 md:text-lg" }, "We keep your favourite products ready for reorder, refill reminders, and quick checkout\u2014exactly when you need them.")))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-20" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement(
|
|
10912
10912
|
motion.div,
|
|
10913
10913
|
{
|
|
10914
10914
|
initial: { opacity: 0, y: 24 },
|
|
10915
10915
|
animate: { opacity: 1, y: 0 },
|
|
10916
10916
|
className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-xl shadow-primary-50"
|
|
10917
10917
|
},
|
|
10918
|
-
/* @__PURE__ */
|
|
10918
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6" }, !isAuthenticated && /* @__PURE__ */ React21.createElement("div", { className: "flex min-h-[40vh] items-center justify-center" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-lg rounded-3xl border border-slate-100 bg-white p-10 text-center shadow-lg shadow-primary-50" }, /* @__PURE__ */ React21.createElement("div", { className: "mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-primary-50 text-primary-600" }, /* @__PURE__ */ React21.createElement(Heart, { className: "h-8 w-8" })), /* @__PURE__ */ React21.createElement("h2", { className: "mt-6 text-3xl font-bold text-slate-900" }, "Sign in to see your favourites"), /* @__PURE__ */ React21.createElement("p", { className: "mt-3 text-slate-500" }, "Create your curated shelf of products and we'll keep them ready whenever you return."), /* @__PURE__ */ React21.createElement(Button, { className: "mt-6", onClick: () => router.push(buildPath("/login")) }, "Sign In"))), isAuthenticated && /* @__PURE__ */ React21.createElement(React21.Fragment, null, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React21.createElement("h2", { className: "text-2xl font-semibold text-slate-900" }, "Your saved collection"), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, "Total value: ", /* @__PURE__ */ React21.createElement("span", { className: "font-semibold text-primary-600" }, formatPrice(totalValue)), onlyInStock && " \u2022 Showing items ready to ship")), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-3" }, /* @__PURE__ */ React21.createElement("label", { className: "inline-flex cursor-pointer items-center gap-2 rounded-full border border-slate-200 bg-slate-50 px-3 py-1.5 text-sm font-medium text-slate-600 transition hover:border-primary-200 hover:text-primary-600" }, /* @__PURE__ */ React21.createElement(
|
|
10919
10919
|
"input",
|
|
10920
10920
|
{
|
|
10921
10921
|
type: "checkbox",
|
|
@@ -10923,54 +10923,54 @@ function WishlistScreen() {
|
|
|
10923
10923
|
onChange: (event) => setOnlyInStock(event.target.checked),
|
|
10924
10924
|
className: "h-4 w-4 rounded border-slate-300 text-primary-600 focus:ring-primary-500"
|
|
10925
10925
|
}
|
|
10926
|
-
), "Only show in-stock"), /* @__PURE__ */
|
|
10926
|
+
), "Only show in-stock"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 rounded-full border border-slate-200 bg-slate-50 px-3 py-1.5 text-sm text-slate-600" }, /* @__PURE__ */ React21.createElement("span", null, "Sort"), /* @__PURE__ */ React21.createElement(
|
|
10927
10927
|
"select",
|
|
10928
10928
|
{
|
|
10929
10929
|
value: sortOption,
|
|
10930
10930
|
onChange: (event) => setSortOption(event.target.value),
|
|
10931
10931
|
className: "bg-transparent text-sm font-medium text-slate-700 outline-none"
|
|
10932
10932
|
},
|
|
10933
|
-
SORT_OPTIONS.map((option) => /* @__PURE__ */
|
|
10934
|
-
)), /* @__PURE__ */
|
|
10933
|
+
SORT_OPTIONS.map((option) => /* @__PURE__ */ React21.createElement("option", { key: option.value, value: option.value }, option.label))
|
|
10934
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "flex overflow-hidden rounded-full border border-slate-200 bg-slate-50" }, /* @__PURE__ */ React21.createElement(
|
|
10935
10935
|
"button",
|
|
10936
10936
|
{
|
|
10937
10937
|
type: "button",
|
|
10938
10938
|
onClick: () => setViewMode("grid"),
|
|
10939
10939
|
className: `flex items-center gap-1 px-3 py-1.5 text-sm font-medium transition ${viewMode === "grid" ? "bg-primary-600 text-white shadow-lg shadow-primary-500/30" : "text-slate-600 hover:bg-white"}`
|
|
10940
10940
|
},
|
|
10941
|
-
/* @__PURE__ */
|
|
10941
|
+
/* @__PURE__ */ React21.createElement(Grid, { className: "h-4 w-4" }),
|
|
10942
10942
|
"Grid"
|
|
10943
|
-
), /* @__PURE__ */
|
|
10943
|
+
), /* @__PURE__ */ React21.createElement(
|
|
10944
10944
|
"button",
|
|
10945
10945
|
{
|
|
10946
10946
|
type: "button",
|
|
10947
10947
|
onClick: () => setViewMode("list"),
|
|
10948
10948
|
className: `flex items-center gap-1 px-3 py-1.5 text-sm font-medium transition ${viewMode === "list" ? "bg-primary-600 text-white shadow-lg shadow-primary-500/30" : "text-slate-600 hover:bg-white"}`
|
|
10949
10949
|
},
|
|
10950
|
-
/* @__PURE__ */
|
|
10950
|
+
/* @__PURE__ */ React21.createElement(List, { className: "h-4 w-4" }),
|
|
10951
10951
|
"List"
|
|
10952
|
-
)), wishlistCount > 0 && /* @__PURE__ */
|
|
10952
|
+
)), wishlistCount > 0 && /* @__PURE__ */ React21.createElement(
|
|
10953
10953
|
Button,
|
|
10954
10954
|
{
|
|
10955
10955
|
variant: "ghost",
|
|
10956
10956
|
className: "text-sm font-semibold text-slate-500 hover:text-red-500",
|
|
10957
10957
|
onClick: handleClearWishlist
|
|
10958
10958
|
},
|
|
10959
|
-
/* @__PURE__ */
|
|
10959
|
+
/* @__PURE__ */ React21.createElement(Trash2, { className: "h-4 w-4" }),
|
|
10960
10960
|
"Clear all"
|
|
10961
|
-
))), isLoading && /* @__PURE__ */
|
|
10961
|
+
))), isLoading && /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-3" }, Array.from({ length: Math.min(wishlistCount || 3, 6) }).map((_, index) => /* @__PURE__ */ React21.createElement(
|
|
10962
10962
|
"div",
|
|
10963
10963
|
{
|
|
10964
10964
|
key: index,
|
|
10965
10965
|
className: "h-72 animate-pulse rounded-2xl border border-slate-200 bg-slate-100"
|
|
10966
10966
|
}
|
|
10967
|
-
))), !isLoading && wishlistCount === 0 && /* @__PURE__ */
|
|
10967
|
+
))), !isLoading && wishlistCount === 0 && /* @__PURE__ */ React21.createElement("div", { className: "flex min-h-[30vh] items-center justify-center" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-2xl rounded-3xl border border-slate-100 bg-white p-12 text-center shadow-xl shadow-primary-50" }, /* @__PURE__ */ React21.createElement("div", { className: "mx-auto flex h-20 w-20 items-center justify-center rounded-full bg-primary-100 text-primary-600" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-10 w-10" })), /* @__PURE__ */ React21.createElement("h2", { className: "mt-6 text-4xl font-bold text-slate-900" }, "Start your wellness wishlist"), /* @__PURE__ */ React21.createElement("p", { className: "mt-4 text-lg text-slate-500" }, "Bookmark pharmacy essentials, supplements, or skincare picks and we'll keep them safe until you're ready to checkout."), /* @__PURE__ */ React21.createElement("div", { className: "mt-8 flex flex-wrap justify-center gap-3" }, /* @__PURE__ */ React21.createElement(Button, { onClick: () => router.push(buildPath("/shop")) }, "Discover products"), /* @__PURE__ */ React21.createElement(Button, { variant: "outline", onClick: () => router.push(buildPath("/categories")) }, "Browse categories")))), !isLoading && processedProducts.length > 0 && /* @__PURE__ */ React21.createElement(React21.Fragment, null, viewMode === "grid" ? /* @__PURE__ */ React21.createElement(
|
|
10968
10968
|
motion.div,
|
|
10969
10969
|
{
|
|
10970
10970
|
layout: true,
|
|
10971
10971
|
className: "grid grid-cols-1 gap-5 sm:grid-cols-2 xl:grid-cols-3"
|
|
10972
10972
|
},
|
|
10973
|
-
/* @__PURE__ */
|
|
10973
|
+
/* @__PURE__ */ React21.createElement(AnimatePresence, null, processedProducts.map((product) => /* @__PURE__ */ React21.createElement(
|
|
10974
10974
|
motion.div,
|
|
10975
10975
|
{
|
|
10976
10976
|
key: product.id,
|
|
@@ -10980,7 +10980,7 @@ function WishlistScreen() {
|
|
|
10980
10980
|
exit: { opacity: 0, y: -20 },
|
|
10981
10981
|
transition: { duration: 0.2 }
|
|
10982
10982
|
},
|
|
10983
|
-
/* @__PURE__ */
|
|
10983
|
+
/* @__PURE__ */ React21.createElement(
|
|
10984
10984
|
ProductCard,
|
|
10985
10985
|
{
|
|
10986
10986
|
product,
|
|
@@ -10990,7 +10990,7 @@ function WishlistScreen() {
|
|
|
10990
10990
|
}
|
|
10991
10991
|
)
|
|
10992
10992
|
)))
|
|
10993
|
-
) : /* @__PURE__ */
|
|
10993
|
+
) : /* @__PURE__ */ React21.createElement(motion.div, { layout: true, className: "space-y-4" }, /* @__PURE__ */ React21.createElement(AnimatePresence, null, processedProducts.map((product) => /* @__PURE__ */ React21.createElement(
|
|
10994
10994
|
motion.div,
|
|
10995
10995
|
{
|
|
10996
10996
|
key: product.id,
|
|
@@ -11001,7 +11001,7 @@ function WishlistScreen() {
|
|
|
11001
11001
|
transition: { duration: 0.2 },
|
|
11002
11002
|
className: "flex flex-col gap-4 rounded-2xl border border-slate-100 bg-slate-50 p-4 shadow-sm shadow-primary-50 sm:flex-row sm:items-center"
|
|
11003
11003
|
},
|
|
11004
|
-
/* @__PURE__ */
|
|
11004
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative h-28 w-full overflow-hidden rounded-2xl bg-white sm:w-40" }, /* @__PURE__ */ React21.createElement(
|
|
11005
11005
|
Image3,
|
|
11006
11006
|
{
|
|
11007
11007
|
fill: true,
|
|
@@ -11010,14 +11010,14 @@ function WishlistScreen() {
|
|
|
11010
11010
|
className: "h-full w-full object-cover"
|
|
11011
11011
|
}
|
|
11012
11012
|
)),
|
|
11013
|
-
/* @__PURE__ */
|
|
11013
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-1 flex-col gap-2" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center justify-between gap-3" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-slate-900" }, product.name), /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-slate-500" }, product.parentCategories?.map((category) => category?.name).join(", ") || "General wellness")), /* @__PURE__ */ React21.createElement("div", { className: "text-right" }, /* @__PURE__ */ React21.createElement("p", { className: "text-lg font-bold text-primary-600" }, formatPrice(product.finalPrice ?? 0)), product.isDiscounted && /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-emerald-500" }, "You save ", formatPrice(Math.max((product.priceBeforeDiscount ?? 0) - (product.finalPrice ?? 0), 0))))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap items-center gap-3 text-xs text-slate-500" }, /* @__PURE__ */ React21.createElement("span", { className: `inline-flex items-center gap-1 rounded-full px-2.5 py-1 font-medium ${product.inventoryCount > 0 ? "bg-emerald-100 text-emerald-700" : "bg-rose-100 text-rose-700"}` }, /* @__PURE__ */ React21.createElement(Package, { className: "h-3.5 w-3.5" }), product.inventoryCount > 0 ? "In stock" : "Backordered"), product.totalSold > 0 && /* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-slate-200 px-2.5 py-1 font-medium text-slate-700" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-3.5 w-3.5" }), product.totalSold, "+ purchased")), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React21.createElement(
|
|
11014
11014
|
Button,
|
|
11015
11015
|
{
|
|
11016
11016
|
size: "sm",
|
|
11017
11017
|
onClick: () => router.push(buildPath(`/products/${product.id}`))
|
|
11018
11018
|
},
|
|
11019
11019
|
"View details"
|
|
11020
|
-
), /* @__PURE__ */
|
|
11020
|
+
), /* @__PURE__ */ React21.createElement(
|
|
11021
11021
|
Button,
|
|
11022
11022
|
{
|
|
11023
11023
|
size: "sm",
|
|
@@ -11027,7 +11027,7 @@ function WishlistScreen() {
|
|
|
11027
11027
|
},
|
|
11028
11028
|
"Remove"
|
|
11029
11029
|
)))
|
|
11030
|
-
))))), isAuthenticated && emptyAfterFiltering && /* @__PURE__ */
|
|
11030
|
+
))))), isAuthenticated && emptyAfterFiltering && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col items-center justify-center rounded-2xl border border-dashed border-slate-200 bg-slate-50 p-12 text-center" }, /* @__PURE__ */ React21.createElement("div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-slate-200 text-slate-500" }, /* @__PURE__ */ React21.createElement(Package, { className: "h-8 w-8" })), /* @__PURE__ */ React21.createElement("h3", { className: "mt-6 text-2xl font-semibold text-slate-900" }, "Nothing matches those filters"), /* @__PURE__ */ React21.createElement("p", { className: "mt-2 max-w-md text-sm text-slate-500" }, "Try showing out-of-stock items or adjust your sort order to revisit everything you\u2019ve saved."), /* @__PURE__ */ React21.createElement(Button, { className: "mt-6", variant: "outline", onClick: () => setOnlyInStock(false) }, "Show all saved products"))))
|
|
11031
11031
|
))));
|
|
11032
11032
|
}
|
|
11033
11033
|
function SearchPage() {
|
|
@@ -11141,31 +11141,31 @@ function CategoriesScreen() {
|
|
|
11141
11141
|
const { categories, isLoading } = useCategories();
|
|
11142
11142
|
const router = useRouter();
|
|
11143
11143
|
const { buildPath } = useBasePath();
|
|
11144
|
-
return /* @__PURE__ */
|
|
11144
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React21.createElement("section", { className: "relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]" }), /* @__PURE__ */ React21.createElement("div", { className: "relative container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement(
|
|
11145
11145
|
motion.div,
|
|
11146
11146
|
{
|
|
11147
11147
|
initial: { opacity: 0, y: 24 },
|
|
11148
11148
|
animate: { opacity: 1, y: 0 },
|
|
11149
11149
|
className: "space-y-6"
|
|
11150
11150
|
},
|
|
11151
|
-
/* @__PURE__ */
|
|
11152
|
-
/* @__PURE__ */
|
|
11153
|
-
))), /* @__PURE__ */
|
|
11151
|
+
/* @__PURE__ */ React21.createElement("span", { className: "inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur" }, /* @__PURE__ */ React21.createElement(Package, { className: "h-4 w-4" }), "Product Categories"),
|
|
11152
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between" }, /* @__PURE__ */ React21.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React21.createElement("h1", { className: "text-4xl font-bold md:text-5xl" }, "Browse Our Product Range"), /* @__PURE__ */ React21.createElement("p", { className: "max-w-2xl text-white/80 md:text-lg" }, "Explore our comprehensive selection of healthcare products, carefully curated by our pharmacists to meet all your wellness needs.")), /* @__PURE__ */ React21.createElement("div", { className: "rounded-3xl bg-white/15 p-6 backdrop-blur" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm font-semibold uppercase tracking-[0.35em] text-white/70" }, "Quick tip"), /* @__PURE__ */ React21.createElement("p", { className: "mt-3 text-sm text-white/80" }, "Use the categories below to quickly find the products you're looking for, or use the search function for specific items.")))
|
|
11153
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "relative -mt-16 pb-16" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement(
|
|
11154
11154
|
motion.div,
|
|
11155
11155
|
{
|
|
11156
11156
|
initial: { opacity: 0, y: 24 },
|
|
11157
11157
|
animate: { opacity: 1, y: 0 },
|
|
11158
11158
|
className: "rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50"
|
|
11159
11159
|
},
|
|
11160
|
-
/* @__PURE__ */
|
|
11161
|
-
isLoading ? /* @__PURE__ */
|
|
11160
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 text-sm text-slate-500 mb-6" }, /* @__PURE__ */ React21.createElement(Sparkles, { className: "h-4 w-4 text-primary-500" }), /* @__PURE__ */ React21.createElement("span", null, "Browse our complete product catalog organized by categories.")),
|
|
11161
|
+
isLoading ? /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6" }, [...Array(8)].map((_, i) => /* @__PURE__ */ React21.createElement("div", { key: i, className: "animate-pulse" }, /* @__PURE__ */ React21.createElement("div", { className: "bg-gray-200 rounded-lg aspect-square mb-2" }), /* @__PURE__ */ React21.createElement("div", { className: "h-4 bg-gray-200 rounded w-3/4 mb-1" }), /* @__PURE__ */ React21.createElement("div", { className: "h-3 bg-gray-200 rounded w-1/2" })))) : categories.length > 0 ? /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6" }, categories.map((category) => /* @__PURE__ */ React21.createElement(
|
|
11162
11162
|
Link8,
|
|
11163
11163
|
{
|
|
11164
11164
|
key: category.id,
|
|
11165
11165
|
href: buildPath(`/shop?category=${category.name}`),
|
|
11166
11166
|
className: "group block overflow-hidden rounded-xl border border-gray-100 bg-white p-4 text-center transition hover:shadow-lg hover:border-primary-500"
|
|
11167
11167
|
},
|
|
11168
|
-
/* @__PURE__ */
|
|
11168
|
+
/* @__PURE__ */ React21.createElement("div", { className: "relative aspect-square w-full overflow-hidden rounded-lg bg-gray-50 mb-3" }, category.image ? /* @__PURE__ */ React21.createElement(
|
|
11169
11169
|
Image3,
|
|
11170
11170
|
{
|
|
11171
11171
|
src: category.image,
|
|
@@ -11174,10 +11174,10 @@ function CategoriesScreen() {
|
|
|
11174
11174
|
className: "object-cover transition-transform group-hover:scale-105",
|
|
11175
11175
|
sizes: "(max-width: 768px) 50vw, (max-width: 1200px) 33vw, 25vw"
|
|
11176
11176
|
}
|
|
11177
|
-
) : /* @__PURE__ */
|
|
11178
|
-
/* @__PURE__ */
|
|
11179
|
-
category.productCount > 0 && /* @__PURE__ */
|
|
11180
|
-
))) : /* @__PURE__ */
|
|
11177
|
+
) : /* @__PURE__ */ React21.createElement("div", { className: "flex h-full w-full items-center justify-center bg-gray-100 text-gray-400" }, /* @__PURE__ */ React21.createElement(Package, { className: "h-12 w-12" }))),
|
|
11178
|
+
/* @__PURE__ */ React21.createElement("h3", { className: "text-lg font-semibold text-gray-900 group-hover:text-primary-600 transition-colors" }, category.name),
|
|
11179
|
+
category.productCount > 0 && /* @__PURE__ */ React21.createElement("p", { className: "mt-1 text-sm text-gray-500" }, category.productCount, " ", category.productCount === 1 ? "product" : "products")
|
|
11180
|
+
))) : /* @__PURE__ */ React21.createElement(
|
|
11181
11181
|
EmptyState,
|
|
11182
11182
|
{
|
|
11183
11183
|
title: "No categories found",
|
|
@@ -11344,7 +11344,7 @@ function Header() {
|
|
|
11344
11344
|
{ href: buildPath("/about"), label: "About" },
|
|
11345
11345
|
{ href: buildPath("/contact"), label: "Contact" }
|
|
11346
11346
|
];
|
|
11347
|
-
return /* @__PURE__ */
|
|
11347
|
+
return /* @__PURE__ */ React21.createElement("header", { className: "sticky top-0 z-40 bg-white/80 backdrop-blur-xl border-b border-gray-200 shadow-sm" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between h-20" }, /* @__PURE__ */ React21.createElement(Link8, { href: buildPath("/"), className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement("div", { className: "relative w-12 h-12" }, /* @__PURE__ */ React21.createElement(
|
|
11348
11348
|
Image3,
|
|
11349
11349
|
{
|
|
11350
11350
|
src: config.logo,
|
|
@@ -11352,7 +11352,7 @@ function Header() {
|
|
|
11352
11352
|
fill: true,
|
|
11353
11353
|
className: "object-contain"
|
|
11354
11354
|
}
|
|
11355
|
-
)), /* @__PURE__ */
|
|
11355
|
+
)), /* @__PURE__ */ React21.createElement("span", { className: "text-2xl font-bold text-gray-900 hidden sm:block" }, config.storeName)), /* @__PURE__ */ React21.createElement("nav", { className: "hidden lg:flex items-center gap-8" }, navLinks.map((link) => /* @__PURE__ */ React21.createElement(
|
|
11356
11356
|
Link8,
|
|
11357
11357
|
{
|
|
11358
11358
|
key: link.href,
|
|
@@ -11360,16 +11360,16 @@ function Header() {
|
|
|
11360
11360
|
className: "text-gray-700 hover:text-primary-600 font-medium transition-colors relative group"
|
|
11361
11361
|
},
|
|
11362
11362
|
link.label,
|
|
11363
|
-
/* @__PURE__ */
|
|
11364
|
-
))), /* @__PURE__ */
|
|
11363
|
+
/* @__PURE__ */ React21.createElement("span", { className: "absolute bottom-0 left-0 w-0 h-0.5 bg-primary-600 group-hover:w-full transition-all duration-300" })
|
|
11364
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React21.createElement("div", { className: "relative" }, /* @__PURE__ */ React21.createElement(
|
|
11365
11365
|
"button",
|
|
11366
11366
|
{
|
|
11367
11367
|
onClick: () => setIsSearchOpen(!isSearchOpen),
|
|
11368
11368
|
className: "p-2 hover:bg-gray-100 rounded-lg transition-colors",
|
|
11369
11369
|
"aria-label": "Search"
|
|
11370
11370
|
},
|
|
11371
|
-
/* @__PURE__ */
|
|
11372
|
-
), /* @__PURE__ */
|
|
11371
|
+
/* @__PURE__ */ React21.createElement(Search, { className: "w-5 h-5 text-gray-700" })
|
|
11372
|
+
), /* @__PURE__ */ React21.createElement(AnimatePresence, null, isSearchOpen && /* @__PURE__ */ React21.createElement(
|
|
11373
11373
|
motion.div,
|
|
11374
11374
|
{
|
|
11375
11375
|
initial: { opacity: 0, width: 0 },
|
|
@@ -11377,7 +11377,7 @@ function Header() {
|
|
|
11377
11377
|
exit: { opacity: 0, width: 0 },
|
|
11378
11378
|
className: "absolute right-0 top-full mt-2 bg-white rounded-lg shadow-lg overflow-hidden"
|
|
11379
11379
|
},
|
|
11380
|
-
/* @__PURE__ */
|
|
11380
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex items-center p-2 w-64" }, /* @__PURE__ */ React21.createElement(Search, { className: "w-5 h-5 text-gray-400 mr-2" }), /* @__PURE__ */ React21.createElement(
|
|
11381
11381
|
"input",
|
|
11382
11382
|
{
|
|
11383
11383
|
type: "text",
|
|
@@ -11392,36 +11392,36 @@ function Header() {
|
|
|
11392
11392
|
className: "w-full outline-none text-gray-700",
|
|
11393
11393
|
autoFocus: true
|
|
11394
11394
|
}
|
|
11395
|
-
), searchQuery && /* @__PURE__ */
|
|
11395
|
+
), searchQuery && /* @__PURE__ */ React21.createElement(
|
|
11396
11396
|
"button",
|
|
11397
11397
|
{
|
|
11398
11398
|
onClick: () => setSearchQuery(""),
|
|
11399
11399
|
className: "text-gray-400 hover:text-gray-600"
|
|
11400
11400
|
},
|
|
11401
|
-
/* @__PURE__ */
|
|
11401
|
+
/* @__PURE__ */ React21.createElement(X, { className: "w-4 h-4" })
|
|
11402
11402
|
))
|
|
11403
|
-
))), /* @__PURE__ */
|
|
11403
|
+
))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React21.createElement(Link8, { href: buildPath("/wishlist"), className: "relative p-2 text-gray-700 hover:text-red-500 transition-colors" }, /* @__PURE__ */ React21.createElement(Heart, { className: "w-6 h-6" }), wishlistCount > 0 && /* @__PURE__ */ React21.createElement("span", { className: "absolute -top-1 -right-1 bg-red-500 text-white text-xs font-bold rounded-full w-5 h-5 flex items-center justify-center" }, wishlistCount)), /* @__PURE__ */ React21.createElement(Link8, { href: buildPath("/cart"), className: "relative p-2 text-gray-700 hover:text-primary-600 transition-colors" }, /* @__PURE__ */ React21.createElement(ShoppingCart, { className: "w-6 h-6" }), cart?.cartBody?.items?.length && cart.cartBody?.items?.length > 0 ? /* @__PURE__ */ React21.createElement("span", { className: "absolute -top-1 -right-1 bg-red-500 text-white text-xs font-bold rounded-full w-5 h-5 flex items-center justify-center" }, cart.cartBody?.items?.length) : null), isAuthenticated ? /* @__PURE__ */ React21.createElement(
|
|
11404
11404
|
Link8,
|
|
11405
11405
|
{
|
|
11406
11406
|
href: buildPath("/account"),
|
|
11407
11407
|
className: "p-2 hover:bg-gray-100 rounded-lg transition-colors"
|
|
11408
11408
|
},
|
|
11409
|
-
/* @__PURE__ */
|
|
11410
|
-
) : /* @__PURE__ */
|
|
11409
|
+
/* @__PURE__ */ React21.createElement(User, { className: "w-6 h-6 text-gray-700" })
|
|
11410
|
+
) : /* @__PURE__ */ React21.createElement(
|
|
11411
11411
|
Link8,
|
|
11412
11412
|
{
|
|
11413
11413
|
href: buildPath("/login"),
|
|
11414
11414
|
className: "hidden sm:block px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors font-medium"
|
|
11415
11415
|
},
|
|
11416
11416
|
"Sign In"
|
|
11417
|
-
)), /* @__PURE__ */
|
|
11417
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
11418
11418
|
"button",
|
|
11419
11419
|
{
|
|
11420
11420
|
className: "lg:hidden p-2 hover:bg-gray-100 rounded-lg transition-colors",
|
|
11421
11421
|
onClick: () => setIsMobileMenuOpen(!isMobileMenuOpen)
|
|
11422
11422
|
},
|
|
11423
|
-
isMobileMenuOpen ? /* @__PURE__ */
|
|
11424
|
-
)), /* @__PURE__ */
|
|
11423
|
+
isMobileMenuOpen ? /* @__PURE__ */ React21.createElement(X, { className: "w-6 h-6" }) : /* @__PURE__ */ React21.createElement(Menu, { className: "w-6 h-6" })
|
|
11424
|
+
)), /* @__PURE__ */ React21.createElement(AnimatePresence, null, isMobileMenuOpen && /* @__PURE__ */ React21.createElement(
|
|
11425
11425
|
motion.div,
|
|
11426
11426
|
{
|
|
11427
11427
|
initial: { opacity: 0, height: 0 },
|
|
@@ -11429,7 +11429,7 @@ function Header() {
|
|
|
11429
11429
|
exit: { opacity: 0, height: 0 },
|
|
11430
11430
|
className: "lg:hidden overflow-hidden border-t border-gray-200"
|
|
11431
11431
|
},
|
|
11432
|
-
/* @__PURE__ */
|
|
11432
|
+
/* @__PURE__ */ React21.createElement("nav", { className: "flex flex-col gap-1 py-2" }, navLinks.map((link) => /* @__PURE__ */ React21.createElement(
|
|
11433
11433
|
Link8,
|
|
11434
11434
|
{
|
|
11435
11435
|
key: link.href,
|
|
@@ -11438,7 +11438,7 @@ function Header() {
|
|
|
11438
11438
|
onClick: () => setIsMobileMenuOpen(false)
|
|
11439
11439
|
},
|
|
11440
11440
|
link.label
|
|
11441
|
-
)), !isAuthenticated && /* @__PURE__ */
|
|
11441
|
+
)), !isAuthenticated && /* @__PURE__ */ React21.createElement(
|
|
11442
11442
|
Link8,
|
|
11443
11443
|
{
|
|
11444
11444
|
href: buildPath("/login"),
|
|
@@ -11477,48 +11477,48 @@ function Footer() {
|
|
|
11477
11477
|
{ label: "Cookie Policy", href: buildPath("/cookies") }
|
|
11478
11478
|
]
|
|
11479
11479
|
};
|
|
11480
|
-
return /* @__PURE__ */
|
|
11480
|
+
return /* @__PURE__ */ React21.createElement("footer", { className: "bg-gray-900 text-gray-300" }, /* @__PURE__ */ React21.createElement("div", { className: "container mx-auto px-4 py-16" }, /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12" }, /* @__PURE__ */ React21.createElement("div", { className: "lg:col-span-2" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-2xl font-bold text-white mb-4" }, config.storeName), /* @__PURE__ */ React21.createElement("p", { className: "text-gray-400 mb-6 max-w-md" }, "Your trusted online store for quality products. We deliver excellence with every order."), /* @__PURE__ */ React21.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(Mail, { className: "w-5 h-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("span", null, "support@", config.storeName.toLowerCase().replace(/\s+/g, ""), ".com")), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(Phone, { className: "w-5 h-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("span", null, "+1 (555) 123-4567")), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React21.createElement(MapPin, { className: "w-5 h-5 text-primary-500" }), /* @__PURE__ */ React21.createElement("span", null, "123 Store Street, City, Country")))), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h4", { className: "text-lg font-semibold text-white mb-4" }, "Shop"), /* @__PURE__ */ React21.createElement("ul", { className: "space-y-2" }, footerLinks.shop.map((link) => /* @__PURE__ */ React21.createElement("li", { key: link.href }, /* @__PURE__ */ React21.createElement(
|
|
11481
11481
|
Link8,
|
|
11482
11482
|
{
|
|
11483
11483
|
href: link.href,
|
|
11484
11484
|
className: "hover:text-primary-500 transition-colors"
|
|
11485
11485
|
},
|
|
11486
11486
|
link.label
|
|
11487
|
-
))))), /* @__PURE__ */
|
|
11487
|
+
))))), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h4", { className: "text-lg font-semibold text-white mb-4" }, "Account"), /* @__PURE__ */ React21.createElement("ul", { className: "space-y-2" }, footerLinks.account.map((link) => /* @__PURE__ */ React21.createElement("li", { key: link.href }, /* @__PURE__ */ React21.createElement(
|
|
11488
11488
|
Link8,
|
|
11489
11489
|
{
|
|
11490
11490
|
href: link.href,
|
|
11491
11491
|
className: "hover:text-primary-500 transition-colors"
|
|
11492
11492
|
},
|
|
11493
11493
|
link.label
|
|
11494
|
-
))))), /* @__PURE__ */
|
|
11494
|
+
))))), /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h4", { className: "text-lg font-semibold text-white mb-4" }, "Support"), /* @__PURE__ */ React21.createElement("ul", { className: "space-y-2" }, footerLinks.support.map((link) => /* @__PURE__ */ React21.createElement("li", { key: link.href }, /* @__PURE__ */ React21.createElement(
|
|
11495
11495
|
Link8,
|
|
11496
11496
|
{
|
|
11497
11497
|
href: link.href,
|
|
11498
11498
|
className: "hover:text-primary-500 transition-colors"
|
|
11499
11499
|
},
|
|
11500
11500
|
link.label
|
|
11501
|
-
)))))), /* @__PURE__ */
|
|
11501
|
+
)))))), /* @__PURE__ */ React21.createElement("div", { className: "border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center gap-4" }, /* @__PURE__ */ React21.createElement("p", { className: "text-gray-400 text-sm" }, "\xA9 ", (/* @__PURE__ */ new Date()).getFullYear(), " ", config.storeName, ". All rights reserved."), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React21.createElement(
|
|
11502
11502
|
"a",
|
|
11503
11503
|
{
|
|
11504
11504
|
href: "#",
|
|
11505
11505
|
className: "w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors"
|
|
11506
11506
|
},
|
|
11507
|
-
/* @__PURE__ */
|
|
11508
|
-
), /* @__PURE__ */
|
|
11507
|
+
/* @__PURE__ */ React21.createElement(Facebook, { className: "w-5 h-5" })
|
|
11508
|
+
), /* @__PURE__ */ React21.createElement(
|
|
11509
11509
|
"a",
|
|
11510
11510
|
{
|
|
11511
11511
|
href: "#",
|
|
11512
11512
|
className: "w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors"
|
|
11513
11513
|
},
|
|
11514
|
-
/* @__PURE__ */
|
|
11515
|
-
), /* @__PURE__ */
|
|
11514
|
+
/* @__PURE__ */ React21.createElement(Twitter, { className: "w-5 h-5" })
|
|
11515
|
+
), /* @__PURE__ */ React21.createElement(
|
|
11516
11516
|
"a",
|
|
11517
11517
|
{
|
|
11518
11518
|
href: "#",
|
|
11519
11519
|
className: "w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors"
|
|
11520
11520
|
},
|
|
11521
|
-
/* @__PURE__ */
|
|
11521
|
+
/* @__PURE__ */ React21.createElement(Instagram, { className: "w-5 h-5" })
|
|
11522
11522
|
)))));
|
|
11523
11523
|
}
|
|
11524
11524
|
|