@clubmed/trident-ui 2.0.0-beta.9 → 2.0.0

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 (486) hide show
  1. package/README.md +8 -0
  2. package/assets/trident-ui.css +3 -0
  3. package/chunks/Backdrop.js +1 -1
  4. package/chunks/Backdrop.js.map +1 -1
  5. package/chunks/Birthdate.js +27 -0
  6. package/chunks/Birthdate.js.map +1 -0
  7. package/chunks/Carousel.context.js +1548 -0
  8. package/chunks/Carousel.context.js.map +1 -0
  9. package/chunks/ChatMessage.js +14395 -0
  10. package/chunks/ChatMessage.js.map +1 -0
  11. package/chunks/CriteriaParticipants.js +415 -0
  12. package/chunks/CriteriaParticipants.js.map +1 -0
  13. package/chunks/DateField.js +196 -136
  14. package/chunks/DateField.js.map +1 -1
  15. package/chunks/Datepicker.js +2039 -0
  16. package/chunks/Datepicker.js.map +1 -0
  17. package/chunks/Day.js +88 -0
  18. package/chunks/Day.js.map +1 -0
  19. package/chunks/Range.js +2 -2
  20. package/chunks/Range.js.map +1 -1
  21. package/chunks/Tooltip.js +4461 -0
  22. package/chunks/Tooltip.js.map +1 -0
  23. package/chunks/addLeadingZeros.js +33 -0
  24. package/chunks/addLeadingZeros.js.map +1 -0
  25. package/chunks/addYears.js +18 -0
  26. package/chunks/addYears.js.map +1 -0
  27. package/chunks/chunk.js +11 -4
  28. package/chunks/client.js +18953 -0
  29. package/chunks/client.js.map +1 -0
  30. package/chunks/endOfMonth.js +17 -0
  31. package/chunks/endOfMonth.js.map +1 -0
  32. package/chunks/format.js +1113 -0
  33. package/chunks/format.js.map +1 -0
  34. package/chunks/formatISO.js +29 -0
  35. package/chunks/formatISO.js.map +1 -0
  36. package/chunks/isAfter.js +9 -0
  37. package/chunks/isAfter.js.map +1 -0
  38. package/chunks/isBefore.js +15 -0
  39. package/chunks/isBefore.js.map +1 -0
  40. package/chunks/normalizeDates.js +10 -0
  41. package/chunks/normalizeDates.js.map +1 -0
  42. package/chunks/subYears.js +9 -0
  43. package/chunks/subYears.js.map +1 -0
  44. package/examples/accordion-demo.d.ts +1 -0
  45. package/examples/accordion-demo.js +79 -0
  46. package/examples/accordion-demo.js.map +1 -0
  47. package/examples/accordion-multiple-demo.d.ts +1 -0
  48. package/examples/accordion-multiple-demo.js +79 -0
  49. package/examples/accordion-multiple-demo.js.map +1 -0
  50. package/examples/accordion-trigger-wrapper-demo.d.ts +1 -0
  51. package/examples/accordion-trigger-wrapper-demo.js +80 -0
  52. package/examples/accordion-trigger-wrapper-demo.js.map +1 -0
  53. package/examples/advanced-toast-demo.js +2 -2
  54. package/examples/advanced-toast-demo.js.map +1 -1
  55. package/examples/advanced-toast-green-demo.js +1 -1
  56. package/examples/advanced-toast-green-demo.js.map +1 -1
  57. package/examples/advanced-toast-no-dismiss-demo.js +1 -1
  58. package/examples/advanced-toast-no-dismiss-demo.js.map +1 -1
  59. package/examples/advanced-toast-red-demo.js +1 -1
  60. package/examples/advanced-toast-red-demo.js.map +1 -1
  61. package/examples/advanced-toast-with-details-demo.js +2 -2
  62. package/examples/advanced-toast-with-details-demo.js.map +1 -1
  63. package/examples/arrow-button-demo.js +2 -1
  64. package/examples/arrow-button-demo.js.map +1 -1
  65. package/examples/arrow-button-disabled-demo.js +2 -1
  66. package/examples/arrow-button-disabled-demo.js.map +1 -1
  67. package/examples/arrow-button-left-demo.js +2 -1
  68. package/examples/arrow-button-left-demo.js.map +1 -1
  69. package/examples/arrow-button-outline-demo.js +2 -1
  70. package/examples/arrow-button-outline-demo.js.map +1 -1
  71. package/examples/arrow-button-tail-demo.js +2 -1
  72. package/examples/arrow-button-tail-demo.js.map +1 -1
  73. package/examples/avatar-demo.js +7 -7
  74. package/examples/button-demo.js +2 -2
  75. package/examples/button-demo.js.map +1 -1
  76. package/examples/card-list-demo.js +10 -10
  77. package/examples/card-no-border-demo.js +7 -7
  78. package/examples/chapters-demo.d.ts +1 -0
  79. package/examples/chapters-demo.js +46 -0
  80. package/examples/chapters-demo.js.map +1 -0
  81. package/examples/chat-button-demo.js +1 -1
  82. package/examples/chat-button-demo.js.map +1 -1
  83. package/examples/chat-button-offset-demo.js +4 -1
  84. package/examples/chat-button-offset-demo.js.map +1 -1
  85. package/examples/chat-input-demo.d.ts +1 -0
  86. package/examples/chat-input-demo.js +22 -0
  87. package/examples/chat-input-demo.js.map +1 -0
  88. package/examples/chat-message-demo.d.ts +1 -0
  89. package/examples/chat-message-demo.js +20 -0
  90. package/examples/chat-message-demo.js.map +1 -0
  91. package/examples/chat-typing-indicator-demo.d.ts +1 -0
  92. package/examples/chat-typing-indicator-demo.js +14 -0
  93. package/examples/chat-typing-indicator-demo.js.map +1 -0
  94. package/examples/chat-window-csat-demo.d.ts +1 -0
  95. package/examples/chat-window-csat-demo.js +69 -0
  96. package/examples/chat-window-csat-demo.js.map +1 -0
  97. package/examples/chat-window-csat-prompt-demo.d.ts +1 -0
  98. package/examples/chat-window-csat-prompt-demo.js +40 -0
  99. package/examples/chat-window-csat-prompt-demo.js.map +1 -0
  100. package/examples/chat-window-demo.d.ts +1 -0
  101. package/examples/chat-window-demo.js +70 -0
  102. package/examples/chat-window-demo.js.map +1 -0
  103. package/examples/chat-window-quote-demo.d.ts +1 -0
  104. package/examples/chat-window-quote-demo.js +47 -0
  105. package/examples/chat-window-quote-demo.js.map +1 -0
  106. package/examples/chat-window-quotes-demo.d.ts +1 -0
  107. package/examples/chat-window-quotes-demo.js +68 -0
  108. package/examples/chat-window-quotes-demo.js.map +1 -0
  109. package/examples/checkbox-demo.js +2 -2
  110. package/examples/checkbox-demo.js.map +1 -1
  111. package/examples/checkbox-select-demo.d.ts +1 -0
  112. package/examples/checkbox-select-demo.js +101 -0
  113. package/examples/checkbox-select-demo.js.map +1 -0
  114. package/examples/checkboxes-demo.js +1 -0
  115. package/examples/checkboxes-demo.js.map +1 -1
  116. package/examples/checkboxes-with-form-control-demo.js +4 -4
  117. package/examples/chip-demo.js +4 -4
  118. package/examples/choice-expander-demo.js +5 -67
  119. package/examples/choice-expander-demo.js.map +1 -1
  120. package/examples/countdown-demo.d.ts +1 -0
  121. package/examples/countdown-demo.js +39 -0
  122. package/examples/countdown-demo.js.map +1 -0
  123. package/examples/criteria-dates-demo.d.ts +1 -0
  124. package/examples/criteria-dates-demo.js +41 -0
  125. package/examples/criteria-dates-demo.js.map +1 -0
  126. package/examples/criteria-participants-demo.d.ts +1 -0
  127. package/examples/criteria-participants-demo.js +77 -0
  128. package/examples/criteria-participants-demo.js.map +1 -0
  129. package/examples/criteria-participants-flow1-demo.d.ts +1 -0
  130. package/examples/criteria-participants-flow1-demo.js +53 -0
  131. package/examples/criteria-participants-flow1-demo.js.map +1 -0
  132. package/examples/criteria-participants-flow2-demo.d.ts +1 -0
  133. package/examples/criteria-participants-flow2-demo.js +61 -0
  134. package/examples/criteria-participants-flow2-demo.js.map +1 -0
  135. package/examples/criteria-participants-flow3-demo.d.ts +1 -0
  136. package/examples/criteria-participants-flow3-demo.js +72 -0
  137. package/examples/criteria-participants-flow3-demo.js.map +1 -0
  138. package/examples/criteria-transports-b2b-demo.d.ts +1 -0
  139. package/examples/criteria-transports-b2b-demo.js +118 -0
  140. package/examples/criteria-transports-b2b-demo.js.map +1 -0
  141. package/examples/criteria-transports-demo.d.ts +1 -0
  142. package/examples/criteria-transports-demo.js +223 -0
  143. package/examples/criteria-transports-demo.js.map +1 -0
  144. package/examples/datepicker-demo.d.ts +1 -0
  145. package/examples/datepicker-demo.js +51 -0
  146. package/examples/datepicker-demo.js.map +1 -0
  147. package/examples/datepicker-disabled-days-demo.d.ts +1 -0
  148. package/examples/datepicker-disabled-days-demo.js +42 -0
  149. package/examples/datepicker-disabled-days-demo.js.map +1 -0
  150. package/examples/datepicker-duration-tooltip-demo.d.ts +1 -0
  151. package/examples/datepicker-duration-tooltip-demo.js +68 -0
  152. package/examples/datepicker-duration-tooltip-demo.js.map +1 -0
  153. package/examples/datepicker-no-prices-demo.d.ts +1 -0
  154. package/examples/datepicker-no-prices-demo.js +42 -0
  155. package/examples/datepicker-no-prices-demo.js.map +1 -0
  156. package/examples/datepicker-preselected-demo.d.ts +1 -0
  157. package/examples/datepicker-preselected-demo.js +77 -0
  158. package/examples/datepicker-preselected-demo.js.map +1 -0
  159. package/examples/dropdown-demo.js +9 -1
  160. package/examples/dropdown-demo.js.map +1 -1
  161. package/examples/expandable-text-demo.d.ts +1 -0
  162. package/examples/expandable-text-demo.js +22 -0
  163. package/examples/expandable-text-demo.js.map +1 -0
  164. package/examples/filter-demo.js +5 -5
  165. package/examples/floating-label-text-field-demo.d.ts +1 -0
  166. package/examples/floating-label-text-field-demo.js +32 -0
  167. package/examples/floating-label-text-field-demo.js.map +1 -0
  168. package/examples/frame-demo.d.ts +1 -0
  169. package/examples/frame-demo.js +36 -0
  170. package/examples/frame-demo.js.map +1 -0
  171. package/examples/frame-horizontal-demo.d.ts +1 -0
  172. package/examples/frame-horizontal-demo.js +44 -0
  173. package/examples/frame-horizontal-demo.js.map +1 -0
  174. package/examples/frame-no-image-demo.d.ts +1 -0
  175. package/examples/frame-no-image-demo.js +47 -0
  176. package/examples/frame-no-image-demo.js.map +1 -0
  177. package/examples/frame-vertical-demo.d.ts +1 -0
  178. package/examples/frame-vertical-demo.js +44 -0
  179. package/examples/frame-vertical-demo.js.map +1 -0
  180. package/examples/frame-with-tag-demo.d.ts +1 -0
  181. package/examples/frame-with-tag-demo.js +48 -0
  182. package/examples/frame-with-tag-demo.js.map +1 -0
  183. package/examples/journey-card-compact-demo.d.ts +1 -0
  184. package/examples/journey-card-compact-demo.js +71 -0
  185. package/examples/journey-card-compact-demo.js.map +1 -0
  186. package/examples/journey-card-demo.d.ts +1 -0
  187. package/examples/journey-card-demo.js +123 -0
  188. package/examples/journey-card-demo.js.map +1 -0
  189. package/examples/page-navigation-demo.d.ts +1 -0
  190. package/examples/page-navigation-demo.js +53 -0
  191. package/examples/page-navigation-demo.js.map +1 -0
  192. package/examples/password-demo.js +1 -0
  193. package/examples/password-demo.js.map +1 -1
  194. package/examples/phone-field-demo.js +6 -2
  195. package/examples/phone-field-demo.js.map +1 -1
  196. package/examples/promises-demo.d.ts +1 -0
  197. package/examples/promises-demo.js +50 -0
  198. package/examples/promises-demo.js.map +1 -0
  199. package/examples/radio-demo.js +3 -3
  200. package/examples/radio-demo.js.map +1 -1
  201. package/examples/radio-select-demo.d.ts +1 -0
  202. package/examples/radio-select-demo.js +100 -0
  203. package/examples/radio-select-demo.js.map +1 -0
  204. package/examples/scrollbar-demo.d.ts +1 -0
  205. package/examples/scrollbar-demo.js +42 -0
  206. package/examples/scrollbar-demo.js.map +1 -0
  207. package/examples/select-demo.js +1 -0
  208. package/examples/select-demo.js.map +1 -1
  209. package/examples/slider-frame-demo.d.ts +1 -0
  210. package/examples/slider-frame-demo.js +39 -0
  211. package/examples/slider-frame-demo.js.map +1 -0
  212. package/examples/slider-frame-with-button-demo.d.ts +1 -0
  213. package/examples/slider-frame-with-button-demo.js +47 -0
  214. package/examples/slider-frame-with-button-demo.js.map +1 -0
  215. package/examples/slider-frame-with-tag-demo.d.ts +1 -0
  216. package/examples/slider-frame-with-tag-demo.js +51 -0
  217. package/examples/slider-frame-with-tag-demo.js.map +1 -0
  218. package/examples/sparkle-wrapper-demo.d.ts +1 -0
  219. package/examples/sparkle-wrapper-demo.js +34 -0
  220. package/examples/sparkle-wrapper-demo.js.map +1 -0
  221. package/examples/switch-demo.js +3 -2
  222. package/examples/switch-demo.js.map +1 -1
  223. package/examples/tabs-demo.js +2 -5
  224. package/examples/tabs-demo.js.map +1 -1
  225. package/examples/tabs-notification-demo.d.ts +1 -0
  226. package/examples/tabs-notification-demo.js +64 -0
  227. package/examples/tabs-notification-demo.js.map +1 -0
  228. package/examples/tabs-with-select-demo.js +1 -0
  229. package/examples/tabs-with-select-demo.js.map +1 -1
  230. package/examples/text-field-demo.js +6 -0
  231. package/examples/text-field-demo.js.map +1 -1
  232. package/examples/toggle-demo.d.ts +1 -0
  233. package/examples/toggle-demo.js +44 -0
  234. package/examples/toggle-demo.js.map +1 -0
  235. package/examples/toggle-small-demo.d.ts +1 -0
  236. package/examples/toggle-small-demo.js +33 -0
  237. package/examples/toggle-small-demo.js.map +1 -0
  238. package/examples/tooltip-demo.d.ts +1 -0
  239. package/examples/tooltip-demo.js +103 -0
  240. package/examples/tooltip-demo.js.map +1 -0
  241. package/package.json +9 -3
  242. package/styles/animate.css +19 -0
  243. package/styles/components.css +97 -4
  244. package/styles/index.css +0 -1
  245. package/styles/theme.css +1 -2
  246. package/styles/ui/button.css +1 -1
  247. package/styles/ui/chat-button.css +68 -1
  248. package/styles/ui/controls.css +11 -58
  249. package/styles/ui/range.css +6 -1
  250. package/styles/ui/tabs.css +0 -19
  251. package/ui/Accordion.d.ts +30 -0
  252. package/ui/Accordion.js +71 -0
  253. package/ui/Accordion.js.map +1 -0
  254. package/ui/AdvancedToast.js +22 -19
  255. package/ui/AdvancedToast.js.map +1 -1
  256. package/ui/Avatar.js +1 -1
  257. package/ui/Avatar.js.map +1 -1
  258. package/ui/BasicToast.js +12 -12
  259. package/ui/BasicToast.js.map +1 -1
  260. package/ui/Breadcrumb.js +7 -6
  261. package/ui/Breadcrumb.js.map +1 -1
  262. package/ui/Chapters/Chapter.d.ts +7 -0
  263. package/ui/Chapters/Chapter.js +36 -0
  264. package/ui/Chapters/Chapter.js.map +1 -0
  265. package/ui/Chapters/ChapterTitle.d.ts +14 -0
  266. package/ui/Chapters/ChapterTitle.js +35 -0
  267. package/ui/Chapters/ChapterTitle.js.map +1 -0
  268. package/ui/Chapters/Chapters.d.ts +15 -0
  269. package/ui/Chapters/Chapters.js +42 -0
  270. package/ui/Chapters/Chapters.js.map +1 -0
  271. package/ui/Chapters/Chapters.themes.d.ts +9 -0
  272. package/ui/Chapters/Chapters.themes.js +65 -0
  273. package/ui/Chapters/Chapters.themes.js.map +1 -0
  274. package/ui/Chapters/ChaptersSummary.d.ts +17 -0
  275. package/ui/Chapters/ChaptersSummary.js +29 -0
  276. package/ui/Chapters/ChaptersSummary.js.map +1 -0
  277. package/ui/ChatButton.js +9 -9
  278. package/ui/ChatButton.js.map +1 -1
  279. package/ui/ChatInput.d.ts +10 -0
  280. package/ui/ChatInput.js +149 -0
  281. package/ui/ChatInput.js.map +1 -0
  282. package/ui/ChatMessage.d.ts +6 -0
  283. package/ui/ChatMessage.js +2 -0
  284. package/ui/ChatTypingIndicator.d.ts +2 -0
  285. package/ui/ChatTypingIndicator.js +30 -0
  286. package/ui/ChatTypingIndicator.js.map +1 -0
  287. package/ui/ChatWindow.d.ts +34 -0
  288. package/ui/ChatWindow.js +142 -0
  289. package/ui/ChatWindow.js.map +1 -0
  290. package/ui/ChatWindowCsatPrompt.d.ts +15 -0
  291. package/ui/ChatWindowCsatPrompt.js +71 -0
  292. package/ui/ChatWindowCsatPrompt.js.map +1 -0
  293. package/ui/ChatWindowCsatThankYou.d.ts +9 -0
  294. package/ui/ChatWindowCsatThankYou.js +29 -0
  295. package/ui/ChatWindowCsatThankYou.js.map +1 -0
  296. package/ui/ChatWindowQuote.d.ts +22 -0
  297. package/ui/ChatWindowQuote.js +141 -0
  298. package/ui/ChatWindowQuote.js.map +1 -0
  299. package/ui/Chip.js +4 -4
  300. package/ui/ChoiceExpander.js +17 -17
  301. package/ui/ChoiceExpander.js.map +1 -1
  302. package/ui/Countdown.d.ts +16 -0
  303. package/ui/Countdown.js +61 -0
  304. package/ui/Countdown.js.map +1 -0
  305. package/ui/Datepicker.d.ts +26 -0
  306. package/ui/Datepicker.js +2 -0
  307. package/ui/Day.d.ts +25 -0
  308. package/ui/Day.js +2 -0
  309. package/ui/Dropdown.d.ts +20 -3
  310. package/ui/Dropdown.js +61 -27
  311. package/ui/Dropdown.js.map +1 -1
  312. package/ui/ElasticHeight.js +1 -0
  313. package/ui/ElasticHeight.js.map +1 -1
  314. package/ui/ExpandableText.d.ts +14 -0
  315. package/ui/ExpandableText.js +40 -0
  316. package/ui/ExpandableText.js.map +1 -0
  317. package/ui/FlipCard.d.ts +7 -0
  318. package/ui/FlipCard.js +59 -0
  319. package/ui/FlipCard.js.map +1 -0
  320. package/ui/HamburgerIcon.js +1 -1
  321. package/ui/HamburgerIcon.js.map +1 -1
  322. package/ui/Link.js +8 -8
  323. package/ui/Link.js.map +1 -1
  324. package/ui/PageNavigation.d.ts +13 -0
  325. package/ui/PageNavigation.js +71 -0
  326. package/ui/PageNavigation.js.map +1 -0
  327. package/ui/Pagination.js +23 -23
  328. package/ui/Pagination.js.map +1 -1
  329. package/ui/Promises/Promises.d.ts +26 -0
  330. package/ui/Promises/Promises.js +42 -0
  331. package/ui/Promises/Promises.js.map +1 -0
  332. package/ui/Promises/PromisesMedia.d.ts +12 -0
  333. package/ui/Promises/PromisesMedia.js +64 -0
  334. package/ui/Promises/PromisesMedia.js.map +1 -0
  335. package/ui/Promises/PromisesMenu.d.ts +11 -0
  336. package/ui/Promises/PromisesMenu.js +154 -0
  337. package/ui/Promises/PromisesMenu.js.map +1 -0
  338. package/ui/Scrollbar.d.ts +14 -0
  339. package/ui/Scrollbar.js +68 -0
  340. package/ui/Scrollbar.js.map +1 -0
  341. package/ui/SidebarLayout.d.ts +3 -1
  342. package/ui/SidebarLayout.js +67 -59
  343. package/ui/SidebarLayout.js.map +1 -1
  344. package/ui/SparkleWrapper.d.ts +5 -0
  345. package/ui/SparkleWrapper.js +56 -0
  346. package/ui/SparkleWrapper.js.map +1 -0
  347. package/ui/Tag.js +6 -6
  348. package/ui/Toggle.d.ts +15 -0
  349. package/ui/Toggle.js +42 -0
  350. package/ui/Toggle.js.map +1 -0
  351. package/ui/Tooltip.d.ts +8 -0
  352. package/ui/Tooltip.js +2 -0
  353. package/ui/buttons/Button.type.d.ts +1 -1
  354. package/ui/buttons/Button.type.js +1 -1
  355. package/ui/buttons/Button.type.js.map +1 -1
  356. package/ui/buttons/ButtonContent.js +3 -3
  357. package/ui/carousel/Carousel.context.d.ts +27 -0
  358. package/ui/carousel/Carousel.context.js +2 -0
  359. package/ui/carousel/Carousel.d.ts +3 -0
  360. package/ui/carousel/Carousel.js +12 -0
  361. package/ui/carousel/Carousel.js.map +1 -0
  362. package/ui/carousel/CarouselBody.d.ts +6 -0
  363. package/ui/carousel/CarouselBody.js +21 -0
  364. package/ui/carousel/CarouselBody.js.map +1 -0
  365. package/ui/carousel/CarouselItem.d.ts +6 -0
  366. package/ui/carousel/CarouselItem.js +21 -0
  367. package/ui/carousel/CarouselItem.js.map +1 -0
  368. package/ui/carousel/CarouselNext.d.ts +8 -0
  369. package/ui/carousel/CarouselNext.js +23 -0
  370. package/ui/carousel/CarouselNext.js.map +1 -0
  371. package/ui/carousel/CarouselPrevious.d.ts +8 -0
  372. package/ui/carousel/CarouselPrevious.js +23 -0
  373. package/ui/carousel/CarouselPrevious.js.map +1 -0
  374. package/ui/contexts/TridentUIConfig.js +1 -1
  375. package/ui/criteria/Birthdate.d.ts +13 -0
  376. package/ui/criteria/Birthdate.js +2 -0
  377. package/ui/criteria/CriteriaDates.d.ts +32 -0
  378. package/ui/criteria/CriteriaDates.js +76 -0
  379. package/ui/criteria/CriteriaDates.js.map +1 -0
  380. package/ui/criteria/CriteriaParticipants.d.ts +106 -0
  381. package/ui/criteria/CriteriaParticipants.js +2 -0
  382. package/ui/criteria/CriteriaSection.d.ts +6 -0
  383. package/ui/criteria/CriteriaSection.js +15 -0
  384. package/ui/criteria/CriteriaSection.js.map +1 -0
  385. package/ui/criteria/CriteriaTransports.d.ts +53 -0
  386. package/ui/criteria/CriteriaTransports.js +274 -0
  387. package/ui/criteria/CriteriaTransports.js.map +1 -0
  388. package/ui/forms/CheckboxSelect.d.ts +31 -0
  389. package/ui/forms/CheckboxSelect.js +119 -0
  390. package/ui/forms/CheckboxSelect.js.map +1 -0
  391. package/ui/forms/Filter.d.ts +3 -1
  392. package/ui/forms/Filter.js +17 -13
  393. package/ui/forms/Filter.js.map +1 -1
  394. package/ui/forms/FloatingLabelTextField.d.ts +12 -0
  395. package/ui/forms/FloatingLabelTextField.js +132 -0
  396. package/ui/forms/FloatingLabelTextField.js.map +1 -0
  397. package/ui/forms/FormControl.d.ts +1 -1
  398. package/ui/forms/FormControl.js.map +1 -1
  399. package/ui/forms/FormControlError.js +4 -4
  400. package/ui/forms/NumberField.d.ts +3 -2
  401. package/ui/forms/NumberField.js +24 -25
  402. package/ui/forms/NumberField.js.map +1 -1
  403. package/ui/forms/PhoneField.d.ts +5 -10
  404. package/ui/forms/PhoneField.js +31 -211
  405. package/ui/forms/PhoneField.js.map +1 -1
  406. package/ui/forms/PhoneFieldFullInput.d.ts +16 -0
  407. package/ui/forms/PhoneFieldFullInput.js +110 -0
  408. package/ui/forms/PhoneFieldFullInput.js.map +1 -0
  409. package/ui/forms/PhoneFieldSplitInput.d.ts +19 -0
  410. package/ui/forms/PhoneFieldSplitInput.js +158 -0
  411. package/ui/forms/PhoneFieldSplitInput.js.map +1 -0
  412. package/ui/forms/RadioSelect.d.ts +31 -0
  413. package/ui/forms/RadioSelect.js +117 -0
  414. package/ui/forms/RadioSelect.js.map +1 -0
  415. package/ui/forms/Range.d.ts +1 -1
  416. package/ui/forms/Select.js +16 -17
  417. package/ui/forms/Select.js.map +1 -1
  418. package/ui/forms/Switch.d.ts +5 -3
  419. package/ui/forms/Switch.js +54 -34
  420. package/ui/forms/Switch.js.map +1 -1
  421. package/ui/forms/TextField.js +33 -24
  422. package/ui/forms/TextField.js.map +1 -1
  423. package/ui/forms/checkboxes/Checkbox.d.ts +3 -1
  424. package/ui/forms/checkboxes/Checkbox.js +21 -17
  425. package/ui/forms/checkboxes/Checkbox.js.map +1 -1
  426. package/ui/forms/checkboxes/Checkboxes.d.ts +5 -0
  427. package/ui/forms/checkboxes/Checkboxes.js +8 -8
  428. package/ui/forms/checkboxes/Checkboxes.js.map +1 -1
  429. package/ui/forms/password/Password.js +19 -20
  430. package/ui/forms/password/Password.js.map +1 -1
  431. package/ui/forms/password/ValidationMessage.js +5 -5
  432. package/ui/forms/radios/Radio.d.ts +2 -1
  433. package/ui/forms/radios/Radio.js +6 -3
  434. package/ui/forms/radios/Radio.js.map +1 -1
  435. package/ui/forms/radios/RadioGroup.js +5 -6
  436. package/ui/forms/radios/RadioGroup.js.map +1 -1
  437. package/ui/frame/Frame.d.ts +8 -0
  438. package/ui/frame/Frame.js +16 -0
  439. package/ui/frame/Frame.js.map +1 -0
  440. package/ui/frame/FrameLabelsWrapper.d.ts +5 -0
  441. package/ui/frame/FrameLabelsWrapper.js +12 -0
  442. package/ui/frame/FrameLabelsWrapper.js.map +1 -0
  443. package/ui/frame/FrameTitle.d.ts +7 -0
  444. package/ui/frame/FrameTitle.js +25 -0
  445. package/ui/frame/FrameTitle.js.map +1 -0
  446. package/ui/frame/FrameWrapper.d.ts +6 -0
  447. package/ui/frame/FrameWrapper.js +14 -0
  448. package/ui/frame/FrameWrapper.js.map +1 -0
  449. package/ui/frame/SliderFrame.d.ts +14 -0
  450. package/ui/frame/SliderFrame.js +50 -0
  451. package/ui/frame/SliderFrame.js.map +1 -0
  452. package/ui/helpers/cn.d.ts +2 -0
  453. package/ui/helpers/cn.js +10 -0
  454. package/ui/helpers/cn.js.map +1 -0
  455. package/ui/helpers/phone/defaultPrefixes.d.ts +1 -0
  456. package/ui/helpers/phone/defaultPrefixes.js +52 -28
  457. package/ui/helpers/phone/defaultPrefixes.js.map +1 -1
  458. package/ui/helpers/phone/formatters.d.ts +11 -0
  459. package/ui/helpers/phone/formatters.js +32 -1
  460. package/ui/helpers/phone/formatters.js.map +1 -1
  461. package/ui/helpers/phone/index.d.ts +1 -1
  462. package/ui/helpers/phone/index.js +3 -3
  463. package/ui/hooks/useIsClient.d.ts +1 -0
  464. package/ui/hooks/useIsClient.js +12 -0
  465. package/ui/hooks/useIsClient.js.map +1 -0
  466. package/ui/hooks/useValue.d.ts +3 -4
  467. package/ui/hooks/useValue.js +11 -11
  468. package/ui/hooks/useValue.js.map +1 -1
  469. package/ui/journey-card/FlightSegmentCard.d.ts +15 -0
  470. package/ui/journey-card/FlightSegmentCard.js +73 -0
  471. package/ui/journey-card/FlightSegmentCard.js.map +1 -0
  472. package/ui/journey-card/FlightTimeline.d.ts +5 -0
  473. package/ui/journey-card/FlightTimeline.js +27 -0
  474. package/ui/journey-card/FlightTimeline.js.map +1 -0
  475. package/ui/journey-card/ItineraryDetails.d.ts +9 -0
  476. package/ui/journey-card/ItineraryDetails.js +40 -0
  477. package/ui/journey-card/ItineraryDetails.js.map +1 -0
  478. package/ui/journey-card/JourneyCard.d.ts +17 -0
  479. package/ui/journey-card/JourneyCard.js +34 -0
  480. package/ui/journey-card/JourneyCard.js.map +1 -0
  481. package/ui/journey-card/JourneyDetails.d.ts +47 -0
  482. package/ui/journey-card/JourneyDetails.js +183 -0
  483. package/ui/journey-card/JourneyDetails.js.map +1 -0
  484. package/ui/tabs/Tabs.d.ts +5 -1
  485. package/ui/tabs/Tabs.js +208 -124
  486. package/ui/tabs/Tabs.js.map +1 -1
@@ -1,123 +1,147 @@
1
1
  //#region lib/ui/helpers/phone/defaultPrefixes.ts
2
2
  var e = [
3
+ {
4
+ code: "+33",
5
+ label: "Fra +33",
6
+ fullLabel: "France +33",
7
+ country: "FR"
8
+ },
3
9
  {
4
10
  code: "+1",
5
- label: "US/Canada (+1)",
11
+ label: "USA +1",
12
+ fullLabel: "United States +1",
6
13
  country: "US"
7
14
  },
8
15
  {
9
16
  code: "+44",
10
- label: "UK (+44)",
17
+ label: "UK +44",
18
+ fullLabel: "United Kingdom +44",
11
19
  country: "GB"
12
20
  },
13
- {
14
- code: "+33",
15
- label: "France (+33)",
16
- country: "FR"
17
- },
18
21
  {
19
22
  code: "+49",
20
- label: "Germany (+49)",
23
+ label: "Ger +49",
24
+ fullLabel: "Germany +49",
21
25
  country: "DE"
22
26
  },
23
27
  {
24
28
  code: "+39",
25
- label: "Italy (+39)",
29
+ label: "Ita +39",
30
+ fullLabel: "Italy +39",
26
31
  country: "IT"
27
32
  },
28
33
  {
29
34
  code: "+34",
30
- label: "Spain (+34)",
35
+ label: "Spn +34",
36
+ fullLabel: "Spain +34",
31
37
  country: "ES"
32
38
  },
33
39
  {
34
40
  code: "+86",
35
- label: "China (+86)",
41
+ label: "Chn +86",
42
+ fullLabel: "China +86",
36
43
  country: "CN"
37
44
  },
38
45
  {
39
46
  code: "+91",
40
- label: "India (+91)",
47
+ label: "Ind +91",
48
+ fullLabel: "India +91",
41
49
  country: "IN"
42
50
  },
43
51
  {
44
52
  code: "+81",
45
- label: "Japan (+81)",
53
+ label: "JP +81",
54
+ fullLabel: "Japan +81",
46
55
  country: "JP"
47
56
  },
48
57
  {
49
58
  code: "+82",
50
- label: "South Korea (+82)",
59
+ label: "Kr +82",
60
+ fullLabel: "South Korea +82",
51
61
  country: "KR"
52
62
  },
53
63
  {
54
64
  code: "+7",
55
- label: "Russia (+7)",
65
+ label: "Rus +7",
66
+ fullLabel: "Russia +7",
56
67
  country: "RU"
57
68
  },
58
69
  {
59
70
  code: "+61",
60
- label: "Australia (+61)",
71
+ label: "Aus +61",
72
+ fullLabel: "Australia +61",
61
73
  country: "AU"
62
74
  },
63
75
  {
64
76
  code: "+55",
65
- label: "Brazil (+55)",
77
+ label: "Bra +55",
78
+ fullLabel: "Brazil +55",
66
79
  country: "BR"
67
80
  },
68
81
  {
69
82
  code: "+52",
70
- label: "Mexico (+52)",
83
+ label: "Mex +52",
84
+ fullLabel: "Mexico +52",
71
85
  country: "MX"
72
86
  },
73
87
  {
74
88
  code: "+31",
75
- label: "Netherlands (+31)",
89
+ label: "NL +31",
90
+ fullLabel: "Netherlands +31",
76
91
  country: "NL"
77
92
  },
78
93
  {
79
94
  code: "+46",
80
- label: "Sweden (+46)",
95
+ label: "Swe +46",
96
+ fullLabel: "Sweden +46",
81
97
  country: "SE"
82
98
  },
83
99
  {
84
100
  code: "+41",
85
- label: "Switzerland (+41)",
101
+ label: "Swi +41",
102
+ fullLabel: "Switzerland +41",
86
103
  country: "CH"
87
104
  },
88
105
  {
89
106
  code: "+32",
90
- label: "Belgium (+32)",
107
+ label: "Bel +32",
108
+ fullLabel: "Belgium +32",
91
109
  country: "BE"
92
110
  },
93
111
  {
94
112
  code: "+48",
95
- label: "Poland (+48)",
113
+ label: "Pol +48",
114
+ fullLabel: "Poland +48",
96
115
  country: "PL"
97
116
  },
98
117
  {
99
118
  code: "+351",
100
- label: "Portugal (+351)",
119
+ label: "Por +351",
120
+ fullLabel: "Portugal +351",
101
121
  country: "PT"
102
122
  },
103
123
  {
104
124
  code: "+30",
105
- label: "Greece (+30)",
125
+ label: "Gre +30",
126
+ fullLabel: "Greece +30",
106
127
  country: "GR"
107
128
  },
108
129
  {
109
130
  code: "+47",
110
- label: "Norway (+47)",
131
+ label: "Nor +47",
132
+ fullLabel: "Norway +47",
111
133
  country: "NO"
112
134
  },
113
135
  {
114
136
  code: "+45",
115
- label: "Denmark (+45)",
137
+ label: "Den +45",
138
+ fullLabel: "Denmark +45",
116
139
  country: "DK"
117
140
  },
118
141
  {
119
142
  code: "+358",
120
- label: "Finland (+358)",
143
+ label: "Fin +358",
144
+ fullLabel: "Finland +358",
121
145
  country: "FI"
122
146
  }
123
147
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"defaultPrefixes.js","names":[],"sources":["../../../../lib/ui/helpers/phone/defaultPrefixes.ts"],"sourcesContent":["/**\n * Default phone number prefixes for common countries\n */\n\nexport interface PhonePrefix {\n code: string;\n label?: string;\n country?: string;\n}\n\n/**\n * List of common country phone prefixes\n * Sorted by popularity/usage frequency\n */\nexport const DEFAULT_PHONE_PREFIXES: PhonePrefix[] = [\n { code: '+1', label: 'US/Canada (+1)', country: 'US' },\n { code: '+44', label: 'UK (+44)', country: 'GB' },\n { code: '+33', label: 'France (+33)', country: 'FR' },\n { code: '+49', label: 'Germany (+49)', country: 'DE' },\n { code: '+39', label: 'Italy (+39)', country: 'IT' },\n { code: '+34', label: 'Spain (+34)', country: 'ES' },\n { code: '+86', label: 'China (+86)', country: 'CN' },\n { code: '+91', label: 'India (+91)', country: 'IN' },\n { code: '+81', label: 'Japan (+81)', country: 'JP' },\n { code: '+82', label: 'South Korea (+82)', country: 'KR' },\n { code: '+7', label: 'Russia (+7)', country: 'RU' },\n { code: '+61', label: 'Australia (+61)', country: 'AU' },\n { code: '+55', label: 'Brazil (+55)', country: 'BR' },\n { code: '+52', label: 'Mexico (+52)', country: 'MX' },\n { code: '+31', label: 'Netherlands (+31)', country: 'NL' },\n { code: '+46', label: 'Sweden (+46)', country: 'SE' },\n { code: '+41', label: 'Switzerland (+41)', country: 'CH' },\n { code: '+32', label: 'Belgium (+32)', country: 'BE' },\n { code: '+48', label: 'Poland (+48)', country: 'PL' },\n { code: '+351', label: 'Portugal (+351)', country: 'PT' },\n { code: '+30', label: 'Greece (+30)', country: 'GR' },\n { code: '+47', label: 'Norway (+47)', country: 'NO' },\n { code: '+45', label: 'Denmark (+45)', country: 'DK' },\n { code: '+358', label: 'Finland (+358)', country: 'FI' },\n];\n"],"mappings":";AAcA,IAAa,IAAwC;CACnD;EAAE,MAAM;EAAM,OAAO;EAAkB,SAAS;EAAM;CACtD;EAAE,MAAM;EAAO,OAAO;EAAY,SAAS;EAAM;CACjD;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAO,OAAO;EAAiB,SAAS;EAAM;CACtD;EAAE,MAAM;EAAO,OAAO;EAAe,SAAS;EAAM;CACpD;EAAE,MAAM;EAAO,OAAO;EAAe,SAAS;EAAM;CACpD;EAAE,MAAM;EAAO,OAAO;EAAe,SAAS;EAAM;CACpD;EAAE,MAAM;EAAO,OAAO;EAAe,SAAS;EAAM;CACpD;EAAE,MAAM;EAAO,OAAO;EAAe,SAAS;EAAM;CACpD;EAAE,MAAM;EAAO,OAAO;EAAqB,SAAS;EAAM;CAC1D;EAAE,MAAM;EAAM,OAAO;EAAe,SAAS;EAAM;CACnD;EAAE,MAAM;EAAO,OAAO;EAAmB,SAAS;EAAM;CACxD;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAO,OAAO;EAAqB,SAAS;EAAM;CAC1D;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAO,OAAO;EAAqB,SAAS;EAAM;CAC1D;EAAE,MAAM;EAAO,OAAO;EAAiB,SAAS;EAAM;CACtD;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAQ,OAAO;EAAmB,SAAS;EAAM;CACzD;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAO,OAAO;EAAgB,SAAS;EAAM;CACrD;EAAE,MAAM;EAAO,OAAO;EAAiB,SAAS;EAAM;CACtD;EAAE,MAAM;EAAQ,OAAO;EAAkB,SAAS;EAAM;CACzD"}
1
+ {"version":3,"file":"defaultPrefixes.js","names":[],"sources":["../../../../lib/ui/helpers/phone/defaultPrefixes.ts"],"sourcesContent":["/**\n * Default phone number prefixes for common countries\n */\n\nexport interface PhonePrefix {\n code: string;\n label?: string;\n fullLabel?: string;\n country?: string;\n}\n\n/**\n * List of common country phone prefixes\n * Sorted by popularity/usage frequency\n */\nexport const DEFAULT_PHONE_PREFIXES: PhonePrefix[] = [\n { code: '+33', label: 'Fra +33', fullLabel: 'France +33', country: 'FR' },\n { code: '+1', label: 'USA +1', fullLabel: 'United States +1', country: 'US' },\n { code: '+44', label: 'UK +44', fullLabel: 'United Kingdom +44', country: 'GB' },\n { code: '+49', label: 'Ger +49', fullLabel: 'Germany +49', country: 'DE' },\n { code: '+39', label: 'Ita +39', fullLabel: 'Italy +39', country: 'IT' },\n { code: '+34', label: 'Spn +34', fullLabel: 'Spain +34', country: 'ES' },\n { code: '+86', label: 'Chn +86', fullLabel: 'China +86', country: 'CN' },\n { code: '+91', label: 'Ind +91', fullLabel: 'India +91', country: 'IN' },\n { code: '+81', label: 'JP +81', fullLabel: 'Japan +81', country: 'JP' },\n { code: '+82', label: 'Kr +82', fullLabel: 'South Korea +82', country: 'KR' },\n { code: '+7', label: 'Rus +7', fullLabel: 'Russia +7', country: 'RU' },\n { code: '+61', label: 'Aus +61', fullLabel: 'Australia +61', country: 'AU' },\n { code: '+55', label: 'Bra +55', fullLabel: 'Brazil +55', country: 'BR' },\n { code: '+52', label: 'Mex +52', fullLabel: 'Mexico +52', country: 'MX' },\n { code: '+31', label: 'NL +31', fullLabel: 'Netherlands +31', country: 'NL' },\n { code: '+46', label: 'Swe +46', fullLabel: 'Sweden +46', country: 'SE' },\n { code: '+41', label: 'Swi +41', fullLabel: 'Switzerland +41', country: 'CH' },\n { code: '+32', label: 'Bel +32', fullLabel: 'Belgium +32', country: 'BE' },\n { code: '+48', label: 'Pol +48', fullLabel: 'Poland +48', country: 'PL' },\n { code: '+351', label: 'Por +351', fullLabel: 'Portugal +351', country: 'PT' },\n { code: '+30', label: 'Gre +30', fullLabel: 'Greece +30', country: 'GR' },\n { code: '+47', label: 'Nor +47', fullLabel: 'Norway +47', country: 'NO' },\n { code: '+45', label: 'Den +45', fullLabel: 'Denmark +45', country: 'DK' },\n { code: '+358', label: 'Fin +358', fullLabel: 'Finland +358', country: 'FI' },\n];\n"],"mappings":";AAeA,IAAa,IAAwC;CACnD;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAM,OAAO;EAAU,WAAW;EAAoB,SAAS;EAAM;CAC7E;EAAE,MAAM;EAAO,OAAO;EAAU,WAAW;EAAsB,SAAS;EAAM;CAChF;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAe,SAAS;EAAM;CAC1E;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAa,SAAS;EAAM;CACxE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAa,SAAS;EAAM;CACxE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAa,SAAS;EAAM;CACxE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAa,SAAS;EAAM;CACxE;EAAE,MAAM;EAAO,OAAO;EAAU,WAAW;EAAa,SAAS;EAAM;CACvE;EAAE,MAAM;EAAO,OAAO;EAAU,WAAW;EAAmB,SAAS;EAAM;CAC7E;EAAE,MAAM;EAAM,OAAO;EAAU,WAAW;EAAa,SAAS;EAAM;CACtE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAiB,SAAS;EAAM;CAC5E;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAO,OAAO;EAAU,WAAW;EAAmB,SAAS;EAAM;CAC7E;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAmB,SAAS;EAAM;CAC9E;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAe,SAAS;EAAM;CAC1E;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAQ,OAAO;EAAY,WAAW;EAAiB,SAAS;EAAM;CAC9E;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAc,SAAS;EAAM;CACzE;EAAE,MAAM;EAAO,OAAO;EAAW,WAAW;EAAe,SAAS;EAAM;CAC1E;EAAE,MAAM;EAAQ,OAAO;EAAY,WAAW;EAAgB,SAAS;EAAM;CAC9E"}
@@ -44,3 +44,14 @@ export declare function getCursorPosition(oldValue: string, newValue: string, ol
44
44
  * @returns Number of '#' characters in pattern
45
45
  */
46
46
  export declare function countDigitPlaceholders(pattern: string): number;
47
+ export declare function getLiteralPrefixInfo(pattern: string): {
48
+ literalPrefix: string;
49
+ literalPrefixDigits: string;
50
+ };
51
+ export declare function stripLiteralPrefix(allDigits: string, literalPrefixDigits: string): string;
52
+ export declare function calculateCursorPosition(digitsBeforeCursor: number, formatted: string, literalPrefixDigits: string): number;
53
+ export declare function formatPhoneDigits(inputValue: string, pattern: string, cursorPosition: number): {
54
+ formatted: string;
55
+ nextCursor: number;
56
+ literalPrefixDigits: string;
57
+ } | null;
@@ -27,7 +27,38 @@ function n(t, n, r) {
27
27
  function r(e) {
28
28
  return (e.match(/#/g) || []).length;
29
29
  }
30
+ function i(t) {
31
+ let n = t.indexOf("#"), r = n > 0 ? t.substring(0, n) : "";
32
+ return {
33
+ literalPrefix: r,
34
+ literalPrefixDigits: e(r)
35
+ };
36
+ }
37
+ function a(e, t) {
38
+ return t.length > 0 && e.startsWith(t) ? e.substring(t.length) : e;
39
+ }
40
+ function o(e, t, n) {
41
+ let r = 0, i = 0;
42
+ for (let a = 0; a < t.length; a++) if (/\d/.test(t[a])) {
43
+ if (i < n.length) {
44
+ i++;
45
+ continue;
46
+ }
47
+ if (r++, r === e) return a + 1;
48
+ }
49
+ return t.length;
50
+ }
51
+ function s(n, s, c) {
52
+ let { literalPrefixDigits: l } = i(s), u = a(e(n), l), d = r(s);
53
+ if (u.length > d) return null;
54
+ let f = a(e(n.substring(0, c)), l).length, p = t(u, s);
55
+ return {
56
+ formatted: p,
57
+ nextCursor: o(f, p, l),
58
+ literalPrefixDigits: l
59
+ };
60
+ }
30
61
  //#endregion
31
- export { r as countDigitPlaceholders, e as extractDigits, t as formatWithPattern, n as getCursorPosition };
62
+ export { o as calculateCursorPosition, r as countDigitPlaceholders, e as extractDigits, s as formatPhoneDigits, t as formatWithPattern, n as getCursorPosition, i as getLiteralPrefixInfo, a as stripLiteralPrefix };
32
63
 
33
64
  //# sourceMappingURL=formatters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","names":[],"sources":["../../../../lib/ui/helpers/phone/formatters.ts"],"sourcesContent":["/**\n * Phone number formatting utilities\n * Provides pattern-based formatting without external dependencies\n */\n\n/**\n * Extract only digits from a string\n * @param value - Input string that may contain non-digit characters\n * @returns String containing only digits (0-9)\n */\nexport function extractDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Apply a pattern to input digits\n * Pattern uses '#' as placeholder for digits, other characters are literals\n *\n * @example\n * formatWithPattern(\"5551234567\", \"+1 (###) ###-####\")\n * // returns \"+1 (555) 123-4567\"\n *\n * @param value - String containing the digits to format\n * @param pattern - Format pattern where '#' represents a digit placeholder\n * @returns Formatted string according to pattern\n */\nexport function formatWithPattern(value: string, pattern: string): string {\n const digits = extractDigits(value);\n if (digits.length === 0) return '';\n\n let digitIndex = 0;\n let result = '';\n let started = false;\n\n for (let i = 0; i < pattern.length; i++) {\n if (pattern[i] === '#') {\n if (digitIndex < digits.length) {\n // Add any leading literals before the first digit\n if (!started) {\n // Add all literals from start until this digit\n for (let j = 0; j < i; j++) {\n if (pattern[j] !== '#') {\n result += pattern[j];\n }\n }\n started = true;\n }\n\n result += digits[digitIndex];\n digitIndex++;\n } else {\n // No more digits available\n break;\n }\n } else if (started) {\n // Literal character after we've started\n result += pattern[i];\n }\n }\n\n return result;\n}\n\n/**\n * Calculate cursor position after formatting\n * Critical for UX - ensures cursor stays in correct position relative to digits\n *\n * @example\n * // User types \"4\" at position: \"1|23\" → \"1423\"\n * // After formatting: \"(14) 23\"\n * // Cursor should be: \"(14|) 23\" (after the 4, not at end)\n *\n * @param oldValue - Previous input value\n * @param newValue - New formatted value\n * @param oldCursor - Cursor position before formatting\n * @returns New cursor position after formatting\n */\nexport function getCursorPosition(oldValue: string, newValue: string, oldCursor: number): number {\n // Count digits before cursor in old value\n const digitsBeforeCursor = extractDigits(oldValue.substring(0, oldCursor)).length;\n\n // Find position in new value where we have the same number of digits\n let digitCount = 0;\n let newCursor = 0;\n\n for (let i = 0; i < newValue.length; i++) {\n if (/\\d/.test(newValue[i])) {\n digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n }\n\n // If we didn't find enough digits, cursor goes to end\n if (digitCount < digitsBeforeCursor) {\n newCursor = newValue.length;\n }\n\n return newCursor;\n}\n\n/**\n * Count digit placeholders in a pattern\n * Used to determine maximum number of digits allowed\n *\n * @param pattern - Format pattern\n * @returns Number of '#' characters in pattern\n */\nexport function countDigitPlaceholders(pattern: string): number {\n return (pattern.match(/#/g) || []).length;\n}\n"],"mappings":";AAUA,SAAgB,EAAc,GAAuB;AACnD,QAAO,EAAM,QAAQ,OAAO,GAAG;;AAejC,SAAgB,EAAkB,GAAe,GAAyB;CACxE,IAAM,IAAS,EAAc,EAAM;AACnC,KAAI,EAAO,WAAW,EAAG,QAAO;CAEhC,IAAI,IAAa,GACb,IAAS,IACT,IAAU;AAEd,MAAK,IAAI,IAAI,GAAG,IAAI,EAAQ,QAAQ,IAClC,KAAI,EAAQ,OAAO,IACjB,KAAI,IAAa,EAAO,QAAQ;AAE9B,MAAI,CAAC,GAAS;AAEZ,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,CAAI,EAAQ,OAAO,QACjB,KAAU,EAAQ;AAGtB,OAAU;;AAIZ,EADA,KAAU,EAAO,IACjB;OAGA;MAEO,MAET,KAAU,EAAQ;AAItB,QAAO;;AAiBT,SAAgB,EAAkB,GAAkB,GAAkB,GAA2B;CAE/F,IAAM,IAAqB,EAAc,EAAS,UAAU,GAAG,EAAU,CAAC,CAAC,QAGvE,IAAa,GACb,IAAY;AAEhB,MAAK,IAAI,IAAI,GAAG,IAAI,EAAS,QAAQ,IACnC,KAAI,KAAK,KAAK,EAAS,GAAG,KACxB,KACI,MAAe,IAAoB;AACrC,MAAY,IAAI;AAChB;;AAUN,QAJI,IAAa,MACf,IAAY,EAAS,SAGhB;;AAUT,SAAgB,EAAuB,GAAyB;AAC9D,SAAQ,EAAQ,MAAM,KAAK,IAAI,EAAE,EAAE"}
1
+ {"version":3,"file":"formatters.js","names":[],"sources":["../../../../lib/ui/helpers/phone/formatters.ts"],"sourcesContent":["/**\n * Phone number formatting utilities\n * Provides pattern-based formatting without external dependencies\n */\n\n/**\n * Extract only digits from a string\n * @param value - Input string that may contain non-digit characters\n * @returns String containing only digits (0-9)\n */\nexport function extractDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Apply a pattern to input digits\n * Pattern uses '#' as placeholder for digits, other characters are literals\n *\n * @example\n * formatWithPattern(\"5551234567\", \"+1 (###) ###-####\")\n * // returns \"+1 (555) 123-4567\"\n *\n * @param value - String containing the digits to format\n * @param pattern - Format pattern where '#' represents a digit placeholder\n * @returns Formatted string according to pattern\n */\nexport function formatWithPattern(value: string, pattern: string): string {\n const digits = extractDigits(value);\n if (digits.length === 0) return '';\n\n let digitIndex = 0;\n let result = '';\n let started = false;\n\n for (let i = 0; i < pattern.length; i++) {\n if (pattern[i] === '#') {\n if (digitIndex < digits.length) {\n // Add any leading literals before the first digit\n if (!started) {\n // Add all literals from start until this digit\n for (let j = 0; j < i; j++) {\n if (pattern[j] !== '#') {\n result += pattern[j];\n }\n }\n started = true;\n }\n\n result += digits[digitIndex];\n digitIndex++;\n } else {\n // No more digits available\n break;\n }\n } else if (started) {\n // Literal character after we've started\n result += pattern[i];\n }\n }\n\n return result;\n}\n\n/**\n * Calculate cursor position after formatting\n * Critical for UX - ensures cursor stays in correct position relative to digits\n *\n * @example\n * // User types \"4\" at position: \"1|23\" → \"1423\"\n * // After formatting: \"(14) 23\"\n * // Cursor should be: \"(14|) 23\" (after the 4, not at end)\n *\n * @param oldValue - Previous input value\n * @param newValue - New formatted value\n * @param oldCursor - Cursor position before formatting\n * @returns New cursor position after formatting\n */\nexport function getCursorPosition(oldValue: string, newValue: string, oldCursor: number): number {\n // Count digits before cursor in old value\n const digitsBeforeCursor = extractDigits(oldValue.substring(0, oldCursor)).length;\n\n // Find position in new value where we have the same number of digits\n let digitCount = 0;\n let newCursor = 0;\n\n for (let i = 0; i < newValue.length; i++) {\n if (/\\d/.test(newValue[i])) {\n digitCount++;\n if (digitCount === digitsBeforeCursor) {\n newCursor = i + 1;\n break;\n }\n }\n }\n\n // If we didn't find enough digits, cursor goes to end\n if (digitCount < digitsBeforeCursor) {\n newCursor = newValue.length;\n }\n\n return newCursor;\n}\n\n/**\n * Count digit placeholders in a pattern\n * Used to determine maximum number of digits allowed\n *\n * @param pattern - Format pattern\n * @returns Number of '#' characters in pattern\n */\nexport function countDigitPlaceholders(pattern: string): number {\n return (pattern.match(/#/g) || []).length;\n}\n\nexport function getLiteralPrefixInfo(pattern: string): {\n literalPrefix: string;\n literalPrefixDigits: string;\n} {\n const firstHashIndex = pattern.indexOf('#');\n const literalPrefix = firstHashIndex > 0 ? pattern.substring(0, firstHashIndex) : '';\n const literalPrefixDigits = extractDigits(literalPrefix);\n return { literalPrefix, literalPrefixDigits };\n}\n\nexport function stripLiteralPrefix(allDigits: string, literalPrefixDigits: string): string {\n if (literalPrefixDigits.length > 0 && allDigits.startsWith(literalPrefixDigits)) {\n return allDigits.substring(literalPrefixDigits.length);\n }\n return allDigits;\n}\n\nexport function calculateCursorPosition(\n digitsBeforeCursor: number,\n formatted: string,\n literalPrefixDigits: string,\n): number {\n let digitCount = 0;\n let skippedPrefixDigits = 0;\n\n for (let i = 0; i < formatted.length; i++) {\n if (/\\d/.test(formatted[i])) {\n if (skippedPrefixDigits < literalPrefixDigits.length) {\n skippedPrefixDigits++;\n continue;\n }\n digitCount++;\n if (digitCount === digitsBeforeCursor) {\n return i + 1;\n }\n }\n }\n\n return formatted.length;\n}\n\nexport function formatPhoneDigits(\n inputValue: string,\n pattern: string,\n cursorPosition: number,\n): { formatted: string; nextCursor: number; literalPrefixDigits: string } | null {\n const { literalPrefixDigits } = getLiteralPrefixInfo(pattern);\n const allDigits = stripLiteralPrefix(extractDigits(inputValue), literalPrefixDigits);\n const maxDigits = countDigitPlaceholders(pattern);\n if (allDigits.length > maxDigits) return null;\n\n const digitsBeforeCursorInInput = stripLiteralPrefix(\n extractDigits(inputValue.substring(0, cursorPosition)),\n literalPrefixDigits,\n );\n const digitsBeforeCursor = digitsBeforeCursorInInput.length;\n const formatted = formatWithPattern(allDigits, pattern);\n const nextCursor = calculateCursorPosition(digitsBeforeCursor, formatted, literalPrefixDigits);\n return { formatted, nextCursor, literalPrefixDigits };\n}\n"],"mappings":";AAUA,SAAgB,EAAc,GAAuB;AACnD,QAAO,EAAM,QAAQ,OAAO,GAAG;;AAejC,SAAgB,EAAkB,GAAe,GAAyB;CACxE,IAAM,IAAS,EAAc,EAAM;AACnC,KAAI,EAAO,WAAW,EAAG,QAAO;CAEhC,IAAI,IAAa,GACb,IAAS,IACT,IAAU;AAEd,MAAK,IAAI,IAAI,GAAG,IAAI,EAAQ,QAAQ,IAClC,KAAI,EAAQ,OAAO,IACjB,KAAI,IAAa,EAAO,QAAQ;AAE9B,MAAI,CAAC,GAAS;AAEZ,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,CAAI,EAAQ,OAAO,QACjB,KAAU,EAAQ;AAGtB,OAAU;;AAIZ,EADA,KAAU,EAAO,IACjB;OAGA;MAEO,MAET,KAAU,EAAQ;AAItB,QAAO;;AAiBT,SAAgB,EAAkB,GAAkB,GAAkB,GAA2B;CAE/F,IAAM,IAAqB,EAAc,EAAS,UAAU,GAAG,EAAU,CAAC,CAAC,QAGvE,IAAa,GACb,IAAY;AAEhB,MAAK,IAAI,IAAI,GAAG,IAAI,EAAS,QAAQ,IACnC,KAAI,KAAK,KAAK,EAAS,GAAG,KACxB,KACI,MAAe,IAAoB;AACrC,MAAY,IAAI;AAChB;;AAUN,QAJI,IAAa,MACf,IAAY,EAAS,SAGhB;;AAUT,SAAgB,EAAuB,GAAyB;AAC9D,SAAQ,EAAQ,MAAM,KAAK,IAAI,EAAE,EAAE;;AAGrC,SAAgB,EAAqB,GAGnC;CACA,IAAM,IAAiB,EAAQ,QAAQ,IAAI,EACrC,IAAgB,IAAiB,IAAI,EAAQ,UAAU,GAAG,EAAe,GAAG;AAElF,QAAO;EAAE;EAAe,qBADI,EAAc,EAAc;EACX;;AAG/C,SAAgB,EAAmB,GAAmB,GAAqC;AAIzF,QAHI,EAAoB,SAAS,KAAK,EAAU,WAAW,EAAoB,GACtE,EAAU,UAAU,EAAoB,OAAO,GAEjD;;AAGT,SAAgB,EACd,GACA,GACA,GACQ;CACR,IAAI,IAAa,GACb,IAAsB;AAE1B,MAAK,IAAI,IAAI,GAAG,IAAI,EAAU,QAAQ,IACpC,KAAI,KAAK,KAAK,EAAU,GAAG,EAAE;AAC3B,MAAI,IAAsB,EAAoB,QAAQ;AACpD;AACA;;AAGF,MADA,KACI,MAAe,EACjB,QAAO,IAAI;;AAKjB,QAAO,EAAU;;AAGnB,SAAgB,EACd,GACA,GACA,GAC+E;CAC/E,IAAM,EAAE,2BAAwB,EAAqB,EAAQ,EACvD,IAAY,EAAmB,EAAc,EAAW,EAAE,EAAoB,EAC9E,IAAY,EAAuB,EAAQ;AACjD,KAAI,EAAU,SAAS,EAAW,QAAO;CAMzC,IAAM,IAJ4B,EAChC,EAAc,EAAW,UAAU,GAAG,EAAe,CAAC,EACtD,EACD,CACoD,QAC/C,IAAY,EAAkB,GAAW,EAAQ;AAEvD,QAAO;EAAE;EAAW,YADD,EAAwB,GAAoB,GAAW,EAAoB;EAC9D;EAAqB"}
@@ -2,5 +2,5 @@
2
2
  * Phone number utilities
3
3
  * Provides formatting, validation, and default prefixes for phone number inputs
4
4
  */
5
- export { extractDigits, formatWithPattern, getCursorPosition, countDigitPlaceholders, } from './formatters';
5
+ export { extractDigits, formatWithPattern, getCursorPosition, countDigitPlaceholders, getLiteralPrefixInfo, stripLiteralPrefix, calculateCursorPosition, formatPhoneDigits, } from './formatters';
6
6
  export { DEFAULT_PHONE_PREFIXES, type PhonePrefix } from './defaultPrefixes';
@@ -1,3 +1,3 @@
1
- import { countDigitPlaceholders as e, extractDigits as t, formatWithPattern as n, getCursorPosition as r } from "./formatters.js";
2
- import { DEFAULT_PHONE_PREFIXES as i } from "./defaultPrefixes.js";
3
- export { i as DEFAULT_PHONE_PREFIXES, e as countDigitPlaceholders, t as extractDigits, n as formatWithPattern, r as getCursorPosition };
1
+ import { calculateCursorPosition as e, countDigitPlaceholders as t, extractDigits as n, formatPhoneDigits as r, formatWithPattern as i, getCursorPosition as a, getLiteralPrefixInfo as o, stripLiteralPrefix as s } from "./formatters.js";
2
+ import { DEFAULT_PHONE_PREFIXES as c } from "./defaultPrefixes.js";
3
+ export { c as DEFAULT_PHONE_PREFIXES, e as calculateCursorPosition, t as countDigitPlaceholders, n as extractDigits, r as formatPhoneDigits, i as formatWithPattern, a as getCursorPosition, o as getLiteralPrefixInfo, s as stripLiteralPrefix };
@@ -0,0 +1 @@
1
+ export declare const useIsClient: () => boolean;
@@ -0,0 +1,12 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region lib/ui/hooks/useIsClient.ts
3
+ var n = () => {
4
+ let [n, r] = t(!1);
5
+ return e(() => {
6
+ r(!0);
7
+ }, []), n;
8
+ };
9
+ //#endregion
10
+ export { n as useIsClient };
11
+
12
+ //# sourceMappingURL=useIsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsClient.js","names":[],"sources":["../../../lib/ui/hooks/useIsClient.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const useIsClient = () => {\n const [isClient, setIsClient] = useState(false);\n\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n return isClient;\n};\n"],"mappings":";;AAEA,IAAa,UAAoB;CAC/B,IAAM,CAAC,GAAU,KAAe,EAAS,GAAM;AAM/C,QAJA,QAAgB;AACd,IAAY,GAAK;IAChB,EAAE,CAAC,EAEC"}
@@ -1,12 +1,11 @@
1
1
  export interface UseValueProps<Value = string, InitialValue = Value> {
2
- name: string;
3
2
  initialValue?: InitialValue;
4
3
  defaultValue?: Value | string;
5
4
  formatter?: (v: Value) => Value;
6
- onChange?: (name: string, value: Value) => void;
5
+ onChange?: (event: Event, value: Value) => void;
7
6
  }
8
- export declare function useValue<Value = string, InitialValue = Value>({ name, initialValue, onChange, defaultValue, formatter, }: UseValueProps<Value, InitialValue>): {
7
+ export declare function useValue<Value = string, InitialValue = Value>({ initialValue, onChange, defaultValue, formatter, }: UseValueProps<Value, InitialValue>): {
9
8
  value: Value;
10
- setValue: (newValue: Value) => void;
9
+ setValue: (newValue: Value, event?: Event) => void;
11
10
  resetValue: () => void;
12
11
  };
@@ -1,20 +1,20 @@
1
1
  import { useEffect as e, useState as t } from "react";
2
2
  //#region lib/ui/hooks/useValue.ts
3
- function n({ name: n, initialValue: r, onChange: i, defaultValue: a = "", formatter: o = (e) => e }) {
4
- let [s, c] = t(o(r || a));
3
+ function n({ initialValue: n, onChange: r, defaultValue: i = "", formatter: a = (e) => e }) {
4
+ let [o, s] = t(a(n || i));
5
5
  e(() => {
6
- r !== void 0 && c(o(r));
7
- }, [r]);
8
- function l(e) {
9
- e = o(e), c(e), i && i(n, e);
6
+ s(a(n ?? i));
7
+ }, [n]);
8
+ function c(e, t) {
9
+ e = a(e), s(e), r && r(t ?? new Event("change"), e);
10
10
  }
11
- function u() {
12
- c(a);
11
+ function l() {
12
+ s(i);
13
13
  }
14
14
  return {
15
- value: s,
16
- setValue: l,
17
- resetValue: u
15
+ value: o,
16
+ setValue: c,
17
+ resetValue: l
18
18
  };
19
19
  }
20
20
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"useValue.js","names":[],"sources":["../../../lib/ui/hooks/useValue.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport interface UseValueProps<Value = string, InitialValue = Value> {\n name: string;\n initialValue?: InitialValue;\n defaultValue?: Value | string;\n formatter?: (v: Value) => Value;\n onChange?: (name: string, value: Value) => void;\n}\n\nexport function useValue<Value = string, InitialValue = Value>({\n name,\n initialValue,\n onChange,\n defaultValue = '',\n formatter = (v: Value) => v as unknown as Value,\n}: UseValueProps<Value, InitialValue>) {\n const [value, setValue] = useState<Value>(formatter((initialValue || defaultValue) as Value));\n\n useEffect(() => {\n if (initialValue !== undefined) {\n setValue(formatter(initialValue as Value));\n }\n }, [initialValue]);\n\n function setNewValue(newValue: Value) {\n newValue = formatter(newValue);\n setValue(newValue);\n if (onChange) onChange(name, newValue);\n }\n\n function resetValue() {\n setValue(defaultValue as Value);\n }\n\n return {\n value,\n setValue: setNewValue,\n resetValue,\n };\n}\n"],"mappings":";;AAUA,SAAgB,EAA+C,EAC7D,SACA,iBACA,aACA,kBAAe,IACf,gBAAa,MAAa,KACW;CACrC,IAAM,CAAC,GAAO,KAAY,EAAgB,EAAW,KAAgB,EAAuB,CAAC;AAE7F,SAAgB;AACd,EAAI,MAAiB,KAAA,KACnB,EAAS,EAAU,EAAsB,CAAC;IAE3C,CAAC,EAAa,CAAC;CAElB,SAAS,EAAY,GAAiB;AAGpC,EAFA,IAAW,EAAU,EAAS,EAC9B,EAAS,EAAS,EACd,KAAU,EAAS,GAAM,EAAS;;CAGxC,SAAS,IAAa;AACpB,IAAS,EAAsB;;AAGjC,QAAO;EACL;EACA,UAAU;EACV;EACD"}
1
+ {"version":3,"file":"useValue.js","names":[],"sources":["../../../lib/ui/hooks/useValue.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport interface UseValueProps<Value = string, InitialValue = Value> {\n initialValue?: InitialValue;\n defaultValue?: Value | string;\n formatter?: (v: Value) => Value;\n onChange?: (event: Event, value: Value) => void;\n}\n\nexport function useValue<Value = string, InitialValue = Value>({\n initialValue,\n onChange,\n defaultValue = '',\n formatter = (v: Value) => v as unknown as Value,\n}: UseValueProps<Value, InitialValue>) {\n const [value, setValue] = useState<Value>(formatter((initialValue || defaultValue) as Value));\n\n useEffect(() => {\n // Use ?? operator to fallback to defaultValue when initialValue is undefined/null\n // This ensures the component resets properly when controlled value becomes undefined\n setValue(formatter((initialValue ?? defaultValue) as Value));\n }, [initialValue]);\n\n function setNewValue(newValue: Value, event?: Event) {\n newValue = formatter(newValue);\n setValue(newValue);\n if (onChange) onChange(event ?? new Event('change'), newValue);\n }\n\n function resetValue() {\n setValue(defaultValue as Value);\n }\n\n return {\n value,\n setValue: setNewValue,\n resetValue,\n };\n}\n"],"mappings":";;AASA,SAAgB,EAA+C,EAC7D,iBACA,aACA,kBAAe,IACf,gBAAa,MAAa,KACW;CACrC,IAAM,CAAC,GAAO,KAAY,EAAgB,EAAW,KAAgB,EAAuB,CAAC;AAE7F,SAAgB;AAGd,IAAS,EAAW,KAAgB,EAAuB,CAAC;IAC3D,CAAC,EAAa,CAAC;CAElB,SAAS,EAAY,GAAiB,GAAe;AAGnD,EAFA,IAAW,EAAU,EAAS,EAC9B,EAAS,EAAS,EACd,KAAU,EAAS,KAAS,IAAI,MAAM,SAAS,EAAE,EAAS;;CAGhE,SAAS,IAAa;AACpB,IAAS,EAAsB;;AAGjC,QAAO;EACL;EACA,UAAU;EACV;EACD"}
@@ -0,0 +1,15 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ export interface AirportInfo {
3
+ name: string;
4
+ terminal?: string;
5
+ }
6
+ export interface FlightSegmentCardProps extends ComponentPropsWithoutRef<'div'> {
7
+ flightNumber: string;
8
+ departureTime: string;
9
+ arrivalTime: string;
10
+ departureAirport: AirportInfo;
11
+ arrivalAirport: AirportInfo;
12
+ arrivalDate?: string;
13
+ plusDays?: number;
14
+ }
15
+ export declare function FlightSegmentCard({ flightNumber, departureTime, arrivalTime, departureAirport, arrivalAirport, arrivalDate, className, ...props }: FlightSegmentCardProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,73 @@
1
+ import { t as e } from "../../chunks/clsx.js";
2
+ import { FlightTimeline as t } from "./FlightTimeline.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { Icon as i } from "@clubmed/trident-icons";
5
+ //#region lib/ui/journey-card/FlightSegmentCard.tsx
6
+ function a({ flightNumber: a, departureTime: o, arrivalTime: s, departureAirport: c, arrivalAirport: l, arrivalDate: u, className: d, ...f }) {
7
+ return /* @__PURE__ */ r("div", {
8
+ "data-name": "FlightSegmentCard",
9
+ ...f,
10
+ className: e("flex h-fit w-full flex-col gap-12 rounded-32 bg-white p-20", d),
11
+ children: [/* @__PURE__ */ r("div", {
12
+ className: "flex h-24 w-full flex-row items-center gap-8",
13
+ children: [/* @__PURE__ */ n(i, {
14
+ name: "PlaneOutbound",
15
+ width: "24px",
16
+ className: "shrink-0 text-black"
17
+ }), /* @__PURE__ */ n("span", {
18
+ className: "font-sans text-b4",
19
+ children: a
20
+ })]
21
+ }), /* @__PURE__ */ r("div", {
22
+ className: "flex w-full flex-col gap-4",
23
+ children: [
24
+ /* @__PURE__ */ r("div", {
25
+ className: "flex w-full flex-row items-end justify-between",
26
+ children: [/* @__PURE__ */ n("div", {
27
+ className: "flex flex-1 flex-col justify-center",
28
+ children: /* @__PURE__ */ n("span", {
29
+ className: "font-sans text-b3 font-semibold",
30
+ children: o
31
+ })
32
+ }), /* @__PURE__ */ r("div", {
33
+ className: "flex flex-col items-end justify-center",
34
+ children: [u && /* @__PURE__ */ n("span", {
35
+ className: "font-sans text-b4",
36
+ children: u
37
+ }), /* @__PURE__ */ n("span", {
38
+ className: "font-sans text-b3 font-semibold",
39
+ children: s
40
+ })]
41
+ })]
42
+ }),
43
+ /* @__PURE__ */ n(t, {}),
44
+ /* @__PURE__ */ r("div", {
45
+ className: "flex w-full flex-row items-start justify-between",
46
+ children: [/* @__PURE__ */ r("div", {
47
+ className: "flex w-120 min-w-120 flex-col",
48
+ children: [/* @__PURE__ */ n("span", {
49
+ className: "font-sans text-b4 font-semibold",
50
+ children: c.name
51
+ }), c.terminal && /* @__PURE__ */ n("span", {
52
+ className: "font-sans text-b4",
53
+ children: c.terminal
54
+ })]
55
+ }), /* @__PURE__ */ r("div", {
56
+ className: "flex w-120 min-w-120 flex-col items-end",
57
+ children: [/* @__PURE__ */ n("span", {
58
+ className: "font-sans text-b4 font-semibold",
59
+ children: l.name
60
+ }), l.terminal && /* @__PURE__ */ n("span", {
61
+ className: "font-sans text-b4 text-right",
62
+ children: l.terminal
63
+ })]
64
+ })]
65
+ })
66
+ ]
67
+ })]
68
+ });
69
+ }
70
+ //#endregion
71
+ export { a as FlightSegmentCard };
72
+
73
+ //# sourceMappingURL=FlightSegmentCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlightSegmentCard.js","names":[],"sources":["../../../lib/ui/journey-card/FlightSegmentCard.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { Icon } from '@clubmed/trident-icons';\nimport { FlightTimeline } from './FlightTimeline';\n\nexport interface AirportInfo {\n name: string;\n terminal?: string;\n}\n\nexport interface FlightSegmentCardProps extends ComponentPropsWithoutRef<'div'> {\n flightNumber: string;\n departureTime: string;\n arrivalTime: string;\n departureAirport: AirportInfo;\n arrivalAirport: AirportInfo;\n arrivalDate?: string;\n plusDays?: number;\n}\n\nexport function FlightSegmentCard({\n flightNumber,\n departureTime,\n arrivalTime,\n departureAirport,\n arrivalAirport,\n arrivalDate,\n className,\n ...props\n}: FlightSegmentCardProps) {\n return (\n <div\n data-name=\"FlightSegmentCard\"\n {...props}\n className={clsx('flex h-fit w-full flex-col gap-12 rounded-32 bg-white p-20', className)}\n >\n <div className=\"flex h-24 w-full flex-row items-center gap-8\">\n <Icon name=\"PlaneOutbound\" width=\"24px\" className=\"shrink-0 text-black\" />\n <span className=\"font-sans text-b4\">{flightNumber}</span>\n </div>\n\n <div className=\"flex w-full flex-col gap-4\">\n <div className=\"flex w-full flex-row items-end justify-between\">\n <div className=\"flex flex-1 flex-col justify-center\">\n <span className=\"font-sans text-b3 font-semibold\">{departureTime}</span>\n </div>\n <div className=\"flex flex-col items-end justify-center\">\n {arrivalDate && <span className=\"font-sans text-b4\">{arrivalDate}</span>}\n <span className=\"font-sans text-b3 font-semibold\">{arrivalTime}</span>\n </div>\n </div>\n\n <FlightTimeline />\n\n <div className=\"flex w-full flex-row items-start justify-between\">\n <div className=\"flex w-120 min-w-120 flex-col\">\n <span className=\"font-sans text-b4 font-semibold\">{departureAirport.name}</span>\n {departureAirport.terminal && (\n <span className=\"font-sans text-b4\">{departureAirport.terminal}</span>\n )}\n </div>\n <div className=\"flex w-120 min-w-120 flex-col items-end\">\n <span className=\"font-sans text-b4 font-semibold\">{arrivalAirport.name}</span>\n {arrivalAirport.terminal && (\n <span className=\"font-sans text-b4 text-right\">{arrivalAirport.terminal}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAoBA,SAAgB,EAAkB,EAChC,iBACA,kBACA,gBACA,qBACA,mBACA,gBACA,cACA,GAAG,KACsB;AACzB,QACE,kBAAC,OAAD;EACE,aAAU;EACV,GAAI;EACJ,WAAW,EAAK,8DAA8D,EAAU;YAH1F,CAKE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IAAM,MAAK;IAAgB,OAAM;IAAO,WAAU;IAAwB,CAAA,EAC1E,kBAAC,QAAD;IAAM,WAAU;cAAqB;IAAoB,CAAA,CACrD;MAEN,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,QAAD;OAAM,WAAU;iBAAmC;OAAqB,CAAA;MACpE,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACG,KAAe,kBAAC,QAAD;OAAM,WAAU;iBAAqB;OAAmB,CAAA,EACxE,kBAAC,QAAD;OAAM,WAAU;iBAAmC;OAAmB,CAAA,CAClE;QACF;;IAEN,kBAAC,GAAD,EAAkB,CAAA;IAElB,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAmC,EAAiB;OAAY,CAAA,EAC/E,EAAiB,YAChB,kBAAC,QAAD;OAAM,WAAU;iBAAqB,EAAiB;OAAgB,CAAA,CAEpE;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAmC,EAAe;OAAY,CAAA,EAC7E,EAAe,YACd,kBAAC,QAAD;OAAM,WAAU;iBAAgC,EAAe;OAAgB,CAAA,CAE7E;QACF;;IACF;KACF"}
@@ -0,0 +1,5 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ export interface FlightTimelineProps extends ComponentPropsWithoutRef<'div'> {
3
+ nbStopovers?: number;
4
+ }
5
+ export declare function FlightTimeline({ nbStopovers, className, ...props }: FlightTimelineProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { t as e } from "../../chunks/clsx.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region lib/ui/journey-card/FlightTimeline.tsx
4
+ function r({ nbStopovers: r = 0, className: i, ...a }) {
5
+ return /* @__PURE__ */ n("div", {
6
+ "data-name": "FlightTimeline",
7
+ ...a,
8
+ className: e("relative flex w-full items-center h-12", i),
9
+ children: [
10
+ /* @__PURE__ */ t("span", { className: "absolute left-0 h-12 w-12 rounded-full border-2 border-black bg-white" }),
11
+ /* @__PURE__ */ t("span", { className: "h-2 flex-1 rounded-pill bg-black" }),
12
+ r > 0 && /* @__PURE__ */ t("div", {
13
+ className: "flex shrink-0 flex-row items-center gap-2",
14
+ children: Array.from({ length: r }).map((e, r) => /* @__PURE__ */ n("span", {
15
+ className: "flex flex-row items-center gap-2",
16
+ children: [r !== 0 && /* @__PURE__ */ t("span", { className: "h-2 w-8 rounded-pill bg-black" }), /* @__PURE__ */ t("span", { className: "h-12 w-12 rounded-full border-2 border-white bg-black" })]
17
+ }, r))
18
+ }),
19
+ /* @__PURE__ */ t("span", { className: "h-2 flex-1 rounded-pill bg-black" }),
20
+ /* @__PURE__ */ t("span", { className: "absolute right-0 h-12 w-12 rounded-full border-2 border-black bg-white" })
21
+ ]
22
+ });
23
+ }
24
+ //#endregion
25
+ export { r as FlightTimeline };
26
+
27
+ //# sourceMappingURL=FlightTimeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlightTimeline.js","names":[],"sources":["../../../lib/ui/journey-card/FlightTimeline.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nexport interface FlightTimelineProps extends ComponentPropsWithoutRef<'div'> {\n nbStopovers?: number;\n}\n\nexport function FlightTimeline({ nbStopovers = 0, className, ...props }: FlightTimelineProps) {\n return (\n <div\n data-name=\"FlightTimeline\"\n {...props}\n className={clsx('relative flex w-full items-center h-12', className)}\n >\n <span className=\"absolute left-0 h-12 w-12 rounded-full border-2 border-black bg-white\" />\n <span className=\"h-2 flex-1 rounded-pill bg-black\" />\n {nbStopovers > 0 && (\n <div className=\"flex shrink-0 flex-row items-center gap-2\">\n {Array.from({ length: nbStopovers }).map((_, i) => (\n <span key={i} className=\"flex flex-row items-center gap-2\">\n {i !== 0 && <span className=\"h-2 w-8 rounded-pill bg-black\" />}\n <span className=\"h-12 w-12 rounded-full border-2 border-white bg-black\" />\n </span>\n ))}\n </div>\n )}\n <span className=\"h-2 flex-1 rounded-pill bg-black\" />\n <span className=\"absolute right-0 h-12 w-12 rounded-full border-2 border-black bg-white\" />\n </div>\n );\n}\n"],"mappings":";;;AAOA,SAAgB,EAAe,EAAE,iBAAc,GAAG,cAAW,GAAG,KAA8B;AAC5F,QACE,kBAAC,OAAD;EACE,aAAU;EACV,GAAI;EACJ,WAAW,EAAK,0CAA0C,EAAU;YAHtE;GAKE,kBAAC,QAAD,EAAM,WAAU,yEAA0E,CAAA;GAC1F,kBAAC,QAAD,EAAM,WAAU,oCAAqC,CAAA;GACpD,IAAc,KACb,kBAAC,OAAD;IAAK,WAAU;cACZ,MAAM,KAAK,EAAE,QAAQ,GAAa,CAAC,CAAC,KAAK,GAAG,MAC3C,kBAAC,QAAD;KAAc,WAAU;eAAxB,CACG,MAAM,KAAK,kBAAC,QAAD,EAAM,WAAU,iCAAkC,CAAA,EAC9D,kBAAC,QAAD,EAAM,WAAU,yDAA0D,CAAA,CACrE;OAHI,EAGJ,CACP;IACE,CAAA;GAER,kBAAC,QAAD,EAAM,WAAU,oCAAqC,CAAA;GACrD,kBAAC,QAAD,EAAM,WAAU,0EAA2E,CAAA;GACvF"}
@@ -0,0 +1,9 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { AirportInfo, FlightSegmentCardProps } from './FlightSegmentCard';
3
+ export type { AirportInfo };
4
+ export interface ItineraryDetailsProps extends ComponentPropsWithoutRef<'div'> {
5
+ segments: FlightSegmentCardProps[];
6
+ connectionTime?: string;
7
+ flexibleOption?: string;
8
+ }
9
+ export declare function ItineraryDetails({ segments, connectionTime, flexibleOption, className, ...props }: ItineraryDetailsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,40 @@
1
+ import { t as e } from "../../chunks/clsx.js";
2
+ import { FlightSegmentCard as t } from "./FlightSegmentCard.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { Icon as i } from "@clubmed/trident-icons";
5
+ //#region lib/ui/journey-card/ItineraryDetails.tsx
6
+ function a({ segments: a, connectionTime: o, flexibleOption: s, className: c, ...l }) {
7
+ return /* @__PURE__ */ r("div", {
8
+ "data-name": "ItineraryDetails",
9
+ ...l,
10
+ className: e("flex h-fit w-full flex-col gap-8 rounded-44 bg-lightSand p-16", c),
11
+ children: [a.map((e, s) => /* @__PURE__ */ r("div", {
12
+ className: "flex flex-col gap-8",
13
+ children: [/* @__PURE__ */ n(t, { ...e }), o && s < a.length - 1 && /* @__PURE__ */ r("div", {
14
+ className: "flex h-fit w-full flex-row items-center gap-2 pl-20",
15
+ children: [/* @__PURE__ */ n(i, {
16
+ name: "ClockDefault",
17
+ width: "24px",
18
+ className: "shrink-0 text-black"
19
+ }), /* @__PURE__ */ n("span", {
20
+ className: "font-sans text-b4",
21
+ children: o
22
+ })]
23
+ })]
24
+ }, s)), s && /* @__PURE__ */ r("div", {
25
+ className: "flex w-full flex-row items-start gap-2",
26
+ children: [/* @__PURE__ */ n(i, {
27
+ name: "LightBulb",
28
+ width: "24px",
29
+ className: "mt-2 shrink-0 text-black"
30
+ }), /* @__PURE__ */ n("div", {
31
+ className: "whitespace-pre-wrap font-sans text-b4",
32
+ children: s
33
+ })]
34
+ })]
35
+ });
36
+ }
37
+ //#endregion
38
+ export { a as ItineraryDetails };
39
+
40
+ //# sourceMappingURL=ItineraryDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItineraryDetails.js","names":[],"sources":["../../../lib/ui/journey-card/ItineraryDetails.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { Icon } from '@clubmed/trident-icons';\nimport { FlightSegmentCard } from './FlightSegmentCard';\nimport type { AirportInfo, FlightSegmentCardProps } from './FlightSegmentCard';\n\nexport type { AirportInfo };\n\nexport interface ItineraryDetailsProps extends ComponentPropsWithoutRef<'div'> {\n segments: FlightSegmentCardProps[];\n connectionTime?: string;\n flexibleOption?: string;\n}\n\nexport function ItineraryDetails({\n segments,\n connectionTime,\n flexibleOption,\n className,\n ...props\n}: ItineraryDetailsProps) {\n return (\n <div\n data-name=\"ItineraryDetails\"\n {...props}\n className={clsx('flex h-fit w-full flex-col gap-8 rounded-44 bg-lightSand p-16', className)}\n >\n {segments.map((segment, index) => (\n <div key={index} className=\"flex flex-col gap-8\">\n <FlightSegmentCard {...segment} />\n\n {connectionTime && index < segments.length - 1 && (\n <div className=\"flex h-fit w-full flex-row items-center gap-2 pl-20\">\n <Icon name=\"ClockDefault\" width=\"24px\" className=\"shrink-0 text-black\" />\n <span className=\"font-sans text-b4\">{connectionTime}</span>\n </div>\n )}\n </div>\n ))}\n\n {flexibleOption && (\n <div className=\"flex w-full flex-row items-start gap-2\">\n <Icon name=\"LightBulb\" width=\"24px\" className=\"mt-2 shrink-0 text-black\" />\n <div className=\"whitespace-pre-wrap font-sans text-b4\">{flexibleOption}</div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;AAcA,SAAgB,EAAiB,EAC/B,aACA,mBACA,mBACA,cACA,GAAG,KACqB;AACxB,QACE,kBAAC,OAAD;EACE,aAAU;EACV,GAAI;EACJ,WAAW,EAAK,iEAAiE,EAAU;YAH7F,CAKG,EAAS,KAAK,GAAS,MACtB,kBAAC,OAAD;GAAiB,WAAU;aAA3B,CACE,kBAAC,GAAD,EAAmB,GAAI,GAAW,CAAA,EAEjC,KAAkB,IAAQ,EAAS,SAAS,KAC3C,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAM,MAAK;KAAe,OAAM;KAAO,WAAU;KAAwB,CAAA,EACzE,kBAAC,QAAD;KAAM,WAAU;eAAqB;KAAsB,CAAA,CACvD;MAEJ;KATI,EASJ,CACN,EAED,KACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IAAM,MAAK;IAAY,OAAM;IAAO,WAAU;IAA6B,CAAA,EAC3E,kBAAC,OAAD;IAAK,WAAU;cAAyC;IAAqB,CAAA,CACzE;KAEJ"}
@@ -0,0 +1,17 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { JourneyDetailsProps } from './JourneyDetails';
3
+ export type { JourneyDetailsProps };
4
+ export type { AirportInfo, ItineraryDetailsProps } from './ItineraryDetails';
5
+ export type { FlightSegmentCardProps } from './FlightSegmentCard';
6
+ export interface JourneyCardProps extends ComponentPropsWithoutRef<'div'> {
7
+ /** Outbound or inbound flight leg */
8
+ flight1Journey: JourneyDetailsProps;
9
+ /** Return flight leg */
10
+ flight2Journey: JourneyDetailsProps;
11
+ /**
12
+ * When true, both legs are displayed side-by-side with a vertical divider
13
+ * instead of stacked with a horizontal divider.
14
+ */
15
+ compact?: boolean;
16
+ }
17
+ export declare function JourneyCard({ flight1Journey, flight2Journey, compact, className, ...props }: JourneyCardProps): import("react/jsx-runtime").JSX.Element;