related-ui-components 2.7.4 → 2.7.6

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 (31) hide show
  1. package/lib/module/app.js +3 -19
  2. package/lib/module/app.js.map +1 -1
  3. package/lib/module/components/Card/templates/SelaDealCard.js +16 -13
  4. package/lib/module/components/Card/templates/SelaDealCard.js.map +1 -1
  5. package/lib/module/components/TravelBooking/FlightSummary.js +219 -112
  6. package/lib/module/components/TravelBooking/FlightSummary.js.map +1 -1
  7. package/lib/module/components/TravelBooking/SummaryBar.js +239 -172
  8. package/lib/module/components/TravelBooking/SummaryBar.js.map +1 -1
  9. package/lib/module/components/TravelBooking/TravelBooking.js +407 -241
  10. package/lib/module/components/TravelBooking/TravelBooking.js.map +1 -1
  11. package/lib/module/components/TravelBooking/index.js +5 -4
  12. package/lib/module/components/TravelBooking/index.js.map +1 -1
  13. package/lib/module/index.js +2 -2
  14. package/lib/typescript/src/app.d.ts.map +1 -1
  15. package/lib/typescript/src/components/Card/templates/SelaDealCard.d.ts.map +1 -1
  16. package/lib/typescript/src/components/TravelBooking/FlightSummary.d.ts +25 -11
  17. package/lib/typescript/src/components/TravelBooking/FlightSummary.d.ts.map +1 -1
  18. package/lib/typescript/src/components/TravelBooking/SummaryBar.d.ts +1 -16
  19. package/lib/typescript/src/components/TravelBooking/SummaryBar.d.ts.map +1 -1
  20. package/lib/typescript/src/components/TravelBooking/TravelBooking.d.ts +1 -83
  21. package/lib/typescript/src/components/TravelBooking/TravelBooking.d.ts.map +1 -1
  22. package/lib/typescript/src/components/TravelBooking/index.d.ts +0 -4
  23. package/lib/typescript/src/components/TravelBooking/index.d.ts.map +1 -1
  24. package/package.json +1 -1
  25. package/src/app.tsx +14 -3
  26. package/src/components/Card/templates/SelaDealCard.tsx +12 -9
  27. package/src/components/TravelBooking/FlightSummary.tsx +264 -164
  28. package/src/components/TravelBooking/SummaryBar.tsx +239 -239
  29. package/src/components/TravelBooking/TravelBooking.tsx +407 -407
  30. package/src/components/TravelBooking/index.ts +4 -4
  31. package/src/index.ts +3 -3
package/lib/module/app.js CHANGED
@@ -4,14 +4,12 @@ import React, { useState } from "react";
4
4
  import { SafeAreaView, StyleSheet, StatusBar } from "react-native";
5
5
  // Adjust path as needed
6
6
  import { GestureHandlerRootView } from "react-native-gesture-handler";
7
- import { RedemptionOption } from "./components/index.js";
7
+ import { FlightSummary } from "./components/index.js";
8
8
  import { lightTheme, RelatedProvider, useTheme } from "./theme/index.js";
9
9
  import { BottomSheetStackProvider } from "./contexts/index.js";
10
10
  import { SafeAreaProvider } from "react-native-safe-area-context";
11
- import { Ionicons } from "@expo/vector-icons";
12
-
13
- // Sample data - replace with your actual image URLs
14
11
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
12
+ // Sample data - replace with your actual image URLs
15
13
  const DUMMY_DATA = [{
16
14
  id: "1",
17
15
  image: "https://images.pexels.com/photos/3354648/pexels-photo-3354648.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
@@ -64,21 +62,7 @@ const App = () => {
64
62
  barStyle: "light-content"
65
63
  }), /*#__PURE__*/_jsx(SafeAreaView, {
66
64
  style: styles.appContainer,
67
- children: /*#__PURE__*/_jsx(RedemptionOption, {
68
- textContainerStyle: {
69
- flex: 1
70
- }
71
- // containerStyle={{ flex: 1, alignItems: "center" }}
72
- ,
73
- text: "hola",
74
- textStyle: {
75
- fontSize: 20
76
- },
77
- icon: /*#__PURE__*/_jsx(Ionicons, {
78
- name: "accessibility"
79
- }),
80
- orientation: "horizontal"
81
- })
65
+ children: /*#__PURE__*/_jsx(FlightSummary, {})
82
66
  })]
83
67
  })
84
68
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","RedemptionOption","lightTheme","RelatedProvider","useTheme","BottomSheetStackProvider","SafeAreaProvider","Ionicons","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","textContainerStyle","text","textStyle","fontSize","icon","name","orientation","create","backgroundColor","justifyContent","alignItems"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","SafeAreaView","StyleSheet","StatusBar","GestureHandlerRootView","FlightSummary","lightTheme","RelatedProvider","useTheme","BottomSheetStackProvider","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DUMMY_DATA","id","image","title","App","theme","departureDate","setDepartureDate","undefined","returnDate","setReturnDate","progress","setProgress","handleAnimate","newProgress","Math","floor","random","children","style","flex","barStyle","styles","appContainer","create","backgroundColor","justifyContent","alignItems"],"sourceRoot":"..\\..\\src","sources":["app.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAeC,QAAQ,QAAQ,OAAO;AAClD,SAASC,YAAY,EAAEC,UAAU,EAAEC,SAAS,QAAkC,cAAc;AACV;AAClF,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAIEC,aAAa,QAOR,uBAAc;AACrB,SAASC,UAAU,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,kBAAS;AAG/D,SAASC,wBAAwB,QAAQ,qBAAY;AACrD,SAASC,gBAAgB,QAAQ,gCAAgC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAGlE;AACA,MAAMC,UAAU,GAAG,CACjB;EACEC,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;EACEF,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT,CAAC,EACD;EACEF,EAAE,EAAE,GAAG;EACPC,KAAK,EACH,iHAAiH;EACnHC,KAAK,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,CACD;AAED,MAAMC,GAAG,GAAGA,CAAA,KAAM;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGd,QAAQ,CAAC,CAAC;EAE5B,MAAM,CAACe,aAAa,EAAEC,gBAAgB,CAAC,GAAGxB,QAAQ,CAChDyB,SACF,CAAC;EACD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG3B,QAAQ,CAAqByB,SAAS,CAAC;EAE3E,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAG7B,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM8B,aAAa,GAAGA,CAAA,KAAM;IAC1B;IACA,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;IACnDL,WAAW,CAACE,WAAW,CAAC;EAC1B,CAAC;EAID,oBACEnB,IAAA,CAAAI,SAAA;IAAAmB,QAAA,eACEvB,IAAA,CAACF,gBAAgB;MAAAyB,QAAA,eACfvB,IAAA,CAACR,sBAAsB;QAACgC,KAAK,EAAE;UAAEC,IAAI,EAAE;QAAE,CAAE;QAAAF,QAAA,eACzCvB,IAAA,CAACL,eAAe;UAACe,KAAK,EAAEhB,UAAW;UAAA6B,QAAA,eACjCrB,KAAA,CAACL,wBAAwB;YAAA0B,QAAA,gBACvBvB,IAAA,CAACT,SAAS;cAACmC,QAAQ,EAAC;YAAe,CAAE,CAAC,eACtC1B,IAAA,CAACX,YAAY;cAACmC,KAAK,EAAEG,MAAM,CAACC,YAAa;cAAAL,QAAA,eAwCvCvB,IAAA,CAACP,aAAa,IAAgB;YAAC,CAiCnB,CAAC;UAAA,CACS;QAAC,CACZ;MAAC,CACI;IAAC,CACT;EAAC,CACnB,CAAC;AAEP,CAAC;AAED,MAAMkC,MAAM,GAAGrC,UAAU,CAACuC,MAAM,CAAC;EAC/BD,YAAY,EAAE;IACZH,IAAI,EAAE,CAAC;IACPK,eAAe,EAAE,MAAM;IACvBC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,UAAU,EAAC;EACb;AACF,CAAC,CAAC;AAEF,eAAevB,GAAG","ignoreList":[]}
@@ -59,12 +59,10 @@ const SelaDealCard = ({
59
59
  const finalPriceContainerStyle = [styles.priceContainerBase, variant === "horizontal" ? styles.priceContainerHorizontal : styles.priceContainerVertical, priceContainerStyle];
60
60
  const finalPriceStyle = [styles.priceTextBase, priceStyle];
61
61
  const providerTextStyle = [styles.providerNameBase, {
62
- color: theme.onSurface,
63
- textAlign: isRTL ? "right" : "left"
62
+ color: theme.onSurface
64
63
  }, providerNameStyle];
65
64
  const descriptionTextStyle = [styles.descriptionBase, {
66
- color: theme.onSurface,
67
- textAlign: isRTL ? "right" : "left"
65
+ color: theme.onSurface
68
66
  }, descriptionStyle];
69
67
  return /*#__PURE__*/_jsxs(Card, {
70
68
  onPress: onPress,
@@ -92,9 +90,11 @@ const SelaDealCard = ({
92
90
  }), /*#__PURE__*/_jsxs(View, {
93
91
  style: styles.overlayContainer,
94
92
  children: [/*#__PURE__*/_jsx(View, {
95
- style: [styles.topSection, {
96
- alignItems: "flex-start"
97
- }],
93
+ style: [styles.topSection
94
+ // {
95
+ // alignItems: "flex-start",
96
+ // },
97
+ ],
98
98
  children: label && /*#__PURE__*/_jsx(View, {
99
99
  style: finalLabelContainerStyle,
100
100
  children: /*#__PURE__*/_jsx(Text, {
@@ -163,7 +163,9 @@ const getStyles = (theme, isRTL) => StyleSheet.create({
163
163
  padding: 16,
164
164
  justifyContent: "space-between"
165
165
  },
166
- topSection: {},
166
+ topSection: {
167
+ flexDirection: "row"
168
+ },
167
169
  labelContainerBase: {
168
170
  paddingVertical: 6,
169
171
  paddingHorizontal: 12,
@@ -188,20 +190,20 @@ const getStyles = (theme, isRTL) => StyleSheet.create({
188
190
  paddingVertical: 8,
189
191
  paddingHorizontal: 16,
190
192
  borderRadius: 10,
191
- overflow: "hidden"
192
- // backgroundColor: theme.primary,
193
+ overflow: "hidden",
194
+ backgroundColor: theme.primary
193
195
  },
194
196
  priceTextBase: {
195
197
  fontSize: 16,
196
198
  color: theme.onPrimary
197
199
  },
198
200
  bottomContentHorizontal: {
199
- flexDirection: isRTL ? "row-reverse" : "row",
200
- justifyContent: "space-between",
201
+ flexDirection: "row",
201
202
  alignItems: "flex-end"
202
203
  },
203
204
  textBlockHorizontal: {
204
205
  flex: 1,
206
+ alignItems: "flex-start",
205
207
  marginRight: 10
206
208
  },
207
209
  priceContainerHorizontal: {},
@@ -209,7 +211,8 @@ const getStyles = (theme, isRTL) => StyleSheet.create({
209
211
  flexDirection: "column"
210
212
  },
211
213
  textBlockVertical: {
212
- marginBottom: 12
214
+ marginBottom: 12,
215
+ alignItems: "flex-start"
213
216
  },
214
217
  priceContainerVertical: {
215
218
  alignSelf: "stretch",
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","View","StyleSheet","Image","Card","useTheme","LockOverlay","BlurView","ThemedText","Text","jsx","_jsx","jsxs","_jsxs","SelaDealCard","variant","backgroundImage","label","labelStyle","labelContainerStyle","providerName","providerNameStyle","description","descriptionStyle","price","priceStyle","priceContainerStyle","onPress","style","width","height","isRTL","propIsRTL","borderRadius","darkOverlayEnabled","darkOverlayColor","lockOverlay","priceContainerBlur","theme","themeIsRTL","undefined","styles","getStyles","dynamicHeight","setDynamicHeight","uri","getSize","imgWidth","imgHeight","aspectRatio","finalLabelContainerStyle","labelContainerBase","finalLabelStyle","labelTextBase","finalPriceContainerStyle","priceContainerBase","priceContainerHorizontal","priceContainerVertical","finalPriceStyle","priceTextBase","providerTextStyle","providerNameBase","color","onSurface","textAlign","descriptionTextStyle","descriptionBase","cardBase","source","resizeMode","children","absoluteFill","backgroundColor","visible","contentPosition","iconSize","text","overlayOpacity","overlayContainer","topSection","alignItems","bottomContentHorizontal","textBlockHorizontal","bottomContentVertical","textBlockVertical","experimentalBlurMethod","intensity","tint","primary","create","overflow","position","flex","padding","justifyContent","paddingVertical","paddingHorizontal","background","fontWeight","fontSize","onBackground","marginBottom","secondary","helper","onPrimary","flexDirection","marginRight","alignSelf"],"sourceRoot":"..\\..\\..\\..\\..\\src","sources":["components/Card/templates/SelaDealCard.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","View","StyleSheet","Image","Card","useTheme","LockOverlay","BlurView","ThemedText","Text","jsx","_jsx","jsxs","_jsxs","SelaDealCard","variant","backgroundImage","label","labelStyle","labelContainerStyle","providerName","providerNameStyle","description","descriptionStyle","price","priceStyle","priceContainerStyle","onPress","style","width","height","isRTL","propIsRTL","borderRadius","darkOverlayEnabled","darkOverlayColor","lockOverlay","priceContainerBlur","theme","themeIsRTL","undefined","styles","getStyles","dynamicHeight","setDynamicHeight","uri","getSize","imgWidth","imgHeight","aspectRatio","finalLabelContainerStyle","labelContainerBase","finalLabelStyle","labelTextBase","finalPriceContainerStyle","priceContainerBase","priceContainerHorizontal","priceContainerVertical","finalPriceStyle","priceTextBase","providerTextStyle","providerNameBase","color","onSurface","descriptionTextStyle","descriptionBase","cardBase","source","resizeMode","children","absoluteFill","backgroundColor","visible","contentPosition","iconSize","text","overlayOpacity","overlayContainer","topSection","bottomContentHorizontal","textBlockHorizontal","bottomContentVertical","textBlockVertical","experimentalBlurMethod","intensity","tint","primary","create","overflow","position","flex","padding","justifyContent","flexDirection","paddingVertical","paddingHorizontal","background","fontWeight","fontSize","onBackground","marginBottom","secondary","helper","onPrimary","alignItems","marginRight","alignSelf"],"sourceRoot":"..\\..\\..\\..\\..\\src","sources":["components/Card/templates/SelaDealCard.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,10 +2,19 @@
2
2
 
3
3
  import { useTheme } from "../../theme/index.js";
4
4
  import React, { useCallback, useEffect, useMemo, useState } from "react";
5
- import { StyleSheet, TouchableOpacity, View } from "react-native";
5
+ import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
6
6
  import { NumericStepper } from "../NumericStepper/index.js";
7
- import { ThemedText as Text } from "../ui/index.js";
7
+ import RNPickerSelect from "react-native-picker-select";
8
+ import { Ionicons } from "@expo/vector-icons";
9
+
10
+ // --- TYPE DEFINITIONS (Updated) ---
11
+
12
+ // Represents an individual child or infant with a selectable age
13
+
14
+ // Updated FlightSelection to handle individual passengers
8
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ // --- CONFIGURATION ---
17
+
9
18
  const DEFAULT_PASSENGERS = [{
10
19
  key: "adults",
11
20
  name: "Adults",
@@ -19,14 +28,24 @@ const DEFAULT_PASSENGERS = [{
19
28
  description: "2 - 11 years old",
20
29
  defaultValue: 0,
21
30
  minValue: 0,
22
- maxValue: 9
31
+ maxValue: 6,
32
+ ageRange: {
33
+ min: 2,
34
+ max: 11
35
+ },
36
+ defaultAge: 5
23
37
  }, {
24
38
  key: "infants",
25
39
  name: "Infants",
26
40
  description: "0 - 1 years old",
27
41
  defaultValue: 0,
28
42
  minValue: 0,
29
- maxValue: 9
43
+ maxValue: 4,
44
+ ageRange: {
45
+ min: 0,
46
+ max: 1
47
+ },
48
+ defaultAge: 0
30
49
  }];
31
50
  const DEFAULT_FLIGHT_TYPES = [{
32
51
  value: "ROUND_TRIP",
@@ -45,27 +64,38 @@ const DEFAULT_FLIGHT_CLASSES = [{
45
64
  value: "FIRST",
46
65
  name: "First"
47
66
  }];
48
- const getInitialPassengerCounts = config => {
49
- return config.reduce((acc, passenger) => {
50
- acc[passenger.key] = passenger.defaultValue;
51
- return acc;
52
- }, {});
67
+
68
+ // --- HELPER FUNCTION ---
69
+ const getInitialPassengerState = config => {
70
+ return {
71
+ adults: config.find(p => p.key === "adults")?.defaultValue ?? 1,
72
+ children: Array.from({
73
+ length: config.find(p => p.key === "children")?.defaultValue ?? 0
74
+ }, (_, i) => ({
75
+ id: `child_${i}_${Date.now()}`,
76
+ age: config.find(p => p.key === "children")?.defaultAge ?? 2
77
+ })),
78
+ infants: Array.from({
79
+ length: config.find(p => p.key === "infants")?.defaultValue ?? 0
80
+ }, (_, i) => ({
81
+ id: `infant_${i}_${Date.now()}`,
82
+ age: config.find(p => p.key === "infants")?.defaultAge ?? 0
83
+ }))
84
+ };
53
85
  };
54
86
 
55
- // --- Component Props ---
87
+ // --- PROPS INTERFACE ---
56
88
 
57
- // --- Component Implementation ---
89
+ // --- COMPONENT IMPLEMENTATION ---
58
90
  const FlightSummary = ({
59
- // Data
60
91
  passengersData: passengersProp = DEFAULT_PASSENGERS,
61
92
  flightTypesData: flightTypesProp = DEFAULT_FLIGHT_TYPES,
62
93
  flightClassesData: flightClassesProp = DEFAULT_FLIGHT_CLASSES,
63
94
  flightClassLabel = "Class",
64
95
  flightTypeLabel = "Type",
65
- // State & Callbacks
66
96
  selection,
67
97
  onSelectionChange,
68
- // Styles
98
+ formatPassengerAgeLabel = (passengerType, index) => `${passengerType} ${index} Age`,
69
99
  containerStyle,
70
100
  buttonGroupContainerStyle,
71
101
  buttonStyle,
@@ -77,11 +107,13 @@ const FlightSummary = ({
77
107
  passengerLabelContainerStyle,
78
108
  passengerNameStyle,
79
109
  passengerDescriptionStyle,
110
+ labelStyle,
111
+ agePickerRowStyle,
112
+ agePickerLabelStyle,
80
113
  stepperContainerStyle,
81
114
  stepperButtonStyle,
82
115
  stepperButtonTextStyle,
83
- stepperValueTextStyle,
84
- labelStyle
116
+ stepperValueTextStyle
85
117
  }) => {
86
118
  const {
87
119
  theme,
@@ -93,67 +125,71 @@ const FlightSummary = ({
93
125
  const flightClasses = useMemo(() => flightClassesProp, [flightClassesProp]);
94
126
  const [selectedFlightType, setSelectedFlightType] = useState(selection?.flightType ?? flightTypes[0].value);
95
127
  const [selectedFlightClass, setSelectedFlightClass] = useState(selection?.flightClass ?? flightClasses[0].value);
96
- const [passengerCounts, setPassengerCounts] = useState(selection?.passengers ?? getInitialPassengerCounts(passengersConfig));
97
- const handleFlightTypeSelect = useCallback(type => {
98
- setSelectedFlightType(type.value);
99
- const newState = {
100
- flightType: type.value,
101
- flightClass: selectedFlightClass,
102
- passengers: passengerCounts
103
- };
104
- onSelectionChange?.(newState);
105
- }, [selectedFlightClass, passengerCounts, onSelectionChange]);
106
- const handlePassengerChange = useCallback((passengerKey, action) => {
107
- setPassengerCounts(prevCounts => {
108
- const passengerInfo = passengersConfig.find(p => p.key === passengerKey);
109
- if (!passengerInfo) return prevCounts;
110
- const currentVal = prevCounts[passengerKey];
111
- const minValue = passengerInfo.minValue;
112
- const maxValue = passengerInfo.maxValue ?? 99;
113
- let newValue = currentVal;
114
- if (action === "increment") {
115
- newValue = Math.min(maxValue, currentVal + 1);
116
- } else if (action === "decrement") {
117
- newValue = Math.max(minValue, currentVal - 1);
118
- }
128
+ const [passengers, setPassengers] = useState(selection?.passengers ?? getInitialPassengerState(passengersConfig));
119
129
 
120
- // Only update if value changed
121
- if (newValue === currentVal) {
122
- return prevCounts;
123
- }
124
- const newCounts = {
125
- ...prevCounts,
126
- [passengerKey]: newValue
130
+ // Memoize the state to be sent upwards
131
+ const currentSelection = useMemo(() => ({
132
+ flightType: selectedFlightType,
133
+ flightClass: selectedFlightClass,
134
+ passengers
135
+ }), [selectedFlightType, selectedFlightClass, passengers]);
136
+
137
+ // Effect to call onSelectionChange when the memoized state changes
138
+ useEffect(() => {
139
+ onSelectionChange?.(currentSelection);
140
+ }, [currentSelection, onSelectionChange]);
141
+ const handlePassengerCountChange = useCallback((key, action) => {
142
+ setPassengers(prev => {
143
+ const config = passengersConfig.find(p => p.key === key);
144
+ if (!config) return prev;
145
+ let newPassengersState = {
146
+ ...prev
127
147
  };
128
- const newState = {
129
- flightType: selectedFlightType,
130
- flightClass: selectedFlightClass,
131
- passengers: newCounts
148
+ if (key === "adults") {
149
+ const currentVal = prev.adults;
150
+ const min = config.minValue;
151
+ const max = config.maxValue ?? 99;
152
+ let newValue = currentVal;
153
+ if (action === "increment") newValue = Math.min(max, currentVal + 1);else newValue = Math.max(min, currentVal - 1);
154
+ newPassengersState.adults = newValue;
155
+ } else {
156
+ // Handle children and infants (arrays)
157
+ const currentArray = prev[key];
158
+ if (action === "increment") {
159
+ if (currentArray.length < (config.maxValue ?? 99)) {
160
+ const newPassenger = {
161
+ id: `${key}_${Date.now()}`,
162
+ age: config.defaultAge ?? 0
163
+ };
164
+ newPassengersState[key] = [...currentArray, newPassenger];
165
+ }
166
+ } else {
167
+ if (currentArray.length > config.minValue) {
168
+ newPassengersState[key] = currentArray.slice(0, -1);
169
+ }
170
+ }
171
+ }
172
+ return newPassengersState;
173
+ });
174
+ }, [passengersConfig]);
175
+ const handleIndividualAgeChange = useCallback((key, id, newAge) => {
176
+ // Prevent update if newAge is null/undefined (from picker placeholder)
177
+ if (newAge === null || newAge === undefined) return;
178
+ setPassengers(prev => {
179
+ const newArray = prev[key].map(p => p.id === id ? {
180
+ ...p,
181
+ age: newAge
182
+ } : p);
183
+ return {
184
+ ...prev,
185
+ [key]: newArray
132
186
  };
133
- onSelectionChange?.(newState);
134
- return newCounts;
135
187
  });
136
- }, [passengersConfig, selectedFlightType, selectedFlightClass, onSelectionChange
137
- // No dependency on passengerCounts due to updater function usage
138
- ]);
139
- const handleFlightClassSelect = useCallback(fClass => {
140
- setSelectedFlightClass(fClass.value);
141
- const newState = {
142
- flightType: selectedFlightType,
143
- flightClass: fClass.value,
144
- passengers: passengerCounts
145
- };
146
- onSelectionChange?.(newState);
147
- }, [selectedFlightType, passengerCounts, onSelectionChange]);
148
-
149
- // --- Render Helpers ---
188
+ }, []);
150
189
  const renderButtonGroup = (items, selectedValue, onSelect, label) => /*#__PURE__*/_jsxs(View, {
190
+ style: styles.sectionContainer,
151
191
  children: [/*#__PURE__*/_jsx(Text, {
152
- style: [{
153
- color: theme.labelText,
154
- fontSize: 12,
155
- marginBottom: 6
156
- }, labelStyle],
192
+ style: [styles.sectionLabel, labelStyle],
157
193
  children: label
158
194
  }), /*#__PURE__*/_jsx(View, {
159
195
  style: [styles.buttonGroupContainer, buttonGroupContainerStyle],
@@ -171,43 +207,79 @@ const FlightSummary = ({
171
207
  })
172
208
  })]
173
209
  });
174
- useEffect(() => {
175
- onSelectionChange?.({
176
- flightType: selectedFlightType,
177
- flightClass: selectedFlightClass,
178
- passengers: passengerCounts
179
- });
180
- }, []);
210
+
211
+ // Helper to generate age items for the picker
212
+ const getAgePickerItems = config => {
213
+ if (!config?.ageRange) return [];
214
+ const {
215
+ min,
216
+ max
217
+ } = config.ageRange;
218
+ return Array.from({
219
+ length: max - min + 1
220
+ }, (_, i) => ({
221
+ label: `${min + i}`,
222
+ value: min + i
223
+ }));
224
+ };
181
225
  return /*#__PURE__*/_jsxs(View, {
182
226
  style: [styles.container, containerStyle],
183
- children: [renderButtonGroup(flightTypes, selectedFlightType, handleFlightTypeSelect, flightTypeLabel), /*#__PURE__*/_jsx(View, {
227
+ children: [renderButtonGroup(flightTypes, selectedFlightType, item => setSelectedFlightType(item.value), flightTypeLabel), /*#__PURE__*/_jsx(View, {
184
228
  style: [styles.passengerSection, passengerSectionStyle],
185
- children: passengersConfig.map(passenger => /*#__PURE__*/_jsxs(View, {
186
- style: [styles.passengerRow, passengerRowStyle],
229
+ children: passengersConfig.map(config => /*#__PURE__*/_jsxs(View, {
187
230
  children: [/*#__PURE__*/_jsxs(View, {
188
- style: [styles.passengerLabelContainer, passengerLabelContainerStyle],
189
- children: [/*#__PURE__*/_jsx(Text, {
190
- style: [styles.passengerName, passengerNameStyle],
191
- children: passenger.name
192
- }), /*#__PURE__*/_jsx(Text, {
193
- style: [styles.passengerDescription, passengerDescriptionStyle],
194
- children: passenger.description
231
+ style: [styles.passengerRow, passengerRowStyle],
232
+ children: [/*#__PURE__*/_jsxs(View, {
233
+ style: [styles.passengerLabelContainer, passengerLabelContainerStyle],
234
+ children: [/*#__PURE__*/_jsx(Text, {
235
+ style: [styles.passengerName, passengerNameStyle],
236
+ children: config.name
237
+ }), /*#__PURE__*/_jsx(Text, {
238
+ style: [styles.passengerDescription, passengerDescriptionStyle],
239
+ children: config.description
240
+ })]
241
+ }), /*#__PURE__*/_jsx(NumericStepper, {
242
+ value: config.key === "adults" ? passengers.adults : passengers[config.key].length,
243
+ minValue: config.minValue,
244
+ maxValue: config.maxValue,
245
+ onIncrement: () => handlePassengerCountChange(config.key, "increment"),
246
+ onDecrement: () => handlePassengerCountChange(config.key, "decrement"),
247
+ style: stepperContainerStyle,
248
+ buttonStyle: stepperButtonStyle,
249
+ buttonTextStyle: stepperButtonTextStyle,
250
+ valueTextStyle: stepperValueTextStyle
195
251
  })]
196
- }), /*#__PURE__*/_jsx(NumericStepper, {
197
- value: passengerCounts[passenger.key],
198
- minValue: passenger.minValue,
199
- maxValue: passenger.maxValue ?? 99,
200
- onIncrement: () => handlePassengerChange(passenger.key, "increment"),
201
- onDecrement: () => handlePassengerChange(passenger.key, "decrement")
202
- // Pass through stepper styles
203
- ,
204
- style: stepperContainerStyle,
205
- buttonStyle: stepperButtonStyle,
206
- buttonTextStyle: stepperButtonTextStyle,
207
- valueTextStyle: stepperValueTextStyle
208
- })]
209
- }, passenger.key))
210
- }), renderButtonGroup(flightClasses, selectedFlightClass, handleFlightClassSelect, flightClassLabel)]
252
+ }), (config.key === "children" || config.key === "infants") && passengers[config.key].map((passenger, index) => /*#__PURE__*/_jsxs(View, {
253
+ style: [styles.agePickerRow, agePickerRowStyle],
254
+ children: [/*#__PURE__*/_jsxs(Text, {
255
+ style: [styles.agePickerLabel, agePickerLabelStyle],
256
+ children: [" ", formatPassengerAgeLabel(config.name, index + 1)]
257
+ }), /*#__PURE__*/_jsx(View, {
258
+ style: styles.pickerContainer,
259
+ children: /*#__PURE__*/_jsx(RNPickerSelect, {
260
+ value: passenger.age,
261
+ onValueChange: value => handleIndividualAgeChange(config.key, passenger.id, value),
262
+ items: getAgePickerItems(config),
263
+ placeholder: {},
264
+ style: {
265
+ inputIOS: styles.pickerInput,
266
+ inputAndroid: styles.pickerInput,
267
+ iconContainer: styles.pickerIconContainer
268
+ },
269
+ textInputProps: {
270
+ pointerEvents: "none"
271
+ },
272
+ useNativeAndroidPickerStyle: false,
273
+ Icon: () => /*#__PURE__*/_jsx(Ionicons, {
274
+ name: "chevron-down",
275
+ size: 20,
276
+ color: theme.helper
277
+ })
278
+ })
279
+ })]
280
+ }, passenger.id))]
281
+ }, config.key))
282
+ }), renderButtonGroup(flightClasses, selectedFlightClass, item => setSelectedFlightClass(item.value), flightClassLabel)]
211
283
  });
212
284
  };
213
285
  const themedStyles = (theme, isRTL) => StyleSheet.create({
@@ -215,11 +287,18 @@ const themedStyles = (theme, isRTL) => StyleSheet.create({
215
287
  backgroundColor: theme.surface,
216
288
  padding: 16
217
289
  },
290
+ sectionContainer: {
291
+ marginBottom: 20
292
+ },
293
+ sectionLabel: {
294
+ color: theme.labelText,
295
+ fontSize: 12,
296
+ fontWeight: "600",
297
+ textTransform: "uppercase",
298
+ marginBottom: 8
299
+ },
218
300
  buttonGroupContainer: {
219
301
  flexDirection: "row",
220
- // marginBottom: 10,
221
- marginTop: 5,
222
- justifyContent: "flex-start",
223
302
  flexWrap: "wrap",
224
303
  gap: 8
225
304
  },
@@ -242,8 +321,7 @@ const themedStyles = (theme, isRTL) => StyleSheet.create({
242
321
  },
243
322
  selectedButtonText: {
244
323
  color: theme.onPrimary,
245
- fontWeight: "bold",
246
- fontSize: 14
324
+ fontWeight: "bold"
247
325
  },
248
326
  passengerSection: {
249
327
  marginVertical: 15
@@ -255,14 +333,11 @@ const themedStyles = (theme, isRTL) => StyleSheet.create({
255
333
  paddingVertical: 10,
256
334
  borderBottomWidth: StyleSheet.hairlineWidth,
257
335
  borderBottomColor: theme.divider
258
- // Remove width: '100%' unless absolutely necessary
259
336
  },
260
337
  passengerLabelContainer: {
261
338
  flexDirection: "column",
262
339
  alignItems: "flex-start",
263
340
  flexShrink: 1
264
- // marginRight: isRTL ? 0 : 8,
265
- // marginLeft: isRTL ? 8 : 0,
266
341
  },
267
342
  passengerName: {
268
343
  fontSize: 16,
@@ -271,8 +346,40 @@ const themedStyles = (theme, isRTL) => StyleSheet.create({
271
346
  },
272
347
  passengerDescription: {
273
348
  fontSize: 12,
274
- color: theme.text || theme.onSurface,
349
+ color: theme.helper,
275
350
  opacity: 0.8
351
+ },
352
+ agePickerRow: {
353
+ flexDirection: "row",
354
+ alignItems: "center",
355
+ justifyContent: "space-between",
356
+ paddingVertical: 8,
357
+ paddingHorizontal: 16,
358
+ backgroundColor: theme.background,
359
+ borderBottomWidth: StyleSheet.hairlineWidth,
360
+ borderColor: theme.divider
361
+ },
362
+ agePickerLabel: {
363
+ fontSize: 14,
364
+ color: theme.onBackground
365
+ },
366
+ pickerContainer: {
367
+ width: 120,
368
+ height: 40,
369
+ borderWidth: 1,
370
+ borderColor: theme.border,
371
+ borderRadius: 8,
372
+ justifyContent: "center"
373
+ },
374
+ pickerInput: {
375
+ fontSize: 14,
376
+ paddingHorizontal: 10,
377
+ paddingVertical: 8,
378
+ color: theme.onSurface
379
+ },
380
+ pickerIconContainer: {
381
+ top: 10,
382
+ right: 10
276
383
  }
277
384
  });
278
385
  export default FlightSummary;