kupos-ui-components-lib 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.
Files changed (177) hide show
  1. package/README copy.md +125 -0
  2. package/README.md +125 -0
  3. package/build-css.js +28 -0
  4. package/copy-assets.js +45 -0
  5. package/dist/KuposUIComponent.d.ts +84 -0
  6. package/dist/KuposUIComponent.js +49 -0
  7. package/dist/ResponsiveServiceItem.d.ts +3 -0
  8. package/dist/ResponsiveServiceItem.js +10 -0
  9. package/dist/ServiceItemDesktop.d.ts +3 -0
  10. package/dist/ServiceItemDesktop.js +6 -0
  11. package/dist/ServiceItemMobile.d.ts +3 -0
  12. package/dist/ServiceItemMobile.js +5 -0
  13. package/dist/ServiceItemMobileView.d.ts +4 -0
  14. package/dist/ServiceItemMobileView.js +33 -0
  15. package/dist/ServiceItemPb.d.ts +4 -0
  16. package/dist/ServiceItemPb.js +486 -0
  17. package/dist/ServivceItemPbMobile.d.ts +4 -0
  18. package/dist/ServivceItemPbMobile.js +248 -0
  19. package/dist/assets/LottieIcon.d.ts +7 -0
  20. package/dist/assets/LottieIcon.js +8 -0
  21. package/dist/assets/LottieIcon.tsx +26 -0
  22. package/dist/assets/LottiePlayer.d.ts +20 -0
  23. package/dist/assets/LottiePlayer.js +24 -0
  24. package/dist/assets/LottiePlayer.tsx +63 -0
  25. package/dist/assets/PopupComponent.d.ts +12 -0
  26. package/dist/assets/PopupComponent.js +18 -0
  27. package/dist/assets/PopupComponent.tsx +65 -0
  28. package/dist/assets/images/amenities/Icon_More-Amenities.svg +1 -0
  29. package/dist/assets/images/amenities/Restrooms-white.svg +1 -0
  30. package/dist/assets/images/amenities/Restrooms.svg +1 -0
  31. package/dist/assets/images/amenities/air_condtion-white.svg +1 -0
  32. package/dist/assets/images/amenities/air_condtion.svg +1 -0
  33. package/dist/assets/images/amenities/amenity-cortina.png +0 -0
  34. package/dist/assets/images/amenities/baggage-white.svg +1 -0
  35. package/dist/assets/images/amenities/baggage.svg +1 -0
  36. package/dist/assets/images/amenities/charging_plug-white.svg +1 -0
  37. package/dist/assets/images/amenities/charging_plug.svg +17 -0
  38. package/dist/assets/images/amenities/coffee.svg +1 -0
  39. package/dist/assets/images/amenities/cortina_divisoria.svg +19 -0
  40. package/dist/assets/images/amenities/divider-curtain.svg +34 -0
  41. package/dist/assets/images/amenities/food_new_icon-white.svg +1 -0
  42. package/dist/assets/images/amenities/food_new_icon.svg +1 -0
  43. package/dist/assets/images/amenities/frazda_amenity.svg +11 -0
  44. package/dist/assets/images/amenities/handicap-white.svg +1 -0
  45. package/dist/assets/images/amenities/handicap.svg +1 -0
  46. package/dist/assets/images/amenities/icon-app-cortina.svg +19 -0
  47. package/dist/assets/images/amenities/mobile_ticket-white.svg +1 -0
  48. package/dist/assets/images/amenities/mobile_ticket.svg +29 -0
  49. package/dist/assets/images/amenities/movie-white.svg +1 -0
  50. package/dist/assets/images/amenities/movie.svg +1 -0
  51. package/dist/assets/images/amenities/music-white.svg +1 -0
  52. package/dist/assets/images/amenities/music.svg +1 -0
  53. package/dist/assets/images/amenities/snacks_new-white.svg +1 -0
  54. package/dist/assets/images/amenities/snacks_new.svg +27 -0
  55. package/dist/assets/images/amenities/whatsapp-charges-info-icon.svg +5 -0
  56. package/dist/assets/images/amenities/wifi-white.svg +1 -0
  57. package/dist/assets/images/amenities/wifi.svg +1 -0
  58. package/dist/assets/images/anims/service_list/flexible.json +391 -0
  59. package/dist/assets/images/anims/service_list/location.json +589 -0
  60. package/dist/assets/images/index.d.ts +32 -0
  61. package/dist/assets/images/index.js +35 -0
  62. package/dist/assets/images/index.ts +35 -0
  63. package/dist/components/InternationalServicePopupBody.d.ts +3 -0
  64. package/dist/components/InternationalServicePopupBody.js +21 -0
  65. package/dist/components/PaymentSideBar/PaymentSideBarDesktop.d.ts +4 -0
  66. package/dist/components/PaymentSideBar/PaymentSideBarDesktop.js +107 -0
  67. package/dist/components/PaymentSideBar/PaymentSideBarMobile.d.ts +4 -0
  68. package/dist/components/PaymentSideBar/PaymentSideBarMobile.js +115 -0
  69. package/dist/components/PaymentSideBar/ResponsivePaymentSideBar.d.ts +3 -0
  70. package/dist/components/PaymentSideBar/ResponsivePaymentSideBar.js +10 -0
  71. package/dist/components/PaymentSideBar/index.d.ts +5 -0
  72. package/dist/components/PaymentSideBar/index.js +4 -0
  73. package/dist/components/PaymentSideBar/types.d.ts +38 -0
  74. package/dist/components/PaymentSideBar/types.js +1 -0
  75. package/dist/components/ServiceItem/ResponsiveServiceItem.d.ts +3 -0
  76. package/dist/components/ServiceItem/ResponsiveServiceItem.js +10 -0
  77. package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +4 -0
  78. package/dist/components/ServiceItem/ServiceItemDesktop.js +486 -0
  79. package/dist/components/ServiceItem/ServiceItemMobile.d.ts +4 -0
  80. package/dist/components/ServiceItem/ServiceItemMobile.js +248 -0
  81. package/dist/components/ServiceItem/index.d.ts +5 -0
  82. package/dist/components/ServiceItem/index.js +4 -0
  83. package/dist/components/ServiceItem/mobileTypes.d.ts +141 -0
  84. package/dist/components/ServiceItem/mobileTypes.js +1 -0
  85. package/dist/components/ServiceItem/types.d.ts +164 -0
  86. package/dist/components/ServiceItem/types.js +1 -0
  87. package/dist/components/ServiceList/ResponsiveServiceList.d.ts +3 -0
  88. package/dist/components/ServiceList/ResponsiveServiceList.js +10 -0
  89. package/dist/components/ServiceList/ServiceListDesktop.d.ts +4 -0
  90. package/dist/components/ServiceList/ServiceListDesktop.js +164 -0
  91. package/dist/components/ServiceList/ServiceListMobile.d.ts +4 -0
  92. package/dist/components/ServiceList/ServiceListMobile.js +195 -0
  93. package/dist/components/ServiceList/index.d.ts +5 -0
  94. package/dist/components/ServiceList/index.js +4 -0
  95. package/dist/components/ServiceList/types.d.ts +35 -0
  96. package/dist/components/ServiceList/types.js +1 -0
  97. package/dist/example.d.ts +5 -0
  98. package/dist/example.js +240 -0
  99. package/dist/index.d.ts +13 -0
  100. package/dist/index.js +15 -0
  101. package/dist/mobileTypes.d.ts +141 -0
  102. package/dist/mobileTypes.js +1 -0
  103. package/dist/styles.css +803 -0
  104. package/dist/types.d.ts +151 -0
  105. package/dist/types.js +1 -0
  106. package/dist/utils/DateService.d.ts +16 -0
  107. package/dist/utils/DateService.js +160 -0
  108. package/dist/utils/ModalEventManager.d.ts +40 -0
  109. package/dist/utils/ModalEventManager.js +329 -0
  110. package/kupos-service-item-package-1.0.0.tgz +0 -0
  111. package/package.json +43 -0
  112. package/postcss.config.js +6 -0
  113. package/src/KuposUIComponent.tsx +152 -0
  114. package/src/ServiceItemPb.tsx +1048 -0
  115. package/src/assets/LottieIcon.tsx +26 -0
  116. package/src/assets/LottiePlayer.tsx +63 -0
  117. package/src/assets/PopupComponent.tsx +65 -0
  118. package/src/assets/images/amenities/Icon_More-Amenities.svg +1 -0
  119. package/src/assets/images/amenities/Restrooms-white.svg +1 -0
  120. package/src/assets/images/amenities/Restrooms.svg +1 -0
  121. package/src/assets/images/amenities/air_condtion-white.svg +1 -0
  122. package/src/assets/images/amenities/air_condtion.svg +1 -0
  123. package/src/assets/images/amenities/amenity-cortina.png +0 -0
  124. package/src/assets/images/amenities/baggage-white.svg +1 -0
  125. package/src/assets/images/amenities/baggage.svg +1 -0
  126. package/src/assets/images/amenities/charging_plug-white.svg +1 -0
  127. package/src/assets/images/amenities/charging_plug.svg +17 -0
  128. package/src/assets/images/amenities/coffee.svg +1 -0
  129. package/src/assets/images/amenities/cortina_divisoria.svg +19 -0
  130. package/src/assets/images/amenities/divider-curtain.svg +34 -0
  131. package/src/assets/images/amenities/food_new_icon-white.svg +1 -0
  132. package/src/assets/images/amenities/food_new_icon.svg +1 -0
  133. package/src/assets/images/amenities/frazda_amenity.svg +11 -0
  134. package/src/assets/images/amenities/handicap-white.svg +1 -0
  135. package/src/assets/images/amenities/handicap.svg +1 -0
  136. package/src/assets/images/amenities/icon-app-cortina.svg +19 -0
  137. package/src/assets/images/amenities/mobile_ticket-white.svg +1 -0
  138. package/src/assets/images/amenities/mobile_ticket.svg +29 -0
  139. package/src/assets/images/amenities/movie-white.svg +1 -0
  140. package/src/assets/images/amenities/movie.svg +1 -0
  141. package/src/assets/images/amenities/music-white.svg +1 -0
  142. package/src/assets/images/amenities/music.svg +1 -0
  143. package/src/assets/images/amenities/snacks_new-white.svg +1 -0
  144. package/src/assets/images/amenities/snacks_new.svg +27 -0
  145. package/src/assets/images/amenities/whatsapp-charges-info-icon.svg +5 -0
  146. package/src/assets/images/amenities/wifi-white.svg +1 -0
  147. package/src/assets/images/amenities/wifi.svg +1 -0
  148. package/src/assets/images/anims/service_list/flexible.json +391 -0
  149. package/src/assets/images/anims/service_list/location.json +589 -0
  150. package/src/assets/images/index.ts +35 -0
  151. package/src/components/InternationalServicePopupBody.tsx +40 -0
  152. package/src/components/PaymentSideBar/PaymentSideBarDesktop.tsx +183 -0
  153. package/src/components/PaymentSideBar/PaymentSideBarMobile.tsx +197 -0
  154. package/src/components/PaymentSideBar/ResponsivePaymentSideBar.tsx +14 -0
  155. package/src/components/PaymentSideBar/index.ts +5 -0
  156. package/src/components/PaymentSideBar/types.ts +44 -0
  157. package/src/components/ServiceItem/ResponsiveServiceItem.tsx +14 -0
  158. package/src/components/ServiceItem/ServiceItemDesktop.tsx +1048 -0
  159. package/src/components/ServiceItem/ServiceItemMobile.tsx +544 -0
  160. package/src/components/ServiceItem/index.ts +5 -0
  161. package/src/components/ServiceItem/mobileTypes.ts +159 -0
  162. package/src/components/ServiceItem/types.ts +163 -0
  163. package/src/components/ServiceList/ResponsiveServiceList.tsx +14 -0
  164. package/src/components/ServiceList/ServiceListDesktop.tsx +353 -0
  165. package/src/components/ServiceList/ServiceListMobile.tsx +400 -0
  166. package/src/components/ServiceList/index.ts +5 -0
  167. package/src/components/ServiceList/types.ts +43 -0
  168. package/src/dummyData.json +73 -0
  169. package/src/example.tsx +348 -0
  170. package/src/index.ts +37 -0
  171. package/src/lottie-player.d.ts +0 -0
  172. package/src/styles.css +77 -0
  173. package/src/types.ts +150 -0
  174. package/src/utils/DateService.ts +197 -0
  175. package/src/utils/ModalEventManager.ts +405 -0
  176. package/tailwind.config.js +39 -0
  177. package/tsconfig.json +18 -0
@@ -0,0 +1,183 @@
1
+ import React from "react";
2
+ import { PaymentSideBarProps } from "./types";
3
+
4
+ const PaymentSideBarDesktop: React.FC<PaymentSideBarProps> = (props) => {
5
+ const {
6
+ amount = 0,
7
+ currency = "$",
8
+ paymentMethods = [],
9
+ customerDetails,
10
+ onPaymentComplete,
11
+ onPaymentError,
12
+ colors = {},
13
+ showSummary = true,
14
+ orderDetails,
15
+ } = props;
16
+
17
+ const handlePayment = () => {
18
+ try {
19
+ // Payment processing logic would go here
20
+ onPaymentComplete && onPaymentComplete("payment-123");
21
+ } catch (error) {
22
+ onPaymentError && onPaymentError(error);
23
+ }
24
+ };
25
+
26
+ return (
27
+ <div
28
+ className="payment-sidebar-desktop"
29
+ style={{
30
+ backgroundColor: colors.backgroundColor || "#ffffff",
31
+ color: colors.textColor || "#333333",
32
+ padding: "20px",
33
+ borderRadius: "8px",
34
+ boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
35
+ maxWidth: "400px",
36
+ }}
37
+ >
38
+ <h2 style={{ marginBottom: "20px", color: colors.primaryColor || "#333" }}>
39
+ Payment Details
40
+ </h2>
41
+
42
+ {showSummary && orderDetails && (
43
+ <div className="order-summary" style={{ marginBottom: "20px" }}>
44
+ <h3 style={{ marginBottom: "10px" }}>Order Summary</h3>
45
+ {orderDetails.items.map((item, index) => (
46
+ <div
47
+ key={index}
48
+ style={{
49
+ display: "flex",
50
+ justifyContent: "space-between",
51
+ marginBottom: "8px",
52
+ }}
53
+ >
54
+ <span>
55
+ {item.name} x {item.quantity}
56
+ </span>
57
+ <span>
58
+ {currency}
59
+ {item.price.toFixed(2)}
60
+ </span>
61
+ </div>
62
+ ))}
63
+ <div
64
+ style={{
65
+ borderTop: "1px solid #eee",
66
+ paddingTop: "10px",
67
+ marginTop: "10px",
68
+ }}
69
+ >
70
+ <div
71
+ style={{
72
+ display: "flex",
73
+ justifyContent: "space-between",
74
+ marginBottom: "5px",
75
+ }}
76
+ >
77
+ <span>Subtotal</span>
78
+ <span>
79
+ {currency}
80
+ {orderDetails.subtotal.toFixed(2)}
81
+ </span>
82
+ </div>
83
+ {orderDetails.tax !== undefined && (
84
+ <div
85
+ style={{
86
+ display: "flex",
87
+ justifyContent: "space-between",
88
+ marginBottom: "5px",
89
+ }}
90
+ >
91
+ <span>Tax</span>
92
+ <span>
93
+ {currency}
94
+ {orderDetails.tax.toFixed(2)}
95
+ </span>
96
+ </div>
97
+ )}
98
+ {orderDetails.discount !== undefined && (
99
+ <div
100
+ style={{
101
+ display: "flex",
102
+ justifyContent: "space-between",
103
+ marginBottom: "5px",
104
+ }}
105
+ >
106
+ <span>Discount</span>
107
+ <span>
108
+ -{currency}
109
+ {orderDetails.discount.toFixed(2)}
110
+ </span>
111
+ </div>
112
+ )}
113
+ <div
114
+ style={{
115
+ display: "flex",
116
+ justifyContent: "space-between",
117
+ fontWeight: "bold",
118
+ marginTop: "10px",
119
+ }}
120
+ >
121
+ <span>Total</span>
122
+ <span>
123
+ {currency}
124
+ {orderDetails.total.toFixed(2)}
125
+ </span>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ )}
130
+
131
+ <div className="payment-methods" style={{ marginBottom: "20px" }}>
132
+ <h3 style={{ marginBottom: "10px" }}>Payment Methods</h3>
133
+ {paymentMethods.length > 0 ? (
134
+ paymentMethods.map((method) => (
135
+ <div
136
+ key={method.id}
137
+ style={{
138
+ display: "flex",
139
+ alignItems: "center",
140
+ padding: "10px",
141
+ marginBottom: "8px",
142
+ border: `1px solid ${method.isSelected ? colors.primaryColor || "#007bff" : "#ddd"}`,
143
+ borderRadius: "4px",
144
+ cursor: "pointer",
145
+ backgroundColor: method.isSelected ? "#f8f9fa" : "transparent",
146
+ }}
147
+ >
148
+ {method.icon && (
149
+ <img
150
+ src={method.icon}
151
+ alt={method.name}
152
+ style={{ width: "24px", height: "24px", marginRight: "10px" }}
153
+ />
154
+ )}
155
+ <span>{method.name}</span>
156
+ </div>
157
+ ))
158
+ ) : (
159
+ <p>No payment methods available</p>
160
+ )}
161
+ </div>
162
+
163
+ <button
164
+ onClick={handlePayment}
165
+ style={{
166
+ backgroundColor: colors.buttonColor || "#007bff",
167
+ color: colors.buttonTextColor || "#ffffff",
168
+ padding: "12px 20px",
169
+ border: "none",
170
+ borderRadius: "4px",
171
+ fontSize: "16px",
172
+ cursor: "pointer",
173
+ width: "100%",
174
+ }}
175
+ >
176
+ Pay {currency}
177
+ {amount.toFixed(2)}
178
+ </button>
179
+ </div>
180
+ );
181
+ };
182
+
183
+ export default PaymentSideBarDesktop;
@@ -0,0 +1,197 @@
1
+ import React from "react";
2
+ import { PaymentSideBarProps } from "./types";
3
+
4
+ const PaymentSideBarMobile: React.FC<PaymentSideBarProps> = (props) => {
5
+ const {
6
+ amount = 0,
7
+ currency = "$",
8
+ paymentMethods = [],
9
+ customerDetails,
10
+ onPaymentComplete,
11
+ onPaymentError,
12
+ colors = {},
13
+ showSummary = true,
14
+ orderDetails,
15
+ } = props;
16
+
17
+ const handlePayment = () => {
18
+ try {
19
+ // Payment processing logic would go here
20
+ onPaymentComplete && onPaymentComplete("payment-123");
21
+ } catch (error) {
22
+ onPaymentError && onPaymentError(error);
23
+ }
24
+ };
25
+
26
+ return (
27
+ <div
28
+ className="payment-sidebar-mobile"
29
+ style={{
30
+ backgroundColor: colors.backgroundColor || "#ffffff",
31
+ color: colors.textColor || "#333333",
32
+ padding: "15px",
33
+ borderRadius: "8px",
34
+ boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
35
+ width: "100%",
36
+ maxWidth: "100%",
37
+ }}
38
+ >
39
+ <h2
40
+ style={{
41
+ marginBottom: "15px",
42
+ color: colors.primaryColor || "#333",
43
+ fontSize: "18px"
44
+ }}
45
+ >
46
+ Payment Details
47
+ </h2>
48
+
49
+ {showSummary && orderDetails && (
50
+ <div className="order-summary" style={{ marginBottom: "15px" }}>
51
+ <h3 style={{ marginBottom: "8px", fontSize: "16px" }}>Order Summary</h3>
52
+ <div style={{ maxHeight: "150px", overflowY: "auto" }}>
53
+ {orderDetails.items.map((item, index) => (
54
+ <div
55
+ key={index}
56
+ style={{
57
+ display: "flex",
58
+ justifyContent: "space-between",
59
+ marginBottom: "6px",
60
+ fontSize: "14px"
61
+ }}
62
+ >
63
+ <span>
64
+ {item.name} x {item.quantity}
65
+ </span>
66
+ <span>
67
+ {currency}
68
+ {item.price.toFixed(2)}
69
+ </span>
70
+ </div>
71
+ ))}
72
+ </div>
73
+ <div
74
+ style={{
75
+ borderTop: "1px solid #eee",
76
+ paddingTop: "8px",
77
+ marginTop: "8px",
78
+ fontSize: "14px"
79
+ }}
80
+ >
81
+ <div
82
+ style={{
83
+ display: "flex",
84
+ justifyContent: "space-between",
85
+ marginBottom: "4px",
86
+ }}
87
+ >
88
+ <span>Subtotal</span>
89
+ <span>
90
+ {currency}
91
+ {orderDetails.subtotal.toFixed(2)}
92
+ </span>
93
+ </div>
94
+ {orderDetails.tax !== undefined && (
95
+ <div
96
+ style={{
97
+ display: "flex",
98
+ justifyContent: "space-between",
99
+ marginBottom: "4px",
100
+ }}
101
+ >
102
+ <span>Tax</span>
103
+ <span>
104
+ {currency}
105
+ {orderDetails.tax.toFixed(2)}
106
+ </span>
107
+ </div>
108
+ )}
109
+ {orderDetails.discount !== undefined && (
110
+ <div
111
+ style={{
112
+ display: "flex",
113
+ justifyContent: "space-between",
114
+ marginBottom: "4px",
115
+ }}
116
+ >
117
+ <span>Discount</span>
118
+ <span>
119
+ -{currency}
120
+ {orderDetails.discount.toFixed(2)}
121
+ </span>
122
+ </div>
123
+ )}
124
+ <div
125
+ style={{
126
+ display: "flex",
127
+ justifyContent: "space-between",
128
+ fontWeight: "bold",
129
+ marginTop: "8px",
130
+ fontSize: "16px"
131
+ }}
132
+ >
133
+ <span>Total</span>
134
+ <span>
135
+ {currency}
136
+ {orderDetails.total.toFixed(2)}
137
+ </span>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ )}
142
+
143
+ <div className="payment-methods" style={{ marginBottom: "15px" }}>
144
+ <h3 style={{ marginBottom: "8px", fontSize: "16px" }}>Payment Methods</h3>
145
+ <div style={{ maxHeight: "150px", overflowY: "auto" }}>
146
+ {paymentMethods.length > 0 ? (
147
+ paymentMethods.map((method) => (
148
+ <div
149
+ key={method.id}
150
+ style={{
151
+ display: "flex",
152
+ alignItems: "center",
153
+ padding: "8px",
154
+ marginBottom: "6px",
155
+ border: `1px solid ${method.isSelected ? colors.primaryColor || "#007bff" : "#ddd"}`,
156
+ borderRadius: "4px",
157
+ cursor: "pointer",
158
+ backgroundColor: method.isSelected ? "#f8f9fa" : "transparent",
159
+ }}
160
+ >
161
+ {method.icon && (
162
+ <img
163
+ src={method.icon}
164
+ alt={method.name}
165
+ style={{ width: "20px", height: "20px", marginRight: "8px" }}
166
+ />
167
+ )}
168
+ <span style={{ fontSize: "14px" }}>{method.name}</span>
169
+ </div>
170
+ ))
171
+ ) : (
172
+ <p style={{ fontSize: "14px" }}>No payment methods available</p>
173
+ )}
174
+ </div>
175
+ </div>
176
+
177
+ <button
178
+ onClick={handlePayment}
179
+ style={{
180
+ backgroundColor: colors.buttonColor || "#007bff",
181
+ color: colors.buttonTextColor || "#ffffff",
182
+ padding: "10px 16px",
183
+ border: "none",
184
+ borderRadius: "4px",
185
+ fontSize: "16px",
186
+ cursor: "pointer",
187
+ width: "100%",
188
+ }}
189
+ >
190
+ Pay {currency}
191
+ {amount.toFixed(2)}
192
+ </button>
193
+ </div>
194
+ );
195
+ };
196
+
197
+ export default PaymentSideBarMobile;
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { PaymentSideBarProps } from "./types";
3
+ import PaymentSideBarDesktop from "./PaymentSideBarDesktop";
4
+ import PaymentSideBarMobile from "./PaymentSideBarMobile";
5
+
6
+ export default function ResponsivePaymentSideBar(props: PaymentSideBarProps) {
7
+ const { variant } = props;
8
+
9
+ if (variant === "mobile") {
10
+ return <PaymentSideBarMobile {...props} />;
11
+ }
12
+
13
+ return <PaymentSideBarDesktop {...props} />;
14
+ }
@@ -0,0 +1,5 @@
1
+ import PaymentSideBarDesktop from "./PaymentSideBarDesktop";
2
+ import PaymentSideBarMobile from "./PaymentSideBarMobile";
3
+ import ResponsivePaymentSideBar from "./ResponsivePaymentSideBar";
4
+ export { PaymentSideBarDesktop, PaymentSideBarMobile, ResponsivePaymentSideBar };
5
+ export type { PaymentSideBarProps } from "./types";
@@ -0,0 +1,44 @@
1
+ export interface PaymentSideBarProps {
2
+ variant?: "mobile" | "desktop";
3
+
4
+ // Payment-specific props
5
+ amount?: number;
6
+ currency?: string;
7
+ paymentMethods?: Array<{
8
+ id: string;
9
+ name: string;
10
+ icon?: string;
11
+ isSelected?: boolean;
12
+ }>;
13
+ customerDetails?: {
14
+ name?: string;
15
+ email?: string;
16
+ phone?: string;
17
+ };
18
+ onPaymentComplete?: (paymentId: string) => void;
19
+ onPaymentError?: (error: any) => void;
20
+
21
+ // Styling props
22
+ colors?: {
23
+ primaryColor?: string;
24
+ secondaryColor?: string;
25
+ backgroundColor?: string;
26
+ textColor?: string;
27
+ buttonColor?: string;
28
+ buttonTextColor?: string;
29
+ };
30
+
31
+ // Additional props
32
+ showSummary?: boolean;
33
+ orderDetails?: {
34
+ items: Array<{
35
+ name: string;
36
+ quantity: number;
37
+ price: number;
38
+ }>;
39
+ subtotal: number;
40
+ tax?: number;
41
+ discount?: number;
42
+ total: number;
43
+ };
44
+ }
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { ServiceItemProps } from "./types";
3
+ import ServiceItemDesktop from "../ServiceItem/ServiceItemDesktop";
4
+ import ServiceItemMobile from "../ServiceItem/ServiceItemMobile";
5
+
6
+ export default function ResponsiveServiceItem(props: ServiceItemProps) {
7
+ const { variant } = props;
8
+
9
+ if (variant === "mobile") {
10
+ return <ServiceItemMobile {...props} />;
11
+ }
12
+
13
+ return <ServiceItemDesktop {...props} />;
14
+ }