mautourco-components 0.2.4 → 0.2.7

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 (297) hide show
  1. package/README.md +190 -190
  2. package/dist/components/atoms/Avatar/Avatar.d.ts +14 -14
  3. package/dist/components/atoms/Avatar/Avatar.js +31 -31
  4. package/dist/components/atoms/Button/Button.css +320 -320
  5. package/dist/components/atoms/Button/Button.d.ts +27 -27
  6. package/dist/components/atoms/Button/Button.js +35 -35
  7. package/dist/components/atoms/Checkbox/Checkbox.d.ts +13 -13
  8. package/dist/components/atoms/Checkbox/Checkbox.js +39 -39
  9. package/dist/components/atoms/Icon/Icon.d.ts +10 -10
  10. package/dist/components/atoms/Icon/Icon.js +123 -123
  11. package/dist/components/atoms/Icon/icons/ArrivalIcon.d.ts +8 -8
  12. package/dist/components/atoms/Icon/icons/ArrivalIcon.js +31 -31
  13. package/dist/components/atoms/Icon/icons/BuildingIcon.d.ts +8 -8
  14. package/dist/components/atoms/Icon/icons/BuildingIcon.js +36 -36
  15. package/dist/components/atoms/Icon/icons/CalendarIcon.d.ts +12 -12
  16. package/dist/components/atoms/Icon/icons/CalendarIcon.js +41 -41
  17. package/dist/components/atoms/Icon/icons/CalendarOutlineIcon.d.ts +8 -8
  18. package/dist/components/atoms/Icon/icons/CalendarOutlineIcon.js +36 -36
  19. package/dist/components/atoms/Icon/icons/CarIcon.d.ts +8 -8
  20. package/dist/components/atoms/Icon/icons/CarIcon.js +30 -30
  21. package/dist/components/atoms/Icon/icons/Check.d.ts +8 -8
  22. package/dist/components/atoms/Icon/icons/Check.js +30 -30
  23. package/dist/components/atoms/Icon/icons/CheckCircleIcon.d.ts +8 -8
  24. package/dist/components/atoms/Icon/icons/CheckCircleIcon.js +30 -30
  25. package/dist/components/atoms/Icon/icons/Chevron.d.ts +9 -9
  26. package/dist/components/atoms/Icon/icons/Chevron.js +54 -54
  27. package/dist/components/atoms/Icon/icons/ChevronDownIcon.d.ts +8 -8
  28. package/dist/components/atoms/Icon/icons/ChevronDownIcon.js +30 -30
  29. package/dist/components/atoms/Icon/icons/Close.d.ts +8 -8
  30. package/dist/components/atoms/Icon/icons/Close.js +30 -30
  31. package/dist/components/atoms/Icon/icons/DeleteIcon.d.ts +8 -8
  32. package/dist/components/atoms/Icon/icons/DeleteIcon.js +30 -30
  33. package/dist/components/atoms/Icon/icons/DepartureIcon.d.ts +8 -8
  34. package/dist/components/atoms/Icon/icons/DepartureIcon.js +30 -30
  35. package/dist/components/atoms/Icon/icons/EyeIcon.d.ts +8 -8
  36. package/dist/components/atoms/Icon/icons/EyeIcon.js +30 -30
  37. package/dist/components/atoms/Icon/icons/FacebookIcon.d.ts +8 -8
  38. package/dist/components/atoms/Icon/icons/FacebookIcon.js +36 -36
  39. package/dist/components/atoms/Icon/icons/HomeIcon.d.ts +8 -8
  40. package/dist/components/atoms/Icon/icons/HomeIcon.js +25 -25
  41. package/dist/components/atoms/Icon/icons/InfoIcon.d.ts +8 -8
  42. package/dist/components/atoms/Icon/icons/InfoIcon.js +30 -30
  43. package/dist/components/atoms/Icon/icons/LinkedInIcon.d.ts +8 -8
  44. package/dist/components/atoms/Icon/icons/LinkedInIcon.js +36 -36
  45. package/dist/components/atoms/Icon/icons/MapPinIcon.d.ts +8 -8
  46. package/dist/components/atoms/Icon/icons/MapPinIcon.js +30 -30
  47. package/dist/components/atoms/Icon/icons/MautoucoLogo.d.ts +8 -8
  48. package/dist/components/atoms/Icon/icons/MautoucoLogo.js +37 -37
  49. package/dist/components/atoms/Icon/icons/MenuIcon.d.ts +8 -8
  50. package/dist/components/atoms/Icon/icons/MenuIcon.js +37 -37
  51. package/dist/components/atoms/Icon/icons/MinusIcon.d.ts +8 -8
  52. package/dist/components/atoms/Icon/icons/MinusIcon.js +25 -25
  53. package/dist/components/atoms/Icon/icons/MoreIcon.d.ts +8 -8
  54. package/dist/components/atoms/Icon/icons/MoreIcon.js +30 -30
  55. package/dist/components/atoms/Icon/icons/PlaneIcon.d.ts +8 -8
  56. package/dist/components/atoms/Icon/icons/PlaneIcon.js +36 -36
  57. package/dist/components/atoms/Icon/icons/PlusIcon.d.ts +8 -8
  58. package/dist/components/atoms/Icon/icons/PlusIcon.js +25 -25
  59. package/dist/components/atoms/Icon/icons/Search.d.ts +8 -8
  60. package/dist/components/atoms/Icon/icons/Search.js +30 -30
  61. package/dist/components/atoms/Icon/icons/Settings.d.ts +8 -8
  62. package/dist/components/atoms/Icon/icons/Settings.js +30 -30
  63. package/dist/components/atoms/Icon/icons/ShipIcon.d.ts +8 -8
  64. package/dist/components/atoms/Icon/icons/ShipIcon.js +36 -36
  65. package/dist/components/atoms/Icon/icons/StrollerIcon.d.ts +8 -8
  66. package/dist/components/atoms/Icon/icons/StrollerIcon.js +30 -30
  67. package/dist/components/atoms/Icon/icons/TwitterIcon.d.ts +8 -8
  68. package/dist/components/atoms/Icon/icons/TwitterIcon.js +36 -36
  69. package/dist/components/atoms/Icon/icons/User.d.ts +8 -8
  70. package/dist/components/atoms/Icon/icons/User.js +30 -30
  71. package/dist/components/atoms/Icon/icons/UserIcon.d.ts +12 -12
  72. package/dist/components/atoms/Icon/icons/UserIcon.js +41 -41
  73. package/dist/components/atoms/Icon/icons/Youtube.d.ts +8 -8
  74. package/dist/components/atoms/Icon/icons/Youtube.js +36 -36
  75. package/dist/components/atoms/Illustration/Illustration.d.ts +14 -14
  76. package/dist/components/atoms/Illustration/Illustration.js +33 -33
  77. package/dist/components/atoms/Illustration/illustrations.d.ts +51 -51
  78. package/dist/components/atoms/Illustration/illustrations.js +97 -97
  79. package/dist/components/atoms/Inputs/DropdownInput/DropdownInput.d.ts +12 -12
  80. package/dist/components/atoms/Inputs/DropdownInput/DropdownInput.js +53 -53
  81. package/dist/components/atoms/Inputs/Input/Input.d.ts +15 -15
  82. package/dist/components/atoms/Inputs/Input/Input.js +27 -27
  83. package/dist/components/atoms/Inputs/Textarea/Textarea.d.ts +14 -14
  84. package/dist/components/atoms/Inputs/Textarea/Textarea.js +15 -15
  85. package/dist/components/atoms/Link/Link.d.ts +44 -44
  86. package/dist/components/atoms/Link/Link.js +76 -76
  87. package/dist/components/atoms/RatingStar/RatingStar.d.ts +40 -40
  88. package/dist/components/atoms/RatingStar/RatingStar.js +54 -54
  89. package/dist/components/atoms/SegmentedButton/SegmentedButton.d.ts +27 -27
  90. package/dist/components/atoms/SegmentedButton/SegmentedButton.js +49 -49
  91. package/dist/components/atoms/SelectedValue/SelectedValue.d.ts +11 -11
  92. package/dist/components/atoms/SelectedValue/SelectedValue.js +29 -29
  93. package/dist/components/atoms/Slider/Slider.d.ts +52 -52
  94. package/dist/components/atoms/Slider/Slider.js +30 -30
  95. package/dist/components/atoms/Spinner/Spinner.d.ts +9 -9
  96. package/dist/components/atoms/Spinner/Spinner.js +38 -38
  97. package/dist/components/atoms/Spinner/variants/ButtonSpinner.d.ts +8 -8
  98. package/dist/components/atoms/Spinner/variants/ButtonSpinner.js +19 -19
  99. package/dist/components/atoms/Spinner/variants/LoadingSpinner.d.ts +7 -7
  100. package/dist/components/atoms/Spinner/variants/LoadingSpinner.js +7 -7
  101. package/dist/components/atoms/Tab/Tab.css +266 -266
  102. package/dist/components/atoms/Tab/Tab.d.ts +22 -22
  103. package/dist/components/atoms/Tab/Tab.js +54 -54
  104. package/dist/components/atoms/Typography/Typography.d.ts +24 -24
  105. package/dist/components/atoms/Typography/Typography.js +100 -100
  106. package/dist/components/molecules/Calendar/CalendarInput.d.ts +34 -34
  107. package/dist/components/molecules/Calendar/CalendarInput.js +49 -49
  108. package/dist/components/molecules/Calendar/DateTime.d.ts +25 -25
  109. package/dist/components/molecules/Calendar/DateTime.js +106 -106
  110. package/dist/components/molecules/Calendar/TimePicker.d.ts +16 -16
  111. package/dist/components/molecules/Calendar/TimePicker.js +91 -91
  112. package/dist/components/molecules/LocationDropdown/LocationDropdown.d.ts +34 -34
  113. package/dist/components/molecules/LocationDropdown/LocationDropdown.js +120 -120
  114. package/dist/components/molecules/LocationDropdown/index.d.ts +2 -2
  115. package/dist/components/molecules/LocationDropdown/index.js +1 -1
  116. package/dist/components/molecules/MultiSelectDropdown/MultiSelectDropdown.d.ts +29 -29
  117. package/dist/components/molecules/MultiSelectDropdown/MultiSelectDropdown.js +106 -106
  118. package/dist/components/molecules/RatingTab/RatingTab.d.ts +39 -39
  119. package/dist/components/molecules/RatingTab/RatingTab.js +41 -41
  120. package/dist/components/molecules/TabGroup/TabGroup.d.ts +17 -17
  121. package/dist/components/molecules/TabGroup/TabGroup.js +30 -30
  122. package/dist/components/molecules/UserCard/UserCard.d.ts +20 -20
  123. package/dist/components/molecules/UserCard/UserCard.js +57 -57
  124. package/dist/components/organisms/CardContainer/CardContainer.d.ts +37 -37
  125. package/dist/components/organisms/CardContainer/CardContainer.js +27 -27
  126. package/dist/components/organisms/DateTimePicker/DateTimePicker.d.ts +15 -15
  127. package/dist/components/organisms/DateTimePicker/DateTimePicker.js +66 -66
  128. package/dist/components/organisms/Dialog/Dialog.d.ts +103 -103
  129. package/dist/components/organisms/Dialog/Dialog.js +162 -162
  130. package/dist/components/organisms/Footer/Footer.d.ts +38 -38
  131. package/dist/components/organisms/Footer/Footer.js +74 -74
  132. package/dist/components/organisms/PaxSelector/PaxSelector.d.ts +63 -63
  133. package/dist/components/organisms/PaxSelector/PaxSelector.js +402 -402
  134. package/dist/components/organisms/RoundTrip/RoundTrip.d.ts +54 -54
  135. package/dist/components/organisms/RoundTrip/RoundTrip.js +179 -179
  136. package/dist/components/organisms/RoundTrip/index.d.ts +2 -2
  137. package/dist/components/organisms/RoundTrip/index.js +1 -1
  138. package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.d.ts +35 -35
  139. package/dist/components/organisms/SearchBarTransfer/SearchBarTransfer.js +192 -192
  140. package/dist/components/organisms/SearchBarTransfer/index.d.ts +2 -2
  141. package/dist/components/organisms/SearchBarTransfer/index.js +1 -1
  142. package/dist/components/organisms/TopNavigation/DesktopNav.d.ts +33 -33
  143. package/dist/components/organisms/TopNavigation/DesktopNav.js +32 -26
  144. package/dist/components/organisms/TopNavigation/MobileNav.d.ts +32 -32
  145. package/dist/components/organisms/TopNavigation/MobileNav.js +45 -45
  146. package/dist/components/organisms/TopNavigation/TopNavigation.d.ts +33 -33
  147. package/dist/components/organisms/TopNavigation/TopNavigation.js +20 -20
  148. package/dist/components/organisms/TransferLine/TransferLine.d.ts +53 -53
  149. package/dist/components/organisms/TransferLine/TransferLine.js +179 -179
  150. package/dist/components/ui/button.d.ts +10 -10
  151. package/dist/components/ui/button.js +56 -56
  152. package/dist/components/ui/calendar.d.ts +8 -8
  153. package/dist/components/ui/calendar.js +87 -87
  154. package/dist/components/ui/popover.d.ts +7 -7
  155. package/dist/components/ui/popover.js +42 -42
  156. package/dist/hooks/useMobile.d.ts +5 -5
  157. package/dist/hooks/useMobile.js +26 -26
  158. package/dist/index.d.ts +49 -49
  159. package/dist/index.js +46 -46
  160. package/dist/lib/utils.d.ts +7 -7
  161. package/dist/lib/utils.js +13 -13
  162. package/dist/styles/components/avatar.css +122 -122
  163. package/dist/styles/components/calendar.css +140 -140
  164. package/dist/styles/components/checkbox.css +206 -206
  165. package/dist/styles/components/dropdown.css +269 -269
  166. package/dist/styles/components/forms.css +209 -209
  167. package/dist/styles/components/illustration.css +123 -123
  168. package/dist/styles/components/molecule/calendarInput.css +133 -133
  169. package/dist/styles/components/molecule/dateTime.css +126 -126
  170. package/dist/styles/components/molecule/location-dropdown.css +132 -132
  171. package/dist/styles/components/molecule/timePicker.css +122 -122
  172. package/dist/styles/components/multiselect-dropdown.css +286 -286
  173. package/dist/styles/components/organism/card-container.css +148 -148
  174. package/dist/styles/components/organism/dialog.css +168 -168
  175. package/dist/styles/components/organism/footer.css +119 -119
  176. package/dist/styles/components/organism/pax-selector.css +617 -617
  177. package/dist/styles/components/organism/round-trip.css +139 -139
  178. package/dist/styles/components/organism/search-bar-transfer.css +158 -161
  179. package/dist/styles/components/organism/topnavigation.css +143 -143
  180. package/dist/styles/components/organism/transfer-line.css +138 -138
  181. package/dist/styles/components/rating-star.css +145 -145
  182. package/dist/styles/components/rating-tab.css +179 -179
  183. package/dist/styles/components/scrollbar.css +155 -155
  184. package/dist/styles/components/segmented-button.css +214 -214
  185. package/dist/styles/components/selected-value.css +175 -175
  186. package/dist/styles/components/slider.css +182 -182
  187. package/dist/styles/components/typography.css +245 -245
  188. package/dist/styles/tokens/tokens.css +119 -119
  189. package/dist/styles/tokens/tokens.d.ts +3108 -3108
  190. package/dist/styles/tokens/tokens.js +2652 -2652
  191. package/package.json +103 -103
  192. package/src/components/atoms/Avatar/Avatar.tsx +60 -60
  193. package/src/components/atoms/Button/Button.css +200 -200
  194. package/src/components/atoms/Button/Button.tsx +82 -82
  195. package/src/components/atoms/Checkbox/Checkbox.tsx +83 -83
  196. package/src/components/atoms/Icon/Icon.tsx +163 -163
  197. package/src/components/atoms/Icon/icons/ArrivalIcon.tsx +52 -52
  198. package/src/components/atoms/Icon/icons/BuildingIcon.tsx +50 -50
  199. package/src/components/atoms/Icon/icons/CalendarIcon.tsx +63 -63
  200. package/src/components/atoms/Icon/icons/CalendarOutlineIcon.tsx +50 -50
  201. package/src/components/atoms/Icon/icons/CarIcon.tsx +44 -44
  202. package/src/components/atoms/Icon/icons/Check.tsx +36 -36
  203. package/src/components/atoms/Icon/icons/CheckCircleIcon.tsx +48 -48
  204. package/src/components/atoms/Icon/icons/Chevron.tsx +73 -73
  205. package/src/components/atoms/Icon/icons/ChevronDownIcon.tsx +46 -46
  206. package/src/components/atoms/Icon/icons/Close.tsx +39 -39
  207. package/src/components/atoms/Icon/icons/DeleteIcon.tsx +44 -44
  208. package/src/components/atoms/Icon/icons/DepartureIcon.tsx +50 -50
  209. package/src/components/atoms/Icon/icons/EyeIcon.tsx +44 -44
  210. package/src/components/atoms/Icon/icons/FacebookIcon.tsx +50 -50
  211. package/src/components/atoms/Icon/icons/HomeIcon.tsx +52 -52
  212. package/src/components/atoms/Icon/icons/InfoIcon.tsx +44 -44
  213. package/src/components/atoms/Icon/icons/LinkedInIcon.tsx +50 -50
  214. package/src/components/atoms/Icon/icons/MapPinIcon.tsx +44 -44
  215. package/src/components/atoms/Icon/icons/MautoucoLogo.tsx +93 -93
  216. package/src/components/atoms/Icon/icons/MenuIcon.tsx +49 -49
  217. package/src/components/atoms/Icon/icons/MinusIcon.tsx +45 -45
  218. package/src/components/atoms/Icon/icons/MoreIcon.tsx +44 -44
  219. package/src/components/atoms/Icon/icons/PlaneIcon.tsx +50 -50
  220. package/src/components/atoms/Icon/icons/PlusIcon.tsx +45 -45
  221. package/src/components/atoms/Icon/icons/Search.tsx +37 -37
  222. package/src/components/atoms/Icon/icons/Settings.tsx +38 -38
  223. package/src/components/atoms/Icon/icons/ShipIcon.tsx +50 -50
  224. package/src/components/atoms/Icon/icons/StrollerIcon.tsx +44 -44
  225. package/src/components/atoms/Icon/icons/TwitterIcon.tsx +50 -50
  226. package/src/components/atoms/Icon/icons/User.tsx +37 -37
  227. package/src/components/atoms/Icon/icons/UserIcon.tsx +63 -63
  228. package/src/components/atoms/Icon/icons/Youtube.tsx +50 -50
  229. package/src/components/atoms/Illustration/Illustration.tsx +28 -28
  230. package/src/components/atoms/Illustration/illustrations.ts +116 -116
  231. package/src/components/atoms/Inputs/DropdownInput/DropdownInput.tsx +96 -96
  232. package/src/components/atoms/Inputs/Textarea/Textarea.tsx +51 -51
  233. package/src/components/atoms/Link/Link.tsx +168 -168
  234. package/src/components/atoms/RatingStar/RatingStar.tsx +114 -114
  235. package/src/components/atoms/SegmentedButton/SegmentedButton.tsx +94 -94
  236. package/src/components/atoms/SelectedValue/SelectedValue.tsx +59 -59
  237. package/src/components/atoms/Slider/Slider.tsx +95 -95
  238. package/src/components/atoms/Spinner/Spinner.tsx +56 -56
  239. package/src/components/atoms/Spinner/variants/ButtonSpinner.tsx +37 -37
  240. package/src/components/atoms/Spinner/variants/LoadingSpinner.tsx +22 -22
  241. package/src/components/atoms/Tab/Tab.css +147 -147
  242. package/src/components/atoms/Tab/Tab.tsx +96 -96
  243. package/src/components/atoms/Typography/Typography.tsx +153 -153
  244. package/src/components/molecules/Calendar/CalendarInput.tsx +135 -135
  245. package/src/components/molecules/Calendar/DateTime.tsx +172 -172
  246. package/src/components/molecules/Calendar/TimePicker.tsx +174 -174
  247. package/src/components/molecules/LocationDropdown/LocationDropdown.tsx +234 -234
  248. package/src/components/molecules/LocationDropdown/index.ts +2 -2
  249. package/src/components/molecules/RatingTab/RatingTab.tsx +96 -96
  250. package/src/components/molecules/TabGroup/TabGroup.tsx +60 -60
  251. package/src/components/molecules/UserCard/UserCard.stories.tsx +36 -36
  252. package/src/components/molecules/UserCard/UserCard.tsx +173 -173
  253. package/src/components/organisms/CardContainer/CardContainer.tsx +66 -66
  254. package/src/components/organisms/DateTimePicker/DateTimePicker.tsx +110 -110
  255. package/src/components/organisms/Dialog/Dialog.tsx +352 -352
  256. package/src/components/organisms/Footer/Footer.tsx +290 -290
  257. package/src/components/organisms/PaxSelector/PaxSelector.tsx +979 -979
  258. package/src/components/organisms/RoundTrip/RoundTrip.tsx +335 -335
  259. package/src/components/organisms/RoundTrip/index.ts +2 -2
  260. package/src/components/organisms/SearchBarTransfer/SearchBarTransfer.tsx +388 -388
  261. package/src/components/organisms/SearchBarTransfer/index.ts +2 -2
  262. package/src/components/organisms/TopNavigation/DesktopNav.tsx +133 -122
  263. package/src/components/organisms/TopNavigation/MobileNav.tsx +212 -212
  264. package/src/components/organisms/TopNavigation/TopNavigation.tsx +45 -45
  265. package/src/components/organisms/TransferLine/TransferLine.tsx +369 -369
  266. package/src/components/ui/button.tsx +60 -60
  267. package/src/components/ui/calendar.tsx +246 -246
  268. package/src/components/ui/popover.tsx +46 -46
  269. package/src/styles/components/avatar.css +58 -58
  270. package/src/styles/components/calendar.css +85 -85
  271. package/src/styles/components/checkbox.css +130 -130
  272. package/src/styles/components/dropdown.css +214 -214
  273. package/src/styles/components/forms.css +147 -147
  274. package/src/styles/components/illustration.css +7 -7
  275. package/src/styles/components/molecule/calendarInput.css +156 -156
  276. package/src/styles/components/molecule/dateTime.css +14 -14
  277. package/src/styles/components/molecule/location-dropdown.css +204 -204
  278. package/src/styles/components/molecule/timePicker.css +78 -78
  279. package/src/styles/components/multiselect-dropdown.css +230 -230
  280. package/src/styles/components/organism/card-container.css +49 -49
  281. package/src/styles/components/organism/dialog.css +241 -241
  282. package/src/styles/components/organism/footer.css +113 -113
  283. package/src/styles/components/organism/pax-selector.css +702 -702
  284. package/src/styles/components/organism/round-trip.css +55 -55
  285. package/src/styles/components/organism/search-bar-transfer.css +128 -127
  286. package/src/styles/components/organism/topnavigation.css +161 -161
  287. package/src/styles/components/organism/transfer-line.css +86 -86
  288. package/src/styles/components/rating-star.css +39 -39
  289. package/src/styles/components/rating-tab.css +83 -83
  290. package/src/styles/components/scrollbar.css +63 -63
  291. package/src/styles/components/segmented-button.css +134 -134
  292. package/src/styles/components/selected-value.css +80 -80
  293. package/src/styles/components/slider.css +86 -86
  294. package/src/styles/components/typography.css +251 -251
  295. package/src/styles/fonts.css +50 -0
  296. package/src/styles/tokens/tokens.css +119 -119
  297. package/src/styles/tokens/tokens.js +12 -6
@@ -1,162 +1,162 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
- import { useEffect, useCallback, useRef } from 'react';
14
- import { createPortal } from 'react-dom';
15
- import { useMobile } from '../../../hooks/useMobile';
16
- import Button from '../../atoms/Button/Button';
17
- import Icon from '../../atoms/Icon/Icon';
18
- import '../../../styles/components/organism/dialog.css';
19
- /**
20
- * Dialog component - A modal dialog that adapts to different screen sizes
21
- *
22
- * @example
23
- * ```tsx
24
- * <Dialog
25
- * isOpen={isOpen}
26
- * onClose={() => setIsOpen(false)}
27
- * title="Edit Information"
28
- * onPrimaryClick={handleSave}
29
- * >
30
- * <p>Your content here</p>
31
- * </Dialog>
32
- * ```
33
- */
34
- export var Dialog = function (_a) {
35
- var isOpen = _a.isOpen, onClose = _a.onClose, title = _a.title, children = _a.children, footer = _a.footer, _b = _a.size, size = _b === void 0 ? 'responsive' : _b, _c = _a.primaryButtonText, primaryButtonText = _c === void 0 ? 'Save and update' : _c, _d = _a.secondaryButtonText, secondaryButtonText = _d === void 0 ? 'Cancel' : _d, onPrimaryClick = _a.onPrimaryClick, onSecondaryClick = _a.onSecondaryClick, _e = _a.showFooter, showFooter = _e === void 0 ? true : _e, _f = _a.showCloseButton, showCloseButton = _f === void 0 ? true : _f, _g = _a.closeOnOverlayClick, closeOnOverlayClick = _g === void 0 ? true : _g, _h = _a.closeOnEscape, closeOnEscape = _h === void 0 ? true : _h, _j = _a.className, className = _j === void 0 ? '' : _j, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;
36
- var _k = useMobile(), isMobile = _k.isMobile, isTablet = _k.isTablet, isDesktop = _k.isDesktop;
37
- var dialogRef = useRef(null);
38
- var previousFocusRef = useRef(null);
39
- // Determine the actual size based on responsive setting
40
- var getActualSize = function () {
41
- if (size !== 'responsive')
42
- return size;
43
- if (isMobile)
44
- return 'mobile';
45
- if (isTablet)
46
- return 'tablet';
47
- return 'desktop';
48
- };
49
- var actualSize = getActualSize();
50
- var isMobileSize = actualSize === 'mobile';
51
- var isTabletSize = actualSize === 'tablet';
52
- // Handle escape key
53
- var handleKeyDown = useCallback(function (event) {
54
- if (closeOnEscape && event.key === 'Escape') {
55
- onClose();
56
- }
57
- }, [closeOnEscape, onClose]);
58
- // Handle overlay click
59
- var handleOverlayClick = useCallback(function (event) {
60
- if (closeOnOverlayClick && event.target === event.currentTarget) {
61
- onClose();
62
- }
63
- }, [closeOnOverlayClick, onClose]);
64
- // Focus management and scroll lock
65
- useEffect(function () {
66
- if (isOpen) {
67
- // Store current focus
68
- previousFocusRef.current = document.activeElement;
69
- // Focus the dialog
70
- if (dialogRef.current) {
71
- dialogRef.current.focus();
72
- }
73
- // Lock body scroll
74
- document.body.style.overflow = 'hidden';
75
- // Add escape listener
76
- document.addEventListener('keydown', handleKeyDown);
77
- }
78
- else {
79
- // Unlock body scroll
80
- document.body.style.overflow = '';
81
- // Restore focus
82
- if (previousFocusRef.current) {
83
- previousFocusRef.current.focus();
84
- }
85
- }
86
- return function () {
87
- document.body.style.overflow = '';
88
- document.removeEventListener('keydown', handleKeyDown);
89
- };
90
- }, [isOpen, handleKeyDown]);
91
- // Handle secondary button click
92
- var handleSecondaryClick = function () {
93
- if (onSecondaryClick) {
94
- onSecondaryClick();
95
- }
96
- else {
97
- onClose();
98
- }
99
- };
100
- // Handle primary button click
101
- var handlePrimaryClick = function () {
102
- if (onPrimaryClick) {
103
- onPrimaryClick();
104
- }
105
- };
106
- // Generate unique IDs for accessibility
107
- var titleId = ariaLabelledBy || "dialog-title-".concat(title.replace(/\s+/g, '-').toLowerCase());
108
- var bodyId = ariaDescribedBy || "dialog-body-".concat(title.replace(/\s+/g, '-').toLowerCase());
109
- // Build class names
110
- var contentClasses = [
111
- 'dialog__content',
112
- "dialog__content--".concat(actualSize),
113
- size === 'responsive' ? 'dialog__content--responsive' : '',
114
- className,
115
- ]
116
- .filter(Boolean)
117
- .join(' ');
118
- var headerClasses = [
119
- 'dialog__header',
120
- isMobileSize ? 'dialog__header--mobile' : '',
121
- size === 'responsive' ? 'dialog__header--responsive' : '',
122
- ]
123
- .filter(Boolean)
124
- .join(' ');
125
- var titleClasses = [
126
- 'dialog__title',
127
- isMobileSize ? 'dialog__title--mobile' : '',
128
- isTabletSize ? 'dialog__title--tablet' : '',
129
- size === 'responsive' ? 'dialog__title--responsive' : '',
130
- ]
131
- .filter(Boolean)
132
- .join(' ');
133
- var closeButtonClasses = 'dialog__close-button';
134
- var bodyClasses = [
135
- 'dialog__body',
136
- isMobileSize ? 'dialog__body--mobile' : '',
137
- size === 'responsive' ? 'dialog__body--responsive' : '',
138
- ]
139
- .filter(Boolean)
140
- .join(' ');
141
- var footerClasses = [
142
- 'dialog__footer',
143
- isMobileSize ? 'dialog__footer--mobile' : '',
144
- size === 'responsive' ? 'dialog__footer--responsive' : '',
145
- ]
146
- .filter(Boolean)
147
- .join(' ');
148
- var footerButtonsClasses = [
149
- 'dialog__footer-buttons',
150
- isMobileSize ? 'dialog__footer-buttons--mobile' : '',
151
- size === 'responsive' ? 'dialog__footer-buttons--responsive' : '',
152
- ]
153
- .filter(Boolean)
154
- .join(' ');
155
- if (!isOpen) {
156
- return null;
157
- }
158
- var dialogContent = (_jsxs(_Fragment, { children: [_jsx("div", { className: "dialog-overlay", onClick: handleOverlayClick, "aria-hidden": "true" }), _jsx("div", __assign({ className: "dialog", role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, "aria-describedby": bodyId, ref: dialogRef, tabIndex: -1, onClick: handleOverlayClick }, { children: _jsxs("div", __assign({ className: contentClasses }, { children: [_jsxs("div", __assign({ className: headerClasses }, { children: [_jsx("h2", __assign({ id: titleId, className: titleClasses }, { children: title })), showCloseButton && (_jsx("button", __assign({ type: "button", className: closeButtonClasses, onClick: onClose, "aria-label": "Close dialog" }, { children: _jsx(Icon, { name: "close", size: "md" }) })))] })), _jsx("div", __assign({ id: bodyId, className: bodyClasses }, { children: _jsx("div", __assign({ className: "dialog__body-content" }, { children: children })) })), showFooter && (_jsx("div", __assign({ className: footerClasses }, { children: footer ? (footer) : (_jsxs("div", __assign({ className: footerButtonsClasses }, { children: [_jsx(Button, __assign({ variant: "outline-secondary", size: isMobileSize ? 'sm' : 'md', onClick: handleSecondaryClick }, { children: secondaryButtonText })), _jsx(Button, __assign({ variant: "secondary", size: isMobileSize ? 'sm' : 'md', onClick: handlePrimaryClick }, { children: primaryButtonText }))] }))) })))] })) }))] }));
159
- // Use portal to render at the document body level
160
- return createPortal(dialogContent, document.body);
161
- };
162
- export default Dialog;
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ import { useEffect, useCallback, useRef } from 'react';
14
+ import { createPortal } from 'react-dom';
15
+ import { useMobile } from '../../../hooks/useMobile';
16
+ import Button from '../../atoms/Button/Button';
17
+ import Icon from '../../atoms/Icon/Icon';
18
+ import '../../../styles/components/organism/dialog.css';
19
+ /**
20
+ * Dialog component - A modal dialog that adapts to different screen sizes
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <Dialog
25
+ * isOpen={isOpen}
26
+ * onClose={() => setIsOpen(false)}
27
+ * title="Edit Information"
28
+ * onPrimaryClick={handleSave}
29
+ * >
30
+ * <p>Your content here</p>
31
+ * </Dialog>
32
+ * ```
33
+ */
34
+ export var Dialog = function (_a) {
35
+ var isOpen = _a.isOpen, onClose = _a.onClose, title = _a.title, children = _a.children, footer = _a.footer, _b = _a.size, size = _b === void 0 ? 'responsive' : _b, _c = _a.primaryButtonText, primaryButtonText = _c === void 0 ? 'Save and update' : _c, _d = _a.secondaryButtonText, secondaryButtonText = _d === void 0 ? 'Cancel' : _d, onPrimaryClick = _a.onPrimaryClick, onSecondaryClick = _a.onSecondaryClick, _e = _a.showFooter, showFooter = _e === void 0 ? true : _e, _f = _a.showCloseButton, showCloseButton = _f === void 0 ? true : _f, _g = _a.closeOnOverlayClick, closeOnOverlayClick = _g === void 0 ? true : _g, _h = _a.closeOnEscape, closeOnEscape = _h === void 0 ? true : _h, _j = _a.className, className = _j === void 0 ? '' : _j, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;
36
+ var _k = useMobile(), isMobile = _k.isMobile, isTablet = _k.isTablet, isDesktop = _k.isDesktop;
37
+ var dialogRef = useRef(null);
38
+ var previousFocusRef = useRef(null);
39
+ // Determine the actual size based on responsive setting
40
+ var getActualSize = function () {
41
+ if (size !== 'responsive')
42
+ return size;
43
+ if (isMobile)
44
+ return 'mobile';
45
+ if (isTablet)
46
+ return 'tablet';
47
+ return 'desktop';
48
+ };
49
+ var actualSize = getActualSize();
50
+ var isMobileSize = actualSize === 'mobile';
51
+ var isTabletSize = actualSize === 'tablet';
52
+ // Handle escape key
53
+ var handleKeyDown = useCallback(function (event) {
54
+ if (closeOnEscape && event.key === 'Escape') {
55
+ onClose();
56
+ }
57
+ }, [closeOnEscape, onClose]);
58
+ // Handle overlay click
59
+ var handleOverlayClick = useCallback(function (event) {
60
+ if (closeOnOverlayClick && event.target === event.currentTarget) {
61
+ onClose();
62
+ }
63
+ }, [closeOnOverlayClick, onClose]);
64
+ // Focus management and scroll lock
65
+ useEffect(function () {
66
+ if (isOpen) {
67
+ // Store current focus
68
+ previousFocusRef.current = document.activeElement;
69
+ // Focus the dialog
70
+ if (dialogRef.current) {
71
+ dialogRef.current.focus();
72
+ }
73
+ // Lock body scroll
74
+ document.body.style.overflow = 'hidden';
75
+ // Add escape listener
76
+ document.addEventListener('keydown', handleKeyDown);
77
+ }
78
+ else {
79
+ // Unlock body scroll
80
+ document.body.style.overflow = '';
81
+ // Restore focus
82
+ if (previousFocusRef.current) {
83
+ previousFocusRef.current.focus();
84
+ }
85
+ }
86
+ return function () {
87
+ document.body.style.overflow = '';
88
+ document.removeEventListener('keydown', handleKeyDown);
89
+ };
90
+ }, [isOpen, handleKeyDown]);
91
+ // Handle secondary button click
92
+ var handleSecondaryClick = function () {
93
+ if (onSecondaryClick) {
94
+ onSecondaryClick();
95
+ }
96
+ else {
97
+ onClose();
98
+ }
99
+ };
100
+ // Handle primary button click
101
+ var handlePrimaryClick = function () {
102
+ if (onPrimaryClick) {
103
+ onPrimaryClick();
104
+ }
105
+ };
106
+ // Generate unique IDs for accessibility
107
+ var titleId = ariaLabelledBy || "dialog-title-".concat(title.replace(/\s+/g, '-').toLowerCase());
108
+ var bodyId = ariaDescribedBy || "dialog-body-".concat(title.replace(/\s+/g, '-').toLowerCase());
109
+ // Build class names
110
+ var contentClasses = [
111
+ 'dialog__content',
112
+ "dialog__content--".concat(actualSize),
113
+ size === 'responsive' ? 'dialog__content--responsive' : '',
114
+ className,
115
+ ]
116
+ .filter(Boolean)
117
+ .join(' ');
118
+ var headerClasses = [
119
+ 'dialog__header',
120
+ isMobileSize ? 'dialog__header--mobile' : '',
121
+ size === 'responsive' ? 'dialog__header--responsive' : '',
122
+ ]
123
+ .filter(Boolean)
124
+ .join(' ');
125
+ var titleClasses = [
126
+ 'dialog__title',
127
+ isMobileSize ? 'dialog__title--mobile' : '',
128
+ isTabletSize ? 'dialog__title--tablet' : '',
129
+ size === 'responsive' ? 'dialog__title--responsive' : '',
130
+ ]
131
+ .filter(Boolean)
132
+ .join(' ');
133
+ var closeButtonClasses = 'dialog__close-button';
134
+ var bodyClasses = [
135
+ 'dialog__body',
136
+ isMobileSize ? 'dialog__body--mobile' : '',
137
+ size === 'responsive' ? 'dialog__body--responsive' : '',
138
+ ]
139
+ .filter(Boolean)
140
+ .join(' ');
141
+ var footerClasses = [
142
+ 'dialog__footer',
143
+ isMobileSize ? 'dialog__footer--mobile' : '',
144
+ size === 'responsive' ? 'dialog__footer--responsive' : '',
145
+ ]
146
+ .filter(Boolean)
147
+ .join(' ');
148
+ var footerButtonsClasses = [
149
+ 'dialog__footer-buttons',
150
+ isMobileSize ? 'dialog__footer-buttons--mobile' : '',
151
+ size === 'responsive' ? 'dialog__footer-buttons--responsive' : '',
152
+ ]
153
+ .filter(Boolean)
154
+ .join(' ');
155
+ if (!isOpen) {
156
+ return null;
157
+ }
158
+ var dialogContent = (_jsxs(_Fragment, { children: [_jsx("div", { className: "dialog-overlay", onClick: handleOverlayClick, "aria-hidden": "true" }), _jsx("div", __assign({ className: "dialog", role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, "aria-describedby": bodyId, ref: dialogRef, tabIndex: -1, onClick: handleOverlayClick }, { children: _jsxs("div", __assign({ className: contentClasses }, { children: [_jsxs("div", __assign({ className: headerClasses }, { children: [_jsx("h2", __assign({ id: titleId, className: titleClasses }, { children: title })), showCloseButton && (_jsx("button", __assign({ type: "button", className: closeButtonClasses, onClick: onClose, "aria-label": "Close dialog" }, { children: _jsx(Icon, { name: "close", size: "md" }) })))] })), _jsx("div", __assign({ id: bodyId, className: bodyClasses }, { children: _jsx("div", __assign({ className: "dialog__body-content" }, { children: children })) })), showFooter && (_jsx("div", __assign({ className: footerClasses }, { children: footer ? (footer) : (_jsxs("div", __assign({ className: footerButtonsClasses }, { children: [_jsx(Button, __assign({ variant: "outline-secondary", size: isMobileSize ? 'sm' : 'md', onClick: handleSecondaryClick }, { children: secondaryButtonText })), _jsx(Button, __assign({ variant: "secondary", size: isMobileSize ? 'sm' : 'md', onClick: handlePrimaryClick }, { children: primaryButtonText }))] }))) })))] })) }))] }));
159
+ // Use portal to render at the document body level
160
+ return createPortal(dialogContent, document.body);
161
+ };
162
+ export default Dialog;
@@ -1,38 +1,38 @@
1
- import React from "react";
2
- type FooterLink = {
3
- label: string;
4
- href?: string;
5
- onClick?: () => void;
6
- };
7
- type FooterColumn = {
8
- id: string;
9
- title: string;
10
- links: FooterLink[];
11
- };
12
- type SocialLink = {
13
- id: string;
14
- icon: React.ReactNode;
15
- label: string;
16
- href: string;
17
- };
18
- type ContactBlock = {
19
- title: string;
20
- addressLines: string[];
21
- phone?: string;
22
- fax?: string;
23
- email?: string;
24
- };
25
- export interface FooterProps {
26
- logo?: React.ReactNode;
27
- columns?: FooterColumn[];
28
- contact?: ContactBlock;
29
- socials?: SocialLink[];
30
- className?: string;
31
- homeUrl?: string;
32
- onLinkClick?: (link: {
33
- label: string;
34
- route: string;
35
- }) => void;
36
- }
37
- export declare const Footer: React.FC<FooterProps>;
38
- export {};
1
+ import React from "react";
2
+ type FooterLink = {
3
+ label: string;
4
+ href?: string;
5
+ onClick?: () => void;
6
+ };
7
+ type FooterColumn = {
8
+ id: string;
9
+ title: string;
10
+ links: FooterLink[];
11
+ };
12
+ type SocialLink = {
13
+ id: string;
14
+ icon: React.ReactNode;
15
+ label: string;
16
+ href: string;
17
+ };
18
+ type ContactBlock = {
19
+ title: string;
20
+ addressLines: string[];
21
+ phone?: string;
22
+ fax?: string;
23
+ email?: string;
24
+ };
25
+ export interface FooterProps {
26
+ logo?: React.ReactNode;
27
+ columns?: FooterColumn[];
28
+ contact?: ContactBlock;
29
+ socials?: SocialLink[];
30
+ className?: string;
31
+ homeUrl?: string;
32
+ onLinkClick?: (link: {
33
+ label: string;
34
+ route: string;
35
+ }) => void;
36
+ }
37
+ export declare const Footer: React.FC<FooterProps>;
38
+ export {};
@@ -1,74 +1,74 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { useState } from "react";
14
- import { Text } from "../../atoms/Typography/Typography";
15
- import { Link } from "../../atoms/Link/Link";
16
- import Icon from "../../atoms/Icon/Icon";
17
- export var Footer = function (_a) {
18
- var _b;
19
- var logo = _a.logo, _c = _a.columns, columns = _c === void 0 ? defaultColumns : _c, _d = _a.contact, contact = _d === void 0 ? defaultContact : _d, _e = _a.socials, socials = _e === void 0 ? defaultSocials : _e, _f = _a.className, className = _f === void 0 ? "" : _f, homeUrl = _a.homeUrl, onLinkClick = _a.onLinkClick;
20
- var _g = useState((_b = columns[0]) === null || _b === void 0 ? void 0 : _b.id), openSection = _g[0], setOpenSection = _g[1];
21
- var toggleSection = function (id) {
22
- setOpenSection(function (prev) { return (prev === id ? null : id); });
23
- };
24
- var year = new Date().getFullYear();
25
- return (_jsx("footer", __assign({ className: "footer" }, { children: _jsxs("div", __assign({ className: "footer__wrapper" }, { children: [_jsxs("div", __assign({ className: "footer__desktop" }, { children: [_jsxs("div", __assign({ className: "footer__top-row" }, { children: [_jsxs("div", __assign({ className: "footer__content-left" }, { children: [columns.map(function (col) { return (_jsxs("div", __assign({ className: "footer__column" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__column-title" }, { children: col.title })), _jsx("div", __assign({ className: "footer__column-links" }, { children: col.links.map(function (link) { return (_jsx(Link, __assign({ href: link.href, onClick: link.onClick, theme: "dark", className: "text-xs no-underline hover:opacity-80" }, { children: link.label }), link.label)); }) }))] }), col.id)); }), _jsxs("div", __assign({ className: "footer__contact" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__column-title" }, { children: contact.title })), _jsxs("div", __assign({ className: "footer__contact-info" }, { children: [contact.addressLines.map(function (line) { return (_jsx("p", { children: line }, line)); }), contact.phone && _jsxs("p", { children: ["Tel: ", contact.phone] }), contact.fax && _jsxs("p", { children: ["Fax: ", contact.fax] }), contact.email && (_jsx(Link, __assign({ href: "mailto:".concat(contact.email), theme: "dark", className: "text-xs no-underline" }, { children: contact.email })))] }))] })), _jsxs("div", __assign({ className: "footer__socials" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__column-title" }, { children: "Socials" })), _jsx("div", __assign({ className: "footer__socials-icons" }, { children: socials.map(function (s) { return (_jsx("a", __assign({ href: s.href, "aria-label": s.label, className: "footer__social-link" }, { children: s.icon }), s.id)); }) }))] }))] })), logo && (_jsx("div", __assign({ className: "footer__logo-section" }, { children: _jsxs("div", __assign({ className: "footer__logo-container" }, { children: [_jsx("a", __assign({ href: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/", onClick: function (e) {
26
- e.preventDefault();
27
- onLinkClick === null || onLinkClick === void 0 ? void 0 : onLinkClick({ label: "Home", route: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/" });
28
- } }, { children: logo })), _jsxs(Text, __assign({ as: "p", className: "footer__copyright" }, { children: ["\u00A9 ", year, " Mautourco, All Rights Reserved"] }))] })) })))] })), !logo && (_jsxs(Text, __assign({ as: "p", className: "footer__copyright-standalone" }, { children: ["\u00A9 ", year, " Mautourco, All Rights Reserved"] })))] })), _jsxs("div", __assign({ className: "footer__mobile" }, { children: [columns.map(function (col) { return (_jsxs("div", __assign({ className: "footer__mobile-section" }, { children: [_jsxs("button", __assign({ type: "button", onClick: function () { return toggleSection(col.id); }, className: "footer__mobile-section-button" }, { children: [_jsx("span", { children: col.title }), _jsx("span", __assign({ className: "footer__mobile-section-icon ".concat(openSection === col.id ? "footer__mobile-section-icon--rotated" : "") }, { children: _jsx(Icon, { name: "chevron-down", size: "sm", color: "white" }) }))] })), openSection === col.id && (_jsx("div", __assign({ className: "footer__mobile-section-content" }, { children: col.links.map(function (link) { return (_jsx(Link, __assign({ href: link.href, onClick: link.onClick, theme: "dark", className: "text-xs no-underline" }, { children: link.label }), link.label)); }) })))] }), col.id)); }), _jsxs("div", __assign({ className: "footer__mobile-contact" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__mobile-contact-title" }, { children: contact.title })), _jsxs("div", __assign({ className: "footer__mobile-contact-info" }, { children: [contact.addressLines.map(function (line) { return (_jsx("p", { children: line }, line)); }), contact.phone && _jsxs("p", { children: ["Tel: ", contact.phone] }), contact.fax && _jsxs("p", { children: ["Fax: ", contact.fax] }), contact.email && (_jsx(Link, __assign({ href: "mailto:".concat(contact.email), theme: "dark", className: "text-xs no-underline" }, { children: contact.email })))] }))] })), _jsxs("div", __assign({ className: "footer__mobile-footer" }, { children: [_jsx("a", __assign({ href: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/", onClick: function (e) {
29
- e.preventDefault();
30
- onLinkClick === null || onLinkClick === void 0 ? void 0 : onLinkClick({ label: "Home", route: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/" });
31
- } }, { children: logo })), _jsxs(Text, __assign({ as: "p", className: "footer__mobile-copyright" }, { children: ["\u00A9 ", year, " Mautourco, All Rights Reserved"] }))] }))] }))] })) })));
32
- };
33
- var defaultColumns = [
34
- {
35
- id: "menu-1",
36
- title: "Menu Title",
37
- links: [
38
- { label: "Menu Item", href: "#" },
39
- { label: "Menu Item", href: "#" },
40
- { label: "Menu Item", href: "#" },
41
- { label: "Menu Item", href: "#" },
42
- { label: "Menu Item", href: "#" },
43
- { label: "Menu Item", href: "#" },
44
- ],
45
- },
46
- {
47
- id: "menu-2",
48
- title: "Menu Title",
49
- links: [
50
- { label: "Menu Item", href: "#" },
51
- { label: "Menu Item", href: "#" },
52
- { label: "Menu Item", href: "#" },
53
- { label: "Menu Item", href: "#" },
54
- { label: "Menu Item", href: "#" },
55
- { label: "Menu Item", href: "#" },
56
- ],
57
- },
58
- ];
59
- var defaultContact = {
60
- title: "Contact Us",
61
- addressLines: [
62
- "84, Gustave Colin Street,",
63
- "Forest Side 74414, Mauritius",
64
- ],
65
- phone: "+ (230) 604 3000",
66
- fax: "+ (230) 674 3720",
67
- email: "info@mautourco.com",
68
- };
69
- var defaultSocials = [
70
- { id: "fb", label: "Facebook", href: "#", icon: _jsx("span", { children: "\uF09A" }) },
71
- { id: "ig", label: "Instagram", href: "#", icon: _jsx("span", { children: "\uF16D" }) },
72
- { id: "in", label: "LinkedIn", href: "#", icon: _jsx("span", { children: "\uF0E1" }) },
73
- { id: "yt", label: "YouTube", href: "#", icon: _jsx("span", { children: "\uF167" }) },
74
- ];
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useState } from "react";
14
+ import { Text } from "../../atoms/Typography/Typography";
15
+ import { Link } from "../../atoms/Link/Link";
16
+ import Icon from "../../atoms/Icon/Icon";
17
+ export var Footer = function (_a) {
18
+ var _b;
19
+ var logo = _a.logo, _c = _a.columns, columns = _c === void 0 ? defaultColumns : _c, _d = _a.contact, contact = _d === void 0 ? defaultContact : _d, _e = _a.socials, socials = _e === void 0 ? defaultSocials : _e, _f = _a.className, className = _f === void 0 ? "" : _f, homeUrl = _a.homeUrl, onLinkClick = _a.onLinkClick;
20
+ var _g = useState((_b = columns[0]) === null || _b === void 0 ? void 0 : _b.id), openSection = _g[0], setOpenSection = _g[1];
21
+ var toggleSection = function (id) {
22
+ setOpenSection(function (prev) { return (prev === id ? null : id); });
23
+ };
24
+ var year = new Date().getFullYear();
25
+ return (_jsx("footer", __assign({ className: "footer" }, { children: _jsxs("div", __assign({ className: "footer__wrapper" }, { children: [_jsxs("div", __assign({ className: "footer__desktop" }, { children: [_jsxs("div", __assign({ className: "footer__top-row" }, { children: [_jsxs("div", __assign({ className: "footer__content-left" }, { children: [columns.map(function (col) { return (_jsxs("div", __assign({ className: "footer__column" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__column-title" }, { children: col.title })), _jsx("div", __assign({ className: "footer__column-links" }, { children: col.links.map(function (link) { return (_jsx(Link, __assign({ href: link.href, onClick: link.onClick, theme: "dark", className: "text-xs no-underline hover:opacity-80" }, { children: link.label }), link.label)); }) }))] }), col.id)); }), _jsxs("div", __assign({ className: "footer__contact" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__column-title" }, { children: contact.title })), _jsxs("div", __assign({ className: "footer__contact-info" }, { children: [contact.addressLines.map(function (line) { return (_jsx("p", { children: line }, line)); }), contact.phone && _jsxs("p", { children: ["Tel: ", contact.phone] }), contact.fax && _jsxs("p", { children: ["Fax: ", contact.fax] }), contact.email && (_jsx(Link, __assign({ href: "mailto:".concat(contact.email), theme: "dark", className: "text-xs no-underline" }, { children: contact.email })))] }))] })), _jsxs("div", __assign({ className: "footer__socials" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__column-title" }, { children: "Socials" })), _jsx("div", __assign({ className: "footer__socials-icons" }, { children: socials.map(function (s) { return (_jsx("a", __assign({ href: s.href, "aria-label": s.label, className: "footer__social-link" }, { children: s.icon }), s.id)); }) }))] }))] })), logo && (_jsx("div", __assign({ className: "footer__logo-section" }, { children: _jsxs("div", __assign({ className: "footer__logo-container" }, { children: [_jsx("a", __assign({ href: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/", onClick: function (e) {
26
+ e.preventDefault();
27
+ onLinkClick === null || onLinkClick === void 0 ? void 0 : onLinkClick({ label: "Home", route: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/" });
28
+ } }, { children: logo })), _jsxs(Text, __assign({ as: "p", className: "footer__copyright" }, { children: ["\u00A9 ", year, " Mautourco, All Rights Reserved"] }))] })) })))] })), !logo && (_jsxs(Text, __assign({ as: "p", className: "footer__copyright-standalone" }, { children: ["\u00A9 ", year, " Mautourco, All Rights Reserved"] })))] })), _jsxs("div", __assign({ className: "footer__mobile" }, { children: [columns.map(function (col) { return (_jsxs("div", __assign({ className: "footer__mobile-section" }, { children: [_jsxs("button", __assign({ type: "button", onClick: function () { return toggleSection(col.id); }, className: "footer__mobile-section-button" }, { children: [_jsx("span", { children: col.title }), _jsx("span", __assign({ className: "footer__mobile-section-icon ".concat(openSection === col.id ? "footer__mobile-section-icon--rotated" : "") }, { children: _jsx(Icon, { name: "chevron-down", size: "sm", color: "white" }) }))] })), openSection === col.id && (_jsx("div", __assign({ className: "footer__mobile-section-content" }, { children: col.links.map(function (link) { return (_jsx(Link, __assign({ href: link.href, onClick: link.onClick, theme: "dark", className: "text-xs no-underline" }, { children: link.label }), link.label)); }) })))] }), col.id)); }), _jsxs("div", __assign({ className: "footer__mobile-contact" }, { children: [_jsx(Text, __assign({ as: "h4", className: "footer__mobile-contact-title" }, { children: contact.title })), _jsxs("div", __assign({ className: "footer__mobile-contact-info" }, { children: [contact.addressLines.map(function (line) { return (_jsx("p", { children: line }, line)); }), contact.phone && _jsxs("p", { children: ["Tel: ", contact.phone] }), contact.fax && _jsxs("p", { children: ["Fax: ", contact.fax] }), contact.email && (_jsx(Link, __assign({ href: "mailto:".concat(contact.email), theme: "dark", className: "text-xs no-underline" }, { children: contact.email })))] }))] })), _jsxs("div", __assign({ className: "footer__mobile-footer" }, { children: [_jsx("a", __assign({ href: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/", onClick: function (e) {
29
+ e.preventDefault();
30
+ onLinkClick === null || onLinkClick === void 0 ? void 0 : onLinkClick({ label: "Home", route: homeUrl !== null && homeUrl !== void 0 ? homeUrl : "/" });
31
+ } }, { children: logo })), _jsxs(Text, __assign({ as: "p", className: "footer__mobile-copyright" }, { children: ["\u00A9 ", year, " Mautourco, All Rights Reserved"] }))] }))] }))] })) })));
32
+ };
33
+ var defaultColumns = [
34
+ {
35
+ id: "menu-1",
36
+ title: "Menu Title",
37
+ links: [
38
+ { label: "Menu Item", href: "#" },
39
+ { label: "Menu Item", href: "#" },
40
+ { label: "Menu Item", href: "#" },
41
+ { label: "Menu Item", href: "#" },
42
+ { label: "Menu Item", href: "#" },
43
+ { label: "Menu Item", href: "#" },
44
+ ],
45
+ },
46
+ {
47
+ id: "menu-2",
48
+ title: "Menu Title",
49
+ links: [
50
+ { label: "Menu Item", href: "#" },
51
+ { label: "Menu Item", href: "#" },
52
+ { label: "Menu Item", href: "#" },
53
+ { label: "Menu Item", href: "#" },
54
+ { label: "Menu Item", href: "#" },
55
+ { label: "Menu Item", href: "#" },
56
+ ],
57
+ },
58
+ ];
59
+ var defaultContact = {
60
+ title: "Contact Us",
61
+ addressLines: [
62
+ "84, Gustave Colin Street,",
63
+ "Forest Side 74414, Mauritius",
64
+ ],
65
+ phone: "+ (230) 604 3000",
66
+ fax: "+ (230) 674 3720",
67
+ email: "info@mautourco.com",
68
+ };
69
+ var defaultSocials = [
70
+ { id: "fb", label: "Facebook", href: "#", icon: _jsx("span", { children: "\uF09A" }) },
71
+ { id: "ig", label: "Instagram", href: "#", icon: _jsx("span", { children: "\uF16D" }) },
72
+ { id: "in", label: "LinkedIn", href: "#", icon: _jsx("span", { children: "\uF0E1" }) },
73
+ { id: "yt", label: "YouTube", href: "#", icon: _jsx("span", { children: "\uF167" }) },
74
+ ];