@inorain_development/hotel-smarters-chat-ui 1.2.2 → 1.3.1

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 (339) hide show
  1. package/lib/commonjs/features/chat/components/common/calendar-icon.js +33 -0
  2. package/lib/commonjs/features/chat/components/common/calendar-icon.js.map +1 -0
  3. package/lib/commonjs/features/chat/components/common/calendar-icon.native.js +33 -0
  4. package/lib/commonjs/features/chat/components/common/calendar-icon.native.js.map +1 -0
  5. package/lib/commonjs/features/chat/components/common/cart-icon.js +36 -0
  6. package/lib/commonjs/features/chat/components/common/cart-icon.js.map +1 -0
  7. package/lib/commonjs/features/chat/components/common/chevron-icon.js +26 -0
  8. package/lib/commonjs/features/chat/components/common/chevron-icon.js.map +1 -0
  9. package/lib/commonjs/features/chat/components/common/chevron-icon.native.js +26 -0
  10. package/lib/commonjs/features/chat/components/common/chevron-icon.native.js.map +1 -0
  11. package/lib/commonjs/features/chat/components/common/plane-icon.js +23 -0
  12. package/lib/commonjs/features/chat/components/common/plane-icon.js.map +1 -0
  13. package/lib/commonjs/features/chat/components/common/plane-icon.native.js +23 -0
  14. package/lib/commonjs/features/chat/components/common/plane-icon.native.js.map +1 -0
  15. package/lib/commonjs/features/chat/components/flight/flight-card.js +130 -0
  16. package/lib/commonjs/features/chat/components/flight/flight-card.js.map +1 -0
  17. package/lib/commonjs/features/chat/components/flight/flight-card.native.js +132 -0
  18. package/lib/commonjs/features/chat/components/flight/flight-card.native.js.map +1 -0
  19. package/lib/commonjs/features/chat/components/flight/flight.js +149 -0
  20. package/lib/commonjs/features/chat/components/flight/flight.js.map +1 -0
  21. package/lib/commonjs/features/chat/components/flight/flight.model.js +6 -0
  22. package/lib/commonjs/features/chat/components/flight/flight.model.js.map +1 -0
  23. package/lib/commonjs/features/chat/components/flight/flight.native.js +151 -0
  24. package/lib/commonjs/features/chat/components/flight/flight.native.js.map +1 -0
  25. package/lib/commonjs/features/chat/components/flight/index.js +13 -0
  26. package/lib/commonjs/features/chat/components/flight/index.js.map +1 -0
  27. package/lib/commonjs/features/chat/components/flight-board/flight-board.js +154 -0
  28. package/lib/commonjs/features/chat/components/flight-board/flight-board.js.map +1 -0
  29. package/lib/commonjs/features/chat/components/flight-board/flight-board.model.js +6 -0
  30. package/lib/commonjs/features/chat/components/flight-board/flight-board.model.js.map +1 -0
  31. package/lib/commonjs/features/chat/components/flight-board/flight-board.native.js +165 -0
  32. package/lib/commonjs/features/chat/components/flight-board/flight-board.native.js.map +1 -0
  33. package/lib/commonjs/features/chat/components/flight-board/index.js +13 -0
  34. package/lib/commonjs/features/chat/components/flight-board/index.js.map +1 -0
  35. package/lib/commonjs/features/chat/components/info/info.js +41 -14
  36. package/lib/commonjs/features/chat/components/info/info.js.map +1 -1
  37. package/lib/commonjs/features/chat/components/info/info.native.js +45 -14
  38. package/lib/commonjs/features/chat/components/info/info.native.js.map +1 -1
  39. package/lib/commonjs/features/chat/components/order/index.js +20 -0
  40. package/lib/commonjs/features/chat/components/order/index.js.map +1 -0
  41. package/lib/commonjs/features/chat/components/order/order.js +168 -0
  42. package/lib/commonjs/features/chat/components/order/order.js.map +1 -0
  43. package/lib/commonjs/features/chat/components/order/order.model.js +15 -0
  44. package/lib/commonjs/features/chat/components/order/order.model.js.map +1 -0
  45. package/lib/commonjs/features/chat/components/order/order.native.js +186 -0
  46. package/lib/commonjs/features/chat/components/order/order.native.js.map +1 -0
  47. package/lib/commonjs/features/chat/components/reservation/index.js +20 -0
  48. package/lib/commonjs/features/chat/components/reservation/index.js.map +1 -0
  49. package/lib/commonjs/features/chat/components/reservation/reservation.js +165 -0
  50. package/lib/commonjs/features/chat/components/reservation/reservation.js.map +1 -0
  51. package/lib/commonjs/features/chat/components/reservation/reservation.model.js +13 -0
  52. package/lib/commonjs/features/chat/components/reservation/reservation.model.js.map +1 -0
  53. package/lib/commonjs/features/chat/components/reservation/reservation.native.js +180 -0
  54. package/lib/commonjs/features/chat/components/reservation/reservation.native.js.map +1 -0
  55. package/lib/commonjs/features/chat/model/chat.model.js +17 -1
  56. package/lib/commonjs/features/chat/model/chat.model.js.map +1 -1
  57. package/lib/commonjs/features/chat/renderer/renderer.js +26 -0
  58. package/lib/commonjs/features/chat/renderer/renderer.js.map +1 -1
  59. package/lib/commonjs/features/chat/renderer/renderer.native.js +26 -0
  60. package/lib/commonjs/features/chat/renderer/renderer.native.js.map +1 -1
  61. package/lib/commonjs/native.js +48 -0
  62. package/lib/commonjs/native.js.map +1 -1
  63. package/lib/commonjs/utils/flight.utils.js +86 -0
  64. package/lib/commonjs/utils/flight.utils.js.map +1 -0
  65. package/lib/commonjs/utils/order.utils.js +24 -0
  66. package/lib/commonjs/utils/order.utils.js.map +1 -0
  67. package/lib/commonjs/utils/reservation.utils.js +22 -0
  68. package/lib/commonjs/utils/reservation.utils.js.map +1 -0
  69. package/lib/commonjs/utils/status-badge.utils.js +75 -0
  70. package/lib/commonjs/utils/status-badge.utils.js.map +1 -0
  71. package/lib/commonjs/utils/theme.utils.js +8 -2
  72. package/lib/commonjs/utils/theme.utils.js.map +1 -1
  73. package/lib/commonjs/web.js +48 -0
  74. package/lib/commonjs/web.js.map +1 -1
  75. package/lib/module/features/chat/components/common/calendar-icon.js +29 -0
  76. package/lib/module/features/chat/components/common/calendar-icon.js.map +1 -0
  77. package/lib/module/features/chat/components/common/calendar-icon.native.js +29 -0
  78. package/lib/module/features/chat/components/common/calendar-icon.native.js.map +1 -0
  79. package/lib/module/features/chat/components/common/cart-icon.js +32 -0
  80. package/lib/module/features/chat/components/common/cart-icon.js.map +1 -0
  81. package/lib/module/features/chat/components/common/chevron-icon.js +22 -0
  82. package/lib/module/features/chat/components/common/chevron-icon.js.map +1 -0
  83. package/lib/module/features/chat/components/common/chevron-icon.native.js +22 -0
  84. package/lib/module/features/chat/components/common/chevron-icon.native.js.map +1 -0
  85. package/lib/module/features/chat/components/common/plane-icon.js +19 -0
  86. package/lib/module/features/chat/components/common/plane-icon.js.map +1 -0
  87. package/lib/module/features/chat/components/common/plane-icon.native.js +19 -0
  88. package/lib/module/features/chat/components/common/plane-icon.native.js.map +1 -0
  89. package/lib/module/features/chat/components/flight/flight-card.js +126 -0
  90. package/lib/module/features/chat/components/flight/flight-card.js.map +1 -0
  91. package/lib/module/features/chat/components/flight/flight-card.native.js +128 -0
  92. package/lib/module/features/chat/components/flight/flight-card.native.js.map +1 -0
  93. package/lib/module/features/chat/components/flight/flight.js +145 -0
  94. package/lib/module/features/chat/components/flight/flight.js.map +1 -0
  95. package/lib/module/features/chat/components/flight/flight.model.js +4 -0
  96. package/lib/module/features/chat/components/flight/flight.model.js.map +1 -0
  97. package/lib/module/features/chat/components/flight/flight.native.js +147 -0
  98. package/lib/module/features/chat/components/flight/flight.native.js.map +1 -0
  99. package/lib/module/features/chat/components/flight/index.js +4 -0
  100. package/lib/module/features/chat/components/flight/index.js.map +1 -0
  101. package/lib/module/features/chat/components/flight-board/flight-board.js +150 -0
  102. package/lib/module/features/chat/components/flight-board/flight-board.js.map +1 -0
  103. package/lib/module/features/chat/components/flight-board/flight-board.model.js +4 -0
  104. package/lib/module/features/chat/components/flight-board/flight-board.model.js.map +1 -0
  105. package/lib/module/features/chat/components/flight-board/flight-board.native.js +161 -0
  106. package/lib/module/features/chat/components/flight-board/flight-board.native.js.map +1 -0
  107. package/lib/module/features/chat/components/flight-board/index.js +4 -0
  108. package/lib/module/features/chat/components/flight-board/index.js.map +1 -0
  109. package/lib/module/features/chat/components/info/info.js +41 -14
  110. package/lib/module/features/chat/components/info/info.js.map +1 -1
  111. package/lib/module/features/chat/components/info/info.native.js +46 -15
  112. package/lib/module/features/chat/components/info/info.native.js.map +1 -1
  113. package/lib/module/features/chat/components/order/index.js +5 -0
  114. package/lib/module/features/chat/components/order/index.js.map +1 -0
  115. package/lib/module/features/chat/components/order/order.js +164 -0
  116. package/lib/module/features/chat/components/order/order.js.map +1 -0
  117. package/lib/module/features/chat/components/order/order.model.js +11 -0
  118. package/lib/module/features/chat/components/order/order.model.js.map +1 -0
  119. package/lib/module/features/chat/components/order/order.native.js +182 -0
  120. package/lib/module/features/chat/components/order/order.native.js.map +1 -0
  121. package/lib/module/features/chat/components/reservation/index.js +5 -0
  122. package/lib/module/features/chat/components/reservation/index.js.map +1 -0
  123. package/lib/module/features/chat/components/reservation/reservation.js +161 -0
  124. package/lib/module/features/chat/components/reservation/reservation.js.map +1 -0
  125. package/lib/module/features/chat/components/reservation/reservation.model.js +9 -0
  126. package/lib/module/features/chat/components/reservation/reservation.model.js.map +1 -0
  127. package/lib/module/features/chat/components/reservation/reservation.native.js +176 -0
  128. package/lib/module/features/chat/components/reservation/reservation.native.js.map +1 -0
  129. package/lib/module/features/chat/model/chat.model.js +16 -0
  130. package/lib/module/features/chat/model/chat.model.js.map +1 -1
  131. package/lib/module/features/chat/renderer/renderer.js +26 -0
  132. package/lib/module/features/chat/renderer/renderer.js.map +1 -1
  133. package/lib/module/features/chat/renderer/renderer.native.js +26 -0
  134. package/lib/module/features/chat/renderer/renderer.native.js.map +1 -1
  135. package/lib/module/native.js +7 -1
  136. package/lib/module/native.js.map +1 -1
  137. package/lib/module/utils/flight.utils.js +82 -0
  138. package/lib/module/utils/flight.utils.js.map +1 -0
  139. package/lib/module/utils/order.utils.js +20 -0
  140. package/lib/module/utils/order.utils.js.map +1 -0
  141. package/lib/module/utils/reservation.utils.js +18 -0
  142. package/lib/module/utils/reservation.utils.js.map +1 -0
  143. package/lib/module/utils/status-badge.utils.js +70 -0
  144. package/lib/module/utils/status-badge.utils.js.map +1 -0
  145. package/lib/module/utils/theme.utils.js +8 -2
  146. package/lib/module/utils/theme.utils.js.map +1 -1
  147. package/lib/module/web.js +7 -1
  148. package/lib/module/web.js.map +1 -1
  149. package/lib/typescript/commonjs/features/chat/components/common/calendar-icon.d.ts +6 -0
  150. package/lib/typescript/commonjs/features/chat/components/common/calendar-icon.d.ts.map +1 -0
  151. package/lib/typescript/commonjs/features/chat/components/common/calendar-icon.native.d.ts +6 -0
  152. package/lib/typescript/commonjs/features/chat/components/common/calendar-icon.native.d.ts.map +1 -0
  153. package/lib/typescript/commonjs/features/chat/components/common/cart-icon.d.ts +6 -0
  154. package/lib/typescript/commonjs/features/chat/components/common/cart-icon.d.ts.map +1 -0
  155. package/lib/typescript/commonjs/features/chat/components/common/chevron-icon.d.ts +6 -0
  156. package/lib/typescript/commonjs/features/chat/components/common/chevron-icon.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/features/chat/components/common/chevron-icon.native.d.ts +6 -0
  158. package/lib/typescript/commonjs/features/chat/components/common/chevron-icon.native.d.ts.map +1 -0
  159. package/lib/typescript/commonjs/features/chat/components/common/plane-icon.d.ts +6 -0
  160. package/lib/typescript/commonjs/features/chat/components/common/plane-icon.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/features/chat/components/common/plane-icon.native.d.ts +6 -0
  162. package/lib/typescript/commonjs/features/chat/components/common/plane-icon.native.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/features/chat/components/flight/flight-card.d.ts +12 -0
  164. package/lib/typescript/commonjs/features/chat/components/flight/flight-card.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/features/chat/components/flight/flight-card.native.d.ts +12 -0
  166. package/lib/typescript/commonjs/features/chat/components/flight/flight-card.native.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/features/chat/components/flight/flight.d.ts +4 -0
  168. package/lib/typescript/commonjs/features/chat/components/flight/flight.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/features/chat/components/flight/flight.model.d.ts +19 -0
  170. package/lib/typescript/commonjs/features/chat/components/flight/flight.model.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/features/chat/components/flight/flight.native.d.ts +4 -0
  172. package/lib/typescript/commonjs/features/chat/components/flight/flight.native.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/features/chat/components/flight/index.d.ts +3 -0
  174. package/lib/typescript/commonjs/features/chat/components/flight/index.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/features/chat/components/flight-board/flight-board.d.ts +4 -0
  176. package/lib/typescript/commonjs/features/chat/components/flight-board/flight-board.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/features/chat/components/flight-board/flight-board.model.d.ts +22 -0
  178. package/lib/typescript/commonjs/features/chat/components/flight-board/flight-board.model.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/features/chat/components/flight-board/flight-board.native.d.ts +4 -0
  180. package/lib/typescript/commonjs/features/chat/components/flight-board/flight-board.native.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/features/chat/components/flight-board/index.d.ts +3 -0
  182. package/lib/typescript/commonjs/features/chat/components/flight-board/index.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/features/chat/components/info/info.d.ts +1 -1
  184. package/lib/typescript/commonjs/features/chat/components/info/info.d.ts.map +1 -1
  185. package/lib/typescript/commonjs/features/chat/components/info/info.model.d.ts +3 -0
  186. package/lib/typescript/commonjs/features/chat/components/info/info.model.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/features/chat/components/info/info.native.d.ts +1 -1
  188. package/lib/typescript/commonjs/features/chat/components/info/info.native.d.ts.map +1 -1
  189. package/lib/typescript/commonjs/features/chat/components/order/index.d.ts +4 -0
  190. package/lib/typescript/commonjs/features/chat/components/order/index.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/features/chat/components/order/order.d.ts +4 -0
  192. package/lib/typescript/commonjs/features/chat/components/order/order.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/features/chat/components/order/order.model.d.ts +30 -0
  194. package/lib/typescript/commonjs/features/chat/components/order/order.model.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/features/chat/components/order/order.native.d.ts +4 -0
  196. package/lib/typescript/commonjs/features/chat/components/order/order.native.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/features/chat/components/reservation/index.d.ts +4 -0
  198. package/lib/typescript/commonjs/features/chat/components/reservation/index.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/features/chat/components/reservation/reservation.d.ts +4 -0
  200. package/lib/typescript/commonjs/features/chat/components/reservation/reservation.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/features/chat/components/reservation/reservation.model.d.ts +28 -0
  202. package/lib/typescript/commonjs/features/chat/components/reservation/reservation.model.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/features/chat/components/reservation/reservation.native.d.ts +4 -0
  204. package/lib/typescript/commonjs/features/chat/components/reservation/reservation.native.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/features/chat/model/chat.model.d.ts +17 -2
  206. package/lib/typescript/commonjs/features/chat/model/chat.model.d.ts.map +1 -1
  207. package/lib/typescript/commonjs/features/chat/renderer/renderer.d.ts +5 -1
  208. package/lib/typescript/commonjs/features/chat/renderer/renderer.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/features/chat/renderer/renderer.native.d.ts +5 -1
  210. package/lib/typescript/commonjs/features/chat/renderer/renderer.native.d.ts.map +1 -1
  211. package/lib/typescript/commonjs/native.d.ts +11 -1
  212. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/utils/flight.utils.d.ts +10 -0
  214. package/lib/typescript/commonjs/utils/flight.utils.d.ts.map +1 -0
  215. package/lib/typescript/commonjs/utils/order.utils.d.ts +7 -0
  216. package/lib/typescript/commonjs/utils/order.utils.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/utils/reservation.utils.d.ts +7 -0
  218. package/lib/typescript/commonjs/utils/reservation.utils.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/utils/status-badge.utils.d.ts +15 -0
  220. package/lib/typescript/commonjs/utils/status-badge.utils.d.ts.map +1 -0
  221. package/lib/typescript/commonjs/utils/theme.utils.d.ts +3 -0
  222. package/lib/typescript/commonjs/utils/theme.utils.d.ts.map +1 -1
  223. package/lib/typescript/commonjs/web.d.ts +11 -1
  224. package/lib/typescript/commonjs/web.d.ts.map +1 -1
  225. package/lib/typescript/module/features/chat/components/common/calendar-icon.d.ts +6 -0
  226. package/lib/typescript/module/features/chat/components/common/calendar-icon.d.ts.map +1 -0
  227. package/lib/typescript/module/features/chat/components/common/calendar-icon.native.d.ts +6 -0
  228. package/lib/typescript/module/features/chat/components/common/calendar-icon.native.d.ts.map +1 -0
  229. package/lib/typescript/module/features/chat/components/common/cart-icon.d.ts +6 -0
  230. package/lib/typescript/module/features/chat/components/common/cart-icon.d.ts.map +1 -0
  231. package/lib/typescript/module/features/chat/components/common/chevron-icon.d.ts +6 -0
  232. package/lib/typescript/module/features/chat/components/common/chevron-icon.d.ts.map +1 -0
  233. package/lib/typescript/module/features/chat/components/common/chevron-icon.native.d.ts +6 -0
  234. package/lib/typescript/module/features/chat/components/common/chevron-icon.native.d.ts.map +1 -0
  235. package/lib/typescript/module/features/chat/components/common/plane-icon.d.ts +6 -0
  236. package/lib/typescript/module/features/chat/components/common/plane-icon.d.ts.map +1 -0
  237. package/lib/typescript/module/features/chat/components/common/plane-icon.native.d.ts +6 -0
  238. package/lib/typescript/module/features/chat/components/common/plane-icon.native.d.ts.map +1 -0
  239. package/lib/typescript/module/features/chat/components/flight/flight-card.d.ts +12 -0
  240. package/lib/typescript/module/features/chat/components/flight/flight-card.d.ts.map +1 -0
  241. package/lib/typescript/module/features/chat/components/flight/flight-card.native.d.ts +12 -0
  242. package/lib/typescript/module/features/chat/components/flight/flight-card.native.d.ts.map +1 -0
  243. package/lib/typescript/module/features/chat/components/flight/flight.d.ts +4 -0
  244. package/lib/typescript/module/features/chat/components/flight/flight.d.ts.map +1 -0
  245. package/lib/typescript/module/features/chat/components/flight/flight.model.d.ts +19 -0
  246. package/lib/typescript/module/features/chat/components/flight/flight.model.d.ts.map +1 -0
  247. package/lib/typescript/module/features/chat/components/flight/flight.native.d.ts +4 -0
  248. package/lib/typescript/module/features/chat/components/flight/flight.native.d.ts.map +1 -0
  249. package/lib/typescript/module/features/chat/components/flight/index.d.ts +3 -0
  250. package/lib/typescript/module/features/chat/components/flight/index.d.ts.map +1 -0
  251. package/lib/typescript/module/features/chat/components/flight-board/flight-board.d.ts +4 -0
  252. package/lib/typescript/module/features/chat/components/flight-board/flight-board.d.ts.map +1 -0
  253. package/lib/typescript/module/features/chat/components/flight-board/flight-board.model.d.ts +22 -0
  254. package/lib/typescript/module/features/chat/components/flight-board/flight-board.model.d.ts.map +1 -0
  255. package/lib/typescript/module/features/chat/components/flight-board/flight-board.native.d.ts +4 -0
  256. package/lib/typescript/module/features/chat/components/flight-board/flight-board.native.d.ts.map +1 -0
  257. package/lib/typescript/module/features/chat/components/flight-board/index.d.ts +3 -0
  258. package/lib/typescript/module/features/chat/components/flight-board/index.d.ts.map +1 -0
  259. package/lib/typescript/module/features/chat/components/info/info.d.ts +1 -1
  260. package/lib/typescript/module/features/chat/components/info/info.d.ts.map +1 -1
  261. package/lib/typescript/module/features/chat/components/info/info.model.d.ts +3 -0
  262. package/lib/typescript/module/features/chat/components/info/info.model.d.ts.map +1 -1
  263. package/lib/typescript/module/features/chat/components/info/info.native.d.ts +1 -1
  264. package/lib/typescript/module/features/chat/components/info/info.native.d.ts.map +1 -1
  265. package/lib/typescript/module/features/chat/components/order/index.d.ts +4 -0
  266. package/lib/typescript/module/features/chat/components/order/index.d.ts.map +1 -0
  267. package/lib/typescript/module/features/chat/components/order/order.d.ts +4 -0
  268. package/lib/typescript/module/features/chat/components/order/order.d.ts.map +1 -0
  269. package/lib/typescript/module/features/chat/components/order/order.model.d.ts +30 -0
  270. package/lib/typescript/module/features/chat/components/order/order.model.d.ts.map +1 -0
  271. package/lib/typescript/module/features/chat/components/order/order.native.d.ts +4 -0
  272. package/lib/typescript/module/features/chat/components/order/order.native.d.ts.map +1 -0
  273. package/lib/typescript/module/features/chat/components/reservation/index.d.ts +4 -0
  274. package/lib/typescript/module/features/chat/components/reservation/index.d.ts.map +1 -0
  275. package/lib/typescript/module/features/chat/components/reservation/reservation.d.ts +4 -0
  276. package/lib/typescript/module/features/chat/components/reservation/reservation.d.ts.map +1 -0
  277. package/lib/typescript/module/features/chat/components/reservation/reservation.model.d.ts +28 -0
  278. package/lib/typescript/module/features/chat/components/reservation/reservation.model.d.ts.map +1 -0
  279. package/lib/typescript/module/features/chat/components/reservation/reservation.native.d.ts +4 -0
  280. package/lib/typescript/module/features/chat/components/reservation/reservation.native.d.ts.map +1 -0
  281. package/lib/typescript/module/features/chat/model/chat.model.d.ts +17 -2
  282. package/lib/typescript/module/features/chat/model/chat.model.d.ts.map +1 -1
  283. package/lib/typescript/module/features/chat/renderer/renderer.d.ts +5 -1
  284. package/lib/typescript/module/features/chat/renderer/renderer.d.ts.map +1 -1
  285. package/lib/typescript/module/features/chat/renderer/renderer.native.d.ts +5 -1
  286. package/lib/typescript/module/features/chat/renderer/renderer.native.d.ts.map +1 -1
  287. package/lib/typescript/module/native.d.ts +11 -1
  288. package/lib/typescript/module/native.d.ts.map +1 -1
  289. package/lib/typescript/module/utils/flight.utils.d.ts +10 -0
  290. package/lib/typescript/module/utils/flight.utils.d.ts.map +1 -0
  291. package/lib/typescript/module/utils/order.utils.d.ts +7 -0
  292. package/lib/typescript/module/utils/order.utils.d.ts.map +1 -0
  293. package/lib/typescript/module/utils/reservation.utils.d.ts +7 -0
  294. package/lib/typescript/module/utils/reservation.utils.d.ts.map +1 -0
  295. package/lib/typescript/module/utils/status-badge.utils.d.ts +15 -0
  296. package/lib/typescript/module/utils/status-badge.utils.d.ts.map +1 -0
  297. package/lib/typescript/module/utils/theme.utils.d.ts +3 -0
  298. package/lib/typescript/module/utils/theme.utils.d.ts.map +1 -1
  299. package/lib/typescript/module/web.d.ts +11 -1
  300. package/lib/typescript/module/web.d.ts.map +1 -1
  301. package/package.json +1 -1
  302. package/src/features/chat/components/common/calendar-icon.native.tsx +13 -0
  303. package/src/features/chat/components/common/calendar-icon.tsx +13 -0
  304. package/src/features/chat/components/common/cart-icon.tsx +20 -0
  305. package/src/features/chat/components/common/chevron-icon.native.tsx +18 -0
  306. package/src/features/chat/components/common/chevron-icon.tsx +18 -0
  307. package/src/features/chat/components/common/plane-icon.native.tsx +15 -0
  308. package/src/features/chat/components/common/plane-icon.tsx +15 -0
  309. package/src/features/chat/components/flight/flight-card.native.tsx +100 -0
  310. package/src/features/chat/components/flight/flight-card.tsx +100 -0
  311. package/src/features/chat/components/flight/flight.model.ts +20 -0
  312. package/src/features/chat/components/flight/flight.native.tsx +131 -0
  313. package/src/features/chat/components/flight/flight.tsx +131 -0
  314. package/src/features/chat/components/flight/index.ts +2 -0
  315. package/src/features/chat/components/flight-board/flight-board.model.ts +23 -0
  316. package/src/features/chat/components/flight-board/flight-board.native.tsx +155 -0
  317. package/src/features/chat/components/flight-board/flight-board.tsx +160 -0
  318. package/src/features/chat/components/flight-board/index.ts +2 -0
  319. package/src/features/chat/components/info/info.model.ts +3 -0
  320. package/src/features/chat/components/info/info.native.tsx +47 -11
  321. package/src/features/chat/components/info/info.tsx +43 -10
  322. package/src/features/chat/components/order/index.ts +3 -0
  323. package/src/features/chat/components/order/order.model.ts +32 -0
  324. package/src/features/chat/components/order/order.native.tsx +172 -0
  325. package/src/features/chat/components/order/order.tsx +173 -0
  326. package/src/features/chat/components/reservation/index.ts +3 -0
  327. package/src/features/chat/components/reservation/reservation.model.ts +30 -0
  328. package/src/features/chat/components/reservation/reservation.native.tsx +160 -0
  329. package/src/features/chat/components/reservation/reservation.tsx +162 -0
  330. package/src/features/chat/model/chat.model.ts +16 -0
  331. package/src/features/chat/renderer/renderer.native.tsx +29 -1
  332. package/src/features/chat/renderer/renderer.tsx +29 -1
  333. package/src/native.ts +11 -1
  334. package/src/utils/flight.utils.ts +35 -0
  335. package/src/utils/order.utils.ts +28 -0
  336. package/src/utils/reservation.utils.ts +23 -0
  337. package/src/utils/status-badge.utils.ts +36 -0
  338. package/src/utils/theme.utils.ts +9 -0
  339. package/src/web.ts +11 -1
@@ -0,0 +1,160 @@
1
+ import { Fragment } from 'react';
2
+ import { Image, Pressable, Text, View } from 'react-native';
3
+ import { getThemeClasses } from '../../../../utils/theme.utils';
4
+ import { getReservationStatusStyle } from '../../../../utils/reservation.utils';
5
+ import { resolveText } from '../../../../utils/i18n.utils';
6
+ import { useExpandableList } from '../../../../utils/use-expandable-list';
7
+ import { Collapsible } from '../common/collapsible.native';
8
+ import { CalendarIcon } from '../common/calendar-icon.native';
9
+ import { ChevronIcon } from '../common/chevron-icon.native';
10
+ import { ItemAction, Theme } from '../../model/chat.model';
11
+ import type { ChatComponentProps } from '../../model/chat.model';
12
+ import type { ReservationListItem, ReservationRow } from './reservation.model';
13
+
14
+ export function Reservation({
15
+ data,
16
+ theme = Theme.Dark,
17
+ language,
18
+ actionLabel,
19
+ onAction,
20
+ onSelect,
21
+ }: ChatComponentProps<ReservationListItem>) {
22
+ const c = getThemeClasses(theme);
23
+ const list = Array.isArray(data) ? data[0] : data;
24
+ const reservations = list?.reservations ?? [];
25
+ const { head, rest, expanded, hasMore, toggle } = useExpandableList(reservations);
26
+
27
+ if (!list) return null;
28
+
29
+ const onSelectRow = onSelect as ((row: ReservationRow) => void) | undefined;
30
+ const title = resolveText(list.title, language);
31
+ const subtitle = list.subtitle ? resolveText(list.subtitle, language) : undefined;
32
+ const totalLabel = list.totalLabel ? resolveText(list.totalLabel, language) : undefined;
33
+ const action = list.actionLabel
34
+ ? resolveText(list.actionLabel, language)
35
+ : typeof actionLabel === 'function'
36
+ ? actionLabel(list)
37
+ : actionLabel;
38
+ const headerStyle = getReservationStatusStyle(list.status, theme);
39
+ const headerStatusLabel = list.statusLabel ? resolveText(list.statusLabel, language) : headerStyle.label;
40
+
41
+ const renderRow = (row: ReservationRow) => {
42
+ const s = getReservationStatusStyle(row.status, theme);
43
+ const statusLabel = row.statusLabel ? resolveText(row.statusLabel, language) : s.label;
44
+ const name = resolveText(row.name, language);
45
+
46
+ return (
47
+ <Pressable className="flex-row items-center gap-3 py-2.5" onPress={() => onSelectRow?.(row)}>
48
+ {row.image ? (
49
+ <Image accessibilityLabel={name} source={{ uri: row.image }} className={`h-11 w-11 rounded-xl ${c.mutedIconBg}`} />
50
+ ) : (
51
+ <View className={`h-11 w-11 items-center justify-center rounded-xl ${c.mutedIconBg}`}>
52
+ <CalendarIcon size={18} color={c.mutedIconColor} />
53
+ </View>
54
+ )}
55
+
56
+ <View className="flex-1 gap-1">
57
+ <View className="flex-row items-center justify-between gap-2">
58
+ <Text className={`flex-1 text-sm font-semibold ${c.title}`} numberOfLines={1}>
59
+ {name}
60
+ </Text>
61
+ <Text className={`text-sm font-bold ${c.price}`}>{row.price}</Text>
62
+ </View>
63
+ <View className="flex-row items-center justify-between gap-2">
64
+ <Text className={`flex-1 text-xs ${c.subtitle}`} numberOfLines={1}>
65
+ {row.date} · {row.time}
66
+ {row.duration ? ` · ${row.duration}` : ''}
67
+ </Text>
68
+ <View className={`rounded-full px-2 py-0.5 ${s.badgeBg}`}>
69
+ <Text className={`text-[11px] font-semibold ${s.badgeText}`}>{statusLabel}</Text>
70
+ </View>
71
+ </View>
72
+ </View>
73
+ </Pressable>
74
+ );
75
+ };
76
+
77
+ return (
78
+ <View className={`rounded-2xl border p-3.5 ${c.surface} ${c.border}`}>
79
+ <View className="flex-row items-center gap-3">
80
+ <View className={`h-11 w-11 items-center justify-center rounded-xl ${c.iconBg}`}>
81
+ <CalendarIcon size={20} color={c.iconColor} />
82
+ </View>
83
+
84
+ <View className="flex-1">
85
+ <Text className={`text-base font-bold ${c.title}`} numberOfLines={1}>
86
+ {title}
87
+ </Text>
88
+ {subtitle ? (
89
+ <Text className={`text-xs ${c.subtitle}`} numberOfLines={1}>
90
+ {subtitle}
91
+ </Text>
92
+ ) : null}
93
+ </View>
94
+
95
+ <View className={`rounded-full px-2.5 py-1 ${headerStyle.badgeBg}`}>
96
+ <Text className={`text-xs font-semibold ${headerStyle.badgeText}`}>{headerStatusLabel}</Text>
97
+ </View>
98
+ </View>
99
+
100
+ <View className={`my-3 h-px ${c.divider}`} />
101
+
102
+ {head.map((row, index) => (
103
+ <Fragment key={row.id}>
104
+ {index > 0 ? <View className={`h-px ${c.divider}`} /> : null}
105
+ {renderRow(row)}
106
+ </Fragment>
107
+ ))}
108
+
109
+ {hasMore ? (
110
+ <Collapsible expanded={expanded}>
111
+ {rest.map((row) => (
112
+ <Fragment key={row.id}>
113
+ <View className={`h-px ${c.divider}`} />
114
+ {renderRow(row)}
115
+ </Fragment>
116
+ ))}
117
+ </Collapsible>
118
+ ) : null}
119
+
120
+ {hasMore ? (
121
+ <Pressable onPress={toggle} className="mt-1 flex-row items-center justify-between gap-2 py-2">
122
+ <View className="flex-row items-center gap-2">
123
+ <Text className={`text-sm ${c.subtitle}`}>
124
+ {expanded
125
+ ? `Showing all ${reservations.length} requests`
126
+ : `Showing ${head.length} of ${reservations.length} requests`}
127
+ </Text>
128
+ </View>
129
+ <View className="flex-row items-center gap-1">
130
+ <Text className={`text-sm font-semibold ${c.iconText}`}>{expanded ? 'Show less' : 'View all'}</Text>
131
+ <View className={expanded ? 'rotate-180' : undefined}>
132
+ <ChevronIcon size={14} color={c.iconColor} />
133
+ </View>
134
+ </View>
135
+ </Pressable>
136
+ ) : null}
137
+
138
+ {list.total || action ? (
139
+ <>
140
+ <View className={`my-3 h-px ${c.divider}`} />
141
+ <View className="flex-row items-center justify-between gap-3">
142
+ <View>
143
+ {totalLabel ? <Text className={`text-xs ${c.subtitle}`}>{totalLabel}</Text> : null}
144
+ {list.total ? <Text className={`text-lg font-bold ${c.title}`}>{list.total}</Text> : null}
145
+ </View>
146
+
147
+ {action ? (
148
+ <Pressable
149
+ onPress={() => onAction?.(list, ItemAction.Manage)}
150
+ className="rounded-xl bg-indigo-500 px-4 py-2"
151
+ >
152
+ <Text className="text-sm font-semibold text-white">{action}</Text>
153
+ </Pressable>
154
+ ) : null}
155
+ </View>
156
+ </>
157
+ ) : null}
158
+ </View>
159
+ );
160
+ }
@@ -0,0 +1,162 @@
1
+ import { Fragment } from 'react';
2
+ import { getThemeClasses } from '../../../../utils/theme.utils';
3
+ import { getReservationStatusStyle } from '../../../../utils/reservation.utils';
4
+ import { resolveText } from '../../../../utils/i18n.utils';
5
+ import { useExpandableList } from '../../../../utils/use-expandable-list';
6
+ import { Collapsible } from '../common/collapsible';
7
+ import { CalendarIcon } from '../common/calendar-icon';
8
+ import { ChevronIcon } from '../common/chevron-icon';
9
+ import { ItemAction, Theme } from '../../model/chat.model';
10
+ import type { ChatComponentProps } from '../../model/chat.model';
11
+ import type { ReservationListItem, ReservationRow } from './reservation.model';
12
+
13
+ export function Reservation({
14
+ data,
15
+ theme = Theme.Dark,
16
+ language,
17
+ actionLabel,
18
+ onAction,
19
+ onSelect,
20
+ }: ChatComponentProps<ReservationListItem>) {
21
+ const c = getThemeClasses(theme);
22
+ const list = Array.isArray(data) ? data[0] : data;
23
+ const reservations = list?.reservations ?? [];
24
+ const { head, rest, expanded, hasMore, toggle } = useExpandableList(reservations);
25
+
26
+ if (!list) return null;
27
+
28
+ const onSelectRow = onSelect as ((row: ReservationRow) => void) | undefined;
29
+ const title = resolveText(list.title, language);
30
+ const subtitle = list.subtitle ? resolveText(list.subtitle, language) : undefined;
31
+ const totalLabel = list.totalLabel ? resolveText(list.totalLabel, language) : undefined;
32
+ const action = list.actionLabel
33
+ ? resolveText(list.actionLabel, language)
34
+ : typeof actionLabel === 'function'
35
+ ? actionLabel(list)
36
+ : actionLabel;
37
+ const headerStyle = getReservationStatusStyle(list.status, theme);
38
+ const headerStatusLabel = list.statusLabel ? resolveText(list.statusLabel, language) : headerStyle.label;
39
+
40
+ const renderRow = (row: ReservationRow) => {
41
+ const s = getReservationStatusStyle(row.status, theme);
42
+ const statusLabel = row.statusLabel ? resolveText(row.statusLabel, language) : s.label;
43
+ const name = resolveText(row.name, language);
44
+
45
+ return (
46
+ <button
47
+ type="button"
48
+ className="flex w-full items-center gap-3 py-2.5 text-left"
49
+ onClick={() => onSelectRow?.(row)}
50
+ >
51
+ {row.image ? (
52
+ <img src={row.image} alt={name} className={`h-11 w-11 shrink-0 rounded-xl object-cover ${c.mutedIconBg}`} />
53
+ ) : (
54
+ <div className={`flex h-11 w-11 shrink-0 items-center justify-center rounded-xl ${c.mutedIconBg}`}>
55
+ <CalendarIcon size={18} color={c.mutedIconColor} />
56
+ </div>
57
+ )}
58
+
59
+ <div className="flex min-w-0 flex-1 flex-col gap-1">
60
+ <div className="flex items-center justify-between gap-2">
61
+ <span className={`truncate text-sm font-semibold ${c.title}`}>{name}</span>
62
+ <span className={`shrink-0 text-sm font-bold ${c.price}`}>{row.price}</span>
63
+ </div>
64
+ <div className="flex items-center justify-between gap-2">
65
+ <span className={`truncate text-xs ${c.subtitle}`}>
66
+ {row.date} · {row.time}
67
+ {row.duration ? ` · ${row.duration}` : ''}
68
+ </span>
69
+ <span className={`shrink-0 rounded-full px-2 py-0.5 text-[11px] font-semibold ${s.badgeBg} ${s.badgeText}`}>
70
+ {statusLabel}
71
+ </span>
72
+ </div>
73
+ </div>
74
+ </button>
75
+ );
76
+ };
77
+
78
+ return (
79
+ <div className={`rounded-2xl border p-3.5 ${c.surface} ${c.border}`}>
80
+ <div className="flex items-center gap-3">
81
+ <div className={`flex h-11 w-11 shrink-0 items-center justify-center rounded-xl ${c.iconBg}`}>
82
+ <CalendarIcon size={20} color={c.iconColor} />
83
+ </div>
84
+
85
+ <div className="flex min-w-0 flex-1 flex-col">
86
+ <span className={`truncate text-base font-bold ${c.title}`}>{title}</span>
87
+ {subtitle ? <span className={`truncate text-xs ${c.subtitle}`}>{subtitle}</span> : null}
88
+ </div>
89
+
90
+ <span
91
+ className={`shrink-0 rounded-full px-2.5 py-1 text-xs font-semibold ${headerStyle.badgeBg} ${headerStyle.badgeText}`}
92
+ >
93
+ {headerStatusLabel}
94
+ </span>
95
+ </div>
96
+
97
+ <div className={`my-3 h-px ${c.divider}`} />
98
+
99
+ {head.map((row, index) => (
100
+ <Fragment key={row.id}>
101
+ {index > 0 ? <div className={`h-px ${c.divider}`} /> : null}
102
+ {renderRow(row)}
103
+ </Fragment>
104
+ ))}
105
+
106
+ {hasMore ? (
107
+ <Collapsible expanded={expanded}>
108
+ {rest.map((row) => (
109
+ <Fragment key={row.id}>
110
+ <div className={`h-px ${c.divider}`} />
111
+ {renderRow(row)}
112
+ </Fragment>
113
+ ))}
114
+ </Collapsible>
115
+ ) : null}
116
+
117
+ {hasMore ? (
118
+ <button
119
+ type="button"
120
+ onClick={toggle}
121
+ className={`mt-1 flex w-full items-center justify-between gap-2 rounded-xl py-2`}
122
+ >
123
+ <div className="flex items-center gap-2">
124
+ <span className={`text-sm ${c.subtitle}`}>
125
+ {expanded
126
+ ? `Showing all ${reservations.length} requests`
127
+ : `Showing ${head.length} of ${reservations.length} requests`}
128
+ </span>
129
+ </div>
130
+ <span className={`flex shrink-0 items-center gap-1 text-sm font-semibold ${c.iconText}`}>
131
+ {expanded ? 'Show less' : 'View all'}
132
+ <span className={`transition-transform ${expanded ? 'rotate-180' : ''}`}>
133
+ <ChevronIcon size={14} color="currentColor" />
134
+ </span>
135
+ </span>
136
+ </button>
137
+ ) : null}
138
+
139
+ {list.total || action ? (
140
+ <>
141
+ <div className={`my-3 h-px ${c.divider}`} />
142
+ <div className="flex items-center justify-between gap-3">
143
+ <div className="flex flex-col">
144
+ {totalLabel ? <span className={`text-xs ${c.subtitle}`}>{totalLabel}</span> : null}
145
+ {list.total ? <span className={`text-lg font-bold ${c.title}`}>{list.total}</span> : null}
146
+ </div>
147
+
148
+ {action ? (
149
+ <button
150
+ type="button"
151
+ onClick={() => onAction?.(list, ItemAction.Manage)}
152
+ className="rounded-xl bg-indigo-500 px-4 py-2 text-sm font-semibold text-white"
153
+ >
154
+ {action}
155
+ </button>
156
+ ) : null}
157
+ </div>
158
+ </>
159
+ ) : null}
160
+ </div>
161
+ );
162
+ }
@@ -14,10 +14,26 @@ export enum ComponentType {
14
14
  Event = 'event',
15
15
  EventList = 'eventList',
16
16
  Info = 'info',
17
+ Flight = 'flight',
18
+ FlightList = 'flightList',
19
+ FlightBoard = 'flightBoard',
20
+ Order = 'order',
21
+ Reservation = 'reservation',
22
+ ReservationList = 'reservationList',
17
23
  }
18
24
 
19
25
  export enum ItemAction {
20
26
  Add = 'add',
27
+ Manage = 'manage',
28
+ Track = 'track',
29
+ }
30
+
31
+ export enum FlightStatus {
32
+ OnTime = 'onTime',
33
+ Delayed = 'delayed',
34
+ Boarding = 'boarding',
35
+ Landed = 'landed',
36
+ Cancelled = 'cancelled',
21
37
  }
22
38
 
23
39
  export type ActionHandler<TItem = unknown> = (item: TItem, action?: ItemAction) => void;
@@ -2,15 +2,31 @@ import { Product } from '../components/product/product.native';
2
2
  import { Service } from '../components/service/service.native';
3
3
  import { Event } from '../components/event/event.native';
4
4
  import { Info } from '../components/info/info.native';
5
+ import { Flight } from '../components/flight/flight.native';
6
+ import { FlightBoard } from '../components/flight-board/flight-board.native';
7
+ import { Order } from '../components/order/order.native';
8
+ import { Reservation } from '../components/reservation/reservation.native';
5
9
  import type { ProductItem } from '../components/product/product.model';
6
10
  import type { ServiceItem } from '../components/service/service.model';
7
11
  import type { EventItem } from '../components/event/event.model';
8
12
  import type { InfoItem } from '../components/info/info.model';
13
+ import type { FlightItem } from '../components/flight/flight.model';
14
+ import type { FlightBoardItem } from '../components/flight-board/flight-board.model';
15
+ import type { OrderListItem } from '../components/order/order.model';
16
+ import type { ReservationListItem } from '../components/reservation/reservation.model';
9
17
  import { ComponentType } from '../model/chat.model';
10
18
  import type { ChatComponentProps } from '../model/chat.model';
11
19
 
12
20
  export function ChatComponentRenderer<
13
- TItem extends ProductItem | ServiceItem | EventItem | InfoItem,
21
+ TItem extends
22
+ | ProductItem
23
+ | ServiceItem
24
+ | EventItem
25
+ | InfoItem
26
+ | FlightItem
27
+ | FlightBoardItem
28
+ | OrderListItem
29
+ | ReservationListItem,
14
30
  >({ type, ...rest }: ChatComponentProps<TItem>) {
15
31
  switch (type) {
16
32
  case ComponentType.Product:
@@ -24,6 +40,18 @@ export function ChatComponentRenderer<
24
40
  return <Event type={type} {...(rest as unknown as Omit<ChatComponentProps<EventItem>, 'type'>)} />;
25
41
  case ComponentType.Info:
26
42
  return <Info type={type} {...(rest as unknown as Omit<ChatComponentProps<InfoItem>, 'type'>)} />;
43
+ case ComponentType.Flight:
44
+ case ComponentType.FlightList:
45
+ return <Flight type={type} {...(rest as unknown as Omit<ChatComponentProps<FlightItem>, 'type'>)} />;
46
+ case ComponentType.FlightBoard:
47
+ return <FlightBoard type={type} {...(rest as unknown as Omit<ChatComponentProps<FlightBoardItem>, 'type'>)} />;
48
+ case ComponentType.Order:
49
+ return <Order type={type} {...(rest as unknown as Omit<ChatComponentProps<OrderListItem>, 'type'>)} />;
50
+ case ComponentType.Reservation:
51
+ case ComponentType.ReservationList:
52
+ return (
53
+ <Reservation type={type} {...(rest as unknown as Omit<ChatComponentProps<ReservationListItem>, 'type'>)} />
54
+ );
27
55
  default:
28
56
  return null;
29
57
  }
@@ -2,15 +2,31 @@ import { Product } from '../components/product/product';
2
2
  import { Service } from '../components/service/service';
3
3
  import { Event } from '../components/event/event';
4
4
  import { Info } from '../components/info/info';
5
+ import { Flight } from '../components/flight/flight';
6
+ import { FlightBoard } from '../components/flight-board/flight-board';
7
+ import { Order } from '../components/order/order';
8
+ import { Reservation } from '../components/reservation/reservation';
5
9
  import type { ProductItem } from '../components/product/product.model';
6
10
  import type { ServiceItem } from '../components/service/service.model';
7
11
  import type { EventItem } from '../components/event/event.model';
8
12
  import type { InfoItem } from '../components/info/info.model';
13
+ import type { FlightItem } from '../components/flight/flight.model';
14
+ import type { FlightBoardItem } from '../components/flight-board/flight-board.model';
15
+ import type { OrderListItem } from '../components/order/order.model';
16
+ import type { ReservationListItem } from '../components/reservation/reservation.model';
9
17
  import { ComponentType } from '../model/chat.model';
10
18
  import type { ChatComponentProps } from '../model/chat.model';
11
19
 
12
20
  export function ChatComponentRenderer<
13
- TItem extends ProductItem | ServiceItem | EventItem | InfoItem,
21
+ TItem extends
22
+ | ProductItem
23
+ | ServiceItem
24
+ | EventItem
25
+ | InfoItem
26
+ | FlightItem
27
+ | FlightBoardItem
28
+ | OrderListItem
29
+ | ReservationListItem,
14
30
  >({ type, ...rest }: ChatComponentProps<TItem>) {
15
31
  switch (type) {
16
32
  case ComponentType.Product:
@@ -24,6 +40,18 @@ export function ChatComponentRenderer<
24
40
  return <Event type={type} {...(rest as unknown as Omit<ChatComponentProps<EventItem>, 'type'>)} />;
25
41
  case ComponentType.Info:
26
42
  return <Info type={type} {...(rest as unknown as Omit<ChatComponentProps<InfoItem>, 'type'>)} />;
43
+ case ComponentType.Flight:
44
+ case ComponentType.FlightList:
45
+ return <Flight type={type} {...(rest as unknown as Omit<ChatComponentProps<FlightItem>, 'type'>)} />;
46
+ case ComponentType.FlightBoard:
47
+ return <FlightBoard type={type} {...(rest as unknown as Omit<ChatComponentProps<FlightBoardItem>, 'type'>)} />;
48
+ case ComponentType.Order:
49
+ return <Order type={type} {...(rest as unknown as Omit<ChatComponentProps<OrderListItem>, 'type'>)} />;
50
+ case ComponentType.Reservation:
51
+ case ComponentType.ReservationList:
52
+ return (
53
+ <Reservation type={type} {...(rest as unknown as Omit<ChatComponentProps<ReservationListItem>, 'type'>)} />
54
+ );
27
55
  default:
28
56
  return null;
29
57
  }
package/src/native.ts CHANGED
@@ -2,14 +2,24 @@ export { Product } from './features/chat/components/product/product.native';
2
2
  export { Service } from './features/chat/components/service/service.native';
3
3
  export { Event } from './features/chat/components/event/event.native';
4
4
  export { Info } from './features/chat/components/info/info.native';
5
+ export { Flight } from './features/chat/components/flight/flight.native';
6
+ export { FlightBoard } from './features/chat/components/flight-board/flight-board.native';
7
+ export { Order } from './features/chat/components/order/order.native';
8
+ export { Reservation } from './features/chat/components/reservation/reservation.native';
5
9
  export { ChatComponentRenderer } from './features/chat/renderer/renderer.native';
6
10
  export { ChatMessageRenderer } from './features/chat/message/message.native';
7
11
  export { parseMessage } from './features/chat/message/message.logic';
8
- export { ComponentType, ItemAction, Theme } from './features/chat/model/chat.model';
12
+ export { ComponentType, ItemAction, Theme, FlightStatus } from './features/chat/model/chat.model';
13
+ export { OrderStatus } from './features/chat/components/order/order.model';
14
+ export { ReservationStatus } from './features/chat/components/reservation/reservation.model';
9
15
  export type { ProductItem } from './features/chat/components/product/product.model';
10
16
  export type { ServiceItem } from './features/chat/components/service/service.model';
11
17
  export type { EventItem } from './features/chat/components/event/event.model';
12
18
  export type { InfoItem } from './features/chat/components/info/info.model';
19
+ export type { FlightItem, Airport } from './features/chat/components/flight/flight.model';
20
+ export type { FlightBoardItem, FlightRow } from './features/chat/components/flight-board/flight-board.model';
21
+ export type { OrderListItem, OrderRow } from './features/chat/components/order/order.model';
22
+ export type { ReservationListItem, ReservationRow } from './features/chat/components/reservation/reservation.model';
13
23
  export type {
14
24
  ChatMessage,
15
25
  ChatMessageProps,
@@ -0,0 +1,35 @@
1
+ import { FlightStatus, Theme } from '../features/chat/model/chat.model';
2
+
3
+ export interface FlightStatusStyle {
4
+ dot: string;
5
+ badgeBg: string;
6
+ badgeText: string;
7
+ showDot: boolean;
8
+ label: string;
9
+ }
10
+
11
+ type StatusMap = Record<FlightStatus, FlightStatusStyle>;
12
+
13
+ const DARK: StatusMap = {
14
+ [FlightStatus.OnTime]: { dot: 'bg-emerald-400', badgeBg: 'bg-emerald-500/15', badgeText: 'text-emerald-400', showDot: true, label: 'On time' },
15
+ [FlightStatus.Delayed]: { dot: 'bg-amber-400', badgeBg: 'bg-amber-500/15', badgeText: 'text-amber-400', showDot: false, label: 'Delayed' },
16
+ [FlightStatus.Boarding]: { dot: 'bg-indigo-300', badgeBg: 'bg-indigo-500/25', badgeText: 'text-indigo-300', showDot: false, label: 'Boarding' },
17
+ [FlightStatus.Landed]: { dot: 'bg-sky-400', badgeBg: 'bg-sky-500/15', badgeText: 'text-sky-400', showDot: true, label: 'Landed' },
18
+ [FlightStatus.Cancelled]: { dot: 'bg-red-400', badgeBg: 'bg-red-500/15', badgeText: 'text-red-400', showDot: false, label: 'Cancelled' },
19
+ };
20
+
21
+ const LIGHT: StatusMap = {
22
+ [FlightStatus.OnTime]: { dot: 'bg-emerald-500', badgeBg: 'bg-emerald-500/15', badgeText: 'text-emerald-600', showDot: true, label: 'On time' },
23
+ [FlightStatus.Delayed]: { dot: 'bg-amber-500', badgeBg: 'bg-amber-500/20', badgeText: 'text-amber-600', showDot: false, label: 'Delayed' },
24
+ [FlightStatus.Boarding]: { dot: 'bg-indigo-500', badgeBg: 'bg-indigo-500/15', badgeText: 'text-indigo-600', showDot: false, label: 'Boarding' },
25
+ [FlightStatus.Landed]: { dot: 'bg-sky-500', badgeBg: 'bg-sky-500/15', badgeText: 'text-sky-600', showDot: true, label: 'Landed' },
26
+ [FlightStatus.Cancelled]: { dot: 'bg-red-500', badgeBg: 'bg-red-500/15', badgeText: 'text-red-600', showDot: false, label: 'Cancelled' },
27
+ };
28
+
29
+ export function getFlightStatusStyle(
30
+ status: FlightStatus = FlightStatus.OnTime,
31
+ theme: Theme = Theme.Dark,
32
+ ): FlightStatusStyle {
33
+ const map = theme === Theme.Light ? LIGHT : DARK;
34
+ return map[status] ?? map[FlightStatus.OnTime];
35
+ }
@@ -0,0 +1,28 @@
1
+ import { Theme } from '../features/chat/model/chat.model';
2
+ import { OrderStatus } from '../features/chat/components/order/order.model';
3
+ import { getStatusBadgeStyle, StatusTone } from './status-badge.utils';
4
+ import type { StatusBadgeStyle } from './status-badge.utils';
5
+
6
+ const LABEL: Record<OrderStatus, string> = {
7
+ [OrderStatus.Pending]: 'Pending',
8
+ [OrderStatus.Preparing]: 'Preparing',
9
+ [OrderStatus.Accepted]: 'Accepted',
10
+ [OrderStatus.Rejected]: 'Rejected',
11
+ [OrderStatus.Delivered]: 'Delivered',
12
+ };
13
+
14
+ export function getOrderStatusStyle(
15
+ status: OrderStatus = OrderStatus.Pending,
16
+ theme: Theme = Theme.Dark,
17
+ ): StatusBadgeStyle & { label: string } {
18
+ const tone =
19
+ status === OrderStatus.Accepted || status === OrderStatus.Delivered
20
+ ? StatusTone.Success
21
+ : status === OrderStatus.Rejected
22
+ ? StatusTone.Danger
23
+ : status === OrderStatus.Preparing
24
+ ? StatusTone.Info
25
+ : StatusTone.Pending;
26
+
27
+ return { ...getStatusBadgeStyle(tone, theme), label: LABEL[status] ?? LABEL[OrderStatus.Pending] };
28
+ }
@@ -0,0 +1,23 @@
1
+ import { Theme } from '../features/chat/model/chat.model';
2
+ import { ReservationStatus } from '../features/chat/components/reservation/reservation.model';
3
+ import { getStatusBadgeStyle, StatusTone } from './status-badge.utils';
4
+ import type { StatusBadgeStyle } from './status-badge.utils';
5
+
6
+ const LABEL: Record<ReservationStatus, string> = {
7
+ [ReservationStatus.Pending]: 'Pending',
8
+ [ReservationStatus.Confirmed]: 'Confirmed',
9
+ [ReservationStatus.Cancelled]: 'Cancelled',
10
+ };
11
+
12
+ export function getReservationStatusStyle(
13
+ status: ReservationStatus = ReservationStatus.Pending,
14
+ theme: Theme = Theme.Dark,
15
+ ): StatusBadgeStyle & { label: string } {
16
+ const tone = status === ReservationStatus.Confirmed
17
+ ? StatusTone.Success
18
+ : status === ReservationStatus.Cancelled
19
+ ? StatusTone.Danger
20
+ : StatusTone.Pending;
21
+
22
+ return { ...getStatusBadgeStyle(tone, theme), label: LABEL[status] ?? LABEL[ReservationStatus.Pending] };
23
+ }
@@ -0,0 +1,36 @@
1
+ import { Theme } from '../features/chat/model/chat.model';
2
+
3
+ export enum StatusTone {
4
+ Pending = 'pending',
5
+ Success = 'success',
6
+ Danger = 'danger',
7
+ Info = 'info',
8
+ Neutral = 'neutral',
9
+ }
10
+
11
+ export interface StatusBadgeStyle {
12
+ badgeBg: string;
13
+ badgeText: string;
14
+ dot: string;
15
+ }
16
+
17
+ const DARK: Record<StatusTone, StatusBadgeStyle> = {
18
+ [StatusTone.Pending]: { badgeBg: 'bg-amber-500/15', badgeText: 'text-amber-400', dot: 'bg-amber-400' },
19
+ [StatusTone.Success]: { badgeBg: 'bg-emerald-500/15', badgeText: 'text-emerald-400', dot: 'bg-emerald-400' },
20
+ [StatusTone.Danger]: { badgeBg: 'bg-red-500/15', badgeText: 'text-red-400', dot: 'bg-red-400' },
21
+ [StatusTone.Info]: { badgeBg: 'bg-indigo-500/25', badgeText: 'text-indigo-300', dot: 'bg-indigo-300' },
22
+ [StatusTone.Neutral]: { badgeBg: 'bg-white/10', badgeText: 'text-neutral-300', dot: 'bg-neutral-400' },
23
+ };
24
+
25
+ const LIGHT: Record<StatusTone, StatusBadgeStyle> = {
26
+ [StatusTone.Pending]: { badgeBg: 'bg-amber-500/20', badgeText: 'text-amber-600', dot: 'bg-amber-500' },
27
+ [StatusTone.Success]: { badgeBg: 'bg-emerald-500/15', badgeText: 'text-emerald-600', dot: 'bg-emerald-500' },
28
+ [StatusTone.Danger]: { badgeBg: 'bg-red-500/15', badgeText: 'text-red-600', dot: 'bg-red-500' },
29
+ [StatusTone.Info]: { badgeBg: 'bg-indigo-500/15', badgeText: 'text-indigo-600', dot: 'bg-indigo-500' },
30
+ [StatusTone.Neutral]: { badgeBg: 'bg-slate-200', badgeText: 'text-neutral-600', dot: 'bg-slate-400' },
31
+ };
32
+
33
+ export function getStatusBadgeStyle(tone: StatusTone, theme: Theme = Theme.Dark): StatusBadgeStyle {
34
+ const map = theme === Theme.Light ? LIGHT : DARK;
35
+ return map[tone] ?? map[StatusTone.Neutral];
36
+ }
@@ -13,6 +13,9 @@ export interface ThemeClasses {
13
13
  iconBg: string;
14
14
  iconText: string;
15
15
  iconColor: string;
16
+ mutedIconBg: string;
17
+ mutedIconColor: string;
18
+ dashLine: string;
16
19
  }
17
20
 
18
21
  const DARK: ThemeClasses = {
@@ -28,6 +31,9 @@ const DARK: ThemeClasses = {
28
31
  iconBg: 'bg-indigo-500/20',
29
32
  iconText: 'text-indigo-300',
30
33
  iconColor: '#a5b4fc',
34
+ mutedIconBg: 'bg-white/5',
35
+ mutedIconColor: '#82849a',
36
+ dashLine: 'border-neutral-700',
31
37
  };
32
38
 
33
39
  const LIGHT: ThemeClasses = {
@@ -43,6 +49,9 @@ const LIGHT: ThemeClasses = {
43
49
  iconBg: 'bg-indigo-500/15',
44
50
  iconText: 'text-indigo-500',
45
51
  iconColor: '#6366f1',
52
+ mutedIconBg: 'bg-slate-200',
53
+ mutedIconColor: '#64748b',
54
+ dashLine: 'border-slate-300',
46
55
  };
47
56
 
48
57
  export function getThemeClasses(theme: Theme = Theme.Dark): ThemeClasses {