hey-pharmacist-ecommerce 1.1.22 → 1.1.24

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 CHANGED
@@ -9,8 +9,8 @@ var lucideReact = require('lucide-react');
9
9
  var reactQuery = require('@tanstack/react-query');
10
10
  var navigation = require('next/navigation');
11
11
  var Image4 = require('next/image');
12
+ var Link7 = require('next/link');
12
13
  var dynamic = require('next/dynamic');
13
- var Link6 = require('next/link');
14
14
  var reactHookForm = require('react-hook-form');
15
15
  var zod$1 = require('@hookform/resolvers/zod');
16
16
  var zod = require('zod');
@@ -20,8 +20,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
20
  var React8__default = /*#__PURE__*/_interopDefault(React8);
21
21
  var globalAxios4__default = /*#__PURE__*/_interopDefault(globalAxios4);
22
22
  var Image4__default = /*#__PURE__*/_interopDefault(Image4);
23
+ var Link7__default = /*#__PURE__*/_interopDefault(Link7);
23
24
  var dynamic__default = /*#__PURE__*/_interopDefault(dynamic);
24
- var Link6__default = /*#__PURE__*/_interopDefault(Link6);
25
25
 
26
26
  var __defProp = Object.defineProperty;
27
27
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -5547,56 +5547,6 @@ var ProductsApiAxiosParamCreator = function(configuration) {
5547
5547
  options: localVarRequestOptions
5548
5548
  };
5549
5549
  },
5550
- /**
5551
- *
5552
- * @summary Set or unset a product as featured for home screen
5553
- * @param {string} id Product ID
5554
- * @param {boolean} featured Whether to set the product as featured
5555
- * @param {*} [options] Override http request option.
5556
- * @throws {RequiredError}
5557
- */
5558
- setFeaturedProduct: async (id, featured, options = {}) => {
5559
- if (id === null || id === void 0) {
5560
- throw new RequiredError("id", "Required parameter id was null or undefined when calling setFeaturedProduct.");
5561
- }
5562
- if (featured === null || featured === void 0) {
5563
- throw new RequiredError("featured", "Required parameter featured was null or undefined when calling setFeaturedProduct.");
5564
- }
5565
- const localVarPath = `/products/{id}/featured`.replace(`{${"id"}}`, encodeURIComponent(String(id)));
5566
- const localVarUrlObj = new URL(localVarPath, "https://example.com");
5567
- let baseOptions;
5568
- if (configuration) {
5569
- baseOptions = configuration.baseOptions;
5570
- }
5571
- const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options };
5572
- const localVarHeaderParameter = {};
5573
- const localVarQueryParameter = {};
5574
- if (configuration && configuration.accessToken) {
5575
- const accessToken = typeof configuration.accessToken === "function" ? await configuration.accessToken() : await configuration.accessToken;
5576
- localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
5577
- }
5578
- if (configuration && configuration.apiKey) {
5579
- const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
5580
- localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
5581
- }
5582
- if (featured !== void 0) {
5583
- localVarQueryParameter["featured"] = featured;
5584
- }
5585
- const query = new URLSearchParams(localVarUrlObj.search);
5586
- for (const key in localVarQueryParameter) {
5587
- query.set(key, localVarQueryParameter[key]);
5588
- }
5589
- for (const key in options.params) {
5590
- query.set(key, options.params[key]);
5591
- }
5592
- localVarUrlObj.search = new URLSearchParams(query).toString();
5593
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
5594
- localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
5595
- return {
5596
- url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
5597
- options: localVarRequestOptions
5598
- };
5599
- },
5600
5550
  /**
5601
5551
  *
5602
5552
  * @summary Update a product
@@ -5851,21 +5801,6 @@ var ProductsApiFp = function(configuration) {
5851
5801
  return axios.request(axiosRequestArgs);
5852
5802
  };
5853
5803
  },
5854
- /**
5855
- *
5856
- * @summary Set or unset a product as featured for home screen
5857
- * @param {string} id Product ID
5858
- * @param {boolean} featured Whether to set the product as featured
5859
- * @param {*} [options] Override http request option.
5860
- * @throws {RequiredError}
5861
- */
5862
- async setFeaturedProduct(id, featured, options) {
5863
- const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).setFeaturedProduct(id, featured, options);
5864
- return (axios = globalAxios4__default.default, basePath = BASE_PATH) => {
5865
- const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
5866
- return axios.request(axiosRequestArgs);
5867
- };
5868
- },
5869
5804
  /**
5870
5805
  *
5871
5806
  * @summary Update a product
@@ -6048,18 +5983,6 @@ var ProductsApi = class extends BaseAPI {
6048
5983
  async getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options) {
6049
5984
  return ProductsApiFp(this.configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options).then((request) => request(this.axios, this.basePath));
6050
5985
  }
6051
- /**
6052
- *
6053
- * @summary Set or unset a product as featured for home screen
6054
- * @param {string} id Product ID
6055
- * @param {boolean} featured Whether to set the product as featured
6056
- * @param {*} [options] Override http request option.
6057
- * @throws {RequiredError}
6058
- * @memberof ProductsApi
6059
- */
6060
- async setFeaturedProduct(id, featured, options) {
6061
- return ProductsApiFp(this.configuration).setFeaturedProduct(id, featured, options).then((request) => request(this.axios, this.basePath));
6062
- }
6063
5986
  /**
6064
5987
  *
6065
5988
  * @summary Update a product
@@ -7172,7 +7095,6 @@ function CartProvider({ children }) {
7172
7095
  _id: oldCart.cartBody._id,
7173
7096
  items: simplifiedItems
7174
7097
  };
7175
- console.log("payload", payload);
7176
7098
  const response = await new CartApi(getApiConfiguration()).handleUserCart(payload);
7177
7099
  if (response.data) {
7178
7100
  setCart(response.data);
@@ -7204,16 +7126,13 @@ function CartProvider({ children }) {
7204
7126
  };
7205
7127
  });
7206
7128
  try {
7207
- console.log("Removing item with productVariantId:", productId);
7208
7129
  const itemsToKeep = currentCart.cartBody.items.filter((item) => String(item.productVariantId) !== String(productId));
7209
- console.log("Items to keep count:", itemsToKeep.length);
7210
7130
  const simplifiedItems = itemsToKeep.map((item) => ({
7211
7131
  _id: item._id,
7212
7132
  productVariantId: item.productVariantId,
7213
7133
  quantity: item.quantity
7214
7134
  }));
7215
7135
  if (simplifiedItems.length === 0) {
7216
- console.log("Cart will be empty, calling clearCart");
7217
7136
  await new CartApi(getApiConfiguration()).clearCart();
7218
7137
  setCart(null);
7219
7138
  } else {
@@ -7221,9 +7140,7 @@ function CartProvider({ children }) {
7221
7140
  _id: currentCart.cartBody._id,
7222
7141
  items: simplifiedItems
7223
7142
  };
7224
- console.log("Remove from cart payload:", JSON.stringify(payload, null, 2));
7225
7143
  const response = await new CartApi(getApiConfiguration()).handleUserCart(payload);
7226
- console.log("Remove from cart response:", response.status, response.data);
7227
7144
  if (response.data) {
7228
7145
  setCart(response.data);
7229
7146
  }
@@ -7463,7 +7380,7 @@ function useBasePath() {
7463
7380
  return ctx;
7464
7381
  }
7465
7382
  function EcommerceProvider({ config, children, withToaster = true, basePath = "" }) {
7466
- React8.useEffect(() => {
7383
+ React8__default.default.useMemo(() => {
7467
7384
  initializeApiAdapter(config);
7468
7385
  }, [config]);
7469
7386
  const [client] = React8__default.default.useState(
@@ -7528,7 +7445,6 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7528
7445
  if (!product || !selectedVariant) return;
7529
7446
  setIsAddingToCart(true);
7530
7447
  try {
7531
- console.log(selectedVariant);
7532
7448
  await addToCart(
7533
7449
  product.id,
7534
7450
  quantity,
@@ -7564,7 +7480,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7564
7480
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-['Poppins',sans-serif] text-[11px] text-primary uppercase tracking-wide font-medium mb-2", children: [
7565
7481
  product.brand,
7566
7482
  " \u2022 ",
7567
- product.parentCategories[0].name
7483
+ product.parentCategories?.[0]?.name || "Uncategorized"
7568
7484
  ] }),
7569
7485
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1px]", children: displayName }),
7570
7486
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mt-2", children: [
@@ -7600,7 +7516,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7600
7516
  {
7601
7517
  src: selectedVariant.productMedia[selectedImageIndex]?.file || selectedVariant.productMedia[0]?.file,
7602
7518
  alt: product.name,
7603
- className: "w-full h-full object-cover"
7519
+ className: "w-full h-full object-contain"
7604
7520
  }
7605
7521
  ),
7606
7522
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 left-4 flex flex-col gap-2", children: isDiscounted && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-accent text-white rounded-full px-3 py-1.5", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-['Poppins',sans-serif] font-bold text-[11px] uppercase", children: [
@@ -7619,7 +7535,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7619
7535
  {
7620
7536
  src: image.file,
7621
7537
  alt: `${product.name} ${index + 1}`,
7622
- className: "w-full h-full object-cover"
7538
+ className: "w-full h-full object-contain"
7623
7539
  }
7624
7540
  )
7625
7541
  },
@@ -7646,7 +7562,13 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7646
7562
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Package, { className: "size-3" }),
7647
7563
  "In Stock"
7648
7564
  ] }) }),
7649
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { dangerouslySetInnerHTML: { __html: product.description } }) }),
7565
+ /* @__PURE__ */ jsxRuntime.jsx(
7566
+ "div",
7567
+ {
7568
+ className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-6 max-w-full overflow-hidden break-words",
7569
+ dangerouslySetInnerHTML: { __html: product.description }
7570
+ }
7571
+ ),
7650
7572
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
7651
7573
  /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "font-['Poppins',sans-serif] font-semibold text-[13px] text-secondary mb-3", children: [
7652
7574
  "Selected Variant: ",
@@ -7724,12 +7646,11 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7724
7646
  ] })
7725
7647
  }
7726
7648
  ),
7727
- /* @__PURE__ */ jsxRuntime.jsxs(
7649
+ /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: `/products/${product._id}`, children: /* @__PURE__ */ jsxRuntime.jsxs(
7728
7650
  "button",
7729
7651
  {
7730
7652
  onClick: () => {
7731
7653
  onClose();
7732
- onNavigateToProduct?.(product.id);
7733
7654
  },
7734
7655
  className: "w-full font-['Poppins',sans-serif] font-medium text-[13px] px-6 py-3 rounded-full bg-white text-secondary border-2 border-primary hover:bg-gray-50 transition-all flex items-center justify-center gap-2",
7735
7656
  children: [
@@ -7737,7 +7658,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
7737
7658
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "size-4" })
7738
7659
  ]
7739
7660
  }
7740
- )
7661
+ ) })
7741
7662
  ] })
7742
7663
  ] })
7743
7664
  ] })
@@ -7898,7 +7819,7 @@ function ProductCard({
7898
7819
  "%"
7899
7820
  ] }) }) }),
7900
7821
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-['Poppins',sans-serif] text-xs text-[#5B9BD5] uppercase tracking-wide font-medium", children: product.brand }) }),
7901
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-['Poppins',sans-serif] font-semibold text-[#2B4B7C] mb-3", children: displayName }),
7822
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[40px] mb-3", children: /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-['Poppins',sans-serif] font-semibold text-[#2B4B7C] line-clamp-2", children: displayName }) }),
7902
7823
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-2", children: [
7903
7824
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
7904
7825
  lucideReact.Star,
@@ -8167,12 +8088,13 @@ function useProducts(filters, page = 1, limit = 20) {
8167
8088
  page
8168
8089
  );
8169
8090
  }
8170
- setProducts(response.data.data || []);
8091
+ setProducts(response.data.data);
8171
8092
  setPagination({
8172
8093
  page: response.data.currentPage || page,
8173
8094
  limit: response.data.limit || limit,
8174
- total: response.data.totalItems || products.length,
8175
- totalPages: response.data.totalPages || 1
8095
+ total: products.length,
8096
+ // Use filtered count
8097
+ totalPages: Math.ceil(products.length / limit)
8176
8098
  });
8177
8099
  } catch (err) {
8178
8100
  setError(err);
@@ -8945,33 +8867,32 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
8945
8867
  ) }) }),
8946
8868
  /* @__PURE__ */ jsxRuntime.jsx("section", { className: "py-8 bg-white", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container mx-auto px-4", children: [
8947
8869
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl md:text-3xl font-['Poppins',sans-serif] font-semibold text-secondary mb-6", children: "Shop by Category" }),
8948
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4", children: displayCategories.map((category, index) => {
8949
- const Icon = getCategoryIcon(category.name ?? "");
8950
- const isSelected = categoryFilter === category.id;
8951
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8952
- /* @__PURE__ */ jsxRuntime.jsx(
8953
- framerMotion.motion.button,
8954
- {
8955
- onClick: handleClearCategory,
8956
- initial: { opacity: 0, y: 20 },
8957
- animate: { opacity: 1, y: 0 },
8958
- transition: { delay: index * 0.1 },
8959
- className: `group relative overflow-hidden rounded-[24px] p-6 transition-all duration-300 ${!categoryFilter ? "bg-linear-to-br from-primary to-secondary text-white shadow-xl scale-105" : "bg-linear-to-br from-gray-50 to-white hover:shadow-lg border-2 border-gray-100 hover:border-primary"}`,
8960
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
8961
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `size-12 rounded-full mb-3 mx-auto flex items-center justify-center transition-all ${!categoryFilter ? "bg-white/20" : "bg-linear-to-br from-primary/10 to-secondary/10 group-hover:scale-110"}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: `size-6 ${!categoryFilter ? "text-white" : "text-primary"}` }) }),
8962
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-['Poppins',sans-serif] font-semibold text-[14px] mb-1.5 ${!categoryFilter ? "text-white" : "text-secondary"}`, children: "All Products" }),
8963
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: `font-['Poppins',sans-serif] text-[11px] ${!categoryFilter ? "text-white/80" : "text-muted"}`, children: "Browse Everything" })
8964
- ] })
8965
- }
8966
- ),
8967
- /* @__PURE__ */ jsxRuntime.jsx(
8870
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4", children: [
8871
+ /* @__PURE__ */ jsxRuntime.jsx(
8872
+ framerMotion.motion.button,
8873
+ {
8874
+ onClick: handleClearCategory,
8875
+ initial: { opacity: 0, y: 20 },
8876
+ animate: { opacity: 1, y: 0 },
8877
+ className: `group relative overflow-hidden rounded-[24px] p-6 min-h-[180px] min-w-[170px] transition-all duration-300 ${!categoryFilter ? "bg-linear-to-br from-primary to-secondary text-white shadow-xl scale-105" : "bg-linear-to-br from-gray-50 to-white hover:shadow-lg border-2 border-gray-100 hover:border-primary"}`,
8878
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
8879
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `size-12 rounded-full mb-3 mx-auto flex items-center justify-center transition-all ${!categoryFilter ? "bg-white/20" : "bg-linear-to-br from-primary/10 to-secondary/10 group-hover:scale-110"}`, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Package, { className: `size-6 ${!categoryFilter ? "text-white" : "text-primary"}` }) }),
8880
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-['Poppins',sans-serif] font-semibold text-[14px] mb-1.5 ${!categoryFilter ? "text-white" : "text-secondary"}`, children: "All Products" }),
8881
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: `font-['Poppins',sans-serif] text-[11px] ${!categoryFilter ? "text-white/80" : "text-muted"}`, children: "Browse Everything" })
8882
+ ] })
8883
+ }
8884
+ ),
8885
+ displayCategories.map((category, index) => {
8886
+ const Icon = getCategoryIcon(category.name ?? "");
8887
+ const isSelected = categoryFilter === category.id;
8888
+ return /* @__PURE__ */ jsxRuntime.jsx(
8968
8889
  framerMotion.motion.button,
8969
8890
  {
8970
8891
  initial: { opacity: 0, y: 20 },
8971
8892
  animate: { opacity: 1, y: 0 },
8972
8893
  transition: { delay: index * 0.1 },
8973
8894
  onClick: () => handleCategoryChange(category.id ?? ""),
8974
- className: `group relative overflow-hidden rounded-[24px] p-6 transition-all duration-300 ${isSelected ? "bg-linear-to-br from-primary to-secondary text-white shadow-xl scale-105" : "bg-linear-to-br from-gray-50 to-white hover:shadow-lg border-2 border-gray-100 hover:border-primary"}`,
8895
+ className: `group relative overflow-hidden rounded-[24px] p-6 min-h-[180px] min-w-[170px] transition-all duration-300 ${isSelected ? "bg-linear-to-br from-primary to-secondary text-white shadow-xl scale-105" : "bg-linear-to-br from-gray-50 to-white hover:shadow-lg border-2 border-gray-100 hover:border-primary"}`,
8975
8896
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
8976
8897
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `size-12 rounded-full mb-3 mx-auto flex items-center justify-center transition-all ${isSelected ? "bg-white/20" : "bg-linear-to-br from-primary/10 to-secondary/10 group-hover:scale-110"}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: `size-6 ${isSelected ? "text-white" : "text-primary"}` }) }),
8977
8898
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-['Poppins',sans-serif] font-semibold text-[14px] mb-1.5 ${isSelected ? "text-white" : "text-secondary"}`, children: category.name }),
@@ -8979,9 +8900,9 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
8979
8900
  ] })
8980
8901
  },
8981
8902
  category.id
8982
- )
8983
- ] });
8984
- }) })
8903
+ );
8904
+ })
8905
+ ] })
8985
8906
  ] }) }),
8986
8907
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative pb-16 mt-8", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-8 lg:flex-row", children: [
8987
8908
  /* @__PURE__ */ jsxRuntime.jsx("aside", { className: "hidden w-72 shrink-0 lg:block", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-24 rounded-lg bg-white", children: renderFiltersPanel() }) }),
@@ -9068,7 +8989,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
9068
8989
  router.push(buildPath(`/products/${item._id}`));
9069
8990
  }
9070
8991
  }
9071
- ) }, product.id)) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: displayedProducts.map((product) => {
8992
+ ) }, product._id)) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: displayedProducts.map((product) => {
9072
8993
  product.priceBeforeDiscount && product.priceBeforeDiscount > product.finalPrice ? Math.round(
9073
8994
  (product.priceBeforeDiscount - product.finalPrice) / product.priceBeforeDiscount * 100
9074
8995
  ) : 0;
@@ -9100,7 +9021,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
9100
9021
  tag
9101
9022
  ))
9102
9023
  ] }),
9103
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-semibold text-gray-900", children: product.name }),
9024
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-semibold text-gray-900 line-clamp-2", children: product.name }),
9104
9025
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm text-gray-500", children: [
9105
9026
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-2 font-medium text-primary-600", children: [
9106
9027
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "h-4 w-4" }),
@@ -9132,7 +9053,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
9132
9053
  ] })
9133
9054
  ]
9134
9055
  },
9135
- product.id
9056
+ product._id
9136
9057
  );
9137
9058
  }) }) : /* @__PURE__ */ jsxRuntime.jsx(
9138
9059
  EmptyState,
@@ -9204,9 +9125,6 @@ function ProductDetailScreen({ productId }) {
9204
9125
  setActiveImageIndex(0);
9205
9126
  }, [selectedVariant]);
9206
9127
  const product = React8.useMemo(() => {
9207
- console.log("productData", productData);
9208
- console.log("selectedVariant", selectedVariant);
9209
- console.log("initialProductData", initialProductData);
9210
9128
  if (initialProductData && !productData) {
9211
9129
  return initialProductData;
9212
9130
  }
@@ -9390,7 +9308,7 @@ function ProductDetailScreen({ productId }) {
9390
9308
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "mx-auto h-10 w-10 text-primary-500" }),
9391
9309
  /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-6 text-2xl font-semibold text-gray-900", children: "Product not found" }),
9392
9310
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-gray-600", children: "It may have been removed or is temporarily unavailable. Discover other pharmacy essentials in our catalogue." }),
9393
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsxRuntime.jsx(Link6__default.default, { href: "/shop", className: "inline-block", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { children: "Browse products" }) }) })
9311
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: "/shop", className: "inline-block", children: /* @__PURE__ */ jsxRuntime.jsx(Button, { children: "Browse products" }) }) })
9394
9312
  ] }) }) });
9395
9313
  }
9396
9314
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-screen bg-white", children: [
@@ -9472,7 +9390,7 @@ function ProductDetailScreen({ productId }) {
9472
9390
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-['Poppins',sans-serif] text-[12px] text-primary uppercase tracking-wide font-medium mb-2", children: [
9473
9391
  product.brand,
9474
9392
  " \u2022 ",
9475
- product.parentCategories?.[0].name
9393
+ product.parentCategories?.[0]?.name || "Uncategorized"
9476
9394
  ] }),
9477
9395
  /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1.5px] mb-3", children: selectedVariant?.name || product.name }),
9478
9396
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -9526,7 +9444,13 @@ function ProductDetailScreen({ productId }) {
9526
9444
  selectedVariant?.sku
9527
9445
  ] })
9528
9446
  ] }),
9529
- product.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-8", children: /* @__PURE__ */ jsxRuntime.jsx("div", { dangerouslySetInnerHTML: { __html: product.description } }) }),
9447
+ product.description && /* @__PURE__ */ jsxRuntime.jsx(
9448
+ "div",
9449
+ {
9450
+ className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-8 max-w-full overflow-hidden break-words",
9451
+ dangerouslySetInnerHTML: { __html: product.description }
9452
+ }
9453
+ ),
9530
9454
  product?.productVariants && product.productVariants.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
9531
9455
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-['Poppins',sans-serif] font-semibold text-[14px] text-secondary mb-3", children: "Select Variant" }),
9532
9456
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3", children: product.productVariants.map((variant) => {
@@ -9668,7 +9592,13 @@ function ProductDetailScreen({ productId }) {
9668
9592
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white rounded-[24px] p-8 border-2 border-gray-100", children: [
9669
9593
  activeTab === "description" && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
9670
9594
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-['Poppins',sans-serif] font-semibold text-secondary mb-4", children: "Product Description" }),
9671
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.8] mb-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { dangerouslySetInnerHTML: { __html: product.description } }) }),
9595
+ /* @__PURE__ */ jsxRuntime.jsx(
9596
+ "div",
9597
+ {
9598
+ className: "font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.8] mb-4 max-w-full overflow-hidden break-words",
9599
+ dangerouslySetInnerHTML: { __html: product.description }
9600
+ }
9601
+ ),
9672
9602
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
9673
9603
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-['Poppins',sans-serif] font-semibold text-[13px] text-secondary mb-3", children: "Last updated:" }),
9674
9604
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-['Poppins',sans-serif] text-[14px] text-muted", children: lastUpdatedLabel })
@@ -11205,7 +11135,7 @@ function LoginScreen() {
11205
11135
  "Remember me"
11206
11136
  ] }),
11207
11137
  /* @__PURE__ */ jsxRuntime.jsx(
11208
- Link6__default.default,
11138
+ Link7__default.default,
11209
11139
  {
11210
11140
  href: buildPath("/forgot-password"),
11211
11141
  className: "font-medium text-primary transition hover:opacity-80",
@@ -11227,7 +11157,7 @@ function LoginScreen() {
11227
11157
  ),
11228
11158
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted", children: [
11229
11159
  "Don't have an account? ",
11230
- /* @__PURE__ */ jsxRuntime.jsx(Link6__default.default, { href: buildPath("/register"), className: "font-medium text-primary transition hover:opacity-90", children: "Sign up" })
11160
+ /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: buildPath("/register"), className: "font-medium text-primary transition hover:opacity-90", children: "Sign up" })
11231
11161
  ] }) })
11232
11162
  ] })
11233
11163
  }
@@ -11415,12 +11345,12 @@ function RegisterScreen() {
11415
11345
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
11416
11346
  "By creating an account, you agree to our",
11417
11347
  " ",
11418
- /* @__PURE__ */ jsxRuntime.jsx(Link6__default.default, { href: buildPath("/terms"), className: "font-semibold text-primary hover:opacity-70", children: "Terms of Service" }),
11348
+ /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: buildPath("/terms"), className: "font-semibold text-primary hover:opacity-70", children: "Terms of Service" }),
11419
11349
  " ",
11420
11350
  "and",
11421
11351
  " ",
11422
11352
  /* @__PURE__ */ jsxRuntime.jsx(
11423
- Link6__default.default,
11353
+ Link7__default.default,
11424
11354
  {
11425
11355
  href: buildPath("/privacy"),
11426
11356
  className: "font-semibold text-primary hover:opacity-70",
@@ -11444,7 +11374,7 @@ function RegisterScreen() {
11444
11374
  ),
11445
11375
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted", children: [
11446
11376
  "Already have an account? ",
11447
- /* @__PURE__ */ jsxRuntime.jsx(Link6__default.default, { href: buildPath("/login"), className: "font-medium text-primary transition hover:opacity-90", children: "Sign in" })
11377
+ /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: buildPath("/login"), className: "font-medium text-primary transition hover:opacity-90", children: "Sign in" })
11448
11378
  ] }) })
11449
11379
  ] })
11450
11380
  }
@@ -11500,7 +11430,6 @@ function useOrders(page = 1, limit = 10, orderStatus, paymentStatus) {
11500
11430
  resolvedUserId
11501
11431
  );
11502
11432
  setOrders(response.data.data || []);
11503
- console.log(response.data);
11504
11433
  setPagination({
11505
11434
  page: response.data.page || page,
11506
11435
  limit: response.data.limit || limit,
@@ -11883,7 +11812,6 @@ function AccountSavedItemsTab() {
11883
11812
  wishlistProductIds
11884
11813
  );
11885
11814
  const products = wishlistProducts || [];
11886
- console.log(products);
11887
11815
  if (isLoading) {
11888
11816
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
11889
11817
  "div",
@@ -12660,7 +12588,7 @@ function CurrentOrdersScreen() {
12660
12588
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold uppercase tracking-[0.35em] text-white/70", children: "Quick actions" }),
12661
12589
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 space-y-3 text-sm text-white/80", children: [
12662
12590
  /* @__PURE__ */ jsxRuntime.jsxs(
12663
- Link6__default.default,
12591
+ Link7__default.default,
12664
12592
  {
12665
12593
  href: buildPath("/orders"),
12666
12594
  className: "flex items-center justify-between rounded-2xl bg-white/10 px-4 py-3 transition hover:bg-white/20",
@@ -13529,7 +13457,6 @@ function SearchPage() {
13529
13457
  }
13530
13458
  try {
13531
13459
  setIsLoading(true);
13532
- console.log(searchQuery);
13533
13460
  const api = new ProductsApi(AXIOS_CONFIG);
13534
13461
  const response = await api.getAllProductsForStore(
13535
13462
  searchQuery,
@@ -13640,7 +13567,7 @@ function SearchPage() {
13640
13567
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-gray-500 mb-6", children: [
13641
13568
  "Try different keywords or check out our",
13642
13569
  " ",
13643
- /* @__PURE__ */ jsxRuntime.jsx(Link6__default.default, { href: "/shop", className: "text-primary-600 hover:underline ml-1 font-medium", children: "featured products" })
13570
+ /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: "/shop", className: "text-primary-600 hover:underline ml-1 font-medium", children: "featured products" })
13644
13571
  ] })
13645
13572
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-500", children: "Enter a search term to find products" }) })
13646
13573
  ] })
@@ -13663,7 +13590,6 @@ function NewAddressPage() {
13663
13590
  const onSubmit = async (data) => {
13664
13591
  setIsSubmitting(true);
13665
13592
  try {
13666
- console.log("Submitting address data:", data);
13667
13593
  const api = new AddressesApi(AXIOS_CONFIG);
13668
13594
  const response = await api.createAddressForUser({
13669
13595
  name: data.name,
@@ -13851,7 +13777,7 @@ function Header() {
13851
13777
  { href: buildPath("/shop"), label: "Shop" }
13852
13778
  ];
13853
13779
  return /* @__PURE__ */ jsxRuntime.jsx("header", { className: "sticky top-0 z-10 bg-white/80 backdrop-blur-xl border-b border-gray-200 shadow-xs", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container mx-auto px-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between h-20", children: [
13854
- /* @__PURE__ */ jsxRuntime.jsx(Link6__default.default, { href: buildPath("/"), className: "flex items-center gap-3", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-12 h-12", children: /* @__PURE__ */ jsxRuntime.jsx(
13780
+ /* @__PURE__ */ jsxRuntime.jsx(Link7__default.default, { href: buildPath("/"), className: "flex items-center gap-3", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-12 h-12", children: /* @__PURE__ */ jsxRuntime.jsx(
13855
13781
  Image4__default.default,
13856
13782
  {
13857
13783
  src: config.logo,
@@ -13861,7 +13787,7 @@ function Header() {
13861
13787
  }
13862
13788
  ) }) }),
13863
13789
  /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "hidden lg:flex items-center gap-8", children: navLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsxs(
13864
- Link6__default.default,
13790
+ Link7__default.default,
13865
13791
  {
13866
13792
  href: link.href,
13867
13793
  className: "text-gray-700 hover:text-primary-600 font-medium transition-colors relative group",
@@ -13921,11 +13847,11 @@ function Header() {
13921
13847
  ) })
13922
13848
  ] }),
13923
13849
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
13924
- /* @__PURE__ */ jsxRuntime.jsxs(Link6__default.default, { href: buildPath("/wishlist"), className: "relative p-2 text-gray-700 hover:text-red-500 transition-colors", children: [
13850
+ /* @__PURE__ */ jsxRuntime.jsxs(Link7__default.default, { href: buildPath("/wishlist"), className: "relative p-2 text-gray-700 hover:text-red-500 transition-colors", children: [
13925
13851
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heart, { className: "w-6 h-6" }),
13926
13852
  wishlistCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("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", children: wishlistCount })
13927
13853
  ] }),
13928
- /* @__PURE__ */ jsxRuntime.jsxs(Link6__default.default, { href: buildPath("/cart"), className: "relative p-2 text-gray-700 hover:text-primary-600 transition-colors", children: [
13854
+ /* @__PURE__ */ jsxRuntime.jsxs(Link7__default.default, { href: buildPath("/cart"), className: "relative p-2 text-gray-700 hover:text-primary-600 transition-colors", children: [
13929
13855
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShoppingCart, { className: "w-6 h-6" }),
13930
13856
  cart?.cartBody?.items?.length && cart.cartBody?.items?.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("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", children: cart.cartBody?.items?.length }) : null
13931
13857
  ] }),
@@ -13959,7 +13885,7 @@ function Header() {
13959
13885
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 truncate", children: user?.email })
13960
13886
  ] }),
13961
13887
  /* @__PURE__ */ jsxRuntime.jsxs(
13962
- Link6__default.default,
13888
+ Link7__default.default,
13963
13889
  {
13964
13890
  href: buildPath("/account"),
13965
13891
  onClick: () => setIsDropdownOpen(false),
@@ -13986,7 +13912,7 @@ function Header() {
13986
13912
  ] }) })
13987
13913
  ] })
13988
13914
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(
13989
- Link6__default.default,
13915
+ Link7__default.default,
13990
13916
  {
13991
13917
  href: buildPath("/login"),
13992
13918
  className: "hidden sm:block px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors font-medium",
@@ -14012,7 +13938,7 @@ function Header() {
14012
13938
  className: "lg:hidden overflow-hidden border-t border-gray-200",
14013
13939
  children: /* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex flex-col gap-1 py-2", children: [
14014
13940
  navLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
14015
- Link6__default.default,
13941
+ Link7__default.default,
14016
13942
  {
14017
13943
  href: link.href,
14018
13944
  className: "px-4 py-3 text-gray-700 hover:bg-gray-50 rounded-lg font-medium",
@@ -14022,7 +13948,7 @@ function Header() {
14022
13948
  link.href
14023
13949
  )),
14024
13950
  !isAuthenticated && /* @__PURE__ */ jsxRuntime.jsx(
14025
- Link6__default.default,
13951
+ Link7__default.default,
14026
13952
  {
14027
13953
  href: buildPath("/login"),
14028
13954
  onClick: () => setIsMobileMenuOpen(false),
@@ -14090,7 +14016,7 @@ function Footer() {
14090
14016
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
14091
14017
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-white mb-4", children: "Shop" }),
14092
14018
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2", children: footerLinks.shop.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
14093
- Link6__default.default,
14019
+ Link7__default.default,
14094
14020
  {
14095
14021
  href: link.href,
14096
14022
  className: "hover:text-primary-500 transition-colors",
@@ -14101,7 +14027,7 @@ function Footer() {
14101
14027
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
14102
14028
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-white mb-4", children: "Account" }),
14103
14029
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2", children: footerLinks.account.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
14104
- Link6__default.default,
14030
+ Link7__default.default,
14105
14031
  {
14106
14032
  href: link.href,
14107
14033
  className: "hover:text-primary-500 transition-colors",
@@ -14112,7 +14038,7 @@ function Footer() {
14112
14038
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
14113
14039
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-white mb-4", children: "Support" }),
14114
14040
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2", children: footerLinks.support.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
14115
- Link6__default.default,
14041
+ Link7__default.default,
14116
14042
  {
14117
14043
  href: link.href,
14118
14044
  className: "hover:text-primary-500 transition-colors",