@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/order-webhooks-card.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\n'use client'\n\nimport { pluginDocsHelp } from '@aglyn/aglyn'\nimport { CardDisplay, useConfirmationContext } from '@aglyn/shared-ui-jsx'\nimport { ListPagination } from '@aglyn/shared-ui-jsx/components/list-pagination.component'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\nimport {\n useFirestore,\n useFirestoreCollection,\n usePagedCollection,\n useUser,\n} from '@aglyn/tenant-feature-instance'\nimport {\n Alert,\n Button,\n Checkbox,\n Chip,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControlLabel,\n FormGroup,\n MenuItem,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { collection, limit, orderBy, query, where } from 'firebase/firestore'\nimport { useCallback, useEffect, useState } from 'react'\nimport * as Webhooks from '../../model/order-webhooks'\n\nexport interface OrderWebhooksCardProps {\n hostId: string\n}\n\ninterface WebhookEventOption {\n event: string\n label: string\n description: string\n}\n\ninterface WebhooksStatus {\n configured: boolean\n maxEndpoints: number\n events: WebhookEventOption[]\n}\n\ntype EndpointRow = Webhooks.OrderWebhookEndpoint & { $id: string }\ntype DeliveryRow = Webhooks.OrderWebhookDelivery & { $id: string }\n\nconst ROUTE = '/api/commerce/order-webhooks'\n\n/** POSTs one action to the webhooks route; answers the body or throws its error. */\nexport async function callOrderWebhooks(\n user: Parameters<typeof authorizedFetch>[0],\n hostId: string,\n body: Record<string, unknown>,\n): Promise<Record<string, any>> {\n const response = await authorizedFetch(user, ROUTE, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ hostId, ...body }),\n })\n const payload = (await response.json().catch(() => ({}))) as Record<string, any>\n if (!response.ok) throw Object.assign(new Error(String(payload.error ?? 'Request failed')), { status: response.status })\n return payload\n}\n\n/**\n * Order webhooks (AGL-3611): the store's endpoints for order and return\n * events, each with its signing secret, a test event and a delivery log. Shown\n * only to the people who may manage them — the route answers who — and only\n * where the deployment can sign.\n */\nexport function OrderWebhooksCard(props: OrderWebhooksCardProps) {\n const { hostId } = props\n const firestore = useFirestore()\n const { data: user } = useUser()\n const { enqueueSnackbar } = useSnackbar()\n const { confirm } = useConfirmationContext()\n const [status, setStatus] = useState<WebhooksStatus | null>(null)\n const [editing, setEditing] = useState<EndpointRow | 'new' | null>(null)\n const [secret, setSecret] = useState<string | null>(null)\n const [logFor, setLogFor] = useState<EndpointRow | null>(null)\n const [busy, setBusy] = useState(false)\n\n useEffect(() => {\n if (!user) return\n let active = true\n callOrderWebhooks(user, hostId, { action: 'status' })\n .then((payload) => {\n if (active) setStatus(payload as WebhooksStatus)\n })\n .catch(() => {\n // Not an admin of the whole workspace, or the route is down: the\n // card is not this person's to use.\n if (active) setStatus(null)\n })\n return () => {\n active = false\n }\n }, [user, hostId])\n\n const { data: endpointDocs } = useFirestoreCollection<EndpointRow>(\n () =>\n query(\n collection(firestore, 'hosts', hostId, 'orderWebhooks'),\n orderBy('createdAtMs', 'desc'),\n limit(Webhooks.ORDER_WEBHOOK_MAX_ENDPOINTS),\n ),\n [firestore, hostId],\n { idField: '$id' },\n )\n const endpoints = endpointDocs ?? []\n\n const run = useCallback(\n async (body: Record<string, unknown>, success?: string) => {\n setBusy(true)\n try {\n const payload = await callOrderWebhooks(user, hostId, body)\n if (success) enqueueSnackbar(success, { variant: 'success' })\n return payload\n } catch (error) {\n enqueueSnackbar(String((error as Error).message), { variant: 'error' })\n return null\n } finally {\n setBusy(false)\n }\n },\n [user, hostId, enqueueSnackbar],\n )\n\n const handleTest = useCallback(\n async (endpoint: EndpointRow) => {\n const payload = await run({ action: 'test', endpointId: endpoint.$id })\n if (!payload) return\n enqueueSnackbar(\n payload.delivered ? 'Test event delivered' : `Test event not delivered: ${payload.attempt?.error ?? 'no answer'}`,\n { variant: payload.delivered ? 'success' : 'warning' },\n )\n },\n [run, enqueueSnackbar],\n )\n\n const handleRoll = useCallback(\n async (endpoint: EndpointRow) => {\n const confirmed = await confirm({\n title: 'Roll the signing secret?',\n description:\n 'A new secret signs every event from now on. Update your endpoint before ' +\n 'the next order, or it will reject what it is sent.',\n confirmationText: 'Roll secret',\n })\n .then(() => true)\n .catch(() => false)\n if (!confirmed) return\n const payload = await run({ action: 'roll-secret', endpointId: endpoint.$id })\n if (payload?.secret) setSecret(String(payload.secret))\n },\n [confirm, run],\n )\n\n const handleDelete = useCallback(\n async (endpoint: EndpointRow) => {\n const confirmed = await confirm({\n title: 'Delete this endpoint?',\n description: `${endpoint.url} stops receiving order events. Its delivery log is kept for 30 days.`,\n confirmationText: 'Delete',\n confirmationButtonProps: { color: 'error' },\n })\n .then(() => true)\n .catch(() => false)\n if (!confirmed) return\n await run({ action: 'delete', endpointId: endpoint.$id }, 'Endpoint deleted')\n },\n [confirm, run],\n )\n\n if (!status?.configured) return null\n const labelFor = (event: string) => status.events.find((entry) => entry.event === event)?.label ?? event\n const atMax = endpoints.length >= status.maxEndpoints\n\n return (\n <CardDisplay\n header={'Order webhooks'}\n help={pluginDocsHelp('ordersAndReturns', { anchor: '#order-webhooks' })}\n contentGutterX\n contentGutterY\n HeaderProps={{\n action: (\n <Button size=\"small\" disabled={atMax || busy} onClick={() => setEditing('new')}>\n {'Add endpoint'}\n </Button>\n ),\n }}\n >\n <Stack spacing={2}>\n {endpoints.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {'Send order and return events to your own systems — a warehouse, an ERP or a ' +\n 'script. Each event is signed so your endpoint can check it came from this store.'}\n </Typography>\n ) : (\n endpoints.map((endpoint) => (\n <Stack key={endpoint.$id} spacing={1} data-testid=\"order-webhook-endpoint\">\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center', flexWrap: 'wrap' }}>\n <Typography variant=\"subtitle2\" sx={{ flex: 1, minWidth: 0, wordBreak: 'break-all' }}>\n {endpoint.description ? `${endpoint.description} · ${endpoint.url}` : endpoint.url}\n </Typography>\n <Chip\n size=\"small\"\n label={endpoint.enabled ? 'On' : 'Paused'}\n color={endpoint.enabled ? 'success' : 'default'}\n variant=\"outlined\"\n />\n {endpoint.lastDeliveryStatus ? (\n <Chip\n size=\"small\"\n label={`Last: ${Webhooks.ORDER_WEBHOOK_DELIVERY_STATUS_LABELS[endpoint.lastDeliveryStatus]}`}\n color={Webhooks.ORDER_WEBHOOK_DELIVERY_STATUS_COLOR[endpoint.lastDeliveryStatus]}\n variant=\"outlined\"\n />\n ) : null}\n </Stack>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {`${endpoint.events.map(labelFor).join(', ')} · secret ends ${endpoint.secretHint}`}\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ flexWrap: 'wrap' }}>\n <Button size=\"small\" disabled={busy || !endpoint.enabled} onClick={() => handleTest(endpoint)}>\n {'Send test event'}\n </Button>\n <Button size=\"small\" onClick={() => setLogFor(endpoint)}>\n {'Deliveries'}\n </Button>\n <Button size=\"small\" disabled={busy} onClick={() => setEditing(endpoint)}>\n {'Edit'}\n </Button>\n <Button\n size=\"small\"\n disabled={busy}\n onClick={() => run({ action: 'update', endpointId: endpoint.$id, enabled: !endpoint.enabled })}\n >\n {endpoint.enabled ? 'Pause' : 'Resume'}\n </Button>\n <Button size=\"small\" disabled={busy} onClick={() => handleRoll(endpoint)}>\n {'Roll secret'}\n </Button>\n <Button size=\"small\" color=\"error\" disabled={busy} onClick={() => handleDelete(endpoint)}>\n {'Delete'}\n </Button>\n </Stack>\n </Stack>\n ))\n )}\n <Typography variant=\"caption\" color=\"text.secondary\">\n {`${endpoints.length}/${status.maxEndpoints} endpoints. A failed delivery is retried for about a day.`}\n </Typography>\n </Stack>\n {editing ? (\n <EndpointDialog\n endpoint={editing === 'new' ? null : editing}\n events={status.events}\n busy={busy}\n onClose={() => setEditing(null)}\n onSave={async (values) => {\n const payload =\n editing === 'new'\n ? await run({ action: 'create', ...values })\n : await run({ action: 'update', endpointId: editing.$id, ...values }, 'Endpoint saved')\n if (!payload) return\n setEditing(null)\n if (payload.secret) setSecret(String(payload.secret))\n }}\n />\n ) : null}\n {secret ? <SecretDialog secret={secret} onClose={() => setSecret(null)} /> : null}\n {logFor ? (\n <DeliveriesDialog\n hostId={hostId}\n endpoint={logFor}\n labelFor={labelFor}\n busy={busy}\n onResend={async (delivery) => {\n const payload = await run({ action: 'resend', deliveryId: delivery.$id })\n if (payload) {\n enqueueSnackbar(payload.delivered ? 'Delivered' : `Not delivered: ${payload.attempt?.error ?? 'no answer'}`, {\n variant: payload.delivered ? 'success' : 'warning',\n })\n }\n }}\n onClose={() => setLogFor(null)}\n />\n ) : null}\n </CardDisplay>\n )\n}\nOrderWebhooksCard.displayName = 'OrderWebhooksCard'\n\ninterface EndpointDialogProps {\n endpoint: EndpointRow | null\n events: WebhookEventOption[]\n busy: boolean\n onClose: () => void\n onSave: (values: { url: string; description: string; events: string[] }) => void | Promise<void>\n}\n\nfunction EndpointDialog(props: EndpointDialogProps) {\n const { endpoint, events, busy, onClose, onSave } = props\n const [url, setUrl] = useState(endpoint?.url ?? '')\n const [description, setDescription] = useState(endpoint?.description ?? '')\n const [chosen, setChosen] = useState<string[]>(endpoint?.events ?? events.map((entry) => entry.event))\n const toggle = (event: string) =>\n setChosen((current) => (current.includes(event) ? current.filter((entry) => entry !== event) : [...current, event]))\n const valid = /^https:\\/\\//i.test(url.trim()) && chosen.length > 0\n return (\n <Dialog open onClose={onClose} fullWidth maxWidth=\"sm\">\n <DialogTitle>{endpoint ? 'Edit endpoint' : 'Add endpoint'}</DialogTitle>\n <DialogContent>\n <Stack spacing={2} sx={{ pt: 1 }}>\n <TextField\n label=\"Endpoint URL\"\n value={url}\n onChange={(event) => setUrl(event.target.value)}\n placeholder=\"https://example.com/aglyn-webhooks\"\n helperText=\"An https address on a public server. Redirects are not followed.\"\n fullWidth\n autoFocus\n />\n <TextField\n label=\"Description\"\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n placeholder=\"Warehouse\"\n fullWidth\n />\n <FormGroup>\n <Typography variant=\"subtitle2\">{'Events'}</Typography>\n {events.map((entry) => (\n <FormControlLabel\n key={entry.event}\n control={<Checkbox checked={chosen.includes(entry.event)} onChange={() => toggle(entry.event)} />}\n label={\n <Stack>\n <Typography variant=\"body2\">{`${entry.label} (${entry.event})`}</Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {entry.description}\n </Typography>\n </Stack>\n }\n />\n ))}\n </FormGroup>\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{'Cancel'}</Button>\n <Button\n variant=\"contained\"\n disabled={!valid || busy}\n onClick={() => onSave({ url: url.trim(), description: description.trim(), events: chosen })}\n >\n {endpoint ? 'Save' : 'Add endpoint'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nfunction SecretDialog(props: { secret: string; onClose: () => void }) {\n const { secret, onClose } = props\n const { enqueueSnackbar } = useSnackbar()\n return (\n <Dialog open onClose={onClose} fullWidth maxWidth=\"sm\">\n <DialogTitle>{'Signing secret'}</DialogTitle>\n <DialogContent>\n <Stack spacing={2}>\n <Alert severity=\"warning\">{'Copy it now. It is not shown again; roll a new one if it is lost.'}</Alert>\n <TextField value={secret} fullWidth slotProps={{ input: { readOnly: true } }} label=\"Secret\" />\n <Typography variant=\"body2\" color=\"text.secondary\">\n {`Each request carries an ${Webhooks.ORDER_WEBHOOK_SIGNATURE_HEADER} header, t=<timestamp>,v1=<signature>. ` +\n 'The signature is the HMAC-SHA256, in hex, of the timestamp, a period and the raw body, ' +\n `keyed with this secret. ${Webhooks.ORDER_WEBHOOK_EVENT_ID_HEADER} is the same on every retry.`}\n </Typography>\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => {\n void navigator.clipboard\n ?.writeText(secret)\n .then(() => enqueueSnackbar('Secret copied', { variant: 'success' }))\n }}\n >\n {'Copy'}\n </Button>\n <Button variant=\"contained\" onClick={onClose}>\n {'Done'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\ninterface DeliveriesDialogProps {\n hostId: string\n endpoint: EndpointRow\n labelFor: (event: string) => string\n busy: boolean\n onResend: (delivery: DeliveryRow) => void | Promise<void>\n onClose: () => void\n}\n\n/** The endpoint's delivery log, newest first, filtered and paged by a Firestore query. */\nexport function DeliveriesDialog(props: DeliveriesDialogProps) {\n const { hostId, endpoint, labelFor, busy, onResend, onClose } = props\n const firestore = useFirestore()\n const [statusFilter, setStatusFilter] = useState<Webhooks.OrderWebhookDeliveryStatus | ''>('')\n const [openBody, setOpenBody] = useState<string | null>(null)\n const {\n rows: deliveries,\n hasMore,\n page,\n setPage,\n pageSize,\n setPageSize,\n } = usePagedCollection<DeliveryRow>(\n (pageLimit) =>\n query(\n collection(firestore, 'hosts', hostId, 'orderWebhookDeliveries'),\n where('endpointId', '==', endpoint.$id),\n ...(statusFilter ? [where('status', '==', statusFilter)] : []),\n orderBy('createdAtMs', 'desc'),\n limit(pageLimit),\n ),\n [firestore, hostId, endpoint.$id, statusFilter],\n { idField: '$id' },\n )\n return (\n <Dialog open onClose={onClose} fullWidth maxWidth=\"md\">\n <DialogTitle>{`Deliveries · ${endpoint.url}`}</DialogTitle>\n <DialogContent>\n <Stack spacing={2} sx={{ pt: 1 }}>\n <TextField\n select\n size=\"small\"\n label=\"Status\"\n value={statusFilter}\n onChange={(event) => setStatusFilter(event.target.value as Webhooks.OrderWebhookDeliveryStatus | '')}\n sx={{ maxWidth: 200 }}\n >\n <MenuItem value=\"\">{'All'}</MenuItem>\n {(Object.keys(Webhooks.ORDER_WEBHOOK_DELIVERY_STATUS_LABELS) as Webhooks.OrderWebhookDeliveryStatus[]).map((key) => (\n <MenuItem key={key} value={key}>\n {Webhooks.ORDER_WEBHOOK_DELIVERY_STATUS_LABELS[key]}\n </MenuItem>\n ))}\n </TextField>\n {deliveries.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {'No deliveries in the last 30 days.'}\n </Typography>\n ) : (\n deliveries.map((delivery) => {\n const last = delivery.attempts?.[delivery.attempts.length - 1]\n return (\n <Stack key={delivery.$id} spacing={0.5} data-testid=\"order-webhook-delivery\">\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center', flexWrap: 'wrap' }}>\n <Typography variant=\"body2\" sx={{ flex: 1 }}>\n {`${delivery.test ? 'Test event' : labelFor(delivery.event)} · ${new Date(delivery.createdAtMs).toLocaleString()}`}\n </Typography>\n <Chip\n size=\"small\"\n variant=\"outlined\"\n label={Webhooks.ORDER_WEBHOOK_DELIVERY_STATUS_LABELS[delivery.status]}\n color={Webhooks.ORDER_WEBHOOK_DELIVERY_STATUS_COLOR[delivery.status]}\n />\n <Button size=\"small\" onClick={() => setOpenBody(openBody === delivery.$id ? null : delivery.$id)}>\n {openBody === delivery.$id ? 'Hide body' : 'Body'}\n </Button>\n <Button size=\"small\" disabled={busy} onClick={() => onResend(delivery)}>\n {'Resend'}\n </Button>\n </Stack>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {`${delivery.attempts?.length ?? 0} attempt${delivery.attempts?.length === 1 ? '' : 's'}` +\n (last ? ` · last ${last.httpStatus ?? 'no answer'}${last.error ? ` — ${last.error}` : ''}` : '')}\n </Typography>\n {openBody === delivery.$id ? (\n <TextField\n value={delivery.body}\n multiline\n maxRows={12}\n fullWidth\n slotProps={{ input: { readOnly: true } }}\n />\n ) : null}\n </Stack>\n )\n })\n )}\n <ListPagination\n page={page}\n pageSize={pageSize}\n rowCount={deliveries.length}\n hasMore={hasMore}\n onPageChange={setPage}\n onPageSizeChange={setPageSize}\n />\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{'Close'}</Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nexport default OrderWebhooksCard\n"],"names":["pluginDocsHelp","CardDisplay","useConfirmationContext","ListPagination","useSnackbar","authorizedFetch","useFirestore","useFirestoreCollection","usePagedCollection","useUser","Alert","Button","Checkbox","Chip","Dialog","DialogActions","DialogContent","DialogTitle","FormControlLabel","FormGroup","MenuItem","Stack","TextField","Typography","collection","limit","orderBy","query","where","useCallback","useEffect","useState","Webhooks","ROUTE","callOrderWebhooks","user","hostId","body","payload","response","method","headers","JSON","stringify","json","catch","ok","Object","assign","Error","String","error","status","OrderWebhooksCard","props","firestore","data","enqueueSnackbar","confirm","setStatus","editing","setEditing","secret","setSecret","logFor","setLogFor","busy","setBusy","active","action","then","endpointDocs","ORDER_WEBHOOK_MAX_ENDPOINTS","idField","endpoints","run","success","variant","message","handleTest","endpoint","endpointId","$id","delivered","attempt","handleRoll","confirmed","title","description","confirmationText","handleDelete","url","confirmationButtonProps","color","configured","labelFor","event","events","find","entry","label","atMax","length","maxEndpoints","header","help","anchor","contentGutterX","contentGutterY","HeaderProps","size","disabled","onClick","spacing","map","data-testid","direction","sx","alignItems","flexWrap","flex","minWidth","wordBreak","enabled","lastDeliveryStatus","ORDER_WEBHOOK_DELIVERY_STATUS_LABELS","ORDER_WEBHOOK_DELIVERY_STATUS_COLOR","join","secretHint","EndpointDialog","onClose","onSave","values","SecretDialog","DeliveriesDialog","onResend","delivery","deliveryId","displayName","setUrl","setDescription","chosen","setChosen","toggle","current","includes","filter","valid","test","trim","open","fullWidth","maxWidth","pt","value","onChange","target","placeholder","helperText","autoFocus","control","checked","severity","slotProps","input","readOnly","ORDER_WEBHOOK_SIGNATURE_HEADER","ORDER_WEBHOOK_EVENT_ID_HEADER","navigator","clipboard","writeText","statusFilter","setStatusFilter","openBody","setOpenBody","rows","deliveries","hasMore","page","setPage","pageSize","setPageSize","pageLimit","select","keys","key","last","attempts","Date","createdAtMs","toLocaleString","httpStatus","multiline","maxRows","rowCount","onPageChange","onPageSizeChange"],"mappings":"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"}
@@ -0,0 +1,155 @@
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
+ */
17
+ /**
18
+ * The zones the order dialog hosts (AGL-3611): `orderDetail`, beside the
19
+ * order's actions, and `orderFulfillment`, inside the Fulfill items panel.
20
+ *
21
+ * Declared here because zones are declared by the plugin that hosts them (the
22
+ * product zones are the precedent). A widget from another plugin — a shipping
23
+ * plugin's "Buy label" — restates the props it reads rather than importing
24
+ * this package. A widget proposes and never writes the order itself: the
25
+ * shipment it records goes through `recordFulfillment`, which is this
26
+ * plugin's own route with its role gate, its quantity check and its
27
+ * transition rule.
28
+ */
29
+ /** One order line as a widget reads it. `lineItemId` is the line's index. */
30
+ export interface ConsoleOrderZoneLine {
31
+ lineItemId: number;
32
+ productId: string;
33
+ variantId: string | null;
34
+ name: string;
35
+ variantLabel: string | null;
36
+ sku: string | null;
37
+ /** `physical`, `digital` or `service`; `null` on a line written before types. */
38
+ productType: string | null;
39
+ quantity: number;
40
+ unitAmountCents: number;
41
+ fulfilledQuantity: number;
42
+ remainingQuantity: number;
43
+ /** Whether the line has to be shipped at all. */
44
+ requiresShipping: boolean;
45
+ }
46
+ /** An address on the order, as the buyer gave it. */
47
+ export interface ConsoleOrderZoneAddress {
48
+ name: string | null;
49
+ line1: string | null;
50
+ line2: string | null;
51
+ city: string | null;
52
+ state: string | null;
53
+ postalCode: string | null;
54
+ country: string | null;
55
+ phone: string | null;
56
+ }
57
+ /** One recorded shipment. */
58
+ export interface ConsoleOrderZoneFulfillment {
59
+ id: string;
60
+ lines: ReadonlyArray<{
61
+ lineItemId: number;
62
+ quantity: number;
63
+ }>;
64
+ carrier: string | null;
65
+ trackingNumber: string | null;
66
+ trackingUrl: string | null;
67
+ labelUrl: string | null;
68
+ status: 'active' | 'cancelled';
69
+ atMs: number;
70
+ }
71
+ /** The order a widget is handed. Money is integer cents in `currency`. */
72
+ export interface ConsoleOrderZoneOrder {
73
+ id: string;
74
+ /** The human number, e.g. `#1042`. */
75
+ number: string;
76
+ status: string;
77
+ channel: string;
78
+ /** ISO 4217, upper case. */
79
+ currency: string;
80
+ customerEmail: string | null;
81
+ customerName: string | null;
82
+ shippingAddress: ConsoleOrderZoneAddress | null;
83
+ lines: readonly ConsoleOrderZoneLine[];
84
+ fulfillments: readonly ConsoleOrderZoneFulfillment[];
85
+ totals: {
86
+ itemsCents: number;
87
+ shippingCents: number;
88
+ taxCents: number;
89
+ discountCents: number;
90
+ totalCents: number;
91
+ };
92
+ /** Whether the order was paid in Stripe test mode. */
93
+ testMode: boolean;
94
+ }
95
+ /** A shipment a widget asks the dialog to record. */
96
+ export interface ConsoleFulfillmentRequest {
97
+ /** The units shipped. Omitted, the shipment covers everything still to ship. */
98
+ lineItems?: ReadonlyArray<{
99
+ lineItemId: number;
100
+ quantity: number;
101
+ }>;
102
+ carrier: string;
103
+ trackingNumber: string;
104
+ /** An explicit https tracking link; derived from the carrier when absent. */
105
+ trackingUrl?: string;
106
+ /** The label the widget bought, an https URL. */
107
+ labelUrl?: string;
108
+ /** Whether the buyer is told. Defaults to true. */
109
+ notify?: boolean;
110
+ /**
111
+ * One attempt. A retry with the same key finds the shipment it recorded,
112
+ * so a widget that lost a response can ask again without shipping twice.
113
+ */
114
+ idempotencyKey: string;
115
+ }
116
+ /**
117
+ * What the `orderDetail` zone hands each widget, in the order dialog beside
118
+ * its actions. `recordFulfillment` resolves with the shipment recorded (or
119
+ * found, on a retry) and throws with a message a person can act on when the
120
+ * dialog's route refuses it: more units than are left, an order refunded in
121
+ * another tab.
122
+ */
123
+ export interface ConsoleOrderDetailZoneProps {
124
+ hostId: string;
125
+ /** The org the page names; `undefined` where the host does not know it. */
126
+ orgId: string | undefined;
127
+ order: ConsoleOrderZoneOrder;
128
+ recordFulfillment: (request: ConsoleFulfillmentRequest) => Promise<ConsoleOrderZoneFulfillment>;
129
+ }
130
+ /** The tracking a widget fills into the Fulfill items panel. */
131
+ export interface ConsoleFulfillmentTracking {
132
+ carrier: string;
133
+ trackingNumber: string;
134
+ trackingUrl?: string;
135
+ labelUrl?: string;
136
+ }
137
+ /**
138
+ * What the `orderFulfillment` zone hands each widget, inside the Fulfill
139
+ * items panel: the units the merchant has picked, and `applyTracking`, which
140
+ * fills the panel's carrier and tracking fields (a bought label's) for the
141
+ * merchant to confirm with Fulfill. `recordFulfillment` is there for a widget
142
+ * that records the shipment itself.
143
+ */
144
+ export interface ConsoleOrderFulfillmentZoneProps extends ConsoleOrderDetailZoneProps {
145
+ /** The units picked in the panel, lines with a zero count left out. */
146
+ selection: ReadonlyArray<{
147
+ lineItemId: number;
148
+ quantity: number;
149
+ }>;
150
+ applyTracking: (tracking: ConsoleFulfillmentTracking) => void;
151
+ }
152
+ export declare const ORDER_DETAIL_ZONE: import("@aglyn/aglyn/plugin-manager/plugin-zones").PluginZone<ConsoleOrderDetailZoneProps>;
153
+ export declare const ORDER_FULFILLMENT_ZONE: import("@aglyn/aglyn/plugin-manager/plugin-zones").PluginZone<ConsoleOrderFulfillmentZoneProps>;
154
+ /** Declares the two order zones, from the console registrar. */
155
+ export declare function registerCommerceOrderZones(): void;
@@ -0,0 +1,40 @@
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
+ */ import { definePluginZone, registerPluginZone } from "@aglyn/aglyn/plugin-manager/plugin-zones";
17
+ import { BUNDLE_ID } from "../../constants/bundle-common.js";
18
+ export const ORDER_DETAIL_ZONE = definePluginZone('orderDetail');
19
+ export const ORDER_FULFILLMENT_ZONE = definePluginZone('orderFulfillment');
20
+ /** Declares the two order zones, from the console registrar. */ export function registerCommerceOrderZones() {
21
+ const owner = {
22
+ pluginId: BUNDLE_ID
23
+ };
24
+ registerPluginZone({
25
+ zone: ORDER_DETAIL_ZONE,
26
+ label: 'Order detail',
27
+ surface: 'console',
28
+ layout: 'bare',
29
+ description: 'In the order dialog, above its actions. A widget here reads the order — lines, what is left to ship, the ship-to address — and records a shipment through `recordFulfillment`, the dialog’s own route with its quantity check.'
30
+ }, owner);
31
+ registerPluginZone({
32
+ zone: ORDER_FULFILLMENT_ZONE,
33
+ label: 'Order fulfillment',
34
+ surface: 'console',
35
+ layout: 'bare',
36
+ description: 'Inside the order dialog’s Fulfill items panel. A widget here reads the units picked and fills the carrier and tracking through `applyTracking` (a bought label’s), for the merchant to confirm with Fulfill.'
37
+ }, owner);
38
+ }
39
+
40
+ //# sourceMappingURL=order-zones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/plugins/commerce/src/lib/components/console/order-zones.ts"],"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\nimport {\n definePluginZone,\n registerPluginZone,\n} from '@aglyn/aglyn/plugin-manager/plugin-zones'\nimport { BUNDLE_ID } from '../../constants/bundle-common'\n\n/**\n * The zones the order dialog hosts (AGL-3611): `orderDetail`, beside the\n * order's actions, and `orderFulfillment`, inside the Fulfill items panel.\n *\n * Declared here because zones are declared by the plugin that hosts them (the\n * product zones are the precedent). A widget from another plugin — a shipping\n * plugin's \"Buy label\" — restates the props it reads rather than importing\n * this package. A widget proposes and never writes the order itself: the\n * shipment it records goes through `recordFulfillment`, which is this\n * plugin's own route with its role gate, its quantity check and its\n * transition rule.\n */\n\n/** One order line as a widget reads it. `lineItemId` is the line's index. */\nexport interface ConsoleOrderZoneLine {\n lineItemId: number\n productId: string\n variantId: string | null\n name: string\n variantLabel: string | null\n sku: string | null\n /** `physical`, `digital` or `service`; `null` on a line written before types. */\n productType: string | null\n quantity: number\n unitAmountCents: number\n fulfilledQuantity: number\n remainingQuantity: number\n /** Whether the line has to be shipped at all. */\n requiresShipping: boolean\n}\n\n/** An address on the order, as the buyer gave it. */\nexport interface ConsoleOrderZoneAddress {\n name: string | null\n line1: string | null\n line2: string | null\n city: string | null\n state: string | null\n postalCode: string | null\n country: string | null\n phone: string | null\n}\n\n/** One recorded shipment. */\nexport interface ConsoleOrderZoneFulfillment {\n id: string\n lines: ReadonlyArray<{ lineItemId: number; quantity: number }>\n carrier: string | null\n trackingNumber: string | null\n trackingUrl: string | null\n labelUrl: string | null\n status: 'active' | 'cancelled'\n atMs: number\n}\n\n/** The order a widget is handed. Money is integer cents in `currency`. */\nexport interface ConsoleOrderZoneOrder {\n id: string\n /** The human number, e.g. `#1042`. */\n number: string\n status: string\n channel: string\n /** ISO 4217, upper case. */\n currency: string\n customerEmail: string | null\n customerName: string | null\n shippingAddress: ConsoleOrderZoneAddress | null\n lines: readonly ConsoleOrderZoneLine[]\n fulfillments: readonly ConsoleOrderZoneFulfillment[]\n totals: {\n itemsCents: number\n shippingCents: number\n taxCents: number\n discountCents: number\n totalCents: number\n }\n /** Whether the order was paid in Stripe test mode. */\n testMode: boolean\n}\n\n/** A shipment a widget asks the dialog to record. */\nexport interface ConsoleFulfillmentRequest {\n /** The units shipped. Omitted, the shipment covers everything still to ship. */\n lineItems?: ReadonlyArray<{ lineItemId: number; quantity: number }>\n carrier: string\n trackingNumber: string\n /** An explicit https tracking link; derived from the carrier when absent. */\n trackingUrl?: string\n /** The label the widget bought, an https URL. */\n labelUrl?: string\n /** Whether the buyer is told. Defaults to true. */\n notify?: boolean\n /**\n * One attempt. A retry with the same key finds the shipment it recorded,\n * so a widget that lost a response can ask again without shipping twice.\n */\n idempotencyKey: string\n}\n\n/**\n * What the `orderDetail` zone hands each widget, in the order dialog beside\n * its actions. `recordFulfillment` resolves with the shipment recorded (or\n * found, on a retry) and throws with a message a person can act on when the\n * dialog's route refuses it: more units than are left, an order refunded in\n * another tab.\n */\nexport interface ConsoleOrderDetailZoneProps {\n hostId: string\n /** The org the page names; `undefined` where the host does not know it. */\n orgId: string | undefined\n order: ConsoleOrderZoneOrder\n recordFulfillment: (request: ConsoleFulfillmentRequest) => Promise<ConsoleOrderZoneFulfillment>\n}\n\n/** The tracking a widget fills into the Fulfill items panel. */\nexport interface ConsoleFulfillmentTracking {\n carrier: string\n trackingNumber: string\n trackingUrl?: string\n labelUrl?: string\n}\n\n/**\n * What the `orderFulfillment` zone hands each widget, inside the Fulfill\n * items panel: the units the merchant has picked, and `applyTracking`, which\n * fills the panel's carrier and tracking fields (a bought label's) for the\n * merchant to confirm with Fulfill. `recordFulfillment` is there for a widget\n * that records the shipment itself.\n */\nexport interface ConsoleOrderFulfillmentZoneProps extends ConsoleOrderDetailZoneProps {\n /** The units picked in the panel, lines with a zero count left out. */\n selection: ReadonlyArray<{ lineItemId: number; quantity: number }>\n applyTracking: (tracking: ConsoleFulfillmentTracking) => void\n}\n\nexport const ORDER_DETAIL_ZONE =\n definePluginZone<ConsoleOrderDetailZoneProps>('orderDetail')\n\nexport const ORDER_FULFILLMENT_ZONE =\n definePluginZone<ConsoleOrderFulfillmentZoneProps>('orderFulfillment')\n\n/** Declares the two order zones, from the console registrar. */\nexport function registerCommerceOrderZones(): void {\n const owner = { pluginId: BUNDLE_ID }\n registerPluginZone(\n {\n zone: ORDER_DETAIL_ZONE,\n label: 'Order detail',\n surface: 'console',\n layout: 'bare',\n description:\n 'In the order dialog, above its actions. A widget here reads the order — lines, what is left to ship, the ship-to address — and records a shipment through `recordFulfillment`, the dialog’s own route with its quantity check.',\n },\n owner,\n )\n registerPluginZone(\n {\n zone: ORDER_FULFILLMENT_ZONE,\n label: 'Order fulfillment',\n surface: 'console',\n layout: 'bare',\n description:\n 'Inside the order dialog’s Fulfill items panel. A widget here reads the units picked and fills the carrier and tracking through `applyTracking` (a bought label’s), for the merchant to confirm with Fulfill.',\n },\n owner,\n )\n}\n"],"names":["definePluginZone","registerPluginZone","BUNDLE_ID","ORDER_DETAIL_ZONE","ORDER_FULFILLMENT_ZONE","registerCommerceOrderZones","owner","pluginId","zone","label","surface","layout","description"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SACEA,gBAAgB,EAChBC,kBAAkB,QACb,2CAA0C;AACjD,SAASC,SAAS,QAAQ,mCAA+B;AAyIzD,OAAO,MAAMC,oBACXH,iBAA8C,eAAc;AAE9D,OAAO,MAAMI,yBACXJ,iBAAmD,oBAAmB;AAExE,8DAA8D,GAC9D,OAAO,SAASK;IACd,MAAMC,QAAQ;QAAEC,UAAUL;IAAU;IACpCD,mBACE;QACEO,MAAML;QACNM,OAAO;QACPC,SAAS;QACTC,QAAQ;QACRC,aACE;IACJ,GACAN;IAEFL,mBACE;QACEO,MAAMJ;QACNK,OAAO;QACPC,SAAS;QACTC,QAAQ;QACRC,aACE;IACJ,GACAN;AAEJ"}
@@ -0,0 +1,67 @@
1
+ import { type StorefrontPaymentMethodId, type StorefrontPaymentMethodSpec } from '../../model/commerce-payment-methods';
2
+ export interface PaymentMethodsCardProps {
3
+ hostId: string;
4
+ }
5
+ /** One method as the route reports it (`server/payment-methods.ts`). */
6
+ export interface PaymentMethodRowView {
7
+ id: StorefrontPaymentMethodId;
8
+ on: boolean;
9
+ platform: 'on' | 'unavailable' | null;
10
+ capability: 'active' | 'pending' | 'inactive' | 'unrequested' | null;
11
+ }
12
+ export interface PaymentMethodDomainView {
13
+ domain: string;
14
+ enabled: boolean;
15
+ stripeId: string | null;
16
+ status: {
17
+ applePay: string | null;
18
+ googlePay: string | null;
19
+ };
20
+ lastError: string | null;
21
+ }
22
+ export interface PaymentMethodsView {
23
+ methods: PaymentMethodRowView[];
24
+ domains: PaymentMethodDomainView[];
25
+ accountConnected: boolean;
26
+ /** Absent from an older answer: read as allowed, and the route still judges. */
27
+ canEdit?: boolean;
28
+ canFinish?: boolean;
29
+ warnings: string[];
30
+ }
31
+ /**
32
+ * What a method's Stripe state means to the merchant, or null for nothing to
33
+ * say. Only an ON method gets a verdict: an off one is the merchant's choice.
34
+ */
35
+ export declare function capabilityVerdict(row: PaymentMethodRowView, accountConnected: boolean): {
36
+ label: string;
37
+ color: 'success' | 'warning' | 'default';
38
+ } | null;
39
+ /** The domain chip: what Apple Pay can do on this name right now. */
40
+ export declare function domainVerdict(domain: PaymentMethodDomainView): {
41
+ label: string;
42
+ color: 'success' | 'warning' | 'default';
43
+ };
44
+ /**
45
+ * The methods a merchant can see: everything the platform offers, and every
46
+ * method we could not ask Stripe about except crypto, which is shown only once
47
+ * the platform positively offers it (AGL-3629: hidden where unavailable).
48
+ */
49
+ export declare function visibleMethods(rows: readonly PaymentMethodRowView[]): Array<{
50
+ row: PaymentMethodRowView;
51
+ spec: StorefrontPaymentMethodSpec;
52
+ }>;
53
+ /**
54
+ * Payment methods (AGL-3629): which wallets, buy-now-pay-later and crypto
55
+ * options the storefront offers, what each needs, and whether Stripe is ready
56
+ * for it. Cards are always on and are not listed.
57
+ *
58
+ * Read and saved through `/api/commerce/payment-methods` rather than a
59
+ * Firestore listen, because two of the three facts per row — what the
60
+ * platform offers and the payout account's capability — live at Stripe, and a
61
+ * save is a Stripe request as well as a settings write.
62
+ */
63
+ export declare function PaymentMethodsCard(props: PaymentMethodsCardProps): import("react").JSX.Element;
64
+ export declare namespace PaymentMethodsCard {
65
+ var displayName: string;
66
+ }
67
+ export default PaymentMethodsCard;