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.
- package/README copy.md +125 -0
- package/README.md +125 -0
- package/build-css.js +28 -0
- package/copy-assets.js +45 -0
- package/dist/KuposUIComponent.d.ts +84 -0
- package/dist/KuposUIComponent.js +49 -0
- package/dist/ResponsiveServiceItem.d.ts +3 -0
- package/dist/ResponsiveServiceItem.js +10 -0
- package/dist/ServiceItemDesktop.d.ts +3 -0
- package/dist/ServiceItemDesktop.js +6 -0
- package/dist/ServiceItemMobile.d.ts +3 -0
- package/dist/ServiceItemMobile.js +5 -0
- package/dist/ServiceItemMobileView.d.ts +4 -0
- package/dist/ServiceItemMobileView.js +33 -0
- package/dist/ServiceItemPb.d.ts +4 -0
- package/dist/ServiceItemPb.js +486 -0
- package/dist/ServivceItemPbMobile.d.ts +4 -0
- package/dist/ServivceItemPbMobile.js +248 -0
- package/dist/assets/LottieIcon.d.ts +7 -0
- package/dist/assets/LottieIcon.js +8 -0
- package/dist/assets/LottieIcon.tsx +26 -0
- package/dist/assets/LottiePlayer.d.ts +20 -0
- package/dist/assets/LottiePlayer.js +24 -0
- package/dist/assets/LottiePlayer.tsx +63 -0
- package/dist/assets/PopupComponent.d.ts +12 -0
- package/dist/assets/PopupComponent.js +18 -0
- package/dist/assets/PopupComponent.tsx +65 -0
- package/dist/assets/images/amenities/Icon_More-Amenities.svg +1 -0
- package/dist/assets/images/amenities/Restrooms-white.svg +1 -0
- package/dist/assets/images/amenities/Restrooms.svg +1 -0
- package/dist/assets/images/amenities/air_condtion-white.svg +1 -0
- package/dist/assets/images/amenities/air_condtion.svg +1 -0
- package/dist/assets/images/amenities/amenity-cortina.png +0 -0
- package/dist/assets/images/amenities/baggage-white.svg +1 -0
- package/dist/assets/images/amenities/baggage.svg +1 -0
- package/dist/assets/images/amenities/charging_plug-white.svg +1 -0
- package/dist/assets/images/amenities/charging_plug.svg +17 -0
- package/dist/assets/images/amenities/coffee.svg +1 -0
- package/dist/assets/images/amenities/cortina_divisoria.svg +19 -0
- package/dist/assets/images/amenities/divider-curtain.svg +34 -0
- package/dist/assets/images/amenities/food_new_icon-white.svg +1 -0
- package/dist/assets/images/amenities/food_new_icon.svg +1 -0
- package/dist/assets/images/amenities/frazda_amenity.svg +11 -0
- package/dist/assets/images/amenities/handicap-white.svg +1 -0
- package/dist/assets/images/amenities/handicap.svg +1 -0
- package/dist/assets/images/amenities/icon-app-cortina.svg +19 -0
- package/dist/assets/images/amenities/mobile_ticket-white.svg +1 -0
- package/dist/assets/images/amenities/mobile_ticket.svg +29 -0
- package/dist/assets/images/amenities/movie-white.svg +1 -0
- package/dist/assets/images/amenities/movie.svg +1 -0
- package/dist/assets/images/amenities/music-white.svg +1 -0
- package/dist/assets/images/amenities/music.svg +1 -0
- package/dist/assets/images/amenities/snacks_new-white.svg +1 -0
- package/dist/assets/images/amenities/snacks_new.svg +27 -0
- package/dist/assets/images/amenities/whatsapp-charges-info-icon.svg +5 -0
- package/dist/assets/images/amenities/wifi-white.svg +1 -0
- package/dist/assets/images/amenities/wifi.svg +1 -0
- package/dist/assets/images/anims/service_list/flexible.json +391 -0
- package/dist/assets/images/anims/service_list/location.json +589 -0
- package/dist/assets/images/index.d.ts +32 -0
- package/dist/assets/images/index.js +35 -0
- package/dist/assets/images/index.ts +35 -0
- package/dist/components/InternationalServicePopupBody.d.ts +3 -0
- package/dist/components/InternationalServicePopupBody.js +21 -0
- package/dist/components/PaymentSideBar/PaymentSideBarDesktop.d.ts +4 -0
- package/dist/components/PaymentSideBar/PaymentSideBarDesktop.js +107 -0
- package/dist/components/PaymentSideBar/PaymentSideBarMobile.d.ts +4 -0
- package/dist/components/PaymentSideBar/PaymentSideBarMobile.js +115 -0
- package/dist/components/PaymentSideBar/ResponsivePaymentSideBar.d.ts +3 -0
- package/dist/components/PaymentSideBar/ResponsivePaymentSideBar.js +10 -0
- package/dist/components/PaymentSideBar/index.d.ts +5 -0
- package/dist/components/PaymentSideBar/index.js +4 -0
- package/dist/components/PaymentSideBar/types.d.ts +38 -0
- package/dist/components/PaymentSideBar/types.js +1 -0
- package/dist/components/ServiceItem/ResponsiveServiceItem.d.ts +3 -0
- package/dist/components/ServiceItem/ResponsiveServiceItem.js +10 -0
- package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +4 -0
- package/dist/components/ServiceItem/ServiceItemDesktop.js +486 -0
- package/dist/components/ServiceItem/ServiceItemMobile.d.ts +4 -0
- package/dist/components/ServiceItem/ServiceItemMobile.js +248 -0
- package/dist/components/ServiceItem/index.d.ts +5 -0
- package/dist/components/ServiceItem/index.js +4 -0
- package/dist/components/ServiceItem/mobileTypes.d.ts +141 -0
- package/dist/components/ServiceItem/mobileTypes.js +1 -0
- package/dist/components/ServiceItem/types.d.ts +164 -0
- package/dist/components/ServiceItem/types.js +1 -0
- package/dist/components/ServiceList/ResponsiveServiceList.d.ts +3 -0
- package/dist/components/ServiceList/ResponsiveServiceList.js +10 -0
- package/dist/components/ServiceList/ServiceListDesktop.d.ts +4 -0
- package/dist/components/ServiceList/ServiceListDesktop.js +164 -0
- package/dist/components/ServiceList/ServiceListMobile.d.ts +4 -0
- package/dist/components/ServiceList/ServiceListMobile.js +195 -0
- package/dist/components/ServiceList/index.d.ts +5 -0
- package/dist/components/ServiceList/index.js +4 -0
- package/dist/components/ServiceList/types.d.ts +35 -0
- package/dist/components/ServiceList/types.js +1 -0
- package/dist/example.d.ts +5 -0
- package/dist/example.js +240 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +15 -0
- package/dist/mobileTypes.d.ts +141 -0
- package/dist/mobileTypes.js +1 -0
- package/dist/styles.css +803 -0
- package/dist/types.d.ts +151 -0
- package/dist/types.js +1 -0
- package/dist/utils/DateService.d.ts +16 -0
- package/dist/utils/DateService.js +160 -0
- package/dist/utils/ModalEventManager.d.ts +40 -0
- package/dist/utils/ModalEventManager.js +329 -0
- package/kupos-service-item-package-1.0.0.tgz +0 -0
- package/package.json +43 -0
- package/postcss.config.js +6 -0
- package/src/KuposUIComponent.tsx +152 -0
- package/src/ServiceItemPb.tsx +1048 -0
- package/src/assets/LottieIcon.tsx +26 -0
- package/src/assets/LottiePlayer.tsx +63 -0
- package/src/assets/PopupComponent.tsx +65 -0
- package/src/assets/images/amenities/Icon_More-Amenities.svg +1 -0
- package/src/assets/images/amenities/Restrooms-white.svg +1 -0
- package/src/assets/images/amenities/Restrooms.svg +1 -0
- package/src/assets/images/amenities/air_condtion-white.svg +1 -0
- package/src/assets/images/amenities/air_condtion.svg +1 -0
- package/src/assets/images/amenities/amenity-cortina.png +0 -0
- package/src/assets/images/amenities/baggage-white.svg +1 -0
- package/src/assets/images/amenities/baggage.svg +1 -0
- package/src/assets/images/amenities/charging_plug-white.svg +1 -0
- package/src/assets/images/amenities/charging_plug.svg +17 -0
- package/src/assets/images/amenities/coffee.svg +1 -0
- package/src/assets/images/amenities/cortina_divisoria.svg +19 -0
- package/src/assets/images/amenities/divider-curtain.svg +34 -0
- package/src/assets/images/amenities/food_new_icon-white.svg +1 -0
- package/src/assets/images/amenities/food_new_icon.svg +1 -0
- package/src/assets/images/amenities/frazda_amenity.svg +11 -0
- package/src/assets/images/amenities/handicap-white.svg +1 -0
- package/src/assets/images/amenities/handicap.svg +1 -0
- package/src/assets/images/amenities/icon-app-cortina.svg +19 -0
- package/src/assets/images/amenities/mobile_ticket-white.svg +1 -0
- package/src/assets/images/amenities/mobile_ticket.svg +29 -0
- package/src/assets/images/amenities/movie-white.svg +1 -0
- package/src/assets/images/amenities/movie.svg +1 -0
- package/src/assets/images/amenities/music-white.svg +1 -0
- package/src/assets/images/amenities/music.svg +1 -0
- package/src/assets/images/amenities/snacks_new-white.svg +1 -0
- package/src/assets/images/amenities/snacks_new.svg +27 -0
- package/src/assets/images/amenities/whatsapp-charges-info-icon.svg +5 -0
- package/src/assets/images/amenities/wifi-white.svg +1 -0
- package/src/assets/images/amenities/wifi.svg +1 -0
- package/src/assets/images/anims/service_list/flexible.json +391 -0
- package/src/assets/images/anims/service_list/location.json +589 -0
- package/src/assets/images/index.ts +35 -0
- package/src/components/InternationalServicePopupBody.tsx +40 -0
- package/src/components/PaymentSideBar/PaymentSideBarDesktop.tsx +183 -0
- package/src/components/PaymentSideBar/PaymentSideBarMobile.tsx +197 -0
- package/src/components/PaymentSideBar/ResponsivePaymentSideBar.tsx +14 -0
- package/src/components/PaymentSideBar/index.ts +5 -0
- package/src/components/PaymentSideBar/types.ts +44 -0
- package/src/components/ServiceItem/ResponsiveServiceItem.tsx +14 -0
- package/src/components/ServiceItem/ServiceItemDesktop.tsx +1048 -0
- package/src/components/ServiceItem/ServiceItemMobile.tsx +544 -0
- package/src/components/ServiceItem/index.ts +5 -0
- package/src/components/ServiceItem/mobileTypes.ts +159 -0
- package/src/components/ServiceItem/types.ts +163 -0
- package/src/components/ServiceList/ResponsiveServiceList.tsx +14 -0
- package/src/components/ServiceList/ServiceListDesktop.tsx +353 -0
- package/src/components/ServiceList/ServiceListMobile.tsx +400 -0
- package/src/components/ServiceList/index.ts +5 -0
- package/src/components/ServiceList/types.ts +43 -0
- package/src/dummyData.json +73 -0
- package/src/example.tsx +348 -0
- package/src/index.ts +37 -0
- package/src/lottie-player.d.ts +0 -0
- package/src/styles.css +77 -0
- package/src/types.ts +150 -0
- package/src/utils/DateService.ts +197 -0
- package/src/utils/ModalEventManager.ts +405 -0
- package/tailwind.config.js +39 -0
- package/tsconfig.json +18 -0
package/README copy.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Service Item Package
|
|
2
|
+
|
|
3
|
+
A reusable React component for displaying service items in transportation and
|
|
4
|
+
booking applications.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install service-item-package
|
|
10
|
+
# or
|
|
11
|
+
yarn add service-item-package
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
### Using the KuposUIComponent
|
|
17
|
+
|
|
18
|
+
The `KuposUIComponent` is a versatile component that can render different UI components based on the `typeOfComponent` prop:
|
|
19
|
+
|
|
20
|
+
```jsx
|
|
21
|
+
import { KuposUIComponent } from "service-item-package";
|
|
22
|
+
import "service-item-package/dist/styles.css"; // If you add CSS in the future
|
|
23
|
+
|
|
24
|
+
// Sample data
|
|
25
|
+
const serviceItem = {
|
|
26
|
+
id: "12345",
|
|
27
|
+
operator_details: [
|
|
28
|
+
"https://example.com/logo.png", // logo URL
|
|
29
|
+
"4.5", // rating
|
|
30
|
+
"Operator Name", // operator name
|
|
31
|
+
],
|
|
32
|
+
travel_date: "2025-08-01T09:00:00Z",
|
|
33
|
+
arrival_date: "2025-08-01T12:00:00Z",
|
|
34
|
+
dep_time: "09:00",
|
|
35
|
+
arr_time: "12:00",
|
|
36
|
+
available_seats: 5,
|
|
37
|
+
seat_types: [
|
|
38
|
+
{ label: "Salon Cama", fare: 50 },
|
|
39
|
+
{ label: "Premium", fare: 75 },
|
|
40
|
+
{ label: "Economy", fare: 40 },
|
|
41
|
+
],
|
|
42
|
+
offer_text: "Limited time offer: 20% off!",
|
|
43
|
+
is_direct_trip: true,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
function App() {
|
|
47
|
+
return (
|
|
48
|
+
<div>
|
|
49
|
+
{/* Render Service Item */}
|
|
50
|
+
<KuposUIComponent
|
|
51
|
+
typeOfComponent="serviceitem"
|
|
52
|
+
variant="desktop"
|
|
53
|
+
serviceItem={serviceItem}
|
|
54
|
+
onBookButtonPress={() => console.log("Book pressed!")}
|
|
55
|
+
/>
|
|
56
|
+
|
|
57
|
+
{/* Render Payment Sidebar */}
|
|
58
|
+
<KuposUIComponent
|
|
59
|
+
typeOfComponent="paymentsidebar"
|
|
60
|
+
variant="desktop"
|
|
61
|
+
// Add payment sidebar specific props here
|
|
62
|
+
/>
|
|
63
|
+
|
|
64
|
+
{/* Render Service List */}
|
|
65
|
+
<KuposUIComponent
|
|
66
|
+
typeOfComponent="servicelist"
|
|
67
|
+
variant="mobile"
|
|
68
|
+
// Add service list specific props here
|
|
69
|
+
/>
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Using Individual Components
|
|
76
|
+
|
|
77
|
+
You can also use the individual components directly:
|
|
78
|
+
|
|
79
|
+
```jsx
|
|
80
|
+
import { ServiceItemPB } from "service-item-package";
|
|
81
|
+
|
|
82
|
+
function App() {
|
|
83
|
+
return (
|
|
84
|
+
<div>
|
|
85
|
+
<ServiceItemPB
|
|
86
|
+
serviceItem={serviceItem}
|
|
87
|
+
onBookButtonPress={() => console.log("Book pressed!")}
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Props
|
|
95
|
+
|
|
96
|
+
### KuposUIComponent Props
|
|
97
|
+
|
|
98
|
+
| Prop | Type | Description |
|
|
99
|
+
| --------------- | -------- | ---------------------------------------------------------- |
|
|
100
|
+
| typeOfComponent | string | Type of component to render: "serviceitem", "paymentsidebar", or "servicelist" |
|
|
101
|
+
| variant | string | "mobile" or "desktop" to specify the variant |
|
|
102
|
+
| ...other props | various | All props required by the specific component type |
|
|
103
|
+
|
|
104
|
+
### ServiceItem Props
|
|
105
|
+
|
|
106
|
+
| Prop | Type | Description |
|
|
107
|
+
| --------------------- | -------- | -------------------------------------------- |
|
|
108
|
+
| serviceItem | Object | The service item data object |
|
|
109
|
+
| onBookButtonPress | Function | Callback for when the book button is pressed |
|
|
110
|
+
| serviceDetailsLoading | boolean | Whether service details are loading |
|
|
111
|
+
| t | Function | Optional translation function |
|
|
112
|
+
|
|
113
|
+
## Development
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Install dependencies
|
|
117
|
+
npm install
|
|
118
|
+
|
|
119
|
+
# Build package
|
|
120
|
+
npm run build
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
MIT
|
package/README.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Service Item Package
|
|
2
|
+
|
|
3
|
+
A reusable React component for displaying service items in transportation and
|
|
4
|
+
booking applications.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install service-item-package
|
|
10
|
+
# or
|
|
11
|
+
yarn add service-item-package
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
### Using the KuposUIComponent
|
|
17
|
+
|
|
18
|
+
The `KuposUIComponent` is a versatile component that can render different UI components based on the `typeOfComponent` prop:
|
|
19
|
+
|
|
20
|
+
```jsx
|
|
21
|
+
import { KuposUIComponent } from "service-item-package";
|
|
22
|
+
import "service-item-package/dist/styles.css"; // If you add CSS in the future
|
|
23
|
+
|
|
24
|
+
// Sample data
|
|
25
|
+
const serviceItem = {
|
|
26
|
+
id: "12345",
|
|
27
|
+
operator_details: [
|
|
28
|
+
"https://example.com/logo.png", // logo URL
|
|
29
|
+
"4.5", // rating
|
|
30
|
+
"Operator Name", // operator name
|
|
31
|
+
],
|
|
32
|
+
travel_date: "2025-08-01T09:00:00Z",
|
|
33
|
+
arrival_date: "2025-08-01T12:00:00Z",
|
|
34
|
+
dep_time: "09:00",
|
|
35
|
+
arr_time: "12:00",
|
|
36
|
+
available_seats: 5,
|
|
37
|
+
seat_types: [
|
|
38
|
+
{ label: "Salon Cama", fare: 50 },
|
|
39
|
+
{ label: "Premium", fare: 75 },
|
|
40
|
+
{ label: "Economy", fare: 40 },
|
|
41
|
+
],
|
|
42
|
+
offer_text: "Limited time offer: 20% off!",
|
|
43
|
+
is_direct_trip: true,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
function App() {
|
|
47
|
+
return (
|
|
48
|
+
<div>
|
|
49
|
+
{/* Render Service Item */}
|
|
50
|
+
<KuposUIComponent
|
|
51
|
+
typeOfComponent="serviceitem"
|
|
52
|
+
variant="desktop"
|
|
53
|
+
serviceItem={serviceItem}
|
|
54
|
+
onBookButtonPress={() => console.log("Book pressed!")}
|
|
55
|
+
/>
|
|
56
|
+
|
|
57
|
+
{/* Render Payment Sidebar */}
|
|
58
|
+
<KuposUIComponent
|
|
59
|
+
typeOfComponent="paymentsidebar"
|
|
60
|
+
variant="desktop"
|
|
61
|
+
// Add payment sidebar specific props here
|
|
62
|
+
/>
|
|
63
|
+
|
|
64
|
+
{/* Render Service List */}
|
|
65
|
+
<KuposUIComponent
|
|
66
|
+
typeOfComponent="servicelist"
|
|
67
|
+
variant="mobile"
|
|
68
|
+
// Add service list specific props here
|
|
69
|
+
/>
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Using Individual Components
|
|
76
|
+
|
|
77
|
+
You can also use the individual components directly:
|
|
78
|
+
|
|
79
|
+
```jsx
|
|
80
|
+
import { ServiceItemPB } from "service-item-package";
|
|
81
|
+
|
|
82
|
+
function App() {
|
|
83
|
+
return (
|
|
84
|
+
<div>
|
|
85
|
+
<ServiceItemPB
|
|
86
|
+
serviceItem={serviceItem}
|
|
87
|
+
onBookButtonPress={() => console.log("Book pressed!")}
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Props
|
|
95
|
+
|
|
96
|
+
### KuposUIComponent Props
|
|
97
|
+
|
|
98
|
+
| Prop | Type | Description |
|
|
99
|
+
| --------------- | -------- | ---------------------------------------------------------- |
|
|
100
|
+
| typeOfComponent | string | Type of component to render: "serviceitem", "paymentsidebar", or "servicelist" |
|
|
101
|
+
| variant | string | "mobile" or "desktop" to specify the variant |
|
|
102
|
+
| ...other props | various | All props required by the specific component type |
|
|
103
|
+
|
|
104
|
+
### ServiceItem Props
|
|
105
|
+
|
|
106
|
+
| Prop | Type | Description |
|
|
107
|
+
| --------------------- | -------- | -------------------------------------------- |
|
|
108
|
+
| serviceItem | Object | The service item data object |
|
|
109
|
+
| onBookButtonPress | Function | Callback for when the book button is pressed |
|
|
110
|
+
| serviceDetailsLoading | boolean | Whether service details are loading |
|
|
111
|
+
| t | Function | Optional translation function |
|
|
112
|
+
|
|
113
|
+
## Development
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Install dependencies
|
|
117
|
+
npm install
|
|
118
|
+
|
|
119
|
+
# Build package
|
|
120
|
+
npm run build
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
MIT
|
package/build-css.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const postcss = require("postcss");
|
|
4
|
+
const tailwindcssPlugin = require("@tailwindcss/postcss");
|
|
5
|
+
const autoprefixer = require("autoprefixer");
|
|
6
|
+
|
|
7
|
+
// Read the CSS file with Tailwind directives
|
|
8
|
+
const css = fs.readFileSync(
|
|
9
|
+
path.resolve(__dirname, "./src/styles.css"),
|
|
10
|
+
"utf8",
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
// Process the CSS with Tailwind and autoprefixer
|
|
14
|
+
postcss([tailwindcssPlugin("./tailwind.config.js"), autoprefixer])
|
|
15
|
+
.process(css, { from: "./src/styles.css", to: "./dist/styles.css" })
|
|
16
|
+
.then(result => {
|
|
17
|
+
// Create the dist directory if it doesn't exist
|
|
18
|
+
if (!fs.existsSync("./dist")) {
|
|
19
|
+
fs.mkdirSync("./dist");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Write the processed CSS to the output file
|
|
23
|
+
fs.writeFileSync("./dist/styles.css", result.css);
|
|
24
|
+
console.log("CSS built successfully!");
|
|
25
|
+
})
|
|
26
|
+
.catch(error => {
|
|
27
|
+
console.error("Error building CSS:", error);
|
|
28
|
+
});
|
package/copy-assets.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
// Create dist/assets directory if it doesn't exist
|
|
5
|
+
const assetsDir = path.join(__dirname, 'dist', 'assets');
|
|
6
|
+
if (!fs.existsSync(assetsDir)) {
|
|
7
|
+
fs.mkdirSync(assetsDir, { recursive: true });
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Copy assets from src/assets to dist/assets
|
|
11
|
+
const srcAssetsDir = path.join(__dirname, 'src', 'assets');
|
|
12
|
+
if (fs.existsSync(srcAssetsDir)) {
|
|
13
|
+
copyFolderRecursiveSync(srcAssetsDir, path.join(__dirname, 'dist'));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
console.log('Assets copied successfully!');
|
|
17
|
+
|
|
18
|
+
// Function to copy folder recursively
|
|
19
|
+
function copyFolderRecursiveSync(source, target) {
|
|
20
|
+
const targetFolder = path.join(target, path.basename(source));
|
|
21
|
+
|
|
22
|
+
// Create target folder if it doesn't exist
|
|
23
|
+
if (!fs.existsSync(targetFolder)) {
|
|
24
|
+
fs.mkdirSync(targetFolder, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Copy files
|
|
28
|
+
if (fs.lstatSync(source).isDirectory()) {
|
|
29
|
+
const files = fs.readdirSync(source);
|
|
30
|
+
files.forEach(function(file) {
|
|
31
|
+
const curSource = path.join(source, file);
|
|
32
|
+
if (fs.lstatSync(curSource).isDirectory()) {
|
|
33
|
+
copyFolderRecursiveSync(curSource, targetFolder);
|
|
34
|
+
} else {
|
|
35
|
+
copyFileSync(curSource, targetFolder);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Function to copy file
|
|
42
|
+
function copyFileSync(source, target) {
|
|
43
|
+
const targetFile = path.join(target, path.basename(source));
|
|
44
|
+
fs.copyFileSync(source, targetFile);
|
|
45
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface KuposUIComponentProps {
|
|
3
|
+
typeOfComponent: "serviceitem" | "paymentsidebar" | "servicelist";
|
|
4
|
+
variant?: "mobile" | "desktop";
|
|
5
|
+
serviceItem?: any;
|
|
6
|
+
onBookButtonPress?: () => void;
|
|
7
|
+
colors?: any;
|
|
8
|
+
metaData?: any;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
busStage?: any;
|
|
11
|
+
serviceDetailsLoading?: boolean;
|
|
12
|
+
cityOrigin?: any;
|
|
13
|
+
cityDestination?: any;
|
|
14
|
+
translation?: any;
|
|
15
|
+
orignLabel?: string;
|
|
16
|
+
destinationLabel?: string;
|
|
17
|
+
t?: (key: string) => string;
|
|
18
|
+
id?: string;
|
|
19
|
+
name?: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
price?: number;
|
|
22
|
+
currency?: string;
|
|
23
|
+
imageUrl?: string;
|
|
24
|
+
rating?: number;
|
|
25
|
+
available?: boolean;
|
|
26
|
+
featured?: boolean;
|
|
27
|
+
duration?: string;
|
|
28
|
+
location?: string;
|
|
29
|
+
provider?: {
|
|
30
|
+
name: string;
|
|
31
|
+
imageUrl?: string;
|
|
32
|
+
rating?: number;
|
|
33
|
+
};
|
|
34
|
+
onViewDetails?: () => void;
|
|
35
|
+
orderSummary?: {
|
|
36
|
+
subtotal: number;
|
|
37
|
+
taxes: number;
|
|
38
|
+
discount: number;
|
|
39
|
+
total: number;
|
|
40
|
+
};
|
|
41
|
+
paymentMethods?: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
icon: string;
|
|
45
|
+
}>;
|
|
46
|
+
customerDetails?: {
|
|
47
|
+
name: string;
|
|
48
|
+
email: string;
|
|
49
|
+
phone: string;
|
|
50
|
+
};
|
|
51
|
+
orderDetails?: Array<{
|
|
52
|
+
name: string;
|
|
53
|
+
price: number;
|
|
54
|
+
quantity: number;
|
|
55
|
+
}>;
|
|
56
|
+
onPaymentMethodSelect?: (id: string) => void;
|
|
57
|
+
onPayButtonClick?: () => void;
|
|
58
|
+
services?: Array<{
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
price?: number;
|
|
63
|
+
currency?: string;
|
|
64
|
+
imageUrl?: string;
|
|
65
|
+
rating?: number;
|
|
66
|
+
available?: boolean;
|
|
67
|
+
featured?: boolean;
|
|
68
|
+
}>;
|
|
69
|
+
onServiceSelect?: (serviceId: string) => void;
|
|
70
|
+
onServiceView?: (serviceId: string) => void;
|
|
71
|
+
showFilters?: boolean;
|
|
72
|
+
filters?: {
|
|
73
|
+
categories?: string[];
|
|
74
|
+
priceRange?: {
|
|
75
|
+
min: number;
|
|
76
|
+
max: number;
|
|
77
|
+
};
|
|
78
|
+
sortBy?: "price" | "rating" | "name";
|
|
79
|
+
sortOrder?: "asc" | "desc";
|
|
80
|
+
};
|
|
81
|
+
onFilterChange?: (filters: any) => void;
|
|
82
|
+
}
|
|
83
|
+
export default function KuposUIComponent(props: KuposUIComponentProps): React.ReactElement;
|
|
84
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import React from "react";
|
|
13
|
+
import ResponsiveServiceItem from "./components/ServiceItem/ResponsiveServiceItem";
|
|
14
|
+
import { ResponsivePaymentSideBar } from "./components/PaymentSideBar";
|
|
15
|
+
import { ResponsiveServiceList } from "./components/ServiceList";
|
|
16
|
+
// Using imported ResponsivePaymentSideBar component instead
|
|
17
|
+
export default function KuposUIComponent(props) {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
const { typeOfComponent } = props, restProps = __rest(props, ["typeOfComponent"]);
|
|
20
|
+
switch (typeOfComponent.toLowerCase()) {
|
|
21
|
+
case "serviceitem":
|
|
22
|
+
return (React.createElement(ResponsiveServiceItem, Object.assign({}, restProps)));
|
|
23
|
+
case "paymentsidebar": {
|
|
24
|
+
const { orderDetails } = restProps, otherProps = __rest(restProps, ["orderDetails"]);
|
|
25
|
+
// Create a properly formatted PaymentSideBarProps object
|
|
26
|
+
const paymentProps = Object.assign(Object.assign({}, otherProps), (orderDetails && {
|
|
27
|
+
orderDetails: {
|
|
28
|
+
items: orderDetails.map((item) => ({
|
|
29
|
+
name: item.name,
|
|
30
|
+
quantity: item.quantity,
|
|
31
|
+
price: item.price,
|
|
32
|
+
})),
|
|
33
|
+
subtotal: ((_a = restProps.orderSummary) === null || _a === void 0 ? void 0 : _a.subtotal) || 0,
|
|
34
|
+
tax: ((_b = restProps.orderSummary) === null || _b === void 0 ? void 0 : _b.taxes) || 0,
|
|
35
|
+
discount: ((_c = restProps.orderSummary) === null || _c === void 0 ? void 0 : _c.discount) || 0,
|
|
36
|
+
total: ((_d = restProps.orderSummary) === null || _d === void 0 ? void 0 : _d.total) || 0,
|
|
37
|
+
},
|
|
38
|
+
}));
|
|
39
|
+
return React.createElement(ResponsivePaymentSideBar, Object.assign({}, paymentProps));
|
|
40
|
+
}
|
|
41
|
+
case "servicelist":
|
|
42
|
+
return (React.createElement(ResponsiveServiceList, Object.assign({}, restProps)));
|
|
43
|
+
default:
|
|
44
|
+
return (React.createElement("div", { className: "error-message" },
|
|
45
|
+
"Invalid component type: ",
|
|
46
|
+
typeOfComponent,
|
|
47
|
+
". Please use one of: \"serviceitem\", \"paymentsidebar\", or \"servicelist\"."));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ServiceItemDesktop from "./ServiceItemDesktop";
|
|
3
|
+
import ServiceItemMobile from "./ServiceItemMobile";
|
|
4
|
+
export default function ResponsiveServiceItem(props) {
|
|
5
|
+
const { variant } = props;
|
|
6
|
+
if (variant === "mobile") {
|
|
7
|
+
return React.createElement(ServiceItemMobile, Object.assign({}, props));
|
|
8
|
+
}
|
|
9
|
+
return React.createElement(ServiceItemDesktop, Object.assign({}, props));
|
|
10
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
// Mobile-only view. Implement your mobile UI here.
|
|
3
|
+
// You will receive the same props as the desktop variant plus optional mobile overrides:
|
|
4
|
+
// - mobileServiceItem, mobileColors, mobileTranslation
|
|
5
|
+
// You can choose which data to render (e.g., prefer mobile* overrides when present).
|
|
6
|
+
const ServiceItemMobileView = props => {
|
|
7
|
+
const { mobileServiceItem, mobileColors, mobileTranslation, } = props;
|
|
8
|
+
// Choose the data source for mobile (override if provided)
|
|
9
|
+
const data = mobileServiceItem;
|
|
10
|
+
const palette = mobileColors;
|
|
11
|
+
const i18n = mobileTranslation;
|
|
12
|
+
return (React.createElement("div", { className: "bg-white rounded-[16px] p-4 shadow-service" },
|
|
13
|
+
React.createElement("div", { className: "text-[#464647] text-[14px]" },
|
|
14
|
+
React.createElement("div", { className: "font-semibold mb-2" }, "Mobile Service Item"),
|
|
15
|
+
React.createElement("div", { className: "mb-1" },
|
|
16
|
+
"Operator: ", data === null || data === void 0 ? void 0 :
|
|
17
|
+
data.operator_service_name),
|
|
18
|
+
React.createElement("div", { className: "mb-1" },
|
|
19
|
+
"Departure: ", data === null || data === void 0 ? void 0 :
|
|
20
|
+
data.dep_time),
|
|
21
|
+
React.createElement("div", { className: "mb-1" },
|
|
22
|
+
"Arrival: ", data === null || data === void 0 ? void 0 :
|
|
23
|
+
data.arr_time),
|
|
24
|
+
typeof (data === null || data === void 0 ? void 0 : data.available_seats) === "number" && (React.createElement("div", { className: "mb-1" },
|
|
25
|
+
"Available seats: ",
|
|
26
|
+
data.available_seats)),
|
|
27
|
+
(i18n === null || i18n === void 0 ? void 0 : i18n.hours) && (React.createElement("div", { className: "text-[12px] text-[#888]" }, data === null || data === void 0 ? void 0 :
|
|
28
|
+
data.duration,
|
|
29
|
+
" ",
|
|
30
|
+
i18n.hours))),
|
|
31
|
+
(palette === null || palette === void 0 ? void 0 : palette.buttonColor) && (React.createElement("div", { className: "mt-3 text-[12px]", style: { color: palette.buttonColor } }, "Colors and other theming can go here"))));
|
|
32
|
+
};
|
|
33
|
+
export default ServiceItemMobileView;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ServiceItemProps } from "./types";
|
|
3
|
+
declare function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, t, }: ServiceItemProps): React.ReactElement;
|
|
4
|
+
export default ServiceItemPB;
|