@aglyn/plugins-commerce 1.0.0-beta.229 → 1.0.0-beta.231

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 (590) hide show
  1. package/package.json +13 -13
  2. package/src/index.d.ts +0 -1
  3. package/src/index.js +0 -1
  4. package/src/index.js.map +1 -1
  5. package/src/lib/barcode/barcode-decode.d.ts +71 -0
  6. package/src/lib/barcode/barcode-decode.js +498 -0
  7. package/src/lib/barcode/barcode-decode.js.map +1 -0
  8. package/src/lib/barcode/barcode-encode.d.ts +44 -0
  9. package/src/lib/barcode/barcode-encode.js +138 -0
  10. package/src/lib/barcode/barcode-encode.js.map +1 -0
  11. package/src/lib/barcode/barcode-scanner.component.d.ts +23 -0
  12. package/src/lib/barcode/barcode-scanner.component.js +260 -0
  13. package/src/lib/barcode/barcode-scanner.component.js.map +1 -0
  14. package/src/lib/barcode/scan-button.component.d.ts +10 -0
  15. package/src/lib/barcode/scan-button.component.js +62 -0
  16. package/src/lib/barcode/scan-button.component.js.map +1 -0
  17. package/src/lib/barcode/scanner-wedge.d.ts +35 -0
  18. package/src/lib/barcode/scanner-wedge.js +108 -0
  19. package/src/lib/barcode/scanner-wedge.js.map +1 -0
  20. package/src/lib/components/account.js +10 -1
  21. package/src/lib/components/account.js.map +1 -1
  22. package/src/lib/components/cart-extras.d.ts +45 -0
  23. package/src/lib/components/cart-extras.js +127 -0
  24. package/src/lib/components/cart-extras.js.map +1 -0
  25. package/src/lib/components/cart.js +82 -15
  26. package/src/lib/components/cart.js.map +1 -1
  27. package/src/lib/components/checkout-return-notice.d.ts +26 -0
  28. package/src/lib/components/checkout-return-notice.js +48 -0
  29. package/src/lib/components/checkout-return-notice.js.map +1 -0
  30. package/src/lib/components/commerce-console-page.js +124 -0
  31. package/src/lib/components/commerce-console-page.js.map +1 -1
  32. package/src/lib/components/commerce-console-sections.d.ts +1 -1
  33. package/src/lib/components/commerce-console-sections.js +4 -0
  34. package/src/lib/components/commerce-console-sections.js.map +1 -1
  35. package/src/lib/components/console/bulk-fulfill.d.ts +44 -0
  36. package/src/lib/components/console/bulk-fulfill.js +84 -0
  37. package/src/lib/components/console/bulk-fulfill.js.map +1 -0
  38. package/src/lib/components/console/customer-notifications-card.component.d.ts +19 -0
  39. package/src/lib/components/console/customer-notifications-card.component.js +149 -0
  40. package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
  41. package/src/lib/components/console/host-orders-card.component.js +84 -5
  42. package/src/lib/components/console/host-orders-card.component.js.map +1 -1
  43. package/src/lib/components/console/locations-card.component.js +164 -57
  44. package/src/lib/components/console/locations-card.component.js.map +1 -1
  45. package/src/lib/components/console/order-detail-dialog.component.js +209 -61
  46. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
  47. package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
  48. package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
  49. package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
  50. package/src/lib/components/console/order-invoice.component.d.ts +33 -0
  51. package/src/lib/components/console/order-invoice.component.js +81 -0
  52. package/src/lib/components/console/order-invoice.component.js.map +1 -0
  53. package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
  54. package/src/lib/components/console/order-receipt-resend.component.js +203 -0
  55. package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
  56. package/src/lib/components/console/order-returns.component.d.ts +36 -0
  57. package/src/lib/components/console/order-returns.component.js +142 -0
  58. package/src/lib/components/console/order-returns.component.js.map +1 -0
  59. package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
  60. package/src/lib/components/console/order-shipping-actions.component.js +149 -0
  61. package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
  62. package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
  63. package/src/lib/components/console/order-webhooks-card.component.js +623 -0
  64. package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
  65. package/src/lib/components/console/order-zones.d.ts +155 -0
  66. package/src/lib/components/console/order-zones.js +40 -0
  67. package/src/lib/components/console/order-zones.js.map +1 -0
  68. package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
  69. package/src/lib/components/console/payment-methods-card.component.js +395 -0
  70. package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
  71. package/src/lib/components/console/pos/pos-api.d.ts +124 -0
  72. package/src/lib/components/console/pos/pos-api.js +101 -0
  73. package/src/lib/components/console/pos/pos-api.js.map +1 -0
  74. package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
  75. package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
  76. package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
  77. package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
  78. package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
  79. package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
  80. package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
  81. package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
  82. package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
  83. package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
  84. package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
  85. package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
  86. package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
  87. package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
  88. package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
  89. package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
  90. package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
  91. package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
  92. package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
  93. package/src/lib/components/console/pos/use-pos-display.js +161 -0
  94. package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
  95. package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
  96. package/src/lib/components/console/pos-devices-card.component.js +546 -0
  97. package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
  98. package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
  99. package/src/lib/components/console/pos-display/brand-screen.js +85 -0
  100. package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
  101. package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
  102. package/src/lib/components/console/pos-display/cart-screen.js +166 -0
  103. package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
  104. package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
  105. package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
  106. package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
  107. package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
  108. package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
  109. package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
  110. package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
  111. package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
  112. package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
  113. package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
  114. package/src/lib/components/console/pos-display/tip-screen.js +211 -0
  115. package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
  116. package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
  117. package/src/lib/components/console/pos-display-page.component.js +407 -0
  118. package/src/lib/components/console/pos-display-page.component.js.map +1 -0
  119. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
  120. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
  121. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
  122. package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
  123. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
  124. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
  125. package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
  126. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
  127. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
  128. package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
  129. package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
  130. package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
  131. package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
  132. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
  133. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
  134. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
  135. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
  136. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
  137. package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
  138. package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
  139. package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
  140. package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
  141. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
  142. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
  143. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
  144. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
  145. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
  146. package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
  147. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
  148. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
  149. package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
  150. package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
  151. package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
  152. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
  153. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
  154. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
  155. package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
  156. package/src/lib/components/console/pos-ops/register-ops.js +28 -0
  157. package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
  158. package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
  159. package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
  160. package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
  161. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
  162. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
  163. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
  164. package/src/lib/components/console/pos-page.component.d.ts +13 -5
  165. package/src/lib/components/console/pos-page.component.js +729 -657
  166. package/src/lib/components/console/pos-page.component.js.map +1 -1
  167. package/src/lib/components/console/product-editor-dialog.component.js +51 -7
  168. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
  169. package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
  170. package/src/lib/components/console/product-labels-dialog.component.js +197 -0
  171. package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
  172. package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
  173. package/src/lib/components/console/product-register-fields.component.js +241 -0
  174. package/src/lib/components/console/product-register-fields.component.js.map +1 -0
  175. package/src/lib/components/console/product-zones.d.ts +58 -2
  176. package/src/lib/components/console/product-zones.js +10 -2
  177. package/src/lib/components/console/product-zones.js.map +1 -1
  178. package/src/lib/components/console/products-hub-card.component.js +51 -11
  179. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  180. package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
  181. package/src/lib/components/console/register-hardware-card.component.js +826 -0
  182. package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
  183. package/src/lib/components/console/registers-card.component.js +24 -5
  184. package/src/lib/components/console/registers-card.component.js.map +1 -1
  185. package/src/lib/components/console/return-actions.d.ts +38 -0
  186. package/src/lib/components/console/return-actions.js +76 -0
  187. package/src/lib/components/console/return-actions.js.map +1 -0
  188. package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
  189. package/src/lib/components/console/return-detail-dialog.component.js +718 -0
  190. package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
  191. package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
  192. package/src/lib/components/console/return-settings-card.component.js +195 -0
  193. package/src/lib/components/console/return-settings-card.component.js.map +1 -0
  194. package/src/lib/components/console/return-zones.d.ts +87 -0
  195. package/src/lib/components/console/return-zones.js +31 -0
  196. package/src/lib/components/console/return-zones.js.map +1 -0
  197. package/src/lib/components/console/returns-card.component.d.ts +45 -0
  198. package/src/lib/components/console/returns-card.component.js +159 -0
  199. package/src/lib/components/console/returns-card.component.js.map +1 -0
  200. package/src/lib/components/console/shipping-settings-card.component.js +161 -5
  201. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
  202. package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
  203. package/src/lib/components/console/shippingeasy-card.component.js +378 -0
  204. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
  205. package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
  206. package/src/lib/components/console/shipstation-card.component.js +345 -0
  207. package/src/lib/components/console/shipstation-card.component.js.map +1 -0
  208. package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
  209. package/src/lib/components/console/start-return-dialog.component.js +243 -0
  210. package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
  211. package/src/lib/components/console/stock-movements-card.component.js +2 -1
  212. package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
  213. package/src/lib/components/console/store-settings-card.component.js +2 -66
  214. package/src/lib/components/console/store-settings-card.component.js.map +1 -1
  215. package/src/lib/components/console/store-zones.d.ts +42 -0
  216. package/src/lib/components/console/store-zones.js +39 -0
  217. package/src/lib/components/console/store-zones.js.map +1 -0
  218. package/src/lib/components/order-status.d.ts +36 -0
  219. package/src/lib/components/order-status.js +502 -0
  220. package/src/lib/components/order-status.js.map +1 -0
  221. package/src/lib/components/product-detail.js +44 -2
  222. package/src/lib/components/product-detail.js.map +1 -1
  223. package/src/lib/components/return-request.d.ts +32 -0
  224. package/src/lib/components/return-request.js +576 -0
  225. package/src/lib/components/return-request.js.map +1 -0
  226. package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
  227. package/src/lib/components/storefront-payment-appearance.js +114 -0
  228. package/src/lib/components/storefront-payment-appearance.js.map +1 -0
  229. package/src/lib/components/storefront-payment-element.d.ts +57 -1
  230. package/src/lib/components/storefront-payment-element.js +332 -33
  231. package/src/lib/components/storefront-payment-element.js.map +1 -1
  232. package/src/lib/constants/order-status.d.ts +22 -0
  233. package/src/lib/constants/order-status.js +22 -0
  234. package/src/lib/constants/order-status.js.map +1 -0
  235. package/src/lib/constants/return-request.d.ts +27 -0
  236. package/src/lib/constants/return-request.js +32 -0
  237. package/src/lib/constants/return-request.js.map +1 -0
  238. package/src/lib/constants/stock-movement-query.js +2 -1
  239. package/src/lib/constants/stock-movement-query.js.map +1 -1
  240. package/src/lib/declarations.console-server.js +9 -0
  241. package/src/lib/declarations.console-server.js.map +1 -1
  242. package/src/lib/declarations.server.d.ts +2 -1
  243. package/src/lib/declarations.server.js +47 -1
  244. package/src/lib/declarations.server.js.map +1 -1
  245. package/src/lib/model/buyer-notifications.d.ts +59 -0
  246. package/src/lib/model/buyer-notifications.js +97 -0
  247. package/src/lib/model/buyer-notifications.js.map +1 -0
  248. package/src/lib/model/commerce-orders.d.ts +127 -1
  249. package/src/lib/model/commerce-orders.js +24 -15
  250. package/src/lib/model/commerce-orders.js.map +1 -1
  251. package/src/lib/model/commerce-payment-methods.d.ts +146 -0
  252. package/src/lib/model/commerce-payment-methods.js +247 -0
  253. package/src/lib/model/commerce-payment-methods.js.map +1 -0
  254. package/src/lib/model/commerce-pos-ops.d.ts +437 -0
  255. package/src/lib/model/commerce-pos-ops.js +721 -0
  256. package/src/lib/model/commerce-pos-ops.js.map +1 -0
  257. package/src/lib/model/commerce-pos.d.ts +263 -0
  258. package/src/lib/model/commerce-pos.js +375 -0
  259. package/src/lib/model/commerce-pos.js.map +1 -0
  260. package/src/lib/model/commerce-printers.d.ts +211 -0
  261. package/src/lib/model/commerce-printers.js +181 -0
  262. package/src/lib/model/commerce-printers.js.map +1 -0
  263. package/src/lib/model/commerce-receipt.d.ts +97 -0
  264. package/src/lib/model/commerce-receipt.js +180 -0
  265. package/src/lib/model/commerce-receipt.js.map +1 -0
  266. package/src/lib/model/commerce-returns.d.ts +207 -0
  267. package/src/lib/model/commerce-returns.js +300 -0
  268. package/src/lib/model/commerce-returns.js.map +1 -0
  269. package/src/lib/model/commerce-shipping.d.ts +44 -1
  270. package/src/lib/model/commerce-shipping.js +53 -9
  271. package/src/lib/model/commerce-shipping.js.map +1 -1
  272. package/src/lib/model/commerce-tax-engine.d.ts +90 -0
  273. package/src/lib/model/commerce-tax-engine.js +129 -0
  274. package/src/lib/model/commerce-tax-engine.js.map +1 -0
  275. package/src/lib/model/commerce.d.ts +88 -2
  276. package/src/lib/model/commerce.js +89 -1
  277. package/src/lib/model/commerce.js.map +1 -1
  278. package/src/lib/model/index.d.ts +15 -0
  279. package/src/lib/model/index.js +15 -0
  280. package/src/lib/model/index.js.map +1 -1
  281. package/src/lib/model/order-events.d.ts +154 -0
  282. package/src/lib/model/order-events.js +153 -0
  283. package/src/lib/model/order-events.js.map +1 -0
  284. package/src/lib/model/order-fulfillment.d.ts +117 -0
  285. package/src/lib/model/order-fulfillment.js +217 -0
  286. package/src/lib/model/order-fulfillment.js.map +1 -0
  287. package/src/lib/model/order-history.d.ts +58 -0
  288. package/src/lib/model/order-history.js +22 -0
  289. package/src/lib/model/order-history.js.map +1 -0
  290. package/src/lib/model/order-list-fields.d.ts +9 -1
  291. package/src/lib/model/order-list-fields.js +7 -1
  292. package/src/lib/model/order-list-fields.js.map +1 -1
  293. package/src/lib/model/order-shipping-export.d.ts +91 -0
  294. package/src/lib/model/order-shipping-export.js +192 -0
  295. package/src/lib/model/order-shipping-export.js.map +1 -0
  296. package/src/lib/model/order-status-view.d.ts +103 -0
  297. package/src/lib/model/order-status-view.js +156 -0
  298. package/src/lib/model/order-status-view.js.map +1 -0
  299. package/src/lib/model/order-webhooks.d.ts +142 -0
  300. package/src/lib/model/order-webhooks.js +91 -0
  301. package/src/lib/model/order-webhooks.js.map +1 -0
  302. package/src/lib/model/product-channel.d.ts +56 -0
  303. package/src/lib/model/product-channel.js +86 -0
  304. package/src/lib/model/product-channel.js.map +1 -0
  305. package/src/lib/model/product-modifiers.d.ts +80 -0
  306. package/src/lib/model/product-modifiers.js +140 -0
  307. package/src/lib/model/product-modifiers.js.map +1 -0
  308. package/src/lib/model/shippingeasy.d.ts +94 -0
  309. package/src/lib/model/shippingeasy.js +267 -0
  310. package/src/lib/model/shippingeasy.js.map +1 -0
  311. package/src/lib/model/shipstation.d.ts +125 -0
  312. package/src/lib/model/shipstation.js +399 -0
  313. package/src/lib/model/shipstation.js.map +1 -0
  314. package/src/lib/model/smart-collection-reads.d.ts +32 -0
  315. package/src/lib/model/smart-collection-reads.js +63 -0
  316. package/src/lib/model/smart-collection-reads.js.map +1 -0
  317. package/src/lib/model/tracking-url.d.ts +74 -0
  318. package/src/lib/model/tracking-url.js +159 -0
  319. package/src/lib/model/tracking-url.js.map +1 -0
  320. package/src/lib/plugin-config.d.ts +13 -0
  321. package/src/lib/plugin-config.js +77 -5
  322. package/src/lib/plugin-config.js.map +1 -1
  323. package/src/lib/plugin.js +23 -0
  324. package/src/lib/plugin.js.map +1 -1
  325. package/src/lib/pos-ops-config.d.ts +39 -0
  326. package/src/lib/pos-ops-config.js +88 -0
  327. package/src/lib/pos-ops-config.js.map +1 -0
  328. package/src/lib/printing/print-document.d.ts +106 -0
  329. package/src/lib/printing/print-document.js +464 -0
  330. package/src/lib/printing/print-document.js.map +1 -0
  331. package/src/lib/printing/product-labels.d.ts +58 -0
  332. package/src/lib/printing/product-labels.js +116 -0
  333. package/src/lib/printing/product-labels.js.map +1 -0
  334. package/src/lib/printing/render-epson.d.ts +57 -0
  335. package/src/lib/printing/render-epson.js +135 -0
  336. package/src/lib/printing/render-epson.js.map +1 -0
  337. package/src/lib/printing/render-star.d.ts +45 -0
  338. package/src/lib/printing/render-star.js +100 -0
  339. package/src/lib/printing/render-star.js.map +1 -0
  340. package/src/lib/printing/render-text.d.ts +25 -0
  341. package/src/lib/printing/render-text.js +53 -0
  342. package/src/lib/printing/render-text.js.map +1 -0
  343. package/src/lib/server/api-v1/openapi.js +27 -4
  344. package/src/lib/server/api-v1/openapi.js.map +1 -1
  345. package/src/lib/server/api-v1/order-view.d.ts +67 -0
  346. package/src/lib/server/api-v1/order-view.js +120 -0
  347. package/src/lib/server/api-v1/order-view.js.map +1 -0
  348. package/src/lib/server/api-v1/orders-and-products.js +58 -65
  349. package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
  350. package/src/lib/server/billing-webhook.js +135 -28
  351. package/src/lib/server/billing-webhook.js.map +1 -1
  352. package/src/lib/server/cancel-order.js +29 -0
  353. package/src/lib/server/cancel-order.js.map +1 -1
  354. package/src/lib/server/carrier-rates-availability.d.ts +26 -0
  355. package/src/lib/server/carrier-rates-availability.js +76 -0
  356. package/src/lib/server/carrier-rates-availability.js.map +1 -0
  357. package/src/lib/server/carrier-shipping.d.ts +84 -0
  358. package/src/lib/server/carrier-shipping.js +135 -0
  359. package/src/lib/server/carrier-shipping.js.map +1 -0
  360. package/src/lib/server/cart-checkout.d.ts +2 -0
  361. package/src/lib/server/cart-checkout.js +226 -22
  362. package/src/lib/server/cart-checkout.js.map +1 -1
  363. package/src/lib/server/checkout-extras.d.ts +64 -0
  364. package/src/lib/server/checkout-extras.js +157 -0
  365. package/src/lib/server/checkout-extras.js.map +1 -0
  366. package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
  367. package/src/lib/server/checkout-status.js +111 -0
  368. package/src/lib/server/checkout-status.js.map +1 -0
  369. package/src/lib/server/checkout.js +86 -9
  370. package/src/lib/server/checkout.js.map +1 -1
  371. package/src/lib/server/draft-order.js +34 -5
  372. package/src/lib/server/draft-order.js.map +1 -1
  373. package/src/lib/server/fulfill-order.d.ts +127 -10
  374. package/src/lib/server/fulfill-order.js +451 -49
  375. package/src/lib/server/fulfill-order.js.map +1 -1
  376. package/src/lib/server/legacy-feed.d.ts +28 -0
  377. package/src/lib/server/legacy-feed.js +52 -0
  378. package/src/lib/server/legacy-feed.js.map +1 -0
  379. package/src/lib/server/native-checkout.d.ts +34 -15
  380. package/src/lib/server/native-checkout.js +32 -17
  381. package/src/lib/server/native-checkout.js.map +1 -1
  382. package/src/lib/server/order-event-host-emit.d.ts +23 -0
  383. package/src/lib/server/order-event-host-emit.js +30 -0
  384. package/src/lib/server/order-event-host-emit.js.map +1 -0
  385. package/src/lib/server/order-event-triggers.d.ts +37 -0
  386. package/src/lib/server/order-event-triggers.js +119 -0
  387. package/src/lib/server/order-event-triggers.js.map +1 -0
  388. package/src/lib/server/order-events.d.ts +62 -0
  389. package/src/lib/server/order-events.js +109 -0
  390. package/src/lib/server/order-events.js.map +1 -0
  391. package/src/lib/server/order-history.d.ts +23 -0
  392. package/src/lib/server/order-history.js +65 -0
  393. package/src/lib/server/order-history.js.map +1 -0
  394. package/src/lib/server/order-notifications.d.ts +185 -0
  395. package/src/lib/server/order-notifications.js +567 -0
  396. package/src/lib/server/order-notifications.js.map +1 -0
  397. package/src/lib/server/order-receipt-send.d.ts +39 -0
  398. package/src/lib/server/order-receipt-send.js +151 -0
  399. package/src/lib/server/order-receipt-send.js.map +1 -0
  400. package/src/lib/server/order-status-token.d.ts +31 -0
  401. package/src/lib/server/order-status-token.js +75 -0
  402. package/src/lib/server/order-status-token.js.map +1 -0
  403. package/src/lib/server/order-status.d.ts +58 -0
  404. package/src/lib/server/order-status.js +141 -0
  405. package/src/lib/server/order-status.js.map +1 -0
  406. package/src/lib/server/order-webhooks.d.ts +108 -0
  407. package/src/lib/server/order-webhooks.js +622 -0
  408. package/src/lib/server/order-webhooks.js.map +1 -0
  409. package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
  410. package/src/lib/server/orders-shipping-prepare.js +121 -0
  411. package/src/lib/server/orders-shipping-prepare.js.map +1 -0
  412. package/src/lib/server/payment-method-domains.d.ts +209 -0
  413. package/src/lib/server/payment-method-domains.js +444 -0
  414. package/src/lib/server/payment-method-domains.js.map +1 -0
  415. package/src/lib/server/payment-methods.d.ts +77 -0
  416. package/src/lib/server/payment-methods.js +284 -0
  417. package/src/lib/server/payment-methods.js.map +1 -0
  418. package/src/lib/server/pos-auth.d.ts +50 -0
  419. package/src/lib/server/pos-auth.js +121 -0
  420. package/src/lib/server/pos-auth.js.map +1 -0
  421. package/src/lib/server/pos-customer.d.ts +49 -0
  422. package/src/lib/server/pos-customer.js +257 -0
  423. package/src/lib/server/pos-customer.js.map +1 -0
  424. package/src/lib/server/pos-display.d.ts +57 -0
  425. package/src/lib/server/pos-display.js +419 -0
  426. package/src/lib/server/pos-display.js.map +1 -0
  427. package/src/lib/server/pos-fee-month.d.ts +34 -0
  428. package/src/lib/server/pos-fee-month.js +36 -0
  429. package/src/lib/server/pos-fee-month.js.map +1 -0
  430. package/src/lib/server/pos-ops-gate.d.ts +161 -0
  431. package/src/lib/server/pos-ops-gate.js +295 -0
  432. package/src/lib/server/pos-ops-gate.js.map +1 -0
  433. package/src/lib/server/pos-ops-routes.d.ts +22 -0
  434. package/src/lib/server/pos-ops-routes.js +36 -0
  435. package/src/lib/server/pos-ops-routes.js.map +1 -0
  436. package/src/lib/server/pos-order.d.ts +1 -18
  437. package/src/lib/server/pos-order.js +222 -42
  438. package/src/lib/server/pos-order.js.map +1 -1
  439. package/src/lib/server/pos-payment.d.ts +39 -0
  440. package/src/lib/server/pos-payment.js +922 -0
  441. package/src/lib/server/pos-payment.js.map +1 -0
  442. package/src/lib/server/pos-print.d.ts +82 -0
  443. package/src/lib/server/pos-print.js +193 -0
  444. package/src/lib/server/pos-print.js.map +1 -0
  445. package/src/lib/server/pos-readers.d.ts +27 -0
  446. package/src/lib/server/pos-readers.js +276 -0
  447. package/src/lib/server/pos-readers.js.map +1 -0
  448. package/src/lib/server/pos-refund-authority.d.ts +60 -0
  449. package/src/lib/server/pos-refund-authority.js +72 -0
  450. package/src/lib/server/pos-refund-authority.js.map +1 -0
  451. package/src/lib/server/pos-return.d.ts +58 -0
  452. package/src/lib/server/pos-return.js +891 -0
  453. package/src/lib/server/pos-return.js.map +1 -0
  454. package/src/lib/server/pos-sale-stamp.d.ts +66 -0
  455. package/src/lib/server/pos-sale-stamp.js +84 -0
  456. package/src/lib/server/pos-sale-stamp.js.map +1 -0
  457. package/src/lib/server/pos-sale.d.ts +170 -0
  458. package/src/lib/server/pos-sale.js +461 -0
  459. package/src/lib/server/pos-sale.js.map +1 -0
  460. package/src/lib/server/pos-shift.d.ts +45 -0
  461. package/src/lib/server/pos-shift.js +484 -0
  462. package/src/lib/server/pos-shift.js.map +1 -0
  463. package/src/lib/server/pos-staff-pin.d.ts +26 -0
  464. package/src/lib/server/pos-staff-pin.js +339 -0
  465. package/src/lib/server/pos-staff-pin.js.map +1 -0
  466. package/src/lib/server/pos-stripe.d.ts +91 -0
  467. package/src/lib/server/pos-stripe.js +129 -0
  468. package/src/lib/server/pos-stripe.js.map +1 -0
  469. package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
  470. package/src/lib/server/pos-terminal-connection-token.js +166 -0
  471. package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
  472. package/src/lib/server/pos-terminal.d.ts +218 -0
  473. package/src/lib/server/pos-terminal.js +1014 -0
  474. package/src/lib/server/pos-terminal.js.map +1 -0
  475. package/src/lib/server/print-queue.d.ts +124 -0
  476. package/src/lib/server/print-queue.js +301 -0
  477. package/src/lib/server/print-queue.js.map +1 -0
  478. package/src/lib/server/printer-poll.d.ts +75 -0
  479. package/src/lib/server/printer-poll.js +325 -0
  480. package/src/lib/server/printer-poll.js.map +1 -0
  481. package/src/lib/server/printer-secret.d.ts +39 -0
  482. package/src/lib/server/printer-secret.js +56 -0
  483. package/src/lib/server/printer-secret.js.map +1 -0
  484. package/src/lib/server/printers.d.ts +114 -0
  485. package/src/lib/server/printers.js +546 -0
  486. package/src/lib/server/printers.js.map +1 -0
  487. package/src/lib/server/product-ai-capability.d.ts +42 -0
  488. package/src/lib/server/product-ai-capability.js +159 -0
  489. package/src/lib/server/product-ai-capability.js.map +1 -0
  490. package/src/lib/server/product-catalog.d.ts +42 -0
  491. package/src/lib/server/product-catalog.js +305 -0
  492. package/src/lib/server/product-catalog.js.map +1 -0
  493. package/src/lib/server/product-drafts.d.ts +119 -0
  494. package/src/lib/server/product-drafts.js +384 -0
  495. package/src/lib/server/product-drafts.js.map +1 -0
  496. package/src/lib/server/refund.js +110 -45
  497. package/src/lib/server/refund.js.map +1 -1
  498. package/src/lib/server/reserve.js +2 -0
  499. package/src/lib/server/reserve.js.map +1 -1
  500. package/src/lib/server/return-status-action.d.ts +37 -0
  501. package/src/lib/server/return-status-action.js +57 -0
  502. package/src/lib/server/return-status-action.js.map +1 -0
  503. package/src/lib/server/returns.d.ts +119 -0
  504. package/src/lib/server/returns.js +938 -0
  505. package/src/lib/server/returns.js.map +1 -0
  506. package/src/lib/server/shipment-records.d.ts +36 -0
  507. package/src/lib/server/shipment-records.js +289 -0
  508. package/src/lib/server/shipment-records.js.map +1 -0
  509. package/src/lib/server/shipping-connector-gates.d.ts +40 -0
  510. package/src/lib/server/shipping-connector-gates.js +97 -0
  511. package/src/lib/server/shipping-connector-gates.js.map +1 -0
  512. package/src/lib/server/shipping-connectors.d.ts +29 -0
  513. package/src/lib/server/shipping-connectors.js +236 -0
  514. package/src/lib/server/shipping-connectors.js.map +1 -0
  515. package/src/lib/server/shippingeasy.d.ts +238 -0
  516. package/src/lib/server/shippingeasy.js +787 -0
  517. package/src/lib/server/shippingeasy.js.map +1 -0
  518. package/src/lib/server/shipstation.d.ts +129 -0
  519. package/src/lib/server/shipstation.js +483 -0
  520. package/src/lib/server/shipstation.js.map +1 -0
  521. package/src/lib/server/site-page-resolver.d.ts +5 -0
  522. package/src/lib/server/site-page-resolver.js +156 -1
  523. package/src/lib/server/site-page-resolver.js.map +1 -1
  524. package/src/lib/server/stock-levels.d.ts +21 -0
  525. package/src/lib/server/stock-levels.js +263 -0
  526. package/src/lib/server/stock-levels.js.map +1 -0
  527. package/src/lib/server/stripe-refund.d.ts +47 -0
  528. package/src/lib/server/stripe-refund.js +87 -0
  529. package/src/lib/server/stripe-refund.js.map +1 -0
  530. package/src/lib/server/supplier-update.js +46 -5
  531. package/src/lib/server/supplier-update.js.map +1 -1
  532. package/src/lib/server/tax-engine-quote.d.ts +47 -0
  533. package/src/lib/server/tax-engine-quote.js +105 -0
  534. package/src/lib/server/tax-engine-quote.js.map +1 -0
  535. package/src/lib/server.js +146 -2
  536. package/src/lib/server.js.map +1 -1
  537. package/src/lib/site.js +12 -0
  538. package/src/lib/site.js.map +1 -1
  539. package/src/lib/subprocessors.d.ts +26 -0
  540. package/src/lib/subprocessors.js +50 -0
  541. package/src/lib/subprocessors.js.map +1 -0
  542. package/src/lib/tenant-emails.js +461 -3
  543. package/src/lib/tenant-emails.js.map +1 -1
  544. package/src/lib/testing/fake-firestore.d.ts +45 -0
  545. package/src/lib/testing/fake-firestore.js +189 -0
  546. package/src/lib/testing/fake-firestore.js.map +1 -0
  547. package/src/lib/testing/memory-firestore.d.ts +123 -0
  548. package/src/lib/testing/memory-firestore.js +274 -0
  549. package/src/lib/testing/memory-firestore.js.map +1 -0
  550. package/src/lib/testing/pos-ops-harness.d.ts +50 -0
  551. package/src/lib/testing/pos-ops-harness.js +184 -0
  552. package/src/lib/testing/pos-ops-harness.js.map +1 -0
  553. package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
  554. package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
  555. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
  556. package/src/lib/transfer/records-transfer.d.ts +11 -1
  557. package/src/lib/transfer/records-transfer.js +127 -5
  558. package/src/lib/transfer/records-transfer.js.map +1 -1
  559. package/src/lib/transfer/records.server.d.ts +9 -2
  560. package/src/lib/transfer/records.server.js +58 -7
  561. package/src/lib/transfer/records.server.js.map +1 -1
  562. package/src/lib/transfer/register-transfer-resources.js +40 -1
  563. package/src/lib/transfer/register-transfer-resources.js.map +1 -1
  564. package/src/lib/transfer/register-transfer-ui.js +4 -1
  565. package/src/lib/transfer/register-transfer-ui.js.map +1 -1
  566. package/src/lib/transfer/shipping-presets.d.ts +23 -0
  567. package/src/lib/transfer/shipping-presets.js +156 -0
  568. package/src/lib/transfer/shipping-presets.js.map +1 -0
  569. package/src/lib/transfer/tracking-transfer.d.ts +101 -0
  570. package/src/lib/transfer/tracking-transfer.js +546 -0
  571. package/src/lib/transfer/tracking-transfer.js.map +1 -0
  572. package/src/lib/transfer/tracking.server.d.ts +37 -0
  573. package/src/lib/transfer/tracking.server.js +393 -0
  574. package/src/lib/transfer/tracking.server.js.map +1 -0
  575. package/src/lib/transfer/transfer-keys.d.ts +2 -1
  576. package/src/lib/transfer/transfer-keys.js +6 -2
  577. package/src/lib/transfer/transfer-keys.js.map +1 -1
  578. package/src/lib/utils/code128.d.ts +37 -0
  579. package/src/lib/utils/code128.js +199 -0
  580. package/src/lib/utils/code128.js.map +1 -0
  581. package/src/lib/utils/order-invoice.d.ts +55 -0
  582. package/src/lib/utils/order-invoice.js +127 -0
  583. package/src/lib/utils/order-invoice.js.map +1 -0
  584. package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
  585. package/src/lib/utils/use-checkout-return-notice.js +78 -0
  586. package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
  587. package/src/lib/utils/use-storefront-purchase-event.js +4 -0
  588. package/src/lib/utils/use-storefront-purchase-event.js.map +1 -1
  589. package/src/lib/server/feed.js +0 -69
  590. package/src/lib/server/feed.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../libs/plugins/commerce/src/lib/components/console/pos/pos-receipt-panel.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { Alert, Button, Stack, TextField, Typography } from '@mui/material'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport * as CommerceModel from '../../../model'\nimport { usePosRegisterHasPrinter, usePosSaleReceipt } from '../pos-ops/register-ops'\nimport { posTender, PosRequestError, usd, type PosRegisterContext, type PosSaleSummary } from './pos-api'\nimport { POS_TOUCH_PX } from './pos-product-grid.component'\nimport type { PosDisplayControl } from './use-pos-display'\n\ntype User = Parameters<typeof posTender>[0]\n\nexport interface PosReceiptPanelProps {\n user: User\n hostId: string\n sale: PosSaleSummary\n context: PosRegisterContext | null\n display: PosDisplayControl\n onNewSale: () => void\n /** The register the sale rang on, for its receipt printer and header. */\n registerId?: string\n registerName?: string\n /** The cashier a PIN switched in (AGL-3609), as the receipt prints them. */\n cashierName?: string\n notify: (message: string, variant: 'success' | 'error' | 'warning' | 'info') => void\n}\n\n/**\n * The sale is paid (AGL-3607, AGL-3608): change due, then the receipt — on\n * the customer display when one is paired and the store asks, otherwise by\n * the cashier — and a new sale.\n */\nexport function PosReceiptPanel(props: PosReceiptPanelProps) {\n const { user, hostId, sale, display, notify } = props\n const [email, setEmail] = useState('')\n const [phone, setPhone] = useState('')\n const [sent, setSent] = useState('')\n const asked = useRef(false)\n const settings = props.context?.settings\n // The 80 mm receipt the register's operations print (AGL-3609), read back\n // from the stored sale; on a register with a cloud printer the server\n // prints it there instead of the browser.\n const receipt = usePosSaleReceipt({\n hostId,\n orderId: sale.orderId,\n ...(props.registerName ? { registerName: props.registerName } : {}),\n ...(props.cashierName ? { cashierName: props.cashierName } : {}),\n })\n const hasPrinter = usePosRegisterHasPrinter(hostId, props.registerId)\n const change = sale.payments.reduce((sum, payment) => sum + (payment.changeCents ?? 0), 0)\n\n // A text receipt is offered only when the store can send one (AGL-3610).\n const smsReceipts = props.context?.smsReceipts === true\n\n /**\n * Sends (email, text) or records (print, none) the receipt choice. The\n * server also ends the customer's turn on the display: it says thank you\n * and forgets the address or number they typed (AGL-3608).\n */\n const sendReceipt = useCallback(\n async (channel: CommerceModel.PosReceiptChannel, to = '', marketingOptIn = false) => {\n try {\n await posTender(user, hostId, sale.orderId, 'receipt', {\n channel,\n ...(to ? { to } : {}),\n ...(marketingOptIn ? { marketingOptIn: true } : {}),\n })\n if (channel === 'email' || channel === 'sms') {\n setSent(channel === 'sms' ? `Receipt texted to ${to}` : `Receipt emailed to ${to}`)\n if (channel === 'sms') setPhone('')\n else setEmail('')\n notify('Receipt sent', 'success')\n }\n } catch (error) {\n if (channel === 'email' || channel === 'sms') {\n notify(error instanceof PosRequestError ? error.message : 'The receipt was not sent', 'error')\n }\n }\n },\n [user, hostId, sale.orderId, notify],\n )\n\n /** Prints on the register's cloud printer when it has one, else in the browser. */\n const printReceipt = useCallback(async () => {\n if (!hasPrinter) receipt.print()\n await sendReceipt('print')\n }, [hasPrinter, receipt, sendReceipt])\n\n // Once per sale: print when the store always prints, or hand the choice to\n // the customer's screen when it asks and a display is paired.\n useEffect(() => {\n if (asked.current || !settings) return\n if (settings.receiptDefault === 'print') {\n // The receipt prints from the stored sale, so it waits for that read.\n if (!receipt.order) return\n asked.current = true\n void printReceipt()\n return\n }\n asked.current = true\n if (settings.receiptDefault === 'ask' && display.connected) {\n void (async () => {\n const answer = await display.ask({\n mode: 'receipt',\n receipt: {\n channels: ['email', ...(smsReceipts ? (['sms'] as const) : []), 'print', 'none'],\n offerMarketing: settings.displayMarketingOptIn,\n },\n })\n if (!answer) {\n // The cashier took the receipt over, or the customer walked away:\n // the screen still ends on its thank-you, not a stale prompt.\n await display.show({ mode: 'thanks' })\n return\n }\n if (answer.receiptChannel === 'email' && answer.email) {\n await sendReceipt('email', answer.email, answer.marketingOptIn === true)\n } else if (answer.receiptChannel === 'sms' && answer.phone) {\n await sendReceipt('sms', answer.phone)\n } else if (answer.receiptChannel === 'print') {\n await printReceipt()\n } else {\n await sendReceipt('none')\n }\n })()\n }\n }, [settings, display, receipt.order, printReceipt, sendReceipt, smsReceipts])\n\n return (\n <Stack spacing={1.5}>\n <Alert severity=\"success\">\n {`Paid ${usd(sale.totalCents)}` + (sale.tipCents ? ` + ${usd(sale.tipCents)} tip` : '')}\n </Alert>\n {change ? (\n <Typography variant=\"h5\" component=\"p\">\n {`Change due: ${usd(change)}`}\n </Typography>\n ) : null}\n {display.asking === 'receipt' ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {'The customer is choosing a receipt on the display…'}\n </Typography>\n ) : null}\n {sent ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {sent}\n </Typography>\n ) : null}\n <Stack direction=\"row\" spacing={1}>\n <TextField\n label=\"Email receipt to\"\n value={email}\n onChange={(event) => setEmail(event.target.value)}\n sx={{ flex: 1 }}\n slotProps={{ htmlInput: { inputMode: 'email', autoComplete: 'off' } }}\n />\n <Button\n variant=\"outlined\"\n disabled={!CommerceModel.posDisplayEmail(email)}\n onClick={() => {\n display.cancelAsk()\n void sendReceipt('email', email.trim())\n }}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {'Send'}\n </Button>\n </Stack>\n {smsReceipts ? (\n <Stack direction=\"row\" spacing={1}>\n <TextField\n label=\"Text receipt to\"\n value={phone}\n onChange={(event) => setPhone(event.target.value)}\n sx={{ flex: 1 }}\n slotProps={{ htmlInput: { inputMode: 'tel', autoComplete: 'off' } }}\n />\n <Button\n variant=\"outlined\"\n disabled={!CommerceModel.posDisplayPhone(phone)}\n onClick={() => {\n display.cancelAsk()\n void sendReceipt('sms', phone.trim())\n }}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {'Text'}\n </Button>\n </Stack>\n ) : null}\n <Stack direction=\"row\" spacing={1}>\n <Button\n variant=\"outlined\"\n disabled={!receipt.order}\n onClick={() => {\n // The cashier answers for the customer: the display's receipt\n // prompt ends with a thank-you rather than waiting it out.\n display.cancelAsk()\n void printReceipt()\n }}\n sx={{ minHeight: POS_TOUCH_PX, flex: 1 }}\n >\n {'Print receipt'}\n </Button>\n <Button\n variant=\"outlined\"\n disabled={!receipt.order}\n onClick={() => receipt.print(true)}\n sx={{ minHeight: POS_TOUCH_PX, flex: 1 }}\n >\n {'Gift receipt'}\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => {\n display.cancelAsk()\n props.onNewSale()\n }}\n sx={{ minHeight: POS_TOUCH_PX, flex: 1 }}\n >\n {'New sale'}\n </Button>\n </Stack>\n </Stack>\n )\n}\nPosReceiptPanel.displayName = 'PosReceiptPanel'\n"],"names":["Alert","Button","Stack","TextField","Typography","useCallback","useEffect","useRef","useState","CommerceModel","usePosRegisterHasPrinter","usePosSaleReceipt","posTender","PosRequestError","usd","POS_TOUCH_PX","PosReceiptPanel","props","user","hostId","sale","display","notify","email","setEmail","phone","setPhone","sent","setSent","asked","settings","context","receipt","orderId","registerName","cashierName","hasPrinter","registerId","change","payments","reduce","sum","payment","changeCents","smsReceipts","sendReceipt","channel","to","marketingOptIn","error","message","printReceipt","print","current","receiptDefault","order","connected","answer","ask","mode","channels","offerMarketing","displayMarketingOptIn","show","receiptChannel","spacing","severity","totalCents","tipCents","variant","component","asking","color","direction","label","value","onChange","event","target","sx","flex","slotProps","htmlInput","inputMode","autoComplete","disabled","posDisplayEmail","onClick","cancelAsk","trim","minHeight","posDisplayPhone","onNewSale","displayName"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /** Cash: what the customer handed over, with one-tap round-ups. */
2
+ export declare function PosCashDialog(props: {
3
+ open: boolean;
4
+ dueCents: number;
5
+ tipCents: number;
6
+ busy: boolean;
7
+ onClose: () => void;
8
+ onTake: (tenderedCents: number) => void;
9
+ }): import("react").JSX.Element;
10
+ /** A gift card: type or scan the code, see the balance, apply it. */
11
+ export declare function PosGiftCardDialog(props: {
12
+ open: boolean;
13
+ busy: boolean;
14
+ onClose: () => void;
15
+ onCheck: (code: string) => Promise<{
16
+ availableCents: number;
17
+ frozen: boolean;
18
+ voided: boolean;
19
+ } | null>;
20
+ onApply: (code: string) => void;
21
+ }): import("react").JSX.Element;
22
+ /** Charge to a checked-in stay's folio. */
23
+ export declare function PosFolioDialog(props: {
24
+ open: boolean;
25
+ amountCents: number;
26
+ stays: any[];
27
+ busy: boolean;
28
+ onClose: () => void;
29
+ onCharge: (reservationId: string) => void;
30
+ }): import("react").JSX.Element;
31
+ /**
32
+ * The QR payment page. Encoded in this browser, never fetched (AGL-1671): a
33
+ * live payment URL in a third party's query string is a link that pays the
34
+ * sale for whoever opens it.
35
+ */
36
+ export declare function PosQrDialog(props: {
37
+ url: string;
38
+ amountCents: number;
39
+ onClose: () => void;
40
+ }): import("react").JSX.Element;
41
+ /**
42
+ * A card typed in by staff (card not present). The card goes into Stripe's
43
+ * own Payment Element and never touches the register; the server created the
44
+ * PaymentIntent and records the payment from Stripe, never from this form's
45
+ * say-so.
46
+ */
47
+ export declare function PosKeyedCardDialog(props: {
48
+ clientSecret: string;
49
+ publishableKey: string;
50
+ amountCents: number;
51
+ onClose: () => void;
52
+ onConfirmed: () => void;
53
+ }): import("react").JSX.Element;
@@ -0,0 +1,445 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
+ import { Alert, Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, MenuItem, Stack, TextField, Typography } from "@mui/material";
19
+ import { Elements, PaymentElement, useElements, useStripe } from "@stripe/react-stripe-js";
20
+ // `/pure`: the Stripe script loads when a typed card is actually taken, not
21
+ // whenever the register mounts (the AGL-2486 reasoning).
22
+ import { loadStripe } from "@stripe/stripe-js/pure";
23
+ import { QRCodeSVG } from "qrcode.react";
24
+ import { useMemo, useState } from "react";
25
+ import { centsFromInput, usd } from "./pos-api.js";
26
+ import { POS_TOUCH_PX } from "./pos-product-grid.component.js";
27
+ /*==========================================
28
+ * The register's tender dialogs (AGL-3607). Each collects what its tender
29
+ * needs and hands it to the tender panel, which owns the request.
30
+ *=========================================*/ /** Cash: what the customer handed over, with one-tap round-ups. */ export function PosCashDialog(props) {
31
+ const [received, setReceived] = useState('');
32
+ const owed = props.dueCents + props.tipCents;
33
+ const tendered = centsFromInput(received);
34
+ const quick = [
35
+ ...new Set([
36
+ owed,
37
+ Math.ceil(owed / 500) * 500,
38
+ Math.ceil(owed / 1000) * 1000,
39
+ Math.ceil(owed / 2000) * 2000
40
+ ])
41
+ ].filter((value)=>value >= owed).slice(0, 4);
42
+ const close = ()=>{
43
+ setReceived('');
44
+ props.onClose();
45
+ };
46
+ return /*#__PURE__*/ _jsxs(Dialog, {
47
+ open: props.open,
48
+ onClose: close,
49
+ maxWidth: "xs",
50
+ fullWidth: true,
51
+ children: [
52
+ /*#__PURE__*/ _jsx(DialogTitle, {
53
+ children: `Cash — ${usd(owed)}`
54
+ }),
55
+ /*#__PURE__*/ _jsxs(DialogContent, {
56
+ sx: {
57
+ display: 'flex',
58
+ flexDirection: 'column',
59
+ gap: 2
60
+ },
61
+ children: [
62
+ /*#__PURE__*/ _jsx(TextField, {
63
+ label: "Cash received ($)",
64
+ value: received,
65
+ onChange: (event)=>setReceived(event.target.value.replace(/[^0-9.]/g, '')),
66
+ autoFocus: true,
67
+ sx: {
68
+ mt: 1
69
+ },
70
+ slotProps: {
71
+ htmlInput: {
72
+ inputMode: 'decimal'
73
+ }
74
+ }
75
+ }),
76
+ /*#__PURE__*/ _jsx(Stack, {
77
+ direction: "row",
78
+ spacing: 1,
79
+ sx: {
80
+ flexWrap: 'wrap'
81
+ },
82
+ children: quick.map((cents)=>/*#__PURE__*/ _jsx(Button, {
83
+ variant: "outlined",
84
+ onClick: ()=>setReceived((cents / 100).toFixed(2)),
85
+ sx: {
86
+ minHeight: POS_TOUCH_PX
87
+ },
88
+ children: cents === owed ? 'Exact' : usd(cents)
89
+ }, cents))
90
+ }),
91
+ tendered > 0 && tendered >= owed ? /*#__PURE__*/ _jsx(Alert, {
92
+ severity: "success",
93
+ children: `Change: ${usd(tendered - owed)}`
94
+ }) : tendered > 0 && tendered < owed ? /*#__PURE__*/ _jsx(Alert, {
95
+ severity: "info",
96
+ children: `Takes ${usd(Math.max(0, tendered - props.tipCents))} toward the sale; ${usd(owed - tendered)} left to pay.`
97
+ }) : null
98
+ ]
99
+ }),
100
+ /*#__PURE__*/ _jsxs(DialogActions, {
101
+ children: [
102
+ /*#__PURE__*/ _jsx(Button, {
103
+ onClick: close,
104
+ sx: {
105
+ minHeight: POS_TOUCH_PX
106
+ },
107
+ children: 'Cancel'
108
+ }),
109
+ /*#__PURE__*/ _jsx(Button, {
110
+ variant: "contained",
111
+ disabled: props.busy || tendered <= props.tipCents,
112
+ onClick: ()=>{
113
+ props.onTake(tendered);
114
+ setReceived('');
115
+ },
116
+ sx: {
117
+ minHeight: POS_TOUCH_PX
118
+ },
119
+ children: 'Take cash'
120
+ })
121
+ ]
122
+ })
123
+ ]
124
+ });
125
+ }
126
+ /** A gift card: type or scan the code, see the balance, apply it. */ export function PosGiftCardDialog(props) {
127
+ const [code, setCode] = useState('');
128
+ const [balance, setBalance] = useState(null);
129
+ const close = ()=>{
130
+ setCode('');
131
+ setBalance(null);
132
+ props.onClose();
133
+ };
134
+ return /*#__PURE__*/ _jsxs(Dialog, {
135
+ open: props.open,
136
+ onClose: close,
137
+ maxWidth: "xs",
138
+ fullWidth: true,
139
+ children: [
140
+ /*#__PURE__*/ _jsx(DialogTitle, {
141
+ children: 'Gift card'
142
+ }),
143
+ /*#__PURE__*/ _jsxs(DialogContent, {
144
+ sx: {
145
+ display: 'flex',
146
+ flexDirection: 'column',
147
+ gap: 2
148
+ },
149
+ children: [
150
+ /*#__PURE__*/ _jsx(TextField, {
151
+ label: "Gift card code",
152
+ value: code,
153
+ onChange: (event)=>{
154
+ setCode(event.target.value.toUpperCase());
155
+ setBalance(null);
156
+ },
157
+ onKeyDown: async (event)=>{
158
+ if (event.key !== 'Enter' || !code.trim()) return;
159
+ const answer = await props.onCheck(code);
160
+ setBalance(answer ? answer.frozen ? 'This card is on hold.' : answer.voided ? 'This card was voided.' : `Available: ${usd(answer.availableCents)}` : null);
161
+ },
162
+ autoFocus: true,
163
+ sx: {
164
+ mt: 1
165
+ },
166
+ slotProps: {
167
+ htmlInput: {
168
+ autoComplete: 'off',
169
+ autoCapitalize: 'characters'
170
+ }
171
+ }
172
+ }),
173
+ balance ? /*#__PURE__*/ _jsx(Alert, {
174
+ severity: "info",
175
+ children: balance
176
+ }) : null
177
+ ]
178
+ }),
179
+ /*#__PURE__*/ _jsxs(DialogActions, {
180
+ children: [
181
+ /*#__PURE__*/ _jsx(Button, {
182
+ onClick: close,
183
+ sx: {
184
+ minHeight: POS_TOUCH_PX
185
+ },
186
+ children: 'Cancel'
187
+ }),
188
+ /*#__PURE__*/ _jsx(Button, {
189
+ disabled: !code.trim(),
190
+ onClick: async ()=>{
191
+ const answer = await props.onCheck(code);
192
+ setBalance(answer ? answer.frozen ? 'This card is on hold.' : `Available: ${usd(answer.availableCents)}` : null);
193
+ },
194
+ sx: {
195
+ minHeight: POS_TOUCH_PX
196
+ },
197
+ children: 'Check balance'
198
+ }),
199
+ /*#__PURE__*/ _jsx(Button, {
200
+ variant: "contained",
201
+ disabled: props.busy || !code.trim(),
202
+ onClick: ()=>{
203
+ props.onApply(code);
204
+ setCode('');
205
+ setBalance(null);
206
+ },
207
+ sx: {
208
+ minHeight: POS_TOUCH_PX
209
+ },
210
+ children: 'Apply card'
211
+ })
212
+ ]
213
+ })
214
+ ]
215
+ });
216
+ }
217
+ /** Charge to a checked-in stay's folio. */ export function PosFolioDialog(props) {
218
+ const [stay, setStay] = useState('');
219
+ return /*#__PURE__*/ _jsxs(Dialog, {
220
+ open: props.open,
221
+ onClose: props.onClose,
222
+ maxWidth: "xs",
223
+ fullWidth: true,
224
+ children: [
225
+ /*#__PURE__*/ _jsx(DialogTitle, {
226
+ children: `Charge to room — ${usd(props.amountCents)}`
227
+ }),
228
+ /*#__PURE__*/ _jsx(DialogContent, {
229
+ children: /*#__PURE__*/ _jsx(TextField, {
230
+ label: "Checked-in stay",
231
+ value: stay,
232
+ onChange: (event)=>setStay(event.target.value),
233
+ select: true,
234
+ fullWidth: true,
235
+ sx: {
236
+ mt: 1
237
+ },
238
+ children: props.stays.map((entry)=>{
239
+ var _ref, _entry_guestName;
240
+ return /*#__PURE__*/ _jsx(MenuItem, {
241
+ value: entry.$id,
242
+ children: (_ref = (_entry_guestName = entry.guestName) != null ? _entry_guestName : entry.guestEmail) != null ? _ref : entry.$id
243
+ }, entry.$id);
244
+ })
245
+ })
246
+ }),
247
+ /*#__PURE__*/ _jsxs(DialogActions, {
248
+ children: [
249
+ /*#__PURE__*/ _jsx(Button, {
250
+ onClick: props.onClose,
251
+ sx: {
252
+ minHeight: POS_TOUCH_PX
253
+ },
254
+ children: 'Cancel'
255
+ }),
256
+ /*#__PURE__*/ _jsx(Button, {
257
+ variant: "contained",
258
+ disabled: props.busy || !stay,
259
+ onClick: ()=>props.onCharge(stay),
260
+ sx: {
261
+ minHeight: POS_TOUCH_PX
262
+ },
263
+ children: 'Charge folio'
264
+ })
265
+ ]
266
+ })
267
+ ]
268
+ });
269
+ }
270
+ /**
271
+ * The QR payment page. Encoded in this browser, never fetched (AGL-1671): a
272
+ * live payment URL in a third party's query string is a link that pays the
273
+ * sale for whoever opens it.
274
+ */ export function PosQrDialog(props) {
275
+ return /*#__PURE__*/ _jsxs(Dialog, {
276
+ open: Boolean(props.url),
277
+ onClose: props.onClose,
278
+ maxWidth: "xs",
279
+ fullWidth: true,
280
+ children: [
281
+ /*#__PURE__*/ _jsx(DialogTitle, {
282
+ children: `Scan to pay ${usd(props.amountCents)}`
283
+ }),
284
+ /*#__PURE__*/ _jsxs(DialogContent, {
285
+ sx: {
286
+ display: 'flex',
287
+ flexDirection: 'column',
288
+ gap: 2
289
+ },
290
+ children: [
291
+ /*#__PURE__*/ _jsx(Typography, {
292
+ variant: "body2",
293
+ color: "text.secondary",
294
+ sx: {
295
+ mt: 1
296
+ },
297
+ children: 'The customer scans this and pays on their phone. The payment shows ' + 'here as soon as it goes through.'
298
+ }),
299
+ /*#__PURE__*/ _jsx(Box, {
300
+ sx: {
301
+ display: 'flex',
302
+ justifyContent: 'center'
303
+ },
304
+ children: /*#__PURE__*/ _jsx(QRCodeSVG, {
305
+ value: props.url,
306
+ size: 256,
307
+ level: "L",
308
+ marginSize: 4,
309
+ title: "Payment QR",
310
+ role: "img"
311
+ })
312
+ }),
313
+ /*#__PURE__*/ _jsx(Button, {
314
+ href: props.url,
315
+ target: "_blank",
316
+ rel: "noopener noreferrer",
317
+ children: 'Open payment page'
318
+ })
319
+ ]
320
+ }),
321
+ /*#__PURE__*/ _jsx(DialogActions, {
322
+ children: /*#__PURE__*/ _jsx(Button, {
323
+ onClick: props.onClose,
324
+ sx: {
325
+ minHeight: POS_TOUCH_PX
326
+ },
327
+ children: 'Close'
328
+ })
329
+ })
330
+ ]
331
+ });
332
+ }
333
+ const stripePromises = new Map();
334
+ function stripeFor(publishableKey) {
335
+ let promise = stripePromises.get(publishableKey);
336
+ if (!promise) {
337
+ promise = loadStripe(publishableKey);
338
+ stripePromises.set(publishableKey, promise);
339
+ }
340
+ return promise;
341
+ }
342
+ /**
343
+ * A card typed in by staff (card not present). The card goes into Stripe's
344
+ * own Payment Element and never touches the register; the server created the
345
+ * PaymentIntent and records the payment from Stripe, never from this form's
346
+ * say-so.
347
+ */ export function PosKeyedCardDialog(props) {
348
+ const stripe = useMemo(()=>props.publishableKey ? stripeFor(props.publishableKey) : null, [
349
+ props.publishableKey
350
+ ]);
351
+ return /*#__PURE__*/ _jsxs(Dialog, {
352
+ open: Boolean(props.clientSecret),
353
+ onClose: props.onClose,
354
+ maxWidth: "sm",
355
+ fullWidth: true,
356
+ children: [
357
+ /*#__PURE__*/ _jsx(DialogTitle, {
358
+ children: `Type a card — ${usd(props.amountCents)}`
359
+ }),
360
+ props.clientSecret && stripe ? /*#__PURE__*/ _jsx(Elements, {
361
+ stripe: stripe,
362
+ options: {
363
+ clientSecret: props.clientSecret
364
+ },
365
+ children: /*#__PURE__*/ _jsx(KeyedCardForm, {
366
+ onClose: props.onClose,
367
+ onConfirmed: props.onConfirmed
368
+ })
369
+ }) : null
370
+ ]
371
+ });
372
+ }
373
+ function KeyedCardForm(props) {
374
+ const stripe = useStripe();
375
+ const elements = useElements();
376
+ const [error, setError] = useState('');
377
+ const [busy, setBusy] = useState(false);
378
+ return /*#__PURE__*/ _jsxs(_Fragment, {
379
+ children: [
380
+ /*#__PURE__*/ _jsxs(DialogContent, {
381
+ sx: {
382
+ display: 'flex',
383
+ flexDirection: 'column',
384
+ gap: 2
385
+ },
386
+ children: [
387
+ /*#__PURE__*/ _jsx(PaymentElement, {
388
+ options: {
389
+ layout: 'tabs',
390
+ wallets: {
391
+ applePay: 'never',
392
+ googlePay: 'never'
393
+ }
394
+ }
395
+ }),
396
+ error ? /*#__PURE__*/ _jsx(Alert, {
397
+ severity: "error",
398
+ children: error
399
+ }) : null
400
+ ]
401
+ }),
402
+ /*#__PURE__*/ _jsxs(DialogActions, {
403
+ children: [
404
+ /*#__PURE__*/ _jsx(Button, {
405
+ onClick: props.onClose,
406
+ disabled: busy,
407
+ sx: {
408
+ minHeight: POS_TOUCH_PX
409
+ },
410
+ children: 'Cancel'
411
+ }),
412
+ /*#__PURE__*/ _jsx(Button, {
413
+ variant: "contained",
414
+ disabled: busy || !stripe || !elements,
415
+ onClick: async ()=>{
416
+ if (!stripe || !elements) return;
417
+ setBusy(true);
418
+ setError('');
419
+ const result = await stripe.confirmPayment({
420
+ elements,
421
+ redirect: 'if_required',
422
+ confirmParams: {
423
+ return_url: window.location.href
424
+ }
425
+ });
426
+ setBusy(false);
427
+ if (result.error) {
428
+ var _result_error_message;
429
+ setError((_result_error_message = result.error.message) != null ? _result_error_message : 'The card was not accepted.');
430
+ return;
431
+ }
432
+ props.onConfirmed();
433
+ },
434
+ sx: {
435
+ minHeight: POS_TOUCH_PX
436
+ },
437
+ children: busy ? 'Charging…' : 'Charge card'
438
+ })
439
+ ]
440
+ })
441
+ ]
442
+ });
443
+ }
444
+
445
+ //# sourceMappingURL=pos-tender-dialogs.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../libs/plugins/commerce/src/lib/components/console/pos/pos-tender-dialogs.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport {\n Alert,\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n MenuItem,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { Elements, PaymentElement, useElements, useStripe } from '@stripe/react-stripe-js'\n// `/pure`: the Stripe script loads when a typed card is actually taken, not\n// whenever the register mounts (the AGL-2486 reasoning).\nimport { loadStripe } from '@stripe/stripe-js/pure'\nimport type { Stripe } from '@stripe/stripe-js'\nimport { QRCodeSVG } from 'qrcode.react'\nimport { useMemo, useState } from 'react'\nimport { centsFromInput, usd } from './pos-api'\nimport { POS_TOUCH_PX } from './pos-product-grid.component'\n\n/*==========================================\n * The register's tender dialogs (AGL-3607). Each collects what its tender\n * needs and hands it to the tender panel, which owns the request.\n *=========================================*/\n\n/** Cash: what the customer handed over, with one-tap round-ups. */\nexport function PosCashDialog(props: {\n open: boolean\n dueCents: number\n tipCents: number\n busy: boolean\n onClose: () => void\n onTake: (tenderedCents: number) => void\n}) {\n const [received, setReceived] = useState('')\n const owed = props.dueCents + props.tipCents\n const tendered = centsFromInput(received)\n const quick = [...new Set([owed, Math.ceil(owed / 500) * 500, Math.ceil(owed / 1000) * 1000, Math.ceil(owed / 2000) * 2000])]\n .filter((value) => value >= owed)\n .slice(0, 4)\n const close = () => {\n setReceived('')\n props.onClose()\n }\n return (\n <Dialog open={props.open} onClose={close} maxWidth=\"xs\" fullWidth>\n <DialogTitle>{`Cash — ${usd(owed)}`}</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <TextField\n label=\"Cash received ($)\"\n value={received}\n onChange={(event) => setReceived(event.target.value.replace(/[^0-9.]/g, ''))}\n autoFocus\n sx={{ mt: 1 }}\n slotProps={{ htmlInput: { inputMode: 'decimal' } }}\n />\n <Stack direction=\"row\" spacing={1} sx={{ flexWrap: 'wrap' }}>\n {quick.map((cents) => (\n <Button\n key={cents}\n variant=\"outlined\"\n onClick={() => setReceived((cents / 100).toFixed(2))}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {cents === owed ? 'Exact' : usd(cents)}\n </Button>\n ))}\n </Stack>\n {tendered > 0 && tendered >= owed ? (\n <Alert severity=\"success\">{`Change: ${usd(tendered - owed)}`}</Alert>\n ) : tendered > 0 && tendered < owed ? (\n <Alert severity=\"info\">\n {`Takes ${usd(Math.max(0, tendered - props.tipCents))} toward the sale; ${usd(owed - tendered)} left to pay.`}\n </Alert>\n ) : null}\n </DialogContent>\n <DialogActions>\n <Button onClick={close} sx={{ minHeight: POS_TOUCH_PX }}>\n {'Cancel'}\n </Button>\n <Button\n variant=\"contained\"\n disabled={props.busy || tendered <= props.tipCents}\n onClick={() => {\n props.onTake(tendered)\n setReceived('')\n }}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {'Take cash'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\n/** A gift card: type or scan the code, see the balance, apply it. */\nexport function PosGiftCardDialog(props: {\n open: boolean\n busy: boolean\n onClose: () => void\n onCheck: (code: string) => Promise<{ availableCents: number; frozen: boolean; voided: boolean } | null>\n onApply: (code: string) => void\n}) {\n const [code, setCode] = useState('')\n const [balance, setBalance] = useState<string | null>(null)\n const close = () => {\n setCode('')\n setBalance(null)\n props.onClose()\n }\n return (\n <Dialog open={props.open} onClose={close} maxWidth=\"xs\" fullWidth>\n <DialogTitle>{'Gift card'}</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <TextField\n label=\"Gift card code\"\n value={code}\n onChange={(event) => {\n setCode(event.target.value.toUpperCase())\n setBalance(null)\n }}\n onKeyDown={async (event) => {\n if (event.key !== 'Enter' || !code.trim()) return\n const answer = await props.onCheck(code)\n setBalance(\n answer\n ? answer.frozen\n ? 'This card is on hold.'\n : answer.voided\n ? 'This card was voided.'\n : `Available: ${usd(answer.availableCents)}`\n : null,\n )\n }}\n autoFocus\n sx={{ mt: 1 }}\n slotProps={{ htmlInput: { autoComplete: 'off', autoCapitalize: 'characters' } }}\n />\n {balance ? <Alert severity=\"info\">{balance}</Alert> : null}\n </DialogContent>\n <DialogActions>\n <Button onClick={close} sx={{ minHeight: POS_TOUCH_PX }}>\n {'Cancel'}\n </Button>\n <Button\n disabled={!code.trim()}\n onClick={async () => {\n const answer = await props.onCheck(code)\n setBalance(\n answer\n ? answer.frozen\n ? 'This card is on hold.'\n : `Available: ${usd(answer.availableCents)}`\n : null,\n )\n }}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {'Check balance'}\n </Button>\n <Button\n variant=\"contained\"\n disabled={props.busy || !code.trim()}\n onClick={() => {\n props.onApply(code)\n setCode('')\n setBalance(null)\n }}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {'Apply card'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\n/** Charge to a checked-in stay's folio. */\nexport function PosFolioDialog(props: {\n open: boolean\n amountCents: number\n stays: any[]\n busy: boolean\n onClose: () => void\n onCharge: (reservationId: string) => void\n}) {\n const [stay, setStay] = useState('')\n return (\n <Dialog open={props.open} onClose={props.onClose} maxWidth=\"xs\" fullWidth>\n <DialogTitle>{`Charge to room — ${usd(props.amountCents)}`}</DialogTitle>\n <DialogContent>\n <TextField\n label=\"Checked-in stay\"\n value={stay}\n onChange={(event) => setStay(event.target.value)}\n select\n fullWidth\n sx={{ mt: 1 }}\n >\n {props.stays.map((entry: any) => (\n <MenuItem key={entry.$id} value={entry.$id}>\n {entry.guestName ?? entry.guestEmail ?? entry.$id}\n </MenuItem>\n ))}\n </TextField>\n </DialogContent>\n <DialogActions>\n <Button onClick={props.onClose} sx={{ minHeight: POS_TOUCH_PX }}>\n {'Cancel'}\n </Button>\n <Button\n variant=\"contained\"\n disabled={props.busy || !stay}\n onClick={() => props.onCharge(stay)}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {'Charge folio'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\n/**\n * The QR payment page. Encoded in this browser, never fetched (AGL-1671): a\n * live payment URL in a third party's query string is a link that pays the\n * sale for whoever opens it.\n */\nexport function PosQrDialog(props: { url: string; amountCents: number; onClose: () => void }) {\n return (\n <Dialog open={Boolean(props.url)} onClose={props.onClose} maxWidth=\"xs\" fullWidth>\n <DialogTitle>{`Scan to pay ${usd(props.amountCents)}`}</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mt: 1 }}>\n {'The customer scans this and pays on their phone. The payment shows ' +\n 'here as soon as it goes through.'}\n </Typography>\n <Box sx={{ display: 'flex', justifyContent: 'center' }}>\n <QRCodeSVG value={props.url} size={256} level=\"L\" marginSize={4} title=\"Payment QR\" role=\"img\" />\n </Box>\n <Button href={props.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {'Open payment page'}\n </Button>\n </DialogContent>\n <DialogActions>\n <Button onClick={props.onClose} sx={{ minHeight: POS_TOUCH_PX }}>\n {'Close'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nconst stripePromises = new Map<string, Promise<Stripe | null>>()\n\nfunction stripeFor(publishableKey: string): Promise<Stripe | null> {\n let promise = stripePromises.get(publishableKey)\n if (!promise) {\n promise = loadStripe(publishableKey)\n stripePromises.set(publishableKey, promise)\n }\n return promise\n}\n\n/**\n * A card typed in by staff (card not present). The card goes into Stripe's\n * own Payment Element and never touches the register; the server created the\n * PaymentIntent and records the payment from Stripe, never from this form's\n * say-so.\n */\nexport function PosKeyedCardDialog(props: {\n clientSecret: string\n publishableKey: string\n amountCents: number\n onClose: () => void\n onConfirmed: () => void\n}) {\n const stripe = useMemo(\n () => (props.publishableKey ? stripeFor(props.publishableKey) : null),\n [props.publishableKey],\n )\n return (\n <Dialog open={Boolean(props.clientSecret)} onClose={props.onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>{`Type a card — ${usd(props.amountCents)}`}</DialogTitle>\n {props.clientSecret && stripe ? (\n <Elements stripe={stripe} options={{ clientSecret: props.clientSecret }}>\n <KeyedCardForm onClose={props.onClose} onConfirmed={props.onConfirmed} />\n </Elements>\n ) : null}\n </Dialog>\n )\n}\n\nfunction KeyedCardForm(props: { onClose: () => void; onConfirmed: () => void }) {\n const stripe = useStripe()\n const elements = useElements()\n const [error, setError] = useState('')\n const [busy, setBusy] = useState(false)\n return (\n <>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n <PaymentElement options={{ layout: 'tabs', wallets: { applePay: 'never', googlePay: 'never' } }} />\n {error ? <Alert severity=\"error\">{error}</Alert> : null}\n </DialogContent>\n <DialogActions>\n <Button onClick={props.onClose} disabled={busy} sx={{ minHeight: POS_TOUCH_PX }}>\n {'Cancel'}\n </Button>\n <Button\n variant=\"contained\"\n disabled={busy || !stripe || !elements}\n onClick={async () => {\n if (!stripe || !elements) return\n setBusy(true)\n setError('')\n const result = await stripe.confirmPayment({\n elements,\n redirect: 'if_required',\n confirmParams: { return_url: window.location.href },\n })\n setBusy(false)\n if (result.error) {\n setError(result.error.message ?? 'The card was not accepted.')\n return\n }\n props.onConfirmed()\n }}\n sx={{ minHeight: POS_TOUCH_PX }}\n >\n {busy ? 'Charging…' : 'Charge card'}\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"names":["Alert","Box","Button","Dialog","DialogActions","DialogContent","DialogTitle","MenuItem","Stack","TextField","Typography","Elements","PaymentElement","useElements","useStripe","loadStripe","QRCodeSVG","useMemo","useState","centsFromInput","usd","POS_TOUCH_PX","PosCashDialog","props","received","setReceived","owed","dueCents","tipCents","tendered","quick","Set","Math","ceil","filter","value","slice","close","onClose","open","maxWidth","fullWidth","sx","display","flexDirection","gap","label","onChange","event","target","replace","autoFocus","mt","slotProps","htmlInput","inputMode","direction","spacing","flexWrap","map","cents","variant","onClick","toFixed","minHeight","severity","max","disabled","busy","onTake","PosGiftCardDialog","code","setCode","balance","setBalance","toUpperCase","onKeyDown","key","trim","answer","onCheck","frozen","voided","availableCents","autoComplete","autoCapitalize","onApply","PosFolioDialog","stay","setStay","amountCents","select","stays","entry","$id","guestName","guestEmail","onCharge","PosQrDialog","Boolean","url","color","justifyContent","size","level","marginSize","title","role","href","rel","stripePromises","Map","stripeFor","publishableKey","promise","get","set","PosKeyedCardDialog","stripe","clientSecret","options","KeyedCardForm","onConfirmed","elements","error","setError","setBusy","layout","wallets","applePay","googlePay","result","confirmPayment","redirect","confirmParams","return_url","window","location","message"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { posTender, type PosRegisterContext, type PosSaleSummary } from './pos-api';
2
+ import type { PosDisplayControl } from './use-pos-display';
3
+ type User = Parameters<typeof posTender>[0];
4
+ export interface PosTenderPanelProps {
5
+ user: User;
6
+ hostId: string;
7
+ registerId: string;
8
+ sale: PosSaleSummary;
9
+ context: PosRegisterContext | null;
10
+ stays: any[];
11
+ display: PosDisplayControl;
12
+ onSale: (sale: PosSaleSummary) => void;
13
+ /** The sale is voided: the basket is the cashier's again. */
14
+ onVoided: () => void;
15
+ /** The tip chosen for the next payment, before it is taken. */
16
+ onTipChange?: (tipCents: number) => void;
17
+ /** A PIN-switched cashier (AGL-3609) takes each payment they start. */
18
+ cashierAssertion?: string;
19
+ notify: (message: string, variant: 'success' | 'error' | 'warning' | 'info') => void;
20
+ }
21
+ /**
22
+ * Taking payment on an open sale (AGL-3607): the balance due, every payment
23
+ * taken so far with its live status, and the tenders. A sale can take as many
24
+ * payments as it needs; it is paid when the balance reaches zero, and only
25
+ * then does the server take the stock and complete it.
26
+ */
27
+ export declare function PosTenderPanel(props: PosTenderPanelProps): import("react").JSX.Element;
28
+ export declare namespace PosTenderPanel {
29
+ var displayName: string;
30
+ }
31
+ export {};