mautourco-components 0.2.18 → 0.2.20

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 (185) hide show
  1. package/dist/components/atoms/Icon/icons/BookingIcon.d.ts +4 -0
  2. package/dist/components/atoms/Icon/icons/BookingIcon.js +36 -0
  3. package/dist/components/atoms/Icon/icons/BusIcon.js +1 -1
  4. package/dist/components/atoms/Icon/icons/CarFront.d.ts +4 -0
  5. package/dist/components/atoms/Icon/icons/CarFront.js +36 -0
  6. package/dist/components/atoms/Icon/icons/CatamaranIcon.d.ts +4 -0
  7. package/dist/components/atoms/Icon/icons/CatamaranIcon.js +36 -0
  8. package/dist/components/atoms/Icon/icons/ClockIcon.d.ts +4 -0
  9. package/dist/components/atoms/Icon/icons/ClockIcon.js +36 -0
  10. package/dist/components/atoms/Icon/icons/CloseCircleIcon.d.ts +4 -0
  11. package/dist/components/atoms/Icon/icons/CloseCircleIcon.js +36 -0
  12. package/dist/components/atoms/Icon/icons/Land.d.ts +4 -0
  13. package/dist/components/atoms/Icon/icons/Land.js +36 -0
  14. package/dist/components/atoms/Icon/icons/MapIcon.js +1 -1
  15. package/dist/components/atoms/Icon/icons/PlusCircleIcon.js +1 -1
  16. package/dist/components/atoms/Icon/icons/SeaIcon.d.ts +4 -0
  17. package/dist/components/atoms/Icon/icons/SeaIcon.js +36 -0
  18. package/dist/components/atoms/Icon/icons/registry.d.ts +7 -0
  19. package/dist/components/atoms/Icon/icons/registry.js +14 -0
  20. package/dist/components/atoms/Inputs/Input/Input.d.ts +2 -1
  21. package/dist/components/atoms/Inputs/Input/Input.js +1 -1
  22. package/dist/components/atoms/Inputs/Textarea/Textarea.d.ts +3 -1
  23. package/dist/components/atoms/Inputs/Textarea/Textarea.js +7 -5
  24. package/dist/components/molecules/BookingPax/BookingPax.d.ts +7 -0
  25. package/dist/components/molecules/BookingPax/BookingPax.js +21 -0
  26. package/dist/components/molecules/BookingPax/BookingPaxAccom.d.ts +22 -0
  27. package/dist/components/molecules/BookingPax/BookingPaxAccom.js +61 -0
  28. package/dist/components/molecules/BookingPax/BookingPaxClient/BookingPaxClient.css +2090 -0
  29. package/dist/components/molecules/BookingPax/BookingPaxClient/BookingPaxClient.d.ts +31 -0
  30. package/dist/components/molecules/BookingPax/BookingPaxClient/BookingPaxClient.js +96 -0
  31. package/dist/components/molecules/BookingPax/BookingPaxExcursion.d.ts +14 -0
  32. package/dist/components/molecules/BookingPax/BookingPaxExcursion.js +31 -0
  33. package/dist/components/molecules/BookingPax/BookingPaxHeader.d.ts +16 -0
  34. package/dist/components/molecules/BookingPax/BookingPaxHeader.js +28 -0
  35. package/dist/components/molecules/BookingPax/BookingPaxLayout/BookingPaxLayout.css +2103 -0
  36. package/dist/components/molecules/BookingPax/BookingPaxLayout/BookingPaxLayout.d.ts +11 -0
  37. package/dist/components/molecules/BookingPax/BookingPaxLayout/BookingPaxLayout.js +19 -0
  38. package/dist/components/molecules/BookingPax/BookingPaxRemarks.d.ts +5 -0
  39. package/dist/components/molecules/BookingPax/BookingPaxRemarks.js +37 -0
  40. package/dist/components/molecules/BookingPax/BookingPaxTransfer.d.ts +18 -0
  41. package/dist/components/molecules/BookingPax/BookingPaxTransfer.js +40 -0
  42. package/dist/components/molecules/BookingPax/index.d.ts +5 -0
  43. package/dist/components/molecules/BookingPax/index.js +1 -0
  44. package/dist/components/molecules/BookingResume/BookingResume.d.ts +9 -0
  45. package/dist/components/molecules/BookingResume/BookingResume.js +25 -0
  46. package/dist/components/molecules/BookingResume/BookingResumeLayout/BookingResumeLayout.css +2107 -0
  47. package/dist/components/molecules/BookingResume/BookingResumeLayout/BookingResumeLayout.d.ts +11 -0
  48. package/dist/components/molecules/BookingResume/BookingResumeLayout/BookingResumeLayout.js +19 -0
  49. package/dist/components/molecules/BookingResume/ResumeAccom/ResumeAccom.css +2094 -0
  50. package/dist/components/molecules/BookingResume/ResumeAccom/ResumeAccom.d.ts +13 -0
  51. package/dist/components/molecules/BookingResume/ResumeAccom/ResumeAccom.js +26 -0
  52. package/dist/components/molecules/BookingResume/ResumeExcursion/ResumeExcursion.css +2082 -0
  53. package/dist/components/molecules/BookingResume/ResumeExcursion/ResumeExcursion.d.ts +15 -0
  54. package/dist/components/molecules/BookingResume/ResumeExcursion/ResumeExcursion.js +28 -0
  55. package/dist/components/molecules/BookingResume/ResumeOtherService.d.ts +6 -0
  56. package/dist/components/molecules/BookingResume/ResumeOtherService.js +19 -0
  57. package/dist/components/molecules/BookingResume/ResumeTransfer.d.ts +12 -0
  58. package/dist/components/molecules/BookingResume/ResumeTransfer.js +23 -0
  59. package/dist/components/molecules/BookingResume/index.d.ts +6 -0
  60. package/dist/components/molecules/BookingResume/index.js +1 -0
  61. package/dist/components/molecules/Calendar/CalendarInput.d.ts +6 -3
  62. package/dist/components/molecules/Calendar/CalendarInput.js +10 -10
  63. package/dist/components/molecules/DateDisplay/DateDisplay.d.ts +2 -0
  64. package/dist/components/molecules/DateDisplay/DateDisplay.js +2 -2
  65. package/dist/components/molecules/DialogContentPolicy/CancellationLayout/CancellationLayout.css +2142 -0
  66. package/dist/components/molecules/DialogContentPolicy/CancellationLayout/CancellationLayout.d.ts +11 -0
  67. package/dist/components/molecules/DialogContentPolicy/CancellationLayout/CancellationLayout.js +19 -0
  68. package/dist/components/molecules/DialogContentPolicy/DialogCancellationAccom.d.ts +9 -0
  69. package/dist/components/molecules/DialogContentPolicy/DialogCancellationAccom.js +24 -0
  70. package/dist/components/molecules/DialogContentPolicy/DialogCancellationExcursion.d.ts +17 -0
  71. package/dist/components/molecules/DialogContentPolicy/DialogCancellationExcursion.js +20 -0
  72. package/dist/components/molecules/DialogContentPolicy/DialogCancellationList.d.ts +11 -0
  73. package/dist/components/molecules/DialogContentPolicy/DialogCancellationList.js +33 -0
  74. package/dist/components/molecules/DialogContentPolicy/DialogContentPolicy.d.ts +11 -0
  75. package/dist/components/molecules/DialogContentPolicy/DialogContentPolicy.js +27 -0
  76. package/dist/components/molecules/DialogContentPolicy/index.d.ts +4 -0
  77. package/dist/components/molecules/DialogContentPolicy/index.js +1 -0
  78. package/dist/components/molecules/PaxDisplay/PaxDisplay.css +2104 -0
  79. package/dist/components/molecules/PaxDisplay/PaxDisplay.d.ts +7 -0
  80. package/dist/components/molecules/PaxDisplay/PaxDisplay.js +32 -0
  81. package/dist/components/molecules/ServiceInfo/ServiceInfo.css +3 -7
  82. package/dist/components/molecules/ServiceInfo/ServiceInfo.d.ts +1 -0
  83. package/dist/components/molecules/ServiceInfo/ServiceInfo.js +5 -4
  84. package/dist/components/molecules/ServiceTitle/ServiceTitle.css +3 -0
  85. package/dist/components/molecules/ServiceTitle/ServiceTitle.d.ts +7 -1
  86. package/dist/components/molecules/ServiceTitle/ServiceTitle.js +4 -3
  87. package/dist/components/molecules/StepperTimeline/StepperTimeline.css +2151 -0
  88. package/dist/components/molecules/StepperTimeline/StepperTimeline.d.ts +23 -0
  89. package/dist/components/molecules/StepperTimeline/StepperTimeline.js +45 -0
  90. package/dist/components/organisms/Booking/Booking.css +2080 -0
  91. package/dist/components/organisms/Booking/Booking.d.ts +13 -0
  92. package/dist/components/organisms/Booking/Booking.js +37 -0
  93. package/dist/components/organisms/Booking/BookingDocket/BookingDocket.css +2159 -0
  94. package/dist/components/organisms/Booking/BookingDocket/BookingDocket.d.ts +13 -0
  95. package/dist/components/organisms/Booking/BookingDocket/BookingDocket.js +44 -0
  96. package/dist/components/organisms/Booking/BookingHeader.d.ts +8 -0
  97. package/dist/components/organisms/Booking/BookingHeader.js +17 -0
  98. package/dist/components/organisms/Booking/BookingPaxList.d.ts +25 -0
  99. package/dist/components/organisms/Booking/BookingPaxList.js +117 -0
  100. package/dist/components/organisms/Booking/BookingStep/BookingStep.css +2103 -0
  101. package/dist/components/organisms/Booking/BookingStep/BookingStep.d.ts +11 -0
  102. package/dist/components/organisms/Booking/BookingStep/BookingStep.js +30 -0
  103. package/dist/components/organisms/Booking/index.d.ts +3 -0
  104. package/dist/components/organisms/Booking/index.js +1 -0
  105. package/dist/components/organisms/DateTimePicker/DateTimePicker.d.ts +6 -3
  106. package/dist/components/organisms/DateTimePicker/DateTimePicker.js +28 -22
  107. package/dist/components/organisms/DialogBookingConfirm/DialogBookingConfirm.d.ts +10 -0
  108. package/dist/components/organisms/DialogBookingConfirm/DialogBookingConfirm.js +17 -0
  109. package/dist/components/organisms/TabCancellationPolicy/HeaderAccom.js +2 -8
  110. package/dist/components/ui/checkbox.d.ts +4 -0
  111. package/dist/components/ui/checkbox.js +31 -0
  112. package/dist/hooks/useBookingPax.d.ts +8 -0
  113. package/dist/hooks/useBookingPax.js +43 -0
  114. package/dist/hooks/useStays.d.ts +1 -0
  115. package/dist/hooks/useStays.js +11 -0
  116. package/dist/index.d.ts +3 -0
  117. package/dist/index.js +3 -0
  118. package/dist/types/table/booking.types.d.ts +12 -0
  119. package/dist/types/table/detail-resume.types.d.ts +3 -1
  120. package/package.json +4 -1
  121. package/src/components/atoms/Icon/icons/BookingIcon.tsx +40 -0
  122. package/src/components/atoms/Icon/icons/BusIcon.tsx +1 -1
  123. package/src/components/atoms/Icon/icons/CarFront.tsx +44 -0
  124. package/src/components/atoms/Icon/icons/CatamaranIcon.tsx +51 -0
  125. package/src/components/atoms/Icon/icons/ClockIcon.tsx +46 -0
  126. package/src/components/atoms/Icon/icons/CloseCircleIcon.tsx +55 -0
  127. package/src/components/atoms/Icon/icons/Land.tsx +40 -0
  128. package/src/components/atoms/Icon/icons/MapIcon.tsx +6 -2
  129. package/src/components/atoms/Icon/icons/PlusCircleIcon.tsx +1 -1
  130. package/src/components/atoms/Icon/icons/SeaIcon.tsx +47 -0
  131. package/src/components/atoms/Icon/icons/registry.tsx +14 -0
  132. package/src/components/atoms/Inputs/Input/Input.tsx +6 -5
  133. package/src/components/atoms/Inputs/Textarea/Textarea.tsx +18 -4
  134. package/src/components/molecules/BookingPax/BookingPax.tsx +12 -0
  135. package/src/components/molecules/BookingPax/BookingPaxAccom.tsx +120 -0
  136. package/src/components/molecules/BookingPax/BookingPaxClient/BookingPaxClient.css +4 -0
  137. package/src/components/molecules/BookingPax/BookingPaxClient/BookingPaxClient.tsx +188 -0
  138. package/src/components/molecules/BookingPax/BookingPaxExcursion.tsx +77 -0
  139. package/src/components/molecules/BookingPax/BookingPaxHeader.tsx +47 -0
  140. package/src/components/molecules/BookingPax/BookingPaxLayout/BookingPaxLayout.css +15 -0
  141. package/src/components/molecules/BookingPax/BookingPaxLayout/BookingPaxLayout.tsx +25 -0
  142. package/src/components/molecules/BookingPax/BookingPaxRemarks.tsx +46 -0
  143. package/src/components/molecules/BookingPax/BookingPaxTransfer.tsx +121 -0
  144. package/src/components/molecules/BookingPax/index.ts +9 -0
  145. package/src/components/molecules/BookingResume/BookingResume.tsx +16 -0
  146. package/src/components/molecules/BookingResume/BookingResumeLayout/BookingResumeLayout.css +28 -0
  147. package/src/components/molecules/BookingResume/BookingResumeLayout/BookingResumeLayout.tsx +37 -0
  148. package/src/components/molecules/BookingResume/ResumeAccom/ResumeAccom.css +12 -0
  149. package/src/components/molecules/BookingResume/ResumeAccom/ResumeAccom.tsx +63 -0
  150. package/src/components/molecules/BookingResume/ResumeExcursion/ResumeExcursion.css +5 -0
  151. package/src/components/molecules/BookingResume/ResumeExcursion/ResumeExcursion.tsx +75 -0
  152. package/src/components/molecules/BookingResume/ResumeOtherService.tsx +21 -0
  153. package/src/components/molecules/BookingResume/ResumeTransfer.tsx +49 -0
  154. package/src/components/molecules/BookingResume/index.ts +6 -0
  155. package/src/components/molecules/Calendar/CalendarInput.tsx +26 -24
  156. package/src/components/molecules/DateDisplay/DateDisplay.tsx +9 -5
  157. package/src/components/molecules/DialogContentPolicy/CancellationLayout/CancellationLayout.css +37 -0
  158. package/src/components/molecules/DialogContentPolicy/CancellationLayout/CancellationLayout.tsx +28 -0
  159. package/src/components/molecules/DialogContentPolicy/DialogCancellationAccom.tsx +65 -0
  160. package/src/components/molecules/DialogContentPolicy/DialogCancellationExcursion.tsx +59 -0
  161. package/src/components/molecules/DialogContentPolicy/DialogCancellationList.tsx +49 -0
  162. package/src/components/molecules/DialogContentPolicy/DialogContentPolicy.tsx +45 -0
  163. package/src/components/molecules/DialogContentPolicy/index.ts +5 -0
  164. package/src/components/molecules/PaxDisplay/PaxDisplay.css +19 -0
  165. package/src/components/molecules/PaxDisplay/PaxDisplay.tsx +59 -0
  166. package/src/components/molecules/ServiceInfo/ServiceInfo.css +3 -5
  167. package/src/components/molecules/ServiceInfo/ServiceInfo.tsx +18 -3
  168. package/src/components/molecules/ServiceTitle/ServiceTitle.css +1 -1
  169. package/src/components/molecules/ServiceTitle/ServiceTitle.tsx +25 -7
  170. package/src/components/molecules/StepperTimeline/StepperTimeline.css +59 -0
  171. package/src/components/molecules/StepperTimeline/StepperTimeline.tsx +105 -0
  172. package/src/components/organisms/Booking/Booking.css +3 -0
  173. package/src/components/organisms/Booking/Booking.tsx +25 -0
  174. package/src/components/organisms/Booking/BookingDocket/BookingDocket.css +67 -0
  175. package/src/components/organisms/Booking/BookingDocket/BookingDocket.tsx +165 -0
  176. package/src/components/organisms/Booking/BookingHeader.tsx +24 -0
  177. package/src/components/organisms/Booking/BookingPaxList.tsx +224 -0
  178. package/src/components/organisms/Booking/BookingStep/BookingStep.css +12 -0
  179. package/src/components/organisms/Booking/BookingStep/BookingStep.tsx +51 -0
  180. package/src/components/organisms/Booking/index.ts +3 -0
  181. package/src/components/organisms/CarBookingCard/index.ts +1 -0
  182. package/src/components/organisms/DateTimePicker/DateTimePicker.tsx +69 -49
  183. package/src/components/organisms/DialogBookingConfirm/DialogBookingConfirm.tsx +25 -0
  184. package/src/components/organisms/TabCancellationPolicy/HeaderAccom.tsx +2 -8
  185. package/src/components/ui/checkbox.tsx +32 -0
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { IconBaseProps } from './registry';
3
+
4
+ const ClockIcon: React.FC<IconBaseProps> = ({ size = 'md', className = '', color }) => {
5
+ const getSizeClasses = () => {
6
+ switch (size) {
7
+ case 'xs':
8
+ return 'w-3 h-3';
9
+ case 'sm':
10
+ return 'w-4 h-4';
11
+ case 'md':
12
+ return 'w-5 h-5';
13
+ case 'lg':
14
+ return 'w-6 h-6';
15
+ case 'xl':
16
+ return 'w-8 h-8';
17
+ default:
18
+ return 'w-5 h-5';
19
+ }
20
+ };
21
+
22
+ const sizeClasses = getSizeClasses();
23
+ const colorClass = color ? `text-${color}` : 'text-current';
24
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
25
+
26
+ return (
27
+ <svg
28
+ className={classes}
29
+ viewBox="0 0 16 16"
30
+ fill="none"
31
+ xmlns="http://www.w3.org/2000/svg">
32
+ <path
33
+ d="M7.63187 4.00006C7.98111 4.00006 8.26373 4.2723 8.26373 4.60873V8.51808L10.6838 9.86382C10.9861 10.032 11.0898 10.4041 10.9152 10.6954C10.7405 10.9867 10.3543 11.0865 10.0519 10.9183L7.31593 9.39661C7.12032 9.28783 7 9.08691 7 8.86937V4.60867C7 4.27224 7.28262 4.00006 7.63187 4.00006Z"
34
+ fill="white"
35
+ />
36
+ <path
37
+ fillRule="evenodd"
38
+ clipRule="evenodd"
39
+ d="M8 2C11.3136 2 14 4.6864 14 8C14 11.3136 11.3136 14 8 14C4.6864 14 2 11.3136 2 8C2 4.6864 4.6864 2 8 2ZM8 3.06667C5.27547 3.06667 3.06667 5.27547 3.06667 8C3.06667 10.7245 5.27547 12.9333 8 12.9333C10.7245 12.9333 12.9333 10.7245 12.9333 8C12.9333 5.27547 10.7245 3.06667 8 3.06667Z"
40
+ fill="white"
41
+ />
42
+ </svg>
43
+ );
44
+ };
45
+
46
+ export default ClockIcon;
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { IconBaseProps } from './registry';
3
+
4
+ const CloseCircleIcon: React.FC<IconBaseProps> = ({
5
+ size = 'md',
6
+ className = '',
7
+ color,
8
+ }) => {
9
+ const getSizeClasses = () => {
10
+ switch (size) {
11
+ case 'xs':
12
+ return 'w-3 h-3';
13
+ case 'sm':
14
+ return 'w-4 h-4';
15
+ case 'md':
16
+ return 'w-5 h-5';
17
+ case 'lg':
18
+ return 'w-6 h-6';
19
+ case 'xl':
20
+ return 'w-8 h-8';
21
+ default:
22
+ return 'w-5 h-5';
23
+ }
24
+ };
25
+
26
+ const sizeClasses = getSizeClasses();
27
+ const colorClass = color ? `text-${color}` : 'text-current';
28
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
29
+
30
+ return (
31
+ <svg
32
+ className={classes}
33
+ viewBox="0 0 24 24"
34
+ fill="none"
35
+ xmlns="http://www.w3.org/2000/svg">
36
+ <g clipPath="url(#clip0_5114_5257)">
37
+ <path
38
+ d="M8.37604 14.0331L10.4083 12.0009L8.375 9.96758C7.93578 9.52835 7.93601 8.81595 8.375 8.37659C8.81434 7.93725 9.52665 7.93725 9.96599 8.37659L11.9993 10.4099L14.0325 8.37659C14.4719 7.93725 15.1842 7.93725 15.6235 8.37659C16.0625 8.81596 16.0628 9.52835 15.6235 9.96758L13.5903 12.0009L15.6225 14.0331L15.7002 14.1191C16.0604 14.5609 16.0343 15.2123 15.6225 15.6241C15.2106 16.0356 14.5592 16.062 14.1175 15.7018L14.0315 15.6241L11.9993 13.5918L9.96703 15.6241C9.5278 16.0633 8.81541 16.0631 8.37604 15.6241C7.9367 15.1847 7.9367 14.4724 8.37604 14.0331Z"
39
+ fill="black"
40
+ />
41
+ <path
42
+ d="M12 0.874514C18.1438 0.874779 23.1237 5.85625 23.124 12C23.1238 18.1438 18.1438 23.1238 12 23.124C5.856 23.124 0.874777 18.1439 0.874514 12C0.874812 5.85609 5.85602 0.874513 12 0.874514ZM12 3.12451C7.09866 3.12451 3.12481 7.09873 3.12451 12C3.12478 16.9013 7.09864 20.874 12 20.874C16.9011 20.8738 20.8738 16.9011 20.874 12C20.8737 7.09889 16.9011 3.12478 12 3.12451Z"
43
+ fill="black"
44
+ />
45
+ </g>
46
+ <defs>
47
+ <clipPath id="clip0_5114_5257">
48
+ <rect width="24" height="24" fill="white" />
49
+ </clipPath>
50
+ </defs>
51
+ </svg>
52
+ );
53
+ };
54
+
55
+ export default CloseCircleIcon;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { IconBaseProps } from './registry';
3
+
4
+ const LandIcon: React.FC<IconBaseProps> = ({ size = 'md', className = '', color }) => {
5
+ const getSizeClasses = () => {
6
+ switch (size) {
7
+ case 'xs':
8
+ return 'w-3 h-3';
9
+ case 'sm':
10
+ return 'w-4 h-4';
11
+ case 'md':
12
+ return 'w-5 h-5';
13
+ case 'lg':
14
+ return 'w-6 h-6';
15
+ case 'xl':
16
+ return 'w-8 h-8';
17
+ default:
18
+ return 'w-5 h-5';
19
+ }
20
+ };
21
+
22
+ const sizeClasses = getSizeClasses();
23
+ const colorClass = color ? `text-${color}` : 'text-current';
24
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
25
+
26
+ return (
27
+ <svg
28
+ className={classes}
29
+ viewBox="0 0 16 16"
30
+ fill="none"
31
+ xmlns="http://www.w3.org/2000/svg">
32
+ <path
33
+ d="M5.28056 1.25198C5.58299 1.23066 5.8686 1.39388 6.00419 1.66507L8.20537 6.06644L10.803 3.46976L10.8753 3.40628C11.0527 3.26937 11.2838 3.21837 11.5052 3.27054C11.7582 3.33026 11.963 3.51613 12.0452 3.76273L15.3782 13.7627C15.4545 13.9914 15.4157 14.2429 15.2747 14.4385C15.1337 14.634 14.9073 14.75 14.6663 14.75H1.3333C1.09221 14.75 0.86586 14.6341 0.724897 14.4385C0.583946 14.2429 0.545147 13.9914 0.621381 13.7627L4.62138 1.76273L4.66533 1.65921C4.78346 1.42754 5.01581 1.2708 5.28056 1.25198ZM5.34013 10.0869C4.66902 10.0511 3.97444 10.2227 3.24345 10.6407L2.37431 13.25H13.6263L13.0618 11.5596C12.3043 11.919 11.524 12.1022 10.7259 12.084C9.63177 12.059 8.57554 11.6588 7.56767 10.9453V10.9463C6.78406 10.393 6.04385 10.1246 5.34013 10.0869ZM3.8704 8.75882C4.37922 8.61969 4.89661 8.5619 5.42021 8.58988C6.33277 8.63869 7.21752 8.94744 8.06962 9.47952L8.4329 9.72073V9.72171C9.25127 10.3011 10.0246 10.5672 10.7601 10.584C11.345 10.5973 11.9498 10.4512 12.5823 10.1211L11.0052 5.38773L8.53056 7.86331C8.36016 8.03372 8.11805 8.11179 7.88017 8.07327C7.6423 8.03467 7.43724 7.88447 7.32939 7.66898L5.47197 3.95511L3.8704 8.75882Z"
34
+ fill="currentColor"
35
+ />
36
+ </svg>
37
+ );
38
+ };
39
+
40
+ export default LandIcon;
@@ -29,8 +29,12 @@ const MapIcon: React.FC<MapIconProps> = ({ size = 'md', className = '', color })
29
29
  const classes = `${sizeClasses} ${colorClass} ${className}`;
30
30
 
31
31
  return (
32
- <svg className={classes} viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
33
- <g clip-path="url(#clip0_7033_40039)">
32
+ <svg
33
+ className={classes}
34
+ viewBox="0 0 16 16"
35
+ fill="none"
36
+ xmlns="http://www.w3.org/2000/svg">
37
+ <g clipPath="url(#clip0_7033_40039)">
34
38
  <path
35
39
  d="M11.2483 5.33398C11.2483 4.47217 10.9064 3.6456 10.2971 3.03613C9.6876 2.42664 8.86022 2.08398 7.99827 2.08398C7.13645 2.08408 6.30982 2.42673 5.70042 3.03613C5.09104 3.64561 4.74827 4.47212 4.74827 5.33398C4.74827 6.29385 5.27536 7.37034 6.01975 8.38379C6.70202 9.31263 7.49819 10.0927 7.99827 10.5488C8.49845 10.0929 9.29531 9.31298 9.97776 8.38379C10.722 7.37039 11.2483 6.2939 11.2483 5.33398ZM2.11545 13.917H13.8821L12.6047 10.084H10.5403C9.9137 10.8175 9.29437 11.4056 8.90354 11.7559C8.88906 11.7688 8.87406 11.7812 8.85862 11.793C8.61164 11.9816 8.30904 12.084 7.99827 12.084C7.68762 12.0839 7.38578 11.9815 7.13889 11.793C7.12325 11.781 7.10764 11.769 7.09299 11.7559C6.70253 11.4056 6.08382 10.8175 5.45725 10.084H3.39573L2.11545 13.917ZM8.58225 5.33398C8.58225 5.01182 8.32043 4.75098 7.99827 4.75098C7.67627 4.75117 7.41526 5.01194 7.41526 5.33398C7.41526 5.65603 7.67627 5.91679 7.99827 5.91699C8.32043 5.91699 8.58225 5.65615 8.58225 5.33398ZM10.0823 5.33398C10.0823 6.48458 9.14886 7.41699 7.99827 7.41699C6.84784 7.41679 5.91526 6.48446 5.91526 5.33398C5.91526 4.18351 6.84784 3.25117 7.99827 3.25098C9.14886 3.25098 10.0823 4.18339 10.0823 5.33398ZM12.7395 5.60547C12.6711 6.66975 12.2087 7.6965 11.6506 8.58398H12.6643C12.9246 8.58392 13.1794 8.65556 13.4006 8.79004L13.4934 8.85156L13.5803 8.91992C13.7498 9.06348 13.8835 9.24462 13.9699 9.44922L14.009 9.55273L15.342 13.5527C15.4129 13.7655 15.4324 13.9922 15.3987 14.2139C15.3648 14.4357 15.2788 14.6471 15.1477 14.8291C15.0166 15.011 14.8442 15.1594 14.6448 15.2617C14.4451 15.364 14.2236 15.4168 13.9992 15.417H1.99827C1.77384 15.4169 1.5525 15.3641 1.35276 15.2617C1.15295 15.1593 0.980017 15.0103 0.848853 14.8281C0.717783 14.646 0.631562 14.4348 0.597876 14.2129C0.564278 13.9911 0.584401 13.7645 0.655493 13.5518L1.99143 9.55176L2.03049 9.44727C2.1314 9.20941 2.29628 9.00342 2.50706 8.85156L2.59983 8.79004C2.82065 8.65595 3.07444 8.58412 3.3342 8.58398H4.34592C3.78785 7.6966 3.32547 6.66961 3.25706 5.60547L3.24827 5.33398C3.24827 4.07429 3.74919 2.86637 4.63987 1.97559C5.53058 1.08487 6.73862 0.584082 7.99827 0.583984C9.25805 0.583984 10.4668 1.08479 11.3576 1.97559C12.2483 2.86635 12.7483 4.07435 12.7483 5.33398L12.7395 5.60547Z"
36
40
  fill="#0F7173"
@@ -42,7 +42,7 @@ const PlusCircleIcon: React.FC<PlusCircleIconProps> = ({
42
42
  viewBox="0 0 16 16"
43
43
  fill="none"
44
44
  xmlns="http://www.w3.org/2000/svg">
45
- <g clip-path="url(#clip0_7074_66340)">
45
+ <g clipPath="url(#clip0_7074_66340)">
46
46
  <path
47
47
  d="M13.915 8.00098C13.915 4.7334 11.2666 2.08416 7.99902 2.08398C4.73134 2.08398 2.08203 4.73329 2.08203 8.00098C2.08221 11.2685 4.73145 13.917 7.99902 13.917C11.2664 13.9168 13.9149 11.2684 13.915 8.00098ZM7.24902 10.667V8.75098H5.33203C4.91793 8.75098 4.58221 8.41504 4.58203 8.00098C4.58203 7.58676 4.91782 7.25098 5.33203 7.25098H7.24902V5.33398C7.24902 4.91977 7.58481 4.58398 7.99902 4.58398C8.41309 4.58416 8.74902 4.91988 8.74902 5.33398V7.25098H10.665L10.7422 7.25488C11.1203 7.29337 11.415 7.61271 11.415 8.00098C11.4149 8.38912 11.1202 8.70862 10.7422 8.74707L10.665 8.75098H8.74902V10.667C8.74902 11.0811 8.41309 11.4168 7.99902 11.417C7.58481 11.417 7.24902 11.0812 7.24902 10.667ZM15.415 8.00098C15.4149 12.0968 12.0949 15.4168 7.99902 15.417C3.90302 15.417 0.582208 12.0969 0.582031 8.00098C0.582031 3.90487 3.90291 0.583984 7.99902 0.583984C12.095 0.584161 15.415 3.90497 15.415 8.00098Z"
48
48
  fill="white"
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import { IconBaseProps } from './registry';
3
+
4
+ const SeaIcon: React.FC<IconBaseProps> = ({ size = 'md', className = '', color }) => {
5
+ const getSizeClasses = () => {
6
+ switch (size) {
7
+ case 'xs':
8
+ return 'w-3 h-3';
9
+ case 'sm':
10
+ return 'w-4 h-4';
11
+ case 'md':
12
+ return 'w-5 h-5';
13
+ case 'lg':
14
+ return 'w-6 h-6';
15
+ case 'xl':
16
+ return 'w-8 h-8';
17
+ default:
18
+ return 'w-5 h-5';
19
+ }
20
+ };
21
+
22
+ const sizeClasses = getSizeClasses();
23
+ const colorClass = color ? `text-${color}` : 'text-current';
24
+ const classes = `${sizeClasses} ${colorClass} ${className}`;
25
+
26
+ return (
27
+ <svg
28
+ className={classes}
29
+ viewBox="0 0 16 16"
30
+ fill="none"
31
+ xmlns="http://www.w3.org/2000/svg">
32
+ <g clipPath="url(#clip0_238_4210)">
33
+ <path
34
+ d="M13.916 10.6664V7.41638H12.75V10.6664C12.75 11.2189 12.5303 11.7493 12.1396 12.14C11.7489 12.5307 11.2186 12.7504 10.666 12.7504C10.2521 12.7502 9.91619 12.4143 9.91602 12.0004C9.91602 11.5863 10.252 11.2505 10.666 11.2504C10.8207 11.2504 10.9697 11.1889 11.0791 11.0795C11.1885 10.9701 11.25 10.8211 11.25 10.6664V9.49353C10.6882 9.87454 10.0216 10.0834 9.33301 10.0834H8.98926C8.43974 10.0755 7.91492 9.8509 7.53027 9.45837C7.52045 9.44835 7.5112 9.43769 7.50195 9.42712L7.05957 8.92126C6.8232 8.6932 6.50876 8.69298 6.27246 8.92126L5.83105 9.42712C5.82176 9.43774 5.81163 9.4483 5.80176 9.45837C5.41714 9.85078 4.89317 10.0755 4.34375 10.0834H4C3.09384 10.0834 2.22473 9.72315 1.58398 9.0824C0.943235 8.44165 0.583008 7.57254 0.583008 6.66638C0.583094 5.76034 0.943312 4.89104 1.58398 4.25037C2.2247 3.60982 3.094 3.25037 4 3.25037H9.33301C10.0213 3.25037 10.6883 3.45758 11.25 3.83826V1.33337C11.25 0.91916 11.5858 0.583374 12 0.583374H14.666C15.0802 0.583374 15.416 0.91916 15.416 1.33337V10.6664C15.416 13.2806 13.2802 15.4164 10.666 15.4164H8C7.44747 15.4164 6.91707 15.1967 6.52637 14.806C6.29243 14.572 6.12124 14.2877 6.02051 13.9789C5.71169 13.8781 5.42736 13.707 5.19336 13.473C4.80274 13.0824 4.58309 12.5528 4.58301 12.0004C4.58301 11.5862 4.91879 11.2504 5.33301 11.2504C5.74722 11.2504 6.08301 11.5862 6.08301 12.0004C6.08309 12.155 6.14459 12.3032 6.25391 12.4125C6.36323 12.5218 6.51142 12.5833 6.66602 12.5834C6.82072 12.5834 6.9697 12.5219 7.0791 12.4125C7.18832 12.3032 7.24991 12.1549 7.25 12.0004C7.25 11.5862 7.58579 11.2504 8 11.2504C8.41406 11.2505 8.75 11.5863 8.75 12.0004C8.74991 12.5527 8.53017 13.0824 8.13965 13.473C8.00163 13.611 7.84535 13.7265 7.67773 13.8197C7.77252 13.8824 7.88463 13.9164 8 13.9164H10.666C12.4518 13.9164 13.916 12.4522 13.916 10.6664ZM3.41602 14.3334C3.41602 14.1321 3.27369 13.9641 3.08398 13.9252L3 13.9164C2.76988 13.9164 2.58301 14.1033 2.58301 14.3334C2.58301 14.5635 2.76988 14.7504 3 14.7504C3.22997 14.7502 3.41602 14.5634 3.41602 14.3334ZM2.00586 10.9164C2.41996 10.9164 2.75568 11.2523 2.75586 11.6664C2.75586 12.0806 2.42007 12.4164 2.00586 12.4164H2C1.58579 12.4164 1.25 12.0806 1.25 11.6664C1.25018 11.2523 1.5859 10.9164 2 10.9164H2.00586ZM12.75 5.91638H13.916V2.08337H12.75V5.91638ZM4.08301 14.3334C4.08301 14.9316 3.59816 15.4162 3 15.4164C2.40169 15.4164 1.91602 14.9317 1.91602 14.3334C1.91602 13.7351 2.40169 13.2504 3 13.2504L3.11035 13.2552C3.65669 13.3107 4.08301 13.7724 4.08301 14.3334ZM2.08301 6.66638C2.08301 7.17471 2.28509 7.66241 2.64453 8.02185C3.00398 8.3813 3.49167 8.58337 4 8.58337H4.32227C4.47445 8.58121 4.6192 8.51918 4.72656 8.4115L5.16895 7.90662L5.20312 7.86951C6.02931 7.04366 7.30376 7.04355 8.12988 7.86951C8.14165 7.88128 8.1531 7.89409 8.16406 7.90662L8.6084 8.41443C8.7155 8.5205 8.85979 8.58122 9.01074 8.58337H9.33301L9.52246 8.57361C9.96121 8.53003 10.374 8.33635 10.6885 8.02185C11.003 7.70728 11.1967 7.29464 11.2402 6.85583L11.25 6.66638L11.2402 6.47693C11.1966 6.03844 11.0027 5.62628 10.6885 5.31189C10.374 4.99737 9.96124 4.80272 9.52246 4.75916L9.33301 4.75037H4C3.49167 4.75037 3.00398 4.95245 2.64453 5.31189C2.28527 5.67124 2.08309 6.15824 2.08301 6.66638Z"
35
+ fill="currentColor"
36
+ />
37
+ </g>
38
+ <defs>
39
+ <clipPath id="clip0_238_4210">
40
+ <rect width="16" height="16" fill="white" />
41
+ </clipPath>
42
+ </defs>
43
+ </svg>
44
+ );
45
+ };
46
+
47
+ export default SeaIcon;
@@ -6,6 +6,7 @@ import ArrivalIcon from './ArrivalIcon';
6
6
  import ArrowDownOutlineIcon from './ArrowDownOutlineIcon';
7
7
  import ArrowRightOutlineIcon from './ArrowRightOutlineIcon';
8
8
  import BikeIcon from './BikeIcon';
9
+ import BookingIcon from './BookingIcon';
9
10
  import Building2OutlineIcon from './Building2OutlineIcon';
10
11
  import BuildingIcon from './BuildingIcon';
11
12
  import BusIcon from './BusIcon';
@@ -13,17 +14,22 @@ import Calendar2Icon from './Calendar2Icon';
13
14
  import CalendarIcon from './CalendarIcon';
14
15
  import CalendarOutlineIcon from './CalendarOutlineIcon';
15
16
  import CalendarRangeOutlineIcon from './CalendarRangeOutlineIcon';
17
+ import CarFrontIcon from './CarFront';
16
18
  import CarIcon from './CarIcon';
19
+ import CatamaranIcon from './CatamaranIcon';
17
20
  import Check from './Check';
18
21
  import CheckCircleIcon from './CheckCircleIcon';
19
22
  import Chevron from './Chevron';
23
+ import ClockIcon from './ClockIcon';
20
24
  import Close from './Close';
25
+ import CloseCircleIcon from './CloseCircleIcon';
21
26
  import DeleteIcon from './DeleteIcon';
22
27
  import DepartureIcon from './DepartureIcon';
23
28
  import EyeIcon from './EyeIcon';
24
29
  import FacebookIcon from './FacebookIcon';
25
30
  import HomeIcon from './HomeIcon';
26
31
  import InfoIcon from './InfoIcon';
32
+ import LandIcon from './Land';
27
33
  import LinkedInIcon from './LinkedInIcon';
28
34
  import LuggageIcon from './LuggageIcon';
29
35
  import MapIcon from './MapIcon';
@@ -41,6 +47,7 @@ import PlaneTakeoffOutlineIcon from './PlaneTakeoffOutlineIcon';
41
47
  import PlusCircleIcon from './PlusCircleIcon';
42
48
  import PlusIcon from './PlusIcon';
43
49
  import QuotationIcon from './QuotationIcon';
50
+ import SeaIcon from './SeaIcon';
44
51
  import Search from './Search';
45
52
  import Settings from './Settings';
46
53
  import ShipIcon from './ShipIcon';
@@ -132,6 +139,13 @@ export const ICONS = {
132
139
  bike: BikeIcon as unknown as IconComponent,
133
140
  air: AirIcon as unknown as IconComponent,
134
141
  luggage: LuggageIcon as unknown as IconComponent,
142
+ 'car-front': CarFrontIcon as unknown as IconComponent,
143
+ sea: SeaIcon as unknown as IconComponent,
144
+ catamaran: CatamaranIcon as unknown as IconComponent,
145
+ land: LandIcon as unknown as IconComponent,
146
+ booking: BookingIcon as unknown as IconComponent,
147
+ 'close-circle': CloseCircleIcon as unknown as IconComponent,
148
+ clock: ClockIcon as unknown as IconComponent,
135
149
  } as const satisfies Record<string, IconComponent>;
136
150
 
137
151
  export type IconName = keyof typeof ICONS;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Icon from '../../Icon/Icon';
2
+ import Icon, { IconName } from '../../Icon/Icon';
3
3
 
4
4
  interface InputProps {
5
5
  variant?: 'default' | 'focus' | 'success' | 'error' | 'disabled';
@@ -10,7 +10,7 @@ interface InputProps {
10
10
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
11
11
  onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
12
12
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
13
- icon?: 'search' | 'close' | 'settings' | 'user';
13
+ icon?: IconName;
14
14
  iconPosition?: 'leading' | 'trailing';
15
15
  }
16
16
 
@@ -32,10 +32,11 @@ const Input: React.FC<InputProps> = ({
32
32
  focus: 'input-field--focus',
33
33
  success: 'input-field--success',
34
34
  error: 'input-field--error',
35
- disabled: 'input-field--disabled'
35
+ disabled: 'input-field--disabled',
36
36
  };
37
37
 
38
- const inputClasses = `${baseClasses} ${variantClasses[variant]} ${icon ? `input-field--with-icon input-field--icon-${iconPosition}` : ''} ${className}`.trim();
38
+ const inputClasses =
39
+ `${baseClasses} ${variantClasses[variant]} ${icon ? `input-field--with-icon input-field--icon-${iconPosition}` : ''} ${className}`.trim();
39
40
 
40
41
  return (
41
42
  <div className={`input-wrapper ${icon ? 'input-wrapper--with-icon' : ''}`.trim()}>
@@ -63,4 +64,4 @@ const Input: React.FC<InputProps> = ({
63
64
  );
64
65
  };
65
66
 
66
- export default Input;
67
+ export default Input;
@@ -7,45 +7,59 @@ interface TextareaProps {
7
7
  disabled?: boolean;
8
8
  rows?: number;
9
9
  className?: string;
10
+ style?: React.CSSProperties;
10
11
  onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
12
+ onInput?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
11
13
  onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
12
14
  onBlur?: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
13
15
  }
14
16
 
15
- const Textarea: React.FC<TextareaProps> = ({
17
+ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
18
+ (
19
+ {
16
20
  variant = 'default',
17
21
  placeholder = 'Enter your text...',
18
22
  value,
19
23
  disabled = false,
20
24
  rows = 4,
21
25
  className = '',
26
+ style,
22
27
  onChange,
28
+ onInput,
23
29
  onFocus,
24
30
  onBlur,
25
- }) => {
31
+ },
32
+ ref
33
+ ) => {
26
34
  const baseClasses = 'input-field';
27
35
  const variantClasses = {
28
36
  default: 'input-field--default',
29
37
  focus: 'input-field--focus',
30
38
  success: 'input-field--success',
31
39
  error: 'input-field--error',
32
- disabled: 'input-field--disabled'
40
+ disabled: 'input-field--disabled',
33
41
  };
34
42
 
35
43
  const textareaClasses = `${baseClasses} ${variantClasses[variant]} ${className}`;
36
44
 
37
45
  return (
38
46
  <textarea
47
+ ref={ref}
39
48
  className={textareaClasses}
40
49
  placeholder={placeholder}
41
50
  value={value}
42
51
  disabled={disabled || variant === 'disabled'}
43
52
  rows={rows}
53
+ style={style}
44
54
  onChange={onChange}
55
+ onInput={onInput}
45
56
  onFocus={onFocus}
46
57
  onBlur={onBlur}
47
58
  />
48
59
  );
49
- };
60
+ }
61
+ );
62
+
63
+ Textarea.displayName = 'Textarea';
50
64
 
51
65
  export default Textarea;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { BookingPaxAccom } from './BookingPaxAccom';
3
+ import { BookingPaxExcursion } from './BookingPaxExcursion';
4
+ import { BookingPaxTransfer } from './BookingPaxTransfer';
5
+
6
+ export const BookingPax = (props: React.PropsWithChildren) => {
7
+ return <div className="booking-pax space-y-6" {...props} />;
8
+ };
9
+
10
+ BookingPax.Accom = BookingPaxAccom;
11
+ BookingPax.Excursion = BookingPaxExcursion;
12
+ BookingPax.Transfer = BookingPaxTransfer;
@@ -0,0 +1,120 @@
1
+ import useBookingPax from '@/src/hooks/useBookingPax';
2
+ import React, { useEffect, useMemo, useRef } from 'react';
3
+ import TextWithIcon from '../TextWithIcon/TextWithIcon';
4
+ import {
5
+ BookingPaxClient,
6
+ BookingPaxClientInfo,
7
+ BookingPaxClientProps,
8
+ } from './BookingPaxClient/BookingPaxClient';
9
+ import { BookingPaxHeader } from './BookingPaxHeader';
10
+ import { BookingPaxLayout } from './BookingPaxLayout/BookingPaxLayout';
11
+ import { BookingPaxRemarks } from './BookingPaxRemarks';
12
+
13
+ export interface BookingPaxAccomRoom {
14
+ paxCount: number;
15
+ }
16
+
17
+ export interface RoomData {
18
+ room: BookingPaxAccomRoom;
19
+ roomIndex: number;
20
+ selectedCount: number;
21
+ isPaxCountError: boolean;
22
+ }
23
+
24
+ export interface BookingPaxAccomProps extends Pick<
25
+ BookingPaxClientProps,
26
+ 'selectedClientsInfoIds' | 'onPaxChange'
27
+ > {
28
+ rooms: BookingPaxAccomRoom[];
29
+ clientsInfo: BookingPaxClientInfo[];
30
+ hotelName: string;
31
+ roomName: string;
32
+ isSubmitted?: boolean;
33
+ maxPaxCount?: number;
34
+ onRemarkChange?: (value: string) => void;
35
+ onError?: (roomIndex: number, hasError: boolean) => void;
36
+ }
37
+
38
+ export const BookingPaxAccom: React.FC<BookingPaxAccomProps> = (props) => {
39
+ const {
40
+ rooms,
41
+ clientsInfo = [],
42
+ hotelName,
43
+ roomName,
44
+ selectedClientsInfoIds,
45
+ isSubmitted,
46
+ onPaxChange,
47
+ onRemarkChange,
48
+ onError,
49
+ } = props;
50
+
51
+ const { changeOptions, isSelectedClient, onPaxOptionsChange, onSelectedClients } =
52
+ useBookingPax(selectedClientsInfoIds);
53
+
54
+ // Calculate selected pax count for each room
55
+ const roomData = useMemo<RoomData[]>(() => {
56
+ return rooms.map((room, roomIndex) => {
57
+ const selectedClients = clientsInfo.filter((client) =>
58
+ isSelectedClient(roomIndex, client.clientId)
59
+ );
60
+ const selectedCount = selectedClients.length;
61
+ const isPaxCountError = selectedCount < room.paxCount;
62
+
63
+ return {
64
+ room,
65
+ roomIndex,
66
+ selectedCount,
67
+ isPaxCountError,
68
+ };
69
+ });
70
+ }, [rooms, selectedClientsInfoIds, isSubmitted, isSelectedClient]);
71
+
72
+ // Track previous error states to only call onError when it changes
73
+ const previousErrorsRef = useRef<Record<number, boolean>>({});
74
+
75
+ // Call onError only when error state changes
76
+ useEffect(() => {
77
+ if (!onError) return;
78
+
79
+ roomData.forEach(({ roomIndex, isPaxCountError }) => {
80
+ const previousError = previousErrorsRef.current[roomIndex];
81
+ if (previousError !== isPaxCountError) {
82
+ onError(roomIndex, isPaxCountError);
83
+ previousErrorsRef.current[roomIndex] = isPaxCountError;
84
+ }
85
+ });
86
+ }, [roomData, onError]);
87
+
88
+ useEffect(() => {
89
+ onSelectedClients(clientsInfo, onPaxChange);
90
+ }, [changeOptions, onPaxChange]);
91
+
92
+ return (
93
+ <BookingPaxLayout
94
+ title="Accommodation"
95
+ icon="accom"
96
+ className="booking-pax-accom"
97
+ header={
98
+ <BookingPaxHeader>
99
+ <BookingPaxHeader.Name name={hotelName} icon="accom" location={roomName} />
100
+ </BookingPaxHeader>
101
+ }>
102
+ {roomData.map(({ room, roomIndex }) => (
103
+ <div key={`rm-${roomIndex}`} className="space-y-2">
104
+ <TextWithIcon icon="accom">Room {roomIndex + 1}</TextWithIcon>
105
+
106
+ <BookingPaxClient
107
+ id={`accommodation-${roomIndex}`}
108
+ clients={clientsInfo}
109
+ selectedClientsInfoIds={selectedClientsInfoIds}
110
+ selectedIndex={roomIndex}
111
+ paxCount={room.paxCount}
112
+ onPaxChange={onPaxOptionsChange}
113
+ isSubmitted={isSubmitted}
114
+ />
115
+ </div>
116
+ ))}
117
+ <BookingPaxRemarks onChange={onRemarkChange} />
118
+ </BookingPaxLayout>
119
+ );
120
+ };
@@ -0,0 +1,4 @@
1
+ .booking-pax-client {
2
+ @apply grid gap-x-4 gap-y-2;
3
+ @apply lg:grid-cols-2;
4
+ }