@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,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { apiFetch } from "@withpotter/lib/api/core";
|
|
4
|
+
import { useAuth } from "@withpotter/lib/auth-context";
|
|
5
|
+
import { normalisePlace, sameCountry } from "./country-regions";
|
|
6
|
+
function useLocationOptions() {
|
|
7
|
+
const { tenant } = useAuth();
|
|
8
|
+
const [locations, setLocations] = useState([]);
|
|
9
|
+
const [loading, setLoading] = useState(true);
|
|
10
|
+
const [error, setError] = useState(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
let isMounted = true;
|
|
13
|
+
(async () => {
|
|
14
|
+
setLoading(true);
|
|
15
|
+
setError(null);
|
|
16
|
+
if (!tenant?.slug) {
|
|
17
|
+
setLocations([]);
|
|
18
|
+
setLoading(false);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
let res;
|
|
23
|
+
try {
|
|
24
|
+
res = await apiFetch("/locations/hierarchy", {
|
|
25
|
+
tenantSlug: tenant.slug
|
|
26
|
+
});
|
|
27
|
+
} catch {
|
|
28
|
+
res = await apiFetch(
|
|
29
|
+
"/public/locations/hierarchy",
|
|
30
|
+
{
|
|
31
|
+
tenantSlug: tenant.slug
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
if (!isMounted) return;
|
|
36
|
+
setLocations(Array.isArray(res) ? res : []);
|
|
37
|
+
} catch {
|
|
38
|
+
if (!isMounted) return;
|
|
39
|
+
setError("Failed to load location options");
|
|
40
|
+
setLocations([]);
|
|
41
|
+
} finally {
|
|
42
|
+
if (isMounted) setLoading(false);
|
|
43
|
+
}
|
|
44
|
+
})();
|
|
45
|
+
return () => {
|
|
46
|
+
isMounted = false;
|
|
47
|
+
};
|
|
48
|
+
}, [tenant?.slug]);
|
|
49
|
+
const countries = useMemo(
|
|
50
|
+
() => locations.map((item) => item.country),
|
|
51
|
+
[locations]
|
|
52
|
+
);
|
|
53
|
+
const getStateOptionsForCountries = (selectedCountries) => {
|
|
54
|
+
const stateSet = /* @__PURE__ */ new Set();
|
|
55
|
+
for (const country of selectedCountries) {
|
|
56
|
+
const countryNode = locations.find(
|
|
57
|
+
(item) => sameCountry(item.country, country)
|
|
58
|
+
);
|
|
59
|
+
for (const stateNode of countryNode?.states || []) {
|
|
60
|
+
stateSet.add(stateNode.state);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return Array.from(stateSet).sort((a, b) => a.localeCompare(b));
|
|
64
|
+
};
|
|
65
|
+
const getCityOptionsForCountriesAndStates = (selectedCountries, selectedStates) => {
|
|
66
|
+
const citySet = /* @__PURE__ */ new Set();
|
|
67
|
+
for (const country of selectedCountries) {
|
|
68
|
+
const countryNode = locations.find(
|
|
69
|
+
(item) => sameCountry(item.country, country)
|
|
70
|
+
);
|
|
71
|
+
const states = countryNode?.states || [];
|
|
72
|
+
const wanted = new Set(selectedStates.map(normalisePlace));
|
|
73
|
+
const eligibleStates = selectedStates.length ? states.filter((item) => wanted.has(normalisePlace(item.state))) : states;
|
|
74
|
+
for (const stateNode of eligibleStates) {
|
|
75
|
+
for (const city of stateNode.cities) {
|
|
76
|
+
citySet.add(city);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return Array.from(citySet).sort((a, b) => a.localeCompare(b));
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
locations,
|
|
84
|
+
countries,
|
|
85
|
+
loading,
|
|
86
|
+
error,
|
|
87
|
+
getStateOptionsForCountries,
|
|
88
|
+
getCityOptionsForCountriesAndStates
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export {
|
|
92
|
+
useLocationOptions
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=location-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/location-options.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useMemo, useState } from 'react';\nimport { apiFetch } from '@withpotter/lib/api/core';\nimport { useAuth } from '@withpotter/lib/auth-context';\nimport { normalisePlace, sameCountry } from './country-regions';\n\nexport interface LocationStateNode {\n state: string;\n cities: string[];\n}\n\nexport interface LocationCountryNode {\n country: string;\n states: LocationStateNode[];\n}\n\nexport function useLocationOptions() {\n const { tenant } = useAuth();\n const [locations, setLocations] = useState<LocationCountryNode[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n let isMounted = true;\n (async () => {\n setLoading(true);\n setError(null);\n if (!tenant?.slug) {\n setLocations([]);\n setLoading(false);\n return;\n }\n try {\n let res: LocationCountryNode[];\n try {\n res = await apiFetch<LocationCountryNode[]>('/locations/hierarchy', {\n tenantSlug: tenant.slug,\n });\n } catch {\n // Backward-compat for environments still on older public route.\n res = await apiFetch<LocationCountryNode[]>(\n '/public/locations/hierarchy',\n {\n tenantSlug: tenant.slug,\n },\n );\n }\n if (!isMounted) return;\n setLocations(Array.isArray(res) ? res : []);\n } catch {\n if (!isMounted) return;\n setError('Failed to load location options');\n setLocations([]);\n } finally {\n if (isMounted) setLoading(false);\n }\n })();\n\n return () => {\n isMounted = false;\n };\n }, [tenant?.slug]);\n\n const countries = useMemo(\n () => locations.map((item) => item.country),\n [locations],\n );\n\n const getStateOptionsForCountries = (\n selectedCountries: string[],\n ): string[] => {\n const stateSet = new Set<string>();\n for (const country of selectedCountries) {\n const countryNode = locations.find((item) =>\n sameCountry(item.country, country),\n );\n for (const stateNode of countryNode?.states || []) {\n stateSet.add(stateNode.state);\n }\n }\n return Array.from(stateSet).sort((a, b) => a.localeCompare(b));\n };\n\n const getCityOptionsForCountriesAndStates = (\n selectedCountries: string[],\n selectedStates: string[],\n ): string[] => {\n const citySet = new Set<string>();\n for (const country of selectedCountries) {\n const countryNode = locations.find((item) =>\n sameCountry(item.country, country),\n );\n const states = countryNode?.states || [];\n const wanted = new Set(selectedStates.map(normalisePlace));\n const eligibleStates = selectedStates.length\n ? states.filter((item) => wanted.has(normalisePlace(item.state)))\n : states;\n\n for (const stateNode of eligibleStates) {\n for (const city of stateNode.cities) {\n citySet.add(city);\n }\n }\n }\n return Array.from(citySet).sort((a, b) => a.localeCompare(b));\n };\n\n return {\n locations,\n countries,\n loading,\n error,\n getStateOptionsForCountries,\n getCityOptionsForCountriesAndStates,\n };\n}\n"],"mappings":";AAEA,SAAS,WAAW,SAAS,gBAAgB;AAC7C,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,gBAAgB,mBAAmB;AAYrC,SAAS,qBAAqB;AACnC,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,CAAC,CAAC;AACpE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,YAAU,MAAM;AACd,QAAI,YAAY;AAChB,KAAC,YAAY;AACX,iBAAW,IAAI;AACf,eAAS,IAAI;AACb,UAAI,CAAC,QAAQ,MAAM;AACjB,qBAAa,CAAC,CAAC;AACf,mBAAW,KAAK;AAChB;AAAA,MACF;AACA,UAAI;AACF,YAAI;AACJ,YAAI;AACF,gBAAM,MAAM,SAAgC,wBAAwB;AAAA,YAClE,YAAY,OAAO;AAAA,UACrB,CAAC;AAAA,QACH,QAAQ;AAEN,gBAAM,MAAM;AAAA,YACV;AAAA,YACA;AAAA,cACE,YAAY,OAAO;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,UAAW;AAChB,qBAAa,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,MAC5C,QAAQ;AACN,YAAI,CAAC,UAAW;AAChB,iBAAS,iCAAiC;AAC1C,qBAAa,CAAC,CAAC;AAAA,MACjB,UAAE;AACA,YAAI,UAAW,YAAW,KAAK;AAAA,MACjC;AAAA,IACF,GAAG;AAEH,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,QAAQ,IAAI,CAAC;AAEjB,QAAM,YAAY;AAAA,IAChB,MAAM,UAAU,IAAI,CAAC,SAAS,KAAK,OAAO;AAAA,IAC1C,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,8BAA8B,CAClC,sBACa;AACb,UAAM,WAAW,oBAAI,IAAY;AACjC,eAAW,WAAW,mBAAmB;AACvC,YAAM,cAAc,UAAU;AAAA,QAAK,CAAC,SAClC,YAAY,KAAK,SAAS,OAAO;AAAA,MACnC;AACA,iBAAW,aAAa,aAAa,UAAU,CAAC,GAAG;AACjD,iBAAS,IAAI,UAAU,KAAK;AAAA,MAC9B;AAAA,IACF;AACA,WAAO,MAAM,KAAK,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,EAC/D;AAEA,QAAM,sCAAsC,CAC1C,mBACA,mBACa;AACb,UAAM,UAAU,oBAAI,IAAY;AAChC,eAAW,WAAW,mBAAmB;AACvC,YAAM,cAAc,UAAU;AAAA,QAAK,CAAC,SAClC,YAAY,KAAK,SAAS,OAAO;AAAA,MACnC;AACA,YAAM,SAAS,aAAa,UAAU,CAAC;AACvC,YAAM,SAAS,IAAI,IAAI,eAAe,IAAI,cAAc,CAAC;AACzD,YAAM,iBAAiB,eAAe,SAClC,OAAO,OAAO,CAAC,SAAS,OAAO,IAAI,eAAe,KAAK,KAAK,CAAC,CAAC,IAC9D;AAEJ,iBAAW,aAAa,gBAAgB;AACtC,mBAAW,QAAQ,UAAU,QAAQ;AACnC,kBAAQ,IAAI,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,WAAO,MAAM,KAAK,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,EAC9D;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { BusinessLocation } from './api/types';
|
|
3
|
+
interface LocationScope {
|
|
4
|
+
locations: BusinessLocation[];
|
|
5
|
+
/** True once a second branch exists. Nothing about branches shows before. */
|
|
6
|
+
isMultiSite: boolean;
|
|
7
|
+
/** The branch being viewed, or **null for all of them**. */
|
|
8
|
+
activeLocationId: string | null;
|
|
9
|
+
setActiveLocationId: (id: string | null) => void;
|
|
10
|
+
/** The active branch's name, or null while viewing everything. */
|
|
11
|
+
activeLocationName: string | null;
|
|
12
|
+
/**
|
|
13
|
+
* What to send as a `locationIds` filter. Undefined when viewing
|
|
14
|
+
* everything, which is the shape the API treats as "no restriction" — the
|
|
15
|
+
* same convention the member scope uses, where no assignment means all.
|
|
16
|
+
*/
|
|
17
|
+
locationFilter: string[] | undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Which branch the dashboard is currently looking at.
|
|
21
|
+
*
|
|
22
|
+
* Separate from the member's ASSIGNED scope, which the API enforces and a
|
|
23
|
+
* staff member cannot widen. This is the view: an owner who works everywhere
|
|
24
|
+
* picking one branch to read today. The two meet at the API, which intersects
|
|
25
|
+
* whatever this sends with what the caller is allowed to see.
|
|
26
|
+
*
|
|
27
|
+
* The choice is remembered per workspace, because "which branch am I running
|
|
28
|
+
* today" survives a reload and must not carry across businesses.
|
|
29
|
+
*
|
|
30
|
+
* localStorage is read through `useSyncExternalStore` rather than restored in
|
|
31
|
+
* an effect. An effect would set state during the first commit — a cascading
|
|
32
|
+
* render React now warns about — and would flash "All locations" before
|
|
33
|
+
* settling on the remembered branch. This gives the server a clean null and
|
|
34
|
+
* the client the stored value in one pass.
|
|
35
|
+
*/
|
|
36
|
+
export declare function LocationScopeProvider({ children }: {
|
|
37
|
+
children: ReactNode;
|
|
38
|
+
}): import("react").JSX.Element;
|
|
39
|
+
/**
|
|
40
|
+
* Read the current branch view.
|
|
41
|
+
*
|
|
42
|
+
* Safe outside the provider: surfaces that render before it mounts get "all
|
|
43
|
+
* locations" rather than throwing, because a missing switcher must never be
|
|
44
|
+
* the reason a page shows nothing.
|
|
45
|
+
*/
|
|
46
|
+
export declare function useLocationScope(): LocationScope;
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import {
|
|
4
|
+
createContext,
|
|
5
|
+
useCallback,
|
|
6
|
+
useContext,
|
|
7
|
+
useMemo,
|
|
8
|
+
useSyncExternalStore
|
|
9
|
+
} from "react";
|
|
10
|
+
import { useAuth } from "./auth-context";
|
|
11
|
+
import { useBusinessLocations } from "./use-business-locations";
|
|
12
|
+
const LocationScopeContext = createContext(null);
|
|
13
|
+
const STORAGE_KEY = "pb_active_location";
|
|
14
|
+
const CHANGE_EVENT = "pb:location-scope";
|
|
15
|
+
function subscribe(onChange) {
|
|
16
|
+
window.addEventListener("storage", onChange);
|
|
17
|
+
window.addEventListener(CHANGE_EVENT, onChange);
|
|
18
|
+
return () => {
|
|
19
|
+
window.removeEventListener("storage", onChange);
|
|
20
|
+
window.removeEventListener(CHANGE_EVENT, onChange);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function readStored(key) {
|
|
24
|
+
if (!key) return null;
|
|
25
|
+
try {
|
|
26
|
+
return window.localStorage.getItem(key);
|
|
27
|
+
} catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function LocationScopeProvider({ children }) {
|
|
32
|
+
const { tenant } = useAuth();
|
|
33
|
+
const { locations, isMultiSite } = useBusinessLocations();
|
|
34
|
+
const storageKey = tenant?.slug ? `${STORAGE_KEY}:${tenant.slug}` : null;
|
|
35
|
+
const stored = useSyncExternalStore(
|
|
36
|
+
subscribe,
|
|
37
|
+
() => readStored(storageKey),
|
|
38
|
+
() => null
|
|
39
|
+
);
|
|
40
|
+
const activeLocationId = useMemo(() => {
|
|
41
|
+
if (!stored || locations.length === 0) return stored;
|
|
42
|
+
return locations.some((l) => l.id === stored) ? stored : null;
|
|
43
|
+
}, [stored, locations]);
|
|
44
|
+
const setActiveLocationId = useCallback(
|
|
45
|
+
(id) => {
|
|
46
|
+
if (!storageKey) return;
|
|
47
|
+
try {
|
|
48
|
+
if (id) window.localStorage.setItem(storageKey, id);
|
|
49
|
+
else window.localStorage.removeItem(storageKey);
|
|
50
|
+
} catch {
|
|
51
|
+
}
|
|
52
|
+
window.dispatchEvent(new Event(CHANGE_EVENT));
|
|
53
|
+
},
|
|
54
|
+
[storageKey]
|
|
55
|
+
);
|
|
56
|
+
const value = useMemo(
|
|
57
|
+
() => ({
|
|
58
|
+
locations,
|
|
59
|
+
isMultiSite,
|
|
60
|
+
activeLocationId,
|
|
61
|
+
setActiveLocationId,
|
|
62
|
+
activeLocationName: locations.find((l) => l.id === activeLocationId)?.name ?? null,
|
|
63
|
+
locationFilter: activeLocationId ? [activeLocationId] : void 0
|
|
64
|
+
}),
|
|
65
|
+
[locations, isMultiSite, activeLocationId, setActiveLocationId]
|
|
66
|
+
);
|
|
67
|
+
return /* @__PURE__ */ jsx(LocationScopeContext.Provider, { value, children });
|
|
68
|
+
}
|
|
69
|
+
function useLocationScope() {
|
|
70
|
+
const ctx = useContext(LocationScopeContext);
|
|
71
|
+
return ctx ?? {
|
|
72
|
+
locations: [],
|
|
73
|
+
isMultiSite: false,
|
|
74
|
+
activeLocationId: null,
|
|
75
|
+
setActiveLocationId: () => {
|
|
76
|
+
},
|
|
77
|
+
activeLocationName: null,
|
|
78
|
+
locationFilter: void 0
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
LocationScopeProvider,
|
|
83
|
+
useLocationScope
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=location-scope-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/location-scope-context.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useSyncExternalStore,\n type ReactNode,\n} from 'react';\nimport { useAuth } from './auth-context';\nimport { useBusinessLocations } from './use-business-locations';\nimport type { BusinessLocation } from './api/types';\n\ninterface LocationScope {\n locations: BusinessLocation[];\n /** True once a second branch exists. Nothing about branches shows before. */\n isMultiSite: boolean;\n /** The branch being viewed, or **null for all of them**. */\n activeLocationId: string | null;\n setActiveLocationId: (id: string | null) => void;\n /** The active branch's name, or null while viewing everything. */\n activeLocationName: string | null;\n /**\n * What to send as a `locationIds` filter. Undefined when viewing\n * everything, which is the shape the API treats as \"no restriction\" — the\n * same convention the member scope uses, where no assignment means all.\n */\n locationFilter: string[] | undefined;\n}\n\nconst LocationScopeContext = createContext<LocationScope | null>(null);\n\nconst STORAGE_KEY = 'pb_active_location';\n/** Same-tab writes don't fire `storage`, so the setter announces its own. */\nconst CHANGE_EVENT = 'pb:location-scope';\n\nfunction subscribe(onChange: () => void) {\n window.addEventListener('storage', onChange);\n window.addEventListener(CHANGE_EVENT, onChange);\n return () => {\n window.removeEventListener('storage', onChange);\n window.removeEventListener(CHANGE_EVENT, onChange);\n };\n}\n\nfunction readStored(key: string | null): string | null {\n if (!key) return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\n/**\n * Which branch the dashboard is currently looking at.\n *\n * Separate from the member's ASSIGNED scope, which the API enforces and a\n * staff member cannot widen. This is the view: an owner who works everywhere\n * picking one branch to read today. The two meet at the API, which intersects\n * whatever this sends with what the caller is allowed to see.\n *\n * The choice is remembered per workspace, because \"which branch am I running\n * today\" survives a reload and must not carry across businesses.\n *\n * localStorage is read through `useSyncExternalStore` rather than restored in\n * an effect. An effect would set state during the first commit — a cascading\n * render React now warns about — and would flash \"All locations\" before\n * settling on the remembered branch. This gives the server a clean null and\n * the client the stored value in one pass.\n */\nexport function LocationScopeProvider({ children }: { children: ReactNode }) {\n const { tenant } = useAuth();\n const { locations, isMultiSite } = useBusinessLocations();\n\n const storageKey = tenant?.slug ? `${STORAGE_KEY}:${tenant.slug}` : null;\n\n const stored = useSyncExternalStore(\n subscribe,\n () => readStored(storageKey),\n () => null,\n );\n\n // A remembered branch that has since been closed would filter every list to\n // nothing with no visible reason, so it is dropped on read rather than\n // corrected in an effect. Until the locations arrive, the stored value\n // stands: treating \"not loaded yet\" as \"not found\" would reset the choice\n // on every reload.\n const activeLocationId = useMemo(() => {\n if (!stored || locations.length === 0) return stored;\n return locations.some((l) => l.id === stored) ? stored : null;\n }, [stored, locations]);\n\n const setActiveLocationId = useCallback(\n (id: string | null) => {\n if (!storageKey) return;\n try {\n if (id) window.localStorage.setItem(storageKey, id);\n else window.localStorage.removeItem(storageKey);\n } catch {\n // A private-mode browser refusing storage is not a reason to fail the\n // switch; the event below still moves the UI, it just won't persist.\n }\n window.dispatchEvent(new Event(CHANGE_EVENT));\n },\n [storageKey],\n );\n\n const value = useMemo<LocationScope>(\n () => ({\n locations,\n isMultiSite,\n activeLocationId,\n setActiveLocationId,\n activeLocationName:\n locations.find((l) => l.id === activeLocationId)?.name ?? null,\n locationFilter: activeLocationId ? [activeLocationId] : undefined,\n }),\n [locations, isMultiSite, activeLocationId, setActiveLocationId],\n );\n\n return (\n <LocationScopeContext.Provider value={value}>\n {children}\n </LocationScopeContext.Provider>\n );\n}\n\n/**\n * Read the current branch view.\n *\n * Safe outside the provider: surfaces that render before it mounts get \"all\n * locations\" rather than throwing, because a missing switcher must never be\n * the reason a page shows nothing.\n */\nexport function useLocationScope(): LocationScope {\n const ctx = useContext(LocationScopeContext);\n return (\n ctx ?? {\n locations: [],\n isMultiSite: false,\n activeLocationId: null,\n setActiveLocationId: () => {},\n activeLocationName: null,\n locationFilter: undefined,\n }\n );\n}\n"],"mappings":";AA2HI;AAzHJ;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,eAAe;AACxB,SAAS,4BAA4B;AAoBrC,MAAM,uBAAuB,cAAoC,IAAI;AAErE,MAAM,cAAc;AAEpB,MAAM,eAAe;AAErB,SAAS,UAAU,UAAsB;AACvC,SAAO,iBAAiB,WAAW,QAAQ;AAC3C,SAAO,iBAAiB,cAAc,QAAQ;AAC9C,SAAO,MAAM;AACX,WAAO,oBAAoB,WAAW,QAAQ;AAC9C,WAAO,oBAAoB,cAAc,QAAQ;AAAA,EACnD;AACF;AAEA,SAAS,WAAW,KAAmC;AACrD,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI;AACF,WAAO,OAAO,aAAa,QAAQ,GAAG;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAmBO,SAAS,sBAAsB,EAAE,SAAS,GAA4B;AAC3E,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,EAAE,WAAW,YAAY,IAAI,qBAAqB;AAExD,QAAM,aAAa,QAAQ,OAAO,GAAG,WAAW,IAAI,OAAO,IAAI,KAAK;AAEpE,QAAM,SAAS;AAAA,IACb;AAAA,IACA,MAAM,WAAW,UAAU;AAAA,IAC3B,MAAM;AAAA,EACR;AAOA,QAAM,mBAAmB,QAAQ,MAAM;AACrC,QAAI,CAAC,UAAU,UAAU,WAAW,EAAG,QAAO;AAC9C,WAAO,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,IAAI,SAAS;AAAA,EAC3D,GAAG,CAAC,QAAQ,SAAS,CAAC;AAEtB,QAAM,sBAAsB;AAAA,IAC1B,CAAC,OAAsB;AACrB,UAAI,CAAC,WAAY;AACjB,UAAI;AACF,YAAI,GAAI,QAAO,aAAa,QAAQ,YAAY,EAAE;AAAA,YAC7C,QAAO,aAAa,WAAW,UAAU;AAAA,MAChD,QAAQ;AAAA,MAGR;AACA,aAAO,cAAc,IAAI,MAAM,YAAY,CAAC;AAAA,IAC9C;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBACE,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,gBAAgB,GAAG,QAAQ;AAAA,MAC5D,gBAAgB,mBAAmB,CAAC,gBAAgB,IAAI;AAAA,IAC1D;AAAA,IACA,CAAC,WAAW,aAAa,kBAAkB,mBAAmB;AAAA,EAChE;AAEA,SACE,oBAAC,qBAAqB,UAArB,EAA8B,OAC5B,UACH;AAEJ;AASO,SAAS,mBAAkC;AAChD,QAAM,MAAM,WAAW,oBAAoB;AAC3C,SACE,OAAO;AAAA,IACL,WAAW,CAAC;AAAA,IACZ,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,qBAAqB,MAAM;AAAA,IAAC;AAAA,IAC5B,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,EAClB;AAEJ;","names":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media Service - Handles image uploads via Box API proxy.
|
|
3
|
+
*
|
|
4
|
+
* Uploads are sent to `/api/proxy/media/upload`, where the backend handles
|
|
5
|
+
* storage + Cloudinary integration and usage metering.
|
|
6
|
+
*/
|
|
7
|
+
export declare const CLOUDINARY_CONFIG: {
|
|
8
|
+
cloudName: string;
|
|
9
|
+
uploadPreset: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const isCloudinaryEnabled: boolean;
|
|
12
|
+
export declare const CLOUDINARY_TRANSFORMS: {
|
|
13
|
+
thumbnail: string;
|
|
14
|
+
preview: string;
|
|
15
|
+
product: string;
|
|
16
|
+
hero: string;
|
|
17
|
+
full: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Build Cloudinary URL with transformations
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildCloudinaryUrl(publicId: string, transform?: keyof typeof CLOUDINARY_TRANSFORMS | string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Derive a favicon URL from a logo URL.
|
|
25
|
+
*
|
|
26
|
+
* If the logo is hosted on Cloudinary (`res.cloudinary.com/<cloud>/image/upload/...`),
|
|
27
|
+
* we inject a square padded transform so any logo shape (wide wordmark, tall mark)
|
|
28
|
+
* renders cleanly at 32×32 in a browser tab. If the URL is not Cloudinary we return
|
|
29
|
+
* it as-is — browsers will still accept it and downscale.
|
|
30
|
+
*
|
|
31
|
+
* The transform replaces any existing transform segment immediately after `/upload/`,
|
|
32
|
+
* so calling this on an already-derived favicon URL is idempotent.
|
|
33
|
+
*/
|
|
34
|
+
export declare function deriveFaviconUrl(logoUrl: string | undefined | null): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Compress and resize image to prevent browser crashes from large base64 strings
|
|
37
|
+
* Used as fallback when Cloudinary is not configured
|
|
38
|
+
*/
|
|
39
|
+
export declare function compressImage(file: File, maxWidth?: number, maxHeight?: number, quality?: number): Promise<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Upload image result type
|
|
42
|
+
*/
|
|
43
|
+
export interface UploadResult {
|
|
44
|
+
url: string;
|
|
45
|
+
publicId?: string;
|
|
46
|
+
width?: number;
|
|
47
|
+
height?: number;
|
|
48
|
+
resourceType?: 'image' | 'video';
|
|
49
|
+
duration?: number;
|
|
50
|
+
thumbnail?: string;
|
|
51
|
+
format?: string;
|
|
52
|
+
isCloudinary: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Upload image via Box API proxy.
|
|
56
|
+
*/
|
|
57
|
+
export declare function uploadImage(file: File): Promise<UploadResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Upload image with progress tracking
|
|
60
|
+
*/
|
|
61
|
+
export declare function uploadImageWithProgress(file: File, onProgress?: (progress: number) => void): Promise<UploadResult>;
|
|
62
|
+
export declare class UploadHttpError extends Error {
|
|
63
|
+
readonly status: number;
|
|
64
|
+
constructor(status: number, message: string);
|
|
65
|
+
}
|
|
66
|
+
/** Say what went wrong: only a dropped connection is the merchant's to fix. */
|
|
67
|
+
export declare function voiceUploadProblem(error: unknown): string;
|
|
68
|
+
export declare function uploadImageWithAutoCompress(file: File, onProgress?: (progress: number) => void): Promise<UploadResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Send a recorded voice note to the same media endpoint images use.
|
|
71
|
+
*
|
|
72
|
+
* A Blob is not a File, and the proxy reads a filename off the multipart part
|
|
73
|
+
* to infer an extension, so the container has to be named rather than left to
|
|
74
|
+
* whatever `blob` defaults to. The mimetype is the recorder's own — it varies
|
|
75
|
+
* by browser (webm/opus on Chrome, mp4 on Safari) and the API matches on the
|
|
76
|
+
* base type with parameters stripped.
|
|
77
|
+
*/
|
|
78
|
+
export declare function uploadAudio(blob: Blob, mimeType: string): Promise<UploadResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Open Cloudinary Upload Widget
|
|
81
|
+
* Requires the Cloudinary widget script to be loaded
|
|
82
|
+
*/
|
|
83
|
+
export interface CloudinaryWidgetOptions {
|
|
84
|
+
onSuccess: (result: UploadResult) => void;
|
|
85
|
+
onError?: (error: Error) => void;
|
|
86
|
+
maxFiles?: number;
|
|
87
|
+
resourceType?: 'image' | 'video' | 'auto';
|
|
88
|
+
cropping?: boolean;
|
|
89
|
+
croppingAspectRatio?: number;
|
|
90
|
+
showAdvancedOptions?: boolean;
|
|
91
|
+
sources?: ('local' | 'url' | 'camera')[];
|
|
92
|
+
}
|
|
93
|
+
export declare function openCloudinaryWidget(options: CloudinaryWidgetOptions): void;
|
|
94
|
+
/**
|
|
95
|
+
* Script tag for Cloudinary widget - add to page if using widget
|
|
96
|
+
*/
|
|
97
|
+
export declare const CLOUDINARY_WIDGET_SCRIPT = "https://widget.cloudinary.com/v2.0/global/all.js";
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { BRAND_PRIMARY } from "@withpotter/lib/brand";
|
|
2
|
+
const CLOUDINARY_CONFIG = {
|
|
3
|
+
cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME || "",
|
|
4
|
+
uploadPreset: process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET || ""
|
|
5
|
+
};
|
|
6
|
+
const isCloudinaryEnabled = Boolean(CLOUDINARY_CONFIG.cloudName);
|
|
7
|
+
const CLOUDINARY_TRANSFORMS = {
|
|
8
|
+
thumbnail: "w_200,h_200,c_fill,q_auto",
|
|
9
|
+
preview: "w_400,h_400,c_limit,q_auto",
|
|
10
|
+
product: "w_800,h_800,c_limit,q_auto",
|
|
11
|
+
hero: "w_1920,h_1080,c_fill,q_auto",
|
|
12
|
+
full: "q_auto"
|
|
13
|
+
};
|
|
14
|
+
function buildCloudinaryUrl(publicId, transform = "preview") {
|
|
15
|
+
if (!CLOUDINARY_CONFIG.cloudName) return publicId;
|
|
16
|
+
const transformation = CLOUDINARY_TRANSFORMS[transform] || transform;
|
|
17
|
+
return `https://res.cloudinary.com/${CLOUDINARY_CONFIG.cloudName}/image/upload/${transformation}/${publicId}`;
|
|
18
|
+
}
|
|
19
|
+
function deriveFaviconUrl(logoUrl) {
|
|
20
|
+
if (!logoUrl) return void 0;
|
|
21
|
+
const cloudinaryPattern = /^(https?:\/\/res\.cloudinary\.com\/[^/]+\/image\/upload\/)([^/]+\/)?(.+)$/;
|
|
22
|
+
const match = logoUrl.match(cloudinaryPattern);
|
|
23
|
+
if (!match) return logoUrl;
|
|
24
|
+
const [, prefix, maybeTransform, rest] = match;
|
|
25
|
+
const transformSegment = maybeTransform ?? "";
|
|
26
|
+
const isVersion = /^v\d+\/$/.test(transformSegment);
|
|
27
|
+
const assetPath = isVersion ? `${transformSegment}${rest}` : rest;
|
|
28
|
+
const faviconTransform = "w_180,h_180,c_pad,b_transparent,f_png,q_auto";
|
|
29
|
+
return `${prefix}${faviconTransform}/${assetPath}`;
|
|
30
|
+
}
|
|
31
|
+
async function compressImage(file, maxWidth = 1200, maxHeight = 1200, quality = 0.8) {
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
const img = document.createElement("img");
|
|
34
|
+
const canvas = document.createElement("canvas");
|
|
35
|
+
const ctx = canvas.getContext("2d");
|
|
36
|
+
img.onload = () => {
|
|
37
|
+
URL.revokeObjectURL(img.src);
|
|
38
|
+
let { width, height } = img;
|
|
39
|
+
if (width > maxWidth || height > maxHeight) {
|
|
40
|
+
const ratio = Math.min(maxWidth / width, maxHeight / height);
|
|
41
|
+
width = Math.round(width * ratio);
|
|
42
|
+
height = Math.round(height * ratio);
|
|
43
|
+
}
|
|
44
|
+
canvas.width = width;
|
|
45
|
+
canvas.height = height;
|
|
46
|
+
if (!ctx) {
|
|
47
|
+
reject(new Error("Could not get canvas context"));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
51
|
+
const mimeType = file.type === "image/png" ? "image/png" : "image/jpeg";
|
|
52
|
+
const dataUrl = canvas.toDataURL(mimeType, quality);
|
|
53
|
+
resolve(dataUrl);
|
|
54
|
+
};
|
|
55
|
+
img.onerror = () => {
|
|
56
|
+
URL.revokeObjectURL(img.src);
|
|
57
|
+
reject(new Error("Failed to load image"));
|
|
58
|
+
};
|
|
59
|
+
img.src = URL.createObjectURL(file);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function getStoredTenantSlug() {
|
|
63
|
+
if (typeof window === "undefined") {
|
|
64
|
+
return "";
|
|
65
|
+
}
|
|
66
|
+
const directKeys = ["pb_current_tenant", "currentWorkspace"];
|
|
67
|
+
for (const key of directKeys) {
|
|
68
|
+
const value = localStorage.getItem(key)?.trim();
|
|
69
|
+
if (value) {
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const tenantJson = localStorage.getItem("tenant");
|
|
74
|
+
if (tenantJson) {
|
|
75
|
+
try {
|
|
76
|
+
const tenant = JSON.parse(tenantJson);
|
|
77
|
+
if (tenant.slug?.trim()) {
|
|
78
|
+
return tenant.slug.trim();
|
|
79
|
+
}
|
|
80
|
+
} catch {
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return "";
|
|
84
|
+
}
|
|
85
|
+
async function uploadImage(file) {
|
|
86
|
+
return uploadViaApi(file);
|
|
87
|
+
}
|
|
88
|
+
function uploadViaApi(file, onProgress) {
|
|
89
|
+
return new Promise((resolve, reject) => {
|
|
90
|
+
const formData = new FormData();
|
|
91
|
+
formData.append("file", file);
|
|
92
|
+
const tenantSlug = getStoredTenantSlug();
|
|
93
|
+
const xhr = new XMLHttpRequest();
|
|
94
|
+
xhr.upload.addEventListener("progress", (event) => {
|
|
95
|
+
if (event.lengthComputable && onProgress) {
|
|
96
|
+
const progress = Math.round(event.loaded / event.total * 100);
|
|
97
|
+
onProgress(progress);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
xhr.addEventListener("load", () => {
|
|
101
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
102
|
+
try {
|
|
103
|
+
const data = JSON.parse(xhr.responseText);
|
|
104
|
+
resolve({
|
|
105
|
+
url: data.url,
|
|
106
|
+
publicId: data.publicId,
|
|
107
|
+
width: data.width,
|
|
108
|
+
height: data.height,
|
|
109
|
+
resourceType: data.resourceType,
|
|
110
|
+
duration: data.duration,
|
|
111
|
+
thumbnail: data.thumbnail,
|
|
112
|
+
isCloudinary: true
|
|
113
|
+
});
|
|
114
|
+
} catch {
|
|
115
|
+
reject(new Error("Failed to parse upload response"));
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
let message = `Upload failed: ${xhr.status}`;
|
|
119
|
+
try {
|
|
120
|
+
const err = JSON.parse(xhr.responseText);
|
|
121
|
+
if (err?.message) message = err.message;
|
|
122
|
+
} catch {
|
|
123
|
+
}
|
|
124
|
+
reject(new UploadHttpError(xhr.status, message));
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
xhr.addEventListener("error", () => {
|
|
128
|
+
reject(new UploadHttpError(0, "Upload failed - network error"));
|
|
129
|
+
});
|
|
130
|
+
xhr.open("POST", "/api/proxy/media/upload");
|
|
131
|
+
if (tenantSlug) {
|
|
132
|
+
xhr.setRequestHeader("x-tenant-slug", tenantSlug);
|
|
133
|
+
}
|
|
134
|
+
xhr.send(formData);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async function uploadImageWithProgress(file, onProgress) {
|
|
138
|
+
return uploadViaApi(file, onProgress);
|
|
139
|
+
}
|
|
140
|
+
class UploadHttpError extends Error {
|
|
141
|
+
constructor(status, message) {
|
|
142
|
+
super(message);
|
|
143
|
+
this.status = status;
|
|
144
|
+
this.name = "UploadHttpError";
|
|
145
|
+
}
|
|
146
|
+
status;
|
|
147
|
+
}
|
|
148
|
+
function voiceUploadProblem(error) {
|
|
149
|
+
if (error instanceof UploadHttpError) {
|
|
150
|
+
if (error.status === 0) return "Check your connection and try again.";
|
|
151
|
+
if (error.status === 413) return "The recording is too long. Try a shorter one.";
|
|
152
|
+
if (error.status === 401 || error.status === 403)
|
|
153
|
+
return "Your session ended. Sign in again and retry.";
|
|
154
|
+
return `The upload was refused (${error.status}). Try again, or type your message instead.`;
|
|
155
|
+
}
|
|
156
|
+
return "Check your connection and try again.";
|
|
157
|
+
}
|
|
158
|
+
async function uploadImageWithAutoCompress(file, onProgress) {
|
|
159
|
+
if (!file.type.startsWith("image/")) {
|
|
160
|
+
return uploadViaApi(file, onProgress);
|
|
161
|
+
}
|
|
162
|
+
const steps = [
|
|
163
|
+
[1600, 0.85],
|
|
164
|
+
[1280, 0.78],
|
|
165
|
+
[1024, 0.72],
|
|
166
|
+
[800, 0.65]
|
|
167
|
+
];
|
|
168
|
+
const skipFirstCompress = file.size <= 5e5;
|
|
169
|
+
let lastError;
|
|
170
|
+
for (let index = 0; index < steps.length; index += 1) {
|
|
171
|
+
let candidate = file;
|
|
172
|
+
if (!(skipFirstCompress && index === 0)) {
|
|
173
|
+
try {
|
|
174
|
+
const [maxDimension, quality] = steps[index];
|
|
175
|
+
const dataUrl = await compressImage(
|
|
176
|
+
file,
|
|
177
|
+
maxDimension,
|
|
178
|
+
maxDimension,
|
|
179
|
+
quality
|
|
180
|
+
);
|
|
181
|
+
const blob = await (await fetch(dataUrl)).blob();
|
|
182
|
+
candidate = new File([blob], file.name, { type: "image/jpeg" });
|
|
183
|
+
} catch {
|
|
184
|
+
candidate = file;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
return await uploadViaApi(candidate, onProgress);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
lastError = error;
|
|
191
|
+
if (error instanceof UploadHttpError && error.status === 413) continue;
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (lastError instanceof UploadHttpError && lastError.status === 413) {
|
|
196
|
+
throw new UploadHttpError(
|
|
197
|
+
413,
|
|
198
|
+
"Image is too large to upload, even after compressing. Try a smaller photo or one with lower resolution."
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
throw lastError ?? new Error("Upload failed");
|
|
202
|
+
}
|
|
203
|
+
async function uploadAudio(blob, mimeType) {
|
|
204
|
+
const ext = mimeType.includes("mp4") ? "m4a" : mimeType.includes("ogg") ? "ogg" : "webm";
|
|
205
|
+
const baseType = mimeType.split(";")[0].trim() || "audio/webm";
|
|
206
|
+
const file = new File([blob], `voice-note.${ext}`, { type: baseType });
|
|
207
|
+
return uploadViaApi(file);
|
|
208
|
+
}
|
|
209
|
+
function openCloudinaryWidget(options) {
|
|
210
|
+
const cloudinary = window.cloudinary;
|
|
211
|
+
if (!cloudinary || !isCloudinaryEnabled) {
|
|
212
|
+
options.onError?.(new Error("Cloudinary widget not available"));
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const widget = cloudinary.createUploadWidget(
|
|
216
|
+
{
|
|
217
|
+
cloudName: CLOUDINARY_CONFIG.cloudName,
|
|
218
|
+
uploadPreset: CLOUDINARY_CONFIG.uploadPreset,
|
|
219
|
+
sources: options.sources || ["local", "url", "camera"],
|
|
220
|
+
multiple: (options.maxFiles || 1) > 1,
|
|
221
|
+
maxFiles: options.maxFiles || 1,
|
|
222
|
+
resourceType: options.resourceType || "image",
|
|
223
|
+
cropping: options.cropping ?? true,
|
|
224
|
+
croppingAspectRatio: options.croppingAspectRatio,
|
|
225
|
+
showAdvancedOptions: options.showAdvancedOptions ?? false,
|
|
226
|
+
styles: {
|
|
227
|
+
palette: {
|
|
228
|
+
window: "#FFFFFF",
|
|
229
|
+
windowBorder: "#90A0B3",
|
|
230
|
+
tabIcon: BRAND_PRIMARY,
|
|
231
|
+
menuIcons: "#5A616A",
|
|
232
|
+
textDark: "#000000",
|
|
233
|
+
textLight: "#FFFFFF",
|
|
234
|
+
link: BRAND_PRIMARY,
|
|
235
|
+
action: BRAND_PRIMARY,
|
|
236
|
+
inactiveTabIcon: "#0E2F5A",
|
|
237
|
+
error: "#F44235",
|
|
238
|
+
inProgress: BRAND_PRIMARY,
|
|
239
|
+
complete: "#20B832",
|
|
240
|
+
sourceBg: "#F4F5F5"
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
245
|
+
(error, result) => {
|
|
246
|
+
if (error) {
|
|
247
|
+
options.onError?.(error);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
if (result.event === "success") {
|
|
251
|
+
options.onSuccess({
|
|
252
|
+
url: result.info.secure_url,
|
|
253
|
+
publicId: result.info.public_id,
|
|
254
|
+
width: result.info.width,
|
|
255
|
+
height: result.info.height,
|
|
256
|
+
format: result.info.format,
|
|
257
|
+
isCloudinary: true
|
|
258
|
+
});
|
|
259
|
+
widget.close();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
);
|
|
263
|
+
widget.open();
|
|
264
|
+
}
|
|
265
|
+
const CLOUDINARY_WIDGET_SCRIPT = "https://widget.cloudinary.com/v2.0/global/all.js";
|
|
266
|
+
export {
|
|
267
|
+
CLOUDINARY_CONFIG,
|
|
268
|
+
CLOUDINARY_TRANSFORMS,
|
|
269
|
+
CLOUDINARY_WIDGET_SCRIPT,
|
|
270
|
+
UploadHttpError,
|
|
271
|
+
buildCloudinaryUrl,
|
|
272
|
+
compressImage,
|
|
273
|
+
deriveFaviconUrl,
|
|
274
|
+
isCloudinaryEnabled,
|
|
275
|
+
openCloudinaryWidget,
|
|
276
|
+
uploadAudio,
|
|
277
|
+
uploadImage,
|
|
278
|
+
uploadImageWithAutoCompress,
|
|
279
|
+
uploadImageWithProgress,
|
|
280
|
+
voiceUploadProblem
|
|
281
|
+
};
|
|
282
|
+
//# sourceMappingURL=media-service.js.map
|