related-ui-components 2.1.9 → 2.2.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 (29) hide show
  1. package/lib/module/app.js +2 -5
  2. package/lib/module/app.js.map +1 -1
  3. package/lib/module/components/TravelBooking/CarRentalForm.js +17 -13
  4. package/lib/module/components/TravelBooking/CarRentalForm.js.map +1 -1
  5. package/lib/module/components/TravelBooking/FlightForm.js +19 -10
  6. package/lib/module/components/TravelBooking/FlightForm.js.map +1 -1
  7. package/lib/module/components/TravelBooking/FlightSummary.js +5 -0
  8. package/lib/module/components/TravelBooking/FlightSummary.js.map +1 -1
  9. package/lib/module/components/TravelBooking/HotelForm.js +12 -3
  10. package/lib/module/components/TravelBooking/HotelForm.js.map +1 -1
  11. package/lib/module/index.js +7 -4
  12. package/lib/module/index.js.map +1 -1
  13. package/lib/typescript/src/app.d.ts.map +1 -1
  14. package/lib/typescript/src/components/TravelBooking/CarRentalForm.d.ts +8 -0
  15. package/lib/typescript/src/components/TravelBooking/CarRentalForm.d.ts.map +1 -1
  16. package/lib/typescript/src/components/TravelBooking/FlightForm.d.ts +7 -0
  17. package/lib/typescript/src/components/TravelBooking/FlightForm.d.ts.map +1 -1
  18. package/lib/typescript/src/components/TravelBooking/FlightSummary.d.ts.map +1 -1
  19. package/lib/typescript/src/components/TravelBooking/HotelForm.d.ts +6 -0
  20. package/lib/typescript/src/components/TravelBooking/HotelForm.d.ts.map +1 -1
  21. package/lib/typescript/src/index.d.ts +0 -1
  22. package/lib/typescript/src/index.d.ts.map +1 -1
  23. package/package.json +1 -1
  24. package/src/app.tsx +5 -2
  25. package/src/components/TravelBooking/CarRentalForm.tsx +96 -57
  26. package/src/components/TravelBooking/FlightForm.tsx +70 -47
  27. package/src/components/TravelBooking/FlightSummary.tsx +3 -1
  28. package/src/components/TravelBooking/HotelForm.tsx +71 -43
  29. package/src/index.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"FlightForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlightForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightForm.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlightSummary.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightSummary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EACL,SAAS,EAKT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAkB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAyCD,MAAM,WAAW,kBAAkB;IAEjC,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAGvD,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,uBAAuB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,4BAA4B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACxD,sBAAsB,CAAC,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAChE,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;CAC/D;AAGD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiO/C,CAAC;AAqEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"FlightSummary.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/FlightSummary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EACL,SAAS,EAKT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAkB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAyCD,MAAM,WAAW,kBAAkB;IAEjC,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAGvD,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,uBAAuB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,4BAA4B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACxD,sBAAsB,CAAC,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAChE,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;CAC/D;AAGD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmO/C,CAAC;AAqEF,eAAe,aAAa,CAAC"}
@@ -16,6 +16,12 @@ export interface HotelFormProps {
16
16
  checkout: string | undefined;
17
17
  nationality: string | undefined;
18
18
  }) => void;
19
+ onSelectionChange?: (details: {
20
+ destination: LocationData | undefined;
21
+ checkin: string | undefined;
22
+ checkout: string | undefined;
23
+ nationality: string | undefined;
24
+ }) => void;
19
25
  destinationLabel?: string;
20
26
  destinationPlaceholder?: string;
21
27
  checkinLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HotelForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/HotelForm.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAKL,SAAS,EACT,SAAS,EACT,SAAS,EAGV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAI1D,KAAK,YAAY,GAAG,MAAM,CAAC;AAG3B,MAAM,WAAW,cAAc;IAE7B,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QACxB,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;QACtC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC,KAAK,IAAI,CAAC;IAGX,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,cAAc,CAAC,EAAE,MAAM,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAGhD,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAGhC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAGvC,kCAAkC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1D,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,8BAA8B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtD,qCAAqC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAG7D,4BAA4B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,uBAAuB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAG/C,6BAA6B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrD,2BAA2B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACpC;AAgBD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAsMvC,CAAC;AAoEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"HotelForm.d.ts","sourceRoot":"","sources":["../../../../../src/components/TravelBooking/HotelForm.tsx"],"names":[],"mappings":"AACA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAKL,SAAS,EACT,SAAS,EACT,SAAS,EAGV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAI1D,KAAK,YAAY,GAAG,MAAM,CAAC;AAG3B,MAAM,WAAW,cAAc;IAE7B,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QACxB,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;QACtC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC,KAAK,IAAI,CAAC;IAEX,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC5B,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;QACtC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC,KAAK,IAAI,CAAC;IAGX,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,cAAc,CAAC,EAAE,MAAM,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAGhD,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAGhC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAGvC,kCAAkC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1D,yBAAyB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,8BAA8B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtD,qCAAqC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAG7D,4BAA4B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpD,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,uBAAuB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAG/C,6BAA6B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrD,2BAA2B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACpC;AAgBD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqNvC,CAAC;AAoEF,eAAe,SAAS,CAAC"}
@@ -1,4 +1,3 @@
1
- import "react-native-reanimated";
2
1
  export * from "./theme";
3
2
  export * from "./components";
4
3
  export * from "./contexts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAC;AAOjC,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "related-ui-components",
3
- "version": "2.1.9",
3
+ "version": "2.2.0",
4
4
  "main": "./src/index.ts",
5
5
  "scripts": {
6
6
  "start": "expo start",
package/src/app.tsx CHANGED
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import { SafeAreaView, StyleSheet, StatusBar } from "react-native";
3
3
  import CarouselCardStack from "./components/CarouselCardStack/CarouselCardStack"; // Adjust path as needed
4
4
  import { GestureHandlerRootView } from "react-native-gesture-handler";
5
- import { FlightForm, FlightSummary } from "./components";
5
+ import { CarRentalForm, FlightForm, FlightSummary, HotelForm, HotelSummary } from "./components";
6
6
 
7
7
  // Sample data - replace with your actual image URLs
8
8
  const DUMMY_DATA = [
@@ -45,7 +45,10 @@ const App = () => {
45
45
  <StatusBar barStyle="light-content" />
46
46
  <SafeAreaView style={styles.appContainer}>
47
47
  {/* <FlightSummary></FlightSummary> */}
48
- <FlightForm></FlightForm>
48
+ {/* <FlightForm></FlightForm> */}
49
+ {/* <HotelSummary></HotelSummary> */}
50
+ {/* <HotelForm></HotelForm> */}
51
+ {/* <CarRentalForm onSelectionChange={console.log}></CarRentalForm> */}
49
52
  {/* <CarouselCardStack data={DUMMY_DATA} /> */}
50
53
  </SafeAreaView>
51
54
  </GestureHandlerRootView>
@@ -1,5 +1,11 @@
1
1
  import { ThemeType, useTheme } from "../../theme";
2
- import React, { useCallback, useMemo, useRef, useState } from "react";
2
+ import React, {
3
+ useCallback,
4
+ useEffect,
5
+ useMemo,
6
+ useRef,
7
+ useState,
8
+ } from "react";
3
9
  import {
4
10
  View,
5
11
  Text,
@@ -25,15 +31,13 @@ export const mockCarSuggestions: CarSuggestions[] = [
25
31
  { id: 5, city: "New York", country: "USA", value: "NEW YORK, USA" },
26
32
  ];
27
33
 
28
- // --- Helper Types ---
29
34
  type LocationData = string;
30
35
 
31
- // --- Component Props ---
32
36
  export interface CarRentalFormProps {
33
37
  initialFromLocation?: LocationData;
34
38
  initialToLocation?: LocationData;
35
- initialPickupDate?: string; // Expect YYYY-MM-DD string
36
- initialDropoffDate?: string; // Expect YYYY-MM-DD string
39
+ initialPickupDate?: string;
40
+ initialDropoffDate?: string;
37
41
 
38
42
  onTextChange?: (text: string) => void;
39
43
  onInputFocus?: (input: FormInputType) => void;
@@ -44,8 +48,16 @@ export interface CarRentalFormProps {
44
48
  onSearchPress?: (details: {
45
49
  from: LocationData | undefined;
46
50
  to: LocationData | undefined;
47
- pickup: string | undefined; // Send YYYY-MM-DD
48
- dropoff: string | undefined; // Send YYYY-MM-DD
51
+ pickup: string | undefined;
52
+ dropoff: string | undefined;
53
+ driverAge: number | undefined;
54
+ }) => void;
55
+
56
+ onSelectionChange?: (details: {
57
+ from: LocationData | undefined;
58
+ to: LocationData | undefined;
59
+ pickup: string | undefined;
60
+ dropoff: string | undefined;
49
61
  driverAge: number | undefined;
50
62
  }) => void;
51
63
 
@@ -61,6 +73,8 @@ export interface CarRentalFormProps {
61
73
  searchIconName?: keyof typeof Ionicons.glyphMap;
62
74
  calendarThemeOverrides?: object; // Passed to DateRangePicker
63
75
 
76
+ ageLabel?:string;
77
+
64
78
  isOneWay?: boolean;
65
79
 
66
80
  suggestionData?: CarSuggestions[];
@@ -68,32 +82,32 @@ export interface CarRentalFormProps {
68
82
  // --- Style Props ---
69
83
  containerStyle?: StyleProp<ViewStyle>;
70
84
  inputGroupContainerStyle?: StyleProp<ViewStyle>;
71
- inputWrapperStyle?: StyleProp<ViewStyle>;
72
- inputGroupStyle?: StyleProp<ViewStyle>;
73
- labelStyle?: StyleProp<TextStyle>;
85
+ inputWrapperStyle?: StyleProp<ViewStyle>;
86
+ inputGroupStyle?: StyleProp<ViewStyle>;
87
+ labelStyle?: StyleProp<TextStyle>;
74
88
  swapButtonContainerStyle?: StyleProp<ViewStyle>;
75
89
  swapButtonStyle?: StyleProp<ViewStyle>;
76
- swapIconStyle?: StyleProp<TextStyle>;
77
- pickupRowStyle?: StyleProp<ViewStyle>;
90
+ swapIconStyle?: StyleProp<TextStyle>;
91
+ pickupRowStyle?: StyleProp<ViewStyle>;
78
92
  searchButtonStyle?: StyleProp<ViewStyle>;
79
- searchIconStyle?: StyleProp<TextStyle>;
93
+ searchIconStyle?: StyleProp<TextStyle>;
80
94
 
81
95
  // DateRangePicker specific styles (passed down)
82
96
  dateRangePickerOuterContainerStyle?: StyleProp<ViewStyle>;
83
- dateRangePickerLabelStyle?: StyleProp<TextStyle>;
84
- dateRangePickerInputGroupStyle?: StyleProp<ViewStyle>;
97
+ dateRangePickerLabelStyle?: StyleProp<TextStyle>;
98
+ dateRangePickerInputGroupStyle?: StyleProp<ViewStyle>;
85
99
  dateRangePickerCalendarContainerStyle?: StyleProp<ViewStyle>;
86
100
 
87
101
  // SuggestionList specific styles (passed down / used in renderItem)
88
102
  suggestionListContainerStyle?: StyleProp<ViewStyle>;
89
- suggestionItemStyle?: StyleProp<ViewStyle>;
90
- suggestionItemTextStyle?: StyleProp<TextStyle>;
103
+ suggestionItemStyle?: StyleProp<ViewStyle>;
104
+ suggestionItemTextStyle?: StyleProp<TextStyle>;
91
105
 
92
106
  // Age Picker specific styles
93
- agePickerWrapperStyle?: StyleProp<ViewStyle>;
94
- agePickerLabelStyle?: StyleProp<TextStyle>;
95
- pickerContainerStyle?: StyleProp<ViewStyle>;
96
- pickerStyle?: StyleProp<TextStyle>;
107
+ agePickerWrapperStyle?: StyleProp<ViewStyle>;
108
+ agePickerLabelStyle?: StyleProp<TextStyle>;
109
+ pickerContainerStyle?: StyleProp<ViewStyle>;
110
+ pickerStyle?: StyleProp<TextStyle>;
97
111
  }
98
112
 
99
113
  // --- Component ---
@@ -139,6 +153,8 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
139
153
  agePickerLabelStyle,
140
154
  pickerContainerStyle,
141
155
  pickerStyle,
156
+ onSelectionChange,
157
+ ageLabel = "Driver's Age"
142
158
  }) => {
143
159
  const { theme, isRTL } = useTheme();
144
160
  const styles = useMemo(() => themedStyles(theme, isRTL), [theme, isRTL]);
@@ -161,6 +177,23 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
161
177
  const [age, setAge] = useState<number>();
162
178
  const [focusedInput, setFocusedInput] = useState<FormInputType>();
163
179
 
180
+ useEffect(() => {
181
+ onSelectionChange?.({
182
+ from: fromLocation,
183
+ to: toLocation,
184
+ pickup: pickupDate,
185
+ dropoff: dropoffDate,
186
+ driverAge: age,
187
+ });
188
+ }, [
189
+ fromLocation,
190
+ toLocation,
191
+ pickupDate,
192
+ dropoffDate,
193
+ age,
194
+ onSelectionChange,
195
+ ]);
196
+
164
197
  // --- Handlers ---
165
198
  const handleSwap = useCallback(() => {
166
199
  const currentFrom = fromLocation;
@@ -192,9 +225,8 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
192
225
  setToLocation(item.value);
193
226
  toInputRef.current?.blur();
194
227
  }
195
- // setFocusedInput(undefined); // Hide suggestions after selection
196
228
  }}
197
- style={[styles.suggestionItem, suggestionItemStyle]} // Use new prop
229
+ style={[styles.suggestionItem, suggestionItemStyle]}
198
230
  >
199
231
  <Text style={[styles.suggestionItemText, suggestionItemTextStyle]}>
200
232
  {item.value}
@@ -237,25 +269,26 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
237
269
  data={suggestionData}
238
270
  visible={focusedInput === FormInputType.CAR_PICKUP}
239
271
  renderItemContent={suggestionRenderItem}
240
- containerStyle={suggestionListContainerStyle}
272
+ containerStyle={suggestionListContainerStyle}
241
273
  />
242
274
  )}
243
275
  </View>
244
-
245
- <View style={[styles.swapButtonContainer, swapButtonContainerStyle]}>
246
- <TouchableOpacity
247
- style={[styles.swapButton, swapButtonStyle]}
248
- onPress={handleSwap}
249
- activeOpacity={0.7}
250
- >
251
- <Ionicons
252
- name={swapIconName}
253
- size={20}
254
- color={theme.onSurface}
255
- style={swapIconStyle}
256
- />
257
- </TouchableOpacity>
258
- </View>
276
+ {onSwapPress && (
277
+ <View style={[styles.swapButtonContainer, swapButtonContainerStyle]}>
278
+ <TouchableOpacity
279
+ style={[styles.swapButton, swapButtonStyle]}
280
+ onPress={handleSwap}
281
+ activeOpacity={0.7}
282
+ >
283
+ <Ionicons
284
+ name={swapIconName}
285
+ size={20}
286
+ color={theme.onSurface}
287
+ style={swapIconStyle}
288
+ />
289
+ </TouchableOpacity>
290
+ </View>
291
+ )}
259
292
 
260
293
  {/* Apply inputWrapperStyle */}
261
294
  <View style={[styles.inputWrapper, inputWrapperStyle]}>
@@ -302,7 +335,7 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
302
335
  ]}
303
336
  labelStyle={[labelStyle, dateRangePickerLabelStyle]}
304
337
  inputGroupStyle={dateRangePickerInputGroupStyle}
305
- calendarContainerStyle={dateRangePickerCalendarContainerStyle}
338
+ calendarContainerStyle={dateRangePickerCalendarContainerStyle}
306
339
  calendarThemeOverrides={calendarThemeOverrides}
307
340
  onDatesChange={(d) => {
308
341
  setDropoffDate(d.return);
@@ -314,7 +347,7 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
314
347
  <View style={[styles.pickupRow, pickupRowStyle]}>
315
348
  <View style={[styles.agePickerWrapper, agePickerWrapperStyle]}>
316
349
  <Text style={[styles.label, labelStyle, agePickerLabelStyle]}>
317
- Driver's Age
350
+ {ageLabel}
318
351
  </Text>
319
352
  <View style={[styles.pickerContainer, pickerContainerStyle]}>
320
353
  <Picker
@@ -323,7 +356,11 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
323
356
  style={[styles.picker, pickerStyle]}
324
357
  dropdownIconColor={theme.onSurface}
325
358
  >
326
- <Picker.Item label="Select Age" value={undefined} enabled={false} />
359
+ <Picker.Item
360
+ label="Select Age"
361
+ value={undefined}
362
+ enabled={false}
363
+ />
327
364
  {Array.from({ length: 80 - 21 + 1 }, (_, i) => i + 21).map(
328
365
  (n) => (
329
366
  <Picker.Item key={n} label={n.toString()} value={n} />
@@ -332,18 +369,20 @@ const CarRentalForm: React.FC<CarRentalFormProps> = ({
332
369
  </Picker>
333
370
  </View>
334
371
  </View>
335
- <TouchableOpacity
336
- style={[styles.searchButton, searchButtonStyle]}
337
- onPress={handleSearch}
338
- activeOpacity={0.8}
339
- >
340
- <Ionicons
341
- name={searchIconName}
342
- size={24}
343
- color={theme.onPrimary}
344
- style={searchIconStyle}
345
- />
346
- </TouchableOpacity>
372
+ {onSearchPress && (
373
+ <TouchableOpacity
374
+ style={[styles.searchButton, searchButtonStyle]}
375
+ onPress={handleSearch}
376
+ activeOpacity={0.8}
377
+ >
378
+ <Ionicons
379
+ name={searchIconName}
380
+ size={24}
381
+ color={theme.onPrimary}
382
+ style={searchIconStyle}
383
+ />
384
+ </TouchableOpacity>
385
+ )}
347
386
  </View>
348
387
  </View>
349
388
  );
@@ -359,11 +398,11 @@ const themedStyles = (theme: ThemeType, isRTL: boolean) =>
359
398
  borderBottomLeftRadius: 8,
360
399
  },
361
400
  inputGroupContainer: {
362
- position: "relative",
401
+ position: "relative",
363
402
  },
364
403
  inputWrapper: {
365
404
  marginBottom: 15,
366
- position: "relative",
405
+ position: "relative",
367
406
  },
368
407
  label: {
369
408
  color: theme.labelText,
@@ -403,7 +442,7 @@ const themedStyles = (theme: ThemeType, isRTL: boolean) =>
403
442
  gap: 10,
404
443
  },
405
444
  agePickerWrapper: {
406
- flex: 1,
445
+ flex: 1,
407
446
  },
408
447
  pickerContainer: {
409
448
  borderWidth: 1,
@@ -1,5 +1,5 @@
1
1
  import { ThemeType, useTheme } from "../../theme";
2
- import React, { useCallback, useMemo, useRef, useState } from "react";
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import {
4
4
  View,
5
5
  Text,
@@ -39,6 +39,13 @@ export interface FlightFormProps {
39
39
  }) => void;
40
40
  onTextChange?: (text: string) => void;
41
41
 
42
+ onSelectionChange?: (details: {
43
+ from: LocationData | undefined;
44
+ to: LocationData | undefined;
45
+ departure: string | undefined; // Send YYYY-MM-DD
46
+ return?: string | undefined; // Send YYYY-MM-DD
47
+ }) => void;
48
+
42
49
  fromLabel?: string;
43
50
  fromPlaceholder?: string;
44
51
 
@@ -56,34 +63,35 @@ export interface FlightFormProps {
56
63
  suggestionData?: FlightSuggestions[];
57
64
 
58
65
  // --- Style Props ---
59
- containerStyle?: StyleProp<ViewStyle>;
60
- inputGroupContainerStyle?: StyleProp<ViewStyle>;
61
- inputWrapperStyle?: StyleProp<ViewStyle>;
62
- customInputContainerStyle?: StyleProp<ViewStyle>;
63
- labelStyle?: StyleProp<TextStyle>;
66
+ containerStyle?: StyleProp<ViewStyle>;
67
+ inputGroupContainerStyle?: StyleProp<ViewStyle>;
68
+ inputWrapperStyle?: StyleProp<ViewStyle>;
69
+ customInputContainerStyle?: StyleProp<ViewStyle>;
70
+ inputStyle?: StyleProp<ViewStyle>;
71
+ labelStyle?: StyleProp<TextStyle>;
64
72
  swapButtonContainerStyle?: StyleProp<ViewStyle>;
65
73
  swapButtonStyle?: StyleProp<ViewStyle>;
66
74
  swapIconStyle?: StyleProp<TextStyle>;
67
- departureRowStyle?: StyleProp<ViewStyle>;
75
+ departureRowStyle?: StyleProp<ViewStyle>;
68
76
  searchButtonStyle?: StyleProp<ViewStyle>;
69
- searchIconStyle?: StyleProp<TextStyle>;
77
+ searchIconStyle?: StyleProp<TextStyle>;
70
78
 
71
79
  // DateRangePicker specific styles (passed down)
72
80
  dateRangePickerOuterContainerStyle?: StyleProp<ViewStyle>;
73
81
  dateRangePickerLabelStyle?: StyleProp<TextStyle>;
74
82
  dateRangePickerInputGroupStyle?: StyleProp<ViewStyle>;
75
- dateRangePickerCalendarContainerStyle?: StyleProp<ViewStyle>;
83
+ dateRangePickerCalendarContainerStyle?: StyleProp<ViewStyle>;
76
84
 
77
85
  // SuggestionList specific styles
78
86
  suggestionListContainerStyle?: StyleProp<ViewStyle>;
79
87
  // Styles for the default suggestion item rendering
80
- suggestionItemGroupStyle?: StyleProp<ViewStyle>;
81
- suggestionCityRowStyle?: StyleProp<ViewStyle>;
82
- suggestionCityIconStyle?: StyleProp<TextStyle>;
83
- suggestionCityTextStyle?: StyleProp<TextStyle>;
88
+ suggestionItemGroupStyle?: StyleProp<ViewStyle>;
89
+ suggestionCityRowStyle?: StyleProp<ViewStyle>;
90
+ suggestionCityIconStyle?: StyleProp<TextStyle>;
91
+ suggestionCityTextStyle?: StyleProp<TextStyle>;
84
92
  suggestionAirportTouchableStyle?: StyleProp<ViewStyle>;
85
93
  suggestionAirportIconStyle?: StyleProp<TextStyle>;
86
- suggestionAirportTextStyle?: StyleProp<TextStyle>;
94
+ suggestionAirportTextStyle?: StyleProp<TextStyle>;
87
95
  }
88
96
  // --- Component ---
89
97
  const FlightForm: React.FC<FlightFormProps> = ({
@@ -130,6 +138,8 @@ const FlightForm: React.FC<FlightFormProps> = ({
130
138
  suggestionAirportTouchableStyle,
131
139
  suggestionAirportIconStyle,
132
140
  suggestionAirportTextStyle,
141
+ inputStyle,
142
+ onSelectionChange
133
143
  }) => {
134
144
  const { theme, isRTL } = useTheme();
135
145
  const styles = useMemo(() => themedStyles(theme, isRTL), [theme, isRTL]);
@@ -160,6 +170,15 @@ const FlightForm: React.FC<FlightFormProps> = ({
160
170
  onSwapPress?.(currentFrom, currentTo);
161
171
  }, [fromLocation, toLocation, onSwapPress]);
162
172
 
173
+ useEffect(() => {
174
+ onSelectionChange?.({
175
+ from: fromLocation,
176
+ to: toLocation,
177
+ departure: departureDate,
178
+ return: isOneWay ? undefined : returnDate,
179
+ });
180
+ }, [fromLocation, toLocation, departureDate, returnDate, isOneWay, onSelectionChange]);
181
+
163
182
  const handleSearch = useCallback(() => {
164
183
  onSearchPress?.({
165
184
  from: fromLocation,
@@ -233,6 +252,7 @@ const FlightForm: React.FC<FlightFormProps> = ({
233
252
  setFromLocation(text);
234
253
  onTextChange?.(text);
235
254
  }}
255
+ inputStyle={inputStyle}
236
256
  label={fromLabel}
237
257
  value={fromLocation}
238
258
  labelStyle={[styles.label, labelStyle]}
@@ -248,7 +268,7 @@ const FlightForm: React.FC<FlightFormProps> = ({
248
268
  }
249
269
  }, 150);
250
270
  }}
251
- containerStyle={customInputContainerStyle}
271
+ inputContainerStyle={customInputContainerStyle}
252
272
  />
253
273
  {suggestionData && (
254
274
  <SuggestionList
@@ -260,20 +280,22 @@ const FlightForm: React.FC<FlightFormProps> = ({
260
280
  )}
261
281
  </View>
262
282
 
263
- <View style={[styles.swapButtonContainer, swapButtonContainerStyle]}>
264
- <TouchableOpacity
265
- style={[styles.swapButton, swapButtonStyle]}
266
- onPress={handleSwap}
267
- activeOpacity={0.7}
268
- >
269
- <Ionicons
270
- name={swapIconName}
271
- size={20}
272
- color={theme.onSurface}
273
- style={swapIconStyle}
274
- />
275
- </TouchableOpacity>
276
- </View>
283
+ {onSwapPress && (
284
+ <View style={[styles.swapButtonContainer, swapButtonContainerStyle]}>
285
+ <TouchableOpacity
286
+ style={[styles.swapButton, swapButtonStyle]}
287
+ onPress={handleSwap}
288
+ activeOpacity={0.7}
289
+ >
290
+ <Ionicons
291
+ name={swapIconName}
292
+ size={20}
293
+ color={theme.onSurface}
294
+ style={swapIconStyle}
295
+ />
296
+ </TouchableOpacity>
297
+ </View>
298
+ )}
277
299
 
278
300
  {/* Apply inputWrapperStyle */}
279
301
  <View style={[styles.inputWrapper, inputWrapperStyle]}>
@@ -285,6 +307,7 @@ const FlightForm: React.FC<FlightFormProps> = ({
285
307
  }}
286
308
  label={toLabel}
287
309
  value={toLocation}
310
+ inputStyle={inputStyle}
288
311
  labelStyle={[styles.label, labelStyle]}
289
312
  placeholder={toPlaceholder}
290
313
  onFocus={() => {
@@ -292,15 +315,13 @@ const FlightForm: React.FC<FlightFormProps> = ({
292
315
  onInputFocus?.(FormInputType.FLIGHT_TO);
293
316
  }}
294
317
  onBlur={() => {
295
- // Delay blur slightly to allow suggestion press
296
318
  setTimeout(() => {
297
319
  if (focusedInput === FormInputType.FLIGHT_TO) {
298
320
  setFocusedInput(undefined);
299
321
  }
300
322
  }, 150);
301
323
  }}
302
- // Apply customInputContainerStyle (passed to CustomInput)
303
- containerStyle={customInputContainerStyle}
324
+ inputContainerStyle={customInputContainerStyle}
304
325
  />
305
326
  {suggestionData && (
306
327
  <SuggestionList
@@ -320,13 +341,13 @@ const FlightForm: React.FC<FlightFormProps> = ({
320
341
  returnLabel={returnLabel}
321
342
  departureLabel={departureLabel}
322
343
  outerContainerStyle={[
323
- styles.dateRangePickerOuterContainer,
344
+ styles.dateRangePickerOuterContainer,
324
345
  dateRangePickerOuterContainerStyle,
325
346
  ]}
326
347
  labelStyle={[labelStyle, dateRangePickerLabelStyle]}
327
348
  inputGroupStyle={dateRangePickerInputGroupStyle}
328
- calendarContainerStyle={dateRangePickerCalendarContainerStyle}
329
- calendarThemeOverrides={calendarThemeOverrides}
349
+ calendarContainerStyle={dateRangePickerCalendarContainerStyle}
350
+ calendarThemeOverrides={calendarThemeOverrides}
330
351
  onDatesChange={(d) => {
331
352
  setDepartureDate(d.departure);
332
353
  setReturnDate(d.return);
@@ -336,18 +357,20 @@ const FlightForm: React.FC<FlightFormProps> = ({
336
357
  initialReturnDate={initialReturnDate}
337
358
  />
338
359
  {/* Search Button */}
339
- <TouchableOpacity
340
- style={[styles.searchButton, searchButtonStyle]}
341
- onPress={handleSearch}
342
- activeOpacity={0.8}
343
- >
344
- <Ionicons
345
- name={searchIconName}
346
- size={24}
347
- color={theme.onPrimary}
348
- style={searchIconStyle}
349
- />
350
- </TouchableOpacity>
360
+ {onSearchPress && (
361
+ <TouchableOpacity
362
+ style={[styles.searchButton, searchButtonStyle]}
363
+ onPress={handleSearch}
364
+ activeOpacity={0.8}
365
+ >
366
+ <Ionicons
367
+ name={searchIconName}
368
+ size={24}
369
+ color={theme.onPrimary}
370
+ style={searchIconStyle}
371
+ />
372
+ </TouchableOpacity>
373
+ )}
351
374
  </View>
352
375
  </View>
353
376
  );
@@ -221,7 +221,9 @@ const FlightSummary: React.FC<FlightSummaryProps> = ({
221
221
  label?: string
222
222
  ) => (
223
223
  <View>
224
- <Text>{label}</Text>
224
+ <Text style={{ color: theme.labelText, fontSize: 12, marginBottom: 6 }}>
225
+ {label}
226
+ </Text>
225
227
  <View style={[styles.buttonGroupContainer, buttonGroupContainerStyle]}>
226
228
  {items.map((item) => {
227
229
  const isSelected = item === selectedValue;