@ketvietlab/ketsuite 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1802) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/index.d.ts +119 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +118 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/modules/account/functions.d.ts +14 -0
  8. package/dist/modules/account/functions.d.ts.map +1 -0
  9. package/dist/modules/account/functions.js +1038 -0
  10. package/dist/modules/account/functions.js.map +1 -0
  11. package/dist/modules/account/index.d.ts +5 -0
  12. package/dist/modules/account/index.d.ts.map +1 -0
  13. package/dist/modules/account/index.js +31 -0
  14. package/dist/modules/account/index.js.map +1 -0
  15. package/dist/modules/account/models.d.ts +3 -0
  16. package/dist/modules/account/models.d.ts.map +1 -0
  17. package/dist/modules/account/models.js +151 -0
  18. package/dist/modules/account/models.js.map +1 -0
  19. package/dist/modules/account/relations.d.ts +3 -0
  20. package/dist/modules/account/relations.d.ts.map +1 -0
  21. package/dist/modules/account/relations.js +35 -0
  22. package/dist/modules/account/relations.js.map +1 -0
  23. package/dist/modules/account/setup.d.ts +4 -0
  24. package/dist/modules/account/setup.d.ts.map +1 -0
  25. package/dist/modules/account/setup.js +179 -0
  26. package/dist/modules/account/setup.js.map +1 -0
  27. package/dist/modules/account/tt99.d.ts +30 -0
  28. package/dist/modules/account/tt99.d.ts.map +1 -0
  29. package/dist/modules/account/tt99.js +1661 -0
  30. package/dist/modules/account/tt99.js.map +1 -0
  31. package/dist/modules/account_activity_backend/index.d.ts +5 -0
  32. package/dist/modules/account_activity_backend/index.d.ts.map +1 -0
  33. package/dist/modules/account_activity_backend/index.js +27 -0
  34. package/dist/modules/account_activity_backend/index.js.map +1 -0
  35. package/dist/modules/account_backend/accounting-overview-screen.d.ts +18 -0
  36. package/dist/modules/account_backend/accounting-overview-screen.d.ts.map +1 -0
  37. package/dist/modules/account_backend/accounting-overview-screen.js +104 -0
  38. package/dist/modules/account_backend/accounting-overview-screen.js.map +1 -0
  39. package/dist/modules/account_backend/accounts-screen.d.ts +13 -0
  40. package/dist/modules/account_backend/accounts-screen.d.ts.map +1 -0
  41. package/dist/modules/account_backend/accounts-screen.js +49 -0
  42. package/dist/modules/account_backend/accounts-screen.js.map +1 -0
  43. package/dist/modules/account_backend/customer-invoices-screen.d.ts +14 -0
  44. package/dist/modules/account_backend/customer-invoices-screen.d.ts.map +1 -0
  45. package/dist/modules/account_backend/customer-invoices-screen.js +63 -0
  46. package/dist/modules/account_backend/customer-invoices-screen.js.map +1 -0
  47. package/dist/modules/account_backend/general-ledger-screen.d.ts +13 -0
  48. package/dist/modules/account_backend/general-ledger-screen.d.ts.map +1 -0
  49. package/dist/modules/account_backend/general-ledger-screen.js +56 -0
  50. package/dist/modules/account_backend/general-ledger-screen.js.map +1 -0
  51. package/dist/modules/account_backend/index.d.ts +3 -0
  52. package/dist/modules/account_backend/index.d.ts.map +1 -0
  53. package/dist/modules/account_backend/index.js +1516 -0
  54. package/dist/modules/account_backend/index.js.map +1 -0
  55. package/dist/modules/account_backend/journal-entries-screen.d.ts +14 -0
  56. package/dist/modules/account_backend/journal-entries-screen.d.ts.map +1 -0
  57. package/dist/modules/account_backend/journal-entries-screen.js +45 -0
  58. package/dist/modules/account_backend/journal-entries-screen.js.map +1 -0
  59. package/dist/modules/account_backend/journals-screen.d.ts +14 -0
  60. package/dist/modules/account_backend/journals-screen.d.ts.map +1 -0
  61. package/dist/modules/account_backend/journals-screen.js +53 -0
  62. package/dist/modules/account_backend/journals-screen.js.map +1 -0
  63. package/dist/modules/account_backend/move-detail-screen.d.ts +10 -0
  64. package/dist/modules/account_backend/move-detail-screen.d.ts.map +1 -0
  65. package/dist/modules/account_backend/move-detail-screen.js +100 -0
  66. package/dist/modules/account_backend/move-detail-screen.js.map +1 -0
  67. package/dist/modules/account_backend/partner-ledger-screen.d.ts +14 -0
  68. package/dist/modules/account_backend/partner-ledger-screen.d.ts.map +1 -0
  69. package/dist/modules/account_backend/partner-ledger-screen.js +69 -0
  70. package/dist/modules/account_backend/partner-ledger-screen.js.map +1 -0
  71. package/dist/modules/account_backend/payment-terms-screen.d.ts +14 -0
  72. package/dist/modules/account_backend/payment-terms-screen.d.ts.map +1 -0
  73. package/dist/modules/account_backend/payment-terms-screen.js +40 -0
  74. package/dist/modules/account_backend/payment-terms-screen.js.map +1 -0
  75. package/dist/modules/account_backend/payments-screen.d.ts +14 -0
  76. package/dist/modules/account_backend/payments-screen.d.ts.map +1 -0
  77. package/dist/modules/account_backend/payments-screen.js +54 -0
  78. package/dist/modules/account_backend/payments-screen.js.map +1 -0
  79. package/dist/modules/account_backend/screens.d.ts +7 -0
  80. package/dist/modules/account_backend/screens.d.ts.map +1 -0
  81. package/dist/modules/account_backend/screens.js +7 -0
  82. package/dist/modules/account_backend/screens.js.map +1 -0
  83. package/dist/modules/account_backend/taxes-screen.d.ts +15 -0
  84. package/dist/modules/account_backend/taxes-screen.d.ts.map +1 -0
  85. package/dist/modules/account_backend/taxes-screen.js +73 -0
  86. package/dist/modules/account_backend/taxes-screen.js.map +1 -0
  87. package/dist/modules/account_backend/trial-balance-screen.d.ts +13 -0
  88. package/dist/modules/account_backend/trial-balance-screen.d.ts.map +1 -0
  89. package/dist/modules/account_backend/trial-balance-screen.js +62 -0
  90. package/dist/modules/account_backend/trial-balance-screen.js.map +1 -0
  91. package/dist/modules/account_backend/vendor-bills-screen.d.ts +14 -0
  92. package/dist/modules/account_backend/vendor-bills-screen.d.ts.map +1 -0
  93. package/dist/modules/account_backend/vendor-bills-screen.js +59 -0
  94. package/dist/modules/account_backend/vendor-bills-screen.js.map +1 -0
  95. package/dist/modules/account_mail_backend/index.d.ts +5 -0
  96. package/dist/modules/account_mail_backend/index.d.ts.map +1 -0
  97. package/dist/modules/account_mail_backend/index.js +28 -0
  98. package/dist/modules/account_mail_backend/index.js.map +1 -0
  99. package/dist/modules/account_partner/functions.d.ts +3 -0
  100. package/dist/modules/account_partner/functions.d.ts.map +1 -0
  101. package/dist/modules/account_partner/functions.js +85 -0
  102. package/dist/modules/account_partner/functions.js.map +1 -0
  103. package/dist/modules/account_partner/index.d.ts +3 -0
  104. package/dist/modules/account_partner/index.d.ts.map +1 -0
  105. package/dist/modules/account_partner/index.js +48 -0
  106. package/dist/modules/account_partner/index.js.map +1 -0
  107. package/dist/modules/account_partner_backend/index.d.ts +4 -0
  108. package/dist/modules/account_partner_backend/index.d.ts.map +1 -0
  109. package/dist/modules/account_partner_backend/index.js +49 -0
  110. package/dist/modules/account_partner_backend/index.js.map +1 -0
  111. package/dist/modules/account_partner_backend/routes.d.ts +3 -0
  112. package/dist/modules/account_partner_backend/routes.d.ts.map +1 -0
  113. package/dist/modules/account_partner_backend/routes.js +69 -0
  114. package/dist/modules/account_partner_backend/routes.js.map +1 -0
  115. package/dist/modules/account_partner_backend/screens.d.ts +16 -0
  116. package/dist/modules/account_partner_backend/screens.d.ts.map +1 -0
  117. package/dist/modules/account_partner_backend/screens.js +26 -0
  118. package/dist/modules/account_partner_backend/screens.js.map +1 -0
  119. package/dist/modules/activity/functions.d.ts +3 -0
  120. package/dist/modules/activity/functions.d.ts.map +1 -0
  121. package/dist/modules/activity/functions.js +250 -0
  122. package/dist/modules/activity/functions.js.map +1 -0
  123. package/dist/modules/activity/index.d.ts +9 -0
  124. package/dist/modules/activity/index.d.ts.map +1 -0
  125. package/dist/modules/activity/index.js +33 -0
  126. package/dist/modules/activity/index.js.map +1 -0
  127. package/dist/modules/activity/models.d.ts +3 -0
  128. package/dist/modules/activity/models.d.ts.map +1 -0
  129. package/dist/modules/activity/models.js +81 -0
  130. package/dist/modules/activity/models.js.map +1 -0
  131. package/dist/modules/activity/operations.d.ts +39 -0
  132. package/dist/modules/activity/operations.d.ts.map +1 -0
  133. package/dist/modules/activity/operations.js +226 -0
  134. package/dist/modules/activity/operations.js.map +1 -0
  135. package/dist/modules/activity/relations.d.ts +3 -0
  136. package/dist/modules/activity/relations.d.ts.map +1 -0
  137. package/dist/modules/activity/relations.js +24 -0
  138. package/dist/modules/activity/relations.js.map +1 -0
  139. package/dist/modules/activity/target.d.ts +4 -0
  140. package/dist/modules/activity/target.d.ts.map +1 -0
  141. package/dist/modules/activity/target.js +149 -0
  142. package/dist/modules/activity/target.js.map +1 -0
  143. package/dist/modules/activity/types.d.ts +9 -0
  144. package/dist/modules/activity/types.d.ts.map +1 -0
  145. package/dist/modules/activity/types.js +5 -0
  146. package/dist/modules/activity/types.js.map +1 -0
  147. package/dist/modules/activity_backend/index.d.ts +5 -0
  148. package/dist/modules/activity_backend/index.d.ts.map +1 -0
  149. package/dist/modules/activity_backend/index.js +80 -0
  150. package/dist/modules/activity_backend/index.js.map +1 -0
  151. package/dist/modules/activity_backend/islands.d.ts +3 -0
  152. package/dist/modules/activity_backend/islands.d.ts.map +1 -0
  153. package/dist/modules/activity_backend/islands.js +20 -0
  154. package/dist/modules/activity_backend/islands.js.map +1 -0
  155. package/dist/modules/activity_backend/routes.d.ts +5 -0
  156. package/dist/modules/activity_backend/routes.d.ts.map +1 -0
  157. package/dist/modules/activity_backend/routes.js +53 -0
  158. package/dist/modules/activity_backend/routes.js.map +1 -0
  159. package/dist/modules/activity_backend/screens.d.ts +5 -0
  160. package/dist/modules/activity_backend/screens.d.ts.map +1 -0
  161. package/dist/modules/activity_backend/screens.js +52 -0
  162. package/dist/modules/activity_backend/screens.js.map +1 -0
  163. package/dist/modules/address/data/VN/NOTICE.md +15 -0
  164. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0001.json +8002 -0
  165. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0002.json +8002 -0
  166. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0003.json +8002 -0
  167. package/dist/modules/address/data/VN/catalogs/2025-07-01/divisions/0004.json +2842 -0
  168. package/dist/modules/address/data/VN/catalogs/2025-07-01/manifest.json +77 -0
  169. package/dist/modules/address/data/VN/catalogs/2025-07-01/policy.json +49 -0
  170. package/dist/modules/address/data/countries.json +11 -0
  171. package/dist/modules/address/data/index.json +14 -0
  172. package/dist/modules/address/format.d.ts +37 -0
  173. package/dist/modules/address/format.d.ts.map +1 -0
  174. package/dist/modules/address/format.js +146 -0
  175. package/dist/modules/address/format.js.map +1 -0
  176. package/dist/modules/address/functions.d.ts +3 -0
  177. package/dist/modules/address/functions.d.ts.map +1 -0
  178. package/dist/modules/address/functions.js +320 -0
  179. package/dist/modules/address/functions.js.map +1 -0
  180. package/dist/modules/address/index.d.ts +6 -0
  181. package/dist/modules/address/index.d.ts.map +1 -0
  182. package/dist/modules/address/index.js +20 -0
  183. package/dist/modules/address/index.js.map +1 -0
  184. package/dist/modules/address/loader.d.ts +74 -0
  185. package/dist/modules/address/loader.d.ts.map +1 -0
  186. package/dist/modules/address/loader.js +144 -0
  187. package/dist/modules/address/loader.js.map +1 -0
  188. package/dist/modules/address/messages.d.ts +51 -0
  189. package/dist/modules/address/messages.d.ts.map +1 -0
  190. package/dist/modules/address/messages.js +51 -0
  191. package/dist/modules/address/messages.js.map +1 -0
  192. package/dist/modules/address/models.d.ts +8 -0
  193. package/dist/modules/address/models.d.ts.map +1 -0
  194. package/dist/modules/address/models.js +98 -0
  195. package/dist/modules/address/models.js.map +1 -0
  196. package/dist/modules/address/relations.d.ts +3 -0
  197. package/dist/modules/address/relations.d.ts.map +1 -0
  198. package/dist/modules/address/relations.js +22 -0
  199. package/dist/modules/address/relations.js.map +1 -0
  200. package/dist/modules/address_backend/index.d.ts +4 -0
  201. package/dist/modules/address_backend/index.d.ts.map +1 -0
  202. package/dist/modules/address_backend/index.js +90 -0
  203. package/dist/modules/address_backend/index.js.map +1 -0
  204. package/dist/modules/address_backend/routes.d.ts +3 -0
  205. package/dist/modules/address_backend/routes.d.ts.map +1 -0
  206. package/dist/modules/address_backend/routes.js +87 -0
  207. package/dist/modules/address_backend/routes.js.map +1 -0
  208. package/dist/modules/address_backend/screens.d.ts +31 -0
  209. package/dist/modules/address_backend/screens.d.ts.map +1 -0
  210. package/dist/modules/address_backend/screens.js +147 -0
  211. package/dist/modules/address_backend/screens.js.map +1 -0
  212. package/dist/modules/attendance/functions.d.ts +3 -0
  213. package/dist/modules/attendance/functions.d.ts.map +1 -0
  214. package/dist/modules/attendance/functions.js +750 -0
  215. package/dist/modules/attendance/functions.js.map +1 -0
  216. package/dist/modules/attendance/index.d.ts +5 -0
  217. package/dist/modules/attendance/index.d.ts.map +1 -0
  218. package/dist/modules/attendance/index.js +20 -0
  219. package/dist/modules/attendance/index.js.map +1 -0
  220. package/dist/modules/attendance/messages.d.ts +41 -0
  221. package/dist/modules/attendance/messages.d.ts.map +1 -0
  222. package/dist/modules/attendance/messages.js +41 -0
  223. package/dist/modules/attendance/messages.js.map +1 -0
  224. package/dist/modules/attendance/models.d.ts +3 -0
  225. package/dist/modules/attendance/models.d.ts.map +1 -0
  226. package/dist/modules/attendance/models.js +158 -0
  227. package/dist/modules/attendance/models.js.map +1 -0
  228. package/dist/modules/attendance/relations.d.ts +3 -0
  229. package/dist/modules/attendance/relations.d.ts.map +1 -0
  230. package/dist/modules/attendance/relations.js +12 -0
  231. package/dist/modules/attendance/relations.js.map +1 -0
  232. package/dist/modules/attendance/types.d.ts +9 -0
  233. package/dist/modules/attendance/types.d.ts.map +1 -0
  234. package/dist/modules/attendance/types.js +5 -0
  235. package/dist/modules/attendance/types.js.map +1 -0
  236. package/dist/modules/attendance_backend/index.d.ts +4 -0
  237. package/dist/modules/attendance_backend/index.d.ts.map +1 -0
  238. package/dist/modules/attendance_backend/index.js +182 -0
  239. package/dist/modules/attendance_backend/index.js.map +1 -0
  240. package/dist/modules/attendance_backend/qr.d.ts +2 -0
  241. package/dist/modules/attendance_backend/qr.d.ts.map +1 -0
  242. package/dist/modules/attendance_backend/qr.js +120 -0
  243. package/dist/modules/attendance_backend/qr.js.map +1 -0
  244. package/dist/modules/attendance_backend/routes.d.ts +3 -0
  245. package/dist/modules/attendance_backend/routes.d.ts.map +1 -0
  246. package/dist/modules/attendance_backend/routes.js +131 -0
  247. package/dist/modules/attendance_backend/routes.js.map +1 -0
  248. package/dist/modules/attendance_backend/screens.d.ts +10 -0
  249. package/dist/modules/attendance_backend/screens.d.ts.map +1 -0
  250. package/dist/modules/attendance_backend/screens.js +227 -0
  251. package/dist/modules/attendance_backend/screens.js.map +1 -0
  252. package/dist/modules/backend/catalogue.d.ts +10 -0
  253. package/dist/modules/backend/catalogue.d.ts.map +1 -0
  254. package/dist/modules/backend/catalogue.js +615 -0
  255. package/dist/modules/backend/catalogue.js.map +1 -0
  256. package/dist/modules/backend/design/HANDOFF.md +356 -0
  257. package/dist/modules/backend/design/admin.css +4229 -0
  258. package/dist/modules/backend/design/client/relation-select-view.d.mts +5 -0
  259. package/dist/modules/backend/design/client/relation-select-view.d.mts.map +1 -0
  260. package/dist/modules/backend/design/client/relation-select-view.mjs +335 -0
  261. package/dist/modules/backend/design/client/relation-select-view.mjs.map +1 -0
  262. package/dist/modules/backend/design/client/relation-select.d.mts +5 -0
  263. package/dist/modules/backend/design/client/relation-select.d.mts.map +1 -0
  264. package/dist/modules/backend/design/client/relation-select.mjs +7 -0
  265. package/dist/modules/backend/design/client/relation-select.mjs.map +1 -0
  266. package/dist/modules/backend/design/fixtures/product-back.svg +11 -0
  267. package/dist/modules/backend/design/fixtures/product-front.svg +9 -0
  268. package/dist/modules/backend/design/screenshots/apps-desktop-dark.png +0 -0
  269. package/dist/modules/backend/design/screenshots/list-mobile-dark.png +0 -0
  270. package/dist/modules/backend/design/screenshots/product-list-favorites-desktop-en.png +0 -0
  271. package/dist/modules/backend/design/screenshots/product-list-filter-desktop-en.png +0 -0
  272. package/dist/modules/backend/design/screenshots/product-list-filter-mobile-en.png +0 -0
  273. package/dist/modules/backend/design/screenshots/product-list-grouped-desktop.png +0 -0
  274. package/dist/modules/backend/design/screenshots/product-list-grouped-mobile.png +0 -0
  275. package/dist/modules/backend/design/tokens.css +132 -0
  276. package/dist/modules/backend/forms.d.ts +7 -0
  277. package/dist/modules/backend/forms.d.ts.map +1 -0
  278. package/dist/modules/backend/forms.js +25 -0
  279. package/dist/modules/backend/forms.js.map +1 -0
  280. package/dist/modules/backend/index.d.ts +24 -0
  281. package/dist/modules/backend/index.d.ts.map +1 -0
  282. package/dist/modules/backend/index.js +61 -0
  283. package/dist/modules/backend/index.js.map +1 -0
  284. package/dist/modules/backend/islands.d.ts +3 -0
  285. package/dist/modules/backend/islands.d.ts.map +1 -0
  286. package/dist/modules/backend/islands.js +13 -0
  287. package/dist/modules/backend/islands.js.map +1 -0
  288. package/dist/modules/backend/joints.d.ts +13 -0
  289. package/dist/modules/backend/joints.d.ts.map +1 -0
  290. package/dist/modules/backend/joints.js +33 -0
  291. package/dist/modules/backend/joints.js.map +1 -0
  292. package/dist/modules/backend/menus.d.ts +3 -0
  293. package/dist/modules/backend/menus.d.ts.map +1 -0
  294. package/dist/modules/backend/menus.js +25 -0
  295. package/dist/modules/backend/menus.js.map +1 -0
  296. package/dist/modules/backend/messages.d.ts +11 -0
  297. package/dist/modules/backend/messages.d.ts.map +1 -0
  298. package/dist/modules/backend/messages.js +161 -0
  299. package/dist/modules/backend/messages.js.map +1 -0
  300. package/dist/modules/backend/paging.d.ts +22 -0
  301. package/dist/modules/backend/paging.d.ts.map +1 -0
  302. package/dist/modules/backend/paging.js +56 -0
  303. package/dist/modules/backend/paging.js.map +1 -0
  304. package/dist/modules/backend/relation-select.d.ts +63 -0
  305. package/dist/modules/backend/relation-select.d.ts.map +1 -0
  306. package/dist/modules/backend/relation-select.js +20 -0
  307. package/dist/modules/backend/relation-select.js.map +1 -0
  308. package/dist/modules/backend/routes.d.ts +10 -0
  309. package/dist/modules/backend/routes.d.ts.map +1 -0
  310. package/dist/modules/backend/routes.js +123 -0
  311. package/dist/modules/backend/routes.js.map +1 -0
  312. package/dist/modules/backend/saved-searches.d.ts +4 -0
  313. package/dist/modules/backend/saved-searches.d.ts.map +1 -0
  314. package/dist/modules/backend/saved-searches.js +138 -0
  315. package/dist/modules/backend/saved-searches.js.map +1 -0
  316. package/dist/modules/backend/screens.d.ts +37 -0
  317. package/dist/modules/backend/screens.d.ts.map +1 -0
  318. package/dist/modules/backend/screens.js +107 -0
  319. package/dist/modules/backend/screens.js.map +1 -0
  320. package/dist/modules/calendar/functions.d.ts +3 -0
  321. package/dist/modules/calendar/functions.d.ts.map +1 -0
  322. package/dist/modules/calendar/functions.js +259 -0
  323. package/dist/modules/calendar/functions.js.map +1 -0
  324. package/dist/modules/calendar/index.d.ts +9 -0
  325. package/dist/modules/calendar/index.d.ts.map +1 -0
  326. package/dist/modules/calendar/index.js +36 -0
  327. package/dist/modules/calendar/index.js.map +1 -0
  328. package/dist/modules/calendar/jobs.d.ts +3 -0
  329. package/dist/modules/calendar/jobs.d.ts.map +1 -0
  330. package/dist/modules/calendar/jobs.js +57 -0
  331. package/dist/modules/calendar/jobs.js.map +1 -0
  332. package/dist/modules/calendar/models.d.ts +3 -0
  333. package/dist/modules/calendar/models.d.ts.map +1 -0
  334. package/dist/modules/calendar/models.js +90 -0
  335. package/dist/modules/calendar/models.js.map +1 -0
  336. package/dist/modules/calendar/operations.d.ts +45 -0
  337. package/dist/modules/calendar/operations.d.ts.map +1 -0
  338. package/dist/modules/calendar/operations.js +280 -0
  339. package/dist/modules/calendar/operations.js.map +1 -0
  340. package/dist/modules/calendar/recurrence.d.ts +28 -0
  341. package/dist/modules/calendar/recurrence.d.ts.map +1 -0
  342. package/dist/modules/calendar/recurrence.js +175 -0
  343. package/dist/modules/calendar/recurrence.js.map +1 -0
  344. package/dist/modules/calendar/relations.d.ts +3 -0
  345. package/dist/modules/calendar/relations.d.ts.map +1 -0
  346. package/dist/modules/calendar/relations.js +22 -0
  347. package/dist/modules/calendar/relations.js.map +1 -0
  348. package/dist/modules/calendar/types.d.ts +10 -0
  349. package/dist/modules/calendar/types.d.ts.map +1 -0
  350. package/dist/modules/calendar/types.js +6 -0
  351. package/dist/modules/calendar/types.js.map +1 -0
  352. package/dist/modules/calendar_activity/index.d.ts +6 -0
  353. package/dist/modules/calendar_activity/index.d.ts.map +1 -0
  354. package/dist/modules/calendar_activity/index.js +250 -0
  355. package/dist/modules/calendar_activity/index.js.map +1 -0
  356. package/dist/modules/calendar_backend/index.d.ts +5 -0
  357. package/dist/modules/calendar_backend/index.d.ts.map +1 -0
  358. package/dist/modules/calendar_backend/index.js +47 -0
  359. package/dist/modules/calendar_backend/index.js.map +1 -0
  360. package/dist/modules/calendar_backend/islands.d.ts +3 -0
  361. package/dist/modules/calendar_backend/islands.d.ts.map +1 -0
  362. package/dist/modules/calendar_backend/islands.js +12 -0
  363. package/dist/modules/calendar_backend/islands.js.map +1 -0
  364. package/dist/modules/calendar_backend/routes.d.ts +3 -0
  365. package/dist/modules/calendar_backend/routes.d.ts.map +1 -0
  366. package/dist/modules/calendar_backend/routes.js +43 -0
  367. package/dist/modules/calendar_backend/routes.js.map +1 -0
  368. package/dist/modules/calendar_backend/screens.d.ts +5 -0
  369. package/dist/modules/calendar_backend/screens.d.ts.map +1 -0
  370. package/dist/modules/calendar_backend/screens.js +4 -0
  371. package/dist/modules/calendar_backend/screens.js.map +1 -0
  372. package/dist/modules/calendar_mail_transport/index.d.ts +6 -0
  373. package/dist/modules/calendar_mail_transport/index.d.ts.map +1 -0
  374. package/dist/modules/calendar_mail_transport/index.js +138 -0
  375. package/dist/modules/calendar_mail_transport/index.js.map +1 -0
  376. package/dist/modules/catalog/index.d.ts +3 -0
  377. package/dist/modules/catalog/index.d.ts.map +1 -0
  378. package/dist/modules/catalog/index.js +68 -0
  379. package/dist/modules/catalog/index.js.map +1 -0
  380. package/dist/modules/checkout/index.d.ts +3 -0
  381. package/dist/modules/checkout/index.d.ts.map +1 -0
  382. package/dist/modules/checkout/index.js +50 -0
  383. package/dist/modules/checkout/index.js.map +1 -0
  384. package/dist/modules/company/functions.d.ts +3 -0
  385. package/dist/modules/company/functions.d.ts.map +1 -0
  386. package/dist/modules/company/functions.js +337 -0
  387. package/dist/modules/company/functions.js.map +1 -0
  388. package/dist/modules/company/index.d.ts +3 -0
  389. package/dist/modules/company/index.d.ts.map +1 -0
  390. package/dist/modules/company/index.js +23 -0
  391. package/dist/modules/company/index.js.map +1 -0
  392. package/dist/modules/company/messages.d.ts +63 -0
  393. package/dist/modules/company/messages.d.ts.map +1 -0
  394. package/dist/modules/company/messages.js +63 -0
  395. package/dist/modules/company/messages.js.map +1 -0
  396. package/dist/modules/company/models.d.ts +19 -0
  397. package/dist/modules/company/models.d.ts.map +1 -0
  398. package/dist/modules/company/models.js +61 -0
  399. package/dist/modules/company/models.js.map +1 -0
  400. package/dist/modules/company/relations.d.ts +3 -0
  401. package/dist/modules/company/relations.d.ts.map +1 -0
  402. package/dist/modules/company/relations.js +14 -0
  403. package/dist/modules/company/relations.js.map +1 -0
  404. package/dist/modules/company_backend/index.d.ts +5 -0
  405. package/dist/modules/company_backend/index.d.ts.map +1 -0
  406. package/dist/modules/company_backend/index.js +136 -0
  407. package/dist/modules/company_backend/index.js.map +1 -0
  408. package/dist/modules/company_backend/menus.d.ts +3 -0
  409. package/dist/modules/company_backend/menus.d.ts.map +1 -0
  410. package/dist/modules/company_backend/menus.js +17 -0
  411. package/dist/modules/company_backend/menus.js.map +1 -0
  412. package/dist/modules/company_backend/routes.d.ts +3 -0
  413. package/dist/modules/company_backend/routes.d.ts.map +1 -0
  414. package/dist/modules/company_backend/routes.js +269 -0
  415. package/dist/modules/company_backend/routes.js.map +1 -0
  416. package/dist/modules/company_backend/screens.d.ts +62 -0
  417. package/dist/modules/company_backend/screens.d.ts.map +1 -0
  418. package/dist/modules/company_backend/screens.js +268 -0
  419. package/dist/modules/company_backend/screens.js.map +1 -0
  420. package/dist/modules/crm/functions.d.ts +5 -0
  421. package/dist/modules/crm/functions.d.ts.map +1 -0
  422. package/dist/modules/crm/functions.js +840 -0
  423. package/dist/modules/crm/functions.js.map +1 -0
  424. package/dist/modules/crm/index.d.ts +6 -0
  425. package/dist/modules/crm/index.d.ts.map +1 -0
  426. package/dist/modules/crm/index.js +22 -0
  427. package/dist/modules/crm/index.js.map +1 -0
  428. package/dist/modules/crm/jobs.d.ts +4 -0
  429. package/dist/modules/crm/jobs.d.ts.map +1 -0
  430. package/dist/modules/crm/jobs.js +3 -0
  431. package/dist/modules/crm/jobs.js.map +1 -0
  432. package/dist/modules/crm/messages.d.ts +37 -0
  433. package/dist/modules/crm/messages.d.ts.map +1 -0
  434. package/dist/modules/crm/messages.js +68 -0
  435. package/dist/modules/crm/messages.js.map +1 -0
  436. package/dist/modules/crm/models.d.ts +3 -0
  437. package/dist/modules/crm/models.d.ts.map +1 -0
  438. package/dist/modules/crm/models.js +215 -0
  439. package/dist/modules/crm/models.js.map +1 -0
  440. package/dist/modules/crm/operations.d.ts +121 -0
  441. package/dist/modules/crm/operations.d.ts.map +1 -0
  442. package/dist/modules/crm/operations.js +744 -0
  443. package/dist/modules/crm/operations.js.map +1 -0
  444. package/dist/modules/crm/search.d.ts +67 -0
  445. package/dist/modules/crm/search.d.ts.map +1 -0
  446. package/dist/modules/crm/search.js +89 -0
  447. package/dist/modules/crm/search.js.map +1 -0
  448. package/dist/modules/crm/types.d.ts +10 -0
  449. package/dist/modules/crm/types.d.ts.map +1 -0
  450. package/dist/modules/crm/types.js +6 -0
  451. package/dist/modules/crm/types.js.map +1 -0
  452. package/dist/modules/crm_backend/client/crm-kanban-view.d.mts +8 -0
  453. package/dist/modules/crm_backend/client/crm-kanban-view.d.mts.map +1 -0
  454. package/dist/modules/crm_backend/client/crm-kanban-view.mjs +129 -0
  455. package/dist/modules/crm_backend/client/crm-kanban-view.mjs.map +1 -0
  456. package/dist/modules/crm_backend/client/crm-kanban.d.mts +3 -0
  457. package/dist/modules/crm_backend/client/crm-kanban.d.mts.map +1 -0
  458. package/dist/modules/crm_backend/client/crm-kanban.mjs +7 -0
  459. package/dist/modules/crm_backend/client/crm-kanban.mjs.map +1 -0
  460. package/dist/modules/crm_backend/client/crm.css +69 -0
  461. package/dist/modules/crm_backend/index.d.ts +4 -0
  462. package/dist/modules/crm_backend/index.d.ts.map +1 -0
  463. package/dist/modules/crm_backend/index.js +54 -0
  464. package/dist/modules/crm_backend/index.js.map +1 -0
  465. package/dist/modules/crm_backend/islands.d.ts +9 -0
  466. package/dist/modules/crm_backend/islands.d.ts.map +1 -0
  467. package/dist/modules/crm_backend/islands.js +13 -0
  468. package/dist/modules/crm_backend/islands.js.map +1 -0
  469. package/dist/modules/crm_backend/list-search.d.ts +21 -0
  470. package/dist/modules/crm_backend/list-search.d.ts.map +1 -0
  471. package/dist/modules/crm_backend/list-search.js +220 -0
  472. package/dist/modules/crm_backend/list-search.js.map +1 -0
  473. package/dist/modules/crm_backend/messages.d.ts +183 -0
  474. package/dist/modules/crm_backend/messages.d.ts.map +1 -0
  475. package/dist/modules/crm_backend/messages.js +182 -0
  476. package/dist/modules/crm_backend/messages.js.map +1 -0
  477. package/dist/modules/crm_backend/routes.d.ts +3 -0
  478. package/dist/modules/crm_backend/routes.d.ts.map +1 -0
  479. package/dist/modules/crm_backend/routes.js +520 -0
  480. package/dist/modules/crm_backend/routes.js.map +1 -0
  481. package/dist/modules/crm_backend/screens.d.ts +32 -0
  482. package/dist/modules/crm_backend/screens.d.ts.map +1 -0
  483. package/dist/modules/crm_backend/screens.js +405 -0
  484. package/dist/modules/crm_backend/screens.js.map +1 -0
  485. package/dist/modules/crm_sale/index.d.ts +4 -0
  486. package/dist/modules/crm_sale/index.d.ts.map +1 -0
  487. package/dist/modules/crm_sale/index.js +18 -0
  488. package/dist/modules/crm_sale/index.js.map +1 -0
  489. package/dist/modules/crm_sale/messages.d.ts +10 -0
  490. package/dist/modules/crm_sale/messages.d.ts.map +1 -0
  491. package/dist/modules/crm_sale/messages.js +14 -0
  492. package/dist/modules/crm_sale/messages.js.map +1 -0
  493. package/dist/modules/crm_sale/models.d.ts +3 -0
  494. package/dist/modules/crm_sale/models.d.ts.map +1 -0
  495. package/dist/modules/crm_sale/models.js +16 -0
  496. package/dist/modules/crm_sale/models.js.map +1 -0
  497. package/dist/modules/crm_sale/sale-functions.d.ts +15 -0
  498. package/dist/modules/crm_sale/sale-functions.d.ts.map +1 -0
  499. package/dist/modules/crm_sale/sale-functions.js +139 -0
  500. package/dist/modules/crm_sale/sale-functions.js.map +1 -0
  501. package/dist/modules/crm_website/functions.d.ts +3 -0
  502. package/dist/modules/crm_website/functions.d.ts.map +1 -0
  503. package/dist/modules/crm_website/functions.js +65 -0
  504. package/dist/modules/crm_website/functions.js.map +1 -0
  505. package/dist/modules/crm_website/index.d.ts +3 -0
  506. package/dist/modules/crm_website/index.d.ts.map +1 -0
  507. package/dist/modules/crm_website/index.js +19 -0
  508. package/dist/modules/crm_website/index.js.map +1 -0
  509. package/dist/modules/crm_website/messages.d.ts +20 -0
  510. package/dist/modules/crm_website/messages.d.ts.map +1 -0
  511. package/dist/modules/crm_website/messages.js +34 -0
  512. package/dist/modules/crm_website/messages.js.map +1 -0
  513. package/dist/modules/crm_website/models.d.ts +3 -0
  514. package/dist/modules/crm_website/models.d.ts.map +1 -0
  515. package/dist/modules/crm_website/models.js +15 -0
  516. package/dist/modules/crm_website/models.js.map +1 -0
  517. package/dist/modules/crm_website/routes.d.ts +3 -0
  518. package/dist/modules/crm_website/routes.d.ts.map +1 -0
  519. package/dist/modules/crm_website/routes.js +71 -0
  520. package/dist/modules/crm_website/routes.js.map +1 -0
  521. package/dist/modules/crm_website/screens.d.ts +5 -0
  522. package/dist/modules/crm_website/screens.d.ts.map +1 -0
  523. package/dist/modules/crm_website/screens.js +15 -0
  524. package/dist/modules/crm_website/screens.js.map +1 -0
  525. package/dist/modules/hospitality_core/calendar.d.ts +9 -0
  526. package/dist/modules/hospitality_core/calendar.d.ts.map +1 -0
  527. package/dist/modules/hospitality_core/calendar.js +41 -0
  528. package/dist/modules/hospitality_core/calendar.js.map +1 -0
  529. package/dist/modules/hospitality_core/content.d.ts +13 -0
  530. package/dist/modules/hospitality_core/content.d.ts.map +1 -0
  531. package/dist/modules/hospitality_core/content.js +345 -0
  532. package/dist/modules/hospitality_core/content.js.map +1 -0
  533. package/dist/modules/hospitality_core/functions.d.ts +3 -0
  534. package/dist/modules/hospitality_core/functions.d.ts.map +1 -0
  535. package/dist/modules/hospitality_core/functions.js +1558 -0
  536. package/dist/modules/hospitality_core/functions.js.map +1 -0
  537. package/dist/modules/hospitality_core/housekeeping.d.ts +3 -0
  538. package/dist/modules/hospitality_core/housekeeping.d.ts.map +1 -0
  539. package/dist/modules/hospitality_core/housekeeping.js +352 -0
  540. package/dist/modules/hospitality_core/housekeeping.js.map +1 -0
  541. package/dist/modules/hospitality_core/index.d.ts +5 -0
  542. package/dist/modules/hospitality_core/index.d.ts.map +1 -0
  543. package/dist/modules/hospitality_core/index.js +41 -0
  544. package/dist/modules/hospitality_core/index.js.map +1 -0
  545. package/dist/modules/hospitality_core/inventory.d.ts +40 -0
  546. package/dist/modules/hospitality_core/inventory.d.ts.map +1 -0
  547. package/dist/modules/hospitality_core/inventory.js +627 -0
  548. package/dist/modules/hospitality_core/inventory.js.map +1 -0
  549. package/dist/modules/hospitality_core/menus.d.ts +3 -0
  550. package/dist/modules/hospitality_core/menus.d.ts.map +1 -0
  551. package/dist/modules/hospitality_core/menus.js +134 -0
  552. package/dist/modules/hospitality_core/menus.js.map +1 -0
  553. package/dist/modules/hospitality_core/messages.d.ts +3 -0
  554. package/dist/modules/hospitality_core/messages.d.ts.map +1 -0
  555. package/dist/modules/hospitality_core/messages.js +2011 -0
  556. package/dist/modules/hospitality_core/messages.js.map +1 -0
  557. package/dist/modules/hospitality_core/models.d.ts +10 -0
  558. package/dist/modules/hospitality_core/models.d.ts.map +1 -0
  559. package/dist/modules/hospitality_core/models.js +657 -0
  560. package/dist/modules/hospitality_core/models.js.map +1 -0
  561. package/dist/modules/hospitality_core/night-audit.d.ts +26 -0
  562. package/dist/modules/hospitality_core/night-audit.d.ts.map +1 -0
  563. package/dist/modules/hospitality_core/night-audit.js +381 -0
  564. package/dist/modules/hospitality_core/night-audit.js.map +1 -0
  565. package/dist/modules/hospitality_core/operations.d.ts +3 -0
  566. package/dist/modules/hospitality_core/operations.d.ts.map +1 -0
  567. package/dist/modules/hospitality_core/operations.js +1562 -0
  568. package/dist/modules/hospitality_core/operations.js.map +1 -0
  569. package/dist/modules/hospitality_core/relations.d.ts +3 -0
  570. package/dist/modules/hospitality_core/relations.d.ts.map +1 -0
  571. package/dist/modules/hospitality_core/relations.js +175 -0
  572. package/dist/modules/hospitality_core/relations.js.map +1 -0
  573. package/dist/modules/hospitality_core/routes.d.ts +3 -0
  574. package/dist/modules/hospitality_core/routes.d.ts.map +1 -0
  575. package/dist/modules/hospitality_core/routes.js +1556 -0
  576. package/dist/modules/hospitality_core/routes.js.map +1 -0
  577. package/dist/modules/hospitality_core/screens.d.ts +763 -0
  578. package/dist/modules/hospitality_core/screens.d.ts.map +1 -0
  579. package/dist/modules/hospitality_core/screens.js +4138 -0
  580. package/dist/modules/hospitality_core/screens.js.map +1 -0
  581. package/dist/modules/hospitality_core/services.d.ts +9 -0
  582. package/dist/modules/hospitality_core/services.d.ts.map +1 -0
  583. package/dist/modules/hospitality_core/services.js +586 -0
  584. package/dist/modules/hospitality_core/services.js.map +1 -0
  585. package/dist/modules/hospitality_core/stay-notices.d.ts +11 -0
  586. package/dist/modules/hospitality_core/stay-notices.d.ts.map +1 -0
  587. package/dist/modules/hospitality_core/stay-notices.js +338 -0
  588. package/dist/modules/hospitality_core/stay-notices.js.map +1 -0
  589. package/dist/modules/hospitality_core/types.d.ts +61 -0
  590. package/dist/modules/hospitality_core/types.d.ts.map +1 -0
  591. package/dist/modules/hospitality_core/types.js +65 -0
  592. package/dist/modules/hospitality_core/types.js.map +1 -0
  593. package/dist/modules/hr/functions.d.ts +3 -0
  594. package/dist/modules/hr/functions.d.ts.map +1 -0
  595. package/dist/modules/hr/functions.js +711 -0
  596. package/dist/modules/hr/functions.js.map +1 -0
  597. package/dist/modules/hr/index.d.ts +5 -0
  598. package/dist/modules/hr/index.d.ts.map +1 -0
  599. package/dist/modules/hr/index.js +20 -0
  600. package/dist/modules/hr/index.js.map +1 -0
  601. package/dist/modules/hr/messages.d.ts +45 -0
  602. package/dist/modules/hr/messages.d.ts.map +1 -0
  603. package/dist/modules/hr/messages.js +45 -0
  604. package/dist/modules/hr/messages.js.map +1 -0
  605. package/dist/modules/hr/models.d.ts +3 -0
  606. package/dist/modules/hr/models.d.ts.map +1 -0
  607. package/dist/modules/hr/models.js +166 -0
  608. package/dist/modules/hr/models.js.map +1 -0
  609. package/dist/modules/hr/relations.d.ts +3 -0
  610. package/dist/modules/hr/relations.d.ts.map +1 -0
  611. package/dist/modules/hr/relations.js +19 -0
  612. package/dist/modules/hr/relations.js.map +1 -0
  613. package/dist/modules/hr/types.d.ts +9 -0
  614. package/dist/modules/hr/types.d.ts.map +1 -0
  615. package/dist/modules/hr/types.js +5 -0
  616. package/dist/modules/hr/types.js.map +1 -0
  617. package/dist/modules/hr_backend/index.d.ts +4 -0
  618. package/dist/modules/hr_backend/index.d.ts.map +1 -0
  619. package/dist/modules/hr_backend/index.js +142 -0
  620. package/dist/modules/hr_backend/index.js.map +1 -0
  621. package/dist/modules/hr_backend/routes.d.ts +3 -0
  622. package/dist/modules/hr_backend/routes.d.ts.map +1 -0
  623. package/dist/modules/hr_backend/routes.js +83 -0
  624. package/dist/modules/hr_backend/routes.js.map +1 -0
  625. package/dist/modules/hr_backend/screens.d.ts +9 -0
  626. package/dist/modules/hr_backend/screens.d.ts.map +1 -0
  627. package/dist/modules/hr_backend/screens.js +144 -0
  628. package/dist/modules/hr_backend/screens.js.map +1 -0
  629. package/dist/modules/inventory/index.d.ts +3 -0
  630. package/dist/modules/inventory/index.d.ts.map +1 -0
  631. package/dist/modules/inventory/index.js +31 -0
  632. package/dist/modules/inventory/index.js.map +1 -0
  633. package/dist/modules/loyalty/admin-functions.d.ts +3 -0
  634. package/dist/modules/loyalty/admin-functions.d.ts.map +1 -0
  635. package/dist/modules/loyalty/admin-functions.js +692 -0
  636. package/dist/modules/loyalty/admin-functions.js.map +1 -0
  637. package/dist/modules/loyalty/engine.d.ts +31 -0
  638. package/dist/modules/loyalty/engine.d.ts.map +1 -0
  639. package/dist/modules/loyalty/engine.js +412 -0
  640. package/dist/modules/loyalty/engine.js.map +1 -0
  641. package/dist/modules/loyalty/index.d.ts +5 -0
  642. package/dist/modules/loyalty/index.d.ts.map +1 -0
  643. package/dist/modules/loyalty/index.js +24 -0
  644. package/dist/modules/loyalty/index.js.map +1 -0
  645. package/dist/modules/loyalty/jobs.d.ts +4 -0
  646. package/dist/modules/loyalty/jobs.d.ts.map +1 -0
  647. package/dist/modules/loyalty/jobs.js +103 -0
  648. package/dist/modules/loyalty/jobs.js.map +1 -0
  649. package/dist/modules/loyalty/ledger.d.ts +48 -0
  650. package/dist/modules/loyalty/ledger.d.ts.map +1 -0
  651. package/dist/modules/loyalty/ledger.js +164 -0
  652. package/dist/modules/loyalty/ledger.js.map +1 -0
  653. package/dist/modules/loyalty/membership-functions.d.ts +4 -0
  654. package/dist/modules/loyalty/membership-functions.d.ts.map +1 -0
  655. package/dist/modules/loyalty/membership-functions.js +163 -0
  656. package/dist/modules/loyalty/membership-functions.js.map +1 -0
  657. package/dist/modules/loyalty/messages.d.ts +119 -0
  658. package/dist/modules/loyalty/messages.d.ts.map +1 -0
  659. package/dist/modules/loyalty/messages.js +119 -0
  660. package/dist/modules/loyalty/messages.js.map +1 -0
  661. package/dist/modules/loyalty/models.d.ts +3 -0
  662. package/dist/modules/loyalty/models.d.ts.map +1 -0
  663. package/dist/modules/loyalty/models.js +259 -0
  664. package/dist/modules/loyalty/models.js.map +1 -0
  665. package/dist/modules/loyalty/order-functions.d.ts +3 -0
  666. package/dist/modules/loyalty/order-functions.d.ts.map +1 -0
  667. package/dist/modules/loyalty/order-functions.js +656 -0
  668. package/dist/modules/loyalty/order-functions.js.map +1 -0
  669. package/dist/modules/loyalty/relations.d.ts +3 -0
  670. package/dist/modules/loyalty/relations.d.ts.map +1 -0
  671. package/dist/modules/loyalty/relations.js +19 -0
  672. package/dist/modules/loyalty/relations.js.map +1 -0
  673. package/dist/modules/loyalty/types.d.ts +83 -0
  674. package/dist/modules/loyalty/types.d.ts.map +1 -0
  675. package/dist/modules/loyalty/types.js +23 -0
  676. package/dist/modules/loyalty/types.js.map +1 -0
  677. package/dist/modules/loyalty_backend/index.d.ts +3 -0
  678. package/dist/modules/loyalty_backend/index.d.ts.map +1 -0
  679. package/dist/modules/loyalty_backend/index.js +636 -0
  680. package/dist/modules/loyalty_backend/index.js.map +1 -0
  681. package/dist/modules/loyalty_backend/messages.d.ts +162 -0
  682. package/dist/modules/loyalty_backend/messages.d.ts.map +1 -0
  683. package/dist/modules/loyalty_backend/messages.js +318 -0
  684. package/dist/modules/loyalty_backend/messages.js.map +1 -0
  685. package/dist/modules/loyalty_backend/screens.d.ts +33 -0
  686. package/dist/modules/loyalty_backend/screens.d.ts.map +1 -0
  687. package/dist/modules/loyalty_backend/screens.js +562 -0
  688. package/dist/modules/loyalty_backend/screens.js.map +1 -0
  689. package/dist/modules/loyalty_pos/functions.d.ts +19 -0
  690. package/dist/modules/loyalty_pos/functions.d.ts.map +1 -0
  691. package/dist/modules/loyalty_pos/functions.js +274 -0
  692. package/dist/modules/loyalty_pos/functions.js.map +1 -0
  693. package/dist/modules/loyalty_pos/index.d.ts +3 -0
  694. package/dist/modules/loyalty_pos/index.d.ts.map +1 -0
  695. package/dist/modules/loyalty_pos/index.js +45 -0
  696. package/dist/modules/loyalty_pos/index.js.map +1 -0
  697. package/dist/modules/loyalty_sale/functions.d.ts +19 -0
  698. package/dist/modules/loyalty_sale/functions.d.ts.map +1 -0
  699. package/dist/modules/loyalty_sale/functions.js +275 -0
  700. package/dist/modules/loyalty_sale/functions.js.map +1 -0
  701. package/dist/modules/loyalty_sale/index.d.ts +3 -0
  702. package/dist/modules/loyalty_sale/index.d.ts.map +1 -0
  703. package/dist/modules/loyalty_sale/index.js +45 -0
  704. package/dist/modules/loyalty_sale/index.js.map +1 -0
  705. package/dist/modules/mail/functions.d.ts +3 -0
  706. package/dist/modules/mail/functions.d.ts.map +1 -0
  707. package/dist/modules/mail/functions.js +129 -0
  708. package/dist/modules/mail/functions.js.map +1 -0
  709. package/dist/modules/mail/index.d.ts +9 -0
  710. package/dist/modules/mail/index.d.ts.map +1 -0
  711. package/dist/modules/mail/index.js +22 -0
  712. package/dist/modules/mail/index.js.map +1 -0
  713. package/dist/modules/mail/messages.d.ts +13 -0
  714. package/dist/modules/mail/messages.d.ts.map +1 -0
  715. package/dist/modules/mail/messages.js +13 -0
  716. package/dist/modules/mail/messages.js.map +1 -0
  717. package/dist/modules/mail/models.d.ts +3 -0
  718. package/dist/modules/mail/models.d.ts.map +1 -0
  719. package/dist/modules/mail/models.js +124 -0
  720. package/dist/modules/mail/models.js.map +1 -0
  721. package/dist/modules/mail/operations.d.ts +60 -0
  722. package/dist/modules/mail/operations.d.ts.map +1 -0
  723. package/dist/modules/mail/operations.js +249 -0
  724. package/dist/modules/mail/operations.js.map +1 -0
  725. package/dist/modules/mail/relations.d.ts +3 -0
  726. package/dist/modules/mail/relations.d.ts.map +1 -0
  727. package/dist/modules/mail/relations.js +41 -0
  728. package/dist/modules/mail/relations.js.map +1 -0
  729. package/dist/modules/mail/target.d.ts +16 -0
  730. package/dist/modules/mail/target.d.ts.map +1 -0
  731. package/dist/modules/mail/target.js +245 -0
  732. package/dist/modules/mail/target.js.map +1 -0
  733. package/dist/modules/mail/types.d.ts +7 -0
  734. package/dist/modules/mail/types.d.ts.map +1 -0
  735. package/dist/modules/mail/types.js +4 -0
  736. package/dist/modules/mail/types.js.map +1 -0
  737. package/dist/modules/mail_backend/index.d.ts +5 -0
  738. package/dist/modules/mail_backend/index.d.ts.map +1 -0
  739. package/dist/modules/mail_backend/index.js +56 -0
  740. package/dist/modules/mail_backend/index.js.map +1 -0
  741. package/dist/modules/mail_backend/islands.d.ts +3 -0
  742. package/dist/modules/mail_backend/islands.d.ts.map +1 -0
  743. package/dist/modules/mail_backend/islands.js +20 -0
  744. package/dist/modules/mail_backend/islands.js.map +1 -0
  745. package/dist/modules/mail_backend/routes.d.ts +5 -0
  746. package/dist/modules/mail_backend/routes.d.ts.map +1 -0
  747. package/dist/modules/mail_backend/routes.js +37 -0
  748. package/dist/modules/mail_backend/routes.js.map +1 -0
  749. package/dist/modules/mail_backend/screens.d.ts +5 -0
  750. package/dist/modules/mail_backend/screens.d.ts.map +1 -0
  751. package/dist/modules/mail_backend/screens.js +11 -0
  752. package/dist/modules/mail_backend/screens.js.map +1 -0
  753. package/dist/modules/mail_inbound/functions.d.ts +27 -0
  754. package/dist/modules/mail_inbound/functions.d.ts.map +1 -0
  755. package/dist/modules/mail_inbound/functions.js +178 -0
  756. package/dist/modules/mail_inbound/functions.js.map +1 -0
  757. package/dist/modules/mail_inbound/index.d.ts +10 -0
  758. package/dist/modules/mail_inbound/index.d.ts.map +1 -0
  759. package/dist/modules/mail_inbound/index.js +38 -0
  760. package/dist/modules/mail_inbound/index.js.map +1 -0
  761. package/dist/modules/mail_inbound/jobs.d.ts +3 -0
  762. package/dist/modules/mail_inbound/jobs.d.ts.map +1 -0
  763. package/dist/modules/mail_inbound/jobs.js +29 -0
  764. package/dist/modules/mail_inbound/jobs.js.map +1 -0
  765. package/dist/modules/mail_inbound/models.d.ts +3 -0
  766. package/dist/modules/mail_inbound/models.d.ts.map +1 -0
  767. package/dist/modules/mail_inbound/models.js +68 -0
  768. package/dist/modules/mail_inbound/models.js.map +1 -0
  769. package/dist/modules/mail_inbound/operations.d.ts +17 -0
  770. package/dist/modules/mail_inbound/operations.d.ts.map +1 -0
  771. package/dist/modules/mail_inbound/operations.js +273 -0
  772. package/dist/modules/mail_inbound/operations.js.map +1 -0
  773. package/dist/modules/mail_inbound/relations.d.ts +3 -0
  774. package/dist/modules/mail_inbound/relations.d.ts.map +1 -0
  775. package/dist/modules/mail_inbound/relations.js +19 -0
  776. package/dist/modules/mail_inbound/relations.js.map +1 -0
  777. package/dist/modules/mail_inbound/routes.d.ts +4 -0
  778. package/dist/modules/mail_inbound/routes.d.ts.map +1 -0
  779. package/dist/modules/mail_inbound/routes.js +156 -0
  780. package/dist/modules/mail_inbound/routes.js.map +1 -0
  781. package/dist/modules/mail_inbound/types.d.ts +37 -0
  782. package/dist/modules/mail_inbound/types.d.ts.map +1 -0
  783. package/dist/modules/mail_inbound/types.js +3 -0
  784. package/dist/modules/mail_inbound/types.js.map +1 -0
  785. package/dist/modules/mail_inbound_backend/index.d.ts +5 -0
  786. package/dist/modules/mail_inbound_backend/index.d.ts.map +1 -0
  787. package/dist/modules/mail_inbound_backend/index.js +59 -0
  788. package/dist/modules/mail_inbound_backend/index.js.map +1 -0
  789. package/dist/modules/mail_inbound_backend/routes.d.ts +5 -0
  790. package/dist/modules/mail_inbound_backend/routes.d.ts.map +1 -0
  791. package/dist/modules/mail_inbound_backend/routes.js +31 -0
  792. package/dist/modules/mail_inbound_backend/routes.js.map +1 -0
  793. package/dist/modules/mail_inbound_backend/screens.d.ts +5 -0
  794. package/dist/modules/mail_inbound_backend/screens.d.ts.map +1 -0
  795. package/dist/modules/mail_inbound_backend/screens.js +25 -0
  796. package/dist/modules/mail_inbound_backend/screens.js.map +1 -0
  797. package/dist/modules/mail_transport/functions.d.ts +3 -0
  798. package/dist/modules/mail_transport/functions.d.ts.map +1 -0
  799. package/dist/modules/mail_transport/functions.js +280 -0
  800. package/dist/modules/mail_transport/functions.js.map +1 -0
  801. package/dist/modules/mail_transport/index.d.ts +11 -0
  802. package/dist/modules/mail_transport/index.d.ts.map +1 -0
  803. package/dist/modules/mail_transport/index.js +37 -0
  804. package/dist/modules/mail_transport/index.js.map +1 -0
  805. package/dist/modules/mail_transport/jobs.d.ts +3 -0
  806. package/dist/modules/mail_transport/jobs.d.ts.map +1 -0
  807. package/dist/modules/mail_transport/jobs.js +79 -0
  808. package/dist/modules/mail_transport/jobs.js.map +1 -0
  809. package/dist/modules/mail_transport/models.d.ts +3 -0
  810. package/dist/modules/mail_transport/models.d.ts.map +1 -0
  811. package/dist/modules/mail_transport/models.js +88 -0
  812. package/dist/modules/mail_transport/models.js.map +1 -0
  813. package/dist/modules/mail_transport/operations.d.ts +16 -0
  814. package/dist/modules/mail_transport/operations.d.ts.map +1 -0
  815. package/dist/modules/mail_transport/operations.js +122 -0
  816. package/dist/modules/mail_transport/operations.js.map +1 -0
  817. package/dist/modules/mail_transport/relations.d.ts +3 -0
  818. package/dist/modules/mail_transport/relations.d.ts.map +1 -0
  819. package/dist/modules/mail_transport/relations.js +19 -0
  820. package/dist/modules/mail_transport/relations.js.map +1 -0
  821. package/dist/modules/mail_transport/target.d.ts +8 -0
  822. package/dist/modules/mail_transport/target.d.ts.map +1 -0
  823. package/dist/modules/mail_transport/target.js +43 -0
  824. package/dist/modules/mail_transport/target.js.map +1 -0
  825. package/dist/modules/mail_transport/template.d.ts +4 -0
  826. package/dist/modules/mail_transport/template.d.ts.map +1 -0
  827. package/dist/modules/mail_transport/template.js +52 -0
  828. package/dist/modules/mail_transport/template.js.map +1 -0
  829. package/dist/modules/mail_transport/types.d.ts +9 -0
  830. package/dist/modules/mail_transport/types.d.ts.map +1 -0
  831. package/dist/modules/mail_transport/types.js +3 -0
  832. package/dist/modules/mail_transport/types.js.map +1 -0
  833. package/dist/modules/mail_transport_backend/index.d.ts +5 -0
  834. package/dist/modules/mail_transport_backend/index.d.ts.map +1 -0
  835. package/dist/modules/mail_transport_backend/index.js +69 -0
  836. package/dist/modules/mail_transport_backend/index.js.map +1 -0
  837. package/dist/modules/mail_transport_backend/routes.d.ts +5 -0
  838. package/dist/modules/mail_transport_backend/routes.d.ts.map +1 -0
  839. package/dist/modules/mail_transport_backend/routes.js +42 -0
  840. package/dist/modules/mail_transport_backend/routes.js.map +1 -0
  841. package/dist/modules/mail_transport_backend/screens.d.ts +5 -0
  842. package/dist/modules/mail_transport_backend/screens.d.ts.map +1 -0
  843. package/dist/modules/mail_transport_backend/screens.js +35 -0
  844. package/dist/modules/mail_transport_backend/screens.js.map +1 -0
  845. package/dist/modules/oauth/functions.d.ts +3 -0
  846. package/dist/modules/oauth/functions.d.ts.map +1 -0
  847. package/dist/modules/oauth/functions.js +817 -0
  848. package/dist/modules/oauth/functions.js.map +1 -0
  849. package/dist/modules/oauth/index.d.ts +4 -0
  850. package/dist/modules/oauth/index.d.ts.map +1 -0
  851. package/dist/modules/oauth/index.js +22 -0
  852. package/dist/modules/oauth/index.js.map +1 -0
  853. package/dist/modules/oauth/messages.d.ts +129 -0
  854. package/dist/modules/oauth/messages.d.ts.map +1 -0
  855. package/dist/modules/oauth/messages.js +129 -0
  856. package/dist/modules/oauth/messages.js.map +1 -0
  857. package/dist/modules/oauth/models.d.ts +4 -0
  858. package/dist/modules/oauth/models.d.ts.map +1 -0
  859. package/dist/modules/oauth/models.js +83 -0
  860. package/dist/modules/oauth/models.js.map +1 -0
  861. package/dist/modules/oauth/protocol.d.ts +54 -0
  862. package/dist/modules/oauth/protocol.d.ts.map +1 -0
  863. package/dist/modules/oauth/protocol.js +309 -0
  864. package/dist/modules/oauth/protocol.js.map +1 -0
  865. package/dist/modules/oauth/relations.d.ts +3 -0
  866. package/dist/modules/oauth/relations.d.ts.map +1 -0
  867. package/dist/modules/oauth/relations.js +18 -0
  868. package/dist/modules/oauth/relations.js.map +1 -0
  869. package/dist/modules/oauth/routes.d.ts +3 -0
  870. package/dist/modules/oauth/routes.d.ts.map +1 -0
  871. package/dist/modules/oauth/routes.js +185 -0
  872. package/dist/modules/oauth/routes.js.map +1 -0
  873. package/dist/modules/oauth_backend/index.d.ts +4 -0
  874. package/dist/modules/oauth_backend/index.d.ts.map +1 -0
  875. package/dist/modules/oauth_backend/index.js +23 -0
  876. package/dist/modules/oauth_backend/index.js.map +1 -0
  877. package/dist/modules/oauth_backend/menus.d.ts +3 -0
  878. package/dist/modules/oauth_backend/menus.d.ts.map +1 -0
  879. package/dist/modules/oauth_backend/menus.js +17 -0
  880. package/dist/modules/oauth_backend/menus.js.map +1 -0
  881. package/dist/modules/oauth_backend/messages.d.ts +169 -0
  882. package/dist/modules/oauth_backend/messages.d.ts.map +1 -0
  883. package/dist/modules/oauth_backend/messages.js +169 -0
  884. package/dist/modules/oauth_backend/messages.js.map +1 -0
  885. package/dist/modules/oauth_backend/routes.d.ts +3 -0
  886. package/dist/modules/oauth_backend/routes.d.ts.map +1 -0
  887. package/dist/modules/oauth_backend/routes.js +231 -0
  888. package/dist/modules/oauth_backend/routes.js.map +1 -0
  889. package/dist/modules/oauth_backend/screens.d.ts +66 -0
  890. package/dist/modules/oauth_backend/screens.d.ts.map +1 -0
  891. package/dist/modules/oauth_backend/screens.js +323 -0
  892. package/dist/modules/oauth_backend/screens.js.map +1 -0
  893. package/dist/modules/odoo_collaboration_import/functions.d.ts +3 -0
  894. package/dist/modules/odoo_collaboration_import/functions.d.ts.map +1 -0
  895. package/dist/modules/odoo_collaboration_import/functions.js +128 -0
  896. package/dist/modules/odoo_collaboration_import/functions.js.map +1 -0
  897. package/dist/modules/odoo_collaboration_import/index.d.ts +6 -0
  898. package/dist/modules/odoo_collaboration_import/index.d.ts.map +1 -0
  899. package/dist/modules/odoo_collaboration_import/index.js +31 -0
  900. package/dist/modules/odoo_collaboration_import/index.js.map +1 -0
  901. package/dist/modules/odoo_collaboration_import/models.d.ts +3 -0
  902. package/dist/modules/odoo_collaboration_import/models.d.ts.map +1 -0
  903. package/dist/modules/odoo_collaboration_import/models.js +76 -0
  904. package/dist/modules/odoo_collaboration_import/models.js.map +1 -0
  905. package/dist/modules/odoo_collaboration_import/operations.d.ts +14 -0
  906. package/dist/modules/odoo_collaboration_import/operations.d.ts.map +1 -0
  907. package/dist/modules/odoo_collaboration_import/operations.js +1139 -0
  908. package/dist/modules/odoo_collaboration_import/operations.js.map +1 -0
  909. package/dist/modules/odoo_collaboration_import/relations.d.ts +3 -0
  910. package/dist/modules/odoo_collaboration_import/relations.d.ts.map +1 -0
  911. package/dist/modules/odoo_collaboration_import/relations.js +19 -0
  912. package/dist/modules/odoo_collaboration_import/relations.js.map +1 -0
  913. package/dist/modules/odoo_collaboration_import/types.d.ts +58 -0
  914. package/dist/modules/odoo_collaboration_import/types.d.ts.map +1 -0
  915. package/dist/modules/odoo_collaboration_import/types.js +2 -0
  916. package/dist/modules/odoo_collaboration_import/types.js.map +1 -0
  917. package/dist/modules/partner/functions.d.ts +5 -0
  918. package/dist/modules/partner/functions.d.ts.map +1 -0
  919. package/dist/modules/partner/functions.js +563 -0
  920. package/dist/modules/partner/functions.js.map +1 -0
  921. package/dist/modules/partner/index.d.ts +5 -0
  922. package/dist/modules/partner/index.d.ts.map +1 -0
  923. package/dist/modules/partner/index.js +23 -0
  924. package/dist/modules/partner/index.js.map +1 -0
  925. package/dist/modules/partner/messages.d.ts +55 -0
  926. package/dist/modules/partner/messages.d.ts.map +1 -0
  927. package/dist/modules/partner/messages.js +55 -0
  928. package/dist/modules/partner/messages.js.map +1 -0
  929. package/dist/modules/partner/models.d.ts +23 -0
  930. package/dist/modules/partner/models.d.ts.map +1 -0
  931. package/dist/modules/partner/models.js +124 -0
  932. package/dist/modules/partner/models.js.map +1 -0
  933. package/dist/modules/partner/relations.d.ts +4 -0
  934. package/dist/modules/partner/relations.d.ts.map +1 -0
  935. package/dist/modules/partner/relations.js +35 -0
  936. package/dist/modules/partner/relations.js.map +1 -0
  937. package/dist/modules/partner/types.d.ts +17 -0
  938. package/dist/modules/partner/types.d.ts.map +1 -0
  939. package/dist/modules/partner/types.js +14 -0
  940. package/dist/modules/partner/types.js.map +1 -0
  941. package/dist/modules/partner/views.d.ts +4 -0
  942. package/dist/modules/partner/views.d.ts.map +1 -0
  943. package/dist/modules/partner/views.js +19 -0
  944. package/dist/modules/partner/views.js.map +1 -0
  945. package/dist/modules/partner_backend/client/address-view.d.mts +5 -0
  946. package/dist/modules/partner_backend/client/address-view.d.mts.map +1 -0
  947. package/dist/modules/partner_backend/client/address-view.mjs +193 -0
  948. package/dist/modules/partner_backend/client/address-view.mjs.map +1 -0
  949. package/dist/modules/partner_backend/client/address.css +12 -0
  950. package/dist/modules/partner_backend/client/address.d.mts +5 -0
  951. package/dist/modules/partner_backend/client/address.d.mts.map +1 -0
  952. package/dist/modules/partner_backend/client/address.mjs +7 -0
  953. package/dist/modules/partner_backend/client/address.mjs.map +1 -0
  954. package/dist/modules/partner_backend/index.d.ts +5 -0
  955. package/dist/modules/partner_backend/index.d.ts.map +1 -0
  956. package/dist/modules/partner_backend/index.js +178 -0
  957. package/dist/modules/partner_backend/index.js.map +1 -0
  958. package/dist/modules/partner_backend/islands.d.ts +3 -0
  959. package/dist/modules/partner_backend/islands.d.ts.map +1 -0
  960. package/dist/modules/partner_backend/islands.js +23 -0
  961. package/dist/modules/partner_backend/islands.js.map +1 -0
  962. package/dist/modules/partner_backend/menus.d.ts +3 -0
  963. package/dist/modules/partner_backend/menus.d.ts.map +1 -0
  964. package/dist/modules/partner_backend/menus.js +11 -0
  965. package/dist/modules/partner_backend/menus.js.map +1 -0
  966. package/dist/modules/partner_backend/relation-control.d.ts +22 -0
  967. package/dist/modules/partner_backend/relation-control.d.ts.map +1 -0
  968. package/dist/modules/partner_backend/relation-control.js +46 -0
  969. package/dist/modules/partner_backend/relation-control.js.map +1 -0
  970. package/dist/modules/partner_backend/routes.d.ts +3 -0
  971. package/dist/modules/partner_backend/routes.d.ts.map +1 -0
  972. package/dist/modules/partner_backend/routes.js +300 -0
  973. package/dist/modules/partner_backend/routes.js.map +1 -0
  974. package/dist/modules/partner_backend/screens.d.ts +53 -0
  975. package/dist/modules/partner_backend/screens.d.ts.map +1 -0
  976. package/dist/modules/partner_backend/screens.js +169 -0
  977. package/dist/modules/partner_backend/screens.js.map +1 -0
  978. package/dist/modules/pos/functions.d.ts +6 -0
  979. package/dist/modules/pos/functions.d.ts.map +1 -0
  980. package/dist/modules/pos/functions.js +953 -0
  981. package/dist/modules/pos/functions.js.map +1 -0
  982. package/dist/modules/pos/index.d.ts +4 -0
  983. package/dist/modules/pos/index.d.ts.map +1 -0
  984. package/dist/modules/pos/index.js +34 -0
  985. package/dist/modules/pos/index.js.map +1 -0
  986. package/dist/modules/pos/models.d.ts +3 -0
  987. package/dist/modules/pos/models.d.ts.map +1 -0
  988. package/dist/modules/pos/models.js +107 -0
  989. package/dist/modules/pos/models.js.map +1 -0
  990. package/dist/modules/pos/relations.d.ts +3 -0
  991. package/dist/modules/pos/relations.d.ts.map +1 -0
  992. package/dist/modules/pos/relations.js +37 -0
  993. package/dist/modules/pos/relations.js.map +1 -0
  994. package/dist/modules/pos_backend/index.d.ts +3 -0
  995. package/dist/modules/pos_backend/index.d.ts.map +1 -0
  996. package/dist/modules/pos_backend/index.js +654 -0
  997. package/dist/modules/pos_backend/index.js.map +1 -0
  998. package/dist/modules/pos_backend/screens.d.ts +15 -0
  999. package/dist/modules/pos_backend/screens.d.ts.map +1 -0
  1000. package/dist/modules/pos_backend/screens.js +320 -0
  1001. package/dist/modules/pos_backend/screens.js.map +1 -0
  1002. package/dist/modules/pricing/functions.d.ts +6 -0
  1003. package/dist/modules/pricing/functions.d.ts.map +1 -0
  1004. package/dist/modules/pricing/functions.js +318 -0
  1005. package/dist/modules/pricing/functions.js.map +1 -0
  1006. package/dist/modules/pricing/index.d.ts +4 -0
  1007. package/dist/modules/pricing/index.d.ts.map +1 -0
  1008. package/dist/modules/pricing/index.js +30 -0
  1009. package/dist/modules/pricing/index.js.map +1 -0
  1010. package/dist/modules/pricing/models.d.ts +3 -0
  1011. package/dist/modules/pricing/models.d.ts.map +1 -0
  1012. package/dist/modules/pricing/models.js +34 -0
  1013. package/dist/modules/pricing/models.js.map +1 -0
  1014. package/dist/modules/pricing/relations.d.ts +3 -0
  1015. package/dist/modules/pricing/relations.d.ts.map +1 -0
  1016. package/dist/modules/pricing/relations.js +11 -0
  1017. package/dist/modules/pricing/relations.js.map +1 -0
  1018. package/dist/modules/pricing_backend/index.d.ts +3 -0
  1019. package/dist/modules/pricing_backend/index.d.ts.map +1 -0
  1020. package/dist/modules/pricing_backend/index.js +241 -0
  1021. package/dist/modules/pricing_backend/index.js.map +1 -0
  1022. package/dist/modules/pricing_backend/screens.d.ts +13 -0
  1023. package/dist/modules/pricing_backend/screens.d.ts.map +1 -0
  1024. package/dist/modules/pricing_backend/screens.js +182 -0
  1025. package/dist/modules/pricing_backend/screens.js.map +1 -0
  1026. package/dist/modules/product/functions.d.ts +3 -0
  1027. package/dist/modules/product/functions.d.ts.map +1 -0
  1028. package/dist/modules/product/functions.js +627 -0
  1029. package/dist/modules/product/functions.js.map +1 -0
  1030. package/dist/modules/product/index.d.ts +6 -0
  1031. package/dist/modules/product/index.d.ts.map +1 -0
  1032. package/dist/modules/product/index.js +24 -0
  1033. package/dist/modules/product/index.js.map +1 -0
  1034. package/dist/modules/product/messages.d.ts +3 -0
  1035. package/dist/modules/product/messages.d.ts.map +1 -0
  1036. package/dist/modules/product/messages.js +19 -0
  1037. package/dist/modules/product/messages.js.map +1 -0
  1038. package/dist/modules/product/models.d.ts +11 -0
  1039. package/dist/modules/product/models.d.ts.map +1 -0
  1040. package/dist/modules/product/models.js +116 -0
  1041. package/dist/modules/product/models.js.map +1 -0
  1042. package/dist/modules/product/relations.d.ts +8 -0
  1043. package/dist/modules/product/relations.d.ts.map +1 -0
  1044. package/dist/modules/product/relations.js +53 -0
  1045. package/dist/modules/product/relations.js.map +1 -0
  1046. package/dist/modules/product/search.d.ts +73 -0
  1047. package/dist/modules/product/search.d.ts.map +1 -0
  1048. package/dist/modules/product/search.js +66 -0
  1049. package/dist/modules/product/search.js.map +1 -0
  1050. package/dist/modules/product/types.d.ts +14 -0
  1051. package/dist/modules/product/types.d.ts.map +1 -0
  1052. package/dist/modules/product/types.js +2 -0
  1053. package/dist/modules/product/types.js.map +1 -0
  1054. package/dist/modules/product/views.d.ts +4 -0
  1055. package/dist/modules/product/views.d.ts.map +1 -0
  1056. package/dist/modules/product/views.js +7 -0
  1057. package/dist/modules/product/views.js.map +1 -0
  1058. package/dist/modules/product_activity_backend/index.d.ts +5 -0
  1059. package/dist/modules/product_activity_backend/index.d.ts.map +1 -0
  1060. package/dist/modules/product_activity_backend/index.js +29 -0
  1061. package/dist/modules/product_activity_backend/index.js.map +1 -0
  1062. package/dist/modules/product_backend/attributes-screen.d.ts +7 -0
  1063. package/dist/modules/product_backend/attributes-screen.d.ts.map +1 -0
  1064. package/dist/modules/product_backend/attributes-screen.js +76 -0
  1065. package/dist/modules/product_backend/attributes-screen.js.map +1 -0
  1066. package/dist/modules/product_backend/client/editor-view.d.mts +5 -0
  1067. package/dist/modules/product_backend/client/editor-view.d.mts.map +1 -0
  1068. package/dist/modules/product_backend/client/editor-view.mjs +141 -0
  1069. package/dist/modules/product_backend/client/editor-view.mjs.map +1 -0
  1070. package/dist/modules/product_backend/client/product.d.mts +6 -0
  1071. package/dist/modules/product_backend/client/product.d.mts.map +1 -0
  1072. package/dist/modules/product_backend/client/product.mjs +8 -0
  1073. package/dist/modules/product_backend/client/product.mjs.map +1 -0
  1074. package/dist/modules/product_backend/create-screen.d.ts +12 -0
  1075. package/dist/modules/product_backend/create-screen.d.ts.map +1 -0
  1076. package/dist/modules/product_backend/create-screen.js +83 -0
  1077. package/dist/modules/product_backend/create-screen.js.map +1 -0
  1078. package/dist/modules/product_backend/index.d.ts +20 -0
  1079. package/dist/modules/product_backend/index.d.ts.map +1 -0
  1080. package/dist/modules/product_backend/index.js +287 -0
  1081. package/dist/modules/product_backend/index.js.map +1 -0
  1082. package/dist/modules/product_backend/islands.d.ts +3 -0
  1083. package/dist/modules/product_backend/islands.d.ts.map +1 -0
  1084. package/dist/modules/product_backend/islands.js +13 -0
  1085. package/dist/modules/product_backend/islands.js.map +1 -0
  1086. package/dist/modules/product_backend/menus.d.ts +3 -0
  1087. package/dist/modules/product_backend/menus.d.ts.map +1 -0
  1088. package/dist/modules/product_backend/menus.js +25 -0
  1089. package/dist/modules/product_backend/menus.js.map +1 -0
  1090. package/dist/modules/product_backend/routes.d.ts +14 -0
  1091. package/dist/modules/product_backend/routes.d.ts.map +1 -0
  1092. package/dist/modules/product_backend/routes.js +990 -0
  1093. package/dist/modules/product_backend/routes.js.map +1 -0
  1094. package/dist/modules/product_backend/screens.d.ts +68 -0
  1095. package/dist/modules/product_backend/screens.d.ts.map +1 -0
  1096. package/dist/modules/product_backend/screens.js +388 -0
  1097. package/dist/modules/product_backend/screens.js.map +1 -0
  1098. package/dist/modules/product_mail_backend/index.d.ts +5 -0
  1099. package/dist/modules/product_mail_backend/index.d.ts.map +1 -0
  1100. package/dist/modules/product_mail_backend/index.js +30 -0
  1101. package/dist/modules/product_mail_backend/index.js.map +1 -0
  1102. package/dist/modules/product_media/functions.d.ts +3 -0
  1103. package/dist/modules/product_media/functions.d.ts.map +1 -0
  1104. package/dist/modules/product_media/functions.js +183 -0
  1105. package/dist/modules/product_media/functions.js.map +1 -0
  1106. package/dist/modules/product_media/index.d.ts +3 -0
  1107. package/dist/modules/product_media/index.d.ts.map +1 -0
  1108. package/dist/modules/product_media/index.js +29 -0
  1109. package/dist/modules/product_media/index.js.map +1 -0
  1110. package/dist/modules/product_media/models.d.ts +4 -0
  1111. package/dist/modules/product_media/models.d.ts.map +1 -0
  1112. package/dist/modules/product_media/models.js +24 -0
  1113. package/dist/modules/product_media/models.js.map +1 -0
  1114. package/dist/modules/product_media/relations.d.ts +3 -0
  1115. package/dist/modules/product_media/relations.d.ts.map +1 -0
  1116. package/dist/modules/product_media/relations.js +8 -0
  1117. package/dist/modules/product_media/relations.js.map +1 -0
  1118. package/dist/modules/product_variant_activity_backend/index.d.ts +5 -0
  1119. package/dist/modules/product_variant_activity_backend/index.d.ts.map +1 -0
  1120. package/dist/modules/product_variant_activity_backend/index.js +29 -0
  1121. package/dist/modules/product_variant_activity_backend/index.js.map +1 -0
  1122. package/dist/modules/product_variant_mail_backend/index.d.ts +5 -0
  1123. package/dist/modules/product_variant_mail_backend/index.d.ts.map +1 -0
  1124. package/dist/modules/product_variant_mail_backend/index.js +30 -0
  1125. package/dist/modules/product_variant_mail_backend/index.js.map +1 -0
  1126. package/dist/modules/purchase/functions.d.ts +6 -0
  1127. package/dist/modules/purchase/functions.d.ts.map +1 -0
  1128. package/dist/modules/purchase/functions.js +743 -0
  1129. package/dist/modules/purchase/functions.js.map +1 -0
  1130. package/dist/modules/purchase/index.d.ts +4 -0
  1131. package/dist/modules/purchase/index.d.ts.map +1 -0
  1132. package/dist/modules/purchase/index.js +35 -0
  1133. package/dist/modules/purchase/index.js.map +1 -0
  1134. package/dist/modules/purchase/models.d.ts +3 -0
  1135. package/dist/modules/purchase/models.d.ts.map +1 -0
  1136. package/dist/modules/purchase/models.js +68 -0
  1137. package/dist/modules/purchase/models.js.map +1 -0
  1138. package/dist/modules/purchase/relations.d.ts +3 -0
  1139. package/dist/modules/purchase/relations.d.ts.map +1 -0
  1140. package/dist/modules/purchase/relations.js +20 -0
  1141. package/dist/modules/purchase/relations.js.map +1 -0
  1142. package/dist/modules/purchase_backend/index.d.ts +3 -0
  1143. package/dist/modules/purchase_backend/index.d.ts.map +1 -0
  1144. package/dist/modules/purchase_backend/index.js +615 -0
  1145. package/dist/modules/purchase_backend/index.js.map +1 -0
  1146. package/dist/modules/purchase_backend/screens.d.ts +29 -0
  1147. package/dist/modules/purchase_backend/screens.d.ts.map +1 -0
  1148. package/dist/modules/purchase_backend/screens.js +324 -0
  1149. package/dist/modules/purchase_backend/screens.js.map +1 -0
  1150. package/dist/modules/sale/functions.d.ts +6 -0
  1151. package/dist/modules/sale/functions.d.ts.map +1 -0
  1152. package/dist/modules/sale/functions.js +611 -0
  1153. package/dist/modules/sale/functions.js.map +1 -0
  1154. package/dist/modules/sale/index.d.ts +4 -0
  1155. package/dist/modules/sale/index.d.ts.map +1 -0
  1156. package/dist/modules/sale/index.js +35 -0
  1157. package/dist/modules/sale/index.js.map +1 -0
  1158. package/dist/modules/sale/models.d.ts +3 -0
  1159. package/dist/modules/sale/models.d.ts.map +1 -0
  1160. package/dist/modules/sale/models.js +46 -0
  1161. package/dist/modules/sale/models.js.map +1 -0
  1162. package/dist/modules/sale/relations.d.ts +3 -0
  1163. package/dist/modules/sale/relations.d.ts.map +1 -0
  1164. package/dist/modules/sale/relations.js +16 -0
  1165. package/dist/modules/sale/relations.js.map +1 -0
  1166. package/dist/modules/sale_activity_backend/index.d.ts +5 -0
  1167. package/dist/modules/sale_activity_backend/index.d.ts.map +1 -0
  1168. package/dist/modules/sale_activity_backend/index.js +29 -0
  1169. package/dist/modules/sale_activity_backend/index.js.map +1 -0
  1170. package/dist/modules/sale_backend/client/editor-view.d.mts +5 -0
  1171. package/dist/modules/sale_backend/client/editor-view.d.mts.map +1 -0
  1172. package/dist/modules/sale_backend/client/editor-view.mjs +132 -0
  1173. package/dist/modules/sale_backend/client/editor-view.mjs.map +1 -0
  1174. package/dist/modules/sale_backend/client/sale.d.mts +6 -0
  1175. package/dist/modules/sale_backend/client/sale.d.mts.map +1 -0
  1176. package/dist/modules/sale_backend/client/sale.mjs +8 -0
  1177. package/dist/modules/sale_backend/client/sale.mjs.map +1 -0
  1178. package/dist/modules/sale_backend/index.d.ts +3 -0
  1179. package/dist/modules/sale_backend/index.d.ts.map +1 -0
  1180. package/dist/modules/sale_backend/index.js +681 -0
  1181. package/dist/modules/sale_backend/index.js.map +1 -0
  1182. package/dist/modules/sale_backend/invoicing-policies-screen.d.ts +14 -0
  1183. package/dist/modules/sale_backend/invoicing-policies-screen.d.ts.map +1 -0
  1184. package/dist/modules/sale_backend/invoicing-policies-screen.js +36 -0
  1185. package/dist/modules/sale_backend/invoicing-policies-screen.js.map +1 -0
  1186. package/dist/modules/sale_backend/islands.d.ts +3 -0
  1187. package/dist/modules/sale_backend/islands.d.ts.map +1 -0
  1188. package/dist/modules/sale_backend/islands.js +13 -0
  1189. package/dist/modules/sale_backend/islands.js.map +1 -0
  1190. package/dist/modules/sale_backend/order-detail-screen.d.ts +18 -0
  1191. package/dist/modules/sale_backend/order-detail-screen.d.ts.map +1 -0
  1192. package/dist/modules/sale_backend/order-detail-screen.js +217 -0
  1193. package/dist/modules/sale_backend/order-detail-screen.js.map +1 -0
  1194. package/dist/modules/sale_backend/quotations-screen.d.ts +15 -0
  1195. package/dist/modules/sale_backend/quotations-screen.d.ts.map +1 -0
  1196. package/dist/modules/sale_backend/quotations-screen.js +64 -0
  1197. package/dist/modules/sale_backend/quotations-screen.js.map +1 -0
  1198. package/dist/modules/sale_backend/sales-orders-screen.d.ts +12 -0
  1199. package/dist/modules/sale_backend/sales-orders-screen.d.ts.map +1 -0
  1200. package/dist/modules/sale_backend/sales-orders-screen.js +65 -0
  1201. package/dist/modules/sale_backend/sales-orders-screen.js.map +1 -0
  1202. package/dist/modules/sale_backend/screens.d.ts +23 -0
  1203. package/dist/modules/sale_backend/screens.d.ts.map +1 -0
  1204. package/dist/modules/sale_backend/screens.js +275 -0
  1205. package/dist/modules/sale_backend/screens.js.map +1 -0
  1206. package/dist/modules/sale_mail_backend/index.d.ts +5 -0
  1207. package/dist/modules/sale_mail_backend/index.d.ts.map +1 -0
  1208. package/dist/modules/sale_mail_backend/index.js +30 -0
  1209. package/dist/modules/sale_mail_backend/index.js.map +1 -0
  1210. package/dist/modules/stock/functions.d.ts +10 -0
  1211. package/dist/modules/stock/functions.d.ts.map +1 -0
  1212. package/dist/modules/stock/functions.js +1523 -0
  1213. package/dist/modules/stock/functions.js.map +1 -0
  1214. package/dist/modules/stock/index.d.ts +5 -0
  1215. package/dist/modules/stock/index.d.ts.map +1 -0
  1216. package/dist/modules/stock/index.js +35 -0
  1217. package/dist/modules/stock/index.js.map +1 -0
  1218. package/dist/modules/stock/models.d.ts +3 -0
  1219. package/dist/modules/stock/models.d.ts.map +1 -0
  1220. package/dist/modules/stock/models.js +185 -0
  1221. package/dist/modules/stock/models.js.map +1 -0
  1222. package/dist/modules/stock/relations.d.ts +3 -0
  1223. package/dist/modules/stock/relations.d.ts.map +1 -0
  1224. package/dist/modules/stock/relations.js +40 -0
  1225. package/dist/modules/stock/relations.js.map +1 -0
  1226. package/dist/modules/stock/routing.d.ts +7 -0
  1227. package/dist/modules/stock/routing.d.ts.map +1 -0
  1228. package/dist/modules/stock/routing.js +527 -0
  1229. package/dist/modules/stock/routing.js.map +1 -0
  1230. package/dist/modules/stock_activity_backend/index.d.ts +5 -0
  1231. package/dist/modules/stock_activity_backend/index.d.ts.map +1 -0
  1232. package/dist/modules/stock_activity_backend/index.js +29 -0
  1233. package/dist/modules/stock_activity_backend/index.js.map +1 -0
  1234. package/dist/modules/stock_backend/client/editor-view.d.mts +5 -0
  1235. package/dist/modules/stock_backend/client/editor-view.d.mts.map +1 -0
  1236. package/dist/modules/stock_backend/client/editor-view.mjs +147 -0
  1237. package/dist/modules/stock_backend/client/editor-view.mjs.map +1 -0
  1238. package/dist/modules/stock_backend/client/stock.d.mts +6 -0
  1239. package/dist/modules/stock_backend/client/stock.d.mts.map +1 -0
  1240. package/dist/modules/stock_backend/client/stock.mjs +8 -0
  1241. package/dist/modules/stock_backend/client/stock.mjs.map +1 -0
  1242. package/dist/modules/stock_backend/forecast-screen.d.ts +28 -0
  1243. package/dist/modules/stock_backend/forecast-screen.d.ts.map +1 -0
  1244. package/dist/modules/stock_backend/forecast-screen.js +108 -0
  1245. package/dist/modules/stock_backend/forecast-screen.js.map +1 -0
  1246. package/dist/modules/stock_backend/index.d.ts +3 -0
  1247. package/dist/modules/stock_backend/index.d.ts.map +1 -0
  1248. package/dist/modules/stock_backend/index.js +880 -0
  1249. package/dist/modules/stock_backend/index.js.map +1 -0
  1250. package/dist/modules/stock_backend/inventory-screen.d.ts +27 -0
  1251. package/dist/modules/stock_backend/inventory-screen.d.ts.map +1 -0
  1252. package/dist/modules/stock_backend/inventory-screen.js +141 -0
  1253. package/dist/modules/stock_backend/inventory-screen.js.map +1 -0
  1254. package/dist/modules/stock_backend/islands.d.ts +3 -0
  1255. package/dist/modules/stock_backend/islands.d.ts.map +1 -0
  1256. package/dist/modules/stock_backend/islands.js +13 -0
  1257. package/dist/modules/stock_backend/islands.js.map +1 -0
  1258. package/dist/modules/stock_backend/locations-screen.d.ts +18 -0
  1259. package/dist/modules/stock_backend/locations-screen.d.ts.map +1 -0
  1260. package/dist/modules/stock_backend/locations-screen.js +92 -0
  1261. package/dist/modules/stock_backend/locations-screen.js.map +1 -0
  1262. package/dist/modules/stock_backend/lot-screen.d.ts +30 -0
  1263. package/dist/modules/stock_backend/lot-screen.d.ts.map +1 -0
  1264. package/dist/modules/stock_backend/lot-screen.js +86 -0
  1265. package/dist/modules/stock_backend/lot-screen.js.map +1 -0
  1266. package/dist/modules/stock_backend/lots-screen.d.ts +21 -0
  1267. package/dist/modules/stock_backend/lots-screen.d.ts.map +1 -0
  1268. package/dist/modules/stock_backend/lots-screen.js +79 -0
  1269. package/dist/modules/stock_backend/lots-screen.js.map +1 -0
  1270. package/dist/modules/stock_backend/picking-types-screen.d.ts +21 -0
  1271. package/dist/modules/stock_backend/picking-types-screen.d.ts.map +1 -0
  1272. package/dist/modules/stock_backend/picking-types-screen.js +110 -0
  1273. package/dist/modules/stock_backend/picking-types-screen.js.map +1 -0
  1274. package/dist/modules/stock_backend/replenishment-screen.d.ts +29 -0
  1275. package/dist/modules/stock_backend/replenishment-screen.d.ts.map +1 -0
  1276. package/dist/modules/stock_backend/replenishment-screen.js +131 -0
  1277. package/dist/modules/stock_backend/replenishment-screen.js.map +1 -0
  1278. package/dist/modules/stock_backend/routes.d.ts +3 -0
  1279. package/dist/modules/stock_backend/routes.d.ts.map +1 -0
  1280. package/dist/modules/stock_backend/routes.js +950 -0
  1281. package/dist/modules/stock_backend/routes.js.map +1 -0
  1282. package/dist/modules/stock_backend/screens.d.ts +14 -0
  1283. package/dist/modules/stock_backend/screens.d.ts.map +1 -0
  1284. package/dist/modules/stock_backend/screens.js +40 -0
  1285. package/dist/modules/stock_backend/screens.js.map +1 -0
  1286. package/dist/modules/stock_backend/stock-route-screen.d.ts +30 -0
  1287. package/dist/modules/stock_backend/stock-route-screen.d.ts.map +1 -0
  1288. package/dist/modules/stock_backend/stock-route-screen.js +129 -0
  1289. package/dist/modules/stock_backend/stock-route-screen.js.map +1 -0
  1290. package/dist/modules/stock_backend/stock-routes-screen.d.ts +17 -0
  1291. package/dist/modules/stock_backend/stock-routes-screen.d.ts.map +1 -0
  1292. package/dist/modules/stock_backend/stock-routes-screen.js +60 -0
  1293. package/dist/modules/stock_backend/stock-routes-screen.js.map +1 -0
  1294. package/dist/modules/stock_backend/transfer-screen.d.ts +26 -0
  1295. package/dist/modules/stock_backend/transfer-screen.d.ts.map +1 -0
  1296. package/dist/modules/stock_backend/transfer-screen.js +95 -0
  1297. package/dist/modules/stock_backend/transfer-screen.js.map +1 -0
  1298. package/dist/modules/stock_backend/transfers-screen.d.ts +21 -0
  1299. package/dist/modules/stock_backend/transfers-screen.d.ts.map +1 -0
  1300. package/dist/modules/stock_backend/transfers-screen.js +88 -0
  1301. package/dist/modules/stock_backend/transfers-screen.js.map +1 -0
  1302. package/dist/modules/stock_backend/warehouses-screen.d.ts +17 -0
  1303. package/dist/modules/stock_backend/warehouses-screen.d.ts.map +1 -0
  1304. package/dist/modules/stock_backend/warehouses-screen.js +96 -0
  1305. package/dist/modules/stock_backend/warehouses-screen.js.map +1 -0
  1306. package/dist/modules/stock_lot_activity_backend/index.d.ts +5 -0
  1307. package/dist/modules/stock_lot_activity_backend/index.d.ts.map +1 -0
  1308. package/dist/modules/stock_lot_activity_backend/index.js +29 -0
  1309. package/dist/modules/stock_lot_activity_backend/index.js.map +1 -0
  1310. package/dist/modules/stock_lot_mail_backend/index.d.ts +5 -0
  1311. package/dist/modules/stock_lot_mail_backend/index.d.ts.map +1 -0
  1312. package/dist/modules/stock_lot_mail_backend/index.js +30 -0
  1313. package/dist/modules/stock_lot_mail_backend/index.js.map +1 -0
  1314. package/dist/modules/stock_mail_backend/index.d.ts +5 -0
  1315. package/dist/modules/stock_mail_backend/index.d.ts.map +1 -0
  1316. package/dist/modules/stock_mail_backend/index.js +30 -0
  1317. package/dist/modules/stock_mail_backend/index.js.map +1 -0
  1318. package/dist/modules/stock_mail_inbound/index.d.ts +6 -0
  1319. package/dist/modules/stock_mail_inbound/index.d.ts.map +1 -0
  1320. package/dist/modules/stock_mail_inbound/index.js +104 -0
  1321. package/dist/modules/stock_mail_inbound/index.js.map +1 -0
  1322. package/dist/modules/storage/functions.d.ts +3 -0
  1323. package/dist/modules/storage/functions.d.ts.map +1 -0
  1324. package/dist/modules/storage/functions.js +129 -0
  1325. package/dist/modules/storage/functions.js.map +1 -0
  1326. package/dist/modules/storage/index.d.ts +3 -0
  1327. package/dist/modules/storage/index.d.ts.map +1 -0
  1328. package/dist/modules/storage/index.js +31 -0
  1329. package/dist/modules/storage/index.js.map +1 -0
  1330. package/dist/modules/storage/jobs.d.ts +3 -0
  1331. package/dist/modules/storage/jobs.d.ts.map +1 -0
  1332. package/dist/modules/storage/jobs.js +37 -0
  1333. package/dist/modules/storage/jobs.js.map +1 -0
  1334. package/dist/modules/storage/models.d.ts +3 -0
  1335. package/dist/modules/storage/models.d.ts.map +1 -0
  1336. package/dist/modules/storage/models.js +23 -0
  1337. package/dist/modules/storage/models.js.map +1 -0
  1338. package/dist/modules/storage/routes.d.ts +27 -0
  1339. package/dist/modules/storage/routes.d.ts.map +1 -0
  1340. package/dist/modules/storage/routes.js +180 -0
  1341. package/dist/modules/storage/routes.js.map +1 -0
  1342. package/dist/modules/uom/convert.d.ts +52 -0
  1343. package/dist/modules/uom/convert.d.ts.map +1 -0
  1344. package/dist/modules/uom/convert.js +76 -0
  1345. package/dist/modules/uom/convert.js.map +1 -0
  1346. package/dist/modules/uom/functions.d.ts +5 -0
  1347. package/dist/modules/uom/functions.d.ts.map +1 -0
  1348. package/dist/modules/uom/functions.js +235 -0
  1349. package/dist/modules/uom/functions.js.map +1 -0
  1350. package/dist/modules/uom/index.d.ts +5 -0
  1351. package/dist/modules/uom/index.d.ts.map +1 -0
  1352. package/dist/modules/uom/index.js +19 -0
  1353. package/dist/modules/uom/index.js.map +1 -0
  1354. package/dist/modules/uom/messages.d.ts +3 -0
  1355. package/dist/modules/uom/messages.d.ts.map +1 -0
  1356. package/dist/modules/uom/messages.js +19 -0
  1357. package/dist/modules/uom/messages.js.map +1 -0
  1358. package/dist/modules/uom/models.d.ts +4 -0
  1359. package/dist/modules/uom/models.d.ts.map +1 -0
  1360. package/dist/modules/uom/models.js +34 -0
  1361. package/dist/modules/uom/models.js.map +1 -0
  1362. package/dist/modules/uom/relations.d.ts +3 -0
  1363. package/dist/modules/uom/relations.d.ts.map +1 -0
  1364. package/dist/modules/uom/relations.js +7 -0
  1365. package/dist/modules/uom/relations.js.map +1 -0
  1366. package/dist/modules/user/functions.d.ts +8 -0
  1367. package/dist/modules/user/functions.d.ts.map +1 -0
  1368. package/dist/modules/user/functions.js +1094 -0
  1369. package/dist/modules/user/functions.js.map +1 -0
  1370. package/dist/modules/user/index.d.ts +8 -0
  1371. package/dist/modules/user/index.d.ts.map +1 -0
  1372. package/dist/modules/user/index.js +34 -0
  1373. package/dist/modules/user/index.js.map +1 -0
  1374. package/dist/modules/user/login.d.ts +28 -0
  1375. package/dist/modules/user/login.d.ts.map +1 -0
  1376. package/dist/modules/user/login.js +46 -0
  1377. package/dist/modules/user/login.js.map +1 -0
  1378. package/dist/modules/user/messages.d.ts +115 -0
  1379. package/dist/modules/user/messages.d.ts.map +1 -0
  1380. package/dist/modules/user/messages.js +115 -0
  1381. package/dist/modules/user/messages.js.map +1 -0
  1382. package/dist/modules/user/models.d.ts +16 -0
  1383. package/dist/modules/user/models.d.ts.map +1 -0
  1384. package/dist/modules/user/models.js +168 -0
  1385. package/dist/modules/user/models.js.map +1 -0
  1386. package/dist/modules/user/password.d.ts +11 -0
  1387. package/dist/modules/user/password.d.ts.map +1 -0
  1388. package/dist/modules/user/password.js +74 -0
  1389. package/dist/modules/user/password.js.map +1 -0
  1390. package/dist/modules/user/relations.d.ts +3 -0
  1391. package/dist/modules/user/relations.d.ts.map +1 -0
  1392. package/dist/modules/user/relations.js +31 -0
  1393. package/dist/modules/user/relations.js.map +1 -0
  1394. package/dist/modules/user/roles.d.ts +12 -0
  1395. package/dist/modules/user/roles.d.ts.map +1 -0
  1396. package/dist/modules/user/roles.js +254 -0
  1397. package/dist/modules/user/roles.js.map +1 -0
  1398. package/dist/modules/user/routes.d.ts +3 -0
  1399. package/dist/modules/user/routes.d.ts.map +1 -0
  1400. package/dist/modules/user/routes.js +244 -0
  1401. package/dist/modules/user/routes.js.map +1 -0
  1402. package/dist/modules/user/session-context.d.ts +10 -0
  1403. package/dist/modules/user/session-context.d.ts.map +1 -0
  1404. package/dist/modules/user/session-context.js +31 -0
  1405. package/dist/modules/user/session-context.js.map +1 -0
  1406. package/dist/modules/user_backend/index.d.ts +5 -0
  1407. package/dist/modules/user_backend/index.d.ts.map +1 -0
  1408. package/dist/modules/user_backend/index.js +24 -0
  1409. package/dist/modules/user_backend/index.js.map +1 -0
  1410. package/dist/modules/user_backend/menus.d.ts +3 -0
  1411. package/dist/modules/user_backend/menus.d.ts.map +1 -0
  1412. package/dist/modules/user_backend/menus.js +24 -0
  1413. package/dist/modules/user_backend/menus.js.map +1 -0
  1414. package/dist/modules/user_backend/messages.d.ts +189 -0
  1415. package/dist/modules/user_backend/messages.d.ts.map +1 -0
  1416. package/dist/modules/user_backend/messages.js +189 -0
  1417. package/dist/modules/user_backend/messages.js.map +1 -0
  1418. package/dist/modules/user_backend/routes.d.ts +3 -0
  1419. package/dist/modules/user_backend/routes.d.ts.map +1 -0
  1420. package/dist/modules/user_backend/routes.js +474 -0
  1421. package/dist/modules/user_backend/routes.js.map +1 -0
  1422. package/dist/modules/user_backend/screens.d.ts +70 -0
  1423. package/dist/modules/user_backend/screens.d.ts.map +1 -0
  1424. package/dist/modules/user_backend/screens.js +308 -0
  1425. package/dist/modules/user_backend/screens.js.map +1 -0
  1426. package/dist/modules/website/access.d.ts +15 -0
  1427. package/dist/modules/website/access.d.ts.map +1 -0
  1428. package/dist/modules/website/access.js +39 -0
  1429. package/dist/modules/website/access.js.map +1 -0
  1430. package/dist/modules/website/cms.d.ts +3 -0
  1431. package/dist/modules/website/cms.d.ts.map +1 -0
  1432. package/dist/modules/website/cms.js +1142 -0
  1433. package/dist/modules/website/cms.js.map +1 -0
  1434. package/dist/modules/website/content-types.d.ts +4 -0
  1435. package/dist/modules/website/content-types.d.ts.map +1 -0
  1436. package/dist/modules/website/content-types.js +30 -0
  1437. package/dist/modules/website/content-types.js.map +1 -0
  1438. package/dist/modules/website/customer-password.d.ts +4 -0
  1439. package/dist/modules/website/customer-password.d.ts.map +1 -0
  1440. package/dist/modules/website/customer-password.js +51 -0
  1441. package/dist/modules/website/customer-password.js.map +1 -0
  1442. package/dist/modules/website/customer-routes.d.ts +3 -0
  1443. package/dist/modules/website/customer-routes.d.ts.map +1 -0
  1444. package/dist/modules/website/customer-routes.js +322 -0
  1445. package/dist/modules/website/customer-routes.js.map +1 -0
  1446. package/dist/modules/website/customer.d.ts +5 -0
  1447. package/dist/modules/website/customer.d.ts.map +1 -0
  1448. package/dist/modules/website/customer.js +442 -0
  1449. package/dist/modules/website/customer.js.map +1 -0
  1450. package/dist/modules/website/functions.d.ts +3 -0
  1451. package/dist/modules/website/functions.d.ts.map +1 -0
  1452. package/dist/modules/website/functions.js +96 -0
  1453. package/dist/modules/website/functions.js.map +1 -0
  1454. package/dist/modules/website/index.d.ts +4 -0
  1455. package/dist/modules/website/index.d.ts.map +1 -0
  1456. package/dist/modules/website/index.js +152 -0
  1457. package/dist/modules/website/index.js.map +1 -0
  1458. package/dist/modules/website/jobs.d.ts +3 -0
  1459. package/dist/modules/website/jobs.d.ts.map +1 -0
  1460. package/dist/modules/website/jobs.js +25 -0
  1461. package/dist/modules/website/jobs.js.map +1 -0
  1462. package/dist/modules/website/joints.d.ts +4 -0
  1463. package/dist/modules/website/joints.d.ts.map +1 -0
  1464. package/dist/modules/website/joints.js +7 -0
  1465. package/dist/modules/website/joints.js.map +1 -0
  1466. package/dist/modules/website/models.d.ts +8 -0
  1467. package/dist/modules/website/models.d.ts.map +1 -0
  1468. package/dist/modules/website/models.js +260 -0
  1469. package/dist/modules/website/models.js.map +1 -0
  1470. package/dist/modules/website/sections.d.ts +8 -0
  1471. package/dist/modules/website/sections.d.ts.map +1 -0
  1472. package/dist/modules/website/sections.js +16 -0
  1473. package/dist/modules/website/sections.js.map +1 -0
  1474. package/dist/modules/website/tokens.d.ts +2 -0
  1475. package/dist/modules/website/tokens.d.ts.map +1 -0
  1476. package/dist/modules/website/tokens.js +5 -0
  1477. package/dist/modules/website/tokens.js.map +1 -0
  1478. package/dist/modules/website/types.d.ts +6 -0
  1479. package/dist/modules/website/types.d.ts.map +1 -0
  1480. package/dist/modules/website/types.js +2 -0
  1481. package/dist/modules/website/types.js.map +1 -0
  1482. package/dist/modules/website/views.d.ts +4 -0
  1483. package/dist/modules/website/views.d.ts.map +1 -0
  1484. package/dist/modules/website/views.js +5 -0
  1485. package/dist/modules/website/views.js.map +1 -0
  1486. package/dist/modules/website_backend/index.d.ts +3 -0
  1487. package/dist/modules/website_backend/index.d.ts.map +1 -0
  1488. package/dist/modules/website_backend/index.js +290 -0
  1489. package/dist/modules/website_backend/index.js.map +1 -0
  1490. package/dist/modules/website_backend/menus.d.ts +3 -0
  1491. package/dist/modules/website_backend/menus.d.ts.map +1 -0
  1492. package/dist/modules/website_backend/menus.js +54 -0
  1493. package/dist/modules/website_backend/menus.js.map +1 -0
  1494. package/dist/modules/website_backend/routes.d.ts +3 -0
  1495. package/dist/modules/website_backend/routes.d.ts.map +1 -0
  1496. package/dist/modules/website_backend/routes.js +625 -0
  1497. package/dist/modules/website_backend/routes.js.map +1 -0
  1498. package/dist/modules/website_backend/screens.d.ts +114 -0
  1499. package/dist/modules/website_backend/screens.d.ts.map +1 -0
  1500. package/dist/modules/website_backend/screens.js +625 -0
  1501. package/dist/modules/website_backend/screens.js.map +1 -0
  1502. package/dist/modules/website_form/functions.d.ts +3 -0
  1503. package/dist/modules/website_form/functions.d.ts.map +1 -0
  1504. package/dist/modules/website_form/functions.js +305 -0
  1505. package/dist/modules/website_form/functions.js.map +1 -0
  1506. package/dist/modules/website_form/index.d.ts +3 -0
  1507. package/dist/modules/website_form/index.d.ts.map +1 -0
  1508. package/dist/modules/website_form/index.js +72 -0
  1509. package/dist/modules/website_form/index.js.map +1 -0
  1510. package/dist/modules/website_form/models.d.ts +3 -0
  1511. package/dist/modules/website_form/models.d.ts.map +1 -0
  1512. package/dist/modules/website_form/models.js +46 -0
  1513. package/dist/modules/website_form/models.js.map +1 -0
  1514. package/dist/modules/website_form/routes.d.ts +3 -0
  1515. package/dist/modules/website_form/routes.d.ts.map +1 -0
  1516. package/dist/modules/website_form/routes.js +74 -0
  1517. package/dist/modules/website_form/routes.js.map +1 -0
  1518. package/dist/modules/website_form/sections.d.ts +3 -0
  1519. package/dist/modules/website_form/sections.d.ts.map +1 -0
  1520. package/dist/modules/website_form/sections.js +7 -0
  1521. package/dist/modules/website_form/sections.js.map +1 -0
  1522. package/dist/modules/website_hospitality/content-types.d.ts +3 -0
  1523. package/dist/modules/website_hospitality/content-types.d.ts.map +1 -0
  1524. package/dist/modules/website_hospitality/content-types.js +9 -0
  1525. package/dist/modules/website_hospitality/content-types.js.map +1 -0
  1526. package/dist/modules/website_hospitality/functions.d.ts +3 -0
  1527. package/dist/modules/website_hospitality/functions.d.ts.map +1 -0
  1528. package/dist/modules/website_hospitality/functions.js +296 -0
  1529. package/dist/modules/website_hospitality/functions.js.map +1 -0
  1530. package/dist/modules/website_hospitality/index.d.ts +3 -0
  1531. package/dist/modules/website_hospitality/index.d.ts.map +1 -0
  1532. package/dist/modules/website_hospitality/index.js +67 -0
  1533. package/dist/modules/website_hospitality/index.js.map +1 -0
  1534. package/dist/modules/website_hospitality/models.d.ts +3 -0
  1535. package/dist/modules/website_hospitality/models.d.ts.map +1 -0
  1536. package/dist/modules/website_hospitality/models.js +49 -0
  1537. package/dist/modules/website_hospitality/models.js.map +1 -0
  1538. package/dist/modules/website_hospitality/routes.d.ts +3 -0
  1539. package/dist/modules/website_hospitality/routes.d.ts.map +1 -0
  1540. package/dist/modules/website_hospitality/routes.js +78 -0
  1541. package/dist/modules/website_hospitality/routes.js.map +1 -0
  1542. package/dist/modules/website_hospitality/sections.d.ts +3 -0
  1543. package/dist/modules/website_hospitality/sections.d.ts.map +1 -0
  1544. package/dist/modules/website_hospitality/sections.js +11 -0
  1545. package/dist/modules/website_hospitality/sections.js.map +1 -0
  1546. package/dist/modules/website_menu/functions.d.ts +3 -0
  1547. package/dist/modules/website_menu/functions.d.ts.map +1 -0
  1548. package/dist/modules/website_menu/functions.js +79 -0
  1549. package/dist/modules/website_menu/functions.js.map +1 -0
  1550. package/dist/modules/website_menu/index.d.ts +3 -0
  1551. package/dist/modules/website_menu/index.d.ts.map +1 -0
  1552. package/dist/modules/website_menu/index.js +31 -0
  1553. package/dist/modules/website_menu/index.js.map +1 -0
  1554. package/dist/modules/website_menu/models.d.ts +3 -0
  1555. package/dist/modules/website_menu/models.d.ts.map +1 -0
  1556. package/dist/modules/website_menu/models.js +15 -0
  1557. package/dist/modules/website_menu/models.js.map +1 -0
  1558. package/dist/modules/website_menu/sections.d.ts +3 -0
  1559. package/dist/modules/website_menu/sections.d.ts.map +1 -0
  1560. package/dist/modules/website_menu/sections.js +4 -0
  1561. package/dist/modules/website_menu/sections.js.map +1 -0
  1562. package/dist/modules/website_menu/views.d.ts +3 -0
  1563. package/dist/modules/website_menu/views.d.ts.map +1 -0
  1564. package/dist/modules/website_menu/views.js +4 -0
  1565. package/dist/modules/website_menu/views.js.map +1 -0
  1566. package/dist/modules/website_retail/content-types.d.ts +3 -0
  1567. package/dist/modules/website_retail/content-types.d.ts.map +1 -0
  1568. package/dist/modules/website_retail/content-types.js +10 -0
  1569. package/dist/modules/website_retail/content-types.js.map +1 -0
  1570. package/dist/modules/website_retail/functions.d.ts +3 -0
  1571. package/dist/modules/website_retail/functions.d.ts.map +1 -0
  1572. package/dist/modules/website_retail/functions.js +321 -0
  1573. package/dist/modules/website_retail/functions.js.map +1 -0
  1574. package/dist/modules/website_retail/index.d.ts +3 -0
  1575. package/dist/modules/website_retail/index.d.ts.map +1 -0
  1576. package/dist/modules/website_retail/index.js +63 -0
  1577. package/dist/modules/website_retail/index.js.map +1 -0
  1578. package/dist/modules/website_retail/models.d.ts +3 -0
  1579. package/dist/modules/website_retail/models.d.ts.map +1 -0
  1580. package/dist/modules/website_retail/models.js +50 -0
  1581. package/dist/modules/website_retail/models.js.map +1 -0
  1582. package/dist/modules/website_retail/sections.d.ts +3 -0
  1583. package/dist/modules/website_retail/sections.d.ts.map +1 -0
  1584. package/dist/modules/website_retail/sections.js +11 -0
  1585. package/dist/modules/website_retail/sections.js.map +1 -0
  1586. package/dist/modules/website_search/client/search.d.mts +6 -0
  1587. package/dist/modules/website_search/client/search.d.mts.map +1 -0
  1588. package/dist/modules/website_search/client/search.mjs +25 -0
  1589. package/dist/modules/website_search/client/search.mjs.map +1 -0
  1590. package/dist/modules/website_search/fills.d.ts +3 -0
  1591. package/dist/modules/website_search/fills.d.ts.map +1 -0
  1592. package/dist/modules/website_search/fills.js +5 -0
  1593. package/dist/modules/website_search/fills.js.map +1 -0
  1594. package/dist/modules/website_search/index.d.ts +3 -0
  1595. package/dist/modules/website_search/index.d.ts.map +1 -0
  1596. package/dist/modules/website_search/index.js +28 -0
  1597. package/dist/modules/website_search/index.js.map +1 -0
  1598. package/dist/modules/website_search/islands.d.ts +7 -0
  1599. package/dist/modules/website_search/islands.d.ts.map +1 -0
  1600. package/dist/modules/website_search/islands.js +23 -0
  1601. package/dist/modules/website_search/islands.js.map +1 -0
  1602. package/dist/modules/website_seo/extend.d.ts +7 -0
  1603. package/dist/modules/website_seo/extend.d.ts.map +1 -0
  1604. package/dist/modules/website_seo/extend.js +20 -0
  1605. package/dist/modules/website_seo/extend.js.map +1 -0
  1606. package/dist/modules/website_seo/fills.d.ts +3 -0
  1607. package/dist/modules/website_seo/fills.d.ts.map +1 -0
  1608. package/dist/modules/website_seo/fills.js +8 -0
  1609. package/dist/modules/website_seo/fills.js.map +1 -0
  1610. package/dist/modules/website_seo/index.d.ts +3 -0
  1611. package/dist/modules/website_seo/index.d.ts.map +1 -0
  1612. package/dist/modules/website_seo/index.js +30 -0
  1613. package/dist/modules/website_seo/index.js.map +1 -0
  1614. package/dist/modules/website_seo/views.d.ts +3 -0
  1615. package/dist/modules/website_seo/views.d.ts.map +1 -0
  1616. package/dist/modules/website_seo/views.js +5 -0
  1617. package/dist/modules/website_seo/views.js.map +1 -0
  1618. package/dist/themes/default/index.d.ts +3 -0
  1619. package/dist/themes/default/index.d.ts.map +1 -0
  1620. package/dist/themes/default/index.js +16 -0
  1621. package/dist/themes/default/index.js.map +1 -0
  1622. package/dist/themes/default/templates/layout.ktl +7 -0
  1623. package/dist/themes/default/templates/product.detail.ktl +10 -0
  1624. package/dist/themes/default/templates/product.related_row.ktl +1 -0
  1625. package/dist/themes/hospitality/assets/theme.css +109 -0
  1626. package/dist/themes/hospitality/index.d.ts +3 -0
  1627. package/dist/themes/hospitality/index.d.ts.map +1 -0
  1628. package/dist/themes/hospitality/index.js +26 -0
  1629. package/dist/themes/hospitality/index.js.map +1 -0
  1630. package/dist/themes/hospitality/templates/layout.ktl +17 -0
  1631. package/dist/themes/hospitality/templates/menu.item.ktl +1 -0
  1632. package/dist/themes/hospitality/templates/menu.primary.ktl +1 -0
  1633. package/dist/themes/hospitality/templates/website.hero.ktl +6 -0
  1634. package/dist/themes/hospitality/templates/website.page.ktl +1 -0
  1635. package/dist/themes/hospitality/templates/website.rich_text.ktl +3 -0
  1636. package/dist/themes/hospitality/templates/website_form.form.ktl +1 -0
  1637. package/dist/themes/hospitality/templates/website_hospitality.booking.ktl +1 -0
  1638. package/dist/themes/hospitality/templates/website_hospitality.stays.ktl +1 -0
  1639. package/dist/themes/hospitality/tokens.d.ts +2 -0
  1640. package/dist/themes/hospitality/tokens.d.ts.map +1 -0
  1641. package/dist/themes/hospitality/tokens.js +9 -0
  1642. package/dist/themes/hospitality/tokens.js.map +1 -0
  1643. package/dist/themes/paper/index.d.ts +9 -0
  1644. package/dist/themes/paper/index.d.ts.map +1 -0
  1645. package/dist/themes/paper/index.js +30 -0
  1646. package/dist/themes/paper/index.js.map +1 -0
  1647. package/dist/themes/paper/templates/layout.ktl +14 -0
  1648. package/dist/themes/paper/templates/menu.item.ktl +3 -0
  1649. package/dist/themes/paper/templates/menu.primary.ktl +3 -0
  1650. package/dist/themes/paper/templates/website.hero.ktl +6 -0
  1651. package/dist/themes/paper/templates/website.page.ktl +2 -0
  1652. package/dist/themes/paper/templates/website.rich_text.ktl +4 -0
  1653. package/dist/themes/paper/tokens.d.ts +2 -0
  1654. package/dist/themes/paper/tokens.d.ts.map +1 -0
  1655. package/dist/themes/paper/tokens.js +11 -0
  1656. package/dist/themes/paper/tokens.js.map +1 -0
  1657. package/dist/themes/retail/assets/theme.css +114 -0
  1658. package/dist/themes/retail/index.d.ts +3 -0
  1659. package/dist/themes/retail/index.d.ts.map +1 -0
  1660. package/dist/themes/retail/index.js +26 -0
  1661. package/dist/themes/retail/index.js.map +1 -0
  1662. package/dist/themes/retail/templates/layout.ktl +5 -0
  1663. package/dist/themes/retail/templates/menu.item.ktl +1 -0
  1664. package/dist/themes/retail/templates/menu.primary.ktl +1 -0
  1665. package/dist/themes/retail/templates/website.hero.ktl +1 -0
  1666. package/dist/themes/retail/templates/website.page.ktl +1 -0
  1667. package/dist/themes/retail/templates/website.rich_text.ktl +1 -0
  1668. package/dist/themes/retail/templates/website_form.form.ktl +1 -0
  1669. package/dist/themes/retail/templates/website_retail.cart.ktl +1 -0
  1670. package/dist/themes/retail/templates/website_retail.products.ktl +1 -0
  1671. package/dist/themes/retail/tokens.d.ts +2 -0
  1672. package/dist/themes/retail/tokens.d.ts.map +1 -0
  1673. package/dist/themes/retail/tokens.js +9 -0
  1674. package/dist/themes/retail/tokens.js.map +1 -0
  1675. package/dist/ui/actions.d.ts +38 -0
  1676. package/dist/ui/actions.d.ts.map +1 -0
  1677. package/dist/ui/actions.js +20 -0
  1678. package/dist/ui/actions.js.map +1 -0
  1679. package/dist/ui/activity.d.ts +4 -0
  1680. package/dist/ui/activity.d.ts.map +1 -0
  1681. package/dist/ui/activity.js +73 -0
  1682. package/dist/ui/activity.js.map +1 -0
  1683. package/dist/ui/attachments.d.ts +18 -0
  1684. package/dist/ui/attachments.d.ts.map +1 -0
  1685. package/dist/ui/attachments.js +15 -0
  1686. package/dist/ui/attachments.js.map +1 -0
  1687. package/dist/ui/auth.d.ts +9 -0
  1688. package/dist/ui/auth.d.ts.map +1 -0
  1689. package/dist/ui/auth.js +44 -0
  1690. package/dist/ui/auth.js.map +1 -0
  1691. package/dist/ui/calendar.d.ts +4 -0
  1692. package/dist/ui/calendar.d.ts.map +1 -0
  1693. package/dist/ui/calendar.js +51 -0
  1694. package/dist/ui/calendar.js.map +1 -0
  1695. package/dist/ui/chrome.d.ts +66 -0
  1696. package/dist/ui/chrome.d.ts.map +1 -0
  1697. package/dist/ui/chrome.js +39 -0
  1698. package/dist/ui/chrome.js.map +1 -0
  1699. package/dist/ui/client/activity-view.d.mts +12 -0
  1700. package/dist/ui/client/activity-view.d.mts.map +1 -0
  1701. package/dist/ui/client/activity-view.mjs +393 -0
  1702. package/dist/ui/client/activity-view.mjs.map +1 -0
  1703. package/dist/ui/client/activity.css +269 -0
  1704. package/dist/ui/client/activity.d.mts +11 -0
  1705. package/dist/ui/client/activity.d.mts.map +1 -0
  1706. package/dist/ui/client/activity.mjs +10 -0
  1707. package/dist/ui/client/activity.mjs.map +1 -0
  1708. package/dist/ui/client/calendar-view.d.mts +5 -0
  1709. package/dist/ui/client/calendar-view.d.mts.map +1 -0
  1710. package/dist/ui/client/calendar-view.mjs +266 -0
  1711. package/dist/ui/client/calendar-view.mjs.map +1 -0
  1712. package/dist/ui/client/calendar.css +170 -0
  1713. package/dist/ui/client/calendar.d.mts +6 -0
  1714. package/dist/ui/client/calendar.d.mts.map +1 -0
  1715. package/dist/ui/client/calendar.mjs +6 -0
  1716. package/dist/ui/client/calendar.mjs.map +1 -0
  1717. package/dist/ui/client/mail-view.d.mts +9 -0
  1718. package/dist/ui/client/mail-view.d.mts.map +1 -0
  1719. package/dist/ui/client/mail-view.mjs +350 -0
  1720. package/dist/ui/client/mail-view.mjs.map +1 -0
  1721. package/dist/ui/client/mail.css +230 -0
  1722. package/dist/ui/client/mail.d.mts +11 -0
  1723. package/dist/ui/client/mail.d.mts.map +1 -0
  1724. package/dist/ui/client/mail.mjs +10 -0
  1725. package/dist/ui/client/mail.mjs.map +1 -0
  1726. package/dist/ui/data.d.ts +25 -0
  1727. package/dist/ui/data.d.ts.map +1 -0
  1728. package/dist/ui/data.js +23 -0
  1729. package/dist/ui/data.js.map +1 -0
  1730. package/dist/ui/date-picker.d.ts +36 -0
  1731. package/dist/ui/date-picker.d.ts.map +1 -0
  1732. package/dist/ui/date-picker.js +40 -0
  1733. package/dist/ui/date-picker.js.map +1 -0
  1734. package/dist/ui/form.d.ts +67 -0
  1735. package/dist/ui/form.d.ts.map +1 -0
  1736. package/dist/ui/form.js +75 -0
  1737. package/dist/ui/form.js.map +1 -0
  1738. package/dist/ui/format.d.ts +4 -0
  1739. package/dist/ui/format.d.ts.map +1 -0
  1740. package/dist/ui/format.js +33 -0
  1741. package/dist/ui/format.js.map +1 -0
  1742. package/dist/ui/hooks.d.ts +5 -0
  1743. package/dist/ui/hooks.d.ts.map +1 -0
  1744. package/dist/ui/hooks.js +82 -0
  1745. package/dist/ui/hooks.js.map +1 -0
  1746. package/dist/ui/icons.d.ts +12 -0
  1747. package/dist/ui/icons.d.ts.map +1 -0
  1748. package/dist/ui/icons.js +76 -0
  1749. package/dist/ui/icons.js.map +1 -0
  1750. package/dist/ui/index.d.ts +39 -0
  1751. package/dist/ui/index.d.ts.map +1 -0
  1752. package/dist/ui/index.js +39 -0
  1753. package/dist/ui/index.js.map +1 -0
  1754. package/dist/ui/layout.d.ts +80 -0
  1755. package/dist/ui/layout.d.ts.map +1 -0
  1756. package/dist/ui/layout.js +86 -0
  1757. package/dist/ui/layout.js.map +1 -0
  1758. package/dist/ui/mail.d.ts +5 -0
  1759. package/dist/ui/mail.d.ts.map +1 -0
  1760. package/dist/ui/mail.js +69 -0
  1761. package/dist/ui/mail.js.map +1 -0
  1762. package/dist/ui/media.d.ts +42 -0
  1763. package/dist/ui/media.d.ts.map +1 -0
  1764. package/dist/ui/media.js +48 -0
  1765. package/dist/ui/media.js.map +1 -0
  1766. package/dist/ui/modal.d.ts +9 -0
  1767. package/dist/ui/modal.d.ts.map +1 -0
  1768. package/dist/ui/modal.js +13 -0
  1769. package/dist/ui/modal.js.map +1 -0
  1770. package/dist/ui/nav.d.ts +34 -0
  1771. package/dist/ui/nav.d.ts.map +1 -0
  1772. package/dist/ui/nav.js +77 -0
  1773. package/dist/ui/nav.js.map +1 -0
  1774. package/dist/ui/navigation.d.ts +22 -0
  1775. package/dist/ui/navigation.d.ts.map +1 -0
  1776. package/dist/ui/navigation.js +9 -0
  1777. package/dist/ui/navigation.js.map +1 -0
  1778. package/dist/ui/primitives.d.ts +61 -0
  1779. package/dist/ui/primitives.d.ts.map +1 -0
  1780. package/dist/ui/primitives.js +74 -0
  1781. package/dist/ui/primitives.js.map +1 -0
  1782. package/dist/ui/record.d.ts +44 -0
  1783. package/dist/ui/record.d.ts.map +1 -0
  1784. package/dist/ui/record.js +39 -0
  1785. package/dist/ui/record.js.map +1 -0
  1786. package/dist/ui/schedule.d.ts +34 -0
  1787. package/dist/ui/schedule.d.ts.map +1 -0
  1788. package/dist/ui/schedule.js +39 -0
  1789. package/dist/ui/schedule.js.map +1 -0
  1790. package/dist/ui/state.d.ts +19 -0
  1791. package/dist/ui/state.d.ts.map +1 -0
  1792. package/dist/ui/state.js +34 -0
  1793. package/dist/ui/state.js.map +1 -0
  1794. package/dist/ui/surfaces.d.ts +38 -0
  1795. package/dist/ui/surfaces.d.ts.map +1 -0
  1796. package/dist/ui/surfaces.js +36 -0
  1797. package/dist/ui/surfaces.js.map +1 -0
  1798. package/dist/ui/table.d.ts +48 -0
  1799. package/dist/ui/table.d.ts.map +1 -0
  1800. package/dist/ui/table.js +53 -0
  1801. package/dist/ui/table.js.map +1 -0
  1802. package/package.json +57 -0
@@ -0,0 +1,1556 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { text } from '@ketvietlab/ketjs';
3
+ import { viewerOf } from '../backend/routes.js';
4
+ import { backendPage } from '../../ui/index.js';
5
+ import { readForm, seeOther } from '../backend/forms.js';
6
+ import { receiveAttachment } from '../storage/routes.js';
7
+ import { amenitiesScreen, buildingDetailScreen, cleaningTaskDetailScreen, cleaningTasksScreen, folioDetailScreen, foliosScreen, floorDetailScreen, frontDeskScreen, housekeepingRoomDetailScreen, housekeepingRoomsScreen, newPropertyScreen, newRoomScreen, newRoomTypeScreen, policiesScreen, propertiesScreen, propertyDetailScreen, ratePlansScreen, reservationDetailScreen, reservationsScreen, inventoryScreen, roomsScreen, roomDetailScreen, roomTypeDetailScreen, roomTypesScreen, stayDetailScreen, staysScreen, tapeChartScreen, contentScreen, servicesScreen, nightAuditScreen, stayNoticesScreen, } from './screens.js';
8
+ import { addCalendarDays, calendarRange, dateKeyIn, zonedDateTime } from './calendar.js';
9
+ import { CLEANING_TASK_STATES, ROOM_STATUSES, STAY_NOTICE_STATES } from './types.js';
10
+ const frame = async (ctx, url, req) => ({
11
+ navigation: req.headers['x-ket-navigation'] === 'fragment-v1',
12
+ viewer: await viewerOf(ctx, url, req),
13
+ menu: await ctx.menu(url, req),
14
+ menuFilter: url.searchParams.get('menu')?.trim() || null,
15
+ extras: {
16
+ 'nav.items': await ctx.joint(url, req, 'backend:nav.items', { active: url.pathname }),
17
+ 'topbar.end': await ctx.joint(url, req, 'backend:topbar.end'),
18
+ },
19
+ });
20
+ const document = async (ctx, url, req, title, body) => {
21
+ const lang = ctx.localeOf(url, req);
22
+ return backendPage(ctx, req, { lang, title, body });
23
+ };
24
+ const operationErrors = (ctx, url, req, result) => {
25
+ const _ = ctx.translate(ctx.localeOf(url, req));
26
+ const errors = result.errors ?? [];
27
+ return errors.length
28
+ ? errors.map((error) => error.messageKey ? _(error.messageKey, error.params) : _('hospitality_core.feedback.invalidHint'))
29
+ : [_('hospitality_core.feedback.invalidHint')];
30
+ };
31
+ const propertyTimezone = async (ctx, propertyId, url, req) => {
32
+ if (!propertyId)
33
+ return 'UTC';
34
+ const property = (await ctx.call('hospitality_core.getProperty', { id: propertyId }, url, req));
35
+ return property?.timezone || 'UTC';
36
+ };
37
+ const renderReservationDetail = async (ctx, url, req, id, errors = [], attempted, attemptedDeparture) => {
38
+ const reservation = (await ctx.call('hospitality_core.getReservation', { id }, url, req));
39
+ if (!reservation)
40
+ return text('Not found', { status: 404 });
41
+ if (reservation.stayId) {
42
+ reservation.stay = (await ctx.call('hospitality_core.getStay', { id: reservation.stayId }, url, req));
43
+ }
44
+ const timezone = await propertyTimezone(ctx, reservation.propertyId, url, req);
45
+ const [allRooms, roomTypes, partners] = (await Promise.all([
46
+ reservation.state === 'confirmed'
47
+ ? ctx.call('hospitality_core.listRooms', { propertyId: reservation.propertyId, status: 'available' }, url, req)
48
+ : Promise.resolve([]),
49
+ ctx.call('hospitality_core.listRoomTypes', { propertyId: reservation.propertyId }, url, req),
50
+ ctx.call('partner.listPartners', { kind: 'person', limit: 500 }, url, req),
51
+ ]));
52
+ const rooms = allRooms.filter((room) => room.roomTypeId === reservation.roomTypeId);
53
+ const lang = ctx.localeOf(url, req);
54
+ const _ = ctx.translate(lang);
55
+ const amendment = {
56
+ partnerId: attempted?.partnerId ?? reservation.partnerId,
57
+ roomTypeId: attempted?.roomTypeId ?? reservation.roomTypeId,
58
+ checkIn: attempted?.checkIn ?? localDateTime(new Date(reservation.checkIn), timezone),
59
+ checkOut: attempted?.checkOut ?? localDateTime(new Date(reservation.checkOut), timezone),
60
+ adults: attempted?.adults ?? reservation.adults,
61
+ children: attempted?.children ?? reservation.children,
62
+ rate: attempted?.rate ?? String(reservation.rate),
63
+ };
64
+ return document(ctx, url, req, _('hospitality_core.reservation.detail.title', { code: reservation.code }), reservationDetailScreen(_, reservation, rooms, roomTypes, partners, amendment, attemptedDeparture ?? localDateTime(new Date(reservation.checkOut), timezone), lang, timezone, await frame(ctx, url, req), url.searchParams.get('status'), errors));
65
+ };
66
+ const renderStayDetail = async (ctx, url, req, id, errors = []) => {
67
+ const stay = (await ctx.call('hospitality_core.getStay', { id }, url, req));
68
+ if (!stay)
69
+ return text('Not found', { status: 404 });
70
+ const [rooms, partners, documents] = (await Promise.all([
71
+ ctx.call('hospitality_core.listRooms', { propertyId: stay.propertyId, includeArchived: true }, url, req),
72
+ ctx.call('partner.listPartners', { kind: 'person', limit: 500 }, url, req),
73
+ ctx.call('hospitality_core.listGuestDocuments', { stayId: stay.id }, url, req),
74
+ ]));
75
+ const timezone = await propertyTimezone(ctx, stay.propertyId, url, req);
76
+ const lang = ctx.localeOf(url, req);
77
+ const _ = ctx.translate(lang);
78
+ return document(ctx, url, req, _('hospitality_core.stay.detail.title', { code: stay.code }), stayDetailScreen(_, stay, rooms, partners, documents, randomUUID(), lang, timezone, await frame(ctx, url, req), url.searchParams.get('status'), errors));
79
+ };
80
+ const renderFolioDetail = async (ctx, url, req, id, errors = []) => {
81
+ const folio = (await ctx.call('hospitality_core.getFolio', { id }, url, req));
82
+ if (!folio)
83
+ return text('Not found', { status: 404 });
84
+ const timezone = await propertyTimezone(ctx, folio.propertyId, url, req);
85
+ const lang = ctx.localeOf(url, req);
86
+ const _ = ctx.translate(lang);
87
+ return document(ctx, url, req, _('hospitality_core.folio.detail.title', { code: folio.code }), folioDetailScreen(_, folio, lang, timezone, await frame(ctx, url, req), randomUUID(), url.searchParams.get('status'), errors));
88
+ };
89
+ const renderCleaningTaskDetail = async (ctx, url, req, id, errors = []) => {
90
+ const task = (await ctx.call('hospitality_core.getCleaningTask', { id }, url, req));
91
+ if (!task)
92
+ return text('Not found', { status: 404 });
93
+ const timezone = await propertyTimezone(ctx, task.propertyId, url, req);
94
+ const lang = ctx.localeOf(url, req);
95
+ const _ = ctx.translate(lang);
96
+ return document(ctx, url, req, _('hospitality_core.housekeeping.detail.title', { code: task.code }), cleaningTaskDetailScreen(_, task, lang, timezone, await frame(ctx, url, req), url.searchParams.get('status'), errors));
97
+ };
98
+ const renderHousekeepingRoomDetail = async (ctx, url, req, id, errors = []) => {
99
+ const room = (await ctx.call('hospitality_core.getHousekeepingRoom', { id }, url, req));
100
+ if (room?.active !== true)
101
+ return text('Not found', { status: 404 });
102
+ const tasks = (await ctx.call('hospitality_core.listCleaningTasks', { roomId: id, limit: 20 }, url, req));
103
+ const timezone = await propertyTimezone(ctx, room.propertyId, url, req);
104
+ const lang = ctx.localeOf(url, req);
105
+ const _ = ctx.translate(lang);
106
+ return document(ctx, url, req, _('hospitality_core.housekeeping.rooms.detail.title', { code: room.code }), housekeepingRoomDetailScreen(_, room, tasks, lang, timezone, await frame(ctx, url, req), url.searchParams.get('status'), errors));
107
+ };
108
+ const selectedProperty = async (ctx, url, req) => {
109
+ const selected = url.searchParams.get('property')?.trim();
110
+ if (selected)
111
+ return selected;
112
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
113
+ return properties[0]?.id;
114
+ };
115
+ const redirected = (url, state, values = {}) => {
116
+ const params = new URLSearchParams(url.searchParams);
117
+ params.set('status', state);
118
+ for (const [key, value] of Object.entries(values)) {
119
+ if (value)
120
+ params.set(key, value);
121
+ else
122
+ params.delete(key);
123
+ }
124
+ return seeOther(`${url.pathname}?${params.toString()}`);
125
+ };
126
+ const integer = (value, fallback = 0) => {
127
+ const parsed = Number(value ?? fallback);
128
+ return Number.isInteger(parsed) ? parsed : -1;
129
+ };
130
+ const optionalInteger = (value) => value ? integer(value) : undefined;
131
+ const localDateTime = (value, timezone) => {
132
+ const parts = Object.fromEntries(new Intl.DateTimeFormat('en', {
133
+ timeZone: timezone,
134
+ hourCycle: 'h23',
135
+ hour: '2-digit',
136
+ minute: '2-digit',
137
+ })
138
+ .formatToParts(value)
139
+ .filter((part) => part.type !== 'literal')
140
+ .map((part) => [part.type, part.value]));
141
+ return `${dateKeyIn(value, timezone)}T${parts.hour}:${parts.minute}`;
142
+ };
143
+ const instantFromLocal = (value, timezone) => {
144
+ const matched = /^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2})$/.exec(String(value ?? ''));
145
+ if (!matched)
146
+ return null;
147
+ const hour = Number(matched[2]);
148
+ const minute = Number(matched[3]);
149
+ if (hour > 23 || minute > 59)
150
+ return null;
151
+ const instant = zonedDateTime(matched[1], hour, minute, timezone);
152
+ if (!Number.isFinite(instant.getTime()) || localDateTime(instant, timezone) !== value)
153
+ return null;
154
+ return instant.toISOString();
155
+ };
156
+ const contentSelection = async (ctx, url, req) => {
157
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
158
+ const requestedProperty = url.searchParams.get('property')?.trim();
159
+ const propertyId = properties.some((row) => row.id === requestedProperty)
160
+ ? requestedProperty
161
+ : properties[0]?.id;
162
+ const roomTypes = propertyId
163
+ ? (await ctx.call('hospitality_core.listRoomTypes', { propertyId }, url, req))
164
+ : [];
165
+ const requestedTarget = url.searchParams.get('target')?.trim() || 'property';
166
+ const requestedRoomType = requestedTarget.startsWith('room_type:')
167
+ ? requestedTarget.slice('room_type:'.length)
168
+ : null;
169
+ const roomTypeId = roomTypes.some((row) => row.id === requestedRoomType) ? requestedRoomType : null;
170
+ return {
171
+ properties,
172
+ roomTypes,
173
+ propertyId,
174
+ roomTypeId,
175
+ target: roomTypeId ? `room_type:${roomTypeId}` : 'property',
176
+ };
177
+ };
178
+ const contentQuery = (url, selection) => {
179
+ const query = new URLSearchParams();
180
+ if (selection.propertyId)
181
+ query.set('property', selection.propertyId);
182
+ query.set('target', selection.target);
183
+ const lang = url.searchParams.get('lang')?.trim();
184
+ if (lang)
185
+ query.set('lang', lang);
186
+ return query.toString();
187
+ };
188
+ const contentRedirect = (url, selection, status) => {
189
+ const query = new URLSearchParams(contentQuery(url, selection));
190
+ query.set('status', status);
191
+ return seeOther(`/admin/hospitality/content?${query.toString()}`);
192
+ };
193
+ const contentImages = async (ctx, url, req, selection) => {
194
+ if (!selection.propertyId)
195
+ return [];
196
+ return (await ctx.call('hospitality_core.listContentImages', selection.roomTypeId ? { roomTypeId: selection.roomTypeId } : { propertyId: selection.propertyId }, url, req));
197
+ };
198
+ const defaultPropertyValues = (id) => ({
199
+ id,
200
+ code: '',
201
+ name: '',
202
+ publicName: null,
203
+ accommodationType: 'hotel',
204
+ timezone: 'Asia/Ho_Chi_Minh',
205
+ defaultCheckIn: '14:00',
206
+ defaultCheckOut: '12:00',
207
+ enforceTimes: true,
208
+ longStayBillOnCheckIn: true,
209
+ starRating: 0,
210
+ description: null,
211
+ houseRules: null,
212
+ childrenStayFree: false,
213
+ minimumGuestAge: null,
214
+ defaultCancellationPolicyId: null,
215
+ });
216
+ const propertyFormValues = (id, form, current = null) => ({
217
+ id,
218
+ code: form.code?.trim() ?? current?.code ?? '',
219
+ name: form.name?.trim() ?? current?.name ?? '',
220
+ publicName: form.publicName?.trim() || null,
221
+ accommodationType: form.accommodationType?.trim() ?? current?.accommodationType ?? 'hotel',
222
+ timezone: form.timezone?.trim() ?? current?.timezone ?? 'Asia/Ho_Chi_Minh',
223
+ defaultCheckIn: form.defaultCheckIn?.trim() ?? current?.defaultCheckIn ?? '14:00',
224
+ defaultCheckOut: form.defaultCheckOut?.trim() ?? current?.defaultCheckOut ?? '12:00',
225
+ enforceTimes: form.enforceTimes === '1',
226
+ longStayBillOnCheckIn: form.longStayBillOnCheckIn === '1',
227
+ starRating: integer(form.starRating, current?.starRating ?? 0),
228
+ description: form.description?.trim() || null,
229
+ houseRules: form.houseRules?.trim() || null,
230
+ childrenStayFree: form.childrenStayFree === '1',
231
+ minimumGuestAge: form.minimumGuestAge ? integer(form.minimumGuestAge) : null,
232
+ defaultCancellationPolicyId: form.defaultCancellationPolicyId?.trim() || null,
233
+ });
234
+ const propertySaveInput = (values, current = null) => ({
235
+ ...values,
236
+ street1: current?.street1 ?? null,
237
+ street2: current?.street2 ?? null,
238
+ locality: current?.locality ?? null,
239
+ postalCode: current?.postalCode ?? null,
240
+ countryCode: current?.countryCode ?? null,
241
+ divisionId: current?.divisionId ?? null,
242
+ divisionText: current?.divisionText ?? null,
243
+ latitude: current?.latitude ?? null,
244
+ longitude: current?.longitude ?? null,
245
+ });
246
+ const renderPropertyDetail = async (ctx, url, req, id, errors = [], attempted) => {
247
+ const [property, policies] = (await Promise.all([
248
+ ctx.call('hospitality_core.getProperty', { id }, url, req),
249
+ ctx.call('hospitality_core.listCancellationPolicies', {}, url, req),
250
+ ]));
251
+ if (!property)
252
+ return text('Not found', { status: 404 });
253
+ const lang = ctx.localeOf(url, req);
254
+ return document(ctx, url, req, property.name, propertyDetailScreen(ctx.translate(lang), property, policies, lang, await frame(ctx, url, req), url.searchParams.get('status'), errors, attempted));
255
+ };
256
+ const defaultRoomTypeValues = (id, propertyId) => ({
257
+ id,
258
+ propertyId,
259
+ code: '',
260
+ name: '',
261
+ publicName: null,
262
+ description: null,
263
+ defaultCapacity: 2,
264
+ maxAdults: 2,
265
+ maxChildren: 0,
266
+ maxInfants: 0,
267
+ maxExtraBeds: 0,
268
+ sizeSqm: null,
269
+ viewType: null,
270
+ sharedBathroom: false,
271
+ baseRate: '0',
272
+ color: '#2563eb',
273
+ cancellationPolicyId: null,
274
+ published: false,
275
+ });
276
+ const roomTypeFormValues = (id, form, current = null) => ({
277
+ id,
278
+ propertyId: form.propertyId?.trim() ?? current?.propertyId ?? '',
279
+ code: form.code?.trim() ?? current?.code ?? '',
280
+ name: form.name?.trim() ?? current?.name ?? '',
281
+ publicName: form.publicName?.trim() || null,
282
+ description: form.description?.trim() || null,
283
+ defaultCapacity: integer(form.defaultCapacity, current?.defaultCapacity ?? 2),
284
+ maxAdults: integer(form.maxAdults, current?.maxAdults ?? 2),
285
+ maxChildren: integer(form.maxChildren, current?.maxChildren ?? 0),
286
+ maxInfants: integer(form.maxInfants, current?.maxInfants ?? 0),
287
+ maxExtraBeds: integer(form.maxExtraBeds, current?.maxExtraBeds ?? 0),
288
+ sizeSqm: form.sizeSqm?.trim() || null,
289
+ viewType: form.viewType?.trim() || null,
290
+ sharedBathroom: form.sharedBathroom === '1',
291
+ baseRate: form.baseRate?.trim() ?? String(current?.baseRate ?? '0'),
292
+ color: form.color?.trim() || null,
293
+ cancellationPolicyId: form.cancellationPolicyId?.trim() || null,
294
+ published: form.published === '1',
295
+ });
296
+ const roomTypeInputErrors = (ctx, url, req, values) => {
297
+ const decimal = (value) => /^-?(?:\d+(?:\.\d*)?|\.\d+)$/.test(String(value ?? '').trim()) && Number.isFinite(Number(value));
298
+ if (decimal(values.baseRate) && (values.sizeSqm == null || decimal(values.sizeSqm)))
299
+ return [];
300
+ return [ctx.translate(ctx.localeOf(url, req))('hospitality_core.validation.decimal')];
301
+ };
302
+ const renderRoomTypeDetail = async (ctx, url, req, id, errors = [], attempted) => {
303
+ const [roomType, properties, policies] = (await Promise.all([
304
+ ctx.call('hospitality_core.getRoomType', { id }, url, req),
305
+ ctx.call('hospitality_core.listProperties', { includeArchived: true }, url, req),
306
+ ctx.call('hospitality_core.listCancellationPolicies', { includeArchived: true }, url, req),
307
+ ]));
308
+ if (!roomType)
309
+ return text('Not found', { status: 404 });
310
+ const lang = ctx.localeOf(url, req);
311
+ const _ = ctx.translate(lang);
312
+ return document(ctx, url, req, roomType.name, roomTypeDetailScreen(_, roomType, properties, policies, lang, await frame(ctx, url, req), url.searchParams.get('status'), errors, attempted));
313
+ };
314
+ const buildingFormValues = (id, form, current = null) => ({
315
+ id,
316
+ propertyId: form.propertyId?.trim() ?? current?.propertyId ?? '',
317
+ code: form.code?.trim() ?? current?.code ?? '',
318
+ name: form.name?.trim() ?? current?.name ?? '',
319
+ sequence: integer(form.sequence, current?.sequence ?? 10),
320
+ });
321
+ const renderBuildingDetail = async (ctx, url, req, id, errors = [], attempted) => {
322
+ const building = (await ctx.call('hospitality_core.getBuilding', { id }, url, req));
323
+ if (!building)
324
+ return text('Not found', { status: 404 });
325
+ const lang = ctx.localeOf(url, req);
326
+ return document(ctx, url, req, building.name, buildingDetailScreen(ctx.translate(lang), building, attempted ?? building, lang, await frame(ctx, url, req), url.searchParams.get('status'), errors));
327
+ };
328
+ const floorFormValues = (id, form, current = null) => ({
329
+ id,
330
+ propertyId: form.propertyId?.trim() ?? current?.propertyId ?? '',
331
+ buildingId: form.buildingId?.trim() ?? current?.buildingId ?? '',
332
+ code: form.code?.trim() ?? current?.code ?? '',
333
+ name: form.name?.trim() ?? current?.name ?? '',
334
+ sequence: integer(form.sequence, current?.sequence ?? 10),
335
+ });
336
+ const renderFloorDetail = async (ctx, url, req, id, errors = [], attempted) => {
337
+ const floor = (await ctx.call('hospitality_core.getFloor', { id }, url, req));
338
+ if (!floor)
339
+ return text('Not found', { status: 404 });
340
+ const lang = ctx.localeOf(url, req);
341
+ return document(ctx, url, req, floor.name, floorDetailScreen(ctx.translate(lang), floor, attempted ?? floor, lang, await frame(ctx, url, req), url.searchParams.get('status'), errors));
342
+ };
343
+ const roomFormValues = (id, form, current = null) => ({
344
+ id,
345
+ propertyId: form.propertyId?.trim() ?? current?.propertyId ?? '',
346
+ roomTypeId: form.roomTypeId?.trim() ?? current?.roomTypeId ?? '',
347
+ buildingId: form.buildingId?.trim() || null,
348
+ floorId: form.floorId?.trim() || null,
349
+ code: form.code?.trim() ?? current?.code ?? '',
350
+ name: form.name?.trim() ?? current?.name ?? '',
351
+ capacity: integer(form.capacity, current?.capacity ?? 1),
352
+ });
353
+ const defaultRoomValues = (id, propertyId, roomTypeId) => ({
354
+ id,
355
+ propertyId,
356
+ roomTypeId,
357
+ buildingId: null,
358
+ floorId: null,
359
+ code: '',
360
+ name: '',
361
+ capacity: 2,
362
+ });
363
+ const roomOptions = async (ctx, url, req, propertyId, includeArchived = false) => {
364
+ const properties = (await ctx.call('hospitality_core.listProperties', includeArchived ? { includeArchived: true } : {}, url, req));
365
+ const selected = properties.some((row) => row.id === propertyId) ? propertyId : properties[0]?.id;
366
+ if (!selected)
367
+ return { properties, propertyId: undefined, roomTypes: [], buildings: [], floors: [] };
368
+ const [roomTypes, buildings, floors] = (await Promise.all([
369
+ ctx.call('hospitality_core.listRoomTypes', { propertyId: selected, includeArchived: includeArchived || undefined }, url, req),
370
+ ctx.call('hospitality_core.listBuildings', { propertyId: selected, includeArchived: includeArchived || undefined }, url, req),
371
+ ctx.call('hospitality_core.listFloors', { propertyId: selected, includeArchived: includeArchived || undefined }, url, req),
372
+ ]));
373
+ return { properties, propertyId: selected, roomTypes, buildings, floors };
374
+ };
375
+ const renderRooms = async (ctx, url, req, errors = []) => {
376
+ const requestedProperty = url.searchParams.get('property')?.trim() || undefined;
377
+ const options = await roomOptions(ctx, url, req, requestedProperty);
378
+ const [rows, buildings, floors] = options.propertyId
379
+ ? (await Promise.all([
380
+ ctx.call('hospitality_core.listRooms', { propertyId: options.propertyId }, url, req),
381
+ ctx.call('hospitality_core.listBuildings', { propertyId: options.propertyId, includeArchived: true }, url, req),
382
+ ctx.call('hospitality_core.listFloors', { propertyId: options.propertyId, includeArchived: true }, url, req),
383
+ ]))
384
+ : [[], [], []];
385
+ const lang = ctx.localeOf(url, req);
386
+ const _ = ctx.translate(lang);
387
+ return document(ctx, url, req, _('hospitality_core.screen.rooms.title'), roomsScreen(_, { rows, ...options, buildings, floors }, lang, await frame(ctx, url, req), url.searchParams.get('status'), errors));
388
+ };
389
+ const renderRoomDetail = async (ctx, url, req, id, errors = [], attempted) => {
390
+ const room = (await ctx.call('hospitality_core.getRoom', { id }, url, req));
391
+ if (!room)
392
+ return text('Not found', { status: 404 });
393
+ const options = await roomOptions(ctx, url, req, room.propertyId, true);
394
+ const lang = ctx.localeOf(url, req);
395
+ return document(ctx, url, req, room.name, roomDetailScreen(ctx.translate(lang), room, attempted ?? room, options.properties, options.roomTypes, options.buildings, options.floors, lang, await frame(ctx, url, req), url.searchParams.get('status'), errors));
396
+ };
397
+ export const routes = {
398
+ '/admin/hospitality/front-desk': (ctx) => async (url, req) => {
399
+ const lang = ctx.localeOf(url, req);
400
+ const _ = ctx.translate(lang);
401
+ const propertyId = await selectedProperty(ctx, url, req);
402
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
403
+ const range = calendarRange(url.searchParams.get('date'), 1, timezone);
404
+ const [stays, inHouseStays, openFolios] = (await Promise.all([
405
+ ctx.call('hospitality_core.listStays', { propertyId, from: range.from, to: range.to }, url, req),
406
+ ctx.call('hospitality_core.listStays', { propertyId, state: 'checked_in' }, url, req),
407
+ ctx.call('hospitality_core.listFolios', { propertyId, state: 'open' }, url, req),
408
+ ]));
409
+ const inRange = (value) => value >= range.from && value < range.to;
410
+ const now = new Date().toISOString();
411
+ const overdue = inHouseStays
412
+ .filter((stay) => stay.checkOut < now)
413
+ .sort((left, right) => left.checkOut.localeCompare(right.checkOut));
414
+ const overdueIds = new Set(overdue.map((stay) => stay.id));
415
+ return document(ctx, url, req, _('hospitality_core.screen.frontDesk.title'), frontDeskScreen(_, stays.filter((stay) => !overdueIds.has(stay.id)), overdue, {
416
+ arrivals: stays.filter((stay) => stay.state === 'draft' && inRange(stay.checkIn)).length,
417
+ inHouse: inHouseStays.length,
418
+ departures: stays.filter((stay) => stay.state === 'checked_in' && inRange(stay.checkOut)).length,
419
+ overdue: overdue.length,
420
+ openFolios: openFolios.length,
421
+ }, lang, timezone, await frame(ctx, url, req)));
422
+ },
423
+ '/admin/hospitality/reservations': (ctx) => async (url, req) => {
424
+ if (req.method === 'POST') {
425
+ const form = await readForm(req);
426
+ if (form.operation !== 'quote' && form.operation !== 'create')
427
+ return text('unknown action', { status: 400 });
428
+ const propertyId = form.property?.trim() || '';
429
+ const property = propertyId
430
+ ? (await ctx.call('hospitality_core.getProperty', { id: propertyId }, url, req))
431
+ : null;
432
+ const timezone = property?.timezone || 'UTC';
433
+ const checkIn = instantFromLocal(form.checkIn, timezone);
434
+ const checkOut = instantFromLocal(form.checkOut, timezone);
435
+ const values = {
436
+ lang: form.lang,
437
+ property: propertyId,
438
+ preview: '1',
439
+ id: form.id,
440
+ code: form.code,
441
+ partnerId: form.partnerId,
442
+ roomTypeId: form.roomTypeId,
443
+ bookingType: form.bookingType,
444
+ checkIn: form.checkIn,
445
+ checkOut: form.checkOut,
446
+ adults: form.adults,
447
+ children: form.children,
448
+ rate: form.rate,
449
+ };
450
+ if (!property || !checkIn || !checkOut || !form.partnerId)
451
+ return redirected(url, 'invalid', values);
452
+ if (form.operation === 'quote') {
453
+ const result = (await ctx.call('hospitality_core.quoteReservation', {
454
+ propertyId,
455
+ roomTypeId: form.roomTypeId ?? '',
456
+ bookingType: form.bookingType ?? 'nightly',
457
+ checkIn,
458
+ checkOut,
459
+ adults: integer(form.adults, 1),
460
+ children: integer(form.children),
461
+ rate: form.rate || undefined,
462
+ }, url, req));
463
+ return redirected(url, result.ok ? 'quoted' : 'invalid', values);
464
+ }
465
+ const result = (await ctx.call('hospitality_core.createReservation', {
466
+ id: form.id ?? '',
467
+ code: form.code || undefined,
468
+ propertyId,
469
+ partnerId: form.partnerId,
470
+ roomTypeId: form.roomTypeId ?? '',
471
+ provider: 'direct',
472
+ bookingType: form.bookingType ?? 'nightly',
473
+ checkIn,
474
+ checkOut,
475
+ adults: integer(form.adults, 1),
476
+ children: integer(form.children),
477
+ rate: form.rate || undefined,
478
+ }, url, req));
479
+ return result.ok
480
+ ? redirected(url, 'saved', { lang: form.lang, property: propertyId })
481
+ : redirected(url, 'invalid', values);
482
+ }
483
+ if (req.method !== 'GET')
484
+ return text('GET or POST', { status: 405 });
485
+ const lang = ctx.localeOf(url, req);
486
+ const _ = ctx.translate(lang);
487
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
488
+ const requestedProperty = url.searchParams.get('property')?.trim();
489
+ const propertyId = properties.find((row) => row.id === requestedProperty)?.id ?? properties[0]?.id ?? '';
490
+ const property = propertyId
491
+ ? (await ctx.call('hospitality_core.getProperty', { id: propertyId }, url, req))
492
+ : null;
493
+ const timezone = property?.timezone || 'UTC';
494
+ const today = dateKeyIn(new Date(), timezone);
495
+ const checkInClock = /^(\d{2}):(\d{2})$/.exec(property?.defaultCheckIn ?? '');
496
+ const checkOutClock = /^(\d{2}):(\d{2})$/.exec(property?.defaultCheckOut ?? '');
497
+ const defaultCheckIn = zonedDateTime(today, Number(checkInClock?.[1] ?? 14), Number(checkInClock?.[2] ?? 0), timezone);
498
+ const defaultCheckOut = zonedDateTime(addCalendarDays(today, 1), Number(checkOutClock?.[1] ?? 12), Number(checkOutClock?.[2] ?? 0), timezone);
499
+ const [rows, roomTypes, partners] = (await Promise.all([
500
+ ctx.call('hospitality_core.listReservations', { propertyId: propertyId || undefined, state: url.searchParams.get('state') || undefined }, url, req),
501
+ propertyId
502
+ ? ctx.call('hospitality_core.listRoomTypes', { propertyId }, url, req)
503
+ : Promise.resolve([]),
504
+ ctx.call('partner.listPartners', { kind: 'person', limit: 500 }, url, req),
505
+ ]));
506
+ const reservationId = url.searchParams.get('id')?.trim() || randomUUID();
507
+ const values = {
508
+ id: reservationId,
509
+ code: url.searchParams.get('code')?.trim() || `R-${reservationId.slice(0, 8).toUpperCase()}`,
510
+ propertyId,
511
+ roomTypeId: roomTypes.find((row) => row.id === url.searchParams.get('roomTypeId'))?.id ??
512
+ roomTypes[0]?.id ??
513
+ '',
514
+ partnerId: partners.find((row) => row.id === url.searchParams.get('partnerId'))?.id ?? partners[0]?.id ?? '',
515
+ bookingType: ['nightly', 'weekly', 'monthly'].includes(url.searchParams.get('bookingType') ?? '')
516
+ ? url.searchParams.get('bookingType')
517
+ : 'nightly',
518
+ checkIn: url.searchParams.get('checkIn') || localDateTime(defaultCheckIn, timezone),
519
+ checkOut: url.searchParams.get('checkOut') || localDateTime(defaultCheckOut, timezone),
520
+ adults: Math.max(1, integer(url.searchParams.get('adults') ?? undefined, 1)),
521
+ children: Math.max(0, integer(url.searchParams.get('children') ?? undefined)),
522
+ rate: url.searchParams.get('rate')?.trim() || '',
523
+ };
524
+ let quote = null;
525
+ if (url.searchParams.get('preview') === '1') {
526
+ const checkIn = instantFromLocal(values.checkIn, timezone);
527
+ const checkOut = instantFromLocal(values.checkOut, timezone);
528
+ quote =
529
+ checkIn && checkOut
530
+ ? (await ctx.call('hospitality_core.quoteReservation', {
531
+ propertyId,
532
+ roomTypeId: values.roomTypeId,
533
+ bookingType: values.bookingType,
534
+ checkIn,
535
+ checkOut,
536
+ adults: values.adults,
537
+ children: values.children,
538
+ rate: values.rate || undefined,
539
+ }, url, req))
540
+ : {
541
+ ok: false,
542
+ errors: [{ messageKey: 'hospitality_core.validation.datetime' }],
543
+ };
544
+ }
545
+ return document(ctx, url, req, _('hospitality_core.screen.reservations.title'), reservationsScreen(_, { rows, properties, roomTypes, partners, values, quote }, lang, timezone, await frame(ctx, url, req), url.searchParams.get('status')));
546
+ },
547
+ '/admin/hospitality/reservations/{id}': (ctx) => async (url, req, params) => {
548
+ if (req.method === 'GET')
549
+ return renderReservationDetail(ctx, url, req, params.id);
550
+ if (req.method !== 'POST')
551
+ return text('GET or POST', { status: 405 });
552
+ const form = await readForm(req);
553
+ const reservation = (await ctx.call('hospitality_core.getReservation', { id: params.id }, url, req));
554
+ if (!reservation)
555
+ return text('Not found', { status: 404 });
556
+ let result;
557
+ let status;
558
+ if (form.operation === 'amend') {
559
+ const timezone = await propertyTimezone(ctx, reservation.propertyId, url, req);
560
+ const checkIn = instantFromLocal(form.checkIn, timezone);
561
+ const checkOut = instantFromLocal(form.checkOut, timezone);
562
+ const attempted = {
563
+ partnerId: form.partnerId?.trim() || '',
564
+ roomTypeId: form.roomTypeId?.trim() || '',
565
+ checkIn: form.checkIn?.trim() || '',
566
+ checkOut: form.checkOut?.trim() || '',
567
+ adults: integer(form.adults, 1),
568
+ children: integer(form.children),
569
+ rate: form.rate?.trim() || '',
570
+ };
571
+ if (!checkIn || !checkOut)
572
+ return renderReservationDetail(ctx, url, req, params.id, [ctx.translate(ctx.localeOf(url, req))('hospitality_core.validation.datetime')], attempted);
573
+ result = (await ctx.call('hospitality_core.amendReservation', {
574
+ id: reservation.id,
575
+ partnerId: attempted.partnerId,
576
+ roomTypeId: attempted.roomTypeId,
577
+ checkIn,
578
+ checkOut,
579
+ adults: attempted.adults,
580
+ children: attempted.children,
581
+ rate: attempted.rate,
582
+ }, url, req));
583
+ if (!result.ok)
584
+ return renderReservationDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), attempted);
585
+ status = 'amended';
586
+ }
587
+ else if (form.operation === 'check-in') {
588
+ if (!reservation.stayId || !form.roomId)
589
+ return renderReservationDetail(ctx, url, req, params.id, [
590
+ ctx.translate(ctx.localeOf(url, req))('hospitality_core.validation.no_available_room'),
591
+ ]);
592
+ result = (await ctx.call('hospitality_core.checkIn', { stayId: reservation.stayId, roomId: form.roomId }, url, req));
593
+ status = 'checked-in';
594
+ }
595
+ else if (form.operation === 'adjust-departure') {
596
+ if (!reservation.stayId)
597
+ return renderReservationDetail(ctx, url, req, params.id, [
598
+ ctx.translate(ctx.localeOf(url, req))('hospitality_core.validation.stay_missing'),
599
+ ]);
600
+ const timezone = await propertyTimezone(ctx, reservation.propertyId, url, req);
601
+ const attemptedDeparture = form.checkOut?.trim() || '';
602
+ const checkOut = instantFromLocal(attemptedDeparture, timezone);
603
+ if (!checkOut)
604
+ return renderReservationDetail(ctx, url, req, params.id, [ctx.translate(ctx.localeOf(url, req))('hospitality_core.validation.datetime')], undefined, attemptedDeparture);
605
+ result = (await ctx.call('hospitality_core.adjustStayDeparture', { stayId: reservation.stayId, checkOut }, url, req));
606
+ if (!result.ok)
607
+ return renderReservationDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), undefined, attemptedDeparture);
608
+ status = 'departure-adjusted';
609
+ }
610
+ else if (form.operation === 'check-out') {
611
+ if (!reservation.stayId)
612
+ return renderReservationDetail(ctx, url, req, params.id, [
613
+ ctx.translate(ctx.localeOf(url, req))('hospitality_core.validation.stay_missing'),
614
+ ]);
615
+ result = (await ctx.call('hospitality_core.checkOut', { stayId: reservation.stayId }, url, req));
616
+ status = Number(result.inventoryReleased ?? 0) > 0 ? 'checked-out-early' : 'checked-out';
617
+ }
618
+ else if (form.operation === 'cancel') {
619
+ result = (await ctx.call('hospitality_core.cancelReservation', { id: reservation.id, reason: form.reason?.trim() || undefined }, url, req));
620
+ status = 'cancelled';
621
+ }
622
+ else if (form.operation === 'no-show') {
623
+ result = (await ctx.call('hospitality_core.markNoShow', { id: reservation.id, reason: form.reason?.trim() || '' }, url, req));
624
+ status = 'no-show';
625
+ }
626
+ else
627
+ return text('unknown action', { status: 400 });
628
+ if (!result.ok)
629
+ return renderReservationDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
630
+ const query = new URLSearchParams();
631
+ query.set('status', status);
632
+ const lang = url.searchParams.get('lang')?.trim() || form.lang?.trim();
633
+ if (lang)
634
+ query.set('lang', lang);
635
+ return seeOther(`${url.pathname}?${query.toString()}`);
636
+ },
637
+ '/admin/hospitality/stays': (ctx) => async (url, req) => {
638
+ const lang = ctx.localeOf(url, req);
639
+ const _ = ctx.translate(lang);
640
+ const propertyId = await selectedProperty(ctx, url, req);
641
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
642
+ const rows = (await ctx.call('hospitality_core.listStays', { propertyId, state: url.searchParams.get('state') || undefined }, url, req));
643
+ return document(ctx, url, req, _('hospitality_core.screen.stays.title'), staysScreen(_, rows, lang, timezone, await frame(ctx, url, req)));
644
+ },
645
+ '/admin/hospitality/stays/{id}': (ctx) => async (url, req, params) => {
646
+ if (req.method === 'GET')
647
+ return renderStayDetail(ctx, url, req, params.id);
648
+ if (req.method !== 'POST')
649
+ return text('GET or POST', { status: 405 });
650
+ const form = await readForm(req);
651
+ const stay = (await ctx.call('hospitality_core.getStay', { id: params.id }, url, req));
652
+ if (!stay)
653
+ return text('Not found', { status: 404 });
654
+ let result;
655
+ let status;
656
+ if (form.operation === 'add-guest') {
657
+ result = (await ctx.call('hospitality_core.addStayGuest', {
658
+ id: randomUUID(),
659
+ stayId: stay.id,
660
+ partnerId: form.partnerId?.trim() || undefined,
661
+ displayName: form.displayName?.trim() || '',
662
+ }, url, req));
663
+ status = 'guest-added';
664
+ }
665
+ else if (form.operation === 'move-room') {
666
+ if (!form.roomId?.trim() || !form.reason?.trim())
667
+ return renderStayDetail(ctx, url, req, params.id, [
668
+ ctx.translate(ctx.localeOf(url, req))('hospitality_core.stay.validation.moveRequired'),
669
+ ]);
670
+ result = (await ctx.call('hospitality_core.moveRoom', {
671
+ stayId: stay.id,
672
+ roomId: form.roomId,
673
+ assignmentId: randomUUID(),
674
+ reason: form.reason.trim(),
675
+ }, url, req));
676
+ status = 'room-moved';
677
+ }
678
+ else if (form.operation === 'save-document') {
679
+ result = (await ctx.call('hospitality_core.saveGuestDocument', {
680
+ id: form.documentId?.trim() || randomUUID(),
681
+ stayId: stay.id,
682
+ partnerId: form.partnerId?.trim() || '',
683
+ type: form.type?.trim() || 'cccd',
684
+ number: form.number?.trim() || undefined,
685
+ fullName: form.fullName?.trim() || '',
686
+ dateOfBirth: form.dateOfBirth?.trim() || undefined,
687
+ gender: form.gender?.trim() || undefined,
688
+ nationality: form.nationality?.trim() || undefined,
689
+ permanentAddress: form.permanentAddress?.trim() || undefined,
690
+ issueDate: form.issueDate?.trim() || undefined,
691
+ issuePlace: form.issuePlace?.trim() || undefined,
692
+ ocrState: 'pending',
693
+ }, url, req));
694
+ status = 'document-saved';
695
+ }
696
+ else
697
+ return text('unknown action', { status: 400 });
698
+ if (!result.ok)
699
+ return renderStayDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
700
+ const query = new URLSearchParams();
701
+ query.set('status', status);
702
+ const lang = url.searchParams.get('lang')?.trim() || form.lang?.trim();
703
+ if (lang)
704
+ query.set('lang', lang);
705
+ return seeOther(`${url.pathname}?${query.toString()}`);
706
+ },
707
+ '/admin/hospitality/folios': (ctx) => async (url, req) => {
708
+ const lang = ctx.localeOf(url, req);
709
+ const _ = ctx.translate(lang);
710
+ const propertyId = await selectedProperty(ctx, url, req);
711
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
712
+ const rows = (await ctx.call('hospitality_core.listFolios', { propertyId, state: url.searchParams.get('state') || undefined }, url, req));
713
+ return document(ctx, url, req, _('hospitality_core.screen.folios.title'), foliosScreen(_, rows, lang, timezone, await frame(ctx, url, req)));
714
+ },
715
+ '/admin/hospitality/folios/{id}': (ctx) => async (url, req, params) => {
716
+ if (req.method === 'GET')
717
+ return renderFolioDetail(ctx, url, req, params.id);
718
+ if (req.method !== 'POST')
719
+ return text('GET or POST', { status: 405 });
720
+ const form = await readForm(req);
721
+ let result;
722
+ let status;
723
+ if (form.operation === 'post-charge') {
724
+ const id = form.id?.trim() || randomUUID();
725
+ result = (await ctx.call('hospitality_core.addCharge', {
726
+ id,
727
+ folioId: params.id,
728
+ stayId: form.stayId?.trim() || undefined,
729
+ description: form.description?.trim() || '',
730
+ type: form.type?.trim() || 'service',
731
+ quantity: form.quantity?.trim() || '1',
732
+ unitPrice: form.unitPrice?.trim() || '',
733
+ sourceKey: `manual-charge:${id}`,
734
+ }, url, req));
735
+ status = 'charge-posted';
736
+ }
737
+ else if (form.operation === 'void-charge') {
738
+ result = (await ctx.call('hospitality_core.voidCharge', {
739
+ id: form.chargeId?.trim() || '',
740
+ folioId: params.id,
741
+ reason: form.reason?.trim() || '',
742
+ }, url, req));
743
+ status = 'charge-voided';
744
+ }
745
+ else
746
+ return text('unknown action', { status: 400 });
747
+ if (!result.ok)
748
+ return renderFolioDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
749
+ const query = new URLSearchParams();
750
+ query.set('status', status);
751
+ const lang = url.searchParams.get('lang')?.trim() || form.lang?.trim();
752
+ if (lang)
753
+ query.set('lang', lang);
754
+ return seeOther(`${url.pathname}?${query.toString()}`);
755
+ },
756
+ '/admin/hospitality/tape-chart': (ctx) => async (url, req) => {
757
+ const lang = ctx.localeOf(url, req);
758
+ const _ = ctx.translate(lang);
759
+ const propertyId = await selectedProperty(ctx, url, req);
760
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
761
+ const range = calendarRange(url.searchParams.get('from'), 7, timezone);
762
+ const chart = (await ctx.call('hospitality_core.getTapeChart', { propertyId: propertyId ?? '__none__', from: range.from, to: range.to }, url, req));
763
+ return document(ctx, url, req, _('hospitality_core.screen.tapeChart.title'), tapeChartScreen(_, chart, lang, await frame(ctx, url, req)));
764
+ },
765
+ '/admin/hospitality/properties': (ctx) => async (url, req) => {
766
+ if (req.method !== 'GET')
767
+ return text('GET', { status: 405 });
768
+ const lang = ctx.localeOf(url, req);
769
+ const _ = ctx.translate(lang);
770
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
771
+ return document(ctx, url, req, _('hospitality_core.screen.properties.title'), propertiesScreen(_, properties, {
772
+ rooms: properties.reduce((sum, property) => sum + property.rooms, 0),
773
+ available: properties.reduce((sum, property) => sum + property.availableRooms, 0),
774
+ attention: properties.reduce((sum, property) => sum + property.attentionRooms, 0),
775
+ }, lang, await frame(ctx, url, req)));
776
+ },
777
+ '/admin/hospitality/properties/new': (ctx) => async (url, req) => {
778
+ const lang = ctx.localeOf(url, req);
779
+ const _ = ctx.translate(lang);
780
+ const policies = (await ctx.call('hospitality_core.listCancellationPolicies', {}, url, req));
781
+ if (req.method === 'GET') {
782
+ const values = defaultPropertyValues(randomUUID());
783
+ return document(ctx, url, req, _('hospitality_core.property.create.title'), newPropertyScreen(_, values, policies, lang, await frame(ctx, url, req)));
784
+ }
785
+ if (req.method !== 'POST')
786
+ return text('GET or POST', { status: 405 });
787
+ const form = await readForm(req);
788
+ const values = propertyFormValues(randomUUID(), form);
789
+ const result = (await ctx.call('hospitality_core.saveProperty', propertySaveInput(values), url, req));
790
+ if (!result.ok)
791
+ return document(ctx, url, req, _('hospitality_core.property.create.title'), newPropertyScreen(_, values, policies, lang, await frame(ctx, url, req), operationErrors(ctx, url, req, result)));
792
+ const query = new URLSearchParams({ status: 'created', lang });
793
+ return seeOther(`/admin/hospitality/properties/${encodeURIComponent(values.id)}?${query.toString()}`);
794
+ },
795
+ '/admin/hospitality/properties/{id}': (ctx) => async (url, req, params) => {
796
+ if (req.method === 'GET')
797
+ return renderPropertyDetail(ctx, url, req, params.id);
798
+ if (req.method !== 'POST')
799
+ return text('GET or POST', { status: 405 });
800
+ const current = (await ctx.call('hospitality_core.getProperty', { id: params.id }, url, req));
801
+ if (!current)
802
+ return text('Not found', { status: 404 });
803
+ const form = await readForm(req);
804
+ const values = propertyFormValues(params.id, form, current);
805
+ const result = (await ctx.call('hospitality_core.saveProperty', propertySaveInput(values, current), url, req));
806
+ if (!result.ok)
807
+ return renderPropertyDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), values);
808
+ const query = new URLSearchParams({ status: 'saved', lang: ctx.localeOf(url, req) });
809
+ return seeOther(`${url.pathname}?${query.toString()}`);
810
+ },
811
+ '/admin/hospitality/buildings/{id}': (ctx) => async (url, req, params) => {
812
+ if (req.method === 'GET')
813
+ return renderBuildingDetail(ctx, url, req, params.id);
814
+ if (req.method !== 'POST')
815
+ return text('GET or POST', { status: 405 });
816
+ const current = (await ctx.call('hospitality_core.getBuilding', { id: params.id }, url, req));
817
+ if (!current)
818
+ return text('Not found', { status: 404 });
819
+ const values = buildingFormValues(params.id, await readForm(req), current);
820
+ const result = (await ctx.call('hospitality_core.saveBuilding', values, url, req));
821
+ if (!result.ok)
822
+ return renderBuildingDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), values);
823
+ const query = new URLSearchParams({ status: 'saved', lang: ctx.localeOf(url, req) });
824
+ return seeOther(`${url.pathname}?${query.toString()}`);
825
+ },
826
+ '/admin/hospitality/buildings/{id}/archive': (ctx) => async (url, req, params) => {
827
+ if (req.method !== 'POST')
828
+ return text('POST', { status: 405 });
829
+ const form = await readForm(req);
830
+ const active = form.action === 'restore';
831
+ const result = (await ctx.call('hospitality_core.archiveBuilding', { id: params.id, active }, url, req));
832
+ if (!result.ok)
833
+ return renderBuildingDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
834
+ const query = new URLSearchParams({
835
+ status: active ? 'restored' : 'archived',
836
+ lang: ctx.localeOf(url, req),
837
+ });
838
+ return seeOther(`/admin/hospitality/buildings/${encodeURIComponent(params.id)}?${query.toString()}`);
839
+ },
840
+ '/admin/hospitality/levels/{id}': (ctx) => async (url, req, params) => {
841
+ if (req.method === 'GET')
842
+ return renderFloorDetail(ctx, url, req, params.id);
843
+ if (req.method !== 'POST')
844
+ return text('GET or POST', { status: 405 });
845
+ const current = (await ctx.call('hospitality_core.getFloor', { id: params.id }, url, req));
846
+ if (!current)
847
+ return text('Not found', { status: 404 });
848
+ const values = floorFormValues(params.id, await readForm(req), current);
849
+ const result = (await ctx.call('hospitality_core.saveFloor', values, url, req));
850
+ if (!result.ok)
851
+ return renderFloorDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), values);
852
+ const query = new URLSearchParams({ status: 'saved', lang: ctx.localeOf(url, req) });
853
+ return seeOther(`${url.pathname}?${query.toString()}`);
854
+ },
855
+ '/admin/hospitality/levels/{id}/archive': (ctx) => async (url, req, params) => {
856
+ if (req.method !== 'POST')
857
+ return text('POST', { status: 405 });
858
+ const form = await readForm(req);
859
+ const active = form.action === 'restore';
860
+ const result = (await ctx.call('hospitality_core.archiveFloor', { id: params.id, active }, url, req));
861
+ if (!result.ok)
862
+ return renderFloorDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
863
+ const query = new URLSearchParams({
864
+ status: active ? 'restored' : 'archived',
865
+ lang: ctx.localeOf(url, req),
866
+ });
867
+ return seeOther(`/admin/hospitality/levels/${encodeURIComponent(params.id)}?${query.toString()}`);
868
+ },
869
+ '/admin/hospitality/rooms': (ctx) => async (url, req) => {
870
+ if (req.method === 'GET')
871
+ return renderRooms(ctx, url, req);
872
+ if (req.method !== 'POST')
873
+ return text('GET or POST', { status: 405 });
874
+ const form = await readForm(req);
875
+ const operation = form.operation?.trim();
876
+ const propertyId = form.propertyId?.trim() || '';
877
+ let result;
878
+ let status;
879
+ if (operation === 'save-building') {
880
+ result = (await ctx.call('hospitality_core.saveBuilding', {
881
+ id: randomUUID(),
882
+ propertyId,
883
+ code: form.code?.trim() || '',
884
+ name: form.name?.trim() || '',
885
+ sequence: integer(form.sequence, 10),
886
+ }, url, req));
887
+ status = 'building-created';
888
+ }
889
+ else if (operation === 'save-floor') {
890
+ result = (await ctx.call('hospitality_core.saveFloor', {
891
+ id: randomUUID(),
892
+ propertyId,
893
+ buildingId: form.buildingId?.trim() || '',
894
+ code: form.code?.trim() || '',
895
+ name: form.name?.trim() || '',
896
+ sequence: integer(form.sequence, 10),
897
+ }, url, req));
898
+ status = 'floor-created';
899
+ }
900
+ else
901
+ return text('unknown action', { status: 400 });
902
+ if (!result.ok)
903
+ return renderRooms(ctx, url, req, operationErrors(ctx, url, req, result));
904
+ const query = new URLSearchParams({ property: propertyId, status, lang: ctx.localeOf(url, req) });
905
+ return seeOther(`/admin/hospitality/rooms?${query.toString()}`);
906
+ },
907
+ '/admin/hospitality/rooms/new': (ctx) => async (url, req) => {
908
+ const requestedProperty = url.searchParams.get('property')?.trim() || undefined;
909
+ const initial = await roomOptions(ctx, url, req, requestedProperty);
910
+ const lang = ctx.localeOf(url, req);
911
+ const _ = ctx.translate(lang);
912
+ if (!initial.propertyId || !initial.roomTypes.length)
913
+ return seeOther(`/admin/hospitality/rooms?lang=${encodeURIComponent(lang)}`);
914
+ if (req.method === 'GET') {
915
+ const values = defaultRoomValues(randomUUID(), initial.propertyId, initial.roomTypes[0].id);
916
+ return document(ctx, url, req, _('hospitality_core.room.create.title'), newRoomScreen(_, values, initial.properties, initial.roomTypes, initial.buildings, initial.floors, lang, await frame(ctx, url, req)));
917
+ }
918
+ if (req.method !== 'POST')
919
+ return text('GET or POST', { status: 405 });
920
+ const form = await readForm(req);
921
+ const values = roomFormValues(randomUUID(), form);
922
+ const options = await roomOptions(ctx, url, req, values.propertyId);
923
+ const result = (await ctx.call('hospitality_core.saveRoom', values, url, req));
924
+ if (!result.ok)
925
+ return document(ctx, url, req, _('hospitality_core.room.create.title'), newRoomScreen(_, values, options.properties, options.roomTypes, options.buildings, options.floors, lang, await frame(ctx, url, req), operationErrors(ctx, url, req, result)));
926
+ const query = new URLSearchParams({ status: 'created', lang });
927
+ return seeOther(`/admin/hospitality/rooms/${encodeURIComponent(values.id)}?${query.toString()}`);
928
+ },
929
+ '/admin/hospitality/rooms/{id}': (ctx) => async (url, req, params) => {
930
+ if (req.method === 'GET')
931
+ return renderRoomDetail(ctx, url, req, params.id);
932
+ if (req.method !== 'POST')
933
+ return text('GET or POST', { status: 405 });
934
+ const current = (await ctx.call('hospitality_core.getRoom', { id: params.id }, url, req));
935
+ if (!current)
936
+ return text('Not found', { status: 404 });
937
+ const form = await readForm(req);
938
+ const values = roomFormValues(params.id, form, current);
939
+ const result = (await ctx.call('hospitality_core.saveRoom', values, url, req));
940
+ if (!result.ok)
941
+ return renderRoomDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), values);
942
+ const query = new URLSearchParams({ status: 'saved', lang: ctx.localeOf(url, req) });
943
+ return seeOther(`${url.pathname}?${query.toString()}`);
944
+ },
945
+ '/admin/hospitality/rooms/{id}/archive': (ctx) => async (url, req, params) => {
946
+ if (req.method !== 'POST')
947
+ return text('POST', { status: 405 });
948
+ const form = await readForm(req);
949
+ const active = form.action === 'restore';
950
+ const result = (await ctx.call('hospitality_core.archiveRoom', { id: params.id, active }, url, req));
951
+ if (!result.ok)
952
+ return renderRoomDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
953
+ const query = new URLSearchParams({
954
+ status: active ? 'restored' : 'archived',
955
+ lang: ctx.localeOf(url, req),
956
+ });
957
+ return seeOther(`/admin/hospitality/rooms/${encodeURIComponent(params.id)}?${query.toString()}`);
958
+ },
959
+ '/admin/hospitality/room-types': (ctx) => async (url, req) => {
960
+ if (req.method !== 'GET')
961
+ return text('GET', { status: 405 });
962
+ const lang = ctx.localeOf(url, req);
963
+ const _ = ctx.translate(lang);
964
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
965
+ const requestedProperty = url.searchParams.get('property')?.trim();
966
+ const propertyId = properties.some((row) => row.id === requestedProperty)
967
+ ? requestedProperty
968
+ : properties[0]?.id;
969
+ const rows = (await ctx.call('hospitality_core.listRoomTypes', { propertyId }, url, req));
970
+ return document(ctx, url, req, _('hospitality_core.screen.roomTypes.title'), roomTypesScreen(_, rows, properties, propertyId, lang, await frame(ctx, url, req)));
971
+ },
972
+ '/admin/hospitality/room-types/new': (ctx) => async (url, req) => {
973
+ const lang = ctx.localeOf(url, req);
974
+ const _ = ctx.translate(lang);
975
+ const [properties, policies] = (await Promise.all([
976
+ ctx.call('hospitality_core.listProperties', {}, url, req),
977
+ ctx.call('hospitality_core.listCancellationPolicies', {}, url, req),
978
+ ]));
979
+ const requestedProperty = url.searchParams.get('property')?.trim();
980
+ const propertyId = properties.find((row) => row.id === requestedProperty)?.id ?? properties[0]?.id ?? '';
981
+ if (req.method === 'GET') {
982
+ const values = defaultRoomTypeValues(randomUUID(), propertyId);
983
+ return document(ctx, url, req, _('hospitality_core.roomType.create.title'), newRoomTypeScreen(_, values, properties, policies, lang, await frame(ctx, url, req)));
984
+ }
985
+ if (req.method !== 'POST')
986
+ return text('GET or POST', { status: 405 });
987
+ const form = await readForm(req);
988
+ const values = roomTypeFormValues(randomUUID(), form);
989
+ const inputErrors = roomTypeInputErrors(ctx, url, req, values);
990
+ if (inputErrors.length)
991
+ return document(ctx, url, req, _('hospitality_core.roomType.create.title'), newRoomTypeScreen(_, values, properties, policies, lang, await frame(ctx, url, req), inputErrors));
992
+ const result = (await ctx.call('hospitality_core.saveRoomType', values, url, req));
993
+ if (!result.ok)
994
+ return document(ctx, url, req, _('hospitality_core.roomType.create.title'), newRoomTypeScreen(_, values, properties, policies, lang, await frame(ctx, url, req), operationErrors(ctx, url, req, result)));
995
+ const query = new URLSearchParams({ status: 'created', lang });
996
+ return seeOther(`/admin/hospitality/room-types/${encodeURIComponent(values.id)}?${query.toString()}`);
997
+ },
998
+ '/admin/hospitality/room-types/{id}': (ctx) => async (url, req, params) => {
999
+ if (req.method === 'GET')
1000
+ return renderRoomTypeDetail(ctx, url, req, params.id);
1001
+ if (req.method !== 'POST')
1002
+ return text('GET or POST', { status: 405 });
1003
+ const current = (await ctx.call('hospitality_core.getRoomType', { id: params.id }, url, req));
1004
+ if (!current)
1005
+ return text('Not found', { status: 404 });
1006
+ const form = await readForm(req);
1007
+ const values = roomTypeFormValues(params.id, form, current);
1008
+ const inputErrors = roomTypeInputErrors(ctx, url, req, values);
1009
+ if (inputErrors.length)
1010
+ return renderRoomTypeDetail(ctx, url, req, params.id, inputErrors, values);
1011
+ const result = (await ctx.call('hospitality_core.saveRoomType', values, url, req));
1012
+ if (!result.ok)
1013
+ return renderRoomTypeDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result), values);
1014
+ const query = new URLSearchParams({ status: 'saved', lang: ctx.localeOf(url, req) });
1015
+ return seeOther(`${url.pathname}?${query.toString()}`);
1016
+ },
1017
+ '/admin/hospitality/rate-plans': (ctx) => async (url, req) => {
1018
+ if (req.method === 'POST') {
1019
+ const form = await readForm(req);
1020
+ if (form.operation !== 'save-rate-plan')
1021
+ return text('unknown action', { status: 400 });
1022
+ const result = (await ctx.call('hospitality_core.saveRatePlan', {
1023
+ id: randomUUID(),
1024
+ propertyId: form.propertyId ?? '',
1025
+ roomTypeId: form.roomTypeId ?? '',
1026
+ code: form.code ?? '',
1027
+ name: form.name ?? '',
1028
+ rateType: form.rateType ?? 'nightly',
1029
+ amount: form.amount ?? '',
1030
+ mealPlan: form.mealPlan || undefined,
1031
+ minStay: integer(form.minStay),
1032
+ maxStay: integer(form.maxStay),
1033
+ isDefault: form.isDefault === '1',
1034
+ active: form.active === '1',
1035
+ }, url, req));
1036
+ return redirected(url, result.ok ? 'saved' : 'invalid', { property: form.propertyId });
1037
+ }
1038
+ if (req.method !== 'GET')
1039
+ return text('GET or POST', { status: 405 });
1040
+ const lang = ctx.localeOf(url, req);
1041
+ const _ = ctx.translate(lang);
1042
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1043
+ const requestedProperty = url.searchParams.get('property')?.trim();
1044
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1045
+ ? requestedProperty
1046
+ : properties[0]?.id;
1047
+ const [rows, roomTypes] = (await Promise.all([
1048
+ ctx.call('hospitality_core.listRatePlans', { propertyId }, url, req),
1049
+ ctx.call('hospitality_core.listRoomTypes', { propertyId }, url, req),
1050
+ ]));
1051
+ return document(ctx, url, req, _('hospitality_core.screen.ratePlans.title'), ratePlansScreen(_, rows, properties, roomTypes, propertyId, await frame(ctx, url, req), url.searchParams.get('status')));
1052
+ },
1053
+ '/admin/hospitality/inventory': (ctx) => async (url, req) => {
1054
+ if (req.method === 'POST') {
1055
+ const form = await readForm(req);
1056
+ let result;
1057
+ if (form.operation === 'set-inventory')
1058
+ result = (await ctx.call('hospitality_core.setInventoryRange', {
1059
+ propertyId: form.propertyId ?? '',
1060
+ roomTypeId: form.roomTypeId ?? '',
1061
+ from: form.from ?? '',
1062
+ to: form.to ?? '',
1063
+ total: optionalInteger(form.total),
1064
+ blocked: optionalInteger(form.blocked),
1065
+ }, url, req));
1066
+ else if (form.operation === 'set-restrictions')
1067
+ result = (await ctx.call('hospitality_core.setRestrictionRange', {
1068
+ propertyId: form.propertyId ?? '',
1069
+ roomTypeId: form.roomTypeId ?? '',
1070
+ from: form.from ?? '',
1071
+ to: form.to ?? '',
1072
+ minLos: integer(form.minLos),
1073
+ maxLos: integer(form.maxLos),
1074
+ stopSell: form.stopSell === '1',
1075
+ closedToArrival: form.closedToArrival === '1',
1076
+ closedToDeparture: form.closedToDeparture === '1',
1077
+ }, url, req));
1078
+ else
1079
+ return text('unknown action', { status: 400 });
1080
+ return redirected(url, result.ok ? 'saved' : 'invalid', {
1081
+ property: form.propertyId,
1082
+ roomType: form.roomTypeId,
1083
+ from: form.from,
1084
+ to: form.to,
1085
+ });
1086
+ }
1087
+ if (req.method !== 'GET')
1088
+ return text('GET or POST', { status: 405 });
1089
+ const lang = ctx.localeOf(url, req);
1090
+ const _ = ctx.translate(lang);
1091
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1092
+ const requestedProperty = url.searchParams.get('property')?.trim();
1093
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1094
+ ? requestedProperty
1095
+ : properties[0]?.id;
1096
+ const roomTypes = (await ctx.call('hospitality_core.listRoomTypes', { propertyId }, url, req));
1097
+ const requestedRoomType = url.searchParams.get('roomType')?.trim();
1098
+ const roomTypeId = roomTypes.some((row) => row.id === requestedRoomType)
1099
+ ? requestedRoomType
1100
+ : roomTypes[0]?.id;
1101
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
1102
+ const today = dateKeyIn(new Date(), timezone);
1103
+ const from = /^\d{4}-\d{2}-\d{2}$/.test(url.searchParams.get('from') ?? '')
1104
+ ? url.searchParams.get('from')
1105
+ : today;
1106
+ const to = /^\d{4}-\d{2}-\d{2}$/.test(url.searchParams.get('to') ?? '')
1107
+ ? url.searchParams.get('to')
1108
+ : addCalendarDays(from, 13);
1109
+ const rows = roomTypeId
1110
+ ? (await ctx.call('hospitality_core.listInventory', { propertyId, roomTypeId, from, to }, url, req))
1111
+ : [];
1112
+ return document(ctx, url, req, _('hospitality_core.screen.inventory.title'), inventoryScreen(_, rows, properties, roomTypes, { propertyId, roomTypeId, from, to }, await frame(ctx, url, req), url.searchParams.get('status')));
1113
+ },
1114
+ '/admin/hospitality/services': (ctx) => async (url, req) => {
1115
+ if (req.method === 'POST') {
1116
+ const form = await readForm(req);
1117
+ let result;
1118
+ if (form.operation === 'save-property-charge')
1119
+ result = (await ctx.call('hospitality_core.savePropertyCharge', {
1120
+ id: form.id ?? '',
1121
+ propertyId: form.propertyId ?? '',
1122
+ chargeType: form.chargeType ?? '',
1123
+ name: form.name ?? '',
1124
+ amount: form.amount ?? '',
1125
+ description: form.description || undefined,
1126
+ active: form.active === '1',
1127
+ }, url, req));
1128
+ else if (form.operation === 'save-extra-line') {
1129
+ const target = form.target ?? '';
1130
+ const separator = target.indexOf(':');
1131
+ const targetType = separator > 0 ? target.slice(0, separator) : '';
1132
+ const targetId = separator > 0 ? target.slice(separator + 1) : '';
1133
+ result = (await ctx.call('hospitality_core.saveExtraLine', {
1134
+ id: form.id ?? '',
1135
+ ...(targetType === 'reservation' ? { reservationId: targetId } : {}),
1136
+ ...(targetType === 'stay' ? { stayId: targetId } : {}),
1137
+ productId: form.productId ?? '',
1138
+ description: form.description || undefined,
1139
+ quantity: form.quantity || undefined,
1140
+ unitPrice: form.unitPrice || undefined,
1141
+ recurrence: form.recurrence || undefined,
1142
+ active: form.active === '1',
1143
+ }, url, req));
1144
+ }
1145
+ else if (form.operation === 'materialize-extra')
1146
+ result = (await ctx.call('hospitality_core.materializeExtraLine', {
1147
+ id: form.id ?? '',
1148
+ serviceDate: form.serviceDate || undefined,
1149
+ quantity: form.quantity || undefined,
1150
+ requestKey: form.requestKey || undefined,
1151
+ }, url, req));
1152
+ else
1153
+ return text('unknown action', { status: 400 });
1154
+ return redirected(url, result.ok ? 'saved' : 'invalid', {
1155
+ property: form.propertyId || url.searchParams.get('property') || undefined,
1156
+ });
1157
+ }
1158
+ if (req.method !== 'GET')
1159
+ return text('GET or POST', { status: 405 });
1160
+ const lang = ctx.localeOf(url, req);
1161
+ const _ = ctx.translate(lang);
1162
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1163
+ const requestedProperty = url.searchParams.get('property')?.trim();
1164
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1165
+ ? requestedProperty
1166
+ : properties[0]?.id;
1167
+ const [propertyCharges, extraLines, charges, products, reservations, stays] = (await Promise.all([
1168
+ ctx.call('hospitality_core.listPropertyCharges', { propertyId }, url, req),
1169
+ ctx.call('hospitality_core.listExtraLines', { propertyId }, url, req),
1170
+ ctx.call('hospitality_core.listServiceCharges', { propertyId }, url, req),
1171
+ ctx.call('hospitality_core.listServiceProducts', {}, url, req),
1172
+ ctx.call('hospitality_core.listReservations', { propertyId }, url, req),
1173
+ ctx.call('hospitality_core.listStays', { propertyId }, url, req),
1174
+ ]));
1175
+ const targets = [
1176
+ ...reservations
1177
+ .filter((row) => row.state === 'draft' || row.state === 'confirmed')
1178
+ .map((row) => ({
1179
+ id: row.id,
1180
+ code: row.code,
1181
+ name: row.partner?.name ?? row.partnerId,
1182
+ type: 'reservation',
1183
+ })),
1184
+ ...stays
1185
+ .filter((row) => row.state === 'checked_in')
1186
+ .map((row) => ({
1187
+ id: row.id,
1188
+ code: row.code,
1189
+ name: row.partner?.name ?? row.partnerId,
1190
+ type: 'stay',
1191
+ })),
1192
+ ];
1193
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
1194
+ return document(ctx, url, req, _('hospitality_core.screen.services.title'), servicesScreen(_, {
1195
+ properties,
1196
+ propertyId,
1197
+ products,
1198
+ targets,
1199
+ propertyCharges,
1200
+ extraLines,
1201
+ charges,
1202
+ ids: { propertyCharge: randomUUID(), extraLine: randomUUID(), requestKey: randomUUID() },
1203
+ }, lang, timezone, await frame(ctx, url, req), url.searchParams.get('status')));
1204
+ },
1205
+ '/admin/hospitality/night-audit': (ctx) => async (url, req) => {
1206
+ if (req.method === 'POST') {
1207
+ const form = await readForm(req);
1208
+ if (form.operation !== 'request-night-audit')
1209
+ return text('unknown action', { status: 400 });
1210
+ const result = (await ctx.call('hospitality_core.requestNightAudit', { propertyId: form.propertyId ?? '', auditDate: form.auditDate ?? '' }, url, req));
1211
+ return redirected(url, result.ok ? 'queued' : 'invalid', {
1212
+ property: form.propertyId,
1213
+ auditDate: form.auditDate,
1214
+ });
1215
+ }
1216
+ if (req.method !== 'GET')
1217
+ return text('GET or POST', { status: 405 });
1218
+ const lang = ctx.localeOf(url, req);
1219
+ const _ = ctx.translate(lang);
1220
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1221
+ const requestedProperty = url.searchParams.get('property')?.trim();
1222
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1223
+ ? requestedProperty
1224
+ : properties[0]?.id;
1225
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
1226
+ const today = dateKeyIn(new Date(), timezone);
1227
+ const requestedDate = url.searchParams.get('auditDate')?.trim();
1228
+ const auditDate = /^\d{4}-\d{2}-\d{2}$/u.test(requestedDate ?? '') && requestedDate <= today ? requestedDate : today;
1229
+ const [preview, runs] = propertyId
1230
+ ? (await Promise.all([
1231
+ ctx.call('hospitality_core.previewNightAudit', { propertyId, auditDate }, url, req),
1232
+ ctx.call('hospitality_core.listNightAudits', { propertyId, limit: 30 }, url, req),
1233
+ ]))
1234
+ : [undefined, []];
1235
+ return document(ctx, url, req, _('hospitality_core.screen.nightAudit.title'), nightAuditScreen(_, { properties, propertyId, auditDate, today, preview, runs }, lang, await frame(ctx, url, req), url.searchParams.get('status')));
1236
+ },
1237
+ '/admin/hospitality/stay-notices': (ctx) => async (url, req) => {
1238
+ if (req.method === 'POST') {
1239
+ const form = await readForm(req);
1240
+ let result = { ok: false };
1241
+ let state = 'refreshed';
1242
+ if (form.operation === 'refresh') {
1243
+ result = (await ctx.call('hospitality_core.requestStayNoticeRefresh', { stayId: form.stayId ?? '' }, url, req));
1244
+ }
1245
+ else if (form.operation === 'record-submission') {
1246
+ state = 'submitted';
1247
+ result = (await ctx.call('hospitality_core.recordStayNoticeSubmission', {
1248
+ id: form.id ?? '',
1249
+ reason: form.reason ?? '',
1250
+ channel: form.channel ?? '',
1251
+ evidenceRef: form.evidenceRef ?? '',
1252
+ }, url, req));
1253
+ }
1254
+ else if (form.operation === 'confirm') {
1255
+ state = 'confirmed';
1256
+ result = (await ctx.call('hospitality_core.confirmStayNotice', { id: form.id ?? '', receiptRef: form.receiptRef ?? '' }, url, req));
1257
+ }
1258
+ else
1259
+ return text('unknown action', { status: 400 });
1260
+ return redirected(url, result.ok ? state : 'invalid', {
1261
+ property: form.property,
1262
+ state: form.state === 'all' ? undefined : form.state,
1263
+ notice: form.id,
1264
+ });
1265
+ }
1266
+ if (req.method !== 'GET')
1267
+ return text('GET or POST', { status: 405 });
1268
+ const lang = ctx.localeOf(url, req);
1269
+ const _ = ctx.translate(lang);
1270
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1271
+ const requestedProperty = url.searchParams.get('property')?.trim();
1272
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1273
+ ? requestedProperty
1274
+ : properties[0]?.id;
1275
+ const requestedState = url.searchParams.get('state')?.trim();
1276
+ const state = STAY_NOTICE_STATES.includes(requestedState)
1277
+ ? requestedState
1278
+ : 'all';
1279
+ const rows = propertyId
1280
+ ? (await ctx.call('hospitality_core.listStayNotices', { propertyId, limit: 500 }, url, req))
1281
+ : [];
1282
+ const selectedId = url.searchParams.get('notice')?.trim();
1283
+ const selected = rows.find((row) => row.id === selectedId);
1284
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
1285
+ return document(ctx, url, req, _('hospitality_core.screen.stayNotices.title'), stayNoticesScreen(_, { properties, propertyId, state, rows, selected }, lang, timezone, await frame(ctx, url, req), url.searchParams.get('status')));
1286
+ },
1287
+ '/admin/hospitality/housekeeping': (ctx) => async (url, req) => {
1288
+ if (req.method === 'POST') {
1289
+ const form = await readForm(req);
1290
+ if (form.operation !== 'create')
1291
+ return text('unknown action', { status: 400 });
1292
+ const id = form.id?.trim() || randomUUID();
1293
+ const result = (await ctx.call('hospitality_core.createCleaningTask', {
1294
+ id,
1295
+ code: form.code?.trim() || `HK-${id.slice(0, 12).toUpperCase()}`,
1296
+ roomId: form.roomId?.trim() || '',
1297
+ taskType: form.taskType?.trim() || 'daily_clean',
1298
+ priority: form.priority?.trim() || 'normal',
1299
+ assigneeId: form.assigneeId?.trim() || undefined,
1300
+ notes: form.notes?.trim() || undefined,
1301
+ }, url, req));
1302
+ return redirected(url, result.ok ? 'created' : 'invalid', {
1303
+ property: form.propertyId,
1304
+ state: form.state === 'all' ? undefined : form.state,
1305
+ lang: form.lang,
1306
+ });
1307
+ }
1308
+ if (req.method !== 'GET')
1309
+ return text('GET or POST', { status: 405 });
1310
+ const lang = ctx.localeOf(url, req);
1311
+ const _ = ctx.translate(lang);
1312
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1313
+ const requestedProperty = url.searchParams.get('property')?.trim();
1314
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1315
+ ? requestedProperty
1316
+ : properties[0]?.id;
1317
+ const requestedState = url.searchParams.get('state')?.trim();
1318
+ const state = CLEANING_TASK_STATES.includes(requestedState)
1319
+ ? requestedState
1320
+ : 'all';
1321
+ const [rows, rooms, summary] = propertyId
1322
+ ? (await Promise.all([
1323
+ ctx.call('hospitality_core.listCleaningTasks', { propertyId, state: state === 'all' ? undefined : state, limit: 500 }, url, req),
1324
+ ctx.call('hospitality_core.listRooms', { propertyId }, url, req),
1325
+ ctx.call('hospitality_core.cleaningTaskSummary', { propertyId }, url, req),
1326
+ ]))
1327
+ : [[], [], { todo: 0, inProgress: 0, done: 0, cancelled: 0 }];
1328
+ const timezone = await propertyTimezone(ctx, propertyId, url, req);
1329
+ const taskId = randomUUID();
1330
+ return document(ctx, url, req, _('hospitality_core.screen.cleaningTasks.title'), cleaningTasksScreen(_, {
1331
+ rows,
1332
+ properties,
1333
+ propertyId,
1334
+ state,
1335
+ rooms,
1336
+ summary,
1337
+ id: taskId,
1338
+ code: `HK-${taskId.slice(0, 12).toUpperCase()}`,
1339
+ selectedRoomId: rooms.some((room) => room.id === url.searchParams.get('room'))
1340
+ ? url.searchParams.get('room')
1341
+ : undefined,
1342
+ }, lang, timezone, await frame(ctx, url, req), url.searchParams.get('status')));
1343
+ },
1344
+ '/admin/hospitality/housekeeping/tasks/{id}': (ctx) => async (url, req, params) => {
1345
+ if (req.method === 'GET')
1346
+ return renderCleaningTaskDetail(ctx, url, req, params.id);
1347
+ if (req.method !== 'POST')
1348
+ return text('GET or POST', { status: 405 });
1349
+ const form = await readForm(req);
1350
+ let result;
1351
+ let status;
1352
+ if (form.operation === 'start') {
1353
+ result = (await ctx.call('hospitality_core.startCleaningTask', { id: params.id, assigneeId: form.assigneeId?.trim() || undefined }, url, req));
1354
+ status = 'started';
1355
+ }
1356
+ else if (form.operation === 'complete') {
1357
+ result = (await ctx.call('hospitality_core.completeCleaningTask', { id: params.id }, url, req));
1358
+ status = 'completed';
1359
+ }
1360
+ else if (form.operation === 'cancel') {
1361
+ result = (await ctx.call('hospitality_core.cancelCleaningTask', { id: params.id }, url, req));
1362
+ status = 'cancelled';
1363
+ }
1364
+ else
1365
+ return text('unknown action', { status: 400 });
1366
+ if (!result.ok)
1367
+ return renderCleaningTaskDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
1368
+ const query = new URLSearchParams({ status });
1369
+ const lang = url.searchParams.get('lang')?.trim() || form.lang?.trim();
1370
+ if (lang)
1371
+ query.set('lang', lang);
1372
+ return seeOther(`${url.pathname}?${query.toString()}`);
1373
+ },
1374
+ '/admin/hospitality/housekeeping/rooms': (ctx) => async (url, req) => {
1375
+ if (req.method !== 'GET')
1376
+ return text('GET', { status: 405 });
1377
+ const lang = ctx.localeOf(url, req);
1378
+ const _ = ctx.translate(lang);
1379
+ const properties = (await ctx.call('hospitality_core.listProperties', {}, url, req));
1380
+ const requestedProperty = url.searchParams.get('property')?.trim();
1381
+ const propertyId = properties.some((row) => row.id === requestedProperty)
1382
+ ? requestedProperty
1383
+ : properties[0]?.id;
1384
+ const requestedState = url.searchParams.get('state')?.trim();
1385
+ const state = ROOM_STATUSES.includes(requestedState)
1386
+ ? requestedState
1387
+ : 'all';
1388
+ const [rows, summary] = propertyId
1389
+ ? (await Promise.all([
1390
+ ctx.call('hospitality_core.listRooms', { propertyId, status: state === 'all' ? undefined : state, limit: 500 }, url, req),
1391
+ ctx.call('hospitality_core.roomStatusSummary', { propertyId }, url, req),
1392
+ ]))
1393
+ : [[], { available: 0, occupied: 0, dirty: 0, cleaning: 0, maintenance: 0, outOfOrder: 0 }];
1394
+ return document(ctx, url, req, _('hospitality_core.screen.housekeepingRooms.title'), housekeepingRoomsScreen(_, { rows, properties, propertyId, state, summary }, lang, await frame(ctx, url, req)));
1395
+ },
1396
+ '/admin/hospitality/housekeeping/rooms/{id}': (ctx) => async (url, req, params) => {
1397
+ if (req.method === 'GET')
1398
+ return renderHousekeepingRoomDetail(ctx, url, req, params.id);
1399
+ if (req.method !== 'POST')
1400
+ return text('GET or POST', { status: 405 });
1401
+ const form = await readForm(req);
1402
+ if (form.operation !== 'set-status')
1403
+ return text('unknown action', { status: 400 });
1404
+ const result = (await ctx.call('hospitality_core.setRoomStatus', {
1405
+ id: params.id,
1406
+ expectedStatus: form.expectedStatus?.trim() || undefined,
1407
+ status: form.status?.trim() || '',
1408
+ note: form.note?.trim() || undefined,
1409
+ }, url, req));
1410
+ if (!result.ok)
1411
+ return renderHousekeepingRoomDetail(ctx, url, req, params.id, operationErrors(ctx, url, req, result));
1412
+ const query = new URLSearchParams({ status: 'updated' });
1413
+ const lang = url.searchParams.get('lang')?.trim() || form.lang?.trim();
1414
+ if (lang)
1415
+ query.set('lang', lang);
1416
+ return seeOther(`${url.pathname}?${query.toString()}`);
1417
+ },
1418
+ '/admin/hospitality/content': (ctx) => async (url, req) => {
1419
+ if (req.method !== 'GET')
1420
+ return text('GET', { status: 405 });
1421
+ const lang = ctx.localeOf(url, req);
1422
+ const _ = ctx.translate(lang);
1423
+ const selection = await contentSelection(ctx, url, req);
1424
+ const images = await contentImages(ctx, url, req, selection);
1425
+ const property = selection.propertyId
1426
+ ? (await ctx.call('hospitality_core.getProperty', { id: selection.propertyId }, url, req))
1427
+ : null;
1428
+ const roomType = selection.roomTypes.find((row) => row.id === selection.roomTypeId);
1429
+ const checks = selection.roomTypeId
1430
+ ? [
1431
+ Boolean(roomType?.publicName || roomType?.name),
1432
+ Boolean(roomType?.description),
1433
+ Number(roomType?.defaultCapacity ?? 0) > 0,
1434
+ Number(roomType?.maxAdults ?? 0) > 0,
1435
+ images.length > 0,
1436
+ ]
1437
+ : [
1438
+ Boolean(property?.publicName || property?.name),
1439
+ Boolean(property?.addressLine),
1440
+ Boolean(property?.description),
1441
+ Number(property?.starRating ?? 0) > 0,
1442
+ images.length > 0,
1443
+ ];
1444
+ const completed = checks.filter(Boolean).length;
1445
+ return document(ctx, url, req, _('hospitality_core.screen.content.title'), contentScreen(_, selection.properties, selection.roomTypes, selection.propertyId, selection.target, images, {
1446
+ completed,
1447
+ total: checks.length,
1448
+ percent: checks.length ? Math.round((completed / checks.length) * 100) : 0,
1449
+ }, lang, contentQuery(url, selection), await frame(ctx, url, req), url.searchParams.get('status')));
1450
+ },
1451
+ '/admin/hospitality/content/upload': (ctx) => async (url, req) => {
1452
+ if (req.method !== 'POST')
1453
+ return text('POST multipart/form-data', { status: 405 });
1454
+ const selection = await contentSelection(ctx, url, req);
1455
+ if (!selection.propertyId)
1456
+ return text('Property not found', { status: 404 });
1457
+ const resourceId = selection.roomTypeId ?? selection.propertyId;
1458
+ const attachment = await receiveAttachment(ctx, url, req, {
1459
+ resModel: selection.roomTypeId ? 'hospitality_core.RoomType' : 'hospitality_core.Property',
1460
+ resId: resourceId,
1461
+ resField: 'contentImages',
1462
+ public: true,
1463
+ });
1464
+ try {
1465
+ await ctx.call('hospitality_core.attachContentImage', {
1466
+ id: attachment.id,
1467
+ attachmentId: attachment.id,
1468
+ ...(selection.roomTypeId
1469
+ ? { roomTypeId: selection.roomTypeId }
1470
+ : { propertyId: selection.propertyId }),
1471
+ category: selection.roomTypeId ? 'room' : 'exterior',
1472
+ caption: attachment.name,
1473
+ }, url, req);
1474
+ }
1475
+ catch (error) {
1476
+ await ctx.call('storage.removeAttachment', { id: attachment.id }, url, req).catch(() => undefined);
1477
+ await ctx.call('storage.requestSweep', { minAgeMs: 0 }, url, req).catch(() => undefined);
1478
+ throw error;
1479
+ }
1480
+ return contentRedirect(url, selection, 'saved');
1481
+ },
1482
+ '/admin/hospitality/content/images/{id}/metadata': (ctx) => async (url, req, params) => {
1483
+ if (req.method !== 'POST')
1484
+ return text('POST', { status: 405 });
1485
+ const selection = await contentSelection(ctx, url, req);
1486
+ const images = await contentImages(ctx, url, req, selection);
1487
+ if (!images.some((image) => image.id === params.id))
1488
+ return text('Image not found', { status: 404 });
1489
+ const form = await readForm(req);
1490
+ try {
1491
+ await ctx.call('hospitality_core.updateContentImage', { id: params.id, category: form.category ?? '', caption: form.caption || undefined }, url, req);
1492
+ return contentRedirect(url, selection, 'saved');
1493
+ }
1494
+ catch (error) {
1495
+ if (error.code === 'E_HOSPITALITY_CONTENT_INVALID')
1496
+ return contentRedirect(url, selection, 'invalid');
1497
+ throw error;
1498
+ }
1499
+ },
1500
+ '/admin/hospitality/content/images/{id}/primary': (ctx) => async (url, req, params) => {
1501
+ if (req.method !== 'POST')
1502
+ return text('POST', { status: 405 });
1503
+ const selection = await contentSelection(ctx, url, req);
1504
+ const images = await contentImages(ctx, url, req, selection);
1505
+ if (!images.some((image) => image.id === params.id))
1506
+ return text('Image not found', { status: 404 });
1507
+ await ctx.call('hospitality_core.setPrimaryContentImage', { id: params.id }, url, req);
1508
+ return contentRedirect(url, selection, 'saved');
1509
+ },
1510
+ '/admin/hospitality/content/images/{id}/remove': (ctx) => async (url, req, params) => {
1511
+ if (req.method !== 'POST')
1512
+ return text('POST', { status: 405 });
1513
+ const selection = await contentSelection(ctx, url, req);
1514
+ const images = await contentImages(ctx, url, req, selection);
1515
+ if (!images.some((image) => image.id === params.id))
1516
+ return text('Image not found', { status: 404 });
1517
+ await ctx.call('hospitality_core.removeContentImage', { id: params.id }, url, req);
1518
+ return contentRedirect(url, selection, 'saved');
1519
+ },
1520
+ '/admin/hospitality/content/images/{id}/move-up': (ctx) => async (url, req, params) => moveContentImage(ctx, url, req, params.id, -1),
1521
+ '/admin/hospitality/content/images/{id}/move-down': (ctx) => async (url, req, params) => moveContentImage(ctx, url, req, params.id, 1),
1522
+ '/admin/hospitality/amenities': (ctx) => async (url, req) => {
1523
+ const lang = ctx.localeOf(url, req);
1524
+ const _ = ctx.translate(lang);
1525
+ const rows = (await ctx.call('hospitality_core.listAmenities', {}, url, req));
1526
+ return document(ctx, url, req, _('hospitality_core.screen.amenities.title'), amenitiesScreen(_, rows, await frame(ctx, url, req)));
1527
+ },
1528
+ '/admin/hospitality/policies': (ctx) => async (url, req) => {
1529
+ const lang = ctx.localeOf(url, req);
1530
+ const _ = ctx.translate(lang);
1531
+ const rows = (await ctx.call('hospitality_core.listCancellationPolicies', {}, url, req));
1532
+ return document(ctx, url, req, _('hospitality_core.screen.policies.title'), policiesScreen(_, rows, await frame(ctx, url, req)));
1533
+ },
1534
+ };
1535
+ const moveContentImage = async (ctx, url, req, imageId, delta) => {
1536
+ if (req.method !== 'POST')
1537
+ return text('POST', { status: 405 });
1538
+ const selection = await contentSelection(ctx, url, req);
1539
+ const images = await contentImages(ctx, url, req, selection);
1540
+ const index = images.findIndex((image) => image.id === imageId);
1541
+ if (index < 0)
1542
+ return text('Image not found', { status: 404 });
1543
+ const destination = index + delta;
1544
+ if (destination >= 0 && destination < images.length) {
1545
+ const ids = images.map((image) => image.id);
1546
+ [ids[index], ids[destination]] = [ids[destination], ids[index]];
1547
+ await ctx.call('hospitality_core.reorderContentImages', {
1548
+ ...(selection.roomTypeId
1549
+ ? { roomTypeId: selection.roomTypeId }
1550
+ : { propertyId: selection.propertyId }),
1551
+ ids,
1552
+ }, url, req);
1553
+ }
1554
+ return contentRedirect(url, selection, 'saved');
1555
+ };
1556
+ //# sourceMappingURL=routes.js.map