@final-commerce/command-frame 0.4.0-preprod.1 → 0.4.0-staging.1

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 (32) hide show
  1. package/README.md +30 -38
  2. package/dist/actions/add-product-to-cart/types.d.ts +13 -1
  3. package/dist/actions/apply-transition/mock.d.ts +1 -1
  4. package/dist/actions/apply-transition/mock.js +18 -8
  5. package/dist/actions/apply-transition/types.d.ts +4 -6
  6. package/dist/actions/extension-payment/types.d.ts +2 -2
  7. package/dist/actions/get-available-transitions/mock.d.ts +3 -5
  8. package/dist/actions/get-available-transitions/mock.js +12 -24
  9. package/dist/actions/integration-payment/types.d.ts +0 -2
  10. package/dist/actions/partial-payment/types.d.ts +2 -2
  11. package/dist/actions/redeem-payment/types.d.ts +0 -2
  12. package/dist/actions/terminal-payment/types.d.ts +3 -3
  13. package/dist/actions/update-cart-item-quantity/types.d.ts +8 -1
  14. package/dist/demo/database.d.ts +2 -3
  15. package/dist/demo/database.js +250 -310
  16. package/dist/index.d.ts +1 -3
  17. package/dist/index.js +0 -2
  18. package/dist/projects/render/mocks.js +0 -4
  19. package/dist/projects/render/types.d.ts +1 -3
  20. package/dist/pubsub/topics/orders/index.d.ts +2 -2
  21. package/dist/pubsub/topics/orders/index.js +24 -29
  22. package/dist/pubsub/topics/orders/types.d.ts +14 -16
  23. package/dist/pubsub/topics/orders/types.js +6 -7
  24. package/package.json +2 -2
  25. package/dist/actions/void-order/action.d.ts +0 -6
  26. package/dist/actions/void-order/action.js +0 -8
  27. package/dist/actions/void-order/mock.d.ts +0 -2
  28. package/dist/actions/void-order/mock.js +0 -23
  29. package/dist/actions/void-order/types.d.ts +0 -27
  30. package/dist/actions/void-order/types.js +0 -1
  31. package/dist/pubsub/topics/orders/order-voided/types.d.ts +0 -14
  32. package/dist/pubsub/topics/orders/order-voided/types.js +0 -1
@@ -2,11 +2,11 @@
2
2
  * Mock Database for Standalone/Demo Mode
3
3
  * Stores mock data that mimics the Render environment
4
4
  */
5
- import { CFProductType, CFUserTypes, CurrencyCode, } from '../CommonTypes';
6
- export * from './mocks';
5
+ import { CFProductType, CFUserTypes, CurrencyCode } from "../CommonTypes";
6
+ export * from "./mocks";
7
7
  // Asset Imports - Using Remote URLs to avoid build complexity with asset copying
8
- const ASSETS_BASE_URL = 'https://raw.githubusercontent.com/Final-Commerce/command-frame/refs/heads/main/src/demo/assets';
9
- const logo = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OCAxMDQiIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01NS4yOTk4IDUwLjE2NjJMMzcuNzQyMiA0MC4wMjkzTDMxLjcyNzQgNTAuNDQ3MkwzOC45MjQyIDU0LjYwMjJMNTUuMjk5OCA1MC4xNjYyWiIgZmlsbD0iI0E1NjhCQyIvPjxwYXRoIGQ9Ik0zMS45OTYzIDcwLjQ1MDZMNDkuNTU2OCA4MC41ODkxTDU1LjU3MTUgNzAuMTcxM0w0OC4zNzE4IDY2LjAxNDVMMzEuOTk2MyA3MC40NTA2WiIgZmlsbD0iI0E1NjhCQyIvPjxwYXRoIGQ9Ik0zNi4zNTQyIDM0LjI1NzJDMzYuMzU0MiAzNC4yNTcyIDM2LjM1ODMgMzQuMjYzNSAzNi4zNTY3IDM0LjI2NjRDMzcuMTg2OSAzNC4wNjk3IDM4LjA5MTkgMzQuMTU5NiAzOC44ODUxIDM0LjYxNzVMNjIuNjQ4NiA0OC4zMzc0TDU0LjE3MjkgMjkuOTA0OUwzNi4zNDk2IDM0LjI1ODRMMzYuMzU0MiAzNC4yNTcyWiIgZmlsbD0iI0ZDODc1MyIvPjxwYXRoIGQ9Ik0zMy4wOTg4IDE4Ljk1MDdMMzYuMzc3MiAzNC4yNDczTDE4Ljc1MjUgMzkuMzM3M0wyOC45MzcxIDIxLjY5N0MyOS44NDUzIDIwLjEyMzkgMzEuNDE1MiAxOS4xNzYxIDMzLjA5ODggMTguOTUwN1oiIGZpbGw9IiM0MkQzQTkiLz48cGF0aCBkPSJNMTguNzUzMiAzOS4zNDA2TDIwLjY4MjQgNTkuNTE3MUw0LjU3NjA3IDYzLjg5NjJMMTguNzUzMiAzOS4zNDA2WiIgZmlsbD0iIzI3OTdFOCIvPjxwYXRoIGQ9Ik0zNi4zNzc5IDM0LjI0MDNDMzYuMzc3OSAzNC4yNDAzIDM2LjM3NzQgMzQuMjQ3OCAzNi4zODAzIDM0LjI0OTVDMzUuNTYyNCAzNC40OTE5IDM0LjgyMzkgMzUuMDE5NiAzNC4zNjczIDM1LjgxMDVMMjAuNjg2OSA1OS41MDU2TDE4Ljc1NzcgMzkuMzI5MUwzNi4zODI0IDM0LjIzOTFMMzYuMzc3OSAzNC4yNDAzWiIgZmlsbD0iIzFEQkFDQiIvPjxwYXRoIGQ9Ik01NS45MzUyIDEwMS41NDNMNTEuMDgxOSA4Ni42NjU5TDMzLjI1ODcgOTEuMDE5NEw1MC45NDk5IDEwMS4yMzNDNTIuNTI3NiAxMDIuMTQ0IDU0LjM2MzggMTAyLjE4NSA1NS45MzUyIDEwMS41NDNaIiBmaWxsPSIjRkQ1MjYzIi8+PHBhdGggZD0iTTMzLjI1NDkgOTEuMDE0TDI0Ljc4MjEgNzIuNTgzMkw4LjYzMTM1IDc2Ljc5NzVMMzMuMjU0OSA5MS4wMTRaIiBmaWxsPSIjRkZDRjIzIi8+PHBhdGggZD0iTTUxLjA3OSA4Ni42NjM5QzUxLjA3OSA4Ni42NjM5IDUxLjA3NDkgODYuNjU3NiA1MS4wNzY2IDg2LjY1NDdDNTAuMjQ2NCA4Ni44NTE0IDQ5LjM0MTQgODYuNzYxNSA0OC41NDgyIDg2LjMwMzZMMjQuNzg0NiA3Mi41ODM3TDMzLjI2MDQgOTEuMDE2MUw1MS4wODM2IDg2LjY2MjdMNTEuMDc5IDg2LjY2MzlaIiBmaWxsPSIjRkM4NzUzIi8+PHBhdGggZD0iTTU0LjMzNDIgMTAxLjk2OUw1MS4wNTU4IDg2LjY3MjRMNjguNjgwNSA4MS41ODI0TDU4LjQ5NTkgOTkuMjIyN0M1Ny41ODc3IDEwMC43OTYgNTYuMDE3OCAxMDEuNzQ0IDU0LjMzNDIgMTAxLjk2OVoiIGZpbGw9IiM0MkQzQTkiLz48cGF0aCBkPSJNNjguNjgwMSA4MS41ODk5TDY2Ljc0OTMgNjEuNDE2Mkw4Mi44NTU2IDU3LjAzNzJMNjguNjgwMSA4MS41ODk5WiIgZmlsbD0iIzI3OTdFOCIvPjxwYXRoIGQ9Ik01MS4wNTU3IDg2LjY3ODZDNTEuMDU1NyA4Ni42Nzg2IDUxLjA1NjIgODYuNjcxMSA1MS4wNTMyIDg2LjY2OTVDNTEuODcxMSA4Ni40MjcxIDUyLjYwOTcgODUuODk5NCA1My4wNjYzIDg1LjEwODVMNjYuNzQ2NyA2MS40MTMzTDY4LjY3NTkgODEuNTg5OEw1MS4wNTExIDg2LjY3OThMNTEuMDU1NyA4Ni42Nzg2WiIgZmlsbD0iIzFEQkFDQiIvPjxwYXRoIGQ9Ik00Ny44OTQ5IDI2LjI3NjhDNDcuODc4IDI2LjM1OTcgNDcuODUyIDI2LjQ0NTEgNDcuODA2OCAyNi41MjM0TDQ3LjYyNzggMjYuODMzM0M0Ni43ODY1IDI4LjI5MDYgNDQuOTIzMiAyOC43ODY5IDQzLjQ2MTggMjcuOTQzMkM0Mi4wMDA0IDI3LjA5OTQgNDEuNDk4NiAyNS4yMzc2IDQyLjMzOTkgMjMuNzgwNEw0Mi41MTg5IDIzLjQ3MDRDNDIuNTY0MSAyMy4zOTIyIDQyLjYyNSAyMy4zMjY5IDQyLjY4ODQgMjMuMjcwOEwzNi40ODUzIDE5LjY4OTRDMzQuOTA3NiAxOC43Nzg2IDMzLjA3MTQgMTguNzM4MiAzMS41IDE5LjM3OTlMMzYuMzUzMyAzNC4yNTY5TDU0LjE3NjUgMjkuOTAzNUw0Ny44OTQ5IDI2LjI3NjhaIiBmaWxsPSIjRkQ1MjYzIi8+PHBhdGggZD0iTTc1LjYzODYgNDIuMzAyN0M3NS42MjE3IDQyLjM4NTcgNzUuNTk1NiA0Mi40NzExIDc1LjU1MDUgNDIuNTQ5M0w3NS4zNzE1IDQyLjg1OTNDNzQuNTMwMiA0NC4zMTY1IDcyLjY2NjkgNDQuODEyOSA3MS4yMDU0IDQzLjk2OTFDNjkuNzQ0IDQzLjEyNTQgNjkuMjQyMyA0MS4yNjM2IDcwLjA4MzYgMzkuODA2M0w3MC4yNjI2IDM5LjQ5NjNDNzAuMzA3NyAzOS40MTgxIDcwLjM2ODYgMzkuMzUyOSA3MC40MzIgMzkuMjk2N0w1NC4xNzYxIDI5LjkxMTRMNjIuNjUxOSA0OC4zNDM5TDc4LjgwMjYgNDQuMTI5NUw3NS42NDE1IDQyLjMwNDRMNzUuNjM4NiA0Mi4zMDI3WiIgZmlsbD0iI0ZGQ0YyMyIvPjxwYXRoIGQ9Ik03NS42MDU4IDQwLjgyMTlMNzUuNjQ0MiA0MC43NTUyQzc4LjE0ODEgMzYuNDE4MyA3OC42NDY1IDMxLjQ0ODggNzcuNDMwOSAyNi45MzgzQzc2LjIxNTMgMjIuNDI3OCA3My4yODQ3IDE4LjM3MTggNjguOTM1MiAxNS44NjA3QzY0LjU4NTggMTMuMzQ5NSA1OS42MDc5IDEyLjgzOTUgNTUuMDkzOSAxNC4wNDJDNTAuNTc5OSAxNS4yNDQ2IDQ2LjUyNTMgMTguMTYwOSA0NC4wMjE0IDIyLjQ5NzhMNDIuOTkxMSAyNC4yODI0QzQyLjM3MzkgMjUuMzUxNCA0Mi43NDQyIDI2LjcxNjMgNDMuODEzNCAyNy4zMzM2QzQ0Ljg4MjYgMjcuOTUwOSA0Ni4yNTE0IDI3LjU4NjIgNDYuODY2OSAyNi41MjAxTDQ3Ljg5NzMgMjQuNzM1NUM0OS43ODU3IDIxLjQ2NDcgNTIuODQ0MSAxOS4yNjczIDU2LjI1NDggMTguMzU4N0M1OS42NjU0IDE3LjQ1MDEgNjMuNDE5MSAxNy44MzI3IDY2LjY5OTQgMTkuNzI2NkM2OS45Nzk2IDIxLjYyMDQgNzIuMTg3OSAyNC42Nzk5IDczLjEwNjMgMjguMDg3OUM3NC4wMjQ4IDMxLjQ5NiA3My42NTEgMzUuMjQzNCA3MS43NjI2IDM4LjUxNDFMNzEuNzI0MSAzOC41ODA4TDcwLjczMzkgNDAuMjk1OEM3MC4xMTY3IDQxLjM2NDkgNzAuNDg3IDQyLjcyOTcgNzEuNTU2MiA0My4zNDdDNzIuNjI1NCA0My45NjQ0IDczLjk5NDIgNDMuNTk5NyA3NC42MDk4IDQyLjUzMzZMNzUuNTk5OSA0MC44MTg1TDc1LjYwNTggNDAuODIxOVoiIGZpbGw9IiMzRDRDNjYiLz48L3N2Zz4='; // crisp vector mark (was logo.png — pixelated when scaled)
8
+ const ASSETS_BASE_URL = "https://raw.githubusercontent.com/Final-Commerce/command-frame/refs/heads/main/src/demo/assets";
9
+ const logo = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OCAxMDQiIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01NS4yOTk4IDUwLjE2NjJMMzcuNzQyMiA0MC4wMjkzTDMxLjcyNzQgNTAuNDQ3MkwzOC45MjQyIDU0LjYwMjJMNTUuMjk5OCA1MC4xNjYyWiIgZmlsbD0iI0E1NjhCQyIvPjxwYXRoIGQ9Ik0zMS45OTYzIDcwLjQ1MDZMNDkuNTU2OCA4MC41ODkxTDU1LjU3MTUgNzAuMTcxM0w0OC4zNzE4IDY2LjAxNDVMMzEuOTk2MyA3MC40NTA2WiIgZmlsbD0iI0E1NjhCQyIvPjxwYXRoIGQ9Ik0zNi4zNTQyIDM0LjI1NzJDMzYuMzU0MiAzNC4yNTcyIDM2LjM1ODMgMzQuMjYzNSAzNi4zNTY3IDM0LjI2NjRDMzcuMTg2OSAzNC4wNjk3IDM4LjA5MTkgMzQuMTU5NiAzOC44ODUxIDM0LjYxNzVMNjIuNjQ4NiA0OC4zMzc0TDU0LjE3MjkgMjkuOTA0OUwzNi4zNDk2IDM0LjI1ODRMMzYuMzU0MiAzNC4yNTcyWiIgZmlsbD0iI0ZDODc1MyIvPjxwYXRoIGQ9Ik0zMy4wOTg4IDE4Ljk1MDdMMzYuMzc3MiAzNC4yNDczTDE4Ljc1MjUgMzkuMzM3M0wyOC45MzcxIDIxLjY5N0MyOS44NDUzIDIwLjEyMzkgMzEuNDE1MiAxOS4xNzYxIDMzLjA5ODggMTguOTUwN1oiIGZpbGw9IiM0MkQzQTkiLz48cGF0aCBkPSJNMTguNzUzMiAzOS4zNDA2TDIwLjY4MjQgNTkuNTE3MUw0LjU3NjA3IDYzLjg5NjJMMTguNzUzMiAzOS4zNDA2WiIgZmlsbD0iIzI3OTdFOCIvPjxwYXRoIGQ9Ik0zNi4zNzc5IDM0LjI0MDNDMzYuMzc3OSAzNC4yNDAzIDM2LjM3NzQgMzQuMjQ3OCAzNi4zODAzIDM0LjI0OTVDMzUuNTYyNCAzNC40OTE5IDM0LjgyMzkgMzUuMDE5NiAzNC4zNjczIDM1LjgxMDVMMjAuNjg2OSA1OS41MDU2TDE4Ljc1NzcgMzkuMzI5MUwzNi4zODI0IDM0LjIzOTFMMzYuMzc3OSAzNC4yNDAzWiIgZmlsbD0iIzFEQkFDQiIvPjxwYXRoIGQ9Ik01NS45MzUyIDEwMS41NDNMNTEuMDgxOSA4Ni42NjU5TDMzLjI1ODcgOTEuMDE5NEw1MC45NDk5IDEwMS4yMzNDNTIuNTI3NiAxMDIuMTQ0IDU0LjM2MzggMTAyLjE4NSA1NS45MzUyIDEwMS41NDNaIiBmaWxsPSIjRkQ1MjYzIi8+PHBhdGggZD0iTTMzLjI1NDkgOTEuMDE0TDI0Ljc4MjEgNzIuNTgzMkw4LjYzMTM1IDc2Ljc5NzVMMzMuMjU0OSA5MS4wMTRaIiBmaWxsPSIjRkZDRjIzIi8+PHBhdGggZD0iTTUxLjA3OSA4Ni42NjM5QzUxLjA3OSA4Ni42NjM5IDUxLjA3NDkgODYuNjU3NiA1MS4wNzY2IDg2LjY1NDdDNTAuMjQ2NCA4Ni44NTE0IDQ5LjM0MTQgODYuNzYxNSA0OC41NDgyIDg2LjMwMzZMMjQuNzg0NiA3Mi41ODM3TDMzLjI2MDQgOTEuMDE2MUw1MS4wODM2IDg2LjY2MjdMNTEuMDc5IDg2LjY2MzlaIiBmaWxsPSIjRkM4NzUzIi8+PHBhdGggZD0iTTU0LjMzNDIgMTAxLjk2OUw1MS4wNTU4IDg2LjY3MjRMNjguNjgwNSA4MS41ODI0TDU4LjQ5NTkgOTkuMjIyN0M1Ny41ODc3IDEwMC43OTYgNTYuMDE3OCAxMDEuNzQ0IDU0LjMzNDIgMTAxLjk2OVoiIGZpbGw9IiM0MkQzQTkiLz48cGF0aCBkPSJNNjguNjgwMSA4MS41ODk5TDY2Ljc0OTMgNjEuNDE2Mkw4Mi44NTU2IDU3LjAzNzJMNjguNjgwMSA4MS41ODk5WiIgZmlsbD0iIzI3OTdFOCIvPjxwYXRoIGQ9Ik01MS4wNTU3IDg2LjY3ODZDNTEuMDU1NyA4Ni42Nzg2IDUxLjA1NjIgODYuNjcxMSA1MS4wNTMyIDg2LjY2OTVDNTEuODcxMSA4Ni40MjcxIDUyLjYwOTcgODUuODk5NCA1My4wNjYzIDg1LjEwODVMNjYuNzQ2NyA2MS40MTMzTDY4LjY3NTkgODEuNTg5OEw1MS4wNTExIDg2LjY3OThMNTEuMDU1NyA4Ni42Nzg2WiIgZmlsbD0iIzFEQkFDQiIvPjxwYXRoIGQ9Ik00Ny44OTQ5IDI2LjI3NjhDNDcuODc4IDI2LjM1OTcgNDcuODUyIDI2LjQ0NTEgNDcuODA2OCAyNi41MjM0TDQ3LjYyNzggMjYuODMzM0M0Ni43ODY1IDI4LjI5MDYgNDQuOTIzMiAyOC43ODY5IDQzLjQ2MTggMjcuOTQzMkM0Mi4wMDA0IDI3LjA5OTQgNDEuNDk4NiAyNS4yMzc2IDQyLjMzOTkgMjMuNzgwNEw0Mi41MTg5IDIzLjQ3MDRDNDIuNTY0MSAyMy4zOTIyIDQyLjYyNSAyMy4zMjY5IDQyLjY4ODQgMjMuMjcwOEwzNi40ODUzIDE5LjY4OTRDMzQuOTA3NiAxOC43Nzg2IDMzLjA3MTQgMTguNzM4MiAzMS41IDE5LjM3OTlMMzYuMzUzMyAzNC4yNTY5TDU0LjE3NjUgMjkuOTAzNUw0Ny44OTQ5IDI2LjI3NjhaIiBmaWxsPSIjRkQ1MjYzIi8+PHBhdGggZD0iTTc1LjYzODYgNDIuMzAyN0M3NS42MjE3IDQyLjM4NTcgNzUuNTk1NiA0Mi40NzExIDc1LjU1MDUgNDIuNTQ5M0w3NS4zNzE1IDQyLjg1OTNDNzQuNTMwMiA0NC4zMTY1IDcyLjY2NjkgNDQuODEyOSA3MS4yMDU0IDQzLjk2OTFDNjkuNzQ0IDQzLjEyNTQgNjkuMjQyMyA0MS4yNjM2IDcwLjA4MzYgMzkuODA2M0w3MC4yNjI2IDM5LjQ5NjNDNzAuMzA3NyAzOS40MTgxIDcwLjM2ODYgMzkuMzUyOSA3MC40MzIgMzkuMjk2N0w1NC4xNzYxIDI5LjkxMTRMNjIuNjUxOSA0OC4zNDM5TDc4LjgwMjYgNDQuMTI5NUw3NS42NDE1IDQyLjMwNDRMNzUuNjM4NiA0Mi4zMDI3WiIgZmlsbD0iI0ZGQ0YyMyIvPjxwYXRoIGQ9Ik03NS42MDU4IDQwLjgyMTlMNzUuNjQ0MiA0MC43NTUyQzc4LjE0ODEgMzYuNDE4MyA3OC42NDY1IDMxLjQ0ODggNzcuNDMwOSAyNi45MzgzQzc2LjIxNTMgMjIuNDI3OCA3My4yODQ3IDE4LjM3MTggNjguOTM1MiAxNS44NjA3QzY0LjU4NTggMTMuMzQ5NSA1OS42MDc5IDEyLjgzOTUgNTUuMDkzOSAxNC4wNDJDNTAuNTc5OSAxNS4yNDQ2IDQ2LjUyNTMgMTguMTYwOSA0NC4wMjE0IDIyLjQ5NzhMNDIuOTkxMSAyNC4yODI0QzQyLjM3MzkgMjUuMzUxNCA0Mi43NDQyIDI2LjcxNjMgNDMuODEzNCAyNy4zMzM2QzQ0Ljg4MjYgMjcuOTUwOSA0Ni4yNTE0IDI3LjU4NjIgNDYuODY2OSAyNi41MjAxTDQ3Ljg5NzMgMjQuNzM1NUM0OS43ODU3IDIxLjQ2NDcgNTIuODQ0MSAxOS4yNjczIDU2LjI1NDggMTguMzU4N0M1OS42NjU0IDE3LjQ1MDEgNjMuNDE5MSAxNy44MzI3IDY2LjY5OTQgMTkuNzI2NkM2OS45Nzk2IDIxLjYyMDQgNzIuMTg3OSAyNC42Nzk5IDczLjEwNjMgMjguMDg3OUM3NC4wMjQ4IDMxLjQ5NiA3My42NTEgMzUuMjQzNCA3MS43NjI2IDM4LjUxNDFMNzEuNzI0MSAzOC41ODA4TDcwLjczMzkgNDAuMjk1OEM3MC4xMTY3IDQxLjM2NDkgNzAuNDg3IDQyLjcyOTcgNzEuNTU2MiA0My4zNDdDNzIuNjI1NCA0My45NjQ0IDczLjk5NDIgNDMuNTk5NyA3NC42MDk4IDQyLjUzMzZMNzUuNTk5OSA0MC44MTg1TDc1LjYwNTggNDAuODIxOVoiIGZpbGw9IiMzRDRDNjYiLz48L3N2Zz4="; // crisp vector mark (was logo.png — pixelated when scaled)
10
10
  const basilAlmondImg = `${ASSETS_BASE_URL}/basil-almond-paste.png`;
11
11
  const beerImg = `${ASSETS_BASE_URL}/beer-paste.png`;
12
12
  const beetImg = `${ASSETS_BASE_URL}/beet-paste.png`;
@@ -19,57 +19,57 @@ const redPepperImg = `${ASSETS_BASE_URL}/red-pepper-paste.png`;
19
19
  const roastedTomatoImg = `${ASSETS_BASE_URL}/roasted-tomato-paste.png`;
20
20
  // --- COMPANY ---
21
21
  export const MOCK_COMPANY = {
22
- id: 'comp_paste_demo',
23
- name: 'Paste Demo Company',
22
+ id: "comp_paste_demo",
23
+ name: "Paste Demo Company",
24
24
  logo: logo,
25
25
  settings: {
26
- currencyPrefix: '$',
27
- currencySuffix: '',
26
+ currencyPrefix: "$",
27
+ currencySuffix: "",
28
28
  minorUnits: 2,
29
- currencySymbol: '$',
30
- decimalSeparator: '.',
31
- thousandSeparator: ',',
32
- decimals: { $numberInt: '2' },
33
- },
29
+ currencySymbol: "$",
30
+ decimalSeparator: ".",
31
+ thousandSeparator: ",",
32
+ decimals: { $numberInt: "2" }
33
+ }
34
34
  };
35
35
  // --- OUTLETS ---
36
36
  export const MOCK_OUTLET_MAIN = {
37
- id: 'outlet_main',
38
- _id: 'outlet_main',
39
- name: 'Main Kitchen',
40
- address: '123 Pasta Lane',
41
- address2: 'Suite 1',
42
- city: 'Rome',
43
- state: 'RM',
44
- country: 'IT',
45
- taxId: 'TAX-IT-001',
46
- postCode: '00100',
37
+ id: "outlet_main",
38
+ _id: "outlet_main",
39
+ name: "Main Kitchen",
40
+ address: "123 Pasta Lane",
41
+ address2: "Suite 1",
42
+ city: "Rome",
43
+ state: "RM",
44
+ country: "IT",
45
+ taxId: "TAX-IT-001",
46
+ postCode: "00100",
47
47
  sequenceNumber: 1,
48
- stripeAccountId: 'acct_paste_main',
48
+ stripeAccountId: "acct_paste_main"
49
49
  };
50
50
  // --- STATIONS ---
51
51
  export const MOCK_STATION_1 = {
52
- _id: 'station_counter_1',
53
- name: 'Counter 1',
54
- status: 'open',
52
+ _id: "station_counter_1",
53
+ name: "Counter 1",
54
+ status: "open",
55
55
  sequenceNumber: 1,
56
- stripeTerminalId: 'tm_1',
56
+ stripeTerminalId: "tm_1"
57
57
  };
58
58
  export const MOCK_STATION_2 = {
59
- _id: 'station_counter_2',
60
- name: 'Counter 2',
61
- status: 'open',
59
+ _id: "station_counter_2",
60
+ name: "Counter 2",
61
+ status: "open",
62
62
  sequenceNumber: 2,
63
- stripeTerminalId: 'tm_2',
63
+ stripeTerminalId: "tm_2"
64
64
  };
65
65
  // --- SESSION (cash register) ---
66
66
  export const MOCK_SESSION = {
67
- id: 'sess_mock_1',
67
+ id: "sess_mock_1",
68
68
  stationId: MOCK_STATION_1._id,
69
69
  openingAmount: 100,
70
- openedBy: 'user_mario',
70
+ openedBy: "user_mario",
71
71
  currency: CurrencyCode.USD,
72
- minorUnits: 2,
72
+ minorUnits: 2
73
73
  };
74
74
  // --- ACTIVE REFUND DETAILS (refund UI state) ---
75
75
  export const MOCK_ACTIVE_REFUND_DETAILS = {
@@ -78,139 +78,139 @@ export const MOCK_ACTIVE_REFUND_DETAILS = {
78
78
  refundAmounts: {},
79
79
  currentRefundTotal: 0,
80
80
  amountRemaining: null,
81
- isRefund: true,
81
+ isRefund: true
82
82
  };
83
83
  // --- USERS ---
84
84
  export const MOCK_USER_MARIO = {
85
- id: 'user_mario',
86
- firstName: 'Mario',
87
- lastName: 'Demoji',
85
+ id: "user_mario",
86
+ firstName: "Mario",
87
+ lastName: "Demoji",
88
88
  type: CFUserTypes.MANAGER,
89
89
  role: {
90
- id: 'role_manager',
91
- name: 'Manager',
92
- permissions: [],
90
+ id: "role_manager",
91
+ name: "Manager",
92
+ permissions: []
93
93
  },
94
94
  outlets: [MOCK_OUTLET_MAIN.id],
95
- companies: [MOCK_COMPANY.id],
95
+ companies: [MOCK_COMPANY.id]
96
96
  };
97
97
  export const MOCK_USER_LUIGI = {
98
- id: 'user_luigi',
99
- firstName: 'Luigi',
100
- lastName: 'Demoji',
98
+ id: "user_luigi",
99
+ firstName: "Luigi",
100
+ lastName: "Demoji",
101
101
  type: CFUserTypes.CASHIER,
102
102
  role: {
103
- id: 'role_cashier',
104
- name: 'Cashier',
105
- permissions: [],
103
+ id: "role_cashier",
104
+ name: "Cashier",
105
+ permissions: []
106
106
  },
107
107
  outlets: [MOCK_OUTLET_MAIN.id],
108
- companies: [MOCK_COMPANY.id],
108
+ companies: [MOCK_COMPANY.id]
109
109
  };
110
110
  // --- CUSTOMERS ---
111
111
  export const MOCK_CUSTOMER_1 = {
112
- _id: 'cust_giuseppe',
112
+ _id: "cust_giuseppe",
113
113
  companyId: MOCK_COMPANY.id,
114
- email: 'giuseppe@example.com',
115
- firstName: 'Giuseppe',
116
- lastName: 'Verdi',
117
- phone: '555-0101',
114
+ email: "giuseppe@example.com",
115
+ firstName: "Giuseppe",
116
+ lastName: "Verdi",
117
+ phone: "555-0101",
118
118
  billing: {
119
- firstName: 'Giuseppe',
120
- lastName: 'Verdi',
121
- address1: 'Via Roma 1',
122
- address2: '',
123
- city: 'Milano',
124
- postCode: '20100',
125
- country: 'IT',
119
+ firstName: "Giuseppe",
120
+ lastName: "Verdi",
121
+ address1: "Via Roma 1",
122
+ address2: "",
123
+ city: "Milano",
124
+ postCode: "20100",
125
+ country: "IT"
126
126
  },
127
- shipping: null,
127
+ shipping: null
128
128
  };
129
129
  export const MOCK_CUSTOMER_2 = {
130
- _id: 'cust_sofia',
130
+ _id: "cust_sofia",
131
131
  companyId: MOCK_COMPANY.id,
132
- email: 'sofia@example.com',
133
- firstName: 'Sofia',
134
- lastName: 'Loren',
135
- phone: '555-0102',
132
+ email: "sofia@example.com",
133
+ firstName: "Sofia",
134
+ lastName: "Loren",
135
+ phone: "555-0102",
136
136
  billing: null,
137
- shipping: null,
137
+ shipping: null
138
138
  };
139
139
  export const MOCK_CUSTOMER_3 = {
140
- _id: 'cust_alessandro',
140
+ _id: "cust_alessandro",
141
141
  companyId: MOCK_COMPANY.id,
142
- email: 'alessandro@example.com',
143
- firstName: 'Alessandro',
144
- lastName: 'Volta',
145
- phone: '555-0103',
142
+ email: "alessandro@example.com",
143
+ firstName: "Alessandro",
144
+ lastName: "Volta",
145
+ phone: "555-0103",
146
146
  billing: null,
147
- shipping: null,
147
+ shipping: null
148
148
  };
149
149
  export const MOCK_CUSTOMER_4 = {
150
- _id: 'cust_isabella',
150
+ _id: "cust_isabella",
151
151
  companyId: MOCK_COMPANY.id,
152
- email: 'isabella@example.com',
153
- firstName: 'Isabella',
154
- lastName: 'Rossellini',
155
- phone: '555-0104',
152
+ email: "isabella@example.com",
153
+ firstName: "Isabella",
154
+ lastName: "Rossellini",
155
+ phone: "555-0104",
156
156
  billing: null,
157
- shipping: null,
157
+ shipping: null
158
158
  };
159
159
  export const MOCK_CUSTOMER_5 = {
160
- _id: 'cust_leonardo',
160
+ _id: "cust_leonardo",
161
161
  companyId: MOCK_COMPANY.id,
162
- email: 'leonardo@example.com',
163
- firstName: 'Leonardo',
164
- lastName: 'Da Vinci',
165
- phone: '555-0105',
162
+ email: "leonardo@example.com",
163
+ firstName: "Leonardo",
164
+ lastName: "Da Vinci",
165
+ phone: "555-0105",
166
166
  billing: null,
167
- shipping: null,
167
+ shipping: null
168
168
  };
169
169
  // --- CATEGORIES ---
170
170
  export const MOCK_CATEGORY_PASTES = {
171
- id: 'cat_pastes',
172
- createdAt: '2024-01-01T00:00:00.000Z',
173
- updatedAt: '2024-01-01T00:00:00.000Z',
174
- name: 'Pastes',
175
- externalId: 'ext_cat_pastes',
171
+ id: "cat_pastes",
172
+ createdAt: "2024-01-01T00:00:00.000Z",
173
+ updatedAt: "2024-01-01T00:00:00.000Z",
174
+ name: "Pastes",
175
+ externalId: "ext_cat_pastes",
176
176
  companyId: MOCK_COMPANY.id,
177
177
  };
178
178
  export const MOCK_CATEGORY_SPECIALTY = {
179
- id: 'cat_specialty',
180
- createdAt: '2024-01-01T00:00:00.000Z',
181
- updatedAt: '2024-01-01T00:00:00.000Z',
182
- name: 'Specialty',
183
- externalId: 'ext_cat_specialty',
179
+ id: "cat_specialty",
180
+ createdAt: "2024-01-01T00:00:00.000Z",
181
+ updatedAt: "2024-01-01T00:00:00.000Z",
182
+ name: "Specialty",
183
+ externalId: "ext_cat_specialty",
184
184
  companyId: MOCK_COMPANY.id,
185
- parentId: 'cat_pastes',
185
+ parentId: "cat_pastes"
186
186
  };
187
187
  export const MOCK_CATEGORY_BASIC = {
188
- id: 'cat_basic',
189
- createdAt: '2024-01-01T00:00:00.000Z',
190
- updatedAt: '2024-01-01T00:00:00.000Z',
191
- name: 'Basic',
192
- externalId: 'ext_cat_basic',
188
+ id: "cat_basic",
189
+ createdAt: "2024-01-01T00:00:00.000Z",
190
+ updatedAt: "2024-01-01T00:00:00.000Z",
191
+ name: "Basic",
192
+ externalId: "ext_cat_basic",
193
193
  companyId: MOCK_COMPANY.id,
194
- parentId: 'cat_pastes',
194
+ parentId: "cat_pastes"
195
195
  };
196
196
  export const MOCK_CATEGORY_VEGAN = {
197
- id: 'cat_vegan',
198
- createdAt: '2024-01-01T00:00:00.000Z',
199
- updatedAt: '2024-01-01T00:00:00.000Z',
200
- name: 'Vegan',
201
- externalId: 'ext_cat_vegan',
197
+ id: "cat_vegan",
198
+ createdAt: "2024-01-01T00:00:00.000Z",
199
+ updatedAt: "2024-01-01T00:00:00.000Z",
200
+ name: "Vegan",
201
+ externalId: "ext_cat_vegan",
202
202
  companyId: MOCK_COMPANY.id,
203
203
  };
204
204
  export const MOCK_CATEGORY_SPICY = {
205
- id: 'cat_spicy',
206
- createdAt: '2024-01-01T00:00:00.000Z',
207
- updatedAt: '2024-01-01T00:00:00.000Z',
208
- name: 'Spicy',
209
- externalId: 'ext_cat_spicy',
205
+ id: "cat_spicy",
206
+ createdAt: "2024-01-01T00:00:00.000Z",
207
+ updatedAt: "2024-01-01T00:00:00.000Z",
208
+ name: "Spicy",
209
+ externalId: "ext_cat_spicy",
210
210
  companyId: MOCK_COMPANY.id,
211
211
  };
212
212
  // --- PRODUCTS ---
213
- const createInventory = (stock) => [{ warehouse: 'main', outletId: MOCK_OUTLET_MAIN.id, stock }];
213
+ const createInventory = (stock) => [{ warehouse: "main", outletId: MOCK_OUTLET_MAIN.id, stock }];
214
214
  // Helper for Simple Product
215
215
  const createSimpleProduct = (id, name, price, image, categories, description) => {
216
216
  const sku = `SKU-${id.toUpperCase()}`;
@@ -224,12 +224,12 @@ const createSimpleProduct = (id, name, price, image, categories, description) =>
224
224
  minorUnits: 2,
225
225
  minPrice: price,
226
226
  maxPrice: price,
227
- status: 'active',
227
+ status: "active",
228
228
  productType: CFProductType.SIMPLE,
229
- taxTable: 'tax_standard',
229
+ taxTable: "tax_standard",
230
230
  description,
231
231
  images: [image],
232
- categories: categories.map((c) => ({ name: c.name, externalId: c.externalId ?? c.id })),
232
+ categories: categories.map(c => ({ name: c.name, externalId: c.externalId ?? c.id })),
233
233
  attributes: [],
234
234
  variants: [
235
235
  {
@@ -241,9 +241,9 @@ const createSimpleProduct = (id, name, price, image, categories, description) =>
241
241
  manageStock: true,
242
242
  externalId: `ext_${id}_var`,
243
243
  attributes: [],
244
- inventory: createInventory(100),
245
- },
246
- ],
244
+ inventory: createInventory(100)
245
+ }
246
+ ]
247
247
  };
248
248
  };
249
249
  // Helper for Variable Product (Size: Small, Large)
@@ -259,13 +259,13 @@ const createVariableProduct = (id, name, basePrice, largePrice, image, categorie
259
259
  minorUnits: 2,
260
260
  minPrice: basePrice,
261
261
  maxPrice: largePrice,
262
- status: 'active',
262
+ status: "active",
263
263
  productType: CFProductType.VARIABLE,
264
- taxTable: 'tax_standard',
264
+ taxTable: "tax_standard",
265
265
  description,
266
266
  images: [image],
267
- categories: categories.map((c) => ({ name: c.name, externalId: c.externalId ?? c.id })),
268
- attributes: [{ name: 'Size', values: ['Small', 'Large'] }],
267
+ categories: categories.map(c => ({ name: c.name, externalId: c.externalId ?? c.id })),
268
+ attributes: [{ name: "Size", values: ["Small", "Large"] }],
269
269
  variants: [
270
270
  {
271
271
  _id: `${id}_var_small`,
@@ -275,8 +275,8 @@ const createVariableProduct = (id, name, basePrice, largePrice, image, categorie
275
275
  isOnSale: false,
276
276
  manageStock: true,
277
277
  externalId: `ext_${id}_var_s`,
278
- attributes: [{ name: 'Size', value: 'Small' }],
279
- inventory: createInventory(50),
278
+ attributes: [{ name: "Size", value: "Small" }],
279
+ inventory: createInventory(50)
280
280
  },
281
281
  {
282
282
  _id: `${id}_var_large`,
@@ -286,30 +286,30 @@ const createVariableProduct = (id, name, basePrice, largePrice, image, categorie
286
286
  isOnSale: false,
287
287
  manageStock: true,
288
288
  externalId: `ext_${id}_var_l`,
289
- attributes: [{ name: 'Size', value: 'Large' }],
290
- inventory: createInventory(30),
291
- },
292
- ],
289
+ attributes: [{ name: "Size", value: "Large" }],
290
+ inventory: createInventory(30)
291
+ }
292
+ ]
293
293
  };
294
294
  };
295
- export const MOCK_PRODUCT_BASIL_ALMOND = createSimpleProduct('prod_basil_almond', 'Basil Almond Paste', 1200, basilAlmondImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], 'A rich blend of fresh basil and roasted almonds.');
296
- export const MOCK_PRODUCT_BEER = createVariableProduct('prod_beer', 'Beer Paste', 1500, 2500, beerImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY], 'Unique paste infused with dark lager.');
297
- export const MOCK_PRODUCT_BEET = createSimpleProduct('prod_beet', 'Beet Paste', 1000, beetImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], 'Earthy and sweet beet paste, perfect for salads.');
298
- export const MOCK_PRODUCT_CARAMELIZED = createVariableProduct('prod_caramelized', 'Caramelized Paste', 1400, 2200, caramelizedImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], 'Slow-cooked caramelized onion paste.');
299
- export const MOCK_PRODUCT_GARLIC_ONION = createVariableProduct('prod_garlic_onion', 'Garlic Onion Paste', 1100, 1800, garlicOnionImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], 'Classic savory base for any dish.');
300
- export const MOCK_PRODUCT_GARLIC = createSimpleProduct('prod_garlic', 'Garlic Paste', 900, garlicImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], 'Pure, intense garlic paste.');
301
- export const MOCK_PRODUCT_GINGER_LIME = createVariableProduct('prod_ginger_lime', 'Ginger Lime Paste', 1300, 2000, gingerLimeImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], 'Zesty and spicy, great for asian cuisine.');
302
- export const MOCK_PRODUCT_LEMON = createSimpleProduct('prod_lemon', 'Lemon Paste', 1050, lemonImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], 'Bright citrus flavor concentrate.');
303
- export const MOCK_PRODUCT_RED_PEPPER = createVariableProduct('prod_red_pepper', 'Red Pepper Paste', 1250, 1900, redPepperImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], 'Roasted red peppers with a hint of spice.');
304
- export const MOCK_PRODUCT_ROASTED_TOMATO = createVariableProduct('prod_roasted_tomato', 'Roasted Tomato Paste', 1150, 1850, roastedTomatoImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], 'Deep, umami-rich tomato flavor.');
305
- export const MOCK_PRODUCT_MINT_LEMON = createSimpleProduct('prod_mint_lemon', 'Mint Lemon Paste', 1200, lemonImg, // Reusing lemon image for now
306
- [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], 'Refreshing mint and lemon blend.');
307
- export const MOCK_PRODUCT_CHILI_GARLIC = createVariableProduct('prod_chili_garlic', 'Chili Garlic Paste', 1050, 1650, redPepperImg, // Reusing red pepper image
308
- [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], 'Spicy garlic paste with chili flakes.');
309
- export const MOCK_PRODUCT_HABANERO = createSimpleProduct('prod_habanero', 'Habanero Paste', 1400, redPepperImg, // Reusing red pepper image
310
- [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], 'Extremely spicy habanero concentrate.');
311
- export const MOCK_PRODUCT_BLACK_GARLIC = createSimpleProduct('prod_black_garlic', 'Black Garlic Paste', 1800, garlicImg, // Reusing garlic image
312
- [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], 'Fermented black garlic paste, sweet and savory.');
295
+ export const MOCK_PRODUCT_BASIL_ALMOND = createSimpleProduct("prod_basil_almond", "Basil Almond Paste", 1200, basilAlmondImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], "A rich blend of fresh basil and roasted almonds.");
296
+ export const MOCK_PRODUCT_BEER = createVariableProduct("prod_beer", "Beer Paste", 1500, 2500, beerImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY], "Unique paste infused with dark lager.");
297
+ export const MOCK_PRODUCT_BEET = createSimpleProduct("prod_beet", "Beet Paste", 1000, beetImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], "Earthy and sweet beet paste, perfect for salads.");
298
+ export const MOCK_PRODUCT_CARAMELIZED = createVariableProduct("prod_caramelized", "Caramelized Paste", 1400, 2200, caramelizedImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], "Slow-cooked caramelized onion paste.");
299
+ export const MOCK_PRODUCT_GARLIC_ONION = createVariableProduct("prod_garlic_onion", "Garlic Onion Paste", 1100, 1800, garlicOnionImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], "Classic savory base for any dish.");
300
+ export const MOCK_PRODUCT_GARLIC = createSimpleProduct("prod_garlic", "Garlic Paste", 900, garlicImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], "Pure, intense garlic paste.");
301
+ export const MOCK_PRODUCT_GINGER_LIME = createVariableProduct("prod_ginger_lime", "Ginger Lime Paste", 1300, 2000, gingerLimeImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], "Zesty and spicy, great for asian cuisine.");
302
+ export const MOCK_PRODUCT_LEMON = createSimpleProduct("prod_lemon", "Lemon Paste", 1050, lemonImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], "Bright citrus flavor concentrate.");
303
+ export const MOCK_PRODUCT_RED_PEPPER = createVariableProduct("prod_red_pepper", "Red Pepper Paste", 1250, 1900, redPepperImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], "Roasted red peppers with a hint of spice.");
304
+ export const MOCK_PRODUCT_ROASTED_TOMATO = createVariableProduct("prod_roasted_tomato", "Roasted Tomato Paste", 1150, 1850, roastedTomatoImg, [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN], "Deep, umami-rich tomato flavor.");
305
+ export const MOCK_PRODUCT_MINT_LEMON = createSimpleProduct("prod_mint_lemon", "Mint Lemon Paste", 1200, lemonImg, // Reusing lemon image for now
306
+ [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], "Refreshing mint and lemon blend.");
307
+ export const MOCK_PRODUCT_CHILI_GARLIC = createVariableProduct("prod_chili_garlic", "Chili Garlic Paste", 1050, 1650, redPepperImg, // Reusing red pepper image
308
+ [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], "Spicy garlic paste with chili flakes.");
309
+ export const MOCK_PRODUCT_HABANERO = createSimpleProduct("prod_habanero", "Habanero Paste", 1400, redPepperImg, // Reusing red pepper image
310
+ [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPICY, MOCK_CATEGORY_VEGAN], "Extremely spicy habanero concentrate.");
311
+ export const MOCK_PRODUCT_BLACK_GARLIC = createSimpleProduct("prod_black_garlic", "Black Garlic Paste", 1800, garlicImg, // Reusing garlic image
312
+ [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_VEGAN], "Fermented black garlic paste, sweet and savory.");
313
313
  // --- ORDERS ---
314
314
  // Helper to create line item
315
315
  const createLineItem = (product, variantIndex = 0, quantity = 1) => {
@@ -323,30 +323,30 @@ const createLineItem = (product, variantIndex = 0, quantity = 1) => {
323
323
  taxes: [],
324
324
  discount: {
325
325
  itemDiscounts: [],
326
- cartDiscount: { percentage: 0, amount: 0 },
326
+ cartDiscount: { percentage: 0, amount: 0 }
327
327
  },
328
328
  fee: { itemFees: [] },
329
329
  totalTax: 0,
330
330
  total: variant.price * quantity,
331
331
  lineNetWithFees: variant.price * quantity,
332
332
  metadata: [],
333
- image: product.images?.[0] || '',
333
+ image: product.images?.[0] || "",
334
334
  sku: variant.sku,
335
335
  stock: variant.inventory?.[0]?.stock || 0,
336
- attributes: variant.attributes.map((a) => `${a.name}: ${a.value}`).join(', '),
336
+ attributes: variant.attributes.map(a => `${a.name}: ${a.value}`).join(", ")
337
337
  };
338
338
  };
339
339
  export const MOCK_ORDER_1 = {
340
- _id: 'order_1001',
340
+ _id: "order_1001",
341
341
  currency: CurrencyCode.USD,
342
342
  minorUnits: 2,
343
- receiptId: '1001-0001',
343
+ receiptId: "1001-0001",
344
344
  companyId: MOCK_COMPANY.id,
345
345
  externalId: null,
346
- status: 'completed',
347
- paymentState: 'paid',
348
- fulfillmentState: 'fulfilled',
349
- displayState: 'Completed',
346
+ status: "completed",
347
+ paymentState: "paid",
348
+ fulfillmentState: "fulfilled",
349
+ displayState: "Completed",
350
350
  customer: MOCK_CUSTOMER_1,
351
351
  summary: {
352
352
  total: 2100,
@@ -355,26 +355,26 @@ export const MOCK_ORDER_1 = {
355
355
  shippingTotal: 0,
356
356
  totalTaxes: 0,
357
357
  taxes: [],
358
- isTaxInclusive: false,
358
+ isTaxInclusive: false
359
359
  },
360
360
  cartDiscount: null,
361
361
  cartFees: [],
362
362
  paymentMethods: [
363
363
  {
364
- transactionId: 'trans_cash_1',
365
- paymentType: 'cash',
364
+ transactionId: "trans_cash_1",
365
+ paymentType: "cash",
366
366
  amount: 2100,
367
367
  timestamp: new Date().toISOString(),
368
- processor: 'cash',
369
- },
368
+ processor: "cash"
369
+ }
370
370
  ],
371
- source: 'pos',
371
+ source: "pos",
372
372
  posData: {
373
373
  outlet: MOCK_OUTLET_MAIN.id,
374
374
  station: MOCK_STATION_1._id,
375
- employee: MOCK_USER_LUIGI.id,
375
+ employee: MOCK_USER_LUIGI.id
376
376
  },
377
- sessionId: 'sess_1',
377
+ sessionId: "sess_1",
378
378
  metadata: [],
379
379
  billing: MOCK_CUSTOMER_1.billing || null,
380
380
  shipping: null,
@@ -384,19 +384,19 @@ export const MOCK_ORDER_1 = {
384
384
  user: MOCK_USER_LUIGI,
385
385
  outlet: MOCK_OUTLET_MAIN,
386
386
  station: MOCK_STATION_1,
387
- createdAt: new Date().toISOString(),
387
+ createdAt: new Date().toISOString()
388
388
  };
389
389
  export const MOCK_ORDER_2 = {
390
- _id: 'order_1002',
390
+ _id: "order_1002",
391
391
  currency: CurrencyCode.USD,
392
392
  minorUnits: 2,
393
- receiptId: '1001-0002',
393
+ receiptId: "1001-0002",
394
394
  companyId: MOCK_COMPANY.id,
395
395
  externalId: null,
396
- status: 'completed',
397
- paymentState: 'paid',
398
- fulfillmentState: 'fulfilled',
399
- displayState: 'Completed',
396
+ status: "completed",
397
+ paymentState: "paid",
398
+ fulfillmentState: "fulfilled",
399
+ displayState: "Completed",
400
400
  customer: MOCK_CUSTOMER_2,
401
401
  summary: {
402
402
  total: 3000,
@@ -405,26 +405,26 @@ export const MOCK_ORDER_2 = {
405
405
  shippingTotal: 0,
406
406
  totalTaxes: 0,
407
407
  taxes: [],
408
- isTaxInclusive: false,
408
+ isTaxInclusive: false
409
409
  },
410
410
  cartDiscount: null,
411
411
  cartFees: [],
412
412
  paymentMethods: [
413
413
  {
414
- transactionId: 'trans_card_1',
415
- paymentType: 'credit_card',
414
+ transactionId: "trans_card_1",
415
+ paymentType: "credit_card",
416
416
  amount: 3000,
417
417
  timestamp: new Date(Date.now() - 3600000).toISOString(),
418
- processor: 'stripe',
419
- },
418
+ processor: "stripe"
419
+ }
420
420
  ],
421
- source: 'pos',
421
+ source: "pos",
422
422
  posData: {
423
423
  outlet: MOCK_OUTLET_MAIN.id,
424
424
  station: MOCK_STATION_2._id,
425
- employee: MOCK_USER_MARIO.id,
425
+ employee: MOCK_USER_MARIO.id
426
426
  },
427
- sessionId: 'sess_2',
427
+ sessionId: "sess_2",
428
428
  metadata: [],
429
429
  billing: null,
430
430
  shipping: null,
@@ -434,19 +434,19 @@ export const MOCK_ORDER_2 = {
434
434
  user: MOCK_USER_MARIO,
435
435
  outlet: MOCK_OUTLET_MAIN,
436
436
  station: MOCK_STATION_2,
437
- createdAt: new Date(Date.now() - 3600000).toISOString(),
437
+ createdAt: new Date(Date.now() - 3600000).toISOString()
438
438
  };
439
439
  export const MOCK_ORDER_3 = {
440
- _id: 'order_1003',
440
+ _id: "order_1003",
441
441
  currency: CurrencyCode.USD,
442
442
  minorUnits: 2,
443
- receiptId: '1001-0003',
443
+ receiptId: "1001-0003",
444
444
  companyId: MOCK_COMPANY.id,
445
445
  externalId: null,
446
- status: 'refunded',
447
- paymentState: 'refunded',
448
- fulfillmentState: 'fulfilled',
449
- displayState: 'Refunded',
446
+ status: "refunded",
447
+ paymentState: "refunded",
448
+ fulfillmentState: "fulfilled",
449
+ displayState: "Refunded",
450
450
  customer: MOCK_CUSTOMER_3,
451
451
  summary: {
452
452
  total: 1500,
@@ -455,26 +455,26 @@ export const MOCK_ORDER_3 = {
455
455
  shippingTotal: 0,
456
456
  totalTaxes: 0,
457
457
  taxes: [],
458
- isTaxInclusive: false,
458
+ isTaxInclusive: false
459
459
  },
460
460
  cartDiscount: null,
461
461
  cartFees: [],
462
462
  paymentMethods: [
463
463
  {
464
- transactionId: 'trans_card_2',
465
- paymentType: 'credit_card',
464
+ transactionId: "trans_card_2",
465
+ paymentType: "credit_card",
466
466
  amount: 1500,
467
467
  timestamp: new Date(Date.now() - 7200000).toISOString(),
468
- processor: 'stripe',
469
- },
468
+ processor: "stripe"
469
+ }
470
470
  ],
471
- source: 'pos',
471
+ source: "pos",
472
472
  posData: {
473
473
  outlet: MOCK_OUTLET_MAIN.id,
474
474
  station: MOCK_STATION_1._id,
475
- employee: MOCK_USER_MARIO.id,
475
+ employee: MOCK_USER_MARIO.id
476
476
  },
477
- sessionId: 'sess_3',
477
+ sessionId: "sess_3",
478
478
  metadata: [],
479
479
  billing: null,
480
480
  shipping: null,
@@ -484,72 +484,19 @@ export const MOCK_ORDER_3 = {
484
484
  user: MOCK_USER_MARIO,
485
485
  outlet: MOCK_OUTLET_MAIN,
486
486
  station: MOCK_STATION_1,
487
- createdAt: new Date(Date.now() - 7200000).toISOString(),
488
- };
489
- // Open order with one captured deposit leg — voidable via the refund branch
490
- // (demoes voidOrder's `refunded` outcome). Copied from MOCK_ORDER_1, id/state/
491
- // paymentMethods changed.
492
- export const MOCK_ORDER_4 = {
493
- _id: 'order_1004',
494
- currency: CurrencyCode.USD,
495
- minorUnits: 2,
496
- receiptId: '1001-0004',
497
- companyId: MOCK_COMPANY.id,
498
- externalId: null,
499
- status: 'in_progress',
500
- paymentState: 'partially_paid',
501
- fulfillmentState: 'pending',
502
- displayState: 'Partially Paid',
503
- customer: MOCK_CUSTOMER_5,
504
- summary: {
505
- total: 2500,
506
- subtotalAfterFees: 2500,
507
- discountTotal: 0,
508
- shippingTotal: 0,
509
- totalTaxes: 0,
510
- taxes: [],
511
- isTaxInclusive: false,
512
- },
513
- cartDiscount: null,
514
- cartFees: [],
515
- paymentMethods: [
516
- {
517
- transactionId: 'trans_cash_2',
518
- paymentType: 'cash',
519
- amount: 1000,
520
- timestamp: new Date(Date.now() - 600000).toISOString(),
521
- processor: 'cash',
522
- },
523
- ],
524
- source: 'pos',
525
- posData: {
526
- outlet: MOCK_OUTLET_MAIN.id,
527
- station: MOCK_STATION_2._id,
528
- employee: MOCK_USER_MARIO.id,
529
- },
530
- sessionId: 'sess_4',
531
- metadata: [],
532
- billing: null,
533
- shipping: null,
534
- lineItems: [createLineItem(MOCK_PRODUCT_RED_PEPPER, 0, 1)],
535
- customSales: [],
536
- balance: 1500,
537
- user: MOCK_USER_MARIO,
538
- outlet: MOCK_OUTLET_MAIN,
539
- station: MOCK_STATION_2,
540
- createdAt: new Date(Date.now() - 600000).toISOString(),
487
+ createdAt: new Date(Date.now() - 7200000).toISOString()
541
488
  };
542
489
  export const MOCK_PARKED_ORDER_1 = {
543
- _id: 'parked_2001',
490
+ _id: "parked_2001",
544
491
  currency: CurrencyCode.USD,
545
492
  minorUnits: 2,
546
- receiptId: 'PARK-0001',
493
+ receiptId: "PARK-0001",
547
494
  companyId: MOCK_COMPANY.id,
548
495
  externalId: null,
549
- status: 'parked',
550
- paymentState: 'unpaid',
551
- fulfillmentState: 'pending',
552
- displayState: 'Parked',
496
+ status: "parked",
497
+ paymentState: "unpaid",
498
+ fulfillmentState: "pending",
499
+ displayState: "Parked",
553
500
  customer: MOCK_CUSTOMER_4,
554
501
  summary: {
555
502
  total: 2100,
@@ -558,18 +505,18 @@ export const MOCK_PARKED_ORDER_1 = {
558
505
  shippingTotal: 0,
559
506
  totalTaxes: 0,
560
507
  taxes: [],
561
- isTaxInclusive: false,
508
+ isTaxInclusive: false
562
509
  },
563
510
  cartDiscount: null,
564
511
  cartFees: [],
565
512
  paymentMethods: [],
566
- source: 'pos',
513
+ source: "pos",
567
514
  posData: {
568
515
  outlet: MOCK_OUTLET_MAIN.id,
569
516
  station: MOCK_STATION_1._id,
570
- employee: MOCK_USER_LUIGI.id,
517
+ employee: MOCK_USER_LUIGI.id
571
518
  },
572
- sessionId: 'sess_park_1',
519
+ sessionId: "sess_park_1",
573
520
  metadata: [],
574
521
  billing: null,
575
522
  shipping: null,
@@ -579,19 +526,19 @@ export const MOCK_PARKED_ORDER_1 = {
579
526
  user: MOCK_USER_LUIGI,
580
527
  outlet: MOCK_OUTLET_MAIN,
581
528
  station: MOCK_STATION_1,
582
- createdAt: new Date(Date.now() - 1800000).toISOString(),
529
+ createdAt: new Date(Date.now() - 1800000).toISOString()
583
530
  };
584
531
  export const MOCK_PARKED_ORDER_2 = {
585
- _id: 'parked_2002',
532
+ _id: "parked_2002",
586
533
  currency: CurrencyCode.USD,
587
534
  minorUnits: 2,
588
- receiptId: 'PARK-0002',
535
+ receiptId: "PARK-0002",
589
536
  companyId: MOCK_COMPANY.id,
590
537
  externalId: null,
591
- status: 'parked',
592
- paymentState: 'unpaid',
593
- fulfillmentState: 'pending',
594
- displayState: 'Parked',
538
+ status: "parked",
539
+ paymentState: "unpaid",
540
+ fulfillmentState: "pending",
541
+ displayState: "Parked",
595
542
  customer: null,
596
543
  summary: {
597
544
  total: 2500,
@@ -600,18 +547,18 @@ export const MOCK_PARKED_ORDER_2 = {
600
547
  shippingTotal: 0,
601
548
  totalTaxes: 0,
602
549
  taxes: [],
603
- isTaxInclusive: false,
550
+ isTaxInclusive: false
604
551
  },
605
552
  cartDiscount: null,
606
553
  cartFees: [],
607
554
  paymentMethods: [],
608
- source: 'pos',
555
+ source: "pos",
609
556
  posData: {
610
557
  outlet: MOCK_OUTLET_MAIN.id,
611
558
  station: MOCK_STATION_2._id,
612
- employee: MOCK_USER_MARIO.id,
559
+ employee: MOCK_USER_MARIO.id
613
560
  },
614
- sessionId: 'sess_park_2',
561
+ sessionId: "sess_park_2",
615
562
  metadata: [],
616
563
  billing: null,
617
564
  shipping: null,
@@ -621,20 +568,14 @@ export const MOCK_PARKED_ORDER_2 = {
621
568
  user: MOCK_USER_MARIO,
622
569
  outlet: MOCK_OUTLET_MAIN,
623
570
  station: MOCK_STATION_2,
624
- createdAt: new Date(Date.now() - 900000).toISOString(),
571
+ createdAt: new Date(Date.now() - 900000).toISOString()
625
572
  };
626
573
  // --- EXPORT COLLECTIONS ---
627
574
  export const MOCK_USERS = [MOCK_USER_MARIO, MOCK_USER_LUIGI];
628
575
  export const MOCK_STATIONS = [MOCK_STATION_1, MOCK_STATION_2];
629
576
  export const MOCK_OUTLETS = [MOCK_OUTLET_MAIN];
630
577
  export const MOCK_CUSTOMERS = [MOCK_CUSTOMER_1, MOCK_CUSTOMER_2, MOCK_CUSTOMER_3, MOCK_CUSTOMER_4, MOCK_CUSTOMER_5];
631
- export const MOCK_CATEGORIES = [
632
- MOCK_CATEGORY_PASTES,
633
- MOCK_CATEGORY_SPECIALTY,
634
- MOCK_CATEGORY_BASIC,
635
- MOCK_CATEGORY_VEGAN,
636
- MOCK_CATEGORY_SPICY,
637
- ];
578
+ export const MOCK_CATEGORIES = [MOCK_CATEGORY_PASTES, MOCK_CATEGORY_SPECIALTY, MOCK_CATEGORY_BASIC, MOCK_CATEGORY_VEGAN, MOCK_CATEGORY_SPICY];
638
579
  export const MOCK_PRODUCTS = [
639
580
  MOCK_PRODUCT_BASIL_ALMOND,
640
581
  MOCK_PRODUCT_BEER,
@@ -649,9 +590,9 @@ export const MOCK_PRODUCTS = [
649
590
  MOCK_PRODUCT_MINT_LEMON,
650
591
  MOCK_PRODUCT_CHILI_GARLIC,
651
592
  MOCK_PRODUCT_HABANERO,
652
- MOCK_PRODUCT_BLACK_GARLIC,
593
+ MOCK_PRODUCT_BLACK_GARLIC
653
594
  ];
654
- export const MOCK_ORDERS = [MOCK_ORDER_1, MOCK_ORDER_2, MOCK_ORDER_3, MOCK_ORDER_4];
595
+ export const MOCK_ORDERS = [MOCK_ORDER_1, MOCK_ORDER_2, MOCK_ORDER_3];
655
596
  export const MOCK_PARKED_ORDERS = [MOCK_PARKED_ORDER_1, MOCK_PARKED_ORDER_2];
656
597
  // Compatibility Exports (reassigned by setMockDatabase)
657
598
  export let MOCK_USER = MOCK_USERS[0];
@@ -665,7 +606,7 @@ export let MOCK_CART = {
665
606
  products: [],
666
607
  customSales: [],
667
608
  nonRevenueItems: [],
668
- customer: null,
609
+ customer: null
669
610
  };
670
611
  export let MOCK_ACTIVE_PRODUCT;
671
612
  export const setMockActiveProduct = (activeProduct) => {
@@ -685,13 +626,13 @@ export const resetMockCart = () => {
685
626
  products: [],
686
627
  customSales: [],
687
628
  nonRevenueItems: [],
688
- customer: null,
629
+ customer: null
689
630
  };
690
631
  };
691
632
  function resolveMockOrderCurrency() {
692
633
  const settings = MOCK_COMPANY.settings;
693
634
  const raw = settings?.currency;
694
- if (typeof raw === 'string' && Object.values(CurrencyCode).includes(raw)) {
635
+ if (typeof raw === "string" && Object.values(CurrencyCode).includes(raw)) {
695
636
  return raw;
696
637
  }
697
638
  return CurrencyCode.USD;
@@ -750,15 +691,16 @@ export const safeSerialize = (data) => {
750
691
  return JSON.parse(JSON.stringify(data));
751
692
  };
752
693
  const mockTopicSubscribers = {};
694
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
753
695
  export const mockPublishEvent = (topic, eventType, data) => {
754
696
  const subscribers = mockTopicSubscribers[topic] || [];
755
697
  const event = {
756
698
  topic,
757
699
  type: eventType,
758
700
  data,
759
- timestamp: new Date().toISOString(),
701
+ timestamp: new Date().toISOString()
760
702
  };
761
- subscribers.forEach((callback) => {
703
+ subscribers.forEach(callback => {
762
704
  try {
763
705
  callback(event);
764
706
  }
@@ -774,16 +716,16 @@ export const mockSubscribeToTopic = (topic, callback) => {
774
716
  mockTopicSubscribers[topic].push(callback);
775
717
  };
776
718
  // Helper to create order from cart
777
- export const createOrderFromCart = (paymentType, amount, processor = 'cash') => {
719
+ export const createOrderFromCart = (paymentType, amount, processor = "cash") => {
778
720
  const primaryOutlet = MOCK_OUTLETS[0] ?? MOCK_OUTLET_MAIN;
779
721
  const primaryStation = MOCK_STATIONS[0] ?? MOCK_STATION;
780
- const employeeUser = MOCK_USERS.find((u) => u.type === CFUserTypes.CASHIER) ?? MOCK_USERS[0] ?? MOCK_USER;
722
+ const employeeUser = MOCK_USERS.find(u => u.type === CFUserTypes.CASHIER) ?? MOCK_USERS[0] ?? MOCK_USER;
781
723
  const orderCurrency = resolveMockOrderCurrency();
782
724
  // Generate new Order ID
783
725
  const orderId = `order_${Date.now()}`;
784
726
  const receiptId = `receipt_${Date.now()}`;
785
727
  // Map cart products to line items
786
- const lineItems = MOCK_CART.products.map((p) => {
728
+ const lineItems = MOCK_CART.products.map(p => {
787
729
  return {
788
730
  productId: p.id,
789
731
  variantId: p.variantId,
@@ -793,17 +735,17 @@ export const createOrderFromCart = (paymentType, amount, processor = 'cash') =>
793
735
  taxes: [],
794
736
  discount: {
795
737
  itemDiscounts: [],
796
- cartDiscount: { percentage: 0, amount: 0 },
738
+ cartDiscount: { percentage: 0, amount: 0 }
797
739
  },
798
740
  fee: { itemFees: [] },
799
741
  totalTax: 0,
800
742
  total: p.price * p.quantity,
801
743
  lineNetWithFees: p.price * p.quantity,
802
744
  metadata: [],
803
- image: p.images?.[0] || '',
804
- sku: p.sku || '',
745
+ image: p.images?.[0] || "",
746
+ sku: p.sku || "",
805
747
  stock: 100,
806
- attributes: p.attributes || '',
748
+ attributes: p.attributes || ""
807
749
  };
808
750
  });
809
751
  const totalNum = MOCK_CART.total;
@@ -814,10 +756,10 @@ export const createOrderFromCart = (paymentType, amount, processor = 'cash') =>
814
756
  receiptId,
815
757
  companyId: MOCK_COMPANY.id,
816
758
  externalId: null,
817
- status: 'completed',
818
- paymentState: 'paid',
819
- fulfillmentState: 'fulfilled',
820
- displayState: 'Completed',
759
+ status: "completed",
760
+ paymentState: "paid",
761
+ fulfillmentState: "fulfilled",
762
+ displayState: "Completed",
821
763
  customer: MOCK_CART.customer ? MOCK_CART.customer : null,
822
764
  summary: {
823
765
  total: totalNum,
@@ -826,11 +768,9 @@ export const createOrderFromCart = (paymentType, amount, processor = 'cash') =>
826
768
  shippingTotal: 0,
827
769
  totalTaxes: 0,
828
770
  taxes: [],
829
- isTaxInclusive: false,
771
+ isTaxInclusive: false
830
772
  },
831
- cartDiscount: MOCK_CART.discount
832
- ? { label: MOCK_CART.discount.label || 'Discount', amount: 0, percentage: MOCK_CART.discount.value }
833
- : null,
773
+ cartDiscount: MOCK_CART.discount ? { label: MOCK_CART.discount.label || "Discount", amount: 0, percentage: MOCK_CART.discount.value } : null,
834
774
  cartFees: [],
835
775
  paymentMethods: [
836
776
  {
@@ -838,14 +778,14 @@ export const createOrderFromCart = (paymentType, amount, processor = 'cash') =>
838
778
  paymentType,
839
779
  amount,
840
780
  timestamp: new Date().toISOString(),
841
- processor,
842
- },
781
+ processor
782
+ }
843
783
  ],
844
- source: 'pos',
784
+ source: "pos",
845
785
  posData: {
846
786
  outlet: primaryOutlet.id,
847
787
  station: primaryStation._id,
848
- employee: employeeUser.id,
788
+ employee: employeeUser.id
849
789
  },
850
790
  sessionId: `session_${Date.now()}`,
851
791
  metadata: [],
@@ -857,12 +797,12 @@ export const createOrderFromCart = (paymentType, amount, processor = 'cash') =>
857
797
  user: employeeUser,
858
798
  outlet: primaryOutlet,
859
799
  station: primaryStation,
860
- createdAt: new Date().toISOString(),
800
+ createdAt: new Date().toISOString()
861
801
  };
862
802
  MOCK_ORDERS.push(newOrder);
863
803
  resetMockCart();
864
804
  // Publish cart-created event after cart is reset (simulates new empty cart)
865
- mockPublishEvent('cart', 'cart-created', {});
805
+ mockPublishEvent("cart", "cart-created", {});
866
806
  return newOrder;
867
807
  };
868
808
  /**
@@ -871,7 +811,7 @@ export const createOrderFromCart = (paymentType, amount, processor = 'cash') =>
871
811
  * (creates the order, resets the cart, returns it). Otherwise the cart stays
872
812
  * open with `amountToBeCharged` reset to what's left, and returns null.
873
813
  */
874
- export const applyMockPayment = (amount, paymentType, processor = 'cash') => {
814
+ export const applyMockPayment = (amount, paymentType, processor = "cash") => {
875
815
  const remainingBefore = MOCK_CART.remainingBalance ?? MOCK_CART.total;
876
816
  const charge = Math.min(Math.max(0, amount || remainingBefore), remainingBefore);
877
817
  const remainingAfter = Math.max(0, remainingBefore - charge);
@@ -879,12 +819,12 @@ export const applyMockPayment = (amount, paymentType, processor = 'cash') => {
879
819
  // Partial payment — keep the cart open, queue the rest for the next tender.
880
820
  MOCK_CART.remainingBalance = remainingAfter;
881
821
  MOCK_CART.amountToBeCharged = remainingAfter;
882
- mockPublishEvent('cart', 'partial-payment-applied', { charged: charge, remaining: remainingAfter });
822
+ mockPublishEvent("cart", "partial-payment-applied", { charged: charge, remaining: remainingAfter });
883
823
  return null;
884
824
  }
885
825
  // Fully paid — create the completed order (this also resets the cart).
886
826
  const orderTotal = MOCK_CART.total;
887
827
  const order = createOrderFromCart(paymentType, orderTotal, processor);
888
- mockPublishEvent('payments', 'payment-done', { order });
828
+ mockPublishEvent("payments", "payment-done", { order });
889
829
  return order;
890
830
  };