mautourco-components 0.2.7 → 0.2.8

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.
@@ -4,9 +4,11 @@ type BodySizeInput = BodyTokenSize | 'base' | 'xl';
4
4
  type Variant = 'light' | 'regular' | 'medium' | 'bold' | 'black';
5
5
  type Leading = 'none' | '4' | '5' | '6' | '7';
6
6
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
7
+ type TextColor = 'default' | 'accent' | 'subtle' | 'light' | 'brand' | 'inverted' | 'state-default' | 'state-hover' | 'state-filled' | 'state-disabled' | 'state-error' | 'state-success';
7
8
  interface BaseProps {
8
9
  variant?: Variant;
9
10
  leading?: Leading;
11
+ color?: TextColor;
10
12
  className?: string;
11
13
  children: React.ReactNode;
12
14
  onClick?: React.MouseEventHandler<Element>;
@@ -66,9 +66,16 @@ var buildVariantClass = function (base, variant) {
66
66
  return undefined;
67
67
  return "".concat(base, "--").concat(variant);
68
68
  };
69
+ var getColorStyle = function (color) {
70
+ if (!color)
71
+ return {};
72
+ return {
73
+ color: "var(--color-text-".concat(color, ", inherit)"),
74
+ };
75
+ };
69
76
  export var Heading = function (_a) {
70
77
  var _b;
71
- var _c = _a.level, level = _c === void 0 ? 2 : _c, _d = _a.variant, variant = _d === void 0 ? 'bold' : _d, leading = _a.leading, as = _a.as, _e = _a.className, className = _e === void 0 ? '' : _e, children = _a.children, onClick = _a.onClick;
78
+ var _c = _a.level, level = _c === void 0 ? 2 : _c, _d = _a.variant, variant = _d === void 0 ? 'bold' : _d, leading = _a.leading, color = _a.color, as = _a.as, _e = _a.className, className = _e === void 0 ? '' : _e, children = _a.children, onClick = _a.onClick;
72
79
  var Tag = as || "h".concat(level);
73
80
  var baseClass = (_b = headingTokenClass[level]) !== null && _b !== void 0 ? _b : headingTokenClass[2];
74
81
  var variantClass = buildVariantClass(baseClass, variant);
@@ -80,10 +87,11 @@ export var Heading = function (_a) {
80
87
  ]
81
88
  .filter(Boolean)
82
89
  .join(' ');
83
- return (_jsx(Tag, __assign({ className: classes, onClick: onClick }, { children: children })));
90
+ var colorStyle = getColorStyle(color);
91
+ return (_jsx(Tag, __assign({ className: classes, style: colorStyle, onClick: onClick }, { children: children })));
84
92
  };
85
93
  export var Text = function (_a) {
86
- var _b = _a.size, size = _b === void 0 ? 'md' : _b, _c = _a.variant, variant = _c === void 0 ? 'regular' : _c, leading = _a.leading, as = _a.as, _d = _a.className, className = _d === void 0 ? '' : _d, children = _a.children, onClick = _a.onClick;
94
+ var _b = _a.size, size = _b === void 0 ? 'md' : _b, _c = _a.variant, variant = _c === void 0 ? 'regular' : _c, leading = _a.leading, color = _a.color, as = _a.as, _d = _a.className, className = _d === void 0 ? '' : _d, children = _a.children, onClick = _a.onClick;
87
95
  var Tag = as || 'p';
88
96
  var normalizedSize = bodySizeAlias[size];
89
97
  var _e = getBodyClass(normalizedSize, leading), baseClass = _e.className, lineHeightHandled = _e.lineHeightHandled;
@@ -96,5 +104,6 @@ export var Text = function (_a) {
96
104
  ]
97
105
  .filter(Boolean)
98
106
  .join(' ');
99
- return (_jsx(Tag, __assign({ className: classes, onClick: onClick }, { children: children })));
107
+ var colorStyle = getColorStyle(color);
108
+ return (_jsx(Tag, __assign({ className: classes, style: colorStyle, onClick: onClick }, { children: children })));
100
109
  };
@@ -36,6 +36,6 @@ var RatingTab = function (_a) {
36
36
  };
37
37
  var stateClass = disabled ? 'rating-tab--disabled' : checked ? 'rating-tab--active' : 'rating-tab--default';
38
38
  var containerClasses = ['rating-tab', stateClass, className].filter(Boolean).join(' ');
39
- return (_jsxs("div", __assign({ className: containerClasses, role: "checkbox", "aria-checked": checked, "aria-disabled": disabled, tabIndex: disabled ? -1 : 0, onClick: handleToggle, onKeyDown: handleKeyDown }, { children: [_jsxs("div", __assign({ className: "rating-tab__left" }, { children: [_jsx("div", __assign({ className: "rating-tab__checkbox" }, { children: checked && _jsx(Check, { size: "sm", className: "rating-tab__checkbox-icon" }) })), _jsx(Text, __assign({ size: "sm", className: "rating-tab__label" }, { children: label }))] })), _jsx(RatingStar, { value: ratingValue, max: maxStars })] })));
39
+ return (_jsxs("div", __assign({ className: containerClasses, role: "checkbox", "aria-checked": checked, "aria-disabled": disabled, tabIndex: disabled ? -1 : 0, onClick: handleToggle, onKeyDown: handleKeyDown }, { children: [_jsxs("div", __assign({ className: "rating-tab__left" }, { children: [_jsx("div", __assign({ className: "rating-tab__checkbox" }, { children: checked && _jsx(Check, { size: "sm", className: "rating-tab__checkbox-icon" }) })), _jsx(Text, __assign({ size: "sm", color: "default", className: "rating-tab__label" }, { children: label }))] })), _jsx(RatingStar, { value: ratingValue, max: maxStars })] })));
40
40
  };
41
41
  export default RatingTab;
@@ -149,7 +149,7 @@ var StepperRow = function (_a) {
149
149
  onChange(value + 1);
150
150
  }
151
151
  };
152
- return (_jsxs("div", __assign({ className: "pax-selector__stepper" }, { children: [_jsx(Text, __assign({ size: "base", variant: "bold", className: "pax-selector__stepper-label" }, { children: label })), _jsxs("div", __assign({ className: "pax-selector__stepper-controls" }, { children: [_jsx("button", __assign({ type: "button", className: "pax-selector__stepper-btn", onClick: handleDecrement, disabled: value <= min, "aria-label": "Decrease ".concat(label) }, { children: _jsx(Icon, { name: "minus", size: "sm" }) })), _jsx("span", __assign({ className: "pax-selector__stepper-count" }, { children: value })), _jsx("button", __assign({ type: "button", className: "pax-selector__stepper-btn", onClick: handleIncrement, disabled: value >= max, "aria-label": "Increase ".concat(label) }, { children: _jsx(Icon, { name: "plus", size: "sm" }) }))] }))] })));
152
+ return (_jsxs("div", __assign({ className: "pax-selector__stepper" }, { children: [_jsx(Text, __assign({ size: "base", variant: "bold", color: "default", className: "pax-selector__stepper-label" }, { children: label })), _jsxs("div", __assign({ className: "pax-selector__stepper-controls" }, { children: [_jsx("button", __assign({ type: "button", className: "pax-selector__stepper-btn", onClick: handleDecrement, disabled: value <= min, "aria-label": "Decrease ".concat(label) }, { children: _jsx(Icon, { name: "minus", size: "sm" }) })), _jsx("span", __assign({ className: "pax-selector__stepper-count" }, { children: value })), _jsx("button", __assign({ type: "button", className: "pax-selector__stepper-btn", onClick: handleIncrement, disabled: value >= max, "aria-label": "Increase ".concat(label) }, { children: _jsx(Icon, { name: "plus", size: "sm" }) }))] }))] })));
153
153
  };
154
154
  var ClientTypeSelector = function (_a) {
155
155
  var value = _a.value, onChange = _a.onChange;
@@ -223,7 +223,7 @@ var RoomEditor = function (_a) {
223
223
  var teenAgeChunks = chunkAges(room.teenAges || [], 'Teen');
224
224
  var childAgeChunks = chunkAges(room.childAges || [], 'Child');
225
225
  var infantAgeChunks = chunkAges(room.infantAges || [], 'Infant');
226
- return (_jsxs("div", __assign({ className: "pax-selector__room-container" }, { children: [_jsxs("div", __assign({ className: "pax-selector__room-header" }, { children: [_jsxs("div", __assign({ className: "pax-selector__room-title" }, { children: [_jsxs(Text, __assign({ size: "lg", variant: "bold", className: "pax-selector__room-name" }, { children: ["Room ", roomNumber] })), _jsx(Icon, { name: "home", size: "md", className: "pax-selector__room-icon" })] })), showRemove && (_jsxs("button", __assign({ type: "button", className: "pax-selector__room-remove", onClick: onRemove, "aria-label": "Remove room ".concat(roomNumber) }, { children: [_jsx(Icon, { name: "close", size: "sm", className: "pax-selector__room-remove-icon" }), _jsx("span", __assign({ className: "pax-selector__room-remove-text" }, { children: "Remove" }))] })))] })), _jsxs("div", __assign({ className: "pax-selector__room-content" }, { children: [_jsxs("div", __assign({ className: "pax-selector__steppers" }, { children: [_jsx(StepperRow, { label: "Adult", value: room.adults, max: maxAdults, onChange: function (val) { return handleFieldChange('adults', val); } }), _jsx(StepperRow, { label: "Teen", value: room.teens, max: maxTeens, onChange: function (val) { return handleFieldChange('teens', val); } }), _jsx(StepperRow, { label: "Child", value: room.children, max: maxChildren, onChange: function (val) { return handleFieldChange('children', val); } }), _jsx(StepperRow, { label: "Infant", value: room.infants, max: maxInfants, onChange: function (val) { return handleFieldChange('infants', val); } })] })), ((room.teens > 0) || (room.children > 0) || (room.infants > 0)) && (_jsxs("div", __assign({ className: "pax-selector__age-section" }, { children: [_jsx(Text, __assign({ size: "base", variant: "bold", className: "pax-selector__age-section-title" }, { children: "Please specify the age :" })), _jsxs("div", __assign({ className: "pax-selector__age-groups" }, { children: [room.teens > 0 && teenAgeChunks.map(function (chunk, chunkIndex) { return (_jsx("div", __assign({ className: "pax-selector__age-row" }, { children: chunk.map(function (age, ageIndex) {
226
+ return (_jsxs("div", __assign({ className: "pax-selector__room-container" }, { children: [_jsxs("div", __assign({ className: "pax-selector__room-header" }, { children: [_jsxs("div", __assign({ className: "pax-selector__room-title" }, { children: [_jsxs(Text, __assign({ size: "lg", variant: "bold", color: "accent", className: "pax-selector__room-name" }, { children: ["Room ", roomNumber] })), _jsx(Icon, { name: "home", size: "md", className: "pax-selector__room-icon" })] })), showRemove && (_jsxs("button", __assign({ type: "button", className: "pax-selector__room-remove", onClick: onRemove, "aria-label": "Remove room ".concat(roomNumber) }, { children: [_jsx(Icon, { name: "close", size: "sm", className: "pax-selector__room-remove-icon" }), _jsx("span", __assign({ className: "pax-selector__room-remove-text" }, { children: "Remove" }))] })))] })), _jsxs("div", __assign({ className: "pax-selector__room-content" }, { children: [_jsxs("div", __assign({ className: "pax-selector__steppers" }, { children: [_jsx(StepperRow, { label: "Adult", value: room.adults, max: maxAdults, onChange: function (val) { return handleFieldChange('adults', val); } }), _jsx(StepperRow, { label: "Teen", value: room.teens, max: maxTeens, onChange: function (val) { return handleFieldChange('teens', val); } }), _jsx(StepperRow, { label: "Child", value: room.children, max: maxChildren, onChange: function (val) { return handleFieldChange('children', val); } }), _jsx(StepperRow, { label: "Infant", value: room.infants, max: maxInfants, onChange: function (val) { return handleFieldChange('infants', val); } })] })), ((room.teens > 0) || (room.children > 0) || (room.infants > 0)) && (_jsxs("div", __assign({ className: "pax-selector__age-section" }, { children: [_jsx(Text, __assign({ size: "base", variant: "bold", color: "default", className: "pax-selector__age-section-title" }, { children: "Please specify the age :" })), _jsxs("div", __assign({ className: "pax-selector__age-groups" }, { children: [room.teens > 0 && teenAgeChunks.map(function (chunk, chunkIndex) { return (_jsx("div", __assign({ className: "pax-selector__age-row" }, { children: chunk.map(function (age, ageIndex) {
227
227
  var actualIndex = chunkIndex * 2 + ageIndex;
228
228
  return (_jsx(AgeSelector, { label: "Teen", value: age, onChange: function (selectedAge) { return handleAgeChange('teenAges', actualIndex, selectedAge); }, ageRange: CHILD_CATEGORY_AGES, required: true }, "teen-".concat(actualIndex)));
229
229
  }) }), "teen-chunk-".concat(chunkIndex))); }), room.children > 0 && childAgeChunks.map(function (chunk, chunkIndex) { return (_jsx("div", __assign({ className: "pax-selector__age-row" }, { children: chunk.map(function (age, ageIndex) {
@@ -371,7 +371,7 @@ var PaxSelector = function (_a) {
371
371
  var hasPax = getTotalPax() > 0;
372
372
  return (_jsxs("div", __assign({ className: "pax-selector ".concat(className), ref: containerRef }, { children: [_jsxs("button", __assign({ type: "button", className: "pax-selector__trigger", onClick: function () { return setIsOpen(!isOpen); }, "aria-expanded": isOpen, "aria-haspopup": "true" }, { children: [_jsx(Text, __assign({ size: "sm", variant: "regular", className: "pax-selector__label" }, { children: label })), _jsxs("div", __assign({ className: "pax-selector__input ".concat(isOpen ? 'pax-selector__input--active' : '') }, { children: [_jsxs("div", __assign({ className: "pax-selector__input-content" }, { children: [_jsx(Icon, { name: "user-icon", size: "sm", className: "pax-selector__input-icon" }), _jsx("span", __assign({ className: "pax-selector__input-text ".concat(!hasPax ? 'pax-selector__input-placeholder' : '') }, { children: getDisplayText() }))] })), _jsx(Icon, { name: "chevron-down", size: "sm", className: "pax-selector__chevron ".concat(isOpen ? 'pax-selector__chevron--open' : '') })] }))] })), isOpen && (_jsxs("div", __assign({ className: "pax-selector__dropdown" }, { children: [multipleRooms ? (_jsxs(_Fragment, { children: [showAddRoom && (_jsxs("button", __assign({ type: "button", className: "pax-selector__add-room", onClick: handleAddRoom }, { children: [_jsx(Icon, { name: "home", size: "sm", className: "pax-selector__add-room-icon" }), "Add a room", _jsx(Icon, { name: "plus", size: "sm", className: "pax-selector__add-room-icon" })] }))), _jsx("div", __assign({ className: "pax-selector__rooms" }, { children: rooms.map(function (room, index) { return (_jsx(RoomEditor, { room: room, roomNumber: index + 1, showRemove: rooms.length > 1, maxAdults: maxAdults, maxTeens: maxTeens, maxChildren: maxChildren, maxInfants: maxInfants, onChange: function (updatedRoom) { return handleRoomChange(room.roomId, updatedRoom); }, onRemove: function () { return handleRemoveRoom(room.roomId); } }, room.roomId)); }) }))] })) : (
373
373
  /* Single Room Mode */
374
- _jsxs(_Fragment, { children: [_jsxs("div", __assign({ className: "pax-selector__steppers" }, { children: [_jsx(StepperRow, { label: "Adult", value: internalData.adults, max: maxAdults, onChange: function (val) { return handleDataChange('adults', val); } }), _jsx(StepperRow, { label: "Teen", value: internalData.teens, max: maxTeens, onChange: function (val) { return handleDataChange('teens', val); } }), _jsx(StepperRow, { label: "Child", value: internalData.children, max: maxChildren, onChange: function (val) { return handleDataChange('children', val); } }), _jsx(StepperRow, { label: "Infant", value: internalData.infants, max: maxInfants, onChange: function (val) { return handleDataChange('infants', val); } })] })), ((internalData.teens > 0) || (internalData.children > 0) || (internalData.infants > 0)) && (_jsxs("div", __assign({ className: "pax-selector__age-section" }, { children: [_jsx(Text, __assign({ size: "base", variant: "bold", className: "pax-selector__age-section-title" }, { children: "Please specify the age :" })), _jsx("div", __assign({ className: "pax-selector__age-groups" }, { children: (function () {
374
+ _jsxs(_Fragment, { children: [_jsxs("div", __assign({ className: "pax-selector__steppers" }, { children: [_jsx(StepperRow, { label: "Adult", value: internalData.adults, max: maxAdults, onChange: function (val) { return handleDataChange('adults', val); } }), _jsx(StepperRow, { label: "Teen", value: internalData.teens, max: maxTeens, onChange: function (val) { return handleDataChange('teens', val); } }), _jsx(StepperRow, { label: "Child", value: internalData.children, max: maxChildren, onChange: function (val) { return handleDataChange('children', val); } }), _jsx(StepperRow, { label: "Infant", value: internalData.infants, max: maxInfants, onChange: function (val) { return handleDataChange('infants', val); } })] })), ((internalData.teens > 0) || (internalData.children > 0) || (internalData.infants > 0)) && (_jsxs("div", __assign({ className: "pax-selector__age-section" }, { children: [_jsx(Text, __assign({ size: "base", variant: "bold", color: "default", className: "pax-selector__age-section-title" }, { children: "Please specify the age :" })), _jsx("div", __assign({ className: "pax-selector__age-groups" }, { children: (function () {
375
375
  var chunkAges = function (ages, category) {
376
376
  var chunks = [];
377
377
  for (var i = 0; i < ages.length; i += 2) {
@@ -164,7 +164,7 @@ var SearchBarTransfer = function (_a) {
164
164
  onSearch === null || onSearch === void 0 ? void 0 : onSearch(data);
165
165
  }
166
166
  };
167
- return (_jsxs("div", __assign({ className: "search-bar-transfer ".concat(className) }, { children: [_jsxs("div", __assign({ className: "search-bar-transfer__header" }, { children: [_jsx(Heading, __assign({ level: 5, variant: "bold", className: "search-bar-transfer__title" }, { children: "Select your transfer details" })), _jsx("div", __assign({ className: "search-bar-transfer__mode-selector" }, { children: _jsx(SegmentedButton, { options: modeOptions, value: mode, onChange: handleModeChange, name: "transfer-mode" }) }))] })), mode === "roundtrip" ? (_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 })) : (_jsxs(_Fragment, { children: [_jsxs("div", __assign({ className: "search-bar-transfer__transfer-type" }, { children: [_jsx(Text, __assign({ size: "lg", variant: "bold", as: "div", className: "search-bar-transfer__transfer-type-label" }, { children: "Select a transfer type you want to add" })), _jsxs("div", __assign({ className: "search-bar-transfer__add-buttons" }, { children: [_jsx(Button, __assign({ variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return handleAddTransfer("arrival"); } }, { children: "Add Arrival" })), _jsx(Button, __assign({ variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return handleAddTransfer("departure"); } }, { children: "Add Departure" })), _jsx(Button, __assign({ variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return handleAddTransfer("inter-hotel"); } }, { children: "Add Inter-Hotel" }))] }))] })), transferLines.length > 0 && (_jsx("div", __assign({ className: "search-bar-transfer__transfer-lines" }, { children: (function () {
167
+ return (_jsxs("div", __assign({ className: "search-bar-transfer ".concat(className) }, { children: [_jsxs("div", __assign({ className: "search-bar-transfer__header" }, { children: [_jsx(Heading, __assign({ level: 5, variant: "bold", color: "accent" }, { children: "Select your transfer details" })), _jsx("div", __assign({ className: "search-bar-transfer__mode-selector" }, { children: _jsx(SegmentedButton, { options: modeOptions, value: mode, onChange: handleModeChange, name: "transfer-mode" }) }))] })), mode === "roundtrip" ? (_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 })) : (_jsxs(_Fragment, { children: [_jsxs("div", __assign({ className: "search-bar-transfer__transfer-type" }, { children: [_jsx(Text, __assign({ size: "lg", variant: "bold", color: "subtle", as: "div", className: "search-bar-transfer__transfer-type-label" }, { children: "Select a transfer type you want to add" })), _jsxs("div", __assign({ className: "search-bar-transfer__add-buttons" }, { children: [_jsx(Button, __assign({ variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return handleAddTransfer("arrival"); } }, { children: "Add Arrival" })), _jsx(Button, __assign({ variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return handleAddTransfer("departure"); } }, { children: "Add Departure" })), _jsx(Button, __assign({ variant: "outline-secondary", size: "sm", leadingIcon: "plus", onClick: function () { return handleAddTransfer("inter-hotel"); } }, { children: "Add Inter-Hotel" }))] }))] })), transferLines.length > 0 && (_jsx("div", __assign({ className: "search-bar-transfer__transfer-lines" }, { children: (function () {
168
168
  // Group transfers by type
169
169
  var groupedTransfers = {
170
170
  arrival: [],
@@ -183,7 +183,7 @@ var SearchBarTransfer = function (_a) {
183
183
  departure: { label: "Departure", icon: "departure" },
184
184
  "inter-hotel": { label: "Inter-Hotel", icon: "building" },
185
185
  };
186
- return nonEmptyGroups.map(function (type, groupIndex) { return (_jsxs(React.Fragment, { children: [_jsxs("div", __assign({ className: "search-bar-transfer__category-header" }, { children: [_jsx(Icon, { name: categoryInfo[type].icon, size: "md" }), _jsx(Text, __assign({ size: "md", variant: "bold", as: "span" }, { children: categoryInfo[type].label }))] })), groupedTransfers[type].map(function (line) {
186
+ return nonEmptyGroups.map(function (type, groupIndex) { return (_jsxs(React.Fragment, { children: [_jsxs("div", __assign({ className: "search-bar-transfer__category-header" }, { children: [_jsx(Icon, { name: categoryInfo[type].icon, size: "md" }), _jsx(Text, __assign({ size: "md", variant: "bold", color: "default", as: "span" }, { children: categoryInfo[type].label }))] })), groupedTransfers[type].map(function (line) {
187
187
  var _a, _b;
188
188
  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 }, line.id));
189
189
  }), groupIndex < nonEmptyGroups.length - 1 && (_jsx("svg", __assign({ 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)); });
@@ -2236,11 +2236,7 @@
2236
2236
  }
2237
2237
 
2238
2238
  .pax-selector__stepper-label {
2239
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
2240
- font-weight: 700;
2241
- font-size: 16px;
2242
- line-height: 24px;
2243
- color: var(--color-text-default, #262626);
2239
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
2244
2240
  }
2245
2241
 
2246
2242
  .pax-selector__stepper-controls {
@@ -2669,11 +2665,7 @@
2669
2665
  }
2670
2666
 
2671
2667
  .pax-selector__age-section-title {
2672
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
2673
- font-weight: var(--font-weight-font-bold, 700);
2674
- font-size: 16px;
2675
- line-height: 24px;
2676
- color: var(--color-text-default, #262626);
2668
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
2677
2669
  margin: 0;
2678
2670
  }
2679
2671
 
@@ -2722,11 +2714,7 @@
2722
2714
  }
2723
2715
 
2724
2716
  .pax-selector__room-name {
2725
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
2726
- font-weight: var(--font-weight-font-bold, 700);
2727
- font-size: 18px;
2728
- line-height: 24px;
2729
- color: var(--color-text-accent, #0f7173);
2717
+ /* La couleur est maintenant gérée par la prop color="accent" du composant Text */
2730
2718
  margin: 0;
2731
2719
  }
2732
2720
 
@@ -2099,10 +2099,6 @@
2099
2099
  justify-content: space-between;
2100
2100
  }
2101
2101
 
2102
- .search-bar-transfer__title {
2103
- color: var(--color-text-accent, #0f7173);
2104
- }
2105
-
2106
2102
  /* Mode Selector (Segmented Button) */
2107
2103
 
2108
2104
  .search-bar-transfer__mode-selector {
@@ -2119,9 +2115,7 @@
2119
2115
  justify-content: space-between;
2120
2116
  }
2121
2117
 
2122
- .search-bar-transfer__transfer-type-label {
2123
- color: var(--color-text-subtle);
2124
- }
2118
+ /* La couleur est maintenant gérée par la prop color="subtle" du composant Text */
2125
2119
 
2126
2120
  .search-bar-transfer__add-buttons {
2127
2121
  display: flex;
@@ -2143,7 +2137,7 @@
2143
2137
  display: flex;
2144
2138
  align-items: center;
2145
2139
  gap: 0.5rem;
2146
- color: var(--color-text-default);
2140
+ /* La couleur du texte est maintenant gérée par la prop color="default" du composant Text */
2147
2141
  }
2148
2142
 
2149
2143
  /* Divider between categories */
@@ -2215,8 +2209,8 @@
2215
2209
  gap: 1rem;
2216
2210
  }
2217
2211
 
2218
- .search-bar-transfer__title {
2219
- /* Responsive: Utiliser les tokens heading-sm (24px) sur mobile */
2212
+ /* Responsive: Réduire la taille du titre sur mobile */
2213
+ .search-bar-transfer__header .heading-md {
2220
2214
  font-size: var(--font-size-text-2xl, 24px);
2221
2215
  line-height: var(--font-leading-leading-2xl, 36px);
2222
2216
  }
@@ -2114,9 +2114,7 @@
2114
2114
  color: var(--checkbox-color-checkbox-checked-default, #0f7173);
2115
2115
  }
2116
2116
 
2117
- .rating-tab__label {
2118
- color: var(--color-text-default, #262626);
2119
- }
2117
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
2120
2118
 
2121
2119
  /* States */
2122
2120
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mautourco-components",
3
- "version": "0.2.7",
3
+ "version": "0.2.8",
4
4
  "private": false,
5
5
  "description": "Bibliothèque de composants Motorco pour le redesign",
6
6
  "main": "dist/index.js",
@@ -5,10 +5,24 @@ type BodySizeInput = BodyTokenSize | 'base' | 'xl';
5
5
  type Variant = 'light' | 'regular' | 'medium' | 'bold' | 'black';
6
6
  type Leading = 'none' | '4' | '5' | '6' | '7';
7
7
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
8
+ type TextColor =
9
+ | 'default'
10
+ | 'accent'
11
+ | 'subtle'
12
+ | 'light'
13
+ | 'brand'
14
+ | 'inverted'
15
+ | 'state-default'
16
+ | 'state-hover'
17
+ | 'state-filled'
18
+ | 'state-disabled'
19
+ | 'state-error'
20
+ | 'state-success';
8
21
 
9
22
  interface BaseProps {
10
23
  variant?: Variant;
11
24
  leading?: Leading;
25
+ color?: TextColor;
12
26
  className?: string;
13
27
  children: React.ReactNode;
14
28
  onClick?: React.MouseEventHandler<Element>;
@@ -91,11 +105,19 @@ const buildVariantClass = (base: string, variant: Variant): string | undefined =
91
105
  return `${base}--${variant}`;
92
106
  };
93
107
 
108
+ const getColorStyle = (color?: TextColor): React.CSSProperties => {
109
+ if (!color) return {};
110
+ return {
111
+ color: `var(--color-text-${color}, inherit)`,
112
+ };
113
+ };
114
+
94
115
 
95
116
  export const Heading: React.FC<HeadingProps> = ({
96
117
  level = 2,
97
118
  variant = 'bold',
98
119
  leading,
120
+ color,
99
121
  as,
100
122
  className = '',
101
123
  children,
@@ -114,8 +136,10 @@ export const Heading: React.FC<HeadingProps> = ({
114
136
  .filter(Boolean)
115
137
  .join(' ');
116
138
 
139
+ const colorStyle = getColorStyle(color);
140
+
117
141
  return (
118
- <Tag className={classes} onClick={onClick}>
142
+ <Tag className={classes} style={colorStyle} onClick={onClick}>
119
143
  {children}
120
144
  </Tag>
121
145
  );
@@ -126,6 +150,7 @@ export const Text: React.FC<TextProps> = ({
126
150
  size = 'md',
127
151
  variant = 'regular',
128
152
  leading,
153
+ color,
129
154
  as,
130
155
  className = '',
131
156
  children,
@@ -145,8 +170,10 @@ export const Text: React.FC<TextProps> = ({
145
170
  .filter(Boolean)
146
171
  .join(' ');
147
172
 
173
+ const colorStyle = getColorStyle(color);
174
+
148
175
  return (
149
- <Tag className={classes} onClick={onClick}>
176
+ <Tag className={classes} style={colorStyle} onClick={onClick}>
150
177
  {children}
151
178
  </Tag>
152
179
  );
@@ -81,7 +81,7 @@ const RatingTab: React.FC<RatingTabProps> = ({
81
81
  <div className="rating-tab__checkbox">
82
82
  {checked && <Check size="sm" className="rating-tab__checkbox-icon" />}
83
83
  </div>
84
- <Text size="sm" className="rating-tab__label">
84
+ <Text size="sm" color="default" className="rating-tab__label">
85
85
  {label}
86
86
  </Text>
87
87
  </div>
@@ -285,7 +285,7 @@ const StepperRow: React.FC<StepperRowProps> = ({
285
285
 
286
286
  return (
287
287
  <div className="pax-selector__stepper">
288
- <Text size="base" variant="bold" className="pax-selector__stepper-label">
288
+ <Text size="base" variant="bold" color="default" className="pax-selector__stepper-label">
289
289
  {label}
290
290
  </Text>
291
291
  <div className="pax-selector__stepper-controls">
@@ -467,7 +467,7 @@ const RoomEditor: React.FC<RoomEditorProps> = ({
467
467
  <div className="pax-selector__room-container">
468
468
  <div className="pax-selector__room-header">
469
469
  <div className="pax-selector__room-title">
470
- <Text size="lg" variant="bold" className="pax-selector__room-name">
470
+ <Text size="lg" variant="bold" color="accent" className="pax-selector__room-name">
471
471
  Room {roomNumber}
472
472
  </Text>
473
473
  <Icon name="home" size="md" className="pax-selector__room-icon" />
@@ -516,7 +516,7 @@ const RoomEditor: React.FC<RoomEditorProps> = ({
516
516
  {/* Age specification section */}
517
517
  {((room.teens > 0) || (room.children > 0) || (room.infants > 0)) && (
518
518
  <div className="pax-selector__age-section">
519
- <Text size="base" variant="bold" className="pax-selector__age-section-title">
519
+ <Text size="base" variant="bold" color="default" className="pax-selector__age-section-title">
520
520
  Please specify the age :
521
521
  </Text>
522
522
 
@@ -857,7 +857,7 @@ const PaxSelector: React.FC<PaxSelectorProps> = ({
857
857
  {/* Age specification for single room */}
858
858
  {((internalData.teens > 0) || (internalData.children > 0) || (internalData.infants > 0)) && (
859
859
  <div className="pax-selector__age-section">
860
- <Text size="base" variant="bold" className="pax-selector__age-section-title">
860
+ <Text size="base" variant="bold" color="default" className="pax-selector__age-section-title">
861
861
  Please specify the age :
862
862
  </Text>
863
863
 
@@ -210,7 +210,7 @@ const SearchBarTransfer: React.FC<SearchBarTransferProps> = ({
210
210
  <div className={`search-bar-transfer ${className}`}>
211
211
  {/* Header with title and mode selector */}
212
212
  <div className="search-bar-transfer__header">
213
- <Heading level={5} variant="bold" className="search-bar-transfer__title">
213
+ <Heading level={5} variant="bold" color="accent">
214
214
  Select your transfer details
215
215
  </Heading>
216
216
 
@@ -241,7 +241,7 @@ const SearchBarTransfer: React.FC<SearchBarTransferProps> = ({
241
241
  <>
242
242
  {/* Transfer type selector */}
243
243
  <div className="search-bar-transfer__transfer-type">
244
- <Text size="lg" variant="bold" as="div" className="search-bar-transfer__transfer-type-label">
244
+ <Text size="lg" variant="bold" color="subtle" as="div" className="search-bar-transfer__transfer-type-label">
245
245
  Select a transfer type you want to add
246
246
  </Text>
247
247
  <div className="search-bar-transfer__add-buttons">
@@ -303,7 +303,7 @@ const SearchBarTransfer: React.FC<SearchBarTransferProps> = ({
303
303
  {/* Category header */}
304
304
  <div className="search-bar-transfer__category-header">
305
305
  <Icon name={categoryInfo[type].icon} size="md" />
306
- <Text size="md" variant="bold" as="span">
306
+ <Text size="md" variant="bold" color="default" as="span">
307
307
  {categoryInfo[type].label}
308
308
  </Text>
309
309
  </div>
@@ -147,11 +147,7 @@
147
147
  }
148
148
 
149
149
  .pax-selector__stepper-label {
150
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
151
- font-weight: 700;
152
- font-size: 16px;
153
- line-height: 24px;
154
- color: var(--color-text-default, #262626);
150
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
155
151
  }
156
152
 
157
153
  .pax-selector__stepper-controls {
@@ -573,11 +569,7 @@
573
569
  }
574
570
 
575
571
  .pax-selector__age-section-title {
576
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
577
- font-weight: var(--font-weight-font-bold, 700);
578
- font-size: 16px;
579
- line-height: 24px;
580
- color: var(--color-text-default, #262626);
572
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
581
573
  margin: 0;
582
574
  }
583
575
 
@@ -625,11 +617,7 @@
625
617
  }
626
618
 
627
619
  .pax-selector__room-name {
628
- font-family: var(--font-font-family-body, "Satoshi"), "Satoshi", "Inter", "Segoe UI", "system-ui", sans-serif;
629
- font-weight: var(--font-weight-font-bold, 700);
630
- font-size: 18px;
631
- line-height: 24px;
632
- color: var(--color-text-accent, #0f7173);
620
+ /* La couleur est maintenant gérée par la prop color="accent" du composant Text */
633
621
  margin: 0;
634
622
  }
635
623
 
@@ -10,10 +10,6 @@
10
10
  @apply flex items-center justify-between w-full;
11
11
  }
12
12
 
13
- .search-bar-transfer__title {
14
- color: var(--color-text-accent, #0f7173);
15
- }
16
-
17
13
  /* Mode Selector (Segmented Button) */
18
14
  .search-bar-transfer__mode-selector {
19
15
  @apply flex items-center;
@@ -24,9 +20,7 @@
24
20
  @apply flex items-center justify-between w-full;
25
21
  }
26
22
 
27
- .search-bar-transfer__transfer-type-label {
28
- color: var(--color-text-subtle);
29
- }
23
+ /* La couleur est maintenant gérée par la prop color="subtle" du composant Text */
30
24
 
31
25
  .search-bar-transfer__add-buttons {
32
26
  @apply flex gap-2;
@@ -40,7 +34,7 @@
40
34
  /* Category Header */
41
35
  .search-bar-transfer__category-header {
42
36
  @apply flex items-center gap-2;
43
- color: var(--color-text-default);
37
+ /* La couleur du texte est maintenant gérée par la prop color="default" du composant Text */
44
38
  }
45
39
 
46
40
  /* Divider between categories */
@@ -95,8 +89,8 @@
95
89
  @apply flex-col items-start gap-4;
96
90
  }
97
91
 
98
- .search-bar-transfer__title {
99
- /* Responsive: Utiliser les tokens heading-sm (24px) sur mobile */
92
+ /* Responsive: Réduire la taille du titre sur mobile */
93
+ .search-bar-transfer__header .heading-md {
100
94
  font-size: var(--font-size-text-2xl, 24px);
101
95
  line-height: var(--font-leading-leading-2xl, 36px);
102
96
  }
@@ -38,9 +38,7 @@
38
38
  color: var(--checkbox-color-checkbox-checked-default, #0f7173);
39
39
  }
40
40
 
41
- .rating-tab__label {
42
- color: var(--color-text-default, #262626);
43
- }
41
+ /* La couleur est maintenant gérée par la prop color="default" du composant Text */
44
42
 
45
43
  /* States */
46
44