@withpotter/lib 0.13.0-next.101
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/dist/__fixtures__/demo-content-server.json +484 -0
- package/dist/accessibility-context.d.ts +27 -0
- package/dist/accessibility-context.js +107 -0
- package/dist/accessibility-context.js.map +1 -0
- package/dist/active-workspace.d.ts +45 -0
- package/dist/active-workspace.js +34 -0
- package/dist/active-workspace.js.map +1 -0
- package/dist/admin-account-officer-api.d.ts +13 -0
- package/dist/admin-account-officer-api.js +12 -0
- package/dist/admin-account-officer-api.js.map +1 -0
- package/dist/admin-account-types.d.ts +122 -0
- package/dist/admin-account-types.js +1 -0
- package/dist/admin-account-types.js.map +1 -0
- package/dist/admin-adoption-api.d.ts +35 -0
- package/dist/admin-adoption-api.js +16 -0
- package/dist/admin-adoption-api.js.map +1 -0
- package/dist/admin-api.d.ts +1219 -0
- package/dist/admin-api.js +325 -0
- package/dist/admin-api.js.map +1 -0
- package/dist/admin-case-api.d.ts +32 -0
- package/dist/admin-case-api.js +63 -0
- package/dist/admin-case-api.js.map +1 -0
- package/dist/admin-case-types.d.ts +166 -0
- package/dist/admin-case-types.js +1 -0
- package/dist/admin-case-types.js.map +1 -0
- package/dist/admin-compliance-api.d.ts +31 -0
- package/dist/admin-compliance-api.js +20 -0
- package/dist/admin-compliance-api.js.map +1 -0
- package/dist/admin-country-api.d.ts +28 -0
- package/dist/admin-country-api.js +9 -0
- package/dist/admin-country-api.js.map +1 -0
- package/dist/admin-currency-types.d.ts +138 -0
- package/dist/admin-currency-types.js +1 -0
- package/dist/admin-currency-types.js.map +1 -0
- package/dist/admin-feedback-api.d.ts +215 -0
- package/dist/admin-feedback-api.js +63 -0
- package/dist/admin-feedback-api.js.map +1 -0
- package/dist/admin-inbox-seen.d.ts +22 -0
- package/dist/admin-inbox-seen.js +47 -0
- package/dist/admin-inbox-seen.js.map +1 -0
- package/dist/admin-ledger-api.d.ts +85 -0
- package/dist/admin-ledger-api.js +30 -0
- package/dist/admin-ledger-api.js.map +1 -0
- package/dist/admin-money-api.d.ts +127 -0
- package/dist/admin-money-api.js +125 -0
- package/dist/admin-money-api.js.map +1 -0
- package/dist/admin-newsletter-contacts-api.d.ts +70 -0
- package/dist/admin-newsletter-contacts-api.js +20 -0
- package/dist/admin-newsletter-contacts-api.js.map +1 -0
- package/dist/admin-newsletter-deliveries-api.d.ts +47 -0
- package/dist/admin-newsletter-deliveries-api.js +16 -0
- package/dist/admin-newsletter-deliveries-api.js.map +1 -0
- package/dist/admin-newsletters-api.d.ts +118 -0
- package/dist/admin-newsletters-api.js +47 -0
- package/dist/admin-newsletters-api.js.map +1 -0
- package/dist/admin-pos-api.d.ts +16 -0
- package/dist/admin-pos-api.js +35 -0
- package/dist/admin-pos-api.js.map +1 -0
- package/dist/admin-pos-query.d.ts +43 -0
- package/dist/admin-pos-query.js +55 -0
- package/dist/admin-pos-query.js.map +1 -0
- package/dist/admin-pos-types.d.ts +122 -0
- package/dist/admin-pos-types.js +1 -0
- package/dist/admin-pos-types.js.map +1 -0
- package/dist/admin-pricing-api.d.ts +88 -0
- package/dist/admin-pricing-api.js +66 -0
- package/dist/admin-pricing-api.js.map +1 -0
- package/dist/admin-readiness-api.d.ts +25 -0
- package/dist/admin-readiness-api.js +39 -0
- package/dist/admin-readiness-api.js.map +1 -0
- package/dist/admin-sales-api.d.ts +124 -0
- package/dist/admin-sales-api.js +41 -0
- package/dist/admin-sales-api.js.map +1 -0
- package/dist/admin-saved-replies-api.d.ts +35 -0
- package/dist/admin-saved-replies-api.js +70 -0
- package/dist/admin-saved-replies-api.js.map +1 -0
- package/dist/admin-service-operations-api.d.ts +142 -0
- package/dist/admin-service-operations-api.js +52 -0
- package/dist/admin-service-operations-api.js.map +1 -0
- package/dist/admin-signatures-api.d.ts +57 -0
- package/dist/admin-signatures-api.js +15 -0
- package/dist/admin-signatures-api.js.map +1 -0
- package/dist/admin-support-analytics-api.d.ts +36 -0
- package/dist/admin-support-analytics-api.js +71 -0
- package/dist/admin-support-analytics-api.js.map +1 -0
- package/dist/admin-tenant-setup-types.d.ts +85 -0
- package/dist/admin-tenant-setup-types.js +1 -0
- package/dist/admin-tenant-setup-types.js.map +1 -0
- package/dist/admin-tenants-query.d.ts +14 -0
- package/dist/admin-tenants-query.js +17 -0
- package/dist/admin-tenants-query.js.map +1 -0
- package/dist/analytics/PostHogProvider.d.ts +25 -0
- package/dist/analytics/PostHogProvider.js +44 -0
- package/dist/analytics/PostHogProvider.js.map +1 -0
- package/dist/analytics/index.d.ts +1 -0
- package/dist/analytics/index.js +11 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics.d.ts +1 -0
- package/dist/analytics.js +1 -0
- package/dist/api/abandoned-cart.d.ts +18 -0
- package/dist/api/abandoned-cart.js +68 -0
- package/dist/api/abandoned-cart.js.map +1 -0
- package/dist/api/accounts.d.ts +176 -0
- package/dist/api/accounts.js +194 -0
- package/dist/api/accounts.js.map +1 -0
- package/dist/api/analytics-patterns.d.ts +18 -0
- package/dist/api/analytics-patterns.js +52 -0
- package/dist/api/analytics-patterns.js.map +1 -0
- package/dist/api/analytics.d.ts +143 -0
- package/dist/api/analytics.js +379 -0
- package/dist/api/analytics.js.map +1 -0
- package/dist/api/assignee-prefs.d.ts +7 -0
- package/dist/api/assignee-prefs.js +17 -0
- package/dist/api/assignee-prefs.js.map +1 -0
- package/dist/api/automations.d.ts +73 -0
- package/dist/api/automations.js +102 -0
- package/dist/api/automations.js.map +1 -0
- package/dist/api/behaviors.d.ts +15 -0
- package/dist/api/behaviors.js +15 -0
- package/dist/api/behaviors.js.map +1 -0
- package/dist/api/bio.d.ts +7 -0
- package/dist/api/bio.js +17 -0
- package/dist/api/bio.js.map +1 -0
- package/dist/api/booking-calendar.d.ts +14 -0
- package/dist/api/booking-calendar.js +33 -0
- package/dist/api/booking-calendar.js.map +1 -0
- package/dist/api/bookings.d.ts +199 -0
- package/dist/api/bookings.js +284 -0
- package/dist/api/bookings.js.map +1 -0
- package/dist/api/business-devices.d.ts +108 -0
- package/dist/api/business-devices.js +139 -0
- package/dist/api/business-devices.js.map +1 -0
- package/dist/api/business-locations.d.ts +26 -0
- package/dist/api/business-locations.js +39 -0
- package/dist/api/business-locations.js.map +1 -0
- package/dist/api/cache-bus.d.ts +56 -0
- package/dist/api/cache-bus.js +18 -0
- package/dist/api/cache-bus.js.map +1 -0
- package/dist/api/calendar-sync.d.ts +49 -0
- package/dist/api/calendar-sync.js +50 -0
- package/dist/api/calendar-sync.js.map +1 -0
- package/dist/api/campaign-initiatives.d.ts +115 -0
- package/dist/api/campaign-initiatives.js +42 -0
- package/dist/api/campaign-initiatives.js.map +1 -0
- package/dist/api/campaigns.d.ts +89 -0
- package/dist/api/campaigns.js +100 -0
- package/dist/api/campaigns.js.map +1 -0
- package/dist/api/capabilities.d.ts +12 -0
- package/dist/api/capabilities.js +16 -0
- package/dist/api/capabilities.js.map +1 -0
- package/dist/api/commerce.d.ts +19 -0
- package/dist/api/commerce.js +31 -0
- package/dist/api/commerce.js.map +1 -0
- package/dist/api/communications.d.ts +166 -0
- package/dist/api/communications.js +141 -0
- package/dist/api/communications.js.map +1 -0
- package/dist/api/connect.d.ts +72 -0
- package/dist/api/connect.js +50 -0
- package/dist/api/connect.js.map +1 -0
- package/dist/api/content.d.ts +146 -0
- package/dist/api/content.js +187 -0
- package/dist/api/content.js.map +1 -0
- package/dist/api/conversations.d.ts +79 -0
- package/dist/api/conversations.js +41 -0
- package/dist/api/conversations.js.map +1 -0
- package/dist/api/core.d.ts +62 -0
- package/dist/api/core.js +223 -0
- package/dist/api/core.js.map +1 -0
- package/dist/api/credentials.d.ts +65 -0
- package/dist/api/credentials.js +48 -0
- package/dist/api/credentials.js.map +1 -0
- package/dist/api/credits.d.ts +96 -0
- package/dist/api/credits.js +24 -0
- package/dist/api/credits.js.map +1 -0
- package/dist/api/crm-analytics.d.ts +10 -0
- package/dist/api/crm-analytics.js +22 -0
- package/dist/api/crm-analytics.js.map +1 -0
- package/dist/api/crm-segments.d.ts +14 -0
- package/dist/api/crm-segments.js +42 -0
- package/dist/api/crm-segments.js.map +1 -0
- package/dist/api/deliveries.d.ts +99 -0
- package/dist/api/deliveries.js +37 -0
- package/dist/api/deliveries.js.map +1 -0
- package/dist/api/demo-content.d.ts +104 -0
- package/dist/api/demo-content.js +36 -0
- package/dist/api/demo-content.js.map +1 -0
- package/dist/api/device-shifts.d.ts +56 -0
- package/dist/api/device-shifts.js +50 -0
- package/dist/api/device-shifts.js.map +1 -0
- package/dist/api/devices.d.ts +6 -0
- package/dist/api/devices.js +10 -0
- package/dist/api/devices.js.map +1 -0
- package/dist/api/digital-files.d.ts +22 -0
- package/dist/api/digital-files.js +55 -0
- package/dist/api/digital-files.js.map +1 -0
- package/dist/api/discounts.d.ts +29 -0
- package/dist/api/discounts.js +46 -0
- package/dist/api/discounts.js.map +1 -0
- package/dist/api/disputes.d.ts +47 -0
- package/dist/api/disputes.js +42 -0
- package/dist/api/disputes.js.map +1 -0
- package/dist/api/feature-locked.d.ts +11 -0
- package/dist/api/feature-locked.js +18 -0
- package/dist/api/feature-locked.js.map +1 -0
- package/dist/api/feedback-prompts.d.ts +45 -0
- package/dist/api/feedback-prompts.js +85 -0
- package/dist/api/feedback-prompts.js.map +1 -0
- package/dist/api/feedback.d.ts +254 -0
- package/dist/api/feedback.js +108 -0
- package/dist/api/feedback.js.map +1 -0
- package/dist/api/finance.d.ts +199 -0
- package/dist/api/finance.js +203 -0
- package/dist/api/finance.js.map +1 -0
- package/dist/api/gallery.d.ts +30 -0
- package/dist/api/gallery.js +48 -0
- package/dist/api/gallery.js.map +1 -0
- package/dist/api/geo.d.ts +18 -0
- package/dist/api/geo.js +19 -0
- package/dist/api/geo.js.map +1 -0
- package/dist/api/giftcards.d.ts +63 -0
- package/dist/api/giftcards.js +63 -0
- package/dist/api/giftcards.js.map +1 -0
- package/dist/api/hardware-orders.d.ts +40 -0
- package/dist/api/hardware-orders.js +37 -0
- package/dist/api/hardware-orders.js.map +1 -0
- package/dist/api/index.d.ts +71 -0
- package/dist/api/index.js +78 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/inquiries.d.ts +92 -0
- package/dist/api/inquiries.js +129 -0
- package/dist/api/inquiries.js.map +1 -0
- package/dist/api/inventory.d.ts +133 -0
- package/dist/api/inventory.js +203 -0
- package/dist/api/inventory.js.map +1 -0
- package/dist/api/invite-body.d.ts +19 -0
- package/dist/api/invite-body.js +8 -0
- package/dist/api/invite-body.js.map +1 -0
- package/dist/api/invoices.d.ts +19 -0
- package/dist/api/invoices.js +80 -0
- package/dist/api/invoices.js.map +1 -0
- package/dist/api/locations.d.ts +15 -0
- package/dist/api/locations.js +30 -0
- package/dist/api/locations.js.map +1 -0
- package/dist/api/loyalty.d.ts +68 -0
- package/dist/api/loyalty.js +112 -0
- package/dist/api/loyalty.js.map +1 -0
- package/dist/api/marketing-consent.d.ts +36 -0
- package/dist/api/marketing-consent.js +11 -0
- package/dist/api/marketing-consent.js.map +1 -0
- package/dist/api/marketing-suppressions.d.ts +81 -0
- package/dist/api/marketing-suppressions.js +65 -0
- package/dist/api/marketing-suppressions.js.map +1 -0
- package/dist/api/members.d.ts +79 -0
- package/dist/api/members.js +148 -0
- package/dist/api/members.js.map +1 -0
- package/dist/api/merchant-notifications.d.ts +27 -0
- package/dist/api/merchant-notifications.js +41 -0
- package/dist/api/merchant-notifications.js.map +1 -0
- package/dist/api/merchant-referrals.d.ts +23 -0
- package/dist/api/merchant-referrals.js +10 -0
- package/dist/api/merchant-referrals.js.map +1 -0
- package/dist/api/merchant-subscriptions.d.ts +117 -0
- package/dist/api/merchant-subscriptions.js +113 -0
- package/dist/api/merchant-subscriptions.js.map +1 -0
- package/dist/api/misc.d.ts +4 -0
- package/dist/api/misc.js +24 -0
- package/dist/api/misc.js.map +1 -0
- package/dist/api/odoo.d.ts +102 -0
- package/dist/api/odoo.js +36 -0
- package/dist/api/odoo.js.map +1 -0
- package/dist/api/onboarding.d.ts +48 -0
- package/dist/api/onboarding.js +78 -0
- package/dist/api/onboarding.js.map +1 -0
- package/dist/api/orders.d.ts +153 -0
- package/dist/api/orders.js +303 -0
- package/dist/api/orders.js.map +1 -0
- package/dist/api/organizations.d.ts +14 -0
- package/dist/api/organizations.js +19 -0
- package/dist/api/organizations.js.map +1 -0
- package/dist/api/packages.d.ts +16 -0
- package/dist/api/packages.js +25 -0
- package/dist/api/packages.js.map +1 -0
- package/dist/api/pages.d.ts +79 -0
- package/dist/api/pages.js +125 -0
- package/dist/api/pages.js.map +1 -0
- package/dist/api/payables.d.ts +34 -0
- package/dist/api/payables.js +70 -0
- package/dist/api/payables.js.map +1 -0
- package/dist/api/plan-refusal.d.ts +21 -0
- package/dist/api/plan-refusal.js +28 -0
- package/dist/api/plan-refusal.js.map +1 -0
- package/dist/api/pos.d.ts +66 -0
- package/dist/api/pos.js +115 -0
- package/dist/api/pos.js.map +1 -0
- package/dist/api/potter.d.ts +114 -0
- package/dist/api/potter.js +88 -0
- package/dist/api/potter.js.map +1 -0
- package/dist/api/push.d.ts +25 -0
- package/dist/api/push.js +23 -0
- package/dist/api/push.js.map +1 -0
- package/dist/api/referrals.d.ts +10 -0
- package/dist/api/referrals.js +16 -0
- package/dist/api/referrals.js.map +1 -0
- package/dist/api/resource-categories.d.ts +35 -0
- package/dist/api/resource-categories.js +76 -0
- package/dist/api/resource-categories.js.map +1 -0
- package/dist/api/resources.d.ts +54 -0
- package/dist/api/resources.js +92 -0
- package/dist/api/resources.js.map +1 -0
- package/dist/api/reviews.d.ts +18 -0
- package/dist/api/reviews.js +46 -0
- package/dist/api/reviews.js.map +1 -0
- package/dist/api/riders.d.ts +70 -0
- package/dist/api/riders.js +24 -0
- package/dist/api/riders.js.map +1 -0
- package/dist/api/role-permissions.d.ts +25 -0
- package/dist/api/role-permissions.js +47 -0
- package/dist/api/role-permissions.js.map +1 -0
- package/dist/api/sales-channels.d.ts +234 -0
- package/dist/api/sales-channels.js +119 -0
- package/dist/api/sales-channels.js.map +1 -0
- package/dist/api/service-missing.d.ts +10 -0
- package/dist/api/service-missing.js +19 -0
- package/dist/api/service-missing.js.map +1 -0
- package/dist/api/session-refresh.d.ts +18 -0
- package/dist/api/session-refresh.js +37 -0
- package/dist/api/session-refresh.js.map +1 -0
- package/dist/api/session-scope.d.ts +35 -0
- package/dist/api/session-scope.js +53 -0
- package/dist/api/session-scope.js.map +1 -0
- package/dist/api/settlements.d.ts +106 -0
- package/dist/api/settlements.js +114 -0
- package/dist/api/settlements.js.map +1 -0
- package/dist/api/share-links.d.ts +46 -0
- package/dist/api/share-links.js +25 -0
- package/dist/api/share-links.js.map +1 -0
- package/dist/api/shift-notes.d.ts +19 -0
- package/dist/api/shift-notes.js +13 -0
- package/dist/api/shift-notes.js.map +1 -0
- package/dist/api/shipping.d.ts +42 -0
- package/dist/api/shipping.js +53 -0
- package/dist/api/shipping.js.map +1 -0
- package/dist/api/social-sources.d.ts +58 -0
- package/dist/api/social-sources.js +23 -0
- package/dist/api/social-sources.js.map +1 -0
- package/dist/api/tabs.d.ts +14 -0
- package/dist/api/tabs.js +39 -0
- package/dist/api/tabs.js.map +1 -0
- package/dist/api/team.d.ts +112 -0
- package/dist/api/team.js +144 -0
- package/dist/api/team.js.map +1 -0
- package/dist/api/template-settings.d.ts +26 -0
- package/dist/api/template-settings.js +36 -0
- package/dist/api/template-settings.js.map +1 -0
- package/dist/api/templates.d.ts +21 -0
- package/dist/api/templates.js +25 -0
- package/dist/api/templates.js.map +1 -0
- package/dist/api/tenant-slug.d.ts +13 -0
- package/dist/api/tenant-slug.js +18 -0
- package/dist/api/tenant-slug.js.map +1 -0
- package/dist/api/tenant.d.ts +33 -0
- package/dist/api/tenant.js +51 -0
- package/dist/api/tenant.js.map +1 -0
- package/dist/api/types/analytics-attribution.d.ts +43 -0
- package/dist/api/types/analytics-attribution.js +1 -0
- package/dist/api/types/analytics-attribution.js.map +1 -0
- package/dist/api/types/analytics.d.ts +465 -0
- package/dist/api/types/analytics.js +1 -0
- package/dist/api/types/analytics.js.map +1 -0
- package/dist/api/types/auth.d.ts +206 -0
- package/dist/api/types/auth.js +7 -0
- package/dist/api/types/auth.js.map +1 -0
- package/dist/api/types/automation-flow.d.ts +199 -0
- package/dist/api/types/automation-flow.js +1 -0
- package/dist/api/types/automation-flow.js.map +1 -0
- package/dist/api/types/bookings.d.ts +226 -0
- package/dist/api/types/bookings.js +1 -0
- package/dist/api/types/bookings.js.map +1 -0
- package/dist/api/types/campaigns.d.ts +262 -0
- package/dist/api/types/campaigns.js +1 -0
- package/dist/api/types/campaigns.js.map +1 -0
- package/dist/api/types/catalog.d.ts +273 -0
- package/dist/api/types/catalog.js +1 -0
- package/dist/api/types/catalog.js.map +1 -0
- package/dist/api/types/collections.d.ts +189 -0
- package/dist/api/types/collections.js +1 -0
- package/dist/api/types/collections.js.map +1 -0
- package/dist/api/types/crm.d.ts +264 -0
- package/dist/api/types/crm.js +1 -0
- package/dist/api/types/crm.js.map +1 -0
- package/dist/api/types/customers.d.ts +269 -0
- package/dist/api/types/customers.js +1 -0
- package/dist/api/types/customers.js.map +1 -0
- package/dist/api/types/devices.d.ts +390 -0
- package/dist/api/types/devices.js +1 -0
- package/dist/api/types/devices.js.map +1 -0
- package/dist/api/types/discounts.d.ts +237 -0
- package/dist/api/types/discounts.js +1 -0
- package/dist/api/types/discounts.js.map +1 -0
- package/dist/api/types/filters.d.ts +258 -0
- package/dist/api/types/filters.js +1 -0
- package/dist/api/types/filters.js.map +1 -0
- package/dist/api/types/index.d.ts +31 -0
- package/dist/api/types/index.js +25 -0
- package/dist/api/types/index.js.map +1 -0
- package/dist/api/types/inquiries.d.ts +266 -0
- package/dist/api/types/inquiries.js +1 -0
- package/dist/api/types/inquiries.js.map +1 -0
- package/dist/api/types/locations.d.ts +208 -0
- package/dist/api/types/locations.js +1 -0
- package/dist/api/types/locations.js.map +1 -0
- package/dist/api/types/onboarding.d.ts +311 -0
- package/dist/api/types/onboarding.js +1 -0
- package/dist/api/types/onboarding.js.map +1 -0
- package/dist/api/types/operations.d.ts +136 -0
- package/dist/api/types/operations.js +1 -0
- package/dist/api/types/operations.js.map +1 -0
- package/dist/api/types/orders.d.ts +242 -0
- package/dist/api/types/orders.js +1 -0
- package/dist/api/types/orders.js.map +1 -0
- package/dist/api/types/payables.d.ts +140 -0
- package/dist/api/types/payables.js +1 -0
- package/dist/api/types/payables.js.map +1 -0
- package/dist/api/types/pos.d.ts +121 -0
- package/dist/api/types/pos.js +5 -0
- package/dist/api/types/pos.js.map +1 -0
- package/dist/api/types/record-analytics.d.ts +95 -0
- package/dist/api/types/record-analytics.js +1 -0
- package/dist/api/types/record-analytics.js.map +1 -0
- package/dist/api/types/sales-patterns.d.ts +58 -0
- package/dist/api/types/sales-patterns.js +1 -0
- package/dist/api/types/sales-patterns.js.map +1 -0
- package/dist/api/types/tabs.d.ts +210 -0
- package/dist/api/types/tabs.js +1 -0
- package/dist/api/types/tabs.js.map +1 -0
- package/dist/api/types/templates.d.ts +398 -0
- package/dist/api/types/templates.js +1 -0
- package/dist/api/types/templates.js.map +1 -0
- package/dist/api/types/waitlist.d.ts +324 -0
- package/dist/api/types/waitlist.js +1 -0
- package/dist/api/types/waitlist.js.map +1 -0
- package/dist/api/types.d.ts +1 -0
- package/dist/api/types.js +1 -0
- package/dist/api/unserved-routes.d.ts +4 -0
- package/dist/api/unserved-routes.js +15 -0
- package/dist/api/unserved-routes.js.map +1 -0
- package/dist/api/waitlist.d.ts +80 -0
- package/dist/api/waitlist.js +85 -0
- package/dist/api/waitlist.js.map +1 -0
- package/dist/api.d.ts +1 -0
- package/dist/api.js +1 -0
- package/dist/app-name.d.ts +29 -0
- package/dist/app-name.js +11 -0
- package/dist/app-name.js.map +1 -0
- package/dist/arrival.d.ts +48 -0
- package/dist/arrival.js +34 -0
- package/dist/arrival.js.map +1 -0
- package/dist/auth-context.d.ts +90 -0
- package/dist/auth-context.js +732 -0
- package/dist/auth-context.js.map +1 -0
- package/dist/auth-session.d.ts +1 -0
- package/dist/auth-session.js +25 -0
- package/dist/auth-session.js.map +1 -0
- package/dist/bank-phone.d.ts +2 -0
- package/dist/bank-phone.js +12 -0
- package/dist/bank-phone.js.map +1 -0
- package/dist/behavior-config-types.d.ts +49 -0
- package/dist/behavior-config-types.js +1 -0
- package/dist/behavior-config-types.js.map +1 -0
- package/dist/behavior-context.d.ts +15 -0
- package/dist/behavior-context.js +38 -0
- package/dist/behavior-context.js.map +1 -0
- package/dist/behavior-fields.d.ts +41 -0
- package/dist/behavior-fields.js +20 -0
- package/dist/behavior-fields.js.map +1 -0
- package/dist/blog/__fixtures__/paste-hygiene.d.ts +7 -0
- package/dist/blog/__fixtures__/paste-hygiene.js +36 -0
- package/dist/blog/__fixtures__/paste-hygiene.js.map +1 -0
- package/dist/blog/density.d.ts +65 -0
- package/dist/blog/density.js +126 -0
- package/dist/blog/density.js.map +1 -0
- package/dist/blog/paste-hygiene.d.ts +3 -0
- package/dist/blog/paste-hygiene.js +168 -0
- package/dist/blog/paste-hygiene.js.map +1 -0
- package/dist/booking-location-label.d.ts +10 -0
- package/dist/booking-location-label.js +24 -0
- package/dist/booking-location-label.js.map +1 -0
- package/dist/booking-meeting-link.d.ts +48 -0
- package/dist/booking-meeting-link.js +40 -0
- package/dist/booking-meeting-link.js.map +1 -0
- package/dist/box-channels.d.ts +22 -0
- package/dist/box-channels.js +16 -0
- package/dist/box-channels.js.map +1 -0
- package/dist/box-delivery.d.ts +10 -0
- package/dist/box-delivery.js +5 -0
- package/dist/box-delivery.js.map +1 -0
- package/dist/box-inbox.d.ts +11 -0
- package/dist/box-inbox.js +5 -0
- package/dist/box-inbox.js.map +1 -0
- package/dist/box-letting.d.ts +14 -0
- package/dist/box-letting.js +7 -0
- package/dist/box-letting.js.map +1 -0
- package/dist/box-mark-paths.d.ts +28 -0
- package/dist/box-mark-paths.js +23 -0
- package/dist/box-mark-paths.js.map +1 -0
- package/dist/box-media.d.ts +9 -0
- package/dist/box-media.js +5 -0
- package/dist/box-media.js.map +1 -0
- package/dist/box-products.d.ts +16 -0
- package/dist/box-products.js +9 -0
- package/dist/box-products.js.map +1 -0
- package/dist/box-splits.d.ts +12 -0
- package/dist/box-splits.js +5 -0
- package/dist/box-splits.js.map +1 -0
- package/dist/brand.d.ts +26 -0
- package/dist/brand.js +22 -0
- package/dist/brand.js.map +1 -0
- package/dist/business-categories.d.ts +50 -0
- package/dist/business-categories.js +378 -0
- package/dist/business-categories.js.map +1 -0
- package/dist/business-intents.d.ts +31 -0
- package/dist/business-intents.js +142 -0
- package/dist/business-intents.js.map +1 -0
- package/dist/capability-context.d.ts +63 -0
- package/dist/capability-context.js +84 -0
- package/dist/capability-context.js.map +1 -0
- package/dist/carriers.d.ts +83 -0
- package/dist/carriers.js +124 -0
- package/dist/carriers.js.map +1 -0
- package/dist/commerce-build/api.d.ts +29 -0
- package/dist/commerce-build/api.js +152 -0
- package/dist/commerce-build/api.js.map +1 -0
- package/dist/commerce-build/contracts-profile.d.ts +83 -0
- package/dist/commerce-build/contracts-profile.js +1 -0
- package/dist/commerce-build/contracts-profile.js.map +1 -0
- package/dist/commerce-build/contracts-spec.d.ts +217 -0
- package/dist/commerce-build/contracts-spec.js +1 -0
- package/dist/commerce-build/contracts-spec.js.map +1 -0
- package/dist/commerce-build/contracts.d.ts +2 -0
- package/dist/commerce-build/contracts.js +1 -0
- package/dist/commerce-build/contracts.js.map +1 -0
- package/dist/commerce-build/launch-state.d.ts +20 -0
- package/dist/commerce-build/launch-state.js +72 -0
- package/dist/commerce-build/launch-state.js.map +1 -0
- package/dist/commerce-build/profile-utils.d.ts +5 -0
- package/dist/commerce-build/profile-utils.js +14 -0
- package/dist/commerce-build/profile-utils.js.map +1 -0
- package/dist/commerce-build/setup-flow.d.ts +10 -0
- package/dist/commerce-build/setup-flow.js +24 -0
- package/dist/commerce-build/setup-flow.js.map +1 -0
- package/dist/commerce-build/setup-session.d.ts +26 -0
- package/dist/commerce-build/setup-session.js +70 -0
- package/dist/commerce-build/setup-session.js.map +1 -0
- package/dist/commerce-build/turn-streaming.d.ts +21 -0
- package/dist/commerce-build/turn-streaming.js +113 -0
- package/dist/commerce-build/turn-streaming.js.map +1 -0
- package/dist/commerce-build/workspace-components.d.ts +23 -0
- package/dist/commerce-build/workspace-components.js +66 -0
- package/dist/commerce-build/workspace-components.js.map +1 -0
- package/dist/commerce-build/workspace-config.d.ts +7 -0
- package/dist/commerce-build/workspace-config.js +74 -0
- package/dist/commerce-build/workspace-config.js.map +1 -0
- package/dist/companion/config.d.ts +31 -0
- package/dist/companion/config.js +59 -0
- package/dist/companion/config.js.map +1 -0
- package/dist/connect/catalog.d.ts +32 -0
- package/dist/connect/catalog.js +268 -0
- package/dist/connect/catalog.js.map +1 -0
- package/dist/connect/fixtures/commands.d.ts +8 -0
- package/dist/connect/fixtures/commands.js +146 -0
- package/dist/connect/fixtures/commands.js.map +1 -0
- package/dist/connect/fixtures/connections.d.ts +21 -0
- package/dist/connect/fixtures/connections.js +370 -0
- package/dist/connect/fixtures/connections.js.map +1 -0
- package/dist/connect/fixtures/identities.d.ts +10 -0
- package/dist/connect/fixtures/identities.js +61 -0
- package/dist/connect/fixtures/identities.js.map +1 -0
- package/dist/connect/fixtures/index.d.ts +11 -0
- package/dist/connect/fixtures/index.js +11 -0
- package/dist/connect/fixtures/index.js.map +1 -0
- package/dist/connect/fixtures/usage.d.ts +2 -0
- package/dist/connect/fixtures/usage.js +21 -0
- package/dist/connect/fixtures/usage.js.map +1 -0
- package/dist/connect/fixtures.d.ts +1 -0
- package/dist/connect/fixtures.js +1 -0
- package/dist/connect/from-notifications.d.ts +3 -0
- package/dist/connect/from-notifications.js +78 -0
- package/dist/connect/from-notifications.js.map +1 -0
- package/dist/connect/identity.d.ts +67 -0
- package/dist/connect/identity.js +24 -0
- package/dist/connect/identity.js.map +1 -0
- package/dist/connect/index.d.ts +13 -0
- package/dist/connect/index.js +22 -0
- package/dist/connect/index.js.map +1 -0
- package/dist/connect/next-up.d.ts +18 -0
- package/dist/connect/next-up.js +45 -0
- package/dist/connect/next-up.js.map +1 -0
- package/dist/connect/types.d.ts +354 -0
- package/dist/connect/types.js +68 -0
- package/dist/connect/types.js.map +1 -0
- package/dist/connect/use-connect.d.ts +51 -0
- package/dist/connect/use-connect.js +85 -0
- package/dist/connect/use-connect.js.map +1 -0
- package/dist/connect.d.ts +1 -0
- package/dist/connect.js +1 -0
- package/dist/converted-tag.d.ts +7 -0
- package/dist/converted-tag.js +9 -0
- package/dist/converted-tag.js.map +1 -0
- package/dist/countries.d.ts +65 -0
- package/dist/countries.js +374 -0
- package/dist/countries.js.map +1 -0
- package/dist/country-regions.d.ts +12 -0
- package/dist/country-regions.js +36 -0
- package/dist/country-regions.js.map +1 -0
- package/dist/csv.d.ts +28 -0
- package/dist/csv.js +91 -0
- package/dist/csv.js.map +1 -0
- package/dist/currency.d.ts +5 -0
- package/dist/currency.js +25 -0
- package/dist/currency.js.map +1 -0
- package/dist/customer-helpers.d.ts +30 -0
- package/dist/customer-helpers.js +66 -0
- package/dist/customer-helpers.js.map +1 -0
- package/dist/customer-stage.d.ts +125 -0
- package/dist/customer-stage.js +113 -0
- package/dist/customer-stage.js.map +1 -0
- package/dist/dashboard-destinations.d.ts +5 -0
- package/dist/dashboard-destinations.js +29 -0
- package/dist/dashboard-destinations.js.map +1 -0
- package/dist/demo-content-mock.d.ts +22 -0
- package/dist/demo-content-mock.js +70 -0
- package/dist/demo-content-mock.js.map +1 -0
- package/dist/demo-content-poller.d.ts +33 -0
- package/dist/demo-content-poller.js +80 -0
- package/dist/demo-content-poller.js.map +1 -0
- package/dist/demo-content.d.ts +43 -0
- package/dist/demo-content.js +78 -0
- package/dist/demo-content.js.map +1 -0
- package/dist/describe-activity.d.ts +44 -0
- package/dist/describe-activity.js +16 -0
- package/dist/describe-activity.js.map +1 -0
- package/dist/describe-invite.d.ts +19 -0
- package/dist/describe-invite.js +46 -0
- package/dist/describe-invite.js.map +1 -0
- package/dist/design-schema.d.ts +76 -0
- package/dist/design-schema.js +47 -0
- package/dist/design-schema.js.map +1 -0
- package/dist/destination-alias.d.ts +43 -0
- package/dist/destination-alias.js +146 -0
- package/dist/destination-alias.js.map +1 -0
- package/dist/document-numbering.d.ts +40 -0
- package/dist/document-numbering.js +48 -0
- package/dist/document-numbering.js.map +1 -0
- package/dist/document-title.d.ts +22 -0
- package/dist/document-title.js +85 -0
- package/dist/document-title.js.map +1 -0
- package/dist/editor/row-ops.d.ts +39 -0
- package/dist/editor/row-ops.js +25 -0
- package/dist/editor/row-ops.js.map +1 -0
- package/dist/editor-agent/apply-proposal.d.ts +12 -0
- package/dist/editor-agent/apply-proposal.js +44 -0
- package/dist/editor-agent/apply-proposal.js.map +1 -0
- package/dist/editor-agent/contracts.d.ts +174 -0
- package/dist/editor-agent/contracts.js +1 -0
- package/dist/editor-agent/contracts.js.map +1 -0
- package/dist/editor-agent/converse.d.ts +34 -0
- package/dist/editor-agent/converse.js +141 -0
- package/dist/editor-agent/converse.js.map +1 -0
- package/dist/editor-agent/flag.d.ts +12 -0
- package/dist/editor-agent/flag.js +19 -0
- package/dist/editor-agent/flag.js.map +1 -0
- package/dist/editor-agent/template-document.d.ts +52 -0
- package/dist/editor-agent/template-document.js +50 -0
- package/dist/editor-agent/template-document.js.map +1 -0
- package/dist/editor-agent/use-converse.d.ts +30 -0
- package/dist/editor-agent/use-converse.js +130 -0
- package/dist/editor-agent/use-converse.js.map +1 -0
- package/dist/effective-module-labels.d.ts +17 -0
- package/dist/effective-module-labels.js +14 -0
- package/dist/effective-module-labels.js.map +1 -0
- package/dist/embedded-frame.d.ts +30 -0
- package/dist/embedded-frame.js +23 -0
- package/dist/embedded-frame.js.map +1 -0
- package/dist/empty-state-copy.d.ts +27 -0
- package/dist/empty-state-copy.js +167 -0
- package/dist/empty-state-copy.js.map +1 -0
- package/dist/end-session.d.ts +23 -0
- package/dist/end-session.js +30 -0
- package/dist/end-session.js.map +1 -0
- package/dist/file-intake.d.ts +65 -0
- package/dist/file-intake.js +162 -0
- package/dist/file-intake.js.map +1 -0
- package/dist/first-run.d.ts +5 -0
- package/dist/first-run.js +13 -0
- package/dist/first-run.js.map +1 -0
- package/dist/form-answers.d.ts +57 -0
- package/dist/form-answers.js +79 -0
- package/dist/form-answers.js.map +1 -0
- package/dist/form-draft.d.ts +30 -0
- package/dist/form-draft.js +73 -0
- package/dist/form-draft.js.map +1 -0
- package/dist/format.d.ts +29 -0
- package/dist/format.js +21 -0
- package/dist/format.js.map +1 -0
- package/dist/fulfilment-nav.d.ts +79 -0
- package/dist/fulfilment-nav.js +18 -0
- package/dist/fulfilment-nav.js.map +1 -0
- package/dist/go-live-gate.d.ts +55 -0
- package/dist/go-live-gate.js +17 -0
- package/dist/go-live-gate.js.map +1 -0
- package/dist/group-activity.d.ts +37 -0
- package/dist/group-activity.js +43 -0
- package/dist/group-activity.js.map +1 -0
- package/dist/haptic.d.ts +5 -0
- package/dist/haptic.js +16 -0
- package/dist/haptic.js.map +1 -0
- package/dist/help-topics.d.ts +77 -0
- package/dist/help-topics.js +308 -0
- package/dist/help-topics.js.map +1 -0
- package/dist/icon-resolver.d.ts +45 -0
- package/dist/icon-resolver.js +40 -0
- package/dist/icon-resolver.js.map +1 -0
- package/dist/icons/commerce.d.ts +9 -0
- package/dist/icons/commerce.js +168 -0
- package/dist/icons/commerce.js.map +1 -0
- package/dist/icons/core.d.ts +9 -0
- package/dist/icons/core.js +173 -0
- package/dist/icons/core.js.map +1 -0
- package/dist/icons/making.d.ts +9 -0
- package/dist/icons/making.js +209 -0
- package/dist/icons/making.js.map +1 -0
- package/dist/icons/places.d.ts +9 -0
- package/dist/icons/places.js +232 -0
- package/dist/icons/places.js.map +1 -0
- package/dist/icons/world.d.ts +9 -0
- package/dist/icons/world.js +87 -0
- package/dist/icons/world.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/industry-configs/beauty.d.ts +2 -0
- package/dist/industry-configs/beauty.js +152 -0
- package/dist/industry-configs/beauty.js.map +1 -0
- package/dist/industry-configs/creative.d.ts +2 -0
- package/dist/industry-configs/creative.js +131 -0
- package/dist/industry-configs/creative.js.map +1 -0
- package/dist/industry-configs/default.d.ts +2 -0
- package/dist/industry-configs/default.js +77 -0
- package/dist/industry-configs/default.js.map +1 -0
- package/dist/industry-configs/education.d.ts +2 -0
- package/dist/industry-configs/education.js +137 -0
- package/dist/industry-configs/education.js.map +1 -0
- package/dist/industry-configs/events.d.ts +2 -0
- package/dist/industry-configs/events.js +118 -0
- package/dist/industry-configs/events.js.map +1 -0
- package/dist/industry-configs/fashion.d.ts +2 -0
- package/dist/industry-configs/fashion.js +128 -0
- package/dist/industry-configs/fashion.js.map +1 -0
- package/dist/industry-configs/fitness.d.ts +2 -0
- package/dist/industry-configs/fitness.js +128 -0
- package/dist/industry-configs/fitness.js.map +1 -0
- package/dist/industry-configs/food.d.ts +2 -0
- package/dist/industry-configs/food.js +138 -0
- package/dist/industry-configs/food.js.map +1 -0
- package/dist/industry-configs/hospitality.d.ts +2 -0
- package/dist/industry-configs/hospitality.js +157 -0
- package/dist/industry-configs/hospitality.js.map +1 -0
- package/dist/industry-configs/index.d.ts +25 -0
- package/dist/industry-configs/index.js +77 -0
- package/dist/industry-configs/index.js.map +1 -0
- package/dist/industry-configs/professional.d.ts +2 -0
- package/dist/industry-configs/professional.js +129 -0
- package/dist/industry-configs/professional.js.map +1 -0
- package/dist/industry-configs/realestate.d.ts +2 -0
- package/dist/industry-configs/realestate.js +146 -0
- package/dist/industry-configs/realestate.js.map +1 -0
- package/dist/industry-configs/retail.d.ts +2 -0
- package/dist/industry-configs/retail.js +108 -0
- package/dist/industry-configs/retail.js.map +1 -0
- package/dist/industry-configs/services.d.ts +2 -0
- package/dist/industry-configs/services.js +120 -0
- package/dist/industry-configs/services.js.map +1 -0
- package/dist/industry-configs/technology.d.ts +2 -0
- package/dist/industry-configs/technology.js +120 -0
- package/dist/industry-configs/technology.js.map +1 -0
- package/dist/industry-configs/types.d.ts +99 -0
- package/dist/industry-configs/types.js +1 -0
- package/dist/industry-configs/types.js.map +1 -0
- package/dist/industry-configs/wellness.d.ts +2 -0
- package/dist/industry-configs/wellness.js +112 -0
- package/dist/industry-configs/wellness.js.map +1 -0
- package/dist/industry-configs.d.ts +1 -0
- package/dist/industry-configs.js +1 -0
- package/dist/intents/analytics-labels.d.ts +70 -0
- package/dist/intents/analytics-labels.js +39 -0
- package/dist/intents/analytics-labels.js.map +1 -0
- package/dist/intents/archetype-flow.d.ts +146 -0
- package/dist/intents/archetype-flow.js +185 -0
- package/dist/intents/archetype-flow.js.map +1 -0
- package/dist/intents/booking-query-style.d.ts +32 -0
- package/dist/intents/booking-query-style.js +22 -0
- package/dist/intents/booking-query-style.js.map +1 -0
- package/dist/intents/capture-leads.config.d.ts +31 -0
- package/dist/intents/capture-leads.config.js +231 -0
- package/dist/intents/capture-leads.config.js.map +1 -0
- package/dist/intents/catalog-stock.d.ts +43 -0
- package/dist/intents/catalog-stock.js +43 -0
- package/dist/intents/catalog-stock.js.map +1 -0
- package/dist/intents/collapse-shared-nav.d.ts +95 -0
- package/dist/intents/collapse-shared-nav.js +171 -0
- package/dist/intents/collapse-shared-nav.js.map +1 -0
- package/dist/intents/default-commerce.config.d.ts +6 -0
- package/dist/intents/default-commerce.config.js +281 -0
- package/dist/intents/default-commerce.config.js.map +1 -0
- package/dist/intents/digital-products.config.d.ts +2 -0
- package/dist/intents/digital-products.config.js +239 -0
- package/dist/intents/digital-products.config.js.map +1 -0
- package/dist/intents/dine-in.config.d.ts +15 -0
- package/dist/intents/dine-in.config.js +331 -0
- package/dist/intents/dine-in.config.js.map +1 -0
- package/dist/intents/event-tickets.config.d.ts +2 -0
- package/dist/intents/event-tickets.config.js +368 -0
- package/dist/intents/event-tickets.config.js.map +1 -0
- package/dist/intents/food-orders.config.d.ts +2 -0
- package/dist/intents/food-orders.config.js +299 -0
- package/dist/intents/food-orders.config.js.map +1 -0
- package/dist/intents/icon-map.d.ts +15 -0
- package/dist/intents/icon-map.js +104 -0
- package/dist/intents/icon-map.js.map +1 -0
- package/dist/intents/index.d.ts +12 -0
- package/dist/intents/index.js +50 -0
- package/dist/intents/index.js.map +1 -0
- package/dist/intents/infer-intents.d.ts +10 -0
- package/dist/intents/infer-intents.js +23 -0
- package/dist/intents/infer-intents.js.map +1 -0
- package/dist/intents/intent-chips.d.ts +47 -0
- package/dist/intents/intent-chips.js +38 -0
- package/dist/intents/intent-chips.js.map +1 -0
- package/dist/intents/intent-nav.d.ts +95 -0
- package/dist/intents/intent-nav.js +423 -0
- package/dist/intents/intent-nav.js.map +1 -0
- package/dist/intents/intent-scope.d.ts +52 -0
- package/dist/intents/intent-scope.js +19 -0
- package/dist/intents/intent-scope.js.map +1 -0
- package/dist/intents/nav-coverage.d.ts +71 -0
- package/dist/intents/nav-coverage.js +132 -0
- package/dist/intents/nav-coverage.js.map +1 -0
- package/dist/intents/operating-shell.d.ts +45 -0
- package/dist/intents/operating-shell.js +142 -0
- package/dist/intents/operating-shell.js.map +1 -0
- package/dist/intents/order-display.d.ts +21 -0
- package/dist/intents/order-display.js +110 -0
- package/dist/intents/order-display.js.map +1 -0
- package/dist/intents/order-intent.d.ts +18 -0
- package/dist/intents/order-intent.js +14 -0
- package/dist/intents/order-intent.js.map +1 -0
- package/dist/intents/order-progress.d.ts +81 -0
- package/dist/intents/order-progress.js +91 -0
- package/dist/intents/order-progress.js.map +1 -0
- package/dist/intents/order-sections.d.ts +173 -0
- package/dist/intents/order-sections.js +188 -0
- package/dist/intents/order-sections.js.map +1 -0
- package/dist/intents/order-stats.d.ts +24 -0
- package/dist/intents/order-stats.js +16 -0
- package/dist/intents/order-stats.js.map +1 -0
- package/dist/intents/order-transitions.d.ts +19 -0
- package/dist/intents/order-transitions.js +66 -0
- package/dist/intents/order-transitions.js.map +1 -0
- package/dist/intents/product-editor-config.d.ts +23 -0
- package/dist/intents/product-editor-config.js +13 -0
- package/dist/intents/product-editor-config.js.map +1 -0
- package/dist/intents/product-intent.d.ts +38 -0
- package/dist/intents/product-intent.js +19 -0
- package/dist/intents/product-intent.js.map +1 -0
- package/dist/intents/registry.d.ts +32 -0
- package/dist/intents/registry.js +41 -0
- package/dist/intents/registry.js.map +1 -0
- package/dist/intents/rent-property.config.d.ts +2 -0
- package/dist/intents/rent-property.config.js +284 -0
- package/dist/intents/rent-property.config.js.map +1 -0
- package/dist/intents/resolve-stats.d.ts +7 -0
- package/dist/intents/resolve-stats.js +29 -0
- package/dist/intents/resolve-stats.js.map +1 -0
- package/dist/intents/resolve-tenant-intents.d.ts +11 -0
- package/dist/intents/resolve-tenant-intents.js +61 -0
- package/dist/intents/resolve-tenant-intents.js.map +1 -0
- package/dist/intents/resolvers.d.ts +52 -0
- package/dist/intents/resolvers.js +177 -0
- package/dist/intents/resolvers.js.map +1 -0
- package/dist/intents/row-identity.d.ts +62 -0
- package/dist/intents/row-identity.js +25 -0
- package/dist/intents/row-identity.js.map +1 -0
- package/dist/intents/sales-verb.d.ts +8 -0
- package/dist/intents/sales-verb.js +12 -0
- package/dist/intents/sales-verb.js.map +1 -0
- package/dist/intents/scoped-config.d.ts +12 -0
- package/dist/intents/scoped-config.js +17 -0
- package/dist/intents/scoped-config.js.map +1 -0
- package/dist/intents/screen-title.d.ts +27 -0
- package/dist/intents/screen-title.js +59 -0
- package/dist/intents/screen-title.js.map +1 -0
- package/dist/intents/section-registry.d.ts +48 -0
- package/dist/intents/section-registry.js +33 -0
- package/dist/intents/section-registry.js.map +1 -0
- package/dist/intents/sell-products.config.d.ts +2 -0
- package/dist/intents/sell-products.config.js +275 -0
- package/dist/intents/sell-products.config.js.map +1 -0
- package/dist/intents/send-invoices.config.d.ts +16 -0
- package/dist/intents/send-invoices.config.js +223 -0
- package/dist/intents/send-invoices.config.js.map +1 -0
- package/dist/intents/subscriptions.config.d.ts +2 -0
- package/dist/intents/subscriptions.config.js +260 -0
- package/dist/intents/subscriptions.config.js.map +1 -0
- package/dist/intents/take-bookings.config.d.ts +2 -0
- package/dist/intents/take-bookings.config.js +298 -0
- package/dist/intents/take-bookings.config.js.map +1 -0
- package/dist/intents/types.d.ts +246 -0
- package/dist/intents/types.js +1 -0
- package/dist/intents/types.js.map +1 -0
- package/dist/intents/use-active-intent.d.ts +27 -0
- package/dist/intents/use-active-intent.js +74 -0
- package/dist/intents/use-active-intent.js.map +1 -0
- package/dist/intents/use-destination-label.d.ts +18 -0
- package/dist/intents/use-destination-label.js +45 -0
- package/dist/intents/use-destination-label.js.map +1 -0
- package/dist/intents/use-entity-label.d.ts +32 -0
- package/dist/intents/use-entity-label.js +75 -0
- package/dist/intents/use-entity-label.js.map +1 -0
- package/dist/intents/use-intent-config.d.ts +20 -0
- package/dist/intents/use-intent-config.js +91 -0
- package/dist/intents/use-intent-config.js.map +1 -0
- package/dist/intents/use-intent-nav-rows.d.ts +26 -0
- package/dist/intents/use-intent-nav-rows.js +49 -0
- package/dist/intents/use-intent-nav-rows.js.map +1 -0
- package/dist/intents/use-resource-label.d.ts +10 -0
- package/dist/intents/use-resource-label.js +9 -0
- package/dist/intents/use-resource-label.js.map +1 -0
- package/dist/intents/use-row-noun.d.ts +19 -0
- package/dist/intents/use-row-noun.js +13 -0
- package/dist/intents/use-row-noun.js.map +1 -0
- package/dist/intents/use-screen-title.d.ts +9 -0
- package/dist/intents/use-screen-title.js +25 -0
- package/dist/intents/use-screen-title.js.map +1 -0
- package/dist/intents/what-it-adds.d.ts +70 -0
- package/dist/intents/what-it-adds.js +29 -0
- package/dist/intents/what-it-adds.js.map +1 -0
- package/dist/intents/workflow-shape.d.ts +66 -0
- package/dist/intents/workflow-shape.js +151 -0
- package/dist/intents/workflow-shape.js.map +1 -0
- package/dist/intents.d.ts +1 -0
- package/dist/intents.js +1 -0
- package/dist/invite-refusal.d.ts +37 -0
- package/dist/invite-refusal.js +26 -0
- package/dist/invite-refusal.js.map +1 -0
- package/dist/invoice-brand.d.ts +28 -0
- package/dist/invoice-brand.js +33 -0
- package/dist/invoice-brand.js.map +1 -0
- package/dist/ios-navigation-context.d.ts +11 -0
- package/dist/ios-navigation-context.js +52 -0
- package/dist/ios-navigation-context.js.map +1 -0
- package/dist/legal-links.d.ts +10 -0
- package/dist/legal-links.js +7 -0
- package/dist/legal-links.js.map +1 -0
- package/dist/letting-policy.d.ts +85 -0
- package/dist/letting-policy.js +47 -0
- package/dist/letting-policy.js.map +1 -0
- package/dist/list-page-size.d.ts +24 -0
- package/dist/list-page-size.js +5 -0
- package/dist/list-page-size.js.map +1 -0
- package/dist/live-events/sse-frames.d.ts +15 -0
- package/dist/live-events/sse-frames.js +37 -0
- package/dist/live-events/sse-frames.js.map +1 -0
- package/dist/location-options.d.ts +16 -0
- package/dist/location-options.js +94 -0
- package/dist/location-options.js.map +1 -0
- package/dist/location-scope-context.d.ts +47 -0
- package/dist/location-scope-context.js +85 -0
- package/dist/location-scope-context.js.map +1 -0
- package/dist/media-service.d.ts +97 -0
- package/dist/media-service.js +282 -0
- package/dist/media-service.js.map +1 -0
- package/dist/media-utils.d.ts +51 -0
- package/dist/media-utils.js +85 -0
- package/dist/media-utils.js.map +1 -0
- package/dist/member-presence.d.ts +40 -0
- package/dist/member-presence.js +77 -0
- package/dist/member-presence.js.map +1 -0
- package/dist/member-subscription-enrollment.d.ts +16 -0
- package/dist/member-subscription-enrollment.js +32 -0
- package/dist/member-subscription-enrollment.js.map +1 -0
- package/dist/membership-freshness.d.ts +31 -0
- package/dist/membership-freshness.js +21 -0
- package/dist/membership-freshness.js.map +1 -0
- package/dist/mobile-header-context.d.ts +32 -0
- package/dist/mobile-header-context.js +59 -0
- package/dist/mobile-header-context.js.map +1 -0
- package/dist/mobile-routes.d.ts +81 -0
- package/dist/mobile-routes.js +406 -0
- package/dist/mobile-routes.js.map +1 -0
- package/dist/mobile-tab-config.d.ts +18 -0
- package/dist/mobile-tab-config.js +43 -0
- package/dist/mobile-tab-config.js.map +1 -0
- package/dist/money-coming-soon.d.ts +16 -0
- package/dist/money-coming-soon.js +22 -0
- package/dist/money-coming-soon.js.map +1 -0
- package/dist/money-minor.d.ts +17 -0
- package/dist/money-minor.js +53 -0
- package/dist/money-minor.js.map +1 -0
- package/dist/money-visibility.d.ts +38 -0
- package/dist/money-visibility.js +13 -0
- package/dist/money-visibility.js.map +1 -0
- package/dist/motion.d.ts +160 -0
- package/dist/motion.js +130 -0
- package/dist/motion.js.map +1 -0
- package/dist/nav-pending.d.ts +42 -0
- package/dist/nav-pending.js +84 -0
- package/dist/nav-pending.js.map +1 -0
- package/dist/navigation-groups.d.ts +52 -0
- package/dist/navigation-groups.js +64 -0
- package/dist/navigation-groups.js.map +1 -0
- package/dist/onboarding-draft.d.ts +23 -0
- package/dist/onboarding-draft.js +35 -0
- package/dist/onboarding-draft.js.map +1 -0
- package/dist/operating-model/index.d.ts +4 -0
- package/dist/operating-model/index.js +13 -0
- package/dist/operating-model/index.js.map +1 -0
- package/dist/operating-model/order-display.d.ts +10 -0
- package/dist/operating-model/order-display.js +24 -0
- package/dist/operating-model/order-display.js.map +1 -0
- package/dist/operating-model/resolver.d.ts +9 -0
- package/dist/operating-model/resolver.js +110 -0
- package/dist/operating-model/resolver.js.map +1 -0
- package/dist/operating-model/types.d.ts +36 -0
- package/dist/operating-model/types.js +1 -0
- package/dist/operating-model/types.js.map +1 -0
- package/dist/operating-model/use-operating-model.d.ts +7 -0
- package/dist/operating-model/use-operating-model.js +65 -0
- package/dist/operating-model/use-operating-model.js.map +1 -0
- package/dist/operating-model.d.ts +1 -0
- package/dist/operating-model.js +1 -0
- package/dist/order-config.d.ts +30 -0
- package/dist/order-config.js +56 -0
- package/dist/order-config.js.map +1 -0
- package/dist/order-discounts.d.ts +25 -0
- package/dist/order-discounts.js +27 -0
- package/dist/order-discounts.js.map +1 -0
- package/dist/order-shipping.d.ts +33 -0
- package/dist/order-shipping.js +49 -0
- package/dist/order-shipping.js.map +1 -0
- package/dist/order-tax.d.ts +28 -0
- package/dist/order-tax.js +21 -0
- package/dist/order-tax.js.map +1 -0
- package/dist/page-intros.d.ts +78 -0
- package/dist/page-intros.js +164 -0
- package/dist/page-intros.js.map +1 -0
- package/dist/page-transition.d.ts +20 -0
- package/dist/page-transition.js +19 -0
- package/dist/page-transition.js.map +1 -0
- package/dist/pages-api-response.d.ts +8 -0
- package/dist/pages-api-response.js +18 -0
- package/dist/pages-api-response.js.map +1 -0
- package/dist/payment-method-label.d.ts +6 -0
- package/dist/payment-method-label.js +14 -0
- package/dist/payment-method-label.js.map +1 -0
- package/dist/permission-aliases.d.ts +18 -0
- package/dist/permission-aliases.js +20 -0
- package/dist/permission-aliases.js.map +1 -0
- package/dist/permission-catalog-fallback.d.ts +17 -0
- package/dist/permission-catalog-fallback.js +147 -0
- package/dist/permission-catalog-fallback.js.map +1 -0
- package/dist/permission-change.d.ts +42 -0
- package/dist/permission-change.js +33 -0
- package/dist/permission-change.js.map +1 -0
- package/dist/phone.d.ts +16 -0
- package/dist/phone.js +20 -0
- package/dist/phone.js.map +1 -0
- package/dist/plan-access.d.ts +39 -0
- package/dist/plan-access.js +57 -0
- package/dist/plan-access.js.map +1 -0
- package/dist/plan-card-api.d.ts +34 -0
- package/dist/plan-card-api.js +30 -0
- package/dist/plan-card-api.js.map +1 -0
- package/dist/plan-price.d.ts +34 -0
- package/dist/plan-price.js +57 -0
- package/dist/plan-price.js.map +1 -0
- package/dist/post-login-target.d.ts +24 -0
- package/dist/post-login-target.js +12 -0
- package/dist/post-login-target.js.map +1 -0
- package/dist/potter-mark-paths.d.ts +21 -0
- package/dist/potter-mark-paths.js +9 -0
- package/dist/potter-mark-paths.js.map +1 -0
- package/dist/pricing-plans-types.d.ts +143 -0
- package/dist/pricing-plans-types.js +1 -0
- package/dist/pricing-plans-types.js.map +1 -0
- package/dist/product-assignees.d.ts +1 -0
- package/dist/product-assignees.js +18 -0
- package/dist/product-assignees.js.map +1 -0
- package/dist/product-collection-sync.d.ts +12 -0
- package/dist/product-collection-sync.js +97 -0
- package/dist/product-collection-sync.js.map +1 -0
- package/dist/product-cost.d.ts +12 -0
- package/dist/product-cost.js +24 -0
- package/dist/product-cost.js.map +1 -0
- package/dist/product-insights-api.d.ts +38 -0
- package/dist/product-insights-api.js +51 -0
- package/dist/product-insights-api.js.map +1 -0
- package/dist/product-types.d.ts +311 -0
- package/dist/product-types.js +38 -0
- package/dist/product-types.js.map +1 -0
- package/dist/promised-day.d.ts +33 -0
- package/dist/promised-day.js +38 -0
- package/dist/promised-day.js.map +1 -0
- package/dist/proposals-api.d.ts +96 -0
- package/dist/proposals-api.js +41 -0
- package/dist/proposals-api.js.map +1 -0
- package/dist/proxy-allowlist.d.ts +15 -0
- package/dist/proxy-allowlist.js +153 -0
- package/dist/proxy-allowlist.js.map +1 -0
- package/dist/public-config-loader.d.ts +27 -0
- package/dist/public-config-loader.js +12 -0
- package/dist/public-config-loader.js.map +1 -0
- package/dist/public-config-provider.d.ts +16 -0
- package/dist/public-config-provider.js +14 -0
- package/dist/public-config-provider.js.map +1 -0
- package/dist/resolve-enabled-behaviors.d.ts +55 -0
- package/dist/resolve-enabled-behaviors.js +134 -0
- package/dist/resolve-enabled-behaviors.js.map +1 -0
- package/dist/resource-types.d.ts +198 -0
- package/dist/resource-types.js +96 -0
- package/dist/resource-types.js.map +1 -0
- package/dist/resume-screen.d.ts +31 -0
- package/dist/resume-screen.js +25 -0
- package/dist/resume-screen.js.map +1 -0
- package/dist/rider-display.d.ts +37 -0
- package/dist/rider-display.js +110 -0
- package/dist/rider-display.js.map +1 -0
- package/dist/rider-view.d.ts +37 -0
- package/dist/rider-view.js +47 -0
- package/dist/rider-view.js.map +1 -0
- package/dist/roster-label.d.ts +27 -0
- package/dist/roster-label.js +8 -0
- package/dist/roster-label.js.map +1 -0
- package/dist/route-pattern.d.ts +11 -0
- package/dist/route-pattern.js +20 -0
- package/dist/route-pattern.js.map +1 -0
- package/dist/route-permission.d.ts +60 -0
- package/dist/route-permission.js +48 -0
- package/dist/route-permission.js.map +1 -0
- package/dist/runtime-config.d.ts +33 -0
- package/dist/runtime-config.js +23 -0
- package/dist/runtime-config.js.map +1 -0
- package/dist/schema-validation.d.ts +172 -0
- package/dist/schema-validation.js +252 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/service-areas.d.ts +30 -0
- package/dist/service-areas.js +24 -0
- package/dist/service-areas.js.map +1 -0
- package/dist/service-operations-api.d.ts +78 -0
- package/dist/service-operations-api.js +37 -0
- package/dist/service-operations-api.js.map +1 -0
- package/dist/settings-relevance.d.ts +64 -0
- package/dist/settings-relevance.js +25 -0
- package/dist/settings-relevance.js.map +1 -0
- package/dist/singularise.d.ts +16 -0
- package/dist/singularise.js +37 -0
- package/dist/singularise.js.map +1 -0
- package/dist/site-address.d.ts +14 -0
- package/dist/site-address.js +28 -0
- package/dist/site-address.js.map +1 -0
- package/dist/slug.d.ts +26 -0
- package/dist/slug.js +15 -0
- package/dist/slug.js.map +1 -0
- package/dist/sound.d.ts +14 -0
- package/dist/sound.js +166 -0
- package/dist/sound.js.map +1 -0
- package/dist/staff-arrival.d.ts +3 -0
- package/dist/staff-arrival.js +11 -0
- package/dist/staff-arrival.js.map +1 -0
- package/dist/staff-home.d.ts +58 -0
- package/dist/staff-home.js +90 -0
- package/dist/staff-home.js.map +1 -0
- package/dist/staff-landing.d.ts +1 -0
- package/dist/staff-landing.js +15 -0
- package/dist/staff-landing.js.map +1 -0
- package/dist/stat-card-types.d.ts +19 -0
- package/dist/stat-card-types.js +1 -0
- package/dist/stat-card-types.js.map +1 -0
- package/dist/stock-levels.d.ts +32 -0
- package/dist/stock-levels.js +17 -0
- package/dist/stock-levels.js.map +1 -0
- package/dist/stored-token.d.ts +1 -0
- package/dist/stored-token.js +11 -0
- package/dist/stored-token.js.map +1 -0
- package/dist/storefront-url.d.ts +31 -0
- package/dist/storefront-url.js +40 -0
- package/dist/storefront-url.js.map +1 -0
- package/dist/storefront.d.ts +64 -0
- package/dist/storefront.js +51 -0
- package/dist/storefront.js.map +1 -0
- package/dist/subscription-billing-api.d.ts +115 -0
- package/dist/subscription-billing-api.js +27 -0
- package/dist/subscription-billing-api.js.map +1 -0
- package/dist/subscription-billing-model.d.ts +26 -0
- package/dist/subscription-billing-model.js +58 -0
- package/dist/subscription-billing-model.js.map +1 -0
- package/dist/support-case-subject.d.ts +10 -0
- package/dist/support-case-subject.js +13 -0
- package/dist/support-case-subject.js.map +1 -0
- package/dist/support-inbox.d.ts +6 -0
- package/dist/support-inbox.js +5 -0
- package/dist/support-inbox.js.map +1 -0
- package/dist/support.d.ts +7 -0
- package/dist/support.js +16 -0
- package/dist/support.js.map +1 -0
- package/dist/team-page.d.ts +9 -0
- package/dist/team-page.js +5 -0
- package/dist/team-page.js.map +1 -0
- package/dist/team-roles.d.ts +140 -0
- package/dist/team-roles.js +247 -0
- package/dist/team-roles.js.map +1 -0
- package/dist/team-successors.d.ts +20 -0
- package/dist/team-successors.js +13 -0
- package/dist/team-successors.js.map +1 -0
- package/dist/template-asset-url.d.ts +11 -0
- package/dist/template-asset-url.js +8 -0
- package/dist/template-asset-url.js.map +1 -0
- package/dist/template-capabilities.d.ts +2 -0
- package/dist/template-capabilities.js +71 -0
- package/dist/template-capabilities.js.map +1 -0
- package/dist/template-context.d.ts +111 -0
- package/dist/template-context.js +1278 -0
- package/dist/template-context.js.map +1 -0
- package/dist/template-filter.d.ts +29 -0
- package/dist/template-filter.js +41 -0
- package/dist/template-filter.js.map +1 -0
- package/dist/template-preview/preview-author-patch.d.ts +24 -0
- package/dist/template-preview/preview-author-patch.js +78 -0
- package/dist/template-preview/preview-author-patch.js.map +1 -0
- package/dist/template-preview/use-template-document.d.ts +38 -0
- package/dist/template-preview/use-template-document.js +45 -0
- package/dist/template-preview/use-template-document.js.map +1 -0
- package/dist/template-requirements.d.ts +38 -0
- package/dist/template-requirements.js +13 -0
- package/dist/template-requirements.js.map +1 -0
- package/dist/template-types.d.ts +317 -0
- package/dist/template-types.js +1 -0
- package/dist/template-types.js.map +1 -0
- package/dist/templates.d.ts +22 -0
- package/dist/templates.js +1 -0
- package/dist/templates.js.map +1 -0
- package/dist/theme-context.d.ts +58 -0
- package/dist/theme-context.js +283 -0
- package/dist/theme-context.js.map +1 -0
- package/dist/theme-policy.d.ts +41 -0
- package/dist/theme-policy.js +32 -0
- package/dist/theme-policy.js.map +1 -0
- package/dist/ticket-access.d.ts +20 -0
- package/dist/ticket-access.js +39 -0
- package/dist/ticket-access.js.map +1 -0
- package/dist/timeline-copy.d.ts +65 -0
- package/dist/timeline-copy.js +150 -0
- package/dist/timeline-copy.js.map +1 -0
- package/dist/url-params.d.ts +23 -0
- package/dist/url-params.js +43 -0
- package/dist/url-params.js.map +1 -0
- package/dist/use-behaviors.d.ts +13 -0
- package/dist/use-behaviors.js +41 -0
- package/dist/use-behaviors.js.map +1 -0
- package/dist/use-business-locations.d.ts +35 -0
- package/dist/use-business-locations.js +71 -0
- package/dist/use-business-locations.js.map +1 -0
- package/dist/use-currency.d.ts +12 -0
- package/dist/use-currency.js +16 -0
- package/dist/use-currency.js.map +1 -0
- package/dist/use-empty-state-copy.d.ts +12 -0
- package/dist/use-empty-state-copy.js +13 -0
- package/dist/use-empty-state-copy.js.map +1 -0
- package/dist/use-geo-cities.d.ts +1 -0
- package/dist/use-geo-cities.js +42 -0
- package/dist/use-geo-cities.js.map +1 -0
- package/dist/use-has-hardware.d.ts +13 -0
- package/dist/use-has-hardware.js +14 -0
- package/dist/use-has-hardware.js.map +1 -0
- package/dist/use-industry-key.d.ts +10 -0
- package/dist/use-industry-key.js +16 -0
- package/dist/use-industry-key.js.map +1 -0
- package/dist/use-item-links.d.ts +20 -0
- package/dist/use-item-links.js +30 -0
- package/dist/use-item-links.js.map +1 -0
- package/dist/use-job-roles.d.ts +21 -0
- package/dist/use-job-roles.js +76 -0
- package/dist/use-job-roles.js.map +1 -0
- package/dist/use-merchant-plan.d.ts +36 -0
- package/dist/use-merchant-plan.js +78 -0
- package/dist/use-merchant-plan.js.map +1 -0
- package/dist/use-module-label.d.ts +12 -0
- package/dist/use-module-label.js +13 -0
- package/dist/use-module-label.js.map +1 -0
- package/dist/use-money-visibility.d.ts +14 -0
- package/dist/use-money-visibility.js +13 -0
- package/dist/use-money-visibility.js.map +1 -0
- package/dist/use-nav-groups.d.ts +27 -0
- package/dist/use-nav-groups.js +141 -0
- package/dist/use-nav-groups.js.map +1 -0
- package/dist/use-pathname.d.ts +15 -0
- package/dist/use-pathname.js +29 -0
- package/dist/use-pathname.js.map +1 -0
- package/dist/use-permissions.d.ts +43 -0
- package/dist/use-permissions.js +158 -0
- package/dist/use-permissions.js.map +1 -0
- package/dist/use-platform-modules.d.ts +49 -0
- package/dist/use-platform-modules.js +416 -0
- package/dist/use-platform-modules.js.map +1 -0
- package/dist/use-staff-home.d.ts +9 -0
- package/dist/use-staff-home.js +24 -0
- package/dist/use-staff-home.js.map +1 -0
- package/dist/use-workspace-invite.d.ts +37 -0
- package/dist/use-workspace-invite.js +69 -0
- package/dist/use-workspace-invite.js.map +1 -0
- package/dist/utils.d.ts +53 -0
- package/dist/utils.js +161 -0
- package/dist/utils.js.map +1 -0
- package/dist/wallet-format.d.ts +8 -0
- package/dist/wallet-format.js +36 -0
- package/dist/wallet-format.js.map +1 -0
- package/dist/wallet-settlement.d.ts +14 -0
- package/dist/wallet-settlement.js +5 -0
- package/dist/wallet-settlement.js.map +1 -0
- package/dist/web-url.d.ts +1 -0
- package/dist/web-url.js +50 -0
- package/dist/web-url.js.map +1 -0
- package/dist/whats-new.d.ts +59 -0
- package/dist/whats-new.js +77 -0
- package/dist/whats-new.js.map +1 -0
- package/dist/workspace-recents.d.ts +30 -0
- package/dist/workspace-recents.js +37 -0
- package/dist/workspace-recents.js.map +1 -0
- package/dist/workspace-slug.d.ts +1 -0
- package/dist/workspace-slug.js +15 -0
- package/dist/workspace-slug.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two axes a merchant actually thinks in, derived from the three status
|
|
3
|
+
* machines an order carries.
|
|
4
|
+
*
|
|
5
|
+
* An order has `status`, `paymentStatus` and `fulfillmentStatus`, each with its
|
|
6
|
+
* own vocabulary. Nobody opens this page thinking "set fulfillment to partial".
|
|
7
|
+
* They think "did the money land?" and "has it gone out?" — so this collapses
|
|
8
|
+
* the three into a **money** axis, a **delivery** axis, and one derived next
|
|
9
|
+
* action, all driven by the intent's `orderDisplay` so every archetype inherits
|
|
10
|
+
* the same shape with its own words.
|
|
11
|
+
*
|
|
12
|
+
* The underlying statuses stay editable on the detail page: this decides what
|
|
13
|
+
* leads, not what's reachable.
|
|
14
|
+
*/
|
|
15
|
+
import type { DeliveryMethod, FulfillmentStatus, OrderStatus, PaymentStatus } from '@withpotter/lib/api/types';
|
|
16
|
+
import type { OrderDisplay } from './types';
|
|
17
|
+
export type StepState = 'done' | 'current' | 'upcoming';
|
|
18
|
+
export interface ProgressStep {
|
|
19
|
+
key: string;
|
|
20
|
+
label: string;
|
|
21
|
+
state: StepState;
|
|
22
|
+
}
|
|
23
|
+
export interface ProgressAxis {
|
|
24
|
+
/** Axis heading, e.g. "Payment" or the intent's fulfillment label. */
|
|
25
|
+
label: string;
|
|
26
|
+
steps: ProgressStep[];
|
|
27
|
+
/**
|
|
28
|
+
* Set when the axis ended somewhere off the happy path (refunded, partially
|
|
29
|
+
* refunded). The steps are then meaningless and the caller shows this alone.
|
|
30
|
+
*/
|
|
31
|
+
terminal?: {
|
|
32
|
+
label: string;
|
|
33
|
+
tone: 'error' | 'warning';
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export type NextActionKey = 'confirm-transfer' | 'fulfill' | 'advance-status' | 'none';
|
|
37
|
+
export interface OrderNextAction {
|
|
38
|
+
key: NextActionKey;
|
|
39
|
+
label: string;
|
|
40
|
+
/** For 'advance-status', the status to move to. */
|
|
41
|
+
status?: OrderStatus;
|
|
42
|
+
/** For 'fulfill', the fulfillment state to move to. */
|
|
43
|
+
fulfillmentStatus?: FulfillmentStatus;
|
|
44
|
+
}
|
|
45
|
+
export declare function resolveMoneyAxis(paymentStatus: PaymentStatus): ProgressAxis;
|
|
46
|
+
/**
|
|
47
|
+
* The delivery axis is entirely intent-owned: its steps and their words come
|
|
48
|
+
* from `orderDisplay.fulfillmentLabels`, so a padel club reads "Checked in"
|
|
49
|
+
* where a shop reads "Shipped" with no branching here.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveDeliveryAxis(orderDisplay: OrderDisplay | undefined, fulfillmentStatus: FulfillmentStatus,
|
|
52
|
+
/**
|
|
53
|
+
* Overrides the axis vocabulary for orders whose delivery isn't physical —
|
|
54
|
+
* a ticket order reads "Pending → Tickets issued", not "Unfulfilled → Shipped".
|
|
55
|
+
*/
|
|
56
|
+
overrides?: {
|
|
57
|
+
label?: string;
|
|
58
|
+
stepLabels?: Partial<Record<string, string>>;
|
|
59
|
+
}): ProgressAxis;
|
|
60
|
+
interface NextActionInput {
|
|
61
|
+
status: OrderStatus;
|
|
62
|
+
paymentStatus: PaymentStatus;
|
|
63
|
+
fulfillmentStatus: FulfillmentStatus;
|
|
64
|
+
orderDisplay?: OrderDisplay;
|
|
65
|
+
intentKey?: string;
|
|
66
|
+
/** False when this order has nothing to fulfil (tickets, or config says so). */
|
|
67
|
+
canFulfill: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* How this order reaches the customer. Only the fulfil step reads it, and
|
|
70
|
+
* only to name itself: "Mark as Shipped" is the wrong verb for a rider going
|
|
71
|
+
* across town, and it is the button the merchant actually clicks.
|
|
72
|
+
*/
|
|
73
|
+
deliveryMethod?: DeliveryMethod | null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The single next thing to do, in the order money actually moves: verify what
|
|
77
|
+
* the buyer claims, then get the goods out, then advance the workflow. Returns
|
|
78
|
+
* `none` when the order is settled or the only moves left are escape hatches.
|
|
79
|
+
*/
|
|
80
|
+
export declare function resolveNextAction({ status, paymentStatus, fulfillmentStatus, orderDisplay, intentKey, canFulfill, deliveryMethod, }: NextActionInput): OrderNextAction;
|
|
81
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveFulfillmentModalCopy,
|
|
3
|
+
resolveFulfillmentStatusKeys,
|
|
4
|
+
resolveFulfillmentStatusLabel,
|
|
5
|
+
resolveOrderStatusLabel
|
|
6
|
+
} from "./order-display";
|
|
7
|
+
import { getAllowedOrderTransitions } from "./order-transitions";
|
|
8
|
+
const MONEY_PATH = ["unpaid", "awaiting_confirmation", "paid"];
|
|
9
|
+
const MONEY_LABELS = {
|
|
10
|
+
unpaid: "Awaiting payment",
|
|
11
|
+
awaiting_confirmation: "Claimed",
|
|
12
|
+
paid: "Paid",
|
|
13
|
+
partially_refunded: "Partially refunded",
|
|
14
|
+
refunded: "Refunded"
|
|
15
|
+
};
|
|
16
|
+
function walk(path, current, label) {
|
|
17
|
+
const index = path.indexOf(current);
|
|
18
|
+
return path.map((key, i) => ({
|
|
19
|
+
key,
|
|
20
|
+
label: label(key),
|
|
21
|
+
state: index < 0 ? "upcoming" : i < index ? "done" : i === index ? "current" : "upcoming"
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
function resolveMoneyAxis(paymentStatus) {
|
|
25
|
+
if (paymentStatus === "refunded" || paymentStatus === "partially_refunded") {
|
|
26
|
+
return {
|
|
27
|
+
label: "Payment",
|
|
28
|
+
steps: [],
|
|
29
|
+
terminal: {
|
|
30
|
+
label: MONEY_LABELS[paymentStatus],
|
|
31
|
+
tone: paymentStatus === "refunded" ? "error" : "warning"
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
label: "Payment",
|
|
37
|
+
steps: walk(MONEY_PATH, paymentStatus, (key) => MONEY_LABELS[key])
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function resolveDeliveryAxis(orderDisplay, fulfillmentStatus, overrides) {
|
|
41
|
+
const keys = overrides?.stepLabels ? Object.keys(overrides.stepLabels) : resolveFulfillmentStatusKeys(orderDisplay);
|
|
42
|
+
return {
|
|
43
|
+
label: overrides?.label ?? orderDisplay?.fulfillmentLabel ?? "Fulfillment",
|
|
44
|
+
steps: walk(
|
|
45
|
+
keys,
|
|
46
|
+
fulfillmentStatus,
|
|
47
|
+
(key) => overrides?.stepLabels?.[key] ?? resolveFulfillmentStatusLabel(orderDisplay, key)
|
|
48
|
+
)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const NEVER_SUGGEST = ["cancelled", "refunded"];
|
|
52
|
+
const NEVER_SUGGEST_FULFILLMENT = ["partial"];
|
|
53
|
+
function resolveNextAction({
|
|
54
|
+
status,
|
|
55
|
+
paymentStatus,
|
|
56
|
+
fulfillmentStatus,
|
|
57
|
+
orderDisplay,
|
|
58
|
+
intentKey,
|
|
59
|
+
canFulfill,
|
|
60
|
+
deliveryMethod
|
|
61
|
+
}) {
|
|
62
|
+
if (paymentStatus === "awaiting_confirmation") {
|
|
63
|
+
return { key: "confirm-transfer", label: "Confirm payment" };
|
|
64
|
+
}
|
|
65
|
+
if (canFulfill && paymentStatus === "paid") {
|
|
66
|
+
const keys = resolveFulfillmentStatusKeys(orderDisplay);
|
|
67
|
+
const next2 = keys.slice(keys.indexOf(fulfillmentStatus) + 1).find((candidate) => !NEVER_SUGGEST_FULFILLMENT.includes(candidate));
|
|
68
|
+
if (next2) {
|
|
69
|
+
const handsOver = deliveryMethod === "delivery" || deliveryMethod === "shipping";
|
|
70
|
+
const label = next2 === "fulfilled" ? handsOver ? "Hand it over" : resolveFulfillmentModalCopy(orderDisplay).actionLabel : `Mark ${resolveFulfillmentStatusLabel(orderDisplay, next2).toLowerCase()}`;
|
|
71
|
+
return { key: "fulfill", label, fulfillmentStatus: next2 };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const next = getAllowedOrderTransitions(status, intentKey).find(
|
|
75
|
+
(candidate) => !NEVER_SUGGEST.includes(candidate)
|
|
76
|
+
);
|
|
77
|
+
if (next) {
|
|
78
|
+
return {
|
|
79
|
+
key: "advance-status",
|
|
80
|
+
label: `Mark ${resolveOrderStatusLabel(orderDisplay, next).toLowerCase()}`,
|
|
81
|
+
status: next
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return { key: "none", label: "" };
|
|
85
|
+
}
|
|
86
|
+
export {
|
|
87
|
+
resolveDeliveryAxis,
|
|
88
|
+
resolveMoneyAxis,
|
|
89
|
+
resolveNextAction
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=order-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/intents/order-progress.ts"],"sourcesContent":["/**\n * The two axes a merchant actually thinks in, derived from the three status\n * machines an order carries.\n *\n * An order has `status`, `paymentStatus` and `fulfillmentStatus`, each with its\n * own vocabulary. Nobody opens this page thinking \"set fulfillment to partial\".\n * They think \"did the money land?\" and \"has it gone out?\" — so this collapses\n * the three into a **money** axis, a **delivery** axis, and one derived next\n * action, all driven by the intent's `orderDisplay` so every archetype inherits\n * the same shape with its own words.\n *\n * The underlying statuses stay editable on the detail page: this decides what\n * leads, not what's reachable.\n */\nimport type {\n DeliveryMethod,\n FulfillmentStatus,\n OrderStatus,\n PaymentStatus,\n} from '@withpotter/lib/api/types';\nimport type { OrderDisplay } from './types';\nimport {\n resolveFulfillmentModalCopy,\n resolveFulfillmentStatusKeys,\n resolveFulfillmentStatusLabel,\n resolveOrderStatusLabel,\n} from './order-display';\nimport { getAllowedOrderTransitions } from './order-transitions';\n\nexport type StepState = 'done' | 'current' | 'upcoming';\n\nexport interface ProgressStep {\n key: string;\n label: string;\n state: StepState;\n}\n\nexport interface ProgressAxis {\n /** Axis heading, e.g. \"Payment\" or the intent's fulfillment label. */\n label: string;\n steps: ProgressStep[];\n /**\n * Set when the axis ended somewhere off the happy path (refunded, partially\n * refunded). The steps are then meaningless and the caller shows this alone.\n */\n terminal?: { label: string; tone: 'error' | 'warning' };\n}\n\nexport type NextActionKey =\n | 'confirm-transfer'\n | 'fulfill'\n | 'advance-status'\n | 'none';\n\nexport interface OrderNextAction {\n key: NextActionKey;\n label: string;\n /** For 'advance-status', the status to move to. */\n status?: OrderStatus;\n /** For 'fulfill', the fulfillment state to move to. */\n fulfillmentStatus?: FulfillmentStatus;\n}\n\n/** The happy path money walks. Refund states are terminal, not steps. */\nconst MONEY_PATH: PaymentStatus[] = ['unpaid', 'awaiting_confirmation', 'paid'];\n\nconst MONEY_LABELS: Record<PaymentStatus, string> = {\n unpaid: 'Awaiting payment',\n awaiting_confirmation: 'Claimed',\n paid: 'Paid',\n partially_refunded: 'Partially refunded',\n refunded: 'Refunded',\n};\n\nfunction walk<T extends string>(\n path: T[],\n current: T,\n label: (key: T) => string,\n): ProgressStep[] {\n const index = path.indexOf(current);\n return path.map((key, i) => ({\n key,\n label: label(key),\n state:\n index < 0\n ? 'upcoming'\n : i < index\n ? 'done'\n : i === index\n ? 'current'\n : 'upcoming',\n }));\n}\n\nexport function resolveMoneyAxis(paymentStatus: PaymentStatus): ProgressAxis {\n if (paymentStatus === 'refunded' || paymentStatus === 'partially_refunded') {\n return {\n label: 'Payment',\n steps: [],\n terminal: {\n label: MONEY_LABELS[paymentStatus],\n tone: paymentStatus === 'refunded' ? 'error' : 'warning',\n },\n };\n }\n return {\n label: 'Payment',\n steps: walk(MONEY_PATH, paymentStatus, (key) => MONEY_LABELS[key]),\n };\n}\n\n/**\n * The delivery axis is entirely intent-owned: its steps and their words come\n * from `orderDisplay.fulfillmentLabels`, so a padel club reads \"Checked in\"\n * where a shop reads \"Shipped\" with no branching here.\n */\nexport function resolveDeliveryAxis(\n orderDisplay: OrderDisplay | undefined,\n fulfillmentStatus: FulfillmentStatus,\n /**\n * Overrides the axis vocabulary for orders whose delivery isn't physical —\n * a ticket order reads \"Pending → Tickets issued\", not \"Unfulfilled → Shipped\".\n */\n overrides?: { label?: string; stepLabels?: Partial<Record<string, string>> },\n): ProgressAxis {\n const keys = overrides?.stepLabels\n ? (Object.keys(overrides.stepLabels) as FulfillmentStatus[])\n : resolveFulfillmentStatusKeys(orderDisplay);\n\n return {\n label: overrides?.label ?? orderDisplay?.fulfillmentLabel ?? 'Fulfillment',\n steps: walk(\n keys,\n fulfillmentStatus,\n (key) =>\n overrides?.stepLabels?.[key] ??\n resolveFulfillmentStatusLabel(orderDisplay, key),\n ),\n };\n}\n\n/** Statuses that are an escape hatch, never the thing to nudge someone toward. */\nconst NEVER_SUGGEST: OrderStatus[] = ['cancelled', 'refunded'];\n\n/**\n * Same idea on the delivery axis. \"Partially fulfilled\" is something an order\n * ends up in, not something anyone sets out to do, so the suggested action\n * steps over it. The override menu still reaches it.\n */\nconst NEVER_SUGGEST_FULFILLMENT: FulfillmentStatus[] = ['partial'];\n\ninterface NextActionInput {\n status: OrderStatus;\n paymentStatus: PaymentStatus;\n fulfillmentStatus: FulfillmentStatus;\n orderDisplay?: OrderDisplay;\n intentKey?: string;\n /** False when this order has nothing to fulfil (tickets, or config says so). */\n canFulfill: boolean;\n /**\n * How this order reaches the customer. Only the fulfil step reads it, and\n * only to name itself: \"Mark as Shipped\" is the wrong verb for a rider going\n * across town, and it is the button the merchant actually clicks.\n */\n deliveryMethod?: DeliveryMethod | null;\n}\n\n/**\n * The single next thing to do, in the order money actually moves: verify what\n * the buyer claims, then get the goods out, then advance the workflow. Returns\n * `none` when the order is settled or the only moves left are escape hatches.\n */\nexport function resolveNextAction({\n status,\n paymentStatus,\n fulfillmentStatus,\n orderDisplay,\n intentKey,\n canFulfill,\n deliveryMethod,\n}: NextActionInput): OrderNextAction {\n if (paymentStatus === 'awaiting_confirmation') {\n return { key: 'confirm-transfer', label: 'Confirm payment' };\n }\n\n if (canFulfill && paymentStatus === 'paid') {\n const keys = resolveFulfillmentStatusKeys(orderDisplay);\n const next = keys\n .slice(keys.indexOf(fulfillmentStatus) + 1)\n .find((candidate) => !NEVER_SUGGEST_FULFILLMENT.includes(candidate));\n if (next) {\n // Moving *into* the fulfilled step is the one that opens the handover\n // dialog, so it borrows that dialog's verb. Which verb depends on the\n // journey: something physically changes hands on a delivery or a courier\n // run, and \"Mark as Shipped\" said over a rider was the same wrong noun\n // the dialog itself used to carry. Where there is no journey at all the\n // archetype's own wording still wins.\n const handsOver =\n deliveryMethod === 'delivery' || deliveryMethod === 'shipping';\n const label =\n next === 'fulfilled'\n ? handsOver\n ? 'Hand it over'\n : resolveFulfillmentModalCopy(orderDisplay).actionLabel\n : `Mark ${resolveFulfillmentStatusLabel(orderDisplay, next).toLowerCase()}`;\n return { key: 'fulfill', label, fulfillmentStatus: next };\n }\n }\n\n const next = getAllowedOrderTransitions(status, intentKey).find(\n (candidate) => !NEVER_SUGGEST.includes(candidate),\n );\n if (next) {\n return {\n key: 'advance-status',\n label: `Mark ${resolveOrderStatusLabel(orderDisplay, next).toLowerCase()}`,\n status: next,\n };\n }\n\n return { key: 'none', label: '' };\n}\n"],"mappings":"AAqBA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kCAAkC;AAqC3C,MAAM,aAA8B,CAAC,UAAU,yBAAyB,MAAM;AAE9E,MAAM,eAA8C;AAAA,EAClD,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,UAAU;AACZ;AAEA,SAAS,KACP,MACA,SACA,OACgB;AAChB,QAAM,QAAQ,KAAK,QAAQ,OAAO;AAClC,SAAO,KAAK,IAAI,CAAC,KAAK,OAAO;AAAA,IAC3B;AAAA,IACA,OAAO,MAAM,GAAG;AAAA,IAChB,OACE,QAAQ,IACJ,aACA,IAAI,QACF,SACA,MAAM,QACJ,YACA;AAAA,EACZ,EAAE;AACJ;AAEO,SAAS,iBAAiB,eAA4C;AAC3E,MAAI,kBAAkB,cAAc,kBAAkB,sBAAsB;AAC1E,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO,CAAC;AAAA,MACR,UAAU;AAAA,QACR,OAAO,aAAa,aAAa;AAAA,QACjC,MAAM,kBAAkB,aAAa,UAAU;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO,KAAK,YAAY,eAAe,CAAC,QAAQ,aAAa,GAAG,CAAC;AAAA,EACnE;AACF;AAOO,SAAS,oBACd,cACA,mBAKA,WACc;AACd,QAAM,OAAO,WAAW,aACnB,OAAO,KAAK,UAAU,UAAU,IACjC,6BAA6B,YAAY;AAE7C,SAAO;AAAA,IACL,OAAO,WAAW,SAAS,cAAc,oBAAoB;AAAA,IAC7D,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,CAAC,QACC,WAAW,aAAa,GAAG,KAC3B,8BAA8B,cAAc,GAAG;AAAA,IACnD;AAAA,EACF;AACF;AAGA,MAAM,gBAA+B,CAAC,aAAa,UAAU;AAO7D,MAAM,4BAAiD,CAAC,SAAS;AAuB1D,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqC;AACnC,MAAI,kBAAkB,yBAAyB;AAC7C,WAAO,EAAE,KAAK,oBAAoB,OAAO,kBAAkB;AAAA,EAC7D;AAEA,MAAI,cAAc,kBAAkB,QAAQ;AAC1C,UAAM,OAAO,6BAA6B,YAAY;AACtD,UAAMA,QAAO,KACV,MAAM,KAAK,QAAQ,iBAAiB,IAAI,CAAC,EACzC,KAAK,CAAC,cAAc,CAAC,0BAA0B,SAAS,SAAS,CAAC;AACrE,QAAIA,OAAM;AAOR,YAAM,YACJ,mBAAmB,cAAc,mBAAmB;AACtD,YAAM,QACJA,UAAS,cACL,YACE,iBACA,4BAA4B,YAAY,EAAE,cAC5C,QAAQ,8BAA8B,cAAcA,KAAI,EAAE,YAAY,CAAC;AAC7E,aAAO,EAAE,KAAK,WAAW,OAAO,mBAAmBA,MAAK;AAAA,IAC1D;AAAA,EACF;AAEA,QAAM,OAAO,2BAA2B,QAAQ,SAAS,EAAE;AAAA,IACzD,CAAC,cAAc,CAAC,cAAc,SAAS,SAAS;AAAA,EAClD;AACA,MAAI,MAAM;AACR,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO,QAAQ,wBAAwB,cAAc,IAAI,EAAE,YAAY,CAAC;AAAA,MACxE,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO,EAAE,KAAK,QAAQ,OAAO,GAAG;AAClC;","names":["next"]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import type { IntentConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* A stable reading order for the union.
|
|
4
|
+
*
|
|
5
|
+
* Sections merged from two archetypes must not come out in the order the
|
|
6
|
+
* merchant ticked their archetypes in — the mistake pass 20 fixed in the
|
|
7
|
+
* sidebar. The header opens, the timeline closes, and what the order contains
|
|
8
|
+
* is read before what was paid.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* `order-header` and `activity-timeline` are both gone from this list.
|
|
12
|
+
*
|
|
13
|
+
* The header card said the order number and the date, which the breadcrumb and
|
|
14
|
+
* the panel below it now both carry — three copies of one string in the first
|
|
15
|
+
* screenful. The activity section derived four rows from the order's own
|
|
16
|
+
* columns while `OrderTimeline` renders the real event log from the API on
|
|
17
|
+
* every order, intent or not; keeping the derived one meant showing a guess at
|
|
18
|
+
* a history beside the history.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SECTION_ORDER: string[];
|
|
21
|
+
/** Every behaviour named anywhere on the order's lines. */
|
|
22
|
+
export declare function orderBehaviors(order: {
|
|
23
|
+
items?: {
|
|
24
|
+
behaviors?: string[];
|
|
25
|
+
}[] | null;
|
|
26
|
+
}): Set<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Which of a business's archetypes a thing carrying these behaviours belongs
|
|
29
|
+
* to. Empty when nothing identifies it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function configsForBehaviors<T extends {
|
|
32
|
+
key: string;
|
|
33
|
+
}>(configs: T[], behaviors: Iterable<string>): T[];
|
|
34
|
+
export declare function resolveOrderSections(order: {
|
|
35
|
+
items?: {
|
|
36
|
+
behaviors?: string[];
|
|
37
|
+
}[] | null;
|
|
38
|
+
}, configs: IntentConfig[], primary: IntentConfig): string[];
|
|
39
|
+
/**
|
|
40
|
+
* The filters offered above the order list.
|
|
41
|
+
*
|
|
42
|
+
* `primary.pageSections.orderList.filters` again — so a musician whose first
|
|
43
|
+
* archetype is ticketing was offered Event and Tier and never a date range,
|
|
44
|
+
* on a list that also holds every record and download they have ever sold.
|
|
45
|
+
*
|
|
46
|
+
* Unioned across the archetypes the business runs, deduped by key, in the
|
|
47
|
+
* merchant's own order with the primary first. Deduped by key rather than
|
|
48
|
+
* label because two archetypes declaring `dateRange` mean one control, and a
|
|
49
|
+
* filter's key is what the query is built from.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveOrderFilters<T extends {
|
|
52
|
+
key: string;
|
|
53
|
+
}>(configs: {
|
|
54
|
+
key: string;
|
|
55
|
+
pageSections: {
|
|
56
|
+
orderList: {
|
|
57
|
+
filters: T[];
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
}[], primary: {
|
|
61
|
+
key: string;
|
|
62
|
+
pageSections: {
|
|
63
|
+
orderList: {
|
|
64
|
+
filters: T[];
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
}): T[];
|
|
68
|
+
/**
|
|
69
|
+
* The columns of an order list covering more than one archetype.
|
|
70
|
+
*
|
|
71
|
+
* `IntentOrderList` took them from `primary.pageSections.orderList.columns` —
|
|
72
|
+
* one archetype's table over every archetype's rows, and `primary` on an
|
|
73
|
+
* unscoped view is whichever key last rode an `?intent=` into sessionStorage.
|
|
74
|
+
* So a restaurant that also sells tickets showed its ticket orders with no
|
|
75
|
+
* event, no ticket count and no check-in state; and after one visit to
|
|
76
|
+
* Attendees it showed every plate of food under those three, permanently
|
|
77
|
+
* blank. The columns moved with where the merchant had last clicked.
|
|
78
|
+
*
|
|
79
|
+
* The detail screen fixed this by following the order rather than the
|
|
80
|
+
* archetype. A list cannot do that per row — a table has one set of headings —
|
|
81
|
+
* so it does the other half: every column any active archetype declares, once,
|
|
82
|
+
* in a fixed order. A column no row can fill reads "-", which is the honest
|
|
83
|
+
* answer for a list holding two kinds of thing.
|
|
84
|
+
*
|
|
85
|
+
* Headings are unioned the way nouns are elsewhere: where the archetypes
|
|
86
|
+
* declaring a column agree on its word, that word is used — a bakery's
|
|
87
|
+
* takeaway and dining orders both say "Order #". Where they disagree there is
|
|
88
|
+
* no true word for the mixed column, and the neutral one is used, so a golf
|
|
89
|
+
* club does not read "Subscription #" over a tee time.
|
|
90
|
+
*
|
|
91
|
+
* A single archetype keeps its own table exactly as before.
|
|
92
|
+
*/
|
|
93
|
+
export declare function resolveOrderColumns<T extends {
|
|
94
|
+
key: string;
|
|
95
|
+
label: string;
|
|
96
|
+
}>(configs: {
|
|
97
|
+
key: string;
|
|
98
|
+
pageSections: {
|
|
99
|
+
orderList: {
|
|
100
|
+
columns: T[];
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
}[]): T[];
|
|
104
|
+
/**
|
|
105
|
+
* What one order's status is called, on a list covering several archetypes.
|
|
106
|
+
*
|
|
107
|
+
* The label came from `primary.orderDisplay.statusLabels`. The three archetypes
|
|
108
|
+
* of a restaurant that seats, does takeaway and sells tickets agree on every
|
|
109
|
+
* status but one, and that one is the status the floor reads: `checked_in` is
|
|
110
|
+
* **Served** to the dining room, **Ready for Pickup** to the kitchen counter
|
|
111
|
+
* and **Checked In** to the door. One of those three was printed on all of
|
|
112
|
+
* them, chosen by where the merchant last clicked.
|
|
113
|
+
*
|
|
114
|
+
* So the order answers, not the screen: `behaviors` on its lines say which
|
|
115
|
+
* archetypes it belongs to, the same reading `resolveOrderSections` does.
|
|
116
|
+
*
|
|
117
|
+
* Where the matched archetypes disagree the neutral word is used rather than
|
|
118
|
+
* one of theirs. That case is reachable and not rare — `dine-in` and
|
|
119
|
+
* `food-orders` are BOTH identified by `sellable`, so no line can tell a plate
|
|
120
|
+
* from a takeaway bag, and a restaurant running both will read "Checked In"
|
|
121
|
+
* for either. That is a gap in what an order records, not something a label
|
|
122
|
+
* can decide: printing "Served" on a takeaway bag is the failure this replaces.
|
|
123
|
+
*/
|
|
124
|
+
export declare function resolveOrderStatusLabel(order: {
|
|
125
|
+
status: string;
|
|
126
|
+
items?: {
|
|
127
|
+
behaviors?: string[];
|
|
128
|
+
}[] | null;
|
|
129
|
+
}, configs: IntentConfig[], primary: IntentConfig, fallback: (status: string) => string): string;
|
|
130
|
+
/**
|
|
131
|
+
* The row actions offered on a mixed list.
|
|
132
|
+
*
|
|
133
|
+
* `primary`'s again, so a restaurant's ticket orders offered whatever the
|
|
134
|
+
* dining room declared and nothing the box office did. Unioned by key, first
|
|
135
|
+
* wording wins — unlike a column heading, an action's word is a verb the
|
|
136
|
+
* archetype chose for the same operation ("Fulfil" / "Hand over"), and both are
|
|
137
|
+
* true of the row.
|
|
138
|
+
*
|
|
139
|
+
* `isOffered` in the list already hides an action the order has outgrown, so a
|
|
140
|
+
* wider menu does not mean a longer one on any given row.
|
|
141
|
+
*/
|
|
142
|
+
export declare function resolveOrderActions<T extends {
|
|
143
|
+
key: string;
|
|
144
|
+
}>(configs: {
|
|
145
|
+
pageSections: {
|
|
146
|
+
orderList: {
|
|
147
|
+
actions: T[];
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
}[]): T[];
|
|
151
|
+
/**
|
|
152
|
+
* Whether the list hides fulfilment.
|
|
153
|
+
*
|
|
154
|
+
* A narrowing again, and read off one archetype: `hideFulfillment` is true for
|
|
155
|
+
* eight of the ten, so a shop selling goods beside anything else had its
|
|
156
|
+
* handover column hidden by the archetype that does not post things. One
|
|
157
|
+
* archetype that fulfils is enough for the business to fulfil.
|
|
158
|
+
*/
|
|
159
|
+
export declare function resolveHideFulfillment(configs: {
|
|
160
|
+
orderDisplay: {
|
|
161
|
+
hideFulfillment: boolean;
|
|
162
|
+
};
|
|
163
|
+
}[]): boolean;
|
|
164
|
+
type StatusLabelled = {
|
|
165
|
+
orderDisplay: {
|
|
166
|
+
statusLabels?: Record<string, string>;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
export declare function resolveOrderStates(configs: StatusLabelled[], everyConfig: StatusLabelled[], counts: Record<string, number | undefined> | undefined): {
|
|
170
|
+
value: string;
|
|
171
|
+
label: string;
|
|
172
|
+
}[];
|
|
173
|
+
export {};
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
const IDENTIFYING_BEHAVIOR = {
|
|
2
|
+
"sell-products": "shippable",
|
|
3
|
+
"food-orders": "sellable",
|
|
4
|
+
"dine-in": "sellable",
|
|
5
|
+
"digital-products": "downloadable",
|
|
6
|
+
"event-tickets": "ticketed",
|
|
7
|
+
subscriptions: "subscribable",
|
|
8
|
+
"take-bookings": "bookable",
|
|
9
|
+
"rent-property": "rentable"
|
|
10
|
+
};
|
|
11
|
+
const SECTION_ORDER = [
|
|
12
|
+
"ticket-info",
|
|
13
|
+
"event-details",
|
|
14
|
+
"subscription-details",
|
|
15
|
+
"order-items",
|
|
16
|
+
"shipping-info",
|
|
17
|
+
"download-links",
|
|
18
|
+
"check-in-status",
|
|
19
|
+
"attendee-list",
|
|
20
|
+
"payment-summary"
|
|
21
|
+
];
|
|
22
|
+
function orderBehaviors(order) {
|
|
23
|
+
const present = /* @__PURE__ */ new Set();
|
|
24
|
+
for (const item of order.items ?? [])
|
|
25
|
+
for (const behavior of item.behaviors ?? []) present.add(behavior);
|
|
26
|
+
return present;
|
|
27
|
+
}
|
|
28
|
+
function configsForBehaviors(configs, behaviors) {
|
|
29
|
+
const present = new Set(behaviors);
|
|
30
|
+
return configs.filter((config) => {
|
|
31
|
+
const behavior = IDENTIFYING_BEHAVIOR[config.key];
|
|
32
|
+
return behavior ? present.has(behavior) : false;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function resolveOrderSections(order, configs, primary) {
|
|
36
|
+
const present = orderBehaviors(order);
|
|
37
|
+
const represented = configs.filter((config) => {
|
|
38
|
+
const behavior = IDENTIFYING_BEHAVIOR[config.key];
|
|
39
|
+
return behavior ? present.has(behavior) : false;
|
|
40
|
+
});
|
|
41
|
+
const sources = represented.length > 0 ? represented : [primary];
|
|
42
|
+
const keys = new Set(
|
|
43
|
+
sources.flatMap((config) => config.pageSections.orderDetail)
|
|
44
|
+
);
|
|
45
|
+
return [
|
|
46
|
+
...SECTION_ORDER.filter((key) => keys.has(key)),
|
|
47
|
+
// Anything an archetype declares that this list has not been told about
|
|
48
|
+
// still renders, after the ordered ones rather than not at all.
|
|
49
|
+
...[...keys].filter((key) => !SECTION_ORDER.includes(key))
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
function resolveOrderFilters(configs, primary) {
|
|
53
|
+
const ordered = [primary, ...configs.filter((c) => c.key !== primary.key)];
|
|
54
|
+
const seen = /* @__PURE__ */ new Set();
|
|
55
|
+
const filters = [];
|
|
56
|
+
for (const config of ordered)
|
|
57
|
+
for (const filter of config.pageSections.orderList.filters) {
|
|
58
|
+
if (seen.has(filter.key)) continue;
|
|
59
|
+
seen.add(filter.key);
|
|
60
|
+
filters.push(filter);
|
|
61
|
+
}
|
|
62
|
+
return filters;
|
|
63
|
+
}
|
|
64
|
+
const COLUMN_ORDER = [
|
|
65
|
+
"orderNumber",
|
|
66
|
+
"customer",
|
|
67
|
+
"eventName",
|
|
68
|
+
"items",
|
|
69
|
+
"ticketCount",
|
|
70
|
+
"total",
|
|
71
|
+
"status",
|
|
72
|
+
"fulfillment",
|
|
73
|
+
"checkedIn",
|
|
74
|
+
"date"
|
|
75
|
+
];
|
|
76
|
+
const NEUTRAL_COLUMN_LABELS = {
|
|
77
|
+
orderNumber: "Order #",
|
|
78
|
+
customer: "Customer",
|
|
79
|
+
items: "Items",
|
|
80
|
+
total: "Total",
|
|
81
|
+
status: "Status",
|
|
82
|
+
fulfillment: "Fulfillment",
|
|
83
|
+
date: "Date",
|
|
84
|
+
eventName: "Event",
|
|
85
|
+
ticketCount: "Tickets",
|
|
86
|
+
checkedIn: "Checked In"
|
|
87
|
+
};
|
|
88
|
+
function resolveOrderColumns(configs) {
|
|
89
|
+
if (configs.length === 1) return configs[0].pageSections.orderList.columns;
|
|
90
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
91
|
+
for (const config of configs)
|
|
92
|
+
for (const column of config.pageSections.orderList.columns)
|
|
93
|
+
byKey.set(column.key, [...byKey.get(column.key) ?? [], column]);
|
|
94
|
+
const ordered = [
|
|
95
|
+
...COLUMN_ORDER.filter((key) => byKey.has(key)),
|
|
96
|
+
...[...byKey.keys()].filter((key) => !COLUMN_ORDER.includes(key))
|
|
97
|
+
];
|
|
98
|
+
return ordered.map((key) => {
|
|
99
|
+
const declared = byKey.get(key);
|
|
100
|
+
const labels = new Set(declared.map((column) => column.label));
|
|
101
|
+
if (labels.size === 1) return declared[0];
|
|
102
|
+
return { ...declared[0], label: NEUTRAL_COLUMN_LABELS[key] ?? key };
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function resolveOrderStatusLabel(order, configs, primary, fallback) {
|
|
106
|
+
const represented = configsForBehaviors(configs, orderBehaviors(order));
|
|
107
|
+
const sources = represented.length > 0 ? represented : [primary];
|
|
108
|
+
const labels = new Set(
|
|
109
|
+
sources.map((config) => config.orderDisplay.statusLabels[order.status]).filter(Boolean)
|
|
110
|
+
);
|
|
111
|
+
if (labels.size === 1) return [...labels][0];
|
|
112
|
+
if (labels.size > 1)
|
|
113
|
+
return NEUTRAL_STATUS_LABELS[order.status] ?? primary.orderDisplay.statusLabels[order.status] ?? fallback(order.status);
|
|
114
|
+
return fallback(order.status);
|
|
115
|
+
}
|
|
116
|
+
const NEUTRAL_STATUS_LABELS = {
|
|
117
|
+
pending: "Pending",
|
|
118
|
+
confirmed: "Confirmed",
|
|
119
|
+
processing: "Processing",
|
|
120
|
+
checked_in: "Checked In",
|
|
121
|
+
completed: "Completed",
|
|
122
|
+
cancelled: "Cancelled",
|
|
123
|
+
refunded: "Refunded"
|
|
124
|
+
};
|
|
125
|
+
function resolveOrderActions(configs) {
|
|
126
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
127
|
+
for (const config of configs)
|
|
128
|
+
for (const action of config.pageSections.orderList.actions)
|
|
129
|
+
if (!byKey.has(action.key)) byKey.set(action.key, action);
|
|
130
|
+
return [...byKey.values()];
|
|
131
|
+
}
|
|
132
|
+
function resolveHideFulfillment(configs) {
|
|
133
|
+
return configs.every((config) => config.orderDisplay.hideFulfillment);
|
|
134
|
+
}
|
|
135
|
+
const NOT_A_STATE = /* @__PURE__ */ new Set([
|
|
136
|
+
"paid",
|
|
137
|
+
"unpaid",
|
|
138
|
+
"awaiting_confirmation",
|
|
139
|
+
"refunded",
|
|
140
|
+
"unfulfilled",
|
|
141
|
+
"going_out",
|
|
142
|
+
"today",
|
|
143
|
+
"total",
|
|
144
|
+
"revenue"
|
|
145
|
+
]);
|
|
146
|
+
const labelsOf = (configs) => {
|
|
147
|
+
const out = /* @__PURE__ */ new Map();
|
|
148
|
+
for (const c of configs)
|
|
149
|
+
for (const [value, label] of Object.entries(
|
|
150
|
+
c.orderDisplay.statusLabels ?? {}
|
|
151
|
+
))
|
|
152
|
+
if (!out.has(value)) out.set(value, label);
|
|
153
|
+
return out;
|
|
154
|
+
};
|
|
155
|
+
const ORDER_STATES = {
|
|
156
|
+
pending: true,
|
|
157
|
+
confirmed: true,
|
|
158
|
+
processing: true,
|
|
159
|
+
checked_in: true,
|
|
160
|
+
completed: true,
|
|
161
|
+
cancelled: true,
|
|
162
|
+
refunded: true
|
|
163
|
+
};
|
|
164
|
+
const isReachableState = (value, configs) => value in ORDER_STATES || configs.some((c) => c.orderDisplay.bookingStatusKeys?.includes(value));
|
|
165
|
+
function resolveOrderStates(configs, everyConfig, counts) {
|
|
166
|
+
const seen = labelsOf(configs);
|
|
167
|
+
for (const value of [...seen.keys()])
|
|
168
|
+
if (!isReachableState(value, configs))
|
|
169
|
+
seen.delete(value);
|
|
170
|
+
const vocabulary = labelsOf(everyConfig);
|
|
171
|
+
for (const [value, n] of Object.entries(counts ?? {}))
|
|
172
|
+
if (!seen.has(value) && !NOT_A_STATE.has(value) && vocabulary.has(value) && (n ?? 0) > 0)
|
|
173
|
+
seen.set(value, vocabulary.get(value));
|
|
174
|
+
return [...seen].map(([value, label]) => ({ value, label }));
|
|
175
|
+
}
|
|
176
|
+
export {
|
|
177
|
+
SECTION_ORDER,
|
|
178
|
+
configsForBehaviors,
|
|
179
|
+
orderBehaviors,
|
|
180
|
+
resolveHideFulfillment,
|
|
181
|
+
resolveOrderActions,
|
|
182
|
+
resolveOrderColumns,
|
|
183
|
+
resolveOrderFilters,
|
|
184
|
+
resolveOrderSections,
|
|
185
|
+
resolveOrderStates,
|
|
186
|
+
resolveOrderStatusLabel
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=order-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/intents/order-sections.ts"],"sourcesContent":["import type { IntentConfig } from './types';\nimport type { OrderStatus } from '@withpotter/lib/api/types';\n\n/**\n * Which sections an order detail screen shows.\n *\n * This used to be `intentConfig.primary.pageSections.orderDetail` — the\n * archetype the merchant happened to list first, for every order they ever\n * open. A musician selling shows, records and downloads has `event-tickets`\n * first, so an order for a **vinyl** rendered ticket info, event details,\n * check-in status and an attendee list, and rendered neither `order-items` nor\n * `shipping-info`. The merchant could not see what had been bought or where to\n * post it, under four empty sections about a concert.\n *\n * An order already says what it is. Every line carries `behaviors` — the API\n * flattens them onto each item — so the screen can follow the order instead of\n * the archetype.\n *\n * A pure ticket order still renders exactly `event-tickets`' sections, which is\n * the point: nothing is added to orders that did not change. What changes is\n * that an order spanning two archetypes now renders both.\n */\n\n/**\n * The behaviour that means \"this archetype is in this order\".\n *\n * Not `intrinsicBehaviors`, which is a wider claim: `food-orders`, `dine-in`\n * and `sell-products` all list `sellable`, so a takeaway line would drag in\n * three archetypes' sections.\n *\n * The splits follow the API's own reading of an order —\n * `IntentLifecycleService.resolveIntentFromBehaviors` — so the two repos agree\n * on what a line IS: `sellable` with `shippable` is goods, `sellable` alone is\n * food, `bookable` with `rentable` is a stay rather than an appointment.\n *\n * Where this deliberately differs is the shape of the answer. The API returns\n * ONE intent, because a status transition has to belong to one workflow. A\n * screen is not a workflow: an order holding a ticket and a record is both\n * things at once, and picking one is how this bug started.\n *\n * `send-invoices` and `capture-leads` are absent on purpose — neither produces\n * order lines, so neither can be identified from one.\n */\nconst IDENTIFYING_BEHAVIOR: Record<string, string> = {\n 'sell-products': 'shippable',\n 'food-orders': 'sellable',\n 'dine-in': 'sellable',\n 'digital-products': 'downloadable',\n 'event-tickets': 'ticketed',\n subscriptions: 'subscribable',\n 'take-bookings': 'bookable',\n 'rent-property': 'rentable',\n};\n\n/**\n * A stable reading order for the union.\n *\n * Sections merged from two archetypes must not come out in the order the\n * merchant ticked their archetypes in — the mistake pass 20 fixed in the\n * sidebar. The header opens, the timeline closes, and what the order contains\n * is read before what was paid.\n */\n/**\n * `order-header` and `activity-timeline` are both gone from this list.\n *\n * The header card said the order number and the date, which the breadcrumb and\n * the panel below it now both carry — three copies of one string in the first\n * screenful. The activity section derived four rows from the order's own\n * columns while `OrderTimeline` renders the real event log from the API on\n * every order, intent or not; keeping the derived one meant showing a guess at\n * a history beside the history.\n */\nexport const SECTION_ORDER = [\n 'ticket-info',\n 'event-details',\n 'subscription-details',\n 'order-items',\n 'shipping-info',\n 'download-links',\n 'check-in-status',\n 'attendee-list',\n 'payment-summary',\n];\n\n/** Every behaviour named anywhere on the order's lines. */\nexport function orderBehaviors(order: {\n items?: { behaviors?: string[] }[] | null;\n}): Set<string> {\n const present = new Set<string>();\n for (const item of order.items ?? [])\n for (const behavior of item.behaviors ?? []) present.add(behavior);\n return present;\n}\n\n/**\n * Which of a business's archetypes a thing carrying these behaviours belongs\n * to. Empty when nothing identifies it.\n */\nexport function configsForBehaviors<T extends { key: string }>(\n configs: T[],\n behaviors: Iterable<string>,\n): T[] {\n const present = new Set(behaviors);\n return configs.filter((config) => {\n const behavior = IDENTIFYING_BEHAVIOR[config.key];\n return behavior ? present.has(behavior) : false;\n });\n}\n\nexport function resolveOrderSections(\n order: { items?: { behaviors?: string[] }[] | null },\n configs: IntentConfig[],\n primary: IntentConfig,\n): string[] {\n const present = orderBehaviors(order);\n\n const represented = configs.filter((config) => {\n const behavior = IDENTIFYING_BEHAVIOR[config.key];\n return behavior ? present.has(behavior) : false;\n });\n\n /**\n * Nothing identifiable falls back to the primary archetype, which is what\n * this screen did for every order until now.\n *\n * It is reached more often than it looks: orders written before the API\n * flattened `behaviors` onto items carry none, and a single-archetype\n * business has one answer anyway. Falling back to the old behaviour means\n * this can only ever add sections that were missing, never remove one a\n * merchant already relies on.\n */\n const sources = represented.length > 0 ? represented : [primary];\n\n const keys = new Set(\n sources.flatMap((config) => config.pageSections.orderDetail),\n );\n\n return [\n ...SECTION_ORDER.filter((key) => keys.has(key)),\n // Anything an archetype declares that this list has not been told about\n // still renders, after the ordered ones rather than not at all.\n ...[...keys].filter((key) => !SECTION_ORDER.includes(key)),\n ];\n}\n\n/**\n * The filters offered above the order list.\n *\n * `primary.pageSections.orderList.filters` again — so a musician whose first\n * archetype is ticketing was offered Event and Tier and never a date range,\n * on a list that also holds every record and download they have ever sold.\n *\n * Unioned across the archetypes the business runs, deduped by key, in the\n * merchant's own order with the primary first. Deduped by key rather than\n * label because two archetypes declaring `dateRange` mean one control, and a\n * filter's key is what the query is built from.\n */\nexport function resolveOrderFilters<T extends { key: string }>(\n configs: { key: string; pageSections: { orderList: { filters: T[] } } }[],\n primary: { key: string; pageSections: { orderList: { filters: T[] } } },\n): T[] {\n const ordered = [primary, ...configs.filter((c) => c.key !== primary.key)];\n const seen = new Set<string>();\n const filters: T[] = [];\n\n for (const config of ordered)\n for (const filter of config.pageSections.orderList.filters) {\n if (seen.has(filter.key)) continue;\n seen.add(filter.key);\n filters.push(filter);\n }\n\n return filters;\n}\n\n/**\n * The summary measures for an order list covering one or more archetypes.\n *\n * A mixed list follows the same primary-first union rule as filters, so the\n * summary does not silently describe only whichever intent happened to be\n * selected first.\n */\n/**\n * A stable reading order for the columns of a mixed list.\n *\n * Same reason `SECTION_ORDER` exists one screen over: a union assembled from\n * several archetypes must not come out in the order the merchant ticked them.\n * Identity first, then what was bought, then the money, then where it is, then\n * when.\n */\nconst COLUMN_ORDER = [\n 'orderNumber',\n 'customer',\n 'eventName',\n 'items',\n 'ticketCount',\n 'total',\n 'status',\n 'fulfillment',\n 'checkedIn',\n 'date',\n];\n\n/**\n * The neutral word for a column several archetypes name differently.\n *\n * Taken from `default-commerce`, which is the platform's own vocabulary, with\n * the ticketing columns added because no neutral config declares them.\n */\nconst NEUTRAL_COLUMN_LABELS: Record<string, string> = {\n orderNumber: 'Order #',\n customer: 'Customer',\n items: 'Items',\n total: 'Total',\n status: 'Status',\n fulfillment: 'Fulfillment',\n date: 'Date',\n eventName: 'Event',\n ticketCount: 'Tickets',\n checkedIn: 'Checked In',\n};\n\n/**\n * The columns of an order list covering more than one archetype.\n *\n * `IntentOrderList` took them from `primary.pageSections.orderList.columns` —\n * one archetype's table over every archetype's rows, and `primary` on an\n * unscoped view is whichever key last rode an `?intent=` into sessionStorage.\n * So a restaurant that also sells tickets showed its ticket orders with no\n * event, no ticket count and no check-in state; and after one visit to\n * Attendees it showed every plate of food under those three, permanently\n * blank. The columns moved with where the merchant had last clicked.\n *\n * The detail screen fixed this by following the order rather than the\n * archetype. A list cannot do that per row — a table has one set of headings —\n * so it does the other half: every column any active archetype declares, once,\n * in a fixed order. A column no row can fill reads \"-\", which is the honest\n * answer for a list holding two kinds of thing.\n *\n * Headings are unioned the way nouns are elsewhere: where the archetypes\n * declaring a column agree on its word, that word is used — a bakery's\n * takeaway and dining orders both say \"Order #\". Where they disagree there is\n * no true word for the mixed column, and the neutral one is used, so a golf\n * club does not read \"Subscription #\" over a tee time.\n *\n * A single archetype keeps its own table exactly as before.\n */\nexport function resolveOrderColumns<T extends { key: string; label: string }>(\n configs: { key: string; pageSections: { orderList: { columns: T[] } } }[],\n): T[] {\n if (configs.length === 1) return configs[0].pageSections.orderList.columns;\n\n const byKey = new Map<string, T[]>();\n for (const config of configs)\n for (const column of config.pageSections.orderList.columns)\n byKey.set(column.key, [...(byKey.get(column.key) ?? []), column]);\n\n const ordered = [\n ...COLUMN_ORDER.filter((key) => byKey.has(key)),\n ...[...byKey.keys()].filter((key) => !COLUMN_ORDER.includes(key)),\n ];\n\n return ordered.map((key) => {\n const declared = byKey.get(key)!;\n const labels = new Set(declared.map((column) => column.label));\n if (labels.size === 1) return declared[0];\n return { ...declared[0], label: NEUTRAL_COLUMN_LABELS[key] ?? key };\n });\n}\n\n/**\n * What one order's status is called, on a list covering several archetypes.\n *\n * The label came from `primary.orderDisplay.statusLabels`. The three archetypes\n * of a restaurant that seats, does takeaway and sells tickets agree on every\n * status but one, and that one is the status the floor reads: `checked_in` is\n * **Served** to the dining room, **Ready for Pickup** to the kitchen counter\n * and **Checked In** to the door. One of those three was printed on all of\n * them, chosen by where the merchant last clicked.\n *\n * So the order answers, not the screen: `behaviors` on its lines say which\n * archetypes it belongs to, the same reading `resolveOrderSections` does.\n *\n * Where the matched archetypes disagree the neutral word is used rather than\n * one of theirs. That case is reachable and not rare — `dine-in` and\n * `food-orders` are BOTH identified by `sellable`, so no line can tell a plate\n * from a takeaway bag, and a restaurant running both will read \"Checked In\"\n * for either. That is a gap in what an order records, not something a label\n * can decide: printing \"Served\" on a takeaway bag is the failure this replaces.\n */\nexport function resolveOrderStatusLabel(\n order: { status: string; items?: { behaviors?: string[] }[] | null },\n configs: IntentConfig[],\n primary: IntentConfig,\n fallback: (status: string) => string,\n): string {\n const represented = configsForBehaviors(configs, orderBehaviors(order));\n const sources = represented.length > 0 ? represented : [primary];\n\n const labels = new Set(\n sources\n .map((config) => config.orderDisplay.statusLabels[order.status])\n .filter(Boolean),\n );\n\n if (labels.size === 1) return [...labels][0];\n if (labels.size > 1)\n return (\n NEUTRAL_STATUS_LABELS[order.status] ??\n primary.orderDisplay.statusLabels[order.status] ??\n fallback(order.status)\n );\n return fallback(order.status);\n}\n\n/** `default-commerce`'s words, plus the two states it does not model. */\nconst NEUTRAL_STATUS_LABELS: Record<string, string> = {\n pending: 'Pending',\n confirmed: 'Confirmed',\n processing: 'Processing',\n checked_in: 'Checked In',\n completed: 'Completed',\n cancelled: 'Cancelled',\n refunded: 'Refunded',\n};\n\n/**\n * The row actions offered on a mixed list.\n *\n * `primary`'s again, so a restaurant's ticket orders offered whatever the\n * dining room declared and nothing the box office did. Unioned by key, first\n * wording wins — unlike a column heading, an action's word is a verb the\n * archetype chose for the same operation (\"Fulfil\" / \"Hand over\"), and both are\n * true of the row.\n *\n * `isOffered` in the list already hides an action the order has outgrown, so a\n * wider menu does not mean a longer one on any given row.\n */\nexport function resolveOrderActions<T extends { key: string }>(\n configs: { pageSections: { orderList: { actions: T[] } } }[],\n): T[] {\n const byKey = new Map<string, T>();\n for (const config of configs)\n for (const action of config.pageSections.orderList.actions)\n if (!byKey.has(action.key)) byKey.set(action.key, action);\n return [...byKey.values()];\n}\n\n/**\n * Whether the list hides fulfilment.\n *\n * A narrowing again, and read off one archetype: `hideFulfillment` is true for\n * eight of the ten, so a shop selling goods beside anything else had its\n * handover column hidden by the archetype that does not post things. One\n * archetype that fulfils is enough for the business to fulfil.\n */\nexport function resolveHideFulfillment(\n configs: { orderDisplay: { hideFulfillment: boolean } }[],\n): boolean {\n return configs.every((config) => config.orderDisplay.hideFulfillment);\n}\n\n/**\n * Keys in the stats tally that are not order states.\n *\n * The tally mixes three axes into one flat object — status, payment,\n * fulfilment — plus totals. Without this the rescue above offered \"Paid 6\" and\n * \"Refunded 1\" as if they were states, on a Reservations list, which is the\n * axis-mixing the field was just cleaned of.\n *\n * `refunded` is on the list for a subtler reason: it is a PaymentStatus that\n * both the OrderStats type and the demo fixture file under \"order status\" —\n * the fixture literally counts `paymentStatus === 'refunded'`. A commerce\n * archetype that genuinely wants it declares it in `statusLabels`, and the\n * declared path above picks it up; it should never arrive by accident.\n */\nconst NOT_A_STATE = new Set([\n 'paid',\n 'unpaid',\n 'awaiting_confirmation',\n 'refunded',\n 'unfulfilled',\n 'going_out',\n 'today',\n 'total',\n 'revenue',\n]);\n\ntype StatusLabelled = {\n orderDisplay: { statusLabels?: Record<string, string> };\n};\n\ntype BookingStatusKeyed = {\n orderDisplay: { bookingStatusKeys?: string[] };\n};\n\nconst labelsOf = (configs: StatusLabelled[]) => {\n const out = new Map<string, string>();\n for (const c of configs)\n for (const [value, label] of Object.entries(\n c.orderDisplay.statusLabels ?? {},\n ))\n if (!out.has(value)) out.set(value, label);\n return out;\n};\n\n/**\n * The states an order can actually be in.\n *\n * Typed `Record<OrderStatus, true>` rather than a bare array, so it cannot\n * drift from the union the API writes: add a status to `OrderStatus` and this\n * fails the build until it is listed here.\n */\nconst ORDER_STATES: Record<OrderStatus, true> = {\n pending: true,\n confirmed: true,\n processing: true,\n checked_in: true,\n completed: true,\n cancelled: true,\n refunded: true,\n};\n\n/**\n * Booking statuses ride alongside the order ones.\n *\n * An archetype whose queue is a diary sends `in_progress` and `no_show`\n * through the `bookingStatus` filter rather than `status`, so they are real\n * options even though no ORDER holds them. `bookingStatusKeys` is where an\n * archetype says so.\n */\nconst isReachableState = (value: string, configs: BookingStatusKeyed[]) =>\n value in ORDER_STATES ||\n configs.some((c) => c.orderDisplay.bookingStatusKeys?.includes(value));\n\nexport function resolveOrderStates(\n configs: StatusLabelled[],\n everyConfig: StatusLabelled[],\n counts: Record<string, number | undefined> | undefined,\n): { value: string; label: string }[] {\n /**\n * Declared, and then narrowed to what an order can hold.\n *\n * `labelsOf` takes every key every active archetype declares, which is\n * right until an archetype names states belonging to a different entity.\n * `subscriptions` declares `active`, `non_renewing` and `attention` — those\n * are `CustomerSubscription` statuses, and `OrderStatus` is\n * pending/confirmed/processing/checked_in/completed/cancelled/refunded, so\n * none of the three can ever match a row.\n *\n * A gym running memberships beside a kit shelf therefore offered **Active**,\n * **Non-renewing** and **Needs attention** on its Orders filter, each of\n * which emptied the list and kept it empty. The reverse direction was\n * already guarded — a status the DATA holds that nobody declared is added\n * below — but nothing checked a declaration against reality.\n */\n const seen = labelsOf(configs);\n for (const value of [...seen.keys()])\n if (!isReachableState(value, configs as BookingStatusKeyed[]))\n seen.delete(value);\n\n /**\n * Plus anything the data actually holds.\n *\n * A record can carry a status this archetype does not declare — the demo\n * fixture has a reservation sitting at `processing`, which is not even in\n * the API's BookingStatus enum. Offering only the declared set left that\n * record reachable by no filter at all, and the counts said so out loud:\n * six states summing to nine against a total of ten.\n *\n * The vocabulary is every archetype's labels, so a real status gets its\n * proper word while the tally's non-status keys — total, revenue, paid —\n * cannot leak in as options.\n */\n const vocabulary = labelsOf(everyConfig);\n for (const [value, n] of Object.entries(counts ?? {}))\n if (\n !seen.has(value) &&\n !NOT_A_STATE.has(value) &&\n vocabulary.has(value) &&\n (n ?? 0) > 0\n )\n seen.set(value, vocabulary.get(value)!);\n\n return [...seen].map(([value, label]) => ({ value, label }));\n}\n"],"mappings":"AA2CA,MAAM,uBAA+C;AAAA,EACnD,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;AAoBO,MAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,SAAS,eAAe,OAEf;AACd,QAAM,UAAU,oBAAI,IAAY;AAChC,aAAW,QAAQ,MAAM,SAAS,CAAC;AACjC,eAAW,YAAY,KAAK,aAAa,CAAC,EAAG,SAAQ,IAAI,QAAQ;AACnE,SAAO;AACT;AAMO,SAAS,oBACd,SACA,WACK;AACL,QAAM,UAAU,IAAI,IAAI,SAAS;AACjC,SAAO,QAAQ,OAAO,CAAC,WAAW;AAChC,UAAM,WAAW,qBAAqB,OAAO,GAAG;AAChD,WAAO,WAAW,QAAQ,IAAI,QAAQ,IAAI;AAAA,EAC5C,CAAC;AACH;AAEO,SAAS,qBACd,OACA,SACA,SACU;AACV,QAAM,UAAU,eAAe,KAAK;AAEpC,QAAM,cAAc,QAAQ,OAAO,CAAC,WAAW;AAC7C,UAAM,WAAW,qBAAqB,OAAO,GAAG;AAChD,WAAO,WAAW,QAAQ,IAAI,QAAQ,IAAI;AAAA,EAC5C,CAAC;AAYD,QAAM,UAAU,YAAY,SAAS,IAAI,cAAc,CAAC,OAAO;AAE/D,QAAM,OAAO,IAAI;AAAA,IACf,QAAQ,QAAQ,CAAC,WAAW,OAAO,aAAa,WAAW;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL,GAAG,cAAc,OAAO,CAAC,QAAQ,KAAK,IAAI,GAAG,CAAC;AAAA;AAAA;AAAA,IAG9C,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,SAAS,GAAG,CAAC;AAAA,EAC3D;AACF;AAcO,SAAS,oBACd,SACA,SACK;AACL,QAAM,UAAU,CAAC,SAAS,GAAG,QAAQ,OAAO,CAAC,MAAM,EAAE,QAAQ,QAAQ,GAAG,CAAC;AACzE,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,UAAe,CAAC;AAEtB,aAAW,UAAU;AACnB,eAAW,UAAU,OAAO,aAAa,UAAU,SAAS;AAC1D,UAAI,KAAK,IAAI,OAAO,GAAG,EAAG;AAC1B,WAAK,IAAI,OAAO,GAAG;AACnB,cAAQ,KAAK,MAAM;AAAA,IACrB;AAEF,SAAO;AACT;AAiBA,MAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQA,MAAM,wBAAgD;AAAA,EACpD,aAAa;AAAA,EACb,UAAU;AAAA,EACV,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW;AACb;AA2BO,SAAS,oBACd,SACK;AACL,MAAI,QAAQ,WAAW,EAAG,QAAO,QAAQ,CAAC,EAAE,aAAa,UAAU;AAEnE,QAAM,QAAQ,oBAAI,IAAiB;AACnC,aAAW,UAAU;AACnB,eAAW,UAAU,OAAO,aAAa,UAAU;AACjD,YAAM,IAAI,OAAO,KAAK,CAAC,GAAI,MAAM,IAAI,OAAO,GAAG,KAAK,CAAC,GAAI,MAAM,CAAC;AAEpE,QAAM,UAAU;AAAA,IACd,GAAG,aAAa,OAAO,CAAC,QAAQ,MAAM,IAAI,GAAG,CAAC;AAAA,IAC9C,GAAG,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,SAAS,GAAG,CAAC;AAAA,EAClE;AAEA,SAAO,QAAQ,IAAI,CAAC,QAAQ;AAC1B,UAAM,WAAW,MAAM,IAAI,GAAG;AAC9B,UAAM,SAAS,IAAI,IAAI,SAAS,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC;AAC7D,QAAI,OAAO,SAAS,EAAG,QAAO,SAAS,CAAC;AACxC,WAAO,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,sBAAsB,GAAG,KAAK,IAAI;AAAA,EACpE,CAAC;AACH;AAsBO,SAAS,wBACd,OACA,SACA,SACA,UACQ;AACR,QAAM,cAAc,oBAAoB,SAAS,eAAe,KAAK,CAAC;AACtE,QAAM,UAAU,YAAY,SAAS,IAAI,cAAc,CAAC,OAAO;AAE/D,QAAM,SAAS,IAAI;AAAA,IACjB,QACG,IAAI,CAAC,WAAW,OAAO,aAAa,aAAa,MAAM,MAAM,CAAC,EAC9D,OAAO,OAAO;AAAA,EACnB;AAEA,MAAI,OAAO,SAAS,EAAG,QAAO,CAAC,GAAG,MAAM,EAAE,CAAC;AAC3C,MAAI,OAAO,OAAO;AAChB,WACE,sBAAsB,MAAM,MAAM,KAClC,QAAQ,aAAa,aAAa,MAAM,MAAM,KAC9C,SAAS,MAAM,MAAM;AAEzB,SAAO,SAAS,MAAM,MAAM;AAC9B;AAGA,MAAM,wBAAgD;AAAA,EACpD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AACZ;AAcO,SAAS,oBACd,SACK;AACL,QAAM,QAAQ,oBAAI,IAAe;AACjC,aAAW,UAAU;AACnB,eAAW,UAAU,OAAO,aAAa,UAAU;AACjD,UAAI,CAAC,MAAM,IAAI,OAAO,GAAG,EAAG,OAAM,IAAI,OAAO,KAAK,MAAM;AAC5D,SAAO,CAAC,GAAG,MAAM,OAAO,CAAC;AAC3B;AAUO,SAAS,uBACd,SACS;AACT,SAAO,QAAQ,MAAM,CAAC,WAAW,OAAO,aAAa,eAAe;AACtE;AAgBA,MAAM,cAAc,oBAAI,IAAI;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAUD,MAAM,WAAW,CAAC,YAA8B;AAC9C,QAAM,MAAM,oBAAI,IAAoB;AACpC,aAAW,KAAK;AACd,eAAW,CAAC,OAAO,KAAK,KAAK,OAAO;AAAA,MAClC,EAAE,aAAa,gBAAgB,CAAC;AAAA,IAClC;AACE,UAAI,CAAC,IAAI,IAAI,KAAK,EAAG,KAAI,IAAI,OAAO,KAAK;AAC7C,SAAO;AACT;AASA,MAAM,eAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AACZ;AAUA,MAAM,mBAAmB,CAAC,OAAe,YACvC,SAAS,gBACT,QAAQ,KAAK,CAAC,MAAM,EAAE,aAAa,mBAAmB,SAAS,KAAK,CAAC;AAEhE,SAAS,mBACd,SACA,aACA,QACoC;AAiBpC,QAAM,OAAO,SAAS,OAAO;AAC7B,aAAW,SAAS,CAAC,GAAG,KAAK,KAAK,CAAC;AACjC,QAAI,CAAC,iBAAiB,OAAO,OAA+B;AAC1D,WAAK,OAAO,KAAK;AAerB,QAAM,aAAa,SAAS,WAAW;AACvC,aAAW,CAAC,OAAO,CAAC,KAAK,OAAO,QAAQ,UAAU,CAAC,CAAC;AAClD,QACE,CAAC,KAAK,IAAI,KAAK,KACf,CAAC,YAAY,IAAI,KAAK,KACtB,WAAW,IAAI,KAAK,MACnB,KAAK,KAAK;AAEX,WAAK,IAAI,OAAO,WAAW,IAAI,KAAK,CAAE;AAE1C,SAAO,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,OAAO,MAAM,EAAE;AAC7D;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The summary measures for an order list covering one or more archetypes.
|
|
3
|
+
*
|
|
4
|
+
* A mixed list follows the same primary-first union rule as filters, so the
|
|
5
|
+
* summary does not silently describe only whichever intent happened to be
|
|
6
|
+
* selected first.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveOrderStats<T extends {
|
|
9
|
+
key: string;
|
|
10
|
+
}>(configs: {
|
|
11
|
+
key: string;
|
|
12
|
+
pageSections: {
|
|
13
|
+
orderList: {
|
|
14
|
+
stats?: T[];
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}[], primary: {
|
|
18
|
+
key: string;
|
|
19
|
+
pageSections: {
|
|
20
|
+
orderList: {
|
|
21
|
+
stats?: T[];
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}): T[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function resolveOrderStats(configs, primary) {
|
|
2
|
+
const ordered = [primary, ...configs.filter((c) => c.key !== primary.key)];
|
|
3
|
+
const seen = /* @__PURE__ */ new Set();
|
|
4
|
+
const stats = [];
|
|
5
|
+
for (const config of ordered)
|
|
6
|
+
for (const stat of config.pageSections.orderList.stats ?? []) {
|
|
7
|
+
if (seen.has(stat.key)) continue;
|
|
8
|
+
seen.add(stat.key);
|
|
9
|
+
stats.push(stat);
|
|
10
|
+
}
|
|
11
|
+
return stats;
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
resolveOrderStats
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=order-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/intents/order-stats.ts"],"sourcesContent":["/**\n * The summary measures for an order list covering one or more archetypes.\n *\n * A mixed list follows the same primary-first union rule as filters, so the\n * summary does not silently describe only whichever intent happened to be\n * selected first.\n */\nexport function resolveOrderStats<T extends { key: string }>(\n configs: { key: string; pageSections: { orderList: { stats?: T[] } } }[],\n primary: { key: string; pageSections: { orderList: { stats?: T[] } } },\n): T[] {\n const ordered = [primary, ...configs.filter((c) => c.key !== primary.key)];\n const seen = new Set<string>();\n const stats: T[] = [];\n\n for (const config of ordered)\n for (const stat of config.pageSections.orderList.stats ?? []) {\n if (seen.has(stat.key)) continue;\n seen.add(stat.key);\n stats.push(stat);\n }\n\n return stats;\n}\n"],"mappings":"AAOO,SAAS,kBACd,SACA,SACK;AACL,QAAM,UAAU,CAAC,SAAS,GAAG,QAAQ,OAAO,CAAC,MAAM,EAAE,QAAQ,QAAQ,GAAG,CAAC;AACzE,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,QAAa,CAAC;AAEpB,aAAW,UAAU;AACnB,eAAW,QAAQ,OAAO,aAAa,UAAU,SAAS,CAAC,GAAG;AAC5D,UAAI,KAAK,IAAI,KAAK,GAAG,EAAG;AACxB,WAAK,IAAI,KAAK,GAAG;AACjB,YAAM,KAAK,IAAI;AAAA,IACjB;AAEF,SAAO;AACT;","names":[]}
|