hey-pharmacist-ecommerce 1.1.42 → 1.1.44
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/README.md +70 -8
- package/dist/index.d.mts +2550 -3081
- package/dist/index.d.ts +2550 -3081
- package/dist/index.js +506 -399
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +506 -397
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/components/AccountOverviewTab.tsx +5 -5
- package/src/components/AccountReviewsTab.tsx +4 -4
- package/src/components/CartItem.tsx +15 -15
- package/src/components/Header.tsx +1 -1
- package/src/components/Notification.tsx +3 -3
- package/src/components/OrderCard.tsx +1 -1
- package/src/components/ProductCard.tsx +11 -11
- package/src/components/QuickViewModal.tsx +16 -16
- package/src/components/RatingDistribution.tsx +2 -2
- package/src/components/ReviewCard.tsx +2 -2
- package/src/components/ReviewForm.tsx +3 -3
- package/src/components/ReviewPromptBanner.tsx +4 -4
- package/src/components/ReviewsList.tsx +9 -11
- package/src/components/StarRating.tsx +3 -3
- package/src/hooks/useProducts.ts +0 -1
- package/src/hooks/useSmartSearch.ts +68 -0
- package/src/lib/Apis/api.ts +1 -1
- package/src/lib/Apis/apis/analytics-api.ts +809 -0
- package/src/lib/Apis/apis/notifications-api.ts +8 -6
- package/src/lib/Apis/apis/products-api.ts +390 -15
- package/src/lib/Apis/apis/stores-api.ts +26 -149
- package/src/lib/Apis/apis/web-hooks-api.ts +8 -17
- package/src/lib/Apis/models/analytics-period-dto.ts +45 -0
- package/src/lib/Apis/models/appointment-overview-dto.ts +71 -0
- package/src/lib/Apis/models/category-sales-dto.ts +51 -0
- package/src/lib/Apis/models/create-store-dto.ts +12 -0
- package/src/lib/Apis/models/customer-overview-dto.ts +96 -0
- package/src/lib/Apis/models/{country-stats-response-dto.ts → customer-segment-dto.ts} +12 -13
- package/src/lib/Apis/models/dashboard-overview-dto.ts +70 -0
- package/src/lib/Apis/models/discount-overview-dto.ts +71 -0
- package/src/lib/Apis/models/group-with-no-users-dto.ts +0 -6
- package/src/lib/Apis/models/group-with-users-dto.ts +0 -6
- package/src/lib/Apis/models/index.ts +29 -38
- package/src/lib/Apis/models/{single-recipient-dto.ts → inline-response200.ts} +11 -10
- package/src/lib/Apis/models/{create-contact-dto.ts → inline-response2001.ts} +11 -11
- package/src/lib/Apis/models/inventory-alert-dto.ts +67 -0
- package/src/lib/Apis/models/notification-dto.ts +107 -0
- package/src/lib/Apis/models/notifications-paginated-response-dto.ts +58 -0
- package/src/lib/Apis/models/order-overview-dto.ts +89 -0
- package/src/lib/Apis/models/{single-link-stats-dto.ts → order-status-count-dto.ts} +10 -10
- package/src/lib/Apis/models/order.ts +0 -6
- package/src/lib/Apis/models/payout-history-item-dto.ts +45 -0
- package/src/lib/Apis/models/{single-country-stats-dto.ts → popular-time-slot-dto.ts} +10 -10
- package/src/lib/Apis/models/populated-order.ts +0 -6
- package/src/lib/Apis/models/preference-update-item.ts +1 -0
- package/src/lib/Apis/models/product-overview-dto.ts +90 -0
- package/src/lib/Apis/models/product.ts +6 -0
- package/src/lib/Apis/models/{create-contact-list-dto.ts → products-aidraft-body.ts} +4 -4
- package/src/lib/Apis/models/{schedule-campaign-draft-dto.ts → products-processimage-body.ts} +5 -5
- package/src/lib/Apis/models/{contact-full-response-dto.ts → rating-distribution-dto.ts} +9 -10
- package/src/lib/Apis/models/recent-review-dto.ts +63 -0
- package/src/lib/Apis/models/review-overview-dto.ts +65 -0
- package/src/lib/Apis/models/store-balance-dto.ts +39 -0
- package/src/lib/Apis/models/store-entity.ts +12 -0
- package/src/lib/Apis/models/{link-stats-response-dto.ts → store-finance-overview-dto.ts} +10 -15
- package/src/lib/Apis/models/store.ts +12 -0
- package/src/lib/Apis/models/{add-contact-to-list-dto.ts → time-series-point-dto.ts} +9 -9
- package/src/lib/Apis/models/{create-email-template-dto.ts → top-customer-dto.ts} +20 -14
- package/src/lib/Apis/models/{marketing-list-contact-dto.ts → top-discount-dto.ts} +12 -12
- package/src/lib/Apis/models/{single-browser-stats-dto.ts → top-product-dto.ts} +18 -12
- package/src/lib/Apis/models/{marketing-campaign-content-dto.ts → unread-count-dto.ts} +6 -6
- package/src/lib/Apis/models/update-store-dto.ts +12 -0
- package/src/lib/Apis/models/update-user-dto.ts +0 -6
- package/src/lib/Apis/models/user-group.ts +0 -6
- package/src/lib/Apis/models/user-with-no-id.ts +0 -6
- package/src/lib/Apis/sharedConfig.ts +1 -1
- package/src/screens/CartScreen.tsx +10 -10
- package/src/screens/CheckoutScreen.tsx +12 -12
- package/src/screens/OrderReviewsScreen.tsx +6 -6
- package/src/screens/ProductDetailScreen.tsx +40 -40
- package/src/screens/SearchResultsScreen.tsx +17 -21
- package/src/screens/ShopScreen.tsx +20 -82
- package/src/lib/Apis/apis/marketing-api.ts +0 -3099
- package/src/lib/Apis/models/api-key-info-dto.ts +0 -49
- package/src/lib/Apis/models/browser-stats-response-dto.ts +0 -40
- package/src/lib/Apis/models/campaign-content-response-dto.ts +0 -40
- package/src/lib/Apis/models/campaign-draft-dto.ts +0 -175
- package/src/lib/Apis/models/campaign-draft-response-dto.ts +0 -40
- package/src/lib/Apis/models/campaign-draft-schedule-dto.ts +0 -49
- package/src/lib/Apis/models/campaign-draft-schedule-response-dto.ts +0 -40
- package/src/lib/Apis/models/campaign-draft-sending-dto.ts +0 -43
- package/src/lib/Apis/models/campaign-draft-sending-response-dto.ts +0 -40
- package/src/lib/Apis/models/contact-aggregated-stats-response-dto.ts +0 -40
- package/src/lib/Apis/models/contact-full-dto.ts +0 -93
- package/src/lib/Apis/models/contact-list-stats-response-dto.ts +0 -40
- package/src/lib/Apis/models/contact-lists-response-dto.ts +0 -40
- package/src/lib/Apis/models/create-marketing-campaign-dto.ts +0 -81
- package/src/lib/Apis/models/email-template-response-dto.ts +0 -117
- package/src/lib/Apis/models/general-stats-response-dto.ts +0 -40
- package/src/lib/Apis/models/send-test-email-dto.ts +0 -28
- package/src/lib/Apis/models/single-contact-aggregated-stats-dto.ts +0 -129
- package/src/lib/Apis/models/single-contact-list-stats-dto.ts +0 -117
- package/src/lib/Apis/models/single-general-stats.ts +0 -153
- package/src/lib/Apis/models/store-api-keys-response-dto.ts +0 -34
- package/src/lib/Apis/models/update-api-keys-dto.ts +0 -39
- package/src/lib/Apis/models/update-campaign-draft-content-dto.ts +0 -27
- package/src/lib/Apis/models/update-marketing-camp-draft-dto.ts +0 -81
package/dist/index.js
CHANGED
|
@@ -71,7 +71,7 @@ var init_sharedConfig = __esm({
|
|
|
71
71
|
basePath: "https://api.heypharmacist.com",
|
|
72
72
|
// Default fallback
|
|
73
73
|
baseOptions: {
|
|
74
|
-
timeout:
|
|
74
|
+
timeout: 6e4
|
|
75
75
|
}
|
|
76
76
|
});
|
|
77
77
|
}
|
|
@@ -6351,6 +6351,52 @@ var ProductsApiAxiosParamCreator = function(configuration) {
|
|
|
6351
6351
|
options: localVarRequestOptions
|
|
6352
6352
|
};
|
|
6353
6353
|
},
|
|
6354
|
+
/**
|
|
6355
|
+
*
|
|
6356
|
+
* @summary Generate a product draft using AI
|
|
6357
|
+
* @param {ProductsAidraftBody} body
|
|
6358
|
+
* @param {*} [options] Override http request option.
|
|
6359
|
+
* @throws {RequiredError}
|
|
6360
|
+
*/
|
|
6361
|
+
generateAiDraft: async (body, options = {}) => {
|
|
6362
|
+
if (body === null || body === void 0) {
|
|
6363
|
+
throw new RequiredError("body", "Required parameter body was null or undefined when calling generateAiDraft.");
|
|
6364
|
+
}
|
|
6365
|
+
const localVarPath = `/products/ai-draft`;
|
|
6366
|
+
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
6367
|
+
let baseOptions;
|
|
6368
|
+
if (configuration) {
|
|
6369
|
+
baseOptions = configuration.baseOptions;
|
|
6370
|
+
}
|
|
6371
|
+
const localVarRequestOptions = { method: "POST", ...baseOptions, ...options };
|
|
6372
|
+
const localVarHeaderParameter = {};
|
|
6373
|
+
const localVarQueryParameter = {};
|
|
6374
|
+
if (configuration && configuration.accessToken) {
|
|
6375
|
+
const accessToken = typeof configuration.accessToken === "function" ? await configuration.accessToken() : await configuration.accessToken;
|
|
6376
|
+
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
|
6377
|
+
}
|
|
6378
|
+
if (configuration && configuration.apiKey) {
|
|
6379
|
+
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
6380
|
+
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
6381
|
+
}
|
|
6382
|
+
localVarHeaderParameter["Content-Type"] = "application/json";
|
|
6383
|
+
const query = new URLSearchParams(localVarUrlObj.search);
|
|
6384
|
+
for (const key in localVarQueryParameter) {
|
|
6385
|
+
query.set(key, localVarQueryParameter[key]);
|
|
6386
|
+
}
|
|
6387
|
+
for (const key in options.params) {
|
|
6388
|
+
query.set(key, options.params[key]);
|
|
6389
|
+
}
|
|
6390
|
+
localVarUrlObj.search = new URLSearchParams(query).toString();
|
|
6391
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
6392
|
+
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
6393
|
+
const needsSerialization = typeof body !== "string" || (localVarRequestOptions.headers || (localVarRequestOptions.headers = {}))["Content-Type"] === "application/json";
|
|
6394
|
+
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== void 0 ? body : {}) : body || "";
|
|
6395
|
+
return {
|
|
6396
|
+
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
|
6397
|
+
options: localVarRequestOptions
|
|
6398
|
+
};
|
|
6399
|
+
},
|
|
6354
6400
|
/**
|
|
6355
6401
|
*
|
|
6356
6402
|
* @summary [DEPRECATED] Use GET /products/all?categoryId=:id instead
|
|
@@ -6436,7 +6482,6 @@ var ProductsApiAxiosParamCreator = function(configuration) {
|
|
|
6436
6482
|
/**
|
|
6437
6483
|
*
|
|
6438
6484
|
* @summary Get all products with filtering and pagination
|
|
6439
|
-
* @param {string} [searchTerm]
|
|
6440
6485
|
* @param {number} [maxPrice]
|
|
6441
6486
|
* @param {number} [minPrice]
|
|
6442
6487
|
* @param {string} [brandFilter] Comma-separated brand names
|
|
@@ -6450,7 +6495,7 @@ var ProductsApiAxiosParamCreator = function(configuration) {
|
|
|
6450
6495
|
* @param {*} [options] Override http request option.
|
|
6451
6496
|
* @throws {RequiredError}
|
|
6452
6497
|
*/
|
|
6453
|
-
getAllProducts: async (
|
|
6498
|
+
getAllProducts: async (maxPrice, minPrice, brandFilter, availability, sort, subCategoryId, categoryId, isActive, limit, page, options = {}) => {
|
|
6454
6499
|
const localVarPath = `/products/all`;
|
|
6455
6500
|
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
6456
6501
|
let baseOptions;
|
|
@@ -6468,9 +6513,6 @@ var ProductsApiAxiosParamCreator = function(configuration) {
|
|
|
6468
6513
|
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
6469
6514
|
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
6470
6515
|
}
|
|
6471
|
-
if (searchTerm !== void 0) {
|
|
6472
|
-
localVarQueryParameter["searchTerm"] = searchTerm;
|
|
6473
|
-
}
|
|
6474
6516
|
if (maxPrice !== void 0) {
|
|
6475
6517
|
localVarQueryParameter["maxPrice"] = maxPrice;
|
|
6476
6518
|
}
|
|
@@ -6899,6 +6941,94 @@ var ProductsApiAxiosParamCreator = function(configuration) {
|
|
|
6899
6941
|
options: localVarRequestOptions
|
|
6900
6942
|
};
|
|
6901
6943
|
},
|
|
6944
|
+
/**
|
|
6945
|
+
*
|
|
6946
|
+
* @summary Process image using PhotoRoom (remove background)
|
|
6947
|
+
* @param {Blob} image
|
|
6948
|
+
* @param {*} [options] Override http request option.
|
|
6949
|
+
* @throws {RequiredError}
|
|
6950
|
+
*/
|
|
6951
|
+
processImageForm: async (image, options = {}) => {
|
|
6952
|
+
if (image === null || image === void 0) {
|
|
6953
|
+
throw new RequiredError("image", "Required parameter image was null or undefined when calling processImageForm.");
|
|
6954
|
+
}
|
|
6955
|
+
const localVarPath = `/products/process-image`;
|
|
6956
|
+
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
6957
|
+
let baseOptions;
|
|
6958
|
+
if (configuration) {
|
|
6959
|
+
baseOptions = configuration.baseOptions;
|
|
6960
|
+
}
|
|
6961
|
+
const localVarRequestOptions = { method: "POST", ...baseOptions, ...options };
|
|
6962
|
+
const localVarHeaderParameter = {};
|
|
6963
|
+
const localVarQueryParameter = {};
|
|
6964
|
+
const localVarFormParams = new FormData();
|
|
6965
|
+
if (configuration && configuration.accessToken) {
|
|
6966
|
+
const accessToken = typeof configuration.accessToken === "function" ? await configuration.accessToken() : await configuration.accessToken;
|
|
6967
|
+
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
|
6968
|
+
}
|
|
6969
|
+
if (configuration && configuration.apiKey) {
|
|
6970
|
+
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
6971
|
+
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
6972
|
+
}
|
|
6973
|
+
if (image !== void 0) {
|
|
6974
|
+
localVarFormParams.append("image", image);
|
|
6975
|
+
}
|
|
6976
|
+
localVarHeaderParameter["Content-Type"] = "multipart/form-data";
|
|
6977
|
+
const query = new URLSearchParams(localVarUrlObj.search);
|
|
6978
|
+
for (const key in localVarQueryParameter) {
|
|
6979
|
+
query.set(key, localVarQueryParameter[key]);
|
|
6980
|
+
}
|
|
6981
|
+
for (const key in options.params) {
|
|
6982
|
+
query.set(key, options.params[key]);
|
|
6983
|
+
}
|
|
6984
|
+
localVarUrlObj.search = new URLSearchParams(query).toString();
|
|
6985
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
6986
|
+
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
6987
|
+
localVarRequestOptions.data = localVarFormParams;
|
|
6988
|
+
return {
|
|
6989
|
+
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
|
6990
|
+
options: localVarRequestOptions
|
|
6991
|
+
};
|
|
6992
|
+
},
|
|
6993
|
+
/**
|
|
6994
|
+
* Generates AI embeddings for all products. Run this once after enabling smart search, or to refresh all embeddings.
|
|
6995
|
+
* @summary Reindex all product embeddings for smart search
|
|
6996
|
+
* @param {*} [options] Override http request option.
|
|
6997
|
+
* @throws {RequiredError}
|
|
6998
|
+
*/
|
|
6999
|
+
reindexEmbeddings: async (options = {}) => {
|
|
7000
|
+
const localVarPath = `/products/reindex-embeddings`;
|
|
7001
|
+
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
7002
|
+
let baseOptions;
|
|
7003
|
+
if (configuration) {
|
|
7004
|
+
baseOptions = configuration.baseOptions;
|
|
7005
|
+
}
|
|
7006
|
+
const localVarRequestOptions = { method: "POST", ...baseOptions, ...options };
|
|
7007
|
+
const localVarHeaderParameter = {};
|
|
7008
|
+
const localVarQueryParameter = {};
|
|
7009
|
+
if (configuration && configuration.accessToken) {
|
|
7010
|
+
const accessToken = typeof configuration.accessToken === "function" ? await configuration.accessToken() : await configuration.accessToken;
|
|
7011
|
+
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
|
7012
|
+
}
|
|
7013
|
+
if (configuration && configuration.apiKey) {
|
|
7014
|
+
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
7015
|
+
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
7016
|
+
}
|
|
7017
|
+
const query = new URLSearchParams(localVarUrlObj.search);
|
|
7018
|
+
for (const key in localVarQueryParameter) {
|
|
7019
|
+
query.set(key, localVarQueryParameter[key]);
|
|
7020
|
+
}
|
|
7021
|
+
for (const key in options.params) {
|
|
7022
|
+
query.set(key, options.params[key]);
|
|
7023
|
+
}
|
|
7024
|
+
localVarUrlObj.search = new URLSearchParams(query).toString();
|
|
7025
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
7026
|
+
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
7027
|
+
return {
|
|
7028
|
+
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
|
7029
|
+
options: localVarRequestOptions
|
|
7030
|
+
};
|
|
7031
|
+
},
|
|
6902
7032
|
/**
|
|
6903
7033
|
*
|
|
6904
7034
|
* @summary Reorder products within a category or subcategory
|
|
@@ -6945,6 +7075,56 @@ var ProductsApiAxiosParamCreator = function(configuration) {
|
|
|
6945
7075
|
options: localVarRequestOptions
|
|
6946
7076
|
};
|
|
6947
7077
|
},
|
|
7078
|
+
/**
|
|
7079
|
+
* Search products using natural language. Handles typos, synonyms, and returns related products ranked by relevance.
|
|
7080
|
+
* @summary Smart search using AI-powered semantic similarity
|
|
7081
|
+
* @param {string} searchTerm Search query (e.g., \"headache medicine\", \"iphn 12\")
|
|
7082
|
+
* @param {number} [limit] Maximum results (default: 20)
|
|
7083
|
+
* @param {*} [options] Override http request option.
|
|
7084
|
+
* @throws {RequiredError}
|
|
7085
|
+
*/
|
|
7086
|
+
smartSearch: async (searchTerm, limit, options = {}) => {
|
|
7087
|
+
if (searchTerm === null || searchTerm === void 0) {
|
|
7088
|
+
throw new RequiredError("searchTerm", "Required parameter searchTerm was null or undefined when calling smartSearch.");
|
|
7089
|
+
}
|
|
7090
|
+
const localVarPath = `/products/search`;
|
|
7091
|
+
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
7092
|
+
let baseOptions;
|
|
7093
|
+
if (configuration) {
|
|
7094
|
+
baseOptions = configuration.baseOptions;
|
|
7095
|
+
}
|
|
7096
|
+
const localVarRequestOptions = { method: "GET", ...baseOptions, ...options };
|
|
7097
|
+
const localVarHeaderParameter = {};
|
|
7098
|
+
const localVarQueryParameter = {};
|
|
7099
|
+
if (configuration && configuration.accessToken) {
|
|
7100
|
+
const accessToken = typeof configuration.accessToken === "function" ? await configuration.accessToken() : await configuration.accessToken;
|
|
7101
|
+
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
|
7102
|
+
}
|
|
7103
|
+
if (configuration && configuration.apiKey) {
|
|
7104
|
+
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
7105
|
+
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
7106
|
+
}
|
|
7107
|
+
if (searchTerm !== void 0) {
|
|
7108
|
+
localVarQueryParameter["searchTerm"] = searchTerm;
|
|
7109
|
+
}
|
|
7110
|
+
if (limit !== void 0) {
|
|
7111
|
+
localVarQueryParameter["limit"] = limit;
|
|
7112
|
+
}
|
|
7113
|
+
const query = new URLSearchParams(localVarUrlObj.search);
|
|
7114
|
+
for (const key in localVarQueryParameter) {
|
|
7115
|
+
query.set(key, localVarQueryParameter[key]);
|
|
7116
|
+
}
|
|
7117
|
+
for (const key in options.params) {
|
|
7118
|
+
query.set(key, options.params[key]);
|
|
7119
|
+
}
|
|
7120
|
+
localVarUrlObj.search = new URLSearchParams(query).toString();
|
|
7121
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
7122
|
+
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
7123
|
+
return {
|
|
7124
|
+
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
|
7125
|
+
options: localVarRequestOptions
|
|
7126
|
+
};
|
|
7127
|
+
},
|
|
6948
7128
|
/**
|
|
6949
7129
|
*
|
|
6950
7130
|
* @summary Update variant inventory (add or subtract)
|
|
@@ -7179,6 +7359,20 @@ var ProductsApiFp = function(configuration) {
|
|
|
7179
7359
|
return axios.request(axiosRequestArgs);
|
|
7180
7360
|
};
|
|
7181
7361
|
},
|
|
7362
|
+
/**
|
|
7363
|
+
*
|
|
7364
|
+
* @summary Generate a product draft using AI
|
|
7365
|
+
* @param {ProductsAidraftBody} body
|
|
7366
|
+
* @param {*} [options] Override http request option.
|
|
7367
|
+
* @throws {RequiredError}
|
|
7368
|
+
*/
|
|
7369
|
+
async generateAiDraft(body, options) {
|
|
7370
|
+
const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).generateAiDraft(body, options);
|
|
7371
|
+
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
7372
|
+
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
7373
|
+
return axios.request(axiosRequestArgs);
|
|
7374
|
+
};
|
|
7375
|
+
},
|
|
7182
7376
|
/**
|
|
7183
7377
|
*
|
|
7184
7378
|
* @summary [DEPRECATED] Use GET /products/all?categoryId=:id instead
|
|
@@ -7209,7 +7403,6 @@ var ProductsApiFp = function(configuration) {
|
|
|
7209
7403
|
/**
|
|
7210
7404
|
*
|
|
7211
7405
|
* @summary Get all products with filtering and pagination
|
|
7212
|
-
* @param {string} [searchTerm]
|
|
7213
7406
|
* @param {number} [maxPrice]
|
|
7214
7407
|
* @param {number} [minPrice]
|
|
7215
7408
|
* @param {string} [brandFilter] Comma-separated brand names
|
|
@@ -7223,8 +7416,8 @@ var ProductsApiFp = function(configuration) {
|
|
|
7223
7416
|
* @param {*} [options] Override http request option.
|
|
7224
7417
|
* @throws {RequiredError}
|
|
7225
7418
|
*/
|
|
7226
|
-
async getAllProducts(
|
|
7227
|
-
const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllProducts(
|
|
7419
|
+
async getAllProducts(maxPrice, minPrice, brandFilter, availability, sort, subCategoryId, categoryId, isActive, limit, page, options) {
|
|
7420
|
+
const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllProducts(maxPrice, minPrice, brandFilter, availability, sort, subCategoryId, categoryId, isActive, limit, page, options);
|
|
7228
7421
|
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
7229
7422
|
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
7230
7423
|
return axios.request(axiosRequestArgs);
|
|
@@ -7355,6 +7548,33 @@ var ProductsApiFp = function(configuration) {
|
|
|
7355
7548
|
return axios.request(axiosRequestArgs);
|
|
7356
7549
|
};
|
|
7357
7550
|
},
|
|
7551
|
+
/**
|
|
7552
|
+
*
|
|
7553
|
+
* @summary Process image using PhotoRoom (remove background)
|
|
7554
|
+
* @param {Blob} image
|
|
7555
|
+
* @param {*} [options] Override http request option.
|
|
7556
|
+
* @throws {RequiredError}
|
|
7557
|
+
*/
|
|
7558
|
+
async processImageForm(image, options) {
|
|
7559
|
+
const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).processImageForm(image, options);
|
|
7560
|
+
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
7561
|
+
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
7562
|
+
return axios.request(axiosRequestArgs);
|
|
7563
|
+
};
|
|
7564
|
+
},
|
|
7565
|
+
/**
|
|
7566
|
+
* Generates AI embeddings for all products. Run this once after enabling smart search, or to refresh all embeddings.
|
|
7567
|
+
* @summary Reindex all product embeddings for smart search
|
|
7568
|
+
* @param {*} [options] Override http request option.
|
|
7569
|
+
* @throws {RequiredError}
|
|
7570
|
+
*/
|
|
7571
|
+
async reindexEmbeddings(options) {
|
|
7572
|
+
const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).reindexEmbeddings(options);
|
|
7573
|
+
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
7574
|
+
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
7575
|
+
return axios.request(axiosRequestArgs);
|
|
7576
|
+
};
|
|
7577
|
+
},
|
|
7358
7578
|
/**
|
|
7359
7579
|
*
|
|
7360
7580
|
* @summary Reorder products within a category or subcategory
|
|
@@ -7369,6 +7589,21 @@ var ProductsApiFp = function(configuration) {
|
|
|
7369
7589
|
return axios.request(axiosRequestArgs);
|
|
7370
7590
|
};
|
|
7371
7591
|
},
|
|
7592
|
+
/**
|
|
7593
|
+
* Search products using natural language. Handles typos, synonyms, and returns related products ranked by relevance.
|
|
7594
|
+
* @summary Smart search using AI-powered semantic similarity
|
|
7595
|
+
* @param {string} searchTerm Search query (e.g., \"headache medicine\", \"iphn 12\")
|
|
7596
|
+
* @param {number} [limit] Maximum results (default: 20)
|
|
7597
|
+
* @param {*} [options] Override http request option.
|
|
7598
|
+
* @throws {RequiredError}
|
|
7599
|
+
*/
|
|
7600
|
+
async smartSearch(searchTerm, limit, options) {
|
|
7601
|
+
const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).smartSearch(searchTerm, limit, options);
|
|
7602
|
+
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
7603
|
+
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
7604
|
+
return axios.request(axiosRequestArgs);
|
|
7605
|
+
};
|
|
7606
|
+
},
|
|
7372
7607
|
/**
|
|
7373
7608
|
*
|
|
7374
7609
|
* @summary Update variant inventory (add or subtract)
|
|
@@ -7476,6 +7711,17 @@ var ProductsApi = class extends BaseAPI {
|
|
|
7476
7711
|
async deleteVariant(productId, variantId, options) {
|
|
7477
7712
|
return ProductsApiFp(this.configuration).deleteVariant(productId, variantId, options).then((request) => request(this.axios, this.basePath));
|
|
7478
7713
|
}
|
|
7714
|
+
/**
|
|
7715
|
+
*
|
|
7716
|
+
* @summary Generate a product draft using AI
|
|
7717
|
+
* @param {ProductsAidraftBody} body
|
|
7718
|
+
* @param {*} [options] Override http request option.
|
|
7719
|
+
* @throws {RequiredError}
|
|
7720
|
+
* @memberof ProductsApi
|
|
7721
|
+
*/
|
|
7722
|
+
async generateAiDraft(body, options) {
|
|
7723
|
+
return ProductsApiFp(this.configuration).generateAiDraft(body, options).then((request) => request(this.axios, this.basePath));
|
|
7724
|
+
}
|
|
7479
7725
|
/**
|
|
7480
7726
|
*
|
|
7481
7727
|
* @summary [DEPRECATED] Use GET /products/all?categoryId=:id instead
|
|
@@ -7500,7 +7746,6 @@ var ProductsApi = class extends BaseAPI {
|
|
|
7500
7746
|
/**
|
|
7501
7747
|
*
|
|
7502
7748
|
* @summary Get all products with filtering and pagination
|
|
7503
|
-
* @param {string} [searchTerm]
|
|
7504
7749
|
* @param {number} [maxPrice]
|
|
7505
7750
|
* @param {number} [minPrice]
|
|
7506
7751
|
* @param {string} [brandFilter] Comma-separated brand names
|
|
@@ -7515,8 +7760,8 @@ var ProductsApi = class extends BaseAPI {
|
|
|
7515
7760
|
* @throws {RequiredError}
|
|
7516
7761
|
* @memberof ProductsApi
|
|
7517
7762
|
*/
|
|
7518
|
-
async getAllProducts(
|
|
7519
|
-
return ProductsApiFp(this.configuration).getAllProducts(
|
|
7763
|
+
async getAllProducts(maxPrice, minPrice, brandFilter, availability, sort, subCategoryId, categoryId, isActive, limit, page, options) {
|
|
7764
|
+
return ProductsApiFp(this.configuration).getAllProducts(maxPrice, minPrice, brandFilter, availability, sort, subCategoryId, categoryId, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));
|
|
7520
7765
|
}
|
|
7521
7766
|
/**
|
|
7522
7767
|
*
|
|
@@ -7616,6 +7861,27 @@ var ProductsApi = class extends BaseAPI {
|
|
|
7616
7861
|
async getTopSellingProducts(limit, page, options) {
|
|
7617
7862
|
return ProductsApiFp(this.configuration).getTopSellingProducts(limit, page, options).then((request) => request(this.axios, this.basePath));
|
|
7618
7863
|
}
|
|
7864
|
+
/**
|
|
7865
|
+
*
|
|
7866
|
+
* @summary Process image using PhotoRoom (remove background)
|
|
7867
|
+
* @param {Blob} image
|
|
7868
|
+
* @param {*} [options] Override http request option.
|
|
7869
|
+
* @throws {RequiredError}
|
|
7870
|
+
* @memberof ProductsApi
|
|
7871
|
+
*/
|
|
7872
|
+
async processImageForm(image, options) {
|
|
7873
|
+
return ProductsApiFp(this.configuration).processImageForm(image, options).then((request) => request(this.axios, this.basePath));
|
|
7874
|
+
}
|
|
7875
|
+
/**
|
|
7876
|
+
* Generates AI embeddings for all products. Run this once after enabling smart search, or to refresh all embeddings.
|
|
7877
|
+
* @summary Reindex all product embeddings for smart search
|
|
7878
|
+
* @param {*} [options] Override http request option.
|
|
7879
|
+
* @throws {RequiredError}
|
|
7880
|
+
* @memberof ProductsApi
|
|
7881
|
+
*/
|
|
7882
|
+
async reindexEmbeddings(options) {
|
|
7883
|
+
return ProductsApiFp(this.configuration).reindexEmbeddings(options).then((request) => request(this.axios, this.basePath));
|
|
7884
|
+
}
|
|
7619
7885
|
/**
|
|
7620
7886
|
*
|
|
7621
7887
|
* @summary Reorder products within a category or subcategory
|
|
@@ -7627,6 +7893,18 @@ var ProductsApi = class extends BaseAPI {
|
|
|
7627
7893
|
async reorderProducts(body, options) {
|
|
7628
7894
|
return ProductsApiFp(this.configuration).reorderProducts(body, options).then((request) => request(this.axios, this.basePath));
|
|
7629
7895
|
}
|
|
7896
|
+
/**
|
|
7897
|
+
* Search products using natural language. Handles typos, synonyms, and returns related products ranked by relevance.
|
|
7898
|
+
* @summary Smart search using AI-powered semantic similarity
|
|
7899
|
+
* @param {string} searchTerm Search query (e.g., \"headache medicine\", \"iphn 12\")
|
|
7900
|
+
* @param {number} [limit] Maximum results (default: 20)
|
|
7901
|
+
* @param {*} [options] Override http request option.
|
|
7902
|
+
* @throws {RequiredError}
|
|
7903
|
+
* @memberof ProductsApi
|
|
7904
|
+
*/
|
|
7905
|
+
async smartSearch(searchTerm, limit, options) {
|
|
7906
|
+
return ProductsApiFp(this.configuration).smartSearch(searchTerm, limit, options).then((request) => request(this.axios, this.basePath));
|
|
7907
|
+
}
|
|
7630
7908
|
/**
|
|
7631
7909
|
*
|
|
7632
7910
|
* @summary Update variant inventory (add or subtract)
|
|
@@ -9524,16 +9802,12 @@ var StoresApiAxiosParamCreator = function(configuration) {
|
|
|
9524
9802
|
},
|
|
9525
9803
|
/**
|
|
9526
9804
|
*
|
|
9527
|
-
* @summary Get store
|
|
9528
|
-
* @param {string} storeId
|
|
9805
|
+
* @summary Get store finance overview
|
|
9529
9806
|
* @param {*} [options] Override http request option.
|
|
9530
9807
|
* @throws {RequiredError}
|
|
9531
9808
|
*/
|
|
9532
|
-
|
|
9533
|
-
|
|
9534
|
-
throw new RequiredError("storeId", "Required parameter storeId was null or undefined when calling getApiKeys.");
|
|
9535
|
-
}
|
|
9536
|
-
const localVarPath = `/stores/{storeId}/api-keys`.replace(`{${"storeId"}}`, encodeURIComponent(String(storeId)));
|
|
9809
|
+
getFinanceOverview: async (options = {}) => {
|
|
9810
|
+
const localVarPath = `/stores/finance/overview`;
|
|
9537
9811
|
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
9538
9812
|
let baseOptions;
|
|
9539
9813
|
if (configuration) {
|
|
@@ -9756,49 +10030,6 @@ var StoresApiAxiosParamCreator = function(configuration) {
|
|
|
9756
10030
|
options: localVarRequestOptions
|
|
9757
10031
|
};
|
|
9758
10032
|
},
|
|
9759
|
-
/**
|
|
9760
|
-
*
|
|
9761
|
-
* @summary Revoke/delete a specific API key
|
|
9762
|
-
* @param {string} storeId
|
|
9763
|
-
* @param {string} keyType Type of key to revoke
|
|
9764
|
-
* @param {*} [options] Override http request option.
|
|
9765
|
-
* @throws {RequiredError}
|
|
9766
|
-
*/
|
|
9767
|
-
revokeApiKey: async (storeId, keyType, options = {}) => {
|
|
9768
|
-
if (storeId === null || storeId === void 0) {
|
|
9769
|
-
throw new RequiredError("storeId", "Required parameter storeId was null or undefined when calling revokeApiKey.");
|
|
9770
|
-
}
|
|
9771
|
-
if (keyType === null || keyType === void 0) {
|
|
9772
|
-
throw new RequiredError("keyType", "Required parameter keyType was null or undefined when calling revokeApiKey.");
|
|
9773
|
-
}
|
|
9774
|
-
const localVarPath = `/stores/{storeId}/api-keys/{keyType}`.replace(`{${"storeId"}}`, encodeURIComponent(String(storeId))).replace(`{${"keyType"}}`, encodeURIComponent(String(keyType)));
|
|
9775
|
-
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
9776
|
-
let baseOptions;
|
|
9777
|
-
if (configuration) {
|
|
9778
|
-
baseOptions = configuration.baseOptions;
|
|
9779
|
-
}
|
|
9780
|
-
const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options };
|
|
9781
|
-
const localVarHeaderParameter = {};
|
|
9782
|
-
const localVarQueryParameter = {};
|
|
9783
|
-
if (configuration && configuration.apiKey) {
|
|
9784
|
-
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
9785
|
-
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
9786
|
-
}
|
|
9787
|
-
const query = new URLSearchParams(localVarUrlObj.search);
|
|
9788
|
-
for (const key in localVarQueryParameter) {
|
|
9789
|
-
query.set(key, localVarQueryParameter[key]);
|
|
9790
|
-
}
|
|
9791
|
-
for (const key in options.params) {
|
|
9792
|
-
query.set(key, options.params[key]);
|
|
9793
|
-
}
|
|
9794
|
-
localVarUrlObj.search = new URLSearchParams(query).toString();
|
|
9795
|
-
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
9796
|
-
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
9797
|
-
return {
|
|
9798
|
-
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
|
9799
|
-
options: localVarRequestOptions
|
|
9800
|
-
};
|
|
9801
|
-
},
|
|
9802
10033
|
/**
|
|
9803
10034
|
*
|
|
9804
10035
|
* @param {*} [options] Override http request option.
|
|
@@ -10205,33 +10436,24 @@ var StoresApiAxiosParamCreator = function(configuration) {
|
|
|
10205
10436
|
},
|
|
10206
10437
|
/**
|
|
10207
10438
|
*
|
|
10208
|
-
* @summary
|
|
10209
|
-
* @param {UpdateApiKeysDto} body
|
|
10210
|
-
* @param {string} storeId
|
|
10439
|
+
* @summary Generate Stripe Onboarding Link
|
|
10211
10440
|
* @param {*} [options] Override http request option.
|
|
10212
10441
|
* @throws {RequiredError}
|
|
10213
10442
|
*/
|
|
10214
|
-
|
|
10215
|
-
|
|
10216
|
-
throw new RequiredError("body", "Required parameter body was null or undefined when calling updateApiKeys.");
|
|
10217
|
-
}
|
|
10218
|
-
if (storeId === null || storeId === void 0) {
|
|
10219
|
-
throw new RequiredError("storeId", "Required parameter storeId was null or undefined when calling updateApiKeys.");
|
|
10220
|
-
}
|
|
10221
|
-
const localVarPath = `/stores/{storeId}/api-keys`.replace(`{${"storeId"}}`, encodeURIComponent(String(storeId)));
|
|
10443
|
+
startOnboarding: async (options = {}) => {
|
|
10444
|
+
const localVarPath = `/stores/onboarding`;
|
|
10222
10445
|
const localVarUrlObj = new URL(localVarPath, "https://example.com");
|
|
10223
10446
|
let baseOptions;
|
|
10224
10447
|
if (configuration) {
|
|
10225
10448
|
baseOptions = configuration.baseOptions;
|
|
10226
10449
|
}
|
|
10227
|
-
const localVarRequestOptions = { method: "
|
|
10450
|
+
const localVarRequestOptions = { method: "POST", ...baseOptions, ...options };
|
|
10228
10451
|
const localVarHeaderParameter = {};
|
|
10229
10452
|
const localVarQueryParameter = {};
|
|
10230
10453
|
if (configuration && configuration.apiKey) {
|
|
10231
10454
|
const localVarApiKeyValue = typeof configuration.apiKey === "function" ? await configuration.apiKey("x-store-key") : await configuration.apiKey;
|
|
10232
10455
|
localVarHeaderParameter["x-store-key"] = localVarApiKeyValue;
|
|
10233
10456
|
}
|
|
10234
|
-
localVarHeaderParameter["Content-Type"] = "application/json";
|
|
10235
10457
|
const query = new URLSearchParams(localVarUrlObj.search);
|
|
10236
10458
|
for (const key in localVarQueryParameter) {
|
|
10237
10459
|
query.set(key, localVarQueryParameter[key]);
|
|
@@ -10242,8 +10464,6 @@ var StoresApiAxiosParamCreator = function(configuration) {
|
|
|
10242
10464
|
localVarUrlObj.search = new URLSearchParams(query).toString();
|
|
10243
10465
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
10244
10466
|
localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
|
|
10245
|
-
const needsSerialization = typeof body !== "string" || (localVarRequestOptions.headers || (localVarRequestOptions.headers = {}))["Content-Type"] === "application/json";
|
|
10246
|
-
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== void 0 ? body : {}) : body || "";
|
|
10247
10467
|
return {
|
|
10248
10468
|
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
|
10249
10469
|
options: localVarRequestOptions
|
|
@@ -10477,13 +10697,12 @@ var StoresApiFp = function(configuration) {
|
|
|
10477
10697
|
},
|
|
10478
10698
|
/**
|
|
10479
10699
|
*
|
|
10480
|
-
* @summary Get store
|
|
10481
|
-
* @param {string} storeId
|
|
10700
|
+
* @summary Get store finance overview
|
|
10482
10701
|
* @param {*} [options] Override http request option.
|
|
10483
10702
|
* @throws {RequiredError}
|
|
10484
10703
|
*/
|
|
10485
|
-
async
|
|
10486
|
-
const localVarAxiosArgs = await StoresApiAxiosParamCreator(configuration).
|
|
10704
|
+
async getFinanceOverview(options) {
|
|
10705
|
+
const localVarAxiosArgs = await StoresApiAxiosParamCreator(configuration).getFinanceOverview(options);
|
|
10487
10706
|
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
10488
10707
|
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
10489
10708
|
return axios.request(axiosRequestArgs);
|
|
@@ -10559,21 +10778,6 @@ var StoresApiFp = function(configuration) {
|
|
|
10559
10778
|
return axios.request(axiosRequestArgs);
|
|
10560
10779
|
};
|
|
10561
10780
|
},
|
|
10562
|
-
/**
|
|
10563
|
-
*
|
|
10564
|
-
* @summary Revoke/delete a specific API key
|
|
10565
|
-
* @param {string} storeId
|
|
10566
|
-
* @param {string} keyType Type of key to revoke
|
|
10567
|
-
* @param {*} [options] Override http request option.
|
|
10568
|
-
* @throws {RequiredError}
|
|
10569
|
-
*/
|
|
10570
|
-
async revokeApiKey(storeId, keyType, options) {
|
|
10571
|
-
const localVarAxiosArgs = await StoresApiAxiosParamCreator(configuration).revokeApiKey(storeId, keyType, options);
|
|
10572
|
-
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
10573
|
-
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
10574
|
-
return axios.request(axiosRequestArgs);
|
|
10575
|
-
};
|
|
10576
|
-
},
|
|
10577
10781
|
/**
|
|
10578
10782
|
*
|
|
10579
10783
|
* @param {*} [options] Override http request option.
|
|
@@ -10714,14 +10918,12 @@ var StoresApiFp = function(configuration) {
|
|
|
10714
10918
|
},
|
|
10715
10919
|
/**
|
|
10716
10920
|
*
|
|
10717
|
-
* @summary
|
|
10718
|
-
* @param {UpdateApiKeysDto} body
|
|
10719
|
-
* @param {string} storeId
|
|
10921
|
+
* @summary Generate Stripe Onboarding Link
|
|
10720
10922
|
* @param {*} [options] Override http request option.
|
|
10721
10923
|
* @throws {RequiredError}
|
|
10722
10924
|
*/
|
|
10723
|
-
async
|
|
10724
|
-
const localVarAxiosArgs = await StoresApiAxiosParamCreator(configuration).
|
|
10925
|
+
async startOnboarding(options) {
|
|
10926
|
+
const localVarAxiosArgs = await StoresApiAxiosParamCreator(configuration).startOnboarding(options);
|
|
10725
10927
|
return (axios = globalAxios21__default.default, basePath = BASE_PATH) => {
|
|
10726
10928
|
const axiosRequestArgs = { ...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url };
|
|
10727
10929
|
return axios.request(axiosRequestArgs);
|
|
@@ -10843,14 +11045,13 @@ var StoresApi = class extends BaseAPI {
|
|
|
10843
11045
|
}
|
|
10844
11046
|
/**
|
|
10845
11047
|
*
|
|
10846
|
-
* @summary Get store
|
|
10847
|
-
* @param {string} storeId
|
|
11048
|
+
* @summary Get store finance overview
|
|
10848
11049
|
* @param {*} [options] Override http request option.
|
|
10849
11050
|
* @throws {RequiredError}
|
|
10850
11051
|
* @memberof StoresApi
|
|
10851
11052
|
*/
|
|
10852
|
-
async
|
|
10853
|
-
return StoresApiFp(this.configuration).
|
|
11053
|
+
async getFinanceOverview(options) {
|
|
11054
|
+
return StoresApiFp(this.configuration).getFinanceOverview(options).then((request) => request(this.axios, this.basePath));
|
|
10854
11055
|
}
|
|
10855
11056
|
/**
|
|
10856
11057
|
*
|
|
@@ -10907,18 +11108,6 @@ var StoresApi = class extends BaseAPI {
|
|
|
10907
11108
|
async getTransferePatientsRequests(storeId, options) {
|
|
10908
11109
|
return StoresApiFp(this.configuration).getTransferePatientsRequests(storeId, options).then((request) => request(this.axios, this.basePath));
|
|
10909
11110
|
}
|
|
10910
|
-
/**
|
|
10911
|
-
*
|
|
10912
|
-
* @summary Revoke/delete a specific API key
|
|
10913
|
-
* @param {string} storeId
|
|
10914
|
-
* @param {string} keyType Type of key to revoke
|
|
10915
|
-
* @param {*} [options] Override http request option.
|
|
10916
|
-
* @throws {RequiredError}
|
|
10917
|
-
* @memberof StoresApi
|
|
10918
|
-
*/
|
|
10919
|
-
async revokeApiKey(storeId, keyType, options) {
|
|
10920
|
-
return StoresApiFp(this.configuration).revokeApiKey(storeId, keyType, options).then((request) => request(this.axios, this.basePath));
|
|
10921
|
-
}
|
|
10922
11111
|
/**
|
|
10923
11112
|
*
|
|
10924
11113
|
* @param {*} [options] Override http request option.
|
|
@@ -11026,15 +11215,13 @@ var StoresApi = class extends BaseAPI {
|
|
|
11026
11215
|
}
|
|
11027
11216
|
/**
|
|
11028
11217
|
*
|
|
11029
|
-
* @summary
|
|
11030
|
-
* @param {UpdateApiKeysDto} body
|
|
11031
|
-
* @param {string} storeId
|
|
11218
|
+
* @summary Generate Stripe Onboarding Link
|
|
11032
11219
|
* @param {*} [options] Override http request option.
|
|
11033
11220
|
* @throws {RequiredError}
|
|
11034
11221
|
* @memberof StoresApi
|
|
11035
11222
|
*/
|
|
11036
|
-
async
|
|
11037
|
-
return StoresApiFp(this.configuration).
|
|
11223
|
+
async startOnboarding(options) {
|
|
11224
|
+
return StoresApiFp(this.configuration).startOnboarding(options).then((request) => request(this.axios, this.basePath));
|
|
11038
11225
|
}
|
|
11039
11226
|
/**
|
|
11040
11227
|
*
|
|
@@ -11405,13 +11592,6 @@ var AddressCreatedRequestAddressTypeEnum = /* @__PURE__ */ ((AddressCreatedReque
|
|
|
11405
11592
|
return AddressCreatedRequestAddressTypeEnum2;
|
|
11406
11593
|
})(AddressCreatedRequestAddressTypeEnum || {});
|
|
11407
11594
|
|
|
11408
|
-
// src/lib/Apis/models/api-key-info-dto.ts
|
|
11409
|
-
var ApiKeyInfoDtoKeyTypeEnum = /* @__PURE__ */ ((ApiKeyInfoDtoKeyTypeEnum2) => {
|
|
11410
|
-
ApiKeyInfoDtoKeyTypeEnum2["Stripe"] = "stripe";
|
|
11411
|
-
ApiKeyInfoDtoKeyTypeEnum2["Shippo"] = "shippo";
|
|
11412
|
-
return ApiKeyInfoDtoKeyTypeEnum2;
|
|
11413
|
-
})(ApiKeyInfoDtoKeyTypeEnum || {});
|
|
11414
|
-
|
|
11415
11595
|
// src/lib/Apis/models/bulk-channel-toggle-dto.ts
|
|
11416
11596
|
var BulkChannelToggleDtoCategoryEnum = /* @__PURE__ */ ((BulkChannelToggleDtoCategoryEnum2) => {
|
|
11417
11597
|
BulkChannelToggleDtoCategoryEnum2["Transactional"] = "transactional";
|
|
@@ -11422,45 +11602,6 @@ var BulkChannelToggleDtoCategoryEnum = /* @__PURE__ */ ((BulkChannelToggleDtoCat
|
|
|
11422
11602
|
return BulkChannelToggleDtoCategoryEnum2;
|
|
11423
11603
|
})(BulkChannelToggleDtoCategoryEnum || {});
|
|
11424
11604
|
|
|
11425
|
-
// src/lib/Apis/models/campaign-draft-dto.ts
|
|
11426
|
-
var CampaignDraftDtoStatusEnum = /* @__PURE__ */ ((CampaignDraftDtoStatusEnum2) => {
|
|
11427
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_MINUS_3"] = -3] = "NUMBER_MINUS_3";
|
|
11428
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_MINUS_2"] = -2] = "NUMBER_MINUS_2";
|
|
11429
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_MINUS_1"] = -1] = "NUMBER_MINUS_1";
|
|
11430
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_0"] = 0] = "NUMBER_0";
|
|
11431
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_1"] = 1] = "NUMBER_1";
|
|
11432
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_2"] = 2] = "NUMBER_2";
|
|
11433
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_3"] = 3] = "NUMBER_3";
|
|
11434
|
-
CampaignDraftDtoStatusEnum2[CampaignDraftDtoStatusEnum2["NUMBER_4"] = 4] = "NUMBER_4";
|
|
11435
|
-
return CampaignDraftDtoStatusEnum2;
|
|
11436
|
-
})(CampaignDraftDtoStatusEnum || {});
|
|
11437
|
-
|
|
11438
|
-
// src/lib/Apis/models/campaign-draft-schedule-dto.ts
|
|
11439
|
-
var CampaignDraftScheduleDtoStatusEnum = /* @__PURE__ */ ((CampaignDraftScheduleDtoStatusEnum2) => {
|
|
11440
|
-
CampaignDraftScheduleDtoStatusEnum2["AXCancelled"] = "AXCancelled";
|
|
11441
|
-
CampaignDraftScheduleDtoStatusEnum2["Deleted"] = "Deleted";
|
|
11442
|
-
CampaignDraftScheduleDtoStatusEnum2["Archived"] = "Archived";
|
|
11443
|
-
CampaignDraftScheduleDtoStatusEnum2["Draft"] = "Draft";
|
|
11444
|
-
CampaignDraftScheduleDtoStatusEnum2["Programmed"] = "Programmed";
|
|
11445
|
-
CampaignDraftScheduleDtoStatusEnum2["Sent"] = "Sent";
|
|
11446
|
-
CampaignDraftScheduleDtoStatusEnum2["AXTested"] = "AXTested";
|
|
11447
|
-
CampaignDraftScheduleDtoStatusEnum2["AXSelected"] = "AXSelected";
|
|
11448
|
-
return CampaignDraftScheduleDtoStatusEnum2;
|
|
11449
|
-
})(CampaignDraftScheduleDtoStatusEnum || {});
|
|
11450
|
-
|
|
11451
|
-
// src/lib/Apis/models/campaign-draft-sending-dto.ts
|
|
11452
|
-
var CampaignDraftSendingDtoStatusEnum = /* @__PURE__ */ ((CampaignDraftSendingDtoStatusEnum2) => {
|
|
11453
|
-
CampaignDraftSendingDtoStatusEnum2["AXCancelled"] = "AXCancelled";
|
|
11454
|
-
CampaignDraftSendingDtoStatusEnum2["Deleted"] = "Deleted";
|
|
11455
|
-
CampaignDraftSendingDtoStatusEnum2["Archived"] = "Archived";
|
|
11456
|
-
CampaignDraftSendingDtoStatusEnum2["Draft"] = "Draft";
|
|
11457
|
-
CampaignDraftSendingDtoStatusEnum2["Programmed"] = "Programmed";
|
|
11458
|
-
CampaignDraftSendingDtoStatusEnum2["Sent"] = "Sent";
|
|
11459
|
-
CampaignDraftSendingDtoStatusEnum2["AXTested"] = "AXTested";
|
|
11460
|
-
CampaignDraftSendingDtoStatusEnum2["AXSelected"] = "AXSelected";
|
|
11461
|
-
return CampaignDraftSendingDtoStatusEnum2;
|
|
11462
|
-
})(CampaignDraftSendingDtoStatusEnum || {});
|
|
11463
|
-
|
|
11464
11605
|
// src/lib/Apis/models/create-address-dto.ts
|
|
11465
11606
|
var CreateAddressDtoAddressTypeEnum = /* @__PURE__ */ ((CreateAddressDtoAddressTypeEnum2) => {
|
|
11466
11607
|
CreateAddressDtoAddressTypeEnum2["Billing"] = "Billing";
|
|
@@ -11528,6 +11669,13 @@ var DiscountStateEnum = /* @__PURE__ */ ((DiscountStateEnum2) => {
|
|
|
11528
11669
|
return DiscountStateEnum2;
|
|
11529
11670
|
})(DiscountStateEnum || {});
|
|
11530
11671
|
|
|
11672
|
+
// src/lib/Apis/models/inventory-alert-dto.ts
|
|
11673
|
+
var InventoryAlertDtoAlertTypeEnum = /* @__PURE__ */ ((InventoryAlertDtoAlertTypeEnum2) => {
|
|
11674
|
+
InventoryAlertDtoAlertTypeEnum2["LOWSTOCK"] = "LOW_STOCK";
|
|
11675
|
+
InventoryAlertDtoAlertTypeEnum2["OUTOFSTOCK"] = "OUT_OF_STOCK";
|
|
11676
|
+
return InventoryAlertDtoAlertTypeEnum2;
|
|
11677
|
+
})(InventoryAlertDtoAlertTypeEnum || {});
|
|
11678
|
+
|
|
11531
11679
|
// src/lib/Apis/models/manual-discount-dto.ts
|
|
11532
11680
|
var ManualDiscountDtoValueTypeEnum = /* @__PURE__ */ ((ManualDiscountDtoValueTypeEnum2) => {
|
|
11533
11681
|
ManualDiscountDtoValueTypeEnum2["PERCENTAGE"] = "PERCENTAGE";
|
|
@@ -11562,6 +11710,29 @@ var ManualOrderDTOPaymentStatusEnum = /* @__PURE__ */ ((ManualOrderDTOPaymentSta
|
|
|
11562
11710
|
return ManualOrderDTOPaymentStatusEnum2;
|
|
11563
11711
|
})(ManualOrderDTOPaymentStatusEnum || {});
|
|
11564
11712
|
|
|
11713
|
+
// src/lib/Apis/models/notification-dto.ts
|
|
11714
|
+
var NotificationDtoTypeEnum = /* @__PURE__ */ ((NotificationDtoTypeEnum2) => {
|
|
11715
|
+
NotificationDtoTypeEnum2["ORDERCONFIRMATION"] = "ORDER_CONFIRMATION";
|
|
11716
|
+
NotificationDtoTypeEnum2["PAYMENTFAILED"] = "PAYMENT_FAILED";
|
|
11717
|
+
NotificationDtoTypeEnum2["ORDERSHIPPED"] = "ORDER_SHIPPED";
|
|
11718
|
+
NotificationDtoTypeEnum2["ORDERDELIVERED"] = "ORDER_DELIVERED";
|
|
11719
|
+
NotificationDtoTypeEnum2["REFUNDPROCESSED"] = "REFUND_PROCESSED";
|
|
11720
|
+
NotificationDtoTypeEnum2["REVIEWREPLY"] = "REVIEW_REPLY";
|
|
11721
|
+
NotificationDtoTypeEnum2["ABANDONEDCARTREMINDER"] = "ABANDONED_CART_REMINDER";
|
|
11722
|
+
NotificationDtoTypeEnum2["PRICEDROPALERT"] = "PRICE_DROP_ALERT";
|
|
11723
|
+
NotificationDtoTypeEnum2["BACKINSTOCK"] = "BACK_IN_STOCK";
|
|
11724
|
+
NotificationDtoTypeEnum2["PASSWORDRESET"] = "PASSWORD_RESET";
|
|
11725
|
+
NotificationDtoTypeEnum2["NEWDEVICELOGIN"] = "NEW_DEVICE_LOGIN";
|
|
11726
|
+
NotificationDtoTypeEnum2["TWOFACODE"] = "TWO_FA_CODE";
|
|
11727
|
+
NotificationDtoTypeEnum2["NEWORDER"] = "NEW_ORDER";
|
|
11728
|
+
NotificationDtoTypeEnum2["LOWSTOCKWARNING"] = "LOW_STOCK_WARNING";
|
|
11729
|
+
NotificationDtoTypeEnum2["NEWRETURNREQUEST"] = "NEW_RETURN_REQUEST";
|
|
11730
|
+
NotificationDtoTypeEnum2["NEWUSERREGISTERED"] = "NEW_USER_REGISTERED";
|
|
11731
|
+
NotificationDtoTypeEnum2["HIGHVALUEORDERALERT"] = "HIGH_VALUE_ORDER_ALERT";
|
|
11732
|
+
NotificationDtoTypeEnum2["PAYOUTFAILED"] = "PAYOUT_FAILED";
|
|
11733
|
+
return NotificationDtoTypeEnum2;
|
|
11734
|
+
})(NotificationDtoTypeEnum || {});
|
|
11735
|
+
|
|
11565
11736
|
// src/lib/Apis/models/order.ts
|
|
11566
11737
|
var OrderOrderTypeEnum = /* @__PURE__ */ ((OrderOrderTypeEnum2) => {
|
|
11567
11738
|
OrderOrderTypeEnum2["Pickup"] = "Pickup";
|
|
@@ -11665,6 +11836,7 @@ var PreferenceUpdateItemTypeEnum = /* @__PURE__ */ ((PreferenceUpdateItemTypeEnu
|
|
|
11665
11836
|
PreferenceUpdateItemTypeEnum2["ORDERSHIPPED"] = "ORDER_SHIPPED";
|
|
11666
11837
|
PreferenceUpdateItemTypeEnum2["ORDERDELIVERED"] = "ORDER_DELIVERED";
|
|
11667
11838
|
PreferenceUpdateItemTypeEnum2["REFUNDPROCESSED"] = "REFUND_PROCESSED";
|
|
11839
|
+
PreferenceUpdateItemTypeEnum2["REVIEWREPLY"] = "REVIEW_REPLY";
|
|
11668
11840
|
PreferenceUpdateItemTypeEnum2["ABANDONEDCARTREMINDER"] = "ABANDONED_CART_REMINDER";
|
|
11669
11841
|
PreferenceUpdateItemTypeEnum2["PRICEDROPALERT"] = "PRICE_DROP_ALERT";
|
|
11670
11842
|
PreferenceUpdateItemTypeEnum2["BACKINSTOCK"] = "BACK_IN_STOCK";
|
|
@@ -11855,7 +12027,7 @@ function Notification2({ notification, onDismiss }) {
|
|
|
11855
12027
|
animate: { opacity: 1, y: 0, scale: 1 },
|
|
11856
12028
|
exit: { opacity: 0, x: 100, scale: 0.95 },
|
|
11857
12029
|
transition: { type: "spring", stiffness: 500, damping: 30 },
|
|
11858
|
-
className: `relative bg-
|
|
12030
|
+
className: `relative bg-hprimary-50 rounded-2xl border-2 ${config.borderColor} shadow-xl overflow-hidden min-w-[320px] max-w-[420px]`,
|
|
11859
12031
|
children: [
|
|
11860
12032
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-1 bg-linear-to-r ${config.gradient}` }),
|
|
11861
12033
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 flex items-start gap-3", children: [
|
|
@@ -11870,8 +12042,8 @@ function Notification2({ notification, onDismiss }) {
|
|
|
11870
12042
|
}
|
|
11871
12043
|
),
|
|
11872
12044
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
11873
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
11874
|
-
notification.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
12045
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-[14px] text-[#2B4B7C] mb-1", children: notification.message }),
|
|
12046
|
+
notification.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] text-[#676c80] leading-relaxed", children: notification.description })
|
|
11875
12047
|
] }),
|
|
11876
12048
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11877
12049
|
"button",
|
|
@@ -12780,8 +12952,8 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12780
12952
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-8", children: [
|
|
12781
12953
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between mb-6", children: [
|
|
12782
12954
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
12783
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
12784
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-
|
|
12955
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-hprimary uppercase tracking-wide font-medium mb-2", children: product.brand }),
|
|
12956
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-hsecondary tracking-[-1px]", children: displayName }),
|
|
12785
12957
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mt-2", children: [
|
|
12786
12958
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12787
12959
|
lucideReact.Star,
|
|
@@ -12790,7 +12962,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12790
12962
|
},
|
|
12791
12963
|
i
|
|
12792
12964
|
)) }),
|
|
12793
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
12965
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[13px] text-hmuted", children: [
|
|
12794
12966
|
product.summary?.averageRating || 0,
|
|
12795
12967
|
" (",
|
|
12796
12968
|
product.summary?.reviewCount || 0,
|
|
@@ -12818,7 +12990,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12818
12990
|
className: "w-full h-full object-contain"
|
|
12819
12991
|
}
|
|
12820
12992
|
),
|
|
12821
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 left-4 flex flex-col gap-2", children: isDiscounted && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-haccent text-white rounded-full px-3 py-1.5", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-
|
|
12993
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-4 left-4 flex flex-col gap-2", children: isDiscounted && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-haccent text-white rounded-full px-3 py-1.5", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold text-[11px] uppercase", children: [
|
|
12822
12994
|
"-",
|
|
12823
12995
|
discountAmount,
|
|
12824
12996
|
"%"
|
|
@@ -12843,33 +13015,33 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12843
13015
|
] }),
|
|
12844
13016
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
12845
13017
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
12846
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-
|
|
13018
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold text-[32px] text-haccent", children: [
|
|
12847
13019
|
"$",
|
|
12848
13020
|
displayPrice.toFixed(2)
|
|
12849
13021
|
] }),
|
|
12850
|
-
isDiscounted && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
13022
|
+
isDiscounted && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[20px] text-hmuted line-through", children: [
|
|
12851
13023
|
"$",
|
|
12852
13024
|
displayOriginalPrice.toFixed(2)
|
|
12853
13025
|
] })
|
|
12854
13026
|
] }),
|
|
12855
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6", children: selectedVariant.inventoryCount === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
13027
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6", children: selectedVariant.inventoryCount === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] text-red-500 font-medium", children: "Out of Stock" }) : selectedVariant.inventoryCount <= 10 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[12px] text-hprimary font-medium flex items-center gap-1", children: [
|
|
12856
13028
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Package, { className: "size-3" }),
|
|
12857
13029
|
"Only ",
|
|
12858
13030
|
selectedVariant.inventoryCount,
|
|
12859
13031
|
" left in stock"
|
|
12860
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
13032
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[12px] text-green-600 font-medium flex items-center gap-1", children: [
|
|
12861
13033
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Package, { className: "size-3" }),
|
|
12862
13034
|
"In Stock"
|
|
12863
13035
|
] }) }),
|
|
12864
13036
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12865
13037
|
"div",
|
|
12866
13038
|
{
|
|
12867
|
-
className: "
|
|
13039
|
+
className: "text-[14px] text-hmuted leading-[1.7] mb-6 max-w-full overflow-hidden break-words",
|
|
12868
13040
|
dangerouslySetInnerHTML: { __html: product.description }
|
|
12869
13041
|
}
|
|
12870
13042
|
),
|
|
12871
13043
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
|
|
12872
|
-
/* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "font-
|
|
13044
|
+
/* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "font-semibold text-[13px] text-hsecondary mb-3", children: [
|
|
12873
13045
|
"Selected Variant: ",
|
|
12874
13046
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-normal text-hmuted", children: product.variants[selectedVariantIndex].name })
|
|
12875
13047
|
] }),
|
|
@@ -12900,10 +13072,10 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12900
13072
|
] }),
|
|
12901
13073
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 p-4 bg-gray-50 rounded-xl", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2", children: product.tags.slice(0, 3).map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2", children: [
|
|
12902
13074
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-4 text-hprimary shrink-0 mt-0.5" }),
|
|
12903
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
13075
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] text-hmuted", children: feature })
|
|
12904
13076
|
] }, index)) }) }),
|
|
12905
13077
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
|
|
12906
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-
|
|
13078
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold text-[13px] text-hsecondary mb-3", children: "Quantity" }),
|
|
12907
13079
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
12908
13080
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12909
13081
|
"button",
|
|
@@ -12932,7 +13104,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12932
13104
|
{
|
|
12933
13105
|
onClick: handleAddToCart,
|
|
12934
13106
|
disabled: addedToCart || selectedVariant.inventoryCount === 0,
|
|
12935
|
-
className: `w-full font-
|
|
13107
|
+
className: `w-full font-medium text-[14px] px-6 py-4 rounded-full transition-all duration-300 flex items-center justify-center gap-3 ${addedToCart ? "bg-green-500 text-white" : "bg-haccent text-white hover:bg-[#d66f45] hover:shadow-lg disabled:opacity-50 disabled:cursor-not-allowed"}`,
|
|
12936
13108
|
children: isAddingToCart ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12937
13109
|
/* @__PURE__ */ jsxRuntime.jsxs("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", children: [
|
|
12938
13110
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
@@ -12951,7 +13123,7 @@ function QuickViewModal({ product, onClose, onNavigateToProduct }) {
|
|
|
12951
13123
|
onClick: () => {
|
|
12952
13124
|
onClose();
|
|
12953
13125
|
},
|
|
12954
|
-
className: "w-full font-
|
|
13126
|
+
className: "w-full font-medium text-[13px] px-6 py-3 rounded-full bg-white text-hsecondary border-2 border-hprimary hover:bg-gray-50 transition-all flex items-center justify-center gap-2",
|
|
12955
13127
|
children: [
|
|
12956
13128
|
"View Full Details",
|
|
12957
13129
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "size-4" })
|
|
@@ -13103,42 +13275,42 @@ function ProductCard({
|
|
|
13103
13275
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "size-4 text-[#2B4B7C]" })
|
|
13104
13276
|
}
|
|
13105
13277
|
),
|
|
13106
|
-
displayInventoryCount === 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-xs flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white rounded-full px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-
|
|
13278
|
+
displayInventoryCount === 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-xs flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white rounded-full px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-[11px] text-[#2B4B7C] uppercase", children: "Out of Stock" }) }) })
|
|
13107
13279
|
]
|
|
13108
13280
|
}
|
|
13109
13281
|
),
|
|
13110
13282
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 flex-1 flex flex-col", children: [
|
|
13111
13283
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-0 flex-1 flex flex-col", children: [
|
|
13112
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 mb-2 flex-wrap", children: displayIsDiscounted && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-
|
|
13284
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 mb-2 flex-wrap", children: displayIsDiscounted && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-haccent-500 text-white rounded-full px-2 py-0.5 flex items-center gap-1", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold text-[8px] uppercase", children: [
|
|
13113
13285
|
"-",
|
|
13114
13286
|
displayDiscountAmount,
|
|
13115
13287
|
"%"
|
|
13116
13288
|
] }) }) }),
|
|
13117
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
13289
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-hsecondary uppercase tracking-wide font-medium", children: product.brand }) }),
|
|
13118
13290
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-[40px] mb-3", children: [
|
|
13119
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-
|
|
13120
|
-
selectedVariant && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs
|
|
13291
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold text-[#2B4B7C] line-clamp-2", children: product.name }),
|
|
13292
|
+
selectedVariant && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-[#676c80]", children: selectedVariant.name })
|
|
13121
13293
|
] }),
|
|
13122
13294
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 my-2", children: [
|
|
13123
13295
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13124
13296
|
lucideReact.Star,
|
|
13125
13297
|
{
|
|
13126
|
-
className: `size-4 ${i < Math.floor(product.summary?.averageRating || 0) ? "text-
|
|
13298
|
+
className: `size-4 ${i < Math.floor(product.summary?.averageRating || 0) ? "text-hsecondary fill-hsecondary-500" : "text-gray-300"}`
|
|
13127
13299
|
},
|
|
13128
13300
|
i
|
|
13129
13301
|
)) }),
|
|
13130
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
13302
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-[#676c80] ", children: [
|
|
13131
13303
|
"(",
|
|
13132
13304
|
product.summary?.reviewCount || 0,
|
|
13133
13305
|
")"
|
|
13134
13306
|
] })
|
|
13135
13307
|
] }),
|
|
13136
13308
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-3", children: [
|
|
13137
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-
|
|
13309
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold text-md text-hprimary-600", children: [
|
|
13138
13310
|
"$",
|
|
13139
13311
|
displayFinalPrice.toFixed(2)
|
|
13140
13312
|
] }),
|
|
13141
|
-
displayIsDiscounted && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
13313
|
+
displayIsDiscounted && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-[#676c80] line-through", children: [
|
|
13142
13314
|
"$",
|
|
13143
13315
|
displayPriceBeforeDiscount.toFixed(2)
|
|
13144
13316
|
] })
|
|
@@ -13213,7 +13385,7 @@ function ProductCard({
|
|
|
13213
13385
|
}
|
|
13214
13386
|
},
|
|
13215
13387
|
disabled: isAddingToCart || variantImages.length > 0 && !selectedVariantId || displayInventoryCount === 0,
|
|
13216
|
-
className: "w-full font-
|
|
13388
|
+
className: "w-full font-medium text-[11px] px-3 py-2 rounded-full bg-hsecondary text-white hover:bg-hsecondary/80 hover:shadow-lg transition-all duration-300 flex items-center justify-center gap-1.5 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer",
|
|
13217
13389
|
children: [
|
|
13218
13390
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShoppingCart, { className: "h-4 w-4" }),
|
|
13219
13391
|
displayInventoryCount === 0 ? "Out of Stock" : "Add to Cart"
|
|
@@ -13363,8 +13535,6 @@ function useProducts(filters, page = 1, limit = 20) {
|
|
|
13363
13535
|
],
|
|
13364
13536
|
queryFn: async () => {
|
|
13365
13537
|
const response = await new ProductsApi(AXIOS_CONFIG).getAllProducts(
|
|
13366
|
-
filters?.search ?? "",
|
|
13367
|
-
// searchTerm
|
|
13368
13538
|
filters?.maxPrice,
|
|
13369
13539
|
// maxPrice
|
|
13370
13540
|
filters?.minPrice,
|
|
@@ -13570,52 +13740,6 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
13570
13740
|
() => [...categories].sort((a, b) => (b.productCount ?? 0) - (a.productCount ?? 0)).slice(0, 6),
|
|
13571
13741
|
[categories]
|
|
13572
13742
|
);
|
|
13573
|
-
const productInsights = React10.useMemo(() => {
|
|
13574
|
-
if (!products.length) {
|
|
13575
|
-
return { newArrivals: 0, inStockCount: 0 };
|
|
13576
|
-
}
|
|
13577
|
-
const monthAgo = Date.now() - 30 * 24 * 60 * 60 * 1e3;
|
|
13578
|
-
let newArrivals2 = 0;
|
|
13579
|
-
let inStockCount = 0;
|
|
13580
|
-
products.forEach((product) => {
|
|
13581
|
-
if (product.summary?.totalInventory > 0) inStockCount += 1;
|
|
13582
|
-
if (new Date(product.createdAt).getTime() >= monthAgo) newArrivals2 += 1;
|
|
13583
|
-
});
|
|
13584
|
-
return { newArrivals: newArrivals2, inStockCount };
|
|
13585
|
-
}, [products]);
|
|
13586
|
-
React10.useMemo(
|
|
13587
|
-
() => [
|
|
13588
|
-
{
|
|
13589
|
-
id: "new",
|
|
13590
|
-
label: "New arrivals",
|
|
13591
|
-
value: productInsights.newArrivals ? productInsights.newArrivals.toLocaleString() : isLoading ? "..." : "0",
|
|
13592
|
-
helper: filters.newArrivals ? "Filter active: showing last 30 days" : "Click to show last 30 days",
|
|
13593
|
-
icon: lucideReact.Sparkles
|
|
13594
|
-
},
|
|
13595
|
-
{
|
|
13596
|
-
id: "stock",
|
|
13597
|
-
label: "Available now",
|
|
13598
|
-
value: productInsights.inStockCount ? productInsights.inStockCount.toLocaleString() : isLoading ? "..." : "0",
|
|
13599
|
-
helper: "Ready to ship today",
|
|
13600
|
-
icon: lucideReact.ShieldCheck
|
|
13601
|
-
},
|
|
13602
|
-
{
|
|
13603
|
-
id: "catalogue",
|
|
13604
|
-
label: "Total products",
|
|
13605
|
-
value: pagination.total || products.length ? (pagination.total || products.length).toLocaleString() : isLoading ? "..." : "0",
|
|
13606
|
-
helper: "Across all categories",
|
|
13607
|
-
icon: lucideReact.TrendingUp
|
|
13608
|
-
}
|
|
13609
|
-
],
|
|
13610
|
-
[
|
|
13611
|
-
isLoading,
|
|
13612
|
-
pagination.total,
|
|
13613
|
-
productInsights.inStockCount,
|
|
13614
|
-
productInsights.newArrivals,
|
|
13615
|
-
products.length,
|
|
13616
|
-
filters.newArrivals
|
|
13617
|
-
]
|
|
13618
|
-
);
|
|
13619
13743
|
const filteredProducts = React10.useMemo(() => {
|
|
13620
13744
|
if (isLoading) return products;
|
|
13621
13745
|
let items = [...products];
|
|
@@ -14001,9 +14125,9 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14001
14125
|
return lucideReact.Package;
|
|
14002
14126
|
};
|
|
14003
14127
|
const renderFiltersPanel = () => /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `lg:w-72 ${showFilters ? "block rounded-full" : "hidden lg:block"}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white rounded-[24px] p-6 border-2 border-gray-100 sticky top-24", children: [
|
|
14004
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-
|
|
14128
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold text-hsecondary", children: "Filters" }),
|
|
14005
14129
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
|
|
14006
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "
|
|
14130
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[12px] text-hmuted mb-2 block font-medium", children: "Search Products" }),
|
|
14007
14131
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
14008
14132
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-hmuted" }),
|
|
14009
14133
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -14013,7 +14137,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14013
14137
|
placeholder: "Search...",
|
|
14014
14138
|
value: searchQuery,
|
|
14015
14139
|
onChange: handleInputChange,
|
|
14016
|
-
className: "w-full pl-10 pr-4 py-2.5 rounded-xl border-2 border-gray-200 focus:border-hprimary focus:outline-hidden
|
|
14140
|
+
className: "w-full pl-10 pr-4 py-2.5 rounded-xl border-2 border-gray-200 focus:border-hprimary focus:outline-hidden text-[13px] text-hsecondary"
|
|
14017
14141
|
}
|
|
14018
14142
|
)
|
|
14019
14143
|
] })
|
|
@@ -14025,7 +14149,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14025
14149
|
onClick: () => toggleFilterSection("category"),
|
|
14026
14150
|
className: "w-full flex items-center justify-between mb-3",
|
|
14027
14151
|
children: [
|
|
14028
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "
|
|
14152
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[12px] text-hmuted font-medium cursor-pointer", children: "Category" }),
|
|
14029
14153
|
expandedFilterSections.category ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: `size-4 text-hmuted transition-transform ${expandedFilterSections.category ? "rotate-180" : ""}` }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: `size-4 text-hmuted transition-transform ${expandedFilterSections.category ? "rotate-180" : ""}` })
|
|
14030
14154
|
]
|
|
14031
14155
|
}
|
|
@@ -14042,7 +14166,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14042
14166
|
if (!isExpanded) toggleCategoryExpand(categoryId);
|
|
14043
14167
|
handleCategoryChange(categoryId);
|
|
14044
14168
|
},
|
|
14045
|
-
className: `w-full text-left px-4 py-3 rounded-xl
|
|
14169
|
+
className: `w-full text-left px-4 py-3 rounded-xl text-[13px] transition-all flex items-center gap-3 ${isCategoryActive ? "bg-hprimary text-white shadow-lg" : "text-hsecondary hover:bg-gray-50 border-2 border-gray-100"}`,
|
|
14046
14170
|
children: [
|
|
14047
14171
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-4" }),
|
|
14048
14172
|
category.name
|
|
@@ -14059,7 +14183,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14059
14183
|
onClick: () => toggleFilterSection("brand"),
|
|
14060
14184
|
className: "w-full flex items-center justify-between mb-3",
|
|
14061
14185
|
children: [
|
|
14062
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "
|
|
14186
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[12px] text-hmuted font-medium cursor-pointer", children: "Brand" }),
|
|
14063
14187
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: `size-4 text-hmuted transition-transform ${expandedFilterSections.brand ? "rotate-180" : ""}` })
|
|
14064
14188
|
]
|
|
14065
14189
|
}
|
|
@@ -14070,7 +14194,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14070
14194
|
"button",
|
|
14071
14195
|
{
|
|
14072
14196
|
onClick: () => handleBrandChange(brand),
|
|
14073
|
-
className: `w-full text-left px-4 py-3 rounded-xl
|
|
14197
|
+
className: `w-full text-left px-4 py-3 rounded-xl text-[13px] transition-all ${isSelected ? "bg-hprimary text-white shadow-lg" : "text-hsecondary hover:bg-gray-50 border-2 border-gray-100"}`,
|
|
14074
14198
|
children: brand
|
|
14075
14199
|
},
|
|
14076
14200
|
brand
|
|
@@ -14084,7 +14208,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14084
14208
|
onClick: () => toggleFilterSection("availability"),
|
|
14085
14209
|
className: "w-full flex items-center justify-between mb-3",
|
|
14086
14210
|
children: [
|
|
14087
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "
|
|
14211
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[12px] text-hmuted font-medium cursor-pointer", children: "Availability" }),
|
|
14088
14212
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: `size-4 text-hmuted transition-transform ${expandedFilterSections.availability ? "rotate-180" : ""}` })
|
|
14089
14213
|
]
|
|
14090
14214
|
}
|
|
@@ -14093,7 +14217,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14093
14217
|
"button",
|
|
14094
14218
|
{
|
|
14095
14219
|
onClick: handleToggleStock,
|
|
14096
|
-
className: `w-full flex items-center justify-between px-4 py-3 rounded-xl
|
|
14220
|
+
className: `w-full flex items-center justify-between px-4 py-3 rounded-xl text-[13px] transition-all border-2 ${inStockOnly ? "bg-hprimary text-white shadow-lg" : "text-hsecondary hover:bg-gray-50 border-2 border-gray-100"}`,
|
|
14097
14221
|
children: "In Stock Only"
|
|
14098
14222
|
}
|
|
14099
14223
|
) })
|
|
@@ -14105,7 +14229,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14105
14229
|
onClick: () => toggleFilterSection("price"),
|
|
14106
14230
|
className: "w-full flex items-center justify-between mb-3",
|
|
14107
14231
|
children: [
|
|
14108
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "
|
|
14232
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[12px] text-hmuted font-medium cursor-pointer", children: "Price Range" }),
|
|
14109
14233
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: `size-4 text-hmuted transition-transform ${expandedFilterSections.price ? "rotate-180" : ""}` })
|
|
14110
14234
|
]
|
|
14111
14235
|
}
|
|
@@ -14118,7 +14242,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14118
14242
|
{
|
|
14119
14243
|
type: "button",
|
|
14120
14244
|
onClick: () => handlePriceRangeSelect(range.value),
|
|
14121
|
-
className: `w-full flex items-center justify-between px-4 py-3 rounded-xl
|
|
14245
|
+
className: `w-full flex items-center justify-between px-4 py-3 rounded-xl text-[13px] transition-all border-2 ${isActive ? "bg-hprimary text-white shadow-lg" : "text-hsecondary hover:bg-gray-50 border-2 border-gray-100"}`,
|
|
14122
14246
|
children: range.label
|
|
14123
14247
|
},
|
|
14124
14248
|
range.value
|
|
@@ -14133,7 +14257,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14133
14257
|
placeholder: "Min",
|
|
14134
14258
|
value: customPrice.min,
|
|
14135
14259
|
onChange: (event) => setCustomPrice((current) => ({ ...current, min: event.target.value })),
|
|
14136
|
-
className: "w-1/2 px-4 py-2.5 rounded-xl border-2 border-gray-200 focus:border-hprimary focus:outline-hidden
|
|
14260
|
+
className: "w-1/2 px-4 py-2.5 rounded-xl border-2 border-gray-200 focus:border-hprimary focus:outline-hidden text-[13px] text-hsecondary"
|
|
14137
14261
|
}
|
|
14138
14262
|
),
|
|
14139
14263
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -14144,7 +14268,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14144
14268
|
placeholder: "Max",
|
|
14145
14269
|
value: customPrice.max,
|
|
14146
14270
|
onChange: (event) => setCustomPrice((current) => ({ ...current, max: event.target.value })),
|
|
14147
|
-
className: "w-1/2 px-4 py-2.5 rounded-xl border-2 border-gray-200 focus:border-hprimary focus:outline-hidden
|
|
14271
|
+
className: "w-1/2 px-4 py-2.5 rounded-xl border-2 border-gray-200 focus:border-hprimary focus:outline-hidden text-[13px] text-hsecondary"
|
|
14148
14272
|
}
|
|
14149
14273
|
)
|
|
14150
14274
|
] }),
|
|
@@ -14211,8 +14335,8 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14211
14335
|
]
|
|
14212
14336
|
}
|
|
14213
14337
|
) }) }),
|
|
14214
|
-
/* @__PURE__ */ jsxRuntime.jsx("section", { className: "py-8 bg-white", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container mx-auto px-4", children: [
|
|
14215
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl md:text-3xl font-
|
|
14338
|
+
/* @__PURE__ */ jsxRuntime.jsx("section", { className: "py-8 bg-white/50", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container mx-auto px-4", children: [
|
|
14339
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl md:text-3xl font-semibold text-hsecondary mb-6", children: "Shop by Category" }),
|
|
14216
14340
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4", children: [
|
|
14217
14341
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14218
14342
|
framerMotion.motion.button,
|
|
@@ -14223,8 +14347,8 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14223
14347
|
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-hprimary to-hsecondary 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-hprimary"}`,
|
|
14224
14348
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
14225
14349
|
/* @__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-hprimary-10 to-hsecondary-10 group-hover:scale-110"}`, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Package, { className: `size-6 ${!categoryFilter ? "text-white" : "text-hprimary"}` }) }),
|
|
14226
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-
|
|
14227
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `
|
|
14350
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-semibold text-[14px] mb-1.5 ${!categoryFilter ? "text-white" : "text-hsecondary"}`, children: "All Products" }),
|
|
14351
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[11px] ${!categoryFilter ? "text-white/80" : "text-hmuted"}`, children: "Browse Everything" })
|
|
14228
14352
|
] })
|
|
14229
14353
|
}
|
|
14230
14354
|
),
|
|
@@ -14242,8 +14366,8 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14242
14366
|
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-hprimary to-hsecondary 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-hprimary"}`,
|
|
14243
14367
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
14244
14368
|
/* @__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-hprimary-10 to-hsecondary-10 group-hover:scale-110"}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: `size-6 ${isSelected ? "text-white" : "text-hprimary"}` }) }),
|
|
14245
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-
|
|
14246
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `
|
|
14369
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: `font-semibold text-[14px] mb-1.5 ${isSelected ? "text-white" : "text-hsecondary"}`, children: category.name }),
|
|
14370
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[11px] ${isSelected ? "text-white/80" : "text-hmuted"}`, children: category.description })
|
|
14247
14371
|
] })
|
|
14248
14372
|
},
|
|
14249
14373
|
categoryId
|
|
@@ -14392,7 +14516,7 @@ function ShopScreen({ initialFilters = {}, categoryName }) {
|
|
|
14392
14516
|
event.stopPropagation();
|
|
14393
14517
|
router.push(buildPath(`/products/${product._id}`));
|
|
14394
14518
|
},
|
|
14395
|
-
className: "w-full font-
|
|
14519
|
+
className: "w-full font-medium text-sm px-3 py-2 rounded-xl bg-hsecondary text-white hover:opacity-80 hover:shadow-lg transition-all duration-300 flex items-center justify-center gap-1.5 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
14396
14520
|
children: "View product"
|
|
14397
14521
|
}
|
|
14398
14522
|
)
|
|
@@ -14681,14 +14805,14 @@ function StarRating({
|
|
|
14681
14805
|
className: `transition-all ${interactive && "cursor-pointer hover:scale-110"} ${!interactive && "cursor-default"}`,
|
|
14682
14806
|
children: isHalfFilled ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
14683
14807
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: `${sizeClasses[size]} text-gray-300` }),
|
|
14684
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 overflow-hidden", style: { width: "50%" }, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: `${sizeClasses[size]} fill-
|
|
14808
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 overflow-hidden", style: { width: "50%" }, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: `${sizeClasses[size]} fill-haccent-500 text-haccent-500` }) })
|
|
14685
14809
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
14686
14810
|
lucideReact.Star,
|
|
14687
14811
|
{
|
|
14688
14812
|
className: `
|
|
14689
14813
|
${sizeClasses[size]}
|
|
14690
|
-
${isFilled ? "fill-
|
|
14691
|
-
${interactive && hoverRating > 0 && index < hoverRating ? "fill-
|
|
14814
|
+
${isFilled ? "fill-haccent-500 text-haccent-500" : "text-gray-300"}
|
|
14815
|
+
${interactive && hoverRating > 0 && index < hoverRating ? "fill-haccent-500 text-haccent-500" : ""}
|
|
14692
14816
|
`
|
|
14693
14817
|
}
|
|
14694
14818
|
)
|
|
@@ -14732,12 +14856,12 @@ function RatingDistribution({ reviews, averageRating }) {
|
|
|
14732
14856
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
14733
14857
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 w-16", children: [
|
|
14734
14858
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700", children: rating }),
|
|
14735
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-3 fill-
|
|
14859
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-3 fill-haccent-500 text-haccent-500" })
|
|
14736
14860
|
] }),
|
|
14737
14861
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-2 bg-gray-200 rounded-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14738
14862
|
"div",
|
|
14739
14863
|
{
|
|
14740
|
-
className: "h-full bg-
|
|
14864
|
+
className: "h-full bg-haccent-500 transition-all duration-300",
|
|
14741
14865
|
style: { width: `${percentage}%` }
|
|
14742
14866
|
}
|
|
14743
14867
|
) }),
|
|
@@ -14755,7 +14879,7 @@ function RatingDistribution({ reviews, averageRating }) {
|
|
|
14755
14879
|
function ReviewCard({ review, showProductInfo = false }) {
|
|
14756
14880
|
const reviewDate = new Date(review.createdAt);
|
|
14757
14881
|
const replyDate = review.replyDate ? new Date(review.replyDate) : null;
|
|
14758
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border border-gray-200 rounded-lg p-4 bg-
|
|
14882
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border border-gray-200 rounded-lg p-4 bg-hprimary-50", children: [
|
|
14759
14883
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between mb-3", children: [
|
|
14760
14884
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
14761
14885
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-10 h-10 bg-hsecondary/10 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "size-5 text-hsecondary" }) }),
|
|
@@ -14766,7 +14890,7 @@ function ReviewCard({ review, showProductInfo = false }) {
|
|
|
14766
14890
|
] }),
|
|
14767
14891
|
/* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating, size: "sm" })
|
|
14768
14892
|
] }),
|
|
14769
|
-
review.reviewType && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-2 py-1 text-xs bg-
|
|
14893
|
+
review.reviewType && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-2 py-1 text-xs bg-hprimary-100 text-gray-600 rounded mb-2", children: review.reviewType }),
|
|
14770
14894
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-700 text-sm leading-relaxed mb-3", children: review.review }),
|
|
14771
14895
|
review.reply && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 pl-4 border-l-2 border-hsecondary bg-gray-50 p-3 rounded", children: [
|
|
14772
14896
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
@@ -14837,7 +14961,7 @@ function ReviewsList({ reviews, isLoading }) {
|
|
|
14837
14961
|
"button",
|
|
14838
14962
|
{
|
|
14839
14963
|
onClick: () => setFilterRating("all"),
|
|
14840
|
-
className: `px-3 py-1 text-sm rounded-full transition-colors ${filterRating === "all" ? "bg-
|
|
14964
|
+
className: `px-3 py-1 text-sm rounded-full transition-colors ${filterRating === "all" ? "bg-haccent-500 text-white" : "bg-gray-100 text-gray-700 hover:bg-gray-200"}`,
|
|
14841
14965
|
children: "All"
|
|
14842
14966
|
}
|
|
14843
14967
|
),
|
|
@@ -14845,7 +14969,7 @@ function ReviewsList({ reviews, isLoading }) {
|
|
|
14845
14969
|
"button",
|
|
14846
14970
|
{
|
|
14847
14971
|
onClick: () => setFilterRating(rating),
|
|
14848
|
-
className: `flex items-center gap-1 px-3 py-1 text-sm rounded-full transition-colors ${filterRating === rating ? "bg-
|
|
14972
|
+
className: `flex items-center gap-1 px-3 py-1 text-sm rounded-full transition-colors ${filterRating === rating ? "bg-haccent-500 text-white" : "bg-gray-100 text-gray-700 hover:bg-gray-200"}`,
|
|
14849
14973
|
children: [
|
|
14850
14974
|
rating,
|
|
14851
14975
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-3 fill-current" })
|
|
@@ -14862,7 +14986,7 @@ function ReviewsList({ reviews, isLoading }) {
|
|
|
14862
14986
|
{
|
|
14863
14987
|
value: sortBy,
|
|
14864
14988
|
onChange: (e) => setSortBy(e.target.value),
|
|
14865
|
-
className: "px-3 py-1 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-
|
|
14989
|
+
className: "px-3 py-1 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-haccent-500 focus:border-transparent",
|
|
14866
14990
|
children: [
|
|
14867
14991
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "recent", children: "Most Recent" }),
|
|
14868
14992
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "oldest", children: "Oldest First" }),
|
|
@@ -15131,7 +15255,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
15131
15255
|
"button",
|
|
15132
15256
|
{
|
|
15133
15257
|
onClick: () => router.push(buildPath("/shop")),
|
|
15134
|
-
className: "flex items-center gap-2
|
|
15258
|
+
className: "flex items-center gap-2 text-[13px] text-hmuted hover:text-hprimary transition-colors",
|
|
15135
15259
|
children: [
|
|
15136
15260
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" }),
|
|
15137
15261
|
"Back to Shop"
|
|
@@ -15170,7 +15294,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
15170
15294
|
className: "object-contain"
|
|
15171
15295
|
}
|
|
15172
15296
|
) : null,
|
|
15173
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-6 left-6 flex flex-col gap-3", children: discount > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-
|
|
15297
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-6 left-6 flex flex-col gap-3", children: discount > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-hsecondary text-white rounded-full px-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold text-[12px] uppercase tracking-wide", children: [
|
|
15174
15298
|
"Save ",
|
|
15175
15299
|
discount,
|
|
15176
15300
|
"%"
|
|
@@ -15202,21 +15326,21 @@ function ProductDetailScreen({ productId }) {
|
|
|
15202
15326
|
] }) }) }),
|
|
15203
15327
|
/* @__PURE__ */ jsxRuntime.jsxs("aside", { className: "space-y-6 lg:sticky lg:top-24", children: [
|
|
15204
15328
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
15205
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
15329
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[12px] text-hprimary uppercase tracking-wide font-medium mb-2", children: [
|
|
15206
15330
|
product.brand,
|
|
15207
15331
|
" \u2022 ",
|
|
15208
15332
|
product.categoryIds?.[0]?.name || "Uncategorized"
|
|
15209
15333
|
] }),
|
|
15210
|
-
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-
|
|
15334
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-semibold text-hsecondary tracking-[-1.5px] mb-3", children: selectedVariant?.name || product.name }),
|
|
15211
15335
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
15212
15336
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15213
15337
|
lucideReact.Star,
|
|
15214
15338
|
{
|
|
15215
|
-
className: `size-4 ${i < Math.floor(reviewStats.averageRating) ? "text-
|
|
15339
|
+
className: `size-4 ${i < Math.floor(reviewStats.averageRating) ? "text-haccent-500 fill-haccent-500" : "text-gray-300"}`
|
|
15216
15340
|
},
|
|
15217
15341
|
i
|
|
15218
15342
|
)) }),
|
|
15219
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
15343
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[14px] text-hmuted", children: [
|
|
15220
15344
|
reviewStats.averageRating,
|
|
15221
15345
|
" (",
|
|
15222
15346
|
reviewStats.reviewCount,
|
|
@@ -15226,16 +15350,16 @@ function ProductDetailScreen({ productId }) {
|
|
|
15226
15350
|
] })
|
|
15227
15351
|
] }),
|
|
15228
15352
|
selectedVariant && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-6 pb-6 border-b-2 border-gray-100", children: [
|
|
15229
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-
|
|
15353
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold text-[40px] text-hsecondary", children: [
|
|
15230
15354
|
"$",
|
|
15231
15355
|
variantPrice.toFixed(2)
|
|
15232
15356
|
] }),
|
|
15233
15357
|
variantComparePrice && variantComparePrice > variantPrice && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15234
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
15358
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[24px] text-hmuted line-through", children: [
|
|
15235
15359
|
"$",
|
|
15236
15360
|
variantComparePrice.toFixed(2)
|
|
15237
15361
|
] }),
|
|
15238
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-1 rounded-full bg-
|
|
15362
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-1 rounded-full bg-hsecondary/10", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold text-[13px] text-hsecondary", children: [
|
|
15239
15363
|
"Save $",
|
|
15240
15364
|
formatPrice(variantComparePrice - variantPrice)
|
|
15241
15365
|
] }) })
|
|
@@ -15244,19 +15368,19 @@ function ProductDetailScreen({ productId }) {
|
|
|
15244
15368
|
selectedVariant && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
|
|
15245
15369
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 mb-2", children: selectedVariant.inventoryStatus === "OUT_OF_STOCK" /* OUTOFSTOCK */ ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15246
15370
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-3 rounded-full bg-red-500" }),
|
|
15247
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
15371
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] text-red-600 font-medium", children: "Out of Stock" })
|
|
15248
15372
|
] }) : selectedVariant.inventoryStatus === "LOW_STOCK" /* LOWSTOCK */ || selectedVariant.inventoryCount <= 10 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15249
15373
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-3 rounded-full bg-hprimary animate-pulse" }),
|
|
15250
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
15374
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[13px] text-hprimary font-medium", children: [
|
|
15251
15375
|
"Only ",
|
|
15252
15376
|
selectedVariant.inventoryCount,
|
|
15253
15377
|
" left in stock - Order soon!"
|
|
15254
15378
|
] })
|
|
15255
15379
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15256
15380
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-3 rounded-full bg-green-500" }),
|
|
15257
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
15381
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[13px] text-green-600 font-medium", children: "In Stock" })
|
|
15258
15382
|
] }) }),
|
|
15259
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
15383
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[12px] text-hmuted", children: [
|
|
15260
15384
|
"SKU: ",
|
|
15261
15385
|
selectedVariant?.sku || product?.sku
|
|
15262
15386
|
] })
|
|
@@ -15264,12 +15388,12 @@ function ProductDetailScreen({ productId }) {
|
|
|
15264
15388
|
product.description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
15265
15389
|
"div",
|
|
15266
15390
|
{
|
|
15267
|
-
className: "
|
|
15391
|
+
className: "text-[14px] text-hmuted leading-[1.7] mb-8 max-w-full overflow-hidden break-words",
|
|
15268
15392
|
dangerouslySetInnerHTML: { __html: product.description }
|
|
15269
15393
|
}
|
|
15270
15394
|
),
|
|
15271
15395
|
product?.variants && product.variants.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6", children: [
|
|
15272
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-
|
|
15396
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold text-[14px] text-hsecondary mb-3", children: "Select Variant" }),
|
|
15273
15397
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-3", children: product.variants.map((variant) => {
|
|
15274
15398
|
const isSelected = selectedVariant?._id === variant._id;
|
|
15275
15399
|
const variantImage = variant.media?.[0]?.file || product.media?.[0]?.file || product.images?.[0] || PLACEHOLDER_IMAGE_SRC;
|
|
@@ -15305,7 +15429,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
15305
15429
|
}) })
|
|
15306
15430
|
] }),
|
|
15307
15431
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8", children: [
|
|
15308
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-
|
|
15432
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold text-[14px] text-hsecondary mb-3", children: "Quantity" }),
|
|
15309
15433
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
15310
15434
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4 bg-gray-100 rounded-full px-6 py-3", children: [
|
|
15311
15435
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15313,18 +15437,18 @@ function ProductDetailScreen({ productId }) {
|
|
|
15313
15437
|
{
|
|
15314
15438
|
type: "button",
|
|
15315
15439
|
onClick: () => setQuantity((current) => Math.max(1, current - 1)),
|
|
15316
|
-
className: "font-
|
|
15440
|
+
className: "font-bold text-[18px] text-hsecondary hover:text-hprimary transition-colors",
|
|
15317
15441
|
"aria-label": "Increase quantity",
|
|
15318
15442
|
children: "-"
|
|
15319
15443
|
}
|
|
15320
15444
|
),
|
|
15321
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-
|
|
15445
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-[16px] text-hsecondary min-w-[30px] text-center", children: quantity }),
|
|
15322
15446
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15323
15447
|
"button",
|
|
15324
15448
|
{
|
|
15325
15449
|
onClick: () => setQuantity(Math.min(selectedVariant?.inventoryCount || product.inventoryCount || 999, quantity + 1)),
|
|
15326
15450
|
disabled: quantity >= (selectedVariant?.inventoryCount || product.inventoryCount || 0),
|
|
15327
|
-
className: "font-
|
|
15451
|
+
className: "font-bold text-[18px] text-hsecondary hover:text-hprimary transition-colors disabled:opacity-50",
|
|
15328
15452
|
children: "+"
|
|
15329
15453
|
}
|
|
15330
15454
|
)
|
|
@@ -15339,7 +15463,7 @@ function ProductDetailScreen({ productId }) {
|
|
|
15339
15463
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15340
15464
|
"button",
|
|
15341
15465
|
{
|
|
15342
|
-
className: "flex-1 font-
|
|
15466
|
+
className: "flex-1 font-medium text-[14px] px-8 py-4 rounded-full transition-all duration-300 flex items-center justify-center gap-3 bg-hsecondary text-white hover:bg-hsecondary/80 hover:shadow-lg disabled:opacity-50 disabled:cursor-not-allowed",
|
|
15343
15467
|
onClick: handleAddToCart,
|
|
15344
15468
|
disabled: !selectedVariant || selectedVariant.inventoryStatus === "OUT_OF_STOCK" /* OUTOFSTOCK */ || isAddingToCart,
|
|
15345
15469
|
children: isAddingToCart ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -15368,29 +15492,29 @@ function ProductDetailScreen({ productId }) {
|
|
|
15368
15492
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
15369
15493
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-10 rounded-full bg-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Truck, { className: "size-5 text-hprimary" }) }),
|
|
15370
15494
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
15371
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
15372
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
15495
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-[12px] text-hsecondary mb-1", children: "Free Shipping" }),
|
|
15496
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-hmuted", children: "On all orders" })
|
|
15373
15497
|
] })
|
|
15374
15498
|
] }),
|
|
15375
15499
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
15376
15500
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-10 rounded-full bg-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { className: "size-5 text-hprimary" }) }),
|
|
15377
15501
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
15378
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
15379
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
15502
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-[12px] text-hsecondary mb-1", children: "Easy Returns" }),
|
|
15503
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-hmuted", children: "30-day return policy" })
|
|
15380
15504
|
] })
|
|
15381
15505
|
] }),
|
|
15382
15506
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
15383
15507
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-10 rounded-full bg-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Shield, { className: "size-5 text-hprimary" }) }),
|
|
15384
15508
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
15385
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
15386
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
15509
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-[12px] text-hsecondary mb-1", children: "Secure Checkout" }),
|
|
15510
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-hmuted", children: "Safe & protected" })
|
|
15387
15511
|
] })
|
|
15388
15512
|
] }),
|
|
15389
15513
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
15390
15514
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-10 rounded-full bg-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Package, { className: "size-5 text-hprimary" }) }),
|
|
15391
15515
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
15392
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
15393
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
15516
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-[12px] text-hsecondary mb-1", children: "Quality Guaranteed" }),
|
|
15517
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-hmuted", children: "Premium materials" })
|
|
15394
15518
|
] })
|
|
15395
15519
|
] })
|
|
15396
15520
|
] })
|
|
@@ -15401,35 +15525,35 @@ function ProductDetailScreen({ productId }) {
|
|
|
15401
15525
|
"button",
|
|
15402
15526
|
{
|
|
15403
15527
|
onClick: () => setActiveTab(tab),
|
|
15404
|
-
className: `font-
|
|
15528
|
+
className: `font-medium text-[14px] px-6 py-4 transition-all ${activeTab === tab ? "text-hprimary border-b-2 border-hprimary -mb-0.5" : "text-hmuted hover:text-hprimary"}`,
|
|
15405
15529
|
children: tab.charAt(0).toUpperCase() + tab.slice(1)
|
|
15406
15530
|
},
|
|
15407
15531
|
tab
|
|
15408
15532
|
)) }),
|
|
15409
15533
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white rounded-[24px] p-8 border-2 border-gray-100", children: [
|
|
15410
15534
|
activeTab === "description" && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
15411
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-
|
|
15535
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold text-hsecondary mb-4", children: "Product Description" }),
|
|
15412
15536
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15413
15537
|
"div",
|
|
15414
15538
|
{
|
|
15415
|
-
className: "
|
|
15539
|
+
className: "text-[14px] text-hmuted leading-[1.8] mb-4 max-w-full overflow-hidden break-words",
|
|
15416
15540
|
dangerouslySetInnerHTML: { __html: product.description }
|
|
15417
15541
|
}
|
|
15418
15542
|
),
|
|
15419
15543
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
|
|
15420
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-
|
|
15421
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
15544
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-[13px] text-hsecondary mb-3", children: "Last updated:" }),
|
|
15545
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14px] text-hmuted", children: lastUpdatedLabel })
|
|
15422
15546
|
] }),
|
|
15423
15547
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
|
|
15424
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-
|
|
15425
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
15548
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-[13px] text-hsecondary mb-3", children: "Shipped from:" }),
|
|
15549
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14px] text-hmuted", children: "Local pharmacy distribution center" })
|
|
15426
15550
|
] })
|
|
15427
15551
|
] }),
|
|
15428
15552
|
activeTab === "reviews" && /* @__PURE__ */ jsxRuntime.jsx(ProductReviewsSection, { productId })
|
|
15429
15553
|
] })
|
|
15430
15554
|
] }),
|
|
15431
15555
|
relatedProducts.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
15432
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-
|
|
15556
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-hsecondary mb-8 text-2xl", children: "You May Also Like" }),
|
|
15433
15557
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6", children: relatedProducts.map((relatedProduct) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15434
15558
|
ProductCard,
|
|
15435
15559
|
{
|
|
@@ -15474,9 +15598,9 @@ function CartItem({ item }) {
|
|
|
15474
15598
|
initial: { opacity: 0, y: 20 },
|
|
15475
15599
|
animate: { opacity: 1, y: 0 },
|
|
15476
15600
|
exit: { opacity: 0, x: -100 },
|
|
15477
|
-
className: "bg-white border-2 border-gray-100 rounded-[24px] p-6 hover:border-hsecondary/30 transition-all duration-300",
|
|
15478
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-
|
|
15479
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-28 h-28 rounded-[16px] overflow-hidden bg-gray-50 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15601
|
+
className: "bg-white border-2 border-gray-100 rounded-[24px] p-4 md:p-6 hover:border-hsecondary/30 transition-all duration-300",
|
|
15602
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 md:gap-4", children: [
|
|
15603
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-20 h-20 md:w-28 md:h-28 rounded-[16px] overflow-hidden bg-gray-50 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15480
15604
|
Image4__default.default,
|
|
15481
15605
|
{
|
|
15482
15606
|
src: item.productVariantData.media[0]?.file || PLACEHOLDER_IMAGE_SRC,
|
|
@@ -15489,8 +15613,8 @@ function CartItem({ item }) {
|
|
|
15489
15613
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
15490
15614
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4 mb-3", children: [
|
|
15491
15615
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
15492
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-
|
|
15493
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-3", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
15616
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-semibold text-[#2B4B7C] mb-2", children: item.productVariantData.name }),
|
|
15617
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-3", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[12px] text-[#676c80]", children: [
|
|
15494
15618
|
"Variant: ",
|
|
15495
15619
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-[#2B4B7C]", children: item.productVariantData.name })
|
|
15496
15620
|
] }) })
|
|
@@ -15506,31 +15630,33 @@ function CartItem({ item }) {
|
|
|
15506
15630
|
}
|
|
15507
15631
|
)
|
|
15508
15632
|
] }),
|
|
15509
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
15510
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 bg-gray-50 rounded-full px-4 py-2", children: [
|
|
15633
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4 mt-auto", children: [
|
|
15634
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 bg-gray-50 rounded-full px-3 py-1.5 md:px-4 md:py-2 w-fit", children: [
|
|
15511
15635
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15512
15636
|
"button",
|
|
15513
15637
|
{
|
|
15514
15638
|
onClick: () => handleUpdateQuantity(item.quantity - 1),
|
|
15515
15639
|
disabled: isUpdating || item.quantity <= 1,
|
|
15516
15640
|
className: "p-1 hover:bg-white rounded-full transition-colors",
|
|
15517
|
-
|
|
15641
|
+
"aria-label": "Decrease quantity",
|
|
15642
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: "size-3 md:size-4 text-[#2B4B7C]" })
|
|
15518
15643
|
}
|
|
15519
15644
|
),
|
|
15520
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-[
|
|
15645
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-[13px] md:text-[14px] text-[#2B4B7C] min-w-[20px] text-center", children: item.quantity }),
|
|
15521
15646
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15522
15647
|
"button",
|
|
15523
15648
|
{
|
|
15524
15649
|
onClick: () => handleUpdateQuantity(item.quantity + 1),
|
|
15525
15650
|
disabled: isUpdating || item.quantity >= (item.productVariantData.inventoryCount || 999),
|
|
15526
15651
|
className: "p-1 hover:bg-white rounded-full transition-colors",
|
|
15527
|
-
|
|
15652
|
+
"aria-label": "Increase quantity",
|
|
15653
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-3 md:size-4 text-[#2B4B7C]" })
|
|
15528
15654
|
}
|
|
15529
15655
|
)
|
|
15530
15656
|
] }),
|
|
15531
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-right", children: [
|
|
15532
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-[
|
|
15533
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
15657
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-left sm:text-right", children: [
|
|
15658
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-bold text-[16px] md:text-[18px] text-hsecondary", children: formatPrice(itemTotal) }),
|
|
15659
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[10px] md:text-[11px] text-[#676c80]", children: [
|
|
15534
15660
|
formatPrice(unitPrice),
|
|
15535
15661
|
" each"
|
|
15536
15662
|
] })
|
|
@@ -15606,10 +15732,10 @@ function CartScreen() {
|
|
|
15606
15732
|
}
|
|
15607
15733
|
router.push(buildPath("/checkout"));
|
|
15608
15734
|
};
|
|
15609
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-screen bg-white", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-[1400px] mx-auto px-
|
|
15610
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-12", children: [
|
|
15611
|
-
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "font-
|
|
15612
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
15735
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-screen bg-white", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-[1400px] mx-auto px-4 md:px-12", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-8", children: [
|
|
15736
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8 md:mb-12", children: [
|
|
15737
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "font-semibold text-hsecondary tracking-[-1px] md:tracking-[-2px] mb-2 text-3xl md:text-4xl", children: "Shopping Cart" }),
|
|
15738
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[14px] md:text-[16px] text-hmuted", children: [
|
|
15613
15739
|
itemCount,
|
|
15614
15740
|
" ",
|
|
15615
15741
|
itemCount === 1 ? "item" : "items",
|
|
@@ -15638,19 +15764,19 @@ function CartScreen() {
|
|
|
15638
15764
|
initial: { opacity: 0, y: 24 },
|
|
15639
15765
|
animate: { opacity: 1, y: 0 },
|
|
15640
15766
|
transition: { delay: 0.1 },
|
|
15641
|
-
className: "
|
|
15642
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-linear-to-br from-hsecondary/10 to-hsecondary/10 rounded-[24px] p-8 border-2 border-hsecondary/20 sticky top-24", children: [
|
|
15643
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-
|
|
15767
|
+
className: "lg:sticky lg:top-24 h-fit lg:col-span-1",
|
|
15768
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-hsecondary/[0.03] md:bg-linear-to-br md:from-hsecondary/10 md:to-hsecondary/10 rounded-[24px] p-6 md:p-8 border-2 border-hsecondary/10 md:border-hsecondary/20 lg:sticky lg:top-24", children: [
|
|
15769
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-hsecondary mb-6", children: "Order Summary" }),
|
|
15644
15770
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 mb-6", children: [
|
|
15645
15771
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
15646
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "
|
|
15772
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[14px] text-hmuted", children: [
|
|
15647
15773
|
"Subtotal (",
|
|
15648
15774
|
itemCount,
|
|
15649
15775
|
" ",
|
|
15650
15776
|
itemCount === 1 ? "item" : "items",
|
|
15651
15777
|
")"
|
|
15652
15778
|
] }),
|
|
15653
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-
|
|
15779
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-[14px] text-hsecondary", children: formatPrice(subtotal) })
|
|
15654
15780
|
] }),
|
|
15655
15781
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-sm", children: [
|
|
15656
15782
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-600", children: "Shipping" }),
|
|
@@ -16640,8 +16766,8 @@ function CheckoutScreen() {
|
|
|
16640
16766
|
className: "space-y-8",
|
|
16641
16767
|
children: [
|
|
16642
16768
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-12", children: [
|
|
16643
|
-
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "font-
|
|
16644
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
16769
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "font-semibold text-[#2B4B7C] mb-2 text-3xl", children: "Checkout" }),
|
|
16770
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[14px] text-[#676c80] text-md leading-relaxed", children: "Complete your order information below" })
|
|
16645
16771
|
] }),
|
|
16646
16772
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white border-2 border-gray-100 rounded-[24px] p-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-8", children: [
|
|
16647
16773
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -16736,7 +16862,7 @@ function CheckoutScreen() {
|
|
|
16736
16862
|
] }) }),
|
|
16737
16863
|
isDelivery !== null && /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "bg-white border-2 border-gray-100 rounded-[24px] p-8 text-[#2B4B7C]", children: [
|
|
16738
16864
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-between gap-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
16739
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-
|
|
16865
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-[#2B4B7C] mb-2 text-2xl", children: isDelivery ? "Delivery Address" : "Contact Information" }),
|
|
16740
16866
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-slate-500", children: "We use temperature-aware packaging and real-time tracking on every shipment." })
|
|
16741
16867
|
] }) }),
|
|
16742
16868
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
@@ -16870,7 +16996,7 @@ function CheckoutScreen() {
|
|
|
16870
16996
|
isDelivery === true && selectedAddressId && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white border-2 border-gray-100 rounded-[24px] p-8 text-[#2B4B7C]", children: [
|
|
16871
16997
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 text-xl font-semibold text-gray-900 pb-4 mb-8 border-b", children: [
|
|
16872
16998
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Truck, { className: "w-8 h-8 flex items-center justify-center text-[#2B4B7C]" }),
|
|
16873
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-
|
|
16999
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-[#2B4B7C] text-2xl", children: "Shipping Options" })
|
|
16874
17000
|
] }),
|
|
16875
17001
|
shippingRatesLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center py-12", children: [
|
|
16876
17002
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-haccent" }),
|
|
@@ -16978,18 +17104,18 @@ function CheckoutScreen() {
|
|
|
16978
17104
|
transition: { duration: 0.5, ease: "easeOut", delay: 0.1 },
|
|
16979
17105
|
className: "space-y-10 lg:sticky lg:top-24 lg:col-span-1",
|
|
16980
17106
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-linear-to-br from-hsecondary/10 to-hsecondary/10 rounded-[24px] p-8 border-2 border-hsecondary/20 sticky top-24", children: [
|
|
16981
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-
|
|
17107
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-semibold text-hsecondary mb-6 text-2xl", children: "Order Summary" }),
|
|
16982
17108
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "mt-8 pt-6 border-t border-slate-100", children: [
|
|
16983
17109
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 mb-6", children: cart?.cartBody?.items?.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3", children: [
|
|
16984
17110
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-16 rounded-xl overflow-hidden bg-white shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(Image4__default.default, { src: item.productVariantData?.media?.[0]?.file || PLACEHOLDER_IMAGE_SRC, alt: item.productVariantData.name, className: "w-full h-full object-cover", height: 200, width: 200 }) }),
|
|
16985
17111
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
16986
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
16987
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
17112
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-[12px] text-[#2B4B7C] mb-1", children: item?.productVariantData?.name }),
|
|
17113
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[11px] text-[#676c80]", children: [
|
|
16988
17114
|
item?.productVariantData?.brand,
|
|
16989
17115
|
" \u2022 Qty: ",
|
|
16990
17116
|
item.quantity
|
|
16991
17117
|
] }),
|
|
16992
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-
|
|
17118
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-[12px] text-hsecondary mt-1", children: formatPrice(item.productVariantData.finalPrice * item.quantity) })
|
|
16993
17119
|
] })
|
|
16994
17120
|
] }, item.productVariantId || item.id)) }),
|
|
16995
17121
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px bg-hsecondary/20 my-4" }),
|
|
@@ -17026,11 +17152,11 @@ function CheckoutScreen() {
|
|
|
17026
17152
|
] }),
|
|
17027
17153
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-px bg-hsecondary/20 mt-6" }),
|
|
17028
17154
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-6", children: [
|
|
17029
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-
|
|
17030
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-
|
|
17155
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-[16px] text-hsecondary", children: "Total" }),
|
|
17156
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-[24px] text-hsecondary", children: formatPrice(total) })
|
|
17031
17157
|
] })
|
|
17032
17158
|
] }),
|
|
17033
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white/80 rounded-xl p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
17159
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white/80 rounded-xl p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-[11px] text-[#676c80] leading-[1.6]", children: [
|
|
17034
17160
|
/* @__PURE__ */ jsxRuntime.jsx("strong", { className: "text-hsecondary", children: "Payment:" }),
|
|
17035
17161
|
" We'll contact you to arrange payment upon pickup or delivery. We accept cash, credit cards, and all major payment methods."
|
|
17036
17162
|
] }) })
|
|
@@ -17067,7 +17193,7 @@ function CheckoutScreen() {
|
|
|
17067
17193
|
{
|
|
17068
17194
|
type: "submit",
|
|
17069
17195
|
disabled: isSubmitting,
|
|
17070
|
-
className: "font-
|
|
17196
|
+
className: "font-medium text-[14px] px-6 py-3 rounded-full text-white hover:bg-[#d66f45] hover:shadow-lg transition-all duration-300 mt-4 w-full bg-hsecondary hover:bg-[#2B4B7C] flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
17071
17197
|
children: [
|
|
17072
17198
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCard, { className: "h-5 w-5" }),
|
|
17073
17199
|
isSubmitting ? "Placing order..." : "Place Secure Order"
|
|
@@ -17941,7 +18067,7 @@ function AccountOverviewTab() {
|
|
|
17941
18067
|
icon: lucideReact.Package,
|
|
17942
18068
|
label: "Total Orders",
|
|
17943
18069
|
value: totalOrders,
|
|
17944
|
-
color: "bg-
|
|
18070
|
+
color: "bg-hprimary-100 text-[#5B9BD5]"
|
|
17945
18071
|
},
|
|
17946
18072
|
{
|
|
17947
18073
|
icon: lucideReact.CheckCircle,
|
|
@@ -17997,7 +18123,7 @@ function AccountOverviewTab() {
|
|
|
17997
18123
|
] }),
|
|
17998
18124
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
17999
18125
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
18000
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-
|
|
18126
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-hprimary-100", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "h-5 w-5 text-hsecondary" }) }),
|
|
18001
18127
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
18002
18128
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-hmuted", children: "Full Name" }),
|
|
18003
18129
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm font-medium text-hsecondary", children: [
|
|
@@ -18008,21 +18134,21 @@ function AccountOverviewTab() {
|
|
|
18008
18134
|
] })
|
|
18009
18135
|
] }),
|
|
18010
18136
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
18011
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-
|
|
18137
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-hprimary-100", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "h-5 w-5 text-hsecondary" }) }),
|
|
18012
18138
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
18013
18139
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-hmuted", children: "E-mail Address" }),
|
|
18014
18140
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-hsecondary", children: user.email })
|
|
18015
18141
|
] })
|
|
18016
18142
|
] }),
|
|
18017
18143
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
18018
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-
|
|
18144
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-hprimary-100", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "h-5 w-5 text-hsecondary" }) }),
|
|
18019
18145
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
18020
18146
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-hmuted", children: "Phone Number" }),
|
|
18021
18147
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-hsecondary", children: user.phoneNumber || "Not provided" })
|
|
18022
18148
|
] })
|
|
18023
18149
|
] }),
|
|
18024
18150
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
|
|
18025
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-
|
|
18151
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-hprimary-100", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { className: "h-5 w-5 text-hsecondary" }) }),
|
|
18026
18152
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
18027
18153
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-hmuted", children: "Date of Birth" }),
|
|
18028
18154
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-hsecondary", children: "Not provided" })
|
|
@@ -18519,7 +18645,7 @@ function AccountReviewsTab() {
|
|
|
18519
18645
|
"button",
|
|
18520
18646
|
{
|
|
18521
18647
|
onClick: () => window.location.reload(),
|
|
18522
|
-
className: "text-
|
|
18648
|
+
className: "text-haccent-500 hover:underline text-sm",
|
|
18523
18649
|
children: "Try again"
|
|
18524
18650
|
}
|
|
18525
18651
|
)
|
|
@@ -18527,14 +18653,14 @@ function AccountReviewsTab() {
|
|
|
18527
18653
|
}
|
|
18528
18654
|
if (!reviews || reviews.length === 0) {
|
|
18529
18655
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center py-12", children: [
|
|
18530
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-16 rounded-full bg-
|
|
18656
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-16 rounded-full bg-haccent-500/10 flex items-center justify-center mx-auto mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-8 text-haccent-500" }) }),
|
|
18531
18657
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-gray-900 mb-2", children: "No reviews yet" }),
|
|
18532
18658
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-600 mb-6", children: "Share your experience with products you've purchased" }),
|
|
18533
18659
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
18534
18660
|
"button",
|
|
18535
18661
|
{
|
|
18536
18662
|
onClick: () => router.push(buildPath("/reviews")),
|
|
18537
|
-
className: "inline-flex items-center gap-2 px-6 py-3 bg-
|
|
18663
|
+
className: "inline-flex items-center gap-2 px-6 py-3 bg-haccent-500 text-white rounded-lg font-medium hover:bg-[#d66f40] transition-colors",
|
|
18538
18664
|
children: [
|
|
18539
18665
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-4" }),
|
|
18540
18666
|
"Write Your First Review"
|
|
@@ -18769,7 +18895,7 @@ function OrderCard({ order, onDelete }) {
|
|
|
18769
18895
|
"button",
|
|
18770
18896
|
{
|
|
18771
18897
|
onClick: handleReviewClick,
|
|
18772
|
-
className: "inline-flex items-center gap-2 rounded-lg border border-
|
|
18898
|
+
className: "inline-flex items-center gap-2 rounded-lg border border-haccent-500 bg-white hover:bg-haccent-500/5 text-haccent-500 px-4 py-2 text-sm transition-colors",
|
|
18773
18899
|
onPointerDown: (e) => e.stopPropagation(),
|
|
18774
18900
|
children: [
|
|
18775
18901
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "w-4 h-4" }),
|
|
@@ -18937,8 +19063,8 @@ function ReviewPromptBanner({
|
|
|
18937
19063
|
router.push(buildPath("/reviews"));
|
|
18938
19064
|
};
|
|
18939
19065
|
if (!isVisible) return null;
|
|
18940
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-gradient-to-r from-
|
|
18941
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-10 rounded-full bg-
|
|
19066
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-gradient-to-r from-haccent-500/10 to-haccent-500/5 border border-haccent-500/20 rounded-lg p-4 mb-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
|
|
19067
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "size-10 rounded-full bg-haccent-500/20 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-5 text-haccent-500" }) }) }),
|
|
18942
19068
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
18943
19069
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
18944
19070
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -18966,7 +19092,7 @@ function ReviewPromptBanner({
|
|
|
18966
19092
|
"button",
|
|
18967
19093
|
{
|
|
18968
19094
|
onClick: handleReviewClick,
|
|
18969
|
-
className: "mt-3 inline-flex items-center gap-2 px-4 py-2 bg-
|
|
19095
|
+
className: "mt-3 inline-flex items-center gap-2 px-4 py-2 bg-haccent-500 text-white text-sm font-medium rounded-lg hover:bg-[#d66f40] transition-colors",
|
|
18970
19096
|
children: [
|
|
18971
19097
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Star, { className: "size-4" }),
|
|
18972
19098
|
"Write a Review"
|
|
@@ -20119,41 +20245,24 @@ function SearchPage() {
|
|
|
20119
20245
|
setHasSearched(false);
|
|
20120
20246
|
return;
|
|
20121
20247
|
}
|
|
20248
|
+
if (sanitizedQuery.length < 2) {
|
|
20249
|
+
setProducts([]);
|
|
20250
|
+
setIsLoading(false);
|
|
20251
|
+
setHasSearched(false);
|
|
20252
|
+
return;
|
|
20253
|
+
}
|
|
20122
20254
|
try {
|
|
20123
20255
|
setIsLoading(true);
|
|
20124
20256
|
const api = new ProductsApi(AXIOS_CONFIG);
|
|
20125
|
-
|
|
20126
|
-
|
|
20127
|
-
// searchTerm
|
|
20128
|
-
void 0,
|
|
20129
|
-
// maxPrice
|
|
20130
|
-
void 0,
|
|
20131
|
-
// minPrice
|
|
20132
|
-
void 0,
|
|
20133
|
-
// brandFilter
|
|
20134
|
-
void 0,
|
|
20135
|
-
// availability
|
|
20136
|
-
"relevance",
|
|
20137
|
-
// sort
|
|
20138
|
-
void 0,
|
|
20139
|
-
// subCategoryId
|
|
20140
|
-
void 0,
|
|
20141
|
-
// categoryId
|
|
20142
|
-
true,
|
|
20143
|
-
// isActive
|
|
20144
|
-
20,
|
|
20145
|
-
// limit
|
|
20146
|
-
1
|
|
20147
|
-
// page
|
|
20148
|
-
);
|
|
20149
|
-
console.log("Search API Response:", {
|
|
20257
|
+
const response = await api.smartSearch(sanitizedQuery, 20);
|
|
20258
|
+
console.log("Smart Search API Response:", {
|
|
20150
20259
|
query: sanitizedQuery,
|
|
20151
20260
|
status: response.status,
|
|
20152
|
-
|
|
20153
|
-
|
|
20261
|
+
productsCount: response.data?.products?.length,
|
|
20262
|
+
scores: response.data?.scores
|
|
20154
20263
|
});
|
|
20155
|
-
if (response.data?.
|
|
20156
|
-
const transformedProducts = response.data.
|
|
20264
|
+
if (response.data?.products) {
|
|
20265
|
+
const transformedProducts = response.data.products.map((item) => ({
|
|
20157
20266
|
...item,
|
|
20158
20267
|
id: item._id || ""
|
|
20159
20268
|
}));
|
|
@@ -20166,7 +20275,7 @@ function SearchPage() {
|
|
|
20166
20275
|
}
|
|
20167
20276
|
setHasSearched(true);
|
|
20168
20277
|
} catch (error) {
|
|
20169
|
-
console.error("Error fetching search results:", error);
|
|
20278
|
+
console.error("Error fetching smart search results:", error);
|
|
20170
20279
|
if (error instanceof Error) {
|
|
20171
20280
|
console.error("Error details:", error.message);
|
|
20172
20281
|
}
|
|
@@ -20807,7 +20916,7 @@ function ReviewForm({
|
|
|
20807
20916
|
{
|
|
20808
20917
|
id: "reviewType",
|
|
20809
20918
|
...register("reviewType"),
|
|
20810
|
-
className: "w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-
|
|
20919
|
+
className: "w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-haccent-500 focus:border-transparent",
|
|
20811
20920
|
children: [
|
|
20812
20921
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "Product Review", children: "Product Review" }),
|
|
20813
20922
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "Quality Review", children: "Quality Review" }),
|
|
@@ -20836,7 +20945,7 @@ function ReviewForm({
|
|
|
20836
20945
|
...register("review"),
|
|
20837
20946
|
rows: 5,
|
|
20838
20947
|
placeholder: "Share your experience with this product...",
|
|
20839
|
-
className: "w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-
|
|
20948
|
+
className: "w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-haccent-500 focus:border-transparent resize-none"
|
|
20840
20949
|
}
|
|
20841
20950
|
),
|
|
20842
20951
|
errors.review && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-red-500 text-xs mt-1", children: errors.review.message })
|
|
@@ -20847,7 +20956,7 @@ function ReviewForm({
|
|
|
20847
20956
|
{
|
|
20848
20957
|
type: "submit",
|
|
20849
20958
|
disabled: isLoading,
|
|
20850
|
-
className: "flex-1 bg-
|
|
20959
|
+
className: "flex-1 bg-haccent-500 text-white py-3 px-6 rounded-lg font-medium hover:bg-[#d66f40] transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",
|
|
20851
20960
|
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20852
20961
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
|
|
20853
20962
|
"Submitting..."
|
|
@@ -20906,7 +21015,7 @@ function OrderReviewsScreen() {
|
|
|
20906
21015
|
"button",
|
|
20907
21016
|
{
|
|
20908
21017
|
onClick: () => router.back(),
|
|
20909
|
-
className: "text-
|
|
21018
|
+
className: "text-haccent-500 hover:underline",
|
|
20910
21019
|
children: "Go Back"
|
|
20911
21020
|
}
|
|
20912
21021
|
)
|
|
@@ -20991,7 +21100,7 @@ function OrderReviewsScreen() {
|
|
|
20991
21100
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20992
21101
|
"div",
|
|
20993
21102
|
{
|
|
20994
|
-
className: "bg-white rounded-lg border border-gray-200 p-4 cursor-pointer hover:border-
|
|
21103
|
+
className: "bg-white rounded-lg border border-gray-200 p-4 cursor-pointer hover:border-haccent-500 hover:shadow-md transition-all",
|
|
20995
21104
|
onClick: () => {
|
|
20996
21105
|
const possibleProductId = item.productId || item.product?._id || item.product?.id || variantData?.productId || variantData?.product?._id || variantData?.product?.id || variantId;
|
|
20997
21106
|
const productData = {
|
|
@@ -21022,7 +21131,7 @@ function OrderReviewsScreen() {
|
|
|
21022
21131
|
item.quantity
|
|
21023
21132
|
] })
|
|
21024
21133
|
] }),
|
|
21025
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 text-
|
|
21134
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 text-haccent-500", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: "Review Now" }) })
|
|
21026
21135
|
] })
|
|
21027
21136
|
},
|
|
21028
21137
|
`${variantId}-${index}`
|
|
@@ -21047,14 +21156,14 @@ function OrderReviewsScreen() {
|
|
|
21047
21156
|
"button",
|
|
21048
21157
|
{
|
|
21049
21158
|
onClick: () => router.push("/shop"),
|
|
21050
|
-
className: "px-6 py-3 bg-
|
|
21159
|
+
className: "px-6 py-3 bg-haccent-500 text-white rounded-lg hover:bg-[#d66f40] transition-colors",
|
|
21051
21160
|
children: "Start Shopping"
|
|
21052
21161
|
}
|
|
21053
21162
|
)
|
|
21054
21163
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: completedOrders.map((order) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21055
21164
|
"div",
|
|
21056
21165
|
{
|
|
21057
|
-
className: "bg-white rounded-lg border border-gray-200 p-6 cursor-pointer hover:border-
|
|
21166
|
+
className: "bg-white rounded-lg border border-gray-200 p-6 cursor-pointer hover:border-haccent-500 hover:shadow-md transition-all",
|
|
21058
21167
|
onClick: () => handleOrderClick(order),
|
|
21059
21168
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
21060
21169
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
@@ -21072,7 +21181,7 @@ function OrderReviewsScreen() {
|
|
|
21072
21181
|
] }),
|
|
21073
21182
|
order.createdAt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500", children: dateFns.formatDistanceToNow(new Date(order.createdAt), { addSuffix: true }) })
|
|
21074
21183
|
] }),
|
|
21075
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 text-
|
|
21184
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 text-haccent-500", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: "Review Products" }) }) })
|
|
21076
21185
|
] })
|
|
21077
21186
|
},
|
|
21078
21187
|
order.id || order._id
|
|
@@ -22185,7 +22294,7 @@ function Header() {
|
|
|
22185
22294
|
),
|
|
22186
22295
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-0 top-full mt-2 w-56 rounded-lg border border-slate-200 bg-white shadow-lg z-20", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2", children: [
|
|
22187
22296
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-3 py-2 border-b border-slate-200 mb-1", children: [
|
|
22188
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm font-medium text-
|
|
22297
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm font-medium text-hprimary-900 truncate", children: [
|
|
22189
22298
|
user?.firstname,
|
|
22190
22299
|
" ",
|
|
22191
22300
|
user?.lastname
|
|
@@ -22532,14 +22641,10 @@ exports.AccountReviewsTab = AccountReviewsTab;
|
|
|
22532
22641
|
exports.AddressAddressTypeEnum = AddressAddressTypeEnum;
|
|
22533
22642
|
exports.AddressCreatedRequestAddressTypeEnum = AddressCreatedRequestAddressTypeEnum;
|
|
22534
22643
|
exports.AddressesScreen = AddressesScreen;
|
|
22535
|
-
exports.ApiKeyInfoDtoKeyTypeEnum = ApiKeyInfoDtoKeyTypeEnum;
|
|
22536
22644
|
exports.AuthProvider = AuthProvider;
|
|
22537
22645
|
exports.Badge = Badge;
|
|
22538
22646
|
exports.BulkChannelToggleDtoCategoryEnum = BulkChannelToggleDtoCategoryEnum;
|
|
22539
22647
|
exports.Button = Button;
|
|
22540
|
-
exports.CampaignDraftDtoStatusEnum = CampaignDraftDtoStatusEnum;
|
|
22541
|
-
exports.CampaignDraftScheduleDtoStatusEnum = CampaignDraftScheduleDtoStatusEnum;
|
|
22542
|
-
exports.CampaignDraftSendingDtoStatusEnum = CampaignDraftSendingDtoStatusEnum;
|
|
22543
22648
|
exports.CartItem = CartItem;
|
|
22544
22649
|
exports.CartProvider = CartProvider;
|
|
22545
22650
|
exports.CartScreen = CartScreen;
|
|
@@ -22563,6 +22668,7 @@ exports.Footer = Footer;
|
|
|
22563
22668
|
exports.ForgotPasswordScreen = ForgotPasswordScreen;
|
|
22564
22669
|
exports.Header = Header;
|
|
22565
22670
|
exports.Input = Input;
|
|
22671
|
+
exports.InventoryAlertDtoAlertTypeEnum = InventoryAlertDtoAlertTypeEnum;
|
|
22566
22672
|
exports.LoginScreen = LoginScreen;
|
|
22567
22673
|
exports.ManualDiscountDtoValueTypeEnum = ManualDiscountDtoValueTypeEnum;
|
|
22568
22674
|
exports.ManualOrderDTOOrderStatusEnum = ManualOrderDTOOrderStatusEnum;
|
|
@@ -22574,6 +22680,7 @@ exports.NotificationBell = NotificationBell;
|
|
|
22574
22680
|
exports.NotificationCard = NotificationCard;
|
|
22575
22681
|
exports.NotificationCenterProvider = NotificationCenterProvider;
|
|
22576
22682
|
exports.NotificationDrawer = NotificationDrawer;
|
|
22683
|
+
exports.NotificationDtoTypeEnum = NotificationDtoTypeEnum;
|
|
22577
22684
|
exports.NotificationSettingsScreen = NotificationSettingsScreen;
|
|
22578
22685
|
exports.OrderCard = OrderCard;
|
|
22579
22686
|
exports.OrderCardSkeleton = OrderCardSkeleton;
|