@instockng/storefront-ui 1.0.55 → 1.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ProductAddOns.d.ts +21 -0
- package/dist/components/ProductAddOns.d.ts.map +1 -0
- package/dist/components/ui/switch.d.ts +8 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +109 -103
- package/dist/index10.mjs +147 -91
- package/dist/index100.mjs +53 -2
- package/dist/index101.mjs +69 -28
- package/dist/index102.mjs +2 -18
- package/dist/index103.mjs +26 -213
- package/dist/index104.mjs +13 -175
- package/dist/index105.mjs +210 -17
- package/dist/index106.mjs +174 -17
- package/dist/index107.mjs +14 -25
- package/dist/index108.mjs +17 -150
- package/dist/index109.mjs +26 -13
- package/dist/index11.mjs +95 -171
- package/dist/index110.mjs +149 -24
- package/dist/index111.mjs +13 -77
- package/dist/index112.mjs +20 -27
- package/dist/index113.mjs +76 -137
- package/dist/index114.mjs +33 -50
- package/dist/index115.mjs +141 -19
- package/dist/index116.mjs +50 -22
- package/dist/index117.mjs +14 -14
- package/dist/index118.mjs +20 -18
- package/dist/index119.mjs +16 -14
- package/dist/index12.mjs +90 -90
- package/dist/index120.mjs +17 -14
- package/dist/index121.mjs +12 -12
- package/dist/index122.mjs +15 -58
- package/dist/index123.mjs +14 -11
- package/dist/index124.mjs +56 -30
- package/dist/index125.mjs +9 -15
- package/dist/index126.mjs +31 -26
- package/dist/index127.mjs +13 -16
- package/dist/index128.mjs +26 -11
- package/dist/index129.mjs +18 -12
- package/dist/index13.mjs +162 -717
- package/dist/index130.mjs +12 -40
- package/dist/index131.mjs +14 -16
- package/dist/index132.mjs +42 -263
- package/dist/index133.mjs +15 -62
- package/dist/index134.mjs +267 -7
- package/dist/index135.mjs +70 -2
- package/dist/index136.mjs +8 -2
- package/dist/index137.mjs +2 -33
- package/dist/index138.mjs +2 -2
- package/dist/index139.mjs +33 -2
- package/dist/index14.mjs +94 -56
- package/dist/index140.mjs +2 -2
- package/dist/index141.mjs +21 -2
- package/dist/index142.mjs +56 -2
- package/dist/index143.mjs +28 -17
- package/dist/index144.mjs +6 -31
- package/dist/index145.mjs +50 -36
- package/dist/index146.mjs +6 -18
- package/dist/index147.mjs +11 -17
- package/dist/index148.mjs +7 -2
- package/dist/index149.mjs +28 -20
- package/dist/index15.mjs +734 -62
- package/dist/index150.mjs +2 -46
- package/dist/index151.mjs +70 -2
- package/dist/index152.mjs +164 -27
- package/dist/index153.mjs +2 -18
- package/dist/index154.mjs +2 -2
- package/dist/index155.mjs +2 -2
- package/dist/index156.mjs +18 -2
- package/dist/index157.mjs +32 -2
- package/dist/index158.mjs +28 -62
- package/dist/index159.mjs +18 -2
- package/dist/index16.mjs +50 -14
- package/dist/index160.mjs +13 -48
- package/dist/index161.mjs +2 -2
- package/dist/index162.mjs +14 -30
- package/dist/index163.mjs +39 -145
- package/dist/index164.mjs +2 -2
- package/dist/index165.mjs +30 -2
- package/dist/index166.mjs +11 -12
- package/dist/index167.mjs +2 -2
- package/dist/index168.mjs +2 -2
- package/dist/index169.mjs +2 -26
- package/dist/index17.mjs +62 -109
- package/dist/index171.mjs +72 -2
- package/dist/index172.mjs +2 -24
- package/dist/index173.mjs +48 -18
- package/dist/index174.mjs +2 -2
- package/dist/index175.mjs +36 -2
- package/dist/index176.mjs +152 -2
- package/dist/index177.mjs +2 -23
- package/dist/index178.mjs +2 -2
- package/dist/index179.mjs +11 -15
- package/dist/index18.mjs +23 -41
- package/dist/index180.mjs +2 -2
- package/dist/index181.mjs +2 -2
- package/dist/index182.mjs +26 -2
- package/dist/index183.mjs +2 -23
- package/dist/index184.mjs +2 -2
- package/dist/index185.mjs +18 -17
- package/dist/index186.mjs +23 -2
- package/dist/index187.mjs +2 -2
- package/dist/index188.mjs +2 -2
- package/dist/index189.mjs +2 -2
- package/dist/index19.mjs +109 -42
- package/dist/index190.mjs +23 -2
- package/dist/index191.mjs +2 -2
- package/dist/index192.mjs +23 -2
- package/dist/index193.mjs +2 -2
- package/dist/index194.mjs +2 -127
- package/dist/index195.mjs +2 -2
- package/dist/index196.mjs +20 -71
- package/dist/index197.mjs +2 -74
- package/dist/index198.mjs +22 -20
- package/dist/index199.mjs +2 -56
- package/dist/index2.mjs +2 -2
- package/dist/index20.mjs +42 -65
- package/dist/index200.mjs +2 -29
- package/dist/index201.mjs +2 -7
- package/dist/index202.mjs +2 -52
- package/dist/index203.mjs +2 -6
- package/dist/index204.mjs +2 -12
- package/dist/index205.mjs +2 -7
- package/dist/index206.mjs +2 -28
- package/dist/index207.mjs +127 -2
- package/dist/index208.mjs +2 -70
- package/dist/index209.mjs +72 -165
- package/dist/index21.mjs +41 -31
- package/dist/index210.mjs +74 -2
- package/dist/index211.mjs +2 -2
- package/dist/index212.mjs +2 -2
- package/dist/index213.mjs +2 -2
- package/dist/index214.mjs +2 -2
- package/dist/index215.mjs +2 -2
- package/dist/index216.mjs +2 -108
- package/dist/index217.mjs +2 -2
- package/dist/index219.mjs +2 -37
- package/dist/index22.mjs +64 -6
- package/dist/index220.mjs +108 -2
- package/dist/index221.mjs +2 -244
- package/dist/index223.mjs +32 -28
- package/dist/index224.mjs +2 -65
- package/dist/index225.mjs +2 -25
- package/dist/index226.mjs +244 -2
- package/dist/index228.mjs +33 -2
- package/dist/index229.mjs +65 -2
- package/dist/index23.mjs +27 -17
- package/dist/index230.mjs +25 -2
- package/dist/index232.mjs +2 -2
- package/dist/index233.mjs +2 -2
- package/dist/index235.mjs +2 -2
- package/dist/index237.mjs +2 -2
- package/dist/index238.mjs +2 -4
- package/dist/index239.mjs +2 -2
- package/dist/index24.mjs +6 -30
- package/dist/index240.mjs +4 -2
- package/dist/index241.mjs +2 -31
- package/dist/index242.mjs +2 -11
- package/dist/index243.mjs +30 -3
- package/dist/index244.mjs +10 -3
- package/dist/index245.mjs +4 -13
- package/dist/index246.mjs +4 -7
- package/dist/index247.mjs +13 -12
- package/dist/index248.mjs +7 -5
- package/dist/index249.mjs +12 -33
- package/dist/index25.mjs +20 -18
- package/dist/index250.mjs +5 -31
- package/dist/index251.mjs +32 -27
- package/dist/index252.mjs +28 -58
- package/dist/index253.mjs +28 -2
- package/dist/index254.mjs +61 -2
- package/dist/index255.mjs +2 -18
- package/dist/index256.mjs +2 -47
- package/dist/index257.mjs +18 -2
- package/dist/index258.mjs +47 -2
- package/dist/index26.mjs +34 -103
- package/dist/index260.mjs +2 -2
- package/dist/index261.mjs +2 -91
- package/dist/index262.mjs +2 -2
- package/dist/index263.mjs +91 -3
- package/dist/index264.mjs +2 -2
- package/dist/index265.mjs +3 -2
- package/dist/index266.mjs +2 -17
- package/dist/index267.mjs +2 -13
- package/dist/index268.mjs +17 -6
- package/dist/index269.mjs +13 -30
- package/dist/index27.mjs +20 -21
- package/dist/index270.mjs +6 -2
- package/dist/index271.mjs +30 -2
- package/dist/index272.mjs +2 -2
- package/dist/index273.mjs +5 -0
- package/dist/index274.mjs +5 -0
- package/dist/index28.mjs +101 -8
- package/dist/index29.mjs +27 -7
- package/dist/index3.mjs +5 -5
- package/dist/index30.mjs +11 -103
- package/dist/index31.mjs +11 -22
- package/dist/index32.mjs +105 -66
- package/dist/index33.mjs +23 -105
- package/dist/index34.mjs +68 -28
- package/dist/index35.mjs +100 -14
- package/dist/index36.mjs +26 -9
- package/dist/index37.mjs +25 -9
- package/dist/index38.mjs +10 -122
- package/dist/index39.mjs +9 -387
- package/dist/index4.mjs +1 -1
- package/dist/index40.mjs +116 -18
- package/dist/index41.mjs +385 -99
- package/dist/index42.mjs +24 -6
- package/dist/index43.mjs +30 -1431
- package/dist/index44.mjs +6 -69
- package/dist/index45.mjs +1433 -2
- package/dist/index46.mjs +68 -58
- package/dist/index47.mjs +2 -51
- package/dist/index48.mjs +60 -33
- package/dist/index49.mjs +49 -13
- package/dist/index5.mjs +1 -1
- package/dist/index50.mjs +32 -2262
- package/dist/index51.mjs +15 -36
- package/dist/index52.mjs +2261 -42
- package/dist/index53.mjs +36 -99
- package/dist/index54.mjs +43 -112
- package/dist/index55.mjs +99 -81
- package/dist/index56.mjs +93 -57
- package/dist/index57.mjs +54 -68
- package/dist/index58.mjs +82 -56
- package/dist/index59.mjs +74 -58
- package/dist/index6.mjs +1 -1
- package/dist/index60.mjs +77 -15
- package/dist/index61.mjs +74 -15
- package/dist/index62.mjs +15 -59
- package/dist/index63.mjs +14 -119
- package/dist/index64.mjs +46 -112
- package/dist/index65.mjs +124 -23
- package/dist/index66.mjs +129 -2
- package/dist/index67.mjs +21 -150
- package/dist/index68.mjs +149 -19
- package/dist/index69.mjs +2 -75
- package/dist/index7.mjs +6 -6
- package/dist/index70.mjs +23 -15
- package/dist/index71.mjs +68 -56
- package/dist/index72.mjs +15 -5
- package/dist/index73.mjs +63 -2
- package/dist/index74.mjs +4 -5
- package/dist/index75.mjs +2 -1134
- package/dist/index76.mjs +5 -19
- package/dist/index77.mjs +1119 -40
- package/dist/index78.mjs +14 -27
- package/dist/index79.mjs +55 -2
- package/dist/index8.mjs +4 -4
- package/dist/index80.mjs +33 -2
- package/dist/index81.mjs +2 -34
- package/dist/index82.mjs +31 -40
- package/dist/index83.mjs +38 -230
- package/dist/index84.mjs +2 -6
- package/dist/index85.mjs +228 -127
- package/dist/index86.mjs +4 -66
- package/dist/index87.mjs +124 -77
- package/dist/index88.mjs +65 -26
- package/dist/index89.mjs +84 -6
- package/dist/index9.mjs +3 -3
- package/dist/index90.mjs +26 -72
- package/dist/index91.mjs +8 -3
- package/dist/index92.mjs +75 -2
- package/dist/index93.mjs +3 -82
- package/dist/index94.mjs +2 -54
- package/dist/index95.mjs +82 -5
- package/dist/index96.mjs +53 -4
- package/dist/index97.mjs +5 -178
- package/dist/index98.mjs +5 -53
- package/dist/index99.mjs +178 -68
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +8 -9
- package/src/components/Checkout.stories.tsx +9 -4
- package/src/components/ProductAddOns.stories.tsx +109 -0
- package/src/components/ProductAddOns.tsx +242 -0
- package/src/components/ShoppingCart.stories.tsx +4 -1
- package/src/components/ui/switch.tsx +37 -0
- package/src/index.ts +6 -0
- package/src/lib/utils.ts +3 -1
- package/src/test-utils/MockCartProvider.tsx +14 -7
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cn } from '../../lib/utils';
|
|
5
|
+
|
|
6
|
+
interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
7
|
+
checked?: boolean;
|
|
8
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(
|
|
12
|
+
({ className, checked, onCheckedChange, disabled, ...props }, ref) => {
|
|
13
|
+
return (
|
|
14
|
+
<label
|
|
15
|
+
className={cn(
|
|
16
|
+
'inline-flex cursor-pointer items-center',
|
|
17
|
+
disabled && 'cursor-not-allowed opacity-50',
|
|
18
|
+
className
|
|
19
|
+
)}
|
|
20
|
+
>
|
|
21
|
+
<input
|
|
22
|
+
type="checkbox"
|
|
23
|
+
className="peer sr-only"
|
|
24
|
+
ref={ref}
|
|
25
|
+
checked={checked}
|
|
26
|
+
onChange={(e) => onCheckedChange?.(e.target.checked)}
|
|
27
|
+
disabled={disabled}
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
30
|
+
<div className="peer h-6 w-11 rounded-full bg-[#ccc] after:absolute after:start-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:bg-white after:transition-all after:content-[''] peer-checked:bg-accent-600 peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-300 dark:border-accent-600 dark:bg-[#ccc] dark:peer-focus:ring-blue-800 rtl:peer-checked:after:-translate-x-full"></div>
|
|
31
|
+
</label>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
Switch.displayName = 'Switch';
|
|
36
|
+
|
|
37
|
+
export { Switch };
|
package/src/index.ts
CHANGED
|
@@ -31,6 +31,12 @@ export type { ProductCardProps, ProductCardProduct } from './components/ProductC
|
|
|
31
31
|
export { ProductGrid } from './components/ProductGrid';
|
|
32
32
|
export type { ProductGridProps } from './components/ProductGrid';
|
|
33
33
|
|
|
34
|
+
export { ProductAddOns } from './components/ProductAddOns';
|
|
35
|
+
export type { ProductAddOnsProps, AddOnProduct } from './components/ProductAddOns';
|
|
36
|
+
|
|
37
|
+
export { RecommendedProducts } from './components/RecommendedProducts';
|
|
38
|
+
export type { RecommendedProductsProps } from './components/RecommendedProducts';
|
|
39
|
+
|
|
34
40
|
export { CartItem } from './components/CartItem';
|
|
35
41
|
export type { CartItemProps } from './components/CartItem';
|
|
36
42
|
|
package/src/lib/utils.ts
CHANGED
|
@@ -6,9 +6,11 @@ export function cn(...inputs: ClassValue[]) {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export function formatCurrency(amount: number): string {
|
|
9
|
-
return new Intl.NumberFormat('en-
|
|
9
|
+
return new Intl.NumberFormat('en-NG', {
|
|
10
10
|
style: 'currency',
|
|
11
11
|
currency: 'NGN',
|
|
12
|
+
minimumFractionDigits: 0,
|
|
13
|
+
maximumFractionDigits: 0,
|
|
12
14
|
}).format(amount)
|
|
13
15
|
}
|
|
14
16
|
|
|
@@ -24,6 +24,9 @@ const mockCart: Cart = {
|
|
|
24
24
|
siteUrl: 'https://demo-store.com',
|
|
25
25
|
domain: 'f',
|
|
26
26
|
metaPixelId: null as any,
|
|
27
|
+
tiktokPixelId: null as any,
|
|
28
|
+
paystackPublicKey: null as any,
|
|
29
|
+
paystackSecretKey: null as any,
|
|
27
30
|
createdAt: new Date().toISOString(),
|
|
28
31
|
updatedAt: new Date().toISOString(),
|
|
29
32
|
deletedAt: null as any,
|
|
@@ -53,6 +56,7 @@ const mockCart: Cart = {
|
|
|
53
56
|
createdAt: new Date().toISOString(),
|
|
54
57
|
updatedAt: new Date().toISOString(),
|
|
55
58
|
deletedAt: null as any,
|
|
59
|
+
compareAtPrice: "0",
|
|
56
60
|
product: {
|
|
57
61
|
id: 'product-1',
|
|
58
62
|
name: 'Premium Cotton T-Shirt',
|
|
@@ -64,9 +68,9 @@ const mockCart: Cart = {
|
|
|
64
68
|
createdAt: new Date().toISOString(),
|
|
65
69
|
updatedAt: new Date().toISOString(),
|
|
66
70
|
deletedAt: null as any,
|
|
67
|
-
quantityDiscounts:
|
|
71
|
+
quantityDiscounts: [] as any,
|
|
68
72
|
},
|
|
69
|
-
},
|
|
73
|
+
} as any,
|
|
70
74
|
quantity: 2,
|
|
71
75
|
basePrice: 29.99,
|
|
72
76
|
discountPercent: 0,
|
|
@@ -87,7 +91,8 @@ const mockCart: Cart = {
|
|
|
87
91
|
isActive: true,
|
|
88
92
|
createdAt: new Date().toISOString(),
|
|
89
93
|
updatedAt: new Date().toISOString(),
|
|
90
|
-
deletedAt: null,
|
|
94
|
+
deletedAt: null as any,
|
|
95
|
+
compareAtPrice: "0",
|
|
91
96
|
product: {
|
|
92
97
|
id: 'product-2',
|
|
93
98
|
name: 'Slim Fit Jeans',
|
|
@@ -98,10 +103,10 @@ const mockCart: Cart = {
|
|
|
98
103
|
thumbnailUrl: 'https://images.unsplash.com/photo-1542272604-787c3835535d?w=400',
|
|
99
104
|
createdAt: new Date().toISOString(),
|
|
100
105
|
updatedAt: new Date().toISOString(),
|
|
101
|
-
deletedAt: null,
|
|
102
|
-
quantityDiscounts:
|
|
106
|
+
deletedAt: null as any,
|
|
107
|
+
quantityDiscounts: [] as any,
|
|
103
108
|
},
|
|
104
|
-
},
|
|
109
|
+
} as any,
|
|
105
110
|
quantity: 1,
|
|
106
111
|
basePrice: 34.99,
|
|
107
112
|
discountPercent: 0,
|
|
@@ -191,7 +196,7 @@ export function MockCartProvider({
|
|
|
191
196
|
isSuccess: false,
|
|
192
197
|
data: undefined,
|
|
193
198
|
error: null,
|
|
194
|
-
reset: () => {},
|
|
199
|
+
reset: () => { },
|
|
195
200
|
status: 'idle' as const,
|
|
196
201
|
failureCount: 0,
|
|
197
202
|
failureReason: null,
|
|
@@ -244,6 +249,8 @@ export function MockCartProvider({
|
|
|
244
249
|
brandId: cart.brand.id,
|
|
245
250
|
deliveryCost: 1500,
|
|
246
251
|
freeShippingThreshold: null as any,
|
|
252
|
+
noteTitle: null as any,
|
|
253
|
+
noteContent: null as any,
|
|
247
254
|
allowCOD: true,
|
|
248
255
|
allowOnline: true,
|
|
249
256
|
waybillOnly: false,
|