@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.
- package/package.json +13 -13
- package/src/index.d.ts +0 -1
- package/src/index.js +0 -1
- package/src/index.js.map +1 -1
- package/src/lib/barcode/barcode-decode.d.ts +71 -0
- package/src/lib/barcode/barcode-decode.js +498 -0
- package/src/lib/barcode/barcode-decode.js.map +1 -0
- package/src/lib/barcode/barcode-encode.d.ts +44 -0
- package/src/lib/barcode/barcode-encode.js +138 -0
- package/src/lib/barcode/barcode-encode.js.map +1 -0
- package/src/lib/barcode/barcode-scanner.component.d.ts +23 -0
- package/src/lib/barcode/barcode-scanner.component.js +260 -0
- package/src/lib/barcode/barcode-scanner.component.js.map +1 -0
- package/src/lib/barcode/scan-button.component.d.ts +10 -0
- package/src/lib/barcode/scan-button.component.js +62 -0
- package/src/lib/barcode/scan-button.component.js.map +1 -0
- package/src/lib/barcode/scanner-wedge.d.ts +35 -0
- package/src/lib/barcode/scanner-wedge.js +108 -0
- package/src/lib/barcode/scanner-wedge.js.map +1 -0
- package/src/lib/components/account.js +10 -1
- package/src/lib/components/account.js.map +1 -1
- package/src/lib/components/cart-extras.d.ts +45 -0
- package/src/lib/components/cart-extras.js +127 -0
- package/src/lib/components/cart-extras.js.map +1 -0
- package/src/lib/components/cart.js +82 -15
- package/src/lib/components/cart.js.map +1 -1
- package/src/lib/components/checkout-return-notice.d.ts +26 -0
- package/src/lib/components/checkout-return-notice.js +48 -0
- package/src/lib/components/checkout-return-notice.js.map +1 -0
- package/src/lib/components/commerce-console-page.js +124 -0
- package/src/lib/components/commerce-console-page.js.map +1 -1
- package/src/lib/components/commerce-console-sections.d.ts +1 -1
- package/src/lib/components/commerce-console-sections.js +4 -0
- package/src/lib/components/commerce-console-sections.js.map +1 -1
- package/src/lib/components/console/bulk-fulfill.d.ts +44 -0
- package/src/lib/components/console/bulk-fulfill.js +84 -0
- package/src/lib/components/console/bulk-fulfill.js.map +1 -0
- package/src/lib/components/console/customer-notifications-card.component.d.ts +19 -0
- package/src/lib/components/console/customer-notifications-card.component.js +149 -0
- package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
- package/src/lib/components/console/host-orders-card.component.js +84 -5
- package/src/lib/components/console/host-orders-card.component.js.map +1 -1
- package/src/lib/components/console/locations-card.component.js +164 -57
- package/src/lib/components/console/locations-card.component.js.map +1 -1
- package/src/lib/components/console/order-detail-dialog.component.js +209 -61
- package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
- package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
- package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
- package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
- package/src/lib/components/console/order-invoice.component.d.ts +33 -0
- package/src/lib/components/console/order-invoice.component.js +81 -0
- package/src/lib/components/console/order-invoice.component.js.map +1 -0
- package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
- package/src/lib/components/console/order-receipt-resend.component.js +203 -0
- package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
- package/src/lib/components/console/order-returns.component.d.ts +36 -0
- package/src/lib/components/console/order-returns.component.js +142 -0
- package/src/lib/components/console/order-returns.component.js.map +1 -0
- package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
- package/src/lib/components/console/order-shipping-actions.component.js +149 -0
- package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
- package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
- package/src/lib/components/console/order-webhooks-card.component.js +623 -0
- package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
- package/src/lib/components/console/order-zones.d.ts +155 -0
- package/src/lib/components/console/order-zones.js +40 -0
- package/src/lib/components/console/order-zones.js.map +1 -0
- package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
- package/src/lib/components/console/payment-methods-card.component.js +395 -0
- package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-api.d.ts +124 -0
- package/src/lib/components/console/pos/pos-api.js +101 -0
- package/src/lib/components/console/pos/pos-api.js.map +1 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
- package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
- package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
- package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
- package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
- package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
- package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
- package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
- package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
- package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
- package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
- package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
- package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
- package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
- package/src/lib/components/console/pos/use-pos-display.js +161 -0
- package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
- package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
- package/src/lib/components/console/pos-devices-card.component.js +546 -0
- package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
- package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
- package/src/lib/components/console/pos-display/brand-screen.js +85 -0
- package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
- package/src/lib/components/console/pos-display/cart-screen.js +166 -0
- package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
- package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
- package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
- package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
- package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
- package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
- package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
- package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
- package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
- package/src/lib/components/console/pos-display/tip-screen.js +211 -0
- package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
- package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
- package/src/lib/components/console/pos-display-page.component.js +407 -0
- package/src/lib/components/console/pos-display-page.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
- package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
- package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
- package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
- package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
- package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
- package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
- package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
- package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
- package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
- package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
- package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
- package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
- package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
- package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
- package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
- package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
- package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
- package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
- package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
- package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
- package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
- package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
- package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
- package/src/lib/components/console/pos-ops/register-ops.js +28 -0
- package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
- package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
- package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
- package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
- package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
- package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
- package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
- package/src/lib/components/console/pos-page.component.d.ts +13 -5
- package/src/lib/components/console/pos-page.component.js +729 -657
- package/src/lib/components/console/pos-page.component.js.map +1 -1
- package/src/lib/components/console/product-editor-dialog.component.js +51 -7
- package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
- package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
- package/src/lib/components/console/product-labels-dialog.component.js +197 -0
- package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
- package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
- package/src/lib/components/console/product-register-fields.component.js +241 -0
- package/src/lib/components/console/product-register-fields.component.js.map +1 -0
- package/src/lib/components/console/product-zones.d.ts +58 -2
- package/src/lib/components/console/product-zones.js +10 -2
- package/src/lib/components/console/product-zones.js.map +1 -1
- package/src/lib/components/console/products-hub-card.component.js +51 -11
- package/src/lib/components/console/products-hub-card.component.js.map +1 -1
- package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
- package/src/lib/components/console/register-hardware-card.component.js +826 -0
- package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
- package/src/lib/components/console/registers-card.component.js +24 -5
- package/src/lib/components/console/registers-card.component.js.map +1 -1
- package/src/lib/components/console/return-actions.d.ts +38 -0
- package/src/lib/components/console/return-actions.js +76 -0
- package/src/lib/components/console/return-actions.js.map +1 -0
- package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
- package/src/lib/components/console/return-detail-dialog.component.js +718 -0
- package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
- package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
- package/src/lib/components/console/return-settings-card.component.js +195 -0
- package/src/lib/components/console/return-settings-card.component.js.map +1 -0
- package/src/lib/components/console/return-zones.d.ts +87 -0
- package/src/lib/components/console/return-zones.js +31 -0
- package/src/lib/components/console/return-zones.js.map +1 -0
- package/src/lib/components/console/returns-card.component.d.ts +45 -0
- package/src/lib/components/console/returns-card.component.js +159 -0
- package/src/lib/components/console/returns-card.component.js.map +1 -0
- package/src/lib/components/console/shipping-settings-card.component.js +161 -5
- package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
- package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
- package/src/lib/components/console/shippingeasy-card.component.js +378 -0
- package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
- package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
- package/src/lib/components/console/shipstation-card.component.js +345 -0
- package/src/lib/components/console/shipstation-card.component.js.map +1 -0
- package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
- package/src/lib/components/console/start-return-dialog.component.js +243 -0
- package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
- package/src/lib/components/console/stock-movements-card.component.js +2 -1
- package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
- package/src/lib/components/console/store-settings-card.component.js +2 -66
- package/src/lib/components/console/store-settings-card.component.js.map +1 -1
- package/src/lib/components/console/store-zones.d.ts +42 -0
- package/src/lib/components/console/store-zones.js +39 -0
- package/src/lib/components/console/store-zones.js.map +1 -0
- package/src/lib/components/order-status.d.ts +36 -0
- package/src/lib/components/order-status.js +502 -0
- package/src/lib/components/order-status.js.map +1 -0
- package/src/lib/components/product-detail.js +44 -2
- package/src/lib/components/product-detail.js.map +1 -1
- package/src/lib/components/return-request.d.ts +32 -0
- package/src/lib/components/return-request.js +576 -0
- package/src/lib/components/return-request.js.map +1 -0
- package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
- package/src/lib/components/storefront-payment-appearance.js +114 -0
- package/src/lib/components/storefront-payment-appearance.js.map +1 -0
- package/src/lib/components/storefront-payment-element.d.ts +57 -1
- package/src/lib/components/storefront-payment-element.js +332 -33
- package/src/lib/components/storefront-payment-element.js.map +1 -1
- package/src/lib/constants/order-status.d.ts +22 -0
- package/src/lib/constants/order-status.js +22 -0
- package/src/lib/constants/order-status.js.map +1 -0
- package/src/lib/constants/return-request.d.ts +27 -0
- package/src/lib/constants/return-request.js +32 -0
- package/src/lib/constants/return-request.js.map +1 -0
- package/src/lib/constants/stock-movement-query.js +2 -1
- package/src/lib/constants/stock-movement-query.js.map +1 -1
- package/src/lib/declarations.console-server.js +9 -0
- package/src/lib/declarations.console-server.js.map +1 -1
- package/src/lib/declarations.server.d.ts +2 -1
- package/src/lib/declarations.server.js +47 -1
- package/src/lib/declarations.server.js.map +1 -1
- package/src/lib/model/buyer-notifications.d.ts +59 -0
- package/src/lib/model/buyer-notifications.js +97 -0
- package/src/lib/model/buyer-notifications.js.map +1 -0
- package/src/lib/model/commerce-orders.d.ts +127 -1
- package/src/lib/model/commerce-orders.js +24 -15
- package/src/lib/model/commerce-orders.js.map +1 -1
- package/src/lib/model/commerce-payment-methods.d.ts +146 -0
- package/src/lib/model/commerce-payment-methods.js +247 -0
- package/src/lib/model/commerce-payment-methods.js.map +1 -0
- package/src/lib/model/commerce-pos-ops.d.ts +437 -0
- package/src/lib/model/commerce-pos-ops.js +721 -0
- package/src/lib/model/commerce-pos-ops.js.map +1 -0
- package/src/lib/model/commerce-pos.d.ts +263 -0
- package/src/lib/model/commerce-pos.js +375 -0
- package/src/lib/model/commerce-pos.js.map +1 -0
- package/src/lib/model/commerce-printers.d.ts +211 -0
- package/src/lib/model/commerce-printers.js +181 -0
- package/src/lib/model/commerce-printers.js.map +1 -0
- package/src/lib/model/commerce-receipt.d.ts +97 -0
- package/src/lib/model/commerce-receipt.js +180 -0
- package/src/lib/model/commerce-receipt.js.map +1 -0
- package/src/lib/model/commerce-returns.d.ts +207 -0
- package/src/lib/model/commerce-returns.js +300 -0
- package/src/lib/model/commerce-returns.js.map +1 -0
- package/src/lib/model/commerce-shipping.d.ts +44 -1
- package/src/lib/model/commerce-shipping.js +53 -9
- package/src/lib/model/commerce-shipping.js.map +1 -1
- package/src/lib/model/commerce-tax-engine.d.ts +90 -0
- package/src/lib/model/commerce-tax-engine.js +129 -0
- package/src/lib/model/commerce-tax-engine.js.map +1 -0
- package/src/lib/model/commerce.d.ts +88 -2
- package/src/lib/model/commerce.js +89 -1
- package/src/lib/model/commerce.js.map +1 -1
- package/src/lib/model/index.d.ts +15 -0
- package/src/lib/model/index.js +15 -0
- package/src/lib/model/index.js.map +1 -1
- package/src/lib/model/order-events.d.ts +154 -0
- package/src/lib/model/order-events.js +153 -0
- package/src/lib/model/order-events.js.map +1 -0
- package/src/lib/model/order-fulfillment.d.ts +117 -0
- package/src/lib/model/order-fulfillment.js +217 -0
- package/src/lib/model/order-fulfillment.js.map +1 -0
- package/src/lib/model/order-history.d.ts +58 -0
- package/src/lib/model/order-history.js +22 -0
- package/src/lib/model/order-history.js.map +1 -0
- package/src/lib/model/order-list-fields.d.ts +9 -1
- package/src/lib/model/order-list-fields.js +7 -1
- package/src/lib/model/order-list-fields.js.map +1 -1
- package/src/lib/model/order-shipping-export.d.ts +91 -0
- package/src/lib/model/order-shipping-export.js +192 -0
- package/src/lib/model/order-shipping-export.js.map +1 -0
- package/src/lib/model/order-status-view.d.ts +103 -0
- package/src/lib/model/order-status-view.js +156 -0
- package/src/lib/model/order-status-view.js.map +1 -0
- package/src/lib/model/order-webhooks.d.ts +142 -0
- package/src/lib/model/order-webhooks.js +91 -0
- package/src/lib/model/order-webhooks.js.map +1 -0
- package/src/lib/model/product-channel.d.ts +56 -0
- package/src/lib/model/product-channel.js +86 -0
- package/src/lib/model/product-channel.js.map +1 -0
- package/src/lib/model/product-modifiers.d.ts +80 -0
- package/src/lib/model/product-modifiers.js +140 -0
- package/src/lib/model/product-modifiers.js.map +1 -0
- package/src/lib/model/shippingeasy.d.ts +94 -0
- package/src/lib/model/shippingeasy.js +267 -0
- package/src/lib/model/shippingeasy.js.map +1 -0
- package/src/lib/model/shipstation.d.ts +125 -0
- package/src/lib/model/shipstation.js +399 -0
- package/src/lib/model/shipstation.js.map +1 -0
- package/src/lib/model/smart-collection-reads.d.ts +32 -0
- package/src/lib/model/smart-collection-reads.js +63 -0
- package/src/lib/model/smart-collection-reads.js.map +1 -0
- package/src/lib/model/tracking-url.d.ts +74 -0
- package/src/lib/model/tracking-url.js +159 -0
- package/src/lib/model/tracking-url.js.map +1 -0
- package/src/lib/plugin-config.d.ts +13 -0
- package/src/lib/plugin-config.js +77 -5
- package/src/lib/plugin-config.js.map +1 -1
- package/src/lib/plugin.js +23 -0
- package/src/lib/plugin.js.map +1 -1
- package/src/lib/pos-ops-config.d.ts +39 -0
- package/src/lib/pos-ops-config.js +88 -0
- package/src/lib/pos-ops-config.js.map +1 -0
- package/src/lib/printing/print-document.d.ts +106 -0
- package/src/lib/printing/print-document.js +464 -0
- package/src/lib/printing/print-document.js.map +1 -0
- package/src/lib/printing/product-labels.d.ts +58 -0
- package/src/lib/printing/product-labels.js +116 -0
- package/src/lib/printing/product-labels.js.map +1 -0
- package/src/lib/printing/render-epson.d.ts +57 -0
- package/src/lib/printing/render-epson.js +135 -0
- package/src/lib/printing/render-epson.js.map +1 -0
- package/src/lib/printing/render-star.d.ts +45 -0
- package/src/lib/printing/render-star.js +100 -0
- package/src/lib/printing/render-star.js.map +1 -0
- package/src/lib/printing/render-text.d.ts +25 -0
- package/src/lib/printing/render-text.js +53 -0
- package/src/lib/printing/render-text.js.map +1 -0
- package/src/lib/server/api-v1/openapi.js +27 -4
- package/src/lib/server/api-v1/openapi.js.map +1 -1
- package/src/lib/server/api-v1/order-view.d.ts +67 -0
- package/src/lib/server/api-v1/order-view.js +120 -0
- package/src/lib/server/api-v1/order-view.js.map +1 -0
- package/src/lib/server/api-v1/orders-and-products.js +58 -65
- package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
- package/src/lib/server/billing-webhook.js +135 -28
- package/src/lib/server/billing-webhook.js.map +1 -1
- package/src/lib/server/cancel-order.js +29 -0
- package/src/lib/server/cancel-order.js.map +1 -1
- package/src/lib/server/carrier-rates-availability.d.ts +26 -0
- package/src/lib/server/carrier-rates-availability.js +76 -0
- package/src/lib/server/carrier-rates-availability.js.map +1 -0
- package/src/lib/server/carrier-shipping.d.ts +84 -0
- package/src/lib/server/carrier-shipping.js +135 -0
- package/src/lib/server/carrier-shipping.js.map +1 -0
- package/src/lib/server/cart-checkout.d.ts +2 -0
- package/src/lib/server/cart-checkout.js +226 -22
- package/src/lib/server/cart-checkout.js.map +1 -1
- package/src/lib/server/checkout-extras.d.ts +64 -0
- package/src/lib/server/checkout-extras.js +157 -0
- package/src/lib/server/checkout-extras.js.map +1 -0
- package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
- package/src/lib/server/checkout-status.js +111 -0
- package/src/lib/server/checkout-status.js.map +1 -0
- package/src/lib/server/checkout.js +86 -9
- package/src/lib/server/checkout.js.map +1 -1
- package/src/lib/server/draft-order.js +34 -5
- package/src/lib/server/draft-order.js.map +1 -1
- package/src/lib/server/fulfill-order.d.ts +127 -10
- package/src/lib/server/fulfill-order.js +451 -49
- package/src/lib/server/fulfill-order.js.map +1 -1
- package/src/lib/server/legacy-feed.d.ts +28 -0
- package/src/lib/server/legacy-feed.js +52 -0
- package/src/lib/server/legacy-feed.js.map +1 -0
- package/src/lib/server/native-checkout.d.ts +34 -15
- package/src/lib/server/native-checkout.js +32 -17
- package/src/lib/server/native-checkout.js.map +1 -1
- package/src/lib/server/order-event-host-emit.d.ts +23 -0
- package/src/lib/server/order-event-host-emit.js +30 -0
- package/src/lib/server/order-event-host-emit.js.map +1 -0
- package/src/lib/server/order-event-triggers.d.ts +37 -0
- package/src/lib/server/order-event-triggers.js +119 -0
- package/src/lib/server/order-event-triggers.js.map +1 -0
- package/src/lib/server/order-events.d.ts +62 -0
- package/src/lib/server/order-events.js +109 -0
- package/src/lib/server/order-events.js.map +1 -0
- package/src/lib/server/order-history.d.ts +23 -0
- package/src/lib/server/order-history.js +65 -0
- package/src/lib/server/order-history.js.map +1 -0
- package/src/lib/server/order-notifications.d.ts +185 -0
- package/src/lib/server/order-notifications.js +567 -0
- package/src/lib/server/order-notifications.js.map +1 -0
- package/src/lib/server/order-receipt-send.d.ts +39 -0
- package/src/lib/server/order-receipt-send.js +151 -0
- package/src/lib/server/order-receipt-send.js.map +1 -0
- package/src/lib/server/order-status-token.d.ts +31 -0
- package/src/lib/server/order-status-token.js +75 -0
- package/src/lib/server/order-status-token.js.map +1 -0
- package/src/lib/server/order-status.d.ts +58 -0
- package/src/lib/server/order-status.js +141 -0
- package/src/lib/server/order-status.js.map +1 -0
- package/src/lib/server/order-webhooks.d.ts +108 -0
- package/src/lib/server/order-webhooks.js +622 -0
- package/src/lib/server/order-webhooks.js.map +1 -0
- package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
- package/src/lib/server/orders-shipping-prepare.js +121 -0
- package/src/lib/server/orders-shipping-prepare.js.map +1 -0
- package/src/lib/server/payment-method-domains.d.ts +209 -0
- package/src/lib/server/payment-method-domains.js +444 -0
- package/src/lib/server/payment-method-domains.js.map +1 -0
- package/src/lib/server/payment-methods.d.ts +77 -0
- package/src/lib/server/payment-methods.js +284 -0
- package/src/lib/server/payment-methods.js.map +1 -0
- package/src/lib/server/pos-auth.d.ts +50 -0
- package/src/lib/server/pos-auth.js +121 -0
- package/src/lib/server/pos-auth.js.map +1 -0
- package/src/lib/server/pos-customer.d.ts +49 -0
- package/src/lib/server/pos-customer.js +257 -0
- package/src/lib/server/pos-customer.js.map +1 -0
- package/src/lib/server/pos-display.d.ts +57 -0
- package/src/lib/server/pos-display.js +419 -0
- package/src/lib/server/pos-display.js.map +1 -0
- package/src/lib/server/pos-fee-month.d.ts +34 -0
- package/src/lib/server/pos-fee-month.js +36 -0
- package/src/lib/server/pos-fee-month.js.map +1 -0
- package/src/lib/server/pos-ops-gate.d.ts +161 -0
- package/src/lib/server/pos-ops-gate.js +295 -0
- package/src/lib/server/pos-ops-gate.js.map +1 -0
- package/src/lib/server/pos-ops-routes.d.ts +22 -0
- package/src/lib/server/pos-ops-routes.js +36 -0
- package/src/lib/server/pos-ops-routes.js.map +1 -0
- package/src/lib/server/pos-order.d.ts +1 -18
- package/src/lib/server/pos-order.js +222 -42
- package/src/lib/server/pos-order.js.map +1 -1
- package/src/lib/server/pos-payment.d.ts +39 -0
- package/src/lib/server/pos-payment.js +922 -0
- package/src/lib/server/pos-payment.js.map +1 -0
- package/src/lib/server/pos-print.d.ts +82 -0
- package/src/lib/server/pos-print.js +193 -0
- package/src/lib/server/pos-print.js.map +1 -0
- package/src/lib/server/pos-readers.d.ts +27 -0
- package/src/lib/server/pos-readers.js +276 -0
- package/src/lib/server/pos-readers.js.map +1 -0
- package/src/lib/server/pos-refund-authority.d.ts +60 -0
- package/src/lib/server/pos-refund-authority.js +72 -0
- package/src/lib/server/pos-refund-authority.js.map +1 -0
- package/src/lib/server/pos-return.d.ts +58 -0
- package/src/lib/server/pos-return.js +891 -0
- package/src/lib/server/pos-return.js.map +1 -0
- package/src/lib/server/pos-sale-stamp.d.ts +66 -0
- package/src/lib/server/pos-sale-stamp.js +84 -0
- package/src/lib/server/pos-sale-stamp.js.map +1 -0
- package/src/lib/server/pos-sale.d.ts +170 -0
- package/src/lib/server/pos-sale.js +461 -0
- package/src/lib/server/pos-sale.js.map +1 -0
- package/src/lib/server/pos-shift.d.ts +45 -0
- package/src/lib/server/pos-shift.js +484 -0
- package/src/lib/server/pos-shift.js.map +1 -0
- package/src/lib/server/pos-staff-pin.d.ts +26 -0
- package/src/lib/server/pos-staff-pin.js +339 -0
- package/src/lib/server/pos-staff-pin.js.map +1 -0
- package/src/lib/server/pos-stripe.d.ts +91 -0
- package/src/lib/server/pos-stripe.js +129 -0
- package/src/lib/server/pos-stripe.js.map +1 -0
- package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
- package/src/lib/server/pos-terminal-connection-token.js +166 -0
- package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
- package/src/lib/server/pos-terminal.d.ts +218 -0
- package/src/lib/server/pos-terminal.js +1014 -0
- package/src/lib/server/pos-terminal.js.map +1 -0
- package/src/lib/server/print-queue.d.ts +124 -0
- package/src/lib/server/print-queue.js +301 -0
- package/src/lib/server/print-queue.js.map +1 -0
- package/src/lib/server/printer-poll.d.ts +75 -0
- package/src/lib/server/printer-poll.js +325 -0
- package/src/lib/server/printer-poll.js.map +1 -0
- package/src/lib/server/printer-secret.d.ts +39 -0
- package/src/lib/server/printer-secret.js +56 -0
- package/src/lib/server/printer-secret.js.map +1 -0
- package/src/lib/server/printers.d.ts +114 -0
- package/src/lib/server/printers.js +546 -0
- package/src/lib/server/printers.js.map +1 -0
- package/src/lib/server/product-ai-capability.d.ts +42 -0
- package/src/lib/server/product-ai-capability.js +159 -0
- package/src/lib/server/product-ai-capability.js.map +1 -0
- package/src/lib/server/product-catalog.d.ts +42 -0
- package/src/lib/server/product-catalog.js +305 -0
- package/src/lib/server/product-catalog.js.map +1 -0
- package/src/lib/server/product-drafts.d.ts +119 -0
- package/src/lib/server/product-drafts.js +384 -0
- package/src/lib/server/product-drafts.js.map +1 -0
- package/src/lib/server/refund.js +110 -45
- package/src/lib/server/refund.js.map +1 -1
- package/src/lib/server/reserve.js +2 -0
- package/src/lib/server/reserve.js.map +1 -1
- package/src/lib/server/return-status-action.d.ts +37 -0
- package/src/lib/server/return-status-action.js +57 -0
- package/src/lib/server/return-status-action.js.map +1 -0
- package/src/lib/server/returns.d.ts +119 -0
- package/src/lib/server/returns.js +938 -0
- package/src/lib/server/returns.js.map +1 -0
- package/src/lib/server/shipment-records.d.ts +36 -0
- package/src/lib/server/shipment-records.js +289 -0
- package/src/lib/server/shipment-records.js.map +1 -0
- package/src/lib/server/shipping-connector-gates.d.ts +40 -0
- package/src/lib/server/shipping-connector-gates.js +97 -0
- package/src/lib/server/shipping-connector-gates.js.map +1 -0
- package/src/lib/server/shipping-connectors.d.ts +29 -0
- package/src/lib/server/shipping-connectors.js +236 -0
- package/src/lib/server/shipping-connectors.js.map +1 -0
- package/src/lib/server/shippingeasy.d.ts +238 -0
- package/src/lib/server/shippingeasy.js +787 -0
- package/src/lib/server/shippingeasy.js.map +1 -0
- package/src/lib/server/shipstation.d.ts +129 -0
- package/src/lib/server/shipstation.js +483 -0
- package/src/lib/server/shipstation.js.map +1 -0
- package/src/lib/server/site-page-resolver.d.ts +5 -0
- package/src/lib/server/site-page-resolver.js +156 -1
- package/src/lib/server/site-page-resolver.js.map +1 -1
- package/src/lib/server/stock-levels.d.ts +21 -0
- package/src/lib/server/stock-levels.js +263 -0
- package/src/lib/server/stock-levels.js.map +1 -0
- package/src/lib/server/stripe-refund.d.ts +47 -0
- package/src/lib/server/stripe-refund.js +87 -0
- package/src/lib/server/stripe-refund.js.map +1 -0
- package/src/lib/server/supplier-update.js +46 -5
- package/src/lib/server/supplier-update.js.map +1 -1
- package/src/lib/server/tax-engine-quote.d.ts +47 -0
- package/src/lib/server/tax-engine-quote.js +105 -0
- package/src/lib/server/tax-engine-quote.js.map +1 -0
- package/src/lib/server.js +146 -2
- package/src/lib/server.js.map +1 -1
- package/src/lib/site.js +12 -0
- package/src/lib/site.js.map +1 -1
- package/src/lib/subprocessors.d.ts +26 -0
- package/src/lib/subprocessors.js +50 -0
- package/src/lib/subprocessors.js.map +1 -0
- package/src/lib/tenant-emails.js +461 -3
- package/src/lib/tenant-emails.js.map +1 -1
- package/src/lib/testing/fake-firestore.d.ts +45 -0
- package/src/lib/testing/fake-firestore.js +189 -0
- package/src/lib/testing/fake-firestore.js.map +1 -0
- package/src/lib/testing/memory-firestore.d.ts +123 -0
- package/src/lib/testing/memory-firestore.js +274 -0
- package/src/lib/testing/memory-firestore.js.map +1 -0
- package/src/lib/testing/pos-ops-harness.d.ts +50 -0
- package/src/lib/testing/pos-ops-harness.js +184 -0
- package/src/lib/testing/pos-ops-harness.js.map +1 -0
- package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
- package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
- package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
- package/src/lib/transfer/records-transfer.d.ts +11 -1
- package/src/lib/transfer/records-transfer.js +127 -5
- package/src/lib/transfer/records-transfer.js.map +1 -1
- package/src/lib/transfer/records.server.d.ts +9 -2
- package/src/lib/transfer/records.server.js +58 -7
- package/src/lib/transfer/records.server.js.map +1 -1
- package/src/lib/transfer/register-transfer-resources.js +40 -1
- package/src/lib/transfer/register-transfer-resources.js.map +1 -1
- package/src/lib/transfer/register-transfer-ui.js +4 -1
- package/src/lib/transfer/register-transfer-ui.js.map +1 -1
- package/src/lib/transfer/shipping-presets.d.ts +23 -0
- package/src/lib/transfer/shipping-presets.js +156 -0
- package/src/lib/transfer/shipping-presets.js.map +1 -0
- package/src/lib/transfer/tracking-transfer.d.ts +101 -0
- package/src/lib/transfer/tracking-transfer.js +546 -0
- package/src/lib/transfer/tracking-transfer.js.map +1 -0
- package/src/lib/transfer/tracking.server.d.ts +37 -0
- package/src/lib/transfer/tracking.server.js +393 -0
- package/src/lib/transfer/tracking.server.js.map +1 -0
- package/src/lib/transfer/transfer-keys.d.ts +2 -1
- package/src/lib/transfer/transfer-keys.js +6 -2
- package/src/lib/transfer/transfer-keys.js.map +1 -1
- package/src/lib/utils/code128.d.ts +37 -0
- package/src/lib/utils/code128.js +199 -0
- package/src/lib/utils/code128.js.map +1 -0
- package/src/lib/utils/order-invoice.d.ts +55 -0
- package/src/lib/utils/order-invoice.js +127 -0
- package/src/lib/utils/order-invoice.js.map +1 -0
- package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
- package/src/lib/utils/use-checkout-return-notice.js +78 -0
- package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
- package/src/lib/utils/use-storefront-purchase-event.js +4 -0
- package/src/lib/utils/use-storefront-purchase-event.js.map +1 -1
- package/src/lib/server/feed.js +0 -69
- package/src/lib/server/feed.js.map +0 -1
|
@@ -0,0 +1,352 @@
|
|
|
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 { Box, Button, Chip, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Stack, TextField, ToggleButton, ToggleButtonGroup, Typography, useMediaQuery, useTheme } from "@mui/material";
|
|
20
|
+
import { useEffect, useMemo, useState } from "react";
|
|
21
|
+
import * as CommerceModel from "../../../model/index.js";
|
|
22
|
+
import { usd } from "./pos-api.js";
|
|
23
|
+
import { POS_TOUCH_PX } from "./pos-product-grid.component.js";
|
|
24
|
+
/** Whether the register must ask before adding: a choice of variant or any modifier. */ export function posItemNeedsChoice(product) {
|
|
25
|
+
var _ref;
|
|
26
|
+
var _product_variants;
|
|
27
|
+
return ((_ref = (_product_variants = product.variants) == null ? void 0 : _product_variants.length) != null ? _ref : 0) > 1 || CommerceModel.productModifierGroups(product).length > 0;
|
|
28
|
+
}
|
|
29
|
+
/** The variant whose options match every picked value, or undefined. */ function variantFor(product, picked) {
|
|
30
|
+
return product.variants.find((variant)=>{
|
|
31
|
+
var _product_options;
|
|
32
|
+
return ((_product_options = product.options) != null ? _product_options : []).every((option)=>{
|
|
33
|
+
var _variant_options;
|
|
34
|
+
return ((_variant_options = variant.options) == null ? void 0 : _variant_options[option.name]) === picked[option.name];
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function variantLabel(variant) {
|
|
39
|
+
var _variant_options;
|
|
40
|
+
return Object.values((_variant_options = variant.options) != null ? _variant_options : {}).join(' / ') || 'Default';
|
|
41
|
+
}
|
|
42
|
+
function soldOut(variant) {
|
|
43
|
+
return (variant == null ? void 0 : variant.inventory) != null && variant.inventory <= 0;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The register's item sheet (AGL-3607): the size, color or other variant,
|
|
47
|
+
* then each modifier group — required ones marked, "pick one" groups as a
|
|
48
|
+
* single toggle row and "pick up to N" groups as chips — and the quantity,
|
|
49
|
+
* with the line's price on the Add button as it changes. Full screen on a
|
|
50
|
+
* phone, a dialog on a tablet; every target is at least 44px.
|
|
51
|
+
*
|
|
52
|
+
* The price shown is the register's estimate. The server prices the line
|
|
53
|
+
* again from the product when the sale is charged.
|
|
54
|
+
*/ export function PosItemDialog(props) {
|
|
55
|
+
var _ref;
|
|
56
|
+
const { product, initial } = props;
|
|
57
|
+
const theme = useTheme();
|
|
58
|
+
const phone = useMediaQuery(theme.breakpoints.down('sm'));
|
|
59
|
+
const groups = useMemo(()=>product ? CommerceModel.productModifierGroups(product) : [], [
|
|
60
|
+
product
|
|
61
|
+
]);
|
|
62
|
+
const options = (_ref = product == null ? void 0 : product.options) != null ? _ref : [];
|
|
63
|
+
const [picked, setPicked] = useState({});
|
|
64
|
+
const [variantId, setVariantId] = useState('');
|
|
65
|
+
const [modifiers, setModifiers] = useState([]);
|
|
66
|
+
const [quantity, setQuantity] = useState(1);
|
|
67
|
+
useEffect(()=>{
|
|
68
|
+
var _ref, _product_variants_find, _ref1, _ref2, _ref3, _ref4;
|
|
69
|
+
if (!product) return;
|
|
70
|
+
const start = (_ref = (_product_variants_find = product.variants.find((variant)=>variant.id === (initial == null ? void 0 : initial.variantId))) != null ? _product_variants_find : product.variants.find((variant)=>!soldOut(variant))) != null ? _ref : product.variants[0];
|
|
71
|
+
setVariantId((_ref1 = start == null ? void 0 : start.id) != null ? _ref1 : '');
|
|
72
|
+
setPicked(_extends({}, (_ref2 = start == null ? void 0 : start.options) != null ? _ref2 : {}));
|
|
73
|
+
setModifiers((_ref3 = initial == null ? void 0 : initial.modifiers) != null ? _ref3 : []);
|
|
74
|
+
setQuantity((_ref4 = initial == null ? void 0 : initial.quantity) != null ? _ref4 : 1);
|
|
75
|
+
}, [
|
|
76
|
+
product,
|
|
77
|
+
initial
|
|
78
|
+
]);
|
|
79
|
+
if (!product) return null;
|
|
80
|
+
const variant = options.length > 0 ? variantFor(product, picked) : product.variants.find((item)=>item.id === variantId);
|
|
81
|
+
const chosen = CommerceModel.resolveLineModifiers(product, modifiers);
|
|
82
|
+
const unitCents = variant ? Math.round(Number(variant.priceUsd) * 100) + (chosen.ok ? chosen.extraCents : 0) : 0;
|
|
83
|
+
const missing = groups.find((group)=>modifiers.filter((pick)=>pick.groupId === group.id).length < group.min);
|
|
84
|
+
const canAdd = Boolean(variant) && chosen.ok && quantity >= 1;
|
|
85
|
+
const toggle = (group, optionId)=>{
|
|
86
|
+
setModifiers((current)=>{
|
|
87
|
+
const inGroup = current.filter((pick)=>pick.groupId === group.id);
|
|
88
|
+
const has = inGroup.some((pick)=>pick.optionId === optionId);
|
|
89
|
+
if (has) return current.filter((pick)=>!(pick.groupId === group.id && pick.optionId === optionId));
|
|
90
|
+
// A pick-one group swaps its choice; a pick-many group stops at its max.
|
|
91
|
+
if (group.max === 1) {
|
|
92
|
+
return [
|
|
93
|
+
...current.filter((pick)=>pick.groupId !== group.id),
|
|
94
|
+
{
|
|
95
|
+
groupId: group.id,
|
|
96
|
+
optionId
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
if (inGroup.length >= group.max) return current;
|
|
101
|
+
return [
|
|
102
|
+
...current,
|
|
103
|
+
{
|
|
104
|
+
groupId: group.id,
|
|
105
|
+
optionId
|
|
106
|
+
}
|
|
107
|
+
];
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
return /*#__PURE__*/ _jsxs(Dialog, {
|
|
111
|
+
open: true,
|
|
112
|
+
onClose: props.onClose,
|
|
113
|
+
fullScreen: phone,
|
|
114
|
+
fullWidth: true,
|
|
115
|
+
maxWidth: "sm",
|
|
116
|
+
children: [
|
|
117
|
+
/*#__PURE__*/ _jsx(DialogTitle, {
|
|
118
|
+
children: product.name
|
|
119
|
+
}),
|
|
120
|
+
/*#__PURE__*/ _jsx(DialogContent, {
|
|
121
|
+
dividers: true,
|
|
122
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
123
|
+
spacing: 3,
|
|
124
|
+
children: [
|
|
125
|
+
options.length > 0 ? options.map((option)=>{
|
|
126
|
+
var _picked_option_name;
|
|
127
|
+
return /*#__PURE__*/ _jsxs(Box, {
|
|
128
|
+
role: "group",
|
|
129
|
+
"aria-label": option.name,
|
|
130
|
+
children: [
|
|
131
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
132
|
+
variant: "subtitle1",
|
|
133
|
+
component: "h3",
|
|
134
|
+
sx: {
|
|
135
|
+
mb: 1
|
|
136
|
+
},
|
|
137
|
+
children: option.name
|
|
138
|
+
}),
|
|
139
|
+
/*#__PURE__*/ _jsx(ToggleButtonGroup, {
|
|
140
|
+
exclusive: true,
|
|
141
|
+
value: (_picked_option_name = picked[option.name]) != null ? _picked_option_name : null,
|
|
142
|
+
onChange: (_event, value)=>{
|
|
143
|
+
if (value) setPicked((current)=>_extends({}, current, {
|
|
144
|
+
[option.name]: value
|
|
145
|
+
}));
|
|
146
|
+
},
|
|
147
|
+
sx: {
|
|
148
|
+
flexWrap: 'wrap',
|
|
149
|
+
gap: 1
|
|
150
|
+
},
|
|
151
|
+
children: option.values.map((value)=>/*#__PURE__*/ _jsx(ToggleButton, {
|
|
152
|
+
value: value,
|
|
153
|
+
sx: {
|
|
154
|
+
minHeight: POS_TOUCH_PX,
|
|
155
|
+
minWidth: 88
|
|
156
|
+
},
|
|
157
|
+
children: value
|
|
158
|
+
}, value))
|
|
159
|
+
})
|
|
160
|
+
]
|
|
161
|
+
}, option.name);
|
|
162
|
+
}) : product.variants.length > 1 ? /*#__PURE__*/ _jsx(Box, {
|
|
163
|
+
role: "group",
|
|
164
|
+
"aria-label": "Variant",
|
|
165
|
+
children: /*#__PURE__*/ _jsx(ToggleButtonGroup, {
|
|
166
|
+
exclusive: true,
|
|
167
|
+
value: variantId || null,
|
|
168
|
+
onChange: (_event, value)=>value && setVariantId(value),
|
|
169
|
+
sx: {
|
|
170
|
+
flexWrap: 'wrap',
|
|
171
|
+
gap: 1
|
|
172
|
+
},
|
|
173
|
+
children: product.variants.map((item)=>/*#__PURE__*/ _jsx(ToggleButton, {
|
|
174
|
+
value: item.id,
|
|
175
|
+
sx: {
|
|
176
|
+
minHeight: POS_TOUCH_PX,
|
|
177
|
+
minWidth: 88
|
|
178
|
+
},
|
|
179
|
+
children: `${variantLabel(item)} · ${usd(Math.round(Number(item.priceUsd) * 100))}`
|
|
180
|
+
}, item.id))
|
|
181
|
+
})
|
|
182
|
+
}) : null,
|
|
183
|
+
options.length > 0 && !variant ? /*#__PURE__*/ _jsx(Typography, {
|
|
184
|
+
variant: "body2",
|
|
185
|
+
color: "warning.main",
|
|
186
|
+
children: 'That combination is not sold. Pick another.'
|
|
187
|
+
}) : null,
|
|
188
|
+
variant && soldOut(variant) ? /*#__PURE__*/ _jsx(Typography, {
|
|
189
|
+
variant: "body2",
|
|
190
|
+
color: "warning.main",
|
|
191
|
+
children: 'Out of stock: selling it takes the count below zero.'
|
|
192
|
+
}) : null,
|
|
193
|
+
groups.map((group)=>{
|
|
194
|
+
const count = modifiers.filter((pick)=>pick.groupId === group.id).length;
|
|
195
|
+
const rule = CommerceModel.modifierGroupRequired(group) ? group.max === 1 ? 'Required · pick 1' : `Required · pick ${group.min} to ${group.max}` : group.max === 1 ? 'Optional · pick 1' : `Optional · up to ${group.max}`;
|
|
196
|
+
return /*#__PURE__*/ _jsxs(Box, {
|
|
197
|
+
role: "group",
|
|
198
|
+
"aria-label": group.name,
|
|
199
|
+
children: [
|
|
200
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
201
|
+
direction: "row",
|
|
202
|
+
spacing: 1,
|
|
203
|
+
sx: {
|
|
204
|
+
alignItems: 'baseline',
|
|
205
|
+
mb: 1
|
|
206
|
+
},
|
|
207
|
+
children: [
|
|
208
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
209
|
+
variant: "subtitle1",
|
|
210
|
+
component: "h3",
|
|
211
|
+
children: group.name
|
|
212
|
+
}),
|
|
213
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
214
|
+
variant: "caption",
|
|
215
|
+
color: count < group.min ? 'warning.main' : 'text.secondary',
|
|
216
|
+
children: rule
|
|
217
|
+
})
|
|
218
|
+
]
|
|
219
|
+
}),
|
|
220
|
+
/*#__PURE__*/ _jsx(Box, {
|
|
221
|
+
sx: {
|
|
222
|
+
display: 'flex',
|
|
223
|
+
flexWrap: 'wrap',
|
|
224
|
+
gap: 1
|
|
225
|
+
},
|
|
226
|
+
children: group.options.map((option)=>{
|
|
227
|
+
const selected = modifiers.some((pick)=>pick.groupId === group.id && pick.optionId === option.id);
|
|
228
|
+
return /*#__PURE__*/ _jsx(Chip, {
|
|
229
|
+
label: option.priceCents ? `${option.name} +${usd(option.priceCents)}` : option.name,
|
|
230
|
+
color: selected ? 'primary' : 'default',
|
|
231
|
+
variant: selected ? 'filled' : 'outlined',
|
|
232
|
+
"aria-pressed": selected,
|
|
233
|
+
onClick: ()=>toggle(group, option.id),
|
|
234
|
+
disabled: !selected && group.max > 1 && count >= group.max,
|
|
235
|
+
sx: {
|
|
236
|
+
minHeight: POS_TOUCH_PX,
|
|
237
|
+
px: 1
|
|
238
|
+
}
|
|
239
|
+
}, option.id);
|
|
240
|
+
})
|
|
241
|
+
})
|
|
242
|
+
]
|
|
243
|
+
}, group.id);
|
|
244
|
+
}),
|
|
245
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
246
|
+
direction: "row",
|
|
247
|
+
spacing: 1,
|
|
248
|
+
sx: {
|
|
249
|
+
alignItems: 'center'
|
|
250
|
+
},
|
|
251
|
+
children: [
|
|
252
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
253
|
+
variant: "subtitle1",
|
|
254
|
+
component: "h3",
|
|
255
|
+
sx: {
|
|
256
|
+
flex: 1
|
|
257
|
+
},
|
|
258
|
+
children: 'Quantity'
|
|
259
|
+
}),
|
|
260
|
+
/*#__PURE__*/ _jsx(IconButton, {
|
|
261
|
+
"aria-label": "One fewer",
|
|
262
|
+
onClick: ()=>setQuantity((value)=>Math.max(1, value - 1)),
|
|
263
|
+
sx: {
|
|
264
|
+
width: POS_TOUCH_PX,
|
|
265
|
+
height: POS_TOUCH_PX,
|
|
266
|
+
border: 1,
|
|
267
|
+
borderColor: 'divider'
|
|
268
|
+
},
|
|
269
|
+
children: '−'
|
|
270
|
+
}),
|
|
271
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
272
|
+
value: quantity,
|
|
273
|
+
onChange: (event)=>{
|
|
274
|
+
const next = Math.round(Number(event.target.value.replace(/\D/g, '')));
|
|
275
|
+
setQuantity(Math.max(1, Math.min(99, next || 1)));
|
|
276
|
+
},
|
|
277
|
+
sx: {
|
|
278
|
+
width: 72
|
|
279
|
+
},
|
|
280
|
+
slotProps: {
|
|
281
|
+
htmlInput: {
|
|
282
|
+
inputMode: 'numeric',
|
|
283
|
+
'aria-label': 'Quantity',
|
|
284
|
+
style: {
|
|
285
|
+
textAlign: 'center'
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}),
|
|
290
|
+
/*#__PURE__*/ _jsx(IconButton, {
|
|
291
|
+
"aria-label": "One more",
|
|
292
|
+
onClick: ()=>setQuantity((value)=>Math.min(99, value + 1)),
|
|
293
|
+
sx: {
|
|
294
|
+
width: POS_TOUCH_PX,
|
|
295
|
+
height: POS_TOUCH_PX,
|
|
296
|
+
border: 1,
|
|
297
|
+
borderColor: 'divider'
|
|
298
|
+
},
|
|
299
|
+
children: '+'
|
|
300
|
+
})
|
|
301
|
+
]
|
|
302
|
+
})
|
|
303
|
+
]
|
|
304
|
+
})
|
|
305
|
+
}),
|
|
306
|
+
/*#__PURE__*/ _jsxs(DialogActions, {
|
|
307
|
+
sx: {
|
|
308
|
+
p: 2,
|
|
309
|
+
gap: 1
|
|
310
|
+
},
|
|
311
|
+
children: [
|
|
312
|
+
props.onRemove ? /*#__PURE__*/ _jsx(Button, {
|
|
313
|
+
color: "error",
|
|
314
|
+
onClick: props.onRemove,
|
|
315
|
+
sx: {
|
|
316
|
+
minHeight: POS_TOUCH_PX,
|
|
317
|
+
mr: 'auto'
|
|
318
|
+
},
|
|
319
|
+
children: 'Remove'
|
|
320
|
+
}) : null,
|
|
321
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
322
|
+
onClick: props.onClose,
|
|
323
|
+
sx: {
|
|
324
|
+
minHeight: POS_TOUCH_PX
|
|
325
|
+
},
|
|
326
|
+
children: 'Cancel'
|
|
327
|
+
}),
|
|
328
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
329
|
+
variant: "contained",
|
|
330
|
+
disabled: !canAdd,
|
|
331
|
+
onClick: ()=>{
|
|
332
|
+
if (!variant || !chosen.ok) return;
|
|
333
|
+
props.onConfirm({
|
|
334
|
+
variant,
|
|
335
|
+
modifiers,
|
|
336
|
+
quantity
|
|
337
|
+
});
|
|
338
|
+
},
|
|
339
|
+
sx: {
|
|
340
|
+
minHeight: POS_TOUCH_PX,
|
|
341
|
+
minWidth: 160
|
|
342
|
+
},
|
|
343
|
+
children: missing ? `Choose ${missing.name.toLowerCase()}` : `${props.onRemove ? 'Update' : 'Add'} · ${usd(unitCents * quantity)}`
|
|
344
|
+
})
|
|
345
|
+
]
|
|
346
|
+
})
|
|
347
|
+
]
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
PosItemDialog.displayName = 'PosItemDialog';
|
|
351
|
+
|
|
352
|
+
//# sourceMappingURL=pos-item-dialog.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../libs/plugins/commerce/src/lib/components/console/pos/pos-item-dialog.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport {\n Box,\n Button,\n Chip,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n TextField,\n ToggleButton,\n ToggleButtonGroup,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@mui/material'\nimport { useEffect, useMemo, useState } from 'react'\nimport * as CommerceModel from '../../../model'\nimport { usd } from './pos-api'\nimport { POS_TOUCH_PX } from './pos-product-grid.component'\n\n/** What the dialog hands back: one basket line's worth of choices. */\nexport interface PosItemChoice {\n variant: CommerceModel.ProductVariant\n modifiers: CommerceModel.ModifierSelection[]\n quantity: number\n}\n\nexport interface PosItemDialogProps {\n /** The product being added or edited; `null` closes the dialog. */\n product: (CommerceModel.HostProduct & { $id: string }) | null\n /** An existing line's choices, when the cashier tapped a basket line. */\n initial?: { variantId?: string; modifiers?: CommerceModel.ModifierSelection[]; quantity: number }\n onClose: () => void\n onConfirm: (choice: PosItemChoice) => void\n /** Editing only: takes the line out of the basket. */\n onRemove?: () => void\n}\n\n/** Whether the register must ask before adding: a choice of variant or any modifier. */\nexport function posItemNeedsChoice(product: CommerceModel.HostProduct): boolean {\n return (\n (product.variants?.length ?? 0) > 1 ||\n CommerceModel.productModifierGroups(product).length > 0\n )\n}\n\n/** The variant whose options match every picked value, or undefined. */\nfunction variantFor(\n product: CommerceModel.HostProduct,\n picked: Record<string, string>,\n): CommerceModel.ProductVariant | undefined {\n return product.variants.find((variant) =>\n (product.options ?? []).every((option) => variant.options?.[option.name] === picked[option.name]),\n )\n}\n\nfunction variantLabel(variant: CommerceModel.ProductVariant): string {\n return Object.values(variant.options ?? {}).join(' / ') || 'Default'\n}\n\nfunction soldOut(variant: CommerceModel.ProductVariant | undefined): boolean {\n return variant?.inventory != null && variant.inventory <= 0\n}\n\n/**\n * The register's item sheet (AGL-3607): the size, color or other variant,\n * then each modifier group — required ones marked, \"pick one\" groups as a\n * single toggle row and \"pick up to N\" groups as chips — and the quantity,\n * with the line's price on the Add button as it changes. Full screen on a\n * phone, a dialog on a tablet; every target is at least 44px.\n *\n * The price shown is the register's estimate. The server prices the line\n * again from the product when the sale is charged.\n */\nexport function PosItemDialog(props: PosItemDialogProps) {\n const { product, initial } = props\n const theme = useTheme()\n const phone = useMediaQuery(theme.breakpoints.down('sm'))\n const groups = useMemo(\n () => (product ? CommerceModel.productModifierGroups(product) : []),\n [product],\n )\n const options = product?.options ?? []\n const [picked, setPicked] = useState<Record<string, string>>({})\n const [variantId, setVariantId] = useState('')\n const [modifiers, setModifiers] = useState<CommerceModel.ModifierSelection[]>([])\n const [quantity, setQuantity] = useState(1)\n\n useEffect(() => {\n if (!product) return\n const start =\n product.variants.find((variant) => variant.id === initial?.variantId) ??\n product.variants.find((variant) => !soldOut(variant)) ??\n product.variants[0]\n setVariantId(start?.id ?? '')\n setPicked({ ...(start?.options ?? {}) })\n setModifiers(initial?.modifiers ?? [])\n setQuantity(initial?.quantity ?? 1)\n }, [product, initial])\n\n if (!product) return null\n\n const variant =\n options.length > 0\n ? variantFor(product, picked)\n : product.variants.find((item) => item.id === variantId)\n const chosen = CommerceModel.resolveLineModifiers(product, modifiers)\n const unitCents = variant\n ? Math.round(Number(variant.priceUsd) * 100) + (chosen.ok ? chosen.extraCents : 0)\n : 0\n const missing = groups.find(\n (group) => modifiers.filter((pick) => pick.groupId === group.id).length < group.min,\n )\n const canAdd = Boolean(variant) && chosen.ok && quantity >= 1\n\n const toggle = (group: CommerceModel.ProductModifierGroup, optionId: string) => {\n setModifiers((current) => {\n const inGroup = current.filter((pick) => pick.groupId === group.id)\n const has = inGroup.some((pick) => pick.optionId === optionId)\n if (has) return current.filter((pick) => !(pick.groupId === group.id && pick.optionId === optionId))\n // A pick-one group swaps its choice; a pick-many group stops at its max.\n if (group.max === 1) {\n return [...current.filter((pick) => pick.groupId !== group.id), { groupId: group.id, optionId }]\n }\n if (inGroup.length >= group.max) return current\n return [...current, { groupId: group.id, optionId }]\n })\n }\n\n return (\n <Dialog open onClose={props.onClose} fullScreen={phone} fullWidth maxWidth=\"sm\">\n <DialogTitle>{product.name}</DialogTitle>\n <DialogContent dividers>\n <Stack spacing={3}>\n {options.length > 0\n ? options.map((option) => (\n <Box key={option.name} role=\"group\" aria-label={option.name}>\n <Typography variant=\"subtitle1\" component=\"h3\" sx={{ mb: 1 }}>\n {option.name}\n </Typography>\n <ToggleButtonGroup\n exclusive\n value={picked[option.name] ?? null}\n onChange={(_event, value: string | null) => {\n if (value) setPicked((current) => ({ ...current, [option.name]: value }))\n }}\n sx={{ flexWrap: 'wrap', gap: 1 }}\n >\n {option.values.map((value) => (\n <ToggleButton key={value} value={value} sx={{ minHeight: POS_TOUCH_PX, minWidth: 88 }}>\n {value}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </Box>\n ))\n : product.variants.length > 1 ? (\n <Box role=\"group\" aria-label=\"Variant\">\n <ToggleButtonGroup\n exclusive\n value={variantId || null}\n onChange={(_event, value: string | null) => value && setVariantId(value)}\n sx={{ flexWrap: 'wrap', gap: 1 }}\n >\n {product.variants.map((item) => (\n <ToggleButton key={item.id} value={item.id} sx={{ minHeight: POS_TOUCH_PX, minWidth: 88 }}>\n {`${variantLabel(item)} · ${usd(Math.round(Number(item.priceUsd) * 100))}`}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </Box>\n ) : null}\n {options.length > 0 && !variant ? (\n <Typography variant=\"body2\" color=\"warning.main\">\n {'That combination is not sold. Pick another.'}\n </Typography>\n ) : null}\n {variant && soldOut(variant) ? (\n <Typography variant=\"body2\" color=\"warning.main\">\n {'Out of stock: selling it takes the count below zero.'}\n </Typography>\n ) : null}\n {groups.map((group) => {\n const count = modifiers.filter((pick) => pick.groupId === group.id).length\n const rule = CommerceModel.modifierGroupRequired(group)\n ? group.max === 1\n ? 'Required · pick 1'\n : `Required · pick ${group.min} to ${group.max}`\n : group.max === 1\n ? 'Optional · pick 1'\n : `Optional · up to ${group.max}`\n return (\n <Box key={group.id} role=\"group\" aria-label={group.name}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'baseline', mb: 1 }}>\n <Typography variant=\"subtitle1\" component=\"h3\">\n {group.name}\n </Typography>\n <Typography\n variant=\"caption\"\n color={count < group.min ? 'warning.main' : 'text.secondary'}\n >\n {rule}\n </Typography>\n </Stack>\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 1 }}>\n {group.options.map((option) => {\n const selected = modifiers.some(\n (pick) => pick.groupId === group.id && pick.optionId === option.id,\n )\n return (\n <Chip\n key={option.id}\n label={option.priceCents ? `${option.name} +${usd(option.priceCents)}` : option.name}\n color={selected ? 'primary' : 'default'}\n variant={selected ? 'filled' : 'outlined'}\n aria-pressed={selected}\n onClick={() => toggle(group, option.id)}\n disabled={!selected && group.max > 1 && count >= group.max}\n sx={{ minHeight: POS_TOUCH_PX, px: 1 }}\n />\n )\n })}\n </Box>\n </Box>\n )\n })}\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Typography variant=\"subtitle1\" component=\"h3\" sx={{ flex: 1 }}>\n {'Quantity'}\n </Typography>\n <IconButton\n aria-label=\"One fewer\"\n onClick={() => setQuantity((value) => Math.max(1, value - 1))}\n sx={{ width: POS_TOUCH_PX, height: POS_TOUCH_PX, border: 1, borderColor: 'divider' }}\n >\n {'−'}\n </IconButton>\n <TextField\n value={quantity}\n onChange={(event) => {\n const next = Math.round(Number(event.target.value.replace(/\\D/g, '')))\n setQuantity(Math.max(1, Math.min(99, next || 1)))\n }}\n sx={{ width: 72 }}\n slotProps={{\n htmlInput: { inputMode: 'numeric', 'aria-label': 'Quantity', style: { textAlign: 'center' } },\n }}\n />\n <IconButton\n aria-label=\"One more\"\n onClick={() => setQuantity((value) => Math.min(99, value + 1))}\n sx={{ width: POS_TOUCH_PX, height: POS_TOUCH_PX, border: 1, borderColor: 'divider' }}\n >\n {'+'}\n </IconButton>\n </Stack>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ p: 2, gap: 1 }}>\n {props.onRemove ? (\n <Button color=\"error\" onClick={props.onRemove} sx={{ minHeight: POS_TOUCH_PX, mr: 'auto' }}>\n {'Remove'}\n </Button>\n ) : null}\n <Button onClick={props.onClose} sx={{ minHeight: POS_TOUCH_PX }}>\n {'Cancel'}\n </Button>\n <Button\n variant=\"contained\"\n disabled={!canAdd}\n onClick={() => {\n if (!variant || !chosen.ok) return\n props.onConfirm({ variant, modifiers, quantity })\n }}\n sx={{ minHeight: POS_TOUCH_PX, minWidth: 160 }}\n >\n {missing\n ? `Choose ${missing.name.toLowerCase()}`\n : `${props.onRemove ? 'Update' : 'Add'} · ${usd(unitCents * quantity)}`}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\nPosItemDialog.displayName = 'PosItemDialog'\n"],"names":["Box","Button","Chip","Dialog","DialogActions","DialogContent","DialogTitle","IconButton","Stack","TextField","ToggleButton","ToggleButtonGroup","Typography","useMediaQuery","useTheme","useEffect","useMemo","useState","CommerceModel","usd","POS_TOUCH_PX","posItemNeedsChoice","product","variants","length","productModifierGroups","variantFor","picked","find","variant","options","every","option","name","variantLabel","Object","values","join","soldOut","inventory","PosItemDialog","props","initial","theme","phone","breakpoints","down","groups","setPicked","variantId","setVariantId","modifiers","setModifiers","quantity","setQuantity","start","id","item","chosen","resolveLineModifiers","unitCents","Math","round","Number","priceUsd","ok","extraCents","missing","group","filter","pick","groupId","min","canAdd","Boolean","toggle","optionId","current","inGroup","has","some","max","open","onClose","fullScreen","fullWidth","maxWidth","dividers","spacing","map","role","aria-label","component","sx","mb","exclusive","value","onChange","_event","flexWrap","gap","minHeight","minWidth","color","count","rule","modifierGroupRequired","direction","alignItems","display","selected","label","priceCents","aria-pressed","onClick","disabled","px","flex","width","height","border","borderColor","event","next","target","replace","slotProps","htmlInput","inputMode","style","textAlign","p","onRemove","mr","onConfirm","toLowerCase","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ListQueryNotices } from '@aglyn/shared-ui-jsx/components/list-query-notices.component';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import * as CommerceModel from '../../../model';
|
|
4
|
+
/** The smallest comfortable touch target, in px (WCAG 2.5.5). */
|
|
5
|
+
export declare const POS_TOUCH_PX = 44;
|
|
6
|
+
/** The category chip that shows the store's quick keys (AGL-3607). */
|
|
7
|
+
export declare const POS_QUICK_KEYS = "__quick";
|
|
8
|
+
export interface PosGridCategory {
|
|
9
|
+
$id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PosProductGridProps {
|
|
13
|
+
hostId: string;
|
|
14
|
+
search: string;
|
|
15
|
+
onSearch: (value: string) => void;
|
|
16
|
+
/** Enter in the search box: a barcode wedge finishing a scan. */
|
|
17
|
+
onSearchEnter: () => void;
|
|
18
|
+
/** The camera scanner's button (AGL-3619), at the end of the search box. */
|
|
19
|
+
scanAdornment?: ReactNode;
|
|
20
|
+
categories: PosGridCategory[];
|
|
21
|
+
/** `''` for all, {@link POS_QUICK_KEYS}, or a category id. */
|
|
22
|
+
categoryId: string;
|
|
23
|
+
onCategory: (id: string) => void;
|
|
24
|
+
notices: Parameters<typeof ListQueryNotices>[0]['notices'];
|
|
25
|
+
products: any[];
|
|
26
|
+
/** How many of each product are in the basket, for the tile badge. */
|
|
27
|
+
basketCounts: ReadonlyMap<string, number>;
|
|
28
|
+
onTap: (product: any) => void;
|
|
29
|
+
/** A slot under the search, for the register's reader and display status. */
|
|
30
|
+
toolbar?: ReactNode;
|
|
31
|
+
}
|
|
32
|
+
/** `$4.50`, or `From $4.50` when the variants are not all one price. */
|
|
33
|
+
export declare function posTilePrice(product: CommerceModel.HostProduct): string;
|
|
34
|
+
/** What the tile says about the shelf: nothing when it is untracked or plenty. */
|
|
35
|
+
export declare function posTileStock(product: CommerceModel.HostProduct): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* The register's product picker (AGL-3607): search and scan, a category bar
|
|
38
|
+
* that opens on the store's quick keys, and photo tiles with the price, the
|
|
39
|
+
* shelf and how many are already in the basket. A product with variants or
|
|
40
|
+
* modifiers opens the item sheet; any other adds at a tap. Touch-first:
|
|
41
|
+
* every target is at least 44px, and the tiles reflow from two columns on a
|
|
42
|
+
* phone to six on a landscape tablet.
|
|
43
|
+
*/
|
|
44
|
+
export declare function PosProductGrid(props: PosProductGridProps): import("react").JSX.Element;
|
|
45
|
+
export declare namespace PosProductGrid {
|
|
46
|
+
var displayName: string;
|
|
47
|
+
}
|