mautourco-components 0.2.46 → 0.2.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/molecules/AgeSelector/AgeSelector.d.ts +20 -0
- package/dist/components/molecules/AgeSelector/AgeSelector.js +84 -0
- package/dist/components/molecules/LocationDropdown/LocationDropdown.js +1 -1
- package/dist/components/organisms/PaxSelector/PaxSelector.d.ts +5 -0
- package/dist/components/organisms/PaxSelector/PaxSelector.js +100 -114
- package/dist/components/organisms/RoundTrip/RoundTrip.d.ts +2 -0
- package/dist/components/organisms/RoundTrip/RoundTrip.js +7 -7
- package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.d.ts +4 -0
- package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.js +19 -57
- package/dist/components/organisms/TransferLine/TransferLine.d.ts +9 -5
- package/dist/components/organisms/TransferLine/TransferLine.js +52 -35
- package/dist/index.d.ts +19 -16
- package/dist/index.js +3 -1
- package/dist/styles/components/molecule/age-selector.css +216 -0
- package/dist/styles/components/molecule/calendarInput.css +25 -6
- package/dist/styles/components/molecule/location-dropdown.css +16 -4
- package/dist/styles/components/organism/pax-selector.css +27 -189
- package/dist/styles/components/organism/transfer-line.css +40 -0
- package/dist/styles/mautourco.css +1 -0
- package/package.json +1 -1
- package/src/components/molecules/AgeSelector/AgeSelector.tsx +172 -0
- package/src/components/molecules/LocationDropdown/LocationDropdown.tsx +1 -1
- package/src/components/organisms/PaxSelector/PaxSelector.tsx +132 -208
- package/src/components/organisms/RoundTrip/RoundTrip.tsx +7 -0
- package/src/components/organisms/SearchBarTransfer/SearchBarTransfer.tsx +34 -54
- package/src/components/organisms/TransferLine/TransferLine.tsx +107 -85
- package/src/styles/components/molecule/age-selector.css +136 -0
- package/src/styles/components/molecule/calendarInput.css +12 -4
- package/src/styles/components/molecule/location-dropdown.css +9 -2
- package/src/styles/components/organism/pax-selector.css +25 -186
- package/src/styles/components/organism/transfer-line.css +31 -0
|
@@ -32,7 +32,7 @@ import TransferLine from "../TransferLine/TransferLine";
|
|
|
32
32
|
var transferIdCounter = 0;
|
|
33
33
|
var SearchBarTransfer = function (_a) {
|
|
34
34
|
var _b, _c;
|
|
35
|
-
var _d = _a.mode, initialMode = _d === void 0 ? "roundtrip" : _d, _e = _a.locations, locations = _e === void 0 ? { options: [], groups: [] } : _e, defaultRoundTripData = _a.defaultRoundTripData, defaultTransferLines = _a.defaultTransferLines, _f = _a.defaultSameVehicle, defaultSameVehicle = _f === void 0 ? false : _f, onSearch = _a.onSearch, onChange = _a.onChange, _g = _a.className, className = _g === void 0 ? "" : _g;
|
|
35
|
+
var _d = _a.mode, initialMode = _d === void 0 ? "roundtrip" : _d, _e = _a.locations, locations = _e === void 0 ? { options: [], groups: [] } : _e, defaultRoundTripData = _a.defaultRoundTripData, defaultTransferLines = _a.defaultTransferLines, _f = _a.defaultSameVehicle, defaultSameVehicle = _f === void 0 ? false : _f, onSearch = _a.onSearch, onChange = _a.onChange, onRemove = _a.onRemove, _g = _a.className, className = _g === void 0 ? "" : _g, _h = _a.scrollOnOpen, scrollOnOpen = _h === void 0 ? false : _h;
|
|
36
36
|
// Generate unique ID for transfer lines
|
|
37
37
|
var generateTransferId = function () {
|
|
38
38
|
transferIdCounter += 1;
|
|
@@ -44,11 +44,11 @@ var SearchBarTransfer = function (_a) {
|
|
|
44
44
|
return [];
|
|
45
45
|
return lines.map(function (line) { return (__assign(__assign({}, line), { id: line.id || generateTransferId() })); });
|
|
46
46
|
};
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
47
|
+
var _j = useState(initialMode), mode = _j[0], setMode = _j[1];
|
|
48
|
+
var _k = useState(defaultSameVehicle), sameVehicle = _k[0], setSameVehicle = _k[1];
|
|
49
|
+
var _l = useState(defaultRoundTripData), roundTripData = _l[0], setRoundTripData = _l[1];
|
|
50
|
+
var _m = useState(initializeTransferLines(defaultTransferLines)), transferLines = _m[0], setTransferLines = _m[1];
|
|
51
|
+
var _o = useState(null), error = _o[0], setError = _o[1];
|
|
52
52
|
// Notify parent of changes
|
|
53
53
|
useEffect(function () {
|
|
54
54
|
var data = {
|
|
@@ -69,25 +69,9 @@ var SearchBarTransfer = function (_a) {
|
|
|
69
69
|
var transferMode = newMode;
|
|
70
70
|
if (transferMode === mode)
|
|
71
71
|
return;
|
|
72
|
-
if (transferMode === "custom" && mode === "roundtrip"
|
|
73
|
-
//
|
|
74
|
-
|
|
75
|
-
id: generateTransferId(),
|
|
76
|
-
type: "arrival",
|
|
77
|
-
paxData: roundTripData.paxData,
|
|
78
|
-
transferDate: roundTripData.arrivalDate,
|
|
79
|
-
pickupPoint: roundTripData.pickupDropoffPoint,
|
|
80
|
-
dropoffPoint: roundTripData.accommodation,
|
|
81
|
-
};
|
|
82
|
-
var departureTransfer = {
|
|
83
|
-
id: generateTransferId(),
|
|
84
|
-
type: "departure",
|
|
85
|
-
paxData: roundTripData.paxData,
|
|
86
|
-
transferDate: roundTripData.departureDate,
|
|
87
|
-
pickupPoint: roundTripData.accommodation,
|
|
88
|
-
dropoffPoint: roundTripData.pickupDropoffPoint,
|
|
89
|
-
};
|
|
90
|
-
setTransferLines([arrivalTransfer, departureTransfer]);
|
|
72
|
+
if (transferMode === "custom" && mode === "roundtrip") {
|
|
73
|
+
// When switching to custom mode, reset transfer lines (will show placeholder)
|
|
74
|
+
setTransferLines([]);
|
|
91
75
|
setRoundTripData(undefined);
|
|
92
76
|
}
|
|
93
77
|
else if (transferMode === "roundtrip" && mode === "custom") {
|
|
@@ -108,42 +92,15 @@ var SearchBarTransfer = function (_a) {
|
|
|
108
92
|
};
|
|
109
93
|
// Render transfer type buttons
|
|
110
94
|
var renderTransferTypeButtons = function (onClick) { return (_jsxs("div", { className: "search-bar-transfer__add-buttons", children: [_jsx(Button, { variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return onClick("arrival"); }, children: "Add Arrival" }), _jsx(Button, { variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return onClick("departure"); }, children: "Add Departure" }), _jsx(Button, { variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return onClick("inter-hotel"); }, children: "Add Inter-Hotel" })] })); };
|
|
111
|
-
// Handle adding transfer from round-trip mode (
|
|
95
|
+
// Handle adding transfer from round-trip mode (switches to custom and adds new transfer)
|
|
112
96
|
var handleAddTransferFromRoundTrip = function (type) {
|
|
113
|
-
if (!roundTripData) {
|
|
114
|
-
// If no round trip data, just add a new transfer and switch to custom
|
|
115
|
-
var newTransfer_1 = {
|
|
116
|
-
id: generateTransferId(),
|
|
117
|
-
type: type,
|
|
118
|
-
};
|
|
119
|
-
setTransferLines([newTransfer_1]);
|
|
120
|
-
setMode("custom");
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
// Convert roundtrip to two transfer lines
|
|
124
|
-
var arrivalTransfer = {
|
|
125
|
-
id: generateTransferId(),
|
|
126
|
-
type: "arrival",
|
|
127
|
-
paxData: roundTripData.paxData,
|
|
128
|
-
transferDate: roundTripData.arrivalDate,
|
|
129
|
-
pickupPoint: roundTripData.pickupDropoffPoint,
|
|
130
|
-
dropoffPoint: roundTripData.accommodation,
|
|
131
|
-
};
|
|
132
|
-
var departureTransfer = {
|
|
133
|
-
id: generateTransferId(),
|
|
134
|
-
type: "departure",
|
|
135
|
-
paxData: roundTripData.paxData,
|
|
136
|
-
transferDate: roundTripData.departureDate,
|
|
137
|
-
pickupPoint: roundTripData.accommodation,
|
|
138
|
-
dropoffPoint: roundTripData.pickupDropoffPoint,
|
|
139
|
-
};
|
|
140
97
|
// Add the new transfer of the clicked type
|
|
141
98
|
var newTransfer = {
|
|
142
99
|
id: generateTransferId(),
|
|
143
100
|
type: type,
|
|
144
101
|
};
|
|
145
|
-
// Set
|
|
146
|
-
setTransferLines([
|
|
102
|
+
// Set the transfer and switch to custom mode
|
|
103
|
+
setTransferLines([newTransfer]);
|
|
147
104
|
setRoundTripData(undefined);
|
|
148
105
|
setMode("custom");
|
|
149
106
|
setError(null);
|
|
@@ -156,6 +113,11 @@ var SearchBarTransfer = function (_a) {
|
|
|
156
113
|
};
|
|
157
114
|
// Handle transfer line deletion
|
|
158
115
|
var handleDeleteTransferLine = function (id) {
|
|
116
|
+
var index = transferLines.findIndex(function (line) { return line.id === id; });
|
|
117
|
+
var transferLine = transferLines.find(function (line) { return line.id === id; });
|
|
118
|
+
if (index !== -1 && transferLine) {
|
|
119
|
+
onRemove === null || onRemove === void 0 ? void 0 : onRemove(index, transferLine);
|
|
120
|
+
}
|
|
159
121
|
setTransferLines(function (prevLines) { return prevLines.filter(function (line) { return line.id !== id; }); });
|
|
160
122
|
};
|
|
161
123
|
// Validate data
|
|
@@ -207,7 +169,7 @@ var SearchBarTransfer = function (_a) {
|
|
|
207
169
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(data);
|
|
208
170
|
}
|
|
209
171
|
};
|
|
210
|
-
return (_jsxs("div", { className: "search-bar-transfer ".concat(className), children: [_jsxs("div", { className: "search-bar-transfer__header", children: [_jsx(Heading, { level: 5, variant: "bold", color: "accent", children: "Select your transfer details" }), _jsx("div", { className: "search-bar-transfer__mode-selector", children: _jsx(SegmentedButton, { options: modeOptions, value: mode, onChange: handleModeChange, name: "transfer-mode" }) })] }), mode === "roundtrip" ? (_jsxs(_Fragment, { children: [_jsx(RoundTrip, { id: "roundtrip-main", locations: locations, paxData: roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.paxData, arrivalDate: roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.arrivalDate, departureDate: roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.departureDate, pickupDropoffPoint: (_b = roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.pickupDropoffPoint) === null || _b === void 0 ? void 0 : _b.id, accommodation: (_c = roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.accommodation) === null || _c === void 0 ? void 0 : _c.id, onChange: setRoundTripData, checkEmpty: error !== null }), _jsx("div", { className: "search-bar-transfer__transfer-type", children: renderTransferTypeButtons(handleAddTransferFromRoundTrip) })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "search-bar-transfer__transfer-type", children: [_jsx(Text, { size: "lg", variant: "bold", color: "subtle", as: "div", className: "search-bar-transfer__transfer-type-label", children: "Select a transfer type you want to add" }), renderTransferTypeButtons(handleAddTransfer)] }), transferLines.length > 0 && (_jsx("div", { className: "search-bar-transfer__transfer-lines", children: (function () {
|
|
172
|
+
return (_jsxs("div", { className: "search-bar-transfer ".concat(className), children: [_jsxs("div", { className: "search-bar-transfer__header", children: [_jsx(Heading, { level: 5, variant: "bold", color: "accent", children: "Select your transfer details" }), _jsx("div", { className: "search-bar-transfer__mode-selector", children: _jsx(SegmentedButton, { options: modeOptions, value: mode, onChange: handleModeChange, name: "transfer-mode" }) })] }), mode === "roundtrip" ? (_jsxs(_Fragment, { children: [_jsx(RoundTrip, { id: "roundtrip-main", locations: locations, paxData: roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.paxData, arrivalDate: roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.arrivalDate, departureDate: roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.departureDate, pickupDropoffPoint: (_b = roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.pickupDropoffPoint) === null || _b === void 0 ? void 0 : _b.id, accommodation: (_c = roundTripData === null || roundTripData === void 0 ? void 0 : roundTripData.accommodation) === null || _c === void 0 ? void 0 : _c.id, onChange: setRoundTripData, checkEmpty: error !== null, scrollOnOpen: scrollOnOpen }), _jsx("div", { className: "search-bar-transfer__transfer-type", children: renderTransferTypeButtons(handleAddTransferFromRoundTrip) })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "search-bar-transfer__transfer-type", children: [_jsx(Text, { size: "lg", variant: "bold", color: "subtle", as: "div", className: "search-bar-transfer__transfer-type-label", children: "Select a transfer type you want to add" }), renderTransferTypeButtons(handleAddTransfer)] }), transferLines.length === 0 && (_jsx(TransferLine, { id: "placeholder-transfer", type: "inter-hotel", locations: locations, onDataChange: function () { }, showDelete: false, disabled: true, scrollOnOpen: scrollOnOpen })), transferLines.length > 0 && (_jsx("div", { className: "search-bar-transfer__transfer-lines", children: (function () {
|
|
211
173
|
// Group transfers by type
|
|
212
174
|
var groupedTransfers = {
|
|
213
175
|
arrival: [],
|
|
@@ -228,7 +190,7 @@ var SearchBarTransfer = function (_a) {
|
|
|
228
190
|
};
|
|
229
191
|
return nonEmptyGroups.map(function (type, groupIndex) { return (_jsxs(React.Fragment, { children: [_jsxs("div", { className: "search-bar-transfer__category-header", children: [_jsx(Icon, { name: categoryInfo[type].icon, size: "md" }), _jsx(Text, { size: "md", variant: "bold", color: "default", as: "span", children: categoryInfo[type].label })] }), groupedTransfers[type].map(function (line) {
|
|
230
192
|
var _a, _b;
|
|
231
|
-
return (_jsx(TransferLine, { id: line.id, type: line.type, paxData: line.paxData, transferDate: line.transferDate, pickupPoint: (_a = line.pickupPoint) === null || _a === void 0 ? void 0 : _a.id, dropoffPoint: (_b = line.dropoffPoint) === null || _b === void 0 ? void 0 : _b.id, locations: locations, onDataChange: function (data) { return handleTransferLineChange(line.id, data); }, onDelete: function () { return handleDeleteTransferLine(line.id); }, showDelete: transferLines.length > 1, checkEmpty: error !== null }, line.id));
|
|
193
|
+
return (_jsx(TransferLine, { id: line.id, type: line.type, paxData: line.paxData, transferDate: line.transferDate, pickupPoint: (_a = line.pickupPoint) === null || _a === void 0 ? void 0 : _a.id, dropoffPoint: (_b = line.dropoffPoint) === null || _b === void 0 ? void 0 : _b.id, locations: locations, onDataChange: function (data) { return handleTransferLineChange(line.id, data); }, onDelete: function () { return handleDeleteTransferLine(line.id); }, showDelete: transferLines.length > 1, checkEmpty: error !== null, scrollOnOpen: scrollOnOpen }, line.id));
|
|
232
194
|
}), groupIndex < nonEmptyGroups.length - 1 && (_jsx("svg", { className: "search-bar-transfer__divider", xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "1", viewBox: "0 0 1076 1", fill: "none", preserveAspectRatio: "none", children: _jsx("path", { d: "M0 0.5L1076 0.499906", stroke: "var(--color-border-medium, #A3A3A3)", strokeWidth: "1", strokeDasharray: "10 10" }) }))] }, type)); });
|
|
233
195
|
})() }))] })), _jsxs("div", { className: "search-bar-transfer__actions", children: [_jsx(Checkbox, { checked: sameVehicle, onChange: setSameVehicle, label: "Use the same vehicle for all your transfers" }), _jsxs("div", { className: "search-bar-transfer__cta", children: [error && (_jsx(Toast, { text: error, type: "danger" })), _jsx(Button, { variant: "primary", size: "lg", onClick: handleSearch, children: "Search" })] })] })] }));
|
|
234
196
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import
|
|
3
|
-
import { LocationData, LocationGroup, LocationOption } from
|
|
4
|
-
import { PaxData } from
|
|
5
|
-
export type TransferType =
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import '../../../styles/components/organism/transfer-line.css';
|
|
3
|
+
import { LocationData, LocationGroup, LocationOption } from '../../molecules/LocationDropdown/LocationDropdown';
|
|
4
|
+
import { PaxData } from '../PaxSelector/PaxSelector';
|
|
5
|
+
export type TransferType = 'arrival' | 'departure' | 'inter-hotel';
|
|
6
6
|
export type { LocationData };
|
|
7
7
|
export interface TransferLineData {
|
|
8
8
|
id: string;
|
|
@@ -50,6 +50,10 @@ export interface TransferLineProps {
|
|
|
50
50
|
className?: string;
|
|
51
51
|
/** Whether to check if inputs are empty */
|
|
52
52
|
checkEmpty?: boolean;
|
|
53
|
+
/** Whether the transfer line is disabled (placeholder state) */
|
|
54
|
+
disabled?: boolean;
|
|
55
|
+
/** Whether to scroll to the input when the calendar opens */
|
|
56
|
+
scrollOnOpen?: boolean;
|
|
53
57
|
}
|
|
54
58
|
declare const TransferLine: React.FC<TransferLineProps>;
|
|
55
59
|
export default TransferLine;
|
|
@@ -19,19 +19,19 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
19
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
20
|
};
|
|
21
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
-
import React, { useState } from
|
|
23
|
-
import
|
|
24
|
-
import Icon from
|
|
25
|
-
import { Text } from
|
|
26
|
-
import LocationDropdown from
|
|
27
|
-
import DateTimePicker from
|
|
28
|
-
import PaxSelector from
|
|
22
|
+
import React, { useState } from 'react';
|
|
23
|
+
import '../../../styles/components/organism/transfer-line.css';
|
|
24
|
+
import Icon from '../../atoms/Icon/Icon';
|
|
25
|
+
import { Text } from '../../atoms/Typography/Typography';
|
|
26
|
+
import LocationDropdown from '../../molecules/LocationDropdown/LocationDropdown';
|
|
27
|
+
import DateTimePicker from '../DateTimePicker/DateTimePicker';
|
|
28
|
+
import PaxSelector from '../PaxSelector/PaxSelector';
|
|
29
29
|
var TransferLine = function (_a) {
|
|
30
|
-
var id = _a.id, type = _a.type, paxData = _a.paxData, transferDate = _a.transferDate, pickupPoint = _a.pickupPoint, dropoffPoint = _a.dropoffPoint, _b = _a.locations, locations = _b === void 0 ? { options: [], groups: [] } : _b, onPaxChange = _a.onPaxChange, onDateChange = _a.onDateChange, onPickupChange = _a.onPickupChange, onDropoffChange = _a.onDropoffChange, onDataChange = _a.onDataChange, onDelete = _a.onDelete, _c = _a.showDelete, showDelete = _c === void 0 ? true : _c, _d = _a.showTitle, showTitle = _d === void 0 ? false : _d, _e = _a.className, className = _e === void 0 ?
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var
|
|
30
|
+
var id = _a.id, type = _a.type, paxData = _a.paxData, transferDate = _a.transferDate, pickupPoint = _a.pickupPoint, dropoffPoint = _a.dropoffPoint, _b = _a.locations, locations = _b === void 0 ? { options: [], groups: [] } : _b, onPaxChange = _a.onPaxChange, onDateChange = _a.onDateChange, onPickupChange = _a.onPickupChange, onDropoffChange = _a.onDropoffChange, onDataChange = _a.onDataChange, onDelete = _a.onDelete, _c = _a.showDelete, showDelete = _c === void 0 ? true : _c, _d = _a.showTitle, showTitle = _d === void 0 ? false : _d, _e = _a.className, className = _e === void 0 ? '' : _e, _f = _a.checkEmpty, checkEmpty = _f === void 0 ? false : _f, _g = _a.disabled, disabled = _g === void 0 ? false : _g, _h = _a.scrollOnOpen, scrollOnOpen = _h === void 0 ? false : _h;
|
|
31
|
+
var _j = useState(paxData), internalPaxData = _j[0], setInternalPaxData = _j[1];
|
|
32
|
+
var _k = useState(transferDate), internalTransferDate = _k[0], setInternalTransferDate = _k[1];
|
|
33
|
+
var _l = useState(null), internalPickupPoint = _l[0], setInternalPickupPoint = _l[1];
|
|
34
|
+
var _m = useState(null), internalDropoffPoint = _m[0], setInternalDropoffPoint = _m[1];
|
|
35
35
|
// Helper function to get all locations (from options and groups)
|
|
36
36
|
var getAllLocations = function (options, groups) {
|
|
37
37
|
var groupOptions = groups.flatMap(function (group) { return group.options; });
|
|
@@ -62,8 +62,9 @@ var TransferLine = function (_a) {
|
|
|
62
62
|
var _a = filterLocations(position), options = _a.options, groups = _a.groups;
|
|
63
63
|
var allLocations = getAllLocations(options, groups);
|
|
64
64
|
// For arrival pickup or departure dropoff, default to first airport
|
|
65
|
-
if ((type === 'arrival' && position === 'pickup') ||
|
|
66
|
-
|
|
65
|
+
if ((type === 'arrival' && position === 'pickup') ||
|
|
66
|
+
(type === 'departure' && position === 'dropoff')) {
|
|
67
|
+
return (allLocations.find(function (loc) { return loc.type === 'airport'; }) || allLocations[0] || null);
|
|
67
68
|
}
|
|
68
69
|
return null;
|
|
69
70
|
};
|
|
@@ -132,29 +133,36 @@ var TransferLine = function (_a) {
|
|
|
132
133
|
};
|
|
133
134
|
onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(completeData);
|
|
134
135
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
135
|
-
}, [
|
|
136
|
+
}, [
|
|
137
|
+
id,
|
|
138
|
+
type,
|
|
139
|
+
internalPaxData,
|
|
140
|
+
internalTransferDate,
|
|
141
|
+
internalPickupPoint,
|
|
142
|
+
internalDropoffPoint,
|
|
143
|
+
]);
|
|
136
144
|
var getTypeIcon = function () {
|
|
137
145
|
switch (type) {
|
|
138
|
-
case
|
|
139
|
-
return
|
|
140
|
-
case
|
|
141
|
-
return
|
|
142
|
-
case
|
|
143
|
-
return
|
|
146
|
+
case 'arrival':
|
|
147
|
+
return 'arrival';
|
|
148
|
+
case 'departure':
|
|
149
|
+
return 'departure';
|
|
150
|
+
case 'inter-hotel':
|
|
151
|
+
return 'building';
|
|
144
152
|
default:
|
|
145
|
-
return
|
|
153
|
+
return 'arrival';
|
|
146
154
|
}
|
|
147
155
|
};
|
|
148
156
|
var getTypeLabel = function () {
|
|
149
157
|
switch (type) {
|
|
150
|
-
case
|
|
151
|
-
return
|
|
152
|
-
case
|
|
153
|
-
return
|
|
154
|
-
case
|
|
155
|
-
return
|
|
158
|
+
case 'arrival':
|
|
159
|
+
return 'Arrival';
|
|
160
|
+
case 'departure':
|
|
161
|
+
return 'Departure';
|
|
162
|
+
case 'inter-hotel':
|
|
163
|
+
return 'Inter-Hotel';
|
|
156
164
|
default:
|
|
157
|
-
return
|
|
165
|
+
return 'Transfer';
|
|
158
166
|
}
|
|
159
167
|
};
|
|
160
168
|
var handlePaxChange = function (newPaxData) {
|
|
@@ -175,14 +183,23 @@ var TransferLine = function (_a) {
|
|
|
175
183
|
onDropoffChange === null || onDropoffChange === void 0 ? void 0 : onDropoffChange(location);
|
|
176
184
|
};
|
|
177
185
|
// Check if inputs are empty (when checkEmpty is true)
|
|
178
|
-
var isPaxEmpty = checkEmpty &&
|
|
179
|
-
(internalPaxData
|
|
180
|
-
internalPaxData.
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
var isPaxEmpty = checkEmpty &&
|
|
187
|
+
(!internalPaxData ||
|
|
188
|
+
(internalPaxData.adults === 0 &&
|
|
189
|
+
internalPaxData.teens === 0 &&
|
|
190
|
+
internalPaxData.children === 0 &&
|
|
191
|
+
(internalPaxData.infants === undefined || internalPaxData.infants === 0)));
|
|
183
192
|
var isDateEmpty = checkEmpty && (!internalTransferDate || internalTransferDate === '');
|
|
184
193
|
var isPickupEmpty = checkEmpty && !internalPickupPoint;
|
|
185
194
|
var isDropoffEmpty = checkEmpty && !internalDropoffPoint;
|
|
186
|
-
return (_jsxs("div", { className: "transfer-line transfer-line--".concat(type, " ").concat(className), "data-transfer-id": id, children: [showTitle && (_jsxs("div", { className: "transfer-line__header", children: [_jsx(Icon, { name: getTypeIcon(), size: "sm", className: "transfer-line__header-icon" }), _jsx(Text, { size: "sm", variant: "medium", className: "transfer-line__header-label", children: getTypeLabel() })] })), _jsxs("div", { className: "transfer-line__content-container", children: [_jsxs("div", { className: "transfer-line__content", children: [_jsx("div", { className: "transfer-line__field transfer-line__field--pax ".concat(isPaxEmpty ? 'transfer-line__field--error' : ''), children: _jsx(PaxSelector, { label: "Number of pax", value: internalPaxData, onChange: handlePaxChange, placeholder: "2 pax", className: isPaxEmpty ? 'pax-selector--error' : '' }) }), _jsxs("div", { className: "transfer-line__field transfer-line__field--date", children: [_jsx(Text, { size: "sm", variant: "regular", className: "transfer-line__field-label", children: "Transfer date" }), _jsx(DateTimePicker, { placeholder: "DD/MM/YYYY", mode: "calendar", iconPosition: "left", numberOfMonths: 1, iconBGFull: false, showChevron: true, onValueChange: handleDateChange, selectionMode: "single", defaultValue: internalTransferDate, inputClassName: "transfer-line__date-picker", state: isDateEmpty ? 'error' : undefined })] }), _jsx("div", { className: "transfer-line__field transfer-line__field--pickup", children: _jsx(LocationDropdown, { label: "Pick-up point", options: filterLocations('pickup').options, groups: filterLocations('pickup').groups, selectedValue: (internalPickupPoint === null || internalPickupPoint === void 0 ? void 0 : internalPickupPoint.id) || null, onSelectionChange: handlePickupChange, placeholder: "Select a pick-up point", direction: "pickup", type: type === 'inter-hotel'
|
|
195
|
+
return (_jsxs("div", { className: "transfer-line transfer-line--".concat(type, " ").concat(disabled ? 'transfer-line--disabled' : '', " ").concat(className), "data-transfer-id": id, children: [showTitle && (_jsxs("div", { className: "transfer-line__header", children: [_jsx(Icon, { name: getTypeIcon(), size: "sm", className: "transfer-line__header-icon" }), _jsx(Text, { size: "sm", variant: "medium", className: "transfer-line__header-label", children: getTypeLabel() })] })), _jsxs("div", { className: "transfer-line__content-container", children: [_jsxs("div", { className: "transfer-line__content", children: [_jsx("div", { className: "transfer-line__field transfer-line__field--pax ".concat(isPaxEmpty ? 'transfer-line__field--error' : ''), children: _jsx(PaxSelector, { label: "Number of pax", value: internalPaxData, onChange: handlePaxChange, placeholder: "2 pax", className: isPaxEmpty ? 'pax-selector--error' : '', disabled: disabled, scrollOnOpen: scrollOnOpen }) }), _jsxs("div", { className: "transfer-line__field transfer-line__field--date", children: [_jsx(Text, { size: "sm", variant: "regular", className: "transfer-line__field-label", children: "Transfer date" }), _jsx(DateTimePicker, { placeholder: "DD/MM/YYYY", mode: "calendar", iconPosition: "left", numberOfMonths: 1, iconBGFull: false, showChevron: true, onValueChange: handleDateChange, selectionMode: "single", defaultValue: internalTransferDate, inputClassName: "transfer-line__date-picker", state: isDateEmpty ? 'error' : undefined, disabled: disabled, scrollOnOpen: scrollOnOpen })] }), _jsx("div", { className: "transfer-line__field transfer-line__field--pickup", children: _jsx(LocationDropdown, { label: "Pick-up point", options: filterLocations('pickup').options, groups: filterLocations('pickup').groups, selectedValue: (internalPickupPoint === null || internalPickupPoint === void 0 ? void 0 : internalPickupPoint.id) || null, onSelectionChange: handlePickupChange, placeholder: "Select a pick-up point", direction: "pickup", type: type === 'inter-hotel'
|
|
196
|
+
? 'accommodation'
|
|
197
|
+
: type === 'arrival'
|
|
198
|
+
? 'airport-port'
|
|
199
|
+
: 'accommodation', showGroupTitles: false, error: isPickupEmpty, disabled: disabled, scrollOnOpen: scrollOnOpen }) }), _jsx("div", { className: "transfer-line__field transfer-line__field--dropoff", children: _jsx(LocationDropdown, { label: "Drop-off point", options: filterLocations('dropoff').options, groups: filterLocations('dropoff').groups, selectedValue: (internalDropoffPoint === null || internalDropoffPoint === void 0 ? void 0 : internalDropoffPoint.id) || null, onSelectionChange: handleDropoffChange, placeholder: "Select a drop-off point", direction: "dropoff", type: type === 'inter-hotel'
|
|
200
|
+
? 'accommodation'
|
|
201
|
+
: type === 'departure'
|
|
202
|
+
? 'airport-port'
|
|
203
|
+
: 'accommodation', showGroupTitles: false, error: isDropoffEmpty, disabled: disabled, scrollOnOpen: scrollOnOpen }) })] }), showDelete && !disabled && (_jsx("div", { className: "transfer-line__delete", children: _jsx("button", { type: "button", className: "transfer-line__delete-btn", onClick: onDelete, "aria-label": "Delete transfer line", children: _jsx(Icon, { name: "delete", size: "sm", className: "transfer-line__delete-icon" }) }) }))] })] }));
|
|
187
204
|
};
|
|
188
205
|
export default TransferLine;
|
package/dist/index.d.ts
CHANGED
|
@@ -17,8 +17,9 @@ export { DateDisplay } from './components/molecules/DateDisplay/DateDisplay';
|
|
|
17
17
|
export { DocketPrices } from './components/molecules/DocketPrices/DocketPrices';
|
|
18
18
|
export { PriceDisplay } from './components/molecules/PriceDisplay/PriceDisplay';
|
|
19
19
|
export { TransferDocket } from './components/molecules/TransferDocket/TransferDocket';
|
|
20
|
-
export { ActionDropdown, type ActionDropdownItem
|
|
20
|
+
export { ActionDropdown, type ActionDropdownItem } from './components/molecules/ActionDropdown/ActionDropdown';
|
|
21
21
|
export { AddItemButton } from './components/molecules/AddItemButton/AddItemButton';
|
|
22
|
+
export { default as AgeSelector } from './components/molecules/AgeSelector/AgeSelector';
|
|
22
23
|
export * from './components/molecules/BookingResume';
|
|
23
24
|
export { Breadcrumbs } from './components/molecules/Breadcrumbs/Breadcrumbs';
|
|
24
25
|
export { default as CalendarInput } from './components/molecules/Calendar/CalendarInput';
|
|
@@ -85,41 +86,43 @@ export { default as UserIcon } from './components/atoms/Icon/icons/User';
|
|
|
85
86
|
export { priceFormatter } from './lib/price-formatter';
|
|
86
87
|
export type { DividerProps } from './components/atoms/Divider/Divider';
|
|
87
88
|
export type { FeatureRowProps } from './components/molecules/FeatureRow/FeatureRow';
|
|
88
|
-
export type { LocationData, LocationDropdownProps, LocationGroup, LocationOption
|
|
89
|
-
export type { ServiceOption, ServiceSelectorProps, ServiceType
|
|
89
|
+
export type { LocationData, LocationDropdownProps, LocationGroup, LocationOption } from './components/molecules/LocationDropdown/LocationDropdown';
|
|
90
|
+
export type { ServiceOption, ServiceSelectorProps, ServiceType } from './components/molecules/ServiceSelector/ServiceSelector';
|
|
90
91
|
export type { StepperProps } from './components/molecules/Stepper/Stepper';
|
|
91
|
-
export type { CarBookingCardPriceRow, CarBookingCardProps, CarBookingCardSize, CarBookingCardState, CarBookingCardType
|
|
92
|
-
export type { CardContainerProps, CardContainerSpacing
|
|
92
|
+
export type { CarBookingCardPriceRow, CarBookingCardProps, CarBookingCardSize, CarBookingCardState, CarBookingCardType } from './components/organisms/CarBookingCard/CarBookingCard';
|
|
93
|
+
export type { CardContainerProps, CardContainerSpacing } from './components/organisms/CardContainer/CardContainer';
|
|
93
94
|
export type { DateTimePickerProps } from './components/organisms/DateTimePicker/DateTimePicker';
|
|
94
95
|
export type { DialogProps, DialogSize } from './components/organisms/Dialog/Dialog';
|
|
95
96
|
export type { FooterProps } from './components/organisms/Footer/Footer';
|
|
96
|
-
export type { DocketDetailsData, DocketServiceType, MultipleQuotationDocketProps
|
|
97
|
-
export
|
|
98
|
-
export type {
|
|
99
|
-
export type {
|
|
97
|
+
export type { DocketDetailsData, DocketServiceType, MultipleQuotationDocketProps } from './components/organisms/MultipleQuotationDocket';
|
|
98
|
+
export { CHILD_CATEGORY_AGES } from './components/organisms/PaxSelector/PaxSelector';
|
|
99
|
+
export type { ClientType, PaxData, PaxSelectorProps } from './components/organisms/PaxSelector/PaxSelector';
|
|
100
|
+
export type { RoundTripData, RoundTripProps, RoundTripTransfer } from './components/organisms/RoundTrip/RoundTrip';
|
|
101
|
+
export type { SearchBarTransferData, SearchBarTransferProps, TransferMode } from './components/organisms/SearchBarTransfer/SearchBarTransfer';
|
|
100
102
|
export type { TopNavigationProps } from './components/organisms/TopNavigation/TopNavigation';
|
|
101
|
-
export type { TransferLineData, TransferLineProps, TransferType
|
|
103
|
+
export type { TransferLineData, TransferLineProps, TransferType } from './components/organisms/TransferLine/TransferLine';
|
|
102
104
|
export type { CheckboxProps } from './components/atoms/Checkbox/Checkbox';
|
|
103
105
|
export type { InputProps } from './components/atoms/Inputs/Input/Input';
|
|
104
106
|
export type { AddItemButtonProps } from './components/molecules/AddItemButton/AddItemButton';
|
|
105
|
-
export type {
|
|
107
|
+
export type { AgeSelectorProps } from './components/molecules/AgeSelector/AgeSelector';
|
|
108
|
+
export type { BreadcrumbsItem, BreadcrumbsProps } from './components/molecules/Breadcrumbs/Breadcrumbs';
|
|
106
109
|
export type { DocketPricesProps } from './components/molecules/DocketPrices/DocketPrices';
|
|
107
110
|
export type { FromToProps } from './components/molecules/FromTo/FromTo';
|
|
108
111
|
export type { PaxChipsProps, PaxCount } from './components/molecules/PaxChips/PaxChips';
|
|
109
112
|
export type { PriceDisplayProps } from './components/molecules/PriceDisplay/PriceDisplay';
|
|
110
113
|
export type { SectionTitleProps } from './components/molecules/SectionTitle/SectionTitle';
|
|
111
|
-
export type { DetailsColProps, ItemColProps, RowAccommodationProps, RowExcursionProps, RowTransferProps
|
|
114
|
+
export type { DetailsColProps, ItemColProps, RowAccommodationProps, RowExcursionProps, RowTransferProps } from './components/molecules/TableServiceItem';
|
|
112
115
|
export type { ServiceAccommodationProps } from './components/molecules/TimelineItem/ServiceAccommodation';
|
|
113
116
|
export type { ServiceExcursionProps } from './components/molecules/TimelineItem/ServiceExcursion';
|
|
114
117
|
export type { ServiceTransferProps } from './components/molecules/TimelineItem/ServiceTransfer';
|
|
115
118
|
export type { TimelineHeaderProps } from './components/molecules/TimelineItem/TimelineHeader';
|
|
116
119
|
export type { ToastProps } from './components/molecules/Toast/Toast';
|
|
117
120
|
export type { TransferDocketProps } from './components/molecules/TransferDocket/TransferDocket';
|
|
118
|
-
export type { ComparisonData, DialogComparisonProps, MultiComparisonData
|
|
121
|
+
export type { ComparisonData, DialogComparisonProps, MultiComparisonData } from './components/organisms/DialogComparison/DialogComparison';
|
|
119
122
|
export type { DialogDeleteConfirmProps } from './components/organisms/DialogDeleteConfirm/DialogDeleteConfirm';
|
|
120
123
|
export type { DialogQuoteRenameProps } from './components/organisms/DialogQuoteRename/DialogQuoteRename';
|
|
121
124
|
export type { SelectedQuote } from './components/organisms/DialogSendingMail/DialogSendingMailMultiple/DialogSendingMailMultiple';
|
|
122
|
-
export type { FilterType, QuoteHeaderProps
|
|
123
|
-
export type { TimelineProps, TimelineServices
|
|
124
|
-
export type { AccomodationDocket as AccomodationDocketType, ExcursionDocket as ExcursionDocketType, OtherServiceDocket as OtherServiceDocketType, ServiceDocket as ServiceDocketType, TransferDocket as TransferDocketType
|
|
125
|
+
export type { FilterType, QuoteHeaderProps } from './components/organisms/QuoteHeader/QuoteHeader';
|
|
126
|
+
export type { TimelineProps, TimelineServices } from './components/organisms/Timeline/Timeline';
|
|
127
|
+
export type { AccomodationDocket as AccomodationDocketType, ExcursionDocket as ExcursionDocketType, OtherServiceDocket as OtherServiceDocketType, ServiceDocket as ServiceDocketType, TransferDocket as TransferDocketType } from './types/docket/services.types';
|
|
125
128
|
export * from './types/table';
|
package/dist/index.js
CHANGED
|
@@ -19,8 +19,9 @@ export { DocketPrices } from './components/molecules/DocketPrices/DocketPrices';
|
|
|
19
19
|
export { PriceDisplay } from './components/molecules/PriceDisplay/PriceDisplay';
|
|
20
20
|
export { TransferDocket } from './components/molecules/TransferDocket/TransferDocket';
|
|
21
21
|
// Molecules - Composed components
|
|
22
|
-
export { ActionDropdown
|
|
22
|
+
export { ActionDropdown } from './components/molecules/ActionDropdown/ActionDropdown';
|
|
23
23
|
export { AddItemButton } from './components/molecules/AddItemButton/AddItemButton';
|
|
24
|
+
export { default as AgeSelector } from './components/molecules/AgeSelector/AgeSelector';
|
|
24
25
|
export * from './components/molecules/BookingResume';
|
|
25
26
|
export { Breadcrumbs } from './components/molecules/Breadcrumbs/Breadcrumbs';
|
|
26
27
|
export { default as CalendarInput } from './components/molecules/Calendar/CalendarInput';
|
|
@@ -89,4 +90,5 @@ export { default as SettingsIcon } from './components/atoms/Icon/icons/Settings'
|
|
|
89
90
|
export { default as UserIcon } from './components/atoms/Icon/icons/User';
|
|
90
91
|
// Utils
|
|
91
92
|
export { priceFormatter } from './lib/price-formatter';
|
|
93
|
+
export { CHILD_CATEGORY_AGES } from './components/organisms/PaxSelector/PaxSelector';
|
|
92
94
|
export * from './types/table';
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do not edit directly, this file was auto-generated.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/* AgeSelector Component Styles */
|
|
6
|
+
|
|
7
|
+
.age-selector {
|
|
8
|
+
position: relative;
|
|
9
|
+
display: flex;
|
|
10
|
+
width: 5rem;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
gap: 0.5rem;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Label */
|
|
16
|
+
|
|
17
|
+
.age-selector__label {
|
|
18
|
+
font-size: 0.875rem;
|
|
19
|
+
line-height: 1.25rem;
|
|
20
|
+
font-weight: 400;
|
|
21
|
+
color: var(--dropdown-color-label-default,#262626);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.age-selector__required {
|
|
25
|
+
color: var(--chip-color-red-outline-foreground,#991b1b);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Container */
|
|
29
|
+
|
|
30
|
+
.age-selector__container {
|
|
31
|
+
position: relative;
|
|
32
|
+
width: 100%;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Input wrapper - matching Figma design */
|
|
36
|
+
|
|
37
|
+
.age-selector__input {
|
|
38
|
+
display: flex;
|
|
39
|
+
width: 100%;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: space-between;
|
|
42
|
+
gap: 0.5rem;
|
|
43
|
+
border-radius: 0.75rem;
|
|
44
|
+
border-width: 1px;
|
|
45
|
+
--tw-border-opacity: 1;
|
|
46
|
+
border-color: rgb(38 38 38 / var(--tw-border-opacity, 1));
|
|
47
|
+
--tw-bg-opacity: 1;
|
|
48
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
|
49
|
+
padding-left: 1rem;
|
|
50
|
+
padding-right: 1rem;
|
|
51
|
+
padding-top: 0.75rem;
|
|
52
|
+
padding-bottom: 0.75rem;
|
|
53
|
+
transition-property: all;
|
|
54
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
55
|
+
transition-duration: 200ms;
|
|
56
|
+
cursor: default;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.age-selector__input:hover {
|
|
60
|
+
border-color: var(--dropdown-color-border-hover,#0f7173);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.age-selector__input--open {
|
|
64
|
+
border-color: var(--dropdown-color-border-hover,#0f7173);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.age-selector__input--default .age-selector__input-field::placeholder {
|
|
68
|
+
color: var(--dropdown-selector-color-filled-foreground-default,#737373);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Input field */
|
|
72
|
+
|
|
73
|
+
.age-selector__input-field {
|
|
74
|
+
flex: 1 1 0%;
|
|
75
|
+
border-style: none;
|
|
76
|
+
background-color: #ffffff00;
|
|
77
|
+
outline: 2px solid transparent;
|
|
78
|
+
outline-offset: 2px;
|
|
79
|
+
font-size: 0.875rem;
|
|
80
|
+
font-weight: 500;
|
|
81
|
+
line-height: 1.25rem;
|
|
82
|
+
color: var(--dropdown-color-foreground-value,#262626);
|
|
83
|
+
cursor: text;
|
|
84
|
+
min-width: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.age-selector__input-field::placeholder {
|
|
88
|
+
color: var(--dropdown-selector-color-filled-foreground-default,#737373);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Dropdown button */
|
|
92
|
+
|
|
93
|
+
.age-selector__dropdown-btn {
|
|
94
|
+
display: flex;
|
|
95
|
+
flex-shrink: 0;
|
|
96
|
+
align-items: center;
|
|
97
|
+
justify-content: center;
|
|
98
|
+
cursor: pointer;
|
|
99
|
+
border-style: none;
|
|
100
|
+
background-color: #ffffff00;
|
|
101
|
+
margin: 0px;
|
|
102
|
+
padding: 0px;
|
|
103
|
+
transition-property: all;
|
|
104
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
105
|
+
transition-duration: 200ms;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.age-selector__dropdown-btn:hover {
|
|
109
|
+
opacity: 0.8;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Icon */
|
|
113
|
+
|
|
114
|
+
.age-selector__icon {
|
|
115
|
+
color: var(--color-text-default,#262626);
|
|
116
|
+
transition-property: transform;
|
|
117
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
118
|
+
transition-duration: 200ms;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.age-selector__icon--open {
|
|
122
|
+
--tw-rotate: 180deg;
|
|
123
|
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Dropdown menu */
|
|
127
|
+
|
|
128
|
+
.age-selector__dropdown {
|
|
129
|
+
position: absolute;
|
|
130
|
+
top: 100%;
|
|
131
|
+
left: 0px;
|
|
132
|
+
right: 0px;
|
|
133
|
+
margin-top: 0.25rem;
|
|
134
|
+
border-radius: 0.75rem;
|
|
135
|
+
border-width: 1px;
|
|
136
|
+
border-color: var(--color-border-subtle,#e5e5e5);
|
|
137
|
+
--tw-bg-opacity: 1;
|
|
138
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
|
139
|
+
max-height: 12rem;
|
|
140
|
+
overflow-y: auto;
|
|
141
|
+
z-index: 50;
|
|
142
|
+
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
143
|
+
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
|
144
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
145
|
+
animation: age-selector-dropdown-enter 0.15s ease-out;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@keyframes age-selector-dropdown-enter {
|
|
149
|
+
from {
|
|
150
|
+
opacity: 0;
|
|
151
|
+
transform: translateY(-4px);
|
|
152
|
+
}
|
|
153
|
+
to {
|
|
154
|
+
opacity: 1;
|
|
155
|
+
transform: translateY(0);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Dropdown option */
|
|
160
|
+
|
|
161
|
+
.age-selector__option {
|
|
162
|
+
width: 100%;
|
|
163
|
+
padding-left: 0.75rem;
|
|
164
|
+
padding-right: 0.75rem;
|
|
165
|
+
padding-top: 0.5rem;
|
|
166
|
+
padding-bottom: 0.5rem;
|
|
167
|
+
font-size: 0.875rem;
|
|
168
|
+
font-weight: 500;
|
|
169
|
+
line-height: 1.25rem;
|
|
170
|
+
color: var(--color-text-default,#262626);
|
|
171
|
+
cursor: pointer;
|
|
172
|
+
--tw-bg-opacity: 1;
|
|
173
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
|
174
|
+
transition-property: all;
|
|
175
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
176
|
+
transition-duration: 150ms;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.age-selector__option:hover {
|
|
180
|
+
background-color: var(--dropdown-selector-color-select-item-background-hover,#115b5e);
|
|
181
|
+
--tw-text-opacity: 1;
|
|
182
|
+
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.age-selector__option--selected {
|
|
186
|
+
background-color: var(--dropdown-selector-color-select-item-background-selected,#0f7173);
|
|
187
|
+
--tw-text-opacity: 1;
|
|
188
|
+
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.age-selector__option--selected:hover {
|
|
192
|
+
background-color: var(--dropdown-selector-color-select-item-background-selected,#0f7173);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* Scrollbar styling */
|
|
196
|
+
|
|
197
|
+
.age-selector__dropdown::-webkit-scrollbar {
|
|
198
|
+
width: 0.375rem;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.age-selector__dropdown::-webkit-scrollbar-track {
|
|
202
|
+
border-radius: 0.25rem;
|
|
203
|
+
--tw-bg-opacity: 1;
|
|
204
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.age-selector__dropdown::-webkit-scrollbar-thumb {
|
|
208
|
+
border-radius: 0.25rem;
|
|
209
|
+
--tw-bg-opacity: 1;
|
|
210
|
+
background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.age-selector__dropdown::-webkit-scrollbar-thumb:hover {
|
|
214
|
+
--tw-bg-opacity: 1;
|
|
215
|
+
background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1));
|
|
216
|
+
}
|