@voyant-travel/operations-react 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/dist/admin.d.ts +59 -0
  4. package/dist/admin.d.ts.map +1 -0
  5. package/dist/admin.js +165 -0
  6. package/dist/availability/admin/availability-index-host.d.ts +12 -0
  7. package/dist/availability/admin/availability-index-host.d.ts.map +1 -0
  8. package/dist/availability/admin/availability-index-host.js +125 -0
  9. package/dist/availability/admin/availability-page-data.d.ts +9 -0
  10. package/dist/availability/admin/availability-page-data.d.ts.map +1 -0
  11. package/dist/availability/admin/availability-page-data.js +25 -0
  12. package/dist/availability/admin/index.d.ts +70 -0
  13. package/dist/availability/admin/index.d.ts.map +1 -0
  14. package/dist/availability/admin/index.js +140 -0
  15. package/dist/availability/admin/option-resource-template-seat-map.d.ts +10 -0
  16. package/dist/availability/admin/option-resource-template-seat-map.d.ts.map +1 -0
  17. package/dist/availability/admin/option-resource-template-seat-map.js +36 -0
  18. package/dist/availability/admin/option-resource-templates-panel.d.ts +22 -0
  19. package/dist/availability/admin/option-resource-templates-panel.d.ts.map +1 -0
  20. package/dist/availability/admin/option-resource-templates-panel.js +221 -0
  21. package/dist/availability/admin/pages/availability-rule-detail-page.d.ts +9 -0
  22. package/dist/availability/admin/pages/availability-rule-detail-page.d.ts.map +1 -0
  23. package/dist/availability/admin/pages/availability-rule-detail-page.js +11 -0
  24. package/dist/availability/admin/pages/availability-slot-detail-page.d.ts +9 -0
  25. package/dist/availability/admin/pages/availability-slot-detail-page.d.ts.map +1 -0
  26. package/dist/availability/admin/pages/availability-slot-detail-page.js +11 -0
  27. package/dist/availability/admin/pages/availability-start-time-detail-page.d.ts +9 -0
  28. package/dist/availability/admin/pages/availability-start-time-detail-page.d.ts.map +1 -0
  29. package/dist/availability/admin/pages/availability-start-time-detail-page.js +11 -0
  30. package/dist/availability/admin/rule-detail-host.d.ts +14 -0
  31. package/dist/availability/admin/rule-detail-host.d.ts.map +1 -0
  32. package/dist/availability/admin/rule-detail-host.js +27 -0
  33. package/dist/availability/admin/slot-detail-host.d.ts +29 -0
  34. package/dist/availability/admin/slot-detail-host.d.ts.map +1 -0
  35. package/dist/availability/admin/slot-detail-host.js +110 -0
  36. package/dist/availability/admin/start-time-detail-host.d.ts +15 -0
  37. package/dist/availability/admin/start-time-detail-host.d.ts.map +1 -0
  38. package/dist/availability/admin/start-time-detail-host.js +37 -0
  39. package/dist/availability/allocation/components/seat-map-builder.d.ts +25 -0
  40. package/dist/availability/allocation/components/seat-map-builder.d.ts.map +1 -0
  41. package/dist/availability/allocation/components/seat-map-builder.js +133 -0
  42. package/dist/availability/allocation/components/slot-allocation-add-resource-dialog.d.ts +29 -0
  43. package/dist/availability/allocation/components/slot-allocation-add-resource-dialog.d.ts.map +1 -0
  44. package/dist/availability/allocation/components/slot-allocation-add-resource-dialog.js +19 -0
  45. package/dist/availability/allocation/components/slot-allocation-model.d.ts +111 -0
  46. package/dist/availability/allocation/components/slot-allocation-model.d.ts.map +1 -0
  47. package/dist/availability/allocation/components/slot-allocation-model.js +237 -0
  48. package/dist/availability/allocation/components/slot-allocation-page-panels.d.ts +17 -0
  49. package/dist/availability/allocation/components/slot-allocation-page-panels.d.ts.map +1 -0
  50. package/dist/availability/allocation/components/slot-allocation-page-panels.js +27 -0
  51. package/dist/availability/allocation/components/slot-allocation-page.d.ts +51 -0
  52. package/dist/availability/allocation/components/slot-allocation-page.d.ts.map +1 -0
  53. package/dist/availability/allocation/components/slot-allocation-page.js +217 -0
  54. package/dist/availability/allocation/components/slot-allocation-resource-view-rows.d.ts +28 -0
  55. package/dist/availability/allocation/components/slot-allocation-resource-view-rows.d.ts.map +1 -0
  56. package/dist/availability/allocation/components/slot-allocation-resource-view-rows.js +90 -0
  57. package/dist/availability/allocation/components/slot-allocation-resource-view.d.ts +34 -0
  58. package/dist/availability/allocation/components/slot-allocation-resource-view.d.ts.map +1 -0
  59. package/dist/availability/allocation/components/slot-allocation-resource-view.js +35 -0
  60. package/dist/availability/allocation/components/slot-allocation-seat-view.d.ts +17 -0
  61. package/dist/availability/allocation/components/slot-allocation-seat-view.d.ts.map +1 -0
  62. package/dist/availability/allocation/components/slot-allocation-seat-view.js +97 -0
  63. package/dist/availability/allocation/components/slot-allocation-shared.d.ts +54 -0
  64. package/dist/availability/allocation/components/slot-allocation-shared.d.ts.map +1 -0
  65. package/dist/availability/allocation/components/slot-allocation-shared.js +106 -0
  66. package/dist/availability/allocation/i18n/index.d.ts +2 -0
  67. package/dist/availability/allocation/i18n/index.d.ts.map +1 -0
  68. package/dist/availability/allocation/i18n/index.js +1 -0
  69. package/dist/availability/allocation/i18n/provider.d.ts +692 -0
  70. package/dist/availability/allocation/i18n/provider.d.ts.map +1 -0
  71. package/dist/availability/allocation/i18n/provider.js +320 -0
  72. package/dist/availability/allocation/index.d.ts +4 -0
  73. package/dist/availability/allocation/index.d.ts.map +1 -0
  74. package/dist/availability/allocation/index.js +3 -0
  75. package/dist/availability/client.d.ts +14 -0
  76. package/dist/availability/client.d.ts.map +1 -0
  77. package/dist/availability/client.js +59 -0
  78. package/dist/availability/components/availability-columns.d.ts +42 -0
  79. package/dist/availability/components/availability-columns.d.ts.map +1 -0
  80. package/dist/availability/components/availability-columns.js +182 -0
  81. package/dist/availability/components/availability-dialogs/closeout-dialog.d.ts +13 -0
  82. package/dist/availability/components/availability-dialogs/closeout-dialog.d.ts.map +1 -0
  83. package/dist/availability/components/availability-dialogs/closeout-dialog.js +60 -0
  84. package/dist/availability/components/availability-dialogs/pickup-point-dialog.d.ts +12 -0
  85. package/dist/availability/components/availability-dialogs/pickup-point-dialog.d.ts.map +1 -0
  86. package/dist/availability/components/availability-dialogs/pickup-point-dialog.js +58 -0
  87. package/dist/availability/components/availability-dialogs/rule-dialog.d.ts +12 -0
  88. package/dist/availability/components/availability-dialogs/rule-dialog.d.ts.map +1 -0
  89. package/dist/availability/components/availability-dialogs/rule-dialog.js +76 -0
  90. package/dist/availability/components/availability-dialogs/shared.d.ts +213 -0
  91. package/dist/availability/components/availability-dialogs/shared.d.ts.map +1 -0
  92. package/dist/availability/components/availability-dialogs/shared.js +16 -0
  93. package/dist/availability/components/availability-dialogs/slot-dialog.d.ts +14 -0
  94. package/dist/availability/components/availability-dialogs/slot-dialog.d.ts.map +1 -0
  95. package/dist/availability/components/availability-dialogs/slot-dialog.js +138 -0
  96. package/dist/availability/components/availability-dialogs/start-time-dialog.d.ts +12 -0
  97. package/dist/availability/components/availability-dialogs/start-time-dialog.d.ts.map +1 -0
  98. package/dist/availability/components/availability-dialogs/start-time-dialog.js +62 -0
  99. package/dist/availability/components/availability-dialogs.d.ts +7 -0
  100. package/dist/availability/components/availability-dialogs.d.ts.map +1 -0
  101. package/dist/availability/components/availability-dialogs.js +6 -0
  102. package/dist/availability/components/availability-overview.d.ts +54 -0
  103. package/dist/availability/components/availability-overview.d.ts.map +1 -0
  104. package/dist/availability/components/availability-overview.js +50 -0
  105. package/dist/availability/components/availability-page.d.ts +32 -0
  106. package/dist/availability/components/availability-page.d.ts.map +1 -0
  107. package/dist/availability/components/availability-page.js +128 -0
  108. package/dist/availability/components/availability-rule-detail-page.d.ts +251 -0
  109. package/dist/availability/components/availability-rule-detail-page.d.ts.map +1 -0
  110. package/dist/availability/components/availability-rule-detail-page.js +74 -0
  111. package/dist/availability/components/availability-section-header.d.ts +8 -0
  112. package/dist/availability/components/availability-section-header.d.ts.map +1 -0
  113. package/dist/availability/components/availability-section-header.js +7 -0
  114. package/dist/availability/components/availability-skeletons.d.ts +6 -0
  115. package/dist/availability/components/availability-skeletons.d.ts.map +1 -0
  116. package/dist/availability/components/availability-skeletons.js +34 -0
  117. package/dist/availability/components/availability-slot-detail-activity.d.ts +30 -0
  118. package/dist/availability/components/availability-slot-detail-activity.d.ts.map +1 -0
  119. package/dist/availability/components/availability-slot-detail-activity.js +82 -0
  120. package/dist/availability/components/availability-slot-detail-financials.d.ts +27 -0
  121. package/dist/availability/components/availability-slot-detail-financials.d.ts.map +1 -0
  122. package/dist/availability/components/availability-slot-detail-financials.js +92 -0
  123. package/dist/availability/components/availability-slot-detail-meta.d.ts +38 -0
  124. package/dist/availability/components/availability-slot-detail-meta.d.ts.map +1 -0
  125. package/dist/availability/components/availability-slot-detail-meta.js +68 -0
  126. package/dist/availability/components/availability-slot-detail-page.d.ts +963 -0
  127. package/dist/availability/components/availability-slot-detail-page.d.ts.map +1 -0
  128. package/dist/availability/components/availability-slot-detail-page.js +159 -0
  129. package/dist/availability/components/availability-start-time-detail-page.d.ts +246 -0
  130. package/dist/availability/components/availability-start-time-detail-page.d.ts.map +1 -0
  131. package/dist/availability/components/availability-start-time-detail-page.js +83 -0
  132. package/dist/availability/components/availability-tabs/other-tabs.d.ts +58 -0
  133. package/dist/availability/components/availability-tabs/other-tabs.d.ts.map +1 -0
  134. package/dist/availability/components/availability-tabs/other-tabs.js +127 -0
  135. package/dist/availability/components/availability-tabs/shared.d.ts +80 -0
  136. package/dist/availability/components/availability-tabs/shared.d.ts.map +1 -0
  137. package/dist/availability/components/availability-tabs/shared.js +6 -0
  138. package/dist/availability/components/availability-tabs/slots-tab.d.ts +23 -0
  139. package/dist/availability/components/availability-tabs/slots-tab.d.ts.map +1 -0
  140. package/dist/availability/components/availability-tabs/slots-tab.js +69 -0
  141. package/dist/availability/components/availability-tabs.d.ts +4 -0
  142. package/dist/availability/components/availability-tabs.d.ts.map +1 -0
  143. package/dist/availability/components/availability-tabs.js +3 -0
  144. package/dist/availability/components/slot-status-tone.d.ts +15 -0
  145. package/dist/availability/components/slot-status-tone.d.ts.map +1 -0
  146. package/dist/availability/components/slot-status-tone.js +18 -0
  147. package/dist/availability/constants.d.ts +26 -0
  148. package/dist/availability/constants.d.ts.map +1 -0
  149. package/dist/availability/constants.js +23 -0
  150. package/dist/availability/form-resolver.d.ts +4 -0
  151. package/dist/availability/form-resolver.d.ts.map +1 -0
  152. package/dist/availability/form-resolver.js +40 -0
  153. package/dist/availability/hooks/index.d.ts +25 -0
  154. package/dist/availability/hooks/index.d.ts.map +1 -0
  155. package/dist/availability/hooks/index.js +15 -0
  156. package/dist/availability/hooks/use-availability-batch-mutations.d.ts +193 -0
  157. package/dist/availability/hooks/use-availability-batch-mutations.d.ts.map +1 -0
  158. package/dist/availability/hooks/use-availability-batch-mutations.js +53 -0
  159. package/dist/availability/hooks/use-availability-closeout-mutation.d.ts +34 -0
  160. package/dist/availability/hooks/use-availability-closeout-mutation.d.ts.map +1 -0
  161. package/dist/availability/hooks/use-availability-closeout-mutation.js +38 -0
  162. package/dist/availability/hooks/use-availability-overview.d.ts +46 -0
  163. package/dist/availability/hooks/use-availability-overview.d.ts.map +1 -0
  164. package/dist/availability/hooks/use-availability-overview.js +9 -0
  165. package/dist/availability/hooks/use-availability-pickup-point-mutation.d.ts +35 -0
  166. package/dist/availability/hooks/use-availability-pickup-point-mutation.d.ts.map +1 -0
  167. package/dist/availability/hooks/use-availability-pickup-point-mutation.js +38 -0
  168. package/dist/availability/hooks/use-availability-rule-mutation.d.ts +52 -0
  169. package/dist/availability/hooks/use-availability-rule-mutation.d.ts.map +1 -0
  170. package/dist/availability/hooks/use-availability-rule-mutation.js +41 -0
  171. package/dist/availability/hooks/use-availability-slot-mutation.d.ts +77 -0
  172. package/dist/availability/hooks/use-availability-slot-mutation.d.ts.map +1 -0
  173. package/dist/availability/hooks/use-availability-slot-mutation.js +41 -0
  174. package/dist/availability/hooks/use-availability-start-time-mutation.d.ts +43 -0
  175. package/dist/availability/hooks/use-availability-start-time-mutation.d.ts.map +1 -0
  176. package/dist/availability/hooks/use-availability-start-time-mutation.js +41 -0
  177. package/dist/availability/hooks/use-closeouts.d.ts +19 -0
  178. package/dist/availability/hooks/use-closeouts.d.ts.map +1 -0
  179. package/dist/availability/hooks/use-closeouts.js +9 -0
  180. package/dist/availability/hooks/use-pickup-points.d.ts +19 -0
  181. package/dist/availability/hooks/use-pickup-points.d.ts.map +1 -0
  182. package/dist/availability/hooks/use-pickup-points.js +9 -0
  183. package/dist/availability/hooks/use-products.d.ts +20 -0
  184. package/dist/availability/hooks/use-products.d.ts.map +1 -0
  185. package/dist/availability/hooks/use-products.js +9 -0
  186. package/dist/availability/hooks/use-rules.d.ts +25 -0
  187. package/dist/availability/hooks/use-rules.d.ts.map +1 -0
  188. package/dist/availability/hooks/use-rules.js +9 -0
  189. package/dist/availability/hooks/use-slot-allocation.d.ts +306 -0
  190. package/dist/availability/hooks/use-slot-allocation.d.ts.map +1 -0
  191. package/dist/availability/hooks/use-slot-allocation.js +211 -0
  192. package/dist/availability/hooks/use-slot-unit-availability.d.ts +25 -0
  193. package/dist/availability/hooks/use-slot-unit-availability.d.ts.map +1 -0
  194. package/dist/availability/hooks/use-slot-unit-availability.js +21 -0
  195. package/dist/availability/hooks/use-slots.d.ts +32 -0
  196. package/dist/availability/hooks/use-slots.d.ts.map +1 -0
  197. package/dist/availability/hooks/use-slots.js +9 -0
  198. package/dist/availability/hooks/use-start-times.d.ts +22 -0
  199. package/dist/availability/hooks/use-start-times.d.ts.map +1 -0
  200. package/dist/availability/hooks/use-start-times.js +9 -0
  201. package/dist/availability/i18n/index.d.ts +2 -0
  202. package/dist/availability/i18n/index.d.ts.map +1 -0
  203. package/dist/availability/i18n/index.js +1 -0
  204. package/dist/availability/i18n/provider.d.ts +2003 -0
  205. package/dist/availability/i18n/provider.d.ts.map +1 -0
  206. package/dist/availability/i18n/provider.js +102 -0
  207. package/dist/availability/index.d.ts +10 -0
  208. package/dist/availability/index.d.ts.map +1 -0
  209. package/dist/availability/index.js +9 -0
  210. package/dist/availability/provider.d.ts +2 -0
  211. package/dist/availability/provider.d.ts.map +1 -0
  212. package/dist/availability/provider.js +1 -0
  213. package/dist/availability/query-keys.d.ts +69 -0
  214. package/dist/availability/query-keys.d.ts.map +1 -0
  215. package/dist/availability/query-keys.js +29 -0
  216. package/dist/availability/query-options.d.ts +1549 -0
  217. package/dist/availability/query-options.d.ts.map +1 -0
  218. package/dist/availability/query-options.js +258 -0
  219. package/dist/availability/schemas.d.ts +974 -0
  220. package/dist/availability/schemas.d.ts.map +1 -0
  221. package/dist/availability/schemas.js +329 -0
  222. package/dist/availability/ui.d.ts +14 -0
  223. package/dist/availability/ui.d.ts.map +1 -0
  224. package/dist/availability/ui.js +13 -0
  225. package/dist/availability/utils.d.ts +10 -0
  226. package/dist/availability/utils.d.ts.map +1 -0
  227. package/dist/availability/utils.js +32 -0
  228. package/dist/ground/client.d.ts +14 -0
  229. package/dist/ground/client.d.ts.map +1 -0
  230. package/dist/ground/client.js +58 -0
  231. package/dist/ground/hooks/index.d.ts +7 -0
  232. package/dist/ground/hooks/index.d.ts.map +1 -0
  233. package/dist/ground/hooks/index.js +6 -0
  234. package/dist/ground/hooks/use-ground-driver-mutation.d.ts +48 -0
  235. package/dist/ground/hooks/use-ground-driver-mutation.d.ts.map +1 -0
  236. package/dist/ground/hooks/use-ground-driver-mutation.js +40 -0
  237. package/dist/ground/hooks/use-ground-drivers.d.ts +23 -0
  238. package/dist/ground/hooks/use-ground-drivers.d.ts.map +1 -0
  239. package/dist/ground/hooks/use-ground-drivers.js +12 -0
  240. package/dist/ground/hooks/use-ground-operator-mutation.d.ts +42 -0
  241. package/dist/ground/hooks/use-ground-operator-mutation.d.ts.map +1 -0
  242. package/dist/ground/hooks/use-ground-operator-mutation.js +40 -0
  243. package/dist/ground/hooks/use-ground-operators.d.ts +21 -0
  244. package/dist/ground/hooks/use-ground-operators.d.ts.map +1 -0
  245. package/dist/ground/hooks/use-ground-operators.js +12 -0
  246. package/dist/ground/hooks/use-ground-vehicle-mutation.d.ts +60 -0
  247. package/dist/ground/hooks/use-ground-vehicle-mutation.d.ts.map +1 -0
  248. package/dist/ground/hooks/use-ground-vehicle-mutation.js +40 -0
  249. package/dist/ground/hooks/use-ground-vehicles.d.ts +27 -0
  250. package/dist/ground/hooks/use-ground-vehicles.d.ts.map +1 -0
  251. package/dist/ground/hooks/use-ground-vehicles.js +12 -0
  252. package/dist/ground/index.d.ts +7 -0
  253. package/dist/ground/index.d.ts.map +1 -0
  254. package/dist/ground/index.js +6 -0
  255. package/dist/ground/provider.d.ts +2 -0
  256. package/dist/ground/provider.d.ts.map +1 -0
  257. package/dist/ground/provider.js +1 -0
  258. package/dist/ground/query-keys.d.ts +35 -0
  259. package/dist/ground/query-keys.d.ts.map +1 -0
  260. package/dist/ground/query-keys.js +12 -0
  261. package/dist/ground/query-options.d.ts +417 -0
  262. package/dist/ground/query-options.d.ts.map +1 -0
  263. package/dist/ground/query-options.js +63 -0
  264. package/dist/ground/schemas.d.ts +212 -0
  265. package/dist/ground/schemas.d.ts.map +1 -0
  266. package/dist/ground/schemas.js +45 -0
  267. package/dist/index.d.ts +5 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +4 -0
  270. package/dist/places/client.d.ts +14 -0
  271. package/dist/places/client.d.ts.map +1 -0
  272. package/dist/places/client.js +58 -0
  273. package/dist/places/components/facility-badge.d.ts +13 -0
  274. package/dist/places/components/facility-badge.d.ts.map +1 -0
  275. package/dist/places/components/facility-badge.js +22 -0
  276. package/dist/places/components/facility-combobox.d.ts +16 -0
  277. package/dist/places/components/facility-combobox.d.ts.map +1 -0
  278. package/dist/places/components/facility-combobox.js +61 -0
  279. package/dist/places/components/place-badge.d.ts +2 -0
  280. package/dist/places/components/place-badge.d.ts.map +1 -0
  281. package/dist/places/components/place-badge.js +1 -0
  282. package/dist/places/components/place-combobox.d.ts +2 -0
  283. package/dist/places/components/place-combobox.d.ts.map +1 -0
  284. package/dist/places/components/place-combobox.js +1 -0
  285. package/dist/places/hooks/index.d.ts +23 -0
  286. package/dist/places/hooks/index.d.ts.map +1 -0
  287. package/dist/places/hooks/index.js +22 -0
  288. package/dist/places/hooks/use-facilities.d.ts +31 -0
  289. package/dist/places/hooks/use-facilities.d.ts.map +1 -0
  290. package/dist/places/hooks/use-facilities.js +12 -0
  291. package/dist/places/hooks/use-facility-feature-mutation.d.ts +37 -0
  292. package/dist/places/hooks/use-facility-feature-mutation.d.ts.map +1 -0
  293. package/dist/places/hooks/use-facility-feature-mutation.js +38 -0
  294. package/dist/places/hooks/use-facility-features.d.ts +21 -0
  295. package/dist/places/hooks/use-facility-features.d.ts.map +1 -0
  296. package/dist/places/hooks/use-facility-features.js +12 -0
  297. package/dist/places/hooks/use-facility-mutation.d.ts +74 -0
  298. package/dist/places/hooks/use-facility-mutation.d.ts.map +1 -0
  299. package/dist/places/hooks/use-facility-mutation.js +45 -0
  300. package/dist/places/hooks/use-facility-operation-schedule-mutation.d.ts +37 -0
  301. package/dist/places/hooks/use-facility-operation-schedule-mutation.d.ts.map +1 -0
  302. package/dist/places/hooks/use-facility-operation-schedule-mutation.js +44 -0
  303. package/dist/places/hooks/use-facility-operation-schedules.d.ts +21 -0
  304. package/dist/places/hooks/use-facility-operation-schedules.d.ts.map +1 -0
  305. package/dist/places/hooks/use-facility-operation-schedules.js +12 -0
  306. package/dist/places/hooks/use-facility.d.ts +25 -0
  307. package/dist/places/hooks/use-facility.d.ts.map +1 -0
  308. package/dist/places/hooks/use-facility.js +12 -0
  309. package/dist/places/hooks/use-properties.d.ts +23 -0
  310. package/dist/places/hooks/use-properties.d.ts.map +1 -0
  311. package/dist/places/hooks/use-properties.js +12 -0
  312. package/dist/places/hooks/use-property-group-member-mutation.d.ts +41 -0
  313. package/dist/places/hooks/use-property-group-member-mutation.d.ts.map +1 -0
  314. package/dist/places/hooks/use-property-group-member-mutation.js +38 -0
  315. package/dist/places/hooks/use-property-group-members.d.ts +20 -0
  316. package/dist/places/hooks/use-property-group-members.d.ts.map +1 -0
  317. package/dist/places/hooks/use-property-group-members.js +12 -0
  318. package/dist/places/hooks/use-property-group-mutation.d.ts +50 -0
  319. package/dist/places/hooks/use-property-group-mutation.d.ts.map +1 -0
  320. package/dist/places/hooks/use-property-group-mutation.js +39 -0
  321. package/dist/places/hooks/use-property-group.d.ts +17 -0
  322. package/dist/places/hooks/use-property-group.d.ts.map +1 -0
  323. package/dist/places/hooks/use-property-group.js +12 -0
  324. package/dist/places/hooks/use-property-groups.d.ts +23 -0
  325. package/dist/places/hooks/use-property-groups.d.ts.map +1 -0
  326. package/dist/places/hooks/use-property-groups.js +12 -0
  327. package/dist/places/hooks/use-property-mutation.d.ts +50 -0
  328. package/dist/places/hooks/use-property-mutation.d.ts.map +1 -0
  329. package/dist/places/hooks/use-property-mutation.js +40 -0
  330. package/dist/places/hooks/use-property.d.ts +17 -0
  331. package/dist/places/hooks/use-property.d.ts.map +1 -0
  332. package/dist/places/hooks/use-property.js +12 -0
  333. package/dist/places/i18n/en.d.ts +14 -0
  334. package/dist/places/i18n/en.d.ts.map +1 -0
  335. package/dist/places/i18n/en.js +13 -0
  336. package/dist/places/i18n/index.d.ts +5 -0
  337. package/dist/places/i18n/index.d.ts.map +1 -0
  338. package/dist/places/i18n/index.js +3 -0
  339. package/dist/places/i18n/messages.d.ts +15 -0
  340. package/dist/places/i18n/messages.d.ts.map +1 -0
  341. package/dist/places/i18n/messages.js +1 -0
  342. package/dist/places/i18n/provider.d.ts +50 -0
  343. package/dist/places/i18n/provider.d.ts.map +1 -0
  344. package/dist/places/i18n/provider.js +44 -0
  345. package/dist/places/i18n/ro.d.ts +14 -0
  346. package/dist/places/i18n/ro.d.ts.map +1 -0
  347. package/dist/places/i18n/ro.js +13 -0
  348. package/dist/places/index.d.ts +7 -0
  349. package/dist/places/index.d.ts.map +1 -0
  350. package/dist/places/index.js +6 -0
  351. package/dist/places/provider.d.ts +2 -0
  352. package/dist/places/provider.d.ts.map +1 -0
  353. package/dist/places/provider.js +1 -0
  354. package/dist/places/query-keys.d.ts +92 -0
  355. package/dist/places/query-keys.d.ts.map +1 -0
  356. package/dist/places/query-keys.js +22 -0
  357. package/dist/places/query-options.d.ts +814 -0
  358. package/dist/places/query-options.d.ts.map +1 -0
  359. package/dist/places/query-options.js +132 -0
  360. package/dist/places/schemas.d.ts +464 -0
  361. package/dist/places/schemas.d.ts.map +1 -0
  362. package/dist/places/schemas.js +84 -0
  363. package/dist/places/ui.d.ts +4 -0
  364. package/dist/places/ui.d.ts.map +1 -0
  365. package/dist/places/ui.js +3 -0
  366. package/dist/resources/admin/detail-hosts.d.ts +30 -0
  367. package/dist/resources/admin/detail-hosts.d.ts.map +1 -0
  368. package/dist/resources/admin/detail-hosts.js +50 -0
  369. package/dist/resources/admin/index.d.ts +89 -0
  370. package/dist/resources/admin/index.d.ts.map +1 -0
  371. package/dist/resources/admin/index.js +148 -0
  372. package/dist/resources/admin/pages/resource-allocation-detail-page.d.ts +9 -0
  373. package/dist/resources/admin/pages/resource-allocation-detail-page.d.ts.map +1 -0
  374. package/dist/resources/admin/pages/resource-allocation-detail-page.js +11 -0
  375. package/dist/resources/admin/pages/resource-assignment-detail-page.d.ts +9 -0
  376. package/dist/resources/admin/pages/resource-assignment-detail-page.d.ts.map +1 -0
  377. package/dist/resources/admin/pages/resource-assignment-detail-page.js +11 -0
  378. package/dist/resources/admin/pages/resource-detail-page.d.ts +9 -0
  379. package/dist/resources/admin/pages/resource-detail-page.d.ts.map +1 -0
  380. package/dist/resources/admin/pages/resource-detail-page.js +11 -0
  381. package/dist/resources/admin/pages/resource-pool-detail-page.d.ts +9 -0
  382. package/dist/resources/admin/pages/resource-pool-detail-page.d.ts.map +1 -0
  383. package/dist/resources/admin/pages/resource-pool-detail-page.js +11 -0
  384. package/dist/resources/admin/resources-admin-api.d.ts +22 -0
  385. package/dist/resources/admin/resources-admin-api.d.ts.map +1 -0
  386. package/dist/resources/admin/resources-admin-api.js +28 -0
  387. package/dist/resources/admin/resources-dialog-allocation.d.ts +12 -0
  388. package/dist/resources/admin/resources-dialog-allocation.d.ts.map +1 -0
  389. package/dist/resources/admin/resources-dialog-allocation.js +77 -0
  390. package/dist/resources/admin/resources-dialogs-core.d.ts +16 -0
  391. package/dist/resources/admin/resources-dialogs-core.d.ts.map +1 -0
  392. package/dist/resources/admin/resources-dialogs-core.js +133 -0
  393. package/dist/resources/admin/resources-dialogs-ops.d.ts +19 -0
  394. package/dist/resources/admin/resources-dialogs-ops.d.ts.map +1 -0
  395. package/dist/resources/admin/resources-dialogs-ops.js +137 -0
  396. package/dist/resources/admin/resources-dialogs.d.ts +28 -0
  397. package/dist/resources/admin/resources-dialogs.d.ts.map +1 -0
  398. package/dist/resources/admin/resources-dialogs.js +23 -0
  399. package/dist/resources/admin/resources-host.d.ts +11 -0
  400. package/dist/resources/admin/resources-host.d.ts.map +1 -0
  401. package/dist/resources/admin/resources-host.js +159 -0
  402. package/dist/resources/admin/resources-page-data.d.ts +61 -0
  403. package/dist/resources/admin/resources-page-data.d.ts.map +1 -0
  404. package/dist/resources/admin/resources-page-data.js +39 -0
  405. package/dist/resources/admin/resources-page-skeleton.d.ts +5 -0
  406. package/dist/resources/admin/resources-page-skeleton.d.ts.map +1 -0
  407. package/dist/resources/admin/resources-page-skeleton.js +22 -0
  408. package/dist/resources/client.d.ts +14 -0
  409. package/dist/resources/client.d.ts.map +1 -0
  410. package/dist/resources/client.js +59 -0
  411. package/dist/resources/components/resource-allocation-detail-page.d.ts +16 -0
  412. package/dist/resources/components/resource-allocation-detail-page.d.ts.map +1 -0
  413. package/dist/resources/components/resource-allocation-detail-page.js +48 -0
  414. package/dist/resources/components/resource-assignment-detail-page.d.ts +16 -0
  415. package/dist/resources/components/resource-assignment-detail-page.d.ts.map +1 -0
  416. package/dist/resources/components/resource-assignment-detail-page.js +50 -0
  417. package/dist/resources/components/resource-detail-data.d.ts +34 -0
  418. package/dist/resources/components/resource-detail-data.d.ts.map +1 -0
  419. package/dist/resources/components/resource-detail-data.js +90 -0
  420. package/dist/resources/components/resource-detail-page.d.ts +24 -0
  421. package/dist/resources/components/resource-detail-page.d.ts.map +1 -0
  422. package/dist/resources/components/resource-detail-page.js +80 -0
  423. package/dist/resources/components/resource-detail-shared.d.ts +37 -0
  424. package/dist/resources/components/resource-detail-shared.d.ts.map +1 -0
  425. package/dist/resources/components/resource-detail-shared.js +51 -0
  426. package/dist/resources/components/resource-detail-skeletons.d.ts +14 -0
  427. package/dist/resources/components/resource-detail-skeletons.d.ts.map +1 -0
  428. package/dist/resources/components/resource-detail-skeletons.js +24 -0
  429. package/dist/resources/components/resource-pool-detail-page.d.ts +22 -0
  430. package/dist/resources/components/resource-pool-detail-page.d.ts.map +1 -0
  431. package/dist/resources/components/resource-pool-detail-page.js +68 -0
  432. package/dist/resources/components/resources-overview.d.ts +28 -0
  433. package/dist/resources/components/resources-overview.d.ts.map +1 -0
  434. package/dist/resources/components/resources-overview.js +32 -0
  435. package/dist/resources/components/resources-page-filters.d.ts +22 -0
  436. package/dist/resources/components/resources-page-filters.d.ts.map +1 -0
  437. package/dist/resources/components/resources-page-filters.js +40 -0
  438. package/dist/resources/components/resources-page.d.ts +77 -0
  439. package/dist/resources/components/resources-page.d.ts.map +1 -0
  440. package/dist/resources/components/resources-page.js +140 -0
  441. package/dist/resources/components/resources-section-header.d.ts +7 -0
  442. package/dist/resources/components/resources-section-header.d.ts.map +1 -0
  443. package/dist/resources/components/resources-section-header.js +6 -0
  444. package/dist/resources/components/resources-tabs-primary.d.ts +58 -0
  445. package/dist/resources/components/resources-tabs-primary.d.ts.map +1 -0
  446. package/dist/resources/components/resources-tabs-primary.js +201 -0
  447. package/dist/resources/components/resources-tabs-secondary.d.ts +46 -0
  448. package/dist/resources/components/resources-tabs-secondary.d.ts.map +1 -0
  449. package/dist/resources/components/resources-tabs-secondary.js +143 -0
  450. package/dist/resources/constants.d.ts +44 -0
  451. package/dist/resources/constants.d.ts.map +1 -0
  452. package/dist/resources/constants.js +20 -0
  453. package/dist/resources/hooks/index.d.ts +31 -0
  454. package/dist/resources/hooks/index.d.ts.map +1 -0
  455. package/dist/resources/hooks/index.js +15 -0
  456. package/dist/resources/hooks/use-allocation.d.ts +16 -0
  457. package/dist/resources/hooks/use-allocation.d.ts.map +1 -0
  458. package/dist/resources/hooks/use-allocation.js +12 -0
  459. package/dist/resources/hooks/use-allocations.d.ts +20 -0
  460. package/dist/resources/hooks/use-allocations.d.ts.map +1 -0
  461. package/dist/resources/hooks/use-allocations.js +12 -0
  462. package/dist/resources/hooks/use-assignment.d.ts +17 -0
  463. package/dist/resources/hooks/use-assignment.d.ts.map +1 -0
  464. package/dist/resources/hooks/use-assignment.js +12 -0
  465. package/dist/resources/hooks/use-assignments.d.ts +21 -0
  466. package/dist/resources/hooks/use-assignments.d.ts.map +1 -0
  467. package/dist/resources/hooks/use-assignments.js +12 -0
  468. package/dist/resources/hooks/use-bookings.d.ts +14 -0
  469. package/dist/resources/hooks/use-bookings.d.ts.map +1 -0
  470. package/dist/resources/hooks/use-bookings.js +12 -0
  471. package/dist/resources/hooks/use-closeouts.d.ts +19 -0
  472. package/dist/resources/hooks/use-closeouts.d.ts.map +1 -0
  473. package/dist/resources/hooks/use-closeouts.js +12 -0
  474. package/dist/resources/hooks/use-pool.d.ts +15 -0
  475. package/dist/resources/hooks/use-pool.d.ts.map +1 -0
  476. package/dist/resources/hooks/use-pool.js +12 -0
  477. package/dist/resources/hooks/use-pools.d.ts +19 -0
  478. package/dist/resources/hooks/use-pools.d.ts.map +1 -0
  479. package/dist/resources/hooks/use-pools.js +12 -0
  480. package/dist/resources/hooks/use-products.d.ts +14 -0
  481. package/dist/resources/hooks/use-products.d.ts.map +1 -0
  482. package/dist/resources/hooks/use-products.js +12 -0
  483. package/dist/resources/hooks/use-resource.d.ts +16 -0
  484. package/dist/resources/hooks/use-resource.d.ts.map +1 -0
  485. package/dist/resources/hooks/use-resource.js +12 -0
  486. package/dist/resources/hooks/use-resources.d.ts +20 -0
  487. package/dist/resources/hooks/use-resources.d.ts.map +1 -0
  488. package/dist/resources/hooks/use-resources.js +12 -0
  489. package/dist/resources/hooks/use-rules.d.ts +15 -0
  490. package/dist/resources/hooks/use-rules.d.ts.map +1 -0
  491. package/dist/resources/hooks/use-rules.js +12 -0
  492. package/dist/resources/hooks/use-slots.d.ts +16 -0
  493. package/dist/resources/hooks/use-slots.d.ts.map +1 -0
  494. package/dist/resources/hooks/use-slots.js +12 -0
  495. package/dist/resources/hooks/use-start-times.d.ts +16 -0
  496. package/dist/resources/hooks/use-start-times.d.ts.map +1 -0
  497. package/dist/resources/hooks/use-start-times.js +12 -0
  498. package/dist/resources/hooks/use-suppliers.d.ts +14 -0
  499. package/dist/resources/hooks/use-suppliers.d.ts.map +1 -0
  500. package/dist/resources/hooks/use-suppliers.js +12 -0
  501. package/dist/resources/i18n/en.d.ts +3 -0
  502. package/dist/resources/i18n/en.d.ts.map +1 -0
  503. package/dist/resources/i18n/en.js +363 -0
  504. package/dist/resources/i18n/index.d.ts +5 -0
  505. package/dist/resources/i18n/index.d.ts.map +1 -0
  506. package/dist/resources/i18n/index.js +3 -0
  507. package/dist/resources/i18n/messages.d.ts +298 -0
  508. package/dist/resources/i18n/messages.d.ts.map +1 -0
  509. package/dist/resources/i18n/messages.js +1 -0
  510. package/dist/resources/i18n/provider.d.ts +26 -0
  511. package/dist/resources/i18n/provider.d.ts.map +1 -0
  512. package/dist/resources/i18n/provider.js +44 -0
  513. package/dist/resources/i18n/ro.d.ts +3 -0
  514. package/dist/resources/i18n/ro.d.ts.map +1 -0
  515. package/dist/resources/i18n/ro.js +363 -0
  516. package/dist/resources/i18n/utils.d.ts +18 -0
  517. package/dist/resources/i18n/utils.d.ts.map +1 -0
  518. package/dist/resources/i18n/utils.js +30 -0
  519. package/dist/resources/index.d.ts +9 -0
  520. package/dist/resources/index.d.ts.map +1 -0
  521. package/dist/resources/index.js +8 -0
  522. package/dist/resources/provider.d.ts +2 -0
  523. package/dist/resources/provider.d.ts.map +1 -0
  524. package/dist/resources/provider.js +1 -0
  525. package/dist/resources/query-keys.d.ts +73 -0
  526. package/dist/resources/query-keys.d.ts.map +1 -0
  527. package/dist/resources/query-keys.js +29 -0
  528. package/dist/resources/query-options.d.ts +801 -0
  529. package/dist/resources/query-options.d.ts.map +1 -0
  530. package/dist/resources/query-options.js +237 -0
  531. package/dist/resources/schemas.d.ts +452 -0
  532. package/dist/resources/schemas.d.ts.map +1 -0
  533. package/dist/resources/schemas.js +126 -0
  534. package/dist/resources/ui.d.ts +13 -0
  535. package/dist/resources/ui.d.ts.map +1 -0
  536. package/dist/resources/ui.js +12 -0
  537. package/dist/resources/utils.d.ts +14 -0
  538. package/dist/resources/utils.d.ts.map +1 -0
  539. package/dist/resources/utils.js +33 -0
  540. package/package.json +325 -0
  541. package/src/availability/styles.css +12 -0
  542. package/src/places/styles.css +11 -0
  543. package/src/resources/styles.css +11 -0
  544. package/src/styles.css +3 -0
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { useAdminBreadcrumbs, useAdminHref, useAdminNavigate, useOperatorAdminMessages, } from "@voyant-travel/admin";
5
+ import { AvailabilityRuleDetailPage, getAvailabilityRuleDetailQueryOptions, } from "../components/availability-rule-detail-page.js";
6
+ import { useVoyantAvailabilityContext } from "../index.js";
7
+ /**
8
+ * Packaged admin host for the availability rule detail page (packaged-admin
9
+ * RFC Phase 3). Data wiring runs through the shared availability provider
10
+ * context; breadcrumbs through the admin chrome; cross-route links through
11
+ * the semantic destinations `availabilitySlot.list`, `availabilitySlot.detail`
12
+ * and `product.detail` (RFC §4.7). The SSR prefetch loader stays in the host
13
+ * route file with the app's cookie-forwarding fetcher.
14
+ */
15
+ export function AvailabilityRuleDetailHost({ ruleId }) {
16
+ const messages = useOperatorAdminMessages();
17
+ const resolveHref = useAdminHref();
18
+ const navigateTo = useAdminNavigate();
19
+ const client = useVoyantAvailabilityContext();
20
+ const ruleQuery = useQuery(getAvailabilityRuleDetailQueryOptions(client, ruleId));
21
+ const rule = ruleQuery.data?.data;
22
+ useAdminBreadcrumbs([
23
+ { label: messages.availability.title, href: resolveHref("availabilitySlot.list", {}) },
24
+ ...(rule ? [{ label: rule.productName ?? `Rule ${rule.id.slice(-6)}` }] : []),
25
+ ]);
26
+ return (_jsx(AvailabilityRuleDetailPage, { id: ruleId, onBack: () => navigateTo("availabilitySlot.list", {}), onDeleted: () => navigateTo("availabilitySlot.list", {}), onOpenProduct: (productId) => navigateTo("product.detail", { productId }), onOpenSlot: (slotId) => navigateTo("availabilitySlot.detail", { slotId }) }));
27
+ }
@@ -0,0 +1,29 @@
1
+ export interface AvailabilitySlotDetailHostProps {
2
+ /** The availability slot id (route param, bound by the host route file). */
3
+ slotId: string;
4
+ }
5
+ /**
6
+ * Packaged admin host for the availability slot detail page (packaged-admin
7
+ * RFC Phase 3). Owns everything package-clean:
8
+ *
9
+ * - Data wiring through the shared availability provider context
10
+ * (`useVoyantAvailabilityContext`) — the workspace shell mounts
11
+ * `VoyantAvailabilityProvider`, so no per-route provider or app env
12
+ * helper is needed.
13
+ * - Admin chrome breadcrumbs (`useAdminBreadcrumbs`).
14
+ * - Cross-route links resolve through semantic destinations (RFC §4.7):
15
+ * `availabilitySlot.list`, `availabilityStartTime.detail`,
16
+ * `booking.detail`, `product.detail` — no host route tree import.
17
+ * - The cross-domain composition the operator route previously assembled:
18
+ * the Allocation tab (`@voyant-travel/operations-react/availability/allocation`), the Extras manifest tab
19
+ * (`@voyant-travel/bookings-react/extras`), the booking create/quick-view sheets
20
+ * (`@voyant-travel/bookings-react/ui`, lazy) and the product quick-view sheet
21
+ * (`@voyant-travel/inventory-react/ui`).
22
+ * - The slot edit dialog, submitting through the package mutation
23
+ * (`useAvailabilitySlotMutation`) instead of an app RPC client.
24
+ *
25
+ * The SSR prefetch loader stays in the host route file (it runs outside the
26
+ * React tree with the app's cookie-forwarding fetcher).
27
+ */
28
+ export declare function AvailabilitySlotDetailHost({ slotId }: AvailabilitySlotDetailHostProps): import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=slot-detail-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-detail-host.d.ts","sourceRoot":"","sources":["../../../src/availability/admin/slot-detail-host.tsx"],"names":[],"mappings":"AA4CA,MAAM,WAAW,+BAA+B;IAC9C,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,MAAM,EAAE,EAAE,+BAA+B,2CAqIrF"}
@@ -0,0 +1,110 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { useAdminBreadcrumbs, useAdminHref, useAdminNavigate, useOperatorAdminMessages, } from "@voyant-travel/admin";
5
+ import { SlotExtrasManifestPanel, useExtrasUiMessagesOrDefault, } from "@voyant-travel/bookings-react/extras";
6
+ import { ProductQuickViewSheet } from "@voyant-travel/inventory-react/ui";
7
+ import { lazy, Suspense, useState } from "react";
8
+ import { SlotAllocationPage } from "../allocation/index.js";
9
+ import { AvailabilitySlotDialog } from "../components/availability-dialogs.js";
10
+ import { AvailabilitySlotDetailPage, getAvailabilitySlotDetailQueryOptions, getAvailabilitySlotProductQueryOptions, } from "../components/availability-slot-detail-page.js";
11
+ import { useAvailabilitySlotMutation, useRules, useStartTimes, useVoyantAvailabilityContext, } from "../index.js";
12
+ // Lazy: the booking sheets pull the bookings-ui bundle; only operators who
13
+ // actually create/preview a booking from a slot pay for it.
14
+ const BookingCreateSheet = lazy(() => import("@voyant-travel/bookings-react/components/booking-create-sheet").then((module) => ({
15
+ default: module.BookingCreateSheet,
16
+ })));
17
+ const BookingQuickViewSheet = lazy(() => import("@voyant-travel/bookings-react/components/booking-quick-view-sheet").then((module) => ({
18
+ default: module.BookingQuickViewSheet,
19
+ })));
20
+ /**
21
+ * Packaged admin host for the availability slot detail page (packaged-admin
22
+ * RFC Phase 3). Owns everything package-clean:
23
+ *
24
+ * - Data wiring through the shared availability provider context
25
+ * (`useVoyantAvailabilityContext`) — the workspace shell mounts
26
+ * `VoyantAvailabilityProvider`, so no per-route provider or app env
27
+ * helper is needed.
28
+ * - Admin chrome breadcrumbs (`useAdminBreadcrumbs`).
29
+ * - Cross-route links resolve through semantic destinations (RFC §4.7):
30
+ * `availabilitySlot.list`, `availabilityStartTime.detail`,
31
+ * `booking.detail`, `product.detail` — no host route tree import.
32
+ * - The cross-domain composition the operator route previously assembled:
33
+ * the Allocation tab (`@voyant-travel/operations-react/availability/allocation`), the Extras manifest tab
34
+ * (`@voyant-travel/bookings-react/extras`), the booking create/quick-view sheets
35
+ * (`@voyant-travel/bookings-react/ui`, lazy) and the product quick-view sheet
36
+ * (`@voyant-travel/inventory-react/ui`).
37
+ * - The slot edit dialog, submitting through the package mutation
38
+ * (`useAvailabilitySlotMutation`) instead of an app RPC client.
39
+ *
40
+ * The SSR prefetch loader stays in the host route file (it runs outside the
41
+ * React tree with the app's cookie-forwarding fetcher).
42
+ */
43
+ export function AvailabilitySlotDetailHost({ slotId }) {
44
+ const messages = useOperatorAdminMessages();
45
+ const extrasMessages = useExtrasUiMessagesOrDefault();
46
+ const resolveHref = useAdminHref();
47
+ const navigateTo = useAdminNavigate();
48
+ const client = useVoyantAvailabilityContext();
49
+ const slotMutation = useAvailabilitySlotMutation();
50
+ const slotQuery = useQuery(getAvailabilitySlotDetailQueryOptions(client, slotId));
51
+ const slot = slotQuery.data?.data;
52
+ const productQuery = useQuery({
53
+ ...getAvailabilitySlotProductQueryOptions(client, slot?.productId ?? null),
54
+ enabled: Boolean(slot?.productId),
55
+ });
56
+ const productName = productQuery.data?.data?.name ?? null;
57
+ const [bookingPreviewId, setBookingPreviewId] = useState(null);
58
+ const [productPreviewId, setProductPreviewId] = useState(null);
59
+ const [bookingCreateDefaults, setBookingCreateDefaults] = useState(null);
60
+ const [editDialogOpen, setEditDialogOpen] = useState(false);
61
+ // Lazy-load rules + start times only when the edit dialog opens —
62
+ // the slot detail view itself doesn't need them. Scope to the slot's
63
+ // product so the dialog only suggests recurring rules / start times
64
+ // that already belong to this product.
65
+ const rulesQuery = useRules({ productId: slot?.productId, enabled: editDialogOpen });
66
+ const startTimesQuery = useStartTimes({
67
+ productId: slot?.productId,
68
+ enabled: editDialogOpen,
69
+ });
70
+ useAdminBreadcrumbs([
71
+ { label: messages.availability.title, href: resolveHref("availabilitySlot.list", {}) },
72
+ ...(slot
73
+ ? [
74
+ {
75
+ label: productName ? `${productName} · ${slot.dateLocal}` : `Slot · ${slot.dateLocal}`,
76
+ },
77
+ ]
78
+ : []),
79
+ ]);
80
+ return (_jsxs(_Fragment, { children: [_jsx(AvailabilitySlotDetailPage, { id: slotId, onBack: () => navigateTo("availabilitySlot.list", {}), onDeleted: () => navigateTo("availabilitySlot.list", {}), onOpenProduct: (productId) => setProductPreviewId(productId), onOpenStartTime: (startTimeId) => navigateTo("availabilityStartTime.detail", { startTimeId }), onCreateBooking: (input) => setBookingCreateDefaults(input), onEdit: () => setEditDialogOpen(true), renderAllocation: ({ slotId: allocationSlotId }) => (_jsx(SlotAllocationPage, { slotId: allocationSlotId, embed: true, onBookingOpen: (bookingId) => setBookingPreviewId(bookingId) })), renderExtras: ({ slotId: extrasSlotId }) => (_jsx(SlotExtrasManifestPanel, { slotId: extrasSlotId })), extrasTabLabel: extrasMessages.slotManifest.title }), _jsx(Suspense, { fallback: null, children: _jsx(BookingCreateSheet, { open: Boolean(bookingCreateDefaults), onOpenChange: (open) => {
81
+ if (!open)
82
+ setBookingCreateDefaults(null);
83
+ }, defaultProductId: bookingCreateDefaults?.productId, defaultSlotId: bookingCreateDefaults?.slotId, onCreated: (booking) => setBookingPreviewId(booking.id) }) }), _jsx(Suspense, { fallback: null, children: _jsx(BookingQuickViewSheet, { bookingId: bookingPreviewId, open: bookingPreviewId !== null, onOpenChange: (open) => {
84
+ if (!open)
85
+ setBookingPreviewId(null);
86
+ }, onViewFull: (booking) => {
87
+ setBookingPreviewId(null);
88
+ navigateTo("booking.detail", { bookingId: booking.id });
89
+ } }) }), _jsx(ProductQuickViewSheet, { productId: productPreviewId, open: productPreviewId !== null, onOpenChange: (open) => {
90
+ if (!open)
91
+ setProductPreviewId(null);
92
+ }, onViewFull: (product) => {
93
+ setProductPreviewId(null);
94
+ navigateTo("product.detail", { productId: product.id });
95
+ } }), slot && productQuery.data?.data ? (_jsx(AvailabilitySlotDialog, { messages: messages.availability, open: editDialogOpen, onOpenChange: setEditDialogOpen, slot: slot, products: [productQuery.data.data], rules: rulesQuery.data?.data ?? [], startTimes: startTimesQuery.data?.data ?? [], onSubmit: async (payload, context) => {
96
+ if (context.isEditing) {
97
+ if (!context.id)
98
+ throw new Error("Slot edit requires an id.");
99
+ await slotMutation.update.mutateAsync({
100
+ id: context.id,
101
+ input: payload,
102
+ });
103
+ return;
104
+ }
105
+ await slotMutation.create.mutateAsync(payload);
106
+ }, onSuccess: () => {
107
+ setEditDialogOpen(false);
108
+ void slotQuery.refetch();
109
+ } })) : null] }));
110
+ }
@@ -0,0 +1,15 @@
1
+ export interface AvailabilityStartTimeDetailHostProps {
2
+ /** The availability start time id (route param, bound by the host route file). */
3
+ startTimeId: string;
4
+ }
5
+ /**
6
+ * Packaged admin host for the availability start time detail page
7
+ * (packaged-admin RFC Phase 3). Data wiring runs through the shared
8
+ * availability provider context; breadcrumbs through the admin chrome;
9
+ * cross-route links through the semantic destinations
10
+ * `availabilitySlot.list`, `availabilitySlot.detail` and `product.detail`
11
+ * (RFC §4.7). The SSR prefetch loader stays in the host route file with the
12
+ * app's cookie-forwarding fetcher.
13
+ */
14
+ export declare function AvailabilityStartTimeDetailHost({ startTimeId, }: AvailabilityStartTimeDetailHostProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=start-time-detail-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-time-detail-host.d.ts","sourceRoot":"","sources":["../../../src/availability/admin/start-time-detail-host.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,oCAAoC;IACnD,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,WAAW,GACZ,EAAE,oCAAoC,2CAgCtC"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { useAdminBreadcrumbs, useAdminHref, useAdminNavigate, useOperatorAdminMessages, } from "@voyant-travel/admin";
5
+ import { AvailabilityStartTimeDetailPage, getAvailabilityStartTimeDetailQueryOptions, } from "../components/availability-start-time-detail-page.js";
6
+ import { useVoyantAvailabilityContext } from "../index.js";
7
+ /**
8
+ * Packaged admin host for the availability start time detail page
9
+ * (packaged-admin RFC Phase 3). Data wiring runs through the shared
10
+ * availability provider context; breadcrumbs through the admin chrome;
11
+ * cross-route links through the semantic destinations
12
+ * `availabilitySlot.list`, `availabilitySlot.detail` and `product.detail`
13
+ * (RFC §4.7). The SSR prefetch loader stays in the host route file with the
14
+ * app's cookie-forwarding fetcher.
15
+ */
16
+ export function AvailabilityStartTimeDetailHost({ startTimeId, }) {
17
+ const messages = useOperatorAdminMessages();
18
+ const resolveHref = useAdminHref();
19
+ const navigateTo = useAdminNavigate();
20
+ const client = useVoyantAvailabilityContext();
21
+ const startTimeQuery = useQuery(getAvailabilityStartTimeDetailQueryOptions(client, startTimeId));
22
+ const startTime = startTimeQuery.data?.data;
23
+ const startTimeFallback = messages.availability.details.startTime.fallbackTitle;
24
+ useAdminBreadcrumbs([
25
+ { label: messages.availability.title, href: resolveHref("availabilitySlot.list", {}) },
26
+ ...(startTime
27
+ ? [
28
+ {
29
+ label: startTime.label
30
+ ? `${startTime.productName ?? startTimeFallback} · ${startTime.label}`
31
+ : (startTime.productName ?? `${startTimeFallback} ${startTime.startTimeLocal}`),
32
+ },
33
+ ]
34
+ : []),
35
+ ]);
36
+ return (_jsx(AvailabilityStartTimeDetailPage, { id: startTimeId, onBack: () => navigateTo("availabilitySlot.list", {}), onDeleted: () => navigateTo("availabilitySlot.list", {}), onOpenProduct: (productId) => navigateTo("product.detail", { productId }), onOpenSlot: (slotId) => navigateTo("availabilitySlot.detail", { slotId }) }));
37
+ }
@@ -0,0 +1,25 @@
1
+ import type { SeatLayoutSpec } from "@voyant-travel/operations-react/availability";
2
+ /**
3
+ * Visual editor for a vehicle seat map. Renders a 2D grid the operator can
4
+ * click to cycle each cell through `seat → aisle → door → void`. Used inside
5
+ * the resource-template dialog; the resulting `SeatLayoutSpec` is stored on
6
+ * the template's `flags.layoutSpec` and consumed by the backend materializer.
7
+ *
8
+ * Designed to be controlled — `value` and `onChange` own the spec. Passing
9
+ * `null` clears the spec; the consumer can offer a preset chooser elsewhere
10
+ * if it wants to reset to a starter.
11
+ */
12
+ export interface SeatMapBuilderProps {
13
+ value: SeatLayoutSpec | null;
14
+ onChange(spec: SeatLayoutSpec | null): void;
15
+ /** Hard cap on row count. Defaults to 20, well under the schema's 40. */
16
+ maxRows?: number;
17
+ /** Hard cap on cells per row. Defaults to 12, well under the schema's 20. */
18
+ maxColumns?: number;
19
+ }
20
+ export declare const SEAT_MAP_PRESETS: ReadonlyArray<{
21
+ id: "standardCoach" | "miniCoach" | "largeBus" | "doubleDecker" | "withMidDoor";
22
+ spec: SeatLayoutSpec;
23
+ }>;
24
+ export declare function SeatMapBuilder({ value, onChange, maxRows, maxColumns, }: SeatMapBuilderProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=seat-map-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seat-map-builder.d.ts","sourceRoot":"","sources":["../../../../src/availability/allocation/components/seat-map-builder.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAOlG;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;IAC3C,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAUD,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC;IAC3C,EAAE,EAAE,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAA;IAC/E,IAAI,EAAE,cAAc,CAAA;CACrB,CASA,CAAA;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,OAAY,EACZ,UAAe,GAChB,EAAE,mBAAmB,2CAkLrB"}
@@ -0,0 +1,133 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { formatMessage } from "@voyant-travel/i18n";
4
+ import { Badge, Button, cn } from "@voyant-travel/ui/components";
5
+ import { DoorOpen, Minus, Plus, RotateCcw, Square, X } from "lucide-react";
6
+ import { useMemo } from "react";
7
+ import { useAllocationUiMessagesOrDefault } from "../i18n/index.js";
8
+ const DEFAULT_COLUMNS = 5;
9
+ const NEXT_KIND = {
10
+ seat: "aisle",
11
+ aisle: "door",
12
+ door: "void",
13
+ void: "seat",
14
+ };
15
+ export const SEAT_MAP_PRESETS = [
16
+ { id: "standardCoach", spec: makeUniformSpec(["seat", "seat", "aisle", "seat", "seat"], 11) },
17
+ { id: "miniCoach", spec: makeUniformSpec(["seat", "seat", "aisle", "seat"], 7) },
18
+ { id: "largeBus", spec: makeUniformSpec(["seat", "seat", "seat", "aisle", "seat", "seat"], 11) },
19
+ {
20
+ id: "doubleDecker",
21
+ spec: makeUniformSpec(["seat", "seat", "aisle", "seat", "aisle", "seat", "seat"], 11),
22
+ },
23
+ { id: "withMidDoor", spec: withMidDoor(["seat", "seat", "aisle", "seat", "seat"], 11, 7) },
24
+ ];
25
+ export function SeatMapBuilder({ value, onChange, maxRows = 20, maxColumns = 12, }) {
26
+ const messages = useAllocationUiMessagesOrDefault();
27
+ const t = messages.seatMapBuilder;
28
+ const spec = value;
29
+ const columns = spec?.rows[0]?.cells.length ?? DEFAULT_COLUMNS;
30
+ const seatCount = useMemo(() => countSeats(spec), [spec]);
31
+ function emitOrClear(next) {
32
+ onChange(next.rows.length === 0 ? null : next);
33
+ }
34
+ function cycleCell(rowIndex, cellIndex) {
35
+ if (!spec)
36
+ return;
37
+ const nextRows = spec.rows.map((row, rIdx) => {
38
+ if (rIdx !== rowIndex)
39
+ return row;
40
+ return {
41
+ cells: row.cells.map((cell, cIdx) => (cIdx === cellIndex ? NEXT_KIND[cell] : cell)),
42
+ };
43
+ });
44
+ emitOrClear({ rows: nextRows });
45
+ }
46
+ function addRow() {
47
+ if (spec && spec.rows.length >= maxRows)
48
+ return;
49
+ const baseCells = spec?.rows[spec.rows.length - 1]?.cells.map(() => "seat") ??
50
+ new Array(DEFAULT_COLUMNS).fill("seat");
51
+ emitOrClear({ rows: [...(spec?.rows ?? []), { cells: baseCells }] });
52
+ }
53
+ function removeRow() {
54
+ if (!spec || spec.rows.length <= 1) {
55
+ onChange(null);
56
+ return;
57
+ }
58
+ emitOrClear({ rows: spec.rows.slice(0, -1) });
59
+ }
60
+ function addColumn() {
61
+ if (!spec || columns >= maxColumns)
62
+ return;
63
+ emitOrClear({
64
+ rows: spec.rows.map((row) => ({ cells: [...row.cells, "seat"] })),
65
+ });
66
+ }
67
+ function removeColumn() {
68
+ if (!spec || columns <= 1)
69
+ return;
70
+ emitOrClear({
71
+ rows: spec.rows.map((row) => ({ cells: row.cells.slice(0, -1) })),
72
+ });
73
+ }
74
+ function applyPreset(preset) {
75
+ onChange(preset);
76
+ }
77
+ if (!spec) {
78
+ return (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { children: [_jsx("p", { className: "font-medium text-sm", children: t.presetHeading }), _jsx("p", { className: "text-muted-foreground text-xs", children: t.presetHint })] }), _jsx("div", { className: "flex flex-wrap gap-2", children: SEAT_MAP_PRESETS.map((preset) => (_jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => applyPreset(preset.spec), children: t.presets[preset.id] }, preset.id))) })] }));
79
+ }
80
+ return (_jsxs("div", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsxs("div", { children: [_jsx("p", { className: "font-medium text-sm", children: t.heading }), _jsx("p", { className: "text-muted-foreground text-xs", children: t.description })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: "outline", children: formatMessage(t.capacityChip, { count: seatCount }) }), _jsxs(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => onChange(null), children: [_jsx(RotateCcw, { className: "mr-1 size-3.5", "aria-hidden": "true" }), t.resetSpec] })] })] }), _jsx(CellKindLegend, { messages: t }), _jsx("div", { className: "flex flex-col items-start gap-1.5 overflow-x-auto rounded-md border bg-muted/10 p-3", children: spec.rows.map((row, rowIndex) => (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "w-6 shrink-0 text-right text-[10px] text-muted-foreground tabular-nums", children: rowIndex + 1 }), row.cells.map((cell, cellIndex) => (_jsx("button", { type: "button", "aria-label": formatMessage(t.columnAria, {
81
+ row: rowIndex + 1,
82
+ column: cellIndex + 1,
83
+ }), title: t.cellKinds[cell], onClick: () => cycleCell(rowIndex, cellIndex), className: cn("flex size-9 items-center justify-center rounded border text-[11px] font-medium transition-colors", cellStyles(cell)), children: _jsx(CellGlyph, { cell: cell, short: t.cellKindShort[cell] }) }, `cell-${rowIndex}-${cellIndex}`)))] }, `row-${rowIndex}`))) }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: addRow, disabled: spec.rows.length >= maxRows, children: [_jsx(Plus, { className: "mr-1 size-3.5", "aria-hidden": "true" }), t.addRow] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: removeRow, children: [_jsx(Minus, { className: "mr-1 size-3.5", "aria-hidden": "true" }), t.removeRow] }), _jsx("span", { className: "text-muted-foreground text-xs", children: formatMessage(t.seatCountSummary, { count: seatCount }) }), _jsxs("div", { className: "ml-auto flex items-center gap-1", children: [_jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: removeColumn, disabled: columns <= 1, children: _jsx(Minus, { className: "size-3.5", "aria-hidden": "true" }) }), _jsx("span", { className: "text-muted-foreground text-[10px] uppercase tracking-wider", children: columns }), _jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: addColumn, disabled: columns >= maxColumns, children: _jsx(Plus, { className: "size-3.5", "aria-hidden": "true" }) })] })] }), _jsx("p", { className: "text-muted-foreground text-xs", children: t.voidDoorReminder })] }));
84
+ }
85
+ function CellKindLegend({ messages, }) {
86
+ const kinds = ["seat", "aisle", "door", "void"];
87
+ return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("p", { className: "font-medium text-xs", children: messages.cellKindHeading }), _jsx("div", { className: "flex flex-wrap items-center gap-2 text-xs", children: kinds.map((kind) => (_jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx("span", { className: cn("inline-flex size-5 items-center justify-center rounded border text-[10px]", cellStyles(kind)), "aria-hidden": "true", children: _jsx(CellGlyph, { cell: kind, short: messages.cellKindShort[kind] }) }), messages.cellKinds[kind]] }, kind))) }), _jsx("p", { className: "text-muted-foreground text-[11px]", children: messages.cellKindHint })] }));
88
+ }
89
+ function CellGlyph({ cell, short }) {
90
+ if (cell === "door")
91
+ return _jsx(DoorOpen, { className: "size-3.5", "aria-hidden": "true" });
92
+ if (cell === "void")
93
+ return _jsx(X, { className: "size-3 opacity-40", "aria-hidden": "true" });
94
+ if (cell === "aisle")
95
+ return _jsx(Square, { className: "size-2.5 opacity-30", "aria-hidden": "true" });
96
+ return _jsx("span", { children: short });
97
+ }
98
+ function cellStyles(cell) {
99
+ switch (cell) {
100
+ case "seat":
101
+ return "border-primary/40 bg-primary/10 text-primary hover:bg-primary/20";
102
+ case "aisle":
103
+ return "border-dashed border-muted-foreground/30 bg-transparent text-muted-foreground hover:bg-muted/30";
104
+ case "door":
105
+ return "border-amber-500/50 bg-amber-500/15 text-amber-700 hover:bg-amber-500/25 dark:text-amber-300";
106
+ case "void":
107
+ return "border-muted-foreground/20 bg-muted/20 text-muted-foreground/40 hover:bg-muted/40";
108
+ }
109
+ }
110
+ function countSeats(spec) {
111
+ if (!spec)
112
+ return 0;
113
+ let count = 0;
114
+ for (const row of spec.rows) {
115
+ for (const cell of row.cells) {
116
+ if (cell === "seat")
117
+ count += 1;
118
+ }
119
+ }
120
+ return count;
121
+ }
122
+ function makeUniformSpec(template, rowCount) {
123
+ return { rows: Array.from({ length: rowCount }, () => ({ cells: [...template] })) };
124
+ }
125
+ function withMidDoor(rowTemplate, rowCount, doorRowIndex) {
126
+ const rows = makeUniformSpec(rowTemplate, rowCount).rows;
127
+ const safeIndex = Math.min(Math.max(0, doorRowIndex - 1), rows.length - 1);
128
+ const target = rows[safeIndex];
129
+ if (target) {
130
+ rows[safeIndex] = { cells: target.cells.map(() => "door") };
131
+ }
132
+ return { rows };
133
+ }
@@ -0,0 +1,29 @@
1
+ import type { FormEvent } from "react";
2
+ import type { useAllocationUiMessagesOrDefault } from "../i18n/index.js";
3
+ import { type ResourceCapacitySummary } from "./slot-allocation-model.js";
4
+ type ResourceTemplateOption = {
5
+ id: string;
6
+ name: string;
7
+ templates: ReadonlyArray<{
8
+ kind: string;
9
+ capacity: number;
10
+ }>;
11
+ };
12
+ export declare function AddResourceDialog({ open, onOpenChange, onSubmit, activeKind, resourceLabel, onResourceLabelChange, resourceCapacity, onResourceCapacityChange, resourceOptionId, onResourceOptionIdChange, resourceOptions, projectedSummary, createPending, messages, }: {
13
+ open: boolean;
14
+ onOpenChange: (open: boolean) => void;
15
+ onSubmit: (event: FormEvent<HTMLFormElement>) => void;
16
+ activeKind: string;
17
+ resourceLabel: string;
18
+ onResourceLabelChange: (value: string) => void;
19
+ resourceCapacity: number;
20
+ onResourceCapacityChange: (value: number) => void;
21
+ resourceOptionId: string | null;
22
+ onResourceOptionIdChange: (value: string | null) => void;
23
+ resourceOptions: ReadonlyArray<ResourceTemplateOption>;
24
+ projectedSummary: ResourceCapacitySummary | null;
25
+ createPending: boolean;
26
+ messages: ReturnType<typeof useAllocationUiMessagesOrDefault>;
27
+ }): import("react/jsx-runtime").JSX.Element;
28
+ export {};
29
+ //# sourceMappingURL=slot-allocation-add-resource-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-allocation-add-resource-dialog.d.ts","sourceRoot":"","sources":["../../../../src/availability/allocation/components/slot-allocation-add-resource-dialog.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAa,KAAK,uBAAuB,EAAa,MAAM,4BAA4B,CAAA;AAE/F,KAAK,sBAAsB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D,CAAA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IACrD,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,gBAAgB,EAAE,MAAM,CAAA;IACxB,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxD,eAAe,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAA;IACtD,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAA;IAChD,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,UAAU,CAAC,OAAO,gCAAgC,CAAC,CAAA;CAC9D,2CA2FA"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, Dialog, DialogBody, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@voyant-travel/ui/components";
4
+ import { AlertTriangle } from "lucide-react";
5
+ import { kindLabel, ROOM_KIND } from "./slot-allocation-model.js";
6
+ export function AddResourceDialog({ open, onOpenChange, onSubmit, activeKind, resourceLabel, onResourceLabelChange, resourceCapacity, onResourceCapacityChange, resourceOptionId, onResourceOptionIdChange, resourceOptions, projectedSummary, createPending, messages, }) {
7
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: messages.addResource }) }), _jsxs("form", { onSubmit: onSubmit, children: [_jsxs(DialogBody, { className: "grid gap-4", children: [resourceOptions.length > 0 ? (_jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { htmlFor: "allocation-resource-option", children: messages.resourceOption }), _jsxs(Select, { value: resourceOptionId ?? "__none__", onValueChange: (value) => {
8
+ const next = value === "__none__" ? null : value;
9
+ onResourceOptionIdChange(next);
10
+ if (next) {
11
+ const option = resourceOptions.find((entry) => entry.id === next);
12
+ const template = option?.templates.find((entry) => entry.kind === activeKind);
13
+ if (template?.capacity)
14
+ onResourceCapacityChange(template.capacity);
15
+ }
16
+ }, children: [_jsx(SelectTrigger, { id: "allocation-resource-option", className: "w-full", children: _jsx(SelectValue, { placeholder: messages.resourceOptionPlaceholder, children: (value) => value === "__none__"
17
+ ? messages.resourceOptionNone
18
+ : (resourceOptions.find((option) => option.id === value)?.name ?? value) }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__none__", children: messages.resourceOptionNone }), resourceOptions.map((option) => (_jsx(SelectItem, { value: option.id, children: option.name }, option.id)))] })] })] })) : null, _jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { htmlFor: "allocation-resource-label", children: messages.resourceLabel }), _jsx(Input, { id: "allocation-resource-label", value: resourceLabel, onChange: (event) => onResourceLabelChange(event.target.value), placeholder: activeKind === ROOM_KIND ? "102" : kindLabel(activeKind, messages), autoFocus: true })] }), _jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { htmlFor: "allocation-resource-capacity", children: messages.resourceCapacity }), _jsx(Input, { id: "allocation-resource-capacity", type: "number", min: 1, value: resourceCapacity, onChange: (event) => onResourceCapacityChange(Number(event.target.value) || 1) })] }), projectedSummary?.status === "over" && projectedSummary.delta != null ? (_jsxs("div", { className: "flex items-start gap-2 rounded-md border border-amber-300/60 bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:border-amber-500/40 dark:bg-amber-500/10 dark:text-amber-200", role: "status", children: [_jsx(AlertTriangle, { className: "mt-0.5 size-4 shrink-0", "aria-hidden": "true" }), _jsxs("span", { children: [messages.overCapacityWarning, " ", projectedSummary.resourceCapacity, "/", projectedSummary.slotPax ?? "—", " (", messages.resourceCapacityOver, ":", " ", projectedSummary.delta, ")"] })] })) : null] }), _jsxs(DialogFooter, { children: [_jsx(Button, { type: "button", variant: "ghost", onClick: () => onOpenChange(false), children: messages.cancel }), _jsx(Button, { type: "submit", disabled: createPending, children: messages.createResource })] })] })] }) }));
19
+ }
@@ -0,0 +1,111 @@
1
+ import { type AllocationManifestTraveler, type AllocationResource, type SeatLayoutSpec } from "@voyant-travel/operations-react/availability";
2
+ import type { AllocationUiMessages } from "../i18n/index.js";
3
+ export declare const ROOM_KIND = "room";
4
+ export declare const VEHICLE_KIND = "vehicle";
5
+ export declare const VEHICLE_SEAT_KIND = "vehicle_seat";
6
+ export declare const PARENT_ONLY_KINDS: Set<string>;
7
+ export type AllocationOccupants = {
8
+ byResource: Map<string, AllocationManifestTraveler[]>;
9
+ byTravelerId: Map<string, AllocationManifestTraveler>;
10
+ unallocated: AllocationManifestTraveler[];
11
+ };
12
+ export declare function deriveAllocationKinds({ resources, templateOptions, }: {
13
+ resources: ReadonlyArray<Pick<AllocationResource, "kind">>;
14
+ templateOptions: ReadonlyArray<{
15
+ templates: ReadonlyArray<{
16
+ kind: string | null | undefined;
17
+ }>;
18
+ }>;
19
+ }): string[];
20
+ export type ValidationIssue = {
21
+ id: string;
22
+ label: string;
23
+ };
24
+ export declare function collectOccupants(travelers: AllocationManifestTraveler[], resources: AllocationResource[], kind: string): AllocationOccupants;
25
+ export declare function buildValidationIssues({ travelers, resources, occupants, kind, messages, }: {
26
+ travelers: AllocationManifestTraveler[];
27
+ resources: AllocationResource[];
28
+ occupants: AllocationOccupants;
29
+ kind: string;
30
+ messages: AllocationUiMessages;
31
+ }): ValidationIssue[];
32
+ export declare function splitSharingGroups(travelers: AllocationManifestTraveler[], kind: string): string[];
33
+ export interface VehicleSeatGroup {
34
+ id: string;
35
+ label: string;
36
+ sortOrder: number;
37
+ seats: AllocationResource[];
38
+ /**
39
+ * Parsed 2D layout for this vehicle when the operator drew a custom map
40
+ * via `<SeatMapBuilder />`. Renderers honor this to draw aisles, doors,
41
+ * and voids; absent means fall back to the row-grouped layout.
42
+ */
43
+ layoutSpec: SeatLayoutSpec | null;
44
+ }
45
+ export declare function groupSeatsByVehicle(seats: AllocationResource[], vehicles: AllocationResource[], messages: AllocationUiMessages): VehicleSeatGroup[];
46
+ export declare function seatRows(seats: AllocationResource[]): {
47
+ rowKey: string;
48
+ seats: {
49
+ id: string;
50
+ slotId: string;
51
+ kind: string;
52
+ refType: string | null;
53
+ refId: string | null;
54
+ label: string | null;
55
+ capacity: number;
56
+ flags: Record<string, unknown>;
57
+ parentId: string | null;
58
+ sortOrder: number;
59
+ createdAt: string | Date;
60
+ updatedAt: string | Date;
61
+ }[];
62
+ }[];
63
+ export declare function seatName(seat: AllocationResource, messages: AllocationUiMessages): string;
64
+ export declare function parentKindFor(kind: string): "" | "vehicle";
65
+ export declare function defaultCapacityFor(kind: string): 2 | 1;
66
+ export declare function kindLabel(kind: string, messages: AllocationUiMessages): string;
67
+ /**
68
+ * Group resources for display by a "sub-type" — `refId` when present,
69
+ * otherwise the leading alphabetic token of `label` ("DBL" from
70
+ * "DBL 1"), otherwise a single "other" bucket. Lets the operator scan
71
+ * all DBLs together instead of an alphabetic interleave of mixed
72
+ * sub-types. Each group also exposes the count and the total person-
73
+ * capacity so the header summary stays consistent with the grid.
74
+ */
75
+ export interface ResourceSubTypeGroup {
76
+ key: string;
77
+ /**
78
+ * Human-readable group label derived from the resource's refId or
79
+ * label prefix. `null` for the catch-all bucket (unlabeled, refId-
80
+ * less resources) — consumers should fall back to a localized
81
+ * "Other" string.
82
+ */
83
+ label: string | null;
84
+ resources: AllocationResource[];
85
+ count: number;
86
+ capacity: number;
87
+ }
88
+ export declare function groupResourcesBySubType(resources: AllocationResource[]): ResourceSubTypeGroup[];
89
+ export interface ResourceCapacitySummary {
90
+ resourceCount: number;
91
+ resourceCapacity: number;
92
+ slotPax: number | null;
93
+ slotRemainingPax: number | null;
94
+ delta: number | null;
95
+ status: "fits" | "exact" | "over" | "unbounded";
96
+ }
97
+ /**
98
+ * Roll up slot pax vs. resource person-capacity into a single summary
99
+ * the header can render as a coloured pill. `slotPax` is the slot's
100
+ * `initialPax` when finite; if the slot is `unlimited` or has no
101
+ * initial pax we treat it as unbounded and the operator only sees the
102
+ * total resource capacity without a delta.
103
+ */
104
+ export declare function summarizeResourceCapacity(input: {
105
+ resources: AllocationResource[];
106
+ slotInitialPax: number | null | undefined;
107
+ slotRemainingPax: number | null | undefined;
108
+ unlimited: boolean;
109
+ }): ResourceCapacitySummary;
110
+ export declare function flagString(value: unknown): string | null;
111
+ //# sourceMappingURL=slot-allocation-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-allocation-model.d.ts","sourceRoot":"","sources":["../../../../src/availability/allocation/components/slot-allocation-model.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEpB,MAAM,8CAA8C,CAAA;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,eAAO,MAAM,SAAS,SAAS,CAAA;AAC/B,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,aAA0B,CAAA;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAA;IACrD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA;IACrD,WAAW,EAAE,0BAA0B,EAAE,CAAA;CAC1C,CAAA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1D,eAAe,EAAE,aAAa,CAAC;QAC7B,SAAS,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC,CAAA;KAC9D,CAAC,CAAA;CACH,YAaA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,0BAA0B,EAAE,EACvC,SAAS,EAAE,kBAAkB,EAAE,EAC/B,IAAI,EAAE,MAAM,GACX,mBAAmB,CAmBrB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,0BAA0B,EAAE,CAAA;IACvC,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,SAAS,EAAE,mBAAmB,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,oBAAoB,CAAA;CAC/B,qBA4BA;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,0BAA0B,EAAE,EAAE,IAAI,EAAE,MAAM,YAevF;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAA;IAC3B;;;;OAIG;IACH,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;CAClC;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,kBAAkB,EAAE,EAC3B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,QAAQ,EAAE,oBAAoB,GAC7B,gBAAgB,EAAE,CA4BpB;AASD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE;;;;;;;;;;;;;;;;IAenD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,UAKhF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,kBAEzC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,SAE9C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,UAMrE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX;;;;;OAKG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,oBAAoB,EAAE,CAoB/F;AAYD,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAA;CAChD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACzC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3C,SAAS,EAAE,OAAO,CAAA;CACnB,GAAG,uBAAuB,CAsB1B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,iBAExC"}