@ketvietlab/ketsuite 0.1.1 → 0.1.3

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 (2606) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -1
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +59 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/deployment.d.ts +5 -0
  8. package/dist/deployment.d.ts.map +1 -0
  9. package/dist/deployment.js +152 -0
  10. package/dist/deployment.js.map +1 -0
  11. package/dist/development.d.ts +8 -0
  12. package/dist/development.d.ts.map +1 -0
  13. package/dist/development.js +40 -0
  14. package/dist/development.js.map +1 -0
  15. package/dist/index.d.ts +77 -6
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +66 -6
  18. package/dist/index.js.map +1 -1
  19. package/dist/modules/account/analytics.d.ts +32 -0
  20. package/dist/modules/account/analytics.d.ts.map +1 -0
  21. package/dist/modules/account/analytics.js +457 -0
  22. package/dist/modules/account/analytics.js.map +1 -0
  23. package/dist/modules/account/assets-costing.d.ts +4 -0
  24. package/dist/modules/account/assets-costing.d.ts.map +1 -0
  25. package/dist/modules/account/assets-costing.js +1134 -0
  26. package/dist/modules/account/assets-costing.js.map +1 -0
  27. package/dist/modules/account/audit.d.ts +3 -0
  28. package/dist/modules/account/audit.d.ts.map +1 -0
  29. package/dist/modules/account/audit.js +14 -0
  30. package/dist/modules/account/audit.js.map +1 -0
  31. package/dist/modules/account/books.d.ts +4 -0
  32. package/dist/modules/account/books.d.ts.map +1 -0
  33. package/dist/modules/account/books.js +150 -0
  34. package/dist/modules/account/books.js.map +1 -0
  35. package/dist/modules/account/cash-receivables.d.ts +3 -0
  36. package/dist/modules/account/cash-receivables.d.ts.map +1 -0
  37. package/dist/modules/account/cash-receivables.js +1087 -0
  38. package/dist/modules/account/cash-receivables.js.map +1 -0
  39. package/dist/modules/account/close.d.ts +4 -0
  40. package/dist/modules/account/close.d.ts.map +1 -0
  41. package/dist/modules/account/close.js +343 -0
  42. package/dist/modules/account/close.js.map +1 -0
  43. package/dist/modules/account/date.d.ts +21 -0
  44. package/dist/modules/account/date.d.ts.map +1 -0
  45. package/dist/modules/account/date.js +70 -0
  46. package/dist/modules/account/date.js.map +1 -0
  47. package/dist/modules/account/functions.d.ts +131 -3
  48. package/dist/modules/account/functions.d.ts.map +1 -1
  49. package/dist/modules/account/functions.js +2570 -389
  50. package/dist/modules/account/functions.js.map +1 -1
  51. package/dist/modules/account/index.d.ts +1 -2
  52. package/dist/modules/account/index.d.ts.map +1 -1
  53. package/dist/modules/account/index.js +403 -8
  54. package/dist/modules/account/index.js.map +1 -1
  55. package/dist/modules/account/models.d.ts.map +1 -1
  56. package/dist/modules/account/models.js +748 -0
  57. package/dist/modules/account/models.js.map +1 -1
  58. package/dist/modules/account/money.d.ts +60 -0
  59. package/dist/modules/account/money.d.ts.map +1 -0
  60. package/dist/modules/account/money.js +237 -0
  61. package/dist/modules/account/money.js.map +1 -0
  62. package/dist/modules/account/open-items.d.ts +3 -0
  63. package/dist/modules/account/open-items.d.ts.map +1 -0
  64. package/dist/modules/account/open-items.js +390 -0
  65. package/dist/modules/account/open-items.js.map +1 -0
  66. package/dist/modules/account/opening.d.ts +3 -0
  67. package/dist/modules/account/opening.d.ts.map +1 -0
  68. package/dist/modules/account/opening.js +323 -0
  69. package/dist/modules/account/opening.js.map +1 -0
  70. package/dist/modules/account/period.d.ts +21 -0
  71. package/dist/modules/account/period.d.ts.map +1 -0
  72. package/dist/modules/account/period.js +155 -0
  73. package/dist/modules/account/period.js.map +1 -0
  74. package/dist/modules/account/relations.d.ts.map +1 -1
  75. package/dist/modules/account/relations.js +46 -0
  76. package/dist/modules/account/relations.js.map +1 -1
  77. package/dist/modules/account/reports.d.ts +4 -0
  78. package/dist/modules/account/reports.d.ts.map +1 -0
  79. package/dist/modules/account/reports.js +125 -0
  80. package/dist/modules/account/reports.js.map +1 -0
  81. package/dist/modules/account/setup.d.ts +3 -1
  82. package/dist/modules/account/setup.d.ts.map +1 -1
  83. package/dist/modules/account/setup.js +45 -160
  84. package/dist/modules/account/setup.js.map +1 -1
  85. package/dist/modules/account_activity_backend/index.d.ts.map +1 -1
  86. package/dist/modules/account_activity_backend/index.js +0 -1
  87. package/dist/modules/account_activity_backend/index.js.map +1 -1
  88. package/dist/modules/account_backend/index.js +3339 -494
  89. package/dist/modules/account_backend/index.js.map +1 -1
  90. package/dist/modules/account_backend/overview.d.ts +92 -0
  91. package/dist/modules/account_backend/overview.d.ts.map +1 -0
  92. package/dist/modules/account_backend/overview.js +257 -0
  93. package/dist/modules/account_backend/overview.js.map +1 -0
  94. package/dist/modules/account_backend/relation-control.d.ts +48 -0
  95. package/dist/modules/account_backend/relation-control.d.ts.map +1 -0
  96. package/dist/modules/account_backend/relation-control.js +67 -0
  97. package/dist/modules/account_backend/relation-control.js.map +1 -0
  98. package/dist/modules/account_backend/screens/account-defaults.d.ts +28 -0
  99. package/dist/modules/account_backend/screens/account-defaults.d.ts.map +1 -0
  100. package/dist/modules/account_backend/screens/account-defaults.js +60 -0
  101. package/dist/modules/account_backend/screens/account-defaults.js.map +1 -0
  102. package/dist/modules/account_backend/screens/account-form.d.ts +16 -0
  103. package/dist/modules/account_backend/screens/account-form.d.ts.map +1 -0
  104. package/dist/modules/account_backend/screens/account-form.js +53 -0
  105. package/dist/modules/account_backend/screens/account-form.js.map +1 -0
  106. package/dist/modules/account_backend/screens/accounting-books.d.ts +15 -0
  107. package/dist/modules/account_backend/screens/accounting-books.d.ts.map +1 -0
  108. package/dist/modules/account_backend/screens/accounting-books.js +86 -0
  109. package/dist/modules/account_backend/screens/accounting-books.js.map +1 -0
  110. package/dist/modules/account_backend/screens/accounts-list.d.ts +50 -0
  111. package/dist/modules/account_backend/screens/accounts-list.d.ts.map +1 -0
  112. package/dist/modules/account_backend/screens/accounts-list.js +66 -0
  113. package/dist/modules/account_backend/screens/accounts-list.js.map +1 -0
  114. package/dist/modules/account_backend/screens/customer-invoice-form.d.ts +13 -0
  115. package/dist/modules/account_backend/screens/customer-invoice-form.d.ts.map +1 -0
  116. package/dist/modules/account_backend/screens/customer-invoice-form.js +20 -0
  117. package/dist/modules/account_backend/screens/customer-invoice-form.js.map +1 -0
  118. package/dist/modules/account_backend/screens/customer-invoices-list.d.ts +62 -0
  119. package/dist/modules/account_backend/screens/customer-invoices-list.d.ts.map +1 -0
  120. package/dist/modules/account_backend/screens/customer-invoices-list.js +82 -0
  121. package/dist/modules/account_backend/screens/customer-invoices-list.js.map +1 -0
  122. package/dist/modules/account_backend/screens/general-ledger.d.ts +24 -0
  123. package/dist/modules/account_backend/screens/general-ledger.d.ts.map +1 -0
  124. package/dist/modules/account_backend/screens/general-ledger.js +73 -0
  125. package/dist/modules/account_backend/screens/general-ledger.js.map +1 -0
  126. package/dist/modules/account_backend/screens/index.d.ts +27 -0
  127. package/dist/modules/account_backend/screens/index.d.ts.map +1 -0
  128. package/dist/modules/account_backend/screens/index.js +27 -0
  129. package/dist/modules/account_backend/screens/index.js.map +1 -0
  130. package/dist/modules/account_backend/screens/journal-entries-list.d.ts +48 -0
  131. package/dist/modules/account_backend/screens/journal-entries-list.d.ts.map +1 -0
  132. package/dist/modules/account_backend/screens/journal-entries-list.js +58 -0
  133. package/dist/modules/account_backend/screens/journal-entries-list.js.map +1 -0
  134. package/dist/modules/account_backend/screens/journal-entry-create.d.ts +14 -0
  135. package/dist/modules/account_backend/screens/journal-entry-create.d.ts.map +1 -0
  136. package/dist/modules/account_backend/screens/journal-entry-create.js +41 -0
  137. package/dist/modules/account_backend/screens/journal-entry-create.js.map +1 -0
  138. package/dist/modules/account_backend/screens/journal-form.d.ts +15 -0
  139. package/dist/modules/account_backend/screens/journal-form.d.ts.map +1 -0
  140. package/dist/modules/account_backend/screens/journal-form.js +53 -0
  141. package/dist/modules/account_backend/screens/journal-form.js.map +1 -0
  142. package/dist/modules/account_backend/screens/journals-list.d.ts +51 -0
  143. package/dist/modules/account_backend/screens/journals-list.d.ts.map +1 -0
  144. package/dist/modules/account_backend/screens/journals-list.js +70 -0
  145. package/dist/modules/account_backend/screens/journals-list.js.map +1 -0
  146. package/dist/modules/account_backend/screens/move-detail.d.ts +26 -0
  147. package/dist/modules/account_backend/screens/move-detail.d.ts.map +1 -0
  148. package/dist/modules/account_backend/screens/move-detail.js +130 -0
  149. package/dist/modules/account_backend/screens/move-detail.js.map +1 -0
  150. package/dist/modules/account_backend/screens/opening-balances.d.ts +28 -0
  151. package/dist/modules/account_backend/screens/opening-balances.d.ts.map +1 -0
  152. package/dist/modules/account_backend/screens/opening-balances.js +96 -0
  153. package/dist/modules/account_backend/screens/opening-balances.js.map +1 -0
  154. package/dist/modules/account_backend/screens/overview.d.ts +62 -0
  155. package/dist/modules/account_backend/screens/overview.d.ts.map +1 -0
  156. package/dist/modules/account_backend/screens/overview.js +215 -0
  157. package/dist/modules/account_backend/screens/overview.js.map +1 -0
  158. package/dist/modules/account_backend/screens/partner-statement.d.ts +26 -0
  159. package/dist/modules/account_backend/screens/partner-statement.d.ts.map +1 -0
  160. package/dist/modules/account_backend/screens/partner-statement.js +82 -0
  161. package/dist/modules/account_backend/screens/partner-statement.js.map +1 -0
  162. package/dist/modules/account_backend/screens/payment-form.d.ts +14 -0
  163. package/dist/modules/account_backend/screens/payment-form.d.ts.map +1 -0
  164. package/dist/modules/account_backend/screens/payment-form.js +21 -0
  165. package/dist/modules/account_backend/screens/payment-form.js.map +1 -0
  166. package/dist/modules/account_backend/screens/payment-term-form.d.ts +25 -0
  167. package/dist/modules/account_backend/screens/payment-term-form.d.ts.map +1 -0
  168. package/dist/modules/account_backend/screens/payment-term-form.js +96 -0
  169. package/dist/modules/account_backend/screens/payment-term-form.js.map +1 -0
  170. package/dist/modules/account_backend/screens/payment-terms-list.d.ts +23 -0
  171. package/dist/modules/account_backend/screens/payment-terms-list.d.ts.map +1 -0
  172. package/dist/modules/account_backend/screens/payment-terms-list.js +104 -0
  173. package/dist/modules/account_backend/screens/payment-terms-list.js.map +1 -0
  174. package/dist/modules/account_backend/screens/payments-list.d.ts +62 -0
  175. package/dist/modules/account_backend/screens/payments-list.d.ts.map +1 -0
  176. package/dist/modules/account_backend/screens/payments-list.js +71 -0
  177. package/dist/modules/account_backend/screens/payments-list.js.map +1 -0
  178. package/dist/modules/account_backend/screens/period-closes.d.ts +21 -0
  179. package/dist/modules/account_backend/screens/period-closes.d.ts.map +1 -0
  180. package/dist/modules/account_backend/screens/period-closes.js +123 -0
  181. package/dist/modules/account_backend/screens/period-closes.js.map +1 -0
  182. package/dist/modules/account_backend/screens/shared.d.ts +16 -0
  183. package/dist/modules/account_backend/screens/shared.d.ts.map +1 -0
  184. package/dist/modules/account_backend/screens/shared.js +15 -0
  185. package/dist/modules/account_backend/screens/shared.js.map +1 -0
  186. package/dist/modules/account_backend/screens/tax-form.d.ts +14 -0
  187. package/dist/modules/account_backend/screens/tax-form.d.ts.map +1 -0
  188. package/dist/modules/account_backend/screens/tax-form.js +25 -0
  189. package/dist/modules/account_backend/screens/tax-form.js.map +1 -0
  190. package/dist/modules/account_backend/screens/taxes-list.d.ts +55 -0
  191. package/dist/modules/account_backend/screens/taxes-list.d.ts.map +1 -0
  192. package/dist/modules/account_backend/screens/taxes-list.js +83 -0
  193. package/dist/modules/account_backend/screens/taxes-list.js.map +1 -0
  194. package/dist/modules/account_backend/screens/trial-balance.d.ts +19 -0
  195. package/dist/modules/account_backend/screens/trial-balance.d.ts.map +1 -0
  196. package/dist/modules/account_backend/screens/trial-balance.js +75 -0
  197. package/dist/modules/account_backend/screens/trial-balance.js.map +1 -0
  198. package/dist/modules/account_backend/screens/vendor-bill-form.d.ts +13 -0
  199. package/dist/modules/account_backend/screens/vendor-bill-form.d.ts.map +1 -0
  200. package/dist/modules/account_backend/screens/vendor-bill-form.js +20 -0
  201. package/dist/modules/account_backend/screens/vendor-bill-form.js.map +1 -0
  202. package/dist/modules/account_backend/screens/vendor-bills-list.d.ts +62 -0
  203. package/dist/modules/account_backend/screens/vendor-bills-list.d.ts.map +1 -0
  204. package/dist/modules/account_backend/screens/vendor-bills-list.js +84 -0
  205. package/dist/modules/account_backend/screens/vendor-bills-list.js.map +1 -0
  206. package/dist/modules/account_mail_backend/index.d.ts.map +1 -1
  207. package/dist/modules/account_mail_backend/index.js +0 -1
  208. package/dist/modules/account_mail_backend/index.js.map +1 -1
  209. package/dist/modules/account_partner/index.js +0 -2
  210. package/dist/modules/account_partner/index.js.map +1 -1
  211. package/dist/modules/account_partner_backend/index.d.ts +1 -1
  212. package/dist/modules/account_partner_backend/index.d.ts.map +1 -1
  213. package/dist/modules/account_partner_backend/index.js +2 -3
  214. package/dist/modules/account_partner_backend/index.js.map +1 -1
  215. package/dist/modules/account_partner_backend/routes.d.ts.map +1 -1
  216. package/dist/modules/account_partner_backend/routes.js +19 -25
  217. package/dist/modules/account_partner_backend/routes.js.map +1 -1
  218. package/dist/modules/account_partner_backend/screens/accounting-terms.d.ts +20 -0
  219. package/dist/modules/account_partner_backend/screens/accounting-terms.d.ts.map +1 -0
  220. package/dist/modules/account_partner_backend/screens/accounting-terms.js +63 -0
  221. package/dist/modules/account_partner_backend/screens/accounting-terms.js.map +1 -0
  222. package/dist/modules/account_partner_backend/screens/index.d.ts +2 -0
  223. package/dist/modules/account_partner_backend/screens/index.d.ts.map +1 -0
  224. package/dist/modules/account_partner_backend/screens/index.js +2 -0
  225. package/dist/modules/account_partner_backend/screens/index.js.map +1 -0
  226. package/dist/modules/account_staff_channel/channel-routes.d.ts +2 -0
  227. package/dist/modules/account_staff_channel/channel-routes.d.ts.map +1 -0
  228. package/dist/modules/account_staff_channel/channel-routes.js +787 -0
  229. package/dist/modules/account_staff_channel/channel-routes.js.map +1 -0
  230. package/dist/modules/account_staff_channel/functions.d.ts.map +1 -0
  231. package/dist/modules/account_staff_channel/functions.js +143 -0
  232. package/dist/modules/account_staff_channel/functions.js.map +1 -0
  233. package/dist/modules/account_staff_channel/index.d.ts +5 -0
  234. package/dist/modules/account_staff_channel/index.d.ts.map +1 -0
  235. package/dist/modules/account_staff_channel/index.js +42 -0
  236. package/dist/modules/account_staff_channel/index.js.map +1 -0
  237. package/dist/modules/account_staff_channel/models.d.ts.map +1 -0
  238. package/dist/modules/account_staff_channel/models.js +30 -0
  239. package/dist/modules/account_staff_channel/models.js.map +1 -0
  240. package/dist/modules/activity/index.d.ts.map +1 -1
  241. package/dist/modules/activity/index.js +0 -1
  242. package/dist/modules/activity/index.js.map +1 -1
  243. package/dist/modules/activity_backend/index.d.ts +1 -1
  244. package/dist/modules/activity_backend/index.d.ts.map +1 -1
  245. package/dist/modules/activity_backend/index.js +3 -12
  246. package/dist/modules/activity_backend/index.js.map +1 -1
  247. package/dist/modules/activity_backend/routes.d.ts.map +1 -1
  248. package/dist/modules/activity_backend/routes.js +36 -22
  249. package/dist/modules/activity_backend/routes.js.map +1 -1
  250. package/dist/modules/activity_backend/screens/activities-list.d.ts +15 -0
  251. package/dist/modules/activity_backend/screens/activities-list.d.ts.map +1 -0
  252. package/dist/modules/activity_backend/screens/activities-list.js +40 -0
  253. package/dist/modules/activity_backend/screens/activities-list.js.map +1 -0
  254. package/dist/modules/activity_backend/screens/index.d.ts +2 -0
  255. package/dist/modules/activity_backend/screens/index.d.ts.map +1 -0
  256. package/dist/modules/activity_backend/screens/index.js +2 -0
  257. package/dist/modules/activity_backend/screens/index.js.map +1 -0
  258. package/dist/modules/address/data/VN/NOTICE.md +1 -1
  259. package/dist/modules/address/index.d.ts.map +1 -1
  260. package/dist/modules/address/index.js +0 -1
  261. package/dist/modules/address/index.js.map +1 -1
  262. package/dist/modules/address_backend/index.d.ts +1 -1
  263. package/dist/modules/address_backend/index.d.ts.map +1 -1
  264. package/dist/modules/address_backend/index.js +1 -3
  265. package/dist/modules/address_backend/index.js.map +1 -1
  266. package/dist/modules/address_backend/routes.d.ts.map +1 -1
  267. package/dist/modules/address_backend/routes.js +20 -27
  268. package/dist/modules/address_backend/routes.js.map +1 -1
  269. package/dist/modules/address_backend/screens/catalogs-list.d.ts +14 -0
  270. package/dist/modules/address_backend/screens/catalogs-list.d.ts.map +1 -0
  271. package/dist/modules/address_backend/screens/catalogs-list.js +38 -0
  272. package/dist/modules/address_backend/screens/catalogs-list.js.map +1 -0
  273. package/dist/modules/address_backend/screens/country-browser.d.ts +12 -0
  274. package/dist/modules/address_backend/screens/country-browser.d.ts.map +1 -0
  275. package/dist/modules/address_backend/screens/country-browser.js +74 -0
  276. package/dist/modules/address_backend/screens/country-browser.js.map +1 -0
  277. package/dist/modules/address_backend/screens/index.d.ts +4 -0
  278. package/dist/modules/address_backend/screens/index.d.ts.map +1 -0
  279. package/dist/modules/address_backend/screens/index.js +3 -0
  280. package/dist/modules/address_backend/screens/index.js.map +1 -0
  281. package/dist/modules/address_backend/screens/types.d.ts +20 -0
  282. package/dist/modules/address_backend/screens/types.d.ts.map +1 -0
  283. package/dist/modules/address_backend/screens/types.js.map +1 -0
  284. package/dist/modules/attendance/channel-routes.d.ts +2 -0
  285. package/dist/modules/attendance/channel-routes.d.ts.map +1 -0
  286. package/dist/modules/attendance/channel-routes.js +234 -0
  287. package/dist/modules/attendance/channel-routes.js.map +1 -0
  288. package/dist/modules/attendance/functions.d.ts.map +1 -1
  289. package/dist/modules/attendance/functions.js +171 -22
  290. package/dist/modules/attendance/functions.js.map +1 -1
  291. package/dist/modules/attendance/index.d.ts.map +1 -1
  292. package/dist/modules/attendance/index.js +4 -2
  293. package/dist/modules/attendance/index.js.map +1 -1
  294. package/dist/modules/attendance/messages.d.ts +6 -0
  295. package/dist/modules/attendance/messages.d.ts.map +1 -1
  296. package/dist/modules/attendance/messages.js +6 -0
  297. package/dist/modules/attendance/messages.js.map +1 -1
  298. package/dist/modules/attendance/models.d.ts.map +1 -1
  299. package/dist/modules/attendance/models.js +1 -0
  300. package/dist/modules/attendance/models.js.map +1 -1
  301. package/dist/modules/attendance_backend/index.d.ts +3 -1
  302. package/dist/modules/attendance_backend/index.d.ts.map +1 -1
  303. package/dist/modules/attendance_backend/index.js +65 -4
  304. package/dist/modules/attendance_backend/index.js.map +1 -1
  305. package/dist/modules/attendance_backend/routes.d.ts.map +1 -1
  306. package/dist/modules/attendance_backend/routes.js +240 -53
  307. package/dist/modules/attendance_backend/routes.js.map +1 -1
  308. package/dist/modules/attendance_backend/screens/credentials.d.ts +32 -0
  309. package/dist/modules/attendance_backend/screens/credentials.d.ts.map +1 -0
  310. package/dist/modules/attendance_backend/screens/credentials.js +84 -0
  311. package/dist/modules/attendance_backend/screens/credentials.js.map +1 -0
  312. package/dist/modules/attendance_backend/screens/index.d.ts +4 -0
  313. package/dist/modules/attendance_backend/screens/index.d.ts.map +1 -0
  314. package/dist/modules/attendance_backend/screens/index.js +4 -0
  315. package/dist/modules/attendance_backend/screens/index.js.map +1 -0
  316. package/dist/modules/attendance_backend/screens/my-work.d.ts +35 -0
  317. package/dist/modules/attendance_backend/screens/my-work.d.ts.map +1 -0
  318. package/dist/modules/attendance_backend/screens/my-work.js +189 -0
  319. package/dist/modules/attendance_backend/screens/my-work.js.map +1 -0
  320. package/dist/modules/attendance_backend/screens/period.d.ts +22 -0
  321. package/dist/modules/attendance_backend/screens/period.d.ts.map +1 -0
  322. package/dist/modules/attendance_backend/screens/period.js +85 -0
  323. package/dist/modules/attendance_backend/screens/period.js.map +1 -0
  324. package/dist/modules/attendance_backend/screens.d.ts +0 -4
  325. package/dist/modules/attendance_backend/screens.d.ts.map +1 -1
  326. package/dist/modules/attendance_backend/screens.js +1 -209
  327. package/dist/modules/attendance_backend/screens.js.map +1 -1
  328. package/dist/modules/backend/catalogue.d.ts.map +1 -1
  329. package/dist/modules/backend/catalogue.js +53 -115
  330. package/dist/modules/backend/catalogue.js.map +1 -1
  331. package/dist/modules/backend/chart.d.ts +42 -0
  332. package/dist/modules/backend/chart.d.ts.map +1 -0
  333. package/dist/modules/backend/chart.js +39 -0
  334. package/dist/modules/backend/chart.js.map +1 -0
  335. package/dist/modules/backend/design/HANDOFF.md +118 -38
  336. package/dist/modules/backend/design/auth.css +463 -0
  337. package/dist/modules/backend/design/brand/logo-dark.png +0 -0
  338. package/dist/modules/backend/design/brand/logo-light.png +0 -0
  339. package/dist/modules/backend/design/charts.css +229 -0
  340. package/dist/modules/backend/design/client/chart.d.mts +31 -0
  341. package/dist/modules/backend/design/client/chart.d.mts.map +1 -0
  342. package/dist/modules/backend/design/client/chart.mjs +23 -0
  343. package/dist/modules/backend/design/client/chart.mjs.map +7 -0
  344. package/dist/modules/backend/design/client/relation-select.d.mts +6 -1
  345. package/dist/modules/backend/design/client/relation-select.d.mts.map +1 -1
  346. package/dist/modules/backend/design/client/relation-select.mjs +2 -7
  347. package/dist/modules/backend/design/client/relation-select.mjs.map +7 -1
  348. package/dist/modules/backend/design/client/table-selection.d.mts +7 -0
  349. package/dist/modules/backend/design/client/table-selection.d.mts.map +1 -0
  350. package/dist/modules/backend/design/client/table-selection.mjs +2 -0
  351. package/dist/modules/backend/design/client/table-selection.mjs.map +7 -0
  352. package/dist/modules/backend/design/content.css +766 -0
  353. package/dist/modules/backend/design/controls.css +451 -0
  354. package/dist/modules/backend/design/design-system.css +2 -0
  355. package/dist/modules/backend/design/forms.css +1134 -0
  356. package/dist/modules/backend/design/foundation.css +423 -0
  357. package/dist/modules/backend/design/lists.css +1462 -0
  358. package/dist/modules/backend/design/record.css +526 -0
  359. package/dist/modules/backend/design/responsive.css +331 -0
  360. package/dist/modules/backend/design/tokens.css +317 -92
  361. package/dist/modules/backend/index.d.ts +12 -5
  362. package/dist/modules/backend/index.d.ts.map +1 -1
  363. package/dist/modules/backend/index.js +32 -15
  364. package/dist/modules/backend/index.js.map +1 -1
  365. package/dist/modules/backend/islands.d.ts.map +1 -1
  366. package/dist/modules/backend/islands.js +22 -4
  367. package/dist/modules/backend/islands.js.map +1 -1
  368. package/dist/modules/backend/joints.d.ts +1 -1
  369. package/dist/modules/backend/joints.d.ts.map +1 -1
  370. package/dist/modules/backend/joints.js +14 -6
  371. package/dist/modules/backend/joints.js.map +1 -1
  372. package/dist/modules/backend/list-search.d.ts +33 -0
  373. package/dist/modules/backend/list-search.d.ts.map +1 -0
  374. package/dist/modules/backend/list-search.js +232 -0
  375. package/dist/modules/backend/list-search.js.map +1 -0
  376. package/dist/modules/backend/menus.d.ts.map +1 -1
  377. package/dist/modules/backend/menus.js +3 -12
  378. package/dist/modules/backend/menus.js.map +1 -1
  379. package/dist/modules/backend/messages.d.ts +1 -1
  380. package/dist/modules/backend/messages.d.ts.map +1 -1
  381. package/dist/modules/backend/messages.js +48 -35
  382. package/dist/modules/backend/messages.js.map +1 -1
  383. package/dist/modules/backend/paging.d.ts +1 -1
  384. package/dist/modules/backend/paging.d.ts.map +1 -1
  385. package/dist/modules/backend/paging.js +1 -1
  386. package/dist/modules/backend/paging.js.map +1 -1
  387. package/dist/modules/backend/relation-select.d.ts +2 -57
  388. package/dist/modules/backend/relation-select.d.ts.map +1 -1
  389. package/dist/modules/backend/relation-select.js +2 -0
  390. package/dist/modules/backend/relation-select.js.map +1 -1
  391. package/dist/modules/backend/routes.d.ts +1 -8
  392. package/dist/modules/backend/routes.d.ts.map +1 -1
  393. package/dist/modules/backend/routes.js +36 -111
  394. package/dist/modules/backend/routes.js.map +1 -1
  395. package/dist/modules/backend/screen.d.ts +130 -0
  396. package/dist/modules/backend/screen.d.ts.map +1 -0
  397. package/dist/modules/backend/screen.js +205 -0
  398. package/dist/modules/backend/screen.js.map +1 -0
  399. package/dist/modules/backend/screens.d.ts +11 -14
  400. package/dist/modules/backend/screens.d.ts.map +1 -1
  401. package/dist/modules/backend/screens.js +13 -70
  402. package/dist/modules/backend/screens.js.map +1 -1
  403. package/dist/modules/business_report_staff_channel/channel-routes.d.ts +2 -0
  404. package/dist/modules/business_report_staff_channel/channel-routes.d.ts.map +1 -0
  405. package/dist/modules/business_report_staff_channel/channel-routes.js +438 -0
  406. package/dist/modules/business_report_staff_channel/channel-routes.js.map +1 -0
  407. package/dist/modules/business_report_staff_channel/index.d.ts +5 -0
  408. package/dist/modules/business_report_staff_channel/index.d.ts.map +1 -0
  409. package/dist/modules/business_report_staff_channel/index.js +18 -0
  410. package/dist/modules/business_report_staff_channel/index.js.map +1 -0
  411. package/dist/modules/calendar/index.d.ts.map +1 -1
  412. package/dist/modules/calendar/index.js +0 -1
  413. package/dist/modules/calendar/index.js.map +1 -1
  414. package/dist/modules/calendar/recurrence.d.ts.map +1 -1
  415. package/dist/modules/calendar/recurrence.js +3 -11
  416. package/dist/modules/calendar/recurrence.js.map +1 -1
  417. package/dist/modules/calendar_activity/index.d.ts.map +1 -1
  418. package/dist/modules/calendar_activity/index.js +0 -2
  419. package/dist/modules/calendar_activity/index.js.map +1 -1
  420. package/dist/modules/calendar_backend/index.d.ts +1 -1
  421. package/dist/modules/calendar_backend/index.d.ts.map +1 -1
  422. package/dist/modules/calendar_backend/index.js +1 -3
  423. package/dist/modules/calendar_backend/index.js.map +1 -1
  424. package/dist/modules/calendar_backend/routes.d.ts.map +1 -1
  425. package/dist/modules/calendar_backend/routes.js +10 -22
  426. package/dist/modules/calendar_backend/routes.js.map +1 -1
  427. package/dist/modules/calendar_backend/screens/calendar.d.ts +5 -0
  428. package/dist/modules/calendar_backend/screens/calendar.d.ts.map +1 -0
  429. package/dist/modules/calendar_backend/screens/calendar.js +10 -0
  430. package/dist/modules/calendar_backend/screens/calendar.js.map +1 -0
  431. package/dist/modules/calendar_backend/screens/index.d.ts +2 -0
  432. package/dist/modules/calendar_backend/screens/index.d.ts.map +1 -0
  433. package/dist/modules/calendar_backend/screens/index.js +2 -0
  434. package/dist/modules/calendar_backend/screens/index.js.map +1 -0
  435. package/dist/modules/calendar_mail_transport/index.d.ts.map +1 -1
  436. package/dist/modules/calendar_mail_transport/index.js +0 -2
  437. package/dist/modules/calendar_mail_transport/index.js.map +1 -1
  438. package/dist/modules/channel_api/core.d.ts +253 -0
  439. package/dist/modules/channel_api/core.d.ts.map +1 -0
  440. package/dist/modules/channel_api/core.js +587 -0
  441. package/dist/modules/channel_api/core.js.map +1 -0
  442. package/dist/modules/channel_api/customer.d.ts +21 -0
  443. package/dist/modules/channel_api/customer.d.ts.map +1 -0
  444. package/dist/modules/channel_api/customer.js +368 -0
  445. package/dist/modules/channel_api/customer.js.map +1 -0
  446. package/dist/modules/channel_api/index.d.ts +6 -0
  447. package/dist/modules/channel_api/index.d.ts.map +1 -0
  448. package/dist/modules/channel_api/index.js +66 -0
  449. package/dist/modules/channel_api/index.js.map +1 -0
  450. package/dist/modules/channel_api/openapi.d.ts +17 -0
  451. package/dist/modules/channel_api/openapi.d.ts.map +1 -0
  452. package/dist/modules/channel_api/openapi.js +105 -0
  453. package/dist/modules/channel_api/openapi.js.map +1 -0
  454. package/dist/modules/channel_api/staff.d.ts +7 -0
  455. package/dist/modules/channel_api/staff.d.ts.map +1 -0
  456. package/dist/modules/channel_api/staff.js +209 -0
  457. package/dist/modules/channel_api/staff.js.map +1 -0
  458. package/dist/modules/company/functions.d.ts.map +1 -1
  459. package/dist/modules/company/functions.js +93 -12
  460. package/dist/modules/company/functions.js.map +1 -1
  461. package/dist/modules/company/index.js +3 -3
  462. package/dist/modules/company/index.js.map +1 -1
  463. package/dist/modules/company/messages.d.ts +8 -0
  464. package/dist/modules/company/messages.d.ts.map +1 -1
  465. package/dist/modules/company/messages.js +8 -0
  466. package/dist/modules/company/messages.js.map +1 -1
  467. package/dist/modules/company/models.d.ts +2 -2
  468. package/dist/modules/company/models.d.ts.map +1 -1
  469. package/dist/modules/company/models.js +12 -2
  470. package/dist/modules/company/models.js.map +1 -1
  471. package/dist/modules/company_backend/index.d.ts +2 -1
  472. package/dist/modules/company_backend/index.d.ts.map +1 -1
  473. package/dist/modules/company_backend/index.js +25 -4
  474. package/dist/modules/company_backend/index.js.map +1 -1
  475. package/dist/modules/company_backend/routes.d.ts.map +1 -1
  476. package/dist/modules/company_backend/routes.js +314 -96
  477. package/dist/modules/company_backend/routes.js.map +1 -1
  478. package/dist/modules/company_backend/screens/branch-form.d.ts +18 -0
  479. package/dist/modules/company_backend/screens/branch-form.d.ts.map +1 -0
  480. package/dist/modules/company_backend/screens/branch-form.js +63 -0
  481. package/dist/modules/company_backend/screens/branch-form.js.map +1 -0
  482. package/dist/modules/company_backend/screens/companies-list.d.ts +18 -0
  483. package/dist/modules/company_backend/screens/companies-list.d.ts.map +1 -0
  484. package/dist/modules/company_backend/screens/companies-list.js +49 -0
  485. package/dist/modules/company_backend/screens/companies-list.js.map +1 -0
  486. package/dist/modules/company_backend/screens/company-form.d.ts +25 -0
  487. package/dist/modules/company_backend/screens/company-form.d.ts.map +1 -0
  488. package/dist/modules/company_backend/screens/company-form.js +159 -0
  489. package/dist/modules/company_backend/screens/company-form.js.map +1 -0
  490. package/dist/modules/company_backend/screens/context.d.ts +30 -0
  491. package/dist/modules/company_backend/screens/context.d.ts.map +1 -0
  492. package/dist/modules/company_backend/screens/context.js +48 -0
  493. package/dist/modules/company_backend/screens/context.js.map +1 -0
  494. package/dist/modules/company_backend/screens/hierarchy.d.ts +16 -0
  495. package/dist/modules/company_backend/screens/hierarchy.d.ts.map +1 -0
  496. package/dist/modules/company_backend/screens/hierarchy.js +41 -0
  497. package/dist/modules/company_backend/screens/hierarchy.js.map +1 -0
  498. package/dist/modules/company_backend/screens/index.d.ts +7 -0
  499. package/dist/modules/company_backend/screens/index.d.ts.map +1 -0
  500. package/dist/modules/company_backend/screens/index.js +6 -0
  501. package/dist/modules/company_backend/screens/index.js.map +1 -0
  502. package/dist/modules/company_backend/screens/types.d.ts +22 -0
  503. package/dist/modules/company_backend/screens/types.d.ts.map +1 -0
  504. package/dist/modules/company_backend/screens/types.js +2 -0
  505. package/dist/modules/company_backend/screens/types.js.map +1 -0
  506. package/dist/modules/crm/functions.d.ts +1 -1
  507. package/dist/modules/crm/functions.d.ts.map +1 -1
  508. package/dist/modules/crm/functions.js +534 -75
  509. package/dist/modules/crm/functions.js.map +1 -1
  510. package/dist/modules/crm/index.d.ts +2 -1
  511. package/dist/modules/crm/index.d.ts.map +1 -1
  512. package/dist/modules/crm/index.js +3 -4
  513. package/dist/modules/crm/index.js.map +1 -1
  514. package/dist/modules/crm/jobs.d.ts +10 -0
  515. package/dist/modules/crm/jobs.d.ts.map +1 -1
  516. package/dist/modules/crm/jobs.js +50 -1
  517. package/dist/modules/crm/jobs.js.map +1 -1
  518. package/dist/modules/crm/messages.d.ts +14 -1
  519. package/dist/modules/crm/messages.d.ts.map +1 -1
  520. package/dist/modules/crm/messages.js +26 -0
  521. package/dist/modules/crm/messages.js.map +1 -1
  522. package/dist/modules/crm/models.d.ts.map +1 -1
  523. package/dist/modules/crm/models.js +25 -0
  524. package/dist/modules/crm/models.js.map +1 -1
  525. package/dist/modules/crm/operations.d.ts +110 -1
  526. package/dist/modules/crm/operations.d.ts.map +1 -1
  527. package/dist/modules/crm/operations.js +612 -84
  528. package/dist/modules/crm/operations.js.map +1 -1
  529. package/dist/modules/crm_backend/client/crm-kanban-view.d.mts.map +1 -1
  530. package/dist/modules/crm_backend/client/crm-kanban-view.mjs +132 -32
  531. package/dist/modules/crm_backend/client/crm-kanban-view.mjs.map +1 -1
  532. package/dist/modules/crm_backend/client/crm.css +398 -63
  533. package/dist/modules/crm_backend/index.d.ts.map +1 -1
  534. package/dist/modules/crm_backend/index.js +12 -4
  535. package/dist/modules/crm_backend/index.js.map +1 -1
  536. package/dist/modules/crm_backend/messages.d.ts +212 -0
  537. package/dist/modules/crm_backend/messages.d.ts.map +1 -1
  538. package/dist/modules/crm_backend/messages.js +212 -0
  539. package/dist/modules/crm_backend/messages.js.map +1 -1
  540. package/dist/modules/crm_backend/relation-control.d.ts +51 -0
  541. package/dist/modules/crm_backend/relation-control.d.ts.map +1 -0
  542. package/dist/modules/crm_backend/relation-control.js +107 -0
  543. package/dist/modules/crm_backend/relation-control.js.map +1 -0
  544. package/dist/modules/crm_backend/routes.d.ts.map +1 -1
  545. package/dist/modules/crm_backend/routes.js +1068 -260
  546. package/dist/modules/crm_backend/routes.js.map +1 -1
  547. package/dist/modules/crm_backend/screens/activity-planner.d.ts +22 -0
  548. package/dist/modules/crm_backend/screens/activity-planner.d.ts.map +1 -0
  549. package/dist/modules/crm_backend/screens/activity-planner.js +159 -0
  550. package/dist/modules/crm_backend/screens/activity-planner.js.map +1 -0
  551. package/dist/modules/crm_backend/screens/case-create.d.ts +15 -0
  552. package/dist/modules/crm_backend/screens/case-create.d.ts.map +1 -0
  553. package/dist/modules/crm_backend/screens/case-create.js +19 -0
  554. package/dist/modules/crm_backend/screens/case-create.js.map +1 -0
  555. package/dist/modules/crm_backend/screens/case-detail.d.ts +46 -0
  556. package/dist/modules/crm_backend/screens/case-detail.d.ts.map +1 -0
  557. package/dist/modules/crm_backend/screens/case-detail.js +506 -0
  558. package/dist/modules/crm_backend/screens/case-detail.js.map +1 -0
  559. package/dist/modules/crm_backend/screens/cases-list.d.ts +16 -0
  560. package/dist/modules/crm_backend/screens/cases-list.d.ts.map +1 -0
  561. package/dist/modules/crm_backend/screens/cases-list.js +86 -0
  562. package/dist/modules/crm_backend/screens/cases-list.js.map +1 -0
  563. package/dist/modules/crm_backend/screens/configuration.d.ts +28 -0
  564. package/dist/modules/crm_backend/screens/configuration.d.ts.map +1 -0
  565. package/dist/modules/crm_backend/screens/configuration.js +115 -0
  566. package/dist/modules/crm_backend/screens/configuration.js.map +1 -0
  567. package/dist/modules/crm_backend/screens/index.d.ts +14 -0
  568. package/dist/modules/crm_backend/screens/index.d.ts.map +1 -0
  569. package/dist/modules/crm_backend/screens/index.js +8 -0
  570. package/dist/modules/crm_backend/screens/index.js.map +1 -0
  571. package/dist/modules/crm_backend/screens/leaderboard.d.ts +12 -0
  572. package/dist/modules/crm_backend/screens/leaderboard.d.ts.map +1 -0
  573. package/dist/modules/crm_backend/screens/leaderboard.js +89 -0
  574. package/dist/modules/crm_backend/screens/leaderboard.js.map +1 -0
  575. package/dist/modules/crm_backend/screens/pipeline.d.ts +21 -0
  576. package/dist/modules/crm_backend/screens/pipeline.d.ts.map +1 -0
  577. package/dist/modules/crm_backend/screens/pipeline.js +22 -0
  578. package/dist/modules/crm_backend/screens/pipeline.js.map +1 -0
  579. package/dist/modules/crm_sale/index.d.ts.map +1 -1
  580. package/dist/modules/crm_sale/index.js +3 -4
  581. package/dist/modules/crm_sale/index.js.map +1 -1
  582. package/dist/modules/crm_sale/messages.d.ts +3 -1
  583. package/dist/modules/crm_sale/messages.d.ts.map +1 -1
  584. package/dist/modules/crm_sale/messages.js +4 -0
  585. package/dist/modules/crm_sale/messages.js.map +1 -1
  586. package/dist/modules/crm_sale/sale-functions.d.ts +8 -1
  587. package/dist/modules/crm_sale/sale-functions.d.ts.map +1 -1
  588. package/dist/modules/crm_sale/sale-functions.js +184 -55
  589. package/dist/modules/crm_sale/sale-functions.js.map +1 -1
  590. package/dist/modules/crm_staff_channel/channel-routes.d.ts +2 -0
  591. package/dist/modules/crm_staff_channel/channel-routes.d.ts.map +1 -0
  592. package/dist/modules/crm_staff_channel/channel-routes.js +788 -0
  593. package/dist/modules/crm_staff_channel/channel-routes.js.map +1 -0
  594. package/dist/modules/crm_staff_channel/index.d.ts +5 -0
  595. package/dist/modules/crm_staff_channel/index.d.ts.map +1 -0
  596. package/dist/modules/crm_staff_channel/index.js +30 -0
  597. package/dist/modules/crm_staff_channel/index.js.map +1 -0
  598. package/dist/modules/crm_website/functions.d.ts.map +1 -1
  599. package/dist/modules/crm_website/functions.js +89 -10
  600. package/dist/modules/crm_website/functions.js.map +1 -1
  601. package/dist/modules/crm_website/index.js +1 -2
  602. package/dist/modules/crm_website/index.js.map +1 -1
  603. package/dist/modules/crm_website/messages.d.ts +4 -1
  604. package/dist/modules/crm_website/messages.d.ts.map +1 -1
  605. package/dist/modules/crm_website/messages.js +6 -0
  606. package/dist/modules/crm_website/messages.js.map +1 -1
  607. package/dist/modules/crm_website/models.d.ts.map +1 -1
  608. package/dist/modules/crm_website/models.js +18 -0
  609. package/dist/modules/crm_website/models.js.map +1 -1
  610. package/dist/modules/crm_website/routes.d.ts.map +1 -1
  611. package/dist/modules/crm_website/routes.js +44 -12
  612. package/dist/modules/crm_website/routes.js.map +1 -1
  613. package/dist/modules/crm_website/screens.d.ts +7 -1
  614. package/dist/modules/crm_website/screens.d.ts.map +1 -1
  615. package/dist/modules/crm_website/screens.js +13 -8
  616. package/dist/modules/crm_website/screens.js.map +1 -1
  617. package/dist/modules/flow/functions.d.ts +3 -0
  618. package/dist/modules/flow/functions.d.ts.map +1 -0
  619. package/dist/modules/flow/functions.js +1876 -0
  620. package/dist/modules/flow/functions.js.map +1 -0
  621. package/dist/modules/flow/index.d.ts +12 -0
  622. package/dist/modules/flow/index.d.ts.map +1 -0
  623. package/dist/modules/flow/index.js +30 -0
  624. package/dist/modules/flow/index.js.map +1 -0
  625. package/dist/modules/flow/jobs.d.ts +3 -0
  626. package/dist/modules/flow/jobs.d.ts.map +1 -0
  627. package/dist/modules/flow/jobs.js +136 -0
  628. package/dist/modules/flow/jobs.js.map +1 -0
  629. package/dist/modules/flow/membership.d.ts +72 -0
  630. package/dist/modules/flow/membership.d.ts.map +1 -0
  631. package/dist/modules/flow/membership.js +176 -0
  632. package/dist/modules/flow/membership.js.map +1 -0
  633. package/dist/modules/flow/messages.d.ts +79 -0
  634. package/dist/modules/flow/messages.d.ts.map +1 -0
  635. package/dist/modules/flow/messages.js +152 -0
  636. package/dist/modules/flow/messages.js.map +1 -0
  637. package/dist/modules/flow/models.d.ts +3 -0
  638. package/dist/modules/flow/models.d.ts.map +1 -0
  639. package/dist/modules/flow/models.js +453 -0
  640. package/dist/modules/flow/models.js.map +1 -0
  641. package/dist/modules/flow/operations.d.ts +408 -0
  642. package/dist/modules/flow/operations.d.ts.map +1 -0
  643. package/dist/modules/flow/operations.js +1665 -0
  644. package/dist/modules/flow/operations.js.map +1 -0
  645. package/dist/modules/flow/pages.d.ts +146 -0
  646. package/dist/modules/flow/pages.d.ts.map +1 -0
  647. package/dist/modules/flow/pages.js +394 -0
  648. package/dist/modules/flow/pages.js.map +1 -0
  649. package/dist/modules/flow/projects.d.ts +41 -0
  650. package/dist/modules/flow/projects.d.ts.map +1 -0
  651. package/dist/modules/flow/projects.js +74 -0
  652. package/dist/modules/flow/projects.js.map +1 -0
  653. package/dist/modules/flow/search.d.ts +57 -0
  654. package/dist/modules/flow/search.d.ts.map +1 -0
  655. package/dist/modules/flow/search.js +110 -0
  656. package/dist/modules/flow/search.js.map +1 -0
  657. package/dist/modules/flow/types.d.ts +17 -0
  658. package/dist/modules/flow/types.d.ts.map +1 -0
  659. package/dist/modules/flow/types.js +13 -0
  660. package/dist/modules/flow/types.js.map +1 -0
  661. package/dist/modules/flow_backend/functions.d.ts +3 -0
  662. package/dist/modules/flow_backend/functions.d.ts.map +1 -0
  663. package/dist/modules/flow_backend/functions.js +162 -0
  664. package/dist/modules/flow_backend/functions.js.map +1 -0
  665. package/dist/modules/flow_backend/index.d.ts +3 -0
  666. package/dist/modules/flow_backend/index.d.ts.map +1 -0
  667. package/dist/modules/flow_backend/index.js +96 -0
  668. package/dist/modules/flow_backend/index.js.map +1 -0
  669. package/dist/modules/flow_backend/islands.d.ts +3 -0
  670. package/dist/modules/flow_backend/islands.d.ts.map +1 -0
  671. package/dist/modules/flow_backend/islands.js +31 -0
  672. package/dist/modules/flow_backend/islands.js.map +1 -0
  673. package/dist/modules/flow_backend/messages.d.ts +248 -0
  674. package/dist/modules/flow_backend/messages.d.ts.map +1 -0
  675. package/dist/modules/flow_backend/messages.js +470 -0
  676. package/dist/modules/flow_backend/messages.js.map +1 -0
  677. package/dist/modules/flow_backend/relation-control.d.ts +53 -0
  678. package/dist/modules/flow_backend/relation-control.d.ts.map +1 -0
  679. package/dist/modules/flow_backend/relation-control.js +106 -0
  680. package/dist/modules/flow_backend/relation-control.js.map +1 -0
  681. package/dist/modules/flow_backend/routes.d.ts +3 -0
  682. package/dist/modules/flow_backend/routes.d.ts.map +1 -0
  683. package/dist/modules/flow_backend/routes.js +2519 -0
  684. package/dist/modules/flow_backend/routes.js.map +1 -0
  685. package/dist/modules/flow_backend/screens/all-epics.d.ts +19 -0
  686. package/dist/modules/flow_backend/screens/all-epics.d.ts.map +1 -0
  687. package/dist/modules/flow_backend/screens/all-epics.js +59 -0
  688. package/dist/modules/flow_backend/screens/all-epics.js.map +1 -0
  689. package/dist/modules/flow_backend/screens/all-pages.d.ts +19 -0
  690. package/dist/modules/flow_backend/screens/all-pages.d.ts.map +1 -0
  691. package/dist/modules/flow_backend/screens/all-pages.js +65 -0
  692. package/dist/modules/flow_backend/screens/all-pages.js.map +1 -0
  693. package/dist/modules/flow_backend/screens/board.d.ts +5 -0
  694. package/dist/modules/flow_backend/screens/board.d.ts.map +1 -0
  695. package/dist/modules/flow_backend/screens/board.js +7 -0
  696. package/dist/modules/flow_backend/screens/board.js.map +1 -0
  697. package/dist/modules/flow_backend/screens/epic-detail.d.ts +22 -0
  698. package/dist/modules/flow_backend/screens/epic-detail.d.ts.map +1 -0
  699. package/dist/modules/flow_backend/screens/epic-detail.js +41 -0
  700. package/dist/modules/flow_backend/screens/epic-detail.js.map +1 -0
  701. package/dist/modules/flow_backend/screens/gantt.d.ts +21 -0
  702. package/dist/modules/flow_backend/screens/gantt.d.ts.map +1 -0
  703. package/dist/modules/flow_backend/screens/gantt.js +42 -0
  704. package/dist/modules/flow_backend/screens/gantt.js.map +1 -0
  705. package/dist/modules/flow_backend/screens/index.d.ts +29 -0
  706. package/dist/modules/flow_backend/screens/index.d.ts.map +1 -0
  707. package/dist/modules/flow_backend/screens/index.js +23 -0
  708. package/dist/modules/flow_backend/screens/index.js.map +1 -0
  709. package/dist/modules/flow_backend/screens/issue-detail.d.ts +38 -0
  710. package/dist/modules/flow_backend/screens/issue-detail.d.ts.map +1 -0
  711. package/dist/modules/flow_backend/screens/issue-detail.js +336 -0
  712. package/dist/modules/flow_backend/screens/issue-detail.js.map +1 -0
  713. package/dist/modules/flow_backend/screens/issues.d.ts +34 -0
  714. package/dist/modules/flow_backend/screens/issues.d.ts.map +1 -0
  715. package/dist/modules/flow_backend/screens/issues.js +118 -0
  716. package/dist/modules/flow_backend/screens/issues.js.map +1 -0
  717. package/dist/modules/flow_backend/screens/map.d.ts +13 -0
  718. package/dist/modules/flow_backend/screens/map.d.ts.map +1 -0
  719. package/dist/modules/flow_backend/screens/map.js +16 -0
  720. package/dist/modules/flow_backend/screens/map.js.map +1 -0
  721. package/dist/modules/flow_backend/screens/my-work.d.ts +42 -0
  722. package/dist/modules/flow_backend/screens/my-work.d.ts.map +1 -0
  723. package/dist/modules/flow_backend/screens/my-work.js +157 -0
  724. package/dist/modules/flow_backend/screens/my-work.js.map +1 -0
  725. package/dist/modules/flow_backend/screens/nav.d.ts +3 -0
  726. package/dist/modules/flow_backend/screens/nav.d.ts.map +1 -0
  727. package/dist/modules/flow_backend/screens/nav.js +79 -0
  728. package/dist/modules/flow_backend/screens/nav.js.map +1 -0
  729. package/dist/modules/flow_backend/screens/page-detail.d.ts +31 -0
  730. package/dist/modules/flow_backend/screens/page-detail.d.ts.map +1 -0
  731. package/dist/modules/flow_backend/screens/page-detail.js +113 -0
  732. package/dist/modules/flow_backend/screens/page-detail.js.map +1 -0
  733. package/dist/modules/flow_backend/screens/project-create.d.ts +26 -0
  734. package/dist/modules/flow_backend/screens/project-create.d.ts.map +1 -0
  735. package/dist/modules/flow_backend/screens/project-create.js +56 -0
  736. package/dist/modules/flow_backend/screens/project-create.js.map +1 -0
  737. package/dist/modules/flow_backend/screens/project-epics.d.ts +33 -0
  738. package/dist/modules/flow_backend/screens/project-epics.d.ts.map +1 -0
  739. package/dist/modules/flow_backend/screens/project-epics.js +90 -0
  740. package/dist/modules/flow_backend/screens/project-epics.js.map +1 -0
  741. package/dist/modules/flow_backend/screens/project-pages.d.ts +34 -0
  742. package/dist/modules/flow_backend/screens/project-pages.d.ts.map +1 -0
  743. package/dist/modules/flow_backend/screens/project-pages.js +66 -0
  744. package/dist/modules/flow_backend/screens/project-pages.js.map +1 -0
  745. package/dist/modules/flow_backend/screens/project-settings.d.ts +69 -0
  746. package/dist/modules/flow_backend/screens/project-settings.d.ts.map +1 -0
  747. package/dist/modules/flow_backend/screens/project-settings.js +248 -0
  748. package/dist/modules/flow_backend/screens/project-settings.js.map +1 -0
  749. package/dist/modules/flow_backend/screens/projects-list.d.ts +30 -0
  750. package/dist/modules/flow_backend/screens/projects-list.d.ts.map +1 -0
  751. package/dist/modules/flow_backend/screens/projects-list.js +121 -0
  752. package/dist/modules/flow_backend/screens/projects-list.js.map +1 -0
  753. package/dist/modules/flow_backend/screens/shared.d.ts +28 -0
  754. package/dist/modules/flow_backend/screens/shared.d.ts.map +1 -0
  755. package/dist/modules/flow_backend/screens/shared.js +46 -0
  756. package/dist/modules/flow_backend/screens/shared.js.map +1 -0
  757. package/dist/modules/flow_backend/screens/sprints.d.ts +33 -0
  758. package/dist/modules/flow_backend/screens/sprints.d.ts.map +1 -0
  759. package/dist/modules/flow_backend/screens/sprints.js +159 -0
  760. package/dist/modules/flow_backend/screens/sprints.js.map +1 -0
  761. package/dist/modules/flow_staff_channel/channel-routes.d.ts +2 -0
  762. package/dist/modules/flow_staff_channel/channel-routes.d.ts.map +1 -0
  763. package/dist/modules/flow_staff_channel/channel-routes.js +444 -0
  764. package/dist/modules/flow_staff_channel/channel-routes.js.map +1 -0
  765. package/dist/modules/flow_staff_channel/index.d.ts +5 -0
  766. package/dist/modules/flow_staff_channel/index.d.ts.map +1 -0
  767. package/dist/modules/flow_staff_channel/index.js +30 -0
  768. package/dist/modules/flow_staff_channel/index.js.map +1 -0
  769. package/dist/modules/hospitality_billing/functions.d.ts +18 -0
  770. package/dist/modules/hospitality_billing/functions.d.ts.map +1 -0
  771. package/dist/modules/hospitality_billing/functions.js +426 -0
  772. package/dist/modules/hospitality_billing/functions.js.map +1 -0
  773. package/dist/modules/hospitality_billing/index.d.ts +3 -0
  774. package/dist/modules/hospitality_billing/index.d.ts.map +1 -0
  775. package/dist/modules/hospitality_billing/index.js +25 -0
  776. package/dist/modules/hospitality_billing/index.js.map +1 -0
  777. package/dist/modules/hospitality_billing/jobs.d.ts +17 -0
  778. package/dist/modules/hospitality_billing/jobs.d.ts.map +1 -0
  779. package/dist/modules/hospitality_billing/jobs.js +83 -0
  780. package/dist/modules/hospitality_billing/jobs.js.map +1 -0
  781. package/dist/modules/hospitality_billing/menus.d.ts +9 -0
  782. package/dist/modules/hospitality_billing/menus.d.ts.map +1 -0
  783. package/dist/modules/hospitality_billing/menus.js +25 -0
  784. package/dist/modules/hospitality_billing/menus.js.map +1 -0
  785. package/dist/modules/hospitality_billing/messages.d.ts +3 -0
  786. package/dist/modules/hospitality_billing/messages.d.ts.map +1 -0
  787. package/dist/modules/hospitality_billing/messages.js +163 -0
  788. package/dist/modules/hospitality_billing/messages.js.map +1 -0
  789. package/dist/modules/hospitality_billing/models.d.ts +3 -0
  790. package/dist/modules/hospitality_billing/models.d.ts.map +1 -0
  791. package/dist/modules/hospitality_billing/models.js +65 -0
  792. package/dist/modules/hospitality_billing/models.js.map +1 -0
  793. package/dist/modules/hospitality_billing/routes.d.ts +3 -0
  794. package/dist/modules/hospitality_billing/routes.d.ts.map +1 -0
  795. package/dist/modules/hospitality_billing/routes.js +189 -0
  796. package/dist/modules/hospitality_billing/routes.js.map +1 -0
  797. package/dist/modules/hospitality_billing/screens/billing.d.ts +3 -0
  798. package/dist/modules/hospitality_billing/screens/billing.d.ts.map +1 -0
  799. package/dist/modules/hospitality_billing/screens/billing.js +20 -0
  800. package/dist/modules/hospitality_billing/screens/billing.js.map +1 -0
  801. package/dist/modules/hospitality_billing/screens/charge-rules.d.ts +12 -0
  802. package/dist/modules/hospitality_billing/screens/charge-rules.d.ts.map +1 -0
  803. package/dist/modules/hospitality_billing/screens/charge-rules.js +86 -0
  804. package/dist/modules/hospitality_billing/screens/charge-rules.js.map +1 -0
  805. package/dist/modules/hospitality_billing/screens/index.d.ts +4 -0
  806. package/dist/modules/hospitality_billing/screens/index.d.ts.map +1 -0
  807. package/dist/modules/hospitality_billing/screens/index.js +4 -0
  808. package/dist/modules/hospitality_billing/screens/index.js.map +1 -0
  809. package/dist/modules/hospitality_billing/screens/page-frame.d.ts +14 -0
  810. package/dist/modules/hospitality_billing/screens/page-frame.d.ts.map +1 -0
  811. package/dist/modules/hospitality_billing/screens/page-frame.js +6 -0
  812. package/dist/modules/hospitality_billing/screens/page-frame.js.map +1 -0
  813. package/dist/modules/hospitality_billing/screens/shared.d.ts +64 -0
  814. package/dist/modules/hospitality_billing/screens/shared.d.ts.map +1 -0
  815. package/dist/modules/hospitality_billing/screens/shared.js +117 -0
  816. package/dist/modules/hospitality_billing/screens/shared.js.map +1 -0
  817. package/dist/modules/hospitality_core/calendar.d.ts.map +1 -1
  818. package/dist/modules/hospitality_core/calendar.js +2 -1
  819. package/dist/modules/hospitality_core/calendar.js.map +1 -1
  820. package/dist/modules/hospitality_core/catalog.d.ts +3 -0
  821. package/dist/modules/hospitality_core/catalog.d.ts.map +1 -0
  822. package/dist/modules/hospitality_core/catalog.js +284 -0
  823. package/dist/modules/hospitality_core/catalog.js.map +1 -0
  824. package/dist/modules/hospitality_core/functions.d.ts.map +1 -1
  825. package/dist/modules/hospitality_core/functions.js +131 -14
  826. package/dist/modules/hospitality_core/functions.js.map +1 -1
  827. package/dist/modules/hospitality_core/index.d.ts +2 -2
  828. package/dist/modules/hospitality_core/index.d.ts.map +1 -1
  829. package/dist/modules/hospitality_core/index.js +6 -3
  830. package/dist/modules/hospitality_core/index.js.map +1 -1
  831. package/dist/modules/hospitality_core/inventory.d.ts +53 -4
  832. package/dist/modules/hospitality_core/inventory.d.ts.map +1 -1
  833. package/dist/modules/hospitality_core/inventory.js +121 -14
  834. package/dist/modules/hospitality_core/inventory.js.map +1 -1
  835. package/dist/modules/hospitality_core/menus.d.ts.map +1 -1
  836. package/dist/modules/hospitality_core/menus.js +31 -0
  837. package/dist/modules/hospitality_core/menus.js.map +1 -1
  838. package/dist/modules/hospitality_core/messages.d.ts.map +1 -1
  839. package/dist/modules/hospitality_core/messages.js +393 -183
  840. package/dist/modules/hospitality_core/messages.js.map +1 -1
  841. package/dist/modules/hospitality_core/models.d.ts +1 -1
  842. package/dist/modules/hospitality_core/models.d.ts.map +1 -1
  843. package/dist/modules/hospitality_core/models.js +48 -2
  844. package/dist/modules/hospitality_core/models.js.map +1 -1
  845. package/dist/modules/hospitality_core/night-audit.d.ts +1 -0
  846. package/dist/modules/hospitality_core/night-audit.d.ts.map +1 -1
  847. package/dist/modules/hospitality_core/night-audit.js +39 -1
  848. package/dist/modules/hospitality_core/night-audit.js.map +1 -1
  849. package/dist/modules/hospitality_core/online-booking.d.ts +5 -0
  850. package/dist/modules/hospitality_core/online-booking.d.ts.map +1 -0
  851. package/dist/modules/hospitality_core/online-booking.js +775 -0
  852. package/dist/modules/hospitality_core/online-booking.js.map +1 -0
  853. package/dist/modules/hospitality_core/operations.d.ts +21 -1
  854. package/dist/modules/hospitality_core/operations.d.ts.map +1 -1
  855. package/dist/modules/hospitality_core/operations.js +432 -67
  856. package/dist/modules/hospitality_core/operations.js.map +1 -1
  857. package/dist/modules/hospitality_core/relations.d.ts.map +1 -1
  858. package/dist/modules/hospitality_core/relations.js +1 -0
  859. package/dist/modules/hospitality_core/relations.js.map +1 -1
  860. package/dist/modules/hospitality_core/routes.d.ts.map +1 -1
  861. package/dist/modules/hospitality_core/routes.js +514 -107
  862. package/dist/modules/hospitality_core/routes.js.map +1 -1
  863. package/dist/modules/hospitality_core/screens/amenities.d.ts +10 -0
  864. package/dist/modules/hospitality_core/screens/amenities.d.ts.map +1 -0
  865. package/dist/modules/hospitality_core/screens/amenities.js +65 -0
  866. package/dist/modules/hospitality_core/screens/amenities.js.map +1 -0
  867. package/dist/modules/hospitality_core/screens/building-detail.d.ts +3 -0
  868. package/dist/modules/hospitality_core/screens/building-detail.d.ts.map +1 -0
  869. package/dist/modules/hospitality_core/screens/building-detail.js +69 -0
  870. package/dist/modules/hospitality_core/screens/building-detail.js.map +1 -0
  871. package/dist/modules/hospitality_core/screens/cleaning-task-detail.d.ts +7 -0
  872. package/dist/modules/hospitality_core/screens/cleaning-task-detail.d.ts.map +1 -0
  873. package/dist/modules/hospitality_core/screens/cleaning-task-detail.js +109 -0
  874. package/dist/modules/hospitality_core/screens/cleaning-task-detail.js.map +1 -0
  875. package/dist/modules/hospitality_core/screens/cleaning-tasks.d.ts +20 -0
  876. package/dist/modules/hospitality_core/screens/cleaning-tasks.d.ts.map +1 -0
  877. package/dist/modules/hospitality_core/screens/cleaning-tasks.js +139 -0
  878. package/dist/modules/hospitality_core/screens/cleaning-tasks.js.map +1 -0
  879. package/dist/modules/hospitality_core/screens/content.d.ts +3 -0
  880. package/dist/modules/hospitality_core/screens/content.d.ts.map +1 -0
  881. package/dist/modules/hospitality_core/screens/content.js +114 -0
  882. package/dist/modules/hospitality_core/screens/content.js.map +1 -0
  883. package/dist/modules/hospitality_core/screens/floor-detail.d.ts +3 -0
  884. package/dist/modules/hospitality_core/screens/floor-detail.d.ts.map +1 -0
  885. package/dist/modules/hospitality_core/screens/floor-detail.js +74 -0
  886. package/dist/modules/hospitality_core/screens/floor-detail.js.map +1 -0
  887. package/dist/modules/hospitality_core/screens/folio-detail.d.ts +3 -0
  888. package/dist/modules/hospitality_core/screens/folio-detail.d.ts.map +1 -0
  889. package/dist/modules/hospitality_core/screens/folio-detail.js +142 -0
  890. package/dist/modules/hospitality_core/screens/folio-detail.js.map +1 -0
  891. package/dist/modules/hospitality_core/screens/folios.d.ts +3 -0
  892. package/dist/modules/hospitality_core/screens/folios.d.ts.map +1 -0
  893. package/dist/modules/hospitality_core/screens/folios.js +7 -0
  894. package/dist/modules/hospitality_core/screens/folios.js.map +1 -0
  895. package/dist/modules/hospitality_core/screens/front-desk.d.ts +35 -0
  896. package/dist/modules/hospitality_core/screens/front-desk.d.ts.map +1 -0
  897. package/dist/modules/hospitality_core/screens/front-desk.js +195 -0
  898. package/dist/modules/hospitality_core/screens/front-desk.js.map +1 -0
  899. package/dist/modules/hospitality_core/screens/housekeeping-room-detail.d.ts +3 -0
  900. package/dist/modules/hospitality_core/screens/housekeeping-room-detail.d.ts.map +1 -0
  901. package/dist/modules/hospitality_core/screens/housekeeping-room-detail.js +121 -0
  902. package/dist/modules/hospitality_core/screens/housekeeping-room-detail.js.map +1 -0
  903. package/dist/modules/hospitality_core/screens/housekeeping-rooms.d.ts +9 -0
  904. package/dist/modules/hospitality_core/screens/housekeeping-rooms.d.ts.map +1 -0
  905. package/dist/modules/hospitality_core/screens/housekeeping-rooms.js +54 -0
  906. package/dist/modules/hospitality_core/screens/housekeeping-rooms.js.map +1 -0
  907. package/dist/modules/hospitality_core/screens/index.d.ts +33 -0
  908. package/dist/modules/hospitality_core/screens/index.d.ts.map +1 -0
  909. package/dist/modules/hospitality_core/screens/index.js +33 -0
  910. package/dist/modules/hospitality_core/screens/index.js.map +1 -0
  911. package/dist/modules/hospitality_core/screens/inventory.d.ts +8 -0
  912. package/dist/modules/hospitality_core/screens/inventory.d.ts.map +1 -0
  913. package/dist/modules/hospitality_core/screens/inventory.js +122 -0
  914. package/dist/modules/hospitality_core/screens/inventory.js.map +1 -0
  915. package/dist/modules/hospitality_core/screens/new-property.d.ts +3 -0
  916. package/dist/modules/hospitality_core/screens/new-property.d.ts.map +1 -0
  917. package/dist/modules/hospitality_core/screens/new-property.js +8 -0
  918. package/dist/modules/hospitality_core/screens/new-property.js.map +1 -0
  919. package/dist/modules/hospitality_core/screens/new-room-type.d.ts +3 -0
  920. package/dist/modules/hospitality_core/screens/new-room-type.d.ts.map +1 -0
  921. package/dist/modules/hospitality_core/screens/new-room-type.js +8 -0
  922. package/dist/modules/hospitality_core/screens/new-room-type.js.map +1 -0
  923. package/dist/modules/hospitality_core/screens/new-room.d.ts +3 -0
  924. package/dist/modules/hospitality_core/screens/new-room.d.ts.map +1 -0
  925. package/dist/modules/hospitality_core/screens/new-room.js +8 -0
  926. package/dist/modules/hospitality_core/screens/new-room.js.map +1 -0
  927. package/dist/modules/hospitality_core/screens/night-audit.d.ts +10 -0
  928. package/dist/modules/hospitality_core/screens/night-audit.d.ts.map +1 -0
  929. package/dist/modules/hospitality_core/screens/night-audit.js +67 -0
  930. package/dist/modules/hospitality_core/screens/night-audit.js.map +1 -0
  931. package/dist/modules/hospitality_core/screens/page-frame.d.ts +15 -0
  932. package/dist/modules/hospitality_core/screens/page-frame.d.ts.map +1 -0
  933. package/dist/modules/hospitality_core/screens/page-frame.js +10 -0
  934. package/dist/modules/hospitality_core/screens/page-frame.js.map +1 -0
  935. package/dist/modules/hospitality_core/screens/policies.d.ts +10 -0
  936. package/dist/modules/hospitality_core/screens/policies.d.ts.map +1 -0
  937. package/dist/modules/hospitality_core/screens/policies.js +72 -0
  938. package/dist/modules/hospitality_core/screens/policies.js.map +1 -0
  939. package/dist/modules/hospitality_core/screens/properties.d.ts +7 -0
  940. package/dist/modules/hospitality_core/screens/properties.d.ts.map +1 -0
  941. package/dist/modules/hospitality_core/screens/properties.js +45 -0
  942. package/dist/modules/hospitality_core/screens/properties.js.map +1 -0
  943. package/dist/modules/hospitality_core/screens/property-detail.d.ts +3 -0
  944. package/dist/modules/hospitality_core/screens/property-detail.d.ts.map +1 -0
  945. package/dist/modules/hospitality_core/screens/property-detail.js +92 -0
  946. package/dist/modules/hospitality_core/screens/property-detail.js.map +1 -0
  947. package/dist/modules/hospitality_core/screens/rate-plans.d.ts +10 -0
  948. package/dist/modules/hospitality_core/screens/rate-plans.d.ts.map +1 -0
  949. package/dist/modules/hospitality_core/screens/rate-plans.js +123 -0
  950. package/dist/modules/hospitality_core/screens/rate-plans.js.map +1 -0
  951. package/dist/modules/hospitality_core/screens/reservation-detail.d.ts +11 -0
  952. package/dist/modules/hospitality_core/screens/reservation-detail.d.ts.map +1 -0
  953. package/dist/modules/hospitality_core/screens/reservation-detail.js +237 -0
  954. package/dist/modules/hospitality_core/screens/reservation-detail.js.map +1 -0
  955. package/dist/modules/hospitality_core/screens/reservations.d.ts +17 -0
  956. package/dist/modules/hospitality_core/screens/reservations.d.ts.map +1 -0
  957. package/dist/modules/hospitality_core/screens/reservations.js +166 -0
  958. package/dist/modules/hospitality_core/screens/reservations.js.map +1 -0
  959. package/dist/modules/hospitality_core/screens/room-detail.d.ts +3 -0
  960. package/dist/modules/hospitality_core/screens/room-detail.d.ts.map +1 -0
  961. package/dist/modules/hospitality_core/screens/room-detail.js +75 -0
  962. package/dist/modules/hospitality_core/screens/room-detail.js.map +1 -0
  963. package/dist/modules/hospitality_core/screens/room-type-detail.d.ts +3 -0
  964. package/dist/modules/hospitality_core/screens/room-type-detail.d.ts.map +1 -0
  965. package/dist/modules/hospitality_core/screens/room-type-detail.js +91 -0
  966. package/dist/modules/hospitality_core/screens/room-type-detail.js.map +1 -0
  967. package/dist/modules/hospitality_core/screens/room-types.d.ts +3 -0
  968. package/dist/modules/hospitality_core/screens/room-types.d.ts.map +1 -0
  969. package/dist/modules/hospitality_core/screens/room-types.js +61 -0
  970. package/dist/modules/hospitality_core/screens/room-types.js.map +1 -0
  971. package/dist/modules/hospitality_core/screens/rooms.d.ts +10 -0
  972. package/dist/modules/hospitality_core/screens/rooms.d.ts.map +1 -0
  973. package/dist/modules/hospitality_core/screens/rooms.js +150 -0
  974. package/dist/modules/hospitality_core/screens/rooms.js.map +1 -0
  975. package/dist/modules/hospitality_core/screens/services.d.ts +18 -0
  976. package/dist/modules/hospitality_core/screens/services.d.ts.map +1 -0
  977. package/dist/modules/hospitality_core/screens/services.js +196 -0
  978. package/dist/modules/hospitality_core/screens/services.js.map +1 -0
  979. package/dist/modules/hospitality_core/screens/shared.d.ts +777 -0
  980. package/dist/modules/hospitality_core/screens/shared.d.ts.map +1 -0
  981. package/dist/modules/hospitality_core/screens/shared.js +1586 -0
  982. package/dist/modules/hospitality_core/screens/shared.js.map +1 -0
  983. package/dist/modules/hospitality_core/screens/stay-detail.d.ts +3 -0
  984. package/dist/modules/hospitality_core/screens/stay-detail.d.ts.map +1 -0
  985. package/dist/modules/hospitality_core/screens/stay-detail.js +233 -0
  986. package/dist/modules/hospitality_core/screens/stay-detail.js.map +1 -0
  987. package/dist/modules/hospitality_core/screens/stay-notices.d.ts +9 -0
  988. package/dist/modules/hospitality_core/screens/stay-notices.d.ts.map +1 -0
  989. package/dist/modules/hospitality_core/screens/stay-notices.js +87 -0
  990. package/dist/modules/hospitality_core/screens/stay-notices.js.map +1 -0
  991. package/dist/modules/hospitality_core/screens/stays.d.ts +3 -0
  992. package/dist/modules/hospitality_core/screens/stays.d.ts.map +1 -0
  993. package/dist/modules/hospitality_core/screens/stays.js +7 -0
  994. package/dist/modules/hospitality_core/screens/stays.js.map +1 -0
  995. package/dist/modules/hospitality_core/screens/tape-chart.d.ts +7 -0
  996. package/dist/modules/hospitality_core/screens/tape-chart.d.ts.map +1 -0
  997. package/dist/modules/hospitality_core/screens/tape-chart.js +99 -0
  998. package/dist/modules/hospitality_core/screens/tape-chart.js.map +1 -0
  999. package/dist/modules/hospitality_core/services.d.ts.map +1 -1
  1000. package/dist/modules/hospitality_core/services.js +133 -30
  1001. package/dist/modules/hospitality_core/services.js.map +1 -1
  1002. package/dist/modules/hospitality_core/stay-notices.js +2 -2
  1003. package/dist/modules/hospitality_core/stay-notices.js.map +1 -1
  1004. package/dist/modules/hospitality_core/types.d.ts +26 -5
  1005. package/dist/modules/hospitality_core/types.d.ts.map +1 -1
  1006. package/dist/modules/hospitality_core/types.js +47 -5
  1007. package/dist/modules/hospitality_core/types.js.map +1 -1
  1008. package/dist/modules/hospitality_staff_channel/channel-routes.d.ts +2 -0
  1009. package/dist/modules/hospitality_staff_channel/channel-routes.d.ts.map +1 -0
  1010. package/dist/modules/hospitality_staff_channel/channel-routes.js +1227 -0
  1011. package/dist/modules/hospitality_staff_channel/channel-routes.js.map +1 -0
  1012. package/dist/modules/hospitality_staff_channel/index.d.ts +5 -0
  1013. package/dist/modules/hospitality_staff_channel/index.d.ts.map +1 -0
  1014. package/dist/modules/hospitality_staff_channel/index.js +34 -0
  1015. package/dist/modules/hospitality_staff_channel/index.js.map +1 -0
  1016. package/dist/modules/hr/functions.d.ts.map +1 -1
  1017. package/dist/modules/hr/functions.js +108 -44
  1018. package/dist/modules/hr/functions.js.map +1 -1
  1019. package/dist/modules/hr/index.d.ts.map +1 -1
  1020. package/dist/modules/hr/index.js +0 -1
  1021. package/dist/modules/hr/index.js.map +1 -1
  1022. package/dist/modules/hr_backend/index.d.ts +2 -1
  1023. package/dist/modules/hr_backend/index.d.ts.map +1 -1
  1024. package/dist/modules/hr_backend/index.js +39 -7
  1025. package/dist/modules/hr_backend/index.js.map +1 -1
  1026. package/dist/modules/hr_backend/routes.d.ts.map +1 -1
  1027. package/dist/modules/hr_backend/routes.js +279 -42
  1028. package/dist/modules/hr_backend/routes.js.map +1 -1
  1029. package/dist/modules/hr_backend/screens/employee-form.d.ts +28 -0
  1030. package/dist/modules/hr_backend/screens/employee-form.d.ts.map +1 -0
  1031. package/dist/modules/hr_backend/screens/employee-form.js +110 -0
  1032. package/dist/modules/hr_backend/screens/employee-form.js.map +1 -0
  1033. package/dist/modules/hr_backend/screens/employees-list.d.ts +22 -0
  1034. package/dist/modules/hr_backend/screens/employees-list.d.ts.map +1 -0
  1035. package/dist/modules/hr_backend/screens/employees-list.js +53 -0
  1036. package/dist/modules/hr_backend/screens/employees-list.js.map +1 -0
  1037. package/dist/modules/hr_backend/screens/index.d.ts +5 -0
  1038. package/dist/modules/hr_backend/screens/index.d.ts.map +1 -0
  1039. package/dist/modules/hr_backend/screens/index.js +5 -0
  1040. package/dist/modules/hr_backend/screens/index.js.map +1 -0
  1041. package/dist/modules/hr_backend/screens/leaves-list.d.ts +22 -0
  1042. package/dist/modules/hr_backend/screens/leaves-list.d.ts.map +1 -0
  1043. package/dist/modules/hr_backend/screens/leaves-list.js +78 -0
  1044. package/dist/modules/hr_backend/screens/leaves-list.js.map +1 -0
  1045. package/dist/modules/hr_backend/screens/roster.d.ts +19 -0
  1046. package/dist/modules/hr_backend/screens/roster.d.ts.map +1 -0
  1047. package/dist/modules/hr_backend/screens/roster.js +83 -0
  1048. package/dist/modules/hr_backend/screens/roster.js.map +1 -0
  1049. package/dist/modules/inventory_staff_channel/channel-routes.d.ts +2 -0
  1050. package/dist/modules/inventory_staff_channel/channel-routes.d.ts.map +1 -0
  1051. package/dist/modules/inventory_staff_channel/channel-routes.js +724 -0
  1052. package/dist/modules/inventory_staff_channel/channel-routes.js.map +1 -0
  1053. package/dist/modules/inventory_staff_channel/index.d.ts +5 -0
  1054. package/dist/modules/inventory_staff_channel/index.d.ts.map +1 -0
  1055. package/dist/modules/inventory_staff_channel/index.js +38 -0
  1056. package/dist/modules/inventory_staff_channel/index.js.map +1 -0
  1057. package/dist/modules/livedoc/documents.d.ts +48 -0
  1058. package/dist/modules/livedoc/documents.d.ts.map +1 -0
  1059. package/dist/modules/livedoc/documents.js +99 -0
  1060. package/dist/modules/livedoc/documents.js.map +1 -0
  1061. package/dist/modules/livedoc/functions.d.ts +3 -0
  1062. package/dist/modules/livedoc/functions.d.ts.map +1 -0
  1063. package/dist/modules/livedoc/functions.js +47 -0
  1064. package/dist/modules/livedoc/functions.js.map +1 -0
  1065. package/dist/modules/livedoc/index.d.ts +22 -0
  1066. package/dist/modules/livedoc/index.d.ts.map +1 -0
  1067. package/dist/modules/livedoc/index.js +37 -0
  1068. package/dist/modules/livedoc/index.js.map +1 -0
  1069. package/dist/modules/livedoc/islands.d.ts +3 -0
  1070. package/dist/modules/livedoc/islands.d.ts.map +1 -0
  1071. package/dist/modules/livedoc/islands.js +22 -0
  1072. package/dist/modules/livedoc/islands.js.map +1 -0
  1073. package/dist/modules/livedoc/routes.d.ts +11 -0
  1074. package/dist/modules/livedoc/routes.d.ts.map +1 -0
  1075. package/dist/modules/livedoc/routes.js +232 -0
  1076. package/dist/modules/livedoc/routes.js.map +1 -0
  1077. package/dist/modules/livedoc/sync.d.ts +124 -0
  1078. package/dist/modules/livedoc/sync.d.ts.map +1 -0
  1079. package/dist/modules/livedoc/sync.js +218 -0
  1080. package/dist/modules/livedoc/sync.js.map +1 -0
  1081. package/dist/modules/loyalty/admin-functions.d.ts.map +1 -1
  1082. package/dist/modules/loyalty/admin-functions.js +42 -6
  1083. package/dist/modules/loyalty/admin-functions.js.map +1 -1
  1084. package/dist/modules/loyalty/engine.d.ts +1 -0
  1085. package/dist/modules/loyalty/engine.d.ts.map +1 -1
  1086. package/dist/modules/loyalty/engine.js +88 -28
  1087. package/dist/modules/loyalty/engine.js.map +1 -1
  1088. package/dist/modules/loyalty/index.d.ts.map +1 -1
  1089. package/dist/modules/loyalty/index.js +10 -2
  1090. package/dist/modules/loyalty/index.js.map +1 -1
  1091. package/dist/modules/loyalty/ledger.d.ts.map +1 -1
  1092. package/dist/modules/loyalty/ledger.js +11 -0
  1093. package/dist/modules/loyalty/ledger.js.map +1 -1
  1094. package/dist/modules/loyalty/membership-functions.d.ts.map +1 -1
  1095. package/dist/modules/loyalty/membership-functions.js +23 -7
  1096. package/dist/modules/loyalty/membership-functions.js.map +1 -1
  1097. package/dist/modules/loyalty/messages.d.ts +8 -0
  1098. package/dist/modules/loyalty/messages.d.ts.map +1 -1
  1099. package/dist/modules/loyalty/messages.js +8 -0
  1100. package/dist/modules/loyalty/messages.js.map +1 -1
  1101. package/dist/modules/loyalty/models.d.ts.map +1 -1
  1102. package/dist/modules/loyalty/models.js +20 -0
  1103. package/dist/modules/loyalty/models.js.map +1 -1
  1104. package/dist/modules/loyalty/order-functions.d.ts +16 -1
  1105. package/dist/modules/loyalty/order-functions.d.ts.map +1 -1
  1106. package/dist/modules/loyalty/order-functions.js +513 -291
  1107. package/dist/modules/loyalty/order-functions.js.map +1 -1
  1108. package/dist/modules/loyalty/stats.d.ts +17 -0
  1109. package/dist/modules/loyalty/stats.d.ts.map +1 -0
  1110. package/dist/modules/loyalty/stats.js +178 -0
  1111. package/dist/modules/loyalty/stats.js.map +1 -0
  1112. package/dist/modules/loyalty/stored-value.d.ts +42 -0
  1113. package/dist/modules/loyalty/stored-value.d.ts.map +1 -0
  1114. package/dist/modules/loyalty/stored-value.js +368 -0
  1115. package/dist/modules/loyalty/stored-value.js.map +1 -0
  1116. package/dist/modules/loyalty/types.d.ts +6 -4
  1117. package/dist/modules/loyalty/types.d.ts.map +1 -1
  1118. package/dist/modules/loyalty/types.js +1 -1
  1119. package/dist/modules/loyalty/types.js.map +1 -1
  1120. package/dist/modules/loyalty_backend/index.js +443 -172
  1121. package/dist/modules/loyalty_backend/index.js.map +1 -1
  1122. package/dist/modules/loyalty_backend/messages.d.ts +58 -1
  1123. package/dist/modules/loyalty_backend/messages.d.ts.map +1 -1
  1124. package/dist/modules/loyalty_backend/messages.js +114 -0
  1125. package/dist/modules/loyalty_backend/messages.js.map +1 -1
  1126. package/dist/modules/loyalty_backend/screens/index.d.ts +90 -0
  1127. package/dist/modules/loyalty_backend/screens/index.d.ts.map +1 -0
  1128. package/dist/modules/loyalty_backend/screens/index.js +912 -0
  1129. package/dist/modules/loyalty_backend/screens/index.js.map +1 -0
  1130. package/dist/modules/loyalty_backend/screens/page-frame.d.ts +14 -0
  1131. package/dist/modules/loyalty_backend/screens/page-frame.d.ts.map +1 -0
  1132. package/dist/modules/loyalty_backend/screens/page-frame.js +13 -0
  1133. package/dist/modules/loyalty_backend/screens/page-frame.js.map +1 -0
  1134. package/dist/modules/loyalty_pos/channel.d.ts +2 -0
  1135. package/dist/modules/loyalty_pos/channel.d.ts.map +1 -0
  1136. package/dist/modules/loyalty_pos/channel.js +270 -0
  1137. package/dist/modules/loyalty_pos/channel.js.map +1 -0
  1138. package/dist/modules/loyalty_pos/functions.d.ts +11 -17
  1139. package/dist/modules/loyalty_pos/functions.d.ts.map +1 -1
  1140. package/dist/modules/loyalty_pos/functions.js +454 -94
  1141. package/dist/modules/loyalty_pos/functions.js.map +1 -1
  1142. package/dist/modules/loyalty_pos/index.js +6 -16
  1143. package/dist/modules/loyalty_pos/index.js.map +1 -1
  1144. package/dist/modules/loyalty_pos/jobs.d.ts +3 -0
  1145. package/dist/modules/loyalty_pos/jobs.d.ts.map +1 -0
  1146. package/dist/modules/loyalty_pos/jobs.js +30 -0
  1147. package/dist/modules/loyalty_pos/jobs.js.map +1 -0
  1148. package/dist/modules/loyalty_sale/functions.d.ts +2 -2
  1149. package/dist/modules/loyalty_sale/functions.d.ts.map +1 -1
  1150. package/dist/modules/loyalty_sale/functions.js +53 -34
  1151. package/dist/modules/loyalty_sale/functions.js.map +1 -1
  1152. package/dist/modules/loyalty_sale/index.js +0 -2
  1153. package/dist/modules/loyalty_sale/index.js.map +1 -1
  1154. package/dist/modules/mail/functions.d.ts.map +1 -1
  1155. package/dist/modules/mail/functions.js +48 -6
  1156. package/dist/modules/mail/functions.js.map +1 -1
  1157. package/dist/modules/mail/index.d.ts.map +1 -1
  1158. package/dist/modules/mail/index.js +0 -1
  1159. package/dist/modules/mail/index.js.map +1 -1
  1160. package/dist/modules/mail/operations.d.ts +19 -0
  1161. package/dist/modules/mail/operations.d.ts.map +1 -1
  1162. package/dist/modules/mail/operations.js +69 -0
  1163. package/dist/modules/mail/operations.js.map +1 -1
  1164. package/dist/modules/mail_backend/index.d.ts +1 -1
  1165. package/dist/modules/mail_backend/index.d.ts.map +1 -1
  1166. package/dist/modules/mail_backend/index.js +5 -14
  1167. package/dist/modules/mail_backend/index.js.map +1 -1
  1168. package/dist/modules/mail_backend/islands.js +2 -2
  1169. package/dist/modules/mail_backend/islands.js.map +1 -1
  1170. package/dist/modules/mail_backend/routes.d.ts.map +1 -1
  1171. package/dist/modules/mail_backend/routes.js +25 -20
  1172. package/dist/modules/mail_backend/routes.js.map +1 -1
  1173. package/dist/modules/mail_backend/screens/inbox-list.d.ts +9 -0
  1174. package/dist/modules/mail_backend/screens/inbox-list.d.ts.map +1 -0
  1175. package/dist/modules/mail_backend/screens/inbox-list.js +13 -0
  1176. package/dist/modules/mail_backend/screens/inbox-list.js.map +1 -0
  1177. package/dist/modules/mail_backend/screens/index.d.ts +3 -0
  1178. package/dist/modules/mail_backend/screens/index.d.ts.map +1 -0
  1179. package/dist/modules/mail_backend/screens/index.js +2 -0
  1180. package/dist/modules/mail_backend/screens/index.js.map +1 -0
  1181. package/dist/modules/mail_inbound/index.d.ts.map +1 -1
  1182. package/dist/modules/mail_inbound/index.js +0 -1
  1183. package/dist/modules/mail_inbound/index.js.map +1 -1
  1184. package/dist/modules/mail_inbound_backend/index.d.ts +1 -1
  1185. package/dist/modules/mail_inbound_backend/index.d.ts.map +1 -1
  1186. package/dist/modules/mail_inbound_backend/index.js +3 -12
  1187. package/dist/modules/mail_inbound_backend/index.js.map +1 -1
  1188. package/dist/modules/mail_inbound_backend/routes.d.ts.map +1 -1
  1189. package/dist/modules/mail_inbound_backend/routes.js +6 -21
  1190. package/dist/modules/mail_inbound_backend/routes.js.map +1 -1
  1191. package/dist/modules/mail_inbound_backend/screens/inbound-list.d.ts +8 -0
  1192. package/dist/modules/mail_inbound_backend/screens/inbound-list.d.ts.map +1 -0
  1193. package/dist/modules/mail_inbound_backend/screens/inbound-list.js +20 -0
  1194. package/dist/modules/mail_inbound_backend/screens/inbound-list.js.map +1 -0
  1195. package/dist/modules/mail_inbound_backend/screens/index.d.ts +3 -0
  1196. package/dist/modules/mail_inbound_backend/screens/index.d.ts.map +1 -0
  1197. package/dist/modules/mail_inbound_backend/screens/index.js +2 -0
  1198. package/dist/modules/mail_inbound_backend/screens/index.js.map +1 -0
  1199. package/dist/modules/mail_staff_channel/channel-routes.d.ts +2 -0
  1200. package/dist/modules/mail_staff_channel/channel-routes.d.ts.map +1 -0
  1201. package/dist/modules/mail_staff_channel/channel-routes.js +183 -0
  1202. package/dist/modules/mail_staff_channel/channel-routes.js.map +1 -0
  1203. package/dist/modules/mail_staff_channel/index.d.ts +5 -0
  1204. package/dist/modules/mail_staff_channel/index.d.ts.map +1 -0
  1205. package/dist/modules/mail_staff_channel/index.js +28 -0
  1206. package/dist/modules/mail_staff_channel/index.js.map +1 -0
  1207. package/dist/modules/mail_transport/index.d.ts.map +1 -1
  1208. package/dist/modules/mail_transport/index.js +0 -1
  1209. package/dist/modules/mail_transport/index.js.map +1 -1
  1210. package/dist/modules/mail_transport_backend/index.d.ts +1 -1
  1211. package/dist/modules/mail_transport_backend/index.d.ts.map +1 -1
  1212. package/dist/modules/mail_transport_backend/index.js +3 -12
  1213. package/dist/modules/mail_transport_backend/index.js.map +1 -1
  1214. package/dist/modules/mail_transport_backend/routes.d.ts.map +1 -1
  1215. package/dist/modules/mail_transport_backend/routes.js +23 -22
  1216. package/dist/modules/mail_transport_backend/routes.js.map +1 -1
  1217. package/dist/modules/mail_transport_backend/screens/index.d.ts +3 -0
  1218. package/dist/modules/mail_transport_backend/screens/index.d.ts.map +1 -0
  1219. package/dist/modules/mail_transport_backend/screens/index.js +2 -0
  1220. package/dist/modules/mail_transport_backend/screens/index.js.map +1 -0
  1221. package/dist/modules/mail_transport_backend/screens/outbox-list.d.ts +9 -0
  1222. package/dist/modules/mail_transport_backend/screens/outbox-list.d.ts.map +1 -0
  1223. package/dist/modules/mail_transport_backend/screens/outbox-list.js +29 -0
  1224. package/dist/modules/mail_transport_backend/screens/outbox-list.js.map +1 -0
  1225. package/dist/modules/manufacturing/functions.d.ts +3 -0
  1226. package/dist/modules/manufacturing/functions.d.ts.map +1 -0
  1227. package/dist/modules/manufacturing/functions.js +912 -0
  1228. package/dist/modules/manufacturing/functions.js.map +1 -0
  1229. package/dist/modules/manufacturing/index.d.ts +6 -0
  1230. package/dist/modules/manufacturing/index.d.ts.map +1 -0
  1231. package/dist/modules/manufacturing/index.js +42 -0
  1232. package/dist/modules/manufacturing/index.js.map +1 -0
  1233. package/dist/modules/manufacturing/models.d.ts +8 -0
  1234. package/dist/modules/manufacturing/models.d.ts.map +1 -0
  1235. package/dist/modules/manufacturing/models.js +145 -0
  1236. package/dist/modules/manufacturing/models.js.map +1 -0
  1237. package/dist/modules/manufacturing/relations.d.ts.map +1 -0
  1238. package/dist/modules/manufacturing/relations.js +37 -0
  1239. package/dist/modules/manufacturing/relations.js.map +1 -0
  1240. package/dist/modules/manufacturing/types.d.ts +7 -0
  1241. package/dist/modules/manufacturing/types.d.ts.map +1 -0
  1242. package/dist/modules/manufacturing/types.js +11 -0
  1243. package/dist/modules/manufacturing/types.js.map +1 -0
  1244. package/dist/modules/manufacturing_backend/index.d.ts +5 -0
  1245. package/dist/modules/manufacturing_backend/index.d.ts.map +1 -0
  1246. package/dist/modules/manufacturing_backend/index.js +146 -0
  1247. package/dist/modules/manufacturing_backend/index.js.map +1 -0
  1248. package/dist/modules/manufacturing_backend/routes.d.ts +3 -0
  1249. package/dist/modules/manufacturing_backend/routes.d.ts.map +1 -0
  1250. package/dist/modules/manufacturing_backend/routes.js +477 -0
  1251. package/dist/modules/manufacturing_backend/routes.js.map +1 -0
  1252. package/dist/modules/manufacturing_backend/screens/bom-create.d.ts +15 -0
  1253. package/dist/modules/manufacturing_backend/screens/bom-create.d.ts.map +1 -0
  1254. package/dist/modules/manufacturing_backend/screens/bom-create.js +39 -0
  1255. package/dist/modules/manufacturing_backend/screens/bom-create.js.map +1 -0
  1256. package/dist/modules/manufacturing_backend/screens/boms-list.d.ts +18 -0
  1257. package/dist/modules/manufacturing_backend/screens/boms-list.d.ts.map +1 -0
  1258. package/dist/modules/manufacturing_backend/screens/boms-list.js +36 -0
  1259. package/dist/modules/manufacturing_backend/screens/boms-list.js.map +1 -0
  1260. package/dist/modules/manufacturing_backend/screens/index.d.ts +8 -0
  1261. package/dist/modules/manufacturing_backend/screens/index.d.ts.map +1 -0
  1262. package/dist/modules/manufacturing_backend/screens/index.js +8 -0
  1263. package/dist/modules/manufacturing_backend/screens/index.js.map +1 -0
  1264. package/dist/modules/manufacturing_backend/screens/order-create.d.ts +13 -0
  1265. package/dist/modules/manufacturing_backend/screens/order-create.d.ts.map +1 -0
  1266. package/dist/modules/manufacturing_backend/screens/order-create.js +20 -0
  1267. package/dist/modules/manufacturing_backend/screens/order-create.js.map +1 -0
  1268. package/dist/modules/manufacturing_backend/screens/order-execution.d.ts +7 -0
  1269. package/dist/modules/manufacturing_backend/screens/order-execution.d.ts.map +1 -0
  1270. package/dist/modules/manufacturing_backend/screens/order-execution.js +129 -0
  1271. package/dist/modules/manufacturing_backend/screens/order-execution.js.map +1 -0
  1272. package/dist/modules/manufacturing_backend/screens/orders-list.d.ts +21 -0
  1273. package/dist/modules/manufacturing_backend/screens/orders-list.d.ts.map +1 -0
  1274. package/dist/modules/manufacturing_backend/screens/orders-list.js +49 -0
  1275. package/dist/modules/manufacturing_backend/screens/orders-list.js.map +1 -0
  1276. package/dist/modules/manufacturing_backend/screens/work-center-form.d.ts +24 -0
  1277. package/dist/modules/manufacturing_backend/screens/work-center-form.d.ts.map +1 -0
  1278. package/dist/modules/manufacturing_backend/screens/work-center-form.js +80 -0
  1279. package/dist/modules/manufacturing_backend/screens/work-center-form.js.map +1 -0
  1280. package/dist/modules/manufacturing_backend/screens/work-centers-list.d.ts +23 -0
  1281. package/dist/modules/manufacturing_backend/screens/work-centers-list.d.ts.map +1 -0
  1282. package/dist/modules/manufacturing_backend/screens/work-centers-list.js +61 -0
  1283. package/dist/modules/manufacturing_backend/screens/work-centers-list.js.map +1 -0
  1284. package/dist/modules/oauth/index.d.ts.map +1 -1
  1285. package/dist/modules/oauth/index.js +0 -1
  1286. package/dist/modules/oauth/index.js.map +1 -1
  1287. package/dist/modules/oauth/models.d.ts.map +1 -1
  1288. package/dist/modules/oauth/models.js +2 -1
  1289. package/dist/modules/oauth/models.js.map +1 -1
  1290. package/dist/modules/oauth_backend/index.d.ts +1 -1
  1291. package/dist/modules/oauth_backend/index.d.ts.map +1 -1
  1292. package/dist/modules/oauth_backend/index.js +3 -5
  1293. package/dist/modules/oauth_backend/index.js.map +1 -1
  1294. package/dist/modules/oauth_backend/messages.d.ts +4 -0
  1295. package/dist/modules/oauth_backend/messages.d.ts.map +1 -1
  1296. package/dist/modules/oauth_backend/messages.js +4 -0
  1297. package/dist/modules/oauth_backend/messages.js.map +1 -1
  1298. package/dist/modules/oauth_backend/routes.d.ts.map +1 -1
  1299. package/dist/modules/oauth_backend/routes.js +28 -30
  1300. package/dist/modules/oauth_backend/routes.js.map +1 -1
  1301. package/dist/modules/oauth_backend/screens/index.d.ts +66 -0
  1302. package/dist/modules/oauth_backend/screens/index.d.ts.map +1 -0
  1303. package/dist/modules/oauth_backend/screens/index.js +306 -0
  1304. package/dist/modules/oauth_backend/screens/index.js.map +1 -0
  1305. package/dist/modules/partner/functions.d.ts.map +1 -1
  1306. package/dist/modules/partner/functions.js +74 -6
  1307. package/dist/modules/partner/functions.js.map +1 -1
  1308. package/dist/modules/partner/index.d.ts.map +1 -1
  1309. package/dist/modules/partner/index.js +0 -1
  1310. package/dist/modules/partner/index.js.map +1 -1
  1311. package/dist/modules/partner/models.d.ts +4 -4
  1312. package/dist/modules/partner/models.d.ts.map +1 -1
  1313. package/dist/modules/partner/models.js +9 -7
  1314. package/dist/modules/partner/models.js.map +1 -1
  1315. package/dist/modules/partner/types.d.ts +2 -2
  1316. package/dist/modules/partner/types.js +2 -2
  1317. package/dist/modules/partner_backend/client/address-view.mjs +5 -5
  1318. package/dist/modules/partner_backend/client/address-view.mjs.map +1 -1
  1319. package/dist/modules/partner_backend/client/address.css +22 -10
  1320. package/dist/modules/partner_backend/client/partner.css +116 -0
  1321. package/dist/modules/partner_backend/index.d.ts +1 -1
  1322. package/dist/modules/partner_backend/index.d.ts.map +1 -1
  1323. package/dist/modules/partner_backend/index.js +34 -4
  1324. package/dist/modules/partner_backend/index.js.map +1 -1
  1325. package/dist/modules/partner_backend/menus.js +2 -2
  1326. package/dist/modules/partner_backend/menus.js.map +1 -1
  1327. package/dist/modules/partner_backend/routes.d.ts +3 -1
  1328. package/dist/modules/partner_backend/routes.d.ts.map +1 -1
  1329. package/dist/modules/partner_backend/routes.js +236 -91
  1330. package/dist/modules/partner_backend/routes.js.map +1 -1
  1331. package/dist/modules/partner_backend/screens/form.d.ts +21 -0
  1332. package/dist/modules/partner_backend/screens/form.d.ts.map +1 -0
  1333. package/dist/modules/partner_backend/screens/form.js +101 -0
  1334. package/dist/modules/partner_backend/screens/form.js.map +1 -0
  1335. package/dist/modules/partner_backend/screens/index.d.ts +5 -0
  1336. package/dist/modules/partner_backend/screens/index.d.ts.map +1 -0
  1337. package/dist/modules/partner_backend/screens/index.js +4 -0
  1338. package/dist/modules/partner_backend/screens/index.js.map +1 -0
  1339. package/dist/modules/partner_backend/screens/list.d.ts +6 -0
  1340. package/dist/modules/partner_backend/screens/list.d.ts.map +1 -0
  1341. package/dist/modules/partner_backend/screens/list.js +94 -0
  1342. package/dist/modules/partner_backend/screens/list.js.map +1 -0
  1343. package/dist/modules/partner_backend/screens/new.d.ts +5 -0
  1344. package/dist/modules/partner_backend/screens/new.d.ts.map +1 -0
  1345. package/dist/modules/partner_backend/screens/new.js +58 -0
  1346. package/dist/modules/partner_backend/screens/new.js.map +1 -0
  1347. package/dist/modules/partner_backend/screens/types.d.ts +44 -0
  1348. package/dist/modules/partner_backend/screens/types.d.ts.map +1 -0
  1349. package/dist/modules/partner_backend/screens/types.js +2 -0
  1350. package/dist/modules/partner_backend/screens/types.js.map +1 -0
  1351. package/dist/modules/partner_mail_backend/index.d.ts +5 -0
  1352. package/dist/modules/partner_mail_backend/index.d.ts.map +1 -0
  1353. package/dist/modules/partner_mail_backend/index.js +29 -0
  1354. package/dist/modules/partner_mail_backend/index.js.map +1 -0
  1355. package/dist/modules/pos/functions.d.ts +18 -2
  1356. package/dist/modules/pos/functions.d.ts.map +1 -1
  1357. package/dist/modules/pos/functions.js +3279 -345
  1358. package/dist/modules/pos/functions.js.map +1 -1
  1359. package/dist/modules/pos/index.d.ts +2 -1
  1360. package/dist/modules/pos/index.d.ts.map +1 -1
  1361. package/dist/modules/pos/index.js +5 -5
  1362. package/dist/modules/pos/index.js.map +1 -1
  1363. package/dist/modules/pos/models.d.ts.map +1 -1
  1364. package/dist/modules/pos/models.js +189 -1
  1365. package/dist/modules/pos/models.js.map +1 -1
  1366. package/dist/modules/pos/relations.d.ts.map +1 -1
  1367. package/dist/modules/pos/relations.js +11 -0
  1368. package/dist/modules/pos/relations.js.map +1 -1
  1369. package/dist/modules/pos_backend/index.js +182 -154
  1370. package/dist/modules/pos_backend/index.js.map +1 -1
  1371. package/dist/modules/pos_backend/screens.d.ts +1 -0
  1372. package/dist/modules/pos_backend/screens.d.ts.map +1 -1
  1373. package/dist/modules/pos_backend/screens.js +28 -38
  1374. package/dist/modules/pos_backend/screens.js.map +1 -1
  1375. package/dist/modules/pos_channel/catalog.d.ts +27 -0
  1376. package/dist/modules/pos_channel/catalog.d.ts.map +1 -0
  1377. package/dist/modules/pos_channel/catalog.js +310 -0
  1378. package/dist/modules/pos_channel/catalog.js.map +1 -0
  1379. package/dist/modules/pos_channel/index.d.ts +7 -0
  1380. package/dist/modules/pos_channel/index.d.ts.map +1 -0
  1381. package/dist/modules/pos_channel/index.js +61 -0
  1382. package/dist/modules/pos_channel/index.js.map +1 -0
  1383. package/dist/modules/pos_channel/offline.d.ts +66 -0
  1384. package/dist/modules/pos_channel/offline.d.ts.map +1 -0
  1385. package/dist/modules/pos_channel/offline.js +16 -0
  1386. package/dist/modules/pos_channel/offline.js.map +1 -0
  1387. package/dist/modules/pos_channel/operations.d.ts +422 -0
  1388. package/dist/modules/pos_channel/operations.d.ts.map +1 -0
  1389. package/dist/modules/pos_channel/operations.js +1781 -0
  1390. package/dist/modules/pos_channel/operations.js.map +1 -0
  1391. package/dist/modules/pos_channel/sync.d.ts +6 -0
  1392. package/dist/modules/pos_channel/sync.d.ts.map +1 -0
  1393. package/dist/modules/pos_channel/sync.js +1161 -0
  1394. package/dist/modules/pos_channel/sync.js.map +1 -0
  1395. package/dist/modules/pricing/index.d.ts.map +1 -1
  1396. package/dist/modules/pricing/index.js +3 -4
  1397. package/dist/modules/pricing/index.js.map +1 -1
  1398. package/dist/modules/pricing_backend/index.js +135 -78
  1399. package/dist/modules/pricing_backend/index.js.map +1 -1
  1400. package/dist/modules/pricing_backend/screens/index.d.ts +5 -0
  1401. package/dist/modules/pricing_backend/screens/index.d.ts.map +1 -0
  1402. package/dist/modules/pricing_backend/screens/index.js +4 -0
  1403. package/dist/modules/pricing_backend/screens/index.js.map +1 -0
  1404. package/dist/modules/pricing_backend/screens/pricelist-create.d.ts +10 -0
  1405. package/dist/modules/pricing_backend/screens/pricelist-create.d.ts.map +1 -0
  1406. package/dist/modules/pricing_backend/screens/pricelist-create.js +30 -0
  1407. package/dist/modules/pricing_backend/screens/pricelist-create.js.map +1 -0
  1408. package/dist/modules/pricing_backend/screens/pricelist-detail.d.ts +15 -0
  1409. package/dist/modules/pricing_backend/screens/pricelist-detail.d.ts.map +1 -0
  1410. package/dist/modules/pricing_backend/screens/pricelist-detail.js +164 -0
  1411. package/dist/modules/pricing_backend/screens/pricelist-detail.js.map +1 -0
  1412. package/dist/modules/pricing_backend/screens/pricelists-list.d.ts +11 -0
  1413. package/dist/modules/pricing_backend/screens/pricelists-list.d.ts.map +1 -0
  1414. package/dist/modules/pricing_backend/screens/pricelists-list.js +27 -0
  1415. package/dist/modules/pricing_backend/screens/pricelists-list.js.map +1 -0
  1416. package/dist/modules/pricing_backend/screens/shared.d.ts +21 -0
  1417. package/dist/modules/pricing_backend/screens/shared.d.ts.map +1 -0
  1418. package/dist/modules/pricing_backend/screens/shared.js +3 -0
  1419. package/dist/modules/pricing_backend/screens/shared.js.map +1 -0
  1420. package/dist/modules/product/functions.d.ts.map +1 -1
  1421. package/dist/modules/product/functions.js +679 -50
  1422. package/dist/modules/product/functions.js.map +1 -1
  1423. package/dist/modules/product/index.d.ts +2 -0
  1424. package/dist/modules/product/index.d.ts.map +1 -1
  1425. package/dist/modules/product/index.js +2 -2
  1426. package/dist/modules/product/index.js.map +1 -1
  1427. package/dist/modules/product/models.d.ts +1 -1
  1428. package/dist/modules/product/models.d.ts.map +1 -1
  1429. package/dist/modules/product/models.js +27 -4
  1430. package/dist/modules/product/models.js.map +1 -1
  1431. package/dist/modules/product/relations.d.ts.map +1 -1
  1432. package/dist/modules/product/relations.js +4 -0
  1433. package/dist/modules/product/relations.js.map +1 -1
  1434. package/dist/modules/product/sellable.d.ts +26 -0
  1435. package/dist/modules/product/sellable.d.ts.map +1 -0
  1436. package/dist/modules/product/sellable.js +56 -0
  1437. package/dist/modules/product/sellable.js.map +1 -0
  1438. package/dist/modules/product/types.d.ts +2 -2
  1439. package/dist/modules/product/views.d.ts.map +1 -1
  1440. package/dist/modules/product/views.js +5 -1
  1441. package/dist/modules/product/views.js.map +1 -1
  1442. package/dist/modules/product_activity_backend/index.d.ts.map +1 -1
  1443. package/dist/modules/product_activity_backend/index.js +2 -3
  1444. package/dist/modules/product_activity_backend/index.js.map +1 -1
  1445. package/dist/modules/product_backend/client/media-upload-view.d.mts +2 -0
  1446. package/dist/modules/product_backend/client/media-upload-view.d.mts.map +1 -0
  1447. package/dist/modules/product_backend/client/media-upload-view.mjs +27 -0
  1448. package/dist/modules/product_backend/client/media-upload-view.mjs.map +1 -0
  1449. package/dist/modules/product_backend/client/product.css +964 -0
  1450. package/dist/modules/product_backend/client/product.d.mts +2 -0
  1451. package/dist/modules/product_backend/client/product.d.mts.map +1 -1
  1452. package/dist/modules/product_backend/client/product.mjs +3 -0
  1453. package/dist/modules/product_backend/client/product.mjs.map +1 -1
  1454. package/dist/modules/product_backend/index.d.ts +5 -6
  1455. package/dist/modules/product_backend/index.d.ts.map +1 -1
  1456. package/dist/modules/product_backend/index.js +205 -14
  1457. package/dist/modules/product_backend/index.js.map +1 -1
  1458. package/dist/modules/product_backend/islands.d.ts.map +1 -1
  1459. package/dist/modules/product_backend/islands.js +8 -0
  1460. package/dist/modules/product_backend/islands.js.map +1 -1
  1461. package/dist/modules/product_backend/menus.js +2 -2
  1462. package/dist/modules/product_backend/menus.js.map +1 -1
  1463. package/dist/modules/product_backend/relation-control.d.ts +85 -0
  1464. package/dist/modules/product_backend/relation-control.d.ts.map +1 -0
  1465. package/dist/modules/product_backend/relation-control.js +129 -0
  1466. package/dist/modules/product_backend/relation-control.js.map +1 -0
  1467. package/dist/modules/product_backend/routes.d.ts.map +1 -1
  1468. package/dist/modules/product_backend/routes.js +514 -194
  1469. package/dist/modules/product_backend/routes.js.map +1 -1
  1470. package/dist/modules/product_backend/screens/attributes.d.ts +7 -0
  1471. package/dist/modules/product_backend/screens/attributes.d.ts.map +1 -0
  1472. package/dist/modules/product_backend/screens/attributes.js +66 -0
  1473. package/dist/modules/product_backend/screens/attributes.js.map +1 -0
  1474. package/dist/modules/product_backend/screens/create.d.ts +16 -0
  1475. package/dist/modules/product_backend/screens/create.d.ts.map +1 -0
  1476. package/dist/modules/product_backend/screens/create.js +86 -0
  1477. package/dist/modules/product_backend/screens/create.js.map +1 -0
  1478. package/dist/modules/product_backend/screens/detail.d.ts +87 -0
  1479. package/dist/modules/product_backend/screens/detail.d.ts.map +1 -0
  1480. package/dist/modules/product_backend/screens/detail.js +381 -0
  1481. package/dist/modules/product_backend/screens/detail.js.map +1 -0
  1482. package/dist/modules/product_backend/screens/favorite.d.ts +6 -0
  1483. package/dist/modules/product_backend/screens/favorite.d.ts.map +1 -0
  1484. package/dist/modules/product_backend/screens/favorite.js +43 -0
  1485. package/dist/modules/product_backend/screens/favorite.js.map +1 -0
  1486. package/dist/modules/product_backend/screens/index.d.ts +10 -0
  1487. package/dist/modules/product_backend/screens/index.d.ts.map +1 -0
  1488. package/dist/modules/product_backend/screens/index.js +7 -0
  1489. package/dist/modules/product_backend/screens/index.js.map +1 -0
  1490. package/dist/modules/product_backend/screens/list.d.ts +54 -0
  1491. package/dist/modules/product_backend/screens/list.d.ts.map +1 -0
  1492. package/dist/modules/product_backend/screens/list.js +124 -0
  1493. package/dist/modules/product_backend/screens/list.js.map +1 -0
  1494. package/dist/modules/product_backend/screens/variant.d.ts +9 -0
  1495. package/dist/modules/product_backend/screens/variant.d.ts.map +1 -0
  1496. package/dist/modules/product_backend/screens/variant.js +113 -0
  1497. package/dist/modules/product_backend/screens/variant.js.map +1 -0
  1498. package/dist/modules/product_mail_backend/index.d.ts.map +1 -1
  1499. package/dist/modules/product_mail_backend/index.js +2 -3
  1500. package/dist/modules/product_mail_backend/index.js.map +1 -1
  1501. package/dist/modules/product_media/functions.d.ts.map +1 -1
  1502. package/dist/modules/product_media/functions.js +59 -6
  1503. package/dist/modules/product_media/functions.js.map +1 -1
  1504. package/dist/modules/product_media/index.js +0 -1
  1505. package/dist/modules/product_media/index.js.map +1 -1
  1506. package/dist/modules/product_variant_activity_backend/index.d.ts.map +1 -1
  1507. package/dist/modules/product_variant_activity_backend/index.js +2 -3
  1508. package/dist/modules/product_variant_activity_backend/index.js.map +1 -1
  1509. package/dist/modules/product_variant_mail_backend/index.d.ts.map +1 -1
  1510. package/dist/modules/product_variant_mail_backend/index.js +2 -3
  1511. package/dist/modules/product_variant_mail_backend/index.js.map +1 -1
  1512. package/dist/modules/purchase/functions.d.ts.map +1 -1
  1513. package/dist/modules/purchase/functions.js +852 -225
  1514. package/dist/modules/purchase/functions.js.map +1 -1
  1515. package/dist/modules/purchase/index.d.ts.map +1 -1
  1516. package/dist/modules/purchase/index.js +30 -5
  1517. package/dist/modules/purchase/index.js.map +1 -1
  1518. package/dist/modules/purchase/models.d.ts.map +1 -1
  1519. package/dist/modules/purchase/models.js +1 -0
  1520. package/dist/modules/purchase/models.js.map +1 -1
  1521. package/dist/modules/purchase/reports.d.ts +4 -0
  1522. package/dist/modules/purchase/reports.d.ts.map +1 -0
  1523. package/dist/modules/purchase/reports.js +86 -0
  1524. package/dist/modules/purchase/reports.js.map +1 -0
  1525. package/dist/modules/purchase_backend/index.js +513 -112
  1526. package/dist/modules/purchase_backend/index.js.map +1 -1
  1527. package/dist/modules/purchase_backend/screens/index.d.ts +10 -0
  1528. package/dist/modules/purchase_backend/screens/index.d.ts.map +1 -0
  1529. package/dist/modules/purchase_backend/screens/index.js +10 -0
  1530. package/dist/modules/purchase_backend/screens/index.js.map +1 -0
  1531. package/dist/modules/purchase_backend/screens/order-detail.d.ts +31 -0
  1532. package/dist/modules/purchase_backend/screens/order-detail.d.ts.map +1 -0
  1533. package/dist/modules/purchase_backend/screens/order-detail.js +204 -0
  1534. package/dist/modules/purchase_backend/screens/order-detail.js.map +1 -0
  1535. package/dist/modules/purchase_backend/screens/order-list-shared.d.ts +7 -0
  1536. package/dist/modules/purchase_backend/screens/order-list-shared.d.ts.map +1 -0
  1537. package/dist/modules/purchase_backend/screens/order-list-shared.js +58 -0
  1538. package/dist/modules/purchase_backend/screens/order-list-shared.js.map +1 -0
  1539. package/dist/modules/purchase_backend/screens/overview.d.ts +19 -0
  1540. package/dist/modules/purchase_backend/screens/overview.d.ts.map +1 -0
  1541. package/dist/modules/purchase_backend/screens/overview.js +52 -0
  1542. package/dist/modules/purchase_backend/screens/overview.js.map +1 -0
  1543. package/dist/modules/purchase_backend/screens/purchase-orders-list.d.ts +14 -0
  1544. package/dist/modules/purchase_backend/screens/purchase-orders-list.d.ts.map +1 -0
  1545. package/dist/modules/purchase_backend/screens/purchase-orders-list.js +26 -0
  1546. package/dist/modules/purchase_backend/screens/purchase-orders-list.js.map +1 -0
  1547. package/dist/modules/purchase_backend/screens/rfq-create.d.ts +16 -0
  1548. package/dist/modules/purchase_backend/screens/rfq-create.d.ts.map +1 -0
  1549. package/dist/modules/purchase_backend/screens/rfq-create.js +24 -0
  1550. package/dist/modules/purchase_backend/screens/rfq-create.js.map +1 -0
  1551. package/dist/modules/purchase_backend/screens/rfqs-list.d.ts +18 -0
  1552. package/dist/modules/purchase_backend/screens/rfqs-list.d.ts.map +1 -0
  1553. package/dist/modules/purchase_backend/screens/rfqs-list.js +28 -0
  1554. package/dist/modules/purchase_backend/screens/rfqs-list.js.map +1 -0
  1555. package/dist/modules/purchase_backend/screens/shared.d.ts +18 -0
  1556. package/dist/modules/purchase_backend/screens/shared.d.ts.map +1 -0
  1557. package/dist/modules/purchase_backend/screens/shared.js +30 -0
  1558. package/dist/modules/purchase_backend/screens/shared.js.map +1 -0
  1559. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.d.ts +20 -0
  1560. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.d.ts.map +1 -0
  1561. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.js +25 -0
  1562. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.js.map +1 -0
  1563. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.d.ts +33 -0
  1564. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.d.ts.map +1 -0
  1565. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.js +73 -0
  1566. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.js.map +1 -0
  1567. package/dist/modules/purchase_staff_channel/channel-routes.d.ts +2 -0
  1568. package/dist/modules/purchase_staff_channel/channel-routes.d.ts.map +1 -0
  1569. package/dist/modules/purchase_staff_channel/channel-routes.js +119 -0
  1570. package/dist/modules/purchase_staff_channel/channel-routes.js.map +1 -0
  1571. package/dist/modules/purchase_staff_channel/index.d.ts +8 -0
  1572. package/dist/modules/purchase_staff_channel/index.d.ts.map +1 -0
  1573. package/dist/modules/purchase_staff_channel/index.js +45 -0
  1574. package/dist/modules/purchase_staff_channel/index.js.map +1 -0
  1575. package/dist/modules/purchase_staff_channel/order-routes.d.ts +2 -0
  1576. package/dist/modules/purchase_staff_channel/order-routes.d.ts.map +1 -0
  1577. package/dist/modules/purchase_staff_channel/order-routes.js +754 -0
  1578. package/dist/modules/purchase_staff_channel/order-routes.js.map +1 -0
  1579. package/dist/modules/purchase_staff_channel/product-routes.d.ts +2 -0
  1580. package/dist/modules/purchase_staff_channel/product-routes.d.ts.map +1 -0
  1581. package/dist/modules/purchase_staff_channel/product-routes.js +183 -0
  1582. package/dist/modules/purchase_staff_channel/product-routes.js.map +1 -0
  1583. package/dist/modules/purchase_staff_channel/vendor-bill-routes.d.ts +2 -0
  1584. package/dist/modules/purchase_staff_channel/vendor-bill-routes.d.ts.map +1 -0
  1585. package/dist/modules/purchase_staff_channel/vendor-bill-routes.js +189 -0
  1586. package/dist/modules/purchase_staff_channel/vendor-bill-routes.js.map +1 -0
  1587. package/dist/modules/quality/functions.d.ts +3 -0
  1588. package/dist/modules/quality/functions.d.ts.map +1 -0
  1589. package/dist/modules/quality/functions.js +381 -0
  1590. package/dist/modules/quality/functions.js.map +1 -0
  1591. package/dist/modules/quality/index.d.ts +5 -0
  1592. package/dist/modules/quality/index.d.ts.map +1 -0
  1593. package/dist/modules/quality/index.js +19 -0
  1594. package/dist/modules/quality/index.js.map +1 -0
  1595. package/dist/modules/quality/models.d.ts +3 -0
  1596. package/dist/modules/quality/models.d.ts.map +1 -0
  1597. package/dist/modules/quality/models.js +91 -0
  1598. package/dist/modules/quality/models.js.map +1 -0
  1599. package/dist/modules/quality_staff_channel/channel-routes.d.ts +2 -0
  1600. package/dist/modules/quality_staff_channel/channel-routes.d.ts.map +1 -0
  1601. package/dist/modules/quality_staff_channel/channel-routes.js +495 -0
  1602. package/dist/modules/quality_staff_channel/channel-routes.js.map +1 -0
  1603. package/dist/modules/quality_staff_channel/index.d.ts +5 -0
  1604. package/dist/modules/quality_staff_channel/index.d.ts.map +1 -0
  1605. package/dist/modules/quality_staff_channel/index.js +30 -0
  1606. package/dist/modules/quality_staff_channel/index.js.map +1 -0
  1607. package/dist/modules/report/functions.d.ts +3 -0
  1608. package/dist/modules/report/functions.d.ts.map +1 -0
  1609. package/dist/modules/report/functions.js +197 -0
  1610. package/dist/modules/report/functions.js.map +1 -0
  1611. package/dist/modules/report/index.d.ts +3 -0
  1612. package/dist/modules/report/index.d.ts.map +1 -0
  1613. package/dist/modules/report/index.js +21 -0
  1614. package/dist/modules/report/index.js.map +1 -0
  1615. package/dist/modules/report/jobs.d.ts +3 -0
  1616. package/dist/modules/report/jobs.d.ts.map +1 -0
  1617. package/dist/modules/report/jobs.js +18 -0
  1618. package/dist/modules/report/jobs.js.map +1 -0
  1619. package/dist/modules/report/models.d.ts +3 -0
  1620. package/dist/modules/report/models.d.ts.map +1 -0
  1621. package/dist/modules/report/models.js +45 -0
  1622. package/dist/modules/report/models.js.map +1 -0
  1623. package/dist/modules/report/routes.d.ts +19 -0
  1624. package/dist/modules/report/routes.d.ts.map +1 -0
  1625. package/dist/modules/report/routes.js +138 -0
  1626. package/dist/modules/report/routes.js.map +1 -0
  1627. package/dist/modules/report_backend/index.d.ts +3 -0
  1628. package/dist/modules/report_backend/index.d.ts.map +1 -0
  1629. package/dist/modules/report_backend/index.js +67 -0
  1630. package/dist/modules/report_backend/index.js.map +1 -0
  1631. package/dist/modules/report_backend/routes.d.ts +10 -0
  1632. package/dist/modules/report_backend/routes.d.ts.map +1 -0
  1633. package/dist/modules/report_backend/routes.js +87 -0
  1634. package/dist/modules/report_backend/routes.js.map +1 -0
  1635. package/dist/modules/report_backend/screens/index.d.ts +13 -0
  1636. package/dist/modules/report_backend/screens/index.d.ts.map +1 -0
  1637. package/dist/modules/report_backend/screens/index.js +91 -0
  1638. package/dist/modules/report_backend/screens/index.js.map +1 -0
  1639. package/dist/modules/sale/functions.d.ts.map +1 -1
  1640. package/dist/modules/sale/functions.js +796 -238
  1641. package/dist/modules/sale/functions.js.map +1 -1
  1642. package/dist/modules/sale/index.d.ts.map +1 -1
  1643. package/dist/modules/sale/index.js +44 -5
  1644. package/dist/modules/sale/index.js.map +1 -1
  1645. package/dist/modules/sale/models.d.ts.map +1 -1
  1646. package/dist/modules/sale/models.js +47 -1
  1647. package/dist/modules/sale/models.js.map +1 -1
  1648. package/dist/modules/sale/relations.d.ts.map +1 -1
  1649. package/dist/modules/sale/relations.js +6 -0
  1650. package/dist/modules/sale/relations.js.map +1 -1
  1651. package/dist/modules/sale/reports.d.ts +4 -0
  1652. package/dist/modules/sale/reports.d.ts.map +1 -0
  1653. package/dist/modules/sale/reports.js +132 -0
  1654. package/dist/modules/sale/reports.js.map +1 -0
  1655. package/dist/modules/sale/scope.d.ts +31 -0
  1656. package/dist/modules/sale/scope.d.ts.map +1 -0
  1657. package/dist/modules/sale/scope.js +34 -0
  1658. package/dist/modules/sale/scope.js.map +1 -0
  1659. package/dist/modules/sale_activity_backend/index.d.ts.map +1 -1
  1660. package/dist/modules/sale_activity_backend/index.js +0 -1
  1661. package/dist/modules/sale_activity_backend/index.js.map +1 -1
  1662. package/dist/modules/sale_backend/index.js +338 -121
  1663. package/dist/modules/sale_backend/index.js.map +1 -1
  1664. package/dist/modules/sale_backend/screens/index.d.ts +9 -0
  1665. package/dist/modules/sale_backend/screens/index.d.ts.map +1 -0
  1666. package/dist/modules/sale_backend/screens/index.js +9 -0
  1667. package/dist/modules/sale_backend/screens/index.js.map +1 -0
  1668. package/dist/modules/sale_backend/screens/invoicing-policies-list.d.ts +14 -0
  1669. package/dist/modules/sale_backend/screens/invoicing-policies-list.d.ts.map +1 -0
  1670. package/dist/modules/sale_backend/screens/invoicing-policies-list.js +48 -0
  1671. package/dist/modules/sale_backend/screens/invoicing-policies-list.js.map +1 -0
  1672. package/dist/modules/sale_backend/screens/invoicing-policy-create.d.ts +14 -0
  1673. package/dist/modules/sale_backend/screens/invoicing-policy-create.d.ts.map +1 -0
  1674. package/dist/modules/sale_backend/screens/invoicing-policy-create.js +38 -0
  1675. package/dist/modules/sale_backend/screens/invoicing-policy-create.js.map +1 -0
  1676. package/dist/modules/sale_backend/screens/order-detail.d.ts +43 -0
  1677. package/dist/modules/sale_backend/screens/order-detail.d.ts.map +1 -0
  1678. package/dist/modules/sale_backend/screens/order-detail.js +226 -0
  1679. package/dist/modules/sale_backend/screens/order-detail.js.map +1 -0
  1680. package/dist/modules/sale_backend/screens/overview.d.ts +31 -0
  1681. package/dist/modules/sale_backend/screens/overview.d.ts.map +1 -0
  1682. package/dist/modules/sale_backend/screens/overview.js +73 -0
  1683. package/dist/modules/sale_backend/screens/overview.js.map +1 -0
  1684. package/dist/modules/sale_backend/screens/quotation-create.d.ts +13 -0
  1685. package/dist/modules/sale_backend/screens/quotation-create.d.ts.map +1 -0
  1686. package/dist/modules/sale_backend/screens/quotation-create.js +19 -0
  1687. package/dist/modules/sale_backend/screens/quotation-create.js.map +1 -0
  1688. package/dist/modules/sale_backend/screens/quotations-list.d.ts +25 -0
  1689. package/dist/modules/sale_backend/screens/quotations-list.d.ts.map +1 -0
  1690. package/dist/modules/sale_backend/screens/quotations-list.js +96 -0
  1691. package/dist/modules/sale_backend/screens/quotations-list.js.map +1 -0
  1692. package/dist/modules/sale_backend/screens/sales-orders-list.d.ts +25 -0
  1693. package/dist/modules/sale_backend/screens/sales-orders-list.d.ts.map +1 -0
  1694. package/dist/modules/sale_backend/screens/sales-orders-list.js +100 -0
  1695. package/dist/modules/sale_backend/screens/sales-orders-list.js.map +1 -0
  1696. package/dist/modules/sale_backend/screens/shared.d.ts +4 -0
  1697. package/dist/modules/sale_backend/screens/shared.d.ts.map +1 -0
  1698. package/dist/modules/sale_backend/screens/shared.js +4 -0
  1699. package/dist/modules/sale_backend/screens/shared.js.map +1 -0
  1700. package/dist/modules/sale_mail_backend/index.d.ts.map +1 -1
  1701. package/dist/modules/sale_mail_backend/index.js +0 -1
  1702. package/dist/modules/sale_mail_backend/index.js.map +1 -1
  1703. package/dist/modules/sale_staff_channel/channel-routes.d.ts +2 -0
  1704. package/dist/modules/sale_staff_channel/channel-routes.d.ts.map +1 -0
  1705. package/dist/modules/sale_staff_channel/channel-routes.js +296 -0
  1706. package/dist/modules/sale_staff_channel/channel-routes.js.map +1 -0
  1707. package/dist/modules/sale_staff_channel/index.d.ts +7 -0
  1708. package/dist/modules/sale_staff_channel/index.d.ts.map +1 -0
  1709. package/dist/modules/sale_staff_channel/index.js +44 -0
  1710. package/dist/modules/sale_staff_channel/index.js.map +1 -0
  1711. package/dist/modules/sale_staff_channel/order-routes.d.ts +2 -0
  1712. package/dist/modules/sale_staff_channel/order-routes.d.ts.map +1 -0
  1713. package/dist/modules/sale_staff_channel/order-routes.js +658 -0
  1714. package/dist/modules/sale_staff_channel/order-routes.js.map +1 -0
  1715. package/dist/modules/sale_staff_channel/product-routes.d.ts +2 -0
  1716. package/dist/modules/sale_staff_channel/product-routes.d.ts.map +1 -0
  1717. package/dist/modules/sale_staff_channel/product-routes.js +183 -0
  1718. package/dist/modules/sale_staff_channel/product-routes.js.map +1 -0
  1719. package/dist/modules/stock/functions.d.ts.map +1 -1
  1720. package/dist/modules/stock/functions.js +1239 -332
  1721. package/dist/modules/stock/functions.js.map +1 -1
  1722. package/dist/modules/stock/index.d.ts +2 -0
  1723. package/dist/modules/stock/index.d.ts.map +1 -1
  1724. package/dist/modules/stock/index.js +29 -6
  1725. package/dist/modules/stock/index.js.map +1 -1
  1726. package/dist/modules/stock/models.d.ts.map +1 -1
  1727. package/dist/modules/stock/models.js +1 -0
  1728. package/dist/modules/stock/models.js.map +1 -1
  1729. package/dist/modules/stock/reports.d.ts +4 -0
  1730. package/dist/modules/stock/reports.d.ts.map +1 -0
  1731. package/dist/modules/stock/reports.js +100 -0
  1732. package/dist/modules/stock/reports.js.map +1 -0
  1733. package/dist/modules/stock/routing.d.ts +1 -1
  1734. package/dist/modules/stock/routing.d.ts.map +1 -1
  1735. package/dist/modules/stock/routing.js +35 -30
  1736. package/dist/modules/stock/routing.js.map +1 -1
  1737. package/dist/modules/stock/scope.d.ts +23 -0
  1738. package/dist/modules/stock/scope.d.ts.map +1 -0
  1739. package/dist/modules/stock/scope.js +26 -0
  1740. package/dist/modules/stock/scope.js.map +1 -0
  1741. package/dist/modules/stock/units.d.ts +14 -0
  1742. package/dist/modules/stock/units.d.ts.map +1 -0
  1743. package/dist/modules/stock/units.js +50 -0
  1744. package/dist/modules/stock/units.js.map +1 -0
  1745. package/dist/modules/stock_activity_backend/index.d.ts.map +1 -1
  1746. package/dist/modules/stock_activity_backend/index.js +0 -1
  1747. package/dist/modules/stock_activity_backend/index.js.map +1 -1
  1748. package/dist/modules/stock_backend/client/editor-view.d.mts.map +1 -1
  1749. package/dist/modules/stock_backend/client/editor-view.mjs +12 -10
  1750. package/dist/modules/stock_backend/client/editor-view.mjs.map +1 -1
  1751. package/dist/modules/stock_backend/index.js +27 -20
  1752. package/dist/modules/stock_backend/index.js.map +1 -1
  1753. package/dist/modules/stock_backend/routes.d.ts.map +1 -1
  1754. package/dist/modules/stock_backend/routes.js +485 -232
  1755. package/dist/modules/stock_backend/routes.js.map +1 -1
  1756. package/dist/modules/stock_backend/screens/forecast.d.ts +28 -0
  1757. package/dist/modules/stock_backend/screens/forecast.d.ts.map +1 -0
  1758. package/dist/modules/stock_backend/screens/forecast.js +108 -0
  1759. package/dist/modules/stock_backend/screens/forecast.js.map +1 -0
  1760. package/dist/modules/stock_backend/screens/index.d.ts +22 -0
  1761. package/dist/modules/stock_backend/screens/index.d.ts.map +1 -0
  1762. package/dist/modules/stock_backend/screens/index.js +22 -0
  1763. package/dist/modules/stock_backend/screens/index.js.map +1 -0
  1764. package/dist/modules/stock_backend/screens/inventory.d.ts +27 -0
  1765. package/dist/modules/stock_backend/screens/inventory.d.ts.map +1 -0
  1766. package/dist/modules/stock_backend/screens/inventory.js +128 -0
  1767. package/dist/modules/stock_backend/screens/inventory.js.map +1 -0
  1768. package/dist/modules/stock_backend/screens/location-create.d.ts +15 -0
  1769. package/dist/modules/stock_backend/screens/location-create.d.ts.map +1 -0
  1770. package/dist/modules/stock_backend/screens/location-create.js +75 -0
  1771. package/dist/modules/stock_backend/screens/location-create.js.map +1 -0
  1772. package/dist/modules/stock_backend/screens/locations-list.d.ts +21 -0
  1773. package/dist/modules/stock_backend/screens/locations-list.d.ts.map +1 -0
  1774. package/dist/modules/stock_backend/screens/locations-list.js +62 -0
  1775. package/dist/modules/stock_backend/screens/locations-list.js.map +1 -0
  1776. package/dist/modules/stock_backend/screens/lot-create.d.ts +14 -0
  1777. package/dist/modules/stock_backend/screens/lot-create.d.ts.map +1 -0
  1778. package/dist/modules/stock_backend/screens/lot-create.js +60 -0
  1779. package/dist/modules/stock_backend/screens/lot-create.js.map +1 -0
  1780. package/dist/modules/stock_backend/screens/lot-detail.d.ts +30 -0
  1781. package/dist/modules/stock_backend/screens/lot-detail.d.ts.map +1 -0
  1782. package/dist/modules/stock_backend/screens/lot-detail.js +84 -0
  1783. package/dist/modules/stock_backend/screens/lot-detail.js.map +1 -0
  1784. package/dist/modules/stock_backend/screens/lots-list.d.ts +25 -0
  1785. package/dist/modules/stock_backend/screens/lots-list.d.ts.map +1 -0
  1786. package/dist/modules/stock_backend/screens/lots-list.js +54 -0
  1787. package/dist/modules/stock_backend/screens/lots-list.js.map +1 -0
  1788. package/dist/modules/stock_backend/screens/picking-type-create.d.ts +15 -0
  1789. package/dist/modules/stock_backend/screens/picking-type-create.d.ts.map +1 -0
  1790. package/dist/modules/stock_backend/screens/picking-type-create.js +89 -0
  1791. package/dist/modules/stock_backend/screens/picking-type-create.js.map +1 -0
  1792. package/dist/modules/stock_backend/screens/picking-types-list.d.ts +22 -0
  1793. package/dist/modules/stock_backend/screens/picking-types-list.d.ts.map +1 -0
  1794. package/dist/modules/stock_backend/screens/picking-types-list.js +80 -0
  1795. package/dist/modules/stock_backend/screens/picking-types-list.js.map +1 -0
  1796. package/dist/modules/stock_backend/screens/replenishment-create.d.ts +17 -0
  1797. package/dist/modules/stock_backend/screens/replenishment-create.d.ts.map +1 -0
  1798. package/dist/modules/stock_backend/screens/replenishment-create.js +74 -0
  1799. package/dist/modules/stock_backend/screens/replenishment-create.js.map +1 -0
  1800. package/dist/modules/stock_backend/screens/replenishment-list.d.ts +29 -0
  1801. package/dist/modules/stock_backend/screens/replenishment-list.d.ts.map +1 -0
  1802. package/dist/modules/stock_backend/screens/replenishment-list.js +84 -0
  1803. package/dist/modules/stock_backend/screens/replenishment-list.js.map +1 -0
  1804. package/dist/modules/stock_backend/screens/shared.d.ts +12 -0
  1805. package/dist/modules/stock_backend/screens/shared.d.ts.map +1 -0
  1806. package/dist/modules/stock_backend/screens/shared.js +29 -0
  1807. package/dist/modules/stock_backend/screens/shared.js.map +1 -0
  1808. package/dist/modules/stock_backend/screens/stock-route-create.d.ts +13 -0
  1809. package/dist/modules/stock_backend/screens/stock-route-create.d.ts.map +1 -0
  1810. package/dist/modules/stock_backend/screens/stock-route-create.js +52 -0
  1811. package/dist/modules/stock_backend/screens/stock-route-create.js.map +1 -0
  1812. package/dist/modules/stock_backend/screens/stock-route-detail.d.ts +30 -0
  1813. package/dist/modules/stock_backend/screens/stock-route-detail.d.ts.map +1 -0
  1814. package/dist/modules/stock_backend/screens/stock-route-detail.js +131 -0
  1815. package/dist/modules/stock_backend/screens/stock-route-detail.js.map +1 -0
  1816. package/dist/modules/stock_backend/screens/stock-routes-list.d.ts +22 -0
  1817. package/dist/modules/stock_backend/screens/stock-routes-list.d.ts.map +1 -0
  1818. package/dist/modules/stock_backend/screens/stock-routes-list.js +51 -0
  1819. package/dist/modules/stock_backend/screens/stock-routes-list.js.map +1 -0
  1820. package/dist/modules/stock_backend/screens/stock.d.ts +7 -0
  1821. package/dist/modules/stock_backend/screens/stock.d.ts.map +1 -0
  1822. package/dist/modules/stock_backend/screens/stock.js +13 -0
  1823. package/dist/modules/stock_backend/screens/stock.js.map +1 -0
  1824. package/dist/modules/stock_backend/screens/transfer-create.d.ts +13 -0
  1825. package/dist/modules/stock_backend/screens/transfer-create.d.ts.map +1 -0
  1826. package/dist/modules/stock_backend/screens/transfer-create.js +38 -0
  1827. package/dist/modules/stock_backend/screens/transfer-create.js.map +1 -0
  1828. package/dist/modules/stock_backend/screens/transfer-detail.d.ts +27 -0
  1829. package/dist/modules/stock_backend/screens/transfer-detail.d.ts.map +1 -0
  1830. package/dist/modules/stock_backend/screens/transfer-detail.js +91 -0
  1831. package/dist/modules/stock_backend/screens/transfer-detail.js.map +1 -0
  1832. package/dist/modules/stock_backend/screens/transfers-list.d.ts +25 -0
  1833. package/dist/modules/stock_backend/screens/transfers-list.d.ts.map +1 -0
  1834. package/dist/modules/stock_backend/screens/transfers-list.js +81 -0
  1835. package/dist/modules/stock_backend/screens/transfers-list.js.map +1 -0
  1836. package/dist/modules/stock_backend/screens/warehouse-create.d.ts +13 -0
  1837. package/dist/modules/stock_backend/screens/warehouse-create.d.ts.map +1 -0
  1838. package/dist/modules/stock_backend/screens/warehouse-create.js +79 -0
  1839. package/dist/modules/stock_backend/screens/warehouse-create.js.map +1 -0
  1840. package/dist/modules/stock_backend/screens/warehouses-list.d.ts +21 -0
  1841. package/dist/modules/stock_backend/screens/warehouses-list.d.ts.map +1 -0
  1842. package/dist/modules/stock_backend/screens/warehouses-list.js +60 -0
  1843. package/dist/modules/stock_backend/screens/warehouses-list.js.map +1 -0
  1844. package/dist/modules/stock_lot_activity_backend/index.d.ts.map +1 -1
  1845. package/dist/modules/stock_lot_activity_backend/index.js +0 -1
  1846. package/dist/modules/stock_lot_activity_backend/index.js.map +1 -1
  1847. package/dist/modules/stock_lot_mail_backend/index.d.ts.map +1 -1
  1848. package/dist/modules/stock_lot_mail_backend/index.js +0 -1
  1849. package/dist/modules/stock_lot_mail_backend/index.js.map +1 -1
  1850. package/dist/modules/stock_mail_backend/index.d.ts.map +1 -1
  1851. package/dist/modules/stock_mail_backend/index.js +0 -1
  1852. package/dist/modules/stock_mail_backend/index.js.map +1 -1
  1853. package/dist/modules/stock_mail_inbound/index.d.ts.map +1 -1
  1854. package/dist/modules/stock_mail_inbound/index.js +0 -2
  1855. package/dist/modules/stock_mail_inbound/index.js.map +1 -1
  1856. package/dist/modules/stock_staff_channel/channel-routes.d.ts +656 -0
  1857. package/dist/modules/stock_staff_channel/channel-routes.d.ts.map +1 -0
  1858. package/dist/modules/stock_staff_channel/channel-routes.js +445 -0
  1859. package/dist/modules/stock_staff_channel/channel-routes.js.map +1 -0
  1860. package/dist/modules/stock_staff_channel/functions.d.ts +3 -0
  1861. package/dist/modules/stock_staff_channel/functions.d.ts.map +1 -0
  1862. package/dist/modules/stock_staff_channel/functions.js +954 -0
  1863. package/dist/modules/stock_staff_channel/functions.js.map +1 -0
  1864. package/dist/modules/stock_staff_channel/index.d.ts +8 -0
  1865. package/dist/modules/stock_staff_channel/index.d.ts.map +1 -0
  1866. package/dist/modules/stock_staff_channel/index.js +37 -0
  1867. package/dist/modules/stock_staff_channel/index.js.map +1 -0
  1868. package/dist/modules/stock_staff_channel/models.d.ts +4 -0
  1869. package/dist/modules/stock_staff_channel/models.d.ts.map +1 -0
  1870. package/dist/modules/stock_staff_channel/models.js +119 -0
  1871. package/dist/modules/stock_staff_channel/models.js.map +1 -0
  1872. package/dist/modules/stock_staff_channel/operation-routes.d.ts +2 -0
  1873. package/dist/modules/stock_staff_channel/operation-routes.d.ts.map +1 -0
  1874. package/dist/modules/stock_staff_channel/operation-routes.js +1269 -0
  1875. package/dist/modules/stock_staff_channel/operation-routes.js.map +1 -0
  1876. package/dist/modules/storage/functions.d.ts.map +1 -1
  1877. package/dist/modules/storage/functions.js +18 -5
  1878. package/dist/modules/storage/functions.js.map +1 -1
  1879. package/dist/modules/storage/index.js +0 -1
  1880. package/dist/modules/storage/index.js.map +1 -1
  1881. package/dist/modules/storage/jobs.d.ts +21 -1
  1882. package/dist/modules/storage/jobs.d.ts.map +1 -1
  1883. package/dist/modules/storage/jobs.js +142 -2
  1884. package/dist/modules/storage/jobs.js.map +1 -1
  1885. package/dist/modules/storage/models.d.ts.map +1 -1
  1886. package/dist/modules/storage/models.js +2 -0
  1887. package/dist/modules/storage/models.js.map +1 -1
  1888. package/dist/modules/storage/policy.d.ts +5 -0
  1889. package/dist/modules/storage/policy.d.ts.map +1 -0
  1890. package/dist/modules/storage/policy.js +13 -0
  1891. package/dist/modules/storage/policy.js.map +1 -0
  1892. package/dist/modules/storage/routes.d.ts +1 -0
  1893. package/dist/modules/storage/routes.d.ts.map +1 -1
  1894. package/dist/modules/storage/routes.js +19 -15
  1895. package/dist/modules/storage/routes.js.map +1 -1
  1896. package/dist/modules/uom/convert.d.ts +1 -1
  1897. package/dist/modules/uom/convert.js +2 -2
  1898. package/dist/modules/uom/convert.js.map +1 -1
  1899. package/dist/modules/uom/functions.d.ts.map +1 -1
  1900. package/dist/modules/uom/functions.js +39 -4
  1901. package/dist/modules/uom/functions.js.map +1 -1
  1902. package/dist/modules/uom/index.d.ts.map +1 -1
  1903. package/dist/modules/uom/index.js +1 -2
  1904. package/dist/modules/uom/index.js.map +1 -1
  1905. package/dist/modules/uom/messages.js +2 -2
  1906. package/dist/modules/uom/messages.js.map +1 -1
  1907. package/dist/modules/uom/models.d.ts +1 -1
  1908. package/dist/modules/uom/models.d.ts.map +1 -1
  1909. package/dist/modules/uom/models.js +1 -1
  1910. package/dist/modules/uom/models.js.map +1 -1
  1911. package/dist/modules/user/authorization.d.ts +80 -0
  1912. package/dist/modules/user/authorization.d.ts.map +1 -0
  1913. package/dist/modules/user/authorization.js +1039 -0
  1914. package/dist/modules/user/authorization.js.map +1 -0
  1915. package/dist/modules/user/functions.d.ts.map +1 -1
  1916. package/dist/modules/user/functions.js +188 -32
  1917. package/dist/modules/user/functions.js.map +1 -1
  1918. package/dist/modules/user/index.d.ts +4 -1
  1919. package/dist/modules/user/index.d.ts.map +1 -1
  1920. package/dist/modules/user/index.js +2 -3
  1921. package/dist/modules/user/index.js.map +1 -1
  1922. package/dist/modules/user/login.d.ts +1 -27
  1923. package/dist/modules/user/login.d.ts.map +1 -1
  1924. package/dist/modules/user/login.js +5 -45
  1925. package/dist/modules/user/login.js.map +1 -1
  1926. package/dist/modules/user/messages.d.ts +6 -0
  1927. package/dist/modules/user/messages.d.ts.map +1 -1
  1928. package/dist/modules/user/messages.js +6 -0
  1929. package/dist/modules/user/messages.js.map +1 -1
  1930. package/dist/modules/user/models.d.ts +1 -1
  1931. package/dist/modules/user/models.d.ts.map +1 -1
  1932. package/dist/modules/user/models.js +73 -9
  1933. package/dist/modules/user/models.js.map +1 -1
  1934. package/dist/modules/user/relations.d.ts.map +1 -1
  1935. package/dist/modules/user/relations.js +6 -0
  1936. package/dist/modules/user/relations.js.map +1 -1
  1937. package/dist/modules/user/roles.d.ts +11 -1
  1938. package/dist/modules/user/roles.d.ts.map +1 -1
  1939. package/dist/modules/user/roles.js +402 -117
  1940. package/dist/modules/user/roles.js.map +1 -1
  1941. package/dist/modules/user/routes.js +1 -1
  1942. package/dist/modules/user/routes.js.map +1 -1
  1943. package/dist/modules/user_backend/index.d.ts +1 -1
  1944. package/dist/modules/user_backend/index.d.ts.map +1 -1
  1945. package/dist/modules/user_backend/index.js +1 -3
  1946. package/dist/modules/user_backend/index.js.map +1 -1
  1947. package/dist/modules/user_backend/messages.d.ts +60 -0
  1948. package/dist/modules/user_backend/messages.d.ts.map +1 -1
  1949. package/dist/modules/user_backend/messages.js +60 -0
  1950. package/dist/modules/user_backend/messages.js.map +1 -1
  1951. package/dist/modules/user_backend/routes.d.ts.map +1 -1
  1952. package/dist/modules/user_backend/routes.js +352 -69
  1953. package/dist/modules/user_backend/routes.js.map +1 -1
  1954. package/dist/modules/user_backend/screens/index.d.ts +11 -0
  1955. package/dist/modules/user_backend/screens/index.d.ts.map +1 -0
  1956. package/dist/modules/user_backend/screens/index.js +8 -0
  1957. package/dist/modules/user_backend/screens/index.js.map +1 -0
  1958. package/dist/modules/user_backend/screens/presets-form.d.ts +16 -0
  1959. package/dist/modules/user_backend/screens/presets-form.d.ts.map +1 -0
  1960. package/dist/modules/user_backend/screens/presets-form.js +37 -0
  1961. package/dist/modules/user_backend/screens/presets-form.js.map +1 -0
  1962. package/dist/modules/user_backend/screens/profile-form.d.ts +14 -0
  1963. package/dist/modules/user_backend/screens/profile-form.d.ts.map +1 -0
  1964. package/dist/modules/user_backend/screens/profile-form.js +37 -0
  1965. package/dist/modules/user_backend/screens/profile-form.js.map +1 -0
  1966. package/dist/modules/user_backend/screens/role-form.d.ts +21 -0
  1967. package/dist/modules/user_backend/screens/role-form.d.ts.map +1 -0
  1968. package/dist/modules/user_backend/screens/role-form.js +93 -0
  1969. package/dist/modules/user_backend/screens/role-form.js.map +1 -0
  1970. package/dist/modules/user_backend/screens/roles-list.d.ts +15 -0
  1971. package/dist/modules/user_backend/screens/roles-list.d.ts.map +1 -0
  1972. package/dist/modules/user_backend/screens/roles-list.js +48 -0
  1973. package/dist/modules/user_backend/screens/roles-list.js.map +1 -0
  1974. package/dist/modules/user_backend/screens/sessions.d.ts +5 -0
  1975. package/dist/modules/user_backend/screens/sessions.d.ts.map +1 -0
  1976. package/dist/modules/user_backend/screens/sessions.js +35 -0
  1977. package/dist/modules/user_backend/screens/sessions.js.map +1 -0
  1978. package/dist/modules/user_backend/screens/types.d.ts +68 -0
  1979. package/dist/modules/user_backend/screens/types.d.ts.map +1 -0
  1980. package/dist/modules/user_backend/screens/types.js +2 -0
  1981. package/dist/modules/user_backend/screens/types.js.map +1 -0
  1982. package/dist/modules/user_backend/screens/user-form.d.ts +55 -0
  1983. package/dist/modules/user_backend/screens/user-form.d.ts.map +1 -0
  1984. package/dist/modules/user_backend/screens/user-form.js +174 -0
  1985. package/dist/modules/user_backend/screens/user-form.js.map +1 -0
  1986. package/dist/modules/user_backend/screens/users-list.d.ts +17 -0
  1987. package/dist/modules/user_backend/screens/users-list.d.ts.map +1 -0
  1988. package/dist/modules/user_backend/screens/users-list.js +56 -0
  1989. package/dist/modules/user_backend/screens/users-list.js.map +1 -0
  1990. package/dist/modules/website/cms.d.ts +18 -1
  1991. package/dist/modules/website/cms.d.ts.map +1 -1
  1992. package/dist/modules/website/cms.js +373 -38
  1993. package/dist/modules/website/cms.js.map +1 -1
  1994. package/dist/modules/website/customer.d.ts.map +1 -1
  1995. package/dist/modules/website/customer.js +249 -1
  1996. package/dist/modules/website/customer.js.map +1 -1
  1997. package/dist/modules/website/index.d.ts.map +1 -1
  1998. package/dist/modules/website/index.js +26 -4
  1999. package/dist/modules/website/index.js.map +1 -1
  2000. package/dist/modules/website/models.d.ts.map +1 -1
  2001. package/dist/modules/website/models.js +101 -0
  2002. package/dist/modules/website/models.js.map +1 -1
  2003. package/dist/modules/website/paths.d.ts +31 -0
  2004. package/dist/modules/website/paths.d.ts.map +1 -0
  2005. package/dist/modules/website/paths.js +48 -0
  2006. package/dist/modules/website/paths.js.map +1 -0
  2007. package/dist/modules/website/publication.d.ts +3 -0
  2008. package/dist/modules/website/publication.d.ts.map +1 -0
  2009. package/dist/modules/website/publication.js +366 -0
  2010. package/dist/modules/website/publication.js.map +1 -0
  2011. package/dist/modules/website/renderable.d.ts +32 -0
  2012. package/dist/modules/website/renderable.d.ts.map +1 -0
  2013. package/dist/modules/website/renderable.js +59 -0
  2014. package/dist/modules/website/renderable.js.map +1 -0
  2015. package/dist/modules/website/sections.d.ts.map +1 -1
  2016. package/dist/modules/website/sections.js +13 -0
  2017. package/dist/modules/website/sections.js.map +1 -1
  2018. package/dist/modules/website_backend/csv.d.ts +23 -0
  2019. package/dist/modules/website_backend/csv.d.ts.map +1 -0
  2020. package/dist/modules/website_backend/csv.js +31 -0
  2021. package/dist/modules/website_backend/csv.js.map +1 -0
  2022. package/dist/modules/website_backend/index.js +260 -2
  2023. package/dist/modules/website_backend/index.js.map +1 -1
  2024. package/dist/modules/website_backend/menus.d.ts.map +1 -1
  2025. package/dist/modules/website_backend/menus.js +28 -6
  2026. package/dist/modules/website_backend/menus.js.map +1 -1
  2027. package/dist/modules/website_backend/routes.d.ts.map +1 -1
  2028. package/dist/modules/website_backend/routes.js +684 -126
  2029. package/dist/modules/website_backend/routes.js.map +1 -1
  2030. package/dist/modules/website_backend/screens/index.d.ts +333 -0
  2031. package/dist/modules/website_backend/screens/index.d.ts.map +1 -0
  2032. package/dist/modules/website_backend/screens/index.js +1332 -0
  2033. package/dist/modules/website_backend/screens/index.js.map +1 -0
  2034. package/dist/modules/website_backend/screens/page-frame.d.ts +14 -0
  2035. package/dist/modules/website_backend/screens/page-frame.d.ts.map +1 -0
  2036. package/dist/modules/website_backend/screens/page-frame.js +13 -0
  2037. package/dist/modules/website_backend/screens/page-frame.js.map +1 -0
  2038. package/dist/modules/website_form/audit.d.ts +27 -0
  2039. package/dist/modules/website_form/audit.d.ts.map +1 -0
  2040. package/dist/modules/website_form/audit.js +30 -0
  2041. package/dist/modules/website_form/audit.js.map +1 -0
  2042. package/dist/modules/website_form/functions.d.ts.map +1 -1
  2043. package/dist/modules/website_form/functions.js +416 -12
  2044. package/dist/modules/website_form/functions.js.map +1 -1
  2045. package/dist/modules/website_form/index.js +24 -2
  2046. package/dist/modules/website_form/index.js.map +1 -1
  2047. package/dist/modules/website_form/jobs.d.ts +11 -0
  2048. package/dist/modules/website_form/jobs.d.ts.map +1 -0
  2049. package/dist/modules/website_form/jobs.js +80 -0
  2050. package/dist/modules/website_form/jobs.js.map +1 -0
  2051. package/dist/modules/website_form/models.d.ts.map +1 -1
  2052. package/dist/modules/website_form/models.js +89 -0
  2053. package/dist/modules/website_form/models.js.map +1 -1
  2054. package/dist/modules/website_form/purge.d.ts +22 -0
  2055. package/dist/modules/website_form/purge.d.ts.map +1 -0
  2056. package/dist/modules/website_form/purge.js +59 -0
  2057. package/dist/modules/website_form/purge.js.map +1 -0
  2058. package/dist/modules/website_form/retention.d.ts +70 -0
  2059. package/dist/modules/website_form/retention.d.ts.map +1 -0
  2060. package/dist/modules/website_form/retention.js +145 -0
  2061. package/dist/modules/website_form/retention.js.map +1 -0
  2062. package/dist/modules/website_form/routes.d.ts.map +1 -1
  2063. package/dist/modules/website_form/routes.js +37 -3
  2064. package/dist/modules/website_form/routes.js.map +1 -1
  2065. package/dist/modules/website_form_mail/index.d.ts +36 -0
  2066. package/dist/modules/website_form_mail/index.d.ts.map +1 -0
  2067. package/dist/modules/website_form_mail/index.js +137 -0
  2068. package/dist/modules/website_form_mail/index.js.map +1 -0
  2069. package/dist/modules/website_hospitality/channel-routes.d.ts +2 -0
  2070. package/dist/modules/website_hospitality/channel-routes.d.ts.map +1 -0
  2071. package/dist/modules/website_hospitality/channel-routes.js +355 -0
  2072. package/dist/modules/website_hospitality/channel-routes.js.map +1 -0
  2073. package/dist/modules/website_hospitality/functions.d.ts.map +1 -1
  2074. package/dist/modules/website_hospitality/functions.js +27 -2
  2075. package/dist/modules/website_hospitality/functions.js.map +1 -1
  2076. package/dist/modules/website_hospitality/index.js +4 -3
  2077. package/dist/modules/website_hospitality/index.js.map +1 -1
  2078. package/dist/modules/website_hospitality/models.d.ts.map +1 -1
  2079. package/dist/modules/website_hospitality/models.js +2 -0
  2080. package/dist/modules/website_hospitality/models.js.map +1 -1
  2081. package/dist/modules/website_menu/functions.d.ts.map +1 -1
  2082. package/dist/modules/website_menu/functions.js +184 -9
  2083. package/dist/modules/website_menu/functions.js.map +1 -1
  2084. package/dist/modules/website_menu/index.js +6 -1
  2085. package/dist/modules/website_menu/index.js.map +1 -1
  2086. package/dist/modules/website_retail/channel-routes.d.ts +2 -0
  2087. package/dist/modules/website_retail/channel-routes.d.ts.map +1 -0
  2088. package/dist/modules/website_retail/channel-routes.js +305 -0
  2089. package/dist/modules/website_retail/channel-routes.js.map +1 -0
  2090. package/dist/modules/website_retail/functions.d.ts +14 -1
  2091. package/dist/modules/website_retail/functions.d.ts.map +1 -1
  2092. package/dist/modules/website_retail/functions.js +6 -6
  2093. package/dist/modules/website_retail/functions.js.map +1 -1
  2094. package/dist/modules/website_retail/index.js +24 -3
  2095. package/dist/modules/website_retail/index.js.map +1 -1
  2096. package/dist/modules/website_retail/models.d.ts.map +1 -1
  2097. package/dist/modules/website_retail/models.js +30 -0
  2098. package/dist/modules/website_retail/models.js.map +1 -1
  2099. package/dist/modules/website_retail/online.d.ts +3 -0
  2100. package/dist/modules/website_retail/online.d.ts.map +1 -0
  2101. package/dist/modules/website_retail/online.js +710 -0
  2102. package/dist/modules/website_retail/online.js.map +1 -0
  2103. package/dist/modules/website_search/client/search.d.mts +16 -2
  2104. package/dist/modules/website_search/client/search.d.mts.map +1 -1
  2105. package/dist/modules/website_search/client/search.mjs +112 -6
  2106. package/dist/modules/website_search/client/search.mjs.map +1 -1
  2107. package/dist/modules/website_search/functions.d.ts +3 -0
  2108. package/dist/modules/website_search/functions.d.ts.map +1 -0
  2109. package/dist/modules/website_search/functions.js +239 -0
  2110. package/dist/modules/website_search/functions.js.map +1 -0
  2111. package/dist/modules/website_search/index.js +4 -1
  2112. package/dist/modules/website_search/index.js.map +1 -1
  2113. package/dist/modules/website_search/islands.d.ts +6 -0
  2114. package/dist/modules/website_search/islands.d.ts.map +1 -1
  2115. package/dist/modules/website_search/islands.js +8 -2
  2116. package/dist/modules/website_search/islands.js.map +1 -1
  2117. package/dist/modules/website_search/models.d.ts +15 -0
  2118. package/dist/modules/website_search/models.d.ts.map +1 -0
  2119. package/dist/modules/website_search/models.js +58 -0
  2120. package/dist/modules/website_search/models.js.map +1 -0
  2121. package/dist/modules/website_seo/functions.d.ts +3 -0
  2122. package/dist/modules/website_seo/functions.d.ts.map +1 -0
  2123. package/dist/modules/website_seo/functions.js +164 -0
  2124. package/dist/modules/website_seo/functions.js.map +1 -0
  2125. package/dist/modules/website_seo/index.js +15 -5
  2126. package/dist/modules/website_seo/index.js.map +1 -1
  2127. package/dist/modules/website_seo/projection.d.ts +52 -0
  2128. package/dist/modules/website_seo/projection.d.ts.map +1 -0
  2129. package/dist/modules/website_seo/projection.js +129 -0
  2130. package/dist/modules/website_seo/projection.js.map +1 -0
  2131. package/dist/modules/website_seo/routes.d.ts +3 -0
  2132. package/dist/modules/website_seo/routes.d.ts.map +1 -0
  2133. package/dist/modules/website_seo/routes.js +56 -0
  2134. package/dist/modules/website_seo/routes.js.map +1 -0
  2135. package/dist/permission-catalogue.d.ts +5 -0
  2136. package/dist/permission-catalogue.d.ts.map +1 -0
  2137. package/dist/permission-catalogue.js +1505 -0
  2138. package/dist/permission-catalogue.js.map +1 -0
  2139. package/dist/scaffold/index.d.ts +2 -0
  2140. package/dist/scaffold/index.d.ts.map +1 -0
  2141. package/dist/scaffold/index.js +31 -0
  2142. package/dist/scaffold/index.js.map +1 -0
  2143. package/dist/scaffold/templates/README.md.tmpl +17 -0
  2144. package/dist/scaffold/templates/gitignore.tmpl +2 -0
  2145. package/dist/scaffold/templates/ket.workspace.mjs.tmpl +1 -0
  2146. package/dist/scaffold/templates/package.json.tmpl +15 -0
  2147. package/dist/themes/hospitality/templates/website.columns.ktl +4 -0
  2148. package/dist/themes/paper/templates/website.columns.ktl +4 -0
  2149. package/dist/ui/actions.d.ts +4 -0
  2150. package/dist/ui/actions.d.ts.map +1 -1
  2151. package/dist/ui/actions.js +1 -1
  2152. package/dist/ui/actions.js.map +1 -1
  2153. package/dist/ui/activity.d.ts +1 -1
  2154. package/dist/ui/activity.d.ts.map +1 -1
  2155. package/dist/ui/activity.js +3 -5
  2156. package/dist/ui/activity.js.map +1 -1
  2157. package/dist/ui/attachments.js +1 -1
  2158. package/dist/ui/attachments.js.map +1 -1
  2159. package/dist/ui/auth.d.ts +36 -0
  2160. package/dist/ui/auth.d.ts.map +1 -1
  2161. package/dist/ui/auth.js +55 -0
  2162. package/dist/ui/auth.js.map +1 -1
  2163. package/dist/ui/board-page.d.ts +6 -0
  2164. package/dist/ui/board-page.d.ts.map +1 -0
  2165. package/dist/ui/board-page.js +4 -0
  2166. package/dist/ui/board-page.js.map +1 -0
  2167. package/dist/ui/charts.d.ts +83 -0
  2168. package/dist/ui/charts.d.ts.map +1 -0
  2169. package/dist/ui/charts.js +105 -0
  2170. package/dist/ui/charts.js.map +1 -0
  2171. package/dist/ui/chrome.d.ts +37 -2
  2172. package/dist/ui/chrome.d.ts.map +1 -1
  2173. package/dist/ui/chrome.js +39 -5
  2174. package/dist/ui/chrome.js.map +1 -1
  2175. package/dist/ui/client/activity-view.mjs +7 -7
  2176. package/dist/ui/client/activity-view.mjs.map +1 -1
  2177. package/dist/ui/client/activity.css +6 -34
  2178. package/dist/ui/client/calendar-view.d.mts.map +1 -1
  2179. package/dist/ui/client/calendar-view.mjs +7 -6
  2180. package/dist/ui/client/calendar-view.mjs.map +1 -1
  2181. package/dist/ui/client/calendar.css +4 -14
  2182. package/dist/ui/client/chart-view.d.ts +51 -0
  2183. package/dist/ui/client/chart-view.d.ts.map +1 -0
  2184. package/dist/ui/client/chart-view.js +192 -0
  2185. package/dist/ui/client/chart-view.js.map +1 -0
  2186. package/dist/ui/client/flow-app.css +387 -0
  2187. package/dist/ui/client/flow-board-view.d.mts +8 -0
  2188. package/dist/ui/client/flow-board-view.d.mts.map +1 -0
  2189. package/dist/ui/client/flow-board-view.mjs +161 -0
  2190. package/dist/ui/client/flow-board-view.mjs.map +1 -0
  2191. package/dist/ui/client/flow-board.d.mts +3 -0
  2192. package/dist/ui/client/flow-board.d.mts.map +1 -0
  2193. package/dist/ui/client/flow-board.mjs +7 -0
  2194. package/dist/ui/client/flow-board.mjs.map +1 -0
  2195. package/dist/ui/client/flow-map-view.d.mts +2 -0
  2196. package/dist/ui/client/flow-map-view.d.mts.map +1 -0
  2197. package/dist/ui/client/flow-map-view.mjs +235 -0
  2198. package/dist/ui/client/flow-map-view.mjs.map +1 -0
  2199. package/dist/ui/client/flow-map.d.mts +3 -0
  2200. package/dist/ui/client/flow-map.d.mts.map +1 -0
  2201. package/dist/ui/client/flow-map.mjs +7 -0
  2202. package/dist/ui/client/flow-map.mjs.map +1 -0
  2203. package/dist/ui/client/live-doc-blocks.d.ts +19 -0
  2204. package/dist/ui/client/live-doc-blocks.d.ts.map +1 -0
  2205. package/dist/ui/client/live-doc-blocks.js +23 -0
  2206. package/dist/ui/client/live-doc-blocks.js.map +1 -0
  2207. package/dist/ui/client/live-doc-markdown.d.ts +18 -0
  2208. package/dist/ui/client/live-doc-markdown.d.ts.map +1 -0
  2209. package/dist/ui/client/live-doc-markdown.js +175 -0
  2210. package/dist/ui/client/live-doc-markdown.js.map +1 -0
  2211. package/dist/ui/client/live-doc-shell.d.ts +101 -0
  2212. package/dist/ui/client/live-doc-shell.d.ts.map +1 -0
  2213. package/dist/ui/client/live-doc-shell.js +251 -0
  2214. package/dist/ui/client/live-doc-shell.js.map +1 -0
  2215. package/dist/ui/client/live-doc-view.d.ts +33 -0
  2216. package/dist/ui/client/live-doc-view.d.ts.map +1 -0
  2217. package/dist/ui/client/live-doc-view.js +1237 -0
  2218. package/dist/ui/client/live-doc-view.js.map +1 -0
  2219. package/dist/ui/client/live-doc.css +243 -0
  2220. package/dist/ui/client/live-doc.d.mts +12 -0
  2221. package/dist/ui/client/live-doc.d.mts.map +1 -0
  2222. package/dist/ui/client/live-doc.mjs +11 -0
  2223. package/dist/ui/client/live-doc.mjs.map +7 -0
  2224. package/dist/ui/client/mail-bundle.d.mts +9 -0
  2225. package/dist/ui/client/mail-bundle.d.mts.map +1 -0
  2226. package/dist/ui/client/mail-bundle.mjs +50 -0
  2227. package/dist/ui/client/mail-bundle.mjs.map +7 -0
  2228. package/dist/ui/client/mail-entry.d.mts +11 -0
  2229. package/dist/ui/client/mail-entry.d.mts.map +1 -0
  2230. package/dist/ui/client/mail-entry.mjs +9 -0
  2231. package/dist/ui/client/mail-entry.mjs.map +1 -0
  2232. package/dist/ui/client/mail-view.d.mts.map +1 -1
  2233. package/dist/ui/client/mail-view.mjs +5 -3
  2234. package/dist/ui/client/mail-view.mjs.map +1 -1
  2235. package/dist/ui/client/mail.css +3 -3
  2236. package/dist/ui/client/relation-select-view.d.ts +77 -0
  2237. package/dist/ui/client/relation-select-view.d.ts.map +1 -0
  2238. package/dist/ui/client/relation-select-view.js +216 -0
  2239. package/dist/ui/client/relation-select-view.js.map +1 -0
  2240. package/dist/ui/client/table-selection-view.d.ts +4 -0
  2241. package/dist/ui/client/table-selection-view.d.ts.map +1 -0
  2242. package/dist/ui/client/table-selection-view.js +283 -0
  2243. package/dist/ui/client/table-selection-view.js.map +1 -0
  2244. package/dist/ui/dashboard-page.d.ts +6 -0
  2245. package/dist/ui/dashboard-page.d.ts.map +1 -0
  2246. package/dist/ui/dashboard-page.js +4 -0
  2247. package/dist/ui/dashboard-page.js.map +1 -0
  2248. package/dist/ui/data.d.ts +51 -1
  2249. package/dist/ui/data.d.ts.map +1 -1
  2250. package/dist/ui/data.js +87 -1
  2251. package/dist/ui/data.js.map +1 -1
  2252. package/dist/ui/date-picker.d.ts.map +1 -1
  2253. package/dist/ui/date-picker.js +2 -2
  2254. package/dist/ui/date-picker.js.map +1 -1
  2255. package/dist/ui/form-page.d.ts +6 -0
  2256. package/dist/ui/form-page.d.ts.map +1 -0
  2257. package/dist/ui/form-page.js +5 -0
  2258. package/dist/ui/form-page.js.map +1 -0
  2259. package/dist/ui/form.d.ts +4 -1
  2260. package/dist/ui/form.d.ts.map +1 -1
  2261. package/dist/ui/form.js +7 -5
  2262. package/dist/ui/form.js.map +1 -1
  2263. package/dist/ui/format.d.ts +13 -2
  2264. package/dist/ui/format.d.ts.map +1 -1
  2265. package/dist/ui/format.js +28 -7
  2266. package/dist/ui/format.js.map +1 -1
  2267. package/dist/ui/gantt.d.ts +52 -0
  2268. package/dist/ui/gantt.d.ts.map +1 -0
  2269. package/dist/ui/gantt.js +92 -0
  2270. package/dist/ui/gantt.js.map +1 -0
  2271. package/dist/ui/hooks.d.ts.map +1 -1
  2272. package/dist/ui/hooks.js +14 -0
  2273. package/dist/ui/hooks.js.map +1 -1
  2274. package/dist/ui/icons.d.ts.map +1 -1
  2275. package/dist/ui/icons.js +6 -1
  2276. package/dist/ui/icons.js.map +1 -1
  2277. package/dist/ui/index.d.ts +95 -14
  2278. package/dist/ui/index.d.ts.map +1 -1
  2279. package/dist/ui/index.js +78 -13
  2280. package/dist/ui/index.js.map +1 -1
  2281. package/dist/ui/layout.d.ts +43 -38
  2282. package/dist/ui/layout.d.ts.map +1 -1
  2283. package/dist/ui/layout.js +29 -37
  2284. package/dist/ui/layout.js.map +1 -1
  2285. package/dist/ui/list-page.d.ts +19 -0
  2286. package/dist/ui/list-page.d.ts.map +1 -0
  2287. package/dist/ui/list-page.js +21 -0
  2288. package/dist/ui/list-page.js.map +1 -0
  2289. package/dist/ui/media.d.ts +2 -0
  2290. package/dist/ui/media.d.ts.map +1 -1
  2291. package/dist/ui/media.js +1 -1
  2292. package/dist/ui/media.js.map +1 -1
  2293. package/dist/ui/modal.d.ts +26 -1
  2294. package/dist/ui/modal.d.ts.map +1 -1
  2295. package/dist/ui/modal.js +18 -2
  2296. package/dist/ui/modal.js.map +1 -1
  2297. package/dist/ui/nav.d.ts +21 -1
  2298. package/dist/ui/nav.d.ts.map +1 -1
  2299. package/dist/ui/nav.js +43 -8
  2300. package/dist/ui/nav.js.map +1 -1
  2301. package/dist/ui/navigation.d.ts +36 -2
  2302. package/dist/ui/navigation.d.ts.map +1 -1
  2303. package/dist/ui/navigation.js +60 -5
  2304. package/dist/ui/navigation.js.map +1 -1
  2305. package/dist/ui/partner.d.ts +18 -0
  2306. package/dist/ui/partner.d.ts.map +1 -0
  2307. package/dist/ui/partner.js +11 -0
  2308. package/dist/ui/partner.js.map +1 -0
  2309. package/dist/ui/primitives.d.ts +28 -10
  2310. package/dist/ui/primitives.d.ts.map +1 -1
  2311. package/dist/ui/primitives.js +21 -7
  2312. package/dist/ui/primitives.js.map +1 -1
  2313. package/dist/ui/product-media.d.ts +47 -0
  2314. package/dist/ui/product-media.d.ts.map +1 -0
  2315. package/dist/ui/product-media.js +67 -0
  2316. package/dist/ui/product-media.js.map +1 -0
  2317. package/dist/ui/product-variants.d.ts +68 -0
  2318. package/dist/ui/product-variants.d.ts.map +1 -0
  2319. package/dist/ui/product-variants.js +81 -0
  2320. package/dist/ui/product-variants.js.map +1 -0
  2321. package/dist/ui/record-detail.d.ts +70 -0
  2322. package/dist/ui/record-detail.d.ts.map +1 -0
  2323. package/dist/ui/record-detail.js +35 -0
  2324. package/dist/ui/record-detail.js.map +1 -0
  2325. package/dist/ui/record-page.d.ts +16 -0
  2326. package/dist/ui/record-page.d.ts.map +1 -0
  2327. package/dist/ui/record-page.js +13 -0
  2328. package/dist/ui/record-page.js.map +1 -0
  2329. package/dist/ui/record.d.ts +15 -3
  2330. package/dist/ui/record.d.ts.map +1 -1
  2331. package/dist/ui/record.js +6 -5
  2332. package/dist/ui/record.js.map +1 -1
  2333. package/dist/ui/surfaces.d.ts +30 -2
  2334. package/dist/ui/surfaces.d.ts.map +1 -1
  2335. package/dist/ui/surfaces.js +39 -2
  2336. package/dist/ui/surfaces.js.map +1 -1
  2337. package/dist/ui/table.d.ts +25 -2
  2338. package/dist/ui/table.d.ts.map +1 -1
  2339. package/dist/ui/table.js +10 -6
  2340. package/dist/ui/table.js.map +1 -1
  2341. package/dist/ui/timeframe.d.ts +39 -0
  2342. package/dist/ui/timeframe.d.ts.map +1 -0
  2343. package/dist/ui/timeframe.js +36 -0
  2344. package/dist/ui/timeframe.js.map +1 -0
  2345. package/dist/ui/workspace-page.d.ts +16 -0
  2346. package/dist/ui/workspace-page.d.ts.map +1 -0
  2347. package/dist/ui/workspace-page.js +15 -0
  2348. package/dist/ui/workspace-page.js.map +1 -0
  2349. package/package.json +16 -3
  2350. package/dist/modules/account/tt99.d.ts +0 -30
  2351. package/dist/modules/account/tt99.d.ts.map +0 -1
  2352. package/dist/modules/account/tt99.js +0 -1661
  2353. package/dist/modules/account/tt99.js.map +0 -1
  2354. package/dist/modules/account_backend/accounting-overview-screen.d.ts +0 -18
  2355. package/dist/modules/account_backend/accounting-overview-screen.d.ts.map +0 -1
  2356. package/dist/modules/account_backend/accounting-overview-screen.js +0 -104
  2357. package/dist/modules/account_backend/accounting-overview-screen.js.map +0 -1
  2358. package/dist/modules/account_backend/accounts-screen.d.ts +0 -13
  2359. package/dist/modules/account_backend/accounts-screen.d.ts.map +0 -1
  2360. package/dist/modules/account_backend/accounts-screen.js +0 -49
  2361. package/dist/modules/account_backend/accounts-screen.js.map +0 -1
  2362. package/dist/modules/account_backend/customer-invoices-screen.d.ts +0 -14
  2363. package/dist/modules/account_backend/customer-invoices-screen.d.ts.map +0 -1
  2364. package/dist/modules/account_backend/customer-invoices-screen.js +0 -63
  2365. package/dist/modules/account_backend/customer-invoices-screen.js.map +0 -1
  2366. package/dist/modules/account_backend/general-ledger-screen.d.ts +0 -13
  2367. package/dist/modules/account_backend/general-ledger-screen.d.ts.map +0 -1
  2368. package/dist/modules/account_backend/general-ledger-screen.js +0 -56
  2369. package/dist/modules/account_backend/general-ledger-screen.js.map +0 -1
  2370. package/dist/modules/account_backend/journal-entries-screen.d.ts +0 -14
  2371. package/dist/modules/account_backend/journal-entries-screen.d.ts.map +0 -1
  2372. package/dist/modules/account_backend/journal-entries-screen.js +0 -45
  2373. package/dist/modules/account_backend/journal-entries-screen.js.map +0 -1
  2374. package/dist/modules/account_backend/journals-screen.d.ts +0 -14
  2375. package/dist/modules/account_backend/journals-screen.d.ts.map +0 -1
  2376. package/dist/modules/account_backend/journals-screen.js +0 -53
  2377. package/dist/modules/account_backend/journals-screen.js.map +0 -1
  2378. package/dist/modules/account_backend/move-detail-screen.d.ts +0 -10
  2379. package/dist/modules/account_backend/move-detail-screen.d.ts.map +0 -1
  2380. package/dist/modules/account_backend/move-detail-screen.js +0 -100
  2381. package/dist/modules/account_backend/move-detail-screen.js.map +0 -1
  2382. package/dist/modules/account_backend/partner-ledger-screen.d.ts +0 -14
  2383. package/dist/modules/account_backend/partner-ledger-screen.d.ts.map +0 -1
  2384. package/dist/modules/account_backend/partner-ledger-screen.js +0 -69
  2385. package/dist/modules/account_backend/partner-ledger-screen.js.map +0 -1
  2386. package/dist/modules/account_backend/payment-terms-screen.d.ts +0 -14
  2387. package/dist/modules/account_backend/payment-terms-screen.d.ts.map +0 -1
  2388. package/dist/modules/account_backend/payment-terms-screen.js +0 -40
  2389. package/dist/modules/account_backend/payment-terms-screen.js.map +0 -1
  2390. package/dist/modules/account_backend/payments-screen.d.ts +0 -14
  2391. package/dist/modules/account_backend/payments-screen.d.ts.map +0 -1
  2392. package/dist/modules/account_backend/payments-screen.js +0 -54
  2393. package/dist/modules/account_backend/payments-screen.js.map +0 -1
  2394. package/dist/modules/account_backend/screens.d.ts +0 -7
  2395. package/dist/modules/account_backend/screens.d.ts.map +0 -1
  2396. package/dist/modules/account_backend/screens.js +0 -7
  2397. package/dist/modules/account_backend/screens.js.map +0 -1
  2398. package/dist/modules/account_backend/taxes-screen.d.ts +0 -15
  2399. package/dist/modules/account_backend/taxes-screen.d.ts.map +0 -1
  2400. package/dist/modules/account_backend/taxes-screen.js +0 -73
  2401. package/dist/modules/account_backend/taxes-screen.js.map +0 -1
  2402. package/dist/modules/account_backend/trial-balance-screen.d.ts +0 -13
  2403. package/dist/modules/account_backend/trial-balance-screen.d.ts.map +0 -1
  2404. package/dist/modules/account_backend/trial-balance-screen.js +0 -62
  2405. package/dist/modules/account_backend/trial-balance-screen.js.map +0 -1
  2406. package/dist/modules/account_backend/vendor-bills-screen.d.ts +0 -14
  2407. package/dist/modules/account_backend/vendor-bills-screen.d.ts.map +0 -1
  2408. package/dist/modules/account_backend/vendor-bills-screen.js +0 -59
  2409. package/dist/modules/account_backend/vendor-bills-screen.js.map +0 -1
  2410. package/dist/modules/account_partner_backend/screens.d.ts +0 -16
  2411. package/dist/modules/account_partner_backend/screens.d.ts.map +0 -1
  2412. package/dist/modules/account_partner_backend/screens.js +0 -26
  2413. package/dist/modules/account_partner_backend/screens.js.map +0 -1
  2414. package/dist/modules/activity_backend/screens.d.ts +0 -5
  2415. package/dist/modules/activity_backend/screens.d.ts.map +0 -1
  2416. package/dist/modules/activity_backend/screens.js +0 -52
  2417. package/dist/modules/activity_backend/screens.js.map +0 -1
  2418. package/dist/modules/address_backend/screens.d.ts +0 -31
  2419. package/dist/modules/address_backend/screens.d.ts.map +0 -1
  2420. package/dist/modules/address_backend/screens.js +0 -147
  2421. package/dist/modules/address_backend/screens.js.map +0 -1
  2422. package/dist/modules/backend/design/admin.css +0 -4229
  2423. package/dist/modules/backend/design/client/relation-select-view.d.mts +0 -5
  2424. package/dist/modules/backend/design/client/relation-select-view.d.mts.map +0 -1
  2425. package/dist/modules/backend/design/client/relation-select-view.mjs +0 -335
  2426. package/dist/modules/backend/design/client/relation-select-view.mjs.map +0 -1
  2427. package/dist/modules/calendar_backend/screens.d.ts +0 -5
  2428. package/dist/modules/calendar_backend/screens.d.ts.map +0 -1
  2429. package/dist/modules/calendar_backend/screens.js +0 -4
  2430. package/dist/modules/calendar_backend/screens.js.map +0 -1
  2431. package/dist/modules/company_backend/screens.d.ts +0 -62
  2432. package/dist/modules/company_backend/screens.d.ts.map +0 -1
  2433. package/dist/modules/company_backend/screens.js +0 -268
  2434. package/dist/modules/company_backend/screens.js.map +0 -1
  2435. package/dist/modules/crm_backend/list-search.d.ts +0 -21
  2436. package/dist/modules/crm_backend/list-search.d.ts.map +0 -1
  2437. package/dist/modules/crm_backend/list-search.js +0 -220
  2438. package/dist/modules/crm_backend/list-search.js.map +0 -1
  2439. package/dist/modules/crm_backend/screens.d.ts +0 -32
  2440. package/dist/modules/crm_backend/screens.d.ts.map +0 -1
  2441. package/dist/modules/crm_backend/screens.js +0 -405
  2442. package/dist/modules/crm_backend/screens.js.map +0 -1
  2443. package/dist/modules/hospitality_core/screens.d.ts +0 -763
  2444. package/dist/modules/hospitality_core/screens.d.ts.map +0 -1
  2445. package/dist/modules/hospitality_core/screens.js +0 -4138
  2446. package/dist/modules/hospitality_core/screens.js.map +0 -1
  2447. package/dist/modules/hr_backend/screens.d.ts +0 -9
  2448. package/dist/modules/hr_backend/screens.d.ts.map +0 -1
  2449. package/dist/modules/hr_backend/screens.js +0 -144
  2450. package/dist/modules/hr_backend/screens.js.map +0 -1
  2451. package/dist/modules/loyalty_backend/screens.d.ts +0 -33
  2452. package/dist/modules/loyalty_backend/screens.d.ts.map +0 -1
  2453. package/dist/modules/loyalty_backend/screens.js +0 -562
  2454. package/dist/modules/loyalty_backend/screens.js.map +0 -1
  2455. package/dist/modules/mail_backend/screens.d.ts +0 -5
  2456. package/dist/modules/mail_backend/screens.d.ts.map +0 -1
  2457. package/dist/modules/mail_backend/screens.js +0 -11
  2458. package/dist/modules/mail_backend/screens.js.map +0 -1
  2459. package/dist/modules/mail_inbound_backend/screens.d.ts +0 -5
  2460. package/dist/modules/mail_inbound_backend/screens.d.ts.map +0 -1
  2461. package/dist/modules/mail_inbound_backend/screens.js +0 -25
  2462. package/dist/modules/mail_inbound_backend/screens.js.map +0 -1
  2463. package/dist/modules/mail_transport_backend/screens.d.ts +0 -5
  2464. package/dist/modules/mail_transport_backend/screens.d.ts.map +0 -1
  2465. package/dist/modules/mail_transport_backend/screens.js +0 -35
  2466. package/dist/modules/mail_transport_backend/screens.js.map +0 -1
  2467. package/dist/modules/oauth_backend/screens.d.ts +0 -66
  2468. package/dist/modules/oauth_backend/screens.d.ts.map +0 -1
  2469. package/dist/modules/oauth_backend/screens.js +0 -323
  2470. package/dist/modules/oauth_backend/screens.js.map +0 -1
  2471. package/dist/modules/odoo_collaboration_import/functions.d.ts.map +0 -1
  2472. package/dist/modules/odoo_collaboration_import/functions.js +0 -128
  2473. package/dist/modules/odoo_collaboration_import/functions.js.map +0 -1
  2474. package/dist/modules/odoo_collaboration_import/index.d.ts +0 -6
  2475. package/dist/modules/odoo_collaboration_import/index.d.ts.map +0 -1
  2476. package/dist/modules/odoo_collaboration_import/index.js +0 -31
  2477. package/dist/modules/odoo_collaboration_import/index.js.map +0 -1
  2478. package/dist/modules/odoo_collaboration_import/models.d.ts.map +0 -1
  2479. package/dist/modules/odoo_collaboration_import/models.js +0 -76
  2480. package/dist/modules/odoo_collaboration_import/models.js.map +0 -1
  2481. package/dist/modules/odoo_collaboration_import/operations.d.ts +0 -14
  2482. package/dist/modules/odoo_collaboration_import/operations.d.ts.map +0 -1
  2483. package/dist/modules/odoo_collaboration_import/operations.js +0 -1139
  2484. package/dist/modules/odoo_collaboration_import/operations.js.map +0 -1
  2485. package/dist/modules/odoo_collaboration_import/relations.d.ts.map +0 -1
  2486. package/dist/modules/odoo_collaboration_import/relations.js +0 -19
  2487. package/dist/modules/odoo_collaboration_import/relations.js.map +0 -1
  2488. package/dist/modules/odoo_collaboration_import/types.d.ts +0 -58
  2489. package/dist/modules/odoo_collaboration_import/types.d.ts.map +0 -1
  2490. package/dist/modules/odoo_collaboration_import/types.js.map +0 -1
  2491. package/dist/modules/partner_backend/screens.d.ts +0 -53
  2492. package/dist/modules/partner_backend/screens.d.ts.map +0 -1
  2493. package/dist/modules/partner_backend/screens.js +0 -169
  2494. package/dist/modules/partner_backend/screens.js.map +0 -1
  2495. package/dist/modules/pricing_backend/screens.d.ts +0 -13
  2496. package/dist/modules/pricing_backend/screens.d.ts.map +0 -1
  2497. package/dist/modules/pricing_backend/screens.js +0 -182
  2498. package/dist/modules/pricing_backend/screens.js.map +0 -1
  2499. package/dist/modules/product_backend/attributes-screen.d.ts +0 -7
  2500. package/dist/modules/product_backend/attributes-screen.d.ts.map +0 -1
  2501. package/dist/modules/product_backend/attributes-screen.js +0 -76
  2502. package/dist/modules/product_backend/attributes-screen.js.map +0 -1
  2503. package/dist/modules/product_backend/create-screen.d.ts +0 -12
  2504. package/dist/modules/product_backend/create-screen.d.ts.map +0 -1
  2505. package/dist/modules/product_backend/create-screen.js +0 -83
  2506. package/dist/modules/product_backend/create-screen.js.map +0 -1
  2507. package/dist/modules/product_backend/screens.d.ts +0 -68
  2508. package/dist/modules/product_backend/screens.d.ts.map +0 -1
  2509. package/dist/modules/product_backend/screens.js +0 -388
  2510. package/dist/modules/product_backend/screens.js.map +0 -1
  2511. package/dist/modules/purchase_backend/screens.d.ts +0 -29
  2512. package/dist/modules/purchase_backend/screens.d.ts.map +0 -1
  2513. package/dist/modules/purchase_backend/screens.js +0 -324
  2514. package/dist/modules/purchase_backend/screens.js.map +0 -1
  2515. package/dist/modules/sale_backend/invoicing-policies-screen.d.ts +0 -14
  2516. package/dist/modules/sale_backend/invoicing-policies-screen.d.ts.map +0 -1
  2517. package/dist/modules/sale_backend/invoicing-policies-screen.js +0 -36
  2518. package/dist/modules/sale_backend/invoicing-policies-screen.js.map +0 -1
  2519. package/dist/modules/sale_backend/order-detail-screen.d.ts +0 -18
  2520. package/dist/modules/sale_backend/order-detail-screen.d.ts.map +0 -1
  2521. package/dist/modules/sale_backend/order-detail-screen.js +0 -217
  2522. package/dist/modules/sale_backend/order-detail-screen.js.map +0 -1
  2523. package/dist/modules/sale_backend/quotations-screen.d.ts +0 -15
  2524. package/dist/modules/sale_backend/quotations-screen.d.ts.map +0 -1
  2525. package/dist/modules/sale_backend/quotations-screen.js +0 -64
  2526. package/dist/modules/sale_backend/quotations-screen.js.map +0 -1
  2527. package/dist/modules/sale_backend/sales-orders-screen.d.ts +0 -12
  2528. package/dist/modules/sale_backend/sales-orders-screen.d.ts.map +0 -1
  2529. package/dist/modules/sale_backend/sales-orders-screen.js +0 -65
  2530. package/dist/modules/sale_backend/sales-orders-screen.js.map +0 -1
  2531. package/dist/modules/sale_backend/screens.d.ts +0 -23
  2532. package/dist/modules/sale_backend/screens.d.ts.map +0 -1
  2533. package/dist/modules/sale_backend/screens.js +0 -275
  2534. package/dist/modules/sale_backend/screens.js.map +0 -1
  2535. package/dist/modules/stock_backend/forecast-screen.d.ts +0 -28
  2536. package/dist/modules/stock_backend/forecast-screen.d.ts.map +0 -1
  2537. package/dist/modules/stock_backend/forecast-screen.js +0 -108
  2538. package/dist/modules/stock_backend/forecast-screen.js.map +0 -1
  2539. package/dist/modules/stock_backend/inventory-screen.d.ts +0 -27
  2540. package/dist/modules/stock_backend/inventory-screen.d.ts.map +0 -1
  2541. package/dist/modules/stock_backend/inventory-screen.js +0 -141
  2542. package/dist/modules/stock_backend/inventory-screen.js.map +0 -1
  2543. package/dist/modules/stock_backend/locations-screen.d.ts +0 -18
  2544. package/dist/modules/stock_backend/locations-screen.d.ts.map +0 -1
  2545. package/dist/modules/stock_backend/locations-screen.js +0 -92
  2546. package/dist/modules/stock_backend/locations-screen.js.map +0 -1
  2547. package/dist/modules/stock_backend/lot-screen.d.ts +0 -30
  2548. package/dist/modules/stock_backend/lot-screen.d.ts.map +0 -1
  2549. package/dist/modules/stock_backend/lot-screen.js +0 -86
  2550. package/dist/modules/stock_backend/lot-screen.js.map +0 -1
  2551. package/dist/modules/stock_backend/lots-screen.d.ts +0 -21
  2552. package/dist/modules/stock_backend/lots-screen.d.ts.map +0 -1
  2553. package/dist/modules/stock_backend/lots-screen.js +0 -79
  2554. package/dist/modules/stock_backend/lots-screen.js.map +0 -1
  2555. package/dist/modules/stock_backend/picking-types-screen.d.ts +0 -21
  2556. package/dist/modules/stock_backend/picking-types-screen.d.ts.map +0 -1
  2557. package/dist/modules/stock_backend/picking-types-screen.js +0 -110
  2558. package/dist/modules/stock_backend/picking-types-screen.js.map +0 -1
  2559. package/dist/modules/stock_backend/replenishment-screen.d.ts +0 -29
  2560. package/dist/modules/stock_backend/replenishment-screen.d.ts.map +0 -1
  2561. package/dist/modules/stock_backend/replenishment-screen.js +0 -131
  2562. package/dist/modules/stock_backend/replenishment-screen.js.map +0 -1
  2563. package/dist/modules/stock_backend/screens.d.ts +0 -14
  2564. package/dist/modules/stock_backend/screens.d.ts.map +0 -1
  2565. package/dist/modules/stock_backend/screens.js +0 -40
  2566. package/dist/modules/stock_backend/screens.js.map +0 -1
  2567. package/dist/modules/stock_backend/stock-route-screen.d.ts +0 -30
  2568. package/dist/modules/stock_backend/stock-route-screen.d.ts.map +0 -1
  2569. package/dist/modules/stock_backend/stock-route-screen.js +0 -129
  2570. package/dist/modules/stock_backend/stock-route-screen.js.map +0 -1
  2571. package/dist/modules/stock_backend/stock-routes-screen.d.ts +0 -17
  2572. package/dist/modules/stock_backend/stock-routes-screen.d.ts.map +0 -1
  2573. package/dist/modules/stock_backend/stock-routes-screen.js +0 -60
  2574. package/dist/modules/stock_backend/stock-routes-screen.js.map +0 -1
  2575. package/dist/modules/stock_backend/transfer-screen.d.ts +0 -26
  2576. package/dist/modules/stock_backend/transfer-screen.d.ts.map +0 -1
  2577. package/dist/modules/stock_backend/transfer-screen.js +0 -95
  2578. package/dist/modules/stock_backend/transfer-screen.js.map +0 -1
  2579. package/dist/modules/stock_backend/transfers-screen.d.ts +0 -21
  2580. package/dist/modules/stock_backend/transfers-screen.d.ts.map +0 -1
  2581. package/dist/modules/stock_backend/transfers-screen.js +0 -88
  2582. package/dist/modules/stock_backend/transfers-screen.js.map +0 -1
  2583. package/dist/modules/stock_backend/warehouses-screen.d.ts +0 -17
  2584. package/dist/modules/stock_backend/warehouses-screen.d.ts.map +0 -1
  2585. package/dist/modules/stock_backend/warehouses-screen.js +0 -96
  2586. package/dist/modules/stock_backend/warehouses-screen.js.map +0 -1
  2587. package/dist/modules/user_backend/screens.d.ts +0 -70
  2588. package/dist/modules/user_backend/screens.d.ts.map +0 -1
  2589. package/dist/modules/user_backend/screens.js +0 -308
  2590. package/dist/modules/user_backend/screens.js.map +0 -1
  2591. package/dist/modules/website/customer-routes.d.ts +0 -3
  2592. package/dist/modules/website/customer-routes.d.ts.map +0 -1
  2593. package/dist/modules/website/customer-routes.js +0 -322
  2594. package/dist/modules/website/customer-routes.js.map +0 -1
  2595. package/dist/modules/website_backend/screens.d.ts +0 -114
  2596. package/dist/modules/website_backend/screens.d.ts.map +0 -1
  2597. package/dist/modules/website_backend/screens.js +0 -625
  2598. package/dist/modules/website_backend/screens.js.map +0 -1
  2599. package/dist/ui/client/mail.d.mts +0 -11
  2600. package/dist/ui/client/mail.d.mts.map +0 -1
  2601. package/dist/ui/client/mail.mjs +0 -10
  2602. package/dist/ui/client/mail.mjs.map +0 -1
  2603. /package/dist/modules/{odoo_collaboration_import → account_staff_channel}/functions.d.ts +0 -0
  2604. /package/dist/modules/{odoo_collaboration_import → account_staff_channel}/models.d.ts +0 -0
  2605. /package/dist/modules/{odoo_collaboration_import → address_backend/screens}/types.js +0 -0
  2606. /package/dist/modules/{odoo_collaboration_import → manufacturing}/relations.d.ts +0 -0
@@ -1,4138 +0,0 @@
1
- import { jsx as _jsx } from "@ketvietlab/ketjs-view/jsx-runtime";
2
- import { badge, cardGrid, code, dataTable, datePicker, definitionList, emptyState, formCluster as FormCluster, formatMoney, framedPage as Framed, icon, linkButton, metric, mediaPanel, notice, recordActions, person, recordForm as RecordForm, recordWorkspace as RecordWorkspace, scheduleBoard, section as Section, stack, surface as Surface, } from '../../ui/index.js';
3
- import { addCalendarDays, dateKeyIn, zonedMidnight } from './calendar.js';
4
- import { ACCOMMODATION_TYPES, BOOKING_PROVIDERS, CHARGE_TYPES, DOCUMENT_TYPES, GENDERS, ROOM_STATUSES, ROOM_VIEW_TYPES, } from './types.js';
5
- const providerName = (_, provider) => BOOKING_PROVIDERS.includes(provider)
6
- ? _(`hospitality_core.provider.${provider}`)
7
- : provider.replace(/[_-]+/g, ' ').replace(/\b\w/g, (letter) => letter.toUpperCase());
8
- const statusTone = (status) => {
9
- if (status === 'available')
10
- return 'positive';
11
- if (status === 'dirty' || status === 'cleaning')
12
- return 'warning';
13
- if (status === 'maintenance' || status === 'out_of_order')
14
- return 'danger';
15
- if (status === 'occupied')
16
- return 'info';
17
- return 'neutral';
18
- };
19
- const workflowTone = (status) => {
20
- if (status === 'confirmed' || status === 'checked_in' || status === 'open')
21
- return 'positive';
22
- if (status === 'draft')
23
- return 'warning';
24
- if (status === 'cancelled' || status === 'no_show')
25
- return 'danger';
26
- if (status === 'checked_out' || status === 'closed')
27
- return 'neutral';
28
- return 'info';
29
- };
30
- const cleaningTone = (state) => {
31
- if (state === 'todo')
32
- return 'warning';
33
- if (state === 'in_progress')
34
- return 'info';
35
- if (state === 'done')
36
- return 'positive';
37
- return 'neutral';
38
- };
39
- const dateTime = (value, locale, timezone) => new Intl.DateTimeFormat(locale, {
40
- timeZone: timezone,
41
- day: '2-digit',
42
- month: '2-digit',
43
- hour: '2-digit',
44
- minute: '2-digit',
45
- hour12: false,
46
- }).format(new Date(value));
47
- const guestName = (row) => row.partner?.name ?? row.partnerId;
48
- const propertyColumns = (_) => [
49
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
50
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
51
- {
52
- key: 'type',
53
- label: _('hospitality_core.col.type'),
54
- cell: (row) => badge(_(`hospitality_core.accommodation.${row.accommodationType}`)),
55
- kind: 'status',
56
- },
57
- {
58
- key: 'location',
59
- label: _('hospitality_core.col.location'),
60
- cell: (row) => row.addressLine || [row.city, row.country].filter(Boolean).join(', ') || '—',
61
- },
62
- {
63
- key: 'rooms',
64
- label: _('hospitality_core.col.rooms'),
65
- cell: (row) => String(row.rooms),
66
- align: 'end',
67
- kind: 'number',
68
- },
69
- {
70
- key: 'stars',
71
- label: _('hospitality_core.col.stars'),
72
- cell: (row) => String(row.starRating),
73
- align: 'end',
74
- kind: 'number',
75
- },
76
- ];
77
- const roomColumns = (_) => [
78
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
79
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
80
- {
81
- key: 'roomType',
82
- label: _('hospitality_core.col.roomType'),
83
- cell: (row) => row.roomType?.name ?? code(row.roomTypeId),
84
- },
85
- {
86
- key: 'location',
87
- label: _('hospitality_core.col.location'),
88
- cell: (row) => [row.building?.name ?? row.building?.code, row.floor?.name ?? row.floor?.code]
89
- .filter(Boolean)
90
- .join(' · ') || '—',
91
- },
92
- {
93
- key: 'capacity',
94
- label: _('hospitality_core.col.capacity'),
95
- cell: (row) => String(row.capacity),
96
- align: 'end',
97
- kind: 'number',
98
- },
99
- {
100
- key: 'status',
101
- label: _('hospitality_core.col.status'),
102
- cell: (row) => badge(_(`hospitality_core.roomStatus.${row.status}`), statusTone(row.status), row.status),
103
- kind: 'status',
104
- priority: 'primary',
105
- },
106
- ];
107
- const buildingColumns = (_) => [
108
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
109
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
110
- {
111
- key: 'floors',
112
- label: _('hospitality_core.room.metric.floors'),
113
- cell: (row) => String(row.floors?.filter((floor) => floor.active !== false).length ?? 0),
114
- align: 'end',
115
- kind: 'number',
116
- },
117
- {
118
- key: 'rooms',
119
- label: _('hospitality_core.col.rooms'),
120
- cell: (row) => String(row.rooms?.filter((room) => room.active !== false).length ?? 0),
121
- align: 'end',
122
- kind: 'number',
123
- },
124
- {
125
- key: 'active',
126
- label: _('hospitality_core.col.status'),
127
- cell: (row) => badge(_(row.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), row.active ? 'positive' : 'neutral'),
128
- kind: 'status',
129
- },
130
- ];
131
- const floorColumns = (_) => [
132
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
133
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
134
- {
135
- key: 'building',
136
- label: _('hospitality_core.room.field.building'),
137
- cell: (row) => row.building?.name ?? row.building?.code ?? code(row.buildingId),
138
- },
139
- {
140
- key: 'sequence',
141
- label: _('hospitality_core.room.field.sequence'),
142
- cell: (row) => String(row.sequence),
143
- align: 'end',
144
- kind: 'number',
145
- },
146
- {
147
- key: 'rooms',
148
- label: _('hospitality_core.col.rooms'),
149
- cell: (row) => String(row.rooms?.filter((room) => room.active !== false).length ?? 0),
150
- align: 'end',
151
- kind: 'number',
152
- },
153
- {
154
- key: 'active',
155
- label: _('hospitality_core.col.status'),
156
- cell: (row) => badge(_(row.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), row.active ? 'positive' : 'neutral'),
157
- kind: 'status',
158
- },
159
- ];
160
- const roomTypeColumns = (_) => [
161
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
162
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
163
- {
164
- key: 'capacity',
165
- label: _('hospitality_core.col.capacity'),
166
- cell: (row) => String(row.defaultCapacity),
167
- align: 'end',
168
- kind: 'number',
169
- },
170
- {
171
- key: 'rooms',
172
- label: _('hospitality_core.col.rooms'),
173
- cell: (row) => String(row.rooms?.length ?? 0),
174
- align: 'end',
175
- kind: 'number',
176
- },
177
- {
178
- key: 'baseRate',
179
- label: _('hospitality_core.col.baseRate'),
180
- cell: (row) => formatMoney(_, row.baseRate),
181
- align: 'end',
182
- kind: 'currency',
183
- },
184
- {
185
- key: 'published',
186
- label: _('hospitality_core.col.published'),
187
- cell: (row) => badge(_(row.published ? 'hospitality_core.value.yes' : 'hospitality_core.value.no'), row.published ? 'positive' : 'neutral'),
188
- kind: 'status',
189
- },
190
- ];
191
- const amenityColumns = (_) => [
192
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
193
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
194
- {
195
- key: 'scope',
196
- label: _('hospitality_core.col.scope'),
197
- cell: (row) => badge(_(`hospitality_core.amenityScope.${row.scope}`)),
198
- kind: 'status',
199
- },
200
- ];
201
- const policyColumns = (_) => [
202
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
203
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
204
- {
205
- key: 'policy',
206
- label: _('hospitality_core.col.policy'),
207
- cell: (row) => badge(_(`hospitality_core.policy.${row.type}`)),
208
- kind: 'status',
209
- },
210
- {
211
- key: 'freeCancellation',
212
- label: _('hospitality_core.col.freeCancellation'),
213
- cell: (row) => _('hospitality_core.value.hours', { count: row.freeCancellationHours }),
214
- align: 'end',
215
- kind: 'number',
216
- },
217
- {
218
- key: 'penalty',
219
- label: _('hospitality_core.col.penalty'),
220
- cell: (row) => _('hospitality_core.value.percent', { count: Number(row.penaltyPercent) }),
221
- align: 'end',
222
- kind: 'number',
223
- },
224
- ];
225
- const ratePlanColumns = (_) => [
226
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
227
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
228
- {
229
- key: 'roomType',
230
- label: _('hospitality_core.col.roomType'),
231
- cell: (row) => row.roomType?.name ?? row.roomType?.code ?? code(row.roomTypeId),
232
- },
233
- {
234
- key: 'rateType',
235
- label: _('hospitality_core.col.rateType'),
236
- cell: (row) => badge(_(`hospitality_core.bookingType.${row.rateType}`)),
237
- kind: 'status',
238
- },
239
- {
240
- key: 'amount',
241
- label: _('hospitality_core.col.amount'),
242
- cell: (row) => formatMoney(_, row.amount),
243
- align: 'end',
244
- kind: 'currency',
245
- },
246
- {
247
- key: 'mealPlan',
248
- label: _('hospitality_core.col.mealPlan'),
249
- cell: (row) => (row.mealPlan ? _(`hospitality_core.mealPlan.${row.mealPlan}`) : '—'),
250
- },
251
- {
252
- key: 'los',
253
- label: _('hospitality_core.col.los'),
254
- cell: (row) => `${row.minStay || '—'} / ${row.maxStay || '∞'}`,
255
- align: 'end',
256
- kind: 'number',
257
- },
258
- {
259
- key: 'default',
260
- label: _('hospitality_core.col.default'),
261
- cell: (row) => badge(_(row.isDefault ? 'hospitality_core.value.yes' : 'hospitality_core.value.no'), row.isDefault ? 'positive' : 'neutral'),
262
- kind: 'status',
263
- },
264
- {
265
- key: 'active',
266
- label: _('hospitality_core.col.status'),
267
- cell: (row) => badge(_(row.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), row.active ? 'positive' : 'neutral'),
268
- kind: 'status',
269
- },
270
- ];
271
- const inventoryColumns = (_) => [
272
- { key: 'date', label: _('hospitality_core.col.date'), cell: (row) => row.date, kind: 'date' },
273
- {
274
- key: 'total',
275
- label: _('hospitality_core.col.total'),
276
- cell: (row) => String(row.total),
277
- align: 'end',
278
- kind: 'number',
279
- },
280
- {
281
- key: 'sold',
282
- label: _('hospitality_core.col.sold'),
283
- cell: (row) => String(row.sold),
284
- align: 'end',
285
- kind: 'number',
286
- },
287
- {
288
- key: 'blocked',
289
- label: _('hospitality_core.col.blocked'),
290
- cell: (row) => String(row.blocked),
291
- align: 'end',
292
- kind: 'number',
293
- },
294
- {
295
- key: 'available',
296
- label: _('hospitality_core.col.available'),
297
- cell: (row) => String(row.available),
298
- align: 'end',
299
- kind: 'number',
300
- priority: 'primary',
301
- },
302
- {
303
- key: 'los',
304
- label: _('hospitality_core.col.los'),
305
- cell: (row) => `${row.minLos || '—'} / ${row.maxLos || '∞'}`,
306
- align: 'end',
307
- kind: 'number',
308
- },
309
- {
310
- key: 'restrictions',
311
- label: _('hospitality_core.col.restrictions'),
312
- cell: (row) => {
313
- const values = [
314
- ...(row.stopSell ? [_('hospitality_core.restriction.stopSell')] : []),
315
- ...(row.closedToArrival ? ['CTA'] : []),
316
- ...(row.closedToDeparture ? ['CTD'] : []),
317
- ];
318
- return values.length
319
- ? badge(values.join(' · '), row.stopSell ? 'danger' : 'warning')
320
- : badge(_('hospitality_core.restriction.open'), 'positive');
321
- },
322
- kind: 'status',
323
- },
324
- ];
325
- const cleaningTaskColumns = (_, locale, timezone) => [
326
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
327
- {
328
- key: 'room',
329
- label: _('hospitality_core.col.room'),
330
- cell: (row) => row.room?.name ?? row.room?.code ?? '—',
331
- priority: 'primary',
332
- },
333
- {
334
- key: 'status',
335
- label: _('hospitality_core.col.status'),
336
- cell: (row) => badge(_(`hospitality_core.cleaningState.${row.state}`), cleaningTone(row.state), row.state),
337
- kind: 'status',
338
- priority: 'primary',
339
- },
340
- {
341
- key: 'priority',
342
- label: _('hospitality_core.col.priority'),
343
- cell: (row) => badge(_(`hospitality_core.cleaningPriority.${row.priority}`), row.priority === 'urgent' ? 'danger' : 'neutral'),
344
- kind: 'status',
345
- },
346
- {
347
- key: 'type',
348
- label: _('hospitality_core.col.type'),
349
- cell: (row) => _(`hospitality_core.cleaningType.${row.taskType}`),
350
- },
351
- {
352
- key: 'assignee',
353
- label: _('hospitality_core.col.assignee'),
354
- cell: (row) => row.assigneeId ?? '—',
355
- },
356
- {
357
- key: 'requestedAt',
358
- label: _('hospitality_core.col.requestedAt'),
359
- cell: (row) => dateTime(row.requestedAt, locale, timezone),
360
- kind: 'date',
361
- },
362
- ];
363
- const PROPERTY_TIMEZONES = [
364
- 'Asia/Ho_Chi_Minh',
365
- 'Asia/Bangkok',
366
- 'Asia/Singapore',
367
- 'Asia/Kuala_Lumpur',
368
- 'Asia/Jakarta',
369
- 'Asia/Manila',
370
- 'Asia/Tokyo',
371
- 'Asia/Seoul',
372
- 'Australia/Sydney',
373
- 'Europe/London',
374
- 'America/New_York',
375
- 'UTC',
376
- ];
377
- const propertyFormFields = (_, values, policies) => {
378
- const timezones = [...new Set([values.timezone, ...PROPERTY_TIMEZONES])];
379
- return [
380
- { name: 'code', label: _('hospitality_core.property.field.code'), value: values.code, required: true },
381
- { name: 'name', label: _('hospitality_core.property.field.name'), value: values.name, required: true },
382
- {
383
- name: 'publicName',
384
- label: _('hospitality_core.property.field.publicName'),
385
- value: values.publicName,
386
- help: _('hospitality_core.property.field.publicNameHint'),
387
- },
388
- {
389
- name: 'accommodationType',
390
- label: _('hospitality_core.property.field.accommodationType'),
391
- type: 'select',
392
- value: values.accommodationType,
393
- required: true,
394
- options: ACCOMMODATION_TYPES.map((value) => ({
395
- value,
396
- label: _(`hospitality_core.accommodation.${value}`),
397
- })),
398
- },
399
- {
400
- name: 'starRating',
401
- label: _('hospitality_core.property.field.starRating'),
402
- type: 'number',
403
- value: values.starRating,
404
- required: true,
405
- step: '1',
406
- help: _('hospitality_core.property.field.starRatingHint'),
407
- },
408
- {
409
- name: 'timezone',
410
- label: _('hospitality_core.property.field.timezone'),
411
- type: 'select',
412
- value: values.timezone,
413
- required: true,
414
- options: timezones.map((value) => ({ value, label: value })),
415
- },
416
- {
417
- name: 'defaultCheckIn',
418
- label: _('hospitality_core.property.field.defaultCheckIn'),
419
- type: 'time',
420
- value: values.defaultCheckIn,
421
- required: true,
422
- step: '60',
423
- },
424
- {
425
- name: 'defaultCheckOut',
426
- label: _('hospitality_core.property.field.defaultCheckOut'),
427
- type: 'time',
428
- value: values.defaultCheckOut,
429
- required: true,
430
- step: '60',
431
- },
432
- {
433
- name: 'enforceTimes',
434
- label: _('hospitality_core.property.field.enforceTimes'),
435
- type: 'checkbox',
436
- value: values.enforceTimes,
437
- help: _('hospitality_core.property.field.enforceTimesHint'),
438
- },
439
- {
440
- name: 'longStayBillOnCheckIn',
441
- label: _('hospitality_core.property.field.longStayBillOnCheckIn'),
442
- type: 'checkbox',
443
- value: values.longStayBillOnCheckIn === true,
444
- help: _('hospitality_core.property.field.longStayBillOnCheckInHint'),
445
- },
446
- {
447
- name: 'childrenStayFree',
448
- label: _('hospitality_core.property.field.childrenStayFree'),
449
- type: 'checkbox',
450
- value: values.childrenStayFree,
451
- },
452
- {
453
- name: 'minimumGuestAge',
454
- label: _('hospitality_core.property.field.minimumGuestAge'),
455
- type: 'number',
456
- value: values.minimumGuestAge,
457
- step: '1',
458
- },
459
- {
460
- name: 'defaultCancellationPolicyId',
461
- label: _('hospitality_core.property.field.defaultCancellationPolicy'),
462
- type: 'select',
463
- value: values.defaultCancellationPolicyId,
464
- options: [
465
- { value: '', label: _('hospitality_core.property.value.noDefaultPolicy') },
466
- ...choices(policies),
467
- ],
468
- },
469
- {
470
- name: 'description',
471
- label: _('hospitality_core.property.field.description'),
472
- type: 'textarea',
473
- value: values.description,
474
- span: 'full',
475
- },
476
- {
477
- name: 'houseRules',
478
- label: _('hospitality_core.property.field.houseRules'),
479
- type: 'textarea',
480
- value: values.houseRules,
481
- span: 'full',
482
- },
483
- ];
484
- };
485
- const propertyForm = (_, values, policies, locale, action, submit, cancelHref) => (_jsx(RecordForm, { action: action, fields: propertyFormFields(_, values, policies), hidden: { id: values.id, lang: locale }, submit: submit, submitVariant: "primary", cancelHref: cancelHref, cancelLabel: _('hospitality_core.action.cancel') }));
486
- export const propertiesScreen = (_, rows, totals, locale, frame) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.properties.title'), frame: frame, body: stack([
487
- linkButton({
488
- label: _('hospitality_core.property.action.create'),
489
- href: `/admin/hospitality/properties/new?lang=${encodeURIComponent(locale)}`,
490
- variant: 'primary',
491
- }),
492
- cardGrid({
493
- items: [
494
- { id: 'properties', label: _('hospitality_core.metric.properties'), value: rows.length },
495
- { id: 'rooms', label: _('hospitality_core.metric.rooms'), value: totals.rooms },
496
- { id: 'available', label: _('hospitality_core.metric.available'), value: totals.available },
497
- { id: 'attention', label: _('hospitality_core.metric.attention'), value: totals.attention },
498
- ],
499
- id: (item) => item.id,
500
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
501
- }),
502
- rows.length
503
- ? dataTable(_, {
504
- columns: propertyColumns(_),
505
- rows,
506
- id: (row) => row.id,
507
- rowHref: (row) => `/admin/hospitality/properties/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
508
- })
509
- : emptyState(_('hospitality_core.screen.properties.empty'), _('hospitality_core.screen.properties.emptyHint')),
510
- ]) }));
511
- const propertyFeedback = (_, status, errors = []) => {
512
- if (status === 'created' || status === 'saved')
513
- return notice({
514
- title: _(`hospitality_core.property.feedback.${status}`),
515
- message: _('hospitality_core.property.feedback.savedHint'),
516
- tone: 'positive',
517
- });
518
- if (errors.length)
519
- return notice({
520
- title: _('hospitality_core.feedback.invalid'),
521
- message: errors.join(' '),
522
- tone: 'danger',
523
- });
524
- return null;
525
- };
526
- export const newPropertyScreen = (_, values, policies, locale, frame, errors = []) => (_jsx(Framed, { translator: _, title: _('hospitality_core.property.create.title'), frame: frame, body: stack([
527
- propertyFeedback(_, null, errors),
528
- _jsx(Section, { title: _('hospitality_core.property.create.title'), description: _('hospitality_core.property.create.hint'), body: propertyForm(_, values, policies, locale, `/admin/hospitality/properties/new?lang=${encodeURIComponent(locale)}`, _('hospitality_core.property.action.create'), `/admin/hospitality/properties?lang=${encodeURIComponent(locale)}`) }),
529
- ]) }));
530
- export const propertyDetailScreen = (_, property, policies, locale, frame, status, errors = [], attempted) => {
531
- const query = `lang=${encodeURIComponent(locale)}`;
532
- const values = attempted ?? property;
533
- const rooms = property.rooms ?? [];
534
- return (_jsx(Framed, { translator: _, title: property.name, frame: frame, body: stack([
535
- propertyFeedback(_, status, errors),
536
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.property.detail.kicker'), title: property.name, subtitle: `${property.code} · ${property.publicName || property.name}`, imageFallback: icon('hotel'), badges: [
537
- badge(_(`hospitality_core.accommodation.${property.accommodationType}`), 'info'),
538
- badge(_(property.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), property.active ? 'positive' : 'neutral'),
539
- ], summary: [
540
- {
541
- id: 'rooms',
542
- label: _('hospitality_core.metric.rooms'),
543
- value: rooms.length,
544
- href: `/admin/hospitality/rooms?property=${encodeURIComponent(property.id)}&${query}`,
545
- },
546
- {
547
- id: 'room-types',
548
- label: _('hospitality_core.menu.roomTypes'),
549
- value: property.roomTypes?.length ?? 0,
550
- href: `/admin/hospitality/room-types?property=${encodeURIComponent(property.id)}&${query}`,
551
- },
552
- {
553
- id: 'buildings',
554
- label: _('hospitality_core.property.metric.buildings'),
555
- value: property.buildings?.length ?? 0,
556
- },
557
- ], navigation: linkButton({
558
- label: _('hospitality_core.property.action.back'),
559
- href: `/admin/hospitality/properties?${query}`,
560
- variant: 'tertiary',
561
- icon: 'chevron-left',
562
- }), body: stack([
563
- _jsx(Section, { title: _('hospitality_core.property.section.information'), description: _('hospitality_core.property.section.informationHint'), body: definitionList({
564
- title: property.publicName || property.name,
565
- items: [
566
- {
567
- key: 'address',
568
- term: _('hospitality_core.property.field.address'),
569
- value: property.addressLine || '—',
570
- },
571
- {
572
- key: 'timezone',
573
- term: _('hospitality_core.property.field.timezone'),
574
- value: property.timezone,
575
- },
576
- {
577
- key: 'check-in',
578
- term: _('hospitality_core.property.field.defaultCheckIn'),
579
- value: property.defaultCheckIn,
580
- },
581
- {
582
- key: 'check-out',
583
- term: _('hospitality_core.property.field.defaultCheckOut'),
584
- value: property.defaultCheckOut,
585
- },
586
- {
587
- key: 'policy',
588
- term: _('hospitality_core.property.field.defaultCancellationPolicy'),
589
- value: property.defaultCancellationPolicy?.name ??
590
- property.defaultCancellationPolicy?.code ??
591
- _('hospitality_core.property.value.noDefaultPolicy'),
592
- },
593
- ],
594
- }) }),
595
- _jsx(Section, { title: _('hospitality_core.property.section.settings'), description: _('hospitality_core.property.section.settingsHint'), body: propertyForm(_, values, policies, locale, `/admin/hospitality/properties/${encodeURIComponent(property.id)}?${query}`, _('hospitality_core.property.action.save'), `/admin/hospitality/properties?${query}`) }),
596
- _jsx(Section, { title: _('hospitality_core.property.section.next'), description: _('hospitality_core.property.section.nextHint'), body: stack([
597
- linkButton({
598
- label: _('hospitality_core.menu.roomTypes'),
599
- href: `/admin/hospitality/room-types?property=${encodeURIComponent(property.id)}&${query}`,
600
- variant: 'secondary',
601
- }),
602
- linkButton({
603
- label: _('hospitality_core.menu.rooms'),
604
- href: `/admin/hospitality/rooms?property=${encodeURIComponent(property.id)}&${query}`,
605
- variant: 'secondary',
606
- }),
607
- linkButton({
608
- label: _('hospitality_core.menu.inventory'),
609
- href: `/admin/hospitality/inventory?property=${encodeURIComponent(property.id)}&${query}`,
610
- variant: 'secondary',
611
- }),
612
- linkButton({
613
- label: _('hospitality_core.menu.content'),
614
- href: `/admin/hospitality/content?property=${encodeURIComponent(property.id)}&${query}`,
615
- variant: 'secondary',
616
- }),
617
- ], 'compact') }),
618
- ]) }),
619
- ]) }));
620
- };
621
- const roomFeedback = (_, status, errors = []) => {
622
- if (status === 'building-created' ||
623
- status === 'floor-created' ||
624
- status === 'created' ||
625
- status === 'saved' ||
626
- status === 'archived' ||
627
- status === 'restored')
628
- return notice({
629
- title: _(`hospitality_core.room.feedback.${status}`),
630
- message: _(status === 'archived' || status === 'restored'
631
- ? `hospitality_core.room.feedback.${status}Hint`
632
- : 'hospitality_core.room.feedback.savedHint'),
633
- tone: 'positive',
634
- });
635
- if (status === 'invalid' || errors.length)
636
- return notice({
637
- title: _('hospitality_core.feedback.invalid'),
638
- message: errors.join(' ') || _('hospitality_core.feedback.invalidHint'),
639
- tone: 'danger',
640
- });
641
- return null;
642
- };
643
- const roomFormFields = (_, values, properties, roomTypes, buildings, floors) => [
644
- {
645
- name: 'propertyId',
646
- label: _('hospitality_core.room.field.property'),
647
- type: 'select',
648
- value: values.propertyId,
649
- options: choices(properties),
650
- required: true,
651
- disabled: true,
652
- },
653
- {
654
- name: 'roomTypeId',
655
- label: _('hospitality_core.room.field.roomType'),
656
- type: 'select',
657
- value: values.roomTypeId,
658
- options: choices(roomTypes),
659
- required: true,
660
- },
661
- {
662
- name: 'code',
663
- label: _('hospitality_core.room.field.code'),
664
- value: values.code,
665
- required: true,
666
- help: _('hospitality_core.room.field.codeHint'),
667
- },
668
- {
669
- name: 'name',
670
- label: _('hospitality_core.room.field.name'),
671
- value: values.name,
672
- required: true,
673
- },
674
- {
675
- name: 'buildingId',
676
- label: _('hospitality_core.room.field.building'),
677
- type: 'select',
678
- value: values.buildingId,
679
- options: [{ value: '', label: _('hospitality_core.room.value.noBuilding') }, ...choices(buildings)],
680
- },
681
- {
682
- name: 'floorId',
683
- label: _('hospitality_core.room.field.floor'),
684
- type: 'select',
685
- value: values.floorId,
686
- options: [
687
- { value: '', label: _('hospitality_core.room.value.noFloor') },
688
- ...floors.map((floor) => ({
689
- value: floor.id,
690
- label: `${floor.building?.name ?? floor.building?.code ?? ''}${floor.building ? ' · ' : ''}${floor.name}`,
691
- })),
692
- ],
693
- help: _('hospitality_core.room.field.floorHint'),
694
- },
695
- {
696
- name: 'capacity',
697
- label: _('hospitality_core.room.field.capacity'),
698
- type: 'number',
699
- value: values.capacity,
700
- required: true,
701
- step: '1',
702
- },
703
- ];
704
- const roomForm = (_, values, properties, roomTypes, buildings, floors, locale, action, submit, cancelHref) => (_jsx(RecordForm, { action: action, fields: roomFormFields(_, values, properties, roomTypes, buildings, floors), hidden: {
705
- lang: locale,
706
- propertyId: values.propertyId,
707
- }, submit: submit, submitVariant: "primary", cancelHref: cancelHref, cancelLabel: _('hospitality_core.action.cancel') }));
708
- export const roomsScreen = (_, data, locale, frame, status, errors = []) => {
709
- const query = new URLSearchParams({ lang: locale });
710
- if (data.propertyId)
711
- query.set('property', data.propertyId);
712
- const action = `/admin/hospitality/rooms?${query.toString()}`;
713
- const activeBuildings = data.buildings.filter((row) => row.active);
714
- const activeFloors = data.floors.filter((row) => row.active);
715
- const canCreateRoom = Boolean(data.propertyId && data.roomTypes.length);
716
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.rooms.title'), frame: frame, body: stack([
717
- roomFeedback(_, status, errors),
718
- _jsx(RecordForm, { action: "/admin/hospitality/rooms", method: "get", layout: "inline", fields: [
719
- {
720
- name: 'property',
721
- label: _('hospitality_core.room.field.property'),
722
- type: 'select',
723
- value: data.propertyId,
724
- options: choices(data.properties),
725
- },
726
- ], hidden: { lang: locale }, submit: _('hospitality_core.action.apply'), submitVariant: "secondary" }),
727
- canCreateRoom
728
- ? linkButton({
729
- label: _('hospitality_core.room.action.create'),
730
- href: `/admin/hospitality/rooms/new?${query.toString()}`,
731
- variant: 'primary',
732
- })
733
- : notice({
734
- title: _('hospitality_core.room.empty.prerequisite'),
735
- message: _('hospitality_core.room.empty.prerequisiteHint'),
736
- tone: 'warning',
737
- }),
738
- cardGrid({
739
- items: [
740
- { id: 'rooms', label: _('hospitality_core.metric.rooms'), value: data.rows.length },
741
- {
742
- id: 'buildings',
743
- label: _('hospitality_core.property.metric.buildings'),
744
- value: activeBuildings.length,
745
- },
746
- { id: 'floors', label: _('hospitality_core.room.metric.floors'), value: activeFloors.length },
747
- {
748
- id: 'available',
749
- label: _('hospitality_core.metric.available'),
750
- value: data.rows.filter((row) => row.status === 'available').length,
751
- },
752
- ],
753
- id: (item) => item.id,
754
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
755
- }),
756
- ...(data.propertyId
757
- ? [
758
- _jsx(Section, { title: _('hospitality_core.room.section.locationSetup'), description: _('hospitality_core.room.section.locationSetupHint'), body: _jsx(FormCluster, { label: _('hospitality_core.room.section.locationSetup'), forms: [
759
- _jsx(RecordForm, { action: action, hidden: {
760
- id: 'new-building',
761
- operation: 'save-building',
762
- propertyId: data.propertyId,
763
- }, submit: _('hospitality_core.room.action.createBuilding'), submitVariant: "secondary", fields: [
764
- {
765
- name: 'code',
766
- label: _('hospitality_core.room.field.buildingCode'),
767
- required: true,
768
- },
769
- {
770
- name: 'name',
771
- label: _('hospitality_core.room.field.buildingName'),
772
- required: true,
773
- },
774
- {
775
- name: 'sequence',
776
- label: _('hospitality_core.room.field.sequence'),
777
- type: 'number',
778
- value: 10,
779
- step: '1',
780
- },
781
- ] }),
782
- ...(activeBuildings.length
783
- ? [
784
- _jsx(RecordForm, { action: action, hidden: {
785
- id: 'new-floor',
786
- operation: 'save-floor',
787
- propertyId: data.propertyId,
788
- }, submit: _('hospitality_core.room.action.createFloor'), submitVariant: "secondary", fields: [
789
- {
790
- name: 'buildingId',
791
- label: _('hospitality_core.room.field.building'),
792
- type: 'select',
793
- options: choices(activeBuildings),
794
- required: true,
795
- },
796
- {
797
- name: 'code',
798
- label: _('hospitality_core.room.field.floorCode'),
799
- required: true,
800
- },
801
- {
802
- name: 'name',
803
- label: _('hospitality_core.room.field.floorName'),
804
- required: true,
805
- },
806
- {
807
- name: 'sequence',
808
- label: _('hospitality_core.room.field.sequence'),
809
- type: 'number',
810
- value: 10,
811
- step: '1',
812
- },
813
- ] }),
814
- ]
815
- : []),
816
- ] }) }),
817
- _jsx(Section, { title: _('hospitality_core.room.section.buildings'), description: _('hospitality_core.room.section.buildingsHint'), body: data.buildings.length
818
- ? dataTable(_, {
819
- columns: buildingColumns(_),
820
- rows: data.buildings,
821
- id: (row) => row.id,
822
- rowHref: (row) => `/admin/hospitality/buildings/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
823
- })
824
- : emptyState(_('hospitality_core.room.empty.buildings'), _('hospitality_core.room.empty.buildingsHint')) }),
825
- _jsx(Section, { title: _('hospitality_core.room.section.floors'), description: _('hospitality_core.room.section.floorsHint'), body: data.floors.length
826
- ? dataTable(_, {
827
- columns: floorColumns(_),
828
- rows: data.floors,
829
- id: (row) => row.id,
830
- rowHref: (row) => `/admin/hospitality/levels/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
831
- })
832
- : emptyState(_('hospitality_core.room.empty.floors'), _('hospitality_core.room.empty.floorsHint')) }),
833
- ]
834
- : []),
835
- _jsx(Section, { title: _('hospitality_core.room.section.rooms'), description: _('hospitality_core.room.section.roomsHint'), body: data.rows.length
836
- ? dataTable(_, {
837
- columns: roomColumns(_),
838
- rows: data.rows,
839
- id: (row) => row.id,
840
- rowHref: (row) => `/admin/hospitality/rooms/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
841
- })
842
- : emptyState(_('hospitality_core.screen.rooms.empty'), _('hospitality_core.screen.rooms.emptyHint')) }),
843
- ]) }));
844
- };
845
- const locationFeedback = (_, resource, status, errors = []) => {
846
- if (status === 'saved' || status === 'archived' || status === 'restored')
847
- return notice({
848
- title: _(`hospitality_core.${resource}.feedback.${status}`),
849
- message: _(`hospitality_core.${resource}.feedback.${status}Hint`),
850
- tone: 'positive',
851
- });
852
- if (errors.length)
853
- return notice({
854
- title: _('hospitality_core.feedback.invalid'),
855
- message: errors.join(' '),
856
- tone: 'danger',
857
- });
858
- return null;
859
- };
860
- const buildingForm = (_, values, locale) => (_jsx(RecordForm, { action: `/admin/hospitality/buildings/${encodeURIComponent(values.id)}?lang=${encodeURIComponent(locale)}`, hidden: { propertyId: values.propertyId }, submit: _('hospitality_core.building.action.save'), submitVariant: "primary", fields: [
861
- {
862
- name: 'code',
863
- label: _('hospitality_core.building.field.code'),
864
- value: values.code,
865
- required: true,
866
- },
867
- {
868
- name: 'name',
869
- label: _('hospitality_core.building.field.name'),
870
- value: values.name,
871
- required: true,
872
- },
873
- {
874
- name: 'sequence',
875
- label: _('hospitality_core.building.field.sequence'),
876
- type: 'number',
877
- value: values.sequence,
878
- step: '1',
879
- },
880
- ] }));
881
- export const buildingDetailScreen = (_, building, values, locale, frame, status, errors = []) => {
882
- const query = `lang=${encodeURIComponent(locale)}`;
883
- const propertyName = building.property?.name ?? building.property?.code ?? building.propertyId;
884
- const activeFloors = building.floors.filter((row) => row.active);
885
- const activeRooms = building.rooms.filter((row) => row.active);
886
- return (_jsx(Framed, { translator: _, title: building.name, frame: frame, body: stack([
887
- locationFeedback(_, 'building', status, errors),
888
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.building.detail.kicker'), title: building.name, subtitle: `${building.code} · ${propertyName}`, imageFallback: icon('hotel'), badges: [
889
- badge(_(building.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), building.active ? 'positive' : 'neutral'),
890
- ], summary: [
891
- {
892
- id: 'floors',
893
- label: _('hospitality_core.room.metric.floors'),
894
- value: activeFloors.length,
895
- },
896
- { id: 'rooms', label: _('hospitality_core.metric.rooms'), value: activeRooms.length },
897
- {
898
- id: 'sequence',
899
- label: _('hospitality_core.building.field.sequence'),
900
- value: building.sequence,
901
- },
902
- ], navigation: linkButton({
903
- label: _('hospitality_core.building.action.back'),
904
- href: `/admin/hospitality/rooms?property=${encodeURIComponent(building.propertyId)}&${query}`,
905
- variant: 'tertiary',
906
- icon: 'chevron-left',
907
- }), body: stack([
908
- _jsx(Section, { title: _('hospitality_core.building.section.information'), description: _('hospitality_core.building.section.informationHint'), body: definitionList({
909
- title: building.name,
910
- items: [
911
- {
912
- key: 'property',
913
- term: _('hospitality_core.building.field.property'),
914
- value: propertyName,
915
- },
916
- { key: 'code', term: _('hospitality_core.building.field.code'), value: building.code },
917
- {
918
- key: 'status',
919
- term: _('hospitality_core.col.status'),
920
- value: _(building.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'),
921
- },
922
- ],
923
- }) }),
924
- _jsx(Section, { title: _('hospitality_core.building.section.settings'), description: _('hospitality_core.building.section.settingsHint'), body: buildingForm(_, values, locale) }),
925
- _jsx(Section, { title: _('hospitality_core.building.section.floors'), description: _('hospitality_core.building.section.floorsHint'), body: building.floors.length
926
- ? dataTable(_, {
927
- columns: floorColumns(_),
928
- rows: building.floors,
929
- id: (row) => row.id,
930
- rowHref: (row) => `/admin/hospitality/levels/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
931
- })
932
- : emptyState(_('hospitality_core.building.empty.floors'), _('hospitality_core.building.empty.floorsHint')) }),
933
- _jsx(Section, { title: _('hospitality_core.building.section.lifecycle'), description: _('hospitality_core.building.section.lifecycleHint'), body: _jsx(Surface, { body: recordActions({
934
- action: `/admin/hospitality/buildings/${encodeURIComponent(building.id)}/archive?${query}`,
935
- actions: [
936
- building.active
937
- ? {
938
- value: 'archive',
939
- label: _('hospitality_core.building.action.archive'),
940
- variant: 'destructive',
941
- }
942
- : {
943
- value: 'restore',
944
- label: _('hospitality_core.building.action.restore'),
945
- variant: 'secondary',
946
- },
947
- ],
948
- }) }) }),
949
- ]) }),
950
- ]) }));
951
- };
952
- const floorForm = (_, values, locale) => (_jsx(RecordForm, { action: `/admin/hospitality/levels/${encodeURIComponent(values.id)}?lang=${encodeURIComponent(locale)}`, hidden: { propertyId: values.propertyId, buildingId: values.buildingId }, submit: _('hospitality_core.floor.action.save'), submitVariant: "primary", fields: [
953
- {
954
- name: 'code',
955
- label: _('hospitality_core.floor.field.code'),
956
- value: values.code,
957
- required: true,
958
- },
959
- {
960
- name: 'name',
961
- label: _('hospitality_core.floor.field.name'),
962
- value: values.name,
963
- required: true,
964
- },
965
- {
966
- name: 'sequence',
967
- label: _('hospitality_core.floor.field.sequence'),
968
- type: 'number',
969
- value: values.sequence,
970
- step: '1',
971
- },
972
- ] }));
973
- export const floorDetailScreen = (_, floor, values, locale, frame, status, errors = []) => {
974
- const query = `lang=${encodeURIComponent(locale)}`;
975
- const propertyName = floor.property?.name ?? floor.property?.code ?? floor.propertyId;
976
- const buildingName = floor.building?.name ?? floor.building?.code ?? floor.buildingId;
977
- const activeRooms = floor.rooms.filter((row) => row.active);
978
- return (_jsx(Framed, { translator: _, title: floor.name, frame: frame, body: stack([
979
- locationFeedback(_, 'floor', status, errors),
980
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.floor.detail.kicker'), title: floor.name, subtitle: `${floor.code} · ${buildingName}`, imageFallback: icon('hotel'), badges: [
981
- badge(_(floor.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), floor.active ? 'positive' : 'neutral'),
982
- ], summary: [
983
- { id: 'rooms', label: _('hospitality_core.metric.rooms'), value: activeRooms.length },
984
- {
985
- id: 'building',
986
- label: _('hospitality_core.floor.field.building'),
987
- value: buildingName,
988
- },
989
- {
990
- id: 'sequence',
991
- label: _('hospitality_core.floor.field.sequence'),
992
- value: floor.sequence,
993
- },
994
- ], navigation: linkButton({
995
- label: _('hospitality_core.floor.action.back'),
996
- href: `/admin/hospitality/buildings/${encodeURIComponent(floor.buildingId)}?${query}`,
997
- variant: 'tertiary',
998
- icon: 'chevron-left',
999
- }), body: stack([
1000
- _jsx(Section, { title: _('hospitality_core.floor.section.information'), description: _('hospitality_core.floor.section.informationHint'), body: definitionList({
1001
- title: floor.name,
1002
- items: [
1003
- { key: 'property', term: _('hospitality_core.floor.field.property'), value: propertyName },
1004
- { key: 'building', term: _('hospitality_core.floor.field.building'), value: buildingName },
1005
- { key: 'code', term: _('hospitality_core.floor.field.code'), value: floor.code },
1006
- {
1007
- key: 'status',
1008
- term: _('hospitality_core.col.status'),
1009
- value: _(floor.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'),
1010
- },
1011
- ],
1012
- }) }),
1013
- _jsx(Section, { title: _('hospitality_core.floor.section.settings'), description: _('hospitality_core.floor.section.settingsHint'), body: floorForm(_, values, locale) }),
1014
- _jsx(Section, { title: _('hospitality_core.floor.section.rooms'), description: _('hospitality_core.floor.section.roomsHint'), body: floor.rooms.length
1015
- ? dataTable(_, {
1016
- columns: roomColumns(_),
1017
- rows: floor.rooms,
1018
- id: (row) => row.id,
1019
- rowHref: (row) => `/admin/hospitality/rooms/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
1020
- })
1021
- : emptyState(_('hospitality_core.floor.empty.rooms'), _('hospitality_core.floor.empty.roomsHint')) }),
1022
- _jsx(Section, { title: _('hospitality_core.floor.section.lifecycle'), description: _('hospitality_core.floor.section.lifecycleHint'), body: _jsx(Surface, { body: recordActions({
1023
- action: `/admin/hospitality/levels/${encodeURIComponent(floor.id)}/archive?${query}`,
1024
- actions: [
1025
- floor.active
1026
- ? {
1027
- value: 'archive',
1028
- label: _('hospitality_core.floor.action.archive'),
1029
- variant: 'destructive',
1030
- }
1031
- : {
1032
- value: 'restore',
1033
- label: _('hospitality_core.floor.action.restore'),
1034
- variant: 'secondary',
1035
- },
1036
- ],
1037
- }) }) }),
1038
- ]) }),
1039
- ]) }));
1040
- };
1041
- export const newRoomScreen = (_, values, properties, roomTypes, buildings, floors, locale, frame, errors = []) => (_jsx(Framed, { translator: _, title: _('hospitality_core.room.create.title'), frame: frame, body: stack([
1042
- roomFeedback(_, null, errors),
1043
- _jsx(Section, { title: _('hospitality_core.room.create.title'), description: _('hospitality_core.room.create.hint'), body: roomForm(_, values, properties, roomTypes, buildings, floors, locale, `/admin/hospitality/rooms/new?lang=${encodeURIComponent(locale)}`, _('hospitality_core.room.action.create'), `/admin/hospitality/rooms?property=${encodeURIComponent(values.propertyId)}&lang=${encodeURIComponent(locale)}`) }),
1044
- ]) }));
1045
- export const roomDetailScreen = (_, room, values, properties, roomTypes, buildings, floors, locale, frame, status, errors = []) => {
1046
- const query = `lang=${encodeURIComponent(locale)}`;
1047
- const propertyName = room.property?.name ?? room.property?.code ?? room.propertyId;
1048
- const location = [room.building?.name ?? room.building?.code, room.floor?.name ?? room.floor?.code]
1049
- .filter(Boolean)
1050
- .join(' · ');
1051
- return (_jsx(Framed, { translator: _, title: room.name, frame: frame, body: stack([
1052
- roomFeedback(_, status, errors),
1053
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.room.detail.kicker'), title: room.name, subtitle: `${room.code} · ${propertyName}`, imageFallback: icon('hotel'), badges: [
1054
- badge(_(`hospitality_core.roomStatus.${room.status}`), statusTone(room.status), room.status),
1055
- badge(_(room.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), room.active ? 'positive' : 'neutral'),
1056
- ], summary: [
1057
- { id: 'capacity', label: _('hospitality_core.col.capacity'), value: room.capacity },
1058
- {
1059
- id: 'roomType',
1060
- label: _('hospitality_core.col.roomType'),
1061
- value: room.roomType?.name ?? room.roomType?.code ?? room.roomTypeId,
1062
- },
1063
- {
1064
- id: 'location',
1065
- label: _('hospitality_core.col.location'),
1066
- value: location || _('hospitality_core.room.value.unassignedLocation'),
1067
- },
1068
- ], navigation: linkButton({
1069
- label: _('hospitality_core.room.action.back'),
1070
- href: `/admin/hospitality/rooms?property=${encodeURIComponent(room.propertyId)}&${query}`,
1071
- variant: 'tertiary',
1072
- icon: 'chevron-left',
1073
- }), body: stack([
1074
- _jsx(Section, { title: _('hospitality_core.room.section.information'), description: _('hospitality_core.room.section.informationHint'), body: definitionList({
1075
- title: room.name,
1076
- items: [
1077
- { key: 'property', term: _('hospitality_core.room.field.property'), value: propertyName },
1078
- {
1079
- key: 'type',
1080
- term: _('hospitality_core.room.field.roomType'),
1081
- value: room.roomType?.name ?? room.roomType?.code ?? room.roomTypeId,
1082
- },
1083
- {
1084
- key: 'location',
1085
- term: _('hospitality_core.col.location'),
1086
- value: location || _('hospitality_core.room.value.unassignedLocation'),
1087
- },
1088
- {
1089
- key: 'status',
1090
- term: _('hospitality_core.col.status'),
1091
- value: _(`hospitality_core.roomStatus.${room.status}`),
1092
- },
1093
- ],
1094
- }) }),
1095
- _jsx(Section, { title: _('hospitality_core.room.section.settings'), description: _('hospitality_core.room.section.settingsHint'), body: roomForm(_, values, properties, roomTypes, buildings, floors, locale, `/admin/hospitality/rooms/${encodeURIComponent(room.id)}?${query}`, _('hospitality_core.room.action.save'), `/admin/hospitality/rooms?property=${encodeURIComponent(room.propertyId)}&${query}`) }),
1096
- _jsx(Section, { title: _('hospitality_core.room.section.lifecycle'), description: _('hospitality_core.room.section.lifecycleHint'), body: stack([
1097
- linkButton({
1098
- label: _('hospitality_core.room.action.openHousekeeping'),
1099
- href: `/admin/hospitality/housekeeping/rooms/${encodeURIComponent(room.id)}?${query}`,
1100
- variant: 'secondary',
1101
- }),
1102
- _jsx(Surface, { body: recordActions({
1103
- action: `/admin/hospitality/rooms/${encodeURIComponent(room.id)}/archive?${query}`,
1104
- actions: [
1105
- room.active
1106
- ? {
1107
- value: 'archive',
1108
- label: _('hospitality_core.room.action.archive'),
1109
- variant: 'destructive',
1110
- }
1111
- : {
1112
- value: 'restore',
1113
- label: _('hospitality_core.room.action.restore'),
1114
- variant: 'secondary',
1115
- },
1116
- ],
1117
- }) }),
1118
- ]) }),
1119
- ]) }),
1120
- ]) }));
1121
- };
1122
- export const cleaningTasksScreen = (_, data, locale, timezone, frame, status) => {
1123
- const visibleRows = data.state === 'all' ? data.rows : data.rows.filter((row) => row.state === data.state);
1124
- const query = new URLSearchParams({ lang: locale });
1125
- if (data.propertyId)
1126
- query.set('property', data.propertyId);
1127
- if (data.state !== 'all')
1128
- query.set('state', data.state);
1129
- const action = `/admin/hospitality/housekeeping?${query.toString()}`;
1130
- const feedback = status === 'created'
1131
- ? notice({
1132
- title: _('hospitality_core.housekeeping.feedback.created'),
1133
- message: _('hospitality_core.housekeeping.feedback.createdHint'),
1134
- tone: 'positive',
1135
- })
1136
- : status === 'invalid'
1137
- ? notice({
1138
- title: _('hospitality_core.feedback.invalid'),
1139
- message: _('hospitality_core.housekeeping.feedback.invalidHint'),
1140
- tone: 'danger',
1141
- })
1142
- : null;
1143
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.cleaningTasks.title'), frame: frame, body: stack([
1144
- feedback,
1145
- _jsx(RecordForm, { action: "/admin/hospitality/housekeeping", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { lang: locale }, fields: [
1146
- {
1147
- name: 'property',
1148
- label: _('hospitality_core.menu.properties'),
1149
- type: 'select',
1150
- value: data.propertyId,
1151
- required: true,
1152
- options: choices(data.properties),
1153
- },
1154
- {
1155
- name: 'state',
1156
- label: _('hospitality_core.col.status'),
1157
- type: 'select',
1158
- value: data.state,
1159
- options: ['all', 'todo', 'in_progress', 'done', 'cancelled'].map((value) => ({
1160
- value,
1161
- label: _(`hospitality_core.cleaningState.${value}`),
1162
- })),
1163
- },
1164
- ] }),
1165
- cardGrid({
1166
- items: ['todo', 'in_progress', 'done'].map((state) => ({
1167
- state,
1168
- count: state === 'todo'
1169
- ? data.summary.todo
1170
- : state === 'in_progress'
1171
- ? data.summary.inProgress
1172
- : data.summary.done,
1173
- })),
1174
- id: (item) => item.state,
1175
- card: (item) => metric({
1176
- label: _(`hospitality_core.cleaningState.${item.state}`),
1177
- value: String(item.count),
1178
- tone: item.state,
1179
- }),
1180
- }),
1181
- _jsx(Section, { title: _('hospitality_core.housekeeping.section.create'), description: _('hospitality_core.housekeeping.section.createHint'), body: data.rooms.length ? (_jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.housekeeping.action.create'), submitVariant: "secondary", hidden: {
1182
- operation: 'create',
1183
- lang: locale,
1184
- id: data.id,
1185
- code: data.code,
1186
- propertyId: data.propertyId ?? '',
1187
- state: data.state,
1188
- }, fields: [
1189
- {
1190
- name: 'roomId',
1191
- label: _('hospitality_core.col.room'),
1192
- type: 'select',
1193
- value: data.selectedRoomId,
1194
- required: true,
1195
- options: data.rooms.map((room) => ({
1196
- value: room.id,
1197
- label: `${room.code} · ${room.name} · ${_(`hospitality_core.roomStatus.${room.status}`)}`,
1198
- })),
1199
- },
1200
- {
1201
- name: 'taskType',
1202
- label: _('hospitality_core.col.type'),
1203
- type: 'select',
1204
- value: 'daily_clean',
1205
- required: true,
1206
- options: ['checkout_clean', 'daily_clean', 'maintenance', 'inspection'].map((value) => ({
1207
- value,
1208
- label: _(`hospitality_core.cleaningType.${value}`),
1209
- })),
1210
- },
1211
- {
1212
- name: 'priority',
1213
- label: _('hospitality_core.col.priority'),
1214
- type: 'select',
1215
- value: 'normal',
1216
- required: true,
1217
- options: ['normal', 'urgent'].map((value) => ({
1218
- value,
1219
- label: _(`hospitality_core.cleaningPriority.${value}`),
1220
- })),
1221
- },
1222
- {
1223
- name: 'assigneeId',
1224
- label: _('hospitality_core.col.assignee'),
1225
- help: _('hospitality_core.housekeeping.field.assigneeHint'),
1226
- },
1227
- {
1228
- name: 'notes',
1229
- label: _('hospitality_core.housekeeping.field.notes'),
1230
- type: 'textarea',
1231
- span: 'full',
1232
- },
1233
- ] })) : (emptyState(_('hospitality_core.housekeeping.empty.rooms'), _('hospitality_core.housekeeping.empty.roomsHint'))) }),
1234
- _jsx(Section, { title: _('hospitality_core.housekeeping.section.queue'), description: _('hospitality_core.housekeeping.section.queueHint'), body: visibleRows.length
1235
- ? dataTable(_, {
1236
- columns: cleaningTaskColumns(_, locale, timezone),
1237
- rows: visibleRows,
1238
- id: (row) => row.id,
1239
- rowHref: (row) => `/admin/hospitality/housekeeping/tasks/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
1240
- })
1241
- : emptyState(_('hospitality_core.screen.cleaningTasks.empty'), _('hospitality_core.screen.cleaningTasks.emptyHint')) }),
1242
- ]) }));
1243
- };
1244
- const cleaningTaskFeedback = (_, status, errors = []) => {
1245
- if (status === 'started' || status === 'completed' || status === 'cancelled')
1246
- return notice({
1247
- title: _(`hospitality_core.housekeeping.feedback.${status}`),
1248
- message: _(`hospitality_core.housekeeping.feedback.${status}Hint`),
1249
- tone: status === 'cancelled' ? 'warning' : 'positive',
1250
- });
1251
- if (errors.length)
1252
- return notice({
1253
- title: _('hospitality_core.feedback.invalid'),
1254
- message: errors.join(' '),
1255
- tone: 'danger',
1256
- });
1257
- return null;
1258
- };
1259
- export const cleaningTaskDetailScreen = (_, task, locale, timezone, frame, status, errors = []) => {
1260
- const action = `/admin/hospitality/housekeeping/tasks/${encodeURIComponent(task.id)}?lang=${encodeURIComponent(locale)}`;
1261
- const room = task.room?.name ?? task.room?.code ?? task.roomId;
1262
- const actions = [];
1263
- if (task.state === 'todo')
1264
- actions.push(_jsx(Section, { title: _('hospitality_core.housekeeping.action.start'), description: _('hospitality_core.housekeeping.action.startHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.housekeeping.action.start'), submitVariant: "primary", hidden: { operation: 'start', lang: locale }, fields: [
1265
- {
1266
- name: 'assigneeId',
1267
- label: _('hospitality_core.col.assignee'),
1268
- value: task.assigneeId,
1269
- help: _('hospitality_core.housekeeping.field.assigneeHint'),
1270
- },
1271
- ] }) }));
1272
- if (task.state === 'in_progress')
1273
- actions.push(_jsx(Section, { title: _('hospitality_core.housekeeping.action.complete'), description: _('hospitality_core.housekeeping.action.completeHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.housekeeping.action.complete'), submitVariant: "primary", hidden: { operation: 'complete', lang: locale }, fields: [] }) }));
1274
- if (task.state === 'todo' || task.state === 'in_progress')
1275
- actions.push(_jsx(Section, { title: _('hospitality_core.housekeeping.action.cancel'), description: _('hospitality_core.housekeeping.action.cancelHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.housekeeping.action.cancel'), submitVariant: "destructive", hidden: { operation: 'cancel', lang: locale }, fields: [] }) }));
1276
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.housekeeping.detail.title', { code: task.code }), frame: frame, body: stack([
1277
- cleaningTaskFeedback(_, status, errors),
1278
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.housekeeping.detail.kicker'), title: task.code, subtitle: room, imageFallback: icon('check-circle'), badges: [
1279
- badge(_(`hospitality_core.cleaningState.${task.state}`), cleaningTone(task.state), task.state),
1280
- badge(_(`hospitality_core.cleaningPriority.${task.priority}`), task.priority === 'urgent' ? 'danger' : 'neutral'),
1281
- ], summary: [
1282
- {
1283
- id: 'room',
1284
- label: _('hospitality_core.col.room'),
1285
- value: room,
1286
- },
1287
- {
1288
- id: 'type',
1289
- label: _('hospitality_core.col.type'),
1290
- value: _(`hospitality_core.cleaningType.${task.taskType}`),
1291
- },
1292
- {
1293
- id: 'assignee',
1294
- label: _('hospitality_core.col.assignee'),
1295
- value: task.assigneeId || '—',
1296
- },
1297
- ], navigation: linkButton({
1298
- label: _('hospitality_core.housekeeping.action.back'),
1299
- href: `/admin/hospitality/housekeeping?property=${encodeURIComponent(task.propertyId)}&lang=${encodeURIComponent(locale)}`,
1300
- variant: 'tertiary',
1301
- icon: 'chevron-left',
1302
- }), body: stack([
1303
- _jsx(Section, { title: _('hospitality_core.housekeeping.section.information'), description: _('hospitality_core.housekeeping.section.informationHint'), body: definitionList({
1304
- title: task.code,
1305
- items: [
1306
- {
1307
- key: 'property',
1308
- term: _('hospitality_core.menu.properties'),
1309
- value: task.property?.name ?? task.property?.code ?? task.propertyId,
1310
- },
1311
- {
1312
- key: 'room',
1313
- term: _('hospitality_core.col.room'),
1314
- value: room,
1315
- },
1316
- {
1317
- key: 'requested',
1318
- term: _('hospitality_core.col.requestedAt'),
1319
- value: dateTime(task.requestedAt, locale, timezone),
1320
- },
1321
- ...(task.startedAt
1322
- ? [
1323
- {
1324
- key: 'started',
1325
- term: _('hospitality_core.housekeeping.field.startedAt'),
1326
- value: dateTime(task.startedAt, locale, timezone),
1327
- },
1328
- ]
1329
- : []),
1330
- ...(task.doneAt
1331
- ? [
1332
- {
1333
- key: 'done',
1334
- term: _('hospitality_core.housekeeping.field.doneAt'),
1335
- value: dateTime(task.doneAt, locale, timezone),
1336
- },
1337
- ]
1338
- : []),
1339
- ...(task.stayId
1340
- ? [
1341
- {
1342
- key: 'stay',
1343
- term: _('hospitality_core.menu.stays'),
1344
- value: task.stay?.code ?? task.stayId,
1345
- },
1346
- ]
1347
- : []),
1348
- ...(task.notes
1349
- ? [
1350
- {
1351
- key: 'notes',
1352
- term: _('hospitality_core.housekeeping.field.notes'),
1353
- value: task.notes,
1354
- },
1355
- ]
1356
- : []),
1357
- ],
1358
- }) }),
1359
- ...actions,
1360
- ]) }),
1361
- ]) }));
1362
- };
1363
- const housekeepingRoomColumns = (_) => [
1364
- { key: 'code', label: _('hospitality_core.col.code'), cell: (row) => code(row.code), kind: 'identifier' },
1365
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
1366
- {
1367
- key: 'status',
1368
- label: _('hospitality_core.col.status'),
1369
- cell: (row) => badge(_(`hospitality_core.roomStatus.${row.status}`), statusTone(row.status), row.status),
1370
- kind: 'status',
1371
- priority: 'primary',
1372
- },
1373
- {
1374
- key: 'roomType',
1375
- label: _('hospitality_core.col.roomType'),
1376
- cell: (row) => row.roomType?.name ?? row.roomType?.code ?? code(row.roomTypeId),
1377
- },
1378
- {
1379
- key: 'location',
1380
- label: _('hospitality_core.col.location'),
1381
- cell: (row) => [row.building?.name ?? row.building?.code, row.floor?.name ?? row.floor?.code]
1382
- .filter(Boolean)
1383
- .join(' · ') || '—',
1384
- },
1385
- {
1386
- key: 'note',
1387
- label: _('hospitality_core.housekeeping.field.notes'),
1388
- cell: (row) => row.note || '—',
1389
- },
1390
- ];
1391
- export const housekeepingRoomsScreen = (_, data, locale, frame) => {
1392
- const total = data.summary.available +
1393
- data.summary.occupied +
1394
- data.summary.dirty +
1395
- data.summary.cleaning +
1396
- data.summary.maintenance +
1397
- data.summary.outOfOrder;
1398
- const attention = data.summary.dirty + data.summary.cleaning + data.summary.maintenance + data.summary.outOfOrder;
1399
- const metrics = [
1400
- { id: 'rooms', value: total },
1401
- { id: 'available', value: data.summary.available },
1402
- { id: 'occupied', value: data.summary.occupied },
1403
- { id: 'attention', value: attention },
1404
- ];
1405
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.housekeepingRooms.title'), frame: frame, body: stack([
1406
- _jsx(RecordForm, { action: "/admin/hospitality/housekeeping/rooms", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { lang: locale }, fields: [
1407
- {
1408
- name: 'property',
1409
- label: _('hospitality_core.menu.properties'),
1410
- type: 'select',
1411
- value: data.propertyId,
1412
- required: true,
1413
- options: choices(data.properties),
1414
- },
1415
- {
1416
- name: 'state',
1417
- label: _('hospitality_core.col.status'),
1418
- type: 'select',
1419
- value: data.state,
1420
- options: ['all', ...ROOM_STATUSES].map((value) => ({
1421
- value,
1422
- label: _(`hospitality_core.roomStatus.${value}`),
1423
- })),
1424
- },
1425
- ] }),
1426
- cardGrid({
1427
- items: metrics,
1428
- id: (item) => item.id,
1429
- card: (item) => metric({
1430
- label: _(`hospitality_core.metric.${item.id}`),
1431
- value: String(item.value),
1432
- tone: item.id,
1433
- }),
1434
- }),
1435
- _jsx(Section, { title: _('hospitality_core.housekeeping.rooms.section.board'), description: _('hospitality_core.housekeeping.rooms.section.boardHint'), body: data.rows.length
1436
- ? dataTable(_, {
1437
- columns: housekeepingRoomColumns(_),
1438
- rows: data.rows,
1439
- id: (row) => row.id,
1440
- rowHref: (row) => `/admin/hospitality/housekeeping/rooms/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
1441
- })
1442
- : emptyState(_('hospitality_core.screen.housekeepingRooms.empty'), _('hospitality_core.screen.housekeepingRooms.emptyHint')) }),
1443
- ]) }));
1444
- };
1445
- const housekeepingRoomFeedback = (_, status, errors = []) => {
1446
- if (status === 'updated')
1447
- return notice({
1448
- title: _('hospitality_core.housekeeping.rooms.feedback.updated'),
1449
- message: _('hospitality_core.housekeeping.rooms.feedback.updatedHint'),
1450
- tone: 'positive',
1451
- });
1452
- if (errors.length)
1453
- return notice({
1454
- title: _('hospitality_core.feedback.invalid'),
1455
- message: errors.join(' '),
1456
- tone: 'danger',
1457
- });
1458
- return null;
1459
- };
1460
- export const housekeepingRoomDetailScreen = (_, room, tasks, locale, timezone, frame, status, errors = []) => {
1461
- const action = `/admin/hospitality/housekeeping/rooms/${encodeURIComponent(room.id)}?lang=${encodeURIComponent(locale)}`;
1462
- const taskQueue = `/admin/hospitality/housekeeping?property=${encodeURIComponent(room.propertyId)}&room=${encodeURIComponent(room.id)}&lang=${encodeURIComponent(locale)}`;
1463
- const location = [room.building?.name ?? room.building?.code, room.floor?.name ?? room.floor?.code]
1464
- .filter(Boolean)
1465
- .join(' · ');
1466
- const actions = [];
1467
- if (room.status === 'available' || room.status === 'dirty')
1468
- actions.push(_jsx(Section, { title: _('hospitality_core.housekeeping.rooms.section.service'), description: _('hospitality_core.housekeeping.rooms.section.serviceHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.housekeeping.rooms.action.takeOut'), submitVariant: "destructive", hidden: { operation: 'set-status', expectedStatus: room.status, lang: locale }, fields: [
1469
- {
1470
- name: 'status',
1471
- label: _('hospitality_core.housekeeping.rooms.field.targetStatus'),
1472
- type: 'select',
1473
- value: 'maintenance',
1474
- required: true,
1475
- options: ['maintenance', 'out_of_order'].map((value) => ({
1476
- value,
1477
- label: _(`hospitality_core.roomStatus.${value}`),
1478
- })),
1479
- },
1480
- {
1481
- name: 'note',
1482
- label: _('hospitality_core.housekeeping.rooms.field.reason'),
1483
- type: 'textarea',
1484
- required: true,
1485
- span: 'full',
1486
- },
1487
- ] }) }));
1488
- if (room.status === 'maintenance' || room.status === 'out_of_order')
1489
- actions.push(_jsx(Section, { title: _('hospitality_core.housekeeping.rooms.section.release'), description: _('hospitality_core.housekeeping.rooms.section.releaseHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.housekeeping.rooms.action.release'), submitVariant: "primary", hidden: {
1490
- operation: 'set-status',
1491
- expectedStatus: room.status,
1492
- status: 'dirty',
1493
- lang: locale,
1494
- }, fields: [] }) }));
1495
- const currentStay = room.currentStay;
1496
- const guest = currentStay?.partner?.name;
1497
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.housekeeping.rooms.detail.title', { code: room.code }), frame: frame, body: stack([
1498
- housekeepingRoomFeedback(_, status, errors),
1499
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.housekeeping.rooms.detail.kicker'), title: room.code, subtitle: room.name, imageFallback: icon('hotel'), badges: [
1500
- badge(_(`hospitality_core.roomStatus.${room.status}`), statusTone(room.status), room.status),
1501
- ], summary: [
1502
- {
1503
- id: 'room-type',
1504
- label: _('hospitality_core.col.roomType'),
1505
- value: room.roomType?.name ?? room.roomType?.code ?? room.roomTypeId,
1506
- },
1507
- {
1508
- id: 'capacity',
1509
- label: _('hospitality_core.col.capacity'),
1510
- value: room.capacity,
1511
- },
1512
- {
1513
- id: 'tasks',
1514
- label: _('hospitality_core.housekeeping.rooms.metric.openTasks'),
1515
- value: tasks.filter((task) => task.state === 'todo' || task.state === 'in_progress').length,
1516
- },
1517
- ], navigation: linkButton({
1518
- label: _('hospitality_core.housekeeping.rooms.action.back'),
1519
- href: `/admin/hospitality/housekeeping/rooms?property=${encodeURIComponent(room.propertyId)}&lang=${encodeURIComponent(locale)}`,
1520
- variant: 'tertiary',
1521
- icon: 'chevron-left',
1522
- }), body: stack([
1523
- _jsx(Section, { title: _('hospitality_core.housekeeping.rooms.section.information'), description: _('hospitality_core.housekeeping.rooms.section.informationHint'), body: stack([
1524
- definitionList({
1525
- title: room.name,
1526
- items: [
1527
- {
1528
- key: 'property',
1529
- term: _('hospitality_core.menu.properties'),
1530
- value: room.property?.name ?? room.property?.code ?? room.propertyId,
1531
- },
1532
- {
1533
- key: 'room-type',
1534
- term: _('hospitality_core.col.roomType'),
1535
- value: room.roomType?.name ?? room.roomType?.code ?? room.roomTypeId,
1536
- },
1537
- {
1538
- key: 'location',
1539
- term: _('hospitality_core.col.location'),
1540
- value: location || '—',
1541
- },
1542
- {
1543
- key: 'guest',
1544
- term: _('hospitality_core.reservation.field.guest'),
1545
- value: guest ?? '—',
1546
- },
1547
- {
1548
- key: 'note',
1549
- term: _('hospitality_core.housekeeping.field.notes'),
1550
- value: room.note || '—',
1551
- },
1552
- ],
1553
- }),
1554
- currentStay?.id
1555
- ? linkButton({
1556
- label: _('hospitality_core.housekeeping.rooms.action.openStay'),
1557
- href: `/admin/hospitality/stays/${encodeURIComponent(currentStay.id)}?lang=${encodeURIComponent(locale)}`,
1558
- variant: 'secondary',
1559
- })
1560
- : null,
1561
- ]) }),
1562
- _jsx(Section, { title: _('hospitality_core.housekeeping.rooms.section.tasks'), description: _('hospitality_core.housekeeping.rooms.section.tasksHint'), body: stack([
1563
- tasks.length
1564
- ? dataTable(_, {
1565
- columns: cleaningTaskColumns(_, locale, timezone),
1566
- rows: tasks,
1567
- id: (task) => task.id,
1568
- rowHref: (task) => `/admin/hospitality/housekeeping/tasks/${encodeURIComponent(task.id)}?lang=${encodeURIComponent(locale)}`,
1569
- })
1570
- : emptyState(_('hospitality_core.housekeeping.rooms.empty.tasks'), _('hospitality_core.housekeeping.rooms.empty.tasksHint')),
1571
- linkButton({
1572
- label: _('hospitality_core.housekeeping.action.create'),
1573
- href: taskQueue,
1574
- variant: 'secondary',
1575
- }),
1576
- ]) }),
1577
- ...actions,
1578
- ]) }),
1579
- ]) }));
1580
- };
1581
- const roomTypeFormFields = (_, values, properties, policies, creating) => [
1582
- {
1583
- name: 'propertyId',
1584
- label: _('hospitality_core.roomType.field.property'),
1585
- type: 'select',
1586
- value: values.propertyId,
1587
- options: choices(properties),
1588
- required: true,
1589
- disabled: !creating,
1590
- },
1591
- {
1592
- name: 'code',
1593
- label: _('hospitality_core.roomType.field.code'),
1594
- value: values.code,
1595
- required: true,
1596
- help: _('hospitality_core.roomType.field.codeHint'),
1597
- },
1598
- {
1599
- name: 'name',
1600
- label: _('hospitality_core.roomType.field.name'),
1601
- value: values.name,
1602
- required: true,
1603
- },
1604
- {
1605
- name: 'publicName',
1606
- label: _('hospitality_core.roomType.field.publicName'),
1607
- value: values.publicName,
1608
- },
1609
- {
1610
- name: 'defaultCapacity',
1611
- label: _('hospitality_core.roomType.field.defaultCapacity'),
1612
- type: 'number',
1613
- value: values.defaultCapacity,
1614
- required: true,
1615
- step: '1',
1616
- },
1617
- {
1618
- name: 'maxAdults',
1619
- label: _('hospitality_core.roomType.field.maxAdults'),
1620
- type: 'number',
1621
- value: values.maxAdults,
1622
- required: true,
1623
- step: '1',
1624
- },
1625
- {
1626
- name: 'maxChildren',
1627
- label: _('hospitality_core.roomType.field.maxChildren'),
1628
- type: 'number',
1629
- value: values.maxChildren,
1630
- required: true,
1631
- step: '1',
1632
- },
1633
- {
1634
- name: 'maxInfants',
1635
- label: _('hospitality_core.roomType.field.maxInfants'),
1636
- type: 'number',
1637
- value: values.maxInfants,
1638
- required: true,
1639
- step: '1',
1640
- },
1641
- {
1642
- name: 'maxExtraBeds',
1643
- label: _('hospitality_core.roomType.field.maxExtraBeds'),
1644
- type: 'number',
1645
- value: values.maxExtraBeds,
1646
- required: true,
1647
- step: '1',
1648
- },
1649
- {
1650
- name: 'sizeSqm',
1651
- label: _('hospitality_core.roomType.field.sizeSqm'),
1652
- type: 'decimal',
1653
- value: values.sizeSqm,
1654
- },
1655
- {
1656
- name: 'viewType',
1657
- label: _('hospitality_core.roomType.field.viewType'),
1658
- type: 'select',
1659
- value: values.viewType,
1660
- options: [
1661
- { value: '', label: _('hospitality_core.roomType.value.noViewType') },
1662
- ...ROOM_VIEW_TYPES.map((value) => ({
1663
- value,
1664
- label: _(`hospitality_core.roomType.view.${value}`),
1665
- })),
1666
- ],
1667
- },
1668
- {
1669
- name: 'sharedBathroom',
1670
- label: _('hospitality_core.roomType.field.sharedBathroom'),
1671
- type: 'checkbox',
1672
- value: values.sharedBathroom,
1673
- },
1674
- {
1675
- name: 'baseRate',
1676
- label: _('hospitality_core.roomType.field.baseRate'),
1677
- type: 'decimal',
1678
- value: values.baseRate,
1679
- required: true,
1680
- help: _('hospitality_core.roomType.field.baseRateHint'),
1681
- },
1682
- {
1683
- name: 'color',
1684
- label: _('hospitality_core.roomType.field.color'),
1685
- type: 'color',
1686
- value: values.color || '#2563eb',
1687
- },
1688
- {
1689
- name: 'cancellationPolicyId',
1690
- label: _('hospitality_core.roomType.field.cancellationPolicy'),
1691
- type: 'select',
1692
- value: values.cancellationPolicyId,
1693
- options: [{ value: '', label: _('hospitality_core.roomType.value.inheritPolicy') }, ...choices(policies)],
1694
- },
1695
- {
1696
- name: 'published',
1697
- label: _('hospitality_core.roomType.field.published'),
1698
- type: 'checkbox',
1699
- value: values.published,
1700
- help: _('hospitality_core.roomType.field.publishedHint'),
1701
- },
1702
- {
1703
- name: 'description',
1704
- label: _('hospitality_core.roomType.field.description'),
1705
- type: 'textarea',
1706
- value: values.description,
1707
- span: 'full',
1708
- },
1709
- ];
1710
- const roomTypeForm = (_, values, properties, policies, locale, action, submit, cancelHref, creating) => (_jsx(RecordForm, { action: action, fields: roomTypeFormFields(_, values, properties, policies, creating), hidden: {
1711
- lang: locale,
1712
- ...(!creating ? { propertyId: values.propertyId } : {}),
1713
- }, submit: submit, submitVariant: "primary", cancelHref: cancelHref, cancelLabel: _('hospitality_core.action.cancel') }));
1714
- const roomTypeFeedback = (_, status, errors = []) => {
1715
- if (status === 'created' || status === 'saved')
1716
- return notice({
1717
- title: _(`hospitality_core.roomType.feedback.${status}`),
1718
- message: _('hospitality_core.roomType.feedback.savedHint'),
1719
- tone: 'positive',
1720
- });
1721
- if (errors.length)
1722
- return notice({
1723
- title: _('hospitality_core.feedback.invalid'),
1724
- message: errors.join(' '),
1725
- tone: 'danger',
1726
- });
1727
- return null;
1728
- };
1729
- export const roomTypesScreen = (_, rows, properties, propertyId, locale, frame) => {
1730
- const propertyQuery = propertyId ? `&property=${encodeURIComponent(propertyId)}` : '';
1731
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.roomTypes.title'), frame: frame, body: stack([
1732
- _jsx(RecordForm, { action: "/admin/hospitality/room-types", method: "get", layout: "inline", fields: [
1733
- {
1734
- name: 'property',
1735
- label: _('hospitality_core.roomType.field.property'),
1736
- type: 'select',
1737
- value: propertyId,
1738
- options: choices(properties),
1739
- },
1740
- ], hidden: { lang: locale }, submit: _('hospitality_core.action.apply'), submitVariant: "secondary" }),
1741
- properties.length
1742
- ? linkButton({
1743
- label: _('hospitality_core.roomType.action.create'),
1744
- href: `/admin/hospitality/room-types/new?lang=${encodeURIComponent(locale)}${propertyQuery}`,
1745
- variant: 'primary',
1746
- })
1747
- : notice({
1748
- title: _('hospitality_core.roomType.empty.noProperty'),
1749
- message: _('hospitality_core.roomType.empty.noPropertyHint'),
1750
- tone: 'warning',
1751
- }),
1752
- cardGrid({
1753
- items: [
1754
- { id: 'types', label: _('hospitality_core.roomType.metric.types'), value: rows.length },
1755
- {
1756
- id: 'published',
1757
- label: _('hospitality_core.roomType.metric.published'),
1758
- value: rows.filter((row) => row.published).length,
1759
- },
1760
- {
1761
- id: 'rooms',
1762
- label: _('hospitality_core.metric.rooms'),
1763
- value: rows.reduce((sum, row) => sum + (row.rooms?.length ?? 0), 0),
1764
- },
1765
- ],
1766
- id: (item) => item.id,
1767
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
1768
- }),
1769
- rows.length
1770
- ? dataTable(_, {
1771
- columns: roomTypeColumns(_),
1772
- rows,
1773
- id: (row) => row.id,
1774
- rowHref: (row) => `/admin/hospitality/room-types/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
1775
- })
1776
- : emptyState(_('hospitality_core.screen.roomTypes.empty'), _('hospitality_core.screen.roomTypes.emptyHint')),
1777
- ]) }));
1778
- };
1779
- export const newRoomTypeScreen = (_, values, properties, policies, locale, frame, errors = []) => (_jsx(Framed, { translator: _, title: _('hospitality_core.roomType.create.title'), frame: frame, body: stack([
1780
- roomTypeFeedback(_, null, errors),
1781
- _jsx(Section, { title: _('hospitality_core.roomType.create.title'), description: _('hospitality_core.roomType.create.hint'), body: roomTypeForm(_, values, properties, policies, locale, `/admin/hospitality/room-types/new?lang=${encodeURIComponent(locale)}`, _('hospitality_core.roomType.action.create'), `/admin/hospitality/room-types?property=${encodeURIComponent(values.propertyId)}&lang=${encodeURIComponent(locale)}`, true) }),
1782
- ]) }));
1783
- export const roomTypeDetailScreen = (_, roomType, properties, policies, locale, frame, status, errors = [], attempted) => {
1784
- const query = `lang=${encodeURIComponent(locale)}`;
1785
- const values = attempted ?? roomType;
1786
- const propertyName = roomType.property?.name ?? roomType.property?.code ?? roomType.propertyId;
1787
- return (_jsx(Framed, { translator: _, title: roomType.name, frame: frame, body: stack([
1788
- roomTypeFeedback(_, status, errors),
1789
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.roomType.detail.kicker'), title: roomType.name, subtitle: `${roomType.code} · ${propertyName}`, imageFallback: icon('hotel'), badges: [
1790
- badge(_(roomType.published ? 'hospitality_core.value.published' : 'hospitality_core.value.draft'), roomType.published ? 'positive' : 'neutral'),
1791
- badge(_(roomType.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), roomType.active ? 'positive' : 'neutral'),
1792
- ], summary: [
1793
- {
1794
- id: 'rooms',
1795
- label: _('hospitality_core.metric.rooms'),
1796
- value: roomType.rooms?.length ?? 0,
1797
- href: `/admin/hospitality/rooms?property=${encodeURIComponent(roomType.propertyId)}&${query}`,
1798
- },
1799
- {
1800
- id: 'rates',
1801
- label: _('hospitality_core.menu.ratePlans'),
1802
- value: roomType.ratePlans?.length ?? 0,
1803
- href: `/admin/hospitality/rate-plans?property=${encodeURIComponent(roomType.propertyId)}&${query}`,
1804
- },
1805
- {
1806
- id: 'beds',
1807
- label: _('hospitality_core.roomType.metric.beds'),
1808
- value: (roomType.beds ?? []).reduce((sum, bed) => sum + Number(bed.quantity ?? 0), 0),
1809
- },
1810
- ], navigation: linkButton({
1811
- label: _('hospitality_core.roomType.action.back'),
1812
- href: `/admin/hospitality/room-types?property=${encodeURIComponent(roomType.propertyId)}&${query}`,
1813
- variant: 'tertiary',
1814
- icon: 'chevron-left',
1815
- }), body: stack([
1816
- _jsx(Section, { title: _('hospitality_core.roomType.section.information'), description: _('hospitality_core.roomType.section.informationHint'), body: definitionList({
1817
- title: roomType.publicName || roomType.name,
1818
- items: [
1819
- {
1820
- key: 'property',
1821
- term: _('hospitality_core.roomType.field.property'),
1822
- value: propertyName,
1823
- },
1824
- {
1825
- key: 'capacity',
1826
- term: _('hospitality_core.roomType.field.defaultCapacity'),
1827
- value: _('hospitality_core.roomType.value.capacity', {
1828
- default: roomType.defaultCapacity,
1829
- adults: roomType.maxAdults,
1830
- children: roomType.maxChildren,
1831
- }),
1832
- },
1833
- {
1834
- key: 'rate',
1835
- term: _('hospitality_core.roomType.field.baseRate'),
1836
- value: formatMoney(_, roomType.baseRate),
1837
- },
1838
- {
1839
- key: 'policy',
1840
- term: _('hospitality_core.roomType.field.cancellationPolicy'),
1841
- value: roomType.cancellationPolicy?.name ??
1842
- roomType.cancellationPolicy?.code ??
1843
- _('hospitality_core.roomType.value.inheritPolicy'),
1844
- },
1845
- ],
1846
- }) }),
1847
- _jsx(Section, { title: _('hospitality_core.roomType.section.settings'), description: _('hospitality_core.roomType.section.settingsHint'), body: roomTypeForm(_, values, properties, policies, locale, `/admin/hospitality/room-types/${encodeURIComponent(roomType.id)}?${query}`, _('hospitality_core.roomType.action.save'), `/admin/hospitality/room-types?property=${encodeURIComponent(roomType.propertyId)}&${query}`, false) }),
1848
- _jsx(Section, { title: _('hospitality_core.roomType.section.next'), description: _('hospitality_core.roomType.section.nextHint'), body: stack([
1849
- linkButton({
1850
- label: _('hospitality_core.menu.rooms'),
1851
- href: `/admin/hospitality/rooms?property=${encodeURIComponent(roomType.propertyId)}&${query}`,
1852
- variant: 'secondary',
1853
- }),
1854
- linkButton({
1855
- label: _('hospitality_core.menu.ratePlans'),
1856
- href: `/admin/hospitality/rate-plans?property=${encodeURIComponent(roomType.propertyId)}&${query}`,
1857
- variant: 'secondary',
1858
- }),
1859
- linkButton({
1860
- label: _('hospitality_core.menu.inventory'),
1861
- href: `/admin/hospitality/inventory?property=${encodeURIComponent(roomType.propertyId)}&roomType=${encodeURIComponent(roomType.id)}&${query}`,
1862
- variant: 'secondary',
1863
- }),
1864
- linkButton({
1865
- label: _('hospitality_core.menu.content'),
1866
- href: `/admin/hospitality/content?property=${encodeURIComponent(roomType.propertyId)}&target=room_type%3A${encodeURIComponent(roomType.id)}&${query}`,
1867
- variant: 'secondary',
1868
- }),
1869
- ], 'compact') }),
1870
- ]) }),
1871
- ]) }));
1872
- };
1873
- export const amenitiesScreen = (_, rows, frame) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.amenities.title'), frame: frame, body: rows.length
1874
- ? dataTable(_, { columns: amenityColumns(_), rows, id: (row) => row.id })
1875
- : emptyState(_('hospitality_core.screen.amenities.empty'), _('hospitality_core.screen.amenities.emptyHint')) }));
1876
- export const policiesScreen = (_, rows, frame) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.policies.title'), frame: frame, body: rows.length
1877
- ? dataTable(_, { columns: policyColumns(_), rows, id: (row) => row.id })
1878
- : emptyState(_('hospitality_core.screen.policies.empty'), _('hospitality_core.screen.policies.emptyHint')) }));
1879
- const contentFeedback = (_, state) => {
1880
- if (state === 'saved')
1881
- return notice({
1882
- title: _('hospitality_core.content.feedback.saved'),
1883
- message: _('hospitality_core.content.feedback.savedHint'),
1884
- tone: 'positive',
1885
- });
1886
- if (state === 'invalid')
1887
- return notice({
1888
- title: _('hospitality_core.content.feedback.invalid'),
1889
- message: _('hospitality_core.content.feedback.invalidHint'),
1890
- tone: 'danger',
1891
- });
1892
- return null;
1893
- };
1894
- export const contentScreen = (_, properties, roomTypes, propertyId, target, images, completeness, locale, query, frame, status) => {
1895
- const property = properties.find((row) => row.id === propertyId);
1896
- const roomTypeId = target.startsWith('room_type:') ? target.slice('room_type:'.length) : null;
1897
- const roomType = roomTypes.find((row) => row.id === roomTypeId);
1898
- const selectedLabel = roomType?.name ?? property?.name ?? _('hospitality_core.content.target.none');
1899
- const categoryOptions = ['exterior', 'lobby', 'room', 'bathroom', 'restaurant', 'pool', 'other'].map((value) => ({ value, label: _(`hospitality_core.content.category.${value}`) }));
1900
- const targetOptions = property
1901
- ? [
1902
- { value: 'property', label: _('hospitality_core.content.target.property') },
1903
- ...roomTypes.map((row) => ({
1904
- value: `room_type:${row.id}`,
1905
- label: `${_('hospitality_core.content.target.roomType')} · ${row.name}`,
1906
- })),
1907
- ]
1908
- : [];
1909
- const suffix = query ? `?${query}` : '';
1910
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.content.title'), frame: frame, body: stack([
1911
- contentFeedback(_, status),
1912
- properties.length ? (_jsx(Section, { title: _('hospitality_core.screen.content.selection'), description: _('hospitality_core.screen.content.selectionHint'), body: _jsx(RecordForm, { action: "/admin/hospitality/content", method: "get", layout: "inline", fields: [
1913
- {
1914
- name: 'property',
1915
- label: _('hospitality_core.content.field.property'),
1916
- type: 'select',
1917
- value: propertyId,
1918
- options: choices(properties),
1919
- required: true,
1920
- },
1921
- {
1922
- name: 'target',
1923
- label: _('hospitality_core.content.field.target'),
1924
- type: 'select',
1925
- value: target,
1926
- options: targetOptions,
1927
- required: true,
1928
- },
1929
- ], hidden: { lang: locale }, submit: _('hospitality_core.action.select'), submitVariant: "secondary" }) })) : (emptyState(_('hospitality_core.screen.content.noProperty'), _('hospitality_core.screen.content.noPropertyHint'))),
1930
- ...(property
1931
- ? [
1932
- cardGrid({
1933
- items: [
1934
- {
1935
- id: 'target',
1936
- label: _('hospitality_core.content.metric.target'),
1937
- value: selectedLabel,
1938
- },
1939
- {
1940
- id: 'images',
1941
- label: _('hospitality_core.content.metric.images'),
1942
- value: String(images.length),
1943
- },
1944
- {
1945
- id: 'complete',
1946
- label: _('hospitality_core.content.metric.completeness'),
1947
- value: `${completeness.percent}%`,
1948
- detail: _(`hospitality_core.content.metric.fields`, {
1949
- completed: completeness.completed,
1950
- total: completeness.total,
1951
- }),
1952
- },
1953
- ],
1954
- id: (item) => item.id,
1955
- card: (item) => metric({
1956
- label: item.label,
1957
- value: item.value,
1958
- detail: 'detail' in item ? item.detail : null,
1959
- tone: item.id,
1960
- }),
1961
- }),
1962
- _jsx(Section, { title: _('hospitality_core.screen.content.library'), description: _('hospitality_core.screen.content.libraryHint'), body: mediaPanel({
1963
- status: 'ready',
1964
- images: images.map((image, index) => ({
1965
- id: image.id,
1966
- src: `/files/${image.attachmentId}`,
1967
- alt: image.caption || image.attachment?.name || selectedLabel,
1968
- primary: image.primary,
1969
- actions: {
1970
- primary: `/admin/hospitality/content/images/${image.id}/primary${suffix}`,
1971
- remove: `/admin/hospitality/content/images/${image.id}/remove${suffix}`,
1972
- ...(index > 0
1973
- ? { moveUp: `/admin/hospitality/content/images/${image.id}/move-up${suffix}` }
1974
- : {}),
1975
- ...(index < images.length - 1
1976
- ? { moveDown: `/admin/hospitality/content/images/${image.id}/move-down${suffix}` }
1977
- : {}),
1978
- },
1979
- })),
1980
- uploadAction: `/admin/hospitality/content/upload${suffix}`,
1981
- labels: {
1982
- empty: _('hospitality_core.content.media.empty'),
1983
- primary: _('hospitality_core.content.media.primary'),
1984
- makePrimary: _('hospitality_core.content.media.makePrimary'),
1985
- moveUp: _('hospitality_core.content.media.moveUp'),
1986
- moveDown: _('hospitality_core.content.media.moveDown'),
1987
- remove: _('hospitality_core.content.media.remove'),
1988
- choose: _('hospitality_core.content.media.choose'),
1989
- add: _('hospitality_core.content.media.add'),
1990
- },
1991
- extension: images.length ? (_jsx(FormCluster, { label: _('hospitality_core.content.metadata.group'), forms: images.map((image) => (_jsx(RecordForm, { action: `/admin/hospitality/content/images/${image.id}/metadata${suffix}`, layout: "inline", fields: [
1992
- {
1993
- name: 'category',
1994
- label: _('hospitality_core.content.field.category'),
1995
- type: 'select',
1996
- value: image.category,
1997
- options: categoryOptions,
1998
- required: true,
1999
- },
2000
- {
2001
- name: 'caption',
2002
- label: _('hospitality_core.content.field.caption'),
2003
- value: image.caption,
2004
- placeholder: image.attachment?.name ?? null,
2005
- },
2006
- ], hidden: { id: image.id }, submit: _('hospitality_core.content.action.saveMetadata'), submitVariant: "secondary", submitSize: "compact" }))) })) : undefined,
2007
- }) }),
2008
- ]
2009
- : []),
2010
- ]) }));
2011
- };
2012
- const choices = (rows) => rows.map((row) => ({
2013
- value: row.id,
2014
- label: `${row.code ? `${row.code} · ` : ''}${row.name}`,
2015
- }));
2016
- const feedback = (_, state) => {
2017
- if (state === 'saved')
2018
- return notice({
2019
- title: _('hospitality_core.feedback.saved'),
2020
- message: _('hospitality_core.feedback.savedHint'),
2021
- tone: 'positive',
2022
- });
2023
- if (state === 'invalid')
2024
- return notice({
2025
- title: _('hospitality_core.feedback.invalid'),
2026
- message: _('hospitality_core.feedback.invalidHint'),
2027
- tone: 'danger',
2028
- });
2029
- return null;
2030
- };
2031
- const nightAuditFeedback = (_, state) => {
2032
- if (state === 'queued')
2033
- return notice({
2034
- title: _('hospitality_core.nightAudit.feedback.queued'),
2035
- message: _('hospitality_core.nightAudit.feedback.queuedHint'),
2036
- tone: 'positive',
2037
- });
2038
- if (state === 'invalid')
2039
- return notice({
2040
- title: _('hospitality_core.feedback.invalid'),
2041
- message: _('hospitality_core.nightAudit.feedback.invalidHint'),
2042
- tone: 'danger',
2043
- });
2044
- return null;
2045
- };
2046
- const nightAuditColumns = (_, locale) => [
2047
- {
2048
- key: 'date',
2049
- label: _('hospitality_core.nightAudit.col.date'),
2050
- cell: (row) => new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeZone: 'UTC' }).format(new Date(`${row.auditDate}T12:00:00Z`)),
2051
- kind: 'date',
2052
- priority: 'primary',
2053
- },
2054
- {
2055
- key: 'status',
2056
- label: _('hospitality_core.col.status'),
2057
- cell: (row) => badge(_(`hospitality_core.nightAudit.state.${row.state}`), row.state === 'completed'
2058
- ? 'positive'
2059
- : row.state === 'failed'
2060
- ? 'danger'
2061
- : row.state === 'running'
2062
- ? 'warning'
2063
- : 'info'),
2064
- kind: 'status',
2065
- },
2066
- {
2067
- key: 'inHouse',
2068
- label: _('hospitality_core.nightAudit.metric.inHouse'),
2069
- cell: (row) => String(row.inHouseCount),
2070
- align: 'end',
2071
- kind: 'number',
2072
- },
2073
- {
2074
- key: 'services',
2075
- label: _('hospitality_core.nightAudit.metric.services'),
2076
- cell: (row) => String(row.servicePosted),
2077
- align: 'end',
2078
- kind: 'number',
2079
- },
2080
- {
2081
- key: 'rent',
2082
- label: _('hospitality_core.nightAudit.metric.rent'),
2083
- cell: (row) => String(row.rentPosted),
2084
- align: 'end',
2085
- kind: 'number',
2086
- },
2087
- {
2088
- key: 'amount',
2089
- label: _('hospitality_core.col.amount'),
2090
- cell: (row) => formatMoney(_, row.totalAmount),
2091
- align: 'end',
2092
- kind: 'currency',
2093
- },
2094
- {
2095
- key: 'attempt',
2096
- label: _('hospitality_core.nightAudit.col.attempt'),
2097
- cell: (row) => String(row.attempt),
2098
- align: 'end',
2099
- kind: 'number',
2100
- },
2101
- ];
2102
- export const nightAuditScreen = (_, data, locale, frame, state) => {
2103
- if (!data.propertyId)
2104
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.nightAudit.title'), frame: frame, body: emptyState(_('hospitality_core.nightAudit.empty.property'), _('hospitality_core.nightAudit.empty.propertyHint')) }));
2105
- const lang = { lang: locale };
2106
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.nightAudit.title'), frame: frame, body: stack([
2107
- nightAuditFeedback(_, state),
2108
- _jsx(FormCluster, { label: _('hospitality_core.nightAudit.section.selection'), forms: [
2109
- _jsx(RecordForm, { action: "/admin/hospitality/night-audit", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { ...lang, auditDate: data.auditDate }, fields: [
2110
- {
2111
- name: 'property',
2112
- label: _('hospitality_core.menu.properties'),
2113
- type: 'select',
2114
- value: data.propertyId,
2115
- options: choices(data.properties),
2116
- required: true,
2117
- },
2118
- ] }),
2119
- datePicker({
2120
- action: '/admin/hospitality/night-audit',
2121
- label: _('hospitality_core.nightAudit.field.auditDate'),
2122
- fields: [
2123
- {
2124
- name: 'auditDate',
2125
- label: _('hospitality_core.nightAudit.field.auditDate'),
2126
- value: data.auditDate,
2127
- max: data.today,
2128
- required: true,
2129
- },
2130
- ],
2131
- hidden: { ...lang, property: data.propertyId },
2132
- submit: _('hospitality_core.nightAudit.action.preview'),
2133
- }),
2134
- ] }),
2135
- data.preview
2136
- ? cardGrid({
2137
- items: [
2138
- {
2139
- id: 'in-house',
2140
- label: _('hospitality_core.nightAudit.metric.inHouse'),
2141
- value: data.preview.inHouseCount,
2142
- },
2143
- {
2144
- id: 'services',
2145
- label: _('hospitality_core.nightAudit.metric.servicesDue'),
2146
- value: data.preview.serviceDue,
2147
- },
2148
- {
2149
- id: 'rent',
2150
- label: _('hospitality_core.nightAudit.metric.rentDue'),
2151
- value: data.preview.rentDue,
2152
- },
2153
- {
2154
- id: 'night-audit-amount',
2155
- label: _('hospitality_core.nightAudit.metric.estimated'),
2156
- value: formatMoney(_, data.preview.estimatedAmount),
2157
- },
2158
- ],
2159
- id: (item) => item.id,
2160
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
2161
- })
2162
- : null,
2163
- _jsx(Section, { title: _('hospitality_core.nightAudit.section.run'), description: _('hospitality_core.nightAudit.section.runHint'), body: _jsx(RecordForm, { action: "/admin/hospitality/night-audit", method: "post", submit: _('hospitality_core.nightAudit.action.run'), submitVariant: "primary", hidden: {
2164
- ...lang,
2165
- operation: 'request-night-audit',
2166
- propertyId: data.propertyId,
2167
- auditDate: data.auditDate,
2168
- }, fields: [] }) }),
2169
- _jsx(Section, { title: _('hospitality_core.nightAudit.section.history'), description: _('hospitality_core.nightAudit.section.historyHint'), body: data.runs.length
2170
- ? dataTable(_, { columns: nightAuditColumns(_, locale), rows: data.runs, id: (row) => row.id })
2171
- : emptyState(_('hospitality_core.nightAudit.empty.runs'), _('hospitality_core.nightAudit.empty.runsHint')) }),
2172
- ]) }));
2173
- };
2174
- const stayNoticeFeedback = (_, state) => {
2175
- if (state === 'refreshed' || state === 'submitted' || state === 'confirmed')
2176
- return notice({
2177
- title: _(`hospitality_core.stayNotice.feedback.${state}`),
2178
- message: _(`hospitality_core.stayNotice.feedback.${state}Hint`),
2179
- tone: 'positive',
2180
- });
2181
- if (state === 'invalid')
2182
- return notice({
2183
- title: _('hospitality_core.feedback.invalid'),
2184
- message: _('hospitality_core.stayNotice.feedback.invalidHint'),
2185
- tone: 'danger',
2186
- });
2187
- return null;
2188
- };
2189
- const stayNoticeStateTone = (state) => state === 'attention'
2190
- ? 'danger'
2191
- : state === 'ready'
2192
- ? 'warning'
2193
- : state === 'submitted'
2194
- ? 'info'
2195
- : 'positive';
2196
- const stayNoticeDocument = (_, row) => {
2197
- if (!row.documentType || !row.documentLast4)
2198
- return _('hospitality_core.stayNotice.value.missing');
2199
- return `${_(`hospitality_core.document.${row.documentType}`)} · •••• ${row.documentLast4}`;
2200
- };
2201
- const stayNoticeIssues = (_, row) => row.issueCodes.length
2202
- ? row.issueCodes.map((item) => _(`hospitality_core.stayNotice.issue.${item}`)).join(', ')
2203
- : _('hospitality_core.stayNotice.value.complete');
2204
- const stayNoticeColumns = (_, locale, timezone) => [
2205
- {
2206
- key: 'guest',
2207
- label: _('hospitality_core.stayNotice.col.guest'),
2208
- cell: (row) => row.guestName,
2209
- priority: 'primary',
2210
- kind: 'person',
2211
- },
2212
- {
2213
- key: 'document',
2214
- label: _('hospitality_core.stayNotice.col.document'),
2215
- cell: (row) => stayNoticeDocument(_, row),
2216
- priority: 'secondary',
2217
- kind: 'identifier',
2218
- },
2219
- {
2220
- key: 'due',
2221
- label: _('hospitality_core.stayNotice.col.due'),
2222
- cell: (row) => new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeStyle: 'short', timeZone: timezone }).format(new Date(row.dueAt)),
2223
- priority: 'secondary',
2224
- kind: 'date',
2225
- },
2226
- {
2227
- key: 'state',
2228
- label: _('hospitality_core.col.status'),
2229
- cell: (row) => badge(_(`hospitality_core.stayNotice.state.${row.state}`), stayNoticeStateTone(row.state)),
2230
- kind: 'status',
2231
- },
2232
- {
2233
- key: 'issues',
2234
- label: _('hospitality_core.stayNotice.col.readiness'),
2235
- cell: (row) => stayNoticeIssues(_, row),
2236
- priority: 'tertiary',
2237
- optional: true,
2238
- },
2239
- ];
2240
- const stayNoticeHref = (locale, propertyId, state, noticeId) => {
2241
- const query = new URLSearchParams({ lang: locale, property: propertyId, notice: noticeId });
2242
- if (state !== 'all')
2243
- query.set('state', state);
2244
- return `/admin/hospitality/stay-notices?${query.toString()}`;
2245
- };
2246
- const stayNoticeAction = (_, selected, locale, propertyId, state) => {
2247
- const hidden = {
2248
- lang: locale,
2249
- id: selected.id,
2250
- stayId: selected.stayId,
2251
- property: propertyId,
2252
- state,
2253
- };
2254
- if (selected.state === 'attention')
2255
- return (_jsx(RecordForm, { action: "/admin/hospitality/stay-notices", method: "post", submit: _('hospitality_core.stayNotice.action.refresh'), submitVariant: "secondary", hidden: { ...hidden, operation: 'refresh' }, fields: [] }));
2256
- if (selected.state === 'ready')
2257
- return (_jsx(RecordForm, { action: "/admin/hospitality/stay-notices", method: "post", submit: _('hospitality_core.stayNotice.action.recordSubmission'), submitVariant: "primary", hidden: { ...hidden, operation: 'record-submission' }, fields: [
2258
- {
2259
- name: 'reason',
2260
- label: _('hospitality_core.stayNotice.field.reason'),
2261
- type: 'select',
2262
- value: selected.reason,
2263
- required: true,
2264
- options: [
2265
- { value: '', label: _('hospitality_core.stayNotice.reason.select') },
2266
- ...['tourism', 'business', 'family', 'other'].map((value) => ({
2267
- value,
2268
- label: _(`hospitality_core.stayNotice.reason.${value}`),
2269
- })),
2270
- ],
2271
- },
2272
- {
2273
- name: 'channel',
2274
- label: _('hospitality_core.stayNotice.field.channel'),
2275
- type: 'select',
2276
- required: true,
2277
- options: ['online', 'vneid', 'email', 'phone', 'software'].map((value) => ({
2278
- value,
2279
- label: _(`hospitality_core.stayNotice.channel.${value}`),
2280
- })),
2281
- },
2282
- {
2283
- name: 'evidenceRef',
2284
- label: _('hospitality_core.stayNotice.field.evidenceRef'),
2285
- help: _('hospitality_core.stayNotice.field.evidenceRefHint'),
2286
- required: true,
2287
- },
2288
- ] }));
2289
- if (selected.state === 'submitted')
2290
- return (_jsx(RecordForm, { action: "/admin/hospitality/stay-notices", method: "post", submit: _('hospitality_core.stayNotice.action.confirm'), submitVariant: "primary", hidden: { ...hidden, operation: 'confirm' }, fields: [
2291
- {
2292
- name: 'receiptRef',
2293
- label: _('hospitality_core.stayNotice.field.receiptRef'),
2294
- value: selected.receiptRef,
2295
- required: true,
2296
- },
2297
- ] }));
2298
- return null;
2299
- };
2300
- export const stayNoticesScreen = (_, data, locale, timezone, frame, feedbackState) => {
2301
- if (!data.propertyId)
2302
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.stayNotices.title'), frame: frame, body: emptyState(_('hospitality_core.stayNotice.empty.property'), _('hospitality_core.stayNotice.empty.propertyHint')) }));
2303
- const counts = Object.fromEntries(['attention', 'ready', 'submitted', 'confirmed'].map((state) => [
2304
- state,
2305
- data.rows.filter((row) => row.state === state).length,
2306
- ]));
2307
- const visibleRows = data.state === 'all' ? data.rows : data.rows.filter((row) => row.state === data.state);
2308
- const action = data.selected
2309
- ? stayNoticeAction(_, data.selected, locale, data.propertyId, data.state)
2310
- : null;
2311
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.stayNotices.title'), frame: frame, body: stack([
2312
- stayNoticeFeedback(_, feedbackState),
2313
- notice({
2314
- tone: 'info',
2315
- title: _('hospitality_core.stayNotice.privacy.title'),
2316
- message: _('hospitality_core.stayNotice.privacy.hint'),
2317
- }),
2318
- _jsx(RecordForm, { action: "/admin/hospitality/stay-notices", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { lang: locale }, fields: [
2319
- {
2320
- name: 'property',
2321
- label: _('hospitality_core.menu.properties'),
2322
- type: 'select',
2323
- value: data.propertyId,
2324
- options: choices(data.properties),
2325
- required: true,
2326
- },
2327
- {
2328
- name: 'state',
2329
- label: _('hospitality_core.col.status'),
2330
- type: 'select',
2331
- value: data.state,
2332
- options: ['all', 'attention', 'ready', 'submitted', 'confirmed'].map((value) => ({
2333
- value,
2334
- label: _(`hospitality_core.stayNotice.state.${value}`),
2335
- })),
2336
- },
2337
- ] }),
2338
- cardGrid({
2339
- items: ['attention', 'ready', 'submitted', 'confirmed'].map((state) => ({
2340
- state,
2341
- count: Number(counts[state] ?? 0),
2342
- })),
2343
- id: (item) => item.state,
2344
- card: (item) => metric({
2345
- label: _(`hospitality_core.stayNotice.state.${item.state}`),
2346
- value: String(item.count),
2347
- tone: item.state,
2348
- }),
2349
- }),
2350
- ...(data.selected
2351
- ? [
2352
- _jsx(Section, { title: _('hospitality_core.stayNotice.section.selected'), description: _('hospitality_core.stayNotice.section.selectedHint'), body: stack([
2353
- definitionList({
2354
- title: data.selected.guestName,
2355
- items: [
2356
- {
2357
- key: 'state',
2358
- term: _('hospitality_core.col.status'),
2359
- value: _(`hospitality_core.stayNotice.state.${data.selected.state}`),
2360
- },
2361
- {
2362
- key: 'document',
2363
- term: _('hospitality_core.stayNotice.col.document'),
2364
- value: stayNoticeDocument(_, data.selected),
2365
- },
2366
- {
2367
- key: 'reason',
2368
- term: _('hospitality_core.stayNotice.field.reason'),
2369
- value: data.selected.reason
2370
- ? _(`hospitality_core.stayNotice.reason.${data.selected.reason}`)
2371
- : _('hospitality_core.stayNotice.value.missing'),
2372
- },
2373
- {
2374
- key: 'readiness',
2375
- term: _('hospitality_core.stayNotice.col.readiness'),
2376
- value: stayNoticeIssues(_, data.selected),
2377
- },
2378
- {
2379
- key: 'evidence',
2380
- term: _('hospitality_core.stayNotice.field.evidenceRef'),
2381
- value: data.selected.receiptRef || _('hospitality_core.stayNotice.value.missing'),
2382
- },
2383
- ],
2384
- }),
2385
- action,
2386
- ]) }),
2387
- ]
2388
- : []),
2389
- _jsx(Section, { title: _('hospitality_core.stayNotice.section.queue'), description: _('hospitality_core.stayNotice.section.queueHint'), body: visibleRows.length
2390
- ? dataTable(_, {
2391
- columns: stayNoticeColumns(_, locale, timezone),
2392
- rows: visibleRows,
2393
- id: (row) => row.id,
2394
- rowHref: (row) => stayNoticeHref(locale, data.propertyId, data.state, row.id),
2395
- })
2396
- : emptyState(_('hospitality_core.stayNotice.empty.rows'), _('hospitality_core.stayNotice.empty.rowsHint')) }),
2397
- ]) }));
2398
- };
2399
- const propertyChargeColumns = (_) => [
2400
- {
2401
- key: 'type',
2402
- label: _('hospitality_core.col.type'),
2403
- cell: (row) => badge(_(`hospitality_core.propertyCharge.${row.chargeType}`), 'info'),
2404
- kind: 'status',
2405
- },
2406
- { key: 'name', label: _('hospitality_core.col.name'), cell: (row) => row.name, priority: 'primary' },
2407
- {
2408
- key: 'amount',
2409
- label: _('hospitality_core.col.amount'),
2410
- cell: (row) => formatMoney(_, row.amount),
2411
- align: 'end',
2412
- kind: 'currency',
2413
- },
2414
- {
2415
- key: 'status',
2416
- label: _('hospitality_core.col.status'),
2417
- cell: (row) => badge(_(row.active ? 'hospitality_core.value.active' : 'hospitality_core.value.inactive'), row.active ? 'positive' : 'neutral'),
2418
- kind: 'status',
2419
- },
2420
- ];
2421
- const extraLineColumns = (_) => [
2422
- {
2423
- key: 'target',
2424
- label: _('hospitality_core.services.col.target'),
2425
- cell: (row) => code(row.reservation?.code ?? row.stay?.code ?? row.reservationId ?? row.stayId ?? '—'),
2426
- kind: 'identifier',
2427
- },
2428
- {
2429
- key: 'service',
2430
- label: _('hospitality_core.services.col.service'),
2431
- cell: (row) => `${row.productCode ? `${row.productCode} · ` : ''}${row.description}`,
2432
- priority: 'primary',
2433
- },
2434
- {
2435
- key: 'recurrence',
2436
- label: _('hospitality_core.services.col.recurrence'),
2437
- cell: (row) => badge(_(`hospitality_core.extraRecurrence.${row.recurrence}`), 'info'),
2438
- kind: 'status',
2439
- },
2440
- {
2441
- key: 'price',
2442
- label: _('hospitality_core.services.col.unitPrice'),
2443
- cell: (row) => `${row.quantity} × ${formatMoney(_, row.unitPrice)}`,
2444
- align: 'end',
2445
- kind: 'currency',
2446
- },
2447
- {
2448
- key: 'posted',
2449
- label: _('hospitality_core.services.col.materialized'),
2450
- cell: (row) => row.materializedCount
2451
- ? badge(_('hospitality_core.services.value.posted', {
2452
- count: row.materializedCount,
2453
- amount: formatMoney(_, row.materializedAmount),
2454
- }), 'positive')
2455
- : badge(_('hospitality_core.services.value.pending'), 'warning'),
2456
- kind: 'status',
2457
- },
2458
- ];
2459
- const serviceChargeColumns = (_, locale, timezone) => [
2460
- {
2461
- key: 'occurredAt',
2462
- label: _('hospitality_core.col.date'),
2463
- cell: (row) => row.serviceDate ?? dateTime(row.occurredAt, locale, timezone),
2464
- kind: 'date',
2465
- },
2466
- {
2467
- key: 'folio',
2468
- label: _('hospitality_core.services.col.folio'),
2469
- cell: (row) => code(row.folio?.code ?? row.folioId),
2470
- kind: 'identifier',
2471
- },
2472
- {
2473
- key: 'service',
2474
- label: _('hospitality_core.services.col.service'),
2475
- cell: (row) => row.description,
2476
- priority: 'primary',
2477
- },
2478
- {
2479
- key: 'quantity',
2480
- label: _('hospitality_core.col.quantity'),
2481
- cell: (row) => String(row.quantity),
2482
- align: 'end',
2483
- kind: 'number',
2484
- },
2485
- {
2486
- key: 'amount',
2487
- label: _('hospitality_core.col.amount'),
2488
- cell: (row) => formatMoney(_, row.amount),
2489
- align: 'end',
2490
- kind: 'currency',
2491
- },
2492
- {
2493
- key: 'state',
2494
- label: _('hospitality_core.col.status'),
2495
- cell: (row) => badge(_(`hospitality_core.chargeState.${row.state}`), row.state === 'active' ? 'positive' : 'neutral'),
2496
- kind: 'status',
2497
- },
2498
- ];
2499
- export const servicesScreen = (_, data, locale, timezone, frame, state) => {
2500
- const serviceQuery = new URLSearchParams({ lang: locale });
2501
- if (data.propertyId)
2502
- serviceQuery.set('property', data.propertyId);
2503
- const baseQuery = `?${serviceQuery.toString()}`;
2504
- const activeCharges = data.charges.filter((row) => row.state === 'active');
2505
- const totalPosted = activeCharges.reduce((sum, row) => sum + Number(row.amount), 0);
2506
- const targetOptions = data.targets.map((row) => ({
2507
- value: `${row.type}:${row.id}`,
2508
- label: `${row.type === 'reservation' ? _('hospitality_core.services.target.reservation') : _('hospitality_core.services.target.stay')} · ${row.code ? `${row.code} · ` : ''}${row.name}`,
2509
- }));
2510
- const productOptions = data.products.map((row) => ({
2511
- value: row.id,
2512
- label: `${row.code ? `${row.code} · ` : ''}${row.name} · ${formatMoney(_, row.unitPrice)}`,
2513
- }));
2514
- const extraOptions = data.extraLines
2515
- .filter((row) => row.active)
2516
- .map((row) => ({
2517
- value: row.id,
2518
- label: `${row.description} · ${_(`hospitality_core.extraRecurrence.${row.recurrence}`)}`,
2519
- }));
2520
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.services.title'), frame: frame, body: stack([
2521
- feedback(_, state),
2522
- _jsx(RecordForm, { action: "/admin/hospitality/services", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { lang: locale }, fields: [
2523
- {
2524
- name: 'property',
2525
- label: _('hospitality_core.menu.properties'),
2526
- type: 'select',
2527
- value: data.propertyId,
2528
- options: choices(data.properties),
2529
- required: true,
2530
- },
2531
- ] }),
2532
- cardGrid({
2533
- items: [
2534
- {
2535
- id: 'fees',
2536
- label: _('hospitality_core.services.metric.fees'),
2537
- value: data.propertyCharges.length,
2538
- },
2539
- {
2540
- id: 'extras',
2541
- label: _('hospitality_core.services.metric.extras'),
2542
- value: data.extraLines.length,
2543
- },
2544
- {
2545
- id: 'posted',
2546
- label: _('hospitality_core.services.metric.posted'),
2547
- value: activeCharges.length,
2548
- },
2549
- {
2550
- id: 'value',
2551
- label: _('hospitality_core.services.metric.postedValue'),
2552
- value: formatMoney(_, totalPosted),
2553
- },
2554
- ],
2555
- id: (item) => item.id,
2556
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
2557
- }),
2558
- _jsx(Section, { title: _('hospitality_core.services.section.fees'), description: _('hospitality_core.services.section.feesHint'), body: _jsx(FormCluster, { label: _('hospitality_core.services.form.fee'), forms: [
2559
- _jsx(RecordForm, { action: `/admin/hospitality/services${baseQuery}`, submit: _('hospitality_core.services.action.saveFee'), submitVariant: "secondary", hidden: {
2560
- operation: 'save-property-charge',
2561
- id: data.ids.propertyCharge,
2562
- propertyId: data.propertyId ?? '',
2563
- }, fields: [
2564
- {
2565
- name: 'chargeType',
2566
- label: _('hospitality_core.col.type'),
2567
- type: 'select',
2568
- options: ['parking', 'city_tax', 'internet', 'resort_fee', 'other'].map((value) => ({
2569
- value,
2570
- label: _(`hospitality_core.propertyCharge.${value}`),
2571
- })),
2572
- required: true,
2573
- },
2574
- { name: 'name', label: _('hospitality_core.col.name'), required: true },
2575
- {
2576
- name: 'amount',
2577
- label: _('hospitality_core.col.amount'),
2578
- type: 'decimal',
2579
- required: true,
2580
- },
2581
- {
2582
- name: 'description',
2583
- label: _('hospitality_core.services.field.description'),
2584
- type: 'textarea',
2585
- span: 'full',
2586
- },
2587
- {
2588
- name: 'active',
2589
- label: _('hospitality_core.field.active'),
2590
- type: 'checkbox',
2591
- value: true,
2592
- },
2593
- ] }),
2594
- ] }) }),
2595
- data.propertyCharges.length
2596
- ? dataTable(_, {
2597
- columns: propertyChargeColumns(_),
2598
- rows: data.propertyCharges,
2599
- id: (row) => row.id,
2600
- })
2601
- : emptyState(_('hospitality_core.services.empty.fees'), _('hospitality_core.services.empty.feesHint')),
2602
- _jsx(Section, { title: _('hospitality_core.services.section.intentions'), description: _('hospitality_core.services.section.intentionsHint'), body: data.targets.length && data.products.length ? (_jsx(FormCluster, { label: _('hospitality_core.services.form.intention'), forms: [
2603
- _jsx(RecordForm, { action: `/admin/hospitality/services${baseQuery}`, submit: _('hospitality_core.services.action.addIntention'), submitVariant: "primary", hidden: {
2604
- operation: 'save-extra-line',
2605
- id: data.ids.extraLine,
2606
- }, fields: [
2607
- {
2608
- name: 'target',
2609
- label: _('hospitality_core.services.field.target'),
2610
- type: 'select',
2611
- options: targetOptions,
2612
- required: true,
2613
- },
2614
- {
2615
- name: 'productId',
2616
- label: _('hospitality_core.services.field.product'),
2617
- type: 'select',
2618
- options: productOptions,
2619
- required: true,
2620
- },
2621
- {
2622
- name: 'description',
2623
- label: _('hospitality_core.services.field.description'),
2624
- placeholder: _('hospitality_core.services.field.descriptionHint'),
2625
- },
2626
- {
2627
- name: 'quantity',
2628
- label: _('hospitality_core.col.quantity'),
2629
- type: 'decimal',
2630
- value: 1,
2631
- required: true,
2632
- },
2633
- {
2634
- name: 'unitPrice',
2635
- label: _('hospitality_core.services.col.unitPrice'),
2636
- type: 'decimal',
2637
- help: _('hospitality_core.services.field.unitPriceHint'),
2638
- },
2639
- {
2640
- name: 'recurrence',
2641
- label: _('hospitality_core.services.col.recurrence'),
2642
- type: 'select',
2643
- options: ['once', 'per_night', 'per_unit'].map((value) => ({
2644
- value,
2645
- label: _(`hospitality_core.extraRecurrence.${value}`),
2646
- })),
2647
- required: true,
2648
- },
2649
- {
2650
- name: 'active',
2651
- label: _('hospitality_core.field.active'),
2652
- type: 'checkbox',
2653
- value: true,
2654
- },
2655
- ] }),
2656
- ] })) : (emptyState(_('hospitality_core.services.empty.catalogue'), _('hospitality_core.services.empty.catalogueHint'))) }),
2657
- data.extraLines.length
2658
- ? dataTable(_, { columns: extraLineColumns(_), rows: data.extraLines, id: (row) => row.id })
2659
- : emptyState(_('hospitality_core.services.empty.intentions'), _('hospitality_core.services.empty.intentionsHint')),
2660
- _jsx(Section, { title: _('hospitality_core.services.section.post'), description: _('hospitality_core.services.section.postHint'), body: extraOptions.length ? (_jsx(RecordForm, { action: `/admin/hospitality/services${baseQuery}`, submit: _('hospitality_core.services.action.post'), submitVariant: "primary", hidden: { operation: 'materialize-extra', requestKey: data.ids.requestKey }, fields: [
2661
- {
2662
- name: 'id',
2663
- label: _('hospitality_core.services.field.intention'),
2664
- type: 'select',
2665
- options: extraOptions,
2666
- required: true,
2667
- },
2668
- {
2669
- name: 'serviceDate',
2670
- label: _('hospitality_core.services.field.serviceDate'),
2671
- type: 'date',
2672
- help: _('hospitality_core.services.field.serviceDateHint'),
2673
- },
2674
- {
2675
- name: 'quantity',
2676
- label: _('hospitality_core.col.quantity'),
2677
- type: 'decimal',
2678
- help: _('hospitality_core.services.field.postQuantityHint'),
2679
- },
2680
- ] })) : (emptyState(_('hospitality_core.services.empty.post'), _('hospitality_core.services.empty.postHint'))) }),
2681
- _jsx(Section, { title: _('hospitality_core.services.section.ledger'), description: _('hospitality_core.services.section.ledgerHint'), body: data.charges.length
2682
- ? dataTable(_, {
2683
- columns: serviceChargeColumns(_, locale, timezone),
2684
- rows: data.charges,
2685
- id: (row) => row.id,
2686
- })
2687
- : emptyState(_('hospitality_core.services.empty.ledger'), _('hospitality_core.services.empty.ledgerHint')) }),
2688
- ]) }));
2689
- };
2690
- export const ratePlansScreen = (_, rows, properties, roomTypes, propertyId, frame, state) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.ratePlans.title'), frame: frame, body: stack([
2691
- feedback(_, state),
2692
- _jsx(RecordForm, { action: "/admin/hospitality/rate-plans", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", fields: [
2693
- {
2694
- name: 'property',
2695
- label: _('hospitality_core.menu.properties'),
2696
- type: 'select',
2697
- value: propertyId,
2698
- options: choices(properties),
2699
- required: true,
2700
- },
2701
- ] }),
2702
- _jsx(Section, { title: _('hospitality_core.screen.ratePlans.create'), description: _('hospitality_core.screen.ratePlans.createHint'), body: roomTypes.length ? (_jsx(RecordForm, { action: `/admin/hospitality/rate-plans${propertyId ? `?property=${encodeURIComponent(propertyId)}` : ''}`, method: "post", submit: _('hospitality_core.action.saveRatePlan'), submitVariant: "primary", hidden: { operation: 'save-rate-plan', propertyId: propertyId ?? '' }, fields: [
2703
- {
2704
- name: 'roomTypeId',
2705
- label: _('hospitality_core.col.roomType'),
2706
- type: 'select',
2707
- options: choices(roomTypes),
2708
- required: true,
2709
- },
2710
- { name: 'code', label: _('hospitality_core.col.code'), required: true },
2711
- { name: 'name', label: _('hospitality_core.col.name'), required: true },
2712
- {
2713
- name: 'rateType',
2714
- label: _('hospitality_core.col.rateType'),
2715
- type: 'select',
2716
- value: 'nightly',
2717
- options: ['nightly', 'hourly', 'weekly', 'monthly'].map((value) => ({
2718
- value,
2719
- label: _(`hospitality_core.bookingType.${value}`),
2720
- })),
2721
- required: true,
2722
- },
2723
- { name: 'amount', label: _('hospitality_core.col.amount'), type: 'decimal', required: true },
2724
- {
2725
- name: 'mealPlan',
2726
- label: _('hospitality_core.col.mealPlan'),
2727
- type: 'select',
2728
- options: [
2729
- { value: '', label: '—' },
2730
- ...['RO', 'BB', 'HB', 'FB', 'AI'].map((value) => ({
2731
- value,
2732
- label: _(`hospitality_core.mealPlan.${value}`),
2733
- })),
2734
- ],
2735
- },
2736
- { name: 'minStay', label: _('hospitality_core.field.minStay'), type: 'number', value: 0 },
2737
- { name: 'maxStay', label: _('hospitality_core.field.maxStay'), type: 'number', value: 0 },
2738
- {
2739
- name: 'isDefault',
2740
- label: _('hospitality_core.field.isDefault'),
2741
- type: 'checkbox',
2742
- help: _('hospitality_core.field.isDefaultHint'),
2743
- },
2744
- { name: 'active', label: _('hospitality_core.field.active'), type: 'checkbox', value: true },
2745
- ] })) : (emptyState(_('hospitality_core.screen.ratePlans.noRoomTypes'), _('hospitality_core.screen.ratePlans.noRoomTypesHint'))) }),
2746
- _jsx(Section, { title: _('hospitality_core.screen.ratePlans.list'), body: rows.length
2747
- ? dataTable(_, { columns: ratePlanColumns(_), rows, id: (row) => row.id })
2748
- : emptyState(_('hospitality_core.screen.ratePlans.empty'), _('hospitality_core.screen.ratePlans.emptyHint')) }),
2749
- ]) }));
2750
- export const inventoryScreen = (_, rows, properties, roomTypes, selected, frame, state) => {
2751
- const selectedRoomTypes = roomTypes.filter((row) => row.propertyId === selected.propertyId);
2752
- const hidden = {
2753
- propertyId: selected.propertyId ?? '',
2754
- roomTypeId: selected.roomTypeId ?? '',
2755
- };
2756
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.inventory.title'), frame: frame, body: stack([
2757
- feedback(_, state),
2758
- _jsx(FormCluster, { label: _('hospitality_core.screen.inventory.filters'), forms: [
2759
- _jsx(RecordForm, { action: "/admin/hospitality/inventory", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { from: selected.from, to: selected.to }, fields: [
2760
- {
2761
- name: 'property',
2762
- label: _('hospitality_core.menu.properties'),
2763
- type: 'select',
2764
- value: selected.propertyId,
2765
- options: choices(properties),
2766
- required: true,
2767
- },
2768
- {
2769
- name: 'roomType',
2770
- label: _('hospitality_core.col.roomType'),
2771
- type: 'select',
2772
- value: selected.roomTypeId,
2773
- options: choices(selectedRoomTypes),
2774
- required: true,
2775
- },
2776
- ] }),
2777
- datePicker({
2778
- action: '/admin/hospitality/inventory',
2779
- label: _('hospitality_core.screen.inventory.dateRange'),
2780
- fields: [
2781
- {
2782
- name: 'from',
2783
- label: _('hospitality_core.field.from'),
2784
- value: selected.from,
2785
- required: true,
2786
- },
2787
- { name: 'to', label: _('hospitality_core.field.to'), value: selected.to, required: true },
2788
- ],
2789
- hidden: {
2790
- property: selected.propertyId ?? '',
2791
- roomType: selected.roomTypeId ?? '',
2792
- },
2793
- submit: _('hospitality_core.action.apply'),
2794
- }),
2795
- ] }),
2796
- cardGrid({
2797
- items: [
2798
- { id: 'days', label: _('hospitality_core.metric.inventoryDays'), value: rows.length },
2799
- {
2800
- id: 'available',
2801
- label: _('hospitality_core.metric.minimumAvailable'),
2802
- value: rows.length ? Math.min(...rows.map((row) => row.available)) : 0,
2803
- },
2804
- {
2805
- id: 'sold',
2806
- label: _('hospitality_core.metric.sold'),
2807
- value: rows.reduce((sum, row) => sum + row.sold, 0),
2808
- },
2809
- {
2810
- id: 'blocked',
2811
- label: _('hospitality_core.metric.blocked'),
2812
- value: rows.reduce((sum, row) => sum + row.blocked, 0),
2813
- },
2814
- ],
2815
- id: (item) => item.id,
2816
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
2817
- }),
2818
- _jsx(Section, { title: _('hospitality_core.screen.inventory.allotment'), description: _('hospitality_core.screen.inventory.allotmentHint'), body: selected.roomTypeId ? (_jsx(RecordForm, { action: "/admin/hospitality/inventory", method: "post", submit: _('hospitality_core.action.updateAllotment'), submitVariant: "primary", hidden: { ...hidden, operation: 'set-inventory' }, fields: [
2819
- {
2820
- name: 'from',
2821
- label: _('hospitality_core.field.from'),
2822
- type: 'date',
2823
- value: selected.from,
2824
- required: true,
2825
- },
2826
- {
2827
- name: 'to',
2828
- label: _('hospitality_core.field.to'),
2829
- type: 'date',
2830
- value: selected.to,
2831
- required: true,
2832
- },
2833
- { name: 'total', label: _('hospitality_core.col.total'), type: 'number', required: true },
2834
- { name: 'blocked', label: _('hospitality_core.col.blocked'), type: 'number' },
2835
- ] })) : (emptyState(_('hospitality_core.screen.inventory.noRoomType'), _('hospitality_core.screen.inventory.noRoomTypeHint'))) }),
2836
- _jsx(Section, { title: _('hospitality_core.screen.inventory.restrictions'), description: _('hospitality_core.screen.inventory.restrictionsHint'), body: selected.roomTypeId ? (_jsx(RecordForm, { action: "/admin/hospitality/inventory", method: "post", submit: _('hospitality_core.action.updateRestrictions'), submitVariant: "secondary", hidden: { ...hidden, operation: 'set-restrictions' }, fields: [
2837
- {
2838
- name: 'from',
2839
- label: _('hospitality_core.field.from'),
2840
- type: 'date',
2841
- value: selected.from,
2842
- required: true,
2843
- },
2844
- {
2845
- name: 'to',
2846
- label: _('hospitality_core.field.to'),
2847
- type: 'date',
2848
- value: selected.to,
2849
- required: true,
2850
- },
2851
- { name: 'minLos', label: _('hospitality_core.field.minLos'), type: 'number', value: 0 },
2852
- { name: 'maxLos', label: _('hospitality_core.field.maxLos'), type: 'number', value: 0 },
2853
- { name: 'stopSell', label: _('hospitality_core.restriction.stopSell'), type: 'checkbox' },
2854
- { name: 'closedToArrival', label: _('hospitality_core.restriction.cta'), type: 'checkbox' },
2855
- {
2856
- name: 'closedToDeparture',
2857
- label: _('hospitality_core.restriction.ctd'),
2858
- type: 'checkbox',
2859
- },
2860
- ] })) : null }),
2861
- rows.length
2862
- ? dataTable(_, { columns: inventoryColumns(_), rows, id: (row) => row.id })
2863
- : emptyState(_('hospitality_core.screen.inventory.empty'), _('hospitality_core.screen.inventory.emptyHint')),
2864
- ]) }));
2865
- };
2866
- const reservationColumns = (_, locale, timezone) => [
2867
- {
2868
- key: 'code',
2869
- label: _('hospitality_core.col.code'),
2870
- cell: (row) => linkButton({
2871
- label: row.code,
2872
- href: `/admin/hospitality/reservations/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
2873
- variant: 'tertiary',
2874
- size: 'compact',
2875
- }),
2876
- kind: 'identifier',
2877
- },
2878
- {
2879
- key: 'guest',
2880
- label: _('hospitality_core.col.guest'),
2881
- cell: (row) => person(guestName(row)),
2882
- kind: 'person',
2883
- priority: 'primary',
2884
- },
2885
- {
2886
- key: 'provider',
2887
- label: _('hospitality_core.col.provider'),
2888
- cell: (row) => badge(providerName(_, row.provider), 'neutral'),
2889
- kind: 'status',
2890
- },
2891
- {
2892
- key: 'roomType',
2893
- label: _('hospitality_core.col.roomType'),
2894
- cell: (row) => row.roomType?.name ?? code(row.roomTypeId),
2895
- },
2896
- {
2897
- key: 'checkIn',
2898
- label: _('hospitality_core.col.checkIn'),
2899
- cell: (row) => dateTime(row.checkIn, locale, timezone),
2900
- kind: 'date',
2901
- },
2902
- {
2903
- key: 'checkOut',
2904
- label: _('hospitality_core.col.checkOut'),
2905
- cell: (row) => dateTime(row.checkOut, locale, timezone),
2906
- kind: 'date',
2907
- },
2908
- {
2909
- key: 'amount',
2910
- label: _('hospitality_core.col.amount'),
2911
- cell: (row) => formatMoney(_, row.amountTotal),
2912
- align: 'end',
2913
- kind: 'currency',
2914
- },
2915
- {
2916
- key: 'status',
2917
- label: _('hospitality_core.col.status'),
2918
- cell: (row) => badge(_(`hospitality_core.reservationState.${row.state}`), workflowTone(row.state), row.state),
2919
- kind: 'status',
2920
- priority: 'primary',
2921
- },
2922
- ];
2923
- const stayColumns = (_, locale, timezone) => [
2924
- {
2925
- key: 'code',
2926
- label: _('hospitality_core.col.code'),
2927
- cell: (row) => linkButton({
2928
- label: row.code,
2929
- href: `/admin/hospitality/stays/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
2930
- variant: 'tertiary',
2931
- size: 'compact',
2932
- }),
2933
- kind: 'identifier',
2934
- },
2935
- {
2936
- key: 'guest',
2937
- label: _('hospitality_core.col.guest'),
2938
- cell: (row) => person(guestName(row)),
2939
- kind: 'person',
2940
- priority: 'primary',
2941
- },
2942
- {
2943
- key: 'room',
2944
- label: _('hospitality_core.col.room'),
2945
- cell: (row) => row.currentRoom?.name ?? row.currentRoom?.code ?? '—',
2946
- },
2947
- {
2948
- key: 'checkIn',
2949
- label: _('hospitality_core.col.checkIn'),
2950
- cell: (row) => dateTime(row.checkIn, locale, timezone),
2951
- kind: 'date',
2952
- },
2953
- {
2954
- key: 'checkOut',
2955
- label: _('hospitality_core.col.checkOut'),
2956
- cell: (row) => dateTime(row.checkOut, locale, timezone),
2957
- kind: 'date',
2958
- },
2959
- {
2960
- key: 'guests',
2961
- label: _('hospitality_core.col.guests'),
2962
- cell: (row) => String(row.adults + row.children),
2963
- align: 'end',
2964
- kind: 'number',
2965
- },
2966
- {
2967
- key: 'status',
2968
- label: _('hospitality_core.col.status'),
2969
- cell: (row) => badge(_(`hospitality_core.stayState.${row.state}`), workflowTone(row.state), row.state),
2970
- kind: 'status',
2971
- priority: 'primary',
2972
- },
2973
- ];
2974
- const folioColumns = (_, locale, timezone) => [
2975
- {
2976
- key: 'code',
2977
- label: _('hospitality_core.col.code'),
2978
- cell: (row) => linkButton({
2979
- label: row.code,
2980
- href: `/admin/hospitality/folios/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
2981
- variant: 'tertiary',
2982
- size: 'compact',
2983
- }),
2984
- kind: 'identifier',
2985
- },
2986
- {
2987
- key: 'guest',
2988
- label: _('hospitality_core.col.guest'),
2989
- cell: (row) => person(guestName(row)),
2990
- kind: 'person',
2991
- priority: 'primary',
2992
- },
2993
- {
2994
- key: 'opened',
2995
- label: _('hospitality_core.col.checkIn'),
2996
- cell: (row) => dateTime(row.openedAt, locale, timezone),
2997
- kind: 'date',
2998
- },
2999
- {
3000
- key: 'stays',
3001
- label: _('hospitality_core.col.stays'),
3002
- cell: (row) => String(row.stays?.length ?? 0),
3003
- align: 'end',
3004
- kind: 'number',
3005
- },
3006
- {
3007
- key: 'amount',
3008
- label: _('hospitality_core.col.amount'),
3009
- cell: (row) => formatMoney(_, row.amountTotal),
3010
- align: 'end',
3011
- kind: 'currency',
3012
- },
3013
- {
3014
- key: 'status',
3015
- label: _('hospitality_core.col.status'),
3016
- cell: (row) => badge(_(`hospitality_core.folioState.${row.state}`), workflowTone(row.state), row.state),
3017
- kind: 'status',
3018
- priority: 'primary',
3019
- },
3020
- ];
3021
- const folioChargeColumns = (_, locale, timezone, stays) => [
3022
- {
3023
- key: 'occurred',
3024
- label: _('hospitality_core.folio.charge.occurredAt'),
3025
- cell: (row) => dateTime(row.occurredAt, locale, timezone),
3026
- kind: 'date',
3027
- },
3028
- {
3029
- key: 'description',
3030
- label: _('hospitality_core.folio.charge.description'),
3031
- cell: (row) => row.type === 'room' && row.description.startsWith('room:')
3032
- ? _('hospitality_core.folio.charge.roomDescription')
3033
- : row.description,
3034
- priority: 'primary',
3035
- },
3036
- {
3037
- key: 'type',
3038
- label: _('hospitality_core.folio.charge.type'),
3039
- cell: (row) => badge(_(`hospitality_core.charge.${row.type}`), 'info', row.type),
3040
- kind: 'status',
3041
- },
3042
- {
3043
- key: 'stay',
3044
- label: _('hospitality_core.col.stays'),
3045
- cell: (row) => (row.stayId ? code(stays.get(row.stayId)?.code ?? row.stayId) : '—'),
3046
- },
3047
- {
3048
- key: 'quantity',
3049
- label: _('hospitality_core.folio.charge.quantity'),
3050
- cell: (row) => String(row.quantity),
3051
- align: 'end',
3052
- kind: 'number',
3053
- },
3054
- {
3055
- key: 'unit-price',
3056
- label: _('hospitality_core.folio.charge.unitPrice'),
3057
- cell: (row) => formatMoney(_, row.unitPrice),
3058
- align: 'end',
3059
- kind: 'currency',
3060
- },
3061
- {
3062
- key: 'amount',
3063
- label: _('hospitality_core.col.amount'),
3064
- cell: (row) => formatMoney(_, row.amount),
3065
- align: 'end',
3066
- kind: 'currency',
3067
- },
3068
- {
3069
- key: 'correction',
3070
- label: _('hospitality_core.folio.field.voidReason'),
3071
- cell: (row) => row.voidReason || '—',
3072
- },
3073
- {
3074
- key: 'status',
3075
- label: _('hospitality_core.col.status'),
3076
- cell: (row) => badge(_(`hospitality_core.chargeState.${row.state}`), row.state === 'active' ? 'positive' : 'neutral', row.state),
3077
- kind: 'status',
3078
- },
3079
- ];
3080
- const folioStayColumns = (_, locale, timezone) => [
3081
- {
3082
- key: 'code',
3083
- label: _('hospitality_core.col.code'),
3084
- cell: (row) => linkButton({
3085
- label: row.code,
3086
- href: `/admin/hospitality/stays/${encodeURIComponent(row.id)}?lang=${encodeURIComponent(locale)}`,
3087
- variant: 'tertiary',
3088
- size: 'compact',
3089
- }),
3090
- kind: 'identifier',
3091
- priority: 'primary',
3092
- },
3093
- {
3094
- key: 'check-in',
3095
- label: _('hospitality_core.col.checkIn'),
3096
- cell: (row) => dateTime(row.checkIn, locale, timezone),
3097
- kind: 'date',
3098
- },
3099
- {
3100
- key: 'check-out',
3101
- label: _('hospitality_core.col.checkOut'),
3102
- cell: (row) => dateTime(row.checkOut, locale, timezone),
3103
- kind: 'date',
3104
- },
3105
- {
3106
- key: 'status',
3107
- label: _('hospitality_core.col.status'),
3108
- cell: (row) => badge(_(`hospitality_core.stayState.${row.state}`), workflowTone(row.state), row.state),
3109
- kind: 'status',
3110
- },
3111
- ];
3112
- export const frontDeskScreen = (_, rows, overdueRows, totals, locale, timezone, frame) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.frontDesk.title'), frame: frame, body: stack([
3113
- cardGrid({
3114
- items: [
3115
- { id: 'arrivals', label: _('hospitality_core.metric.arrivals'), value: totals.arrivals },
3116
- { id: 'in-house', label: _('hospitality_core.metric.inHouse'), value: totals.inHouse },
3117
- { id: 'departures', label: _('hospitality_core.metric.departures'), value: totals.departures },
3118
- { id: 'overdue', label: _('hospitality_core.metric.overdue'), value: totals.overdue },
3119
- { id: 'folios', label: _('hospitality_core.metric.openFolios'), value: totals.openFolios },
3120
- ],
3121
- id: (item) => item.id,
3122
- card: (item) => metric({ label: item.label, value: String(item.value), tone: item.id }),
3123
- }),
3124
- overdueRows.length ? (_jsx(Section, { title: _('hospitality_core.screen.frontDesk.overdue'), description: _('hospitality_core.screen.frontDesk.overdueHint', {
3125
- count: overdueRows.length,
3126
- }), body: dataTable(_, {
3127
- columns: stayColumns(_, locale, timezone),
3128
- rows: overdueRows,
3129
- id: (row) => row.id,
3130
- }) })) : null,
3131
- rows.length
3132
- ? dataTable(_, { columns: stayColumns(_, locale, timezone), rows, id: (row) => row.id })
3133
- : emptyState(_('hospitality_core.screen.frontDesk.empty'), _('hospitality_core.screen.frontDesk.emptyHint')),
3134
- ]) }));
3135
- const reservationFeedback = (_, status) => {
3136
- if (status === 'saved')
3137
- return notice({
3138
- title: _('hospitality_core.reservation.feedback.saved'),
3139
- message: _('hospitality_core.reservation.feedback.savedHint'),
3140
- tone: 'positive',
3141
- });
3142
- if (status === 'quoted')
3143
- return notice({
3144
- title: _('hospitality_core.reservation.feedback.quoted'),
3145
- message: _('hospitality_core.reservation.feedback.quotedHint'),
3146
- tone: 'info',
3147
- });
3148
- if (status === 'invalid')
3149
- return notice({
3150
- title: _('hospitality_core.feedback.invalid'),
3151
- message: _('hospitality_core.reservation.feedback.invalidHint'),
3152
- tone: 'danger',
3153
- });
3154
- return null;
3155
- };
3156
- export const reservationsScreen = (_, data, locale, timezone, frame, status) => {
3157
- const errors = (data.quote?.errors ?? []).map((error) => error.messageKey ? _(error.messageKey, error.params) : _('hospitality_core.feedback.invalid'));
3158
- const quote = data.quote?.ok ? data.quote : null;
3159
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.reservations.title'), frame: frame, body: stack([
3160
- reservationFeedback(_, status),
3161
- _jsx(RecordForm, { action: "/admin/hospitality/reservations", method: "get", layout: "inline", submit: _('hospitality_core.action.select'), submitVariant: "secondary", hidden: { lang: locale }, fields: [
3162
- {
3163
- name: 'property',
3164
- label: _('hospitality_core.reservation.field.property'),
3165
- type: 'select',
3166
- value: data.values.propertyId,
3167
- options: choices(data.properties),
3168
- required: true,
3169
- },
3170
- ] }),
3171
- _jsx(Section, { title: _('hospitality_core.reservation.section.intake'), description: _('hospitality_core.reservation.section.intakeHint'), body: data.roomTypes.length && data.partners.length ? (_jsx(RecordForm, { action: "/admin/hospitality/reservations", method: "post", submit: _('hospitality_core.reservation.action.quote'), submitVariant: "primary", errors: errors, hidden: {
3172
- operation: 'quote',
3173
- lang: locale,
3174
- property: data.values.propertyId,
3175
- id: data.values.id,
3176
- }, fields: [
3177
- {
3178
- name: 'code',
3179
- label: _('hospitality_core.reservation.field.code'),
3180
- value: data.values.code,
3181
- help: _('hospitality_core.reservation.field.codeHint'),
3182
- },
3183
- {
3184
- name: 'partnerId',
3185
- label: _('hospitality_core.reservation.field.guest'),
3186
- type: 'select',
3187
- value: data.values.partnerId,
3188
- options: [
3189
- { value: '', label: _('hospitality_core.reservation.value.selectGuest') },
3190
- ...choices(data.partners),
3191
- ],
3192
- required: true,
3193
- },
3194
- {
3195
- name: 'roomTypeId',
3196
- label: _('hospitality_core.reservation.field.roomType'),
3197
- type: 'select',
3198
- value: data.values.roomTypeId,
3199
- options: choices(data.roomTypes),
3200
- required: true,
3201
- },
3202
- {
3203
- name: 'bookingType',
3204
- label: _('hospitality_core.reservation.field.bookingType'),
3205
- type: 'select',
3206
- value: data.values.bookingType,
3207
- options: ['nightly', 'weekly', 'monthly'].map((value) => ({
3208
- value,
3209
- label: _(`hospitality_core.bookingType.${value}`),
3210
- })),
3211
- required: true,
3212
- },
3213
- {
3214
- name: 'checkIn',
3215
- label: _('hospitality_core.col.checkIn'),
3216
- type: 'datetime-local',
3217
- value: data.values.checkIn,
3218
- required: true,
3219
- },
3220
- {
3221
- name: 'checkOut',
3222
- label: _('hospitality_core.col.checkOut'),
3223
- type: 'datetime-local',
3224
- value: data.values.checkOut,
3225
- required: true,
3226
- },
3227
- {
3228
- name: 'adults',
3229
- label: _('hospitality_core.reservation.field.adults'),
3230
- type: 'number',
3231
- value: data.values.adults,
3232
- required: true,
3233
- step: '1',
3234
- },
3235
- {
3236
- name: 'children',
3237
- label: _('hospitality_core.reservation.field.children'),
3238
- type: 'number',
3239
- value: data.values.children,
3240
- required: true,
3241
- step: '1',
3242
- },
3243
- {
3244
- name: 'rate',
3245
- label: _('hospitality_core.reservation.field.rate'),
3246
- type: 'decimal',
3247
- value: data.values.rate,
3248
- help: _('hospitality_core.reservation.field.rateHint'),
3249
- },
3250
- ] })) : (emptyState(data.roomTypes.length
3251
- ? _('hospitality_core.reservation.empty.partners')
3252
- : _('hospitality_core.reservation.empty.roomTypes'), data.roomTypes.length
3253
- ? _('hospitality_core.reservation.empty.partnersHint')
3254
- : _('hospitality_core.reservation.empty.roomTypesHint'))) }),
3255
- ...(quote
3256
- ? [
3257
- _jsx(Section, { title: _('hospitality_core.reservation.section.quote'), description: _('hospitality_core.reservation.section.quoteHint'), body: stack([
3258
- cardGrid({
3259
- items: [
3260
- {
3261
- id: 'rate',
3262
- label: _('hospitality_core.reservation.quote.rate'),
3263
- value: formatMoney(_, quote.rate ?? 0),
3264
- },
3265
- {
3266
- id: 'quantity',
3267
- label: _('hospitality_core.reservation.quote.quantity'),
3268
- value: String(quote.quantity ?? 0),
3269
- },
3270
- {
3271
- id: 'availability',
3272
- label: _('hospitality_core.reservation.quote.availability'),
3273
- value: String(quote.minimumAvailable ?? 0),
3274
- },
3275
- {
3276
- id: 'total',
3277
- label: _('hospitality_core.reservation.quote.total'),
3278
- value: formatMoney(_, quote.amountTotal ?? 0),
3279
- },
3280
- ],
3281
- id: (item) => item.id,
3282
- card: (item) => metric({ label: item.label, value: item.value, tone: item.id }),
3283
- }),
3284
- _jsx(RecordForm, { action: "/admin/hospitality/reservations", method: "post", submit: _('hospitality_core.reservation.action.create'), submitVariant: "primary", hidden: {
3285
- operation: 'create',
3286
- lang: locale,
3287
- property: data.values.propertyId,
3288
- id: data.values.id,
3289
- code: data.values.code,
3290
- partnerId: data.values.partnerId,
3291
- roomTypeId: data.values.roomTypeId,
3292
- bookingType: data.values.bookingType,
3293
- checkIn: data.values.checkIn,
3294
- checkOut: data.values.checkOut,
3295
- adults: String(data.values.adults),
3296
- children: String(data.values.children),
3297
- rate: String(quote.rate ?? ''),
3298
- }, fields: [] }),
3299
- ]) }),
3300
- ]
3301
- : []),
3302
- _jsx(Section, { title: _('hospitality_core.reservation.section.list'), description: _('hospitality_core.reservation.section.listHint'), body: data.rows.length
3303
- ? dataTable(_, {
3304
- columns: reservationColumns(_, locale, timezone),
3305
- rows: data.rows,
3306
- id: (row) => row.id,
3307
- })
3308
- : emptyState(_('hospitality_core.screen.reservations.empty'), _('hospitality_core.screen.reservations.emptyHint')) }),
3309
- ]) }));
3310
- };
3311
- const reservationDetailFeedback = (_, status, errors = []) => {
3312
- if (status === 'checked-in')
3313
- return notice({
3314
- title: _('hospitality_core.reservation.feedback.checkedIn'),
3315
- message: _('hospitality_core.reservation.feedback.checkedInHint'),
3316
- tone: 'positive',
3317
- });
3318
- if (status === 'checked-out')
3319
- return notice({
3320
- title: _('hospitality_core.reservation.feedback.checkedOut'),
3321
- message: _('hospitality_core.reservation.feedback.checkedOutHint'),
3322
- tone: 'positive',
3323
- });
3324
- if (status === 'checked-out-early')
3325
- return notice({
3326
- title: _('hospitality_core.reservation.feedback.checkedOutEarly'),
3327
- message: _('hospitality_core.reservation.feedback.checkedOutEarlyHint'),
3328
- tone: 'warning',
3329
- });
3330
- if (status === 'cancelled')
3331
- return notice({
3332
- title: _('hospitality_core.reservation.feedback.cancelled'),
3333
- message: _('hospitality_core.reservation.feedback.cancelledHint'),
3334
- tone: 'warning',
3335
- });
3336
- if (status === 'amended')
3337
- return notice({
3338
- title: _('hospitality_core.reservation.feedback.amended'),
3339
- message: _('hospitality_core.reservation.feedback.amendedHint'),
3340
- tone: 'positive',
3341
- });
3342
- if (status === 'departure-adjusted')
3343
- return notice({
3344
- title: _('hospitality_core.reservation.feedback.departureAdjusted'),
3345
- message: _('hospitality_core.reservation.feedback.departureAdjustedHint'),
3346
- tone: 'positive',
3347
- });
3348
- if (status === 'no-show')
3349
- return notice({
3350
- title: _('hospitality_core.reservation.feedback.noShow'),
3351
- message: _('hospitality_core.reservation.feedback.noShowHint'),
3352
- tone: 'warning',
3353
- });
3354
- if (errors.length)
3355
- return notice({
3356
- title: _('hospitality_core.feedback.invalid'),
3357
- message: errors.join(' '),
3358
- tone: 'danger',
3359
- });
3360
- return null;
3361
- };
3362
- export const reservationDetailScreen = (_, reservation, rooms, roomTypes, partners, amendment, departure, locale, timezone, frame, status, errors = []) => {
3363
- const guest = guestName(reservation);
3364
- const room = reservation.stay?.currentRoom;
3365
- const backHref = `/admin/hospitality/reservations?property=${encodeURIComponent(reservation.propertyId)}&lang=${encodeURIComponent(locale)}`;
3366
- const action = `/admin/hospitality/reservations/${encodeURIComponent(reservation.id)}?lang=${encodeURIComponent(locale)}`;
3367
- const actions = [];
3368
- if (reservation.state === 'confirmed' && reservation.provider === 'direct') {
3369
- actions.push(_jsx(Section, { title: _('hospitality_core.reservation.action.amend'), description: _('hospitality_core.reservation.action.amendHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.reservation.action.amend'), submitVariant: "secondary", hidden: { operation: 'amend', lang: locale }, fields: [
3370
- {
3371
- name: 'partnerId',
3372
- label: _('hospitality_core.reservation.field.guest'),
3373
- type: 'select',
3374
- value: amendment.partnerId,
3375
- options: choices(partners),
3376
- required: true,
3377
- },
3378
- {
3379
- name: 'roomTypeId',
3380
- label: _('hospitality_core.reservation.field.roomType'),
3381
- type: 'select',
3382
- value: amendment.roomTypeId,
3383
- options: choices(roomTypes),
3384
- required: true,
3385
- },
3386
- {
3387
- name: 'checkIn',
3388
- label: _('hospitality_core.col.checkIn'),
3389
- type: 'datetime-local',
3390
- value: amendment.checkIn,
3391
- required: true,
3392
- },
3393
- {
3394
- name: 'checkOut',
3395
- label: _('hospitality_core.col.checkOut'),
3396
- type: 'datetime-local',
3397
- value: amendment.checkOut,
3398
- required: true,
3399
- },
3400
- {
3401
- name: 'adults',
3402
- label: _('hospitality_core.reservation.field.adults'),
3403
- type: 'number',
3404
- value: amendment.adults,
3405
- step: '1',
3406
- required: true,
3407
- },
3408
- {
3409
- name: 'children',
3410
- label: _('hospitality_core.reservation.field.children'),
3411
- type: 'number',
3412
- value: amendment.children,
3413
- step: '1',
3414
- required: true,
3415
- },
3416
- {
3417
- name: 'rate',
3418
- label: _('hospitality_core.reservation.field.rate'),
3419
- type: 'decimal',
3420
- value: amendment.rate,
3421
- required: true,
3422
- },
3423
- ] }) }));
3424
- }
3425
- if (reservation.state === 'confirmed' && reservation.stayId) {
3426
- actions.push(_jsx(Section, { title: _('hospitality_core.reservation.action.checkIn'), description: _('hospitality_core.reservation.action.checkInHint'), body: rooms.length ? (_jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.reservation.action.checkIn'), submitVariant: "primary", hidden: { operation: 'check-in', lang: locale }, fields: [
3427
- {
3428
- name: 'roomId',
3429
- label: _('hospitality_core.reservation.field.room'),
3430
- type: 'select',
3431
- required: true,
3432
- options: rooms.map((candidate) => ({
3433
- value: candidate.id,
3434
- label: `${candidate.code} · ${candidate.name}`,
3435
- })),
3436
- },
3437
- ] })) : (emptyState(_('hospitality_core.reservation.empty.availableRooms'), _('hospitality_core.reservation.empty.availableRoomsHint'))) }));
3438
- }
3439
- if (reservation.state === 'checked_in' && reservation.stayId) {
3440
- actions.push(_jsx(Section, { title: _('hospitality_core.reservation.action.adjustDeparture'), description: _('hospitality_core.reservation.action.adjustDepartureHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.reservation.action.adjustDeparture'), submitVariant: "secondary", hidden: { operation: 'adjust-departure', lang: locale }, fields: [
3441
- {
3442
- name: 'checkOut',
3443
- label: _('hospitality_core.col.checkOut'),
3444
- type: 'datetime-local',
3445
- value: departure,
3446
- required: true,
3447
- },
3448
- ] }) }), _jsx(Section, { title: _('hospitality_core.reservation.action.checkOut'), description: _('hospitality_core.reservation.action.checkOutHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.reservation.action.checkOut'), submitVariant: "primary", hidden: { operation: 'check-out', lang: locale }, fields: [] }) }));
3449
- }
3450
- if (reservation.state === 'draft' || reservation.state === 'confirmed') {
3451
- if (reservation.state === 'confirmed')
3452
- actions.push(_jsx(Section, { title: _('hospitality_core.reservation.action.noShow'), description: _('hospitality_core.reservation.action.noShowHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.reservation.action.noShow'), submitVariant: "destructive", hidden: { operation: 'no-show', lang: locale }, fields: [
3453
- {
3454
- name: 'reason',
3455
- label: _('hospitality_core.reservation.field.noShowReason'),
3456
- type: 'textarea',
3457
- help: _('hospitality_core.reservation.field.noShowReasonHint'),
3458
- required: true,
3459
- },
3460
- ] }) }));
3461
- actions.push(_jsx(Section, { title: _('hospitality_core.reservation.action.cancel'), description: _('hospitality_core.reservation.action.cancelHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.reservation.action.cancel'), submitVariant: "destructive", hidden: { operation: 'cancel', lang: locale }, fields: [
3462
- {
3463
- name: 'reason',
3464
- label: _('hospitality_core.reservation.field.cancelReason'),
3465
- type: 'textarea',
3466
- help: _('hospitality_core.reservation.field.cancelReasonHint'),
3467
- },
3468
- ] }) }));
3469
- }
3470
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.reservation.detail.title', { code: reservation.code }), frame: frame, body: stack([
3471
- reservationDetailFeedback(_, status, errors),
3472
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.reservation.detail.kicker'), title: reservation.code, subtitle: guest, imageFallback: icon('hotel'), badges: [
3473
- badge(_(`hospitality_core.reservationState.${reservation.state}`), workflowTone(reservation.state), reservation.state),
3474
- badge(providerName(_, reservation.provider), 'neutral'),
3475
- ], summary: [
3476
- {
3477
- id: 'room-type',
3478
- label: _('hospitality_core.col.roomType'),
3479
- value: reservation.roomType?.name ?? reservation.roomTypeId,
3480
- },
3481
- {
3482
- id: 'guests',
3483
- label: _('hospitality_core.col.guests'),
3484
- value: reservation.adults + reservation.children,
3485
- },
3486
- {
3487
- id: 'total',
3488
- label: _('hospitality_core.col.amount'),
3489
- value: formatMoney(_, reservation.amountTotal),
3490
- },
3491
- ], navigation: linkButton({
3492
- label: _('hospitality_core.reservation.action.back'),
3493
- href: backHref,
3494
- variant: 'tertiary',
3495
- icon: 'chevron-left',
3496
- }), body: stack([
3497
- _jsx(Section, { title: _('hospitality_core.reservation.detail.stay'), description: _('hospitality_core.reservation.detail.stayHint'), body: definitionList({
3498
- title: reservation.code,
3499
- items: [
3500
- {
3501
- key: 'guest',
3502
- term: _('hospitality_core.reservation.field.guest'),
3503
- value: guest,
3504
- },
3505
- {
3506
- key: 'room',
3507
- term: _('hospitality_core.reservation.field.room'),
3508
- value: room?.name ?? room?.code ?? _('hospitality_core.reservation.value.unassigned'),
3509
- },
3510
- {
3511
- key: 'check-in',
3512
- term: _('hospitality_core.col.checkIn'),
3513
- value: dateTime(reservation.checkIn, locale, timezone),
3514
- },
3515
- {
3516
- key: 'check-out',
3517
- term: _('hospitality_core.col.checkOut'),
3518
- value: dateTime(reservation.checkOut, locale, timezone),
3519
- },
3520
- {
3521
- key: 'booking-type',
3522
- term: _('hospitality_core.reservation.field.bookingType'),
3523
- value: _(`hospitality_core.bookingType.${reservation.bookingType}`),
3524
- },
3525
- {
3526
- key: 'billing',
3527
- term: _('hospitality_core.reservation.field.billingMode'),
3528
- value: _(`hospitality_core.billing.${reservation.billingMode}`),
3529
- },
3530
- {
3531
- key: 'rate',
3532
- term: _('hospitality_core.reservation.field.rate'),
3533
- value: formatMoney(_, reservation.rate),
3534
- },
3535
- {
3536
- key: 'quantity',
3537
- term: _('hospitality_core.reservation.quote.quantity'),
3538
- value: String(reservation.quantity),
3539
- },
3540
- {
3541
- key: 'folio',
3542
- term: _('hospitality_core.reservation.field.folio'),
3543
- value: reservation.folio?.code ?? reservation.folioId,
3544
- },
3545
- ...(reservation.cancelReason
3546
- ? [
3547
- {
3548
- key: 'cancel-reason',
3549
- term: _('hospitality_core.reservation.field.cancelReason'),
3550
- value: reservation.cancelReason,
3551
- },
3552
- ]
3553
- : []),
3554
- ],
3555
- }) }),
3556
- ...actions,
3557
- ]) }),
3558
- ]) }));
3559
- };
3560
- const stayAssignmentColumns = (_, locale, timezone) => [
3561
- {
3562
- key: 'room',
3563
- label: _('hospitality_core.stay.field.room'),
3564
- cell: (row) => row.roomName ?? code(row.roomId),
3565
- priority: 'primary',
3566
- },
3567
- {
3568
- key: 'start',
3569
- label: _('hospitality_core.stay.assignment.start'),
3570
- cell: (row) => dateTime(row.startAt, locale, timezone),
3571
- kind: 'date',
3572
- },
3573
- {
3574
- key: 'end',
3575
- label: _('hospitality_core.stay.assignment.end'),
3576
- cell: (row) => (row.endAt ? dateTime(row.endAt, locale, timezone) : '—'),
3577
- kind: 'date',
3578
- },
3579
- {
3580
- key: 'reason',
3581
- label: _('hospitality_core.stay.field.moveReason'),
3582
- cell: (row) => row.reason || '—',
3583
- },
3584
- {
3585
- key: 'state',
3586
- label: _('hospitality_core.col.status'),
3587
- cell: (row) => badge(_(`hospitality_core.assignmentState.${row.state}`), workflowTone(row.state), row.state),
3588
- kind: 'status',
3589
- },
3590
- ];
3591
- const stayGuestColumns = (_) => [
3592
- {
3593
- key: 'guest',
3594
- label: _('hospitality_core.col.guest'),
3595
- cell: (row) => person(row.displayName),
3596
- kind: 'person',
3597
- priority: 'primary',
3598
- },
3599
- {
3600
- key: 'role',
3601
- label: _('hospitality_core.stay.guest.role'),
3602
- cell: (row) => badge(row.primary ? _('hospitality_core.stay.guest.primary') : _('hospitality_core.stay.guest.companion'), row.primary ? 'positive' : 'neutral'),
3603
- kind: 'status',
3604
- },
3605
- ];
3606
- const guestDocumentColumns = (_) => [
3607
- {
3608
- key: 'name',
3609
- label: _('hospitality_core.stay.document.fullName'),
3610
- cell: (row) => person(row.fullName),
3611
- kind: 'person',
3612
- priority: 'primary',
3613
- },
3614
- {
3615
- key: 'type',
3616
- label: _('hospitality_core.stay.document.type'),
3617
- cell: (row) => _(`hospitality_core.document.${row.type}`),
3618
- },
3619
- {
3620
- key: 'number',
3621
- label: _('hospitality_core.stay.document.number'),
3622
- cell: (row) => (row.numberLast4 ? code(`•••• ${row.numberLast4}`) : '—'),
3623
- },
3624
- {
3625
- key: 'nationality',
3626
- label: _('hospitality_core.stay.document.nationality'),
3627
- cell: (row) => row.nationality || '—',
3628
- },
3629
- {
3630
- key: 'readiness',
3631
- label: _('hospitality_core.stay.document.readiness'),
3632
- cell: (row) => badge(row.numberLast4 && row.dateOfBirthPresent
3633
- ? _('hospitality_core.stay.document.ready')
3634
- : _('hospitality_core.stay.document.attention'), row.numberLast4 && row.dateOfBirthPresent ? 'positive' : 'warning'),
3635
- kind: 'status',
3636
- },
3637
- ];
3638
- const stayDetailFeedback = (_, status, errors = []) => {
3639
- if (status === 'guest-added')
3640
- return notice({
3641
- title: _('hospitality_core.stay.feedback.guestAdded'),
3642
- message: _('hospitality_core.stay.feedback.guestAddedHint'),
3643
- tone: 'positive',
3644
- });
3645
- if (status === 'room-moved')
3646
- return notice({
3647
- title: _('hospitality_core.stay.feedback.roomMoved'),
3648
- message: _('hospitality_core.stay.feedback.roomMovedHint'),
3649
- tone: 'positive',
3650
- });
3651
- if (status === 'document-saved')
3652
- return notice({
3653
- title: _('hospitality_core.stay.feedback.documentSaved'),
3654
- message: _('hospitality_core.stay.feedback.documentSavedHint'),
3655
- tone: 'positive',
3656
- });
3657
- if (errors.length)
3658
- return notice({
3659
- title: _('hospitality_core.feedback.invalid'),
3660
- message: errors.join(' '),
3661
- tone: 'danger',
3662
- });
3663
- return null;
3664
- };
3665
- export const stayDetailScreen = (_, stay, rooms, partners, documents, documentId, locale, timezone, frame, status, errors = []) => {
3666
- const guest = guestName(stay);
3667
- const action = `/admin/hospitality/stays/${encodeURIComponent(stay.id)}?lang=${encodeURIComponent(locale)}`;
3668
- const roomNames = new Map(rooms.map((room) => [room.id, `${room.code} · ${room.name}`]));
3669
- const assignments = (stay.assignments ?? []).map((assignment) => ({
3670
- ...assignment,
3671
- roomName: roomNames.get(assignment.roomId) ?? assignment.roomId,
3672
- }));
3673
- const guests = stay.guests ?? [];
3674
- const registeredGuests = guests.filter((registered) => !!registered.partnerId);
3675
- const availableRooms = rooms.filter((room) => room.active && room.status === 'available' && room.id !== stay.currentRoomId);
3676
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.stay.detail.title', { code: stay.code }), frame: frame, body: stack([
3677
- stayDetailFeedback(_, status, errors),
3678
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.stay.detail.kicker'), title: stay.code, subtitle: guest, imageFallback: icon('hotel'), badges: [
3679
- badge(_(`hospitality_core.stayState.${stay.state}`), workflowTone(stay.state), stay.state),
3680
- badge(_(`hospitality_core.bookingType.${stay.bookingType}`), 'neutral'),
3681
- ], summary: [
3682
- {
3683
- id: 'room',
3684
- label: _('hospitality_core.stay.field.room'),
3685
- value: stay.currentRoom?.name ??
3686
- stay.currentRoom?.code ??
3687
- _('hospitality_core.reservation.value.unassigned'),
3688
- },
3689
- {
3690
- id: 'guests',
3691
- label: _('hospitality_core.col.guests'),
3692
- value: guests.length,
3693
- },
3694
- {
3695
- id: 'rate',
3696
- label: _('hospitality_core.reservation.field.rate'),
3697
- value: formatMoney(_, stay.rate),
3698
- },
3699
- ], navigation: linkButton({
3700
- label: _('hospitality_core.stay.action.back'),
3701
- href: `/admin/hospitality/stays?property=${encodeURIComponent(stay.propertyId)}&lang=${encodeURIComponent(locale)}`,
3702
- variant: 'tertiary',
3703
- icon: 'chevron-left',
3704
- }), body: stack([
3705
- _jsx(Section, { title: _('hospitality_core.stay.section.information'), description: _('hospitality_core.stay.section.informationHint'), body: definitionList({
3706
- title: stay.code,
3707
- items: [
3708
- {
3709
- key: 'guest',
3710
- term: _('hospitality_core.reservation.field.guest'),
3711
- value: guest,
3712
- },
3713
- {
3714
- key: 'room-type',
3715
- term: _('hospitality_core.col.roomType'),
3716
- value: stay.roomType?.name ?? stay.roomTypeId,
3717
- },
3718
- {
3719
- key: 'check-in',
3720
- term: _('hospitality_core.col.checkIn'),
3721
- value: dateTime(stay.checkIn, locale, timezone),
3722
- },
3723
- {
3724
- key: 'check-out',
3725
- term: _('hospitality_core.col.checkOut'),
3726
- value: dateTime(stay.checkOut, locale, timezone),
3727
- },
3728
- {
3729
- key: 'billing',
3730
- term: _('hospitality_core.reservation.field.billingMode'),
3731
- value: _(`hospitality_core.billing.${stay.billingMode}`),
3732
- },
3733
- ...(stay.nextBillDate
3734
- ? [
3735
- {
3736
- key: 'next-bill',
3737
- term: _('hospitality_core.stay.field.nextBillDate'),
3738
- value: stay.nextBillDate,
3739
- },
3740
- ]
3741
- : []),
3742
- {
3743
- key: 'folio',
3744
- term: _('hospitality_core.reservation.field.folio'),
3745
- value: stay.folioId,
3746
- },
3747
- ...(stay.reservationId
3748
- ? [
3749
- {
3750
- key: 'reservation',
3751
- term: _('hospitality_core.stay.field.reservation'),
3752
- value: stay.reservation?.code ?? stay.reservationId,
3753
- },
3754
- ]
3755
- : []),
3756
- ],
3757
- }) }),
3758
- _jsx(Section, { title: _('hospitality_core.stay.section.assignments'), description: _('hospitality_core.stay.section.assignmentsHint'), body: stack([
3759
- assignments.length
3760
- ? dataTable(_, {
3761
- columns: stayAssignmentColumns(_, locale, timezone),
3762
- rows: assignments,
3763
- id: (assignment) => assignment.id,
3764
- })
3765
- : emptyState(_('hospitality_core.stay.empty.assignments'), _('hospitality_core.stay.empty.assignmentsHint')),
3766
- stay.state === 'checked_in' ? (availableRooms.length ? (_jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.stay.action.moveRoom'), submitVariant: "secondary", hidden: { operation: 'move-room', lang: locale }, fields: [
3767
- {
3768
- name: 'roomId',
3769
- label: _('hospitality_core.stay.field.newRoom'),
3770
- type: 'select',
3771
- required: true,
3772
- options: availableRooms.map((room) => ({
3773
- value: room.id,
3774
- label: `${room.code} · ${room.name} · ${room.roomType?.name ?? room.roomTypeId}`,
3775
- })),
3776
- },
3777
- {
3778
- name: 'reason',
3779
- label: _('hospitality_core.stay.field.moveReason'),
3780
- type: 'textarea',
3781
- required: true,
3782
- help: _('hospitality_core.stay.field.moveReasonHint'),
3783
- },
3784
- ] })) : (notice({
3785
- title: _('hospitality_core.stay.empty.availableRooms'),
3786
- message: _('hospitality_core.stay.empty.availableRoomsHint'),
3787
- tone: 'warning',
3788
- }))) : null,
3789
- ]) }),
3790
- _jsx(Section, { title: _('hospitality_core.stay.section.guests'), description: _('hospitality_core.stay.section.guestsHint'), body: stack([
3791
- guests.length
3792
- ? dataTable(_, { columns: stayGuestColumns(_), rows: guests, id: (row) => row.id })
3793
- : emptyState(_('hospitality_core.stay.empty.guests'), _('hospitality_core.stay.empty.guestsHint')),
3794
- stay.state === 'draft' || stay.state === 'checked_in' ? (_jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.stay.action.addGuest'), submitVariant: "secondary", hidden: { operation: 'add-guest', lang: locale }, fields: [
3795
- {
3796
- name: 'displayName',
3797
- label: _('hospitality_core.stay.field.guestName'),
3798
- required: true,
3799
- },
3800
- {
3801
- name: 'partnerId',
3802
- label: _('hospitality_core.stay.field.linkedPartner'),
3803
- type: 'select',
3804
- options: [
3805
- { value: '', label: _('hospitality_core.stay.value.noLinkedPartner') },
3806
- ...choices(partners),
3807
- ],
3808
- help: _('hospitality_core.stay.field.linkedPartnerHint'),
3809
- },
3810
- ] })) : null,
3811
- ]) }),
3812
- _jsx(Section, { title: _('hospitality_core.stay.section.documents'), description: _('hospitality_core.stay.section.documentsHint'), body: stack([
3813
- documents.length
3814
- ? dataTable(_, {
3815
- columns: guestDocumentColumns(_),
3816
- rows: documents,
3817
- id: (row) => row.id,
3818
- })
3819
- : emptyState(_('hospitality_core.stay.empty.documents'), _('hospitality_core.stay.empty.documentsHint')),
3820
- stay.state !== 'cancelled' ? (registeredGuests.length ? (_jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.stay.action.saveDocument'), submitVariant: "secondary", hidden: {
3821
- operation: 'save-document',
3822
- documentId,
3823
- lang: locale,
3824
- }, fields: [
3825
- {
3826
- name: 'partnerId',
3827
- label: _('hospitality_core.stay.document.guest'),
3828
- type: 'select',
3829
- required: true,
3830
- options: registeredGuests.map((registered) => ({
3831
- value: registered.partnerId,
3832
- label: registered.displayName,
3833
- })),
3834
- },
3835
- {
3836
- name: 'type',
3837
- label: _('hospitality_core.stay.document.type'),
3838
- type: 'select',
3839
- required: true,
3840
- value: 'cccd',
3841
- options: DOCUMENT_TYPES.map((value) => ({
3842
- value,
3843
- label: _(`hospitality_core.document.${value}`),
3844
- })),
3845
- },
3846
- {
3847
- name: 'number',
3848
- label: _('hospitality_core.stay.document.number'),
3849
- required: true,
3850
- help: _('hospitality_core.stay.document.numberHint'),
3851
- },
3852
- {
3853
- name: 'fullName',
3854
- label: _('hospitality_core.stay.document.fullName'),
3855
- required: true,
3856
- value: registeredGuests[0]?.displayName ?? '',
3857
- },
3858
- {
3859
- name: 'dateOfBirth',
3860
- label: _('hospitality_core.stay.document.dateOfBirth'),
3861
- type: 'date',
3862
- required: true,
3863
- },
3864
- {
3865
- name: 'gender',
3866
- label: _('hospitality_core.stay.document.gender'),
3867
- type: 'select',
3868
- options: [
3869
- { value: '', label: _('hospitality_core.stay.document.genderUnknown') },
3870
- ...GENDERS.map((value) => ({
3871
- value,
3872
- label: _(`hospitality_core.gender.${value}`),
3873
- })),
3874
- ],
3875
- },
3876
- {
3877
- name: 'nationality',
3878
- label: _('hospitality_core.stay.document.nationality'),
3879
- value: 'VN',
3880
- help: _('hospitality_core.stay.document.nationalityHint'),
3881
- },
3882
- {
3883
- name: 'permanentAddress',
3884
- label: _('hospitality_core.stay.document.permanentAddress'),
3885
- type: 'textarea',
3886
- },
3887
- {
3888
- name: 'issueDate',
3889
- label: _('hospitality_core.stay.document.issueDate'),
3890
- type: 'date',
3891
- },
3892
- {
3893
- name: 'issuePlace',
3894
- label: _('hospitality_core.stay.document.issuePlace'),
3895
- },
3896
- ] })) : (notice({
3897
- title: _('hospitality_core.stay.empty.documentGuests'),
3898
- message: _('hospitality_core.stay.empty.documentGuestsHint'),
3899
- tone: 'warning',
3900
- }))) : null,
3901
- ]) }),
3902
- ]) }),
3903
- ]) }));
3904
- };
3905
- export const staysScreen = (_, rows, locale, timezone, frame) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.stays.title'), frame: frame, body: rows.length
3906
- ? dataTable(_, { columns: stayColumns(_, locale, timezone), rows, id: (row) => row.id })
3907
- : emptyState(_('hospitality_core.screen.stays.empty'), _('hospitality_core.screen.stays.emptyHint')) }));
3908
- const folioDetailFeedback = (_, status, errors = []) => {
3909
- if (status === 'charge-posted')
3910
- return notice({
3911
- title: _('hospitality_core.folio.feedback.chargePosted'),
3912
- message: _('hospitality_core.folio.feedback.chargePostedHint'),
3913
- tone: 'positive',
3914
- });
3915
- if (status === 'charge-voided')
3916
- return notice({
3917
- title: _('hospitality_core.folio.feedback.chargeVoided'),
3918
- message: _('hospitality_core.folio.feedback.chargeVoidedHint'),
3919
- tone: 'positive',
3920
- });
3921
- if (errors.length)
3922
- return notice({
3923
- title: _('hospitality_core.feedback.invalid'),
3924
- message: errors.join(' '),
3925
- tone: 'danger',
3926
- });
3927
- return null;
3928
- };
3929
- export const folioDetailScreen = (_, folio, locale, timezone, frame, chargeId, status, errors = []) => {
3930
- const stays = folio.stays ?? [];
3931
- const charges = folio.charges ?? [];
3932
- const activeCharges = charges.filter((charge) => charge.state === 'active');
3933
- const staysById = new Map(stays.map((stay) => [stay.id, stay]));
3934
- const guest = folio.partner?.name ?? folio.partnerId;
3935
- const action = `/admin/hospitality/folios/${encodeURIComponent(folio.id)}?lang=${encodeURIComponent(locale)}`;
3936
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.folio.detail.title', { code: folio.code }), frame: frame, body: stack([
3937
- folioDetailFeedback(_, status, errors),
3938
- notice({
3939
- title: _('hospitality_core.folio.notice.operational'),
3940
- message: _('hospitality_core.folio.notice.operationalHint'),
3941
- tone: 'info',
3942
- }),
3943
- _jsx(RecordWorkspace, { kicker: _('hospitality_core.folio.detail.kicker'), title: folio.code, subtitle: guest, imageFallback: icon('receipt-text'), badges: [
3944
- badge(_(`hospitality_core.folioState.${folio.state}`), workflowTone(folio.state), folio.state),
3945
- ], summary: [
3946
- {
3947
- id: 'amount',
3948
- label: _('hospitality_core.folio.metric.activeTotal'),
3949
- value: formatMoney(_, folio.amountTotal),
3950
- },
3951
- {
3952
- id: 'charges',
3953
- label: _('hospitality_core.folio.metric.activeCharges'),
3954
- value: activeCharges.length,
3955
- },
3956
- {
3957
- id: 'stays',
3958
- label: _('hospitality_core.col.stays'),
3959
- value: stays.length,
3960
- },
3961
- ], navigation: linkButton({
3962
- label: _('hospitality_core.folio.action.back'),
3963
- href: `/admin/hospitality/folios?property=${encodeURIComponent(folio.propertyId)}&lang=${encodeURIComponent(locale)}`,
3964
- variant: 'tertiary',
3965
- icon: 'chevron-left',
3966
- }), body: stack([
3967
- _jsx(Section, { title: _('hospitality_core.folio.section.information'), description: _('hospitality_core.folio.section.informationHint'), body: definitionList({
3968
- title: folio.code,
3969
- items: [
3970
- {
3971
- key: 'guest',
3972
- term: _('hospitality_core.col.guest'),
3973
- value: guest,
3974
- },
3975
- {
3976
- key: 'opened',
3977
- term: _('hospitality_core.folio.field.openedAt'),
3978
- value: dateTime(folio.openedAt, locale, timezone),
3979
- },
3980
- ...(folio.closedAt
3981
- ? [
3982
- {
3983
- key: 'closed',
3984
- term: _('hospitality_core.folio.field.closedAt'),
3985
- value: dateTime(folio.closedAt, locale, timezone),
3986
- },
3987
- ]
3988
- : []),
3989
- ],
3990
- }) }),
3991
- _jsx(Section, { title: _('hospitality_core.folio.section.charges'), description: _('hospitality_core.folio.section.chargesHint'), body: stack([
3992
- charges.length
3993
- ? dataTable(_, {
3994
- columns: folioChargeColumns(_, locale, timezone, staysById),
3995
- rows: charges,
3996
- id: (charge) => charge.id,
3997
- })
3998
- : emptyState(_('hospitality_core.folio.empty.charges'), _('hospitality_core.folio.empty.chargesHint')),
3999
- folio.state === 'open' ? (_jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.folio.action.postCharge'), submitVariant: "secondary", hidden: { operation: 'post-charge', id: chargeId, lang: locale }, fields: [
4000
- {
4001
- name: 'stayId',
4002
- label: _('hospitality_core.folio.charge.stay'),
4003
- type: 'select',
4004
- options: [
4005
- { value: '', label: _('hospitality_core.folio.value.noStay') },
4006
- ...stays.map((stay) => ({ value: stay.id, label: stay.code })),
4007
- ],
4008
- },
4009
- {
4010
- name: 'description',
4011
- label: _('hospitality_core.folio.charge.description'),
4012
- required: true,
4013
- },
4014
- {
4015
- name: 'type',
4016
- label: _('hospitality_core.folio.charge.type'),
4017
- type: 'select',
4018
- required: true,
4019
- value: 'service',
4020
- options: CHARGE_TYPES.map((type) => ({
4021
- value: type,
4022
- label: _(`hospitality_core.charge.${type}`),
4023
- })),
4024
- },
4025
- {
4026
- name: 'quantity',
4027
- label: _('hospitality_core.folio.charge.quantity'),
4028
- type: 'decimal',
4029
- value: '1',
4030
- step: '0.01',
4031
- required: true,
4032
- },
4033
- {
4034
- name: 'unitPrice',
4035
- label: _('hospitality_core.folio.charge.unitPrice'),
4036
- type: 'decimal',
4037
- step: '0.01',
4038
- required: true,
4039
- },
4040
- ] })) : null,
4041
- ]) }),
4042
- activeCharges.length && folio.state === 'open' ? (_jsx(Section, { title: _('hospitality_core.folio.section.correction'), description: _('hospitality_core.folio.section.correctionHint'), body: _jsx(RecordForm, { action: action, method: "post", submit: _('hospitality_core.folio.action.voidCharge'), submitVariant: "destructive", hidden: { operation: 'void-charge', lang: locale }, fields: [
4043
- {
4044
- name: 'chargeId',
4045
- label: _('hospitality_core.folio.field.charge'),
4046
- type: 'select',
4047
- required: true,
4048
- options: activeCharges.map((charge) => ({
4049
- value: charge.id,
4050
- label: `${charge.type === 'room' && charge.description.startsWith('room:')
4051
- ? _('hospitality_core.folio.charge.roomDescription')
4052
- : charge.description} · ${formatMoney(_, charge.amount)}`,
4053
- })),
4054
- },
4055
- {
4056
- name: 'reason',
4057
- label: _('hospitality_core.folio.field.voidReason'),
4058
- type: 'textarea',
4059
- required: true,
4060
- help: _('hospitality_core.folio.field.voidReasonHint'),
4061
- },
4062
- ] }) })) : null,
4063
- _jsx(Section, { title: _('hospitality_core.folio.section.stays'), description: _('hospitality_core.folio.section.staysHint'), body: stays.length
4064
- ? dataTable(_, {
4065
- columns: folioStayColumns(_, locale, timezone),
4066
- rows: stays,
4067
- id: (stay) => stay.id,
4068
- })
4069
- : emptyState(_('hospitality_core.folio.empty.stays'), _('hospitality_core.folio.empty.staysHint')) }),
4070
- ]) }),
4071
- ]) }));
4072
- };
4073
- export const foliosScreen = (_, rows, locale, timezone, frame) => (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.folios.title'), frame: frame, body: rows.length
4074
- ? dataTable(_, { columns: folioColumns(_, locale, timezone), rows, id: (row) => row.id })
4075
- : emptyState(_('hospitality_core.screen.folios.empty'), _('hospitality_core.screen.folios.emptyHint')) }));
4076
- export const tapeChartScreen = (_, chart, locale, frame) => {
4077
- const timezone = chart.timezone || 'UTC';
4078
- const startKey = dateKeyIn(new Date(chart.from), timezone);
4079
- const endKey = dateKeyIn(new Date(chart.to), timezone);
4080
- const dayCount = Math.max(1, Math.round((Date.parse(`${endKey}T00:00:00Z`) - Date.parse(`${startKey}T00:00:00Z`)) / 86_400_000));
4081
- const nowKey = dateKeyIn(new Date(), timezone);
4082
- const boundaries = Array.from({ length: dayCount + 1 }, (_, index) => zonedMidnight(addCalendarDays(startKey, index), timezone).getTime());
4083
- const days = Array.from({ length: dayCount }, (_, index) => {
4084
- const key = addCalendarDays(startKey, index);
4085
- const value = new Date(`${key}T12:00:00Z`);
4086
- return {
4087
- key,
4088
- label: new Intl.DateTimeFormat(locale, { timeZone: 'UTC', weekday: 'short' }).format(value),
4089
- detail: new Intl.DateTimeFormat(locale, {
4090
- timeZone: 'UTC',
4091
- day: '2-digit',
4092
- month: '2-digit',
4093
- }).format(value),
4094
- today: key === nowKey,
4095
- };
4096
- });
4097
- const unassigned = chart.events.filter((event) => !event.roomId);
4098
- const rows = [
4099
- ...chart.rooms.map((room) => ({
4100
- id: room.id,
4101
- label: room.name,
4102
- detail: room.roomType?.name ?? room.code,
4103
- state: room.status,
4104
- })),
4105
- ...unassigned.map((event) => ({
4106
- id: `__unassigned:${event.id}`,
4107
- label: _('hospitality_core.screen.tapeChart.unassigned'),
4108
- detail: event.guest,
4109
- state: 'unassigned',
4110
- })),
4111
- ];
4112
- const events = chart.events.map((event) => {
4113
- const startsAt = new Date(event.start).getTime();
4114
- const endsAt = new Date(event.end).getTime();
4115
- const matchingStart = boundaries.findIndex((_boundary, index) => index < dayCount && startsAt < boundaries[index + 1]);
4116
- const eventStart = matchingStart < 0 ? dayCount - 1 : Math.max(0, matchingStart);
4117
- const boundaryAfterEnd = boundaries.findIndex((boundary, index) => index > 0 && endsAt <= boundary);
4118
- const eventEnd = boundaryAfterEnd < 0 ? dayCount : boundaryAfterEnd;
4119
- return {
4120
- id: event.id,
4121
- rowId: event.roomId ?? `__unassigned:${event.id}`,
4122
- start: Math.min(dayCount - 1, eventStart),
4123
- span: Math.max(1, eventEnd - eventStart),
4124
- label: event.guest,
4125
- detail: providerName(_, event.provider),
4126
- state: event.state,
4127
- tone: workflowTone(event.state),
4128
- };
4129
- });
4130
- return (_jsx(Framed, { translator: _, title: _('hospitality_core.screen.tapeChart.title'), frame: frame, body: scheduleBoard({
4131
- corner: _('hospitality_core.screen.tapeChart.corner'),
4132
- days,
4133
- rows,
4134
- events,
4135
- empty: emptyState(_('hospitality_core.screen.tapeChart.empty'), _('hospitality_core.screen.tapeChart.emptyHint')),
4136
- }) }));
4137
- };
4138
- //# sourceMappingURL=screens.js.map