@aglyn/plugins-commerce 1.0.0-beta.285 → 1.0.0-beta.287

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 (420) hide show
  1. package/README.md +1 -1
  2. package/package.json +13 -13
  3. package/src/lib/components/cart.js +25 -12
  4. package/src/lib/components/cart.js.map +1 -1
  5. package/src/lib/components/commerce-console-page.js +70 -13
  6. package/src/lib/components/commerce-console-page.js.map +1 -1
  7. package/src/lib/components/console/order-detail-dialog.component.js +2 -1
  8. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
  9. package/src/lib/components/console/payment-methods-card.component.js +1 -1
  10. package/src/lib/components/console/payment-methods-card.component.js.map +1 -1
  11. package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +5 -0
  12. package/src/lib/components/console/pos/pos-cart-panel.component.js +18 -12
  13. package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -1
  14. package/src/lib/components/console/pos/pos-hardware-api.d.ts +76 -5
  15. package/src/lib/components/console/pos/pos-hardware-api.js +53 -11
  16. package/src/lib/components/console/pos/pos-hardware-api.js.map +1 -1
  17. package/src/lib/components/console/pos/pos-hardware-buyer.component.d.ts +18 -0
  18. package/src/lib/components/console/pos/pos-hardware-buyer.component.js +629 -0
  19. package/src/lib/components/console/pos/pos-hardware-buyer.component.js.map +1 -0
  20. package/src/lib/components/console/pos/pos-hardware-sale-api.d.ts +162 -0
  21. package/src/lib/components/console/pos/pos-hardware-sale-api.js +122 -0
  22. package/src/lib/components/console/pos/pos-hardware-sale-api.js.map +1 -0
  23. package/src/lib/components/console/pos/pos-hardware-sale-terms.component.d.ts +39 -0
  24. package/src/lib/components/console/pos/pos-hardware-sale-terms.component.js +251 -0
  25. package/src/lib/components/console/pos/pos-hardware-sale-terms.component.js.map +1 -0
  26. package/src/lib/components/console/pos/use-pos-display.js +50 -0
  27. package/src/lib/components/console/pos/use-pos-display.js.map +1 -1
  28. package/src/lib/components/console/pos-cellular-control.component.d.ts +41 -0
  29. package/src/lib/components/console/pos-cellular-control.component.js +211 -0
  30. package/src/lib/components/console/pos-cellular-control.component.js.map +1 -0
  31. package/src/lib/components/console/pos-devices-card.component.d.ts +9 -1
  32. package/src/lib/components/console/pos-devices-card.component.js +47 -15
  33. package/src/lib/components/console/pos-devices-card.component.js.map +1 -1
  34. package/src/lib/components/console/pos-display/pos-display-api.d.ts +6 -0
  35. package/src/lib/components/console/pos-display/pos-display-api.js +8 -1
  36. package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -1
  37. package/src/lib/components/console/pos-display-page.component.d.ts +13 -0
  38. package/src/lib/components/console/pos-display-page.component.js +44 -2
  39. package/src/lib/components/console/pos-display-page.component.js.map +1 -1
  40. package/src/lib/components/console/pos-hardware-card.component.d.ts +12 -4
  41. package/src/lib/components/console/pos-hardware-card.component.js +157 -36
  42. package/src/lib/components/console/pos-hardware-card.component.js.map +1 -1
  43. package/src/lib/components/console/pos-hardware-orders-staff-page.component.js +360 -80
  44. package/src/lib/components/console/pos-hardware-orders-staff-page.component.js.map +1 -1
  45. package/src/lib/components/console/pos-hardware-terms-page.component.d.ts +34 -0
  46. package/src/lib/components/console/pos-hardware-terms-page.component.js +257 -0
  47. package/src/lib/components/console/pos-hardware-terms-page.component.js.map +1 -0
  48. package/src/lib/components/console/pos-hardware-terms-sign-page.component.d.ts +27 -0
  49. package/src/lib/components/console/pos-hardware-terms-sign-page.component.js +104 -0
  50. package/src/lib/components/console/pos-hardware-terms-sign-page.component.js.map +1 -0
  51. package/src/lib/components/console/pos-hardware-waiting-card.component.d.ts +24 -0
  52. package/src/lib/components/console/pos-hardware-waiting-card.component.js +205 -0
  53. package/src/lib/components/console/pos-hardware-waiting-card.component.js.map +1 -0
  54. package/src/lib/components/console/pos-ops/pos-check-in-dialog.component.js +297 -201
  55. package/src/lib/components/console/pos-ops/pos-check-in-dialog.component.js.map +1 -1
  56. package/src/lib/components/console/pos-ops/pos-check-ins-card.component.d.ts +3 -0
  57. package/src/lib/components/console/pos-ops/pos-check-ins-card.component.js +260 -92
  58. package/src/lib/components/console/pos-ops/pos-check-ins-card.component.js.map +1 -1
  59. package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +9 -0
  60. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +15 -6
  61. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -1
  62. package/src/lib/components/console/pos-ops/pos-rain-check-dialog.component.d.ts +25 -0
  63. package/src/lib/components/console/pos-ops/pos-rain-check-dialog.component.js +136 -0
  64. package/src/lib/components/console/pos-ops/pos-rain-check-dialog.component.js.map +1 -0
  65. package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +6 -0
  66. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +48 -31
  67. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -1
  68. package/src/lib/components/console/pos-page.component.d.ts +1 -1
  69. package/src/lib/components/console/pos-page.component.js +63 -12
  70. package/src/lib/components/console/pos-page.component.js.map +1 -1
  71. package/src/lib/components/console/pos-reader-splash-setting.component.js +1 -1
  72. package/src/lib/components/console/pos-reader-splash-setting.component.js.map +1 -1
  73. package/src/lib/components/console/product-check-in-fields.component.d.ts +4 -2
  74. package/src/lib/components/console/product-check-in-fields.component.js +60 -14
  75. package/src/lib/components/console/product-check-in-fields.component.js.map +1 -1
  76. package/src/lib/components/console/product-editor-dialog.component.js +44 -1
  77. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
  78. package/src/lib/components/console/product-hardware-sku-field.component.d.ts +19 -0
  79. package/src/lib/components/console/product-hardware-sku-field.component.js +92 -0
  80. package/src/lib/components/console/product-hardware-sku-field.component.js.map +1 -0
  81. package/src/lib/components/console/product-kiosk-offer-field.component.d.ts +22 -0
  82. package/src/lib/components/console/product-kiosk-offer-field.component.js +94 -0
  83. package/src/lib/components/console/product-kiosk-offer-field.component.js.map +1 -0
  84. package/src/lib/components/console/product-register-fields.component.d.ts +4 -0
  85. package/src/lib/components/console/product-register-fields.component.js +31 -2
  86. package/src/lib/components/console/product-register-fields.component.js.map +1 -1
  87. package/src/lib/components/console/products-hub-card.component.js +11 -2
  88. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  89. package/src/lib/components/console/register-hardware-card.component.d.ts +11 -0
  90. package/src/lib/components/console/register-hardware-card.component.js +56 -27
  91. package/src/lib/components/console/register-hardware-card.component.js.map +1 -1
  92. package/src/lib/components/console/reservation-guests-dialog.component.d.ts +28 -0
  93. package/src/lib/components/console/reservation-guests-dialog.component.js +189 -0
  94. package/src/lib/components/console/reservation-guests-dialog.component.js.map +1 -0
  95. package/src/lib/components/console/reservations-card.component.d.ts +9 -0
  96. package/src/lib/components/console/reservations-card.component.js +158 -23
  97. package/src/lib/components/console/reservations-card.component.js.map +1 -1
  98. package/src/lib/components/console/shippingeasy-card.component.js +1 -1
  99. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -1
  100. package/src/lib/components/console/shipstation-card.component.d.ts +1 -1
  101. package/src/lib/components/console/shipstation-card.component.js +3 -3
  102. package/src/lib/components/console/shipstation-card.component.js.map +1 -1
  103. package/src/lib/components/product-detail.d.ts +4 -0
  104. package/src/lib/components/product-detail.js +40 -5
  105. package/src/lib/components/product-detail.js.map +1 -1
  106. package/src/lib/components/product-reviews.js +28 -11
  107. package/src/lib/components/product-reviews.js.map +1 -1
  108. package/src/lib/components/reservation-widget.js +28 -5
  109. package/src/lib/components/reservation-widget.js.map +1 -1
  110. package/src/lib/components/use-day-picker.d.ts +25 -0
  111. package/src/lib/components/use-day-picker.js +57 -0
  112. package/src/lib/components/use-day-picker.js.map +1 -0
  113. package/src/lib/constants/operator-alerts.d.ts +55 -0
  114. package/src/lib/constants/operator-alerts.js +156 -1
  115. package/src/lib/constants/operator-alerts.js.map +1 -1
  116. package/src/lib/declarations.console-server.js +54 -1
  117. package/src/lib/declarations.console-server.js.map +1 -1
  118. package/src/lib/declarations.d.ts +4 -2
  119. package/src/lib/declarations.js +11 -4
  120. package/src/lib/declarations.js.map +1 -1
  121. package/src/lib/declarations.server.js +9 -0
  122. package/src/lib/declarations.server.js.map +1 -1
  123. package/src/lib/model/commerce-cart.d.ts +9 -1
  124. package/src/lib/model/commerce-cart.js +4 -3
  125. package/src/lib/model/commerce-cart.js.map +1 -1
  126. package/src/lib/model/commerce-check-in-product.d.ts +26 -0
  127. package/src/lib/model/commerce-check-in-product.js +64 -2
  128. package/src/lib/model/commerce-check-in-product.js.map +1 -1
  129. package/src/lib/model/commerce-check-in-record.d.ts +127 -0
  130. package/src/lib/model/commerce-check-in-record.js +36 -0
  131. package/src/lib/model/commerce-check-in-record.js.map +1 -0
  132. package/src/lib/model/commerce-check-in.d.ts +91 -87
  133. package/src/lib/model/commerce-check-in.js +186 -62
  134. package/src/lib/model/commerce-check-in.js.map +1 -1
  135. package/src/lib/model/commerce-kiosk-offer.d.ts +31 -0
  136. package/src/lib/model/commerce-kiosk-offer.js +35 -0
  137. package/src/lib/model/commerce-kiosk-offer.js.map +1 -0
  138. package/src/lib/model/commerce-orders.d.ts +76 -0
  139. package/src/lib/model/commerce-orders.js +6 -0
  140. package/src/lib/model/commerce-orders.js.map +1 -1
  141. package/src/lib/model/commerce-pos-day-report.d.ts +54 -1
  142. package/src/lib/model/commerce-pos-day-report.js +39 -2
  143. package/src/lib/model/commerce-pos-day-report.js.map +1 -1
  144. package/src/lib/model/commerce-pos-offline.d.ts +1 -1
  145. package/src/lib/model/commerce-pos-offline.js +6 -1
  146. package/src/lib/model/commerce-pos-offline.js.map +1 -1
  147. package/src/lib/model/commerce-pos-ops.js +3 -2
  148. package/src/lib/model/commerce-pos-ops.js.map +1 -1
  149. package/src/lib/model/commerce-pos.d.ts +36 -3
  150. package/src/lib/model/commerce-pos.js +14 -6
  151. package/src/lib/model/commerce-pos.js.map +1 -1
  152. package/src/lib/model/commerce-receipt.js +3 -2
  153. package/src/lib/model/commerce-receipt.js.map +1 -1
  154. package/src/lib/model/commerce-reservations.d.ts +69 -4
  155. package/src/lib/model/commerce-reservations.js +57 -5
  156. package/src/lib/model/commerce-reservations.js.map +1 -1
  157. package/src/lib/model/commerce.d.ts +66 -0
  158. package/src/lib/model/commerce.js +15 -0
  159. package/src/lib/model/commerce.js.map +1 -1
  160. package/src/lib/model/order-list-fields.d.ts +11 -0
  161. package/src/lib/model/order-list-fields.js +17 -1
  162. package/src/lib/model/order-list-fields.js.map +1 -1
  163. package/src/lib/model/own-store-tax-summary.d.ts +152 -0
  164. package/src/lib/model/own-store-tax-summary.js +288 -0
  165. package/src/lib/model/own-store-tax-summary.js.map +1 -0
  166. package/src/lib/model/plugin-permissions.d.ts +67 -0
  167. package/src/lib/model/plugin-permissions.js +224 -7
  168. package/src/lib/model/plugin-permissions.js.map +1 -1
  169. package/src/lib/model/pos-cellular.d.ts +223 -0
  170. package/src/lib/model/pos-cellular.js +293 -0
  171. package/src/lib/model/pos-cellular.js.map +1 -0
  172. package/src/lib/model/pos-hardware-in-person.d.ts +98 -0
  173. package/src/lib/model/pos-hardware-in-person.js +224 -0
  174. package/src/lib/model/pos-hardware-in-person.js.map +1 -0
  175. package/src/lib/model/pos-hardware-tax-summary.d.ts +166 -0
  176. package/src/lib/model/pos-hardware-tax-summary.js +225 -0
  177. package/src/lib/model/pos-hardware-tax-summary.js.map +1 -0
  178. package/src/lib/model/pos-hardware-terms.d.ts +74 -0
  179. package/src/lib/model/pos-hardware-terms.js +115 -0
  180. package/src/lib/model/pos-hardware-terms.js.map +1 -0
  181. package/src/lib/model/pos-hardware.d.ts +349 -7
  182. package/src/lib/model/pos-hardware.js +291 -20
  183. package/src/lib/model/pos-hardware.js.map +1 -1
  184. package/src/lib/model/product-write.d.ts +10 -0
  185. package/src/lib/model/product-write.js +4 -2
  186. package/src/lib/model/product-write.js.map +1 -1
  187. package/src/lib/plugin.js +16 -0
  188. package/src/lib/plugin.js.map +1 -1
  189. package/src/lib/server/billing-webhook.js +25 -1
  190. package/src/lib/server/billing-webhook.js.map +1 -1
  191. package/src/lib/server/cancel-order.js +7 -5
  192. package/src/lib/server/cancel-order.js.map +1 -1
  193. package/src/lib/server/cart-checkout.js +20 -8
  194. package/src/lib/server/cart-checkout.js.map +1 -1
  195. package/src/lib/server/cart.js +29 -0
  196. package/src/lib/server/cart.js.map +1 -1
  197. package/src/lib/server/checkout.js +42 -13
  198. package/src/lib/server/checkout.js.map +1 -1
  199. package/src/lib/server/collection-membership.d.ts +4 -0
  200. package/src/lib/server/collection-membership.js +5 -10
  201. package/src/lib/server/collection-membership.js.map +1 -1
  202. package/src/lib/server/commerce-site-keys.d.ts +29 -0
  203. package/src/lib/server/commerce-site-keys.js +40 -0
  204. package/src/lib/server/commerce-site-keys.js.map +1 -0
  205. package/src/lib/server/draft-order.js +8 -5
  206. package/src/lib/server/draft-order.js.map +1 -1
  207. package/src/lib/server/fulfill-order.js +7 -5
  208. package/src/lib/server/fulfill-order.js.map +1 -1
  209. package/src/lib/server/gift-cards.js +8 -5
  210. package/src/lib/server/gift-cards.js.map +1 -1
  211. package/src/lib/server/local-fulfillment-status.js +9 -6
  212. package/src/lib/server/local-fulfillment-status.js.map +1 -1
  213. package/src/lib/server/member-post.js +6 -5
  214. package/src/lib/server/member-post.js.map +1 -1
  215. package/src/lib/server/membership-admin-password.d.ts +4 -2
  216. package/src/lib/server/membership-admin-password.js +10 -8
  217. package/src/lib/server/membership-admin-password.js.map +1 -1
  218. package/src/lib/server/membership-admin-remove.d.ts +7 -5
  219. package/src/lib/server/membership-admin-remove.js +9 -9
  220. package/src/lib/server/membership-admin-remove.js.map +1 -1
  221. package/src/lib/server/order-notifications.js +5 -2
  222. package/src/lib/server/order-notifications.js.map +1 -1
  223. package/src/lib/server/order-print.js +7 -5
  224. package/src/lib/server/order-print.js.map +1 -1
  225. package/src/lib/server/order-receipt-send.js +8 -5
  226. package/src/lib/server/order-receipt-send.js.map +1 -1
  227. package/src/lib/server/orders-shipping-prepare.js +9 -6
  228. package/src/lib/server/orders-shipping-prepare.js.map +1 -1
  229. package/src/lib/server/own-store-tax-return-source.d.ts +47 -0
  230. package/src/lib/server/own-store-tax-return-source.js +312 -0
  231. package/src/lib/server/own-store-tax-return-source.js.map +1 -0
  232. package/src/lib/server/payment-methods.js +13 -9
  233. package/src/lib/server/payment-methods.js.map +1 -1
  234. package/src/lib/server/pos-auth.d.ts +37 -6
  235. package/src/lib/server/pos-auth.js +40 -15
  236. package/src/lib/server/pos-auth.js.map +1 -1
  237. package/src/lib/server/pos-cellular-billing.d.ts +81 -0
  238. package/src/lib/server/pos-cellular-billing.js +711 -0
  239. package/src/lib/server/pos-cellular-billing.js.map +1 -0
  240. package/src/lib/server/pos-cellular-notify.d.ts +47 -0
  241. package/src/lib/server/pos-cellular-notify.js +150 -0
  242. package/src/lib/server/pos-cellular-notify.js.map +1 -0
  243. package/src/lib/server/pos-cellular.d.ts +88 -0
  244. package/src/lib/server/pos-cellular.js +339 -0
  245. package/src/lib/server/pos-cellular.js.map +1 -0
  246. package/src/lib/server/pos-check-in.d.ts +5 -1
  247. package/src/lib/server/pos-check-in.js +296 -28
  248. package/src/lib/server/pos-check-in.js.map +1 -1
  249. package/src/lib/server/pos-day-report.js +29 -3
  250. package/src/lib/server/pos-day-report.js.map +1 -1
  251. package/src/lib/server/pos-display.d.ts +16 -0
  252. package/src/lib/server/pos-display.js +129 -2
  253. package/src/lib/server/pos-display.js.map +1 -1
  254. package/src/lib/server/pos-hardware-admin.d.ts +10 -1
  255. package/src/lib/server/pos-hardware-admin.js +250 -84
  256. package/src/lib/server/pos-hardware-admin.js.map +1 -1
  257. package/src/lib/server/pos-hardware-attach.d.ts +105 -0
  258. package/src/lib/server/pos-hardware-attach.js +443 -0
  259. package/src/lib/server/pos-hardware-attach.js.map +1 -0
  260. package/src/lib/server/pos-hardware-buyer-lookup.d.ts +58 -0
  261. package/src/lib/server/pos-hardware-buyer-lookup.js +180 -0
  262. package/src/lib/server/pos-hardware-buyer-lookup.js.map +1 -0
  263. package/src/lib/server/pos-hardware-buyer-record.d.ts +29 -0
  264. package/src/lib/server/pos-hardware-buyer-record.js +86 -0
  265. package/src/lib/server/pos-hardware-buyer-record.js.map +1 -0
  266. package/src/lib/server/pos-hardware-cancel.d.ts +58 -0
  267. package/src/lib/server/pos-hardware-cancel.js +147 -0
  268. package/src/lib/server/pos-hardware-cancel.js.map +1 -0
  269. package/src/lib/server/pos-hardware-closure-notices.d.ts +27 -0
  270. package/src/lib/server/pos-hardware-closure-notices.js +85 -0
  271. package/src/lib/server/pos-hardware-closure-notices.js.map +1 -0
  272. package/src/lib/server/pos-hardware-closure.d.ts +60 -0
  273. package/src/lib/server/pos-hardware-closure.js +153 -0
  274. package/src/lib/server/pos-hardware-closure.js.map +1 -0
  275. package/src/lib/server/pos-hardware-in-person.d.ts +61 -0
  276. package/src/lib/server/pos-hardware-in-person.js +236 -0
  277. package/src/lib/server/pos-hardware-in-person.js.map +1 -0
  278. package/src/lib/server/pos-hardware-notify.d.ts +40 -2
  279. package/src/lib/server/pos-hardware-notify.js +195 -14
  280. package/src/lib/server/pos-hardware-notify.js.map +1 -1
  281. package/src/lib/server/pos-hardware-readers.d.ts +115 -0
  282. package/src/lib/server/pos-hardware-readers.js +430 -0
  283. package/src/lib/server/pos-hardware-readers.js.map +1 -0
  284. package/src/lib/server/pos-hardware-returns.d.ts +116 -0
  285. package/src/lib/server/pos-hardware-returns.js +502 -0
  286. package/src/lib/server/pos-hardware-returns.js.map +1 -0
  287. package/src/lib/server/pos-hardware-sale-fields.d.ts +28 -0
  288. package/src/lib/server/pos-hardware-sale-fields.js +44 -0
  289. package/src/lib/server/pos-hardware-sale-fields.js.map +1 -0
  290. package/src/lib/server/pos-hardware-sale.d.ts +54 -0
  291. package/src/lib/server/pos-hardware-sale.js +369 -0
  292. package/src/lib/server/pos-hardware-sale.js.map +1 -0
  293. package/src/lib/server/pos-hardware-tax-return-source.d.ts +99 -0
  294. package/src/lib/server/pos-hardware-tax-return-source.js +462 -0
  295. package/src/lib/server/pos-hardware-tax-return-source.js.map +1 -0
  296. package/src/lib/server/pos-hardware-terms.d.ts +64 -0
  297. package/src/lib/server/pos-hardware-terms.js +154 -0
  298. package/src/lib/server/pos-hardware-terms.js.map +1 -0
  299. package/src/lib/server/pos-hardware-user-eraser.d.ts +3 -0
  300. package/src/lib/server/pos-hardware-user-eraser.js +31 -7
  301. package/src/lib/server/pos-hardware-user-eraser.js.map +1 -1
  302. package/src/lib/server/pos-hardware-webhook.d.ts +5 -0
  303. package/src/lib/server/pos-hardware-webhook.js +51 -6
  304. package/src/lib/server/pos-hardware-webhook.js.map +1 -1
  305. package/src/lib/server/pos-hardware.d.ts +74 -1
  306. package/src/lib/server/pos-hardware.js +175 -10
  307. package/src/lib/server/pos-hardware.js.map +1 -1
  308. package/src/lib/server/pos-kiosk.d.ts +2 -0
  309. package/src/lib/server/pos-kiosk.js +17 -12
  310. package/src/lib/server/pos-kiosk.js.map +1 -1
  311. package/src/lib/server/pos-offline-card-order.d.ts +64 -0
  312. package/src/lib/server/pos-offline-card-order.js +102 -0
  313. package/src/lib/server/pos-offline-card-order.js.map +1 -0
  314. package/src/lib/server/pos-offline-card-reconcile.d.ts +67 -1
  315. package/src/lib/server/pos-offline-card-reconcile.js +215 -18
  316. package/src/lib/server/pos-offline-card-reconcile.js.map +1 -1
  317. package/src/lib/server/pos-offline-sync.d.ts +39 -0
  318. package/src/lib/server/pos-offline-sync.js +190 -55
  319. package/src/lib/server/pos-offline-sync.js.map +1 -1
  320. package/src/lib/server/pos-ops-gate.d.ts +15 -4
  321. package/src/lib/server/pos-ops-gate.js +42 -9
  322. package/src/lib/server/pos-ops-gate.js.map +1 -1
  323. package/src/lib/server/pos-ops-routes.js +24 -0
  324. package/src/lib/server/pos-ops-routes.js.map +1 -1
  325. package/src/lib/server/pos-order-refund-ids.d.ts +28 -0
  326. package/src/lib/server/pos-order-refund-ids.js +31 -0
  327. package/src/lib/server/pos-order-refund-ids.js.map +1 -0
  328. package/src/lib/server/pos-order.js +52 -49
  329. package/src/lib/server/pos-order.js.map +1 -1
  330. package/src/lib/server/pos-payment.js +1 -1
  331. package/src/lib/server/pos-payment.js.map +1 -1
  332. package/src/lib/server/pos-reader-splash-admin.js +30 -32
  333. package/src/lib/server/pos-reader-splash-admin.js.map +1 -1
  334. package/src/lib/server/pos-reader-splash-images-route.d.ts +17 -0
  335. package/src/lib/server/pos-reader-splash-images-route.js +113 -0
  336. package/src/lib/server/pos-reader-splash-images-route.js.map +1 -0
  337. package/src/lib/server/pos-reader-splash-images.d.ts +51 -0
  338. package/src/lib/server/pos-reader-splash-images.js +123 -0
  339. package/src/lib/server/pos-reader-splash-images.js.map +1 -0
  340. package/src/lib/server/pos-reader-splash.d.ts +68 -1
  341. package/src/lib/server/pos-reader-splash.js +182 -11
  342. package/src/lib/server/pos-reader-splash.js.map +1 -1
  343. package/src/lib/server/pos-readers.d.ts +29 -0
  344. package/src/lib/server/pos-readers.js +134 -35
  345. package/src/lib/server/pos-readers.js.map +1 -1
  346. package/src/lib/server/pos-return.d.ts +10 -0
  347. package/src/lib/server/pos-return.js +26 -1
  348. package/src/lib/server/pos-return.js.map +1 -1
  349. package/src/lib/server/pos-sale.js +6 -1
  350. package/src/lib/server/pos-sale.js.map +1 -1
  351. package/src/lib/server/pos-shift.js +11 -0
  352. package/src/lib/server/pos-shift.js.map +1 -1
  353. package/src/lib/server/pos-staff-pin.js +25 -20
  354. package/src/lib/server/pos-staff-pin.js.map +1 -1
  355. package/src/lib/server/pos-terminal.d.ts +14 -4
  356. package/src/lib/server/pos-terminal.js +34 -38
  357. package/src/lib/server/pos-terminal.js.map +1 -1
  358. package/src/lib/server/printers.d.ts +7 -3
  359. package/src/lib/server/printers.js +18 -12
  360. package/src/lib/server/printers.js.map +1 -1
  361. package/src/lib/server/product-drafts.d.ts +11 -1
  362. package/src/lib/server/product-drafts.js +12 -8
  363. package/src/lib/server/product-drafts.js.map +1 -1
  364. package/src/lib/server/product.d.ts +15 -1
  365. package/src/lib/server/product.js +16 -3
  366. package/src/lib/server/product.js.map +1 -1
  367. package/src/lib/server/products-write.d.ts +26 -2
  368. package/src/lib/server/products-write.js +19 -7
  369. package/src/lib/server/products-write.js.map +1 -1
  370. package/src/lib/server/refund.js +34 -11
  371. package/src/lib/server/refund.js.map +1 -1
  372. package/src/lib/server/reservation-availability-query.d.ts +8 -0
  373. package/src/lib/server/reservation-availability-query.js +11 -1
  374. package/src/lib/server/reservation-availability-query.js.map +1 -1
  375. package/src/lib/server/reservation-availability.d.ts +1 -1
  376. package/src/lib/server/reservation-availability.js +7 -2
  377. package/src/lib/server/reservation-availability.js.map +1 -1
  378. package/src/lib/server/reservation-guests.d.ts +32 -0
  379. package/src/lib/server/reservation-guests.js +285 -0
  380. package/src/lib/server/reservation-guests.js.map +1 -0
  381. package/src/lib/server/reservation-walk-in.d.ts +11 -1
  382. package/src/lib/server/reservation-walk-in.js +56 -12
  383. package/src/lib/server/reservation-walk-in.js.map +1 -1
  384. package/src/lib/server/reserve.js +18 -5
  385. package/src/lib/server/reserve.js.map +1 -1
  386. package/src/lib/server/returns.js +9 -6
  387. package/src/lib/server/returns.js.map +1 -1
  388. package/src/lib/server/reviews.d.ts +22 -2
  389. package/src/lib/server/reviews.js +88 -20
  390. package/src/lib/server/reviews.js.map +1 -1
  391. package/src/lib/server/shipping-connectors.js +10 -11
  392. package/src/lib/server/shipping-connectors.js.map +1 -1
  393. package/src/lib/server/site-page-resolver.js +20 -3
  394. package/src/lib/server/site-page-resolver.js.map +1 -1
  395. package/src/lib/server/store-day.d.ts +33 -0
  396. package/src/lib/server/store-day.js +46 -0
  397. package/src/lib/server/store-day.js.map +1 -0
  398. package/src/lib/server/store-setup-ai-writer.d.ts +2 -1
  399. package/src/lib/server/store-setup-ai-writer.js +5 -6
  400. package/src/lib/server/store-setup-ai-writer.js.map +1 -1
  401. package/src/lib/server/storefront-tax.d.ts +13 -0
  402. package/src/lib/server/storefront-tax.js +8 -1
  403. package/src/lib/server/storefront-tax.js.map +1 -1
  404. package/src/lib/server/tax-return-source.d.ts +32 -3
  405. package/src/lib/server/tax-return-source.js +99 -20
  406. package/src/lib/server/tax-return-source.js.map +1 -1
  407. package/src/lib/server.js +100 -2
  408. package/src/lib/server.js.map +1 -1
  409. package/src/lib/testing/fake-firestore.js +58 -16
  410. package/src/lib/testing/fake-firestore.js.map +1 -1
  411. package/src/lib/testing/pos-ops-memory-firestore.js +18 -4
  412. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -1
  413. package/src/lib/testing/site-register-permissions.d.ts +29 -0
  414. package/src/lib/testing/site-register-permissions.js +38 -0
  415. package/src/lib/testing/site-register-permissions.js.map +1 -0
  416. package/src/lib/transfer/tracking.server.js +8 -5
  417. package/src/lib/transfer/tracking.server.js.map +1 -1
  418. package/src/lib/utils/add-to-cart.d.ts +2 -0
  419. package/src/lib/utils/add-to-cart.js +6 -3
  420. package/src/lib/utils/add-to-cart.js.map +1 -1
@@ -0,0 +1,629 @@
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 { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
+ import { Alert, Box, Button, Chip, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, List, ListItem, ListItemText, Radio, RadioGroup, Stack, TextField, Typography } from "@mui/material";
20
+ import { useEffect, useState } from "react";
21
+ import { formatPosHardwareCents } from "../../../model/pos-hardware.js";
22
+ import { PosHardwareRequestError } from "./pos-hardware-api.js";
23
+ import { PosHardwareSaleTerms } from "./pos-hardware-sale-terms.component.js";
24
+ import { posHardwareAttach, posHardwareFindBuyer, posHardwareRegisterAtBooth, posHardwareSaleStatus, posHardwareSerials, posHardwareToAttach } from "./pos-hardware-sale-api.js";
25
+ /** No store chosen yet: nothing to register a reader to here. */ const NO_STORE = {
26
+ chosen: false,
27
+ needsAddress: false
28
+ };
29
+ /** The address form's start, as the POS devices card starts it. */ const EMPTY_ADDRESS = {
30
+ line1: '',
31
+ city: '',
32
+ state: '',
33
+ postalCode: '',
34
+ country: 'US'
35
+ };
36
+ function newKey() {
37
+ return `attach-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
38
+ }
39
+ /** The ways one workspace can take the hardware: each store, or the store chosen at setup. */ function workspaceOptions(uid, workspace, who) {
40
+ const plan = workspace.posPlan ? null : 'No point of sale plan yet: they add it when they set the reader up';
41
+ return [
42
+ ...workspace.stores.map((store)=>({
43
+ key: `${uid}:${workspace.orgId}:${store.hostId}`,
44
+ label: `${who} · ${workspace.name} · ${store.name}`,
45
+ detail: [
46
+ plan,
47
+ store.hasLocation ? null : 'No card reader location on this store yet: you can enter its address here'
48
+ ].filter(Boolean).join('. ') || null,
49
+ choice: {
50
+ uid,
51
+ orgId: workspace.orgId,
52
+ hostId: store.hostId
53
+ },
54
+ needsAddress: !store.hasLocation
55
+ })),
56
+ {
57
+ key: `${uid}:${workspace.orgId}:`,
58
+ label: `${who} · ${workspace.name} · choose the store at setup`,
59
+ detail: plan,
60
+ choice: {
61
+ uid,
62
+ orgId: workspace.orgId
63
+ }
64
+ }
65
+ ];
66
+ }
67
+ /** Every option an answer offers, people first. */ function optionsOf(found) {
68
+ const options = [];
69
+ for (const person of found.people){
70
+ const who = `${person.name || 'No name'} (${person.email})`;
71
+ if (!person.workspaces.length) {
72
+ options.push({
73
+ key: `${person.uid}::`,
74
+ label: `${who} · no workspace yet`,
75
+ detail: 'It joins the workspace they create.',
76
+ choice: {
77
+ uid: person.uid
78
+ }
79
+ });
80
+ }
81
+ for (const workspace of person.workspaces)options.push(...workspaceOptions(person.uid, workspace, who));
82
+ }
83
+ for (const workspace of found.workspaces){
84
+ if (!workspace.owner) continue;
85
+ const who = `${workspace.owner.name || 'Owner'} (${workspace.owner.email})`;
86
+ for (const option of workspaceOptions(workspace.owner.uid, workspace, who)){
87
+ if (!options.some((held)=>held.key === option.key)) options.push(option);
88
+ }
89
+ }
90
+ return options;
91
+ }
92
+ /**
93
+ * Finding the buyer and saying whose the card reader is (AGL-4038): by an
94
+ * exact email, a person's name or a workspace's name. Shows the least that
95
+ * picks the right person — a name, their whole email address, each workspace
96
+ * and its stores, and what each still needs — and, for an address with no
97
+ * account, offers to sell anyway and invite them.
98
+ */ function AttachDialog(props) {
99
+ const { user, hostId, target, onClose, onAttached, notify } = props;
100
+ const [query, setQuery] = useState('');
101
+ const [found, setFound] = useState(null);
102
+ const [searched, setSearched] = useState('');
103
+ const [chosen, setChosen] = useState('');
104
+ const [busy, setBusy] = useState(false);
105
+ const [attemptKey] = useState(newKey);
106
+ const options = found ? optionsOf(found) : [];
107
+ const search = async (event)=>{
108
+ event == null ? void 0 : event.preventDefault();
109
+ const text = query.trim();
110
+ if (text.length < 2) return;
111
+ setBusy(true);
112
+ try {
113
+ setFound(await posHardwareFindBuyer(user, hostId, text));
114
+ setSearched(text);
115
+ setChosen('');
116
+ } catch (caught) {
117
+ notify(caught instanceof PosHardwareRequestError ? caught.message : 'The lookup did not answer', 'warning');
118
+ } finally{
119
+ setBusy(false);
120
+ }
121
+ };
122
+ const attach = async (choice, needsAddress = false)=>{
123
+ setBusy(true);
124
+ try {
125
+ const answer = await posHardwareAttach(user, attemptKey, _extends({
126
+ hostId,
127
+ buyer: choice
128
+ }, 'registerOrderId' in target ? {
129
+ registerOrderId: target.registerOrderId
130
+ } : {
131
+ orderId: target.orderId
132
+ }));
133
+ onAttached(answer.outcome === 'waiting' ? 'Buyer attached. The card reader joins their workspace as soon as the sale is paid.' : answer.outcome === 'attached' ? 'Card reader attached to the buyer’s workspace.' : 'email' in choice ? 'Invitation sent. The card reader joins their workspace when they sign up.' : 'Attached to their account. It joins the workspace they create.', {
134
+ chosen: 'hostId' in choice && Boolean(choice.hostId),
135
+ needsAddress
136
+ });
137
+ } catch (caught) {
138
+ notify(caught instanceof PosHardwareRequestError ? caught.message : 'The card reader could not be attached', 'warning');
139
+ } finally{
140
+ setBusy(false);
141
+ }
142
+ };
143
+ const option = options.find((candidate)=>candidate.key === chosen);
144
+ return /*#__PURE__*/ _jsxs(Dialog, {
145
+ open: true,
146
+ onClose: onClose,
147
+ maxWidth: "sm",
148
+ fullWidth: true,
149
+ children: [
150
+ /*#__PURE__*/ _jsx(DialogTitle, {
151
+ children: 'Who is the card reader for?'
152
+ }),
153
+ /*#__PURE__*/ _jsxs(DialogContent, {
154
+ sx: {
155
+ display: 'flex',
156
+ flexDirection: 'column',
157
+ gap: 2
158
+ },
159
+ children: [
160
+ 'row' in target ? /*#__PURE__*/ _jsx(Typography, {
161
+ variant: "body2",
162
+ color: "text.secondary",
163
+ children: `${target.row.lines.map((line)=>`${line.quantity} × ${line.name}`).join(', ')} · ${formatPosHardwareCents(target.row.totalCents)}`
164
+ }) : null,
165
+ /*#__PURE__*/ _jsxs(Stack, {
166
+ component: "form",
167
+ direction: "row",
168
+ spacing: 1,
169
+ onSubmit: search,
170
+ sx: {
171
+ mt: 1
172
+ },
173
+ children: [
174
+ /*#__PURE__*/ _jsx(TextField, {
175
+ label: "Email, name or workspace",
176
+ size: "small",
177
+ value: query,
178
+ onChange: (event)=>setQuery(event.target.value),
179
+ sx: {
180
+ flex: 1
181
+ },
182
+ autoFocus: true
183
+ }),
184
+ /*#__PURE__*/ _jsx(Button, {
185
+ type: "submit",
186
+ variant: "outlined",
187
+ disabled: busy || query.trim().length < 2,
188
+ children: 'Search'
189
+ })
190
+ ]
191
+ }),
192
+ (found == null ? void 0 : found.noAccount) ? /*#__PURE__*/ _jsx(Alert, {
193
+ severity: "info",
194
+ action: /*#__PURE__*/ _jsx(Button, {
195
+ disabled: busy,
196
+ onClick: ()=>void attach({
197
+ email: searched
198
+ }),
199
+ children: 'Invite them'
200
+ }),
201
+ children: `No account uses ${searched}. Sell anyway: we email them an invitation, and the card reader joins their workspace when they sign up.`
202
+ }) : null,
203
+ found && !found.noAccount && !options.length ? /*#__PURE__*/ _jsx(Typography, {
204
+ variant: "body2",
205
+ color: "text.secondary",
206
+ children: 'Nobody matches. Try their exact email address.'
207
+ }) : null,
208
+ options.length ? /*#__PURE__*/ _jsx(RadioGroup, {
209
+ value: chosen,
210
+ onChange: (event)=>setChosen(event.target.value),
211
+ "aria-label": "Buyer",
212
+ children: options.map((candidate)=>/*#__PURE__*/ _jsx(FormControlLabel, {
213
+ value: candidate.key,
214
+ control: /*#__PURE__*/ _jsx(Radio, {
215
+ size: "small"
216
+ }),
217
+ label: /*#__PURE__*/ _jsxs(Stack, {
218
+ children: [
219
+ /*#__PURE__*/ _jsx(Typography, {
220
+ variant: "body2",
221
+ children: candidate.label
222
+ }),
223
+ candidate.detail ? /*#__PURE__*/ _jsx(Typography, {
224
+ variant: "caption",
225
+ color: "text.secondary",
226
+ children: candidate.detail
227
+ }) : null
228
+ ]
229
+ })
230
+ }, candidate.key))
231
+ }) : null,
232
+ /*#__PURE__*/ _jsx(Typography, {
233
+ variant: "caption",
234
+ color: "text.secondary",
235
+ children: 'Every lookup is recorded. Ask the buyer before you search for them.'
236
+ })
237
+ ]
238
+ }),
239
+ /*#__PURE__*/ _jsxs(DialogActions, {
240
+ children: [
241
+ /*#__PURE__*/ _jsx(Button, {
242
+ onClick: onClose,
243
+ children: 'Cancel'
244
+ }),
245
+ /*#__PURE__*/ _jsx(Button, {
246
+ variant: "contained",
247
+ disabled: busy || !option,
248
+ onClick: ()=>option && void attach(option.choice, Boolean(option.needsAddress)),
249
+ children: 'Attach'
250
+ })
251
+ ]
252
+ })
253
+ ]
254
+ });
255
+ }
256
+ /**
257
+ * The To attach list (AGL-4038): card readers sold here that nobody has said
258
+ * whose they are yet — at the kiosk, while the register was offline, or to a
259
+ * buyer with no account or no workspace yet — newest first.
260
+ */ function ToAttachDialog(props) {
261
+ const { user, hostId, onClose, onPick, notify } = props;
262
+ const [rows, setRows] = useState(null);
263
+ useEffect(()=>{
264
+ let live = true;
265
+ posHardwareToAttach(user, hostId).then((answer)=>live && setRows(answer.orders)).catch((caught)=>{
266
+ if (!live) return;
267
+ setRows([]);
268
+ notify(caught instanceof PosHardwareRequestError ? caught.message : 'The list could not be read', 'warning');
269
+ });
270
+ return ()=>{
271
+ live = false;
272
+ };
273
+ }, [
274
+ user,
275
+ hostId,
276
+ notify
277
+ ]);
278
+ return /*#__PURE__*/ _jsxs(Dialog, {
279
+ open: true,
280
+ onClose: onClose,
281
+ maxWidth: "sm",
282
+ fullWidth: true,
283
+ children: [
284
+ /*#__PURE__*/ _jsx(DialogTitle, {
285
+ children: 'Card reader sales to attach'
286
+ }),
287
+ /*#__PURE__*/ _jsxs(DialogContent, {
288
+ children: [
289
+ rows && !rows.length ? /*#__PURE__*/ _jsx(Typography, {
290
+ variant: "body2",
291
+ color: "text.secondary",
292
+ children: 'Every card reader sold here is attached to its buyer.'
293
+ }) : null,
294
+ /*#__PURE__*/ _jsx(List, {
295
+ dense: true,
296
+ children: (rows != null ? rows : []).map((row)=>{
297
+ var _row_contactEmail;
298
+ return /*#__PURE__*/ _jsx(ListItem, {
299
+ secondaryAction: /*#__PURE__*/ _jsx(Button, {
300
+ size: "small",
301
+ onClick: ()=>onPick(row),
302
+ children: 'Attach'
303
+ }),
304
+ children: /*#__PURE__*/ _jsx(ListItemText, {
305
+ primary: `${row.lines.map((line)=>`${line.quantity} × ${line.name}`).join(', ')} · ${formatPosHardwareCents(row.totalCents)}`,
306
+ secondary: [
307
+ row.registerNumber ? `Sale #${row.registerNumber}` : row.number,
308
+ new Date(row.createdAtMs).toLocaleString(),
309
+ row.kiosk ? 'at the kiosk' : null,
310
+ row.offline ? 'rung offline' : null,
311
+ row.invited ? `invited ${(_row_contactEmail = row.contactEmail) != null ? _row_contactEmail : ''}`.trim() : row.contactEmail,
312
+ row.awaitingWorkspace ? 'has an account, no workspace yet' : null
313
+ ].filter(Boolean).join(' · ')
314
+ })
315
+ }, row.id);
316
+ })
317
+ })
318
+ ]
319
+ }),
320
+ /*#__PURE__*/ _jsx(DialogActions, {
321
+ children: /*#__PURE__*/ _jsx(Button, {
322
+ onClick: onClose,
323
+ children: 'Close'
324
+ })
325
+ })
326
+ ]
327
+ });
328
+ }
329
+ /**
330
+ * The sale's readers onto the buyer's store (AGL-4038): their serial numbers,
331
+ * scanned or typed, so each sets itself up when the buyer adds it; and, with
332
+ * the buyer there and their store chosen, registering it to that store now
333
+ * by the code it shows.
334
+ */ function SaleReaders(props) {
335
+ const { user, hostId, saleOrderId, store, notify } = props;
336
+ const [serials, setSerials] = useState('');
337
+ const [code, setCode] = useState('');
338
+ const [busy, setBusy] = useState(false);
339
+ const [attemptKey, setAttemptKey] = useState(newKey);
340
+ // The buyer's store address (AGL-4038), asked for when their store has no
341
+ // card reader location yet: from the lookup, or when the route says so.
342
+ const [askAddress, setAskAddress] = useState(store.needsAddress);
343
+ const [address, setAddress] = useState(EMPTY_ADDRESS);
344
+ useEffect(()=>setAskAddress(store.needsAddress), [
345
+ store.needsAddress
346
+ ]);
347
+ const addressComplete = Boolean(address.line1.trim() && address.city.trim() && address.postalCode.trim()) && /^[A-Z]{2}$/.test(address.country);
348
+ const run = async (work)=>{
349
+ setBusy(true);
350
+ try {
351
+ notify(await work(), 'success');
352
+ } catch (caught) {
353
+ if (caught instanceof PosHardwareRequestError && caught.reason === 'needs-address') {
354
+ setAskAddress(true);
355
+ // A new attempt: the request with the address is a different one.
356
+ setAttemptKey(newKey());
357
+ }
358
+ notify(caught instanceof PosHardwareRequestError ? caught.message : 'That did not work. Try again.', 'warning');
359
+ } finally{
360
+ setBusy(false);
361
+ }
362
+ };
363
+ const list = serials.split(/[\s,;]+/).map((serial)=>serial.trim()).filter(Boolean);
364
+ return /*#__PURE__*/ _jsxs(Stack, {
365
+ spacing: 1,
366
+ children: [
367
+ /*#__PURE__*/ _jsxs(Stack, {
368
+ direction: "row",
369
+ spacing: 1,
370
+ sx: {
371
+ alignItems: 'flex-start'
372
+ },
373
+ children: [
374
+ /*#__PURE__*/ _jsx(TextField, {
375
+ size: "small",
376
+ label: "Reader serial numbers",
377
+ helperText: "Scan or type each reader's serial. It sets itself up when the buyer adds it.",
378
+ value: serials,
379
+ onChange: (event)=>setSerials(event.target.value),
380
+ sx: {
381
+ flex: 1
382
+ }
383
+ }),
384
+ /*#__PURE__*/ _jsx(Button, {
385
+ disabled: busy || !list.length,
386
+ onClick: ()=>void run(async ()=>{
387
+ await posHardwareSerials(user, {
388
+ hostId,
389
+ registerOrderId: saleOrderId,
390
+ serials: list
391
+ });
392
+ return list.length === 1 ? 'Serial number saved' : 'Serial numbers saved';
393
+ }),
394
+ children: 'Save'
395
+ })
396
+ ]
397
+ }),
398
+ store.chosen && askAddress ? /*#__PURE__*/ _jsxs(Box, {
399
+ sx: {
400
+ display: 'grid',
401
+ gap: 1,
402
+ gridTemplateColumns: {
403
+ xs: '1fr',
404
+ sm: '1fr 1fr'
405
+ }
406
+ },
407
+ children: [
408
+ /*#__PURE__*/ _jsx(Typography, {
409
+ variant: "body2",
410
+ color: "text.secondary",
411
+ sx: {
412
+ gridColumn: '1 / -1'
413
+ },
414
+ children: 'Their store has no address for card readers yet. Enter it with the buyer to register the reader now: ' + 'Stripe sets the reader up for this country. Or leave it, and they add it on their POS devices card.'
415
+ }),
416
+ /*#__PURE__*/ _jsx(TextField, {
417
+ size: "small",
418
+ label: "Street",
419
+ required: true,
420
+ value: address.line1,
421
+ onChange: (event)=>setAddress(_extends({}, address, {
422
+ line1: event.target.value
423
+ })),
424
+ sx: {
425
+ gridColumn: '1 / -1'
426
+ }
427
+ }),
428
+ /*#__PURE__*/ _jsx(TextField, {
429
+ size: "small",
430
+ label: "City",
431
+ required: true,
432
+ value: address.city,
433
+ onChange: (event)=>setAddress(_extends({}, address, {
434
+ city: event.target.value
435
+ }))
436
+ }),
437
+ /*#__PURE__*/ _jsx(TextField, {
438
+ size: "small",
439
+ label: "State",
440
+ value: address.state,
441
+ onChange: (event)=>setAddress(_extends({}, address, {
442
+ state: event.target.value
443
+ }))
444
+ }),
445
+ /*#__PURE__*/ _jsx(TextField, {
446
+ size: "small",
447
+ label: "Postal code",
448
+ required: true,
449
+ value: address.postalCode,
450
+ onChange: (event)=>setAddress(_extends({}, address, {
451
+ postalCode: event.target.value
452
+ }))
453
+ }),
454
+ /*#__PURE__*/ _jsx(TextField, {
455
+ size: "small",
456
+ label: "Country",
457
+ required: true,
458
+ helperText: "Two letters, like US",
459
+ value: address.country,
460
+ onChange: (event)=>setAddress(_extends({}, address, {
461
+ country: event.target.value.toUpperCase().slice(0, 2)
462
+ }))
463
+ })
464
+ ]
465
+ }) : null,
466
+ store.chosen ? /*#__PURE__*/ _jsxs(Stack, {
467
+ direction: "row",
468
+ spacing: 1,
469
+ sx: {
470
+ alignItems: 'flex-start'
471
+ },
472
+ children: [
473
+ /*#__PURE__*/ _jsx(TextField, {
474
+ size: "small",
475
+ label: "Code on the reader",
476
+ helperText: "Register it to the buyer's store now, while they are here.",
477
+ value: code,
478
+ onChange: (event)=>setCode(event.target.value),
479
+ sx: {
480
+ flex: 1
481
+ }
482
+ }),
483
+ /*#__PURE__*/ _jsx(Button, {
484
+ disabled: busy || code.trim().length < 3 || askAddress && !addressComplete,
485
+ onClick: ()=>void run(async ()=>{
486
+ const answer = await posHardwareRegisterAtBooth(user, attemptKey, _extends({
487
+ hostId,
488
+ registerOrderId: saleOrderId,
489
+ registrationCode: code.trim()
490
+ }, askAddress ? {
491
+ address
492
+ } : {}));
493
+ setCode('');
494
+ setAttemptKey(newKey());
495
+ if (answer.storeAddressSaved) setAskAddress(false);
496
+ return answer.storeAddressSaved ? 'Reader registered to their store, and the store’s address saved' : 'Reader registered to their store';
497
+ }),
498
+ children: 'Register'
499
+ })
500
+ ]
501
+ }) : null
502
+ ]
503
+ });
504
+ }
505
+ /**
506
+ * Selling a card reader at the platform's own store's register (AGL-4038):
507
+ * on a sale that has one, the buyer is attached here, and every reader sold
508
+ * without one waits on the To attach list. Draws nothing on any store but
509
+ * the platform's own hardware seller. Loaded on its own, by the register.
510
+ */ function PosHardwareBuyer(props) {
511
+ var _ref, _ref1;
512
+ const { user, hostId, saleOrderId, notify } = props;
513
+ const [seller, setSeller] = useState(false);
514
+ const [dialog, setDialog] = useState(null);
515
+ const [attached, setAttached] = useState(null);
516
+ useEffect(()=>{
517
+ let live = true;
518
+ posHardwareSaleStatus(user, hostId).then((status)=>live && setSeller(status.seller)).catch(()=>undefined);
519
+ return ()=>{
520
+ live = false;
521
+ };
522
+ }, [
523
+ user,
524
+ hostId
525
+ ]);
526
+ if (!seller) return null;
527
+ const attachedHere = attached && attached.orderId === saleOrderId ? attached : null;
528
+ return /*#__PURE__*/ _jsxs(Stack, {
529
+ spacing: 1,
530
+ sx: {
531
+ mt: 1
532
+ },
533
+ children: [
534
+ saleOrderId ? /*#__PURE__*/ _jsx(Alert, {
535
+ severity: attachedHere ? 'success' : 'info',
536
+ action: /*#__PURE__*/ _jsx(Button, {
537
+ size: "small",
538
+ onClick: ()=>setDialog({
539
+ kind: 'sale'
540
+ }),
541
+ children: attachedHere ? 'Change' : 'Attach buyer'
542
+ }),
543
+ children: (_ref = attachedHere == null ? void 0 : attachedHere.message) != null ? _ref : 'This sale has a card reader. Attach it to the buyer’s workspace.'
544
+ }) : null,
545
+ saleOrderId ? // The terms of sale, accepted before paying (AGL-4038, Terms 4.28).
546
+ /*#__PURE__*/ _jsx(PosHardwareSaleTerms, {
547
+ user: user,
548
+ hostId: hostId,
549
+ saleOrderId: saleOrderId,
550
+ notify: notify
551
+ }) : null,
552
+ saleOrderId ? /*#__PURE__*/ _jsx(SaleReaders, {
553
+ user: user,
554
+ hostId: hostId,
555
+ saleOrderId: saleOrderId,
556
+ store: (_ref1 = attachedHere == null ? void 0 : attachedHere.store) != null ? _ref1 : NO_STORE,
557
+ notify: notify
558
+ }) : null,
559
+ /*#__PURE__*/ _jsxs(Stack, {
560
+ direction: "row",
561
+ spacing: 1,
562
+ sx: {
563
+ alignItems: 'center'
564
+ },
565
+ children: [
566
+ /*#__PURE__*/ _jsx(Chip, {
567
+ size: "small",
568
+ variant: "outlined",
569
+ label: "Card reader sales"
570
+ }),
571
+ /*#__PURE__*/ _jsx(Button, {
572
+ size: "small",
573
+ onClick: ()=>setDialog({
574
+ kind: 'list'
575
+ }),
576
+ children: 'To attach'
577
+ })
578
+ ]
579
+ }),
580
+ (dialog == null ? void 0 : dialog.kind) === 'list' ? /*#__PURE__*/ _jsx(ToAttachDialog, {
581
+ user: user,
582
+ hostId: hostId,
583
+ notify: notify,
584
+ onClose: ()=>setDialog(null),
585
+ onPick: (row)=>setDialog({
586
+ kind: 'entry',
587
+ row
588
+ })
589
+ }) : null,
590
+ (dialog == null ? void 0 : dialog.kind) === 'sale' && saleOrderId ? /*#__PURE__*/ _jsx(AttachDialog, {
591
+ user: user,
592
+ hostId: hostId,
593
+ target: {
594
+ registerOrderId: saleOrderId
595
+ },
596
+ notify: notify,
597
+ onClose: ()=>setDialog(null),
598
+ onAttached: (message, store)=>{
599
+ setAttached({
600
+ orderId: saleOrderId,
601
+ message,
602
+ store
603
+ });
604
+ setDialog(null);
605
+ notify(message, 'success');
606
+ }
607
+ }) : null,
608
+ (dialog == null ? void 0 : dialog.kind) === 'entry' ? /*#__PURE__*/ _jsx(AttachDialog, {
609
+ user: user,
610
+ hostId: hostId,
611
+ target: {
612
+ orderId: dialog.row.id,
613
+ row: dialog.row
614
+ },
615
+ notify: notify,
616
+ onClose: ()=>setDialog(null),
617
+ onAttached: (message)=>{
618
+ setDialog({
619
+ kind: 'list'
620
+ });
621
+ notify(message, 'success');
622
+ }
623
+ }) : null
624
+ ]
625
+ });
626
+ }
627
+ export default PosHardwareBuyer;
628
+
629
+ //# sourceMappingURL=pos-hardware-buyer.component.js.map