hey-pharmacist-ecommerce 1.0.0
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 +269 -0
- package/dist/index.d.mts +564 -0
- package/dist/index.d.ts +564 -0
- package/dist/index.js +7541 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +7485 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +70 -0
- package/src/components/CartItem.tsx +103 -0
- package/src/components/EmptyState.tsx +27 -0
- package/src/components/Footer.tsx +147 -0
- package/src/components/Header.tsx +151 -0
- package/src/components/OrderCard.tsx +98 -0
- package/src/components/ProductCard.tsx +122 -0
- package/src/components/ui/Badge.tsx +31 -0
- package/src/components/ui/Button.tsx +61 -0
- package/src/components/ui/Input.tsx +45 -0
- package/src/components/ui/Modal.tsx +79 -0
- package/src/components/ui/Skeleton.tsx +46 -0
- package/src/hooks/useOrders.ts +98 -0
- package/src/hooks/useProducts.ts +125 -0
- package/src/index.ts +71 -0
- package/src/lib/Apis/api.ts +46 -0
- package/src/lib/Apis/apis/addresses-api.ts +1461 -0
- package/src/lib/Apis/apis/auth-api.ts +945 -0
- package/src/lib/Apis/apis/blogs-api.ts +582 -0
- package/src/lib/Apis/apis/cart-api.ts +456 -0
- package/src/lib/Apis/apis/categories-api.ts +725 -0
- package/src/lib/Apis/apis/chats-api.ts +1101 -0
- package/src/lib/Apis/apis/contact-us-api.ts +394 -0
- package/src/lib/Apis/apis/discounts-api.ts +763 -0
- package/src/lib/Apis/apis/drafts-api.ts +448 -0
- package/src/lib/Apis/apis/events-api.ts +1311 -0
- package/src/lib/Apis/apis/file-proccesor-api.ts +293 -0
- package/src/lib/Apis/apis/health-api.ts +119 -0
- package/src/lib/Apis/apis/images-api.ts +271 -0
- package/src/lib/Apis/apis/inventory-api.ts +375 -0
- package/src/lib/Apis/apis/marketing-api.ts +3099 -0
- package/src/lib/Apis/apis/notifications-api.ts +843 -0
- package/src/lib/Apis/apis/open-aiapi.ts +513 -0
- package/src/lib/Apis/apis/orders-api.ts +1343 -0
- package/src/lib/Apis/apis/payment-methods-api.ts +411 -0
- package/src/lib/Apis/apis/payments-api.ts +469 -0
- package/src/lib/Apis/apis/product-attributes-api.ts +538 -0
- package/src/lib/Apis/apis/product-favorite-list-api.ts +321 -0
- package/src/lib/Apis/apis/product-variants-api.ts +648 -0
- package/src/lib/Apis/apis/products-api.ts +1442 -0
- package/src/lib/Apis/apis/review-api.ts +1383 -0
- package/src/lib/Apis/apis/roles-api.ts +614 -0
- package/src/lib/Apis/apis/shipping-api.ts +703 -0
- package/src/lib/Apis/apis/statistics-api.ts +234 -0
- package/src/lib/Apis/apis/stores-api.ts +1519 -0
- package/src/lib/Apis/apis/sub-categories-api.ts +1208 -0
- package/src/lib/Apis/apis/user-groups-api.ts +1198 -0
- package/src/lib/Apis/apis/users-api.ts +1403 -0
- package/src/lib/Apis/apis/web-hooks-api.ts +198 -0
- package/src/lib/Apis/base.ts +70 -0
- package/src/lib/Apis/configuration.ts +75 -0
- package/src/lib/Apis/index.ts +17 -0
- package/src/lib/Apis/models/add-contact-to-list-dto.ts +33 -0
- package/src/lib/Apis/models/add-message-dto.ts +56 -0
- package/src/lib/Apis/models/address-created-request.ts +134 -0
- package/src/lib/Apis/models/address.ts +164 -0
- package/src/lib/Apis/models/allow-user-credit-dto.ts +27 -0
- package/src/lib/Apis/models/appointment.ts +75 -0
- package/src/lib/Apis/models/available-dates-dto.ts +33 -0
- package/src/lib/Apis/models/available-suggested-dates-dto.ts +33 -0
- package/src/lib/Apis/models/blog.ts +75 -0
- package/src/lib/Apis/models/browser-stats-response-dto.ts +40 -0
- package/src/lib/Apis/models/bulk-move-subcategories-dto.ts +33 -0
- package/src/lib/Apis/models/bulk-unassign-subcategories-dto.ts +27 -0
- package/src/lib/Apis/models/campaign-content-response-dto.ts +40 -0
- package/src/lib/Apis/models/campaign-draft-dto.ts +175 -0
- package/src/lib/Apis/models/campaign-draft-response-dto.ts +40 -0
- package/src/lib/Apis/models/campaign-draft-schedule-dto.ts +49 -0
- package/src/lib/Apis/models/campaign-draft-schedule-response-dto.ts +40 -0
- package/src/lib/Apis/models/campaign-draft-sending-dto.ts +43 -0
- package/src/lib/Apis/models/campaign-draft-sending-response-dto.ts +40 -0
- package/src/lib/Apis/models/cart-body-dto.ts +40 -0
- package/src/lib/Apis/models/cart-body-populated.ts +47 -0
- package/src/lib/Apis/models/cart-item-populated.ts +41 -0
- package/src/lib/Apis/models/cart-item.ts +33 -0
- package/src/lib/Apis/models/cart-response-dto.ts +70 -0
- package/src/lib/Apis/models/categories-paginated-response-dto.ts +52 -0
- package/src/lib/Apis/models/category-filters.ts +40 -0
- package/src/lib/Apis/models/category-populated.ts +106 -0
- package/src/lib/Apis/models/category-sub-category-populated.ts +51 -0
- package/src/lib/Apis/models/category.ts +99 -0
- package/src/lib/Apis/models/categorys-headlines-response-dto.ts +40 -0
- package/src/lib/Apis/models/change-user-email-dto.ts +27 -0
- package/src/lib/Apis/models/chat.ts +33 -0
- package/src/lib/Apis/models/check-notifications-response-dto.ts +33 -0
- package/src/lib/Apis/models/contact-aggregated-stats-response-dto.ts +40 -0
- package/src/lib/Apis/models/contact-full-dto.ts +93 -0
- package/src/lib/Apis/models/contact-full-response-dto.ts +40 -0
- package/src/lib/Apis/models/contact-list-stats-response-dto.ts +40 -0
- package/src/lib/Apis/models/contact-lists-response-dto.ts +40 -0
- package/src/lib/Apis/models/contact-us.ts +81 -0
- package/src/lib/Apis/models/country-stats-response-dto.ts +40 -0
- package/src/lib/Apis/models/create-address-dto.ts +134 -0
- package/src/lib/Apis/models/create-blog-dto.ts +45 -0
- package/src/lib/Apis/models/create-category-dto.ts +45 -0
- package/src/lib/Apis/models/create-chat-dto.ts +39 -0
- package/src/lib/Apis/models/create-contact-dto.ts +39 -0
- package/src/lib/Apis/models/create-contact-list-dto.ts +27 -0
- package/src/lib/Apis/models/create-discount-dto.ts +208 -0
- package/src/lib/Apis/models/create-draft-dto.ts +67 -0
- package/src/lib/Apis/models/create-email-template-dto.ts +51 -0
- package/src/lib/Apis/models/create-event-dto.ts +52 -0
- package/src/lib/Apis/models/create-marketing-campaign-dto.ts +81 -0
- package/src/lib/Apis/models/create-message-dto.ts +57 -0
- package/src/lib/Apis/models/create-notification-dto.ts +75 -0
- package/src/lib/Apis/models/create-product-attribute-dto.ts +33 -0
- package/src/lib/Apis/models/create-product-dto.ts +94 -0
- package/src/lib/Apis/models/create-review-dto.ts +63 -0
- package/src/lib/Apis/models/create-role-dto.ts +57 -0
- package/src/lib/Apis/models/create-single-variant-product-dto.ts +155 -0
- package/src/lib/Apis/models/create-store-address-dto.ts +134 -0
- package/src/lib/Apis/models/create-store-dto.ts +105 -0
- package/src/lib/Apis/models/create-sub-category-dto.ts +45 -0
- package/src/lib/Apis/models/create-user-dto.ts +89 -0
- package/src/lib/Apis/models/create-user-group-dto.ts +39 -0
- package/src/lib/Apis/models/create-variant-dto.ts +119 -0
- package/src/lib/Apis/models/create-zone-dto.ts +82 -0
- package/src/lib/Apis/models/custom-product-dto.ts +63 -0
- package/src/lib/Apis/models/default-payment-method-request-dto.ts +27 -0
- package/src/lib/Apis/models/delete-file-dto.ts +27 -0
- package/src/lib/Apis/models/delete-many-files-dto.ts +27 -0
- package/src/lib/Apis/models/discount-paginated-response.ts +52 -0
- package/src/lib/Apis/models/discount.ts +245 -0
- package/src/lib/Apis/models/discounts-insights-dto.ts +57 -0
- package/src/lib/Apis/models/draft.ts +79 -0
- package/src/lib/Apis/models/email-invoice-dto.ts +45 -0
- package/src/lib/Apis/models/email-template-response-dto.ts +117 -0
- package/src/lib/Apis/models/event.ts +76 -0
- package/src/lib/Apis/models/extended-product-dto.ts +204 -0
- package/src/lib/Apis/models/fileproccesor-upload-body.ts +27 -0
- package/src/lib/Apis/models/forget-password.ts +27 -0
- package/src/lib/Apis/models/frequently-bought-product-dto.ts +71 -0
- package/src/lib/Apis/models/general-stats-response-dto.ts +40 -0
- package/src/lib/Apis/models/generate-day-slots-dto.ts +51 -0
- package/src/lib/Apis/models/generate-month-slots-dto.ts +57 -0
- package/src/lib/Apis/models/generate-week-slots-dto.ts +57 -0
- package/src/lib/Apis/models/google-analytics-request-dto.ts +55 -0
- package/src/lib/Apis/models/google-analytics-response-dto.ts +39 -0
- package/src/lib/Apis/models/group-with-no-users-dto.ts +75 -0
- package/src/lib/Apis/models/group-with-users-dto.ts +76 -0
- package/src/lib/Apis/models/images-upload-body.ts +27 -0
- package/src/lib/Apis/models/index.ts +197 -0
- package/src/lib/Apis/models/inventory-paginated-response.ts +75 -0
- package/src/lib/Apis/models/link-stats-response-dto.ts +40 -0
- package/src/lib/Apis/models/login-dto.ts +33 -0
- package/src/lib/Apis/models/manual-discount.ts +49 -0
- package/src/lib/Apis/models/manual-order-dto.ts +133 -0
- package/src/lib/Apis/models/manual-shipping-dto.ts +45 -0
- package/src/lib/Apis/models/marketing-campaign-content-dto.ts +27 -0
- package/src/lib/Apis/models/marketing-list-contact-dto.ts +51 -0
- package/src/lib/Apis/models/move-subcategory-dto.ts +27 -0
- package/src/lib/Apis/models/my-favorite-list-dto.ts +52 -0
- package/src/lib/Apis/models/notification.ts +93 -0
- package/src/lib/Apis/models/object-id.ts +21 -0
- package/src/lib/Apis/models/open-api.ts +33 -0
- package/src/lib/Apis/models/order-paginated-response.ts +52 -0
- package/src/lib/Apis/models/order.ts +214 -0
- package/src/lib/Apis/models/orders-insights-dto.ts +69 -0
- package/src/lib/Apis/models/paginated-products-dto.ts +52 -0
- package/src/lib/Apis/models/payment-method-data.ts +34 -0
- package/src/lib/Apis/models/payment-method.ts +51 -0
- package/src/lib/Apis/models/payment-time-line-dto.ts +56 -0
- package/src/lib/Apis/models/payment.ts +182 -0
- package/src/lib/Apis/models/payments-insights-dto.ts +69 -0
- package/src/lib/Apis/models/payments-paginated-response.ts +52 -0
- package/src/lib/Apis/models/pick-type-class.ts +51 -0
- package/src/lib/Apis/models/populated-chat-dto.ts +95 -0
- package/src/lib/Apis/models/populated-discount.ts +246 -0
- package/src/lib/Apis/models/populated-order.ts +209 -0
- package/src/lib/Apis/models/prefered-pick-or-delivery-time-dto.ts +33 -0
- package/src/lib/Apis/models/price-range.ts +33 -0
- package/src/lib/Apis/models/product-attribute.ts +57 -0
- package/src/lib/Apis/models/product-variant.ts +167 -0
- package/src/lib/Apis/models/product.ts +136 -0
- package/src/lib/Apis/models/products-insights-dto.ts +45 -0
- package/src/lib/Apis/models/rate-dto.ts +123 -0
- package/src/lib/Apis/models/refill-request-dto.ts +75 -0
- package/src/lib/Apis/models/refill-request.ts +105 -0
- package/src/lib/Apis/models/register-or-login-with-gmail.ts +27 -0
- package/src/lib/Apis/models/reserve-appointment.ts +261 -0
- package/src/lib/Apis/models/review.ts +93 -0
- package/src/lib/Apis/models/role.ts +69 -0
- package/src/lib/Apis/models/schedule-campaign-draft-dto.ts +27 -0
- package/src/lib/Apis/models/send-test-email-dto.ts +28 -0
- package/src/lib/Apis/models/shallow-parent-category-dto.ts +33 -0
- package/src/lib/Apis/models/shipment-details-dto.ts +88 -0
- package/src/lib/Apis/models/shipment-status-dto.ts +117 -0
- package/src/lib/Apis/models/shipment-with-order.ts +105 -0
- package/src/lib/Apis/models/shipment.ts +104 -0
- package/src/lib/Apis/models/shipping-info.ts +88 -0
- package/src/lib/Apis/models/single-browser-stats-dto.ts +45 -0
- package/src/lib/Apis/models/single-contact-aggregated-stats-dto.ts +129 -0
- package/src/lib/Apis/models/single-contact-list-stats-dto.ts +117 -0
- package/src/lib/Apis/models/single-country-stats-dto.ts +39 -0
- package/src/lib/Apis/models/single-general-stats.ts +153 -0
- package/src/lib/Apis/models/single-link-stats-dto.ts +39 -0
- package/src/lib/Apis/models/single-message-populated.ts +59 -0
- package/src/lib/Apis/models/single-notification-dto.ts +99 -0
- package/src/lib/Apis/models/single-product-media.ts +74 -0
- package/src/lib/Apis/models/single-recipient-dto.ts +33 -0
- package/src/lib/Apis/models/single-suggest-attribute.ts +33 -0
- package/src/lib/Apis/models/statistic-dto.ts +171 -0
- package/src/lib/Apis/models/store-entity.ts +117 -0
- package/src/lib/Apis/models/store.ts +135 -0
- package/src/lib/Apis/models/sub-category-headlines-only-response-dto.ts +39 -0
- package/src/lib/Apis/models/sub-category.ts +93 -0
- package/src/lib/Apis/models/suggest-attributes.ts +28 -0
- package/src/lib/Apis/models/suggested-slot.ts +33 -0
- package/src/lib/Apis/models/table-cell-dto.ts +33 -0
- package/src/lib/Apis/models/table-dto.ts +34 -0
- package/src/lib/Apis/models/tadmin-session-data.ts +47 -0
- package/src/lib/Apis/models/track-dto.ts +94 -0
- package/src/lib/Apis/models/tracking-status-location-base.ts +45 -0
- package/src/lib/Apis/models/tracking-status-substatus.ts +39 -0
- package/src/lib/Apis/models/tracking-status.ts +71 -0
- package/src/lib/Apis/models/transfere-patient-request.ts +123 -0
- package/src/lib/Apis/models/transfere-patients-request-dto.ts +99 -0
- package/src/lib/Apis/models/tuser-session-data.ts +34 -0
- package/src/lib/Apis/models/update-address-dto.ts +134 -0
- package/src/lib/Apis/models/update-blog-dto.ts +45 -0
- package/src/lib/Apis/models/update-campaign-draft-content-dto.ts +27 -0
- package/src/lib/Apis/models/update-category-dto.ts +45 -0
- package/src/lib/Apis/models/update-discount-dto.ts +208 -0
- package/src/lib/Apis/models/update-event-dto.ts +52 -0
- package/src/lib/Apis/models/update-items-order-dto.ts +27 -0
- package/src/lib/Apis/models/update-marketing-camp-draft-dto.ts +81 -0
- package/src/lib/Apis/models/update-message-dto.ts +57 -0
- package/src/lib/Apis/models/update-product-attribute-dto.ts +33 -0
- package/src/lib/Apis/models/update-product-dto.ts +96 -0
- package/src/lib/Apis/models/update-product-variant-dto.ts +119 -0
- package/src/lib/Apis/models/update-refill-request-dto.ts +75 -0
- package/src/lib/Apis/models/update-review-dto.ts +63 -0
- package/src/lib/Apis/models/update-role-dto.ts +57 -0
- package/src/lib/Apis/models/update-store-dto.ts +105 -0
- package/src/lib/Apis/models/update-sub-category-dto.ts +45 -0
- package/src/lib/Apis/models/update-transfere-patients-request-dto.ts +99 -0
- package/src/lib/Apis/models/update-user-dto.ts +239 -0
- package/src/lib/Apis/models/update-user-group-dto.ts +39 -0
- package/src/lib/Apis/models/update-zone-dto.ts +82 -0
- package/src/lib/Apis/models/upload-pdf-body.ts +27 -0
- package/src/lib/Apis/models/used-by.ts +87 -0
- package/src/lib/Apis/models/user-entity.ts +220 -0
- package/src/lib/Apis/models/user-group.ts +75 -0
- package/src/lib/Apis/models/user-insights-dto.ts +39 -0
- package/src/lib/Apis/models/user-with-no-id.ts +226 -0
- package/src/lib/Apis/models/user.ts +232 -0
- package/src/lib/Apis/models/users-paginated-response.ts +52 -0
- package/src/lib/Apis/models/verify-email-dto.ts +33 -0
- package/src/lib/Apis/models/zone-single-size.ts +51 -0
- package/src/lib/Apis/models/zone.ts +106 -0
- package/src/lib/Apis/wrapper.ts +37 -0
- package/src/lib/api/auth.ts +81 -0
- package/src/lib/api/cart.ts +42 -0
- package/src/lib/api/client.ts +118 -0
- package/src/lib/api/orders.ts +53 -0
- package/src/lib/api/products.ts +51 -0
- package/src/lib/api-adapter/auth-adapter.ts +196 -0
- package/src/lib/api-adapter/cart-adapter.ts +193 -0
- package/src/lib/api-adapter/config.ts +76 -0
- package/src/lib/api-adapter/index.ts +13 -0
- package/src/lib/api-adapter/mappers.ts +147 -0
- package/src/lib/api-adapter/orders-adapter.ts +195 -0
- package/src/lib/api-adapter/products-adapter.ts +194 -0
- package/src/lib/types/index.ts +152 -0
- package/src/lib/utils/colors.ts +51 -0
- package/src/lib/utils/format.ts +48 -0
- package/src/providers/AuthProvider.tsx +117 -0
- package/src/providers/CartProvider.tsx +131 -0
- package/src/providers/EcommerceProvider.tsx +34 -0
- package/src/providers/ThemeProvider.tsx +57 -0
- package/src/screens/CartScreen.tsx +140 -0
- package/src/screens/CheckoutScreen.tsx +340 -0
- package/src/screens/CurrentOrdersScreen.tsx +85 -0
- package/src/screens/LoginScreen.tsx +149 -0
- package/src/screens/OrdersScreen.tsx +86 -0
- package/src/screens/ProductDetailScreen.tsx +255 -0
- package/src/screens/ProfileScreen.tsx +211 -0
- package/src/screens/RegisterScreen.tsx +200 -0
- package/src/screens/ShopScreen.tsx +233 -0
- package/src/styles/globals.css +51 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
|
|
4
|
+
interface EcommerceConfig {
|
|
5
|
+
storeId: string;
|
|
6
|
+
storeName: string;
|
|
7
|
+
logo: string;
|
|
8
|
+
colors: {
|
|
9
|
+
primary: string;
|
|
10
|
+
secondary: string;
|
|
11
|
+
accent: string;
|
|
12
|
+
};
|
|
13
|
+
apiBaseUrl: string;
|
|
14
|
+
stripePublicKey: string;
|
|
15
|
+
}
|
|
16
|
+
interface Product {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
price: number;
|
|
21
|
+
compareAtPrice?: number;
|
|
22
|
+
images: string[];
|
|
23
|
+
category: string;
|
|
24
|
+
inStock: boolean;
|
|
25
|
+
stock?: number;
|
|
26
|
+
sku?: string;
|
|
27
|
+
tags?: string[];
|
|
28
|
+
createdAt: string;
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
}
|
|
31
|
+
interface ProductFilters {
|
|
32
|
+
category?: string;
|
|
33
|
+
minPrice?: number;
|
|
34
|
+
maxPrice?: number;
|
|
35
|
+
search?: string;
|
|
36
|
+
tags?: string[];
|
|
37
|
+
inStock?: boolean;
|
|
38
|
+
}
|
|
39
|
+
interface CartItem$1 {
|
|
40
|
+
productId: string;
|
|
41
|
+
quantity: number;
|
|
42
|
+
product: Product;
|
|
43
|
+
}
|
|
44
|
+
interface Cart {
|
|
45
|
+
items: CartItem$1[];
|
|
46
|
+
total: number;
|
|
47
|
+
itemCount: number;
|
|
48
|
+
}
|
|
49
|
+
declare enum OrderStatus {
|
|
50
|
+
PENDING = "pending",
|
|
51
|
+
PROCESSING = "processing",
|
|
52
|
+
SHIPPED = "shipped",
|
|
53
|
+
DELIVERED = "delivered",
|
|
54
|
+
CANCELLED = "cancelled"
|
|
55
|
+
}
|
|
56
|
+
interface Order {
|
|
57
|
+
id: string;
|
|
58
|
+
orderNumber: string;
|
|
59
|
+
items: OrderItem[];
|
|
60
|
+
total: number;
|
|
61
|
+
status: OrderStatus;
|
|
62
|
+
shippingAddress: Address;
|
|
63
|
+
billingAddress: Address;
|
|
64
|
+
paymentStatus: 'pending' | 'paid' | 'failed';
|
|
65
|
+
stripeCheckoutUrl?: string;
|
|
66
|
+
createdAt: string;
|
|
67
|
+
updatedAt: string;
|
|
68
|
+
}
|
|
69
|
+
interface OrderItem {
|
|
70
|
+
id: string;
|
|
71
|
+
productId: string;
|
|
72
|
+
productName: string;
|
|
73
|
+
productImage: string;
|
|
74
|
+
quantity: number;
|
|
75
|
+
price: number;
|
|
76
|
+
}
|
|
77
|
+
interface Address {
|
|
78
|
+
fullName: string;
|
|
79
|
+
addressLine1: string;
|
|
80
|
+
addressLine2?: string;
|
|
81
|
+
city: string;
|
|
82
|
+
state: string;
|
|
83
|
+
zipCode: string;
|
|
84
|
+
country: string;
|
|
85
|
+
phone: string;
|
|
86
|
+
}
|
|
87
|
+
interface User {
|
|
88
|
+
id: string;
|
|
89
|
+
email: string;
|
|
90
|
+
firstName: string;
|
|
91
|
+
lastName: string;
|
|
92
|
+
phone?: string;
|
|
93
|
+
avatar?: string;
|
|
94
|
+
createdAt: string;
|
|
95
|
+
}
|
|
96
|
+
interface AuthTokens {
|
|
97
|
+
accessToken: string;
|
|
98
|
+
refreshToken: string;
|
|
99
|
+
}
|
|
100
|
+
interface LoginCredentials {
|
|
101
|
+
email: string;
|
|
102
|
+
password: string;
|
|
103
|
+
}
|
|
104
|
+
interface RegisterData {
|
|
105
|
+
email: string;
|
|
106
|
+
password: string;
|
|
107
|
+
firstName: string;
|
|
108
|
+
lastName: string;
|
|
109
|
+
phone?: string;
|
|
110
|
+
}
|
|
111
|
+
interface ApiResponse<T> {
|
|
112
|
+
data: T;
|
|
113
|
+
message?: string;
|
|
114
|
+
success: boolean;
|
|
115
|
+
}
|
|
116
|
+
interface PaginatedResponse<T> {
|
|
117
|
+
data: T[];
|
|
118
|
+
pagination: {
|
|
119
|
+
page: number;
|
|
120
|
+
limit: number;
|
|
121
|
+
total: number;
|
|
122
|
+
totalPages: number;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
interface Category {
|
|
126
|
+
id: string;
|
|
127
|
+
name: string;
|
|
128
|
+
slug: string;
|
|
129
|
+
description?: string;
|
|
130
|
+
image?: string;
|
|
131
|
+
productCount: number;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
interface EcommerceProviderProps {
|
|
135
|
+
config: EcommerceConfig;
|
|
136
|
+
children: React.ReactNode;
|
|
137
|
+
}
|
|
138
|
+
declare function EcommerceProvider({ config, children }: EcommerceProviderProps): React.JSX.Element;
|
|
139
|
+
|
|
140
|
+
interface ThemeContextValue {
|
|
141
|
+
config: EcommerceConfig;
|
|
142
|
+
}
|
|
143
|
+
declare function useTheme(): ThemeContextValue;
|
|
144
|
+
interface ThemeProviderProps {
|
|
145
|
+
config: EcommerceConfig;
|
|
146
|
+
children: React.ReactNode;
|
|
147
|
+
}
|
|
148
|
+
declare function ThemeProvider({ config, children }: ThemeProviderProps): React.JSX.Element;
|
|
149
|
+
|
|
150
|
+
interface AuthContextValue {
|
|
151
|
+
user: User | null;
|
|
152
|
+
isAuthenticated: boolean;
|
|
153
|
+
isLoading: boolean;
|
|
154
|
+
login: (credentials: LoginCredentials) => Promise<void>;
|
|
155
|
+
register: (data: RegisterData) => Promise<void>;
|
|
156
|
+
logout: () => Promise<void>;
|
|
157
|
+
updateUser: (data: Partial<User>) => Promise<void>;
|
|
158
|
+
refreshUser: () => Promise<void>;
|
|
159
|
+
}
|
|
160
|
+
declare function useAuth(): AuthContextValue;
|
|
161
|
+
interface AuthProviderProps {
|
|
162
|
+
children: React.ReactNode;
|
|
163
|
+
}
|
|
164
|
+
declare function AuthProvider({ children }: AuthProviderProps): React.JSX.Element;
|
|
165
|
+
|
|
166
|
+
interface CartContextValue {
|
|
167
|
+
cart: Cart | null;
|
|
168
|
+
isLoading: boolean;
|
|
169
|
+
addToCart: (productId: string, quantity?: number) => Promise<void>;
|
|
170
|
+
updateQuantity: (productId: string, quantity: number) => Promise<void>;
|
|
171
|
+
removeFromCart: (productId: string) => Promise<void>;
|
|
172
|
+
clearCart: () => Promise<void>;
|
|
173
|
+
refreshCart: () => Promise<void>;
|
|
174
|
+
}
|
|
175
|
+
declare function useCart(): CartContextValue;
|
|
176
|
+
interface CartProviderProps {
|
|
177
|
+
children: React.ReactNode;
|
|
178
|
+
}
|
|
179
|
+
declare function CartProvider({ children }: CartProviderProps): React.JSX.Element;
|
|
180
|
+
|
|
181
|
+
declare function ShopScreen(): React.JSX.Element;
|
|
182
|
+
|
|
183
|
+
interface ProductDetailScreenProps {
|
|
184
|
+
productId: string;
|
|
185
|
+
}
|
|
186
|
+
declare function ProductDetailScreen({ productId }: ProductDetailScreenProps): React.JSX.Element;
|
|
187
|
+
|
|
188
|
+
declare function CartScreen(): React.JSX.Element;
|
|
189
|
+
|
|
190
|
+
declare function CheckoutScreen(): React.JSX.Element | null;
|
|
191
|
+
|
|
192
|
+
declare function LoginScreen(): React.JSX.Element;
|
|
193
|
+
|
|
194
|
+
declare function RegisterScreen(): React.JSX.Element;
|
|
195
|
+
|
|
196
|
+
declare function ProfileScreen(): React.JSX.Element | null;
|
|
197
|
+
|
|
198
|
+
declare function OrdersScreen(): React.JSX.Element;
|
|
199
|
+
|
|
200
|
+
declare function CurrentOrdersScreen(): React.JSX.Element;
|
|
201
|
+
|
|
202
|
+
declare function Header(): React.JSX.Element;
|
|
203
|
+
|
|
204
|
+
declare function Footer(): React.JSX.Element;
|
|
205
|
+
|
|
206
|
+
interface ProductCardProps {
|
|
207
|
+
product: Product;
|
|
208
|
+
onClickProduct?: (product: Product) => void;
|
|
209
|
+
}
|
|
210
|
+
declare function ProductCard({ product, onClickProduct }: ProductCardProps): React.JSX.Element;
|
|
211
|
+
|
|
212
|
+
interface CartItemProps {
|
|
213
|
+
item: CartItem$1;
|
|
214
|
+
}
|
|
215
|
+
declare function CartItem({ item }: CartItemProps): React.JSX.Element;
|
|
216
|
+
|
|
217
|
+
interface OrderCardProps {
|
|
218
|
+
order: Order;
|
|
219
|
+
}
|
|
220
|
+
declare function OrderCard({ order }: OrderCardProps): React.JSX.Element;
|
|
221
|
+
|
|
222
|
+
interface EmptyStateProps {
|
|
223
|
+
icon: LucideIcon;
|
|
224
|
+
title: string;
|
|
225
|
+
description: string;
|
|
226
|
+
actionLabel?: string;
|
|
227
|
+
onAction?: () => void;
|
|
228
|
+
}
|
|
229
|
+
declare function EmptyState({ icon: Icon, title, description, actionLabel, onAction }: EmptyStateProps): React.JSX.Element;
|
|
230
|
+
|
|
231
|
+
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
232
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'ghost';
|
|
233
|
+
size?: 'sm' | 'md' | 'lg';
|
|
234
|
+
isLoading?: boolean;
|
|
235
|
+
children: React.ReactNode;
|
|
236
|
+
}
|
|
237
|
+
declare function Button({ variant, size, isLoading, disabled, className, children, ...props }: ButtonProps): React.JSX.Element;
|
|
238
|
+
|
|
239
|
+
interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
240
|
+
label?: string;
|
|
241
|
+
error?: string;
|
|
242
|
+
helperText?: string;
|
|
243
|
+
}
|
|
244
|
+
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
245
|
+
|
|
246
|
+
interface BadgeProps {
|
|
247
|
+
children: React.ReactNode;
|
|
248
|
+
variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'gray';
|
|
249
|
+
size?: 'sm' | 'md';
|
|
250
|
+
className?: string;
|
|
251
|
+
}
|
|
252
|
+
declare function Badge({ children, variant, size, className }: BadgeProps): React.JSX.Element;
|
|
253
|
+
|
|
254
|
+
interface ModalProps {
|
|
255
|
+
isOpen: boolean;
|
|
256
|
+
onClose: () => void;
|
|
257
|
+
title?: string;
|
|
258
|
+
children: React.ReactNode;
|
|
259
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
260
|
+
}
|
|
261
|
+
declare function Modal({ isOpen, onClose, title, children, size }: ModalProps): React.JSX.Element;
|
|
262
|
+
|
|
263
|
+
interface SkeletonProps {
|
|
264
|
+
className?: string;
|
|
265
|
+
}
|
|
266
|
+
declare function Skeleton({ className }: SkeletonProps): React.JSX.Element;
|
|
267
|
+
declare function ProductCardSkeleton(): React.JSX.Element;
|
|
268
|
+
declare function OrderCardSkeleton(): React.JSX.Element;
|
|
269
|
+
|
|
270
|
+
declare function useProducts(filters?: ProductFilters, page?: number, limit?: number): {
|
|
271
|
+
products: Product[];
|
|
272
|
+
isLoading: boolean;
|
|
273
|
+
error: Error | null;
|
|
274
|
+
pagination: {
|
|
275
|
+
page: number;
|
|
276
|
+
limit: number;
|
|
277
|
+
total: number;
|
|
278
|
+
totalPages: number;
|
|
279
|
+
};
|
|
280
|
+
refetch: () => Promise<void>;
|
|
281
|
+
};
|
|
282
|
+
declare function useProduct(id: string): {
|
|
283
|
+
product: Product | null;
|
|
284
|
+
isLoading: boolean;
|
|
285
|
+
error: Error | null;
|
|
286
|
+
};
|
|
287
|
+
declare function useFeaturedProducts(limit?: number): {
|
|
288
|
+
products: Product[];
|
|
289
|
+
isLoading: boolean;
|
|
290
|
+
error: Error | null;
|
|
291
|
+
};
|
|
292
|
+
declare function useCategories(): {
|
|
293
|
+
categories: Category[];
|
|
294
|
+
isLoading: boolean;
|
|
295
|
+
error: Error | null;
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
declare function useOrders(page?: number, limit?: number): {
|
|
299
|
+
orders: Order[];
|
|
300
|
+
isLoading: boolean;
|
|
301
|
+
error: Error | null;
|
|
302
|
+
pagination: {
|
|
303
|
+
page: number;
|
|
304
|
+
limit: number;
|
|
305
|
+
total: number;
|
|
306
|
+
totalPages: number;
|
|
307
|
+
};
|
|
308
|
+
refetch: () => Promise<void>;
|
|
309
|
+
};
|
|
310
|
+
declare function useOrder(id: string): {
|
|
311
|
+
order: Order | null;
|
|
312
|
+
isLoading: boolean;
|
|
313
|
+
error: Error | null;
|
|
314
|
+
refetch: () => Promise<void>;
|
|
315
|
+
};
|
|
316
|
+
declare function useCurrentOrders(): {
|
|
317
|
+
orders: Order[];
|
|
318
|
+
isLoading: boolean;
|
|
319
|
+
error: Error | null;
|
|
320
|
+
refetch: () => Promise<void>;
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
declare const productsApi: {
|
|
324
|
+
/**
|
|
325
|
+
* Get all products with optional filters and pagination
|
|
326
|
+
*/
|
|
327
|
+
getProducts(filters?: ProductFilters, page?: number, limit?: number): Promise<PaginatedResponse<Product>>;
|
|
328
|
+
/**
|
|
329
|
+
* Get a single product by ID
|
|
330
|
+
*/
|
|
331
|
+
getProduct(id: string): Promise<ApiResponse<Product>>;
|
|
332
|
+
/**
|
|
333
|
+
* Get featured products
|
|
334
|
+
*/
|
|
335
|
+
getFeaturedProducts(limit?: number): Promise<ApiResponse<Product[]>>;
|
|
336
|
+
/**
|
|
337
|
+
* Get related products
|
|
338
|
+
*/
|
|
339
|
+
getRelatedProducts(productId: string, limit?: number): Promise<ApiResponse<Product[]>>;
|
|
340
|
+
/**
|
|
341
|
+
* Get all categories
|
|
342
|
+
*/
|
|
343
|
+
getCategories(): Promise<ApiResponse<Category[]>>;
|
|
344
|
+
/**
|
|
345
|
+
* Search products
|
|
346
|
+
*/
|
|
347
|
+
searchProducts(query: string, limit?: number): Promise<ApiResponse<Product[]>>;
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
declare const authApi: {
|
|
351
|
+
/**
|
|
352
|
+
* Register a new user
|
|
353
|
+
*/
|
|
354
|
+
register(data: RegisterData): Promise<ApiResponse<{
|
|
355
|
+
user: User;
|
|
356
|
+
tokens: AuthTokens;
|
|
357
|
+
}>>;
|
|
358
|
+
/**
|
|
359
|
+
* Login user
|
|
360
|
+
*/
|
|
361
|
+
login(credentials: LoginCredentials): Promise<ApiResponse<{
|
|
362
|
+
user: User;
|
|
363
|
+
tokens: AuthTokens;
|
|
364
|
+
}>>;
|
|
365
|
+
/**
|
|
366
|
+
* Logout user
|
|
367
|
+
*/
|
|
368
|
+
logout(): Promise<void>;
|
|
369
|
+
/**
|
|
370
|
+
* Get current user
|
|
371
|
+
*/
|
|
372
|
+
getCurrentUser(): Promise<ApiResponse<User>>;
|
|
373
|
+
/**
|
|
374
|
+
* Update user profile
|
|
375
|
+
*/
|
|
376
|
+
updateProfile(data: Partial<User>): Promise<ApiResponse<User>>;
|
|
377
|
+
/**
|
|
378
|
+
* Change password
|
|
379
|
+
*/
|
|
380
|
+
changePassword(currentPassword: string, newPassword: string): Promise<ApiResponse<void>>;
|
|
381
|
+
/**
|
|
382
|
+
* Request password reset
|
|
383
|
+
*/
|
|
384
|
+
forgotPassword(email: string): Promise<ApiResponse<void>>;
|
|
385
|
+
/**
|
|
386
|
+
* Reset password with token
|
|
387
|
+
*/
|
|
388
|
+
resetPassword(token: string, newPassword: string): Promise<ApiResponse<void>>;
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
declare const cartApi: {
|
|
392
|
+
/**
|
|
393
|
+
* Get user's cart
|
|
394
|
+
*/
|
|
395
|
+
getCart(): Promise<ApiResponse<Cart>>;
|
|
396
|
+
/**
|
|
397
|
+
* Add item to cart
|
|
398
|
+
* Note: Backend uses product variants. If variant ID not provided, uses product ID as variant
|
|
399
|
+
*/
|
|
400
|
+
addToCart(productId: string, quantity?: number): Promise<ApiResponse<Cart>>;
|
|
401
|
+
/**
|
|
402
|
+
* Update cart item quantity
|
|
403
|
+
*/
|
|
404
|
+
updateCartItem(productId: string, quantity: number): Promise<ApiResponse<Cart>>;
|
|
405
|
+
/**
|
|
406
|
+
* Remove item from cart
|
|
407
|
+
*/
|
|
408
|
+
removeFromCart(productId: string): Promise<ApiResponse<Cart>>;
|
|
409
|
+
/**
|
|
410
|
+
* Clear cart
|
|
411
|
+
*/
|
|
412
|
+
clearCart(): Promise<ApiResponse<void>>;
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
interface CreateOrderData {
|
|
416
|
+
shippingAddress: Address;
|
|
417
|
+
billingAddress: Address;
|
|
418
|
+
sameAsShipping?: boolean;
|
|
419
|
+
}
|
|
420
|
+
declare const ordersApi: {
|
|
421
|
+
/**
|
|
422
|
+
* Get user's orders with pagination
|
|
423
|
+
*/
|
|
424
|
+
getOrders(page?: number, limit?: number): Promise<PaginatedResponse<Order>>;
|
|
425
|
+
/**
|
|
426
|
+
* Get current/active orders
|
|
427
|
+
*/
|
|
428
|
+
getCurrentOrders(): Promise<ApiResponse<Order[]>>;
|
|
429
|
+
/**
|
|
430
|
+
* Get a single order by ID
|
|
431
|
+
*/
|
|
432
|
+
getOrder(id: string): Promise<ApiResponse<Order>>;
|
|
433
|
+
/**
|
|
434
|
+
* Create a new order
|
|
435
|
+
*/
|
|
436
|
+
createOrder(data: CreateOrderData): Promise<ApiResponse<Order>>;
|
|
437
|
+
/**
|
|
438
|
+
* Cancel an order
|
|
439
|
+
*/
|
|
440
|
+
cancelOrder(id: string): Promise<ApiResponse<Order>>;
|
|
441
|
+
/**
|
|
442
|
+
* Get order tracking information
|
|
443
|
+
*/
|
|
444
|
+
getOrderTracking(id: string): Promise<ApiResponse<any>>;
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Hey Pharamcist API
|
|
449
|
+
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
|
450
|
+
*
|
|
451
|
+
* OpenAPI spec version: 1.0
|
|
452
|
+
*
|
|
453
|
+
*
|
|
454
|
+
* NOTE: This class is auto generated by the swagger code generator program.
|
|
455
|
+
* https://github.com/swagger-api/swagger-codegen.git
|
|
456
|
+
* Do not edit the class manually.
|
|
457
|
+
*/
|
|
458
|
+
interface ConfigurationParameters {
|
|
459
|
+
_id?: string;
|
|
460
|
+
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
|
|
461
|
+
username?: string;
|
|
462
|
+
password?: string;
|
|
463
|
+
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
|
|
464
|
+
basePath?: string;
|
|
465
|
+
baseOptions?: any;
|
|
466
|
+
}
|
|
467
|
+
declare class Configuration {
|
|
468
|
+
/**
|
|
469
|
+
* parameter for apiKey security
|
|
470
|
+
* @param name security name
|
|
471
|
+
* @memberof Configuration
|
|
472
|
+
*/
|
|
473
|
+
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
|
|
474
|
+
/**
|
|
475
|
+
* parameter for basic security
|
|
476
|
+
*
|
|
477
|
+
* @type {string}
|
|
478
|
+
* @memberof Configuration
|
|
479
|
+
*/
|
|
480
|
+
username?: string;
|
|
481
|
+
/**
|
|
482
|
+
* parameter for basic security
|
|
483
|
+
*
|
|
484
|
+
* @type {string}
|
|
485
|
+
* @memberof Configuration
|
|
486
|
+
*/
|
|
487
|
+
password?: string;
|
|
488
|
+
/**
|
|
489
|
+
* parameter for oauth2 security
|
|
490
|
+
* @param name security name
|
|
491
|
+
* @param scopes oauth2 scope
|
|
492
|
+
* @memberof Configuration
|
|
493
|
+
*/
|
|
494
|
+
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
|
|
495
|
+
/**
|
|
496
|
+
* override base path
|
|
497
|
+
*
|
|
498
|
+
* @type {string}
|
|
499
|
+
* @memberof Configuration
|
|
500
|
+
*/
|
|
501
|
+
basePath?: string;
|
|
502
|
+
/**
|
|
503
|
+
* base options for axios calls
|
|
504
|
+
*
|
|
505
|
+
* @type {any}
|
|
506
|
+
* @memberof Configuration
|
|
507
|
+
*/
|
|
508
|
+
baseOptions?: any;
|
|
509
|
+
constructor(param?: ConfigurationParameters);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* API Adapter Configuration
|
|
514
|
+
* Bridges the frontend components with the real backend APIs
|
|
515
|
+
*/
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Initialize the API configuration with store settings
|
|
519
|
+
*/
|
|
520
|
+
declare function initializeApiAdapter(config: EcommerceConfig): Configuration;
|
|
521
|
+
/**
|
|
522
|
+
* Get the current API configuration
|
|
523
|
+
*/
|
|
524
|
+
declare function getApiConfiguration(): Configuration;
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Format price with currency symbol
|
|
528
|
+
*/
|
|
529
|
+
declare function formatPrice(price: number, currency?: string): string;
|
|
530
|
+
/**
|
|
531
|
+
* Format date
|
|
532
|
+
*/
|
|
533
|
+
declare function formatDate(date: string | Date, format?: 'short' | 'long'): string;
|
|
534
|
+
/**
|
|
535
|
+
* Truncate text with ellipsis
|
|
536
|
+
*/
|
|
537
|
+
declare function truncate(text: string, maxLength: number): string;
|
|
538
|
+
/**
|
|
539
|
+
* Generate initials from name
|
|
540
|
+
*/
|
|
541
|
+
declare function getInitials(firstName: string, lastName: string): string;
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* Convert hex color to RGB array
|
|
545
|
+
*/
|
|
546
|
+
declare function hexToRgb(hex: string): [number, number, number];
|
|
547
|
+
/**
|
|
548
|
+
* Generate color shades from a base color
|
|
549
|
+
*/
|
|
550
|
+
declare function generateColorShades(baseColor: string): {
|
|
551
|
+
50: string;
|
|
552
|
+
100: string;
|
|
553
|
+
200: string;
|
|
554
|
+
300: string;
|
|
555
|
+
400: string;
|
|
556
|
+
500: string;
|
|
557
|
+
600: string;
|
|
558
|
+
700: string;
|
|
559
|
+
800: string;
|
|
560
|
+
900: string;
|
|
561
|
+
950: string;
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
export { type Address, type ApiResponse, AuthProvider, type AuthTokens, Badge, Button, type Cart, CartItem, type CartItem$1 as CartItemType, CartProvider, CartScreen, type Category, CheckoutScreen, CurrentOrdersScreen, type EcommerceConfig, EcommerceProvider, EmptyState, Footer, Header, Input, type LoginCredentials, LoginScreen, Modal, type Order, OrderCard, OrderCardSkeleton, type OrderItem, OrderStatus, OrdersScreen, type PaginatedResponse, type Product, ProductCard, ProductCardSkeleton, ProductDetailScreen, type ProductFilters, ProfileScreen, type RegisterData, RegisterScreen, ShopScreen, Skeleton, ThemeProvider, type User, authApi, cartApi, formatDate, formatPrice, generateColorShades, getApiConfiguration, getInitials, hexToRgb, initializeApiAdapter, ordersApi, productsApi, truncate, useAuth, useCart, useCategories, useCurrentOrders, useFeaturedProducts, useOrder, useOrders, useProduct, useProducts, useTheme };
|