@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,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { useAuth } from "./auth-context";
|
|
5
|
+
import { businessLocationsApi } from "./api";
|
|
6
|
+
import { isServiceMissing } from "./api/service-missing";
|
|
7
|
+
import { asList } from "@withpotter/lib/utils";
|
|
8
|
+
function useBusinessLocations({ enabled = true } = {}) {
|
|
9
|
+
const { tenant } = useAuth();
|
|
10
|
+
const queryClient = useQueryClient();
|
|
11
|
+
const slug = tenant?.slug;
|
|
12
|
+
const { data, isLoading, error } = useQuery({
|
|
13
|
+
queryKey: ["business-locations", slug],
|
|
14
|
+
queryFn: () => businessLocationsApi.list(slug),
|
|
15
|
+
// `enabled` is for surfaces that mount everywhere but are rarely opened:
|
|
16
|
+
// the invite dialog lives in the sidebar footer on every route, and
|
|
17
|
+
// fetching locations on every page load to fill a picker almost nobody
|
|
18
|
+
// opens is a request the app doesn't need.
|
|
19
|
+
enabled: !!slug && enabled,
|
|
20
|
+
staleTime: 5 * 6e4
|
|
21
|
+
});
|
|
22
|
+
const locations = useMemo(() => asList(data), [data]);
|
|
23
|
+
const invalidate = useCallback(
|
|
24
|
+
() => queryClient.invalidateQueries({ queryKey: ["business-locations", slug] }),
|
|
25
|
+
[queryClient, slug]
|
|
26
|
+
);
|
|
27
|
+
const create = useMutation({
|
|
28
|
+
mutationFn: (payload) => businessLocationsApi.create(slug, payload),
|
|
29
|
+
onSuccess: invalidate
|
|
30
|
+
});
|
|
31
|
+
const update = useMutation({
|
|
32
|
+
mutationFn: ({
|
|
33
|
+
id,
|
|
34
|
+
...payload
|
|
35
|
+
}) => businessLocationsApi.update(slug, id, payload),
|
|
36
|
+
onSuccess: invalidate
|
|
37
|
+
});
|
|
38
|
+
const archive = useMutation({
|
|
39
|
+
mutationFn: (id) => businessLocationsApi.archive(slug, id),
|
|
40
|
+
onSuccess: invalidate,
|
|
41
|
+
// Archiving rehomes staff who worked only there, so the team list is stale
|
|
42
|
+
// the moment this succeeds.
|
|
43
|
+
onSettled: () => queryClient.invalidateQueries({ queryKey: ["team-members", slug] })
|
|
44
|
+
});
|
|
45
|
+
const unavailable = isServiceMissing(error);
|
|
46
|
+
return {
|
|
47
|
+
locations,
|
|
48
|
+
loading: isLoading,
|
|
49
|
+
error: error instanceof Error && !unavailable ? error.message : null,
|
|
50
|
+
/** The backend has no locations service. Not an error; see above. */
|
|
51
|
+
unavailable,
|
|
52
|
+
/** True once a second location exists. See the note above. */
|
|
53
|
+
isMultiSite: locations.length > 1,
|
|
54
|
+
defaultLocation: locations.find((l) => l.isDefault) ?? locations[0] ?? null,
|
|
55
|
+
create,
|
|
56
|
+
update,
|
|
57
|
+
archive
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function describeScope(locationIds, locations) {
|
|
61
|
+
if (!locationIds || locationIds.length === 0) return "All locations";
|
|
62
|
+
const names = locationIds.map((id) => locations.find((l) => l.id === id)?.name).filter((name) => !!name);
|
|
63
|
+
if (names.length === 0) return "All locations";
|
|
64
|
+
if (names.length <= 2) return names.join(" and ");
|
|
65
|
+
return `${names[0]}, ${names[1]} and ${names.length - 2} more`;
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
describeScope,
|
|
69
|
+
useBusinessLocations
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=use-business-locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-business-locations.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAuth } from './auth-context';\nimport { businessLocationsApi } from './api';\nimport { isServiceMissing } from './api/service-missing';\nimport { asList } from '@withpotter/lib/utils';\nimport type {\n BusinessLocation,\n CreateBusinessLocationData,\n UpdateBusinessLocationData,\n} from '@withpotter/lib/api/types';\n\n/**\n * The business's physical locations, shared by the settings page and the\n * invite dialog.\n *\n * `isMultiSite` is the important one. Almost every merchant runs a single\n * place, and a \"Works at\" picker on their invite form is a field with one\n * possible answer — pure tax on the common case. Surfaces gate on this flag\n * rather than counting the array themselves, so they can't disagree about\n * when the concept is worth showing.\n */\nexport function useBusinessLocations({ enabled = true } = {}) {\n const { tenant } = useAuth();\n const queryClient = useQueryClient();\n const slug = tenant?.slug;\n\n const { data, isLoading, error } = useQuery({\n queryKey: ['business-locations', slug],\n queryFn: () => businessLocationsApi.list(slug!),\n // `enabled` is for surfaces that mount everywhere but are rarely opened:\n // the invite dialog lives in the sidebar footer on every route, and\n // fetching locations on every page load to fill a picker almost nobody\n // opens is a request the app doesn't need.\n enabled: !!slug && enabled,\n staleTime: 5 * 60_000,\n });\n\n // This hook mounts inside the invite dialog, which the sidebar can open on\n // any route. A 200 carrying something other than an array would otherwise\n // reach `.map` in the shell — the exact shape that white-screened every page\n // when the members list did it.\n const locations = useMemo(() => asList<BusinessLocation>(data), [data]);\n\n const invalidate = useCallback(\n () =>\n queryClient.invalidateQueries({ queryKey: ['business-locations', slug] }),\n [queryClient, slug],\n );\n\n const create = useMutation({\n mutationFn: (payload: CreateBusinessLocationData) =>\n businessLocationsApi.create(slug!, payload),\n onSuccess: invalidate,\n });\n\n const update = useMutation({\n mutationFn: ({\n id,\n ...payload\n }: UpdateBusinessLocationData & { id: string }) =>\n businessLocationsApi.update(slug!, id, payload),\n onSuccess: invalidate,\n });\n\n const archive = useMutation({\n mutationFn: (id: string) => businessLocationsApi.archive(slug!, id),\n onSuccess: invalidate,\n // Archiving rehomes staff who worked only there, so the team list is stale\n // the moment this succeeds.\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: ['team-members', slug] }),\n });\n\n // A 404 on the list is not a failure to report: the backend this account\n // runs on has no locations service, and the proxy says so as \"Invalid API\n // path\". That is an address, not a sentence a merchant can act on, so it is\n // carried as a flag and each page says it in its own words. Everything else\n // (network, 5xx, a refusal) is still an error and still shown.\n const unavailable = isServiceMissing(error);\n\n return {\n locations,\n loading: isLoading,\n error: error instanceof Error && !unavailable ? error.message : null,\n /** The backend has no locations service. Not an error; see above. */\n unavailable,\n /** True once a second location exists. See the note above. */\n isMultiSite: locations.length > 1,\n defaultLocation: locations.find((l) => l.isDefault) ?? locations[0] ?? null,\n create,\n update,\n archive,\n };\n}\n\n/**\n * Render a member's scope as one line.\n *\n * An empty list means every location, which is the state owners and every\n * single-site member are in — so this must never render as \"none\".\n */\nexport function describeScope(\n locationIds: string[] | undefined,\n locations: BusinessLocation[],\n): string {\n if (!locationIds || locationIds.length === 0) return 'All locations';\n const names = locationIds\n .map((id) => locations.find((l) => l.id === id)?.name)\n .filter((name): name is string => !!name);\n if (names.length === 0) return 'All locations';\n if (names.length <= 2) return names.join(' and ');\n return `${names[0]}, ${names[1]} and ${names.length - 2} more`;\n}\n"],"mappings":";AAEA,SAAS,aAAa,eAAe;AACrC,SAAS,aAAa,UAAU,sBAAsB;AACtD,SAAS,eAAe;AACxB,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AACjC,SAAS,cAAc;AAiBhB,SAAS,qBAAqB,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG;AAC5D,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,cAAc,eAAe;AACnC,QAAM,OAAO,QAAQ;AAErB,QAAM,EAAE,MAAM,WAAW,MAAM,IAAI,SAAS;AAAA,IAC1C,UAAU,CAAC,sBAAsB,IAAI;AAAA,IACrC,SAAS,MAAM,qBAAqB,KAAK,IAAK;AAAA;AAAA;AAAA;AAAA;AAAA,IAK9C,SAAS,CAAC,CAAC,QAAQ;AAAA,IACnB,WAAW,IAAI;AAAA,EACjB,CAAC;AAMD,QAAM,YAAY,QAAQ,MAAM,OAAyB,IAAI,GAAG,CAAC,IAAI,CAAC;AAEtE,QAAM,aAAa;AAAA,IACjB,MACE,YAAY,kBAAkB,EAAE,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC;AAAA,IAC1E,CAAC,aAAa,IAAI;AAAA,EACpB;AAEA,QAAM,SAAS,YAAY;AAAA,IACzB,YAAY,CAAC,YACX,qBAAqB,OAAO,MAAO,OAAO;AAAA,IAC5C,WAAW;AAAA,EACb,CAAC;AAED,QAAM,SAAS,YAAY;AAAA,IACzB,YAAY,CAAC;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL,MACE,qBAAqB,OAAO,MAAO,IAAI,OAAO;AAAA,IAChD,WAAW;AAAA,EACb,CAAC;AAED,QAAM,UAAU,YAAY;AAAA,IAC1B,YAAY,CAAC,OAAe,qBAAqB,QAAQ,MAAO,EAAE;AAAA,IAClE,WAAW;AAAA;AAAA;AAAA,IAGX,WAAW,MACT,YAAY,kBAAkB,EAAE,UAAU,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAAA,EACtE,CAAC;AAOD,QAAM,cAAc,iBAAiB,KAAK;AAE1C,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,IACT,OAAO,iBAAiB,SAAS,CAAC,cAAc,MAAM,UAAU;AAAA;AAAA,IAEhE;AAAA;AAAA,IAEA,aAAa,UAAU,SAAS;AAAA,IAChC,iBAAiB,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,UAAU,CAAC,KAAK;AAAA,IACvE;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAQO,SAAS,cACd,aACA,WACQ;AACR,MAAI,CAAC,eAAe,YAAY,WAAW,EAAG,QAAO;AACrD,QAAM,QAAQ,YACX,IAAI,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EACpD,OAAO,CAAC,SAAyB,CAAC,CAAC,IAAI;AAC1C,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,MAAI,MAAM,UAAU,EAAG,QAAO,MAAM,KAAK,OAAO;AAChD,SAAO,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,QAAQ,MAAM,SAAS,CAAC;AACzD;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What this workspace trades in.
|
|
3
|
+
*
|
|
4
|
+
* Reactive, unlike `getActiveCurrency()` — a component that reads this
|
|
5
|
+
* re-renders when the workspace changes, which the module-level value cannot
|
|
6
|
+
* make it do. Reach for it when a figure is on screen before its own data
|
|
7
|
+
* loads; everywhere else `formatCurrency(amount)` already picks it up.
|
|
8
|
+
*
|
|
9
|
+
* Not where the value is SET for the app — `AuthProvider` does that once, so a
|
|
10
|
+
* plain function with no hook available still formats correctly.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useCurrency(): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { useAuth } from "./auth-context";
|
|
4
|
+
import { getActiveCurrency, setActiveCurrency } from "./utils";
|
|
5
|
+
function useCurrency() {
|
|
6
|
+
const { tenant } = useAuth();
|
|
7
|
+
const currency = tenant?.settings?.currency;
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
setActiveCurrency(currency);
|
|
10
|
+
}, [currency]);
|
|
11
|
+
return currency?.toUpperCase() || getActiveCurrency();
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
useCurrency
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=use-currency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-currency.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport { useAuth } from './auth-context';\nimport { getActiveCurrency, setActiveCurrency } from './utils';\n\n/**\n * What this workspace trades in.\n *\n * Reactive, unlike `getActiveCurrency()` — a component that reads this\n * re-renders when the workspace changes, which the module-level value cannot\n * make it do. Reach for it when a figure is on screen before its own data\n * loads; everywhere else `formatCurrency(amount)` already picks it up.\n *\n * Not where the value is SET for the app — `AuthProvider` does that once, so a\n * plain function with no hook available still formats correctly.\n */\nexport function useCurrency(): string {\n const { tenant } = useAuth();\n const currency = tenant?.settings?.currency as string | undefined;\n\n // Keeps the module value in step for callers that cannot use a hook, in case\n // this hook runs before the provider's own effect on a given mount order.\n useEffect(() => {\n setActiveCurrency(currency);\n }, [currency]);\n\n return currency?.toUpperCase() || getActiveCurrency();\n}\n"],"mappings":";AAEA,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,mBAAmB,yBAAyB;AAa9C,SAAS,cAAsB;AACpC,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,WAAW,QAAQ,UAAU;AAInC,YAAU,MAAM;AACd,sBAAkB,QAAQ;AAAA,EAC5B,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO,UAAU,YAAY,KAAK,kBAAkB;AACtD;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a list says when it has nothing in it.
|
|
3
|
+
*
|
|
4
|
+
* A composed route declares its own, because the industry copy is for the
|
|
5
|
+
* business as a whole: a restaurant that also sold tickets read "Create your
|
|
6
|
+
* first event to start selling tickets" over its own menu.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useEmptyStateCopy(moduleId: string): import("./empty-state-copy").EmptyStateCopy | {
|
|
9
|
+
declared: boolean;
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { getEmptyStateCopy } from "./empty-state-copy";
|
|
3
|
+
import { useScopeLabels } from "./intents/intent-scope";
|
|
4
|
+
import { useIndustryKey } from "./use-industry-key";
|
|
5
|
+
function useEmptyStateCopy(moduleId) {
|
|
6
|
+
const industryKey = useIndustryKey();
|
|
7
|
+
const declared = useScopeLabels()?.empty;
|
|
8
|
+
return declared ? { ...declared, declared: true } : getEmptyStateCopy(moduleId, industryKey);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
useEmptyStateCopy
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=use-empty-state-copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-empty-state-copy.ts"],"sourcesContent":["'use client';\n\nimport { getEmptyStateCopy } from './empty-state-copy';\nimport { useScopeLabels } from './intents/intent-scope';\nimport { useIndustryKey } from './use-industry-key';\n\n/**\n * What a list says when it has nothing in it.\n *\n * A composed route declares its own, because the industry copy is for the\n * business as a whole: a restaurant that also sold tickets read \"Create your\n * first event to start selling tickets\" over its own menu.\n */\nexport function useEmptyStateCopy(moduleId: string) {\n const industryKey = useIndustryKey();\n const declared = useScopeLabels()?.empty;\n return declared\n ? { ...declared, declared: true }\n : getEmptyStateCopy(moduleId, industryKey);\n}\n"],"mappings":";AAEA,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AASxB,SAAS,kBAAkB,UAAkB;AAClD,QAAM,cAAc,eAAe;AACnC,QAAM,WAAW,eAAe,GAAG;AACnC,SAAO,WACH,EAAE,GAAG,UAAU,UAAU,KAAK,IAC9B,kBAAkB,UAAU,WAAW;AAC7C;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useGeoCities(country: string, states: string[]): string[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { apiFetch } from "@withpotter/lib/api/core";
|
|
4
|
+
import { useAuth } from "@withpotter/lib/auth-context";
|
|
5
|
+
import { countryCodeOf } from "./country-regions";
|
|
6
|
+
const NONE = [];
|
|
7
|
+
function useGeoCities(country, states) {
|
|
8
|
+
const { tenant } = useAuth();
|
|
9
|
+
const [cities, setCities] = useState([]);
|
|
10
|
+
const wanted = states.join("|");
|
|
11
|
+
const code = countryCodeOf(country);
|
|
12
|
+
const slug = tenant?.slug;
|
|
13
|
+
const asks = Boolean(slug && code && wanted);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (!slug || !code || !wanted) return;
|
|
16
|
+
const names = wanted.split("|");
|
|
17
|
+
let current = true;
|
|
18
|
+
void Promise.allSettled(
|
|
19
|
+
names.map(
|
|
20
|
+
(state) => apiFetch(
|
|
21
|
+
`/geo/cities?country=${encodeURIComponent(code)}&state=${encodeURIComponent(state)}`,
|
|
22
|
+
{ tenantSlug: slug }
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
).then((answers) => {
|
|
26
|
+
if (!current) return;
|
|
27
|
+
setCities(
|
|
28
|
+
answers.flatMap(
|
|
29
|
+
(answer) => answer.status === "fulfilled" && Array.isArray(answer.value) ? answer.value : []
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
return () => {
|
|
34
|
+
current = false;
|
|
35
|
+
};
|
|
36
|
+
}, [code, wanted, slug]);
|
|
37
|
+
return asks ? cities : NONE;
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
useGeoCities
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=use-geo-cities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-geo-cities.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport { apiFetch } from '@withpotter/lib/api/core';\nimport { useAuth } from '@withpotter/lib/auth-context';\nimport { countryCodeOf } from './country-regions';\n\n/**\n * The standard cities of the states a zone names, from the Box's geo data (`/geo/cities`), for a country the\n * data covers. The business's own locations only ever add to these. A state the data does not know, or a\n * country it does not cover, gives none, and a failed call never stops the form: the business's own cities\n * still show.\n */\nconst NONE: string[] = [];\n\nexport function useGeoCities(country: string, states: string[]): string[] {\n const { tenant } = useAuth();\n const [cities, setCities] = useState<string[]>([]);\n // The states are read by their text, so a new array with the same states does not ask again.\n const wanted = states.join('|');\n\n const code = countryCodeOf(country);\n const slug = tenant?.slug;\n const asks = Boolean(slug && code && wanted);\n\n useEffect(() => {\n if (!slug || !code || !wanted) return;\n\n const names = wanted.split('|');\n\n let current = true;\n\n void Promise.allSettled(\n names.map((state) =>\n apiFetch<string[]>(\n `/geo/cities?country=${encodeURIComponent(code)}&state=${encodeURIComponent(state)}`,\n { tenantSlug: slug },\n ),\n ),\n ).then((answers) => {\n if (!current) return;\n\n setCities(\n answers.flatMap((answer) =>\n answer.status === 'fulfilled' && Array.isArray(answer.value)\n ? answer.value\n : [],\n ),\n );\n });\n\n return () => {\n current = false;\n };\n }, [code, wanted, slug]);\n\n // Nothing is asked for a country the data does not cover, or before a state is chosen.\n return asks ? cities : NONE;\n}\n"],"mappings":";AAEA,SAAS,WAAW,gBAAgB;AACpC,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAQ9B,MAAM,OAAiB,CAAC;AAEjB,SAAS,aAAa,SAAiB,QAA4B;AACxE,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAmB,CAAC,CAAC;AAEjD,QAAM,SAAS,OAAO,KAAK,GAAG;AAE9B,QAAM,OAAO,cAAc,OAAO;AAClC,QAAM,OAAO,QAAQ;AACrB,QAAM,OAAO,QAAQ,QAAQ,QAAQ,MAAM;AAE3C,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAQ;AAE/B,UAAM,QAAQ,OAAO,MAAM,GAAG;AAE9B,QAAI,UAAU;AAEd,SAAK,QAAQ;AAAA,MACX,MAAM;AAAA,QAAI,CAAC,UACT;AAAA,UACE,uBAAuB,mBAAmB,IAAI,CAAC,UAAU,mBAAmB,KAAK,CAAC;AAAA,UAClF,EAAE,YAAY,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF,EAAE,KAAK,CAAC,YAAY;AAClB,UAAI,CAAC,QAAS;AAEd;AAAA,QACE,QAAQ;AAAA,UAAQ,CAAC,WACf,OAAO,WAAW,eAAe,MAAM,QAAQ,OAAO,KAAK,IACvD,OAAO,QACP,CAAC;AAAA,QACP;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,gBAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,MAAM,QAAQ,IAAI,CAAC;AAGvB,SAAO,OAAO,SAAS;AACzB;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Does this business own any machines?
|
|
3
|
+
*
|
|
4
|
+
* Its own hook rather than another field on `useDashboardData`, which is a
|
|
5
|
+
* 562-line god-hook on a shrinking ledger — a feature that adds a line to it
|
|
6
|
+
* every time one ships is the reason it got that big. This belongs with
|
|
7
|
+
* hardware.
|
|
8
|
+
*
|
|
9
|
+
* Shares `useApiQuery`'s cache key with the Hardware screen and the orders
|
|
10
|
+
* filter panel, so a merchant who visits both pays for one request rather than
|
|
11
|
+
* three.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useHasHardware(): boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useApiQuery } from "@withpotter/hooks/use-api-query";
|
|
3
|
+
import { businessDevicesApi } from "@withpotter/lib/api/business-devices";
|
|
4
|
+
function useHasHardware() {
|
|
5
|
+
const { data } = useApiQuery(
|
|
6
|
+
["business-devices"],
|
|
7
|
+
(slug) => businessDevicesApi.list(slug)
|
|
8
|
+
);
|
|
9
|
+
return (data?.devices?.length ?? 0) > 0;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
useHasHardware
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=use-has-hardware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-has-hardware.ts"],"sourcesContent":["'use client';\n\nimport { useApiQuery } from '@withpotter/hooks/use-api-query';\nimport { businessDevicesApi } from '@withpotter/lib/api/business-devices';\nimport type { BusinessDevice } from '@withpotter/lib/api/types';\n\n/**\n * Does this business own any machines?\n *\n * Its own hook rather than another field on `useDashboardData`, which is a\n * 562-line god-hook on a shrinking ledger — a feature that adds a line to it\n * every time one ships is the reason it got that big. This belongs with\n * hardware.\n *\n * Shares `useApiQuery`'s cache key with the Hardware screen and the orders\n * filter panel, so a merchant who visits both pays for one request rather than\n * three.\n */\nexport function useHasHardware(): boolean {\n const { data } = useApiQuery<{ devices: BusinessDevice[] }>(\n ['business-devices'],\n (slug) => businessDevicesApi.list(slug),\n );\n return (data?.devices?.length ?? 0) > 0;\n}\n"],"mappings":";AAEA,SAAS,mBAAmB;AAC5B,SAAS,0BAA0B;AAe5B,SAAS,iBAA0B;AACxC,QAAM,EAAE,KAAK,IAAI;AAAA,IACf,CAAC,kBAAkB;AAAA,IACnB,CAAC,SAAS,mBAAmB,KAAK,IAAI;AAAA,EACxC;AACA,UAAQ,MAAM,SAAS,UAAU,KAAK;AACxC;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the resolved industry key for the current tenant.
|
|
3
|
+
*
|
|
4
|
+
* Resolution order:
|
|
5
|
+
* 1. tenant.industryKey (first-class column) — unless it's a stale default
|
|
6
|
+
* 2. Intent-based inference (selectedIntents → industry key)
|
|
7
|
+
* 3. tenant.settings.industryProfile (legacy JSONB field)
|
|
8
|
+
* 4. null (no industry context — all UI falls back to generic copy)
|
|
9
|
+
*/
|
|
10
|
+
export declare function useIndustryKey(): string | null;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useAuth } from "./auth-context";
|
|
2
|
+
function useIndustryKey() {
|
|
3
|
+
const { tenant } = useAuth();
|
|
4
|
+
if (!tenant) return null;
|
|
5
|
+
const settings = tenant.settings;
|
|
6
|
+
if (tenant.industryKey && tenant.industryKey !== "hospitality") {
|
|
7
|
+
return tenant.industryKey;
|
|
8
|
+
}
|
|
9
|
+
const intents = settings?.selectedIntents;
|
|
10
|
+
if (intents?.includes("event-tickets")) return "events";
|
|
11
|
+
return tenant.industryKey ?? settings?.industryProfile ?? null;
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
useIndustryKey
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=use-industry-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-industry-key.ts"],"sourcesContent":["import { useAuth } from './auth-context';\n\n/**\n * Returns the resolved industry key for the current tenant.\n *\n * Resolution order:\n * 1. tenant.industryKey (first-class column) — unless it's a stale default\n * 2. Intent-based inference (selectedIntents → industry key)\n * 3. tenant.settings.industryProfile (legacy JSONB field)\n * 4. null (no industry context — all UI falls back to generic copy)\n */\nexport function useIndustryKey(): string | null {\n const { tenant } = useAuth();\n if (!tenant) return null;\n\n const settings = tenant.settings as Record<string, unknown> | undefined;\n\n // If tenant has an explicit, non-default industryKey, trust it\n if (tenant.industryKey && tenant.industryKey !== 'hospitality') {\n return tenant.industryKey;\n }\n\n // Resolve from selected intents — overrides stale industryKey for tenants\n // provisioned before dedicated industry configs existed\n const intents = settings?.selectedIntents as string[] | undefined;\n if (intents?.includes('event-tickets')) return 'events';\n\n // Fall through to whatever was persisted\n return (\n tenant.industryKey ??\n (settings?.industryProfile as string | undefined) ??\n null\n );\n}\n"],"mappings":"AAAA,SAAS,eAAe;AAWjB,SAAS,iBAAgC;AAC9C,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,WAAW,OAAO;AAGxB,MAAI,OAAO,eAAe,OAAO,gBAAgB,eAAe;AAC9D,WAAO,OAAO;AAAA,EAChB;AAIA,QAAM,UAAU,UAAU;AAC1B,MAAI,SAAS,SAAS,eAAe,EAAG,QAAO;AAG/C,SACE,OAAO,eACN,UAAU,mBACX;AAEJ;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the item screens send the merchant.
|
|
3
|
+
*
|
|
4
|
+
* A screen mounted by an intent's route sends them to that intent's own list
|
|
5
|
+
* and create screens. Anywhere else it is the shared catalogue, as it always
|
|
6
|
+
* was. A record opens at its list's address plus its id (`detail`), which the
|
|
7
|
+
* intent's rewrite serves with the one real page; links that do not know the
|
|
8
|
+
* intent keep using the shared `/dashboard/catalog/<id>`, which still works.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useItemLinks(legacyIntent?: string): {
|
|
11
|
+
list: string;
|
|
12
|
+
create: string;
|
|
13
|
+
orders: string;
|
|
14
|
+
bookings: string;
|
|
15
|
+
invoices: string;
|
|
16
|
+
resources: string;
|
|
17
|
+
detail: (id: string) => string;
|
|
18
|
+
orderDetail: (id: string) => string;
|
|
19
|
+
bookingDetail: (id: string) => string;
|
|
20
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useScopeLabels } from "./intents/intent-scope";
|
|
4
|
+
function useItemLinks(legacyIntent) {
|
|
5
|
+
const links = useScopeLabels()?.links;
|
|
6
|
+
const list = links?.list ?? "/dashboard/catalog";
|
|
7
|
+
const create = links?.create ?? "/dashboard/catalog/new";
|
|
8
|
+
const orders = links?.orders ?? (legacyIntent ? `/dashboard/orders?intent=${legacyIntent}` : "/dashboard/orders");
|
|
9
|
+
const bookings = links?.bookings ?? "/dashboard/bookings";
|
|
10
|
+
const invoices = links?.invoices ?? "/dashboard/invoices";
|
|
11
|
+
const resources = links?.resources ?? "/dashboard/resources";
|
|
12
|
+
return useMemo(
|
|
13
|
+
() => ({
|
|
14
|
+
list,
|
|
15
|
+
create,
|
|
16
|
+
orders,
|
|
17
|
+
bookings,
|
|
18
|
+
invoices,
|
|
19
|
+
resources,
|
|
20
|
+
detail: (id) => `${list}/${id}`,
|
|
21
|
+
orderDetail: (id) => `${orders}/${id}`,
|
|
22
|
+
bookingDetail: (id) => `${bookings}/${id}`
|
|
23
|
+
}),
|
|
24
|
+
[list, create, orders, bookings, invoices, resources]
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
useItemLinks
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=use-item-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-item-links.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport { useScopeLabels } from './intents/intent-scope';\n\n/**\n * Where the item screens send the merchant.\n *\n * A screen mounted by an intent's route sends them to that intent's own list\n * and create screens. Anywhere else it is the shared catalogue, as it always\n * was. A record opens at its list's address plus its id (`detail`), which the\n * intent's rewrite serves with the one real page; links that do not know the\n * intent keep using the shared `/dashboard/catalog/<id>`, which still works.\n */\nexport function useItemLinks(legacyIntent?: string) {\n const links = useScopeLabels()?.links;\n const list = links?.list ?? '/dashboard/catalog';\n const create = links?.create ?? '/dashboard/catalog/new';\n const orders =\n links?.orders ??\n (legacyIntent\n ? `/dashboard/orders?intent=${legacyIntent}`\n : '/dashboard/orders');\n const bookings = links?.bookings ?? '/dashboard/bookings';\n const invoices = links?.invoices ?? '/dashboard/invoices';\n const resources = links?.resources ?? '/dashboard/resources';\n return useMemo(\n () => ({\n list,\n create,\n orders,\n bookings,\n invoices,\n resources,\n detail: (id: string) => `${list}/${id}`,\n orderDetail: (id: string) => `${orders}/${id}`,\n bookingDetail: (id: string) => `${bookings}/${id}`,\n }),\n [list, create, orders, bookings, invoices, resources],\n );\n}\n"],"mappings":";AAEA,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAWxB,SAAS,aAAa,cAAuB;AAClD,QAAM,QAAQ,eAAe,GAAG;AAChC,QAAM,OAAO,OAAO,QAAQ;AAC5B,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,SACJ,OAAO,WACN,eACG,4BAA4B,YAAY,KACxC;AACN,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,YAAY,OAAO,aAAa;AACtC,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,CAAC,OAAe,GAAG,IAAI,IAAI,EAAE;AAAA,MACrC,aAAa,CAAC,OAAe,GAAG,MAAM,IAAI,EAAE;AAAA,MAC5C,eAAe,CAAC,OAAe,GAAG,QAAQ,IAAI,EAAE;AAAA,IAClD;AAAA,IACA,CAAC,MAAM,QAAQ,QAAQ,UAAU,UAAU,SAAS;AAAA,EACtD;AACF;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type JobRole } from './team-roles';
|
|
2
|
+
import { type TeamRoleResponse } from './api';
|
|
3
|
+
/**
|
|
4
|
+
* Offers the job-shaped roles that make sense for THIS business, and turns the
|
|
5
|
+
* one that gets picked into a real `team_roles` row the api can be invited
|
|
6
|
+
* against.
|
|
7
|
+
*
|
|
8
|
+
* Presets are a UI layer over the api's existing roles table, not a parallel
|
|
9
|
+
* store: picking "Front desk" either matches a role the workspace already has
|
|
10
|
+
* or creates it once, and from then on it's an ordinary editable role. That
|
|
11
|
+
* keeps the roles manager and the permission catalog the source of truth for
|
|
12
|
+
* anyone who outgrows the presets.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useJobRoles(workspaceRoles: TeamRoleResponse[]): {
|
|
15
|
+
roles: JobRole[];
|
|
16
|
+
areas: import("./team-roles").PermissionArea[];
|
|
17
|
+
behaviors: import("./template-types").ContentBehavior[];
|
|
18
|
+
resolveRoleId: (role: JobRole) => Promise<string>;
|
|
19
|
+
grantMoney: (memberId: string) => Promise<void>;
|
|
20
|
+
createCustomRole: (name: string, permissions: Record<string, boolean>) => Promise<string>;
|
|
21
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { useAuth } from "./auth-context";
|
|
4
|
+
import { useCurrentTemplate } from "./template-context";
|
|
5
|
+
import { resolveEnabledBehaviors } from "./resolve-enabled-behaviors";
|
|
6
|
+
import {
|
|
7
|
+
builtInRoleKey,
|
|
8
|
+
permissionsForRole,
|
|
9
|
+
resolveAreas,
|
|
10
|
+
resolveJobRoles
|
|
11
|
+
} from "./team-roles";
|
|
12
|
+
import { teamApi } from "./api";
|
|
13
|
+
function useJobRoles(workspaceRoles) {
|
|
14
|
+
const { tenant } = useAuth();
|
|
15
|
+
const slug = tenant?.slug;
|
|
16
|
+
const { template } = useCurrentTemplate(tenant?.templateId);
|
|
17
|
+
const tenantSettings = tenant?.settings;
|
|
18
|
+
const behaviors = useMemo(
|
|
19
|
+
() => resolveEnabledBehaviors(tenantSettings, template),
|
|
20
|
+
[tenantSettings, template]
|
|
21
|
+
);
|
|
22
|
+
const roles = useMemo(() => resolveJobRoles(behaviors), [behaviors]);
|
|
23
|
+
const resolveRoleId = useCallback(
|
|
24
|
+
async (role) => {
|
|
25
|
+
if (!slug) throw new Error("No business selected");
|
|
26
|
+
const permissions = permissionsForRole(role);
|
|
27
|
+
const existing = workspaceRoles.find(
|
|
28
|
+
(r) => r.systemKey !== "owner" && r.name.trim().toLowerCase() === role.name.toLowerCase()
|
|
29
|
+
);
|
|
30
|
+
if (existing) return existing.id;
|
|
31
|
+
const builtIn = builtInRoleKey(role.name);
|
|
32
|
+
if (builtIn) return builtIn;
|
|
33
|
+
const created = await teamApi.createRole(slug, {
|
|
34
|
+
name: role.name,
|
|
35
|
+
description: role.description,
|
|
36
|
+
permissions
|
|
37
|
+
});
|
|
38
|
+
return created.id;
|
|
39
|
+
},
|
|
40
|
+
[slug, workspaceRoles]
|
|
41
|
+
);
|
|
42
|
+
const grantMoney = useCallback(
|
|
43
|
+
async (memberId) => {
|
|
44
|
+
if (!slug) return;
|
|
45
|
+
await teamApi.updateMemberPermissions(slug, memberId, {
|
|
46
|
+
canViewFinance: true,
|
|
47
|
+
canManageFinance: true
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
[slug]
|
|
51
|
+
);
|
|
52
|
+
const createCustomRole = useCallback(
|
|
53
|
+
async (name, permissions) => {
|
|
54
|
+
if (!slug) throw new Error("No business selected");
|
|
55
|
+
const created = await teamApi.createRole(slug, {
|
|
56
|
+
name,
|
|
57
|
+
permissions
|
|
58
|
+
});
|
|
59
|
+
return created.id;
|
|
60
|
+
},
|
|
61
|
+
[slug]
|
|
62
|
+
);
|
|
63
|
+
const areas = useMemo(() => resolveAreas(behaviors), [behaviors]);
|
|
64
|
+
return {
|
|
65
|
+
roles,
|
|
66
|
+
areas,
|
|
67
|
+
behaviors,
|
|
68
|
+
resolveRoleId,
|
|
69
|
+
grantMoney,
|
|
70
|
+
createCustomRole
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
useJobRoles
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=use-job-roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-job-roles.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useMemo } from 'react';\nimport { useAuth } from './auth-context';\nimport { useCurrentTemplate } from './template-context';\nimport { resolveEnabledBehaviors } from './resolve-enabled-behaviors';\nimport {\n builtInRoleKey,\n permissionsForRole,\n resolveAreas,\n resolveJobRoles,\n type JobRole,\n} from './team-roles';\nimport { teamApi, type TeamRoleResponse } from './api';\n\n/**\n * Offers the job-shaped roles that make sense for THIS business, and turns the\n * one that gets picked into a real `team_roles` row the api can be invited\n * against.\n *\n * Presets are a UI layer over the api's existing roles table, not a parallel\n * store: picking \"Front desk\" either matches a role the workspace already has\n * or creates it once, and from then on it's an ordinary editable role. That\n * keeps the roles manager and the permission catalog the source of truth for\n * anyone who outgrows the presets.\n */\nexport function useJobRoles(workspaceRoles: TeamRoleResponse[]) {\n const { tenant } = useAuth();\n // Hoisted: an optional-chained dep (`tenant?.slug`) is an expression the\n // React Compiler can't preserve memoization across.\n const slug = tenant?.slug;\n const { template } = useCurrentTemplate(tenant?.templateId);\n\n const tenantSettings = tenant?.settings as\n | Record<string, unknown>\n | undefined;\n\n const behaviors = useMemo(\n () => resolveEnabledBehaviors(tenantSettings, template),\n [tenantSettings, template],\n );\n\n const roles = useMemo(() => resolveJobRoles(behaviors), [behaviors]);\n\n /**\n * Find-or-create the api role for a preset and return its id. A preset named\n * like a built-in role (Staff) returns that built-in's key, not a row id.\n *\n * Matched by name because that's what the merchant sees and edits; a role\n * they've since renamed should not silently spawn a duplicate on the next\n * invite. Owner is never a candidate — it isn't assignable.\n *\n * The row is always written money-free. A role is shared by everyone holding\n * it, so baking one person's money grant into it would hand payouts to the\n * next person given the same job. Money is applied per-member instead\n * (`grantMoney` below).\n */\n const resolveRoleId = useCallback(\n async (role: JobRole) => {\n if (!slug) throw new Error('No business selected');\n const permissions = permissionsForRole(role);\n\n const existing = workspaceRoles.find(\n (r) =>\n r.systemKey !== 'owner' &&\n r.name.trim().toLowerCase() === role.name.toLowerCase(),\n );\n if (existing) return existing.id;\n\n // The api already has this job as a built-in role and refuses a custom\n // role under its name. Invite against the built-in one by name.\n const builtIn = builtInRoleKey(role.name);\n if (builtIn) return builtIn;\n\n const created = await teamApi.createRole(slug, {\n name: role.name,\n description: role.description,\n permissions,\n });\n return created.id;\n },\n [slug, workspaceRoles],\n );\n\n /** Layer the money grant onto one member, on top of whatever role they hold. */\n const grantMoney = useCallback(\n async (memberId: string) => {\n if (!slug) return;\n await teamApi.updateMemberPermissions(slug, memberId, {\n canViewFinance: true,\n canManageFinance: true,\n });\n },\n [slug],\n );\n\n /**\n * Create a role the owner defined themselves. Custom roles are ordinary\n * `team_roles` rows (isSystem false), so they show up in the roles manager\n * and can be edited or reused for the next person like any preset.\n */\n const createCustomRole = useCallback(\n async (name: string, permissions: Record<string, boolean>) => {\n if (!slug) throw new Error('No business selected');\n const created = await teamApi.createRole(slug, {\n name,\n permissions,\n });\n return created.id;\n },\n [slug],\n );\n\n /** Areas worth offering for this business, for the access matrix. */\n const areas = useMemo(() => resolveAreas(behaviors), [behaviors]);\n\n return {\n roles,\n areas,\n behaviors,\n resolveRoleId,\n grantMoney,\n createCustomRole,\n };\n}\n"],"mappings":";AAEA,SAAS,aAAa,eAAe;AACrC,SAAS,eAAe;AACxB,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,eAAsC;AAaxC,SAAS,YAAY,gBAAoC;AAC9D,QAAM,EAAE,OAAO,IAAI,QAAQ;AAG3B,QAAM,OAAO,QAAQ;AACrB,QAAM,EAAE,SAAS,IAAI,mBAAmB,QAAQ,UAAU;AAE1D,QAAM,iBAAiB,QAAQ;AAI/B,QAAM,YAAY;AAAA,IAChB,MAAM,wBAAwB,gBAAgB,QAAQ;AAAA,IACtD,CAAC,gBAAgB,QAAQ;AAAA,EAC3B;AAEA,QAAM,QAAQ,QAAQ,MAAM,gBAAgB,SAAS,GAAG,CAAC,SAAS,CAAC;AAenE,QAAM,gBAAgB;AAAA,IACpB,OAAO,SAAkB;AACvB,UAAI,CAAC,KAAM,OAAM,IAAI,MAAM,sBAAsB;AACjD,YAAM,cAAc,mBAAmB,IAAI;AAE3C,YAAM,WAAW,eAAe;AAAA,QAC9B,CAAC,MACC,EAAE,cAAc,WAChB,EAAE,KAAK,KAAK,EAAE,YAAY,MAAM,KAAK,KAAK,YAAY;AAAA,MAC1D;AACA,UAAI,SAAU,QAAO,SAAS;AAI9B,YAAM,UAAU,eAAe,KAAK,IAAI;AACxC,UAAI,QAAS,QAAO;AAEpB,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM;AAAA,QAC7C,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB;AAAA,MACF,CAAC;AACD,aAAO,QAAQ;AAAA,IACjB;AAAA,IACA,CAAC,MAAM,cAAc;AAAA,EACvB;AAGA,QAAM,aAAa;AAAA,IACjB,OAAO,aAAqB;AAC1B,UAAI,CAAC,KAAM;AACX,YAAM,QAAQ,wBAAwB,MAAM,UAAU;AAAA,QACpD,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAOA,QAAM,mBAAmB;AAAA,IACvB,OAAO,MAAc,gBAAyC;AAC5D,UAAI,CAAC,KAAM,OAAM,IAAI,MAAM,sBAAsB;AACjD,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM;AAAA,QAC7C;AAAA,QACA;AAAA,MACF,CAAC;AACD,aAAO,QAAQ;AAAA,IACjB;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAGA,QAAM,QAAQ,QAAQ,MAAM,aAAa,SAAS,GAAG,CAAC,SAAS,CAAC;AAEhE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { DisplaySettings } from './pricing-plans-types';
|
|
3
|
+
/**
|
|
4
|
+
* The merchant's plan, the public plans and the admin's display switches,
|
|
5
|
+
* shared by every place that shows them (Plan page, locked card, Home card,
|
|
6
|
+
* menu link, onboarding). An engine without plans answers 404 and every one
|
|
7
|
+
* of those places stays hidden: nothing here ever blocks the dashboard.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MERCHANT_PLANS_KEY: string[];
|
|
10
|
+
export declare const MY_PLAN_KEY: string[];
|
|
11
|
+
export declare function useMerchantPlans(): import("@tanstack/react-query").UseQueryResult<NoInfer<import("./pricing-plans-types").MerchantPlans>, Error>;
|
|
12
|
+
export declare function useMyPlan(): import("@tanstack/react-query").UseQueryResult<NoInfer<import("./subscription-billing-api").MerchantSubscription>, Error>;
|
|
13
|
+
/** The display switches; null until known, so nothing flashes on. */
|
|
14
|
+
export declare function usePlanDisplay(): DisplaySettings | null;
|
|
15
|
+
/**
|
|
16
|
+
* The currency to price plans in: the wallet's (with its exponent) when
|
|
17
|
+
* billing knows it, else the business's own setting, else none (every
|
|
18
|
+
* currency is shown).
|
|
19
|
+
*/
|
|
20
|
+
export declare function usePlanCurrency(): {
|
|
21
|
+
currency: string | null;
|
|
22
|
+
exponent: number | null;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A feature the API refused on this page with 402 `feature_not_in_plan`.
|
|
26
|
+
* Cleared when the merchant moves to another page.
|
|
27
|
+
*/
|
|
28
|
+
export declare function useApiLockedFeature(pathname: string): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* With the locked-feature card switched off, a page the plan leaves out is
|
|
31
|
+
* dropped from the menu instead: the box's capability set is narrowed to the
|
|
32
|
+
* plan, which the menu and the page guard already read.
|
|
33
|
+
*/
|
|
34
|
+
export declare function PlanCapabilityProvider({ children }: {
|
|
35
|
+
children: ReactNode;
|
|
36
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
import { FEATURE_LOCKED_EVENT } from "./api/feature-locked";
|
|
6
|
+
import { useAuth } from "./auth-context";
|
|
7
|
+
import { CapabilityProvider, useCapabilities } from "./capability-context";
|
|
8
|
+
import { planCapabilityKeys } from "./plan-access";
|
|
9
|
+
import { subscriptionBillingApi } from "./subscription-billing-api";
|
|
10
|
+
const MERCHANT_PLANS_KEY = ["pricing", "plans"];
|
|
11
|
+
const MY_PLAN_KEY = ["pricing", "subscription"];
|
|
12
|
+
const STALE = 5 * 6e4;
|
|
13
|
+
function useMerchantPlans() {
|
|
14
|
+
const { tenant } = useAuth();
|
|
15
|
+
return useQuery({
|
|
16
|
+
queryKey: MERCHANT_PLANS_KEY,
|
|
17
|
+
queryFn: subscriptionBillingApi.plans,
|
|
18
|
+
enabled: Boolean(tenant),
|
|
19
|
+
staleTime: STALE,
|
|
20
|
+
retry: false
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function useMyPlan() {
|
|
24
|
+
const { tenant } = useAuth();
|
|
25
|
+
return useQuery({
|
|
26
|
+
queryKey: MY_PLAN_KEY,
|
|
27
|
+
queryFn: subscriptionBillingApi.mine,
|
|
28
|
+
enabled: Boolean(tenant),
|
|
29
|
+
staleTime: STALE,
|
|
30
|
+
retry: false
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function usePlanDisplay() {
|
|
34
|
+
return useMerchantPlans().data?.display ?? null;
|
|
35
|
+
}
|
|
36
|
+
function usePlanCurrency() {
|
|
37
|
+
const { tenant } = useAuth();
|
|
38
|
+
const billing = useMyPlan().data?.billing;
|
|
39
|
+
if (billing?.enabled && billing.plan) {
|
|
40
|
+
return { currency: billing.plan.currency, exponent: billing.plan.exponent };
|
|
41
|
+
}
|
|
42
|
+
const setting = tenant?.settings?.currency;
|
|
43
|
+
return {
|
|
44
|
+
currency: typeof setting === "string" && setting.trim() ? setting.trim().toUpperCase() : null,
|
|
45
|
+
exponent: null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function useApiLockedFeature(pathname) {
|
|
49
|
+
const [locked, setLocked] = useState(null);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const onLocked = (event) => {
|
|
52
|
+
const feature = event.detail?.feature;
|
|
53
|
+
if (feature) setLocked({ path: pathname, feature });
|
|
54
|
+
};
|
|
55
|
+
window.addEventListener(FEATURE_LOCKED_EVENT, onLocked);
|
|
56
|
+
return () => window.removeEventListener(FEATURE_LOCKED_EVENT, onLocked);
|
|
57
|
+
}, [pathname]);
|
|
58
|
+
return locked?.path === pathname ? locked.feature : null;
|
|
59
|
+
}
|
|
60
|
+
function PlanCapabilityProvider({ children }) {
|
|
61
|
+
const box = useCapabilities();
|
|
62
|
+
const display = usePlanDisplay();
|
|
63
|
+
const features = useMyPlan().data?.features;
|
|
64
|
+
const keys = display && !display.lockedFeature ? planCapabilityKeys(features, box) : null;
|
|
65
|
+
const value = keys ?? (box.known ? box.keys : null);
|
|
66
|
+
return /* @__PURE__ */ jsx(CapabilityProvider, { value, children });
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
MERCHANT_PLANS_KEY,
|
|
70
|
+
MY_PLAN_KEY,
|
|
71
|
+
PlanCapabilityProvider,
|
|
72
|
+
useApiLockedFeature,
|
|
73
|
+
useMerchantPlans,
|
|
74
|
+
useMyPlan,
|
|
75
|
+
usePlanCurrency,
|
|
76
|
+
usePlanDisplay
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=use-merchant-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-merchant-plan.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState, type ReactNode } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { FEATURE_LOCKED_EVENT } from './api/feature-locked';\nimport { useAuth } from './auth-context';\nimport { CapabilityProvider, useCapabilities } from './capability-context';\nimport { planCapabilityKeys } from './plan-access';\nimport type { DisplaySettings } from './pricing-plans-types';\nimport { subscriptionBillingApi } from './subscription-billing-api';\n\n/**\n * The merchant's plan, the public plans and the admin's display switches,\n * shared by every place that shows them (Plan page, locked card, Home card,\n * menu link, onboarding). An engine without plans answers 404 and every one\n * of those places stays hidden: nothing here ever blocks the dashboard.\n */\nexport const MERCHANT_PLANS_KEY = ['pricing', 'plans'];\nexport const MY_PLAN_KEY = ['pricing', 'subscription'];\n\nconst STALE = 5 * 60_000;\n\nexport function useMerchantPlans() {\n const { tenant } = useAuth();\n\n return useQuery({\n queryKey: MERCHANT_PLANS_KEY,\n queryFn: subscriptionBillingApi.plans,\n enabled: Boolean(tenant),\n staleTime: STALE,\n retry: false,\n });\n}\n\nexport function useMyPlan() {\n const { tenant } = useAuth();\n\n return useQuery({\n queryKey: MY_PLAN_KEY,\n queryFn: subscriptionBillingApi.mine,\n enabled: Boolean(tenant),\n staleTime: STALE,\n retry: false,\n });\n}\n\n/** The display switches; null until known, so nothing flashes on. */\nexport function usePlanDisplay(): DisplaySettings | null {\n return useMerchantPlans().data?.display ?? null;\n}\n\n/**\n * The currency to price plans in: the wallet's (with its exponent) when\n * billing knows it, else the business's own setting, else none (every\n * currency is shown).\n */\nexport function usePlanCurrency(): { currency: string | null; exponent: number | null } {\n const { tenant } = useAuth();\n const billing = useMyPlan().data?.billing;\n\n if (billing?.enabled && billing.plan) {\n return { currency: billing.plan.currency, exponent: billing.plan.exponent };\n }\n\n const setting = (tenant?.settings as Record<string, unknown> | undefined)?.currency;\n\n return {\n currency: typeof setting === 'string' && setting.trim() ? setting.trim().toUpperCase() : null,\n exponent: null,\n };\n}\n\n/**\n * A feature the API refused on this page with 402 `feature_not_in_plan`.\n * Cleared when the merchant moves to another page.\n */\nexport function useApiLockedFeature(pathname: string): string | null {\n const [locked, setLocked] = useState<{ path: string; feature: string } | null>(null);\n\n useEffect(() => {\n const onLocked = (event: Event) => {\n const feature = (event as CustomEvent<{ feature?: string }>).detail?.feature;\n\n if (feature) setLocked({ path: pathname, feature });\n };\n\n window.addEventListener(FEATURE_LOCKED_EVENT, onLocked);\n\n return () => window.removeEventListener(FEATURE_LOCKED_EVENT, onLocked);\n }, [pathname]);\n\n return locked?.path === pathname ? locked.feature : null;\n}\n\n/**\n * With the locked-feature card switched off, a page the plan leaves out is\n * dropped from the menu instead: the box's capability set is narrowed to the\n * plan, which the menu and the page guard already read.\n */\nexport function PlanCapabilityProvider({ children }: { children: ReactNode }) {\n const box = useCapabilities();\n const display = usePlanDisplay();\n const features = useMyPlan().data?.features;\n const keys = display && !display.lockedFeature ? planCapabilityKeys(features, box) : null;\n\n // Always mounted, so the dashboard is not rebuilt when the plan arrives.\n const value = keys ?? (box.known ? box.keys : null);\n\n return <CapabilityProvider value={value}>{children}</CapabilityProvider>;\n}\n"],"mappings":";AA4GS;AA1GT,SAAS,WAAW,gBAAgC;AACpD,SAAS,gBAAgB;AACzB,SAAS,4BAA4B;AACrC,SAAS,eAAe;AACxB,SAAS,oBAAoB,uBAAuB;AACpD,SAAS,0BAA0B;AAEnC,SAAS,8BAA8B;AAQhC,MAAM,qBAAqB,CAAC,WAAW,OAAO;AAC9C,MAAM,cAAc,CAAC,WAAW,cAAc;AAErD,MAAM,QAAQ,IAAI;AAEX,SAAS,mBAAmB;AACjC,QAAM,EAAE,OAAO,IAAI,QAAQ;AAE3B,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,uBAAuB;AAAA,IAChC,SAAS,QAAQ,MAAM;AAAA,IACvB,WAAW;AAAA,IACX,OAAO;AAAA,EACT,CAAC;AACH;AAEO,SAAS,YAAY;AAC1B,QAAM,EAAE,OAAO,IAAI,QAAQ;AAE3B,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,uBAAuB;AAAA,IAChC,SAAS,QAAQ,MAAM;AAAA,IACvB,WAAW;AAAA,IACX,OAAO;AAAA,EACT,CAAC;AACH;AAGO,SAAS,iBAAyC;AACvD,SAAO,iBAAiB,EAAE,MAAM,WAAW;AAC7C;AAOO,SAAS,kBAAwE;AACtF,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,UAAU,UAAU,EAAE,MAAM;AAElC,MAAI,SAAS,WAAW,QAAQ,MAAM;AACpC,WAAO,EAAE,UAAU,QAAQ,KAAK,UAAU,UAAU,QAAQ,KAAK,SAAS;AAAA,EAC5E;AAEA,QAAM,UAAW,QAAQ,UAAkD;AAE3E,SAAO;AAAA,IACL,UAAU,OAAO,YAAY,YAAY,QAAQ,KAAK,IAAI,QAAQ,KAAK,EAAE,YAAY,IAAI;AAAA,IACzF,UAAU;AAAA,EACZ;AACF;AAMO,SAAS,oBAAoB,UAAiC;AACnE,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAmD,IAAI;AAEnF,YAAU,MAAM;AACd,UAAM,WAAW,CAAC,UAAiB;AACjC,YAAM,UAAW,MAA4C,QAAQ;AAErE,UAAI,QAAS,WAAU,EAAE,MAAM,UAAU,QAAQ,CAAC;AAAA,IACpD;AAEA,WAAO,iBAAiB,sBAAsB,QAAQ;AAEtD,WAAO,MAAM,OAAO,oBAAoB,sBAAsB,QAAQ;AAAA,EACxE,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO,QAAQ,SAAS,WAAW,OAAO,UAAU;AACtD;AAOO,SAAS,uBAAuB,EAAE,SAAS,GAA4B;AAC5E,QAAM,MAAM,gBAAgB;AAC5B,QAAM,UAAU,eAAe;AAC/B,QAAM,WAAW,UAAU,EAAE,MAAM;AACnC,QAAM,OAAO,WAAW,CAAC,QAAQ,gBAAgB,mBAAmB,UAAU,GAAG,IAAI;AAGrF,QAAM,QAAQ,SAAS,IAAI,QAAQ,IAAI,OAAO;AAE9C,SAAO,oBAAC,sBAAmB,OAAe,UAAS;AACrD;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the resolved label for a platform module, respecting the merchant's
|
|
3
|
+
* custom label overrides stored in `settings.moduleLabels`.
|
|
4
|
+
*
|
|
5
|
+
* Precedence (high → low):
|
|
6
|
+
* merchant custom label (settings.moduleLabels)
|
|
7
|
+
* → fallback (platform default passed by the caller)
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const title = useModuleLabel('inventory', 'Inventory');
|
|
11
|
+
*/
|
|
12
|
+
export declare function useModuleLabel(moduleId: string, fallback: string): string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useAuth } from "./auth-context";
|
|
2
|
+
import { effectiveModuleLabels } from "./effective-module-labels";
|
|
3
|
+
function useModuleLabel(moduleId, fallback) {
|
|
4
|
+
const { tenant } = useAuth();
|
|
5
|
+
const moduleLabels = effectiveModuleLabels(
|
|
6
|
+
tenant?.settings
|
|
7
|
+
);
|
|
8
|
+
return moduleLabels?.[moduleId] ?? fallback;
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
useModuleLabel
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=use-module-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/use-module-label.ts"],"sourcesContent":["import { useAuth } from './auth-context';\nimport { effectiveModuleLabels } from './effective-module-labels';\n\n/**\n * Returns the resolved label for a platform module, respecting the merchant's\n * custom label overrides stored in `settings.moduleLabels`.\n *\n * Precedence (high → low):\n * merchant custom label (settings.moduleLabels)\n * → fallback (platform default passed by the caller)\n *\n * Usage:\n * const title = useModuleLabel('inventory', 'Inventory');\n */\nexport function useModuleLabel(moduleId: string, fallback: string): string {\n const { tenant } = useAuth();\n const moduleLabels = effectiveModuleLabels(\n tenant?.settings as Record<string, unknown> | undefined,\n );\n return moduleLabels?.[moduleId] ?? fallback;\n}\n"],"mappings":"AAAA,SAAS,eAAe;AACxB,SAAS,6BAA6B;AAa/B,SAAS,eAAe,UAAkB,UAA0B;AACzE,QAAM,EAAE,OAAO,IAAI,QAAQ;AAC3B,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,EACV;AACA,SAAO,eAAe,QAAQ,KAAK;AACrC;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type MoneyVisibility } from './money-visibility';
|
|
2
|
+
/**
|
|
3
|
+
* Whether this person is allowed to see money.
|
|
4
|
+
*
|
|
5
|
+
* Every currency figure in the dashboard asks this rather than calling
|
|
6
|
+
* `can('canViewFinance')` directly, and that indirection is what let the
|
|
7
|
+
* amounts/earnings split land in one file instead of a sweep across every
|
|
8
|
+
* screen that renders a naira sign. See `money-visibility.ts` for where the
|
|
9
|
+
* line falls and why.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useMoneyVisibility(): MoneyVisibility & {
|
|
12
|
+
loading: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type { MoneyVisibility };
|