@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,147 @@
|
|
|
1
|
+
const FALLBACK_PERMISSION_CATALOG = [
|
|
2
|
+
{
|
|
3
|
+
key: "canManageProducts",
|
|
4
|
+
label: "Manage products",
|
|
5
|
+
group: "Products",
|
|
6
|
+
description: "Create, edit and delete products."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
key: "canViewProducts",
|
|
10
|
+
label: "View products",
|
|
11
|
+
group: "Products"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
key: "canManageOrders",
|
|
15
|
+
label: "Manage orders",
|
|
16
|
+
group: "Orders",
|
|
17
|
+
description: "Fulfil, refund and cancel orders."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
key: "canViewOrders",
|
|
21
|
+
label: "View orders",
|
|
22
|
+
group: "Orders"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
key: "canManageMembers",
|
|
26
|
+
label: "Manage customers",
|
|
27
|
+
group: "Customers"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
key: "canViewMembers",
|
|
31
|
+
label: "View customers",
|
|
32
|
+
group: "Customers"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
key: "canManageDiscounts",
|
|
36
|
+
label: "Manage discounts",
|
|
37
|
+
group: "Discounts"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "canViewDiscounts",
|
|
41
|
+
label: "View discounts",
|
|
42
|
+
group: "Discounts"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: "canManageReviews",
|
|
46
|
+
label: "Manage reviews",
|
|
47
|
+
group: "Reviews"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "canViewReviews",
|
|
51
|
+
label: "View reviews",
|
|
52
|
+
group: "Reviews"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: "canManageAnalytics",
|
|
56
|
+
label: "Manage analytics",
|
|
57
|
+
group: "Analytics",
|
|
58
|
+
description: "Configure tracked events, export reports and manage custom dashboards."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "canViewAnalytics",
|
|
62
|
+
label: "View analytics",
|
|
63
|
+
group: "Analytics"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
key: "canManageFinance",
|
|
67
|
+
label: "Manage finance",
|
|
68
|
+
group: "Finance",
|
|
69
|
+
description: "Manage payouts, connected bank accounts and refund adjustments."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
key: "canViewFinance",
|
|
73
|
+
label: "View finance",
|
|
74
|
+
group: "Finance",
|
|
75
|
+
description: "See revenue, transactions, invoices and finance dashboards."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: "canApproveMoneyMovement",
|
|
79
|
+
label: "Approve money movement",
|
|
80
|
+
group: "Finance",
|
|
81
|
+
description: "Send money out of the wallet."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
key: "canManageBusinessProfile",
|
|
85
|
+
label: "Manage business profile",
|
|
86
|
+
group: "Business Profile",
|
|
87
|
+
description: "Edit the workspace's name, contact details, logo and description."
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
key: "canManageSettings",
|
|
91
|
+
label: "Manage settings",
|
|
92
|
+
group: "Settings",
|
|
93
|
+
description: "Change storefront, payments and shipping settings."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
key: "canManageDomains",
|
|
97
|
+
label: "Manage domains",
|
|
98
|
+
group: "Domains",
|
|
99
|
+
description: "Purchase, connect, verify and delete domains."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
key: "canManageEditor",
|
|
103
|
+
label: "Use the editor",
|
|
104
|
+
group: "Editor",
|
|
105
|
+
description: "Author storefront changes via the visual editor and Ask AI."
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
key: "canManageBlog",
|
|
109
|
+
label: "Manage blog",
|
|
110
|
+
group: "Blog",
|
|
111
|
+
description: "Create, edit and delete blog posts, moderate comments."
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
key: "canViewBlog",
|
|
115
|
+
label: "View blog",
|
|
116
|
+
group: "Blog"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
key: "canManageTeam",
|
|
120
|
+
label: "Manage team & roles",
|
|
121
|
+
group: "Team",
|
|
122
|
+
description: "Invite members, change roles, and edit permission definitions."
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
key: "canManageCommunications",
|
|
126
|
+
label: "Manage communications",
|
|
127
|
+
group: "Communications"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
key: "canViewCommunications",
|
|
131
|
+
label: "View communications",
|
|
132
|
+
group: "Communications"
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
const FALLBACK_PERMISSION_GROUPS = Array.from(
|
|
136
|
+
new Set(FALLBACK_PERMISSION_CATALOG.map((item) => item.group))
|
|
137
|
+
);
|
|
138
|
+
const FALLBACK_PERMISSION_CATALOG_RESPONSE = {
|
|
139
|
+
items: FALLBACK_PERMISSION_CATALOG,
|
|
140
|
+
groups: FALLBACK_PERMISSION_GROUPS
|
|
141
|
+
};
|
|
142
|
+
export {
|
|
143
|
+
FALLBACK_PERMISSION_CATALOG,
|
|
144
|
+
FALLBACK_PERMISSION_CATALOG_RESPONSE,
|
|
145
|
+
FALLBACK_PERMISSION_GROUPS
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=permission-catalog-fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permission-catalog-fallback.ts"],"sourcesContent":["/**\n * Client-side fallback for the permission catalog served by\n * `GET /team/permissions/catalog`.\n *\n * The api owns the canonical list (see\n * `api/src/modules/team/permission-catalog.ts`). This file mirrors it so\n * the role editor is usable even when the endpoint is unreachable\n * (e.g. staging api mid-deploy, dashboard preview pointing at an older\n * api build). If the api response differs, the api wins — this file is\n * only consulted when the network call fails.\n *\n * Keys MUST stay in sync with the api's `TeamPermissions` interface.\n */\nimport type {\n PermissionCatalogItem,\n PermissionCatalogResponse,\n} from '@withpotter/lib/api/types';\n\nexport const FALLBACK_PERMISSION_CATALOG: PermissionCatalogItem[] = [\n {\n key: 'canManageProducts',\n label: 'Manage products',\n group: 'Products',\n description: 'Create, edit and delete products.',\n },\n {\n key: 'canViewProducts',\n label: 'View products',\n group: 'Products',\n },\n {\n key: 'canManageOrders',\n label: 'Manage orders',\n group: 'Orders',\n description: 'Fulfil, refund and cancel orders.',\n },\n {\n key: 'canViewOrders',\n label: 'View orders',\n group: 'Orders',\n },\n {\n key: 'canManageMembers',\n label: 'Manage customers',\n group: 'Customers',\n },\n {\n key: 'canViewMembers',\n label: 'View customers',\n group: 'Customers',\n },\n {\n key: 'canManageDiscounts',\n label: 'Manage discounts',\n group: 'Discounts',\n },\n {\n key: 'canViewDiscounts',\n label: 'View discounts',\n group: 'Discounts',\n },\n {\n key: 'canManageReviews',\n label: 'Manage reviews',\n group: 'Reviews',\n },\n {\n key: 'canViewReviews',\n label: 'View reviews',\n group: 'Reviews',\n },\n {\n key: 'canManageAnalytics',\n label: 'Manage analytics',\n group: 'Analytics',\n description:\n 'Configure tracked events, export reports and manage custom dashboards.',\n },\n {\n key: 'canViewAnalytics',\n label: 'View analytics',\n group: 'Analytics',\n },\n {\n key: 'canManageFinance',\n label: 'Manage finance',\n group: 'Finance',\n description:\n 'Manage payouts, connected bank accounts and refund adjustments.',\n },\n {\n key: 'canViewFinance',\n label: 'View finance',\n group: 'Finance',\n description: 'See revenue, transactions, invoices and finance dashboards.',\n },\n {\n key: 'canApproveMoneyMovement',\n label: 'Approve money movement',\n group: 'Finance',\n description: 'Send money out of the wallet.',\n },\n {\n key: 'canManageBusinessProfile',\n label: 'Manage business profile',\n group: 'Business Profile',\n description:\n \"Edit the workspace's name, contact details, logo and description.\",\n },\n {\n key: 'canManageSettings',\n label: 'Manage settings',\n group: 'Settings',\n description: 'Change storefront, payments and shipping settings.',\n },\n {\n key: 'canManageDomains',\n label: 'Manage domains',\n group: 'Domains',\n description: 'Purchase, connect, verify and delete domains.',\n },\n {\n key: 'canManageEditor',\n label: 'Use the editor',\n group: 'Editor',\n description: 'Author storefront changes via the visual editor and Ask AI.',\n },\n {\n key: 'canManageBlog',\n label: 'Manage blog',\n group: 'Blog',\n description: 'Create, edit and delete blog posts, moderate comments.',\n },\n {\n key: 'canViewBlog',\n label: 'View blog',\n group: 'Blog',\n },\n {\n key: 'canManageTeam',\n label: 'Manage team & roles',\n group: 'Team',\n description:\n 'Invite members, change roles, and edit permission definitions.',\n },\n {\n key: 'canManageCommunications',\n label: 'Manage communications',\n group: 'Communications',\n },\n {\n key: 'canViewCommunications',\n label: 'View communications',\n group: 'Communications',\n },\n];\n\nexport const FALLBACK_PERMISSION_GROUPS: string[] = Array.from(\n new Set(FALLBACK_PERMISSION_CATALOG.map((item) => item.group)),\n);\n\nexport const FALLBACK_PERMISSION_CATALOG_RESPONSE: PermissionCatalogResponse = {\n items: FALLBACK_PERMISSION_CATALOG,\n groups: FALLBACK_PERMISSION_GROUPS,\n};\n"],"mappings":"AAkBO,MAAM,8BAAuD;AAAA,EAClE;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAEO,MAAM,6BAAuC,MAAM;AAAA,EACxD,IAAI,IAAI,4BAA4B,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAC/D;AAEO,MAAM,uCAAkE;AAAA,EAC7E,OAAO;AAAA,EACP,QAAQ;AACV;","names":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { PermissionKey } from './use-permissions';
|
|
2
|
+
/**
|
|
3
|
+
* What changed about someone's access, in the words they will recognise.
|
|
4
|
+
*
|
|
5
|
+
* Permissions used to be fetched once per tenant and never again, so a change
|
|
6
|
+
* only landed when a person happened to reload. That was fixed — a returning
|
|
7
|
+
* tab re-asks — and the fix created this problem: a staff member's sidebar can
|
|
8
|
+
* now change WHILE THEY ARE WORKING. Rows appear and disappear with no
|
|
9
|
+
* explanation, possibly with a customer standing in front of them.
|
|
10
|
+
*
|
|
11
|
+
* Reported by AREA rather than by permission key, because "canManageDiscounts"
|
|
12
|
+
* is the database's word. An area is the row they will notice going missing.
|
|
13
|
+
*
|
|
14
|
+
* Administration switches are excluded on purpose: nobody's shift is
|
|
15
|
+
* interrupted by gaining `canManageDomains`, and listing it would turn a
|
|
16
|
+
* useful sentence into a changelog.
|
|
17
|
+
*/
|
|
18
|
+
export interface PermissionChange {
|
|
19
|
+
/** Area labels this person can now reach and could not before. */
|
|
20
|
+
gained: string[];
|
|
21
|
+
/** Area labels they could reach and now cannot. */
|
|
22
|
+
lost: string[];
|
|
23
|
+
}
|
|
24
|
+
type PermissionMap = Partial<Record<PermissionKey, boolean>>;
|
|
25
|
+
/**
|
|
26
|
+
* Returns null when nothing a person would notice has changed.
|
|
27
|
+
*
|
|
28
|
+
* Null rather than an empty object so callers cannot accidentally announce a
|
|
29
|
+
* change of nothing — the two lists being empty is the common case on every
|
|
30
|
+
* refetch, and a notice that fires on every window focus would be worse than
|
|
31
|
+
* the silence it replaces.
|
|
32
|
+
*/
|
|
33
|
+
export declare function diffPermissions(before: PermissionMap | null, after: PermissionMap): PermissionChange | null;
|
|
34
|
+
/**
|
|
35
|
+
* One sentence describing the change.
|
|
36
|
+
*
|
|
37
|
+
* Losing access leads whenever both happen. Someone who gained Discounts and
|
|
38
|
+
* lost Money needs to hear about the Money — that is the one that will stop
|
|
39
|
+
* them mid-task, and burying it after good news is how a notice gets skimmed.
|
|
40
|
+
*/
|
|
41
|
+
export declare function describePermissionChange(change: PermissionChange): string;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { PERMISSION_AREAS } from "./team-roles";
|
|
2
|
+
function reaches(map, area) {
|
|
3
|
+
return Boolean(area.view && map[area.view] || map[area.manage]);
|
|
4
|
+
}
|
|
5
|
+
function diffPermissions(before, after) {
|
|
6
|
+
if (!before) return null;
|
|
7
|
+
const gained = [];
|
|
8
|
+
const lost = [];
|
|
9
|
+
for (const area of PERMISSION_AREAS) {
|
|
10
|
+
if (area.advanced) continue;
|
|
11
|
+
const had = reaches(before, area);
|
|
12
|
+
const has = reaches(after, area);
|
|
13
|
+
if (has && !had) gained.push(area.label);
|
|
14
|
+
if (!has && had) lost.push(area.label);
|
|
15
|
+
}
|
|
16
|
+
if (gained.length === 0 && lost.length === 0) return null;
|
|
17
|
+
return { gained, lost };
|
|
18
|
+
}
|
|
19
|
+
function describePermissionChange(change) {
|
|
20
|
+
const list = (items) => items.length === 1 ? items[0] : `${items.slice(0, -1).join(", ")} and ${items[items.length - 1]}`;
|
|
21
|
+
if (change.lost.length && change.gained.length) {
|
|
22
|
+
return `You no longer have ${list(change.lost)}, and you now have ${list(
|
|
23
|
+
change.gained
|
|
24
|
+
)}.`;
|
|
25
|
+
}
|
|
26
|
+
if (change.lost.length) return `You no longer have ${list(change.lost)}.`;
|
|
27
|
+
return `You now have ${list(change.gained)}.`;
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
describePermissionChange,
|
|
31
|
+
diffPermissions
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=permission-change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permission-change.ts"],"sourcesContent":["import { PERMISSION_AREAS } from './team-roles';\nimport type { PermissionKey } from './use-permissions';\n\n/**\n * What changed about someone's access, in the words they will recognise.\n *\n * Permissions used to be fetched once per tenant and never again, so a change\n * only landed when a person happened to reload. That was fixed — a returning\n * tab re-asks — and the fix created this problem: a staff member's sidebar can\n * now change WHILE THEY ARE WORKING. Rows appear and disappear with no\n * explanation, possibly with a customer standing in front of them.\n *\n * Reported by AREA rather than by permission key, because \"canManageDiscounts\"\n * is the database's word. An area is the row they will notice going missing.\n *\n * Administration switches are excluded on purpose: nobody's shift is\n * interrupted by gaining `canManageDomains`, and listing it would turn a\n * useful sentence into a changelog.\n */\nexport interface PermissionChange {\n /** Area labels this person can now reach and could not before. */\n gained: string[];\n /** Area labels they could reach and now cannot. */\n lost: string[];\n}\n\ntype PermissionMap = Partial<Record<PermissionKey, boolean>>;\n\nfunction reaches(map: PermissionMap, area: (typeof PERMISSION_AREAS)[number]) {\n return Boolean((area.view && map[area.view]) || map[area.manage]);\n}\n\n/**\n * Returns null when nothing a person would notice has changed.\n *\n * Null rather than an empty object so callers cannot accidentally announce a\n * change of nothing — the two lists being empty is the common case on every\n * refetch, and a notice that fires on every window focus would be worse than\n * the silence it replaces.\n */\nexport function diffPermissions(\n before: PermissionMap | null,\n after: PermissionMap,\n): PermissionChange | null {\n // No baseline means this is the first load, not a change. Announcing \"you\n // gained 6 areas\" to someone who just signed in would be nonsense.\n if (!before) return null;\n\n const gained: string[] = [];\n const lost: string[] = [];\n\n for (const area of PERMISSION_AREAS) {\n if (area.advanced) continue;\n const had = reaches(before, area);\n const has = reaches(after, area);\n if (has && !had) gained.push(area.label);\n if (!has && had) lost.push(area.label);\n }\n\n if (gained.length === 0 && lost.length === 0) return null;\n return { gained, lost };\n}\n\n/**\n * One sentence describing the change.\n *\n * Losing access leads whenever both happen. Someone who gained Discounts and\n * lost Money needs to hear about the Money — that is the one that will stop\n * them mid-task, and burying it after good news is how a notice gets skimmed.\n */\nexport function describePermissionChange(change: PermissionChange): string {\n const list = (items: string[]) =>\n items.length === 1\n ? items[0]\n : `${items.slice(0, -1).join(', ')} and ${items[items.length - 1]}`;\n\n if (change.lost.length && change.gained.length) {\n return `You no longer have ${list(change.lost)}, and you now have ${list(\n change.gained,\n )}.`;\n }\n if (change.lost.length) return `You no longer have ${list(change.lost)}.`;\n return `You now have ${list(change.gained)}.`;\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AA4BjC,SAAS,QAAQ,KAAoB,MAAyC;AAC5E,SAAO,QAAS,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAM,IAAI,KAAK,MAAM,CAAC;AAClE;AAUO,SAAS,gBACd,QACA,OACyB;AAGzB,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,SAAmB,CAAC;AAC1B,QAAM,OAAiB,CAAC;AAExB,aAAW,QAAQ,kBAAkB;AACnC,QAAI,KAAK,SAAU;AACnB,UAAM,MAAM,QAAQ,QAAQ,IAAI;AAChC,UAAM,MAAM,QAAQ,OAAO,IAAI;AAC/B,QAAI,OAAO,CAAC,IAAK,QAAO,KAAK,KAAK,KAAK;AACvC,QAAI,CAAC,OAAO,IAAK,MAAK,KAAK,KAAK,KAAK;AAAA,EACvC;AAEA,MAAI,OAAO,WAAW,KAAK,KAAK,WAAW,EAAG,QAAO;AACrD,SAAO,EAAE,QAAQ,KAAK;AACxB;AASO,SAAS,yBAAyB,QAAkC;AACzE,QAAM,OAAO,CAAC,UACZ,MAAM,WAAW,IACb,MAAM,CAAC,IACP,GAAG,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,MAAM,MAAM,SAAS,CAAC,CAAC;AAErE,MAAI,OAAO,KAAK,UAAU,OAAO,OAAO,QAAQ;AAC9C,WAAO,sBAAsB,KAAK,OAAO,IAAI,CAAC,sBAAsB;AAAA,MAClE,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACA,MAAI,OAAO,KAAK,OAAQ,QAAO,sBAAsB,KAAK,OAAO,IAAI,CAAC;AACtE,SAAO,gBAAgB,KAAK,OAAO,MAAM,CAAC;AAC5C;","names":[]}
|
package/dist/phone.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One spelling of a phone number, so two of them can be compared.
|
|
3
|
+
*
|
|
4
|
+
* The mirror of `@shared/phone` in potter-api, and it has to stay the mirror:
|
|
5
|
+
* the API stores a contact as digits with the country code resolved, and this
|
|
6
|
+
* dashboard compares its own audience against that list. If the two rules
|
|
7
|
+
* disagree, every comparison silently returns nothing — a merchant would be
|
|
8
|
+
* told their whole list is unreachable, with no error anywhere to explain it.
|
|
9
|
+
*
|
|
10
|
+
* A merchant types `0801 234 5678`, the storefront saves `+2348012345678`, and
|
|
11
|
+
* WhatsApp hands back `2348012345678`. All three are one person.
|
|
12
|
+
*/
|
|
13
|
+
/** Digits only, no leading `+`, country code resolved. */
|
|
14
|
+
export declare function toE164Digits(phone: string | null | undefined): string;
|
|
15
|
+
/** The same number, written the way a person reads it back. */
|
|
16
|
+
export declare function toE164(phone: string | null | undefined): string;
|
package/dist/phone.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const NG_LOCAL = /^0\d{10}$/;
|
|
2
|
+
function toE164Digits(phone) {
|
|
3
|
+
if (!phone) return "";
|
|
4
|
+
const trimmed = phone.trim().replace(/^whatsapp:/i, "");
|
|
5
|
+
const hadPlus = trimmed.startsWith("+");
|
|
6
|
+
const digits = trimmed.replace(/\D/g, "");
|
|
7
|
+
if (!digits) return "";
|
|
8
|
+
if (hadPlus) return digits;
|
|
9
|
+
if (NG_LOCAL.test(digits)) return `234${digits.slice(1)}`;
|
|
10
|
+
return digits;
|
|
11
|
+
}
|
|
12
|
+
function toE164(phone) {
|
|
13
|
+
const digits = toE164Digits(phone);
|
|
14
|
+
return digits ? `+${digits}` : "";
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
toE164,
|
|
18
|
+
toE164Digits
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=phone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/phone.ts"],"sourcesContent":["/**\n * One spelling of a phone number, so two of them can be compared.\n *\n * The mirror of `@shared/phone` in potter-api, and it has to stay the mirror:\n * the API stores a contact as digits with the country code resolved, and this\n * dashboard compares its own audience against that list. If the two rules\n * disagree, every comparison silently returns nothing — a merchant would be\n * told their whole list is unreachable, with no error anywhere to explain it.\n *\n * A merchant types `0801 234 5678`, the storefront saves `+2348012345678`, and\n * WhatsApp hands back `2348012345678`. All three are one person.\n */\n\n/** A local Nigerian number: 11 digits beginning 0. */\nconst NG_LOCAL = /^0\\d{10}$/;\n\n/** Digits only, no leading `+`, country code resolved. */\nexport function toE164Digits(phone: string | null | undefined): string {\n if (!phone) return '';\n\n const trimmed = phone.trim().replace(/^whatsapp:/i, '');\n const hadPlus = trimmed.startsWith('+');\n const digits = trimmed.replace(/\\D/g, '');\n\n if (!digits) return '';\n\n // Written with a country code already. Trust it — guessing on top of an\n // explicit `+` is how a valid international number gets mangled.\n if (hadPlus) return digits;\n\n if (NG_LOCAL.test(digits)) return `234${digits.slice(1)}`;\n\n return digits;\n}\n\n/** The same number, written the way a person reads it back. */\nexport function toE164(phone: string | null | undefined): string {\n const digits = toE164Digits(phone);\n return digits ? `+${digits}` : '';\n}\n"],"mappings":"AAcA,MAAM,WAAW;AAGV,SAAS,aAAa,OAA0C;AACrE,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,eAAe,EAAE;AACtD,QAAM,UAAU,QAAQ,WAAW,GAAG;AACtC,QAAM,SAAS,QAAQ,QAAQ,OAAO,EAAE;AAExC,MAAI,CAAC,OAAQ,QAAO;AAIpB,MAAI,QAAS,QAAO;AAEpB,MAAI,SAAS,KAAK,MAAM,EAAG,QAAO,MAAM,OAAO,MAAM,CAAC,CAAC;AAEvD,SAAO;AACT;AAGO,SAAS,OAAO,OAA0C;AAC/D,QAAM,SAAS,aAAa,KAAK;AACjC,SAAO,SAAS,IAAI,MAAM,KAAK;AACjC;","names":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Entitlements, MerchantPlan } from "./pricing-plans-types";
|
|
2
|
+
/**
|
|
3
|
+
* Which features a page needs, whether the merchant's plan has them, and the
|
|
4
|
+
* plan that would unlock them. Pages map to feature keys through the
|
|
5
|
+
* dashboard's own capability table (`ROUTE_CAPABILITIES`): the plan feature
|
|
6
|
+
* keys are those capability keys.
|
|
7
|
+
*/
|
|
8
|
+
/** Settings › Billing › Plan, where a merchant changes plan. */
|
|
9
|
+
export declare const PLAN_PAGE = "/dashboard/settings/billing/subscription";
|
|
10
|
+
/** The feature names merchants read; the same list as the engine catalogue. */
|
|
11
|
+
export declare const FEATURE_NAMES: Record<string, string>;
|
|
12
|
+
export declare const featureName: (key: string) => string;
|
|
13
|
+
/** The feature keys a dashboard page needs (any one of them opens it). */
|
|
14
|
+
export declare function routeFeatures(pathname: string): string[];
|
|
15
|
+
/**
|
|
16
|
+
* The features a page is locked behind, or null when the merchant may use
|
|
17
|
+
* it. Unknown entitlements (no plan yet, an engine without plans) lock
|
|
18
|
+
* nothing.
|
|
19
|
+
*/
|
|
20
|
+
export declare function lockedFeatures(pathname: string, entitlements: Entitlements | null | undefined): string[] | null;
|
|
21
|
+
export interface Unlock {
|
|
22
|
+
plan: MerchantPlan;
|
|
23
|
+
/** The price in the merchant's currency, when the plan has one. */
|
|
24
|
+
amountMinor: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The cheapest public plan, other than the merchant's own, that includes any
|
|
28
|
+
* of these features. Cheapest in the merchant's currency; a plan without a
|
|
29
|
+
* price there comes after every plan with one.
|
|
30
|
+
*/
|
|
31
|
+
export declare function unlockingPlan(features: string[], plans: MerchantPlan[], currency: string | null, currentPlanId?: string | null): Unlock | null;
|
|
32
|
+
/**
|
|
33
|
+
* The capability keys a merchant may see in the menu: the box's own set
|
|
34
|
+
* narrowed to what their plan includes. Null leaves the box's set alone.
|
|
35
|
+
*/
|
|
36
|
+
export declare function planCapabilityKeys(entitlements: Entitlements | null | undefined, box: {
|
|
37
|
+
known: boolean;
|
|
38
|
+
keys: string[];
|
|
39
|
+
}): string[] | null;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { routeCapability } from "./capability-context";
|
|
2
|
+
import { compareMinor } from "./plan-price";
|
|
3
|
+
const PLAN_PAGE = "/dashboard/settings/billing/subscription";
|
|
4
|
+
const FEATURE_NAMES = {
|
|
5
|
+
orders: "Orders",
|
|
6
|
+
catalog: "Catalog",
|
|
7
|
+
customers: "Customers",
|
|
8
|
+
discounts: "Discounts",
|
|
9
|
+
giftcards: "Gift cards",
|
|
10
|
+
loyalty: "Loyalty",
|
|
11
|
+
reviews: "Reviews",
|
|
12
|
+
blog: "Blog",
|
|
13
|
+
bookings: "Bookings",
|
|
14
|
+
subscriptions: "Subscriptions",
|
|
15
|
+
invoices: "Invoices",
|
|
16
|
+
payments: "Payments",
|
|
17
|
+
settlements: "Settlements",
|
|
18
|
+
shipping: "Shipping",
|
|
19
|
+
analytics: "Analytics",
|
|
20
|
+
team_members: "Team members"
|
|
21
|
+
};
|
|
22
|
+
const featureName = (key) => FEATURE_NAMES[key] ?? key.replace(/_/g, " ");
|
|
23
|
+
function routeFeatures(pathname) {
|
|
24
|
+
const required = routeCapability(pathname);
|
|
25
|
+
if (!required) return [];
|
|
26
|
+
return Array.isArray(required) ? required : [required];
|
|
27
|
+
}
|
|
28
|
+
function lockedFeatures(pathname, entitlements) {
|
|
29
|
+
const needed = routeFeatures(pathname);
|
|
30
|
+
if (!entitlements || !needed.length) return null;
|
|
31
|
+
return needed.some((key) => entitlements[key]?.included) ? null : needed;
|
|
32
|
+
}
|
|
33
|
+
function unlockingPlan(features, plans, currency, currentPlanId = null) {
|
|
34
|
+
const candidates = plans.filter((p) => p.id !== currentPlanId).filter((p) => features.some((key) => p.features[key]?.included)).map((plan) => ({
|
|
35
|
+
plan,
|
|
36
|
+
amountMinor: currency ? plan.prices[currency] ?? null : null
|
|
37
|
+
}));
|
|
38
|
+
candidates.sort((a, b) => compareMinor(a.amountMinor, b.amountMinor));
|
|
39
|
+
return candidates[0] ?? null;
|
|
40
|
+
}
|
|
41
|
+
function planCapabilityKeys(entitlements, box) {
|
|
42
|
+
if (!entitlements) return null;
|
|
43
|
+
const inPlan = Object.keys(entitlements).filter(
|
|
44
|
+
(key) => entitlements[key]?.included
|
|
45
|
+
);
|
|
46
|
+
return box.known ? box.keys.filter((key) => inPlan.includes(key)) : inPlan;
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
FEATURE_NAMES,
|
|
50
|
+
PLAN_PAGE,
|
|
51
|
+
featureName,
|
|
52
|
+
lockedFeatures,
|
|
53
|
+
planCapabilityKeys,
|
|
54
|
+
routeFeatures,
|
|
55
|
+
unlockingPlan
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=plan-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plan-access.ts"],"sourcesContent":["import { routeCapability } from \"./capability-context\";\nimport { compareMinor } from \"./plan-price\";\nimport type { Entitlements, MerchantPlan } from \"./pricing-plans-types\";\n\n/**\n * Which features a page needs, whether the merchant's plan has them, and the\n * plan that would unlock them. Pages map to feature keys through the\n * dashboard's own capability table (`ROUTE_CAPABILITIES`): the plan feature\n * keys are those capability keys.\n */\n\n/** Settings › Billing › Plan, where a merchant changes plan. */\nexport const PLAN_PAGE = \"/dashboard/settings/billing/subscription\";\n\n/** The feature names merchants read; the same list as the engine catalogue. */\nexport const FEATURE_NAMES: Record<string, string> = {\n orders: \"Orders\",\n catalog: \"Catalog\",\n customers: \"Customers\",\n discounts: \"Discounts\",\n giftcards: \"Gift cards\",\n loyalty: \"Loyalty\",\n reviews: \"Reviews\",\n blog: \"Blog\",\n bookings: \"Bookings\",\n subscriptions: \"Subscriptions\",\n invoices: \"Invoices\",\n payments: \"Payments\",\n settlements: \"Settlements\",\n shipping: \"Shipping\",\n analytics: \"Analytics\",\n team_members: \"Team members\",\n};\n\nexport const featureName = (key: string) =>\n FEATURE_NAMES[key] ?? key.replace(/_/g, \" \");\n\n/** The feature keys a dashboard page needs (any one of them opens it). */\nexport function routeFeatures(pathname: string): string[] {\n const required = routeCapability(pathname);\n\n if (!required) return [];\n\n return Array.isArray(required) ? required : [required];\n}\n\n/**\n * The features a page is locked behind, or null when the merchant may use\n * it. Unknown entitlements (no plan yet, an engine without plans) lock\n * nothing.\n */\nexport function lockedFeatures(\n pathname: string,\n entitlements: Entitlements | null | undefined\n): string[] | null {\n const needed = routeFeatures(pathname);\n\n if (!entitlements || !needed.length) return null;\n\n return needed.some((key) => entitlements[key]?.included) ? null : needed;\n}\n\nexport interface Unlock {\n plan: MerchantPlan;\n /** The price in the merchant's currency, when the plan has one. */\n amountMinor: string | null;\n}\n\n/**\n * The cheapest public plan, other than the merchant's own, that includes any\n * of these features. Cheapest in the merchant's currency; a plan without a\n * price there comes after every plan with one.\n */\nexport function unlockingPlan(\n features: string[],\n plans: MerchantPlan[],\n currency: string | null,\n currentPlanId: string | null = null\n): Unlock | null {\n const candidates = plans\n .filter((p) => p.id !== currentPlanId)\n .filter((p) => features.some((key) => p.features[key]?.included))\n .map((plan) => ({\n plan,\n amountMinor: currency ? plan.prices[currency] ?? null : null,\n }));\n\n candidates.sort((a, b) => compareMinor(a.amountMinor, b.amountMinor));\n\n return candidates[0] ?? null;\n}\n\n/**\n * The capability keys a merchant may see in the menu: the box's own set\n * narrowed to what their plan includes. Null leaves the box's set alone.\n */\nexport function planCapabilityKeys(\n entitlements: Entitlements | null | undefined,\n box: { known: boolean; keys: string[] }\n): string[] | null {\n if (!entitlements) return null;\n\n const inPlan = Object.keys(entitlements).filter(\n (key) => entitlements[key]?.included\n );\n\n return box.known ? box.keys.filter((key) => inPlan.includes(key)) : inPlan;\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAWtB,MAAM,YAAY;AAGlB,MAAM,gBAAwC;AAAA,EACnD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAChB;AAEO,MAAM,cAAc,CAAC,QAC1B,cAAc,GAAG,KAAK,IAAI,QAAQ,MAAM,GAAG;AAGtC,SAAS,cAAc,UAA4B;AACxD,QAAM,WAAW,gBAAgB,QAAQ;AAEzC,MAAI,CAAC,SAAU,QAAO,CAAC;AAEvB,SAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AACvD;AAOO,SAAS,eACd,UACA,cACiB;AACjB,QAAM,SAAS,cAAc,QAAQ;AAErC,MAAI,CAAC,gBAAgB,CAAC,OAAO,OAAQ,QAAO;AAE5C,SAAO,OAAO,KAAK,CAAC,QAAQ,aAAa,GAAG,GAAG,QAAQ,IAAI,OAAO;AACpE;AAaO,SAAS,cACd,UACA,OACA,UACA,gBAA+B,MAChB;AACf,QAAM,aAAa,MAChB,OAAO,CAAC,MAAM,EAAE,OAAO,aAAa,EACpC,OAAO,CAAC,MAAM,SAAS,KAAK,CAAC,QAAQ,EAAE,SAAS,GAAG,GAAG,QAAQ,CAAC,EAC/D,IAAI,CAAC,UAAU;AAAA,IACd;AAAA,IACA,aAAa,WAAW,KAAK,OAAO,QAAQ,KAAK,OAAO;AAAA,EAC1D,EAAE;AAEJ,aAAW,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC;AAEpE,SAAO,WAAW,CAAC,KAAK;AAC1B;AAMO,SAAS,mBACd,cACA,KACiB;AACjB,MAAI,CAAC,aAAc,QAAO;AAE1B,QAAM,SAAS,OAAO,KAAK,YAAY,EAAE;AAAA,IACvC,CAAC,QAAQ,aAAa,GAAG,GAAG;AAAA,EAC9B;AAEA,SAAO,IAAI,QAAQ,IAAI,KAAK,OAAO,CAAC,QAAQ,OAAO,SAAS,GAAG,CAAC,IAAI;AACtE;","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Paying the Olive plan by card, through the payment gateway's hosted checkout. The card is
|
|
3
|
+
* entered on the gateway's page and never reaches the dashboard or the engine.
|
|
4
|
+
*/
|
|
5
|
+
export type PlanCardStatus = "pending" | "active" | "failed" | "replaced";
|
|
6
|
+
export interface PlanCardView {
|
|
7
|
+
reference: string;
|
|
8
|
+
status: PlanCardStatus;
|
|
9
|
+
/** What the plan costs a month, in minor units of `currency`. */
|
|
10
|
+
amountMinor: string;
|
|
11
|
+
currency: string;
|
|
12
|
+
paidAt: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface PlanCardState {
|
|
15
|
+
/** Whether this merchant can pay by card: the gateway is on, the plan is linked and priced. */
|
|
16
|
+
available: boolean;
|
|
17
|
+
/** The card paying now, or the latest attempt. */
|
|
18
|
+
card: PlanCardView | null;
|
|
19
|
+
}
|
|
20
|
+
export declare const PLAN_CARD_KEY: string[];
|
|
21
|
+
export declare const planCardApi: {
|
|
22
|
+
state: () => Promise<PlanCardState>;
|
|
23
|
+
/** Starts the gateway's checkout: send the merchant to `checkoutUrl`. */
|
|
24
|
+
start: () => Promise<{
|
|
25
|
+
checkoutUrl: string;
|
|
26
|
+
reference: string;
|
|
27
|
+
}>;
|
|
28
|
+
/** After the merchant comes back: asks the gateway what happened and records it. */
|
|
29
|
+
confirm: (reference: string) => Promise<PlanCardView | null>;
|
|
30
|
+
};
|
|
31
|
+
/** What the page says about a card, in one sentence. */
|
|
32
|
+
export declare function planCardLine(card: PlanCardView | null, amountText: string): string;
|
|
33
|
+
/** The address to leave the card return in: `?card=<reference>` is read and removed. */
|
|
34
|
+
export declare const CARD_RETURN_PARAM = "card";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { apiFetch } from "./api";
|
|
2
|
+
const PLAN_CARD_KEY = ["pricing", "subscription", "card"];
|
|
3
|
+
const planCardApi = {
|
|
4
|
+
state: () => apiFetch("/pricing/subscription/card"),
|
|
5
|
+
/** Starts the gateway's checkout: send the merchant to `checkoutUrl`. */
|
|
6
|
+
start: () => apiFetch("/pricing/subscription/card", {
|
|
7
|
+
method: "POST",
|
|
8
|
+
body: JSON.stringify({})
|
|
9
|
+
}),
|
|
10
|
+
/** After the merchant comes back: asks the gateway what happened and records it. */
|
|
11
|
+
confirm: (reference) => apiFetch("/pricing/subscription/card/confirm", {
|
|
12
|
+
method: "POST",
|
|
13
|
+
body: JSON.stringify({ reference })
|
|
14
|
+
})
|
|
15
|
+
};
|
|
16
|
+
function planCardLine(card, amountText) {
|
|
17
|
+
if (!card) return "Pay your plan by card instead of from your wallet.";
|
|
18
|
+
if (card.status === "active") return `Your plan is paid by card: ${amountText} a month.`;
|
|
19
|
+
if (card.status === "pending") return "Waiting for the card payment to finish.";
|
|
20
|
+
if (card.status === "failed") return "Your last card payment did not go through.";
|
|
21
|
+
return "Pay your plan by card instead of from your wallet.";
|
|
22
|
+
}
|
|
23
|
+
const CARD_RETURN_PARAM = "card";
|
|
24
|
+
export {
|
|
25
|
+
CARD_RETURN_PARAM,
|
|
26
|
+
PLAN_CARD_KEY,
|
|
27
|
+
planCardApi,
|
|
28
|
+
planCardLine
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=plan-card-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plan-card-api.ts"],"sourcesContent":["import { apiFetch } from \"./api\";\n\n/**\n * Paying the Olive plan by card, through the payment gateway's hosted checkout. The card is\n * entered on the gateway's page and never reaches the dashboard or the engine.\n */\nexport type PlanCardStatus = \"pending\" | \"active\" | \"failed\" | \"replaced\";\n\nexport interface PlanCardView {\n reference: string;\n status: PlanCardStatus;\n /** What the plan costs a month, in minor units of `currency`. */\n amountMinor: string;\n currency: string;\n paidAt: string | null;\n}\n\nexport interface PlanCardState {\n /** Whether this merchant can pay by card: the gateway is on, the plan is linked and priced. */\n available: boolean;\n /** The card paying now, or the latest attempt. */\n card: PlanCardView | null;\n}\n\nexport const PLAN_CARD_KEY = [\"pricing\", \"subscription\", \"card\"];\n\nexport const planCardApi = {\n state: () => apiFetch<PlanCardState>(\"/pricing/subscription/card\"),\n\n /** Starts the gateway's checkout: send the merchant to `checkoutUrl`. */\n start: () =>\n apiFetch<{ checkoutUrl: string; reference: string }>(\"/pricing/subscription/card\", {\n method: \"POST\",\n body: JSON.stringify({}),\n }),\n\n /** After the merchant comes back: asks the gateway what happened and records it. */\n confirm: (reference: string) =>\n apiFetch<PlanCardView | null>(\"/pricing/subscription/card/confirm\", {\n method: \"POST\",\n body: JSON.stringify({ reference }),\n }),\n};\n\n/** What the page says about a card, in one sentence. */\nexport function planCardLine(card: PlanCardView | null, amountText: string): string {\n if (!card) return \"Pay your plan by card instead of from your wallet.\";\n if (card.status === \"active\") return `Your plan is paid by card: ${amountText} a month.`;\n if (card.status === \"pending\") return \"Waiting for the card payment to finish.\";\n if (card.status === \"failed\") return \"Your last card payment did not go through.\";\n\n return \"Pay your plan by card instead of from your wallet.\";\n}\n\n/** The address to leave the card return in: `?card=<reference>` is read and removed. */\nexport const CARD_RETURN_PARAM = \"card\";\n"],"mappings":"AAAA,SAAS,gBAAgB;AAwBlB,MAAM,gBAAgB,CAAC,WAAW,gBAAgB,MAAM;AAExD,MAAM,cAAc;AAAA,EACzB,OAAO,MAAM,SAAwB,4BAA4B;AAAA;AAAA,EAGjE,OAAO,MACL,SAAqD,8BAA8B;AAAA,IACjF,QAAQ;AAAA,IACR,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,EACzB,CAAC;AAAA;AAAA,EAGH,SAAS,CAAC,cACR,SAA8B,sCAAsC;AAAA,IAClE,QAAQ;AAAA,IACR,MAAM,KAAK,UAAU,EAAE,UAAU,CAAC;AAAA,EACpC,CAAC;AACL;AAGO,SAAS,aAAa,MAA2B,YAA4B;AAClF,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,KAAK,WAAW,SAAU,QAAO,8BAA8B,UAAU;AAC7E,MAAI,KAAK,WAAW,UAAW,QAAO;AACtC,MAAI,KAAK,WAAW,SAAU,QAAO;AAErC,SAAO;AACT;AAGO,MAAM,oBAAoB;","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Prices } from "./admin-pricing-api";
|
|
2
|
+
/**
|
|
3
|
+
* "₦15,000" from "1500000" NGN. With the exponent the API sent, the digits
|
|
4
|
+
* are split there; without one, Intl's own exponent for the code is used.
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatPlanPrice(minor: string, currency: string, exponent?: number | null): string;
|
|
7
|
+
/** NGN first, then the rest by code. */
|
|
8
|
+
export declare const byCurrency: (a: string, b: string) => number;
|
|
9
|
+
/**
|
|
10
|
+
* The one price to show for a plan whose prices are plain numbers in major
|
|
11
|
+
* units: naira when the plan has a naira price, then the preferred currency
|
|
12
|
+
* if it has one, then the first other currency by code. Never a conversion,
|
|
13
|
+
* and the currency comes back with the amount so it is never shown under
|
|
14
|
+
* another currency's sign.
|
|
15
|
+
*/
|
|
16
|
+
export declare function pickPlanPrice(prices: Record<string, number> | null | undefined, preferred?: string | null): {
|
|
17
|
+
currency: string;
|
|
18
|
+
amount: number;
|
|
19
|
+
} | null;
|
|
20
|
+
/**
|
|
21
|
+
* The price lines to show. Asked for one currency (the single price a
|
|
22
|
+
* merchant sees): a plan with a naira price shows just that, else the
|
|
23
|
+
* currency asked for if the plan has it, else every currency it has. Asked
|
|
24
|
+
* for none, every currency it has, one line each, naira first. The exponent
|
|
25
|
+
* only applies to the currency asked for.
|
|
26
|
+
*/
|
|
27
|
+
export declare function planPriceLines(prices: Prices, currency?: string | null, exponent?: number | null): string[];
|
|
28
|
+
/** "₦15,000 a month", or "₦15,000 a month · $10 a month" across currencies. */
|
|
29
|
+
export declare function planPriceText(prices: Prices, currency?: string | null, exponent?: number | null): string;
|
|
30
|
+
/**
|
|
31
|
+
* Orders two minor-unit amounts as bigints: negative when `a` is cheaper.
|
|
32
|
+
* A missing amount sorts after any amount.
|
|
33
|
+
*/
|
|
34
|
+
export declare function compareMinor(a: string | null | undefined, b: string | null | undefined): number;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { formatMinor } from "./money-minor";
|
|
2
|
+
const fixed = (currency, exponent) => new Intl.NumberFormat("en", {
|
|
3
|
+
style: "currency",
|
|
4
|
+
currency,
|
|
5
|
+
currencyDisplay: "narrowSymbol",
|
|
6
|
+
minimumFractionDigits: exponent,
|
|
7
|
+
maximumFractionDigits: exponent
|
|
8
|
+
});
|
|
9
|
+
function formatPlanPrice(minor, currency, exponent) {
|
|
10
|
+
if (exponent === void 0 || exponent === null) {
|
|
11
|
+
return formatMinor(minor, currency, { trimZeros: true });
|
|
12
|
+
}
|
|
13
|
+
const digits = minor.replace(/^0+(?=\d)/, "").padStart(exponent + 1, "0");
|
|
14
|
+
const whole = digits.slice(0, digits.length - exponent);
|
|
15
|
+
const fraction = digits.slice(digits.length - exponent);
|
|
16
|
+
const decimal = fraction ? `${whole}.${fraction}` : whole;
|
|
17
|
+
let text;
|
|
18
|
+
try {
|
|
19
|
+
text = fixed(currency, exponent).format(decimal);
|
|
20
|
+
} catch {
|
|
21
|
+
text = `${currency} ${decimal}`;
|
|
22
|
+
}
|
|
23
|
+
return text.replace(/[.,]0+(?=\D*$)/, "");
|
|
24
|
+
}
|
|
25
|
+
const byCurrency = (a, b) => a === "NGN" ? -1 : b === "NGN" ? 1 : a.localeCompare(b);
|
|
26
|
+
function pickPlanPrice(prices, preferred) {
|
|
27
|
+
if (!prices) return null;
|
|
28
|
+
const code = prices["NGN"] !== void 0 ? "NGN" : preferred && prices[preferred] !== void 0 ? preferred : Object.keys(prices).sort((a, b) => a.localeCompare(b))[0];
|
|
29
|
+
return code === void 0 ? null : { currency: code, amount: prices[code] };
|
|
30
|
+
}
|
|
31
|
+
function planPriceLines(prices, currency, exponent) {
|
|
32
|
+
if (currency && prices["NGN"] !== void 0) {
|
|
33
|
+
return [formatPlanPrice(prices["NGN"], "NGN", currency === "NGN" ? exponent : void 0)];
|
|
34
|
+
}
|
|
35
|
+
if (currency && prices[currency] !== void 0) {
|
|
36
|
+
return [formatPlanPrice(prices[currency], currency, exponent)];
|
|
37
|
+
}
|
|
38
|
+
return Object.keys(prices).sort(byCurrency).map((code) => formatPlanPrice(prices[code], code));
|
|
39
|
+
}
|
|
40
|
+
function planPriceText(prices, currency, exponent) {
|
|
41
|
+
const lines = planPriceLines(prices, currency, exponent);
|
|
42
|
+
return lines.length ? lines.map((l) => `${l} a month`).join(" \xB7 ") : "No price";
|
|
43
|
+
}
|
|
44
|
+
function compareMinor(a, b) {
|
|
45
|
+
if (a == null || b == null) return a == null ? b == null ? 0 : 1 : -1;
|
|
46
|
+
const diff = BigInt(a) - BigInt(b);
|
|
47
|
+
return diff < BigInt(0) ? -1 : diff > BigInt(0) ? 1 : 0;
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
byCurrency,
|
|
51
|
+
compareMinor,
|
|
52
|
+
formatPlanPrice,
|
|
53
|
+
pickPlanPrice,
|
|
54
|
+
planPriceLines,
|
|
55
|
+
planPriceText
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=plan-price.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plan-price.ts"],"sourcesContent":["import { formatMinor } from \"./money-minor\";\nimport type { Prices } from \"./admin-pricing-api\";\n\n/**\n * Plan prices as people read them. Amounts stay minor-unit strings and are\n * split at the currency's exponent as text: never divided by 100, never\n * added across currencies.\n */\n\nconst fixed = (currency: string, exponent: number) =>\n new Intl.NumberFormat(\"en\", {\n style: \"currency\",\n currency,\n currencyDisplay: \"narrowSymbol\",\n minimumFractionDigits: exponent,\n maximumFractionDigits: exponent,\n });\n\n/**\n * \"₦15,000\" from \"1500000\" NGN. With the exponent the API sent, the digits\n * are split there; without one, Intl's own exponent for the code is used.\n */\nexport function formatPlanPrice(\n minor: string,\n currency: string,\n exponent?: number | null\n): string {\n if (exponent === undefined || exponent === null) {\n return formatMinor(minor, currency, { trimZeros: true });\n }\n\n const digits = minor.replace(/^0+(?=\\d)/, \"\").padStart(exponent + 1, \"0\");\n const whole = digits.slice(0, digits.length - exponent);\n const fraction = digits.slice(digits.length - exponent);\n const decimal = fraction ? `${whole}.${fraction}` : whole;\n let text: string;\n\n try {\n text = fixed(currency, exponent).format(decimal as unknown as number);\n } catch {\n text = `${currency} ${decimal}`;\n }\n\n return text.replace(/[.,]0+(?=\\D*$)/, \"\");\n}\n\n/** NGN first, then the rest by code. */\nexport const byCurrency = (a: string, b: string) =>\n a === \"NGN\" ? -1 : b === \"NGN\" ? 1 : a.localeCompare(b);\n\n/**\n * The one price to show for a plan whose prices are plain numbers in major\n * units: naira when the plan has a naira price, then the preferred currency\n * if it has one, then the first other currency by code. Never a conversion,\n * and the currency comes back with the amount so it is never shown under\n * another currency's sign.\n */\nexport function pickPlanPrice(\n prices: Record<string, number> | null | undefined,\n preferred?: string | null\n): { currency: string; amount: number } | null {\n if (!prices) return null;\n\n const code =\n prices[\"NGN\"] !== undefined\n ? \"NGN\"\n : preferred && prices[preferred] !== undefined\n ? preferred\n : Object.keys(prices).sort((a, b) => a.localeCompare(b))[0];\n\n return code === undefined ? null : { currency: code, amount: prices[code] as number };\n}\n\n/**\n * The price lines to show. Asked for one currency (the single price a\n * merchant sees): a plan with a naira price shows just that, else the\n * currency asked for if the plan has it, else every currency it has. Asked\n * for none, every currency it has, one line each, naira first. The exponent\n * only applies to the currency asked for.\n */\nexport function planPriceLines(\n prices: Prices,\n currency?: string | null,\n exponent?: number | null\n): string[] {\n if (currency && prices[\"NGN\"] !== undefined) {\n return [formatPlanPrice(prices[\"NGN\"], \"NGN\", currency === \"NGN\" ? exponent : undefined)];\n }\n\n if (currency && prices[currency] !== undefined) {\n return [formatPlanPrice(prices[currency], currency, exponent)];\n }\n\n return Object.keys(prices)\n .sort(byCurrency)\n .map((code) => formatPlanPrice(prices[code], code));\n}\n\n/** \"₦15,000 a month\", or \"₦15,000 a month · $10 a month\" across currencies. */\nexport function planPriceText(\n prices: Prices,\n currency?: string | null,\n exponent?: number | null\n): string {\n const lines = planPriceLines(prices, currency, exponent);\n\n return lines.length ? lines.map((l) => `${l} a month`).join(\" · \") : \"No price\";\n}\n\n/**\n * Orders two minor-unit amounts as bigints: negative when `a` is cheaper.\n * A missing amount sorts after any amount.\n */\nexport function compareMinor(\n a: string | null | undefined,\n b: string | null | undefined\n): number {\n if (a == null || b == null) return a == null ? (b == null ? 0 : 1) : -1;\n\n const diff = BigInt(a) - BigInt(b);\n\n return diff < BigInt(0) ? -1 : diff > BigInt(0) ? 1 : 0;\n}\n"],"mappings":"AAAA,SAAS,mBAAmB;AAS5B,MAAM,QAAQ,CAAC,UAAkB,aAC/B,IAAI,KAAK,aAAa,MAAM;AAAA,EAC1B,OAAO;AAAA,EACP;AAAA,EACA,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,uBAAuB;AACzB,CAAC;AAMI,SAAS,gBACd,OACA,UACA,UACQ;AACR,MAAI,aAAa,UAAa,aAAa,MAAM;AAC/C,WAAO,YAAY,OAAO,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,EACzD;AAEA,QAAM,SAAS,MAAM,QAAQ,aAAa,EAAE,EAAE,SAAS,WAAW,GAAG,GAAG;AACxE,QAAM,QAAQ,OAAO,MAAM,GAAG,OAAO,SAAS,QAAQ;AACtD,QAAM,WAAW,OAAO,MAAM,OAAO,SAAS,QAAQ;AACtD,QAAM,UAAU,WAAW,GAAG,KAAK,IAAI,QAAQ,KAAK;AACpD,MAAI;AAEJ,MAAI;AACF,WAAO,MAAM,UAAU,QAAQ,EAAE,OAAO,OAA4B;AAAA,EACtE,QAAQ;AACN,WAAO,GAAG,QAAQ,IAAI,OAAO;AAAA,EAC/B;AAEA,SAAO,KAAK,QAAQ,kBAAkB,EAAE;AAC1C;AAGO,MAAM,aAAa,CAAC,GAAW,MACpC,MAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI,EAAE,cAAc,CAAC;AASjD,SAAS,cACd,QACA,WAC6C;AAC7C,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,OACJ,OAAO,KAAK,MAAM,SACd,QACA,aAAa,OAAO,SAAS,MAAM,SACjC,YACA,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;AAEhE,SAAO,SAAS,SAAY,OAAO,EAAE,UAAU,MAAM,QAAQ,OAAO,IAAI,EAAY;AACtF;AASO,SAAS,eACd,QACA,UACA,UACU;AACV,MAAI,YAAY,OAAO,KAAK,MAAM,QAAW;AAC3C,WAAO,CAAC,gBAAgB,OAAO,KAAK,GAAG,OAAO,aAAa,QAAQ,WAAW,MAAS,CAAC;AAAA,EAC1F;AAEA,MAAI,YAAY,OAAO,QAAQ,MAAM,QAAW;AAC9C,WAAO,CAAC,gBAAgB,OAAO,QAAQ,GAAG,UAAU,QAAQ,CAAC;AAAA,EAC/D;AAEA,SAAO,OAAO,KAAK,MAAM,EACtB,KAAK,UAAU,EACf,IAAI,CAAC,SAAS,gBAAgB,OAAO,IAAI,GAAG,IAAI,CAAC;AACtD;AAGO,SAAS,cACd,QACA,UACA,UACQ;AACR,QAAM,QAAQ,eAAe,QAAQ,UAAU,QAAQ;AAEvD,SAAO,MAAM,SAAS,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,QAAK,IAAI;AACvE;AAMO,SAAS,aACd,GACA,GACQ;AACR,MAAI,KAAK,QAAQ,KAAK,KAAM,QAAO,KAAK,OAAQ,KAAK,OAAO,IAAI,IAAK;AAErE,QAAM,OAAO,OAAO,CAAC,IAAI,OAAO,CAAC;AAEjC,SAAO,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,OAAO,CAAC,IAAI,IAAI;AACxD;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a signed-in visitor goes, and whether getting there costs a reload.
|
|
3
|
+
*
|
|
4
|
+
* `redirect` used to be handed straight to `window.location.href`. For a
|
|
5
|
+
* foreign URL that is right; for an in-app path it throws away the running
|
|
6
|
+
* application and re-boots auth from cold — and once the dashboard began
|
|
7
|
+
* sending its own path here when a session could not be confirmed, that was a
|
|
8
|
+
* reload loop rather than a round trip.
|
|
9
|
+
*
|
|
10
|
+
* ANYTHING NOT PROVABLY SAFE GOES TO THE DASHBOARD.
|
|
11
|
+
*
|
|
12
|
+
* `redirect` arrives in the query string, which means anybody can put anything
|
|
13
|
+
* in it and send someone the link. The first version of this only asked
|
|
14
|
+
* whether the value started with a slash, so every other shape fell through to
|
|
15
|
+
* `window.location.href = redirect` — an open redirect to any site on the
|
|
16
|
+
* internet off a potter.com URL, which is the classic phishing setup, and
|
|
17
|
+
* `javascript:` on top of it. A login screen is exactly the page attackers
|
|
18
|
+
* want that on.
|
|
19
|
+
*
|
|
20
|
+
* So the rule inverts: a value is followed only if it is recognisably a path
|
|
21
|
+
* inside this app, and everything else goes to the dashboard.
|
|
22
|
+
*/
|
|
23
|
+
/** Always an in-app path, so every caller can navigate with the router. */
|
|
24
|
+
export declare function postLoginTarget(redirect: string | null | undefined): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function postLoginTarget(redirect) {
|
|
2
|
+
const fallback = "/dashboard";
|
|
3
|
+
if (!redirect) return fallback;
|
|
4
|
+
if (redirect.startsWith("/") && !redirect.startsWith("//") && !redirect.startsWith("/\\")) {
|
|
5
|
+
return redirect;
|
|
6
|
+
}
|
|
7
|
+
return fallback;
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
postLoginTarget
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=post-login-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/post-login-target.ts"],"sourcesContent":["/**\n * Where a signed-in visitor goes, and whether getting there costs a reload.\n *\n * `redirect` used to be handed straight to `window.location.href`. For a\n * foreign URL that is right; for an in-app path it throws away the running\n * application and re-boots auth from cold — and once the dashboard began\n * sending its own path here when a session could not be confirmed, that was a\n * reload loop rather than a round trip.\n *\n * ANYTHING NOT PROVABLY SAFE GOES TO THE DASHBOARD.\n *\n * `redirect` arrives in the query string, which means anybody can put anything\n * in it and send someone the link. The first version of this only asked\n * whether the value started with a slash, so every other shape fell through to\n * `window.location.href = redirect` — an open redirect to any site on the\n * internet off a potter.com URL, which is the classic phishing setup, and\n * `javascript:` on top of it. A login screen is exactly the page attackers\n * want that on.\n *\n * So the rule inverts: a value is followed only if it is recognisably a path\n * inside this app, and everything else goes to the dashboard.\n */\n\n/** Always an in-app path, so every caller can navigate with the router. */\nexport function postLoginTarget(redirect: string | null | undefined): string {\n const fallback = '/dashboard';\n if (!redirect) return fallback;\n\n /**\n * An in-app path. `//host` and `/\\host` are excluded deliberately: both\n * start with a slash, both look relative, and both are absolute URLs to\n * somebody else's origin — the backslash form because browsers normalise it.\n */\n if (\n redirect.startsWith('/') &&\n !redirect.startsWith('//') &&\n !redirect.startsWith('/\\\\')\n ) {\n return redirect;\n }\n\n /**\n * Anything else is discarded, including well-formed absolute URLs.\n *\n * Every caller in this app passes a path — the check-in screen, the invite\n * screen, the dashboard's own session redirect. Nothing needs to hand off to\n * another origin, so there is no allowlist to maintain and no lookalike\n * domain to get wrong. If a cross-origin handoff is ever wanted it should be\n * added deliberately, with the hosts written down, rather than inherited\n * from a branch nobody uses.\n */\n return fallback;\n}\n"],"mappings":"AAwBO,SAAS,gBAAgB,UAA6C;AAC3E,QAAM,WAAW;AACjB,MAAI,CAAC,SAAU,QAAO;AAOtB,MACE,SAAS,WAAW,GAAG,KACvB,CAAC,SAAS,WAAW,IAAI,KACzB,CAAC,SAAS,WAAW,KAAK,GAC1B;AACA,WAAO;AAAA,EACT;AAYA,SAAO;AACT;","names":[]}
|